Showing preview only (9,586K chars total). Download the full file or copy to clipboard to get everything.
Repository: github/awesome-copilot
Branch: main
Commit: c6a75d7e0923
Files: 1196
Total size: 8.9 MB
Directory structure:
gitextract_yaf3ro_2/
├── .all-contributorsrc
├── .codespellrc
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── agents/
│ │ └── agentic-workflows.agent.md
│ ├── aw/
│ │ └── actions-lock.json
│ ├── copilot-instructions.md
│ ├── plugin/
│ │ └── marketplace.json
│ ├── pull_request_template.md
│ └── workflows/
│ ├── check-line-endings.yml
│ ├── check-plugin-structure.yml
│ ├── check-pr-target.yml
│ ├── codeowner-update.lock.yml
│ ├── codeowner-update.md
│ ├── codespell.yml
│ ├── contributors.yml
│ ├── copilot-setup-steps.yml
│ ├── deploy-website.yml
│ ├── duplicate-resource-detector.lock.yml
│ ├── duplicate-resource-detector.md
│ ├── learning-hub-updater.lock.yml
│ ├── learning-hub-updater.md
│ ├── pr-duplicate-check.lock.yml
│ ├── pr-duplicate-check.md
│ ├── publish.yml
│ ├── resource-staleness-report.lock.yml
│ ├── resource-staleness-report.md
│ ├── traffic-reporting.yml
│ ├── validate-agentic-workflows-pr.yml
│ ├── validate-readme.yml
│ └── webhook-caller.yml
├── .gitignore
├── .schemas/
│ ├── collection.schema.json
│ ├── cookbook.schema.json
│ └── tools.schema.json
├── .vscode/
│ ├── extensions.json
│ ├── mcp.json
│ ├── settings.json
│ └── tasks.json
├── AGENTS.md
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── SUPPORT.md
├── agents/
│ ├── 4.1-Beast.agent.md
│ ├── CSharpExpert.agent.md
│ ├── Thinking-Beast-Mode.agent.md
│ ├── Ultimate-Transparent-Thinking-Beast-Mode.agent.md
│ ├── WinFormsExpert.agent.md
│ ├── accessibility.agent.md
│ ├── address-comments.agent.md
│ ├── adr-generator.agent.md
│ ├── aem-frontend-specialist.agent.md
│ ├── agent-governance-reviewer.agent.md
│ ├── amplitude-experiment-implementation.agent.md
│ ├── api-architect.agent.md
│ ├── apify-integration-expert.agent.md
│ ├── arch-linux-expert.agent.md
│ ├── arch.agent.md
│ ├── arm-migration.agent.md
│ ├── atlassian-requirements-to-jira.agent.md
│ ├── azure-iac-exporter.agent.md
│ ├── azure-iac-generator.agent.md
│ ├── azure-logic-apps-expert.agent.md
│ ├── azure-principal-architect.agent.md
│ ├── azure-saas-architect.agent.md
│ ├── azure-verified-modules-bicep.agent.md
│ ├── azure-verified-modules-terraform.agent.md
│ ├── bicep-implement.agent.md
│ ├── bicep-plan.agent.md
│ ├── blueprint-mode.agent.md
│ ├── cast-imaging-impact-analysis.agent.md
│ ├── cast-imaging-software-discovery.agent.md
│ ├── cast-imaging-structural-quality-advisor.agent.md
│ ├── centos-linux-expert.agent.md
│ ├── clojure-interactive-programming.agent.md
│ ├── code-tour.agent.md
│ ├── comet-opik.agent.md
│ ├── context-architect.agent.md
│ ├── context7.agent.md
│ ├── critical-thinking.agent.md
│ ├── csharp-dotnet-janitor.agent.md
│ ├── csharp-mcp-expert.agent.md
│ ├── custom-agent-foundry.agent.md
│ ├── debian-linux-expert.agent.md
│ ├── debug.agent.md
│ ├── declarative-agents-architect.agent.md
│ ├── defender-scout-kql.agent.md
│ ├── demonstrate-understanding.agent.md
│ ├── devils-advocate.agent.md
│ ├── devops-expert.agent.md
│ ├── diffblue-cover.agent.md
│ ├── dotnet-maui.agent.md
│ ├── dotnet-upgrade.agent.md
│ ├── doublecheck.agent.md
│ ├── droid.agent.md
│ ├── drupal-expert.agent.md
│ ├── dynatrace-expert.agent.md
│ ├── elasticsearch-observability.agent.md
│ ├── electron-angular-native.agent.md
│ ├── expert-cpp-software-engineer.agent.md
│ ├── expert-dotnet-software-engineer.agent.md
│ ├── expert-nextjs-developer.agent.md
│ ├── expert-react-frontend-engineer.agent.md
│ ├── fedora-linux-expert.agent.md
│ ├── gem-browser-tester.agent.md
│ ├── gem-devops.agent.md
│ ├── gem-documentation-writer.agent.md
│ ├── gem-implementer.agent.md
│ ├── gem-orchestrator.agent.md
│ ├── gem-planner.agent.md
│ ├── gem-researcher.agent.md
│ ├── gem-reviewer.agent.md
│ ├── gilfoyle.agent.md
│ ├── github-actions-expert.agent.md
│ ├── go-mcp-expert.agent.md
│ ├── gpt-5-beast-mode.agent.md
│ ├── hlbpa.agent.md
│ ├── implementation-plan.agent.md
│ ├── insiders-a11y-tracker.agent.md
│ ├── janitor.agent.md
│ ├── java-mcp-expert.agent.md
│ ├── jfrog-sec.agent.md
│ ├── kotlin-mcp-expert.agent.md
│ ├── kusto-assistant.agent.md
│ ├── laravel-expert-agent.agent.md
│ ├── launchdarkly-flag-cleanup.agent.md
│ ├── lingodotdev-i18n.agent.md
│ ├── markdown-accessibility-assistant.agent.md
│ ├── mcp-m365-agent-expert.agent.md
│ ├── mentor.agent.md
│ ├── mentoring-juniors.agent.md
│ ├── meta-agentic-project-scaffold.agent.md
│ ├── microsoft-study-mode.agent.md
│ ├── microsoft_learn_contributor.agent.md
│ ├── modernization.agent.md
│ ├── monday-bug-fixer.agent.md
│ ├── mongodb-performance-advisor.agent.md
│ ├── ms-sql-dba.agent.md
│ ├── neo4j-docker-client-generator.agent.md
│ ├── neon-migration-specialist.agent.md
│ ├── neon-optimization-analyzer.agent.md
│ ├── nuxt-expert.agent.md
│ ├── octopus-deploy-release-notes-mcp.agent.md
│ ├── one-shot-feature-issue-planner.agent.md
│ ├── openapi-to-application.agent.md
│ ├── oracle-to-postgres-migration-expert.agent.md
│ ├── pagerduty-incident-responder.agent.md
│ ├── php-mcp-expert.agent.md
│ ├── pimcore-expert.agent.md
│ ├── plan.agent.md
│ ├── planner.agent.md
│ ├── platform-sre-kubernetes.agent.md
│ ├── playwright-tester.agent.md
│ ├── polyglot-test-builder.agent.md
│ ├── polyglot-test-fixer.agent.md
│ ├── polyglot-test-generator.agent.md
│ ├── polyglot-test-implementer.agent.md
│ ├── polyglot-test-linter.agent.md
│ ├── polyglot-test-planner.agent.md
│ ├── polyglot-test-researcher.agent.md
│ ├── polyglot-test-tester.agent.md
│ ├── postgresql-dba.agent.md
│ ├── power-bi-data-modeling-expert.agent.md
│ ├── power-bi-dax-expert.agent.md
│ ├── power-bi-performance-expert.agent.md
│ ├── power-bi-visualization-expert.agent.md
│ ├── power-platform-expert.agent.md
│ ├── power-platform-mcp-integration-expert.agent.md
│ ├── prd.agent.md
│ ├── principal-software-engineer.agent.md
│ ├── prompt-builder.agent.md
│ ├── prompt-engineer.agent.md
│ ├── python-mcp-expert.agent.md
│ ├── python-notebook-sample-builder.agent.md
│ ├── qa-subagent.agent.md
│ ├── reepl-linkedin.agent.md
│ ├── refine-issue.agent.md
│ ├── repo-architect.agent.md
│ ├── research-technical-spike.agent.md
│ ├── ruby-mcp-expert.agent.md
│ ├── rug-orchestrator.agent.md
│ ├── rust-gpt-4.1-beast-mode.agent.md
│ ├── rust-mcp-expert.agent.md
│ ├── salesforce-apex-triggers.agent.md
│ ├── salesforce-aura-lwc.agent.md
│ ├── salesforce-expert.agent.md
│ ├── salesforce-flow.agent.md
│ ├── salesforce-visualforce.agent.md
│ ├── scientific-paper-research.agent.md
│ ├── se-gitops-ci-specialist.agent.md
│ ├── se-product-manager-advisor.agent.md
│ ├── se-responsible-ai-code.agent.md
│ ├── se-security-reviewer.agent.md
│ ├── se-system-architecture-reviewer.agent.md
│ ├── se-technical-writer.agent.md
│ ├── se-ux-ui-designer.agent.md
│ ├── search-ai-optimization-expert.agent.md
│ ├── shopify-expert.agent.md
│ ├── simple-app-idea-generator.agent.md
│ ├── software-engineer-agent-v1.agent.md
│ ├── specification.agent.md
│ ├── stackhawk-security-onboarding.agent.md
│ ├── swe-subagent.agent.md
│ ├── swift-mcp-expert.agent.md
│ ├── task-planner.agent.md
│ ├── task-researcher.agent.md
│ ├── tdd-green.agent.md
│ ├── tdd-red.agent.md
│ ├── tdd-refactor.agent.md
│ ├── tech-debt-remediation-plan.agent.md
│ ├── technical-content-evaluator.agent.md
│ ├── terraform-azure-implement.agent.md
│ ├── terraform-azure-planning.agent.md
│ ├── terraform-iac-reviewer.agent.md
│ ├── terraform.agent.md
│ ├── terratest-module-testing.agent.md
│ ├── typescript-mcp-expert.agent.md
│ ├── voidbeast-gpt41enhanced.agent.md
│ ├── vuejs-expert.agent.md
│ ├── wg-code-alchemist.agent.md
│ ├── wg-code-sentinel.agent.md
│ └── winui3-expert.agent.md
├── context7.json
├── cookbook/
│ ├── README.md
│ ├── cookbook.yml
│ └── copilot-sdk/
│ ├── README.md
│ ├── dotnet/
│ │ ├── README.md
│ │ ├── accessibility-report.md
│ │ ├── error-handling.md
│ │ ├── managing-local-files.md
│ │ ├── multiple-sessions.md
│ │ ├── persisting-sessions.md
│ │ ├── pr-visualization.md
│ │ ├── ralph-loop.md
│ │ └── recipe/
│ │ ├── README.md
│ │ ├── accessibility-report.cs
│ │ ├── error-handling.cs
│ │ ├── managing-local-files.cs
│ │ ├── multiple-sessions.cs
│ │ ├── persisting-sessions.cs
│ │ ├── pr-visualization.cs
│ │ └── ralph-loop.cs
│ ├── go/
│ │ ├── README.md
│ │ ├── accessibility-report.md
│ │ ├── error-handling.md
│ │ ├── managing-local-files.md
│ │ ├── multiple-sessions.md
│ │ ├── persisting-sessions.md
│ │ ├── pr-visualization.md
│ │ ├── ralph-loop.md
│ │ └── recipe/
│ │ ├── README.md
│ │ ├── accessibility-report.go
│ │ ├── error-handling.go
│ │ ├── managing-local-files.go
│ │ ├── multiple-sessions.go
│ │ ├── persisting-sessions.go
│ │ ├── pr-visualization.go
│ │ └── ralph-loop.go
│ ├── go.sum
│ ├── nodejs/
│ │ ├── README.md
│ │ ├── accessibility-report.md
│ │ ├── error-handling.md
│ │ ├── managing-local-files.md
│ │ ├── multiple-sessions.md
│ │ ├── persisting-sessions.md
│ │ ├── pr-visualization.md
│ │ ├── ralph-loop.md
│ │ └── recipe/
│ │ ├── README.md
│ │ ├── accessibility-report.ts
│ │ ├── error-handling.ts
│ │ ├── managing-local-files.ts
│ │ ├── multiple-sessions.ts
│ │ ├── package.json
│ │ ├── persisting-sessions.ts
│ │ ├── pr-visualization.ts
│ │ └── ralph-loop.ts
│ └── python/
│ ├── README.md
│ ├── accessibility-report.md
│ ├── error-handling.md
│ ├── managing-local-files.md
│ ├── multiple-sessions.md
│ ├── persisting-sessions.md
│ ├── pr-visualization.md
│ ├── ralph-loop.md
│ └── recipe/
│ ├── README.md
│ ├── accessibility_report.py
│ ├── error_handling.py
│ ├── managing_local_files.py
│ ├── multiple_sessions.py
│ ├── persisting_sessions.py
│ ├── pr_visualization.py
│ ├── ralph_loop.py
│ └── requirements.txt
├── docs/
│ ├── .gitkeep
│ ├── README.agents.md
│ ├── README.hooks.md
│ ├── README.instructions.md
│ ├── README.plugins.md
│ ├── README.skills.md
│ └── README.workflows.md
├── eng/
│ ├── README.md
│ ├── add-missing-contributors.mjs
│ ├── clean-materialized-plugins.mjs
│ ├── constants.mjs
│ ├── contributor-report.mjs
│ ├── create-plugin.mjs
│ ├── create-skill.mjs
│ ├── generate-marketplace.mjs
│ ├── generate-website-data.mjs
│ ├── materialize-plugins.mjs
│ ├── migrate-prompts-to-skills.mjs
│ ├── update-plugin-commands-to-skills.mjs
│ ├── update-readme.mjs
│ ├── utils/
│ │ ├── git-dates.mjs
│ │ └── graceful-shutdown.mjs
│ ├── validate-plugins.mjs
│ ├── validate-skills.mjs
│ └── yaml-parser.mjs
├── hooks/
│ ├── dependency-license-checker/
│ │ ├── README.md
│ │ ├── check-licenses.sh
│ │ └── hooks.json
│ ├── governance-audit/
│ │ ├── README.md
│ │ ├── audit-prompt.sh
│ │ ├── audit-session-end.sh
│ │ ├── audit-session-start.sh
│ │ └── hooks.json
│ ├── secrets-scanner/
│ │ ├── README.md
│ │ ├── hooks.json
│ │ └── scan-secrets.sh
│ ├── session-auto-commit/
│ │ ├── README.md
│ │ ├── auto-commit.sh
│ │ └── hooks.json
│ ├── session-logger/
│ │ ├── README.md
│ │ ├── hooks.json
│ │ ├── log-prompt.sh
│ │ ├── log-session-end.sh
│ │ └── log-session-start.sh
│ └── tool-guardian/
│ ├── README.md
│ ├── guard-tool.sh
│ └── hooks.json
├── instructions/
│ ├── a11y.instructions.md
│ ├── agent-safety.instructions.md
│ ├── agent-skills.instructions.md
│ ├── agents.instructions.md
│ ├── ai-prompt-engineering-safety-best-practices.instructions.md
│ ├── ansible.instructions.md
│ ├── apex.instructions.md
│ ├── arch-linux.instructions.md
│ ├── aspnet-rest-apis.instructions.md
│ ├── astro.instructions.md
│ ├── aws-appsync.instructions.md
│ ├── azure-devops-pipelines.instructions.md
│ ├── azure-functions-typescript.instructions.md
│ ├── azure-logic-apps-power-automate.instructions.md
│ ├── azure-verified-modules-bicep.instructions.md
│ ├── azure-verified-modules-terraform.instructions.md
│ ├── bicep-code-best-practices.instructions.md
│ ├── blazor.instructions.md
│ ├── centos-linux.instructions.md
│ ├── clojure.instructions.md
│ ├── cmake-vcpkg.instructions.md
│ ├── code-review-generic.instructions.md
│ ├── codexer.instructions.md
│ ├── coldfusion-cfc.instructions.md
│ ├── coldfusion-cfm.instructions.md
│ ├── containerization-docker-best-practices.instructions.md
│ ├── context-engineering.instructions.md
│ ├── context7.instructions.md
│ ├── convert-cassandra-to-spring-data-cosmos.instructions.md
│ ├── convert-jpa-to-spring-data-cosmos.instructions.md
│ ├── copilot-sdk-csharp.instructions.md
│ ├── copilot-sdk-go.instructions.md
│ ├── copilot-sdk-nodejs.instructions.md
│ ├── copilot-sdk-python.instructions.md
│ ├── copilot-thought-logging.instructions.md
│ ├── cpp-language-service-tools.instructions.md
│ ├── csharp-ja.instructions.md
│ ├── csharp-ko.instructions.md
│ ├── csharp-mcp-server.instructions.md
│ ├── csharp.instructions.md
│ ├── dart-n-flutter.instructions.md
│ ├── dataverse-python-advanced-features.instructions.md
│ ├── dataverse-python-agentic-workflows.instructions.md
│ ├── dataverse-python-api-reference.instructions.md
│ ├── dataverse-python-authentication-security.instructions.md
│ ├── dataverse-python-best-practices.instructions.md
│ ├── dataverse-python-error-handling.instructions.md
│ ├── dataverse-python-file-operations.instructions.md
│ ├── dataverse-python-modules.instructions.md
│ ├── dataverse-python-pandas-integration.instructions.md
│ ├── dataverse-python-performance-optimization.instructions.md
│ ├── dataverse-python-real-world-usecases.instructions.md
│ ├── dataverse-python-sdk.instructions.md
│ ├── dataverse-python-testing-debugging.instructions.md
│ ├── dataverse-python.instructions.md
│ ├── debian-linux.instructions.md
│ ├── declarative-agents-microsoft365.instructions.md
│ ├── devbox-image-definition.instructions.md
│ ├── devops-core-principles.instructions.md
│ ├── dotnet-architecture-good-practices.instructions.md
│ ├── dotnet-framework.instructions.md
│ ├── dotnet-maui-9-to-dotnet-maui-10-upgrade.instructions.md
│ ├── dotnet-maui.instructions.md
│ ├── dotnet-upgrade.instructions.md
│ ├── dotnet-wpf.instructions.md
│ ├── fedora-linux.instructions.md
│ ├── genaiscript.instructions.md
│ ├── generate-modern-terraform-code-for-azure.instructions.md
│ ├── gilfoyle-code-review.instructions.md
│ ├── github-actions-ci-cd-best-practices.instructions.md
│ ├── go-mcp-server.instructions.md
│ ├── go.instructions.md
│ ├── html-css-style-color-guide.instructions.md
│ ├── instructions.instructions.md
│ ├── java-11-to-java-17-upgrade.instructions.md
│ ├── java-17-to-java-21-upgrade.instructions.md
│ ├── java-21-to-java-25-upgrade.instructions.md
│ ├── java-mcp-server.instructions.md
│ ├── joyride-user-project.instructions.md
│ ├── joyride-workspace-automation.instructions.md
│ ├── kotlin-mcp-server.instructions.md
│ ├── kubernetes-deployment-best-practices.instructions.md
│ ├── kubernetes-manifests.instructions.md
│ ├── langchain-python.instructions.md
│ ├── localization.instructions.md
│ ├── lwc.instructions.md
│ ├── makefile.instructions.md
│ ├── markdown-accessibility.instructions.md
│ ├── markdown.instructions.md
│ ├── mcp-m365-copilot.instructions.md
│ ├── memory-bank.instructions.md
│ ├── mongo-dba.instructions.md
│ ├── moodle.instructions.md
│ ├── ms-sql-dba.instructions.md
│ ├── nestjs.instructions.md
│ ├── nextjs-tailwind.instructions.md
│ ├── nextjs.instructions.md
│ ├── no-heredoc.instructions.md
│ ├── nodejs-javascript-vitest.instructions.md
│ ├── object-calisthenics.instructions.md
│ ├── oop-design-patterns.instructions.md
│ ├── oqtane.instructions.md
│ ├── pcf-alm.instructions.md
│ ├── pcf-api-reference.instructions.md
│ ├── pcf-best-practices.instructions.md
│ ├── pcf-canvas-apps.instructions.md
│ ├── pcf-code-components.instructions.md
│ ├── pcf-community-resources.instructions.md
│ ├── pcf-dependent-libraries.instructions.md
│ ├── pcf-events.instructions.md
│ ├── pcf-fluent-modern-theming.instructions.md
│ ├── pcf-limitations.instructions.md
│ ├── pcf-manifest-schema.instructions.md
│ ├── pcf-model-driven-apps.instructions.md
│ ├── pcf-overview.instructions.md
│ ├── pcf-power-pages.instructions.md
│ ├── pcf-react-platform-libraries.instructions.md
│ ├── pcf-sample-components.instructions.md
│ ├── pcf-tooling.instructions.md
│ ├── performance-optimization.instructions.md
│ ├── php-mcp-server.instructions.md
│ ├── php-symfony.instructions.md
│ ├── playwright-dotnet.instructions.md
│ ├── playwright-python.instructions.md
│ ├── playwright-typescript.instructions.md
│ ├── power-apps-canvas-yaml.instructions.md
│ ├── power-apps-code-apps.instructions.md
│ ├── power-bi-custom-visuals-development.instructions.md
│ ├── power-bi-data-modeling-best-practices.instructions.md
│ ├── power-bi-dax-best-practices.instructions.md
│ ├── power-bi-devops-alm-best-practices.instructions.md
│ ├── power-bi-report-design-best-practices.instructions.md
│ ├── power-bi-security-rls-best-practices.instructions.md
│ ├── power-platform-connector.instructions.md
│ ├── power-platform-mcp-development.instructions.md
│ ├── powershell-pester-5.instructions.md
│ ├── powershell.instructions.md
│ ├── prompt.instructions.md
│ ├── python-mcp-server.instructions.md
│ ├── quarkus-mcp-server-sse.instructions.md
│ ├── quarkus.instructions.md
│ ├── r.instructions.md
│ ├── ruby-mcp-server.instructions.md
│ ├── ruby-on-rails.instructions.md
│ ├── rust-mcp-server.instructions.md
│ ├── rust.instructions.md
│ ├── scala2.instructions.md
│ ├── security-and-owasp.instructions.md
│ ├── self-explanatory-code-commenting.instructions.md
│ ├── shell.instructions.md
│ ├── spec-driven-workflow-v1.instructions.md
│ ├── springboot-4-migration.instructions.md
│ ├── springboot.instructions.md
│ ├── sql-sp-generation.instructions.md
│ ├── svelte.instructions.md
│ ├── swift-mcp-server.instructions.md
│ ├── tailwind-v4-vite.instructions.md
│ ├── taming-copilot.instructions.md
│ ├── tanstack-start-shadcn-tailwind.instructions.md
│ ├── task-implementation.instructions.md
│ ├── tasksync.instructions.md
│ ├── terraform-azure.instructions.md
│ ├── terraform-sap-btp.instructions.md
│ ├── terraform.instructions.md
│ ├── typescript-mcp-server.instructions.md
│ ├── typespec-m365-copilot.instructions.md
│ ├── update-code-from-shorthand.instructions.md
│ ├── update-docs-on-code-change.instructions.md
│ ├── vsixtoolkit.instructions.md
│ ├── winui3.instructions.md
│ └── wordpress.instructions.md
├── package.json
├── plugins/
│ ├── automate-this/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── awesome-copilot/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── azure-cloud-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── cast-imaging/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── clojure-interactive-programming/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── context-engineering/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── copilot-sdk/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── csharp-dotnet-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── csharp-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── database-data-management/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── dataverse-sdk-for-python/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── devops-oncall/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── doublecheck/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── edge-ai-tasks/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── external.json
│ ├── flowstudio-power-automate/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── frontend-web-dev/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── gem-team/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── go-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── java-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── java-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── kotlin-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── mcp-m365-copilot/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── napkin/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── noob-mode/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── openapi-to-application-csharp-dotnet/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── openapi-to-application-go/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── openapi-to-application-java-spring-boot/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── openapi-to-application-nodejs-nestjs/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── openapi-to-application-python-fastapi/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── oracle-to-postgres-migration-expert/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── ospo-sponsorship/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── partners/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── pcf-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── php-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── polyglot-test-agent/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── power-apps-code-apps/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── power-bi-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── power-platform-mcp-connector-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── project-planning/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── python-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── ruby-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── rug-agentic-workflow/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── rust-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── security-best-practices/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── software-engineering-team/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── structured-autonomy/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── swift-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── technical-spike/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── testing-automation/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── typescript-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── typespec-m365-copilot/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ └── winui3-development/
│ ├── .github/
│ │ └── plugin/
│ │ └── plugin.json
│ └── README.md
├── scripts/
│ └── fix-line-endings.sh
├── skills/
│ ├── add-educational-comments/
│ │ └── SKILL.md
│ ├── agent-governance/
│ │ └── SKILL.md
│ ├── agentic-eval/
│ │ └── SKILL.md
│ ├── ai-prompt-engineering-safety-review/
│ │ └── SKILL.md
│ ├── appinsights-instrumentation/
│ │ ├── LICENSE.txt
│ │ ├── SKILL.md
│ │ ├── examples/
│ │ │ └── appinsights.bicep
│ │ ├── references/
│ │ │ ├── ASPNETCORE.md
│ │ │ ├── AUTO.md
│ │ │ ├── NODEJS.md
│ │ │ └── PYTHON.md
│ │ └── scripts/
│ │ └── appinsights.ps1
│ ├── apple-appstore-reviewer/
│ │ └── SKILL.md
│ ├── arch-linux-triage/
│ │ └── SKILL.md
│ ├── architecture-blueprint-generator/
│ │ └── SKILL.md
│ ├── aspire/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── architecture.md
│ │ ├── cli-reference.md
│ │ ├── dashboard.md
│ │ ├── deployment.md
│ │ ├── integrations-catalog.md
│ │ ├── mcp-server.md
│ │ ├── polyglot-apis.md
│ │ ├── testing.md
│ │ └── troubleshooting.md
│ ├── aspnet-minimal-api-openapi/
│ │ └── SKILL.md
│ ├── automate-this/
│ │ └── SKILL.md
│ ├── autoresearch/
│ │ └── SKILL.md
│ ├── aws-cdk-python-setup/
│ │ └── SKILL.md
│ ├── az-cost-optimize/
│ │ └── SKILL.md
│ ├── azure-deployment-preflight/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── ERROR-HANDLING.md
│ │ ├── REPORT-TEMPLATE.md
│ │ └── VALIDATION-COMMANDS.md
│ ├── azure-devops-cli/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── advanced-usage.md
│ │ ├── boards-and-iterations.md
│ │ ├── org-and-security.md
│ │ ├── pipelines-and-builds.md
│ │ ├── repos-and-prs.md
│ │ ├── variables-and-agents.md
│ │ └── workflows-and-patterns.md
│ ├── azure-pricing/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── COPILOT-STUDIO-RATES.md
│ │ ├── COST-ESTIMATOR.md
│ │ ├── REGIONS.md
│ │ └── SERVICE-NAMES.md
│ ├── azure-resource-health-diagnose/
│ │ └── SKILL.md
│ ├── azure-resource-visualizer/
│ │ ├── LICENSE.txt
│ │ ├── SKILL.md
│ │ └── assets/
│ │ └── template-architecture.md
│ ├── azure-role-selector/
│ │ ├── LICENSE.txt
│ │ └── SKILL.md
│ ├── azure-static-web-apps/
│ │ └── SKILL.md
│ ├── bigquery-pipeline-audit/
│ │ └── SKILL.md
│ ├── boost-prompt/
│ │ └── SKILL.md
│ ├── breakdown-epic-arch/
│ │ └── SKILL.md
│ ├── breakdown-epic-pm/
│ │ └── SKILL.md
│ ├── breakdown-feature-implementation/
│ │ └── SKILL.md
│ ├── breakdown-feature-prd/
│ │ └── SKILL.md
│ ├── breakdown-plan/
│ │ └── SKILL.md
│ ├── breakdown-test/
│ │ └── SKILL.md
│ ├── centos-linux-triage/
│ │ └── SKILL.md
│ ├── chrome-devtools/
│ │ └── SKILL.md
│ ├── cli-mastery/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── final-exam.md
│ │ ├── module-1-slash-commands.md
│ │ ├── module-2-keyboard-shortcuts.md
│ │ ├── module-3-modes.md
│ │ ├── module-4-agents.md
│ │ ├── module-5-skills.md
│ │ ├── module-6-mcp.md
│ │ ├── module-7-advanced.md
│ │ ├── module-8-configuration.md
│ │ └── scenarios.md
│ ├── cloud-design-patterns/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── architecture-design.md
│ │ ├── azure-service-mappings.md
│ │ ├── best-practices.md
│ │ ├── deployment-operational.md
│ │ ├── event-driven.md
│ │ ├── messaging-integration.md
│ │ ├── performance.md
│ │ ├── reliability-resilience.md
│ │ └── security.md
│ ├── code-exemplars-blueprint-generator/
│ │ └── SKILL.md
│ ├── codeql/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── alert-management.md
│ │ ├── cli-commands.md
│ │ ├── compiled-languages.md
│ │ ├── sarif-output.md
│ │ ├── troubleshooting.md
│ │ └── workflow-configuration.md
│ ├── comment-code-generate-a-tutorial/
│ │ └── SKILL.md
│ ├── containerize-aspnet-framework/
│ │ └── SKILL.md
│ ├── containerize-aspnetcore/
│ │ └── SKILL.md
│ ├── context-map/
│ │ └── SKILL.md
│ ├── conventional-commit/
│ │ └── SKILL.md
│ ├── convert-plaintext-to-md/
│ │ └── SKILL.md
│ ├── copilot-cli-quickstart/
│ │ └── SKILL.md
│ ├── copilot-instructions-blueprint-generator/
│ │ └── SKILL.md
│ ├── copilot-sdk/
│ │ └── SKILL.md
│ ├── copilot-spaces/
│ │ └── SKILL.md
│ ├── copilot-usage-metrics/
│ │ ├── SKILL.md
│ │ ├── get-enterprise-metrics.sh
│ │ ├── get-enterprise-user-metrics.sh
│ │ ├── get-org-metrics.sh
│ │ └── get-org-user-metrics.sh
│ ├── cosmosdb-datamodeling/
│ │ └── SKILL.md
│ ├── create-agentsmd/
│ │ └── SKILL.md
│ ├── create-architectural-decision-record/
│ │ └── SKILL.md
│ ├── create-github-action-workflow-specification/
│ │ └── SKILL.md
│ ├── create-github-issue-feature-from-specification/
│ │ └── SKILL.md
│ ├── create-github-issues-feature-from-implementation-plan/
│ │ └── SKILL.md
│ ├── create-github-issues-for-unmet-specification-requirements/
│ │ └── SKILL.md
│ ├── create-github-pull-request-from-specification/
│ │ └── SKILL.md
│ ├── create-implementation-plan/
│ │ └── SKILL.md
│ ├── create-llms/
│ │ └── SKILL.md
│ ├── create-readme/
│ │ └── SKILL.md
│ ├── create-specification/
│ │ └── SKILL.md
│ ├── create-spring-boot-java-project/
│ │ └── SKILL.md
│ ├── create-spring-boot-kotlin-project/
│ │ └── SKILL.md
│ ├── create-technical-spike/
│ │ └── SKILL.md
│ ├── create-tldr-page/
│ │ └── SKILL.md
│ ├── creating-oracle-to-postgres-master-migration-plan/
│ │ └── SKILL.md
│ ├── creating-oracle-to-postgres-migration-bug-report/
│ │ ├── SKILL.md
│ │ └── references/
│ │ └── BUG-REPORT-TEMPLATE.md
│ ├── creating-oracle-to-postgres-migration-integration-tests/
│ │ └── SKILL.md
│ ├── csharp-async/
│ │ └── SKILL.md
│ ├── csharp-docs/
│ │ └── SKILL.md
│ ├── csharp-mcp-server-generator/
│ │ └── SKILL.md
│ ├── csharp-mstest/
│ │ └── SKILL.md
│ ├── csharp-nunit/
│ │ └── SKILL.md
│ ├── csharp-tunit/
│ │ └── SKILL.md
│ ├── csharp-xunit/
│ │ └── SKILL.md
│ ├── datanalysis-credit-risk/
│ │ ├── SKILL.md
│ │ ├── references/
│ │ │ ├── analysis.py
│ │ │ └── func.py
│ │ └── scripts/
│ │ └── example.py
│ ├── dataverse-python-advanced-patterns/
│ │ └── SKILL.md
│ ├── dataverse-python-production-code/
│ │ └── SKILL.md
│ ├── dataverse-python-quickstart/
│ │ └── SKILL.md
│ ├── dataverse-python-usecase-builder/
│ │ └── SKILL.md
│ ├── debian-linux-triage/
│ │ └── SKILL.md
│ ├── declarative-agents/
│ │ └── SKILL.md
│ ├── dependabot/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── dependabot-yml-reference.md
│ │ ├── example-configs.md
│ │ └── pr-commands.md
│ ├── devops-rollout-plan/
│ │ └── SKILL.md
│ ├── documentation-writer/
│ │ └── SKILL.md
│ ├── dotnet-best-practices/
│ │ └── SKILL.md
│ ├── dotnet-design-pattern-review/
│ │ └── SKILL.md
│ ├── dotnet-upgrade/
│ │ └── SKILL.md
│ ├── doublecheck/
│ │ ├── SKILL.md
│ │ └── assets/
│ │ └── verification-report-template.md
│ ├── editorconfig/
│ │ └── SKILL.md
│ ├── ef-core/
│ │ └── SKILL.md
│ ├── entra-agent-user/
│ │ └── SKILL.md
│ ├── eval-driven-dev/
│ │ ├── SKILL.md
│ │ └── references/
│ │ └── pixie-api.md
│ ├── excalidraw-diagram-generator/
│ │ ├── SKILL.md
│ │ ├── references/
│ │ │ ├── element-types.md
│ │ │ └── excalidraw-schema.md
│ │ ├── scripts/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── add-arrow.py
│ │ │ ├── add-icon-to-diagram.py
│ │ │ └── split-excalidraw-library.py
│ │ └── templates/
│ │ ├── business-flow-swimlane-template.excalidraw
│ │ ├── class-diagram-template.excalidraw
│ │ ├── data-flow-diagram-template.excalidraw
│ │ ├── er-diagram-template.excalidraw
│ │ ├── flowchart-template.excalidraw
│ │ ├── mindmap-template.excalidraw
│ │ ├── relationship-template.excalidraw
│ │ └── sequence-diagram-template.excalidraw
│ ├── fabric-lakehouse/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── getdata.md
│ │ └── pyspark.md
│ ├── fedora-linux-triage/
│ │ └── SKILL.md
│ ├── finalize-agent-prompt/
│ │ └── SKILL.md
│ ├── finnish-humanizer/
│ │ ├── SKILL.md
│ │ └── references/
│ │ └── patterns.md
│ ├── first-ask/
│ │ └── SKILL.md
│ ├── flowstudio-power-automate-build/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── action-patterns-connectors.md
│ │ ├── action-patterns-core.md
│ │ ├── action-patterns-data.md
│ │ ├── build-patterns.md
│ │ ├── flow-schema.md
│ │ └── trigger-types.md
│ ├── flowstudio-power-automate-debug/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── common-errors.md
│ │ └── debug-workflow.md
│ ├── flowstudio-power-automate-mcp/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── MCP-BOOTSTRAP.md
│ │ ├── action-types.md
│ │ ├── connection-references.md
│ │ └── tool-reference.md
│ ├── fluentui-blazor/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── DATAGRID.md
│ │ ├── LAYOUT-AND-NAVIGATION.md
│ │ ├── SETUP.md
│ │ └── THEMING.md
│ ├── folder-structure-blueprint-generator/
│ │ └── SKILL.md
│ ├── game-engine/
│ │ ├── SKILL.md
│ │ ├── assets/
│ │ │ ├── 2d-maze-game.md
│ │ │ ├── 2d-platform-game.md
│ │ │ ├── gameBase-template-repo.md
│ │ │ ├── paddle-game-template.md
│ │ │ └── simple-2d-engine.md
│ │ └── references/
│ │ ├── 3d-web-games.md
│ │ ├── algorithms.md
│ │ ├── basics.md
│ │ ├── game-control-mechanisms.md
│ │ ├── game-engine-core-principles.md
│ │ ├── game-publishing.md
│ │ ├── techniques.md
│ │ ├── terminology.md
│ │ └── web-apis.md
│ ├── gen-specs-as-issues/
│ │ └── SKILL.md
│ ├── generate-custom-instructions-from-codebase/
│ │ └── SKILL.md
│ ├── gh-cli/
│ │ └── SKILL.md
│ ├── git-commit/
│ │ └── SKILL.md
│ ├── git-flow-branch-creator/
│ │ └── SKILL.md
│ ├── github-copilot-starter/
│ │ └── SKILL.md
│ ├── github-issues/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── dependencies.md
│ │ ├── images.md
│ │ ├── issue-fields.md
│ │ ├── issue-types.md
│ │ ├── projects.md
│ │ ├── search.md
│ │ ├── sub-issues.md
│ │ └── templates.md
│ ├── go-mcp-server-generator/
│ │ └── SKILL.md
│ ├── gtm-0-to-1-launch/
│ │ └── SKILL.md
│ ├── gtm-ai-gtm/
│ │ └── SKILL.md
│ ├── gtm-board-and-investor-communication/
│ │ └── SKILL.md
│ ├── gtm-developer-ecosystem/
│ │ └── SKILL.md
│ ├── gtm-enterprise-account-planning/
│ │ └── SKILL.md
│ ├── gtm-enterprise-onboarding/
│ │ └── SKILL.md
│ ├── gtm-operating-cadence/
│ │ └── SKILL.md
│ ├── gtm-partnership-architecture/
│ │ └── SKILL.md
│ ├── gtm-positioning-strategy/
│ │ └── SKILL.md
│ ├── gtm-product-led-growth/
│ │ └── SKILL.md
│ ├── gtm-technical-product-pricing/
│ │ └── SKILL.md
│ ├── image-manipulation-image-magick/
│ │ └── SKILL.md
│ ├── import-infrastructure-as-code/
│ │ └── SKILL.md
│ ├── issue-fields-migration/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── issue-fields-api.md
│ │ ├── labels-api.md
│ │ └── projects-api.md
│ ├── java-add-graalvm-native-image-support/
│ │ └── SKILL.md
│ ├── java-docs/
│ │ └── SKILL.md
│ ├── java-junit/
│ │ └── SKILL.md
│ ├── java-mcp-server-generator/
│ │ └── SKILL.md
│ ├── java-refactoring-extract-method/
│ │ └── SKILL.md
│ ├── java-refactoring-remove-parameter/
│ │ └── SKILL.md
│ ├── java-springboot/
│ │ └── SKILL.md
│ ├── javascript-typescript-jest/
│ │ └── SKILL.md
│ ├── kotlin-mcp-server-generator/
│ │ └── SKILL.md
│ ├── kotlin-springboot/
│ │ └── SKILL.md
│ ├── legacy-circuit-mockups/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── 28256-eeprom.md
│ │ ├── 555.md
│ │ ├── 6502.md
│ │ ├── 6522.md
│ │ ├── 6C62256.md
│ │ ├── 7400-series.md
│ │ ├── assembly-compiler.md
│ │ ├── assembly-language.md
│ │ ├── basic-electronic-components.md
│ │ ├── breadboard.md
│ │ ├── common-breadboard-components.md
│ │ ├── connecting-electronic-components.md
│ │ ├── emulator-28256-eeprom.md
│ │ ├── emulator-6502.md
│ │ ├── emulator-6522.md
│ │ ├── emulator-6C62256.md
│ │ ├── emulator-lcd.md
│ │ ├── lcd.md
│ │ ├── minipro.md
│ │ └── t48eeprom-programmer.md
│ ├── make-repo-contribution/
│ │ ├── SKILL.md
│ │ └── assets/
│ │ ├── issue-template.md
│ │ └── pr-template.md
│ ├── make-skill-template/
│ │ └── SKILL.md
│ ├── markdown-to-html/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── basic-markdown-to-html.md
│ │ ├── basic-markdown.md
│ │ ├── code-blocks-to-html.md
│ │ ├── code-blocks.md
│ │ ├── collapsed-sections-to-html.md
│ │ ├── collapsed-sections.md
│ │ ├── gomarkdown.md
│ │ ├── hugo.md
│ │ ├── jekyll.md
│ │ ├── marked.md
│ │ ├── pandoc.md
│ │ ├── tables-to-html.md
│ │ ├── tables.md
│ │ ├── writing-mathematical-expressions-to-html.md
│ │ └── writing-mathematical-expressions.md
│ ├── mcp-cli/
│ │ └── SKILL.md
│ ├── mcp-copilot-studio-server-generator/
│ │ └── SKILL.md
│ ├── mcp-create-adaptive-cards/
│ │ └── SKILL.md
│ ├── mcp-create-declarative-agent/
│ │ └── SKILL.md
│ ├── mcp-deploy-manage-agents/
│ │ └── SKILL.md
│ ├── meeting-minutes/
│ │ └── SKILL.md
│ ├── memory-merger/
│ │ └── SKILL.md
│ ├── mentoring-juniors/
│ │ └── SKILL.md
│ ├── microsoft-agent-framework/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── dotnet.md
│ │ └── python.md
│ ├── microsoft-code-reference/
│ │ └── SKILL.md
│ ├── microsoft-docs/
│ │ └── SKILL.md
│ ├── microsoft-skill-creator/
│ │ ├── SKILL.md
│ │ └── references/
│ │ └── skill-templates.md
│ ├── migrating-oracle-to-postgres-stored-procedures/
│ │ └── SKILL.md
│ ├── mkdocs-translations/
│ │ └── SKILL.md
│ ├── model-recommendation/
│ │ └── SKILL.md
│ ├── msstore-cli/
│ │ └── SKILL.md
│ ├── multi-stage-dockerfile/
│ │ └── SKILL.md
│ ├── my-issues/
│ │ └── SKILL.md
│ ├── my-pull-requests/
│ │ └── SKILL.md
│ ├── nano-banana-pro-openrouter/
│ │ ├── SKILL.md
│ │ ├── assets/
│ │ │ └── SYSTEM_TEMPLATE
│ │ └── scripts/
│ │ └── generate_image.py
│ ├── napkin/
│ │ ├── SKILL.md
│ │ └── assets/
│ │ └── napkin.html
│ ├── next-intl-add-language/
│ │ └── SKILL.md
│ ├── noob-mode/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── examples.md
│ │ └── glossary.md
│ ├── nuget-manager/
│ │ └── SKILL.md
│ ├── oo-component-documentation/
│ │ ├── SKILL.md
│ │ ├── assets/
│ │ │ └── documentation-template.md
│ │ └── references/
│ │ ├── create-mode.md
│ │ └── update-mode.md
│ ├── openapi-to-application-code/
│ │ └── SKILL.md
│ ├── pdftk-server/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── download.md
│ │ ├── pdftk-cli-examples.md
│ │ ├── pdftk-man-page.md
│ │ ├── pdftk-server-license.md
│ │ └── third-party-materials.md
│ ├── penpot-uiux-design/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── accessibility.md
│ │ ├── component-patterns.md
│ │ ├── platform-guidelines.md
│ │ └── setup-troubleshooting.md
│ ├── php-mcp-server-generator/
│ │ └── SKILL.md
│ ├── planning-oracle-to-postgres-migration-integration-testing/
│ │ └── SKILL.md
│ ├── plantuml-ascii/
│ │ └── SKILL.md
│ ├── playwright-automation-fill-in-form/
│ │ └── SKILL.md
│ ├── playwright-explore-website/
│ │ └── SKILL.md
│ ├── playwright-generate-test/
│ │ └── SKILL.md
│ ├── polyglot-test-agent/
│ │ ├── SKILL.md
│ │ └── unit-test-generation.prompt.md
│ ├── postgresql-code-review/
│ │ └── SKILL.md
│ ├── postgresql-optimization/
│ │ └── SKILL.md
│ ├── power-apps-code-app-scaffold/
│ │ └── SKILL.md
│ ├── power-bi-dax-optimization/
│ │ └── SKILL.md
│ ├── power-bi-model-design-review/
│ │ └── SKILL.md
│ ├── power-bi-performance-troubleshooting/
│ │ └── SKILL.md
│ ├── power-bi-report-design-consultation/
│ │ └── SKILL.md
│ ├── power-platform-mcp-connector-suite/
│ │ └── SKILL.md
│ ├── powerbi-modeling/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── MEASURES-DAX.md
│ │ ├── PERFORMANCE.md
│ │ ├── RELATIONSHIPS.md
│ │ ├── RLS.md
│ │ └── STAR-SCHEMA.md
│ ├── prd/
│ │ └── SKILL.md
│ ├── premium-frontend-ui/
│ │ └── SKILL.md
│ ├── project-workflow-analysis-blueprint-generator/
│ │ └── SKILL.md
│ ├── prompt-builder/
│ │ └── SKILL.md
│ ├── publish-to-pages/
│ │ ├── SKILL.md
│ │ └── scripts/
│ │ ├── convert-pdf.py
│ │ ├── convert-pptx.py
│ │ └── publish.sh
│ ├── pytest-coverage/
│ │ └── SKILL.md
│ ├── python-mcp-server-generator/
│ │ └── SKILL.md
│ ├── quasi-coder/
│ │ └── SKILL.md
│ ├── readme-blueprint-generator/
│ │ └── SKILL.md
│ ├── refactor/
│ │ └── SKILL.md
│ ├── refactor-method-complexity-reduce/
│ │ └── SKILL.md
│ ├── refactor-plan/
│ │ └── SKILL.md
│ ├── remember/
│ │ └── SKILL.md
│ ├── remember-interactive-programming/
│ │ └── SKILL.md
│ ├── repo-story-time/
│ │ └── SKILL.md
│ ├── review-and-refactor/
│ │ └── SKILL.md
│ ├── reviewing-oracle-to-postgres-migration/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── REFERENCE.md
│ │ ├── empty-strings-handling.md
│ │ ├── no-data-found-exceptions.md
│ │ ├── oracle-parentheses-from-clause.md
│ │ ├── oracle-to-postgres-sorting.md
│ │ ├── oracle-to-postgres-timestamp-timezone.md
│ │ ├── oracle-to-postgres-to-char-numeric.md
│ │ ├── oracle-to-postgres-type-coercion.md
│ │ ├── postgres-concurrent-transactions.md
│ │ └── postgres-refcursor-handling.md
│ ├── ruby-mcp-server-generator/
│ │ └── SKILL.md
│ ├── rust-mcp-server-generator/
│ │ └── SKILL.md
│ ├── sandbox-npm-install/
│ │ ├── SKILL.md
│ │ └── scripts/
│ │ └── install.sh
│ ├── scaffolding-oracle-to-postgres-migration-test-project/
│ │ └── SKILL.md
│ ├── scoutqa-test/
│ │ └── SKILL.md
│ ├── secret-scanning/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── alerts-and-remediation.md
│ │ ├── custom-patterns.md
│ │ └── push-protection.md
│ ├── semantic-kernel/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── dotnet.md
│ │ └── python.md
│ ├── shuffle-json-data/
│ │ └── SKILL.md
│ ├── snowflake-semanticview/
│ │ └── SKILL.md
│ ├── sponsor-finder/
│ │ └── SKILL.md
│ ├── spring-boot-testing/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── assertj-basics.md
│ │ ├── assertj-collections.md
│ │ ├── context-caching.md
│ │ ├── datajpatest.md
│ │ ├── instancio.md
│ │ ├── mockitobean.md
│ │ ├── mockmvc-classic.md
│ │ ├── mockmvc-tester.md
│ │ ├── restclienttest.md
│ │ ├── resttestclient.md
│ │ ├── sb4-migration.md
│ │ ├── test-slices-overview.md
│ │ ├── testcontainers-jdbc.md
│ │ └── webmvctest.md
│ ├── sql-code-review/
│ │ └── SKILL.md
│ ├── sql-optimization/
│ │ └── SKILL.md
│ ├── structured-autonomy-generate/
│ │ └── SKILL.md
│ ├── structured-autonomy-implement/
│ │ └── SKILL.md
│ ├── structured-autonomy-plan/
│ │ └── SKILL.md
│ ├── suggest-awesome-github-copilot-agents/
│ │ └── SKILL.md
│ ├── suggest-awesome-github-copilot-instructions/
│ │ └── SKILL.md
│ ├── suggest-awesome-github-copilot-skills/
│ │ └── SKILL.md
│ ├── swift-mcp-server-generator/
│ │ └── SKILL.md
│ ├── technology-stack-blueprint-generator/
│ │ └── SKILL.md
│ ├── terraform-azurerm-set-diff-analyzer/
│ │ ├── SKILL.md
│ │ ├── references/
│ │ │ ├── azurerm_set_attributes.json
│ │ │ └── azurerm_set_attributes.md
│ │ └── scripts/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ └── analyze_plan.py
│ ├── tldr-prompt/
│ │ └── SKILL.md
│ ├── transloadit-media-processing/
│ │ └── SKILL.md
│ ├── typescript-mcp-server-generator/
│ │ └── SKILL.md
│ ├── typespec-api-operations/
│ │ └── SKILL.md
│ ├── typespec-create-agent/
│ │ └── SKILL.md
│ ├── typespec-create-api-plugin/
│ │ └── SKILL.md
│ ├── unit-test-vue-pinia/
│ │ ├── SKILL.md
│ │ └── references/
│ │ └── pinia-patterns.md
│ ├── update-avm-modules-in-bicep/
│ │ └── SKILL.md
│ ├── update-implementation-plan/
│ │ └── SKILL.md
│ ├── update-llms/
│ │ └── SKILL.md
│ ├── update-markdown-file-index/
│ │ └── SKILL.md
│ ├── update-specification/
│ │ └── SKILL.md
│ ├── vscode-ext-commands/
│ │ └── SKILL.md
│ ├── vscode-ext-localization/
│ │ └── SKILL.md
│ ├── web-coder/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── accessibility.md
│ │ ├── architecture-patterns.md
│ │ ├── browsers-engines.md
│ │ ├── css-styling.md
│ │ ├── data-formats-encoding.md
│ │ ├── development-tools.md
│ │ ├── glossary.md
│ │ ├── html-markup.md
│ │ ├── http-networking.md
│ │ ├── javascript-programming.md
│ │ ├── media-graphics.md
│ │ ├── performance-optimization.md
│ │ ├── security-authentication.md
│ │ ├── servers-infrastructure.md
│ │ ├── web-apis-dom.md
│ │ └── web-protocols-standards.md
│ ├── web-design-reviewer/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── framework-fixes.md
│ │ └── visual-checklist.md
│ ├── webapp-testing/
│ │ ├── SKILL.md
│ │ └── assets/
│ │ └── test-helper.js
│ ├── what-context-needed/
│ │ └── SKILL.md
│ ├── winapp-cli/
│ │ └── SKILL.md
│ ├── winmd-api-search/
│ │ ├── LICENSE.txt
│ │ ├── SKILL.md
│ │ └── scripts/
│ │ ├── Invoke-WinMdQuery.ps1
│ │ ├── Update-WinMdCache.ps1
│ │ └── cache-generator/
│ │ ├── CacheGenerator.csproj
│ │ ├── Directory.Build.props
│ │ ├── Directory.Build.targets
│ │ ├── Directory.Packages.props
│ │ └── Program.cs
│ ├── winui3-migration-guide/
│ │ └── SKILL.md
│ ├── workiq-copilot/
│ │ └── SKILL.md
│ └── write-coding-standards-from-file/
│ └── SKILL.md
├── website/
│ ├── astro.config.mjs
│ ├── data/
│ │ └── tools.yml
│ ├── package.json
│ ├── public/
│ │ └── _CNAME
│ ├── src/
│ │ ├── components/
│ │ │ ├── ContributeCTA.astro
│ │ │ ├── EmbeddedPageData.astro
│ │ │ ├── Footer.astro
│ │ │ ├── Head.astro
│ │ │ ├── Modal.astro
│ │ │ └── PageHeader.astro
│ │ ├── content/
│ │ │ └── docs/
│ │ │ └── learning-hub/
│ │ │ ├── agentic-workflows.md
│ │ │ ├── automating-with-hooks.md
│ │ │ ├── before-after-customization-examples.md
│ │ │ ├── building-custom-agents.md
│ │ │ ├── copilot-configuration-basics.md
│ │ │ ├── creating-effective-skills.md
│ │ │ ├── defining-custom-instructions.md
│ │ │ ├── github-copilot-terminology-glossary.md
│ │ │ ├── index.md
│ │ │ ├── installing-and-using-plugins.md
│ │ │ ├── understanding-copilot-context.md
│ │ │ ├── understanding-mcp-servers.md
│ │ │ ├── using-copilot-coding-agent.md
│ │ │ └── what-are-agents-skills-instructions.md
│ │ ├── content.config.ts
│ │ ├── env.d.ts
│ │ ├── integrations/
│ │ │ └── pagefind-resources.ts
│ │ ├── pages/
│ │ │ ├── agents.astro
│ │ │ ├── contributors.astro
│ │ │ ├── hooks.astro
│ │ │ ├── index.astro
│ │ │ ├── instructions.astro
│ │ │ ├── learning-hub/
│ │ │ │ └── cookbook/
│ │ │ │ └── index.astro
│ │ │ ├── llms.txt.ts
│ │ │ ├── plugins.astro
│ │ │ ├── skills.astro
│ │ │ ├── tools.astro
│ │ │ └── workflows.astro
│ │ ├── scripts/
│ │ │ ├── choices.ts
│ │ │ ├── embedded-data.ts
│ │ │ ├── jszip.ts
│ │ │ ├── modal.ts
│ │ │ ├── pages/
│ │ │ │ ├── agents-render.ts
│ │ │ │ ├── agents.ts
│ │ │ │ ├── hooks-render.ts
│ │ │ │ ├── hooks.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── instructions-render.ts
│ │ │ │ ├── instructions.ts
│ │ │ │ ├── plugins-render.ts
│ │ │ │ ├── plugins.ts
│ │ │ │ ├── samples-render.ts
│ │ │ │ ├── samples.ts
│ │ │ │ ├── skills-render.ts
│ │ │ │ ├── skills.ts
│ │ │ │ ├── tools-render.ts
│ │ │ │ ├── tools.ts
│ │ │ │ ├── workflows-render.ts
│ │ │ │ └── workflows.ts
│ │ │ ├── search.ts
│ │ │ └── utils.ts
│ │ └── styles/
│ │ ├── global.css
│ │ └── starlight-overrides.css
│ └── tsconfig.json
└── workflows/
├── daily-issues-report.md
├── ospo-contributors-report.md
├── ospo-org-health.md
├── ospo-release-compliance-checker.md
├── ospo-stale-repos.md
├── relevance-check.md
└── relevance-summary.md
================================================
FILE CONTENTS
================================================
================================================
FILE: .all-contributorsrc
================================================
{
"projectName": "awesome-copilot",
"projectOwner": "github",
"repoType": "github",
"repoHost": "https://github.com",
"files": [
"README.md",
"website/src/pages/contributors.astro"
],
"contributorTemplate": "<a href=\"<%= contributor.profile %>\"><img src=\"<%= contributor.avatar_url %>\" width=\"<%= options.imageSize %>px;\" alt=\"\"/><br /><sub><b><%= contributor.name %></b></sub></a>",
"imageSize": 100,
"commit": false,
"commitConvention": "none",
"contributorsPerLine": 7,
"linkToUsage": true,
"commitType": "docs",
"types": {
"instructions": {
"symbol": "🧭",
"description": "Custom instructions for GitHub Copilot"
},
"prompts": {
"symbol": "⌨️",
"description": "Reusable prompts for GitHub Copilot"
},
"agents": {
"symbol": "🎭",
"description": "Specialized agents for GitHub Copilot"
},
"skills": {
"symbol": "🧰",
"description": "Specialized skills for GitHub Copilot"
},
"plugins": {
"symbol": "🎁",
"description": "Curated plugins for GitHub Copilot"
}
},
"ignoreList": [
"dependabot[bot]",
"github-actions[bot]",
"allcontributors[bot]",
"Copilot",
"Claude"
],
"contributorsSortAlphabetically": false,
"contributors": [
{
"login": "aaronpowell",
"name": "Aaron Powell",
"avatar_url": "https://avatars.githubusercontent.com/u/434140?v=4",
"profile": "https://www.aaron-powell.com/",
"contributions": [
"agents",
"code",
"plugins",
"doc",
"infra",
"instructions",
"maintenance",
"prompts"
]
},
{
"login": "codemillmatt",
"name": "Matt Soucoup",
"avatar_url": "https://avatars.githubusercontent.com/u/2053639?v=4",
"profile": "https://codemilltech.com/",
"contributions": [
"infra"
]
},
{
"login": "troystaylor",
"name": "Troy Simeon Taylor",
"avatar_url": "https://avatars.githubusercontent.com/u/44444967?v=4",
"profile": "https://www.buymeacoffee.com/troystaylor",
"contributions": [
"agents",
"plugins",
"instructions",
"prompts"
]
},
{
"login": "abbas133",
"name": "Abbas",
"avatar_url": "https://avatars.githubusercontent.com/u/7757139?v=4",
"profile": "https://github.com/abbas133",
"contributions": [
"agents",
"instructions"
]
},
{
"login": "PEZ",
"name": "Peter Strömberg",
"avatar_url": "https://avatars.githubusercontent.com/u/30010?v=4",
"profile": "https://calva.io/",
"contributions": [
"agents",
"plugins",
"instructions",
"prompts"
]
},
{
"login": "PlagueHO",
"name": "Daniel Scott-Raynsford",
"avatar_url": "https://avatars.githubusercontent.com/u/7589164?v=4",
"profile": "https://danielscottraynsford.com/",
"contributions": [
"agents",
"plugins",
"instructions",
"prompts"
]
},
{
"login": "jhauga",
"name": "John Haugabook",
"avatar_url": "https://avatars.githubusercontent.com/u/10998676?v=4",
"profile": "https://github.com/jhauga",
"contributions": [
"instructions",
"prompts"
]
},
{
"login": "psimsa",
"name": "Pavel Simsa",
"avatar_url": "https://avatars.githubusercontent.com/u/7853836?v=4",
"profile": "https://witter.cz/@pavel",
"contributions": [
"code"
]
},
{
"login": "digitarald",
"name": "Harald Kirschner",
"avatar_url": "https://avatars.githubusercontent.com/u/8599?v=4",
"profile": "http://digitarald.de/",
"contributions": [
"code",
"doc",
"maintenance"
]
},
{
"login": "mubaidr",
"name": "Muhammad Ubaid Raza",
"avatar_url": "https://avatars.githubusercontent.com/u/2222702?v=4",
"profile": "https://mubaidr.js.org/",
"contributions": [
"agents",
"instructions"
]
},
{
"login": "tmeschter",
"name": "Tom Meschter",
"avatar_url": "https://avatars.githubusercontent.com/u/10506730?v=4",
"profile": "https://github.com/tmeschter",
"contributions": [
"code"
]
},
{
"login": "AungMyoKyaw",
"name": "Aung Myo Kyaw",
"avatar_url": "https://avatars.githubusercontent.com/u/9404824?v=4",
"profile": "https://www.aungmyokyaw.com/",
"contributions": [
"agents",
"prompts"
]
},
{
"login": "JasonYeMSFT",
"name": "JasonYeMSFT",
"avatar_url": "https://avatars.githubusercontent.com/u/39359541?v=4",
"profile": "https://github.com/JasonYeMSFT",
"contributions": [
"code"
]
},
{
"login": "Jrc356",
"name": "Jon Corbin",
"avatar_url": "https://avatars.githubusercontent.com/u/37387479?v=4",
"profile": "https://www.linkedin.com/in/jrc356/",
"contributions": [
"agents",
"prompts"
]
},
{
"login": "troytaylor-msft",
"name": "troytaylor-msft",
"avatar_url": "https://avatars.githubusercontent.com/u/248058374?v=4",
"profile": "https://github.com/troytaylor-msft",
"contributions": [
"code"
]
},
{
"login": "fazedordecodigo",
"name": "Emerson Delatorre",
"avatar_url": "https://avatars.githubusercontent.com/u/38289677?v=4",
"profile": "https://delatorre.dev/",
"contributions": [
"instructions"
]
},
{
"login": "burkeholland",
"name": "Burke Holland",
"avatar_url": "https://avatars.githubusercontent.com/u/686963?v=4",
"profile": "https://github.com/burkeholland",
"contributions": [
"agents",
"infra",
"instructions",
"prompts"
]
},
{
"login": "yaooqinn",
"name": "Kent Yao",
"avatar_url": "https://avatars.githubusercontent.com/u/8326978?v=4",
"profile": "https://yaooqinn.github.io/",
"contributions": [
"instructions",
"prompts"
]
},
{
"login": "danielmeppiel",
"name": "Daniel Meppiel",
"avatar_url": "https://avatars.githubusercontent.com/u/51440732?v=4",
"profile": "https://www.devprodlogs.com/",
"contributions": [
"prompts"
]
},
{
"login": "yeelam-gordon",
"name": "Gordon Lam",
"avatar_url": "https://avatars.githubusercontent.com/u/73506701?v=4",
"profile": "https://github.com/yeelam-gordon",
"contributions": [
"instructions"
]
},
{
"login": "madskristensen",
"name": "Mads Kristensen",
"avatar_url": "https://avatars.githubusercontent.com/u/1258877?v=4",
"profile": "https://www.madskristensen.net/",
"contributions": [
"instructions"
]
},
{
"login": "ks6088ts",
"name": "Shinji Takenaka",
"avatar_url": "https://avatars.githubusercontent.com/u/1254960?v=4",
"profile": "https://ks6088ts.github.io/",
"contributions": [
"code"
]
},
{
"login": "spectatora",
"name": "spectatora",
"avatar_url": "https://avatars.githubusercontent.com/u/1385755?v=4",
"profile": "https://github.com/spectatora",
"contributions": [
"agents",
"code",
"maintenance"
]
},
{
"login": "sinedied",
"name": "Yohan Lasorsa",
"avatar_url": "https://avatars.githubusercontent.com/u/593151?v=4",
"profile": "https://github.com/sinedied",
"contributions": [
"instructions",
"prompts"
]
},
{
"login": "VamshiVerma",
"name": "Vamshi Verma",
"avatar_url": "https://avatars.githubusercontent.com/u/21999324?v=4",
"profile": "https://github.com/VamshiVerma",
"contributions": [
"instructions",
"prompts"
]
},
{
"login": "jamesmontemagno",
"name": "James Montemagno",
"avatar_url": "https://avatars.githubusercontent.com/u/1676321?v=4",
"profile": "https://montemagno.com/",
"contributions": [
"agents",
"doc",
"instructions",
"prompts"
]
},
{
"login": "alefragnani",
"name": "Alessandro Fragnani",
"avatar_url": "https://avatars.githubusercontent.com/u/3781424?v=4",
"profile": "https://twitter.com/alefragnani",
"contributions": [
"code"
]
},
{
"login": "ambilykk",
"name": "Ambily",
"avatar_url": "https://avatars.githubusercontent.com/u/10282550?v=4",
"profile": "https://www.linkedin.com/in/ambilykk/",
"contributions": [
"agents",
"instructions"
]
},
{
"login": "krushideep",
"name": "krushideep",
"avatar_url": "https://avatars.githubusercontent.com/u/174652083?v=4",
"profile": "https://github.com/krushideep",
"contributions": [
"prompts"
]
},
{
"login": "mihsoft",
"name": "devopsfan",
"avatar_url": "https://avatars.githubusercontent.com/u/53946345?v=4",
"profile": "https://github.com/mihsoft",
"contributions": [
"agents"
]
},
{
"login": "tgrall",
"name": "Tugdual Grall",
"avatar_url": "https://avatars.githubusercontent.com/u/541250?v=4",
"profile": "http://tgrall.github.io/",
"contributions": [
"instructions",
"prompts"
]
},
{
"login": "OrenMe",
"name": "Oren Me",
"avatar_url": "https://avatars.githubusercontent.com/u/5461862?v=4",
"profile": "https://www.promptboost.dev/",
"contributions": [
"agents",
"instructions"
]
},
{
"login": "mjrousos",
"name": "Mike Rousos",
"avatar_url": "https://avatars.githubusercontent.com/u/10077254?v=4",
"profile": "https://github.com/mjrousos",
"contributions": [
"instructions",
"prompts"
]
},
{
"login": "justinyoo",
"name": "Justin Yoo",
"avatar_url": "https://avatars.githubusercontent.com/u/1538528?v=4",
"profile": "https://devkimchi.com/",
"contributions": [
"instructions"
]
},
{
"login": "guiopen",
"name": "Guilherme do Amaral Alves ",
"avatar_url": "https://avatars.githubusercontent.com/u/94094527?v=4",
"profile": "https://github.com/guiopen",
"contributions": [
"instructions"
]
},
{
"login": "griffinashe",
"name": "Griffin Ashe",
"avatar_url": "https://avatars.githubusercontent.com/u/6391612?v=4",
"profile": "https://www.linkedin.com/in/griffinashe/",
"contributions": [
"agents",
"plugins"
]
},
{
"login": "anchildress1",
"name": "Ashley Childress",
"avatar_url": "https://avatars.githubusercontent.com/u/6563688?v=4",
"profile": "https://github.com/anchildress1",
"contributions": [
"agents",
"doc",
"instructions",
"infra",
"code"
]
},
{
"login": "AClerbois",
"name": "Adrien Clerbois",
"avatar_url": "https://avatars.githubusercontent.com/u/50712277?v=4",
"profile": "http://www.senseof.tech/",
"contributions": [
"agents",
"doc",
"prompts"
]
},
{
"login": "Vhivi",
"name": "ANGELELLI David",
"avatar_url": "https://avatars.githubusercontent.com/u/38220028?v=4",
"profile": "https://github.com/Vhivi",
"contributions": [
"agents"
]
},
{
"login": "markdav-is",
"name": "Mark Davis",
"avatar_url": "https://avatars.githubusercontent.com/u/311063?v=4",
"profile": "http://markdav.is/",
"contributions": [
"instructions"
]
},
{
"login": "MattVevang",
"name": "Matt Vevang",
"avatar_url": "https://avatars.githubusercontent.com/u/20714898?v=4",
"profile": "https://github.com/MattVevang",
"contributions": [
"instructions"
]
},
{
"login": "mpgirro",
"name": "Maximilian Irro",
"avatar_url": "https://avatars.githubusercontent.com/u/589073?v=4",
"profile": "https://max.irro.at/",
"contributions": [
"instructions"
]
},
{
"login": "nullchimp",
"name": "NULLchimp",
"avatar_url": "https://avatars.githubusercontent.com/u/58362593?v=4",
"profile": "https://github.com/nullchimp",
"contributions": [
"agents"
]
},
{
"login": "pkarda",
"name": "Peter Karda",
"avatar_url": "https://avatars.githubusercontent.com/u/12649718?v=4",
"profile": "https://github.com/pkarda",
"contributions": [
"prompts"
]
},
{
"login": "sdolgin",
"name": "Saul Dolgin",
"avatar_url": "https://avatars.githubusercontent.com/u/576449?v=4",
"profile": "https://github.com/sdolgin",
"contributions": [
"agents",
"instructions",
"prompts"
]
},
{
"login": "shubham070",
"name": "Shubham Gaikwad",
"avatar_url": "https://avatars.githubusercontent.com/u/5480589?v=4",
"profile": "https://github.com/shubham070",
"contributions": [
"agents",
"instructions",
"prompts"
]
},
{
"login": "TheovanKraay",
"name": "Theo van Kraay",
"avatar_url": "https://avatars.githubusercontent.com/u/24420698?v=4",
"profile": "https://github.com/TheovanKraay",
"contributions": [
"instructions"
]
},
{
"login": "TianqiZhang",
"name": "Tianqi Zhang",
"avatar_url": "https://avatars.githubusercontent.com/u/5326582?v=4",
"profile": "https://github.com/TianqiZhang",
"contributions": [
"agents"
]
},
{
"login": "doggy8088",
"name": "Will 保哥",
"avatar_url": "https://avatars.githubusercontent.com/u/88981?v=4",
"profile": "https://blog.miniasp.com/",
"contributions": [
"agents",
"prompts"
]
},
{
"login": "tsubakimoto",
"name": "Yuta Matsumura",
"avatar_url": "https://avatars.githubusercontent.com/u/1592808?v=4",
"profile": "https://tsubalog.hatenablog.com/",
"contributions": [
"instructions"
]
},
{
"login": "anschnapp",
"name": "anschnapp",
"avatar_url": "https://avatars.githubusercontent.com/u/17565996?v=4",
"profile": "https://github.com/anschnapp",
"contributions": [
"agents"
]
},
{
"login": "hizahizi-hizumi",
"name": "hizahizi-hizumi",
"avatar_url": "https://avatars.githubusercontent.com/u/163728895?v=4",
"profile": "https://github.com/hizahizi-hizumi",
"contributions": [
"instructions"
]
},
{
"login": "Jian-Min-Huang",
"name": "黃健旻 Vincent Huang",
"avatar_url": "https://avatars.githubusercontent.com/u/6296280?v=4",
"profile": "https://jianminhuang.cc/",
"contributions": [
"prompts"
]
},
{
"login": "brunoborges",
"name": "Bruno Borges",
"avatar_url": "https://avatars.githubusercontent.com/u/129743?v=4",
"profile": "http://brunoborges.io/",
"contributions": [
"plugins",
"instructions"
]
},
{
"login": "MovingLive",
"name": "Steve Magne",
"avatar_url": "https://avatars.githubusercontent.com/u/14792628?v=4",
"profile": "https://www.movinglive.ca/",
"contributions": [
"doc",
"instructions"
]
},
{
"login": "PureWeen",
"name": "Shane Neuville",
"avatar_url": "https://avatars.githubusercontent.com/u/5375137?v=4",
"profile": "http://shaneneuville.com/",
"contributions": [
"agents",
"instructions"
]
},
{
"login": "askpt",
"name": "André Silva",
"avatar_url": "https://avatars.githubusercontent.com/u/2493377?v=4",
"profile": "https://asilva.dev/",
"contributions": [
"agents",
"instructions"
]
},
{
"login": "agreaves-ms",
"name": "Allen Greaves",
"avatar_url": "https://avatars.githubusercontent.com/u/111466195?v=4",
"profile": "https://github.com/agreaves-ms",
"contributions": [
"agents",
"instructions"
]
},
{
"login": "AmeliaRose802",
"name": "Amelia Payne",
"avatar_url": "https://avatars.githubusercontent.com/u/26167931?v=4",
"profile": "https://github.com/AmeliaRose802",
"contributions": [
"agents"
]
},
{
"login": "BBoyBen",
"name": "BBoyBen",
"avatar_url": "https://avatars.githubusercontent.com/u/34445365?v=4",
"profile": "https://github.com/BBoyBen",
"contributions": [
"instructions"
]
},
{
"login": "brooke-hamilton",
"name": "Brooke Hamilton",
"avatar_url": "https://avatars.githubusercontent.com/u/45323234?v=4",
"profile": "https://azureincubations.io/",
"contributions": [
"instructions"
]
},
{
"login": "GeekTrainer",
"name": "Christopher Harrison",
"avatar_url": "https://avatars.githubusercontent.com/u/6109729?v=4",
"profile": "https://github.com/GeekTrainer",
"contributions": [
"instructions"
]
},
{
"login": "breakid",
"name": "Dan",
"avatar_url": "https://avatars.githubusercontent.com/u/1446918?v=4",
"profile": "https://github.com/breakid",
"contributions": [
"instructions"
]
},
{
"login": "DanWahlin",
"name": "Dan Wahlin",
"avatar_url": "https://avatars.githubusercontent.com/u/1767249?v=4",
"profile": "https://blog.codewithdan.com/",
"contributions": [
"agents"
]
},
{
"login": "debs-obrien",
"name": "Debbie O'Brien",
"avatar_url": "https://avatars.githubusercontent.com/u/13063165?v=4",
"profile": "https://debbie.codes/",
"contributions": [
"agents",
"instructions",
"prompts"
]
},
{
"login": "echarrod",
"name": "Ed Harrod",
"avatar_url": "https://avatars.githubusercontent.com/u/1381991?v=4",
"profile": "https://github.com/echarrod",
"contributions": [
"prompts"
]
},
{
"login": "gewarren",
"name": "Genevieve Warren",
"avatar_url": "https://avatars.githubusercontent.com/u/24882762?v=4",
"profile": "http://learn.microsoft.com/dotnet",
"contributions": [
"prompts"
]
},
{
"login": "guigui42",
"name": "Guillaume",
"avatar_url": "https://avatars.githubusercontent.com/u/2376010?v=4",
"profile": "https://github.com/guigui42",
"contributions": [
"agents",
"prompts"
]
},
{
"login": "riqueufmg",
"name": "Henrique Nunes",
"avatar_url": "https://avatars.githubusercontent.com/u/108551585?v=4",
"profile": "https://github.com/riqueufmg",
"contributions": [
"prompts"
]
},
{
"login": "jeremiah-snee-openx",
"name": "Jeremiah Snee",
"avatar_url": "https://avatars.githubusercontent.com/u/113928685?v=4",
"profile": "https://github.com/jeremiah-snee-openx",
"contributions": [
"code"
]
},
{
"login": "kartikdhiman",
"name": "Kartik Dhiman",
"avatar_url": "https://avatars.githubusercontent.com/u/59189590?v=4",
"profile": "https://github.com/kartikdhiman",
"contributions": [
"instructions"
]
},
{
"login": "kristiyan-velkov",
"name": "Kristiyan Velkov",
"avatar_url": "https://avatars.githubusercontent.com/u/40764277?v=4",
"profile": "https://kristiyanvelkov.com/",
"contributions": [
"agents"
]
},
{
"login": "msalaman",
"name": "msalaman",
"avatar_url": "https://avatars.githubusercontent.com/u/28122166?v=4",
"profile": "https://github.com/msalaman",
"contributions": [
"code"
]
},
{
"login": "soderlind",
"name": "Per Søderlind",
"avatar_url": "https://avatars.githubusercontent.com/u/1649452?v=4",
"profile": "https://soderlind.no/",
"contributions": [
"instructions"
]
},
{
"login": "psmulovics",
"name": "Peter Smulovics",
"avatar_url": "https://avatars.githubusercontent.com/u/28162552?v=4",
"profile": "http://dotneteers.net/",
"contributions": [
"instructions"
]
},
{
"login": "madvimer",
"name": "Ravish Rathod",
"avatar_url": "https://avatars.githubusercontent.com/u/3188898?v=4",
"profile": "https://github.com/madvimer",
"contributions": [
"instructions"
]
},
{
"login": "ricksmit3000",
"name": "Rick Smit",
"avatar_url": "https://avatars.githubusercontent.com/u/7207783?v=4",
"profile": "https://ricksm.it/",
"contributions": [
"agents"
]
},
{
"login": "pertrai1",
"name": "Rob Simpson",
"avatar_url": "https://avatars.githubusercontent.com/u/442374?v=4",
"profile": "https://github.com/pertrai1",
"contributions": [
"instructions"
]
},
{
"login": "inquinity",
"name": "Robert Altman",
"avatar_url": "https://avatars.githubusercontent.com/u/406234?v=4",
"profile": "https://github.com/inquinity",
"contributions": [
"instructions"
]
},
{
"login": "salihguru",
"name": "Salih",
"avatar_url": "https://avatars.githubusercontent.com/u/76786120?v=4",
"profile": "https://salih.guru/",
"contributions": [
"instructions"
]
},
{
"login": "segraef",
"name": "Sebastian Gräf",
"avatar_url": "https://avatars.githubusercontent.com/u/19261257?v=4",
"profile": "https://graef.io/",
"contributions": [
"agents",
"instructions"
]
},
{
"login": "SebastienDegodez",
"name": "Sebastien DEGODEZ",
"avatar_url": "https://avatars.githubusercontent.com/u/2349146?v=4",
"profile": "https://github.com/SebastienDegodez",
"contributions": [
"instructions"
]
},
{
"login": "sesmyrnov",
"name": "Sergiy Smyrnov",
"avatar_url": "https://avatars.githubusercontent.com/u/59627981?v=4",
"profile": "https://github.com/sesmyrnov",
"contributions": [
"prompts"
]
},
{
"login": "SomeSolutionsArchitect",
"name": "SomeSolutionsArchitect",
"avatar_url": "https://avatars.githubusercontent.com/u/139817767?v=4",
"profile": "https://github.com/SomeSolutionsArchitect",
"contributions": [
"agents"
]
},
{
"login": "kewalaka",
"name": "Stu Mace",
"avatar_url": "https://avatars.githubusercontent.com/u/3146590?v=4",
"profile": "https://github.com/kewalaka",
"contributions": [
"agents",
"plugins",
"instructions"
]
},
{
"login": "STRUDSO",
"name": "Søren Trudsø Mahon",
"avatar_url": "https://avatars.githubusercontent.com/u/1543732?v=4",
"profile": "https://github.com/STRUDSO",
"contributions": [
"instructions"
]
},
{
"login": "semperteneo",
"name": "Tj Vita",
"avatar_url": "https://avatars.githubusercontent.com/u/14024037?v=4",
"profile": "http://enakdesign.com/",
"contributions": [
"agents"
]
},
{
"login": "pelikhan",
"name": "Peli de Halleux",
"avatar_url": "https://avatars.githubusercontent.com/u/4175913?v=4",
"profile": "https://github.com/pelikhan",
"contributions": [
"code"
]
},
{
"login": "paulomorgado",
"name": "Paulo Morgado",
"avatar_url": "https://avatars.githubusercontent.com/u/470455?v=4",
"profile": "https://www.paulomorgado.net/",
"contributions": [
"prompts"
]
},
{
"login": "pcrane",
"name": "Paul Crane",
"avatar_url": "https://avatars.githubusercontent.com/u/808676?v=4",
"profile": "https://paul.crane.net.nz/",
"contributions": [
"agents"
]
},
{
"login": "pamelafox",
"name": "Pamela Fox",
"avatar_url": "https://avatars.githubusercontent.com/u/297042?v=4",
"profile": "https://www.pamelafox.org/",
"contributions": [
"prompts"
]
},
{
"login": "prewk",
"name": "Oskar Thornblad",
"avatar_url": "https://avatars.githubusercontent.com/u/640102?v=4",
"profile": "https://oskarthornblad.se/",
"contributions": [
"instructions"
]
},
{
"login": "nischays",
"name": "Nischay Sharma",
"avatar_url": "https://avatars.githubusercontent.com/u/54121853?v=4",
"profile": "https://github.com/nischays",
"contributions": [
"agents"
]
},
{
"login": "Naikabg",
"name": "Nikolay Marinov",
"avatar_url": "https://avatars.githubusercontent.com/u/19915620?v=4",
"profile": "https://github.com/Naikabg",
"contributions": [
"agents"
]
},
{
"login": "niksacdev",
"name": "Nik Sachdeva",
"avatar_url": "https://avatars.githubusercontent.com/u/20246918?v=4",
"profile": "https://www.linkedin.com/in/niksac",
"contributions": [
"agents",
"plugins"
]
},
{
"login": "nickytonline",
"name": "Nick Taylor",
"avatar_url": "https://avatars.githubusercontent.com/u/833231?v=4",
"profile": "https://onetipaweek.com/",
"contributions": [
"code"
]
},
{
"login": "nicholasdbrady",
"name": "Nick Brady",
"avatar_url": "https://avatars.githubusercontent.com/u/18353756?v=4",
"profile": "https://nicholasdbrady.github.io/cookbook/",
"contributions": [
"agents"
]
},
{
"login": "nastanford",
"name": "Nathan Stanford Sr",
"avatar_url": "https://avatars.githubusercontent.com/u/1755947?v=4",
"profile": "https://github.com/nastanford",
"contributions": [
"instructions"
]
},
{
"login": "matebarabas",
"name": "Máté Barabás",
"avatar_url": "https://avatars.githubusercontent.com/u/22733424?v=4",
"profile": "https://github.com/matebarabas",
"contributions": [
"instructions"
]
},
{
"login": "mikeparker104",
"name": "Mike Parker",
"avatar_url": "https://avatars.githubusercontent.com/u/12763221?v=4",
"profile": "https://github.com/mikeparker104",
"contributions": [
"instructions"
]
},
{
"login": "mikekistler",
"name": "Mike Kistler",
"avatar_url": "https://avatars.githubusercontent.com/u/85643503?v=4",
"profile": "https://github.com/mikekistler",
"contributions": [
"prompts"
]
},
{
"login": "giomartinsdev",
"name": "Giovanni de Almeida Martins",
"avatar_url": "https://avatars.githubusercontent.com/u/125399281?v=4",
"profile": "https://github.com/giomartinsdev",
"contributions": [
"instructions"
]
},
{
"login": "dgh06175",
"name": "이상현",
"avatar_url": "https://avatars.githubusercontent.com/u/77305722?v=4",
"profile": "https://github.com/dgh06175",
"contributions": [
"instructions"
]
},
{
"login": "zooav",
"name": "Ankur Sharma",
"avatar_url": "https://avatars.githubusercontent.com/u/12625412?v=4",
"profile": "https://github.com/zooav",
"contributions": [
"prompts"
]
},
{
"login": "webreidi",
"name": "Wendy Breiding",
"avatar_url": "https://avatars.githubusercontent.com/u/55603905?v=4",
"profile": "https://github.com/webreidi",
"contributions": [
"code"
]
},
{
"login": "voidfnc",
"name": "voidfnc",
"avatar_url": "https://avatars.githubusercontent.com/u/194750710?v=4",
"profile": "https://github.com/voidfnc",
"contributions": [
"agents"
]
},
{
"login": "shavo007",
"name": "shane lee",
"avatar_url": "https://avatars.githubusercontent.com/u/5466825?v=4",
"profile": "https://about.me/shane-lee",
"contributions": [
"instructions"
]
},
{
"login": "sdanzo-hrb",
"name": "sdanzo-hrb",
"avatar_url": "https://avatars.githubusercontent.com/u/136493100?v=4",
"profile": "https://github.com/sdanzo-hrb",
"contributions": [
"agents"
]
},
{
"login": "isauran",
"name": "sauran",
"avatar_url": "https://avatars.githubusercontent.com/u/33398121?v=4",
"profile": "https://github.com/nativebpm",
"contributions": [
"instructions"
]
},
{
"login": "samqbush",
"name": "samqbush",
"avatar_url": "https://avatars.githubusercontent.com/u/74389839?v=4",
"profile": "https://github.com/samqbush",
"contributions": [
"prompts"
]
},
{
"login": "pareenaverma",
"name": "pareenaverma",
"avatar_url": "https://avatars.githubusercontent.com/u/59843121?v=4",
"profile": "https://github.com/pareenaverma",
"contributions": [
"agents"
]
},
{
"login": "oleksiyyurchyna",
"name": "oleksiyyurchyna",
"avatar_url": "https://avatars.githubusercontent.com/u/10256765?v=4",
"profile": "https://github.com/oleksiyyurchyna",
"contributions": [
"plugins",
"prompts"
]
},
{
"login": "time-by-waves",
"name": "oceans-of-time",
"avatar_url": "https://avatars.githubusercontent.com/u/34587654?v=4",
"profile": "https://github.com/time-by-waves",
"contributions": [
"instructions"
]
},
{
"login": "kshashank57",
"name": "kshashank57",
"avatar_url": "https://avatars.githubusercontent.com/u/57212456?v=4",
"profile": "https://github.com/kshashank57",
"contributions": [
"agents",
"instructions"
]
},
{
"login": "hueanmy",
"name": "Meii",
"avatar_url": "https://avatars.githubusercontent.com/u/20430626?v=4",
"profile": "https://github.com/hueanmy",
"contributions": [
"agents"
]
},
{
"login": "factory-davidgu",
"name": "factory-davidgu",
"avatar_url": "https://avatars.githubusercontent.com/u/229352262?v=4",
"profile": "https://github.com/factory-davidgu",
"contributions": [
"code"
]
},
{
"login": "dangelov-qa",
"name": "dangelov-qa",
"avatar_url": "https://avatars.githubusercontent.com/u/92313553?v=4",
"profile": "https://github.com/dangelov-qa",
"contributions": [
"agents"
]
},
{
"login": "BenoitMaucotel",
"name": "BenoitMaucotel",
"avatar_url": "https://avatars.githubusercontent.com/u/54392431?v=4",
"profile": "https://github.com/BenoitMaucotel",
"contributions": [
"code"
]
},
{
"login": "benjisho-aidome",
"name": "benjisho-aidome",
"avatar_url": "https://avatars.githubusercontent.com/u/218995725?v=4",
"profile": "https://github.com/benjisho-aidome",
"contributions": [
"agents",
"instructions",
"prompts"
]
},
{
"login": "yukiomoto",
"name": "Yuki Omoto",
"avatar_url": "https://avatars.githubusercontent.com/u/38450410?v=4",
"profile": "https://github.com/yukiomoto",
"contributions": [
"instructions"
]
},
{
"login": "wschultz-boxboat",
"name": "Will Schultz",
"avatar_url": "https://avatars.githubusercontent.com/u/110492948?v=4",
"profile": "https://github.com/wschultz-boxboat",
"contributions": [
"agents"
]
},
{
"login": "warengonzaga",
"name": "Waren Gonzaga",
"avatar_url": "https://avatars.githubusercontent.com/u/15052701?v=4",
"profile": "https://bio.warengonzaga.com/",
"contributions": [
"agents"
]
},
{
"login": "vincentkoc",
"name": "Vincent Koc",
"avatar_url": "https://avatars.githubusercontent.com/u/25068?v=4",
"profile": "https://linktr.ee/vincentkoc",
"contributions": [
"agents"
]
},
{
"login": "Vaporjawn",
"name": "Victor Williams",
"avatar_url": "https://avatars.githubusercontent.com/u/15694665?v=4",
"profile": "https://github.com/Vaporjawn",
"contributions": [
"agents"
]
},
{
"login": "VeVarunSharma",
"name": "Ve Sharma",
"avatar_url": "https://avatars.githubusercontent.com/u/62218708?v=4",
"profile": "https://vesharma.dev/",
"contributions": [
"agents"
]
},
{
"login": "vlahanas",
"name": "Vasileios Lahanas",
"avatar_url": "https://avatars.githubusercontent.com/u/19361558?v=4",
"profile": "https://www.ferryhopper.com/",
"contributions": [
"instructions"
]
},
{
"login": "udayakumarreddyv",
"name": "Udaya Veeramreddygari",
"avatar_url": "https://avatars.githubusercontent.com/u/9591887?v=4",
"profile": "https://tinyurl.com/3p5j9mwe",
"contributions": [
"instructions"
]
},
{
"login": "iletai",
"name": "Tài Lê",
"avatar_url": "https://avatars.githubusercontent.com/u/26614687?v=4",
"profile": "https://github.com/iletai",
"contributions": [
"prompts"
]
},
{
"login": "tsubasaogawa",
"name": "Tsubasa Ogawa",
"avatar_url": "https://avatars.githubusercontent.com/u/7788821?v=4",
"profile": "https://tsubasaogawa.me/",
"contributions": [
"code"
]
},
{
"login": "twitthoeft-gls",
"name": "Troy Witthoeft (glsauto)",
"avatar_url": "https://avatars.githubusercontent.com/u/132710946?v=4",
"profile": "http://glsauto.com/",
"contributions": [
"instructions"
]
},
{
"login": "jfversluis",
"name": "Gerald Versluis",
"avatar_url": "https://avatars.githubusercontent.com/u/939291?v=4",
"profile": "https://jfversluis.dev/",
"contributions": [
"instructions"
]
},
{
"login": "geoder101",
"name": "George Dernikos",
"avatar_url": "https://avatars.githubusercontent.com/u/145904?v=4",
"profile": "https://github.com/geoder101",
"contributions": [
"prompts"
]
},
{
"login": "gautambaghel",
"name": "Gautam",
"avatar_url": "https://avatars.githubusercontent.com/u/22324290?v=4",
"profile": "https://github.com/gautambaghel",
"contributions": [
"agents"
]
},
{
"login": "feapaydin",
"name": "Furkan Enes",
"avatar_url": "https://avatars.githubusercontent.com/u/19946639?v=4",
"profile": "https://github.com/feapaydin",
"contributions": [
"instructions"
]
},
{
"login": "fmuecke",
"name": "Florian Mücke",
"avatar_url": "https://avatars.githubusercontent.com/u/7921024?v=4",
"profile": "https://github.com/fmuecke",
"contributions": [
"agents"
]
},
{
"login": "felixarjuna",
"name": "Felix Arjuna",
"avatar_url": "https://avatars.githubusercontent.com/u/79026094?v=4",
"profile": "https://www.felixarjuna.dev/",
"contributions": [
"instructions"
]
},
{
"login": "ewega",
"name": "Eldrick Wega",
"avatar_url": "https://avatars.githubusercontent.com/u/26189114?v=4",
"profile": "https://github.com/ewega",
"contributions": [
"prompts"
]
},
{
"login": "danchev",
"name": "Dobri Danchev",
"avatar_url": "https://avatars.githubusercontent.com/u/12420863?v=4",
"profile": "https://github.com/danchev",
"contributions": [
"prompts"
]
},
{
"login": "difegam",
"name": "Diego Gamboa",
"avatar_url": "https://avatars.githubusercontent.com/u/7052267?v=4",
"profile": "https://dgamboa.com/",
"contributions": [
"prompts"
]
},
{
"login": "derekclair",
"name": "Derek Clair",
"avatar_url": "https://avatars.githubusercontent.com/u/5247629?v=4",
"profile": "https://github.com/derekclair",
"contributions": [
"agents",
"prompts"
]
},
{
"login": "davidortinau",
"name": "David Ortinau",
"avatar_url": "https://avatars.githubusercontent.com/u/41873?v=4",
"profile": "https://dev.to/davidortinau",
"contributions": [
"code"
]
},
{
"login": "danielabbatt",
"name": "Daniel Abbatt",
"avatar_url": "https://avatars.githubusercontent.com/u/8926756?v=4",
"profile": "https://github.com/danielabbatt",
"contributions": [
"instructions"
]
},
{
"login": "CypherHK",
"name": "CypherHK",
"avatar_url": "https://avatars.githubusercontent.com/u/230935834?v=4",
"profile": "https://github.com/CypherHK",
"contributions": [
"agents",
"prompts"
]
},
{
"login": "craigbekker",
"name": "Craig Bekker",
"avatar_url": "https://avatars.githubusercontent.com/u/1115912?v=4",
"profile": "https://github.com/craigbekker",
"contributions": [
"code"
]
},
{
"login": "tossnet",
"name": "Christophe Peugnet",
"avatar_url": "https://avatars.githubusercontent.com/u/3845786?v=4",
"profile": "https://www.peug.net/",
"contributions": [
"instructions"
]
},
{
"login": "lechnerc77",
"name": "Christian Lechner",
"avatar_url": "https://avatars.githubusercontent.com/u/22294087?v=4",
"profile": "https://github.com/lechnerc77",
"contributions": [
"instructions"
]
},
{
"login": "charris-msft",
"name": "Chris Harris",
"avatar_url": "https://avatars.githubusercontent.com/u/74415662?v=4",
"profile": "https://github.com/charris-msft",
"contributions": [
"agents"
]
},
{
"login": "artemsaveliev",
"name": "Artem Saveliev",
"avatar_url": "https://avatars.githubusercontent.com/u/15679218?v=4",
"profile": "https://github.com/artemsaveliev",
"contributions": [
"instructions"
]
},
{
"login": "arey",
"name": "Antoine Rey",
"avatar_url": "https://avatars.githubusercontent.com/u/838318?v=4",
"profile": "https://javaetmoi.com/",
"contributions": [
"prompts"
]
},
{
"login": "PiKa919",
"name": "Ankit Das",
"avatar_url": "https://avatars.githubusercontent.com/u/96786190?v=4",
"profile": "https://github.com/PiKa919",
"contributions": [
"instructions"
]
},
{
"login": "alineavila",
"name": "Aline Ávila",
"avatar_url": "https://avatars.githubusercontent.com/u/24813256?v=4",
"profile": "https://github.com/alineavila",
"contributions": [
"instructions"
]
},
{
"login": "martin-cod",
"name": "Alexander Martinkevich",
"avatar_url": "https://avatars.githubusercontent.com/u/33550246?v=4",
"profile": "https://github.com/martin-cod",
"contributions": [
"agents"
]
},
{
"login": "aldunchev",
"name": "Aleksandar Dunchev",
"avatar_url": "https://avatars.githubusercontent.com/u/4631021?v=4",
"profile": "https://github.com/aldunchev",
"contributions": [
"agents"
]
},
{
"login": "tegola",
"name": "Alan Sprecacenere",
"avatar_url": "https://avatars.githubusercontent.com/u/1868590?v=4",
"profile": "http://www.qreate.it/",
"contributions": [
"instructions"
]
},
{
"login": "akashxlr8",
"name": "Akash Kumar Shaw",
"avatar_url": "https://avatars.githubusercontent.com/u/58072860?v=4",
"profile": "https://github.com/akashxlr8",
"contributions": [
"instructions"
]
},
{
"login": "abdidaudpropel",
"name": "Abdi Daud",
"avatar_url": "https://avatars.githubusercontent.com/u/51310019?v=4",
"profile": "https://github.com/abdidaudpropel",
"contributions": [
"agents"
]
},
{
"login": "AIAlchemyForge",
"name": "AIAlchemyForge",
"avatar_url": "https://avatars.githubusercontent.com/u/253636689?v=4",
"profile": "https://github.com/AIAlchemyForge",
"contributions": [
"instructions"
]
},
{
"login": "4regab",
"name": "4regab",
"avatar_url": "https://avatars.githubusercontent.com/u/178603515?v=4",
"profile": "https://github.com/4regab",
"contributions": [
"instructions"
]
},
{
"login": "MiguelElGallo",
"name": "Miguel P Z",
"avatar_url": "https://avatars.githubusercontent.com/u/60221874?v=4",
"profile": "https://github.com/MiguelElGallo",
"contributions": [
"doc"
]
},
{
"login": "mfairchild365",
"name": "Michael Fairchild",
"avatar_url": "https://avatars.githubusercontent.com/u/498678?v=4",
"profile": "https://a11ysupport.io/",
"contributions": [
"instructions"
]
},
{
"login": "michaelvolz",
"name": "Michael A. Volz (Flynn)",
"avatar_url": "https://avatars.githubusercontent.com/u/129928?v=4",
"profile": "https://www.linkedin.com/in/michael-volz/",
"contributions": [
"prompts"
]
},
{
"login": "Mike-Hanna",
"name": "Michael",
"avatar_url": "https://avatars.githubusercontent.com/u/50142889?v=4",
"profile": "https://github.com/Mike-Hanna",
"contributions": [
"instructions"
]
},
{
"login": "mehmetalierol",
"name": "Mehmet Ali EROL",
"avatar_url": "https://avatars.githubusercontent.com/u/16721723?v=4",
"profile": "http://www.mehmetalierol.com/",
"contributions": [
"agents"
]
},
{
"login": "maxprilutskiy",
"name": "Max Prilutskiy",
"avatar_url": "https://avatars.githubusercontent.com/u/5614659?v=4",
"profile": "https://maxprilutskiy.com/",
"contributions": [
"agents"
]
},
{
"login": "mbianchidev",
"name": "Matteo Bianchi",
"avatar_url": "https://avatars.githubusercontent.com/u/37507190?v=4",
"profile": "https://github.com/mbianchidev",
"contributions": [
"agents"
]
},
{
"login": "marknoble",
"name": "Mark Noble",
"avatar_url": "https://avatars.githubusercontent.com/u/3819700?v=4",
"profile": "http://marknoble.com/",
"contributions": [
"agents"
]
},
{
"login": "ManishJayaswal",
"name": "Manish Jayaswal",
"avatar_url": "https://avatars.githubusercontent.com/u/9527491?v=4",
"profile": "https://github.com/ManishJayaswal",
"contributions": [
"agents"
]
},
{
"login": "lukemurraynz",
"name": "Luke Murray",
"avatar_url": "https://avatars.githubusercontent.com/u/24467442?v=4",
"profile": "https://linktr.ee/lukemurray",
"contributions": [
"agents"
]
},
{
"login": "LouellaCreemers",
"name": "Louella Creemers",
"avatar_url": "https://avatars.githubusercontent.com/u/46204894?v=4",
"profile": "https://github.com/LouellaCreemers",
"contributions": [
"instructions"
]
},
{
"login": "saikoumudi",
"name": "Sai Koumudi Kaluvakolanu",
"avatar_url": "https://avatars.githubusercontent.com/u/22682497?v=4",
"profile": "https://github.com/saikoumudi",
"contributions": [
"agents"
]
},
{
"login": "whiteken",
"name": "Kenny White",
"avatar_url": "https://avatars.githubusercontent.com/u/20211937?v=4",
"profile": "https://github.com/whiteken",
"contributions": [
"instructions"
]
},
{
"login": "KaloyanGenev",
"name": "KaloyanGenev",
"avatar_url": "https://avatars.githubusercontent.com/u/42644424?v=4",
"profile": "https://github.com/KaloyanGenev",
"contributions": [
"agents"
]
},
{
"login": "Ranrar",
"name": "Kim Skov Rasmussen",
"avatar_url": "https://avatars.githubusercontent.com/u/95967772?v=4",
"profile": "https://github.com/Ranrar",
"contributions": [
"code"
]
},
{
"login": "jdubois",
"name": "Julien Dubois",
"avatar_url": "https://avatars.githubusercontent.com/u/316835?v=4",
"profile": "https://www.julien-dubois.com/",
"contributions": [
"prompts"
]
},
{
"login": "josegarridodigio",
"name": "José Antonio Garrido",
"avatar_url": "https://avatars.githubusercontent.com/u/173672918?v=4",
"profile": "https://digio.es/",
"contributions": [
"instructions"
]
},
{
"login": "josephgonzales01",
"name": "Joseph Gonzales",
"avatar_url": "https://avatars.githubusercontent.com/u/15100839?v=4",
"profile": "http://www.sugbo4j.co.nz/",
"contributions": [
"instructions",
"prompts"
]
},
{
"login": "yortch",
"name": "Jorge Balderas",
"avatar_url": "https://avatars.githubusercontent.com/u/4576246?v=4",
"profile": "https://github.com/yortch",
"contributions": [
"instructions"
]
},
{
"login": "johnpapa",
"name": "John Papa",
"avatar_url": "https://avatars.githubusercontent.com/u/1202528?v=4",
"profile": "http://johnpapa.net/",
"contributions": [
"code"
]
},
{
"login": "johnlokerse",
"name": "John",
"avatar_url": "https://avatars.githubusercontent.com/u/3514513?v=4",
"profile": "https://www.johnlokerse.dev/",
"contributions": [
"agents"
]
},
{
"login": "joe-watkins",
"name": "Joe Watkins",
"avatar_url": "https://avatars.githubusercontent.com/u/3695795?v=4",
"profile": "http://joe-watkins.io/",
"contributions": [
"instructions"
]
},
{
"login": "Jandev",
"name": "Jan de Vries",
"avatar_url": "https://avatars.githubusercontent.com/u/462356?v=4",
"profile": "https://jan-v.nl/",
"contributions": [
"agents"
]
},
{
"login": "nohwnd",
"name": "Jakub Jareš",
"avatar_url": "https://avatars.githubusercontent.com/u/5735905?v=4",
"profile": "https://github.com/nohwnd",
"contributions": [
"prompts"
]
},
{
"login": "jaxn",
"name": "Jackson Miller",
"avatar_url": "https://avatars.githubusercontent.com/u/29095?v=4",
"profile": "https://github.com/jaxn",
"contributions": [
"instructions"
]
},
{
"login": "Ioana37",
"name": "Ioana A",
"avatar_url": "https://avatars.githubusercontent.com/u/69301842?v=4",
"profile": "https://github.com/Ioana37",
"contributions": [
"instructions"
]
},
{
"login": "hunterhogan",
"name": "Hunter Hogan",
"avatar_url": "https://avatars.githubusercontent.com/u/2958419?v=4",
"profile": "https://github.com/hunterhogan",
"contributions": [
"agents"
]
},
{
"login": "hashimwarren",
"name": "Hashim Warren",
"avatar_url": "https://avatars.githubusercontent.com/u/6027587?v=4",
"profile": "https://github.com/hashimwarren",
"contributions": [
"agents"
]
},
{
"login": "Arggon",
"name": "Gonzalo",
"avatar_url": "https://avatars.githubusercontent.com/u/20962238?v=4",
"profile": "https://github.com/Arggon",
"contributions": [
"prompts"
]
},
{
"login": "0GiS0",
"name": "Gisela Torres",
"avatar_url": "https://avatars.githubusercontent.com/u/175379?v=4",
"profile": "https://hachyderm.io/@0gis0",
"contributions": [
"agents"
]
},
{
"login": "shibicr93",
"name": "Shibi Ramachandran",
"avatar_url": "https://avatars.githubusercontent.com/u/6803434?v=4",
"profile": "https://github.com/shibicr93",
"contributions": [
"code"
]
},
{
"login": "lupritz",
"name": "lupritz",
"avatar_url": "https://avatars.githubusercontent.com/u/145381941?v=4",
"profile": "https://github.com/lupritz",
"contributions": [
"plugin"
]
},
{
"login": "bhect0",
"name": "Héctor Benedicte",
"avatar_url": "https://avatars.githubusercontent.com/u/96436904?v=4",
"profile": "https://github.com/bhect0",
"contributions": [
"code"
]
},
{
"login": "tedvilutis",
"name": "Ted Vilutis",
"avatar_url": "https://avatars.githubusercontent.com/u/69260340?v=4",
"profile": "https://github.com/tedvilutis",
"contributions": [
"ideas"
]
},
{
"login": "tonybaloney",
"name": "Anthony Shaw",
"avatar_url": "https://avatars.githubusercontent.com/u/1532417?v=4",
"profile": "https://tonybaloney.github.io/",
"contributions": [
"code",
"ideas"
]
},
{
"login": "ChrisMcKee1",
"name": "Chris McKee",
"avatar_url": "https://avatars.githubusercontent.com/u/25754153?v=4",
"profile": "https://github.com/ChrisMcKee1",
"contributions": [
"ideas"
]
},
{
"login": "CASTResearchLabs",
"name": "CASTResearchLabs",
"avatar_url": "https://avatars.githubusercontent.com/u/23238546?v=4",
"profile": "https://github.com/CASTResearchLabs",
"contributions": [
"agents",
"ideas",
"infra"
]
},
{
"login": "jun-shiromizu",
"name": "白水淳",
"avatar_url": "https://avatars.githubusercontent.com/u/211425548?v=4",
"profile": "https://github.com/jun-shiromizu",
"contributions": [
"code",
"ideas"
]
},
{
"login": "imran-siddique",
"name": "Imran Siddique",
"avatar_url": "https://avatars.githubusercontent.com/u/45405841?v=4",
"profile": "https://imransiddique.com/",
"contributions": [
"agents",
"ideas",
"instructions"
]
},
{
"login": "nblog",
"name": "共产主义接班人",
"avatar_url": "https://avatars.githubusercontent.com/u/10218627?v=4",
"profile": "https://github.com/nblog",
"contributions": [
"code",
"ideas"
]
},
{
"login": "av",
"name": "Ivan Charapanau",
"avatar_url": "https://avatars.githubusercontent.com/u/38184623?v=4",
"profile": "https://github.com/av",
"contributions": [
"agents",
"ideas",
"infra",
"plugins"
]
},
{
"login": "labudis",
"name": "Tadas Labudis",
"avatar_url": "https://avatars.githubusercontent.com/u/2659733?v=4",
"profile": "https://github.com/labudis",
"contributions": [
"ideas"
]
},
{
"login": "alvinashcraft",
"name": "Alvin Ashcraft",
"avatar_url": "https://avatars.githubusercontent.com/u/73072?v=4",
"profile": "https://www.alvinashcraft.com/",
"contributions": [
"ideas"
]
},
{
"login": "JanKrivanek",
"name": "Jan Krivanek",
"avatar_url": "https://avatars.githubusercontent.com/u/3809076?v=4",
"profile": "https://docs.microsoft.com/en-us/archive/blogs/jankrivanek/",
"contributions": [
"agents",
"ideas",
"plugins"
]
},
{
"login": "DUBSOpenHub",
"name": "Gregg Cochran",
"avatar_url": "https://avatars.githubusercontent.com/u/158339470?v=4",
"profile": "https://github.com/DUBSOpenHub",
"contributions": [
"ideas",
"infra"
]
},
{
"login": "Jcardif",
"name": "Josh N",
"avatar_url": "https://avatars.githubusercontent.com/u/29174946?v=4",
"profile": "https://github.com/Jcardif",
"contributions": [
"ideas"
]
},
{
"login": "alaahong",
"name": "ian zhang",
"avatar_url": "https://avatars.githubusercontent.com/u/3264250?v=4",
"profile": "https://www.ianzhang.cn/",
"contributions": [
"ideas"
]
},
{
"login": "garrettsiegel",
"name": "Garrett Siegel",
"avatar_url": "https://avatars.githubusercontent.com/u/46652519?v=4",
"profile": "https://www.garrettsiegel.com/",
"contributions": [
"instructions"
]
},
{
"login": "v-rperez030",
"name": "Roberto Perez",
"avatar_url": "https://avatars.githubusercontent.com/u/248766827?v=4",
"profile": "https://github.com/v-rperez030",
"contributions": [
"agents",
"instructions"
]
},
{
"login": "dvelton",
"name": "Dan Velton",
"avatar_url": "https://avatars.githubusercontent.com/u/48307985?v=4",
"profile": "https://github.com/dvelton",
"contributions": [
"agents",
"ideas",
"plugins"
]
},
{
"login": "leereilly",
"name": "Lee Reilly",
"avatar_url": "https://avatars.githubusercontent.com/u/121322?v=4",
"profile": "https://leereilly.net/",
"contributions": [
"code",
"ideas"
]
},
{
"login": "DaniBunny",
"name": "Daniel Coelho",
"avatar_url": "https://avatars.githubusercontent.com/u/743743?v=4",
"profile": "http://bunnybox.info/",
"contributions": [
"agents"
]
},
{
"login": "vfaraji89",
"name": "Vahid Faraji",
"avatar_url": "https://avatars.githubusercontent.com/u/62544375?v=4",
"profile": "https://github.com/vfaraji89",
"contributions": [
"agents",
"ideas",
"infra",
"instructions",
"plugins"
]
},
{
"login": "ashleywolf",
"name": "Ashley Wolf",
"avatar_url": "https://avatars.githubusercontent.com/u/10735907?v=4",
"profile": "https://www.linkedin.com/in/ashleywolf/",
"contributions": [
"code"
]
},
{
"login": "NoahJenkins",
"name": "Noah Jenkins",
"avatar_url": "https://avatars.githubusercontent.com/u/41129202?v=4",
"profile": "https://noahjenkins.com/",
"contributions": [
"ideas",
"infra"
]
},
{
"login": "jeremykohn",
"name": "Jeremy Kohn",
"avatar_url": "https://avatars.githubusercontent.com/u/5316595?v=4",
"profile": "https://github.com/jeremykohn",
"contributions": [
"agents",
"ideas",
"instructions"
]
},
{
"login": "Hakku",
"name": "Harri Sipola",
"avatar_url": "https://avatars.githubusercontent.com/u/5256151?v=4",
"profile": "https://github.com/Hakku",
"contributions": [
"ideas"
]
},
{
"login": "torumakabe",
"name": "Toru Makabe",
"avatar_url": "https://avatars.githubusercontent.com/u/993850?v=4",
"profile": "https://torumakabe.github.io/",
"contributions": [
"code",
"ideas"
]
},
{
"login": "phatpham-katalon",
"name": "Pham Tien Thuan Phat",
"avatar_url": "https://avatars.githubusercontent.com/u/202738606?v=4",
"profile": "https://github.com/delee03",
"contributions": [
"ideas"
]
},
{
"login": "benjisho",
"name": "Benji Shohet",
"avatar_url": "https://avatars.githubusercontent.com/u/97973081?v=4",
"profile": "https://github.com/benjisho",
"contributions": [
"agents",
"ideas",
"instructions"
]
},
{
"login": "Evangelink",
"name": "Amaury Levé",
"avatar_url": "https://avatars.githubusercontent.com/u/11340282?v=4",
"profile": "https://about.me/amauryleve",
"contributions": [
"ideas"
]
},
{
"login": "timdeschryver",
"name": "Tim Deschryver",
"avatar_url": "https://avatars.githubusercontent.com/u/28659384?v=4",
"profile": "https://timdeschryver.dev/",
"contributions": [
"instructions"
]
},
{
"login": "AlahmadiQ8",
"name": "Mohammad Asad Alahmadi",
"avatar_url": "https://avatars.githubusercontent.com/u/3461501?v=4",
"profile": "https://github.com/AlahmadiQ8",
"contributions": [
"ideas"
]
},
{
"login": "fondoger",
"name": "fondoger",
"avatar_url": "https://avatars.githubusercontent.com/u/22270677?v=4",
"profile": "http://aka.readspeak.cn/app",
"contributions": [
"ideas"
]
},
{
"login": "hoodini",
"name": "Yuval Avidani",
"avatar_url": "https://avatars.githubusercontent.com/u/48050809?v=4",
"profile": "https://linktr.ee/yuvai",
"contributions": [
"code",
"ideas",
"infra"
]
},
{
"login": "icsaba",
"name": "Csaba Iváncza",
"avatar_url": "https://avatars.githubusercontent.com/u/7916051?v=4",
"profile": "https://querypanel.io/",
"contributions": [
"instructions"
]
},
{
"login": "timheuer",
"name": "Tim Heuer",
"avatar_url": "https://avatars.githubusercontent.com/u/4821?v=4",
"profile": "https://timheuer.com/blog/",
"contributions": [
"ideas"
]
},
{
"login": "lance2k",
"name": "lance2k",
"avatar_url": "https://avatars.githubusercontent.com/u/38002304?v=4",
"profile": "https://github.com/lance2k",
"contributions": [
"instructions"
]
},
{
"login": "AndreaGriffiths11",
"name": "Andrea Liliana Griffiths",
"avatar_url": "https://avatars.githubusercontent.com/u/20666190?v=4",
"profile": "https://ag11.dev/",
"contributions": [
"code",
"ideas"
]
},
{
"login": "ajithraghavan",
"name": "Ajith Raghavan",
"avatar_url": "https://avatars.githubusercontent.com/u/37246967?v=4",
"profile": "https://github.com/ajithraghavan",
"contributions": [
"ideas"
]
},
{
"login": "ninihen1",
"name": "Catherine Han",
"avatar_url": "https://avatars.githubusercontent.com/u/123369259?v=4",
"profile": "https://github.com/ninihen1",
"contributions": [
"ideas",
"plugins"
]
},
{
"login": "specialforest",
"name": "Igor Shishkin",
"avatar_url": "https://avatars.githubusercontent.com/u/581410?v=4",
"profile": "https://twitter.com/specialforest",
"contributions": [
"agents",
"instructions"
]
},
{
"login": "verdantburrito",
"name": "Burrito Verde",
"avatar_url": "https://avatars.githubusercontent.com/u/130576273?v=4",
"profile": "https://github.com/verdantburrito",
"contributions": [
"instructions"
]
},
{
"login": "jvanderwee",
"name": "Joseph Van der Wee",
"avatar_url": "https://avatars.githubusercontent.com/u/3587922?v=4",
"profile": "https://github.com/jvanderwee",
"contributions": [
"ideas"
]
},
{
"login": "luizbon",
"name": "Luiz Bon",
"avatar_url": "https://avatars.githubusercontent.com/u/292532?v=4",
"profile": "http://luizbon.com/",
"contributions": [
"infra"
]
},
{
"login": "sanjay-rb",
"name": "Sanjay Ramassery Babu",
"avatar_url": "https://avatars.githubusercontent.com/u/25894304?v=4",
"profile": "https://sanjay-rb.github.io/",
"contributions": [
"ideas"
]
},
{
"login": "russrimm",
"name": "Russ Rimmerman [MSFT]",
"avatar_url": "https://avatars.githubusercontent.com/u/10841574?v=4",
"profile": "https://github.com/russrimm",
"contributions": [
"instructions"
]
},
{
"login": "rperez030",
"name": "Roberto Perez",
"avatar_url": "https://avatars.githubusercontent.com/u/38786330?v=4",
"profile": "https://github.com/rperez030",
"contributions": [
"agents"
]
},
{
"login": "ShehabSherif0",
"name": "Shehab Sherif",
"avatar_url": "https://avatars.githubusercontent.com/u/210266853?v=4",
"profile": "https://github.com/ShehabSherif0",
"contributions": [
"ideas"
]
},
{
"login": "beingsmit",
"name": "Smit Patel",
"avatar_url": "https://avatars.githubusercontent.com/u/1781956?v=4",
"profile": "https://github.com/beingsmit",
"contributions": [
"ideas"
]
},
{
"login": "StevenJV",
"name": "Steven Vore",
"avatar_url": "https://avatars.githubusercontent.com/u/4377447?v=4",
"profile": "https://github.com/StevenJV",
"contributions": [
"ideas"
]
},
{
"login": "subhashisbhowmikicpes",
"name": "Subhashis Bhowmik",
"avatar_url": "https://avatars.githubusercontent.com/u/233422801?v=4",
"profile": "https://github.com/subhashisbhowmikicpes",
"contributions": [
"agents"
]
},
{
"login": "tlmii",
"name": "Tim Mulholland",
"avatar_url": "https://avatars.githubusercontent.com/u/9613109?v=4",
"profile": "https://github.com/tlmii",
"contributions": [
"ideas"
]
},
{
"login": "niels9001",
"name": "Niels Laute",
"avatar_url": "https://avatars.githubusercontent.com/u/9866362?v=4",
"profile": "https://github.com/niels9001",
"contributions": [
"agents",
"ideas",
"instructions",
"plugins"
]
},
{
"login": "Pavel-Sulimau",
"name": "Pavel Sulimau",
"avatar_url": "https://avatars.githubusercontent.com/u/8143332?v=4",
"profile": "https://pasul.medium.com/",
"contributions": [
"code"
]
},
{
"login": "PrimedPaul",
"name": "PrimedPaul",
"avatar_url": "https://avatars.githubusercontent.com/u/29710834?v=4",
"profile": "https://github.com/PrimedPaul",
"contributions": [
"agents",
"ideas",
"plugins"
]
},
{
"login": "REAL-Madrid01",
"name": "Zhiqi Pu",
"avatar_url": "https://avatars.githubusercontent.com/u/65749290?v=4",
"profile": "https://github.com/REAL-Madrid01",
"contributions": [
"code",
"ideas"
]
},
{
"login": "ramyashreeradix",
"name": "Ramyashree Shetty",
"avatar_url": "https://avatars.githubusercontent.com/u/202798545?v=4",
"profile": "https://github.com/ramyashreeradix",
"contributions": [
"code"
]
},
{
"login": "ZdaPhp",
"name": "ZdaPhp",
"avatar_url": "https://avatars.githubusercontent.com/u/15830419?v=4",
"profile": "https://github.com/ZdaPhp",
"contributions": [
"code"
]
},
{
"login": "pigd0g",
"name": "pigd0g",
"avatar_url": "https://avatars.githubusercontent.com/u/16750317?v=4",
"profile": "https://github.com/pigd0g",
"contributions": [
"agents"
]
},
{
"login": "rahulbats",
"name": "rahulbats",
"avatar_url": "https://avatars.githubusercontent.com/u/627905?v=4",
"profile": "https://github.com/rahulbats",
"contributions": [
"ideas",
"plugins"
]
},
{
"login": "suyask-msft",
"name": "suyask-msft",
"avatar_url": "https://avatars.githubusercontent.com/u/158708948?v=4",
"profile": "https://github.com/suyask-msft",
"contributions": [
"ideas",
"plugins"
]
},
{
"login": "tagedeep",
"name": "tagedeep",
"avatar_url": "https://avatars.githubusercontent.com/u/43116939?v=4",
"profile": "https://github.com/tagedeep",
"contributions": [
"ideas"
]
},
{
"login": "tinkeringDev",
"name": "tinkeringDev",
"avatar_url": "https://avatars.githubusercontent.com/u/31189972?v=4",
"profile": "https://github.com/tinkeringDev",
"contributions": [
"ideas"
]
},
{
"login": "travish",
"name": "Travis Hill",
"avatar_url": "https://avatars.githubusercontent.com/u/169255?v=4",
"profile": "https://github.com/travish",
"contributions": [
"instructions"
]
},
{
"login": "utkarsh232005",
"name": "Utkarsh patrikar",
"avatar_url": "https://avatars.githubusercontent.com/u/137105846?v=4",
"profile": "https://github.com/utkarsh232005",
"contributions": [
"ideas"
]
},
{
"login": "rbgmulmb",
"name": "Yauhen",
"avatar_url": "https://avatars.githubusercontent.com/u/27664402?v=4",
"profile": "https://github.com/rbgmulmb",
"contributions": [
"ideas"
]
},
{
"login": "yiouli",
"name": "Yiou Li",
"avatar_url": "https://avatars.githubusercontent.com/u/3508494?v=4",
"profile": "https://github.com/yiouli",
"contributions": [
"ideas"
]
},
{
"login": "yukidukie",
"name": "Yuki Omoto",
"avatar_url": "https://avatars.githubusercontent.com/u/38450410?v=4",
"profile": "https://github.com/yukidukie",
"contributions": [
"instructions"
]
},
{
"login": "abhibavishi",
"name": "Abhi Bavishi",
"avatar_url": "https://avatars.githubusercontent.com/u/7823146?v=4",
"profile": "https://github.com/abhibavishi",
"contributions": [
"agents"
]
},
{
"login": "augustus-0",
"name": "augustus-0",
"avatar_url": "https://avatars.githubusercontent.com/u/113288678?v=4",
"profile": "https://github.com/augustus-0",
"contributions": [
"ideas"
]
},
{
"login": "codeHysteria28",
"name": "Branislav Buna",
"avatar_url": "https://avatars.githubusercontent.com/u/46035047?v=4",
"profile": "https://github.com/codeHysteria28",
"contributions": [
"ideas",
"infra"
]
},
{
"login": "connerlambden",
"name": "connerlambden",
"avatar_url": "https://avatars.githubusercontent.com/u/9061871?v=4",
"profile": "https://github.com/connerlambden",
"contributions": [
"agents"
]
},
{
"login": "DavidARaygoza",
"name": "David Raygoza",
"avatar_url": "https://avatars.githubusercontent.com/u/100718117?v=4",
"profile": "https://github.com/DavidARaygoza",
"contributions": [
"instructions"
]
},
{
"login": "dipievil",
"name": "Diego Porto Ritzel",
"avatar_url": "https://avatars.githubusercontent.com/u/5294742?v=4",
"profile": "https://github.com/dipievil",
"contributions": [
"agents"
]
},
{
"login": "ericsche",
"name": "Eric Scherlinger",
"avatar_url": "https://avatars.githubusercontent.com/u/35633680?v=4",
"profile": "https://github.com/ericsche",
"contributions": [
"ideas"
]
},
{
"login": "fatihdurgut",
"name": "Fatih",
"avatar_url": "https://avatars.githubusercontent.com/u/4159116?v=4",
"profile": "https://github.com/fatihdurgut",
"contributions": [
"ideas"
]
},
{
"login": "felipepessoto",
"name": "Felipe Pessoto",
"avatar_url": "https://avatars.githubusercontent.com/u/1336227?v=4",
"profile": "http://blog.fujiy.net/",
"contributions": [
"instructions"
]
},
{
"login": "fdescamps",
"name": "François",
"avatar_url": "https://avatars.githubusercontent.com/u/1039390?v=4",
"profile": "https://medium.com/just-tech-it-now",
"contributions": [
"agents",
"ideas"
]
},
{
"login": "GeoffreyCasaubon",
"name": "Geoffrey Casaubon",
"avatar_url": "https://avatars.githubusercontent.com/u/790606?v=4",
"profile": "https://github.com/GeoffreyCasaubon",
"contributions": [
"agents"
]
},
{
"login": "Anddd7",
"name": "Anddd7",
"avatar_url": "https://avatars.githubusercontent.com/u/24785373?v=4",
"profile": "https://github.com/Anddd7",
"contributions": [
"instructions"
]
},
{
"login": "anderseide",
"name": "Anders Eide",
"avatar_url": "https://avatars.githubusercontent.com/u/13043472?v=4",
"profile": "https://github.com/anderseide",
"contributions": [
"agents",
"ideas",
"plugins"
]
},
{
"login": "aymenfurter",
"name": "Aymen",
"avatar_url": "https://avatars.githubusercontent.com/u/20464460?v=4",
"profile": "http://aymenfurter.ch/",
"contributions": [
"agents"
]
},
{
"login": "kvz",
"name": "Kevin van Zonneveld",
"avatar_url": "https://avatars.githubusercontent.com/u/26752?v=4",
"profile": "https://kvz.io/",
"contributions": [
"ideas"
]
},
{
"login": "luiscantero",
"name": "Luis Cantero",
"avatar_url": "https://avatars.githubusercontent.com/u/1353540?v=4",
"profile": "https://github.com/luiscantero",
"contributions": [
"ideas"
]
},
{
"login": "mvkaran",
"name": "MV Karan",
"avatar_url": "https://avatars.githubusercontent.com/u/8726608?v=4",
"profile": "https://github.com/mvkaran",
"contributions": [
"ideas"
]
},
{
"login": "Jugger23",
"name": "Marcel Deutzer",
"avatar_url": "https://avatars.githubusercontent.com/u/144260728?v=4",
"profile": "https://github.com/Jugger23",
"contributions": [
"instructions"
]
},
{
"login": "jongalloway",
"name": "Jon Galloway",
"avatar_url": "https://avatars.githubusercontent.com/u/68539?v=4",
"profile": "http://weblogs.asp.net/jongalloway",
"contributions": [
"ideas"
]
},
{
"login": "jlbeard84",
"name": "Josh Beard",
"avatar_url": "https://avatars.githubusercontent.com/u/4313198?v=4",
"profile": "https://jlbeard.com/",
"contributions": [
"agents"
]
},
{
"login": "jpinz",
"name": "Julian",
"avatar_url": "https://avatars.githubusercontent.com/u/8357054?v=4",
"profile": "http://jpinzer.me/",
"contributions": [
"ideas"
]
}
]
}
================================================
FILE: .codespellrc
================================================
[codespell]
# Ignore intentional misspellings used as examples and technical terms
# numer - intentional example typo in add-educational-comments.prompt.md
# wit - proper technical term/name (sardonic wit, Gilfoyle character trait)
# aks - Azure Kubernetes Service (AKS) abbreviation
# edn - Extensible Data Notation (Clojure data format)
# ser - serialization abbreviation
# ois - ObjectInputStream abbreviation in Java
# gir - valid abbreviation/technical term
# rouge - Rouge is a syntax highlighter (not "rogue")
# categor - TypeScript template literal in website/src/scripts/pages/skills.ts:70 (categor${...length > 1 ? "ies" : "y"})
# aline - proper name (Aline Ávila, contributor)
# ative - part of "Declarative Agents" in TypeSpec M365 Copilot documentation (collections/typespec-m365-copilot.collection.md)
# dateA, dateB - variable names used in sorting comparison functions
# TE - HTTP transfer coding header
# alle - Finnish word meaning "under/below" (not "all" or "alley")
# vai - Finnish word meaning "or"
# FillIn - pdftk-server skill reference file available permission
# LOD - Level of Detail
# InOut - template property in skills/game-engine/assets/2d-platform-game.md
# pixelX - template variable in skill/game-engine/assets/simple-2d-engine.md
# aNULL - HTTPS configuration cipher string
# Wee, Sherif - proper name (Wee, Sherif, contributor names should not be flagged as typos)
ignore-words-list = numer,wit,aks,edn,ser,ois,gir,rouge,categor,aline,ative,afterall,deques,dateA,dateB,TE,FillIn,alle,vai,LOD,InOut,pixelX,aNULL,Wee,Sherif
# Skip certain files and directories
skip = .git,node_modules,package-lock.json,*.lock,website/build,website/.docusaurus,.all-contributorrc
================================================
FILE: .editorconfig
================================================
# EditorConfig is awesome: https://EditorConfig.org
# top-most EditorConfig file
root = true
# All files
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
# Markdown files
[*.md]
trim_trailing_whitespace = false
max_line_length = off
# JSON files
[*.json]
indent_size = 2
# JavaScript files
[*.js]
indent_size = 2
# Shell scripts
[*.sh]
end_of_line = lf
# Windows scripts
[*.{cmd,bat}]
end_of_line = crlf
================================================
FILE: .gitattributes
================================================
# Set default behavior to automatically normalize line endings.
* text=auto eol=lf
# Explicitly declare text files to be normalized and converted to native line endings on checkout.
*.md text eol=lf
*.txt text eol=lf
*.js text eol=lf
*.json text eol=lf
*.yml text eol=lf
*.yaml text eol=lf
*.html text eol=lf
*.css text eol=lf
*.scss text eol=lf
*.ts text eol=lf
*.sh text eol=lf
# Windows-specific files that should retain CRLF line endings
*.bat text eol=crlf
*.cmd text eol=crlf
# Binary files that should not be modified
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.zip binary
*.pdf binary
.github/workflows/*.lock.yml linguist-generated=true merge=ours
================================================
FILE: .github/agents/agentic-workflows.agent.md
================================================
---
description: GitHub Agentic Workflows (gh-aw) - Create, debug, and upgrade AI-powered workflows with intelligent prompt routing
disable-model-invocation: true
---
# GitHub Agentic Workflows Agent
This agent helps you work with **GitHub Agentic Workflows (gh-aw)**, a CLI extension for creating AI-powered workflows in natural language using markdown files.
## What This Agent Does
This is a **dispatcher agent** that routes your request to the appropriate specialized prompt based on your task:
- **Creating new workflows**: Routes to `create` prompt
- **Updating existing workflows**: Routes to `update` prompt
- **Debugging workflows**: Routes to `debug` prompt
- **Upgrading workflows**: Routes to `upgrade-agentic-workflows` prompt
- **Creating report-generating workflows**: Routes to `report` prompt — consult this whenever the workflow posts status updates, audits, analyses, or any structured output as issues, discussions, or comments
- **Creating shared components**: Routes to `create-shared-agentic-workflow` prompt
- **Fixing Dependabot PRs**: Routes to `dependabot` prompt — use this when Dependabot opens PRs that modify generated manifest files (`.github/workflows/package.json`, `.github/workflows/requirements.txt`, `.github/workflows/go.mod`). Never merge those PRs directly; instead update the source `.md` files and rerun `gh aw compile --dependabot` to bundle all fixes
- **Analyzing test coverage**: Routes to `test-coverage` prompt — consult this whenever the workflow reads, analyzes, or reports on test coverage data from PRs or CI runs
Workflows may optionally include:
- **Project tracking / monitoring** (GitHub Projects updates, status reporting)
- **Orchestration / coordination** (one workflow assigning agents or dispatching and coordinating other workflows)
## Files This Applies To
- Workflow files: `.github/workflows/*.md` and `.github/workflows/**/*.md`
- Workflow lock files: `.github/workflows/*.lock.yml`
- Shared components: `.github/workflows/shared/*.md`
- Configuration: https://github.com/github/gh-aw/blob/v0.57.2/.github/aw/github-agentic-workflows.md
## Problems This Solves
- **Workflow Creation**: Design secure, validated agentic workflows with proper triggers, tools, and permissions
- **Workflow Debugging**: Analyze logs, identify missing tools, investigate failures, and fix configuration issues
- **Version Upgrades**: Migrate workflows to new gh-aw versions, apply codemods, fix breaking changes
- **Component Design**: Create reusable shared workflow components that wrap MCP servers
## How to Use
When you interact with this agent, it will:
1. **Understand your intent** - Determine what kind of task you're trying to accomplish
2. **Route to the right prompt** - Load the specialized prompt file for your task
3. **Execute the task** - Follow the detailed instructions in the loaded prompt
## Available Prompts
### Create New Workflow
**Load when**: User wants to create a new workflow from scratch, add automation, or design a workflow that doesn't exist yet
**Prompt file**: https://github.com/github/gh-aw/blob/v0.57.2/.github/aw/create-agentic-workflow.md
**Use cases**:
- "Create a workflow that triages issues"
- "I need a workflow to label pull requests"
- "Design a weekly research automation"
### Update Existing Workflow
**Load when**: User wants to modify, improve, or refactor an existing workflow
**Prompt file**: https://github.com/github/gh-aw/blob/v0.57.2/.github/aw/update-agentic-workflow.md
**Use cases**:
- "Add web-fetch tool to the issue-classifier workflow"
- "Update the PR reviewer to use discussions instead of issues"
- "Improve the prompt for the weekly-research workflow"
### Debug Workflow
**Load when**: User needs to investigate, audit, debug, or understand a workflow, troubleshoot issues, analyze logs, or fix errors
**Prompt file**: https://github.com/github/gh-aw/blob/v0.57.2/.github/aw/debug-agentic-workflow.md
**Use cases**:
- "Why is this workflow failing?"
- "Analyze the logs for workflow X"
- "Investigate missing tool calls in run #12345"
### Upgrade Agentic Workflows
**Load when**: User wants to upgrade workflows to a new gh-aw version or fix deprecations
**Prompt file**: https://github.com/github/gh-aw/blob/v0.57.2/.github/aw/upgrade-agentic-workflows.md
**Use cases**:
- "Upgrade all workflows to the latest version"
- "Fix deprecated fields in workflows"
- "Apply breaking changes from the new release"
### Create a Report-Generating Workflow
**Load when**: The workflow being created or updated produces reports — recurring status updates, audit summaries, analyses, or any structured output posted as a GitHub issue, discussion, or comment
**Prompt file**: https://github.com/github/gh-aw/blob/v0.57.2/.github/aw/report.md
**Use cases**:
- "Create a weekly CI health report"
- "Post a daily security audit to Discussions"
- "Add a status update comment to open PRs"
### Create Shared Agentic Workflow
**Load when**: User wants to create a reusable workflow component or wrap an MCP server
**Prompt file**: https://github.com/github/gh-aw/blob/v0.57.2/.github/aw/create-shared-agentic-workflow.md
**Use cases**:
- "Create a shared component for Notion integration"
- "Wrap the Slack MCP server as a reusable component"
- "Design a shared workflow for database queries"
### Fix Dependabot PRs
**Load when**: User needs to close or fix open Dependabot PRs that update dependencies in generated manifest files (`.github/workflows/package.json`, `.github/workflows/requirements.txt`, `.github/workflows/go.mod`)
**Prompt file**: https://github.com/github/gh-aw/blob/v0.57.2/.github/aw/dependabot.md
**Use cases**:
- "Fix the open Dependabot PRs for npm dependencies"
- "Bundle and close the Dependabot PRs for workflow dependencies"
- "Update @playwright/test to fix the Dependabot PR"
### Analyze Test Coverage
**Load when**: The workflow reads, analyzes, or reports test coverage — whether triggered by a PR, a schedule, or a slash command. Always consult this prompt before designing the coverage data strategy.
**Prompt file**: https://github.com/github/gh-aw/blob/v0.57.2/.github/aw/test-coverage.md
**Use cases**:
- "Create a workflow that comments coverage on PRs"
- "Analyze coverage trends over time"
- "Add a coverage gate that blocks PRs below a threshold"
## Instructions
When a user interacts with you:
1. **Identify the task type** from the user's request
2. **Load the appropriate prompt** from the GitHub repository URLs listed above
3. **Follow the loaded prompt's instructions** exactly
4. **If uncertain**, ask clarifying questions to determine the right prompt
## Quick Reference
```bash
# Initialize repository for agentic workflows
gh aw init
# Generate the lock file for a workflow
gh aw compile [workflow-name]
# Debug workflow runs
gh aw logs [workflow-name]
gh aw audit <run-id>
# Upgrade workflows
gh aw fix --write
gh aw compile --validate
```
## Key Features of gh-aw
- **Natural Language Workflows**: Write workflows in markdown with YAML frontmatter
- **AI Engine Support**: Copilot, Claude, Codex, or custom engines
- **MCP Server Integration**: Connect to Model Context Protocol servers for tools
- **Safe Outputs**: Structured communication between AI and GitHub API
- **Strict Mode**: Security-first validation and sandboxing
- **Shared Components**: Reusable workflow building blocks
- **Repo Memory**: Persistent git-backed storage for agents
- **Sandboxed Execution**: All workflows run in the Agent Workflow Firewall (AWF) sandbox, enabling full `bash` and `edit` tools by default
## Important Notes
- Always reference the instructions file at https://github.com/github/gh-aw/blob/v0.57.2/.github/aw/github-agentic-workflows.md for complete documentation
- Use the MCP tool `agentic-workflows` when running in GitHub Copilot Cloud
- Workflows must be compiled to `.lock.yml` files before running in GitHub Actions
- **Bash tools are enabled by default** - Don't restrict bash commands unnecessarily since workflows are sandboxed by the AWF
- Follow security best practices: minimal permissions, explicit network access, no template injection
- **Single-file output**: When creating a workflow, produce exactly **one** workflow `.md` file. Do not create separate documentation files (architecture docs, runbooks, usage guides, etc.). If documentation is needed, add a brief `## Usage` section inside the workflow file itself.
================================================
FILE: .github/aw/actions-lock.json
================================================
{
"entries": {
"actions/checkout@v6.0.2": {
"repo": "actions/checkout",
"version": "v6.0.2",
"sha": "de0fac2e4500dabe0009e67214ff5f5447ce83dd"
},
"actions/download-artifact@v8.0.1": {
"repo": "actions/download-artifact",
"version": "v8.0.1",
"sha": "3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c"
},
"actions/github-script@v8": {
"repo": "actions/github-script",
"version": "v8",
"sha": "ed597411d8f924073f98dfc5c65a23a2325f34cd"
},
"actions/upload-artifact@v7.0.0": {
"repo": "actions/upload-artifact",
"version": "v7.0.0",
"sha": "bbbca2ddaa5d8feaa63e36b76fdaad77386f024f"
},
"github/gh-aw-actions/setup@v0.59.0": {
"repo": "github/gh-aw-actions/setup",
"version": "v0.59.0",
"sha": "066087f607f52664010289ddd52198f33044c38a"
},
"github/gh-aw-actions/setup@v0.61.2": {
"repo": "github/gh-aw-actions/setup",
"version": "v0.61.2",
"sha": "71cfb3cbe2002225f9d5afa180669fff36b86ea2"
},
"github/gh-aw/actions/setup@v0.61.2": {
"repo": "github/gh-aw/actions/setup",
"version": "v0.61.2",
"sha": "d6f6273a03402cd530be35455a7823494b846d66"
}
}
}
================================================
FILE: .github/copilot-instructions.md
================================================
The following instructions are only to be applied when performing a code review.
## README updates
- [ ] The new file should be added to the `docs/README.<type>.md`.
## Prompt file guide
**Only apply to files that end in `.prompt.md`**
- [ ] The prompt has markdown front matter.
- [ ] The prompt has a `agent` field specified of either `agent`, `ask`, or `Plan`.
- [ ] The prompt has a `description` field.
- [ ] The `description` field is not empty.
- [ ] The file name is lower case, with words separated by hyphens.
- [ ] Encourage the use of `tools`, but it's not required.
- [ ] Strongly encourage the use of `model` to specify the model that the prompt is optimised for.
- [ ] Strongly encourage the use of `name` to set the name for the prompt.
## Instruction file guide
**Only apply to files that end in `.instructions.md`**
- [ ] The instruction has markdown front matter.
- [ ] The instruction has a `description` field.
- [ ] The `description` field is not empty.
- [ ] The file name is lower case, with words separated by hyphens.
- [ ] The instruction has an `applyTo` field that specifies the file or files to which the instructions apply. If they wish to specify multiple file paths they should formatted like `'**.js, **.ts'`.
## Agent file guide
**Only apply to files that end in `.agent.md`**
- [ ] The agent has markdown front matter.
- [ ] The agent has a `description` field.
- [ ] The `description` field is not empty.
- [ ] The file name is lower case, with words separated by hyphens.
- [ ] Encourage the use of `tools`, but it's not required.
- [ ] Strongly encourage the use of `model` to specify the model that the agent is optimised for.
- [ ] Strongly encourage the use of `name` to set the name for the agent.
## Agent Skills guide
**Only apply to folders in the `skills/` directory**
- [ ] The skill folder contains a `SKILL.md` file.
- [ ] The SKILL.md has markdown front matter.
- [ ] The SKILL.md has a `name` field.
- [ ] The `name` field value is lowercase with words separated by hyphens.
- [ ] The `name` field matches the folder name.
- [ ] The SKILL.md has a `description` field.
- [ ] The `description` field is not empty, at least 10 characters, and maximum 1024 characters.
- [ ] The `description` field value is wrapped in single quotes.
- [ ] The folder name is lower case, with words separated by hyphens.
- [ ] Any bundled assets (scripts, templates, data files) are referenced in the SKILL.md instructions.
- [ ] Bundled assets are reasonably sized (under 5MB per file).
## Plugin guide
**Only apply to directories in the `plugins/` directory**
- [ ] The plugin directory contains a `.github/plugin/plugin.json` file.
- [ ] The plugin directory contains a `README.md` file.
- [ ] The plugin.json has a `name` field matching the directory name.
- [ ] The plugin.json has a `description` field.
- [ ] The `description` field is not empty.
- [ ] The directory name is lower case, with words separated by hyphens.
- [ ] If `tags` is present, it is an array of lowercase hyphenated strings.
- [ ] If `items` is present, each item has `path` and `kind` fields.
- [ ] The `kind` field value is one of: `prompt`, `agent`, `instruction`, `skill`, or `hook`.
- [ ] The plugin does not reference non-existent files.
================================================
FILE: .github/plugin/marketplace.json
================================================
{
"name": "awesome-copilot",
"metadata": {
"description": "Community-driven collection of GitHub Copilot plugins, agents, prompts, and skills",
"version": "1.0.0",
"pluginRoot": "./plugins"
},
"owner": {
"name": "GitHub",
"email": "copilot@github.com"
},
"plugins": [
{
"name": "automate-this",
"source": "automate-this",
"description": "Record your screen doing a manual process, drop the video on your Desktop, and let Copilot CLI analyze it frame-by-frame to build working automation scripts. Supports narrated recordings with audio transcription.",
"version": "1.0.0"
},
{
"name": "awesome-copilot",
"source": "awesome-copilot",
"description": "Meta prompts that help you discover and generate curated GitHub Copilot agents, instructions, prompts, and skills.",
"version": "1.1.0"
},
{
"name": "azure",
"description": "Microsoft Azure MCP Server and skills for cloud resource management, deployments, and Azure services. Manage your Azure infrastructure, monitor applications, and deploy resources directly from Copilot.",
"version": "1.0.0",
"author": {
"name": "Microsoft",
"url": "https://www.microsoft.com"
},
"homepage": "https://github.com/microsoft/azure-skills",
"keywords": [
"azure",
"cloud",
"infrastructure",
"deployment",
"microsoft",
"devops"
],
"license": "MIT",
"repository": "https://github.com/microsoft/github-copilot-for-azure",
"source": {
"source": "github",
"repo": "microsoft/azure-skills",
"path": ".github/plugins/azure-skills"
}
},
{
"name": "azure-cloud-development",
"source": "azure-cloud-development",
"description": "Comprehensive Azure cloud development tools including Infrastructure as Code, serverless functions, architecture patterns, and cost optimization for building scalable cloud applications.",
"version": "1.0.1"
},
{
"name": "cast-imaging",
"source": "cast-imaging",
"description": "A comprehensive collection of specialized agents for software analysis, impact assessment, structural quality advisories, and architectural review using CAST Imaging.",
"version": "1.0.0"
},
{
"name": "clojure-interactive-programming",
"source": "clojure-interactive-programming",
"description": "Tools for REPL-first Clojure workflows featuring Clojure instructions, the interactive programming chat mode and supporting guidance.",
"version": "1.0.0"
},
{
"name": "context-engineering",
"source": "context-engineering",
"description": "Tools and techniques for maximizing GitHub Copilot effectiveness through better context management. Includes guidelines for structuring code, an agent for planning multi-file changes, and prompts for context-aware development.",
"version": "1.0.0"
},
{
"name": "copilot-sdk",
"source": "copilot-sdk",
"description": "Build applications with the GitHub Copilot SDK across multiple programming languages. Includes comprehensive instructions for C#, Go, Node.js/TypeScript, and Python to help you create AI-powered applications.",
"version": "1.0.0"
},
{
"name": "csharp-dotnet-development",
"source": "csharp-dotnet-development",
"description": "Essential prompts, instructions, and chat modes for C# and .NET development including testing, documentation, and best practices.",
"version": "1.1.0"
},
{
"name": "csharp-mcp-development",
"source": "csharp-mcp-development",
"description": "Complete toolkit for building Model Context Protocol (MCP) servers in C# using the official SDK. Includes instructions for best practices, a prompt for generating servers, and an expert chat mode for guidance.",
"version": "1.0.0"
},
{
"name": "database-data-management",
"source": "database-data-management",
"description": "Database administration, SQL optimization, and data management tools for PostgreSQL, SQL Server, and general database development best practices.",
"version": "1.0.0"
},
{
"name": "dataverse",
"description": "Build and manage Microsoft Dataverse solutions using natural language. Includes table/column creation, solution lifecycle, data operations, and MCP server configuration.",
"version": "1.0.0",
"author": {
"name": "Microsoft",
"url": "https://www.microsoft.com"
},
"homepage": "https://github.com/microsoft/Dataverse-skills",
"keywords": [
"dataverse",
"power-platform",
"microsoft",
"mcp",
"python",
"sdk"
],
"license": "MIT",
"repository": "https://github.com/microsoft/Dataverse-skills",
"source": {
"source": "github",
"repo": "microsoft/Dataverse-skills",
"path": ".github/plugins/dataverse"
}
},
{
"name": "dataverse-sdk-for-python",
"source": "dataverse-sdk-for-python",
"description": "Comprehensive collection for building production-ready Python integrations with Microsoft Dataverse. Includes official documentation, best practices, advanced features, file operations, and code generation prompts.",
"version": "1.0.0"
},
{
"name": "devops-oncall",
"source": "devops-oncall",
"description": "A focused set of prompts, instructions, and a chat mode to help triage incidents and respond quickly with DevOps tools and Azure resources.",
"version": "1.0.0"
},
{
"name": "dotnet",
"description": "Common everyday C#/.NET coding skills. Expected to be useful to all .NET developers.",
"version": "0.1.0",
"author": {
"name": "Microsoft",
"url": "https://www.microsoft.com"
},
"homepage": "https://github.com/dotnet/skills",
"keywords": [
"dotnet",
"csharp",
"coding",
"skills",
"csharp-script",
"single-file",
"nuget-publishing",
"pinvoke"
],
"license": "MIT",
"repository": "https://github.com/dotnet/skills",
"source": {
"source": "github",
"repo": "dotnet/skills",
"path": "plugins/dotnet"
}
},
{
"name": "dotnet-diag",
"description": "Skills for .NET performance investigations, debugging, and incident analysis.",
"version": "0.1.0",
"author": {
"name": "Microsoft",
"url": "https://www.microsoft.com"
},
"homepage": "https://github.com/dotnet/skills",
"keywords": [
"dotnet",
"diagnostics",
"performance",
"debugging",
"tracing",
"symbolicate",
"android-tombstone",
"dump-collection",
"microbenchmarking",
"clr-activation"
],
"license": "MIT",
"repository": "https://github.com/dotnet/skills",
"source": {
"source": "github",
"repo": "dotnet/skills",
"path": "plugins/dotnet-diag"
}
},
{
"name": "doublecheck",
"source": "doublecheck",
"description": "Three-layer verification pipeline for AI output. Extracts claims, finds sources, and flags hallucination risks so humans can verify before acting.",
"version": "1.0.0"
},
{
"name": "edge-ai-tasks",
"source": "edge-ai-tasks",
"description": "Task Researcher and Task Planner for intermediate to expert users and large codebases - Brought to you by microsoft/edge-ai",
"version": "1.0.0"
},
{
"name": "flowstudio-power-automate",
"source": "flowstudio-power-automate",
"description": "Complete toolkit for managing Power Automate cloud flows via the FlowStudio MCP server. Includes skills for connecting to the MCP server, debugging failed flow runs, and building/deploying flows from natural language.",
"version": "1.0.0"
},
{
"name": "frontend-web-dev",
"source": "frontend-web-dev",
"description": "Essential prompts, instructions, and chat modes for modern frontend web development including React, Angular, Vue, TypeScript, and CSS frameworks.",
"version": "1.0.0"
},
{
"name": "gem-team",
"source": "gem-team",
"description": "A modular multi-agent team for complex project execution with DAG-based planning, complexity-aware research, multi-plan selection for critical tasks, parallel execution, TDD verification, and automated testing.",
"version": "1.3.0"
},
{
"name": "go-mcp-development",
"source": "go-mcp-development",
"description": "Complete toolkit for building Model Context Protocol (MCP) servers in Go using the official github.com/modelcontextprotocol/go-sdk. Includes instructions for best practices, a prompt for generating servers, and an expert chat mode for guidance.",
"version": "1.0.0"
},
{
"name": "java-development",
"source": "java-development",
"description": "Comprehensive collection of prompts and instructions for Java development including Spring Boot, Quarkus, testing, documentation, and best practices.",
"version": "1.0.0"
},
{
"name": "java-mcp-development",
"source": "java-mcp-development",
"description": "Complete toolkit for building Model Context Protocol servers in Java using the official MCP Java SDK with reactive streams and Spring Boot integration.",
"version": "1.0.0"
},
{
"name": "kotlin-mcp-development",
"source": "kotlin-mcp-development",
"description": "Complete toolkit for building Model Context Protocol (MCP) servers in Kotlin using the official io.modelcontextprotocol:kotlin-sdk library. Includes instructions for best practices, a prompt for generating servers, and an expert chat mode for guidance.",
"version": "1.0.0"
},
{
"name": "mcp-m365-copilot",
"source": "mcp-m365-copilot",
"description": "Comprehensive collection for building declarative agents with Model Context Protocol integration for Microsoft 365 Copilot",
"version": "1.0.0"
},
{
"name": "modernize-dotnet",
"description": "AI-powered .NET modernization and upgrade assistant. Helps upgrade .NET Framework and .NET applications to the latest versions of .NET.",
"version": "1.0.979-preview1",
"author": {
"name": "Microsoft",
"url": "https://www.microsoft.com"
},
"homepage": "https://github.com/dotnet/modernize-dotnet",
"keywords": [
"modernization",
"upgrade",
"migration",
"dotnet"
],
"license": "MIT",
"repository": "https://github.com/dotnet/modernize-dotnet",
"source": {
"source": "github",
"repo": "dotnet/modernize-dotnet",
"path": "plugins/modernize-dotnet"
}
},
{
"name": "napkin",
"source": "napkin",
"description": "Visual whiteboard collaboration for Copilot CLI. Opens an interactive whiteboard in your browser where you can draw, sketch, and add sticky notes — then share everything back with Copilot. Copilot sees your drawings and responds with analysis, suggestions, and ideas.",
"version": "1.0.0"
},
{
"name": "noob-mode",
"source": "noob-mode",
"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.",
"version": "1.0.0"
},
{
"name": "openapi-to-application-csharp-dotnet",
"source": "openapi-to-application-csharp-dotnet",
"description": "Generate production-ready .NET applications from OpenAPI specifications. Includes ASP.NET Core project scaffolding, controller generation, entity framework integration, and C# best practices.",
"version": "1.0.0"
},
{
"name": "openapi-to-application-go",
"source": "openapi-to-application-go",
"description": "Generate production-ready Go applications from OpenAPI specifications. Includes project scaffolding, handler generation, middleware setup, and Go best practices for REST APIs.",
"version": "1.0.0"
},
{
"name": "openapi-to-application-java-spring-boot",
"source": "openapi-to-application-java-spring-boot",
"description": "Generate production-ready Spring Boot applications from OpenAPI specifications. Includes project scaffolding, REST controller generation, service layer organization, and Spring Boot best practices.",
"version": "1.0.0"
},
{
"name": "openapi-to-application-nodejs-nestjs",
"source": "openapi-to-application-nodejs-nestjs",
"description": "Generate production-ready NestJS applications from OpenAPI specifications. Includes project scaffolding, controller and service generation, TypeScript best practices, and enterprise patterns.",
"version": "1.0.0"
},
{
"name": "openapi-to-application-python-fastapi",
"source": "openapi-to-application-python-fastapi",
"description": "Generate production-ready FastAPI applications from OpenAPI specifications. Includes project scaffolding, route generation, dependency injection, and Python best practices for async APIs.",
"version": "1.0.0"
},
{
"name": "oracle-to-postgres-migration-expert",
"source": "oracle-to-postgres-migration-expert",
"description": "Expert agent for Oracle-to-PostgreSQL application migrations in .NET solutions. Performs code edits, runs commands, and invokes extension tools to migrate .NET/Oracle data access patterns to PostgreSQL.",
"version": "1.0.0"
},
{
"name": "ospo-sponsorship",
"source": "ospo-sponsorship",
"description": "Tools and resources for Open Source Program Offices (OSPOs) to identify, evaluate, and manage sponsorship of open source dependencies through GitHub Sponsors, Open Collective, and other funding platforms.",
"version": "1.0.0"
},
{
"name": "partners",
"source": "partners",
"description": "Custom agents that have been created by GitHub partners",
"version": "1.0.0"
},
{
"name": "pcf-development",
"source": "pcf-development",
"description": "Complete toolkit for developing custom code components using Power Apps Component Framework for model-driven and canvas apps",
"version": "1.0.0"
},
{
"name": "php-mcp-development",
"source": "php-mcp-development",
"description": "Comprehensive resources for building Model Context Protocol servers using the official PHP SDK with attribute-based discovery, including best practices, project generation, and expert assistance",
"version": "1.0.0"
},
{
"name": "polyglot-test-agent",
"source": "polyglot-test-agent",
"description": "Multi-agent pipeline for generating comprehensive unit tests across any programming language. Orchestrates research, planning, and implementation phases using specialized agents to produce tests that compile, pass, and follow project conventions.",
"version": "1.0.0"
},
{
"name": "power-apps-code-apps",
"source": "power-apps-code-apps",
"description": "Complete toolkit for Power Apps Code Apps development including project scaffolding, development standards, and expert guidance for building code-first applications with Power Platform integration.",
"version": "1.0.0"
},
{
"name": "power-bi-development",
"source": "power-bi-development",
"description": "Comprehensive Power BI development resources including data modeling, DAX optimization, performance tuning, visualization design, security best practices, and DevOps/ALM guidance for building enterprise-grade Power BI solutions.",
"version": "1.0.0"
},
{
"name": "power-platform-mcp-connector-development",
"source": "power-platform-mcp-connector-development",
"description": "Complete toolkit for developing Power Platform custom connectors with Model Context Protocol integration for Microsoft Copilot Studio",
"version": "1.0.0"
},
{
"name": "project-planning",
"source": "project-planning",
"description": "Tools and guidance for software project planning, feature breakdown, epic management, implementation planning, and task organization for development teams.",
"version": "1.0.0"
},
{
"name": "python-mcp-development",
"source": "python-mcp-development",
"description": "Complete toolkit for building Model Context Protocol (MCP) servers in Python using the official SDK with FastMCP. Includes instructions for best practices, a prompt for generating servers, and an expert chat mode for guidance.",
"version": "1.0.0"
},
{
"name": "ruby-mcp-development",
"source": "ruby-mcp-development",
"description": "Complete toolkit for building Model Context Protocol servers in Ruby using the official MCP Ruby SDK gem with Rails integration support.",
"version": "1.0.0"
},
{
"name": "rug-agentic-workflow",
"source": "rug-agentic-workflow",
"description": "Three-agent workflow for orchestrated software delivery with an orchestrator plus implementation and QA subagents.",
"version": "1.0.0"
},
{
"name": "rust-mcp-development",
"source": "rust-mcp-development",
"description": "Build high-performance Model Context Protocol servers in Rust using the official rmcp SDK with async/await, procedural macros, and type-safe implementations.",
"version": "1.0.0"
},
{
"name": "security-best-practices",
"source": "security-best-practices",
"description": "Security frameworks, accessibility guidelines, performance optimization, and code quality best practices for building secure, maintainable, and high-performance applications.",
"version": "1.0.0"
},
{
"name": "skills-for-copilot-studio",
"description": "Microsoft Copilot Studio plugins for AI coding agents",
"version": "1.0.3",
"author": {
"name": "Microsoft Copilot Studio CAT Team",
"url": "https://www.microsoft.com"
},
"homepage": "https://github.com/microsoft/skills-for-copilot-studio",
"keywords": [
"copilot",
"copilot-studio",
"studio",
"agent",
"microsoft",
"coding"
],
"license": "MIT",
"repository": "https://github.com/microsoft/skills-for-copilot-studio",
"source": {
"source": "github",
"repo": "microsoft/skills-for-copilot-studio"
}
},
{
"name": "software-engineering-team",
"source": "software-engineering-team",
"description": "7 specialized agents covering the full software development lifecycle from UX design and architecture to security and DevOps.",
"version": "1.0.0"
},
{
"name": "structured-autonomy",
"source": "structured-autonomy",
"description": "Premium planning, thrifty implementation",
"version": "1.0.0"
},
{
"name": "swift-mcp-development",
"source": "swift-mcp-development",
"description": "Comprehensive collection for building Model Context Protocol servers in Swift using the official MCP Swift SDK with modern concurrency features.",
"version": "1.0.0"
},
{
"name": "technical-spike",
"source": "technical-spike",
"description": "Tools for creation, management and research of technical spikes to reduce unknowns and assumptions before proceeding to specification and implementation of solutions.",
"version": "1.0.0"
},
{
"name": "testing-automation",
"source": "testing-automation",
"description": "Comprehensive collection for writing tests, test automation, and test-driven development including unit tests, integration tests, and end-to-end testing strategies.",
"version": "1.0.0"
},
{
"name": "typescript-mcp-development",
"source": "typescript-mcp-development",
"description": "Complete toolkit for building Model Context Protocol (MCP) servers in TypeScript/Node.js using the official SDK. Includes instructions for best practices, a prompt for generating servers, and an expert chat mode for guidance.",
"version": "1.0.0"
},
{
"name": "typespec-m365-copilot",
"source": "typespec-m365-copilot",
"description": "Comprehensive collection of prompts, instructions, and resources for building declarative agents and API plugins using TypeSpec for Microsoft 365 Copilot extensibility.",
"version": "1.0.0"
},
{
"name": "winui3-development",
"source": "winui3-development",
"description": "WinUI 3 and Windows App SDK development agent, instructions, and migration guide. Prevents common UWP API misuse and guides correct WinUI 3 patterns for desktop Windows apps.",
"version": "1.0.0"
}
]
}
================================================
FILE: .github/pull_request_template.md
================================================
## Pull Request Checklist
- [ ] I have read and followed the [CONTRIBUTING.md](https://github.com/github/awesome-copilot/blob/main/CONTRIBUTING.md) guidelines.
- [ ] I have read and followed the [Guidance for submissions involving paid services](https://github.com/github/awesome-copilot/discussions/968).
- [ ] My contribution adds a new instruction, prompt, agent, skill, or workflow file in the correct directory.
- [ ] The file follows the required naming convention.
- [ ] The content is clearly structured and follows the example format.
- [ ] I have tested my instructions, prompt, agent, skill, or workflow with GitHub Copilot.
- [ ] I have run `npm start` and verified that `README.md` is up to date.
---
## Description
<!-- Briefly describe your contribution and its purpose. Include any relevant context or usage notes. -->
---
## Type of Contribution
- [ ] New instruction file.
- [ ] New prompt file.
- [ ] New agent file.
- [ ] New plugin.
- [ ] New skill file.
- [ ] New agentic workflow.
- [ ] Update to existing instruction, prompt, agent, plugin, skill, or workflow.
- [ ] Other (please specify):
---
## Additional Notes
<!-- Add any additional information or context for reviewers here. -->
---
By submitting this pull request, I confirm that my contribution abides by the [Code of Conduct](../CODE_OF_CONDUCT.md) and will be licensed under the MIT License.
================================================
FILE: .github/workflows/check-line-endings.yml
================================================
name: Check Line Endings
on:
push:
branches: [staged]
pull_request:
branches: [staged]
permissions:
contents: read
jobs:
check-line-endings:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Check for CRLF line endings in markdown files
run: |
! grep -l $'\r' $(find . -name "*.md")
if [ $? -eq 0 ]; then
echo "✅ No CRLF line endings found in markdown files"
exit 0
else
echo "❌ CRLF line endings found in markdown files"
echo "Files with CRLF line endings:"
grep -l $'\r' $(find . -name "*.md")
exit 1
fi
================================================
FILE: .github/workflows/check-plugin-structure.yml
================================================
name: Check Plugin Structure
on:
pull_request:
branches: [staged]
paths:
- "plugins/**"
permissions:
contents: read
pull-requests: write
jobs:
check-materialized-files:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check for materialized files in plugin directories
uses: actions/github-script@v7
with:
script: |
const { execSync } = require('child_process');
const fs = require('fs');
const path = require('path');
const pluginsDir = 'plugins';
const errors = [];
if (!fs.existsSync(pluginsDir)) {
console.log('No plugins directory found');
return;
}
const pluginDirs = fs.readdirSync(pluginsDir, { withFileTypes: true })
.filter(d => d.isDirectory())
.map(d => d.name);
for (const plugin of pluginDirs) {
const pluginPath = path.join(pluginsDir, plugin);
// Check for materialized agent/command/skill files
for (const subdir of ['agents', 'commands', 'skills']) {
const subdirPath = path.join(pluginPath, subdir);
if (!fs.existsSync(subdirPath)) continue;
const stat = fs.lstatSync(subdirPath);
if (stat.isSymbolicLink()) {
errors.push(`${pluginPath}/${subdir} is a symlink — symlinks should not exist in plugin directories`);
continue;
}
if (stat.isDirectory()) {
const files = fs.readdirSync(subdirPath);
if (files.length > 0) {
errors.push(
`${pluginPath}/${subdir}/ contains ${files.length} file(s): ${files.join(', ')}. ` +
`Plugin directories on staged should only contain .github/plugin/plugin.json and README.md. ` +
`Agent, command, and skill files are materialized automatically during publish to main.`
);
}
}
}
// Check for symlinks anywhere in the plugin directory
try {
const allFiles = execSync(`find "${pluginPath}" -type l`, { encoding: 'utf-8' }).trim();
if (allFiles) {
errors.push(`${pluginPath} contains symlinks:\n${allFiles}`);
}
} catch (e) {
// find returns non-zero if no matches, ignore
}
}
if (errors.length > 0) {
const prBranch = context.payload.pull_request.head.ref;
const prRepo = context.payload.pull_request.head.repo.full_name;
const isFork = context.payload.pull_request.head.repo.fork;
const body = [
'⚠️ **Materialized files or symlinks detected in plugin directories**',
'',
'Plugin directories on the `staged` branch should only contain:',
'- `.github/plugin/plugin.json` (metadata)',
'- `README.md`',
'',
'Agent, command, and skill files are copied in automatically when publishing to `main`.',
'',
'**Issues found:**',
...errors.map(e => `- ${e}`),
'',
'---',
'',
'### How to fix',
'',
'It looks like your branch may be based on `main` (which contains materialized files). Here are two options:',
'',
'**Option 1: Rebase onto `staged`** (recommended if you have few commits)',
'```bash',
`git fetch origin staged`,
`git rebase --onto origin/staged origin/main ${prBranch}`,
`git push --force-with-lease`,
'```',
'',
'**Option 2: Remove the extra files manually**',
'```bash',
'# Remove materialized files from plugin directories',
'find plugins/ -mindepth 2 -maxdepth 2 -type d \\( -name agents -o -name commands -o -name skills \\) -exec rm -rf {} +',
'# Remove any symlinks',
'find plugins/ -type l -delete',
'git add -A && git commit -m "fix: remove materialized plugin files"',
'git push',
'```',
].join('\n');
await github.rest.pulls.createReview({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
event: 'REQUEST_CHANGES',
body
});
core.setFailed('Plugin directories contain materialized files or symlinks that should not be on staged');
} else {
console.log('✅ All plugin directories are clean');
}
================================================
FILE: .github/workflows/check-pr-target.yml
================================================
name: Check PR Target Branch
on:
pull_request:
branches: [main]
types: [opened]
permissions:
pull-requests: write
jobs:
check-target:
runs-on: ubuntu-latest
steps:
- name: Reject PR targeting main
uses: actions/github-script@v7
with:
script: |
const body = [
'⚠️ **This PR targets `main`, but PRs should target `staged`.**',
'',
'The `main` branch is auto-published from `staged` and should not receive direct PRs.',
'Please close this PR and re-open it against the `staged` branch.',
'',
'You can change the base branch using the **Edit** button at the top of this PR,',
'or run: `gh pr edit ${{ github.event.pull_request.number }} --base staged`'
].join('\n');
await github.rest.pulls.createReview({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: context.issue.number,
event: 'REQUEST_CHANGES',
body
});
================================================
FILE: .github/workflows/codeowner-update.lock.yml
================================================
# ___ _ _
# / _ \ | | (_)
# | |_| | __ _ ___ _ __ | |_ _ ___
# | _ |/ _` |/ _ \ '_ \| __| |/ __|
# | | | | (_| | __/ | | | |_| | (__
# \_| |_/\__, |\___|_| |_|\__|_|\___|
# __/ |
# _ _ |___/
# | | | | / _| |
# | | | | ___ _ __ _ __| |_| | _____ ____
# | |/\| |/ _ \ '__| |/ /| _| |/ _ \ \ /\ / / ___|
# \ /\ / (_) | | | | ( | | | | (_) \ V V /\__ \
# \/ \/ \___/|_| |_|\_\|_| |_|\___/ \_/\_/ |___/
#
# This file was automatically generated by gh-aw (v0.61.2). DO NOT EDIT.
#
# To update this file, edit the corresponding .md file and run:
# gh aw compile
# Not all edits will cause changes to this file.
#
# For more information: https://github.github.com/gh-aw/introduction/overview/
#
# Updates the CODEOWNERS file when a maintainer comments #codeowner on a pull request
#
# gh-aw-metadata: {"schema_version":"v2","frontmatter_hash":"8f7ecfe9d458039fea20a1e09fd094839da1ae52fd4e5006effac2a27da3bd50","compiler_version":"v0.61.2","strict":true}
name: "Codeowner Update Agent"
"on":
issue_comment:
types:
- created
permissions: {}
concurrency:
group: "gh-aw-${{ github.workflow }}-${{ github.event.issue.number || github.run_id }}"
run-name: "Codeowner Update Agent"
jobs:
activation:
needs: pre_activation
if: >
(needs.pre_activation.outputs.activated == 'true') && (contains(github.event.comment.body, '#codeowner') &&
github.event.issue.pull_request)
runs-on: ubuntu-slim
permissions:
contents: read
outputs:
body: ${{ steps.sanitized.outputs.body }}
comment_id: ""
comment_repo: ""
lockdown_check_failed: ${{ steps.generate_aw_info.outputs.lockdown_check_failed == 'true' }}
model: ${{ steps.generate_aw_info.outputs.model }}
secret_verification_result: ${{ steps.validate-secret.outputs.verification_result }}
text: ${{ steps.sanitized.outputs.text }}
title: ${{ steps.sanitized.outputs.title }}
steps:
- name: Setup Scripts
uses: github/gh-aw-actions/setup@71cfb3cbe2002225f9d5afa180669fff36b86ea2 # v0.61.2
with:
destination: ${{ runner.temp }}/gh-aw/actions
- name: Generate agentic run info
id: generate_aw_info
env:
GH_AW_INFO_ENGINE_ID: "copilot"
GH_AW_INFO_ENGINE_NAME: "GitHub Copilot CLI"
GH_AW_INFO_MODEL: ${{ vars.GH_AW_MODEL_AGENT_COPILOT || '' }}
GH_AW_INFO_VERSION: ""
GH_AW_INFO_AGENT_VERSION: "latest"
GH_AW_INFO_CLI_VERSION: "v0.61.2"
GH_AW_INFO_WORKFLOW_NAME: "Codeowner Update Agent"
GH_AW_INFO_EXPERIMENTAL: "false"
GH_AW_INFO_SUPPORTS_TOOLS_ALLOWLIST: "true"
GH_AW_INFO_STAGED: "false"
GH_AW_INFO_ALLOWED_DOMAINS: '["defaults"]'
GH_AW_INFO_FIREWALL_ENABLED: "true"
GH_AW_INFO_AWF_VERSION: "v0.24.3"
GH_AW_INFO_AWMG_VERSION: ""
GH_AW_INFO_FIREWALL_TYPE: "squid"
GH_AW_COMPILED_STRICT: "true"
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/generate_aw_info.cjs');
await main(core, context);
- name: Validate COPILOT_GITHUB_TOKEN secret
id: validate-secret
run: ${RUNNER_TEMP}/gh-aw/actions/validate_multi_secret.sh COPILOT_GITHUB_TOKEN 'GitHub Copilot CLI' https://github.github.com/gh-aw/reference/engines/#github-copilot-default
env:
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
- name: Checkout .github and .agents folders
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
sparse-checkout: |
.github
.agents
sparse-checkout-cone-mode: true
fetch-depth: 1
- name: Check workflow file timestamps
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_FILE: "codeowner-update.lock.yml"
with:
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs');
await main();
- name: Compute current body text
id: sanitized
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/compute_text.cjs');
await main();
- name: Create prompt with built-in context
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GH_AW_GITHUB_ACTOR: ${{ github.actor }}
GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }}
GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }}
GH_AW_GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}
GH_AW_GITHUB_RUN_ID: ${{ github.run_id }}
GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }}
GH_AW_IS_PR_COMMENT: ${{ github.event.issue.pull_request && 'true' || '' }}
GH_AW_STEPS_SANITIZED_OUTPUTS_TEXT: ${{ steps.sanitized.outputs.text }}
run: |
bash ${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh
{
cat << 'GH_AW_PROMPT_EOF'
<system>
GH_AW_PROMPT_EOF
cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md"
cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md"
cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md"
cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md"
cat << 'GH_AW_PROMPT_EOF'
<safe-output-tools>
Tools: add_comment, create_pull_request, missing_tool, missing_data, noop
GH_AW_PROMPT_EOF
cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_create_pull_request.md"
cat << 'GH_AW_PROMPT_EOF'
</safe-output-tools>
<github-context>
The following GitHub context information is available for this workflow:
{{#if __GH_AW_GITHUB_ACTOR__ }}
- **actor**: __GH_AW_GITHUB_ACTOR__
{{/if}}
{{#if __GH_AW_GITHUB_REPOSITORY__ }}
- **repository**: __GH_AW_GITHUB_REPOSITORY__
{{/if}}
{{#if __GH_AW_GITHUB_WORKSPACE__ }}
- **workspace**: __GH_AW_GITHUB_WORKSPACE__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_ISSUE_NUMBER__ }}
- **issue-number**: #__GH_AW_GITHUB_EVENT_ISSUE_NUMBER__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER__ }}
- **discussion-number**: #__GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER__ }}
- **pull-request-number**: #__GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_COMMENT_ID__ }}
- **comment-id**: __GH_AW_GITHUB_EVENT_COMMENT_ID__
{{/if}}
{{#if __GH_AW_GITHUB_RUN_ID__ }}
- **workflow-run-id**: __GH_AW_GITHUB_RUN_ID__
{{/if}}
</github-context>
GH_AW_PROMPT_EOF
cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md"
if [ "$GITHUB_EVENT_NAME" = "issue_comment" ] && [ -n "$GH_AW_IS_PR_COMMENT" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review_comment" ] || [ "$GITHUB_EVENT_NAME" = "pull_request_review" ]; then
cat "${RUNNER_TEMP}/gh-aw/prompts/pr_context_prompt.md"
fi
cat << 'GH_AW_PROMPT_EOF'
</system>
GH_AW_PROMPT_EOF
cat << 'GH_AW_PROMPT_EOF'
{{#runtime-import .github/workflows/codeowner-update.md}}
GH_AW_PROMPT_EOF
} > "$GH_AW_PROMPT"
- name: Interpolate variables and render templates
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_GITHUB_ACTOR: ${{ github.actor }}
GH_AW_GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}
GH_AW_STEPS_SANITIZED_OUTPUTS_TEXT: ${{ steps.sanitized.outputs.text }}
with:
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/interpolate_prompt.cjs');
await main();
- name: Substitute placeholders
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_GITHUB_ACTOR: ${{ github.actor }}
GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }}
GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }}
GH_AW_GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}
GH_AW_GITHUB_RUN_ID: ${{ github.run_id }}
GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }}
GH_AW_IS_PR_COMMENT: ${{ github.event.issue.pull_request && 'true' || '' }}
GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_ACTIVATED: ${{ needs.pre_activation.outputs.activated }}
GH_AW_STEPS_SANITIZED_OUTPUTS_TEXT: ${{ steps.sanitized.outputs.text }}
with:
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const substitutePlaceholders = require('${{ runner.temp }}/gh-aw/actions/substitute_placeholders.cjs');
// Call the substitution function
return await substitutePlaceholders({
file: process.env.GH_AW_PROMPT,
substitutions: {
GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR,
GH_AW_GITHUB_EVENT_COMMENT_ID: process.env.GH_AW_GITHUB_EVENT_COMMENT_ID,
GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: process.env.GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER,
GH_AW_GITHUB_EVENT_ISSUE_NUMBER: process.env.GH_AW_GITHUB_EVENT_ISSUE_NUMBER,
GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: process.env.GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER,
GH_AW_GITHUB_REPOSITORY: process.env.GH_AW_GITHUB_REPOSITORY,
GH_AW_GITHUB_RUN_ID: process.env.GH_AW_GITHUB_RUN_ID,
GH_AW_GITHUB_WORKSPACE: process.env.GH_AW_GITHUB_WORKSPACE,
GH_AW_IS_PR_COMMENT: process.env.GH_AW_IS_PR_COMMENT,
GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_ACTIVATED: process.env.GH_AW_NEEDS_PRE_ACTIVATION_OUTPUTS_ACTIVATED,
GH_AW_STEPS_SANITIZED_OUTPUTS_TEXT: process.env.GH_AW_STEPS_SANITIZED_OUTPUTS_TEXT
}
});
- name: Validate prompt placeholders
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
run: bash ${RUNNER_TEMP}/gh-aw/actions/validate_prompt_placeholders.sh
- name: Print prompt
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
run: bash ${RUNNER_TEMP}/gh-aw/actions/print_prompt_summary.sh
- name: Upload activation artifact
if: success()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: activation
path: |
/tmp/gh-aw/aw_info.json
/tmp/gh-aw/aw-prompts/prompt.txt
retention-days: 1
agent:
needs: activation
runs-on: ubuntu-latest
permissions:
contents: read
issues: read
pull-requests: read
env:
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
GH_AW_ASSETS_ALLOWED_EXTS: ""
GH_AW_ASSETS_BRANCH: ""
GH_AW_ASSETS_MAX_SIZE_KB: 0
GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs
GH_AW_WORKFLOW_ID_SANITIZED: codeownerupdate
outputs:
checkout_pr_success: ${{ steps.checkout-pr.outputs.checkout_pr_success || 'true' }}
detection_conclusion: ${{ steps.detection_conclusion.outputs.conclusion }}
detection_success: ${{ steps.detection_conclusion.outputs.success }}
has_patch: ${{ steps.collect_output.outputs.has_patch }}
inference_access_error: ${{ steps.detect-inference-error.outputs.inference_access_error || 'false' }}
model: ${{ needs.activation.outputs.model }}
output: ${{ steps.collect_output.outputs.output }}
output_types: ${{ steps.collect_output.outputs.output_types }}
steps:
- name: Setup Scripts
uses: github/gh-aw-actions/setup@71cfb3cbe2002225f9d5afa180669fff36b86ea2 # v0.61.2
with:
destination: ${{ runner.temp }}/gh-aw/actions
- name: Set runtime paths
run: |
echo "GH_AW_SAFE_OUTPUTS=${RUNNER_TEMP}/gh-aw/safeoutputs/outputs.jsonl" >> "$GITHUB_ENV"
echo "GH_AW_SAFE_OUTPUTS_CONFIG_PATH=${RUNNER_TEMP}/gh-aw/safeoutputs/config.json" >> "$GITHUB_ENV"
echo "GH_AW_SAFE_OUTPUTS_TOOLS_PATH=${RUNNER_TEMP}/gh-aw/safeoutputs/tools.json" >> "$GITHUB_ENV"
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Create gh-aw temp directory
run: bash ${RUNNER_TEMP}/gh-aw/actions/create_gh_aw_tmp_dir.sh
- name: Configure gh CLI for GitHub Enterprise
run: bash ${RUNNER_TEMP}/gh-aw/actions/configure_gh_for_ghe.sh
env:
GH_TOKEN: ${{ github.token }}
- name: Configure Git credentials
env:
REPO_NAME: ${{ github.repository }}
SERVER_URL: ${{ github.server_url }}
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
git config --global am.keepcr true
# Re-authenticate git with GitHub token
SERVER_URL_STRIPPED="${SERVER_URL#https://}"
git remote set-url origin "https://x-access-token:${{ github.token }}@${SERVER_URL_STRIPPED}/${REPO_NAME}.git"
echo "Git configured with standard GitHub Actions identity"
- name: Checkout PR branch
id: checkout-pr
if: |
(github.event.pull_request) || (github.event.issue.pull_request)
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
with:
github-token: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/checkout_pr_branch.cjs');
await main();
- name: Install GitHub Copilot CLI
run: ${RUNNER_TEMP}/gh-aw/actions/install_copilot_cli.sh latest
env:
GH_HOST: github.com
- name: Install AWF binary
run: bash ${RUNNER_TEMP}/gh-aw/actions/install_awf_binary.sh v0.24.3
- name: Determine automatic lockdown mode for GitHub MCP Server
id: determine-automatic-lockdown
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }}
GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }}
with:
script: |
const determineAutomaticLockdown = require('${{ runner.temp }}/gh-aw/actions/determine_automatic_lockdown.cjs');
await determineAutomaticLockdown(github, context, core);
- name: Download container images
run: bash ${RUNNER_TEMP}/gh-aw/actions/download_docker_images.sh ghcr.io/github/gh-aw-firewall/agent:0.24.3 ghcr.io/github/gh-aw-firewall/api-proxy:0.24.3 ghcr.io/github/gh-aw-firewall/squid:0.24.3 ghcr.io/github/gh-aw-mcpg:v0.1.18 ghcr.io/github/github-mcp-server:v0.32.0 node:lts-alpine
- name: Write Safe Outputs Config
run: |
mkdir -p ${RUNNER_TEMP}/gh-aw/safeoutputs
mkdir -p /tmp/gh-aw/safeoutputs
mkdir -p /tmp/gh-aw/mcp-logs/safeoutputs
cat > ${RUNNER_TEMP}/gh-aw/safeoutputs/config.json << 'GH_AW_SAFE_OUTPUTS_CONFIG_EOF'
{"add_comment":{"max":1},"create_pull_request":{"base_branch":"staged","max":1,"title_prefix":"[codeowner] "},"missing_data":{},"missing_tool":{},"noop":{"max":1}}
GH_AW_SAFE_OUTPUTS_CONFIG_EOF
- name: Write Safe Outputs Tools
run: |
cat > ${RUNNER_TEMP}/gh-aw/safeoutputs/tools_meta.json << 'GH_AW_SAFE_OUTPUTS_TOOLS_META_EOF'
{
"description_suffixes": {
"add_comment": " CONSTRAINTS: Maximum 1 comment(s) can be added.",
"create_pull_request": " CONSTRAINTS: Maximum 1 pull request(s) can be created. Title will be prefixed with \"[codeowner] \"."
},
"repo_params": {},
"dynamic_tools": []
}
GH_AW_SAFE_OUTPUTS_TOOLS_META_EOF
cat > ${RUNNER_TEMP}/gh-aw/safeoutputs/validation.json << 'GH_AW_SAFE_OUTPUTS_VALIDATION_EOF'
{
"add_comment": {
"defaultMax": 1,
"fields": {
"body": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 65000
},
"item_number": {
"issueOrPRNumber": true
},
"repo": {
"type": "string",
"maxLength": 256
}
}
},
"create_pull_request": {
"defaultMax": 1,
"fields": {
"body": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 65000
},
"branch": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 256
},
"draft": {
"type": "boolean"
},
"labels": {
"type": "array",
"itemType": "string",
"itemSanitize": true,
"itemMaxLength": 128
},
"repo": {
"type": "string",
"maxLength": 256
},
"title": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 128
}
}
},
"missing_data": {
"defaultMax": 20,
"fields": {
"alternatives": {
"type": "string",
"sanitize": true,
"maxLength": 256
},
"context": {
"type": "string",
"sanitize": true,
"maxLength": 256
},
"data_type": {
"type": "string",
"sanitize": true,
"maxLength": 128
},
"reason": {
"type": "string",
"sanitize": true,
"maxLength": 256
}
}
},
"missing_tool": {
"defaultMax": 20,
"fields": {
"alternatives": {
"type": "string",
"sanitize": true,
"maxLength": 512
},
"reason": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 256
},
"tool": {
"type": "string",
"sanitize": true,
"maxLength": 128
}
}
},
"noop": {
"defaultMax": 1,
"fields": {
"message": {
"required": true,
"type": "string",
"sanitize": true,
"maxLength": 65000
}
}
}
}
GH_AW_SAFE_OUTPUTS_VALIDATION_EOF
node ${RUNNER_TEMP}/gh-aw/actions/generate_safe_outputs_tools.cjs
- name: Generate Safe Outputs MCP Server Config
id: safe-outputs-config
run: |
# Generate a secure random API key (360 bits of entropy, 40+ chars)
# Mask immediately to prevent timing vulnerabilities
API_KEY=$(openssl rand -base64 45 | tr -d '/+=')
echo "::add-mask::${API_KEY}"
PORT=3001
# Set outputs for next steps
{
echo "safe_outputs_api_key=${API_KEY}"
echo "safe_outputs_port=${PORT}"
} >> "$GITHUB_OUTPUT"
echo "Safe Outputs MCP server will run on port ${PORT}"
- name: Start Safe Outputs MCP HTTP Server
id: safe-outputs-start
env:
DEBUG: '*'
GH_AW_SAFE_OUTPUTS_PORT: ${{ steps.safe-outputs-config.outputs.safe_outputs_port }}
GH_AW_SAFE_OUTPUTS_API_KEY: ${{ steps.safe-outputs-config.outputs.safe_outputs_api_key }}
GH_AW_SAFE_OUTPUTS_TOOLS_PATH: ${{ runner.temp }}/gh-aw/safeoutputs/tools.json
GH_AW_SAFE_OUTPUTS_CONFIG_PATH: ${{ runner.temp }}/gh-aw/safeoutputs/config.json
GH_AW_MCP_LOG_DIR: /tmp/gh-aw/mcp-logs/safeoutputs
run: |
# Environment variables are set above to prevent template injection
export DEBUG
export GH_AW_SAFE_OUTPUTS_PORT
export GH_AW_SAFE_OUTPUTS_API_KEY
export GH_AW_SAFE_OUTPUTS_TOOLS_PATH
export GH_AW_SAFE_OUTPUTS_CONFIG_PATH
export GH_AW_MCP_LOG_DIR
bash ${RUNNER_TEMP}/gh-aw/actions/start_safe_outputs_server.sh
- name: Start MCP Gateway
id: start-mcp-gateway
env:
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GH_AW_SAFE_OUTPUTS_API_KEY: ${{ steps.safe-outputs-start.outputs.api_key }}
GH_AW_SAFE_OUTPUTS_PORT: ${{ steps.safe-outputs-start.outputs.port }}
GITHUB_MCP_GUARD_MIN_INTEGRITY: ${{ steps.determine-automatic-lockdown.outputs.min_integrity }}
GITHUB_MCP_GUARD_REPOS: ${{ steps.determine-automatic-lockdown.outputs.repos }}
GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
run: |
set -eo pipefail
mkdir -p /tmp/gh-aw/mcp-config
# Export gateway environment variables for MCP config and gateway script
export MCP_GATEWAY_PORT="80"
export MCP_GATEWAY_DOMAIN="host.docker.internal"
MCP_GATEWAY_API_KEY=$(openssl rand -base64 45 | tr -d '/+=')
echo "::add-mask::${MCP_GATEWAY_API_KEY}"
export MCP_GATEWAY_API_KEY
export MCP_GATEWAY_PAYLOAD_DIR="/tmp/gh-aw/mcp-payloads"
mkdir -p "${MCP_GATEWAY_PAYLOAD_DIR}"
export MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD="524288"
export DEBUG="*"
export GH_AW_ENGINE="copilot"
export MCP_GATEWAY_DOCKER_COMMAND='docker run -i --rm --network host -v /var/run/docker.sock:/var/run/docker.sock -e MCP_GATEWAY_PORT -e MCP_GATEWAY_DOMAIN -e MCP_GATEWAY_API_KEY -e MCP_GATEWAY_PAYLOAD_DIR -e MCP_GATEWAY_PAYLOAD_SIZE_THRESHOLD -e DEBUG -e MCP_GATEWAY_LOG_DIR -e GH_AW_MCP_LOG_DIR -e GH_AW_SAFE_OUTPUTS -e GH_AW_SAFE_OUTPUTS_CONFIG_PATH -e GH_AW_SAFE_OUTPUTS_TOOLS_PATH -e GH_AW_ASSETS_BRANCH -e GH_AW_ASSETS_MAX_SIZE_KB -e GH_AW_ASSETS_ALLOWED_EXTS -e DEFAULT_BRANCH -e GITHUB_MCP_SERVER_TOKEN -e GITHUB_MCP_GUARD_MIN_INTEGRITY -e GITHUB_MCP_GUARD_REPOS -e GITHUB_REPOSITORY -e GITHUB_SERVER_URL -e GITHUB_SHA -e GITHUB_WORKSPACE -e GITHUB_TOKEN -e GITHUB_RUN_ID -e GITHUB_RUN_NUMBER -e GITHUB_RUN_ATTEMPT -e GITHUB_JOB -e GITHUB_ACTION -e GITHUB_EVENT_NAME -e GITHUB_EVENT_PATH -e GITHUB_ACTOR -e GITHUB_ACTOR_ID -e GITHUB_TRIGGERING_ACTOR -e GITHUB_WORKFLOW -e GITHUB_WORKFLOW_REF -e GITHUB_WORKFLOW_SHA -e GITHUB_REF -e GITHUB_REF_NAME -e GITHUB_REF_TYPE -e GITHUB_HEAD_REF -e GITHUB_BASE_REF -e GH_AW_SAFE_OUTPUTS_PORT -e GH_AW_SAFE_OUTPUTS_API_KEY -v /tmp/gh-aw/mcp-payloads:/tmp/gh-aw/mcp-payloads:rw -v /opt:/opt:ro -v /tmp:/tmp:rw -v '"${GITHUB_WORKSPACE}"':'"${GITHUB_WORKSPACE}"':rw ghcr.io/github/gh-aw-mcpg:v0.1.18'
mkdir -p /home/runner/.copilot
cat << GH_AW_MCP_CONFIG_EOF | bash ${RUNNER_TEMP}/gh-aw/actions/start_mcp_gateway.sh
{
"mcpServers": {
"github": {
"type": "stdio",
"container": "ghcr.io/github/github-mcp-server:v0.32.0",
"env": {
"GITHUB_HOST": "\${GITHUB_SERVER_URL}",
"GITHUB_PERSONAL_ACCESS_TOKEN": "\${GITHUB_MCP_SERVER_TOKEN}",
"GITHUB_READ_ONLY": "1",
"GITHUB_TOOLSETS": "context,repos,issues,pull_requests"
},
"guard-policies": {
"allow-only": {
"min-integrity": "$GITHUB_MCP_GUARD_MIN_INTEGRITY",
"repos": "$GITHUB_MCP_GUARD_REPOS"
}
}
},
"safeoutputs": {
"type": "http",
"url": "http://host.docker.internal:$GH_AW_SAFE_OUTPUTS_PORT",
"headers": {
"Authorization": "\${GH_AW_SAFE_OUTPUTS_API_KEY}"
},
"guard-policies": {
"write-sink": {
"accept": [
"*"
]
}
}
}
},
"gateway": {
"port": $MCP_GATEWAY_PORT,
"domain": "${MCP_GATEWAY_DOMAIN}",
"apiKey": "${MCP_GATEWAY_API_KEY}",
"payloadDir": "${MCP_GATEWAY_PAYLOAD_DIR}"
}
}
GH_AW_MCP_CONFIG_EOF
- name: Download activation artifact
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: activation
path: /tmp/gh-aw
- name: Clean git credentials
continue-on-error: true
run: bash ${RUNNER_TEMP}/gh-aw/actions/clean_git_credentials.sh
- name: Execute GitHub Copilot CLI
id: agentic_execution
# Copilot CLI tool arguments (sorted):
timeout-minutes: 20
run: |
set -o pipefail
touch /tmp/gh-aw/agent-step-summary.md
# shellcheck disable=SC1003
sudo -E awf --env-all --container-workdir "${GITHUB_WORKSPACE}" --mount "${RUNNER_TEMP}/gh-aw:${RUNNER_TEMP}/gh-aw:ro" --mount "${RUNNER_TEMP}/gh-aw:/host${RUNNER_TEMP}/gh-aw:ro" --allow-domains "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,github.com,host.docker.internal,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,ppa.launchpad.net,raw.githubusercontent.com,registry.npmjs.org,s.symcb.com,s.symcd.com,security.ubuntu.com,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com,www.googleapis.com" --log-level info --proxy-logs-dir /tmp/gh-aw/sandbox/firewall/logs --enable-host-access --image-tag 0.24.3 --skip-pull --enable-api-proxy \
-- /bin/bash -c '/usr/local/bin/copilot --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --add-dir "${GITHUB_WORKSPACE}" --disable-builtin-mcps --allow-all-tools --allow-all-paths --prompt "$(cat /tmp/gh-aw/aw-prompts/prompt.txt)"' 2>&1 | tee -a /tmp/gh-aw/agent-stdio.log
env:
COPILOT_AGENT_RUNNER_TYPE: STANDALONE
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
COPILOT_MODEL: ${{ vars.GH_AW_MODEL_AGENT_COPILOT || '' }}
GH_AW_MCP_CONFIG: /home/runner/.copilot/mcp-config.json
GH_AW_PHASE: agent
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GH_AW_VERSION: v0.61.2
GITHUB_API_URL: ${{ github.api_url }}
GITHUB_AW: true
GITHUB_HEAD_REF: ${{ github.head_ref }}
GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN || secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
GITHUB_REF_NAME: ${{ github.ref_name }}
GITHUB_SERVER_URL: ${{ github.server_url }}
GITHUB_STEP_SUMMARY: /tmp/gh-aw/agent-step-summary.md
GITHUB_WORKSPACE: ${{ github.workspace }}
GIT_AUTHOR_EMAIL: github-actions[bot]@users.noreply.github.com
GIT_AUTHOR_NAME: github-actions[bot]
GIT_COMMITTER_EMAIL: github-actions[bot]@users.noreply.github.com
GIT_COMMITTER_NAME: github-actions[bot]
XDG_CONFIG_HOME: /home/runner
- name: Detect inference access error
id: detect-inference-error
if: always()
continue-on-error: true
run: bash ${RUNNER_TEMP}/gh-aw/actions/detect_inference_access_error.sh
- name: Configure Git credentials
env:
REPO_NAME: ${{ github.repository }}
SERVER_URL: ${{ github.server_url }}
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
git config --global am.keepcr true
# Re-authenticate git with GitHub token
SERVER_URL_STRIPPED="${SERVER_URL#https://}"
git remote set-url origin "https://x-access-token:${{ github.token }}@${SERVER_URL_STRIPPED}/${REPO_NAME}.git"
echo "Git configured with standard GitHub Actions identity"
- name: Copy Copilot session state files to logs
if: always()
continue-on-error: true
run: |
# Copy Copilot session state files to logs folder for artifact collection
# This ensures they are in /tmp/gh-aw/ where secret redaction can scan them
SESSION_STATE_DIR="$HOME/.copilot/session-state"
LOGS_DIR="/tmp/gh-aw/sandbox/agent/logs"
if [ -d "$SESSION_STATE_DIR" ]; then
echo "Copying Copilot session state files from $SESSION_STATE_DIR to $LOGS_DIR"
mkdir -p "$LOGS_DIR"
cp -v "$SESSION_STATE_DIR"/*.jsonl "$LOGS_DIR/" 2>/dev/null || true
echo "Session state files copied successfully"
else
echo "No session-state directory found at $SESSION_STATE_DIR"
fi
- name: Stop MCP Gateway
if: always()
continue-on-error: true
env:
MCP_GATEWAY_PORT: ${{ steps.start-mcp-gateway.outputs.gateway-port }}
MCP_GATEWAY_API_KEY: ${{ steps.start-mcp-gateway.outputs.gateway-api-key }}
GATEWAY_PID: ${{ steps.start-mcp-gateway.outputs.gateway-pid }}
run: |
bash ${RUNNER_TEMP}/gh-aw/actions/stop_mcp_gateway.sh "$GATEWAY_PID"
- name: Redact secrets in logs
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/redact_secrets.cjs');
await main();
env:
GH_AW_SECRET_NAMES: 'COPILOT_GITHUB_TOKEN,GH_AW_GITHUB_MCP_SERVER_TOKEN,GH_AW_GITHUB_TOKEN,GITHUB_TOKEN'
SECRET_COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
SECRET_GH_AW_GITHUB_MCP_SERVER_TOKEN: ${{ secrets.GH_AW_GITHUB_MCP_SERVER_TOKEN }}
SECRET_GH_AW_GITHUB_TOKEN: ${{ secrets.GH_AW_GITHUB_TOKEN }}
SECRET_GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Append agent step summary
if: always()
run: bash ${RUNNER_TEMP}/gh-aw/actions/append_agent_step_summary.sh
- name: Copy Safe Outputs
if: always()
run: |
mkdir -p /tmp/gh-aw
cp "$GH_AW_SAFE_OUTPUTS" /tmp/gh-aw/safeoutputs.jsonl 2>/dev/null || true
- name: Ingest agent output
id: collect_output
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GH_AW_ALLOWED_DOMAINS: "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,github.com,host.docker.internal,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,ppa.launchpad.net,raw.githubusercontent.com,registry.npmjs.org,s.symcb.com,s.symcd.com,security.ubuntu.com,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com,www.googleapis.com"
GITHUB_SERVER_URL: ${{ github.server_url }}
GITHUB_API_URL: ${{ github.api_url }}
with:
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/collect_ndjson_output.cjs');
await main();
- name: Parse agent logs for step summary
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: /tmp/gh-aw/sandbox/agent/logs/
with:
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/parse_copilot_log.cjs');
await main();
- name: Parse MCP Gateway logs for step summary
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/parse_mcp_gateway_log.cjs');
await main();
- name: Print firewall logs
if: always()
continue-on-error: true
env:
AWF_LOGS_DIR: /tmp/gh-aw/sandbox/firewall/logs
run: |
# Fix permissions on firewall logs so they can be uploaded as artifacts
# AWF runs with sudo, creating files owned by root
sudo chmod -R a+r /tmp/gh-aw/sandbox/firewall/logs 2>/dev/null || true
# Only run awf logs summary if awf command exists (it may not be installed if workflow failed before install step)
if command -v awf &> /dev/null; then
awf logs summary | tee -a "$GITHUB_STEP_SUMMARY"
else
echo 'AWF binary not installed, skipping firewall log summary'
fi
- name: Upload agent artifacts
if: always()
continue-on-error: true
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: agent
path: |
/tmp/gh-aw/aw-prompts/prompt.txt
/tmp/gh-aw/sandbox/agent/logs/
/tmp/gh-aw/redacted-urls.log
/tmp/gh-aw/mcp-logs/
/tmp/gh-aw/sandbox/firewall/logs/
/tmp/gh-aw/agent-stdio.log
/tmp/gh-aw/agent/
/tmp/gh-aw/safeoutputs.jsonl
/tmp/gh-aw/agent_output.json
/tmp/gh-aw/aw-*.patch
if-no-files-found: ignore
# --- Threat Detection (inline) ---
- name: Check if detection needed
id: detection_guard
if: always()
env:
OUTPUT_TYPES: ${{ steps.collect_output.outputs.output_types }}
HAS_PATCH: ${{ steps.collect_output.outputs.has_patch }}
run: |
if [[ -n "$OUTPUT_TYPES" || "$HAS_PATCH" == "true" ]]; then
echo "run_detection=true" >> "$GITHUB_OUTPUT"
echo "Detection will run: output_types=$OUTPUT_TYPES, has_patch=$HAS_PATCH"
else
echo "run_detection=false" >> "$GITHUB_OUTPUT"
echo "Detection skipped: no agent outputs or patches to analyze"
fi
- name: Clear MCP configuration for detection
if: always() && steps.detection_guard.outputs.run_detection == 'true'
run: |
rm -f /tmp/gh-aw/mcp-config/mcp-servers.json
rm -f /home/runner/.copilot/mcp-config.json
rm -f "$GITHUB_WORKSPACE/.gemini/settings.json"
- name: Prepare threat detection files
if: always() && steps.detection_guard.outputs.run_detection == 'true'
run: |
mkdir -p /tmp/gh-aw/threat-detection/aw-prompts
cp /tmp/gh-aw/aw-prompts/prompt.txt /tmp/gh-aw/threat-detection/aw-prompts/prompt.txt 2>/dev/null || true
cp /tmp/gh-aw/agent_output.json /tmp/gh-aw/threat-detection/agent_output.json 2>/dev/null || true
for f in /tmp/gh-aw/aw-*.patch; do
[ -f "$f" ] && cp "$f" /tmp/gh-aw/threat-detection/ 2>/dev/null || true
done
echo "Prepared threat detection files:"
ls -la /tmp/gh-aw/threat-detection/ 2>/dev/null || true
- name: Setup threat detection
if: always() && steps.detection_guard.outputs.run_detection == 'true'
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
WORKFLOW_NAME: "Codeowner Update Agent"
WORKFLOW_DESCRIPTION: "Updates the CODEOWNERS file when a maintainer comments #codeowner on a pull request"
HAS_PATCH: ${{ steps.collect_output.outputs.has_patch }}
with:
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/setup_threat_detection.cjs');
await main();
- name: Ensure threat-detection directory and log
if: always() && steps.detection_guard.outputs.run_detection == 'true'
run: |
mkdir -p /tmp/gh-aw/threat-detection
touch /tmp/gh-aw/threat-detection/detection.log
- name: Execute GitHub Copilot CLI
if: always() && steps.detection_guard.outputs.run_detection == 'true'
id: detection_agentic_execution
# Copilot CLI tool arguments (sorted):
# --allow-tool shell(cat)
# --allow-tool shell(grep)
# --allow-tool shell(head)
# --allow-tool shell(jq)
# --allow-tool shell(ls)
# --allow-tool shell(tail)
# --allow-tool shell(wc)
timeout-minutes: 20
run: |
set -o pipefail
touch /tmp/gh-aw/agent-step-summary.md
# shellcheck disable=SC1003
sudo -E awf --env-all --container-workdir "${GITHUB_WORKSPACE}" --mount "${RUNNER_TEMP}/gh-aw:${RUNNER_TEMP}/gh-aw:ro" --mount "${RUNNER_TEMP}/gh-aw:/host${RUNNER_TEMP}/gh-aw:ro" --allow-domains "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,github.com,host.docker.internal,raw.githubusercontent.com,registry.npmjs.org,telemetry.enterprise.githubcopilot.com" --log-level info --proxy-logs-dir /tmp/gh-aw/sandbox/firewall/logs --enable-host-access --image-tag 0.24.3 --skip-pull --enable-api-proxy \
-- /bin/bash -c '/usr/local/bin/copilot --add-dir /tmp/gh-aw/ --log-level all --log-dir /tmp/gh-aw/sandbox/agent/logs/ --add-dir "${GITHUB_WORKSPACE}" --disable-builtin-mcps --allow-tool '\''shell(cat)'\'' --allow-tool '\''shell(grep)'\'' --allow-tool '\''shell(head)'\'' --allow-tool '\''shell(jq)'\'' --allow-tool '\''shell(ls)'\'' --allow-tool '\''shell(tail)'\'' --allow-tool '\''shell(wc)'\'' --prompt "$(cat /tmp/gh-aw/aw-prompts/prompt.txt)"' 2>&1 | tee -a /tmp/gh-aw/threat-detection/detection.log
env:
COPILOT_AGENT_RUNNER_TYPE: STANDALONE
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
COPILOT_MODEL: ${{ vars.GH_AW_MODEL_DETECTION_COPILOT || '' }}
GH_AW_PHASE: detection
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_VERSION: v0.61.2
GITHUB_API_URL: ${{ github.api_url }}
GITHUB_AW: true
GITHUB_HEAD_REF: ${{ github.head_ref }}
GITHUB_REF_NAME: ${{ github.ref_name }}
GITHUB_SERVER_URL: ${{ github.server_url }}
GITHUB_STEP_SUMMARY: /tmp/gh-aw/agent-step-summary.md
GITHUB_WORKSPACE: ${{ github.workspace }}
GIT_AUTHOR_EMAIL: github-actions[bot]@users.noreply.github.com
GIT_AUTHOR_NAME: github-actions[bot]
GIT_COMMITTER_EMAIL: github-actions[bot]@users.noreply.github.com
GIT_COMMITTER_NAME: github-actions[bot]
XDG_CONFIG_HOME: /home/runner
- name: Parse threat detection results
id: parse_detection_results
if: always() && steps.detection_guard.outputs.run_detection == 'true'
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/parse_threat_detection_results.cjs');
await main();
- name: Upload threat detection log
if: always() && steps.detection_guard.outputs.run_detection == 'true'
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: detection
path: /tmp/gh-aw/threat-detection/detection.log
if-no-files-found: ignore
- name: Set detection conclusion
id: detection_conclusion
if: always()
env:
RUN_DETECTION: ${{ steps.detection_guard.outputs.run_detection }}
DETECTION_SUCCESS: ${{ steps.parse_detection_results.outputs.success }}
run: |
if [[ "$RUN_DETECTION" != "true" ]]; then
echo "conclusion=skipped" >> "$GITHUB_OUTPUT"
echo "success=true" >> "$GITHUB_OUTPUT"
echo "Detection was not needed, marking as skipped"
elif [[ "$DETECTION_SUCCESS" == "true" ]]; then
echo "conclusion=success" >> "$GITHUB_OUTPUT"
echo "success=true" >> "$GITHUB_OUTPUT"
echo "Detection passed successfully"
else
echo "conclusion=failure" >> "$GITHUB_OUTPUT"
echo "success=false" >> "$GITHUB_OUTPUT"
echo "Detection found issues"
fi
conclusion:
needs:
- activation
- agent
- safe_outputs
if: (always()) && ((needs.agent.result != 'skipped') || (needs.activation.outputs.lockdown_check_failed == 'true'))
runs-on: ubuntu-slim
permissions:
contents: write
discussions: write
issues: write
pull-requests: write
concurrency:
group: "gh-aw-conclusion-codeowner-update"
cancel-in-progress: false
outputs:
noop_message: ${{ steps.noop.outputs.noop_message }}
tools_reported: ${{ steps.missing_tool.outputs.tools_reported }}
total_count: ${{ steps.missing_tool.outputs.total_count }}
steps:
- name: Setup Scripts
uses: github/gh-aw-actions/setup@71cfb3cbe2002225f9d5afa180669fff36b86ea2 # v0.61.2
with:
destination: ${{ runner.temp }}/gh-aw/actions
- name: Download agent output artifact
id: download-agent-output
continue-on-error: true
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: agent
path: /tmp/gh-aw/
- name: Setup agent output environment variable
if: steps.download-agent-output.outcome == 'success'
run: |
mkdir -p /tmp/gh-aw/
find "/tmp/gh-aw/" -type f -print
echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/agent_output.json" >> "$GITHUB_ENV"
- name: Process No-Op Messages
id: noop
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_NOOP_MAX: "1"
GH_AW_WORKFLOW_NAME: "Codeowner Update Agent"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/noop.cjs');
await main();
- name: Record Missing Tool
id: missing_tool
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_WORKFLOW_NAME: "Codeowner Update Agent"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/missing_tool.cjs');
await main();
- name: Handle Agent Failure
id: handle_agent_failure
if: always()
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_WORKFLOW_NAME: "Codeowner Update Agent"
GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_WORKFLOW_ID: "codeowner-update"
GH_AW_SECRET_VERIFICATION_RESULT: ${{ needs.activation.outputs.secret_verification_result }}
GH_AW_CHECKOUT_PR_SUCCESS: ${{ needs.agent.outputs.checkout_pr_success }}
GH_AW_INFERENCE_ACCESS_ERROR: ${{ needs.agent.outputs.inference_access_error }}
GH_AW_CODE_PUSH_FAILURE_ERRORS: ${{ needs.safe_outputs.outputs.code_push_failure_errors }}
GH_AW_CODE_PUSH_FAILURE_COUNT: ${{ needs.safe_outputs.outputs.code_push_failure_count }}
GH_AW_LOCKDOWN_CHECK_FAILED: ${{ needs.activation.outputs.lockdown_check_failed }}
GH_AW_GROUP_REPORTS: "false"
GH_AW_FAILURE_REPORT_AS_ISSUE: "true"
GH_AW_TIMEOUT_MINUTES: "20"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/handle_agent_failure.cjs');
await main();
- name: Handle No-Op Message
id: handle_noop_message
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_WORKFLOW_NAME: "Codeowner Update Agent"
GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
GH_AW_AGENT_CONCLUSION: ${{ needs.agent.result }}
GH_AW_NOOP_MESSAGE: ${{ steps.noop.outputs.noop_message }}
GH_AW_NOOP_REPORT_AS_ISSUE: "true"
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/handle_noop_message.cjs');
await main();
- name: Handle Create Pull Request Error
id: handle_create_pr_error
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_WORKFLOW_NAME: "Codeowner Update Agent"
GH_AW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/handle_create_pr_error.cjs');
await main();
pre_activation:
if: ${{ contains(github.event.comment.body, '#codeowner') && github.event.issue.pull_request }}
runs-on: ubuntu-slim
outputs:
activated: ${{ steps.check_membership.outputs.is_team_member == 'true' }}
matched_command: ''
steps:
- name: Setup Scripts
uses: github/gh-aw-actions/setup@71cfb3cbe2002225f9d5afa180669fff36b86ea2 # v0.61.2
with:
destination: ${{ runner.temp }}/gh-aw/actions
- name: Check team membership for workflow
id: check_membership
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_REQUIRED_ROLES: admin,maintainer,write
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/check_membership.cjs');
await main();
safe_outputs:
needs:
- activation
- agent
if: ((!cancelled()) && (needs.agent.result != 'skipped')) && (needs.agent.outputs.detection_success == 'true')
runs-on: ubuntu-slim
permissions:
contents: write
discussions: write
issues: write
pull-requests: write
timeout-minutes: 15
env:
GH_AW_CALLER_WORKFLOW_ID: "${{ github.repository }}/codeowner-update"
GH_AW_ENGINE_ID: "copilot"
GH_AW_WORKFLOW_ID: "codeowner-update"
GH_AW_WORKFLOW_NAME: "Codeowner Update Agent"
outputs:
code_push_failure_count: ${{ steps.process_safe_outputs.outputs.code_push_failure_count }}
code_push_failure_errors: ${{ steps.process_safe_outputs.outputs.code_push_failure_errors }}
comment_id: ${{ steps.process_safe_outputs.outputs.comment_id }}
comment_url: ${{ steps.process_safe_outputs.outputs.comment_url }}
create_discussion_error_count: ${{ steps.process_safe_outputs.outputs.create_discussion_error_count }}
create_discussion_errors: ${{ steps.process_safe_outputs.outputs.create_discussion_errors }}
created_pr_number: ${{ steps.process_safe_outputs.outputs.created_pr_number }}
created_pr_url: ${{ steps.process_safe_outputs.outputs.created_pr_url }}
process_safe_outputs_processed_count: ${{ steps.process_safe_outputs.outputs.processed_count }}
process_safe_outputs_temporary_id_map: ${{ steps.process_safe_outputs.outputs.temporary_id_map }}
steps:
- name: Setup Scripts
uses: github/gh-aw-actions/setup@71cfb3cbe2002225f9d5afa180669fff36b86ea2 # v0.61.2
with:
destination: ${{ runner.temp }}/gh-aw/actions
safe-output-custom-tokens: 'true'
- name: Download agent output artifact
id: download-agent-output
continue-on-error: true
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: agent
path: /tmp/gh-aw/
- name: Setup agent output environment variable
if: steps.download-agent-output.outcome == 'success'
run: |
mkdir -p /tmp/gh-aw/
find "/tmp/gh-aw/" -type f -print
echo "GH_AW_AGENT_OUTPUT=/tmp/gh-aw/agent_output.json" >> "$GITHUB_ENV"
- name: Download patch artifact
continue-on-error: true
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: agent
path: /tmp/gh-aw/
- name: Checkout repository
if: ((!cancelled()) && (needs.agent.result != 'skipped')) && (contains(needs.agent.outputs.output_types, 'create_pull_request'))
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: staged
token: ${{ secrets.GH_AW_CODEOWNER_PR_TOKEN }}
persist-credentials: false
fetch-depth: 1
- name: Configure Git credentials
if: ((!cancelled()) && (needs.agent.result != 'skipped')) && (contains(needs.agent.outputs.output_types, 'create_pull_request'))
env:
REPO_NAME: ${{ github.repository }}
SERVER_URL: ${{ github.server_url }}
GIT_TOKEN: ${{ secrets.GH_AW_CODEOWNER_PR_TOKEN }}
run: |
git config --global user.email "github-actions[bot]@users.noreply.github.com"
git config --global user.name "github-actions[bot]"
git config --global am.keepcr true
# Re-authenticate git with GitHub token
SERVER_URL_STRIPPED="${SERVER_URL#https://}"
git remote set-url origin "https://x-access-token:${GIT_TOKEN}@${SERVER_URL_STRIPPED}/${REPO_NAME}.git"
echo "Git configured with standard GitHub Actions identity"
- name: Configure GH_HOST for enterprise compatibility
shell: bash
run: |
# Derive GH_HOST from GITHUB_SERVER_URL so the gh CLI targets the correct
# GitHub instance (GHES/GHEC). On github.com this is a harmless no-op.
GH_HOST="${GITHUB_SERVER_URL#https://}"
GH_HOST="${GH_HOST#http://}"
echo "GH_HOST=${GH_HOST}" >> "$GITHUB_ENV"
- name: Process Safe Outputs
id: process_safe_outputs
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_AGENT_OUTPUT: ${{ env.GH_AW_AGENT_OUTPUT }}
GH_AW_ALLOWED_DOMAINS: "api.business.githubcopilot.com,api.enterprise.githubcopilot.com,api.github.com,api.githubcopilot.com,api.individual.githubcopilot.com,api.snapcraft.io,archive.ubuntu.com,azure.archive.ubuntu.com,crl.geotrust.com,crl.globalsign.com,crl.identrust.com,crl.sectigo.com,crl.thawte.com,crl.usertrust.com,crl.verisign.com,crl3.digicert.com,crl4.digicert.com,crls.ssl.com,github.com,host.docker.internal,json-schema.org,json.schemastore.org,keyserver.ubuntu.com,ocsp.digicert.com,ocsp.geotrust.com,ocsp.globalsign.com,ocsp.identrust.com,ocsp.sectigo.com,ocsp.ssl.com,ocsp.thawte.com,ocsp.usertrust.com,ocsp.verisign.com,packagecloud.io,packages.cloud.google.com,packages.microsoft.com,ppa.launchpad.net,raw.githubusercontent.com,registry.npmjs.org,s.symcb.com,s.symcd.com,security.ubuntu.com,telemetry.enterprise.githubcopilot.com,ts-crl.ws.symantec.com,ts-ocsp.ws.symantec.com,www.googleapis.com"
GITHUB_SERVER_URL: ${{ github.server_url }}
GITHUB_API_URL: ${{ github.api_url }}
GH_AW_SAFE_OUTPUTS_HANDLER_CONFIG: "{\"add_comment\":{\"max\":1},\"create_pull_request\":{\"base_branch\":\"staged\",\"draft\":false,\"github-token\":\"${{ secrets.GH_AW_CODEOWNER_PR_TOKEN }}\",\"max\":1,\"max_patch_size\":1024,\"protected_files\":[\"package.json\",\"bun.lockb\",\"bunfig.toml\",\"deno.json\",\"deno.jsonc\",\"deno.lock\",\"global.json\",\"NuGet.Config\",\"Directory.Packages.props\",\"mix.exs\",\"mix.lock\",\"go.mod\",\"go.sum\",\"stack.yaml\",\"stack.yaml.lock\",\"pom.xml\",\"build.gradle\",\"build.gradle.kts\",\"settings.gradle\",\"settings.gradle.kts\",\"gradle.properties\",\"package-lock.json\",\"yarn.lock\",\"pnpm-lock.yaml\",\"npm-shrinkwrap.json\",\"requirements.txt\",\"Pipfile\",\"Pipfile.lock\",\"pyproject.toml\",\"setup.py\",\"setup.cfg\",\"Gemfile\",\"Gemfile.lock\",\"uv.lock\",\"AGENTS.md\"],\"protected_path_prefixes\":[\".github/\",\".agents/\"],\"title_prefix\":\"[codeowner] \"},\"missing_data\":{},\"missing_tool\":{},\"noop\":{\"max\":1,\"report-as-issue\":\"true\"}}"
GH_AW_CI_TRIGGER_TOKEN: ${{ secrets.GH_AW_CI_TRIGGER_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GH_AW_CODEOWNER_PR_TOKEN }}
with:
github-token: ${{ secrets.GH_AW_GITHUB_TOKEN || secrets.GITHUB_TOKEN }}
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/safe_output_handler_manager.cjs');
await main();
- name: Upload Safe Output Items Manifest
if: always()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: safe-output-items
path: /tmp/safe-output-items.jsonl
if-no-files-found: warn
================================================
FILE: .github/workflows/codeowner-update.md
================================================
---
description: 'Updates the CODEOWNERS file when a maintainer comments #codeowner on a pull request'
on:
issue_comment:
types: [created]
if: ${{ contains(github.event.comment.body, '#codeowner') && github.event.issue.pull_request }}
permissions:
contents: read
pull-requests: read
issues: read
tools:
github:
toolsets: [default]
safe-outputs:
create-pull-request:
base-branch: staged
title-prefix: "[codeowner] "
draft: false
github-token: ${{ secrets.GH_AW_CODEOWNER_PR_TOKEN }}
add-comment:
max: 1
noop:
---
# Codeowner Update Agent
You are a CODEOWNERS file updater for the **${{ github.repository }}** repository. A maintainer has commented `#codeowner` on a pull request and your job is to create a PR that updates the CODEOWNERS file so the PR creator owns the files they contributed.
## Context
- **Triggering PR:** #${{ github.event.issue.number }}
- **Comment author:** @${{ github.actor }}
- **Comment body:** "${{ steps.sanitized.outputs.text }}"
## Instructions
### 1. Validate the Trigger
- Confirm the comment body contains `#codeowner`.
- If the check fails, exit with a `noop`.
### 2. Gather PR Information
- Use the GitHub tools to get details for pull request #${{ github.event.issue.number }}.
- Record the **PR creator's username** (the user who opened the PR — `user.login` from the PR object).
- Retrieve the full list of files changed in the PR.
### 3. Filter Relevant Files
Only include files whose paths start with one of these directories:
- `agents/`
- `skills/`
- `instructions/`
- `workflows/`
- `hooks/`
- `plugins/`
If **no files** match these directories, exit with a `noop` message: "No files in agents/, skills/, instructions/, workflows/, hooks/, or plugins/ directories were found in this PR."
### 4. Read the Current CODEOWNERS File
Read the `CODEOWNERS` file from the root of the repository on the `staged` branch. Parse its existing entries so you can avoid creating duplicates.
### 5. Build the Updated CODEOWNERS File
For each matched file path from the PR:
- Construct a CODEOWNERS entry: `/<file-path> @<pr-creator-username>`
- For files inside `skills/`, `hooks/`, or `plugins/` (which are directory-based resources), use the **directory pattern** instead of individual file paths. For example, if the PR touches `skills/my-skill/SKILL.md` and `skills/my-skill/template.txt`, add a single entry: `/skills/my-skill/ @<pr-creator-username>`
- If an entry for that exact path already exists in CODEOWNERS, **replace** the owner with the PR creator rather than adding a duplicate line.
Insert the new entries in the CODEOWNERS file grouped under a comment block:
```
# Added via #codeowner from PR #<pr-number>
/<path> @<username>
```
Place this block at the end of the file, before any trailing newline.
### 6. Create the Pull Request
Use `create-pull-request` to open a PR with the updated `CODEOWNERS` file. The PR should:
- **Title:** `Update CODEOWNERS for PR #${{ github.event.issue.number }}`
- **Body:** A summary listing every new or updated CODEOWNERS entry and the PR creator who was assigned ownership.
- **Only modify the `CODEOWNERS` file** — do not touch any other files.
### 7. Post a Confirmation Comment
After successfully creating the PR, use `add-comment` on the triggering PR to let the team know. Include a link to the newly created CODEOWNERS PR.
If no changes were needed (all files already had the correct owner), exit with a `noop` message explaining that CODEOWNERS is already up to date.
================================================
FILE: .github/workflows/codespell.yml
================================================
name: Check Spelling
on:
push:
branches: [staged]
pull_request:
branches: [staged]
permissions:
contents: read
jobs:
codespell:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check spelling with codespell
uses: codespell-project/actions-codespell@v2
with:
check_filenames: true
check_hidden: false
================================================
FILE: .github/workflows/contributors.yml
================================================
name: Contributors
on:
schedule:
- cron: '0 3 * * 0' # Weekly on Sundays at 3am UTC
workflow_dispatch: # Manual trigger
jobs:
contributors:
runs-on: ubuntu-latest
timeout-minutes: 5
permissions:
contents: write
pull-requests: write
steps:
- name: Checkout
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Extract Node version from package.json
id: node-version
run: |
NODE_VERSION=$(jq -r '.engines.node // "22.x"' package.json)
echo "version=${NODE_VERSION}" >> "$GITHUB_OUTPUT"
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: ${{ steps.node-version.outputs.version }}
- name: Install dependencies
run: npm ci
- name: Check contributors
id: contributors_check
run: npm run contributors:check
env:
PRIVATE_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true
- name: Generate contributors report
if: steps.contributors_check.outcome == 'failure'
run: |
mkdir -p reports
npm run contributors:report
test -f reports/contributor-report.md && cat reports/contributor-report.md >> "$GITHUB_STEP_SUMMARY"
env:
PRIVATE_TOKEN: ${{ secrets.GITHUB_TOKEN }}
continue-on-error: true
- name: Regenerate README
run: npm start
- name: Check for changes
id: verify-changed-files
run: |
if git diff --exit-code > /dev/null; then
echo "changed=false" >> $GITHUB_OUTPUT
else
echo "changed=true" >> $GITHUB_OUTPUT
fi
- name: Commit contributors
if: steps.verify-changed-files.outputs.changed == 'true'
run: |
git config --local user.email "action@github.com"
git config --local user.name "GitHub Action"
git add .
git commit -m "docs: update contributors" -a || exit 0
- name: Create Pull Request
if: steps.verify-changed-files.outputs.changed == 'true'
uses: peter-evans/create-pull-request@v7
with:
token: ${{ secrets.GITHUB_TOKEN }}
commit-message: "docs: update contributors"
title: "Update Contributors"
body: |
Auto-generated PR to update contributors.
This PR was automatically created by the contributors workflow.
branch: update-contributors
delete-branch: true
================================================
FILE: .github/workflows/copilot-setup-steps.yml
================================================
name: "Copilot Setup Steps"
# This workflow configures the environment for GitHub Copilot Agent with gh-aw MCP server
on:
workflow_dispatch:
push:
paths:
- .github/workflows/copilot-setup-steps.yml
jobs:
# The job MUST be called 'copilot-setup-steps' to be recognized by GitHub Copilot Agent
copilot-setup-steps:
runs-on: ubuntu-latest
# Set minimal permissions for setup steps
# Copilot Agent receives its own token with appropriate permissions
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v6
- name: Install gh-aw extension
uses: github/gh-aw/actions/setup-cli@32b3a711a9ee97d38e3989c90af0385aff0066a7 # v0.57.2
with:
version: v0.57.2
================================================
FILE: .github/workflows/deploy-website.yml
================================================
# GitHub Pages deployment workflow
# Builds the Astro website and deploys to GitHub Pages
name: Deploy Website to GitHub Pages
on:
# Triggered manually from the Actions tab, or dispatched by the Publish to main workflow.
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Build job
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # Full history needed for git-based last updated dates
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "20"
cache: "npm"
- name: Install root dependencies
run: npm ci
- name: Install website dependencies
run: npm ci
working-directory: ./website
- name: Generate website data
run: npm run website:data
- name: Build Astro site
run: npm run build
working-directory: ./website
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: "./website/dist"
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
================================================
FILE: .github/workflows/duplicate-resource-detector.lock.yml
================================================
# ___ _ _
# / _ \ | | (_)
# | |_| | __ _ ___ _ __ | |_ _ ___
# | _ |/ _` |/ _ \ '_ \| __| |/ __|
# | | | | (_| | __/ | | | |_| | (__
# \_| |_/\__, |\___|_| |_|\__|_|\___|
# __/ |
# _ _ |___/
# | | | | / _| |
# | | | | ___ _ __ _ __| |_| | _____ ____
# | |/\| |/ _ \ '__| |/ /| _| |/ _ \ \ /\ / / ___|
# \ /\ / (_) | | | | ( | | | | (_) \ V V /\__ \
# \/ \/ \___/|_| |_|\_\|_| |_|\___/ \_/\_/ |___/
#
# This file was automatically generated by gh-aw (v0.61.2). DO NOT EDIT.
#
# To update this file, edit the corresponding .md file and run:
# gh aw compile
# Not all edits will cause changes to this file.
#
# For more information: https://github.github.com/gh-aw/introduction/overview/
#
# Weekly scan of agents, instructions, and skills to identify potential duplicate resources and report them for review
#
# gh-aw-metadata: {"schema_version":"v2","frontmatter_hash":"ff58c3ff9cf9181e74e682ba6117a448bb9a2a9e52c012dc53d86d7697f3b565","compiler_version":"v0.61.2","strict":true}
name: "Duplicate Resource Detector"
"on":
schedule:
- cron: "57 1 * * 4"
# Friendly format: weekly (scattered)
workflow_dispatch:
permissions: {}
concurrency:
group: "gh-aw-${{ github.workflow }}"
run-name: "Duplicate Resource Detector"
jobs:
activation:
runs-on: ubuntu-slim
permissions:
contents: read
outputs:
comment_id: ""
comment_repo: ""
lockdown_check_failed: ${{ steps.generate_aw_info.outputs.lockdown_check_failed == 'true' }}
model: ${{ steps.generate_aw_info.outputs.model }}
secret_verification_result: ${{ steps.validate-secret.outputs.verification_result }}
steps:
- name: Setup Scripts
uses: github/gh-aw-actions/setup@71cfb3cbe2002225f9d5afa180669fff36b86ea2 # v0.61.2
with:
destination: ${{ runner.temp }}/gh-aw/actions
- name: Generate agentic run info
id: generate_aw_info
env:
GH_AW_INFO_ENGINE_ID: "copilot"
GH_AW_INFO_ENGINE_NAME: "GitHub Copilot CLI"
GH_AW_INFO_MODEL: ${{ vars.GH_AW_MODEL_AGENT_COPILOT || '' }}
GH_AW_INFO_VERSION: ""
GH_AW_INFO_AGENT_VERSION: "latest"
GH_AW_INFO_CLI_VERSION: "v0.61.2"
GH_AW_INFO_WORKFLOW_NAME: "Duplicate Resource Detector"
GH_AW_INFO_EXPERIMENTAL: "false"
GH_AW_INFO_SUPPORTS_TOOLS_ALLOWLIST: "true"
GH_AW_INFO_STAGED: "false"
GH_AW_INFO_ALLOWED_DOMAINS: '["defaults"]'
GH_AW_INFO_FIREWALL_ENABLED: "true"
GH_AW_INFO_AWF_VERSION: "v0.24.3"
GH_AW_INFO_AWMG_VERSION: ""
GH_AW_INFO_FIREWALL_TYPE: "squid"
GH_AW_COMPILED_STRICT: "true"
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
with:
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/generate_aw_info.cjs');
await main(core, context);
- name: Validate COPILOT_GITHUB_TOKEN secret
id: validate-secret
run: ${RUNNER_TEMP}/gh-aw/actions/validate_multi_secret.sh COPILOT_GITHUB_TOKEN 'GitHub Copilot CLI' https://github.github.com/gh-aw/reference/engines/#github-copilot-default
env:
COPILOT_GITHUB_TOKEN: ${{ secrets.COPILOT_GITHUB_TOKEN }}
- name: Checkout .github and .agents folders
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
sparse-checkout: |
.github
.agents
sparse-checkout-cone-mode: true
fetch-depth: 1
- name: Check workflow file timestamps
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_WORKFLOW_FILE: "duplicate-resource-detector.lock.yml"
with:
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/check_workflow_timestamp_api.cjs');
await main();
- name: Create prompt with built-in context
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_SAFE_OUTPUTS: ${{ env.GH_AW_SAFE_OUTPUTS }}
GH_AW_GITHUB_ACTOR: ${{ github.actor }}
GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }}
GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }}
GH_AW_GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}
GH_AW_GITHUB_RUN_ID: ${{ github.run_id }}
GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }}
run: |
bash ${RUNNER_TEMP}/gh-aw/actions/create_prompt_first.sh
{
cat << 'GH_AW_PROMPT_EOF'
<system>
GH_AW_PROMPT_EOF
cat "${RUNNER_TEMP}/gh-aw/prompts/xpia.md"
cat "${RUNNER_TEMP}/gh-aw/prompts/temp_folder_prompt.md"
cat "${RUNNER_TEMP}/gh-aw/prompts/markdown.md"
cat "${RUNNER_TEMP}/gh-aw/prompts/safe_outputs_prompt.md"
cat << 'GH_AW_PROMPT_EOF'
<safe-output-tools>
Tools: create_issue, missing_tool, missing_data, noop
</safe-output-tools>
<github-context>
The following GitHub context information is available for this workflow:
{{#if __GH_AW_GITHUB_ACTOR__ }}
- **actor**: __GH_AW_GITHUB_ACTOR__
{{/if}}
{{#if __GH_AW_GITHUB_REPOSITORY__ }}
- **repository**: __GH_AW_GITHUB_REPOSITORY__
{{/if}}
{{#if __GH_AW_GITHUB_WORKSPACE__ }}
- **workspace**: __GH_AW_GITHUB_WORKSPACE__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_ISSUE_NUMBER__ }}
- **issue-number**: #__GH_AW_GITHUB_EVENT_ISSUE_NUMBER__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER__ }}
- **discussion-number**: #__GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER__ }}
- **pull-request-number**: #__GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER__
{{/if}}
{{#if __GH_AW_GITHUB_EVENT_COMMENT_ID__ }}
- **comment-id**: __GH_AW_GITHUB_EVENT_COMMENT_ID__
{{/if}}
{{#if __GH_AW_GITHUB_RUN_ID__ }}
- **workflow-run-id**: __GH_AW_GITHUB_RUN_ID__
{{/if}}
</github-context>
GH_AW_PROMPT_EOF
cat "${RUNNER_TEMP}/gh-aw/prompts/github_mcp_tools_with_safeoutputs_prompt.md"
cat << 'GH_AW_PROMPT_EOF'
</system>
GH_AW_PROMPT_EOF
cat << 'GH_AW_PROMPT_EOF'
{{#runtime-import .github/workflows/duplicate-resource-detector.md}}
GH_AW_PROMPT_EOF
} > "$GH_AW_PROMPT"
- name: Interpolate variables and render templates
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
with:
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const { main } = require('${{ runner.temp }}/gh-aw/actions/interpolate_prompt.cjs');
await main();
- name: Substitute placeholders
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
GH_AW_GITHUB_ACTOR: ${{ github.actor }}
GH_AW_GITHUB_EVENT_COMMENT_ID: ${{ github.event.comment.id }}
GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: ${{ github.event.discussion.number }}
GH_AW_GITHUB_EVENT_ISSUE_NUMBER: ${{ github.event.issue.number }}
GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: ${{ github.event.pull_request.number }}
GH_AW_GITHUB_REPOSITORY: ${{ github.repository }}
GH_AW_GITHUB_RUN_ID: ${{ github.run_id }}
GH_AW_GITHUB_WORKSPACE: ${{ github.workspace }}
with:
script: |
const { setupGlobals } = require('${{ runner.temp }}/gh-aw/actions/setup_globals.cjs');
setupGlobals(core, github, context, exec, io);
const substitutePlaceholders = require('${{ runner.temp }}/gh-aw/actions/substitute_placeholders.cjs');
// Call the substitution function
return await substitutePlaceholders({
file: process.env.GH_AW_PROMPT,
substitutions: {
GH_AW_GITHUB_ACTOR: process.env.GH_AW_GITHUB_ACTOR,
GH_AW_GITHUB_EVENT_COMMENT_ID: process.env.GH_AW_GITHUB_EVENT_COMMENT_ID,
GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER: process.env.GH_AW_GITHUB_EVENT_DISCUSSION_NUMBER,
GH_AW_GITHUB_EVENT_ISSUE_NUMBER: process.env.GH_AW_GITHUB_EVENT_ISSUE_NUMBER,
GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER: process.env.GH_AW_GITHUB_EVENT_PULL_REQUEST_NUMBER,
GH_AW_GITHUB_REPOSITORY: process.env.GH_AW_GITHUB_REPOSITORY,
GH_AW_GITHUB_RUN_ID: process.env.GH_AW_GITHUB_RUN_ID,
GH_AW_GITHUB_WORKSPACE: process.env.GH_AW_GITHUB_WORKSPACE
}
});
- name: Validate prompt placeholders
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
run: bash ${RUNNER_TEMP}/gh-aw/actions/validate_prompt_placeholders.sh
- name: Print prompt
env:
GH_AW_PROMPT: /tmp/gh-aw/aw-prompts/prompt.txt
run: bash ${RUNNER_TEMP}/gh-aw/actions/print_prompt_summary.sh
- name: Upload activation artifact
if: success()
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: activation
path: |
/tmp/gh-aw/aw_info.json
/tmp/gh-aw/aw-prompts/prompt.txt
retention-days: 1
agent:
needs: activation
runs-on: ubuntu-latest
perm
gitextract_yaf3ro_2/
├── .all-contributorsrc
├── .codespellrc
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── agents/
│ │ └── agentic-workflows.agent.md
│ ├── aw/
│ │ └── actions-lock.json
│ ├── copilot-instructions.md
│ ├── plugin/
│ │ └── marketplace.json
│ ├── pull_request_template.md
│ └── workflows/
│ ├── check-line-endings.yml
│ ├── check-plugin-structure.yml
│ ├── check-pr-target.yml
│ ├── codeowner-update.lock.yml
│ ├── codeowner-update.md
│ ├── codespell.yml
│ ├── contributors.yml
│ ├── copilot-setup-steps.yml
│ ├── deploy-website.yml
│ ├── duplicate-resource-detector.lock.yml
│ ├── duplicate-resource-detector.md
│ ├── learning-hub-updater.lock.yml
│ ├── learning-hub-updater.md
│ ├── pr-duplicate-check.lock.yml
│ ├── pr-duplicate-check.md
│ ├── publish.yml
│ ├── resource-staleness-report.lock.yml
│ ├── resource-staleness-report.md
│ ├── traffic-reporting.yml
│ ├── validate-agentic-workflows-pr.yml
│ ├── validate-readme.yml
│ └── webhook-caller.yml
├── .gitignore
├── .schemas/
│ ├── collection.schema.json
│ ├── cookbook.schema.json
│ └── tools.schema.json
├── .vscode/
│ ├── extensions.json
│ ├── mcp.json
│ ├── settings.json
│ └── tasks.json
├── AGENTS.md
├── CODEOWNERS
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── SECURITY.md
├── SUPPORT.md
├── agents/
│ ├── 4.1-Beast.agent.md
│ ├── CSharpExpert.agent.md
│ ├── Thinking-Beast-Mode.agent.md
│ ├── Ultimate-Transparent-Thinking-Beast-Mode.agent.md
│ ├── WinFormsExpert.agent.md
│ ├── accessibility.agent.md
│ ├── address-comments.agent.md
│ ├── adr-generator.agent.md
│ ├── aem-frontend-specialist.agent.md
│ ├── agent-governance-reviewer.agent.md
│ ├── amplitude-experiment-implementation.agent.md
│ ├── api-architect.agent.md
│ ├── apify-integration-expert.agent.md
│ ├── arch-linux-expert.agent.md
│ ├── arch.agent.md
│ ├── arm-migration.agent.md
│ ├── atlassian-requirements-to-jira.agent.md
│ ├── azure-iac-exporter.agent.md
│ ├── azure-iac-generator.agent.md
│ ├── azure-logic-apps-expert.agent.md
│ ├── azure-principal-architect.agent.md
│ ├── azure-saas-architect.agent.md
│ ├── azure-verified-modules-bicep.agent.md
│ ├── azure-verified-modules-terraform.agent.md
│ ├── bicep-implement.agent.md
│ ├── bicep-plan.agent.md
│ ├── blueprint-mode.agent.md
│ ├── cast-imaging-impact-analysis.agent.md
│ ├── cast-imaging-software-discovery.agent.md
│ ├── cast-imaging-structural-quality-advisor.agent.md
│ ├── centos-linux-expert.agent.md
│ ├── clojure-interactive-programming.agent.md
│ ├── code-tour.agent.md
│ ├── comet-opik.agent.md
│ ├── context-architect.agent.md
│ ├── context7.agent.md
│ ├── critical-thinking.agent.md
│ ├── csharp-dotnet-janitor.agent.md
│ ├── csharp-mcp-expert.agent.md
│ ├── custom-agent-foundry.agent.md
│ ├── debian-linux-expert.agent.md
│ ├── debug.agent.md
│ ├── declarative-agents-architect.agent.md
│ ├── defender-scout-kql.agent.md
│ ├── demonstrate-understanding.agent.md
│ ├── devils-advocate.agent.md
│ ├── devops-expert.agent.md
│ ├── diffblue-cover.agent.md
│ ├── dotnet-maui.agent.md
│ ├── dotnet-upgrade.agent.md
│ ├── doublecheck.agent.md
│ ├── droid.agent.md
│ ├── drupal-expert.agent.md
│ ├── dynatrace-expert.agent.md
│ ├── elasticsearch-observability.agent.md
│ ├── electron-angular-native.agent.md
│ ├── expert-cpp-software-engineer.agent.md
│ ├── expert-dotnet-software-engineer.agent.md
│ ├── expert-nextjs-developer.agent.md
│ ├── expert-react-frontend-engineer.agent.md
│ ├── fedora-linux-expert.agent.md
│ ├── gem-browser-tester.agent.md
│ ├── gem-devops.agent.md
│ ├── gem-documentation-writer.agent.md
│ ├── gem-implementer.agent.md
│ ├── gem-orchestrator.agent.md
│ ├── gem-planner.agent.md
│ ├── gem-researcher.agent.md
│ ├── gem-reviewer.agent.md
│ ├── gilfoyle.agent.md
│ ├── github-actions-expert.agent.md
│ ├── go-mcp-expert.agent.md
│ ├── gpt-5-beast-mode.agent.md
│ ├── hlbpa.agent.md
│ ├── implementation-plan.agent.md
│ ├── insiders-a11y-tracker.agent.md
│ ├── janitor.agent.md
│ ├── java-mcp-expert.agent.md
│ ├── jfrog-sec.agent.md
│ ├── kotlin-mcp-expert.agent.md
│ ├── kusto-assistant.agent.md
│ ├── laravel-expert-agent.agent.md
│ ├── launchdarkly-flag-cleanup.agent.md
│ ├── lingodotdev-i18n.agent.md
│ ├── markdown-accessibility-assistant.agent.md
│ ├── mcp-m365-agent-expert.agent.md
│ ├── mentor.agent.md
│ ├── mentoring-juniors.agent.md
│ ├── meta-agentic-project-scaffold.agent.md
│ ├── microsoft-study-mode.agent.md
│ ├── microsoft_learn_contributor.agent.md
│ ├── modernization.agent.md
│ ├── monday-bug-fixer.agent.md
│ ├── mongodb-performance-advisor.agent.md
│ ├── ms-sql-dba.agent.md
│ ├── neo4j-docker-client-generator.agent.md
│ ├── neon-migration-specialist.agent.md
│ ├── neon-optimization-analyzer.agent.md
│ ├── nuxt-expert.agent.md
│ ├── octopus-deploy-release-notes-mcp.agent.md
│ ├── one-shot-feature-issue-planner.agent.md
│ ├── openapi-to-application.agent.md
│ ├── oracle-to-postgres-migration-expert.agent.md
│ ├── pagerduty-incident-responder.agent.md
│ ├── php-mcp-expert.agent.md
│ ├── pimcore-expert.agent.md
│ ├── plan.agent.md
│ ├── planner.agent.md
│ ├── platform-sre-kubernetes.agent.md
│ ├── playwright-tester.agent.md
│ ├── polyglot-test-builder.agent.md
│ ├── polyglot-test-fixer.agent.md
│ ├── polyglot-test-generator.agent.md
│ ├── polyglot-test-implementer.agent.md
│ ├── polyglot-test-linter.agent.md
│ ├── polyglot-test-planner.agent.md
│ ├── polyglot-test-researcher.agent.md
│ ├── polyglot-test-tester.agent.md
│ ├── postgresql-dba.agent.md
│ ├── power-bi-data-modeling-expert.agent.md
│ ├── power-bi-dax-expert.agent.md
│ ├── power-bi-performance-expert.agent.md
│ ├── power-bi-visualization-expert.agent.md
│ ├── power-platform-expert.agent.md
│ ├── power-platform-mcp-integration-expert.agent.md
│ ├── prd.agent.md
│ ├── principal-software-engineer.agent.md
│ ├── prompt-builder.agent.md
│ ├── prompt-engineer.agent.md
│ ├── python-mcp-expert.agent.md
│ ├── python-notebook-sample-builder.agent.md
│ ├── qa-subagent.agent.md
│ ├── reepl-linkedin.agent.md
│ ├── refine-issue.agent.md
│ ├── repo-architect.agent.md
│ ├── research-technical-spike.agent.md
│ ├── ruby-mcp-expert.agent.md
│ ├── rug-orchestrator.agent.md
│ ├── rust-gpt-4.1-beast-mode.agent.md
│ ├── rust-mcp-expert.agent.md
│ ├── salesforce-apex-triggers.agent.md
│ ├── salesforce-aura-lwc.agent.md
│ ├── salesforce-expert.agent.md
│ ├── salesforce-flow.agent.md
│ ├── salesforce-visualforce.agent.md
│ ├── scientific-paper-research.agent.md
│ ├── se-gitops-ci-specialist.agent.md
│ ├── se-product-manager-advisor.agent.md
│ ├── se-responsible-ai-code.agent.md
│ ├── se-security-reviewer.agent.md
│ ├── se-system-architecture-reviewer.agent.md
│ ├── se-technical-writer.agent.md
│ ├── se-ux-ui-designer.agent.md
│ ├── search-ai-optimization-expert.agent.md
│ ├── shopify-expert.agent.md
│ ├── simple-app-idea-generator.agent.md
│ ├── software-engineer-agent-v1.agent.md
│ ├── specification.agent.md
│ ├── stackhawk-security-onboarding.agent.md
│ ├── swe-subagent.agent.md
│ ├── swift-mcp-expert.agent.md
│ ├── task-planner.agent.md
│ ├── task-researcher.agent.md
│ ├── tdd-green.agent.md
│ ├── tdd-red.agent.md
│ ├── tdd-refactor.agent.md
│ ├── tech-debt-remediation-plan.agent.md
│ ├── technical-content-evaluator.agent.md
│ ├── terraform-azure-implement.agent.md
│ ├── terraform-azure-planning.agent.md
│ ├── terraform-iac-reviewer.agent.md
│ ├── terraform.agent.md
│ ├── terratest-module-testing.agent.md
│ ├── typescript-mcp-expert.agent.md
│ ├── voidbeast-gpt41enhanced.agent.md
│ ├── vuejs-expert.agent.md
│ ├── wg-code-alchemist.agent.md
│ ├── wg-code-sentinel.agent.md
│ └── winui3-expert.agent.md
├── context7.json
├── cookbook/
│ ├── README.md
│ ├── cookbook.yml
│ └── copilot-sdk/
│ ├── README.md
│ ├── dotnet/
│ │ ├── README.md
│ │ ├── accessibility-report.md
│ │ ├── error-handling.md
│ │ ├── managing-local-files.md
│ │ ├── multiple-sessions.md
│ │ ├── persisting-sessions.md
│ │ ├── pr-visualization.md
│ │ ├── ralph-loop.md
│ │ └── recipe/
│ │ ├── README.md
│ │ ├── accessibility-report.cs
│ │ ├── error-handling.cs
│ │ ├── managing-local-files.cs
│ │ ├── multiple-sessions.cs
│ │ ├── persisting-sessions.cs
│ │ ├── pr-visualization.cs
│ │ └── ralph-loop.cs
│ ├── go/
│ │ ├── README.md
│ │ ├── accessibility-report.md
│ │ ├── error-handling.md
│ │ ├── managing-local-files.md
│ │ ├── multiple-sessions.md
│ │ ├── persisting-sessions.md
│ │ ├── pr-visualization.md
│ │ ├── ralph-loop.md
│ │ └── recipe/
│ │ ├── README.md
│ │ ├── accessibility-report.go
│ │ ├── error-handling.go
│ │ ├── managing-local-files.go
│ │ ├── multiple-sessions.go
│ │ ├── persisting-sessions.go
│ │ ├── pr-visualization.go
│ │ └── ralph-loop.go
│ ├── go.sum
│ ├── nodejs/
│ │ ├── README.md
│ │ ├── accessibility-report.md
│ │ ├── error-handling.md
│ │ ├── managing-local-files.md
│ │ ├── multiple-sessions.md
│ │ ├── persisting-sessions.md
│ │ ├── pr-visualization.md
│ │ ├── ralph-loop.md
│ │ └── recipe/
│ │ ├── README.md
│ │ ├── accessibility-report.ts
│ │ ├── error-handling.ts
│ │ ├── managing-local-files.ts
│ │ ├── multiple-sessions.ts
│ │ ├── package.json
│ │ ├── persisting-sessions.ts
│ │ ├── pr-visualization.ts
│ │ └── ralph-loop.ts
│ └── python/
│ ├── README.md
│ ├── accessibility-report.md
│ ├── error-handling.md
│ ├── managing-local-files.md
│ ├── multiple-sessions.md
│ ├── persisting-sessions.md
│ ├── pr-visualization.md
│ ├── ralph-loop.md
│ └── recipe/
│ ├── README.md
│ ├── accessibility_report.py
│ ├── error_handling.py
│ ├── managing_local_files.py
│ ├── multiple_sessions.py
│ ├── persisting_sessions.py
│ ├── pr_visualization.py
│ ├── ralph_loop.py
│ └── requirements.txt
├── docs/
│ ├── .gitkeep
│ ├── README.agents.md
│ ├── README.hooks.md
│ ├── README.instructions.md
│ ├── README.plugins.md
│ ├── README.skills.md
│ └── README.workflows.md
├── eng/
│ ├── README.md
│ ├── add-missing-contributors.mjs
│ ├── clean-materialized-plugins.mjs
│ ├── constants.mjs
│ ├── contributor-report.mjs
│ ├── create-plugin.mjs
│ ├── create-skill.mjs
│ ├── generate-marketplace.mjs
│ ├── generate-website-data.mjs
│ ├── materialize-plugins.mjs
│ ├── migrate-prompts-to-skills.mjs
│ ├── update-plugin-commands-to-skills.mjs
│ ├── update-readme.mjs
│ ├── utils/
│ │ ├── git-dates.mjs
│ │ └── graceful-shutdown.mjs
│ ├── validate-plugins.mjs
│ ├── validate-skills.mjs
│ └── yaml-parser.mjs
├── hooks/
│ ├── dependency-license-checker/
│ │ ├── README.md
│ │ ├── check-licenses.sh
│ │ └── hooks.json
│ ├── governance-audit/
│ │ ├── README.md
│ │ ├── audit-prompt.sh
│ │ ├── audit-session-end.sh
│ │ ├── audit-session-start.sh
│ │ └── hooks.json
│ ├── secrets-scanner/
│ │ ├── README.md
│ │ ├── hooks.json
│ │ └── scan-secrets.sh
│ ├── session-auto-commit/
│ │ ├── README.md
│ │ ├── auto-commit.sh
│ │ └── hooks.json
│ ├── session-logger/
│ │ ├── README.md
│ │ ├── hooks.json
│ │ ├── log-prompt.sh
│ │ ├── log-session-end.sh
│ │ └── log-session-start.sh
│ └── tool-guardian/
│ ├── README.md
│ ├── guard-tool.sh
│ └── hooks.json
├── instructions/
│ ├── a11y.instructions.md
│ ├── agent-safety.instructions.md
│ ├── agent-skills.instructions.md
│ ├── agents.instructions.md
│ ├── ai-prompt-engineering-safety-best-practices.instructions.md
│ ├── ansible.instructions.md
│ ├── apex.instructions.md
│ ├── arch-linux.instructions.md
│ ├── aspnet-rest-apis.instructions.md
│ ├── astro.instructions.md
│ ├── aws-appsync.instructions.md
│ ├── azure-devops-pipelines.instructions.md
│ ├── azure-functions-typescript.instructions.md
│ ├── azure-logic-apps-power-automate.instructions.md
│ ├── azure-verified-modules-bicep.instructions.md
│ ├── azure-verified-modules-terraform.instructions.md
│ ├── bicep-code-best-practices.instructions.md
│ ├── blazor.instructions.md
│ ├── centos-linux.instructions.md
│ ├── clojure.instructions.md
│ ├── cmake-vcpkg.instructions.md
│ ├── code-review-generic.instructions.md
│ ├── codexer.instructions.md
│ ├── coldfusion-cfc.instructions.md
│ ├── coldfusion-cfm.instructions.md
│ ├── containerization-docker-best-practices.instructions.md
│ ├── context-engineering.instructions.md
│ ├── context7.instructions.md
│ ├── convert-cassandra-to-spring-data-cosmos.instructions.md
│ ├── convert-jpa-to-spring-data-cosmos.instructions.md
│ ├── copilot-sdk-csharp.instructions.md
│ ├── copilot-sdk-go.instructions.md
│ ├── copilot-sdk-nodejs.instructions.md
│ ├── copilot-sdk-python.instructions.md
│ ├── copilot-thought-logging.instructions.md
│ ├── cpp-language-service-tools.instructions.md
│ ├── csharp-ja.instructions.md
│ ├── csharp-ko.instructions.md
│ ├── csharp-mcp-server.instructions.md
│ ├── csharp.instructions.md
│ ├── dart-n-flutter.instructions.md
│ ├── dataverse-python-advanced-features.instructions.md
│ ├── dataverse-python-agentic-workflows.instructions.md
│ ├── dataverse-python-api-reference.instructions.md
│ ├── dataverse-python-authentication-security.instructions.md
│ ├── dataverse-python-best-practices.instructions.md
│ ├── dataverse-python-error-handling.instructions.md
│ ├── dataverse-python-file-operations.instructions.md
│ ├── dataverse-python-modules.instructions.md
│ ├── dataverse-python-pandas-integration.instructions.md
│ ├── dataverse-python-performance-optimization.instructions.md
│ ├── dataverse-python-real-world-usecases.instructions.md
│ ├── dataverse-python-sdk.instructions.md
│ ├── dataverse-python-testing-debugging.instructions.md
│ ├── dataverse-python.instructions.md
│ ├── debian-linux.instructions.md
│ ├── declarative-agents-microsoft365.instructions.md
│ ├── devbox-image-definition.instructions.md
│ ├── devops-core-principles.instructions.md
│ ├── dotnet-architecture-good-practices.instructions.md
│ ├── dotnet-framework.instructions.md
│ ├── dotnet-maui-9-to-dotnet-maui-10-upgrade.instructions.md
│ ├── dotnet-maui.instructions.md
│ ├── dotnet-upgrade.instructions.md
│ ├── dotnet-wpf.instructions.md
│ ├── fedora-linux.instructions.md
│ ├── genaiscript.instructions.md
│ ├── generate-modern-terraform-code-for-azure.instructions.md
│ ├── gilfoyle-code-review.instructions.md
│ ├── github-actions-ci-cd-best-practices.instructions.md
│ ├── go-mcp-server.instructions.md
│ ├── go.instructions.md
│ ├── html-css-style-color-guide.instructions.md
│ ├── instructions.instructions.md
│ ├── java-11-to-java-17-upgrade.instructions.md
│ ├── java-17-to-java-21-upgrade.instructions.md
│ ├── java-21-to-java-25-upgrade.instructions.md
│ ├── java-mcp-server.instructions.md
│ ├── joyride-user-project.instructions.md
│ ├── joyride-workspace-automation.instructions.md
│ ├── kotlin-mcp-server.instructions.md
│ ├── kubernetes-deployment-best-practices.instructions.md
│ ├── kubernetes-manifests.instructions.md
│ ├── langchain-python.instructions.md
│ ├── localization.instructions.md
│ ├── lwc.instructions.md
│ ├── makefile.instructions.md
│ ├── markdown-accessibility.instructions.md
│ ├── markdown.instructions.md
│ ├── mcp-m365-copilot.instructions.md
│ ├── memory-bank.instructions.md
│ ├── mongo-dba.instructions.md
│ ├── moodle.instructions.md
│ ├── ms-sql-dba.instructions.md
│ ├── nestjs.instructions.md
│ ├── nextjs-tailwind.instructions.md
│ ├── nextjs.instructions.md
│ ├── no-heredoc.instructions.md
│ ├── nodejs-javascript-vitest.instructions.md
│ ├── object-calisthenics.instructions.md
│ ├── oop-design-patterns.instructions.md
│ ├── oqtane.instructions.md
│ ├── pcf-alm.instructions.md
│ ├── pcf-api-reference.instructions.md
│ ├── pcf-best-practices.instructions.md
│ ├── pcf-canvas-apps.instructions.md
│ ├── pcf-code-components.instructions.md
│ ├── pcf-community-resources.instructions.md
│ ├── pcf-dependent-libraries.instructions.md
│ ├── pcf-events.instructions.md
│ ├── pcf-fluent-modern-theming.instructions.md
│ ├── pcf-limitations.instructions.md
│ ├── pcf-manifest-schema.instructions.md
│ ├── pcf-model-driven-apps.instructions.md
│ ├── pcf-overview.instructions.md
│ ├── pcf-power-pages.instructions.md
│ ├── pcf-react-platform-libraries.instructions.md
│ ├── pcf-sample-components.instructions.md
│ ├── pcf-tooling.instructions.md
│ ├── performance-optimization.instructions.md
│ ├── php-mcp-server.instructions.md
│ ├── php-symfony.instructions.md
│ ├── playwright-dotnet.instructions.md
│ ├── playwright-python.instructions.md
│ ├── playwright-typescript.instructions.md
│ ├── power-apps-canvas-yaml.instructions.md
│ ├── power-apps-code-apps.instructions.md
│ ├── power-bi-custom-visuals-development.instructions.md
│ ├── power-bi-data-modeling-best-practices.instructions.md
│ ├── power-bi-dax-best-practices.instructions.md
│ ├── power-bi-devops-alm-best-practices.instructions.md
│ ├── power-bi-report-design-best-practices.instructions.md
│ ├── power-bi-security-rls-best-practices.instructions.md
│ ├── power-platform-connector.instructions.md
│ ├── power-platform-mcp-development.instructions.md
│ ├── powershell-pester-5.instructions.md
│ ├── powershell.instructions.md
│ ├── prompt.instructions.md
│ ├── python-mcp-server.instructions.md
│ ├── quarkus-mcp-server-sse.instructions.md
│ ├── quarkus.instructions.md
│ ├── r.instructions.md
│ ├── ruby-mcp-server.instructions.md
│ ├── ruby-on-rails.instructions.md
│ ├── rust-mcp-server.instructions.md
│ ├── rust.instructions.md
│ ├── scala2.instructions.md
│ ├── security-and-owasp.instructions.md
│ ├── self-explanatory-code-commenting.instructions.md
│ ├── shell.instructions.md
│ ├── spec-driven-workflow-v1.instructions.md
│ ├── springboot-4-migration.instructions.md
│ ├── springboot.instructions.md
│ ├── sql-sp-generation.instructions.md
│ ├── svelte.instructions.md
│ ├── swift-mcp-server.instructions.md
│ ├── tailwind-v4-vite.instructions.md
│ ├── taming-copilot.instructions.md
│ ├── tanstack-start-shadcn-tailwind.instructions.md
│ ├── task-implementation.instructions.md
│ ├── tasksync.instructions.md
│ ├── terraform-azure.instructions.md
│ ├── terraform-sap-btp.instructions.md
│ ├── terraform.instructions.md
│ ├── typescript-mcp-server.instructions.md
│ ├── typespec-m365-copilot.instructions.md
│ ├── update-code-from-shorthand.instructions.md
│ ├── update-docs-on-code-change.instructions.md
│ ├── vsixtoolkit.instructions.md
│ ├── winui3.instructions.md
│ └── wordpress.instructions.md
├── package.json
├── plugins/
│ ├── automate-this/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── awesome-copilot/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── azure-cloud-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── cast-imaging/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── clojure-interactive-programming/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── context-engineering/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── copilot-sdk/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── csharp-dotnet-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── csharp-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── database-data-management/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── dataverse-sdk-for-python/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── devops-oncall/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── doublecheck/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── edge-ai-tasks/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── external.json
│ ├── flowstudio-power-automate/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── frontend-web-dev/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── gem-team/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── go-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── java-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── java-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── kotlin-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── mcp-m365-copilot/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── napkin/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── noob-mode/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── openapi-to-application-csharp-dotnet/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── openapi-to-application-go/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── openapi-to-application-java-spring-boot/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── openapi-to-application-nodejs-nestjs/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── openapi-to-application-python-fastapi/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── oracle-to-postgres-migration-expert/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── ospo-sponsorship/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── partners/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── pcf-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── php-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── polyglot-test-agent/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── power-apps-code-apps/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── power-bi-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── power-platform-mcp-connector-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── project-planning/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── python-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── ruby-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── rug-agentic-workflow/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── rust-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── security-best-practices/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── software-engineering-team/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── structured-autonomy/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── swift-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── technical-spike/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── testing-automation/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── typescript-mcp-development/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ ├── typespec-m365-copilot/
│ │ ├── .github/
│ │ │ └── plugin/
│ │ │ └── plugin.json
│ │ └── README.md
│ └── winui3-development/
│ ├── .github/
│ │ └── plugin/
│ │ └── plugin.json
│ └── README.md
├── scripts/
│ └── fix-line-endings.sh
├── skills/
│ ├── add-educational-comments/
│ │ └── SKILL.md
│ ├── agent-governance/
│ │ └── SKILL.md
│ ├── agentic-eval/
│ │ └── SKILL.md
│ ├── ai-prompt-engineering-safety-review/
│ │ └── SKILL.md
│ ├── appinsights-instrumentation/
│ │ ├── LICENSE.txt
│ │ ├── SKILL.md
│ │ ├── examples/
│ │ │ └── appinsights.bicep
│ │ ├── references/
│ │ │ ├── ASPNETCORE.md
│ │ │ ├── AUTO.md
│ │ │ ├── NODEJS.md
│ │ │ └── PYTHON.md
│ │ └── scripts/
│ │ └── appinsights.ps1
│ ├── apple-appstore-reviewer/
│ │ └── SKILL.md
│ ├── arch-linux-triage/
│ │ └── SKILL.md
│ ├── architecture-blueprint-generator/
│ │ └── SKILL.md
│ ├── aspire/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── architecture.md
│ │ ├── cli-reference.md
│ │ ├── dashboard.md
│ │ ├── deployment.md
│ │ ├── integrations-catalog.md
│ │ ├── mcp-server.md
│ │ ├── polyglot-apis.md
│ │ ├── testing.md
│ │ └── troubleshooting.md
│ ├── aspnet-minimal-api-openapi/
│ │ └── SKILL.md
│ ├── automate-this/
│ │ └── SKILL.md
│ ├── autoresearch/
│ │ └── SKILL.md
│ ├── aws-cdk-python-setup/
│ │ └── SKILL.md
│ ├── az-cost-optimize/
│ │ └── SKILL.md
│ ├── azure-deployment-preflight/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── ERROR-HANDLING.md
│ │ ├── REPORT-TEMPLATE.md
│ │ └── VALIDATION-COMMANDS.md
│ ├── azure-devops-cli/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── advanced-usage.md
│ │ ├── boards-and-iterations.md
│ │ ├── org-and-security.md
│ │ ├── pipelines-and-builds.md
│ │ ├── repos-and-prs.md
│ │ ├── variables-and-agents.md
│ │ └── workflows-and-patterns.md
│ ├── azure-pricing/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── COPILOT-STUDIO-RATES.md
│ │ ├── COST-ESTIMATOR.md
│ │ ├── REGIONS.md
│ │ └── SERVICE-NAMES.md
│ ├── azure-resource-health-diagnose/
│ │ └── SKILL.md
│ ├── azure-resource-visualizer/
│ │ ├── LICENSE.txt
│ │ ├── SKILL.md
│ │ └── assets/
│ │ └── template-architecture.md
│ ├── azure-role-selector/
│ │ ├── LICENSE.txt
│ │ └── SKILL.md
│ ├── azure-static-web-apps/
│ │ └── SKILL.md
│ ├── bigquery-pipeline-audit/
│ │ └── SKILL.md
│ ├── boost-prompt/
│ │ └── SKILL.md
│ ├── breakdown-epic-arch/
│ │ └── SKILL.md
│ ├── breakdown-epic-pm/
│ │ └── SKILL.md
│ ├── breakdown-feature-implementation/
│ │ └── SKILL.md
│ ├── breakdown-feature-prd/
│ │ └── SKILL.md
│ ├── breakdown-plan/
│ │ └── SKILL.md
│ ├── breakdown-test/
│ │ └── SKILL.md
│ ├── centos-linux-triage/
│ │ └── SKILL.md
│ ├── chrome-devtools/
│ │ └── SKILL.md
│ ├── cli-mastery/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── final-exam.md
│ │ ├── module-1-slash-commands.md
│ │ ├── module-2-keyboard-shortcuts.md
│ │ ├── module-3-modes.md
│ │ ├── module-4-agents.md
│ │ ├── module-5-skills.md
│ │ ├── module-6-mcp.md
│ │ ├── module-7-advanced.md
│ │ ├── module-8-configuration.md
│ │ └── scenarios.md
│ ├── cloud-design-patterns/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── architecture-design.md
│ │ ├── azure-service-mappings.md
│ │ ├── best-practices.md
│ │ ├── deployment-operational.md
│ │ ├── event-driven.md
│ │ ├── messaging-integration.md
│ │ ├── performance.md
│ │ ├── reliability-resilience.md
│ │ └── security.md
│ ├── code-exemplars-blueprint-generator/
│ │ └── SKILL.md
│ ├── codeql/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── alert-management.md
│ │ ├── cli-commands.md
│ │ ├── compiled-languages.md
│ │ ├── sarif-output.md
│ │ ├── troubleshooting.md
│ │ └── workflow-configuration.md
│ ├── comment-code-generate-a-tutorial/
│ │ └── SKILL.md
│ ├── containerize-aspnet-framework/
│ │ └── SKILL.md
│ ├── containerize-aspnetcore/
│ │ └── SKILL.md
│ ├── context-map/
│ │ └── SKILL.md
│ ├── conventional-commit/
│ │ └── SKILL.md
│ ├── convert-plaintext-to-md/
│ │ └── SKILL.md
│ ├── copilot-cli-quickstart/
│ │ └── SKILL.md
│ ├── copilot-instructions-blueprint-generator/
│ │ └── SKILL.md
│ ├── copilot-sdk/
│ │ └── SKILL.md
│ ├── copilot-spaces/
│ │ └── SKILL.md
│ ├── copilot-usage-metrics/
│ │ ├── SKILL.md
│ │ ├── get-enterprise-metrics.sh
│ │ ├── get-enterprise-user-metrics.sh
│ │ ├── get-org-metrics.sh
│ │ └── get-org-user-metrics.sh
│ ├── cosmosdb-datamodeling/
│ │ └── SKILL.md
│ ├── create-agentsmd/
│ │ └── SKILL.md
│ ├── create-architectural-decision-record/
│ │ └── SKILL.md
│ ├── create-github-action-workflow-specification/
│ │ └── SKILL.md
│ ├── create-github-issue-feature-from-specification/
│ │ └── SKILL.md
│ ├── create-github-issues-feature-from-implementation-plan/
│ │ └── SKILL.md
│ ├── create-github-issues-for-unmet-specification-requirements/
│ │ └── SKILL.md
│ ├── create-github-pull-request-from-specification/
│ │ └── SKILL.md
│ ├── create-implementation-plan/
│ │ └── SKILL.md
│ ├── create-llms/
│ │ └── SKILL.md
│ ├── create-readme/
│ │ └── SKILL.md
│ ├── create-specification/
│ │ └── SKILL.md
│ ├── create-spring-boot-java-project/
│ │ └── SKILL.md
│ ├── create-spring-boot-kotlin-project/
│ │ └── SKILL.md
│ ├── create-technical-spike/
│ │ └── SKILL.md
│ ├── create-tldr-page/
│ │ └── SKILL.md
│ ├── creating-oracle-to-postgres-master-migration-plan/
│ │ └── SKILL.md
│ ├── creating-oracle-to-postgres-migration-bug-report/
│ │ ├── SKILL.md
│ │ └── references/
│ │ └── BUG-REPORT-TEMPLATE.md
│ ├── creating-oracle-to-postgres-migration-integration-tests/
│ │ └── SKILL.md
│ ├── csharp-async/
│ │ └── SKILL.md
│ ├── csharp-docs/
│ │ └── SKILL.md
│ ├── csharp-mcp-server-generator/
│ │ └── SKILL.md
│ ├── csharp-mstest/
│ │ └── SKILL.md
│ ├── csharp-nunit/
│ │ └── SKILL.md
│ ├── csharp-tunit/
│ │ └── SKILL.md
│ ├── csharp-xunit/
│ │ └── SKILL.md
│ ├── datanalysis-credit-risk/
│ │ ├── SKILL.md
│ │ ├── references/
│ │ │ ├── analysis.py
│ │ │ └── func.py
│ │ └── scripts/
│ │ └── example.py
│ ├── dataverse-python-advanced-patterns/
│ │ └── SKILL.md
│ ├── dataverse-python-production-code/
│ │ └── SKILL.md
│ ├── dataverse-python-quickstart/
│ │ └── SKILL.md
│ ├── dataverse-python-usecase-builder/
│ │ └── SKILL.md
│ ├── debian-linux-triage/
│ │ └── SKILL.md
│ ├── declarative-agents/
│ │ └── SKILL.md
│ ├── dependabot/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── dependabot-yml-reference.md
│ │ ├── example-configs.md
│ │ └── pr-commands.md
│ ├── devops-rollout-plan/
│ │ └── SKILL.md
│ ├── documentation-writer/
│ │ └── SKILL.md
│ ├── dotnet-best-practices/
│ │ └── SKILL.md
│ ├── dotnet-design-pattern-review/
│ │ └── SKILL.md
│ ├── dotnet-upgrade/
│ │ └── SKILL.md
│ ├── doublecheck/
│ │ ├── SKILL.md
│ │ └── assets/
│ │ └── verification-report-template.md
│ ├── editorconfig/
│ │ └── SKILL.md
│ ├── ef-core/
│ │ └── SKILL.md
│ ├── entra-agent-user/
│ │ └── SKILL.md
│ ├── eval-driven-dev/
│ │ ├── SKILL.md
│ │ └── references/
│ │ └── pixie-api.md
│ ├── excalidraw-diagram-generator/
│ │ ├── SKILL.md
│ │ ├── references/
│ │ │ ├── element-types.md
│ │ │ └── excalidraw-schema.md
│ │ ├── scripts/
│ │ │ ├── .gitignore
│ │ │ ├── README.md
│ │ │ ├── add-arrow.py
│ │ │ ├── add-icon-to-diagram.py
│ │ │ └── split-excalidraw-library.py
│ │ └── templates/
│ │ ├── business-flow-swimlane-template.excalidraw
│ │ ├── class-diagram-template.excalidraw
│ │ ├── data-flow-diagram-template.excalidraw
│ │ ├── er-diagram-template.excalidraw
│ │ ├── flowchart-template.excalidraw
│ │ ├── mindmap-template.excalidraw
│ │ ├── relationship-template.excalidraw
│ │ └── sequence-diagram-template.excalidraw
│ ├── fabric-lakehouse/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── getdata.md
│ │ └── pyspark.md
│ ├── fedora-linux-triage/
│ │ └── SKILL.md
│ ├── finalize-agent-prompt/
│ │ └── SKILL.md
│ ├── finnish-humanizer/
│ │ ├── SKILL.md
│ │ └── references/
│ │ └── patterns.md
│ ├── first-ask/
│ │ └── SKILL.md
│ ├── flowstudio-power-automate-build/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── action-patterns-connectors.md
│ │ ├── action-patterns-core.md
│ │ ├── action-patterns-data.md
│ │ ├── build-patterns.md
│ │ ├── flow-schema.md
│ │ └── trigger-types.md
│ ├── flowstudio-power-automate-debug/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── common-errors.md
│ │ └── debug-workflow.md
│ ├── flowstudio-power-automate-mcp/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── MCP-BOOTSTRAP.md
│ │ ├── action-types.md
│ │ ├── connection-references.md
│ │ └── tool-reference.md
│ ├── fluentui-blazor/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── DATAGRID.md
│ │ ├── LAYOUT-AND-NAVIGATION.md
│ │ ├── SETUP.md
│ │ └── THEMING.md
│ ├── folder-structure-blueprint-generator/
│ │ └── SKILL.md
│ ├── game-engine/
│ │ ├── SKILL.md
│ │ ├── assets/
│ │ │ ├── 2d-maze-game.md
│ │ │ ├── 2d-platform-game.md
│ │ │ ├── gameBase-template-repo.md
│ │ │ ├── paddle-game-template.md
│ │ │ └── simple-2d-engine.md
│ │ └── references/
│ │ ├── 3d-web-games.md
│ │ ├── algorithms.md
│ │ ├── basics.md
│ │ ├── game-control-mechanisms.md
│ │ ├── game-engine-core-principles.md
│ │ ├── game-publishing.md
│ │ ├── techniques.md
│ │ ├── terminology.md
│ │ └── web-apis.md
│ ├── gen-specs-as-issues/
│ │ └── SKILL.md
│ ├── generate-custom-instructions-from-codebase/
│ │ └── SKILL.md
│ ├── gh-cli/
│ │ └── SKILL.md
│ ├── git-commit/
│ │ └── SKILL.md
│ ├── git-flow-branch-creator/
│ │ └── SKILL.md
│ ├── github-copilot-starter/
│ │ └── SKILL.md
│ ├── github-issues/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── dependencies.md
│ │ ├── images.md
│ │ ├── issue-fields.md
│ │ ├── issue-types.md
│ │ ├── projects.md
│ │ ├── search.md
│ │ ├── sub-issues.md
│ │ └── templates.md
│ ├── go-mcp-server-generator/
│ │ └── SKILL.md
│ ├── gtm-0-to-1-launch/
│ │ └── SKILL.md
│ ├── gtm-ai-gtm/
│ │ └── SKILL.md
│ ├── gtm-board-and-investor-communication/
│ │ └── SKILL.md
│ ├── gtm-developer-ecosystem/
│ │ └── SKILL.md
│ ├── gtm-enterprise-account-planning/
│ │ └── SKILL.md
│ ├── gtm-enterprise-onboarding/
│ │ └── SKILL.md
│ ├── gtm-operating-cadence/
│ │ └── SKILL.md
│ ├── gtm-partnership-architecture/
│ │ └── SKILL.md
│ ├── gtm-positioning-strategy/
│ │ └── SKILL.md
│ ├── gtm-product-led-growth/
│ │ └── SKILL.md
│ ├── gtm-technical-product-pricing/
│ │ └── SKILL.md
│ ├── image-manipulation-image-magick/
│ │ └── SKILL.md
│ ├── import-infrastructure-as-code/
│ │ └── SKILL.md
│ ├── issue-fields-migration/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── issue-fields-api.md
│ │ ├── labels-api.md
│ │ └── projects-api.md
│ ├── java-add-graalvm-native-image-support/
│ │ └── SKILL.md
│ ├── java-docs/
│ │ └── SKILL.md
│ ├── java-junit/
│ │ └── SKILL.md
│ ├── java-mcp-server-generator/
│ │ └── SKILL.md
│ ├── java-refactoring-extract-method/
│ │ └── SKILL.md
│ ├── java-refactoring-remove-parameter/
│ │ └── SKILL.md
│ ├── java-springboot/
│ │ └── SKILL.md
│ ├── javascript-typescript-jest/
│ │ └── SKILL.md
│ ├── kotlin-mcp-server-generator/
│ │ └── SKILL.md
│ ├── kotlin-springboot/
│ │ └── SKILL.md
│ ├── legacy-circuit-mockups/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── 28256-eeprom.md
│ │ ├── 555.md
│ │ ├── 6502.md
│ │ ├── 6522.md
│ │ ├── 6C62256.md
│ │ ├── 7400-series.md
│ │ ├── assembly-compiler.md
│ │ ├── assembly-language.md
│ │ ├── basic-electronic-components.md
│ │ ├── breadboard.md
│ │ ├── common-breadboard-components.md
│ │ ├── connecting-electronic-components.md
│ │ ├── emulator-28256-eeprom.md
│ │ ├── emulator-6502.md
│ │ ├── emulator-6522.md
│ │ ├── emulator-6C62256.md
│ │ ├── emulator-lcd.md
│ │ ├── lcd.md
│ │ ├── minipro.md
│ │ └── t48eeprom-programmer.md
│ ├── make-repo-contribution/
│ │ ├── SKILL.md
│ │ └── assets/
│ │ ├── issue-template.md
│ │ └── pr-template.md
│ ├── make-skill-template/
│ │ └── SKILL.md
│ ├── markdown-to-html/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── basic-markdown-to-html.md
│ │ ├── basic-markdown.md
│ │ ├── code-blocks-to-html.md
│ │ ├── code-blocks.md
│ │ ├── collapsed-sections-to-html.md
│ │ ├── collapsed-sections.md
│ │ ├── gomarkdown.md
│ │ ├── hugo.md
│ │ ├── jekyll.md
│ │ ├── marked.md
│ │ ├── pandoc.md
│ │ ├── tables-to-html.md
│ │ ├── tables.md
│ │ ├── writing-mathematical-expressions-to-html.md
│ │ └── writing-mathematical-expressions.md
│ ├── mcp-cli/
│ │ └── SKILL.md
│ ├── mcp-copilot-studio-server-generator/
│ │ └── SKILL.md
│ ├── mcp-create-adaptive-cards/
│ │ └── SKILL.md
│ ├── mcp-create-declarative-agent/
│ │ └── SKILL.md
│ ├── mcp-deploy-manage-agents/
│ │ └── SKILL.md
│ ├── meeting-minutes/
│ │ └── SKILL.md
│ ├── memory-merger/
│ │ └── SKILL.md
│ ├── mentoring-juniors/
│ │ └── SKILL.md
│ ├── microsoft-agent-framework/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── dotnet.md
│ │ └── python.md
│ ├── microsoft-code-reference/
│ │ └── SKILL.md
│ ├── microsoft-docs/
│ │ └── SKILL.md
│ ├── microsoft-skill-creator/
│ │ ├── SKILL.md
│ │ └── references/
│ │ └── skill-templates.md
│ ├── migrating-oracle-to-postgres-stored-procedures/
│ │ └── SKILL.md
│ ├── mkdocs-translations/
│ │ └── SKILL.md
│ ├── model-recommendation/
│ │ └── SKILL.md
│ ├── msstore-cli/
│ │ └── SKILL.md
│ ├── multi-stage-dockerfile/
│ │ └── SKILL.md
│ ├── my-issues/
│ │ └── SKILL.md
│ ├── my-pull-requests/
│ │ └── SKILL.md
│ ├── nano-banana-pro-openrouter/
│ │ ├── SKILL.md
│ │ ├── assets/
│ │ │ └── SYSTEM_TEMPLATE
│ │ └── scripts/
│ │ └── generate_image.py
│ ├── napkin/
│ │ ├── SKILL.md
│ │ └── assets/
│ │ └── napkin.html
│ ├── next-intl-add-language/
│ │ └── SKILL.md
│ ├── noob-mode/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── examples.md
│ │ └── glossary.md
│ ├── nuget-manager/
│ │ └── SKILL.md
│ ├── oo-component-documentation/
│ │ ├── SKILL.md
│ │ ├── assets/
│ │ │ └── documentation-template.md
│ │ └── references/
│ │ ├── create-mode.md
│ │ └── update-mode.md
│ ├── openapi-to-application-code/
│ │ └── SKILL.md
│ ├── pdftk-server/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── download.md
│ │ ├── pdftk-cli-examples.md
│ │ ├── pdftk-man-page.md
│ │ ├── pdftk-server-license.md
│ │ └── third-party-materials.md
│ ├── penpot-uiux-design/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── accessibility.md
│ │ ├── component-patterns.md
│ │ ├── platform-guidelines.md
│ │ └── setup-troubleshooting.md
│ ├── php-mcp-server-generator/
│ │ └── SKILL.md
│ ├── planning-oracle-to-postgres-migration-integration-testing/
│ │ └── SKILL.md
│ ├── plantuml-ascii/
│ │ └── SKILL.md
│ ├── playwright-automation-fill-in-form/
│ │ └── SKILL.md
│ ├── playwright-explore-website/
│ │ └── SKILL.md
│ ├── playwright-generate-test/
│ │ └── SKILL.md
│ ├── polyglot-test-agent/
│ │ ├── SKILL.md
│ │ └── unit-test-generation.prompt.md
│ ├── postgresql-code-review/
│ │ └── SKILL.md
│ ├── postgresql-optimization/
│ │ └── SKILL.md
│ ├── power-apps-code-app-scaffold/
│ │ └── SKILL.md
│ ├── power-bi-dax-optimization/
│ │ └── SKILL.md
│ ├── power-bi-model-design-review/
│ │ └── SKILL.md
│ ├── power-bi-performance-troubleshooting/
│ │ └── SKILL.md
│ ├── power-bi-report-design-consultation/
│ │ └── SKILL.md
│ ├── power-platform-mcp-connector-suite/
│ │ └── SKILL.md
│ ├── powerbi-modeling/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── MEASURES-DAX.md
│ │ ├── PERFORMANCE.md
│ │ ├── RELATIONSHIPS.md
│ │ ├── RLS.md
│ │ └── STAR-SCHEMA.md
│ ├── prd/
│ │ └── SKILL.md
│ ├── premium-frontend-ui/
│ │ └── SKILL.md
│ ├── project-workflow-analysis-blueprint-generator/
│ │ └── SKILL.md
│ ├── prompt-builder/
│ │ └── SKILL.md
│ ├── publish-to-pages/
│ │ ├── SKILL.md
│ │ └── scripts/
│ │ ├── convert-pdf.py
│ │ ├── convert-pptx.py
│ │ └── publish.sh
│ ├── pytest-coverage/
│ │ └── SKILL.md
│ ├── python-mcp-server-generator/
│ │ └── SKILL.md
│ ├── quasi-coder/
│ │ └── SKILL.md
│ ├── readme-blueprint-generator/
│ │ └── SKILL.md
│ ├── refactor/
│ │ └── SKILL.md
│ ├── refactor-method-complexity-reduce/
│ │ └── SKILL.md
│ ├── refactor-plan/
│ │ └── SKILL.md
│ ├── remember/
│ │ └── SKILL.md
│ ├── remember-interactive-programming/
│ │ └── SKILL.md
│ ├── repo-story-time/
│ │ └── SKILL.md
│ ├── review-and-refactor/
│ │ └── SKILL.md
│ ├── reviewing-oracle-to-postgres-migration/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── REFERENCE.md
│ │ ├── empty-strings-handling.md
│ │ ├── no-data-found-exceptions.md
│ │ ├── oracle-parentheses-from-clause.md
│ │ ├── oracle-to-postgres-sorting.md
│ │ ├── oracle-to-postgres-timestamp-timezone.md
│ │ ├── oracle-to-postgres-to-char-numeric.md
│ │ ├── oracle-to-postgres-type-coercion.md
│ │ ├── postgres-concurrent-transactions.md
│ │ └── postgres-refcursor-handling.md
│ ├── ruby-mcp-server-generator/
│ │ └── SKILL.md
│ ├── rust-mcp-server-generator/
│ │ └── SKILL.md
│ ├── sandbox-npm-install/
│ │ ├── SKILL.md
│ │ └── scripts/
│ │ └── install.sh
│ ├── scaffolding-oracle-to-postgres-migration-test-project/
│ │ └── SKILL.md
│ ├── scoutqa-test/
│ │ └── SKILL.md
│ ├── secret-scanning/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── alerts-and-remediation.md
│ │ ├── custom-patterns.md
│ │ └── push-protection.md
│ ├── semantic-kernel/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── dotnet.md
│ │ └── python.md
│ ├── shuffle-json-data/
│ │ └── SKILL.md
│ ├── snowflake-semanticview/
│ │ └── SKILL.md
│ ├── sponsor-finder/
│ │ └── SKILL.md
│ ├── spring-boot-testing/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── assertj-basics.md
│ │ ├── assertj-collections.md
│ │ ├── context-caching.md
│ │ ├── datajpatest.md
│ │ ├── instancio.md
│ │ ├── mockitobean.md
│ │ ├── mockmvc-classic.md
│ │ ├── mockmvc-tester.md
│ │ ├── restclienttest.md
│ │ ├── resttestclient.md
│ │ ├── sb4-migration.md
│ │ ├── test-slices-overview.md
│ │ ├── testcontainers-jdbc.md
│ │ └── webmvctest.md
│ ├── sql-code-review/
│ │ └── SKILL.md
│ ├── sql-optimization/
│ │ └── SKILL.md
│ ├── structured-autonomy-generate/
│ │ └── SKILL.md
│ ├── structured-autonomy-implement/
│ │ └── SKILL.md
│ ├── structured-autonomy-plan/
│ │ └── SKILL.md
│ ├── suggest-awesome-github-copilot-agents/
│ │ └── SKILL.md
│ ├── suggest-awesome-github-copilot-instructions/
│ │ └── SKILL.md
│ ├── suggest-awesome-github-copilot-skills/
│ │ └── SKILL.md
│ ├── swift-mcp-server-generator/
│ │ └── SKILL.md
│ ├── technology-stack-blueprint-generator/
│ │ └── SKILL.md
│ ├── terraform-azurerm-set-diff-analyzer/
│ │ ├── SKILL.md
│ │ ├── references/
│ │ │ ├── azurerm_set_attributes.json
│ │ │ └── azurerm_set_attributes.md
│ │ └── scripts/
│ │ ├── .gitignore
│ │ ├── README.md
│ │ └── analyze_plan.py
│ ├── tldr-prompt/
│ │ └── SKILL.md
│ ├── transloadit-media-processing/
│ │ └── SKILL.md
│ ├── typescript-mcp-server-generator/
│ │ └── SKILL.md
│ ├── typespec-api-operations/
│ │ └── SKILL.md
│ ├── typespec-create-agent/
│ │ └── SKILL.md
│ ├── typespec-create-api-plugin/
│ │ └── SKILL.md
│ ├── unit-test-vue-pinia/
│ │ ├── SKILL.md
│ │ └── references/
│ │ └── pinia-patterns.md
│ ├── update-avm-modules-in-bicep/
│ │ └── SKILL.md
│ ├── update-implementation-plan/
│ │ └── SKILL.md
│ ├── update-llms/
│ │ └── SKILL.md
│ ├── update-markdown-file-index/
│ │ └── SKILL.md
│ ├── update-specification/
│ │ └── SKILL.md
│ ├── vscode-ext-commands/
│ │ └── SKILL.md
│ ├── vscode-ext-localization/
│ │ └── SKILL.md
│ ├── web-coder/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── accessibility.md
│ │ ├── architecture-patterns.md
│ │ ├── browsers-engines.md
│ │ ├── css-styling.md
│ │ ├── data-formats-encoding.md
│ │ ├── development-tools.md
│ │ ├── glossary.md
│ │ ├── html-markup.md
│ │ ├── http-networking.md
│ │ ├── javascript-programming.md
│ │ ├── media-graphics.md
│ │ ├── performance-optimization.md
│ │ ├── security-authentication.md
│ │ ├── servers-infrastructure.md
│ │ ├── web-apis-dom.md
│ │ └── web-protocols-standards.md
│ ├── web-design-reviewer/
│ │ ├── SKILL.md
│ │ └── references/
│ │ ├── framework-fixes.md
│ │ └── visual-checklist.md
│ ├── webapp-testing/
│ │ ├── SKILL.md
│ │ └── assets/
│ │ └── test-helper.js
│ ├── what-context-needed/
│ │ └── SKILL.md
│ ├── winapp-cli/
│ │ └── SKILL.md
│ ├── winmd-api-search/
│ │ ├── LICENSE.txt
│ │ ├── SKILL.md
│ │ └── scripts/
│ │ ├── Invoke-WinMdQuery.ps1
│ │ ├── Update-WinMdCache.ps1
│ │ └── cache-generator/
│ │ ├── CacheGenerator.csproj
│ │ ├── Directory.Build.props
│ │ ├── Directory.Build.targets
│ │ ├── Directory.Packages.props
│ │ └── Program.cs
│ ├── winui3-migration-guide/
│ │ └── SKILL.md
│ ├── workiq-copilot/
│ │ └── SKILL.md
│ └── write-coding-standards-from-file/
│ └── SKILL.md
├── website/
│ ├── astro.config.mjs
│ ├── data/
│ │ └── tools.yml
│ ├── package.json
│ ├── public/
│ │ └── _CNAME
│ ├── src/
│ │ ├── components/
│ │ │ ├── ContributeCTA.astro
│ │ │ ├── EmbeddedPageData.astro
│ │ │ ├── Footer.astro
│ │ │ ├── Head.astro
│ │ │ ├── Modal.astro
│ │ │ └── PageHeader.astro
│ │ ├── content/
│ │ │ └── docs/
│ │ │ └── learning-hub/
│ │ │ ├── agentic-workflows.md
│ │ │ ├── automating-with-hooks.md
│ │ │ ├── before-after-customization-examples.md
│ │ │ ├── building-custom-agents.md
│ │ │ ├── copilot-configuration-basics.md
│ │ │ ├── creating-effective-skills.md
│ │ │ ├── defining-custom-instructions.md
│ │ │ ├── github-copilot-terminology-glossary.md
│ │ │ ├── index.md
│ │ │ ├── installing-and-using-plugins.md
│ │ │ ├── understanding-copilot-context.md
│ │ │ ├── understanding-mcp-servers.md
│ │ │ ├── using-copilot-coding-agent.md
│ │ │ └── what-are-agents-skills-instructions.md
│ │ ├── content.config.ts
│ │ ├── env.d.ts
│ │ ├── integrations/
│ │ │ └── pagefind-resources.ts
│ │ ├── pages/
│ │ │ ├── agents.astro
│ │ │ ├── contributors.astro
│ │ │ ├── hooks.astro
│ │ │ ├── index.astro
│ │ │ ├── instructions.astro
│ │ │ ├── learning-hub/
│ │ │ │ └── cookbook/
│ │ │ │ └── index.astro
│ │ │ ├── llms.txt.ts
│ │ │ ├── plugins.astro
│ │ │ ├── skills.astro
│ │ │ ├── tools.astro
│ │ │ └── workflows.astro
│ │ ├── scripts/
│ │ │ ├── choices.ts
│ │ │ ├── embedded-data.ts
│ │ │ ├── jszip.ts
│ │ │ ├── modal.ts
│ │ │ ├── pages/
│ │ │ │ ├── agents-render.ts
│ │ │ │ ├── agents.ts
│ │ │ │ ├── hooks-render.ts
│ │ │ │ ├── hooks.ts
│ │ │ │ ├── index.ts
│ │ │ │ ├── instructions-render.ts
│ │ │ │ ├── instructions.ts
│ │ │ │ ├── plugins-render.ts
│ │ │ │ ├── plugins.ts
│ │ │ │ ├── samples-render.ts
│ │ │ │ ├── samples.ts
│ │ │ │ ├── skills-render.ts
│ │ │ │ ├── skills.ts
│ │ │ │ ├── tools-render.ts
│ │ │ │ ├── tools.ts
│ │ │ │ ├── workflows-render.ts
│ │ │ │ └── workflows.ts
│ │ │ ├── search.ts
│ │ │ └── utils.ts
│ │ └── styles/
│ │ ├── global.css
│ │ └── starlight-overrides.css
│ └── tsconfig.json
└── workflows/
├── daily-issues-report.md
├── ospo-contributors-report.md
├── ospo-org-health.md
├── ospo-release-compliance-checker.md
├── ospo-stale-repos.md
├── relevance-check.md
└── relevance-summary.md
SYMBOL INDEX (482 symbols across 69 files)
FILE: cookbook/copilot-sdk/go/recipe/accessibility-report.go
function main (line 14) | func main() {
FILE: cookbook/copilot-sdk/go/recipe/error-handling.go
function main (line 11) | func main() {
FILE: cookbook/copilot-sdk/go/recipe/managing-local-files.go
function main (line 13) | func main() {
FILE: cookbook/copilot-sdk/go/recipe/multiple-sessions.go
function main (line 11) | func main() {
FILE: cookbook/copilot-sdk/go/recipe/persisting-sessions.go
function main (line 11) | func main() {
FILE: cookbook/copilot-sdk/go/recipe/pr-visualization.go
function isGitRepo (line 21) | func isGitRepo() bool {
function getGitHubRemote (line 26) | func getGitHubRemote() string {
function promptForRepo (line 50) | func promptForRepo() string {
function main (line 61) | func main() {
FILE: cookbook/copilot-sdk/go/recipe/ralph-loop.go
function ralphLoop (line 30) | func ralphLoop(ctx context.Context, mode string, maxIterations int) error {
function main (line 96) | func main() {
FILE: cookbook/copilot-sdk/nodejs/recipe/accessibility-report.ts
function main (line 10) | async function main() {
FILE: cookbook/copilot-sdk/nodejs/recipe/pr-visualization.ts
function isGitRepo (line 11) | function isGitRepo(): boolean {
function getGitHubRemote (line 20) | function getGitHubRemote(): string | null {
function parseArgs (line 40) | function parseArgs(): { repo?: string } {
function promptForRepo (line 49) | async function promptForRepo(): Promise<string> {
function main (line 66) | async function main() {
FILE: cookbook/copilot-sdk/nodejs/recipe/ralph-loop.ts
type Mode (line 22) | type Mode = "plan" | "build";
function ralphLoop (line 24) | async function ralphLoop(mode: Mode, maxIterations: number) {
FILE: cookbook/copilot-sdk/python/recipe/accessibility_report.py
function main (line 13) | async def main():
FILE: cookbook/copilot-sdk/python/recipe/error_handling.py
function main (line 6) | async def main():
FILE: cookbook/copilot-sdk/python/recipe/managing_local_files.py
function main (line 10) | async def main():
FILE: cookbook/copilot-sdk/python/recipe/multiple_sessions.py
function main (line 6) | async def main():
FILE: cookbook/copilot-sdk/python/recipe/persisting_sessions.py
function main (line 6) | async def main():
FILE: cookbook/copilot-sdk/python/recipe/pr_visualization.py
function is_git_repo (line 17) | def is_git_repo():
function get_github_remote (line 28) | def get_github_remote():
function parse_args (line 52) | def parse_args():
function prompt_for_repo (line 60) | def prompt_for_repo():
function main (line 67) | async def main():
FILE: cookbook/copilot-sdk/python/recipe/ralph_loop.py
function ralph_loop (line 28) | async def ralph_loop(mode: str = "build", max_iterations: int = 50):
FILE: eng/add-missing-contributors.mjs
constant DEFAULT_CMD_TIMEOUT (line 19) | const DEFAULT_CMD_TIMEOUT = 30_000;
FILE: eng/clean-materialized-plugins.mjs
constant PLUGINS_DIR (line 7) | const PLUGINS_DIR = path.join(ROOT_FOLDER, "plugins");
constant MATERIALIZED_DIRS (line 8) | const MATERIALIZED_DIRS = ["agents", "commands", "skills"];
function cleanPlugin (line 10) | function cleanPlugin(pluginPath) {
function countFiles (line 24) | function countFiles(dir) {
function main (line 36) | function main() {
FILE: eng/constants.mjs
constant TEMPLATES (line 8) | const TEMPLATES = {
constant AKA_INSTALL_URLS (line 185) | const AKA_INSTALL_URLS = {
constant ROOT_FOLDER (line 191) | const ROOT_FOLDER = path.join(__dirname, "..");
constant INSTRUCTIONS_DIR (line 192) | const INSTRUCTIONS_DIR = path.join(ROOT_FOLDER, "instructions");
constant AGENTS_DIR (line 193) | const AGENTS_DIR = path.join(ROOT_FOLDER, "agents");
constant SKILLS_DIR (line 194) | const SKILLS_DIR = path.join(ROOT_FOLDER, "skills");
constant HOOKS_DIR (line 195) | const HOOKS_DIR = path.join(ROOT_FOLDER, "hooks");
constant PLUGINS_DIR (line 196) | const PLUGINS_DIR = path.join(ROOT_FOLDER, "plugins");
constant WORKFLOWS_DIR (line 197) | const WORKFLOWS_DIR = path.join(ROOT_FOLDER, "workflows");
constant COOKBOOK_DIR (line 198) | const COOKBOOK_DIR = path.join(ROOT_FOLDER, "cookbook");
constant MAX_PLUGIN_ITEMS (line 199) | const MAX_PLUGIN_ITEMS = 50;
constant SKILL_NAME_MIN_LENGTH (line 202) | const SKILL_NAME_MIN_LENGTH = 1;
constant SKILL_NAME_MAX_LENGTH (line 203) | const SKILL_NAME_MAX_LENGTH = 64;
constant SKILL_DESCRIPTION_MIN_LENGTH (line 204) | const SKILL_DESCRIPTION_MIN_LENGTH = 10;
constant SKILL_DESCRIPTION_MAX_LENGTH (line 205) | const SKILL_DESCRIPTION_MAX_LENGTH = 1024;
constant DOCS_DIR (line 207) | const DOCS_DIR = path.join(ROOT_FOLDER, "docs");
FILE: eng/contributor-report.mjs
constant DEFAULT_CMD_TIMEOUT (line 11) | const DEFAULT_CMD_TIMEOUT = 30_000;
constant AUTO_GENERATED_PATTERNS (line 19) | const AUTO_GENERATED_PATTERNS = [
constant TYPE_PATTERNS (line 29) | const TYPE_PATTERNS = {
FILE: eng/create-plugin.mjs
constant PLUGINS_DIR (line 8) | const PLUGINS_DIR = path.join(ROOT_FOLDER, "plugins");
function prompt (line 15) | function prompt(question) {
function parseArgs (line 21) | function parseArgs() {
function createPlugin (line 53) | async function createPlugin() {
FILE: eng/create-skill.mjs
function prompt (line 13) | function prompt(question) {
function parseArgs (line 19) | function parseArgs() {
function createSkillTemplate (line 43) | async function createSkillTemplate() {
FILE: eng/generate-marketplace.mjs
constant PLUGINS_DIR (line 7) | const PLUGINS_DIR = path.join(ROOT_FOLDER, "plugins");
constant EXTERNAL_PLUGINS_FILE (line 8) | const EXTERNAL_PLUGINS_FILE = path.join(ROOT_FOLDER, "plugins", "externa...
constant MARKETPLACE_FILE (line 9) | const MARKETPLACE_FILE = path.join(ROOT_FOLDER, ".github/plugin", "marke...
function validateExternalPlugin (line 17) | function validateExternalPlugin(plugin, index) {
function readExternalPlugins (line 50) | function readExternalPlugins() {
function readPluginMetadata (line 89) | function readPluginMetadata(pluginDir) {
function generateMarketplace (line 109) | function generateMarketplace() {
FILE: eng/generate-website-data.mjs
constant WEBSITE_DIR (line 33) | const WEBSITE_DIR = path.join(ROOT_FOLDER, "website");
constant WEBSITE_DATA_DIR (line 34) | const WEBSITE_DATA_DIR = path.join(WEBSITE_DIR, "public", "data");
constant WEBSITE_SOURCE_DATA_DIR (line 35) | const WEBSITE_SOURCE_DATA_DIR = path.join(WEBSITE_DIR, "data");
function ensureDataDir (line 40) | function ensureDataDir() {
function extractTitle (line 49) | function extractTitle(filePath, frontmatter) {
function generateAgentsData (line 70) | function generateAgentsData(gitDates) {
function generateHooksData (line 133) | function generateHooksData(gitDates) {
function generateWorkflowsData (line 199) | function generateWorkflowsData(gitDates) {
function parseApplyToPatterns (line 254) | function parseApplyToPatterns(applyTo) {
function extractExtensionFromPattern (line 276) | function extractExtensionFromPattern(pattern) {
function generateInstructionsData (line 293) | function generateInstructionsData(gitDates) {
function categorizeSkill (line 360) | function categorizeSkill(name, description) {
function generateSkillsData (line 404) | function generateSkillsData(gitDates) {
function getSkillFiles (line 468) | function getSkillFiles(skillPath, relativePath) {
function generatePluginsData (line 498) | function generatePluginsData(gitDates) {
function generateToolsData (line 618) | function generateToolsData() {
function generateSearchIndex (line 675) | function generateSearchIndex(
function generateSamplesData (line 772) | function generateSamplesData() {
function main (line 899) | async function main() {
FILE: eng/materialize-plugins.mjs
constant PLUGINS_DIR (line 7) | const PLUGINS_DIR = path.join(ROOT_FOLDER, "plugins");
function copyDirRecursive (line 12) | function copyDirRecursive(src, dest) {
function resolveSource (line 31) | function resolveSource(relPath) {
function materializePlugins (line 44) | function materializePlugins() {
FILE: eng/migrate-prompts-to-skills.mjs
constant PROMPTS_DIR (line 8) | const PROMPTS_DIR = path.join(ROOT_FOLDER, "prompts");
function convertPromptToSkill (line 14) | function convertPromptToSkill(promptFilePath) {
function main (line 65) | function main() {
FILE: eng/update-plugin-commands-to-skills.mjs
function updatePluginManifest (line 12) | function updatePluginManifest(pluginJsonPath) {
function main (line 86) | function main() {
FILE: eng/update-readme.mjs
constant MCP_REGISTRY_SET (line 33) | let MCP_REGISTRY_SET = null;
function loadMcpRegistryNames (line 54) | async function loadMcpRegistryNames() {
function safeFileOperation (line 114) | function safeFileOperation(operation, filePath, defaultValue = null) {
function extractTitle (line 123) | function extractTitle(filePath) {
function extractDescription (line 221) | function extractDescription(filePath) {
function formatTableCell (line 249) | function formatTableCell(text) {
function makeBadges (line 271) | function makeBadges(link, type) {
function generateInstructionsSection (line 287) | function generateInstructionsSection(instructionsDir) {
function generateMcpServerLinks (line 351) | function generateMcpServerLinks(servers, registryNames) {
function generateAgentsSection (line 450) | function generateAgentsSection(agentsDir, registryNames = []) {
function generateHooksSection (line 466) | function generateHooksSection(hooksDir) {
function generateWorkflowsSection (line 527) | function generateWorkflowsSection(workflowsDir) {
function generateSkillsSection (line 582) | function generateSkillsSection(skillsDir) {
function generateUnifiedModeSection (line 649) | function generateUnifiedModeSection(cfg) {
function readPluginJson (line 711) | function readPluginJson(pluginDir) {
function generatePluginsSection (line 724) | function generatePluginsSection(pluginsDir) {
function generateFeaturedPluginsSection (line 800) | function generateFeaturedPluginsSection(pluginsDir) {
function writeFileIfChanged (line 873) | function writeFileIfChanged(filePath, content) {
function buildCategoryReadme (line 891) | function buildCategoryReadme(
function main (line 908) | async function main() {
FILE: eng/utils/git-dates.mjs
function getGitFileDates (line 19) | function getGitFileDates(directories, rootDir) {
function getGitFileDate (line 87) | function getGitFileDate(filePath, rootDir) {
FILE: eng/validate-plugins.mjs
constant PLUGINS_DIR (line 7) | const PLUGINS_DIR = path.join(ROOT_FOLDER, "plugins");
function validateName (line 10) | function validateName(name, folderName) {
function validateDescription (line 28) | function validateDescription(description) {
function validateVersion (line 38) | function validateVersion(version) {
function validateKeywords (line 45) | function validateKeywords(keywords) {
function validateSpecPaths (line 67) | function validateSpecPaths(plugin) {
function validatePlugin (line 118) | function validatePlugin(folderName) {
function validatePlugins (line 167) | function validatePlugins() {
FILE: eng/validate-skills.mjs
function validateSkillName (line 16) | function validateSkillName(name) {
function validateSkillDescription (line 29) | function validateSkillDescription(description) {
function validateSkillFolder (line 42) | function validateSkillFolder(folderPath, folderName) {
function validateSkills (line 102) | function validateSkills() {
FILE: eng/yaml-parser.mjs
function safeFileOperation (line 8) | function safeFileOperation(operation, filePath, defaultValue = null) {
function parseFrontmatter (line 23) | function parseFrontmatter(filePath) {
function extractAgentMetadata (line 64) | function extractAgentMetadata(filePath) {
function extractMcpServers (line 87) | function extractMcpServers(filePath) {
function extractMcpServerConfigs (line 102) | function extractMcpServerConfigs(filePath) {
function parseSkillMetadata (line 127) | function parseSkillMetadata(skillPath) {
function parseHookMetadata (line 185) | function parseHookMetadata(hookPath) {
function parseWorkflowMetadata (line 262) | function parseWorkflowMetadata(filePath) {
function parseYamlFile (line 305) | function parseYamlFile(filePath) {
FILE: skills/datanalysis-credit-risk/references/analysis.py
function drop_abnormal_ym (line 17) | def drop_abnormal_ym(data: pd.DataFrame, min_ym_bad_sample: int = 1,
function drop_highmiss_features (line 41) | def drop_highmiss_features(data: pd.DataFrame, miss_channel: pd.DataFrame,
function drop_lowiv_features (line 64) | def drop_lowiv_features(data: pd.DataFrame, features: List[str],
function drop_highcorr_features (line 213) | def drop_highcorr_features(data: pd.DataFrame, features: List[str],
function drop_highnoise_features (line 337) | def drop_highnoise_features(data: pd.DataFrame, features: List[str],
function _calc_single_psi (line 455) | def _calc_single_psi(args):
function drop_highpsi_features (line 529) | def drop_highpsi_features(data: pd.DataFrame, features: List[str],
function iv_distribution_by_org (line 697) | def iv_distribution_by_org(iv_detail: pd.DataFrame, oos_orgs: list = Non...
function psi_distribution_by_org (line 746) | def psi_distribution_by_org(psi_detail: pd.DataFrame, oos_orgs: list = N...
function value_ratio_distribution_by_org (line 797) | def value_ratio_distribution_by_org(data: pd.DataFrame, features: List[s...
function calculate_iv_by_org (line 857) | def calculate_iv_by_org(data: pd.DataFrame, features: List[str],
function calculate_psi_detail (line 888) | def calculate_psi_detail(data: pd.DataFrame, features: List[str],
function export_cleaning_report (line 972) | def export_cleaning_report(filepath: str, steps: list,
FILE: skills/datanalysis-credit-risk/references/func.py
function get_dataset (line 17) | def get_dataset(data_pth: str, date_colName: str, y_colName: str,
function org_analysis (line 67) | def org_analysis(data: pd.DataFrame, oos_orgs: List[str] = None) -> pd.D...
function missing_check (line 100) | def missing_check(data: pd.DataFrame, channel: Dict[str, List[str]] = No...
function calculate_iv (line 149) | def calculate_iv(data: pd.DataFrame, features: List[str], n_jobs: int = ...
function calculate_corr (line 186) | def calculate_corr(data: pd.DataFrame, features: List[str]) -> pd.DataFr...
function export_report_xlsx (line 192) | def export_report_xlsx(filepath: str, data_name: str, data: pd.DataFrame,
FILE: skills/datanalysis-credit-risk/scripts/example.py
function _ensure_references_on_path (line 20) | def _ensure_references_on_path():
function _get_path_input (line 54) | def _get_path_input(prompt, default):
function _get_list_input (line 71) | def _get_list_input(prompt, default):
function get_user_input (line 110) | def get_user_input(prompt, default, dtype=float):
function timer (line 128) | def timer(step_name):
FILE: skills/excalidraw-diagram-generator/scripts/add-arrow.py
function generate_unique_id (line 28) | def generate_unique_id() -> str:
function prepare_edit_path (line 33) | def prepare_edit_path(diagram_path: Path, use_edit_suffix: bool) -> tupl...
function finalize_edit_path (line 58) | def finalize_edit_path(work_path: Path, final_path: Path | None) -> None:
function create_arrow (line 69) | def create_arrow(
function add_arrow_to_diagram (line 184) | def add_arrow_to_diagram(
function main (line 234) | def main():
FILE: skills/excalidraw-diagram-generator/scripts/add-icon-to-diagram.py
function generate_unique_id (line 31) | def generate_unique_id() -> str:
function calculate_bounding_box (line 36) | def calculate_bounding_box(elements: List[Dict[str, Any]]) -> Tuple[floa...
function transform_icon_elements (line 61) | def transform_icon_elements(
function load_icon (line 158) | def load_icon(icon_name: str, library_path: Path) -> List[Dict[str, Any]]:
function prepare_edit_path (line 180) | def prepare_edit_path(diagram_path: Path, use_edit_suffix: bool) -> tupl...
function finalize_edit_path (line 205) | def finalize_edit_path(work_path: Path, final_path: Path | None) -> None:
function create_text_label (line 216) | def create_text_label(text: str, x: float, y: float) -> Dict[str, Any]:
function add_icon_to_diagram (line 267) | def add_icon_to_diagram(
function main (line 330) | def main():
FILE: skills/excalidraw-diagram-generator/scripts/split-excalidraw-library.py
function sanitize_filename (line 26) | def sanitize_filename(name: str) -> str:
function find_library_file (line 51) | def find_library_file(directory: Path) -> Path:
function split_library (line 79) | def split_library(library_dir: str) -> None:
function main (line 166) | def main():
FILE: skills/nano-banana-pro-openrouter/scripts/generate_image.py
function parse_args (line 31) | def parse_args():
function require_api_key (line 51) | def require_api_key():
function encode_image_to_data_url (line 58) | def encode_image_to_data_url(path: Path) -> str:
function build_message_content (line 69) | def build_message_content(prompt: str, input_images: list[str]) -> list[...
function parse_data_url (line 77) | def parse_data_url(data_url: str) -> tuple[str, bytes]:
function resolve_output_path (line 89) | def resolve_output_path(filename: str, image_index: int, total_count: in...
function extract_image_url (line 109) | def extract_image_url(image: dict | object) -> str | None:
function load_system_prompt (line 115) | def load_system_prompt():
function main (line 127) | def main():
FILE: skills/publish-to-pages/scripts/convert-pdf.py
function get_page_count (line 20) | def get_page_count(pdf_path):
function convert (line 32) | def convert(pdf_path: str, output_path: str | None = None, dpi: int = 15...
FILE: skills/publish-to-pages/scripts/convert-pptx.py
function _ensure_pptx (line 14) | def _ensure_pptx():
function rgb_to_hex (line 24) | def rgb_to_hex(rgb_color):
function get_text_style (line 33) | def get_text_style(run):
function get_alignment (line 53) | def get_alignment(paragraph):
function get_shape_position (line 68) | def get_shape_position(shape, slide_width, slide_height):
function get_slide_background (line 79) | def get_slide_background(slide, prs):
function get_shape_fill (line 93) | def get_shape_fill(shape):
function render_paragraph (line 116) | def render_paragraph(paragraph):
function extract_image_data (line 135) | def extract_image_data(shape):
function count_images (line 144) | def count_images(prs):
function convert (line 170) | def convert(pptx_path, output_path=None, external_assets=None):
FILE: skills/terraform-azurerm-set-diff-analyzer/scripts/analyze_plan.py
class Config (line 41) | class Config:
function warn (line 53) | def warn(message: str) -> None:
function load_set_attributes (line 60) | def load_set_attributes(path: Optional[Path] = None) -> Dict[str, Dict[s...
function get_attr_config (line 80) | def get_attr_config(attr_def: Any) -> tuple:
class SetAttributeChange (line 101) | class SetAttributeChange:
class ResourceChange (line 120) | class ResourceChange:
class AnalysisResult (line 134) | class AnalysisResult:
function get_element_key (line 147) | def get_element_key(element: Dict[str, Any], key_attr: Optional[str]) ->...
function normalize_value (line 158) | def normalize_value(val: Any) -> Any:
function normalize_for_comparison (line 170) | def normalize_for_comparison(val: Any) -> Any:
function values_equivalent (line 178) | def values_equivalent(before_val: Any, after_val: Any) -> bool:
function compare_elements (line 183) | def compare_elements(
function analyze_primitive_set (line 212) | def analyze_primitive_set(
function analyze_set_attribute (line 251) | def analyze_set_attribute(
function analyze_resource_change (line 365) | def analyze_resource_change(
function collect_all_changes (line 481) | def collect_all_changes(set_change: SetAttributeChange, prefix: str = ""...
function format_set_change (line 515) | def format_set_change(change: SetAttributeChange, indent: int = 0) -> Li...
function format_markdown_output (line 572) | def format_markdown_output(result: AnalysisResult) -> str:
function format_json_output (line 660) | def format_json_output(result: AnalysisResult) -> str:
function format_summary_output (line 718) | def format_summary_output(result: AnalysisResult) -> str:
function analyze_plan (line 735) | def analyze_plan(
function determine_exit_code (line 772) | def determine_exit_code(result: AnalysisResult) -> int:
function parse_args (line 785) | def parse_args() -> argparse.Namespace:
function main (line 867) | def main():
FILE: skills/webapp-testing/assets/test-helper.js
function waitForCondition (line 11) | async function waitForCondition(condition, timeout = 5000, interval = 10...
function captureConsoleLogs (line 27) | function captureConsoleLogs(page) {
function captureScreenshot (line 44) | async function captureScreenshot(page, name) {
FILE: skills/winmd-api-search/scripts/cache-generator/Program.cs
type TypeKind (line 281) | enum TypeKind { Class, Struct, Enum, Interface, Delegate }
type MemberKind (line 283) | enum MemberKind { Method, Property, Event, Field }
class WinMdTypeInfo (line 285) | sealed class WinMdTypeInfo
class WinMdMemberInfo (line 297) | sealed class WinMdMemberInfo
class WinMdParameterInfo (line 306) | sealed class WinMdParameterInfo
class ProjectPackageRef (line 312) | sealed class ProjectPackageRef
class ProjectManifest (line 318) | sealed class ProjectManifest
type PackageWithWinMd (line 331) | record PackageWithWinMd(string Id, string Version, List<string> WinMdFil...
class NuGetResolver (line 333) | static class NuGetResolver
method FindPackagesWithWinMd (line 335) | public static List<PackageWithWinMd> FindPackagesWithWinMd(string proj...
method FindWinMdFromProjectReferences (line 394) | internal static List<PackageWithWinMd> FindWinMdFromProjectReferences(...
method FindProjectAssetsJson (line 455) | internal static string? FindProjectAssetsJson(string projectDir)
method FindPackagesFromAssets (line 503) | internal static List<PackageWithWinMd> FindPackagesFromAssets(string a...
method FindPackagesFromConfig (line 594) | internal static List<PackageWithWinMd> FindPackagesFromConfig(string c...
method FindSolutionPackagesFolder (line 676) | internal static string? FindSolutionPackagesFolder(string startDir)
method FindWindowsSdkWinMd (line 699) | internal static (List<string> Files, string Version) FindWindowsSdkWin...
method FindWinAppSdkRuntimeWinMd (line 741) | internal static (List<string> Files, string Version) FindWinAppSdkRunt...
class SimpleTypeProvider (line 778) | sealed class SimpleTypeProvider : ISignatureTypeProvider<string, object?>
method GetPrimitiveType (line 780) | public string GetPrimitiveType(PrimitiveTypeCode typeCode) => typeCode...
method GetTypeFromDefinition (line 803) | public string GetTypeFromDefinition(MetadataReader reader, TypeDefinit...
method GetTypeFromReference (line 811) | public string GetTypeFromReference(MetadataReader reader, TypeReferenc...
method GetSZArrayType (line 819) | public string GetSZArrayType(string elementType) => $"{elementType}[]";
method GetArrayType (line 821) | public string GetArrayType(string elementType, ArrayShape shape) =>
method GetByReferenceType (line 824) | public string GetByReferenceType(string elementType) => $"ref {element...
method GetPointerType (line 825) | public string GetPointerType(string elementType) => $"{elementType}*";
method GetPinnedType (line 826) | public string GetPinnedType(string elementType) => elementType;
method GetGenericInstantiation (line 828) | public string GetGenericInstantiation(string genericType, ImmutableArr...
method GetGenericMethodParameter (line 840) | public string GetGenericMethodParameter(object? genericContext, int in...
method GetGenericTypeParameter (line 841) | public string GetGenericTypeParameter(object? genericContext, int inde...
method GetModifiedType (line 842) | public string GetModifiedType(string modifier, string unmodifiedType, ...
method GetFunctionPointerType (line 843) | public string GetFunctionPointerType(MethodSignature<string> signature...
method GetTypeFromSpecification (line 845) | public string GetTypeFromSpecification(MetadataReader reader, object? ...
class WinMdParser (line 856) | static class WinMdParser
method ParseFile (line 858) | public static List<WinMdTypeInfo> ParseFile(string filePath)
method ShouldSkipType (line 913) | internal static bool ShouldSkipType(string name, TypeDefinition typeDef)
method DetermineTypeKind (line 924) | internal static TypeKind DetermineTypeKind(MetadataReader reader, Type...
method GetBaseTypeName (line 941) | private static string? GetBaseTypeName(MetadataReader reader, TypeDefi...
method GetTypeDefName (line 956) | private static string GetTypeDefName(MetadataReader reader, TypeDefini...
method GetTypeRefName (line 964) | private static string GetTypeRefName(MetadataReader reader, TypeRefere...
method ParseMembers (line 972) | private static List<WinMdMemberInfo> ParseMembers(
method GetMethodParameters (line 1150) | private static List<WinMdParameterInfo> GetMethodParameters(
method ParseEnumValues (line 1178) | internal static List<string> ParseEnumValues(MetadataReader reader, Ty...
method GetHandleTypeName (line 1202) | private static string GetHandleTypeName(MetadataReader reader, EntityH...
method DecodeTypeSpecification (line 1210) | private static string DecodeTypeSpecification(MetadataReader reader, T...
FILE: website/src/integrations/pagefind-resources.ts
type SearchRecord (line 14) | interface SearchRecord {
constant TYPE_LABELS (line 24) | const TYPE_LABELS: Record<string, string> = {
constant TYPE_PAGES (line 34) | const TYPE_PAGES: Record<string, string> = {
function pagefindResources (line 44) | function pagefindResources(): AstroIntegration {
FILE: website/src/pages/llms.txt.ts
constant GITHUB_RAW_BASE (line 7) | const GITHUB_RAW_BASE = "https://raw.githubusercontent.com/github/awesom...
FILE: website/src/scripts/choices.ts
function getChoicesValues (line 12) | function getChoicesValues(choices: Choices): string[] {
function createChoices (line 20) | function createChoices(selector: string | HTMLSelectElement, options: Pa...
FILE: website/src/scripts/embedded-data.ts
function getEmbeddedDataElementId (line 3) | function getEmbeddedDataElementId(filename: string): string {
function serializeEmbeddedData (line 7) | function serializeEmbeddedData(data: unknown): string {
function getEmbeddedData (line 11) | function getEmbeddedData<T>(filename: string): T | null {
FILE: website/src/scripts/modal.ts
type ModalViewMode (line 22) | type ModalViewMode = "rendered" | "raw";
type ResourceItem (line 33) | interface ResourceItem {
type ResourceData (line 38) | interface ResourceData {
type SkillFile (line 44) | interface SkillFile {
type SkillItem (line 49) | interface SkillItem extends ResourceItem {
type SkillsData (line 55) | interface SkillsData {
function getSkillDownloadName (line 61) | function getSkillDownloadName(skill: SkillItem): string {
constant RESOURCE_TYPE_TO_JSON (line 65) | const RESOURCE_TYPE_TO_JSON: Record<string, string> = {
function resolveResourceTitle (line 77) | async function resolveResourceTitle(
function getFileName (line 113) | function getFileName(filePath: string): string {
function isMarkdownFile (line 117) | function isMarkdownFile(filePath: string): boolean {
function getCollectionRootPath (line 121) | function getCollectionRootPath(filePath: string, collectionName: string)...
function getSkillRootPath (line 130) | function getSkillRootPath(filePath: string): string | null {
function getSkillsData (line 134) | async function getSkillsData(): Promise<SkillsData | null> {
function getSkillItemByFilePath (line 142) | async function getSkillItemByFilePath(filePath: string): Promise<SkillIt...
function updateModalTitle (line 161) | function updateModalTitle(titleText: string, filePath: string): void {
function getModalBody (line 174) | function getModalBody(): HTMLElement | null {
function getModalContent (line 178) | function getModalContent(): HTMLElement | null {
function ensurePreContent (line 182) | function ensurePreContent(): HTMLPreElement | null {
function ensureDivContent (line 204) | function ensureDivContent(className: string): HTMLDivElement | null {
function renderPlainText (line 223) | function renderPlainText(content: string): void {
constant EXTENSION_LANGUAGE_MAP (line 231) | const EXTENSION_LANGUAGE_MAP: Record<string, string> = {
constant FILE_NAME_LANGUAGE_MAP (line 263) | const FILE_NAME_LANGUAGE_MAP: Record<string, string> = {
function getLanguageForFile (line 268) | function getLanguageForFile(filePath: string): string {
function renderHighlightedCode (line 287) | async function renderHighlightedCode(content: string, filePath: string):...
function updateViewButtons (line 305) | function updateViewButtons(): void {
function renderCurrentFileContent (line 328) | async function renderCurrentFileContent(): Promise<void> {
function configureSkillFileSwitcher (line 356) | async function configureSkillFileSwitcher(filePath: string): Promise<voi...
function hideSkillFileSwitcher (line 387) | function hideSkillFileSwitcher(): void {
type PluginItem (line 404) | interface PluginItem {
type PluginAuthor (line 410) | interface PluginAuthor {
type PluginSource (line 415) | interface PluginSource {
type Plugin (line 421) | interface Plugin {
type PluginsData (line 436) | interface PluginsData {
function getFocusableElements (line 445) | function getFocusableElements(container: HTMLElement): HTMLElement[] {
function handleModalKeydown (line 463) | function handleModalKeydown(e: KeyboardEvent, modal: HTMLElement): void {
function setupModal (line 490) | function setupModal(): void {
function handleHashChange (line 694) | function handleHashChange(): void {
function updateHash (line 714) | function updateHash(filePath: string | null): void {
function setupInstallDropdown (line 734) | function setupInstallDropdown(containerId: string): void {
function openFileModal (line 826) | async function openFileModal(
function openPluginModal (line 937) | async function openPluginModal(
function getExternalPluginUrl (line 997) | function getExternalPluginUrl(plugin: Plugin): string {
function renderExternalPluginModal (line 1011) | function renderExternalPluginModal(
function renderLocalPluginModal (line 1118) | function renderLocalPluginModal(
function closeModal (line 1188) | function closeModal(updateUrl = true): void {
function getCurrentFilePath (line 1230) | function getCurrentFilePath(): string | null {
function getCurrentFileContent (line 1237) | function getCurrentFileContent(): string | null {
FILE: website/src/scripts/pages/agents-render.ts
type RenderableAgent (line 9) | interface RenderableAgent {
type AgentSortOption (line 19) | type AgentSortOption = "title" | "lastUpdated";
function sortAgents (line 23) | function sortAgents<T extends RenderableAgent>(
function renderAgentsHtml (line 38) | function renderAgentsHtml(
FILE: website/src/scripts/pages/agents.ts
type Agent (line 10) | interface Agent extends SearchItem, RenderableAgent {
type AgentsData (line 17) | interface AgentsData {
function sortItems (line 38) | function sortItems(items: Agent[]): Agent[] {
function applyFiltersAndRender (line 42) | function applyFiltersAndRender(): void {
function renderItems (line 85) | function renderItems(items: Agent[], query = ''): void {
function setupResourceListHandlers (line 95) | function setupResourceListHandlers(list: HTMLElement | null): void {
function initAgentsPage (line 114) | async function initAgentsPage(): Promise<void> {
FILE: website/src/scripts/pages/hooks-render.ts
type RenderableHook (line 7) | interface RenderableHook {
type HookSortOption (line 19) | type HookSortOption = "title" | "lastUpdated";
function sortHooks (line 21) | function sortHooks<T extends RenderableHook>(
function renderHooksHtml (line 36) | function renderHooksHtml(
FILE: website/src/scripts/pages/hooks.ts
type Hook (line 20) | interface Hook extends SearchItem, RenderableHook {}
type HooksData (line 22) | interface HooksData {
function sortItems (line 42) | function sortItems(items: Hook[]): Hook[] {
function applyFiltersAndRender (line 46) | function applyFiltersAndRender(): void {
function renderItems (line 89) | function renderItems(items: Hook[], query = ""): void {
function setupResourceListHandlers (line 100) | function setupResourceListHandlers(list: HTMLElement | null): void {
function downloadHook (line 129) | async function downloadHook(
function initHooksPage (line 180) | async function initHooksPage(): Promise<void> {
FILE: website/src/scripts/pages/index.ts
type Manifest (line 8) | interface Manifest {
type Plugin (line 20) | interface Plugin {
type PluginsData (line 30) | interface PluginsData {
function initHomepage (line 34) | async function initHomepage(): Promise<void> {
FILE: website/src/scripts/pages/instructions-render.ts
type RenderableInstruction (line 9) | interface RenderableInstruction {
type InstructionSortOption (line 18) | type InstructionSortOption = 'title' | 'lastUpdated';
function sortInstructions (line 20) | function sortInstructions<T extends RenderableInstruction>(
function renderInstructionsHtml (line 35) | function renderInstructionsHtml(
FILE: website/src/scripts/pages/instructions.ts
type Instruction (line 15) | interface Instruction extends SearchItem, RenderableInstruction {
type InstructionsData (line 22) | interface InstructionsData {
function sortItems (line 37) | function sortItems(items: Instruction[]): Instruction[] {
function applyFiltersAndRender (line 41) | function applyFiltersAndRender(): void {
function renderItems (line 67) | function renderItems(items: Instruction[], query = ''): void {
function setupResourceListHandlers (line 77) | function setupResourceListHandlers(list: HTMLElement | null): void {
function initInstructionsPage (line 96) | async function initInstructionsPage(): Promise<void> {
FILE: website/src/scripts/pages/plugins-render.ts
type PluginAuthor (line 3) | interface PluginAuthor {
type PluginSource (line 8) | interface PluginSource {
type RenderablePlugin (line 14) | interface RenderablePlugin {
function getExternalPluginUrl (line 27) | function getExternalPluginUrl(plugin: RenderablePlugin): string {
function renderPluginsHtml (line 36) | function renderPluginsHtml(
FILE: website/src/scripts/pages/plugins.ts
type PluginAuthor (line 10) | interface PluginAuthor {
type PluginSource (line 15) | interface PluginSource {
type Plugin (line 21) | interface Plugin extends SearchItem, RenderablePlugin {
type PluginsData (line 35) | interface PluginsData {
function applyFiltersAndRender (line 51) | function applyFiltersAndRender(): void {
function renderItems (line 72) | function renderItems(items: Plugin[], query = ''): void {
function setupResourceListHandlers (line 82) | function setupResourceListHandlers(list: HTMLElement | null): void {
function initPluginsPage (line 101) | async function initPluginsPage(): Promise<void> {
FILE: website/src/scripts/pages/samples-render.ts
type Language (line 3) | interface Language {
type RecipeVariant (line 10) | interface RecipeVariant {
type Recipe (line 15) | interface Recipe {
type Cookbook (line 27) | interface Cookbook {
type CookbookRecipeMatch (line 37) | interface CookbookRecipeMatch {
function getRecipeResultsCountText (line 43) | function getRecipeResultsCountText(
function renderCookbookSectionsHtml (line 56) | function renderCookbookSectionsHtml(
function renderCookbookSection (line 92) | function renderCookbookSection(
function renderRecipeCard (line 133) | function renderRecipeCard(
FILE: website/src/scripts/pages/samples.ts
type SamplesData (line 17) | interface SamplesData {
function initSamplesPage (line 38) | async function initSamplesPage(): Promise<void> {
function showEmptyState (line 79) | function showEmptyState(): void {
function setupFilters (line 98) | function setupFilters(): void {
function setupSearch (line 158) | function setupSearch(): void {
function clearFilters (line 176) | function clearFilters(): void {
function getFilteredRecipes (line 202) | function getFilteredRecipes(): CookbookRecipeMatch[] {
function renderCookbooks (line 253) | function renderCookbooks(): void {
function setupRecipeListeners (line 268) | function setupRecipeListeners(): void {
function showRecipeContent (line 312) | async function showRecipeContent(
function updateResultsCount (line 324) | function updateResultsCount(): void {
FILE: website/src/scripts/pages/skills-render.ts
type RenderableSkillFile (line 7) | interface RenderableSkillFile {
type RenderableSkill (line 12) | interface RenderableSkill {
type SkillSortOption (line 25) | type SkillSortOption = "title" | "lastUpdated";
function sortSkills (line 27) | function sortSkills<T extends RenderableSkill>(
function renderSkillsHtml (line 42) | function renderSkillsHtml(
FILE: website/src/scripts/pages/skills.ts
type SkillFile (line 20) | interface SkillFile {
type Skill (line 25) | interface Skill extends SearchItem, Omit<RenderableSkill, "files"> {
type SkillsData (line 29) | interface SkillsData {
function sortItems (line 47) | function sortItems(items: Skill[]): Skill[] {
function applyFiltersAndRender (line 51) | function applyFiltersAndRender(): void {
function renderItems (line 87) | function renderItems(items: Skill[], query = ""): void {
function setupResourceListHandlers (line 98) | function setupResourceListHandlers(list: HTMLElement | null): void {
function downloadSkill (line 123) | async function downloadSkill(
function initSkillsPage (line 159) | async function initSkillsPage(): Promise<void> {
FILE: website/src/scripts/pages/tools-render.ts
type RenderableTool (line 3) | interface RenderableTool {
function formatMultilineText (line 30) | function formatMultilineText(text: string): string {
function sanitizeToolUrl (line 34) | function sanitizeToolUrl(url: string): string {
function getToolActionLink (line 52) | function getToolActionLink(
function renderToolsHtml (line 63) | function renderToolsHtml(
FILE: website/src/scripts/pages/tools.ts
type Tool (line 8) | interface Tool extends SearchableItem {
type ToolsData (line 35) | interface ToolsData {
function applyFiltersAndRender (line 52) | function applyFiltersAndRender(): void {
function renderTools (line 77) | function renderTools(tools: Tool[], query = ""): void {
function setupCopyConfigHandlers (line 87) | function setupCopyConfigHandlers(): void {
function initToolsPage (line 120) | async function initToolsPage(): Promise<void> {
FILE: website/src/scripts/pages/workflows-render.ts
type RenderableWorkflow (line 8) | interface RenderableWorkflow {
type WorkflowSortOption (line 16) | type WorkflowSortOption = 'title' | 'lastUpdated';
function sortWorkflows (line 18) | function sortWorkflows<T extends RenderableWorkflow>(
function renderWorkflowsHtml (line 33) | function renderWorkflowsHtml(
FILE: website/src/scripts/pages/workflows.ts
type Workflow (line 19) | interface Workflow extends SearchItem, RenderableWorkflow {
type WorkflowsData (line 26) | interface WorkflowsData {
function sortItems (line 43) | function sortItems(items: Workflow[]): Workflow[] {
function applyFiltersAndRender (line 47) | function applyFiltersAndRender(): void {
function renderItems (line 79) | function renderItems(items: Workflow[], query = ""): void {
function setupResourceListHandlers (line 90) | function setupResourceListHandlers(list: HTMLElement | null): void {
function initWorkflowsPage (line 109) | async function initWorkflowsPage(): Promise<void> {
FILE: website/src/scripts/search.ts
type SearchItem (line 8) | interface SearchItem {
type SearchableItem (line 17) | interface SearchableItem {
type SearchOptions (line 23) | interface SearchOptions {
class FuzzySearch (line 29) | class FuzzySearch<T extends SearchableItem = SearchItem> {
method constructor (line 32) | constructor(items: T[] = []) {
method setItems (line 39) | setItems(items: T[]): void {
method search (line 46) | search(query: string, options: SearchOptions = {}): T[] {
method calculateScore (line 77) | private calculateScore(
method highlight (line 136) | highlight(text: string, query: string): string {
function initGlobalSearch (line 178) | async function initGlobalSearch(): Promise<FuzzySearch<SearchItem>> {
FILE: website/src/scripts/utils.ts
constant REPO_BASE_URL (line 7) | const REPO_BASE_URL =
constant REPO_GITHUB_URL (line 9) | const REPO_GITHUB_URL = "https://github.com/github/awesome-copilot/blob/...
constant VSCODE_INSTALL_CONFIG (line 12) | const VSCODE_INSTALL_CONFIG: Record<
function getBasePath (line 33) | function getBasePath(): string {
function fetchData (line 45) | async function fetchData<T = unknown>(
function loadJSZip (line 67) | async function loadJSZip() {
type ZipDownloadFile (line 73) | interface ZipDownloadFile {
function triggerBlobDownload (line 78) | function triggerBlobDownload(blob: Blob, filename: string): void {
function downloadZipBundle (line 89) | async function downloadZipBundle(
function fetchFileContent (line 136) | async function fetchFileContent(
function copyToClipboard (line 152) | async function copyToClipboard(text: string): Promise<boolean> {
function getVSCodeInstallUrl (line 176) | function getVSCodeInstallUrl(
function getGitHubUrl (line 196) | function getGitHubUrl(filePath: string): string {
function getRawGitHubUrl (line 203) | function getRawGitHubUrl(filePath: string): string {
function downloadFile (line 210) | async function downloadFile(filePath: string): Promise<boolean> {
function shareFile (line 231) | async function shareFile(filePath: string): Promise<boolean> {
function showToast (line 241) | function showToast(
function debounce (line 261) | function debounce<T extends (...args: unknown[]) => void>(
function escapeHtml (line 279) | function escapeHtml(text: string): string {
function sanitizeUrl (line 292) | function sanitizeUrl(url: string | null | undefined): string {
function truncate (line 309) | function truncate(text: string | undefined, maxLength: number): string {
function getResourceType (line 317) | function getResourceType(filePath: string): string {
function formatResourceType (line 334) | function formatResourceType(type: string): string {
function getResourceIcon (line 349) | function getResourceIcon(type: string): string {
function getInstallDropdownHtml (line 364) | function getInstallDropdownHtml(
function setupDropdownCloseHandlers (line 406) | function setupDropdownCloseHandlers(): void {
function getActionButtonsHtml (line 463) | function getActionButtonsHtml(filePath: string, small = false): string {
function setupActionHandlers (line 488) | function setupActionHandlers(): void {
function formatRelativeTime (line 533) | function formatRelativeTime(isoDate: string | null | undefined): string {
function formatFullDate (line 571) | function formatFullDate(isoDate: string | null | undefined): string {
function getLastUpdatedHtml (line 589) | function getLastUpdatedHtml(isoDate: string | null | undefined): string {
Condensed preview — 1196 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (9,793K chars).
[
{
"path": ".all-contributorsrc",
"chars": 72463,
"preview": "{\n \"projectName\": \"awesome-copilot\",\n \"projectOwner\": \"github\",\n \"repoType\": \"github\",\n \"repoHost\": \"https://github."
},
{
"path": ".codespellrc",
"chars": 1723,
"preview": "[codespell]\n\n# Ignore intentional misspellings used as examples and technical terms\n\n# numer - intentional example typo "
},
{
"path": ".editorconfig",
"chars": 496,
"preview": "# EditorConfig is awesome: https://EditorConfig.org\n\n# top-most EditorConfig file\nroot = true\n\n# All files\n[*]\nindent_st"
},
{
"path": ".gitattributes",
"chars": 684,
"preview": "# Set default behavior to automatically normalize line endings.\n* text=auto eol=lf\n\n# Explicitly declare text files to b"
},
{
"path": ".github/agents/agentic-workflows.agent.md",
"chars": 8436,
"preview": "---\ndescription: GitHub Agentic Workflows (gh-aw) - Create, debug, and upgrade AI-powered workflows with intelligent pro"
},
{
"path": ".github/aw/actions-lock.json",
"chars": 1221,
"preview": "{\n \"entries\": {\n \"actions/checkout@v6.0.2\": {\n \"repo\": \"actions/checkout\",\n \"version\": \"v6.0.2\",\n \"sh"
},
{
"path": ".github/copilot-instructions.md",
"chars": 3271,
"preview": "The following instructions are only to be applied when performing a code review.\n\n## README updates\n\n- [ ] The new file "
},
{
"path": ".github/plugin/marketplace.json",
"chars": 21311,
"preview": "{\n \"name\": \"awesome-copilot\",\n \"metadata\": {\n \"description\": \"Community-driven collection of GitHub Copilot plugins"
},
{
"path": ".github/pull_request_template.md",
"chars": 1389,
"preview": "## Pull Request Checklist\n\n- [ ] I have read and followed the [CONTRIBUTING.md](https://github.com/github/awesome-copilo"
},
{
"path": ".github/workflows/check-line-endings.yml",
"chars": 682,
"preview": "name: Check Line Endings\n\non:\n push:\n branches: [staged]\n pull_request:\n branches: [staged]\n\npermissions:\n cont"
},
{
"path": ".github/workflows/check-plugin-structure.yml",
"chars": 5064,
"preview": "name: Check Plugin Structure\n\non:\n pull_request:\n branches: [staged]\n paths:\n - \"plugins/**\"\n\npermissions:\n "
},
{
"path": ".github/workflows/check-pr-target.yml",
"chars": 1098,
"preview": "name: Check PR Target Branch\n\non:\n pull_request:\n branches: [main]\n types: [opened]\n\npermissions:\n pull-requests"
},
{
"path": ".github/workflows/codeowner-update.lock.yml",
"chars": 59976,
"preview": "# ___ _ _ \n# / _ \\ | | (_) \n# | |_| | __ _ ___ _ __ | |_ _ ___ \n# "
},
{
"path": ".github/workflows/codeowner-update.md",
"chars": 3529,
"preview": "---\ndescription: 'Updates the CODEOWNERS file when a maintainer comments #codeowner on a pull request'\non:\n issue_comme"
},
{
"path": ".github/workflows/codespell.yml",
"chars": 399,
"preview": "name: Check Spelling\n\non:\n push:\n branches: [staged]\n pull_request:\n branches: [staged]\n\npermissions:\n contents"
},
{
"path": ".github/workflows/contributors.yml",
"chars": 2547,
"preview": "name: Contributors\n\non:\n schedule:\n - cron: '0 3 * * 0' # Weekly on Sundays at 3am UTC\n workflow_dispatch: # Manual"
},
{
"path": ".github/workflows/copilot-setup-steps.yml",
"chars": 772,
"preview": "name: \"Copilot Setup Steps\"\n\n# This workflow configures the environment for GitHub Copilot Agent with gh-aw MCP server\no"
},
{
"path": ".github/workflows/deploy-website.yml",
"chars": 1806,
"preview": "# GitHub Pages deployment workflow\n# Builds the Astro website and deploys to GitHub Pages\n\nname: Deploy Website to GitHu"
},
{
"path": ".github/workflows/duplicate-resource-detector.lock.yml",
"chars": 52361,
"preview": "# ___ _ _ \n# / _ \\ | | (_) \n# | |_| | __ _ ___ _ __ | |_ _ ___ \n# "
},
{
"path": ".github/workflows/duplicate-resource-detector.md",
"chars": 5190,
"preview": "---\ndescription: Weekly scan of agents, instructions, and skills to identify potential duplicate resources and report th"
},
{
"path": ".github/workflows/learning-hub-updater.lock.yml",
"chars": 57916,
"preview": "# ___ _ _ \n# / _ \\ | | (_) \n# | |_| | __ _ ___ _ __ | |_ _ ___ \n# "
},
{
"path": ".github/workflows/learning-hub-updater.md",
"chars": 3837,
"preview": "---\nname: \"Learning Hub Updater\"\ndescription: \"Daily check for new GitHub Copilot features and updates. Opens a PR if th"
},
{
"path": ".github/workflows/pr-duplicate-check.lock.yml",
"chars": 53901,
"preview": "# ___ _ _ \n# / _ \\ | | (_) \n# | |_| | __ _ ___ _ __ | |_ _ ___ \n# "
},
{
"path": ".github/workflows/pr-duplicate-check.md",
"chars": 5211,
"preview": "---\ndescription: 'Checks PRs for potential duplicate agents, instructions, skills, and workflows already in the reposito"
},
{
"path": ".github/workflows/publish.yml",
"chars": 1545,
"preview": "name: Publish to main\n\non:\n push:\n branches: [staged]\n\nconcurrency:\n group: publish-to-main\n cancel-in-progress: t"
},
{
"path": ".github/workflows/resource-staleness-report.lock.yml",
"chars": 52209,
"preview": "# ___ _ _ \n# / _ \\ | | (_) \n# | |_| | __ _ ___ _ __ | |_ _ ___ \n# "
},
{
"path": ".github/workflows/resource-staleness-report.md",
"chars": 3848,
"preview": "---\ndescription: Weekly report identifying stale and aging resources across agents, prompts, instructions, hooks, and sk"
},
{
"path": ".github/workflows/traffic-reporting.yml",
"chars": 3042,
"preview": "name: Traffic Reporting\n\non:\n schedule:\n - cron: '0 1 * * *' # Daily at 1am UTC\n workflow_dispatch: # Manual trigge"
},
{
"path": ".github/workflows/validate-agentic-workflows-pr.yml",
"chars": 4215,
"preview": "name: Validate Agentic Workflow Contributions\n\non:\n pull_request:\n branches: [staged]\n types: [opened, synchroniz"
},
{
"path": ".github/workflows/validate-readme.yml",
"chars": 2654,
"preview": "name: Validate README.md\n\non:\n pull_request:\n branches: [staged]\n types: [opened, synchronize, reopened]\n path"
},
{
"path": ".github/workflows/webhook-caller.yml",
"chars": 1197,
"preview": "name: Call Webhooks on Main Push\n\non:\n push:\n branches:\n - main\n\npermissions:\n contents: read\n actions: none\n"
},
{
"path": ".gitignore",
"chars": 373,
"preview": "node_modules\n*.orig\nCopilot-Processing.md\nreports/\n\n# macOS system files\n.DS_Store\n*.tmp\n\n# Generated files\n/llms.txt\n\n#"
},
{
"path": ".schemas/collection.schema.json",
"chars": 2710,
"preview": "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Collection Manifest\",\n \"description\": \"Schema for"
},
{
"path": ".schemas/cookbook.schema.json",
"chars": 4548,
"preview": "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Cookbook Manifest\",\n \"description\": \"Schema for c"
},
{
"path": ".schemas/tools.schema.json",
"chars": 4865,
"preview": "{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Tools Catalog\",\n \"description\": \"Schema for the a"
},
{
"path": ".vscode/extensions.json",
"chars": 101,
"preview": "{\n \"recommendations\": [\n \"editorconfig.editorconfig\",\n \"davidanson.vscode-markdownlint\"\n ]\n}\n"
},
{
"path": ".vscode/mcp.json",
"chars": 179,
"preview": "{\n \"servers\": {\n \"github-agentic-workflows\": {\n \"command\": \"gh\",\n \"args\": [\n \"aw\",\n \"mcp-ser"
},
{
"path": ".vscode/settings.json",
"chars": 511,
"preview": "{\n \"files.eol\": \"\\n\",\n \"files.insertFinalNewline\": true,\n \"files.trimTrailingWhitespace\": true,\n \"[markdown]\": {\n "
},
{
"path": ".vscode/tasks.json",
"chars": 2491,
"preview": "{\n \"version\": \"2.0.0\",\n \"tasks\": [\n {\n \"label\": \"npm install\",\n \"type\": \"shell\",\n \"command\": \"npm ci"
},
{
"path": "AGENTS.md",
"chars": 13691,
"preview": "# AGENTS.md\n\n## Project Overview\n\nThe Awesome GitHub Copilot repository is a community-driven collection of custom agent"
},
{
"path": "CODEOWNERS",
"chars": 1068,
"preview": "# Default owner for everything\n* @aaronpowell\n\n# Agentic Workflows\n/workflows/ @brunoborges\n/.github/workflows/validate-"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3231,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "CONTRIBUTING.md",
"chars": 16783,
"preview": "# Contributing to Awesome GitHub Copilot\n\nThank you for your interest in contributing to the Awesome GitHub Copilot repo"
},
{
"path": "LICENSE",
"chars": 1059,
"preview": "MIT License\n\nCopyright GitHub, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof thi"
},
{
"path": "README.md",
"chars": 68797,
"preview": "# 🤖 Awesome GitHub Copilot\n[ WinForms Designer compatible Apps.\n#version: 20"
},
{
"path": "agents/accessibility.agent.md",
"chars": 12687,
"preview": "---\ndescription: 'Expert assistant for web accessibility (WCAG 2.1/2.2), inclusive UX, and a11y testing'\nname: 'Accessib"
},
{
"path": "agents/address-comments.agent.md",
"chars": 1531,
"preview": "---\ndescription: \"Address PR comments\"\nname: 'Universal PR Comment Addresser'\ntools:\n [\n \"changes\",\n \"codebase\",\n"
},
{
"path": "agents/adr-generator.agent.md",
"chars": 6662,
"preview": "---\nname: ADR Generator\ndescription: Expert agent for creating comprehensive Architectural Decision Records (ADRs) with "
},
{
"path": "agents/aem-frontend-specialist.agent.md",
"chars": 20059,
"preview": "---\ndescription: 'Expert assistant for developing AEM components using HTL, Tailwind CSS, and Figma-to-code workflows wi"
},
{
"path": "agents/agent-governance-reviewer.agent.md",
"chars": 2395,
"preview": "---\ndescription: 'AI agent governance expert that reviews code for safety issues, missing governance controls, and helps"
},
{
"path": "agents/amplitude-experiment-implementation.agent.md",
"chars": 1862,
"preview": "---\nname: Amplitude Experiment Implementation\ndescription: This custom agent uses Amplitude's MCP tools to deploy new ex"
},
{
"path": "agents/api-architect.agent.md",
"chars": 2547,
"preview": "---\ndescription: 'Your role is that of an API architect. Help mentor the engineer by providing guidance, support, and wo"
},
{
"path": "agents/apify-integration-expert.agent.md",
"chars": 7379,
"preview": "---\nname: apify-integration-expert\ndescription: \"Expert agent for integrating Apify Actors into codebases. Handles Actor"
},
{
"path": "agents/arch-linux-expert.agent.md",
"chars": 2009,
"preview": "---\nname: 'Arch Linux Expert'\ndescription: 'Arch Linux specialist focused on pacman, rolling-release maintenance, and Ar"
},
{
"path": "agents/arch.agent.md",
"chars": 7086,
"preview": "---\n\nname: Senior Cloud Architect\ndescription: Expert in modern architecture design patterns, NFR requirements, and crea"
},
{
"path": "agents/arm-migration.agent.md",
"chars": 3364,
"preview": "---\nname: arm-migration-agent\ndescription: \"Arm Cloud Migration Assistant accelerates moving x86 workloads to Arm infras"
},
{
"path": "agents/atlassian-requirements-to-jira.agent.md",
"chars": 18540,
"preview": "---\ndescription: 'Transform requirements documents into structured Jira epics and user stories with intelligent duplicat"
},
{
"path": "agents/azure-iac-exporter.agent.md",
"chars": 23485,
"preview": "---\nname: azure-iac-exporter\ndescription: \"Export existing Azure resources to Infrastructure as Code templates via Azure"
},
{
"path": "agents/azure-iac-generator.agent.md",
"chars": 10707,
"preview": "---\nname: azure-iac-generator\ndescription: \"Central hub for generating Infrastructure as Code (Bicep, ARM, Terraform, Pu"
},
{
"path": "agents/azure-logic-apps-expert.agent.md",
"chars": 5160,
"preview": "---\ndescription: \"Expert guidance for Azure Logic Apps development focusing on workflow design, integration patterns, an"
},
{
"path": "agents/azure-principal-architect.agent.md",
"chars": 4432,
"preview": "---\ndescription: \"Provide expert Azure Principal Architect guidance using Azure Well-Architected Framework principles an"
},
{
"path": "agents/azure-saas-architect.agent.md",
"chars": 8453,
"preview": "---\ndescription: \"Provide expert Azure SaaS Architect guidance focusing on multitenant applications using Azure Well-Arc"
},
{
"path": "agents/azure-verified-modules-bicep.agent.md",
"chars": 1842,
"preview": "---\ndescription: \"Create, update, or review Azure IaC in Bicep using Azure Verified Modules (AVM).\"\nname: \"Azure AVM Bic"
},
{
"path": "agents/azure-verified-modules-terraform.agent.md",
"chars": 2656,
"preview": "---\ndescription: \"Create, update, or review Azure IaC in Terraform using Azure Verified Modules (AVM).\"\nname: \"Azure AVM"
},
{
"path": "agents/bicep-implement.agent.md",
"chars": 2273,
"preview": "---\ndescription: 'Act as an Azure Bicep Infrastructure as Code coding specialist that creates Bicep templates.'\nname: 'B"
},
{
"path": "agents/bicep-plan.agent.md",
"chars": 4533,
"preview": "---\ndescription: 'Act as implementation planner for your Azure Bicep Infrastructure as Code task.'\nname: 'Bicep Planning"
},
{
"path": "agents/blueprint-mode.agent.md",
"chars": 10757,
"preview": "---\ndescription: \"Executes structured workflows (Debug, Express, Main, Loop) with strict correctness and maintainability"
},
{
"path": "agents/cast-imaging-impact-analysis.agent.md",
"chars": 4754,
"preview": "---\nname: 'CAST Imaging Impact Analysis Agent'\ndescription: 'Specialized agent for comprehensive change impact assessmen"
},
{
"path": "agents/cast-imaging-software-discovery.agent.md",
"chars": 3726,
"preview": "---\nname: 'CAST Imaging Software Discovery Agent'\ndescription: 'Specialized agent for comprehensive software application"
},
{
"path": "agents/cast-imaging-structural-quality-advisor.agent.md",
"chars": 3833,
"preview": "---\nname: 'CAST Imaging Structural Quality Advisor Agent'\ndescription: 'Specialized agent for identifying, analyzing, an"
},
{
"path": "agents/centos-linux-expert.agent.md",
"chars": 2059,
"preview": "---\nname: 'CentOS Linux Expert'\ndescription: 'CentOS (Stream/Legacy) Linux specialist focused on RHEL-compatible adminis"
},
{
"path": "agents/clojure-interactive-programming.agent.md",
"chars": 6636,
"preview": "---\ndescription: \"Expert Clojure pair programmer with REPL-first methodology, architectural oversight, and interactive p"
},
{
"path": "agents/code-tour.agent.md",
"chars": 7042,
"preview": "---\ndescription: 'Expert agent for creating and maintaining VSCode CodeTour files with comprehensive schema support and "
},
{
"path": "agents/comet-opik.agent.md",
"chars": 9883,
"preview": "---\nname: Comet Opik\ndescription: Unified Comet Opik agent for instrumenting LLM apps, managing prompts/projects, auditi"
},
{
"path": "agents/context-architect.agent.md",
"chars": 1834,
"preview": "---\ndescription: 'An agent that helps plan and execute multi-file changes by identifying relevant context and dependenci"
},
{
"path": "agents/context7.agent.md",
"chars": 26425,
"preview": "---\nname: Context7-Expert\ndescription: 'Expert in latest library versions, best practices, and correct syntax using up-t"
},
{
"path": "agents/critical-thinking.agent.md",
"chars": 2153,
"preview": "---\ndescription: 'Challenge assumptions and encourage critical thinking to ensure the best possible solution and outcome"
},
{
"path": "agents/csharp-dotnet-janitor.agent.md",
"chars": 3027,
"preview": "---\ndescription: 'Perform janitorial tasks on C#/.NET code including cleanup, modernization, and tech debt remediation.'"
},
{
"path": "agents/csharp-mcp-expert.agent.md",
"chars": 7063,
"preview": "---\ndescription: \"Expert assistant for developing Model Context Protocol (MCP) servers in C#\"\nname: \"C# MCP Server Exper"
},
{
"path": "agents/custom-agent-foundry.agent.md",
"chars": 7164,
"preview": "---\ndescription: 'Expert at designing and creating VS Code custom agents with optimal configurations'\nname: Custom Agent"
},
{
"path": "agents/debian-linux-expert.agent.md",
"chars": 2201,
"preview": "---\nname: 'Debian Linux Expert'\ndescription: 'Debian Linux specialist focused on stable system administration, apt-based"
},
{
"path": "agents/debug.agent.md",
"chars": 3562,
"preview": "---\ndescription: 'Debug your application to find and fix a bug'\nname: 'Debug Mode Instructions'\ntools: ['edit/editFiles'"
},
{
"path": "agents/declarative-agents-architect.agent.md",
"chars": 4057,
"preview": "---\nname: 'Declarative Agents Architect'\nmodel: GPT-4.1\ntools: ['codebase']\n---\n\nYou are a world-class Microsoft 365 Dec"
},
{
"path": "agents/defender-scout-kql.agent.md",
"chars": 5831,
"preview": "---\nname: 'Defender Scout KQL'\ndescription: 'Generates, validates, and optimizes KQL queries for Microsoft Defender XDR "
},
{
"path": "agents/demonstrate-understanding.agent.md",
"chars": 3046,
"preview": "---\ndescription: 'Validate user understanding of code, design patterns, and implementation details through guided questi"
},
{
"path": "agents/devils-advocate.agent.md",
"chars": 2124,
"preview": "---\ndescription: \"I play the devil's advocate to challenge and stress-test your ideas by finding flaws, risks, and edge "
},
{
"path": "agents/devops-expert.agent.md",
"chars": 8251,
"preview": "---\nname: 'DevOps Expert'\ndescription: 'DevOps specialist following the infinity loop principle (Plan → Code → Build → T"
},
{
"path": "agents/diffblue-cover.agent.md",
"chars": 3092,
"preview": "---\nname: DiffblueCover\ndescription: Expert agent for creating unit tests for java applications using Diffblue Cover.\nto"
},
{
"path": "agents/dotnet-maui.agent.md",
"chars": 6592,
"preview": "---\nname: MAUI Expert\ndescription: Support development of .NET MAUI cross-platform apps with controls, XAML, handlers, a"
},
{
"path": "agents/dotnet-upgrade.agent.md",
"chars": 7236,
"preview": "---\ndescription: 'Perform janitorial tasks on C#/.NET code including cleanup, modernization, and tech debt remediation.'"
},
{
"path": "agents/doublecheck.agent.md",
"chars": 5016,
"preview": "---\ndescription: 'Interactive verification agent for AI-generated output. Runs a three-layer pipeline (self-audit, sourc"
},
{
"path": "agents/droid.agent.md",
"chars": 9058,
"preview": "---\nname: droid\ndescription: Provides installation guidance, usage examples, and automation patterns for the Droid CLI, "
},
{
"path": "agents/drupal-expert.agent.md",
"chars": 21207,
"preview": "---\ndescription: 'Expert assistant for Drupal development, architecture, and best practices using PHP 8.3+ and modern Dr"
},
{
"path": "agents/dynatrace-expert.agent.md",
"chars": 25769,
"preview": "---\nname: Dynatrace Expert\ndescription: The Dynatrace Expert Agent integrates observability and security capabilities di"
},
{
"path": "agents/elasticsearch-observability.agent.md",
"chars": 4042,
"preview": "---\nname: elasticsearch-agent\ndescription: Our expert AI assistant for debugging code (O11y), optimizing vector search ("
},
{
"path": "agents/electron-angular-native.agent.md",
"chars": 8531,
"preview": "---\ndescription: \"Code Review Mode tailored for Electron app with Node.js backend (main), Angular frontend (render), and"
},
{
"path": "agents/expert-cpp-software-engineer.agent.md",
"chars": 3109,
"preview": "---\ndescription: 'Provide expert C++ software engineering guidance using modern C++ and industry best practices.'\nname: "
},
{
"path": "agents/expert-dotnet-software-engineer.agent.md",
"chars": 2356,
"preview": "---\ndescription: \"Provide expert .NET software engineering guidance using modern software design patterns.\"\nname: \"Exper"
},
{
"path": "agents/expert-nextjs-developer.agent.md",
"chars": 18881,
"preview": "---\ndescription: \"Expert Next.js 16 developer specializing in App Router, Server Components, Cache Components, Turbopack"
},
{
"path": "agents/expert-react-frontend-engineer.agent.md",
"chars": 24970,
"preview": "---\ndescription: \"Expert React 19.2 frontend engineer specializing in modern hooks, Server Components, Actions, TypeScri"
},
{
"path": "agents/fedora-linux-expert.agent.md",
"chars": 1898,
"preview": "---\nname: 'Fedora Linux Expert'\ndescription: 'Fedora (Red Hat family) Linux specialist focused on dnf, SELinux, and mode"
},
{
"path": "agents/gem-browser-tester.agent.md",
"chars": 5472,
"preview": "---\ndescription: \"Automates E2E scenarios with Chrome DevTools MCP, Playwright, Agent Browser. UI/UX validation using br"
},
{
"path": "agents/gem-devops.agent.md",
"chars": 4472,
"preview": "---\ndescription: \"Manages containers, CI/CD pipelines, and infrastructure deployment\"\nname: gem-devops\ndisable-model-inv"
},
{
"path": "agents/gem-documentation-writer.agent.md",
"chars": 4277,
"preview": "---\ndescription: \"Generates technical docs, diagrams, maintains code-documentation parity\"\nname: gem-documentation-write"
},
{
"path": "agents/gem-implementer.agent.md",
"chars": 5044,
"preview": "---\ndescription: \"Executes TDD code changes, ensures verification, maintains quality\"\nname: gem-implementer\ndisable-mode"
},
{
"path": "agents/gem-orchestrator.agent.md",
"chars": 10800,
"preview": "---\ndescription: \"Team Lead - Coordinates multi-agent workflows with energetic announcements, delegates tasks, synthesiz"
},
{
"path": "agents/gem-planner.agent.md",
"chars": 11163,
"preview": "---\ndescription: \"Creates DAG-based plans with pre-mortem analysis and task decomposition from research findings\"\nname: "
},
{
"path": "agents/gem-researcher.agent.md",
"chars": 9844,
"preview": "---\ndescription: \"Research specialist: gathers codebase context, identifies relevant files/patterns, returns structured "
},
{
"path": "agents/gem-reviewer.agent.md",
"chars": 5349,
"preview": "---\ndescription: \"Security gatekeeper for critical tasks—OWASP, secrets, compliance\"\nname: gem-reviewer\ndisable-model-in"
},
{
"path": "agents/gilfoyle.agent.md",
"chars": 3920,
"preview": "---\ndescription: 'Code review and analysis with the sardonic wit and technical elitism of Bertram Gilfoyle from Silicon "
},
{
"path": "agents/github-actions-expert.agent.md",
"chars": 4572,
"preview": "---\nname: 'GitHub Actions Expert'\ndescription: 'GitHub Actions specialist focused on secure CI/CD workflows, action pinn"
},
{
"path": "agents/go-mcp-expert.agent.md",
"chars": 4297,
"preview": "---\nmodel: GPT-4.1\ndescription: \"Expert assistant for building Model Context Protocol (MCP) servers in Go using the offi"
},
{
"path": "agents/gpt-5-beast-mode.agent.md",
"chars": 6830,
"preview": "---\ndescription: 'Beast Mode 2.0: A powerful autonomous agent tuned specifically for GPT-5 that can solve complex proble"
},
{
"path": "agents/hlbpa.agent.md",
"chars": 12173,
"preview": "---\ndescription: Your perfect AI chat mode for high-level architectural documentation and review. Perfect for targeted u"
},
{
"path": "agents/implementation-plan.agent.md",
"chars": 7073,
"preview": "---\ndescription: \"Generate an implementation plan for new features or refactoring existing code.\"\nname: \"Implementation "
},
{
"path": "agents/insiders-a11y-tracker.agent.md",
"chars": 2878,
"preview": "---\nname: 'VS Code Insiders Accessibility Tracker'\ndescription: 'Specialized agent for tracking and analyzing accessibil"
},
{
"path": "agents/janitor.agent.md",
"chars": 3121,
"preview": "---\ndescription: 'Perform janitorial tasks on any codebase including cleanup, simplification, and tech debt remediation."
},
{
"path": "agents/java-mcp-expert.agent.md",
"chars": 8296,
"preview": "---\ndescription: \"Expert assistance for building Model Context Protocol servers in Java using reactive streams, the offi"
},
{
"path": "agents/jfrog-sec.agent.md",
"chars": 1657,
"preview": "---\nname: JFrog Security Agent\ndescription: The dedicated Application Security agent for automated security remediation."
},
{
"path": "agents/kotlin-mcp-expert.agent.md",
"chars": 5625,
"preview": "---\nmodel: GPT-4.1\ndescription: \"Expert assistant for building Model Context Protocol (MCP) servers in Kotlin using the "
},
{
"path": "agents/kusto-assistant.agent.md",
"chars": 8995,
"preview": "---\ndescription: \"Expert KQL assistant for live Azure Data Explorer analysis via Azure MCP server\"\nname: 'Kusto Assistan"
},
{
"path": "agents/laravel-expert-agent.agent.md",
"chars": 23570,
"preview": "---\ndescription: 'Expert Laravel development assistant specializing in modern Laravel 12+ applications with Eloquent, Ar"
},
{
"path": "agents/launchdarkly-flag-cleanup.agent.md",
"chars": 8621,
"preview": "---\nname: launchdarkly-flag-cleanup\ndescription: >\n A specialized GitHub Copilot agent that uses the LaunchDarkly MCP s"
},
{
"path": "agents/lingodotdev-i18n.agent.md",
"chars": 1285,
"preview": "---\nname: Lingo.dev Localization (i18n) Agent\ndescription: Expert at implementing internationalization (i18n) in web app"
},
{
"path": "agents/markdown-accessibility-assistant.agent.md",
"chars": 10332,
"preview": "---\ndescription: 'Improves the accessibility of markdown files using five GitHub best practices'\nname: Markdown Accessib"
},
{
"path": "agents/mcp-m365-agent-expert.agent.md",
"chars": 4720,
"preview": "---\ndescription: 'Expert assistant for building MCP-based declarative agents for Microsoft 365 Copilot with Model Contex"
},
{
"path": "agents/mentor.agent.md",
"chars": 3558,
"preview": "---\ndescription: 'Help mentor the engineer by providing guidance and support.'\nname: 'Mentor mode'\ntools: ['codebase', '"
},
{
"path": "agents/mentoring-juniors.agent.md",
"chars": 6835,
"preview": "---\ndescription: 'Socratic mentor for junior developers. Guides through questions, never gives direct answers. Helps beg"
},
{
"path": "agents/meta-agentic-project-scaffold.agent.md",
"chars": 1535,
"preview": "---\ndescription: \"Meta agentic project creation assistant to help users create and manage project workflows effectively."
},
{
"path": "agents/microsoft-study-mode.agent.md",
"chars": 3632,
"preview": "---\ndescription: 'Activate your personal Microsoft/Azure tutor - learn through guided discovery, not just answers.'\nname"
},
{
"path": "agents/microsoft_learn_contributor.agent.md",
"chars": 16089,
"preview": "---\ndescription: 'Microsoft Learn Contributor chatmode for editing and writing Microsoft Learn documentation following M"
},
{
"path": "agents/modernization.agent.md",
"chars": 26788,
"preview": "---\ndescription: 'Human-in-the-loop modernization assistant for analyzing, documenting, and planning complete project mo"
},
{
"path": "agents/monday-bug-fixer.agent.md",
"chars": 13457,
"preview": "---\nname: Monday Bug Context Fixer\ndescription: Elite bug-fixing agent that enriches task context from Monday.com platfo"
},
{
"path": "agents/mongodb-performance-advisor.agent.md",
"chars": 4501,
"preview": "---\nname: mongodb-performance-advisor\ndescription: Analyze MongoDB database performance, offer query and index optimizat"
},
{
"path": "agents/ms-sql-dba.agent.md",
"chars": 2227,
"preview": "---\ndescription: \"Work with Microsoft SQL Server databases using the MS SQL extension.\"\nname: \"MS-SQL Database Administr"
},
{
"path": "agents/neo4j-docker-client-generator.agent.md",
"chars": 8256,
"preview": "---\nname: neo4j-docker-client-generator\ndescription: AI agent that generates simple, high-quality Python Neo4j client li"
},
{
"path": "agents/neon-migration-specialist.agent.md",
"chars": 2683,
"preview": "---\nname: Neon Migration Specialist\ndescription: Safe Postgres migrations with zero-downtime using Neon's branching work"
},
{
"path": "agents/neon-optimization-analyzer.agent.md",
"chars": 3557,
"preview": "---\nname: Neon Performance Analyzer\ndescription: Identify and fix slow Postgres queries automatically using Neon's branc"
},
{
"path": "agents/nuxt-expert.agent.md",
"chars": 4628,
"preview": "---\ndescription: 'Expert Nuxt developer specializing in Nuxt 3, Nitro, server routes, data fetching strategies, and perf"
},
{
"path": "agents/octopus-deploy-release-notes-mcp.agent.md",
"chars": 1906,
"preview": "---\nname: octopus-release-notes-with-mcp\ndescription: Generate release notes for a release in Octopus Deploy. The tools "
},
{
"path": "agents/one-shot-feature-issue-planner.agent.md",
"chars": 9732,
"preview": "---\ndescription: \"Cloud Agent to Turn a single new-feature request into a complete, issue-ready implementation plan with"
},
{
"path": "agents/openapi-to-application.agent.md",
"chars": 2376,
"preview": "---\ndescription: 'Expert assistant for generating working applications from OpenAPI specifications'\nname: 'OpenAPI to Ap"
},
{
"path": "agents/oracle-to-postgres-migration-expert.agent.md",
"chars": 3994,
"preview": "---\ndescription: 'Agent for Oracle-to-PostgreSQL application migrations. Educates users on migration concepts, pitfalls,"
},
{
"path": "agents/pagerduty-incident-responder.agent.md",
"chars": 2197,
"preview": "---\nname: PagerDuty Incident Responder\ndescription: Responds to PagerDuty incidents by analyzing incident context, ident"
},
{
"path": "agents/php-mcp-expert.agent.md",
"chars": 11130,
"preview": "---\ndescription: \"Expert assistant for PHP MCP server development using the official PHP SDK with attribute-based discov"
},
{
"path": "agents/pimcore-expert.agent.md",
"chars": 31944,
"preview": "---\ndescription: 'Expert Pimcore development assistant specializing in CMS, DAM, PIM, and E-Commerce solutions with Symf"
},
{
"path": "agents/plan.agent.md",
"chars": 6774,
"preview": "---\ndescription: \"Strategic planning and architecture assistant focused on thoughtful analysis before implementation. He"
},
{
"path": "agents/planner.agent.md",
"chars": 877,
"preview": "---\ndescription: \"Generate an implementation plan for new features or refactoring existing code.\"\nname: \"Planning mode i"
},
{
"path": "agents/platform-sre-kubernetes.agent.md",
"chars": 4140,
"preview": "---\nname: 'Platform SRE for Kubernetes'\ndescription: 'SRE-focused Kubernetes specialist prioritizing reliability, safe r"
},
{
"path": "agents/playwright-tester.agent.md",
"chars": 1327,
"preview": "---\ndescription: \"Testing mode for Playwright tests\"\nname: \"Playwright Tester Mode\"\ntools: [\"changes\", \"codebase\", \"edit"
},
{
"path": "agents/polyglot-test-builder.agent.md",
"chars": 1965,
"preview": "---\ndescription: 'Runs build/compile commands for any language and reports results. Discovers build command from project"
},
{
"path": "agents/polyglot-test-fixer.agent.md",
"chars": 2680,
"preview": "---\ndescription: 'Fixes compilation errors in source or test files. Analyzes error messages and applies corrections.'\nna"
},
{
"path": "agents/polyglot-test-generator.agent.md",
"chars": 2792,
"preview": "---\ndescription: 'Orchestrates comprehensive test generation using Research-Plan-Implement pipeline. Use when asked to g"
},
{
"path": "agents/polyglot-test-implementer.agent.md",
"chars": 4139,
"preview": "---\ndescription: 'Implements a single phase from the test plan. Writes test files and verifies they compile and pass. Ca"
},
{
"path": "agents/polyglot-test-linter.agent.md",
"chars": 1931,
"preview": "---\ndescription: 'Runs code formatting/linting for any language. Discovers lint command from project files if not specif"
},
{
"path": "agents/polyglot-test-planner.agent.md",
"chars": 3051,
"preview": "---\ndescription: 'Creates structured test implementation plans from research findings. Organizes tests into phases by pr"
},
{
"path": "agents/polyglot-test-researcher.agent.md",
"chars": 4012,
"preview": "---\ndescription: 'Analyzes codebases to understand structure, testing patterns, and testability. Identifies source files"
},
{
"path": "agents/polyglot-test-tester.agent.md",
"chars": 2160,
"preview": "---\ndescription: 'Runs test commands for any language and reports results. Discovers test command from project files if "
},
{
"path": "agents/postgresql-dba.agent.md",
"chars": 1276,
"preview": "---\ndescription: \"Work with PostgreSQL databases using the PostgreSQL extension.\"\nname: \"PostgreSQL Database Administrat"
},
{
"path": "agents/power-bi-data-modeling-expert.agent.md",
"chars": 12522,
"preview": "---\ndescription: \"Expert Power BI data modeling guidance using star schema principles, relationship design, and Microsof"
},
{
"path": "agents/power-bi-dax-expert.agent.md",
"chars": 10695,
"preview": "---\ndescription: \"Expert Power BI DAX guidance using Microsoft best practices for performance, readability, and maintain"
},
{
"path": "agents/power-bi-performance-expert.agent.md",
"chars": 15831,
"preview": "---\ndescription: \"Expert Power BI performance optimization guidance for troubleshooting, monitoring, and improving the p"
},
{
"path": "agents/power-bi-visualization-expert.agent.md",
"chars": 14915,
"preview": "---\ndescription: \"Expert Power BI report design and visualization guidance using Microsoft best practices for creating e"
},
{
"path": "agents/power-platform-expert.agent.md",
"chars": 7139,
"preview": "---\ndescription: \"Power Platform expert providing guidance on Code Apps, canvas apps, Dataverse, connectors, and Power P"
},
{
"path": "agents/power-platform-mcp-integration-expert.agent.md",
"chars": 7126,
"preview": "---\ndescription: Expert in Power Platform custom connector development with MCP integration for Copilot Studio - compreh"
},
{
"path": "agents/prd.agent.md",
"chars": 5538,
"preview": "---\ndescription: \"Generate a comprehensive Product Requirements Document (PRD) in Markdown, detailing user stories, acce"
},
{
"path": "agents/principal-software-engineer.agent.md",
"chars": 2747,
"preview": "---\ndescription: 'Provide principal-level software engineering guidance with focus on engineering excellence, technical "
},
{
"path": "agents/prompt-builder.agent.md",
"chars": 18541,
"preview": "---\ndescription: 'Expert prompt engineering and validation system for creating high-quality prompts - Brought to you by "
},
{
"path": "agents/prompt-engineer.agent.md",
"chars": 5661,
"preview": "---\ndescription: \"A specialized chat mode for analyzing and improving prompts. Every user input is treated as a prompt t"
},
{
"path": "agents/python-mcp-expert.agent.md",
"chars": 6113,
"preview": "---\ndescription: \"Expert assistant for developing Model Context Protocol (MCP) servers in Python\"\nname: \"Python MCP Serv"
},
{
"path": "agents/python-notebook-sample-builder.agent.md",
"chars": 3487,
"preview": "---\ndescription: 'Custom agent for building Python Notebooks in VS Code that demonstrate Azure and AI features'\nname: 'P"
},
{
"path": "agents/qa-subagent.agent.md",
"chars": 4333,
"preview": "---\nname: 'QA'\ndescription: 'Meticulous QA subagent for test planning, bug hunting, edge-case analysis, and implementati"
},
{
"path": "agents/reepl-linkedin.agent.md",
"chars": 2514,
"preview": "---\nname: reepl-linkedin\ndescription: \"AI-powered LinkedIn content creation, scheduling, and analytics agent. Create pos"
},
{
"path": "agents/refine-issue.agent.md",
"chars": 1343,
"preview": "---\ndescription: 'Refine the requirement or issue with Acceptance Criteria, Technical Considerations, Edge Cases, and NF"
},
{
"path": "agents/repo-architect.agent.md",
"chars": 12301,
"preview": "---\ndescription: 'Bootstraps and validates agentic project structures for GitHub Copilot (VS Code) and OpenCode CLI work"
},
{
"path": "agents/research-technical-spike.agent.md",
"chars": 9699,
"preview": "---\ndescription: \"Systematically research and validate technical spike documents through exhaustive investigation and co"
},
{
"path": "agents/ruby-mcp-expert.agent.md",
"chars": 7019,
"preview": "---\ndescription: \"Expert assistance for building Model Context Protocol servers in Ruby using the official MCP Ruby SDK "
},
{
"path": "agents/rug-orchestrator.agent.md",
"chars": 10799,
"preview": "---\nname: 'RUG'\ndescription: 'Pure orchestration agent that decomposes requests, delegates all work to subagents, valida"
},
{
"path": "agents/rust-gpt-4.1-beast-mode.agent.md",
"chars": 14133,
"preview": "---\ndescription: 'Rust GPT-4.1 Coding Beast Mode for VS Code'\nmodel: GPT-4.1\nname: 'Rust Beast Mode'\n\n---\nYou are an age"
},
{
"path": "agents/rust-mcp-expert.agent.md",
"chars": 12553,
"preview": "---\ndescription: \"Expert assistant for Rust MCP server development using the rmcp SDK with tokio async runtime\"\nname: \"R"
},
{
"path": "agents/salesforce-apex-triggers.agent.md",
"chars": 7938,
"preview": "---\nname: 'Salesforce Apex & Triggers Development'\ndescription: 'Implement Salesforce business logic using Apex classes "
},
{
"path": "agents/salesforce-aura-lwc.agent.md",
"chars": 2048,
"preview": "---\nname: 'Salesforce UI Development (Aura & LWC)'\ndescription: 'Implement Salesforce UI components using Lightning Web "
},
{
"path": "agents/salesforce-expert.agent.md",
"chars": 6879,
"preview": "---\ndescription: 'Provide expert Salesforce Platform guidance, including Apex Enterprise Patterns, LWC, integration, and"
},
{
"path": "agents/salesforce-flow.agent.md",
"chars": 1785,
"preview": "---\nname: 'Salesforce Flow Development'\ndescription: 'Implement business automation using Salesforce Flow following decl"
},
{
"path": "agents/salesforce-visualforce.agent.md",
"chars": 1830,
"preview": "---\nname: 'Salesforce Visualforce Development'\ndescription: 'Implement Visualforce pages and controllers following Sales"
},
{
"path": "agents/scientific-paper-research.agent.md",
"chars": 2294,
"preview": "---\nname: Scientific Paper Research\ndescription: 'Research agent that searches scientific papers and retrieves structure"
},
{
"path": "agents/se-gitops-ci-specialist.agent.md",
"chars": 5362,
"preview": "---\nname: 'SE: DevOps/CI'\ndescription: 'DevOps specialist for CI/CD pipelines, deployment debugging, and GitOps workflow"
},
{
"path": "agents/se-product-manager-advisor.agent.md",
"chars": 6497,
"preview": "---\nname: 'SE: Product Manager'\ndescription: 'Product management guidance for creating GitHub issues, aligning business "
},
{
"path": "agents/se-responsible-ai-code.agent.md",
"chars": 6542,
"preview": "---\nname: 'SE: Responsible AI'\ndescription: 'Responsible AI specialist ensuring AI works for everyone through bias preve"
},
{
"path": "agents/se-security-reviewer.agent.md",
"chars": 3946,
"preview": "---\nname: 'SE: Security'\ndescription: 'Security-focused code review specialist with OWASP Top 10, Zero Trust, LLM securi"
},
{
"path": "agents/se-system-architecture-reviewer.agent.md",
"chars": 4307,
"preview": "---\nname: 'SE: Architect'\ndescription: 'System architecture review specialist with Well-Architected frameworks, design v"
},
{
"path": "agents/se-technical-writer.agent.md",
"chars": 10765,
"preview": "---\nname: 'SE: Tech Writer'\ndescription: 'Technical writing specialist for creating developer documentation, technical b"
},
{
"path": "agents/se-ux-ui-designer.agent.md",
"chars": 10454,
"preview": "---\nname: 'SE: UX Designer'\ndescription: 'Jobs-to-be-Done analysis, user journey mapping, and UX research artifacts for "
}
]
// ... and 996 more files (download for full content)
About this extraction
This page contains the full source code of the github/awesome-copilot GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1196 files (8.9 MB), approximately 2.4M tokens, and a symbol index with 482 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.