Skip to content

Commit e5ca78e

Browse files
authored
Merge branch 'microsoft:main' into main
2 parents 40ed102 + 8ef35b2 commit e5ca78e

6 files changed

Lines changed: 163 additions & 5 deletions

File tree

.github/workflows/build-container.yaml

Lines changed: 72 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,27 @@ jobs:
8080
git push origin main
8181
fi
8282
83+
- name: Get registry version
84+
if: inputs.image_name == 'awesome-copilot'
85+
id: registry
86+
shell: pwsh
87+
run: |
88+
pushd awesome-copilot
89+
90+
$server = Get-Content ./server.json | ConvertFrom-Json
91+
$version = $($server.version).Split(".")
92+
$release = Get-Date -Format "yyyyMMddHH" -AsUTC
93+
94+
$revised = "$([string]::Join(".", $version[0..1])).$release"
95+
96+
$server.version = $revised
97+
$server.packages[0].identifier = $server.packages[0].identifier -replace ":latest", ":$revised"
98+
$server | ConvertTo-Json -Depth 10 | Out-File -FilePath ./server.json -Encoding utf8 -Force
99+
100+
echo "version=$revised" | Out-File -FilePath $env:GITHUB_OUTPUT -Encoding utf8 -Append
101+
102+
popd
103+
83104
- name: Build app
84105
if: env.BUILD_IMAGE == 'true' || inputs.force == true
85106
shell: bash
@@ -124,10 +145,26 @@ jobs:
124145
steps.check-dockerfile.outputs.exists == 'true'
125146
uses: docker/setup-buildx-action@v3
126147

127-
- name: Build and push Docker image - multi-platform
148+
- name: Build and push Docker image - multi-platform for awesome-copilot
128149
if: |
129150
(env.BUILD_IMAGE == 'true' || inputs.force == true) &&
130-
steps.check-dockerfile.outputs.exists == 'true'
151+
steps.check-dockerfile.outputs.exists == 'true' &&
152+
inputs.image_name == 'awesome-copilot'
153+
id: push-multiplatform-awesome-copilot
154+
uses: docker/build-push-action@v6
155+
with:
156+
platforms: linux/amd64,linux/arm64
157+
push: true
158+
context: ${{ github.workspace }}
159+
file: ${{ github.workspace }}/Dockerfile.${{ inputs.image_name }}
160+
tags: '${{ steps.meta.outputs.tags }},${{ env.REGISTRY }}/${{ env.REPOSITORY }}/${{ inputs.image_name }}:latest,${{ env.REGISTRY }}/${{ env.REPOSITORY }}/${{ inputs.image_name }}:${{ steps.registry.outputs.version }}'
161+
labels: ${{ steps.meta.outputs.labels }}
162+
163+
- name: Build and push Docker image - multi-platform for other images
164+
if: |
165+
(env.BUILD_IMAGE == 'true' || inputs.force == true) &&
166+
steps.check-dockerfile.outputs.exists == 'true' &&
167+
inputs.image_name != 'awesome-copilot'
131168
id: push-multiplatform
132169
uses: docker/build-push-action@v6
133170
with:
@@ -138,12 +175,43 @@ jobs:
138175
tags: '${{ steps.meta.outputs.tags }},${{ env.REGISTRY }}/${{ env.REPOSITORY }}/${{ inputs.image_name }}:latest'
139176
labels: ${{ steps.meta.outputs.labels }}
140177

141-
- name: Generate artifact attestation - multi-platform
178+
- name: Generate artifact attestation - multi-platform for awesome-copilot
142179
if: |
143180
(env.BUILD_IMAGE == 'true' || inputs.force == true) &&
144-
steps.check-dockerfile.outputs.exists == 'true'
181+
steps.check-dockerfile.outputs.exists == 'true' &&
182+
inputs.image_name == 'awesome-copilot'
183+
uses: actions/attest-build-provenance@v2
184+
with:
185+
subject-name: ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/${{ inputs.image_name }}
186+
subject-digest: ${{ steps.push-multiplatform-awesome-copilot.outputs.digest }}
187+
push-to-registry: true
188+
189+
- name: Generate artifact attestation - multi-platform for other images
190+
if: |
191+
(env.BUILD_IMAGE == 'true' || inputs.force == true) &&
192+
steps.check-dockerfile.outputs.exists == 'true' &&
193+
inputs.image_name != 'awesome-copilot'
145194
uses: actions/attest-build-provenance@v2
146195
with:
147196
subject-name: ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/${{ inputs.image_name }}
148197
subject-digest: ${{ steps.push-multiplatform.outputs.digest }}
149198
push-to-registry: true
199+
200+
- name: Install mcp-publisher
201+
if: inputs.image_name == 'awesome-copilot'
202+
shell: bash
203+
run: |
204+
curl -L "https://github.com/modelcontextprotocol/registry/releases/latest/download/mcp-publisher_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz" | tar xz mcp-publisher
205+
206+
- name: Authenticate to MCP Registry
207+
if: inputs.image_name == 'awesome-copilot'
208+
shell: bash
209+
run: |
210+
./mcp-publisher login github-oidc
211+
212+
- name: Publish server to MCP Registry
213+
if: inputs.image_name == 'awesome-copilot'
214+
shell: bash
215+
run: |
216+
./mcp-publisher publish ./awesome-copilot/server.json
217+

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,3 +400,5 @@ FodyWeavers.xsd
400400
*.sln.iml
401401

402402
.DS_Store
403+
.mcpregistry_github_token
404+
.mcpregistry_registry_token

Dockerfile.awesome-copilot

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ RUN case "$TARGETARCH" in \
1717

1818
FROM mcr.microsoft.com/dotnet/aspnet:10.0-alpine AS final
1919

20+
LABEL io.modelcontextprotocol.server.name="io.github.microsoft/awesome-copilot"
21+
2022
WORKDIR /app
2123

2224
COPY --from=build /app .

Dockerfile.awesome-copilot-azure

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ RUN dotnet publish -c Release -o /app --self-contained false
1111

1212
FROM mcr.microsoft.com/dotnet/aspnet:10.0-alpine AS final
1313

14+
LABEL io.modelcontextprotocol.server.name="io.github.microsoft/awesome-copilot"
15+
1416
WORKDIR /app
1517

1618
COPY --from=build /app .

awesome-copilot/server.json

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
{
2+
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3+
4+
"name": "io.github.microsoft/awesome-copilot",
5+
"title": "Awesome Copilot MCP Server",
6+
"description": "An MCP server that stores Copilot customizations from the Awesome Copilot repository",
7+
8+
"repository": {
9+
"url": "https://github.com/microsoft/mcp-dotnet-samples",
10+
"source": "github"
11+
},
12+
"websiteUrl": "https://aka.ms/awesome-copilot/mcp",
13+
14+
"version": "1.0.0",
15+
16+
"packages": [
17+
{
18+
"registryType": "oci",
19+
"identifier": "ghcr.io/microsoft/mcp-dotnet-samples/awesome-copilot:latest",
20+
"transport": {
21+
"type": "stdio"
22+
}
23+
}
24+
]
25+
}

awesome-copilot/src/McpSamples.AwesomeCopilot.HybridApp/metadata.json

Lines changed: 60 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -434,6 +434,11 @@
434434
"description": "Help mentor the engineer by providing guidance and support.",
435435
"name": "Mentor mode"
436436
},
437+
{
438+
"filename": "mentoring-juniors.agent.md",
439+
"description": "Socratic mentor for junior developers. Guides through questions, never gives direct answers. Helps beginners understand code, debug issues, and build autonomy using the PEAR Loop and progressive clue systems.",
440+
"name": "Sensei - Junior Mentor"
441+
},
437442
{
438443
"filename": "meta-agentic-project-scaffold.agent.md",
439444
"description": "Meta agentic project creation assistant to help users create and manage project workflows effectively.",
@@ -694,6 +699,11 @@
694699
"description": "Provide expert Salesforce Platform guidance, including Apex Enterprise Patterns, LWC, integration, and Aura-to-LWC migration.",
695700
"name": "Salesforce Expert Agent"
696701
},
702+
{
703+
"filename": "scientific-paper-research.agent.md",
704+
"name": "Scientific Paper Research",
705+
"description": "Research agent that searches scientific papers and retrieves structured experimental data from full-text studies using the BGPT MCP server."
706+
},
697707
{
698708
"filename": "se-gitops-ci-specialist.agent.md",
699709
"name": "SE: DevOps/CI",
@@ -834,6 +844,11 @@
834844
"name": "Terraform Agent",
835845
"description": "Terraform infrastructure specialist with automated HCP Terraform workflows. Leverages Terraform MCP server for registry integration, workspace management, and run orchestration. Generates compliant code using latest provider/module versions, manages private registries, automates variable sets, and orchestrates infrastructure deployments with proper validation and security practices."
836846
},
847+
{
848+
"filename": "terratest-module-testing.agent.md",
849+
"description": "Generate and refactor Go Terratest suites for Terraform modules, including CI-safe patterns, staged tests, and negative-path validation.",
850+
"name": "Terratest Module Testing"
851+
},
837852
{
838853
"filename": "typescript-mcp-expert.agent.md",
839854
"description": "Expert assistant for developing Model Context Protocol (MCP) servers in TypeScript",
@@ -858,6 +873,11 @@
858873
"filename": "wg-code-sentinel.agent.md",
859874
"description": "Ask WG Code Sentinel to review your code for security issues.",
860875
"name": "WG Code Sentinel"
876+
},
877+
{
878+
"filename": "winui3-expert.agent.md",
879+
"name": "WinUI 3 Expert",
880+
"description": "Expert agent for WinUI 3 and Windows App SDK development. Prevents common UWP-to-WinUI 3 API mistakes, guides XAML controls, MVVM patterns, windowing, threading, app lifecycle, dialogs, and deployment for desktop Windows apps."
861881
}
862882
],
863883
"hooks": [
@@ -1560,6 +1580,10 @@
15601580
"filename": "vuejs3.instructions.md",
15611581
"description": "VueJS 3 development standards and best practices with Composition API and TypeScript"
15621582
},
1583+
{
1584+
"filename": "winui3.instructions.md",
1585+
"description": "WinUI 3 and Windows App SDK coding guidelines. Prevents common UWP API misuse, enforces correct XAML namespaces, threading, windowing, and MVVM patterns for desktop Windows apps."
1586+
},
15631587
{
15641588
"filename": "wordpress.instructions.md",
15651589
"description": "Coding, security, and testing rules for WordPress plugins and themes"
@@ -1882,6 +1906,11 @@
18821906
"name": "csharp-xunit",
18831907
"description": "Get best practices for XUnit unit testing, including data-driven tests"
18841908
},
1909+
{
1910+
"filename": "datanalysis-credit-risk/SKILL.md",
1911+
"name": "datanalysis-credit-risk",
1912+
"description": "Credit risk data cleaning and variable screening pipeline for pre-loan modeling. Use when working with raw credit data that needs quality assessment, missing value analysis, or variable selection before modeling. it covers data loading and formatting, abnormal period filtering, missing rate calculation, high-missing variable removal,low-IV variable filtering, high-PSI variable removal, Null Importance denoising, high-correlation variable removal, and cleaning report generation. Applicable scenarios arecredit risk data cleaning, variable screening, pre-loan modeling preprocessing."
1913+
},
18851914
{
18861915
"filename": "dataverse-python-advanced-patterns/SKILL.md",
18871916
"name": "dataverse-python-advanced-patterns",
@@ -2042,6 +2071,11 @@
20422071
"name": "image-manipulation-image-magick",
20432072
"description": "Process and manipulate images using ImageMagick. Supports resizing, format conversion, batch processing, and retrieving image metadata. Use when working with images, creating thumbnails, resizing wallpapers, or performing batch image operations."
20442073
},
2074+
{
2075+
"filename": "import-infrastructure-as-code/SKILL.md",
2076+
"name": "import-infrastructure-as-code",
2077+
"description": "Import existing Azure resources into Terraform using Azure CLI discovery and Azure Verified Modules (AVM). Use when asked to reverse-engineer live Azure infrastructure, generate Infrastructure as Code from existing subscriptions/resource groups/resource IDs, map dependencies, derive exact import addresses from downloaded module source, prevent configuration drift, and produce AVM-based Terraform files ready for validation and planning across any Azure resource type."
2078+
},
20452079
{
20462080
"filename": "java-add-graalvm-native-image-support/SKILL.md",
20472081
"name": "java-add-graalvm-native-image-support",
@@ -2152,6 +2186,11 @@
21522186
"name": "memory-merger",
21532187
"description": "Merges mature lessons from a domain memory file into its instruction file. Syntax: \u0060/memory-merger \u003Edomain [scope]\u0060 where scope is \u0060global\u0060 (default), \u0060user\u0060, \u0060workspace\u0060, or \u0060ws\u0060."
21542188
},
2189+
{
2190+
"filename": "mentoring-juniors/SKILL.md",
2191+
"name": "mentoring-juniors",
2192+
"description": "Socratic mentoring for junior developers and AI newcomers. Guides through questions, never answers. Triggers: \u0022help me understand\u0022, \u0022explain this code\u0022, \u0022I\u0027m stuck\u0022, \u0022Im stuck\u0022, \u0022I\u0027m confused\u0022, \u0022Im confused\u0022, \u0022I don\u0027t understand\u0022, \u0022I dont understand\u0022, \u0022can you teach me\u0022, \u0022teach me\u0022, \u0022mentor me\u0022, \u0022guide me\u0022, \u0022what does this error mean\u0022, \u0022why doesn\u0027t this work\u0022, \u0022why does not this work\u0022, \u0022I\u0027m a beginner\u0022, \u0022Im a beginner\u0022, \u0022I\u0027m learning\u0022, \u0022Im learning\u0022, \u0022I\u0027m new to this\u0022, \u0022Im new to this\u0022, \u0022walk me through\u0022, \u0022how does this work\u0022, \u0022what\u0027s wrong with my code\u0022, \u0022what\u0027s wrong\u0022, \u0022can you break this down\u0022, \u0022ELI5\u0022, \u0022step by step\u0022, \u0022where do I start\u0022, \u0022what am I missing\u0022, \u0022newbie here\u0022, \u0022junior dev\u0022, \u0022first time using\u0022, \u0022how do I\u0022, \u0022what is\u0022, \u0022is this right\u0022, \u0022not sure\u0022, \u0022need help\u0022, \u0022struggling\u0022, \u0022show me\u0022, \u0022help me debug\u0022, \u0022best practice\u0022, \u0022too complex\u0022, \u0022overwhelmed\u0022, \u0022lost\u0022, \u0022debug this\u0022, \u0022/socratic\u0022, \u0022/hint\u0022, \u0022/concept\u0022, \u0022/pseudocode\u0022. Progressive clue systems, teaching techniques, and success metrics."
2193+
},
21552194
{
21562195
"filename": "microsoft-code-reference/SKILL.md",
21572196
"name": "microsoft-code-reference",
@@ -2177,6 +2216,11 @@
21772216
"name": "model-recommendation",
21782217
"description": "Analyze chatmode or prompt files and recommend optimal AI models based on task complexity, required capabilities, and cost-efficiency"
21792218
},
2219+
{
2220+
"filename": "msstore-cli/SKILL.md",
2221+
"name": "msstore-cli",
2222+
"description": "Microsoft Store Developer CLI (msstore) for publishing Windows applications to the Microsoft Store. Use when asked to configure Store credentials, list Store apps, check submission status, publish submissions, manage package flights, set up CI/CD for Store publishing, or integrate with Partner Center. Supports Windows App SDK/WinUI, UWP, .NET MAUI, Flutter, Electron, React Native, and PWA applications."
2223+
},
21802224
{
21812225
"filename": "multi-stage-dockerfile/SKILL.md",
21822226
"name": "multi-stage-dockerfile",
@@ -2202,6 +2246,11 @@
22022246
"name": "next-intl-add-language",
22032247
"description": "Add new language to a Next.js \u002B next-intl application"
22042248
},
2249+
{
2250+
"filename": "noob-mode/SKILL.md",
2251+
"name": "noob-mode",
2252+
"description": "Plain-English translation layer for non-technical Copilot CLI users. Translates every approval prompt, error message, and technical output into clear, jargon-free English with color-coded risk indicators."
2253+
},
22052254
{
22062255
"filename": "nuget-manager/SKILL.md",
22072256
"name": "nuget-manager",
@@ -2545,7 +2594,17 @@
25452594
{
25462595
"filename": "winapp-cli/SKILL.md",
25472596
"name": "winapp-cli",
2548-
"description": "Windows App Development CLI (winapp) for building, packaging, and deploying Windows applications. Use when asked to initialize Windows app projects, create MSIX packages, generate AppxManifest.xml, manage development certificates, add package identity for debugging, sign packages, or access Windows SDK build tools. Supports .NET, C\u002B\u002B, Electron, Rust, Tauri, and cross-platform frameworks targeting Windows."
2597+
"description": "Windows App Development CLI (winapp) for building, packaging, and deploying Windows applications. Use when asked to initialize Windows app projects, create MSIX packages, generate AppxManifest.xml, manage development certificates, add package identity for debugging, sign packages, publish to the Microsoft Store, create external catalogs, or access Windows SDK build tools. Supports .NET (csproj), C\u002B\u002B, Electron, Rust, Tauri, and cross-platform frameworks targeting Windows."
2598+
},
2599+
{
2600+
"filename": "winmd-api-search/SKILL.md",
2601+
"name": "winmd-api-search",
2602+
"description": "Find and explore Windows desktop APIs. Use when building features that need platform capabilities \u2014 camera, file access, notifications, UI controls, AI/ML, sensors, networking, etc. Discovers the right API for a task and retrieves full type details (methods, properties, events, enumeration values)."
2603+
},
2604+
{
2605+
"filename": "winui3-migration-guide/SKILL.md",
2606+
"name": "winui3-migration-guide",
2607+
"description": "UWP-to-WinUI 3 migration reference. Maps legacy UWP APIs to correct Windows App SDK equivalents with before/after code snippets. Covers namespace changes, threading (CoreDispatcher to DispatcherQueue), windowing (CoreWindow to AppWindow), dialogs, pickers, sharing, printing, background tasks, and the most common Copilot code generation mistakes."
25492608
},
25502609
{
25512610
"filename": "workiq-copilot/SKILL.md",

0 commit comments

Comments
 (0)