workspace-architect 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +1 -0
- package/.gitattributes +1 -0
- package/.github/workflows/manual-publish.yml +36 -0
- package/.github/workflows/sync-and-publish.yml +58 -0
- package/.release-it.json +20 -0
- package/CHANGELOG.md +43 -0
- package/README.md +62 -0
- package/assets/chatmodes/4.1-Beast.chatmode.md +152 -0
- package/assets/chatmodes/Thinking-Beast-Mode.chatmode.md +337 -0
- package/assets/chatmodes/Ultimate-Transparent-Thinking-Beast-Mode.chatmode.md +644 -0
- package/assets/chatmodes/accessibility.chatmode.md +298 -0
- package/assets/chatmodes/address-comments.chatmode.md +59 -0
- package/assets/chatmodes/aem-frontend-specialist.chatmode.md +385 -0
- package/assets/chatmodes/api-architect.chatmode.md +40 -0
- package/assets/chatmodes/atlassian-requirements-to-jira.chatmode.md +444 -0
- package/assets/chatmodes/azure-logic-apps-expert.chatmode.md +100 -0
- package/assets/chatmodes/azure-principal-architect.chatmode.md +58 -0
- package/assets/chatmodes/azure-saas-architect.chatmode.md +118 -0
- package/assets/chatmodes/azure-verified-modules-bicep.chatmode.md +44 -0
- package/assets/chatmodes/azure-verified-modules-terraform.chatmode.md +58 -0
- package/assets/chatmodes/bicep-implement.chatmode.md +40 -0
- package/assets/chatmodes/bicep-plan.chatmode.md +112 -0
- package/assets/chatmodes/blueprint-mode-codex.chatmode.md +110 -0
- package/assets/chatmodes/blueprint-mode.chatmode.md +171 -0
- package/assets/chatmodes/clojure-interactive-programming.chatmode.md +174 -0
- package/assets/chatmodes/code-tour.chatmode.md +205 -0
- package/assets/chatmodes/critical-thinking.chatmode.md +23 -0
- package/assets/chatmodes/csharp-dotnet-janitor.chatmode.md +83 -0
- package/assets/chatmodes/csharp-mcp-expert.chatmode.md +69 -0
- package/assets/chatmodes/debug.chatmode.md +79 -0
- package/assets/chatmodes/declarative-agents-architect.chatmode.md +76 -0
- package/assets/chatmodes/demonstrate-understanding.chatmode.md +60 -0
- package/assets/chatmodes/dotnet-upgrade.chatmode.md +222 -0
- package/assets/chatmodes/drupal-expert.chatmode.md +687 -0
- package/assets/chatmodes/electron-angular-native.chatmode.md +285 -0
- package/assets/chatmodes/expert-cpp-software-engineer.chatmode.md +27 -0
- package/assets/chatmodes/expert-dotnet-software-engineer.chatmode.md +22 -0
- package/assets/chatmodes/expert-nextjs-developer.chatmode.md +477 -0
- package/assets/chatmodes/expert-react-frontend-engineer.chatmode.md +738 -0
- package/assets/chatmodes/gilfoyle.chatmode.md +66 -0
- package/assets/chatmodes/go-mcp-expert.chatmode.md +122 -0
- package/assets/chatmodes/gpt-5-beast-mode.chatmode.md +109 -0
- package/assets/chatmodes/hlbpa.chatmode.md +232 -0
- package/assets/chatmodes/implementation-plan.chatmode.md +159 -0
- package/assets/chatmodes/janitor.chatmode.md +89 -0
- package/assets/chatmodes/java-mcp-expert.chatmode.md +325 -0
- package/assets/chatmodes/kotlin-mcp-expert.chatmode.md +181 -0
- package/assets/chatmodes/kusto-assistant.chatmode.md +143 -0
- package/assets/chatmodes/laravel-expert-agent.chatmode.md +628 -0
- package/assets/chatmodes/mentor.chatmode.md +32 -0
- package/assets/chatmodes/meta-agentic-project-scaffold.chatmode.md +15 -0
- package/assets/chatmodes/microsoft-agent-framework-dotnet.chatmode.md +62 -0
- package/assets/chatmodes/microsoft-agent-framework-python.chatmode.md +62 -0
- package/assets/chatmodes/microsoft-study-mode.chatmode.md +32 -0
- package/assets/chatmodes/microsoft_learn_contributor.chatmode.md +388 -0
- package/assets/chatmodes/ms-sql-dba.chatmode.md +25 -0
- package/assets/chatmodes/php-mcp-expert.chatmode.md +498 -0
- package/assets/chatmodes/pimcore-expert.chatmode.md +869 -0
- package/assets/chatmodes/plan.chatmode.md +114 -0
- package/assets/chatmodes/planner.chatmode.md +14 -0
- package/assets/chatmodes/playwright-tester.chatmode.md +13 -0
- package/assets/chatmodes/postgresql-dba.chatmode.md +17 -0
- package/assets/chatmodes/power-bi-data-modeling-expert.chatmode.md +319 -0
- package/assets/chatmodes/power-bi-dax-expert.chatmode.md +334 -0
- package/assets/chatmodes/power-bi-performance-expert.chatmode.md +533 -0
- package/assets/chatmodes/power-bi-visualization-expert.chatmode.md +549 -0
- package/assets/chatmodes/power-platform-expert.chatmode.md +116 -0
- package/assets/chatmodes/power-platform-mcp-integration-expert.chatmode.md +149 -0
- package/assets/chatmodes/prd.chatmode.md +201 -0
- package/assets/chatmodes/principal-software-engineer.chatmode.md +41 -0
- package/assets/chatmodes/prompt-builder.chatmode.md +352 -0
- package/assets/chatmodes/prompt-engineer.chatmode.md +72 -0
- package/assets/chatmodes/python-mcp-expert.chatmode.md +99 -0
- package/assets/chatmodes/refine-issue.chatmode.md +34 -0
- package/assets/chatmodes/research-technical-spike.chatmode.md +169 -0
- package/assets/chatmodes/ruby-mcp-expert.chatmode.md +346 -0
- package/assets/chatmodes/rust-gpt-4.1-beast-mode.chatmode.md +197 -0
- package/assets/chatmodes/rust-mcp-expert.chatmode.md +465 -0
- package/assets/chatmodes/search-ai-optimization-expert.chatmode.md +227 -0
- package/assets/chatmodes/semantic-kernel-dotnet.chatmode.md +31 -0
- package/assets/chatmodes/semantic-kernel-python.chatmode.md +28 -0
- package/assets/chatmodes/shopify-expert.chatmode.md +681 -0
- package/assets/chatmodes/simple-app-idea-generator.chatmode.md +134 -0
- package/assets/chatmodes/software-engineer-agent-v1.chatmode.md +164 -0
- package/assets/chatmodes/specification.chatmode.md +127 -0
- package/assets/chatmodes/swift-mcp-expert.chatmode.md +240 -0
- package/assets/chatmodes/task-planner.chatmode.md +374 -0
- package/assets/chatmodes/task-researcher.chatmode.md +254 -0
- package/assets/chatmodes/tdd-green.chatmode.md +59 -0
- package/assets/chatmodes/tdd-red.chatmode.md +59 -0
- package/assets/chatmodes/tdd-refactor.chatmode.md +84 -0
- package/assets/chatmodes/tech-debt-remediation-plan.chatmode.md +49 -0
- package/assets/chatmodes/terraform-azure-implement.chatmode.md +104 -0
- package/assets/chatmodes/terraform-azure-planning.chatmode.md +157 -0
- package/assets/chatmodes/typescript-mcp-expert.chatmode.md +91 -0
- package/assets/chatmodes/voidbeast-gpt41enhanced.chatmode.md +230 -0
- package/assets/chatmodes/wg-code-alchemist.chatmode.md +61 -0
- package/assets/chatmodes/wg-code-sentinel.chatmode.md +55 -0
- package/assets/collections/ai-prompt-engineering.json +18 -0
- package/assets/collections/angular-development.json +7 -0
- package/assets/collections/azure-cloud-architect.json +29 -0
- package/assets/collections/cpp-development.json +6 -0
- package/assets/collections/database-administration.json +8 -0
- package/assets/collections/devops-sre.json +11 -0
- package/assets/collections/dotnet-development.json +22 -0
- package/assets/collections/general-productivity.json +9 -0
- package/assets/collections/go-development.json +7 -0
- package/assets/collections/java-spring-developer.json +26 -0
- package/assets/collections/learning-mentoring.json +10 -0
- package/assets/collections/legacy-migration.json +4 -0
- package/assets/collections/mcp-specialist.json +41 -0
- package/assets/collections/mobile-development.json +4 -0
- package/assets/collections/php-cms-development.json +11 -0
- package/assets/collections/power-platform-specialist.json +31 -0
- package/assets/collections/project-management.json +12 -0
- package/assets/collections/python-development.json +13 -0
- package/assets/collections/quality-assurance.json +13 -0
- package/assets/collections/ruby-development.json +9 -0
- package/assets/collections/rust-development.json +10 -0
- package/assets/collections/security-specialist.json +8 -0
- package/assets/collections/software-architect.json +25 -0
- package/assets/collections/technical-writing.json +9 -0
- package/assets/collections/web-frontend-development.json +14 -0
- package/assets/instructions/a11y.instructions.md +369 -0
- package/assets/instructions/ai-prompt-engineering-safety-best-practices.instructions.md +867 -0
- package/assets/instructions/angular.instructions.md +104 -0
- package/assets/instructions/ansible.instructions.md +88 -0
- package/assets/instructions/aspnet-rest-apis.instructions.md +110 -0
- package/assets/instructions/astro.instructions.md +182 -0
- package/assets/instructions/azure-devops-pipelines.instructions.md +185 -0
- package/assets/instructions/azure-functions-typescript.instructions.md +14 -0
- package/assets/instructions/azure-logic-apps-power-automate.instructions.md +1943 -0
- package/assets/instructions/azure-verified-modules-terraform.instructions.md +229 -0
- package/assets/instructions/bicep-code-best-practices.instructions.md +54 -0
- package/assets/instructions/blazor.instructions.md +77 -0
- package/assets/instructions/clojure.instructions.md +349 -0
- package/assets/instructions/cmake-vcpkg.instructions.md +10 -0
- package/assets/instructions/codexer.instructions.md +428 -0
- package/assets/instructions/coldfusion-cfc.instructions.md +30 -0
- package/assets/instructions/coldfusion-cfm.instructions.md +28 -0
- package/assets/instructions/collections.instructions.md +54 -0
- package/assets/instructions/containerization-docker-best-practices.instructions.md +681 -0
- package/assets/instructions/convert-jpa-to-spring-data-cosmos.instructions.md +949 -0
- package/assets/instructions/copilot-thought-logging.instructions.md +62 -0
- package/assets/instructions/csharp-ja.instructions.md +114 -0
- package/assets/instructions/csharp-ko.instructions.md +77 -0
- package/assets/instructions/csharp-mcp-server.instructions.md +95 -0
- package/assets/instructions/csharp.instructions.md +114 -0
- package/assets/instructions/dart-n-flutter.instructions.md +447 -0
- package/assets/instructions/declarative-agents-microsoft365.instructions.md +316 -0
- package/assets/instructions/devbox-image-definition.instructions.md +302 -0
- package/assets/instructions/devops-core-principles.instructions.md +167 -0
- package/assets/instructions/dotnet-architecture-good-practices.instructions.md +279 -0
- package/assets/instructions/dotnet-framework.instructions.md +113 -0
- package/assets/instructions/dotnet-maui-9-to-dotnet-maui-10-upgrade.instructions.md +1922 -0
- package/assets/instructions/dotnet-maui.instructions.md +69 -0
- package/assets/instructions/dotnet-upgrade.instructions.md +287 -0
- package/assets/instructions/dotnet-wpf.instructions.md +79 -0
- package/assets/instructions/genaiscript.instructions.md +21 -0
- package/assets/instructions/generate-modern-terraform-code-for-azure.instructions.md +82 -0
- package/assets/instructions/gilfoyle-code-review.instructions.md +114 -0
- package/assets/instructions/github-actions-ci-cd-best-practices.instructions.md +607 -0
- package/assets/instructions/go-mcp-server.instructions.md +346 -0
- package/assets/instructions/go.instructions.md +373 -0
- package/assets/instructions/instructions.instructions.md +256 -0
- package/assets/instructions/java-11-to-java-17-upgrade.instructions.md +793 -0
- package/assets/instructions/java-17-to-java-21-upgrade.instructions.md +464 -0
- package/assets/instructions/java-21-to-java-25-upgrade.instructions.md +311 -0
- package/assets/instructions/java-mcp-server.instructions.md +553 -0
- package/assets/instructions/java.instructions.md +81 -0
- package/assets/instructions/joyride-user-project.instructions.md +206 -0
- package/assets/instructions/joyride-workspace-automation.instructions.md +46 -0
- package/assets/instructions/kotlin-mcp-server.instructions.md +481 -0
- package/assets/instructions/kubernetes-deployment-best-practices.instructions.md +307 -0
- package/assets/instructions/langchain-python.instructions.md +229 -0
- package/assets/instructions/localization.instructions.md +39 -0
- package/assets/instructions/makefile.instructions.md +410 -0
- package/assets/instructions/markdown.instructions.md +52 -0
- package/assets/instructions/memory-bank.instructions.md +299 -0
- package/assets/instructions/mongo-dba.instructions.md +25 -0
- package/assets/instructions/ms-sql-dba.instructions.md +25 -0
- package/assets/instructions/nestjs.instructions.md +406 -0
- package/assets/instructions/nextjs-tailwind.instructions.md +72 -0
- package/assets/instructions/nextjs.instructions.md +143 -0
- package/assets/instructions/nodejs-javascript-vitest.instructions.md +30 -0
- package/assets/instructions/object-calisthenics.instructions.md +302 -0
- package/assets/instructions/oqtane.instructions.md +86 -0
- package/assets/instructions/performance-optimization.instructions.md +420 -0
- package/assets/instructions/php-mcp-server.instructions.md +809 -0
- package/assets/instructions/playwright-dotnet.instructions.md +101 -0
- package/assets/instructions/playwright-python.instructions.md +62 -0
- package/assets/instructions/playwright-typescript.instructions.md +86 -0
- package/assets/instructions/power-apps-canvas-yaml.instructions.md +827 -0
- package/assets/instructions/power-apps-code-apps.instructions.md +601 -0
- package/assets/instructions/power-bi-custom-visuals-development.instructions.md +810 -0
- package/assets/instructions/power-bi-data-modeling-best-practices.instructions.md +639 -0
- package/assets/instructions/power-bi-dax-best-practices.instructions.md +795 -0
- package/assets/instructions/power-bi-devops-alm-best-practices.instructions.md +623 -0
- package/assets/instructions/power-bi-report-design-best-practices.instructions.md +752 -0
- package/assets/instructions/power-bi-security-rls-best-practices.instructions.md +504 -0
- package/assets/instructions/power-platform-connector.instructions.md +430 -0
- package/assets/instructions/power-platform-mcp-development.instructions.md +88 -0
- package/assets/instructions/powershell-pester-5.instructions.md +197 -0
- package/assets/instructions/powershell.instructions.md +356 -0
- package/assets/instructions/prompt.instructions.md +73 -0
- package/assets/instructions/python-mcp-server.instructions.md +204 -0
- package/assets/instructions/python.instructions.md +56 -0
- package/assets/instructions/quarkus-mcp-server-sse.instructions.md +49 -0
- package/assets/instructions/quarkus.instructions.md +98 -0
- package/assets/instructions/r.instructions.md +116 -0
- package/assets/instructions/reactjs.instructions.md +162 -0
- package/assets/instructions/ruby-mcp-server.instructions.md +629 -0
- package/assets/instructions/ruby-on-rails.instructions.md +124 -0
- package/assets/instructions/rust-mcp-server.instructions.md +715 -0
- package/assets/instructions/rust.instructions.md +135 -0
- package/assets/instructions/security-and-owasp.instructions.md +51 -0
- package/assets/instructions/self-explanatory-code-commenting.instructions.md +162 -0
- package/assets/instructions/shell.instructions.md +132 -0
- package/assets/instructions/spec-driven-workflow-v1.instructions.md +323 -0
- package/assets/instructions/springboot.instructions.md +68 -0
- package/assets/instructions/sql-sp-generation.instructions.md +74 -0
- package/assets/instructions/svelte.instructions.md +161 -0
- package/assets/instructions/swift-mcp-server.instructions.md +498 -0
- package/assets/instructions/taming-copilot.instructions.md +40 -0
- package/assets/instructions/tanstack-start-shadcn-tailwind.instructions.md +212 -0
- package/assets/instructions/task-implementation.instructions.md +190 -0
- package/assets/instructions/tasksync.instructions.md +352 -0
- package/assets/instructions/terraform-azure.instructions.md +254 -0
- package/assets/instructions/terraform-sap-btp.instructions.md +195 -0
- package/assets/instructions/terraform.instructions.md +113 -0
- package/assets/instructions/typescript-5-es2022.instructions.md +114 -0
- package/assets/instructions/typescript-mcp-server.instructions.md +228 -0
- package/assets/instructions/update-code-from-shorthand.instructions.md +130 -0
- package/assets/instructions/vuejs3.instructions.md +153 -0
- package/assets/instructions/wordpress.instructions.md +186 -0
- package/assets/prompts/add-educational-comments.prompt.md +129 -0
- package/assets/prompts/ai-prompt-engineering-safety-review.prompt.md +230 -0
- package/assets/prompts/architecture-blueprint-generator.prompt.md +322 -0
- package/assets/prompts/aspnet-minimal-api-openapi.prompt.md +42 -0
- package/assets/prompts/az-cost-optimize.prompt.md +305 -0
- package/assets/prompts/azure-resource-health-diagnose.prompt.md +290 -0
- package/assets/prompts/boost-prompt.prompt.md +25 -0
- package/assets/prompts/breakdown-epic-arch.prompt.md +66 -0
- package/assets/prompts/breakdown-epic-pm.prompt.md +58 -0
- package/assets/prompts/breakdown-feature-implementation.prompt.md +128 -0
- package/assets/prompts/breakdown-feature-prd.prompt.md +61 -0
- package/assets/prompts/breakdown-plan.prompt.md +509 -0
- package/assets/prompts/breakdown-test.prompt.md +365 -0
- package/assets/prompts/code-exemplars-blueprint-generator.prompt.md +126 -0
- package/assets/prompts/comment-code-generate-a-tutorial.prompt.md +26 -0
- package/assets/prompts/containerize-aspnet-framework.prompt.md +455 -0
- package/assets/prompts/containerize-aspnetcore.prompt.md +393 -0
- package/assets/prompts/conventional-commit.prompt.md +73 -0
- package/assets/prompts/copilot-instructions-blueprint-generator.prompt.md +294 -0
- package/assets/prompts/cosmosdb-datamodeling.prompt.md +1045 -0
- package/assets/prompts/create-agentsmd.prompt.md +249 -0
- package/assets/prompts/create-architectural-decision-record.prompt.md +97 -0
- package/assets/prompts/create-github-action-workflow-specification.prompt.md +276 -0
- package/assets/prompts/create-github-issue-feature-from-specification.prompt.md +28 -0
- package/assets/prompts/create-github-issues-feature-from-implementation-plan.prompt.md +28 -0
- package/assets/prompts/create-github-issues-for-unmet-specification-requirements.prompt.md +35 -0
- package/assets/prompts/create-github-pull-request-from-specification.prompt.md +24 -0
- package/assets/prompts/create-implementation-plan.prompt.md +157 -0
- package/assets/prompts/create-llms.prompt.md +210 -0
- package/assets/prompts/create-oo-component-documentation.prompt.md +193 -0
- package/assets/prompts/create-readme.prompt.md +21 -0
- package/assets/prompts/create-specification.prompt.md +127 -0
- package/assets/prompts/create-spring-boot-java-project.prompt.md +163 -0
- package/assets/prompts/create-spring-boot-kotlin-project.prompt.md +147 -0
- package/assets/prompts/create-technical-spike.prompt.md +231 -0
- package/assets/prompts/csharp-async.prompt.md +50 -0
- package/assets/prompts/csharp-docs.prompt.md +63 -0
- package/assets/prompts/csharp-mcp-server-generator.prompt.md +59 -0
- package/assets/prompts/csharp-mstest.prompt.md +67 -0
- package/assets/prompts/csharp-nunit.prompt.md +72 -0
- package/assets/prompts/csharp-tunit.prompt.md +101 -0
- package/assets/prompts/csharp-xunit.prompt.md +69 -0
- package/assets/prompts/declarative-agents.prompt.md +93 -0
- package/assets/prompts/documentation-writer.prompt.md +46 -0
- package/assets/prompts/dotnet-best-practices.prompt.md +84 -0
- package/assets/prompts/dotnet-design-pattern-review.prompt.md +41 -0
- package/assets/prompts/dotnet-upgrade.prompt.md +116 -0
- package/assets/prompts/editorconfig.prompt.md +64 -0
- package/assets/prompts/ef-core.prompt.md +76 -0
- package/assets/prompts/finalize-agent-prompt.prompt.md +27 -0
- package/assets/prompts/first-ask.prompt.md +29 -0
- package/assets/prompts/folder-structure-blueprint-generator.prompt.md +405 -0
- package/assets/prompts/gen-specs-as-issues.prompt.md +165 -0
- package/assets/prompts/generate-custom-instructions-from-codebase.prompt.md +240 -0
- package/assets/prompts/git-flow-branch-creator.prompt.md +293 -0
- package/assets/prompts/github-copilot-starter.prompt.md +372 -0
- package/assets/prompts/go-mcp-server-generator.prompt.md +334 -0
- package/assets/prompts/java-docs.prompt.md +24 -0
- package/assets/prompts/java-junit.prompt.md +64 -0
- package/assets/prompts/java-mcp-server-generator.prompt.md +756 -0
- package/assets/prompts/java-refactoring-extract-method.prompt.md +105 -0
- package/assets/prompts/java-refactoring-remove-parameter.prompt.md +85 -0
- package/assets/prompts/java-springboot.prompt.md +66 -0
- package/assets/prompts/javascript-typescript-jest.prompt.md +44 -0
- package/assets/prompts/kotlin-mcp-server-generator.prompt.md +449 -0
- package/assets/prompts/kotlin-springboot.prompt.md +71 -0
- package/assets/prompts/mcp-copilot-studio-server-generator.prompt.md +118 -0
- package/assets/prompts/memory-merger.prompt.md +107 -0
- package/assets/prompts/mkdocs-translations.prompt.md +110 -0
- package/assets/prompts/model-recommendation.prompt.md +677 -0
- package/assets/prompts/multi-stage-dockerfile.prompt.md +47 -0
- package/assets/prompts/my-issues.prompt.md +9 -0
- package/assets/prompts/my-pull-requests.prompt.md +15 -0
- package/assets/prompts/next-intl-add-language.prompt.md +20 -0
- package/assets/prompts/php-mcp-server-generator.prompt.md +522 -0
- package/assets/prompts/playwright-automation-fill-in-form.prompt.md +30 -0
- package/assets/prompts/playwright-explore-website.prompt.md +19 -0
- package/assets/prompts/playwright-generate-test.prompt.md +19 -0
- package/assets/prompts/postgresql-code-review.prompt.md +214 -0
- package/assets/prompts/postgresql-optimization.prompt.md +406 -0
- package/assets/prompts/power-apps-code-app-scaffold.prompt.md +150 -0
- package/assets/prompts/power-bi-dax-optimization.prompt.md +175 -0
- package/assets/prompts/power-bi-model-design-review.prompt.md +405 -0
- package/assets/prompts/power-bi-performance-troubleshooting.prompt.md +384 -0
- package/assets/prompts/power-bi-report-design-consultation.prompt.md +353 -0
- package/assets/prompts/power-platform-mcp-connector-suite.prompt.md +156 -0
- package/assets/prompts/project-workflow-analysis-blueprint-generator.prompt.md +294 -0
- package/assets/prompts/prompt-builder.prompt.md +142 -0
- package/assets/prompts/pytest-coverage.prompt.md +28 -0
- package/assets/prompts/python-mcp-server-generator.prompt.md +105 -0
- package/assets/prompts/readme-blueprint-generator.prompt.md +79 -0
- package/assets/prompts/remember-interactive-programming.prompt.md +13 -0
- package/assets/prompts/remember.prompt.md +125 -0
- package/assets/prompts/repo-story-time.prompt.md +156 -0
- package/assets/prompts/review-and-refactor.prompt.md +15 -0
- package/assets/prompts/ruby-mcp-server-generator.prompt.md +660 -0
- package/assets/prompts/rust-mcp-server-generator.prompt.md +578 -0
- package/assets/prompts/shuffle-json-data.prompt.md +151 -0
- package/assets/prompts/sql-code-review.prompt.md +303 -0
- package/assets/prompts/sql-optimization.prompt.md +298 -0
- package/assets/prompts/suggest-awesome-github-copilot-agents.prompt.md +72 -0
- package/assets/prompts/suggest-awesome-github-copilot-chatmodes.prompt.md +71 -0
- package/assets/prompts/suggest-awesome-github-copilot-collections.prompt.md +149 -0
- package/assets/prompts/suggest-awesome-github-copilot-instructions.prompt.md +88 -0
- package/assets/prompts/suggest-awesome-github-copilot-prompts.prompt.md +71 -0
- package/assets/prompts/swift-mcp-server-generator.prompt.md +669 -0
- package/assets/prompts/technology-stack-blueprint-generator.prompt.md +242 -0
- package/assets/prompts/typescript-mcp-server-generator.prompt.md +90 -0
- package/assets/prompts/update-avm-modules-in-bicep.prompt.md +60 -0
- package/assets/prompts/update-implementation-plan.prompt.md +157 -0
- package/assets/prompts/update-llms.prompt.md +216 -0
- package/assets/prompts/update-markdown-file-index.prompt.md +76 -0
- package/assets/prompts/update-oo-component-documentation.prompt.md +162 -0
- package/assets/prompts/update-specification.prompt.md +127 -0
- package/assets/prompts/write-coding-standards-from-file.prompt.md +316 -0
- package/bin/cli.js +200 -0
- package/package.json +53 -0
- package/scripts/sync.js +99 -0
- package/verdaccio/config.yaml +202 -0
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
---
|
|
2
|
+
applyTo: '**/*.Tests.ps1'
|
|
3
|
+
description: 'PowerShell Pester testing best practices based on Pester v5 conventions'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PowerShell Pester v5 Testing Guidelines
|
|
7
|
+
|
|
8
|
+
This guide provides PowerShell-specific instructions for creating automated tests using PowerShell Pester v5 module. Follow PowerShell cmdlet development guidelines in [powershell.instructions.md](./powershell.instructions.md) for general PowerShell scripting best practices.
|
|
9
|
+
|
|
10
|
+
## File Naming and Structure
|
|
11
|
+
|
|
12
|
+
- **File Convention:** Use `*.Tests.ps1` naming pattern
|
|
13
|
+
- **Placement:** Place test files next to tested code or in dedicated test directories
|
|
14
|
+
- **Import Pattern:** Use `BeforeAll { . $PSScriptRoot/FunctionName.ps1 }` to import tested functions
|
|
15
|
+
- **No Direct Code:** Put ALL code inside Pester blocks (`BeforeAll`, `Describe`, `Context`, `It`, etc.)
|
|
16
|
+
|
|
17
|
+
## Test Structure Hierarchy
|
|
18
|
+
|
|
19
|
+
```powershell
|
|
20
|
+
BeforeAll { # Import tested functions }
|
|
21
|
+
Describe 'FunctionName' {
|
|
22
|
+
Context 'When condition' {
|
|
23
|
+
BeforeAll { # Setup for context }
|
|
24
|
+
It 'Should behavior' { # Individual test }
|
|
25
|
+
AfterAll { # Cleanup for context }
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Core Keywords
|
|
31
|
+
|
|
32
|
+
- **`Describe`**: Top-level grouping, typically named after function being tested
|
|
33
|
+
- **`Context`**: Sub-grouping within Describe for specific scenarios
|
|
34
|
+
- **`It`**: Individual test cases, use descriptive names
|
|
35
|
+
- **`Should`**: Assertion keyword for test validation
|
|
36
|
+
- **`BeforeAll/AfterAll`**: Setup/teardown once per block
|
|
37
|
+
- **`BeforeEach/AfterEach`**: Setup/teardown before/after each test
|
|
38
|
+
|
|
39
|
+
## Setup and Teardown
|
|
40
|
+
|
|
41
|
+
- **`BeforeAll`**: Runs once at start of containing block, use for expensive operations
|
|
42
|
+
- **`BeforeEach`**: Runs before every `It` in block, use for test-specific setup
|
|
43
|
+
- **`AfterEach`**: Runs after every `It`, guaranteed even if test fails
|
|
44
|
+
- **`AfterAll`**: Runs once at end of block, use for cleanup
|
|
45
|
+
- **Variable Scoping**: `BeforeAll` variables available to child blocks (read-only), `BeforeEach/It/AfterEach` share same scope
|
|
46
|
+
|
|
47
|
+
## Assertions (Should)
|
|
48
|
+
|
|
49
|
+
- **Basic Comparisons**: `-Be`, `-BeExactly`, `-Not -Be`
|
|
50
|
+
- **Collections**: `-Contain`, `-BeIn`, `-HaveCount`
|
|
51
|
+
- **Numeric**: `-BeGreaterThan`, `-BeLessThan`, `-BeGreaterOrEqual`
|
|
52
|
+
- **Strings**: `-Match`, `-Like`, `-BeNullOrEmpty`
|
|
53
|
+
- **Types**: `-BeOfType`, `-BeTrue`, `-BeFalse`
|
|
54
|
+
- **Files**: `-Exist`, `-FileContentMatch`
|
|
55
|
+
- **Exceptions**: `-Throw`, `-Not -Throw`
|
|
56
|
+
|
|
57
|
+
## Mocking
|
|
58
|
+
|
|
59
|
+
- **`Mock CommandName { ScriptBlock }`**: Replace command behavior
|
|
60
|
+
- **`-ParameterFilter`**: Mock only when parameters match condition
|
|
61
|
+
- **`-Verifiable`**: Mark mock as requiring verification
|
|
62
|
+
- **`Should -Invoke`**: Verify mock was called specific number of times
|
|
63
|
+
- **`Should -InvokeVerifiable`**: Verify all verifiable mocks were called
|
|
64
|
+
- **Scope**: Mocks default to containing block scope
|
|
65
|
+
|
|
66
|
+
```powershell
|
|
67
|
+
Mock Get-Service { @{ Status = 'Running' } } -ParameterFilter { $Name -eq 'TestService' }
|
|
68
|
+
Should -Invoke Get-Service -Exactly 1 -ParameterFilter { $Name -eq 'TestService' }
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Test Cases (Data-Driven Tests)
|
|
72
|
+
|
|
73
|
+
Use `-TestCases` or `-ForEach` for parameterized tests:
|
|
74
|
+
|
|
75
|
+
```powershell
|
|
76
|
+
It 'Should return <Expected> for <Input>' -TestCases @(
|
|
77
|
+
@{ Input = 'value1'; Expected = 'result1' }
|
|
78
|
+
@{ Input = 'value2'; Expected = 'result2' }
|
|
79
|
+
) {
|
|
80
|
+
Get-Function $Input | Should -Be $Expected
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Data-Driven Tests
|
|
85
|
+
|
|
86
|
+
- **`-ForEach`**: Available on `Describe`, `Context`, and `It` for generating multiple tests from data
|
|
87
|
+
- **`-TestCases`**: Alias for `-ForEach` on `It` blocks (backwards compatibility)
|
|
88
|
+
- **Hashtable Data**: Each item defines variables available in test (e.g., `@{ Name = 'value'; Expected = 'result' }`)
|
|
89
|
+
- **Array Data**: Uses `$_` variable for current item
|
|
90
|
+
- **Templates**: Use `<variablename>` in test names for dynamic expansion
|
|
91
|
+
|
|
92
|
+
```powershell
|
|
93
|
+
# Hashtable approach
|
|
94
|
+
It 'Returns <Expected> for <Name>' -ForEach @(
|
|
95
|
+
@{ Name = 'test1'; Expected = 'result1' }
|
|
96
|
+
@{ Name = 'test2'; Expected = 'result2' }
|
|
97
|
+
) { Get-Function $Name | Should -Be $Expected }
|
|
98
|
+
|
|
99
|
+
# Array approach
|
|
100
|
+
It 'Contains <_>' -ForEach 'item1', 'item2' { Get-Collection | Should -Contain $_ }
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Tags
|
|
104
|
+
|
|
105
|
+
- **Available on**: `Describe`, `Context`, and `It` blocks
|
|
106
|
+
- **Filtering**: Use `-TagFilter` and `-ExcludeTagFilter` with `Invoke-Pester`
|
|
107
|
+
- **Wildcards**: Tags support `-like` wildcards for flexible filtering
|
|
108
|
+
|
|
109
|
+
```powershell
|
|
110
|
+
Describe 'Function' -Tag 'Unit' {
|
|
111
|
+
It 'Should work' -Tag 'Fast', 'Stable' { }
|
|
112
|
+
It 'Should be slow' -Tag 'Slow', 'Integration' { }
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
# Run only fast unit tests
|
|
116
|
+
Invoke-Pester -TagFilter 'Unit' -ExcludeTagFilter 'Slow'
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Skip
|
|
120
|
+
|
|
121
|
+
- **`-Skip`**: Available on `Describe`, `Context`, and `It` to skip tests
|
|
122
|
+
- **Conditional**: Use `-Skip:$condition` for dynamic skipping
|
|
123
|
+
- **Runtime Skip**: Use `Set-ItResult -Skipped` during test execution (setup/teardown still run)
|
|
124
|
+
|
|
125
|
+
```powershell
|
|
126
|
+
It 'Should work on Windows' -Skip:(-not $IsWindows) { }
|
|
127
|
+
Context 'Integration tests' -Skip { }
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Error Handling
|
|
131
|
+
|
|
132
|
+
- **Continue on Failure**: Use `Should.ErrorAction = 'Continue'` to collect multiple failures
|
|
133
|
+
- **Stop on Critical**: Use `-ErrorAction Stop` for pre-conditions
|
|
134
|
+
- **Test Exceptions**: Use `{ Code } | Should -Throw` for exception testing
|
|
135
|
+
|
|
136
|
+
## Best Practices
|
|
137
|
+
|
|
138
|
+
- **Descriptive Names**: Use clear test descriptions that explain behavior
|
|
139
|
+
- **AAA Pattern**: Arrange (setup), Act (execute), Assert (verify)
|
|
140
|
+
- **Isolated Tests**: Each test should be independent
|
|
141
|
+
- **Avoid Aliases**: Use full cmdlet names (`Where-Object` not `?`)
|
|
142
|
+
- **Single Responsibility**: One assertion per test when possible
|
|
143
|
+
- **Test File Organization**: Group related tests in Context blocks. Context blocks can be nested.
|
|
144
|
+
|
|
145
|
+
## Example Test Pattern
|
|
146
|
+
|
|
147
|
+
```powershell
|
|
148
|
+
BeforeAll {
|
|
149
|
+
. $PSScriptRoot/Get-UserInfo.ps1
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
Describe 'Get-UserInfo' {
|
|
153
|
+
Context 'When user exists' {
|
|
154
|
+
BeforeAll {
|
|
155
|
+
Mock Get-ADUser { @{ Name = 'TestUser'; Enabled = $true } }
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
It 'Should return user object' {
|
|
159
|
+
$result = Get-UserInfo -Username 'TestUser'
|
|
160
|
+
$result | Should -Not -BeNullOrEmpty
|
|
161
|
+
$result.Name | Should -Be 'TestUser'
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
It 'Should call Get-ADUser once' {
|
|
165
|
+
Get-UserInfo -Username 'TestUser'
|
|
166
|
+
Should -Invoke Get-ADUser -Exactly 1
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
Context 'When user does not exist' {
|
|
171
|
+
BeforeAll {
|
|
172
|
+
Mock Get-ADUser { throw "User not found" }
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
It 'Should throw exception' {
|
|
176
|
+
{ Get-UserInfo -Username 'NonExistent' } | Should -Throw "*not found*"
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Configuration
|
|
183
|
+
|
|
184
|
+
Configuration is defined **outside** test files when calling `Invoke-Pester` to control execution behavior.
|
|
185
|
+
|
|
186
|
+
```powershell
|
|
187
|
+
# Create configuration (Pester 5.2+)
|
|
188
|
+
$config = New-PesterConfiguration
|
|
189
|
+
$config.Run.Path = './Tests'
|
|
190
|
+
$config.Output.Verbosity = 'Detailed'
|
|
191
|
+
$config.TestResult.Enabled = $true
|
|
192
|
+
$config.TestResult.OutputFormat = 'NUnitXml'
|
|
193
|
+
$config.Should.ErrorAction = 'Continue'
|
|
194
|
+
Invoke-Pester -Configuration $config
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Key Sections**: Run (Path, Exit), Filter (Tag, ExcludeTag), Output (Verbosity), TestResult (Enabled, OutputFormat), CodeCoverage (Enabled, Path), Should (ErrorAction), Debug
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
---
|
|
2
|
+
applyTo: '**/*.ps1,**/*.psm1'
|
|
3
|
+
description: 'PowerShell cmdlet and scripting best practices based on Microsoft guidelines'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# PowerShell Cmdlet Development Guidelines
|
|
7
|
+
|
|
8
|
+
This guide provides PowerShell-specific instructions to help GitHub Copilot generate idiomatic,
|
|
9
|
+
safe, and maintainable scripts. It aligns with Microsoft’s PowerShell cmdlet development guidelines.
|
|
10
|
+
|
|
11
|
+
## Naming Conventions
|
|
12
|
+
|
|
13
|
+
- **Verb-Noun Format:**
|
|
14
|
+
- Use approved PowerShell verbs (Get-Verb)
|
|
15
|
+
- Use singular nouns
|
|
16
|
+
- PascalCase for both verb and noun
|
|
17
|
+
- Avoid special characters and spaces
|
|
18
|
+
|
|
19
|
+
- **Parameter Names:**
|
|
20
|
+
- Use PascalCase
|
|
21
|
+
- Choose clear, descriptive names
|
|
22
|
+
- Use singular form unless always multiple
|
|
23
|
+
- Follow PowerShell standard names
|
|
24
|
+
|
|
25
|
+
- **Variable Names:**
|
|
26
|
+
- Use PascalCase for public variables
|
|
27
|
+
- Use camelCase for private variables
|
|
28
|
+
- Avoid abbreviations
|
|
29
|
+
- Use meaningful names
|
|
30
|
+
|
|
31
|
+
- **Alias Avoidance:**
|
|
32
|
+
- Use full cmdlet names
|
|
33
|
+
- Avoid using aliases in scripts (e.g., use Get-ChildItem instead of gci)
|
|
34
|
+
- Document any custom aliases
|
|
35
|
+
- Use full parameter names
|
|
36
|
+
|
|
37
|
+
### Example
|
|
38
|
+
|
|
39
|
+
```powershell
|
|
40
|
+
function Get-UserProfile {
|
|
41
|
+
[CmdletBinding()]
|
|
42
|
+
param(
|
|
43
|
+
[Parameter(Mandatory)]
|
|
44
|
+
[string]$Username,
|
|
45
|
+
|
|
46
|
+
[Parameter()]
|
|
47
|
+
[ValidateSet('Basic', 'Detailed')]
|
|
48
|
+
[string]$ProfileType = 'Basic'
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
process {
|
|
52
|
+
# Logic here
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Parameter Design
|
|
58
|
+
|
|
59
|
+
- **Standard Parameters:**
|
|
60
|
+
- Use common parameter names (`Path`, `Name`, `Force`)
|
|
61
|
+
- Follow built-in cmdlet conventions
|
|
62
|
+
- Use aliases for specialized terms
|
|
63
|
+
- Document parameter purpose
|
|
64
|
+
|
|
65
|
+
- **Parameter Names:**
|
|
66
|
+
- Use singular form unless always multiple
|
|
67
|
+
- Choose clear, descriptive names
|
|
68
|
+
- Follow PowerShell conventions
|
|
69
|
+
- Use PascalCase formatting
|
|
70
|
+
|
|
71
|
+
- **Type Selection:**
|
|
72
|
+
- Use common .NET types
|
|
73
|
+
- Implement proper validation
|
|
74
|
+
- Consider ValidateSet for limited options
|
|
75
|
+
- Enable tab completion where possible
|
|
76
|
+
|
|
77
|
+
- **Switch Parameters:**
|
|
78
|
+
- Use [switch] for boolean flags
|
|
79
|
+
- Avoid $true/$false parameters
|
|
80
|
+
- Default to $false when omitted
|
|
81
|
+
- Use clear action names
|
|
82
|
+
|
|
83
|
+
### Example
|
|
84
|
+
|
|
85
|
+
```powershell
|
|
86
|
+
function Set-ResourceConfiguration {
|
|
87
|
+
[CmdletBinding()]
|
|
88
|
+
param(
|
|
89
|
+
[Parameter(Mandatory)]
|
|
90
|
+
[string]$Name,
|
|
91
|
+
|
|
92
|
+
[Parameter()]
|
|
93
|
+
[ValidateSet('Dev', 'Test', 'Prod')]
|
|
94
|
+
[string]$Environment = 'Dev',
|
|
95
|
+
|
|
96
|
+
[Parameter()]
|
|
97
|
+
[switch]$Force,
|
|
98
|
+
|
|
99
|
+
[Parameter()]
|
|
100
|
+
[ValidateNotNullOrEmpty()]
|
|
101
|
+
[string[]]$Tags
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
process {
|
|
105
|
+
# Logic here
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Pipeline and Output
|
|
111
|
+
|
|
112
|
+
- **Pipeline Input:**
|
|
113
|
+
- Use `ValueFromPipeline` for direct object input
|
|
114
|
+
- Use `ValueFromPipelineByPropertyName` for property mapping
|
|
115
|
+
- Implement Begin/Process/End blocks for pipeline handling
|
|
116
|
+
- Document pipeline input requirements
|
|
117
|
+
|
|
118
|
+
- **Output Objects:**
|
|
119
|
+
- Return rich objects, not formatted text
|
|
120
|
+
- Use PSCustomObject for structured data
|
|
121
|
+
- Avoid Write-Host for data output
|
|
122
|
+
- Enable downstream cmdlet processing
|
|
123
|
+
|
|
124
|
+
- **Pipeline Streaming:**
|
|
125
|
+
- Output one object at a time
|
|
126
|
+
- Use process block for streaming
|
|
127
|
+
- Avoid collecting large arrays
|
|
128
|
+
- Enable immediate processing
|
|
129
|
+
|
|
130
|
+
- **PassThru Pattern:**
|
|
131
|
+
- Default to no output for action cmdlets
|
|
132
|
+
- Implement `-PassThru` switch for object return
|
|
133
|
+
- Return modified/created object with `-PassThru`
|
|
134
|
+
- Use verbose/warning for status updates
|
|
135
|
+
|
|
136
|
+
### Example
|
|
137
|
+
|
|
138
|
+
```powershell
|
|
139
|
+
function Update-ResourceStatus {
|
|
140
|
+
[CmdletBinding()]
|
|
141
|
+
param(
|
|
142
|
+
[Parameter(Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)]
|
|
143
|
+
[string]$Name,
|
|
144
|
+
|
|
145
|
+
[Parameter(Mandatory)]
|
|
146
|
+
[ValidateSet('Active', 'Inactive', 'Maintenance')]
|
|
147
|
+
[string]$Status,
|
|
148
|
+
|
|
149
|
+
[Parameter()]
|
|
150
|
+
[switch]$PassThru
|
|
151
|
+
)
|
|
152
|
+
|
|
153
|
+
begin {
|
|
154
|
+
Write-Verbose 'Starting resource status update process'
|
|
155
|
+
$timestamp = Get-Date
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
process {
|
|
159
|
+
# Process each resource individually
|
|
160
|
+
Write-Verbose "Processing resource: $Name"
|
|
161
|
+
|
|
162
|
+
$resource = [PSCustomObject]@{
|
|
163
|
+
Name = $Name
|
|
164
|
+
Status = $Status
|
|
165
|
+
LastUpdated = $timestamp
|
|
166
|
+
UpdatedBy = $env:USERNAME
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
# Only output if PassThru is specified
|
|
170
|
+
if ($PassThru.IsPresent) {
|
|
171
|
+
Write-Output $resource
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
end {
|
|
176
|
+
Write-Verbose 'Resource status update process completed'
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Error Handling and Safety
|
|
182
|
+
|
|
183
|
+
- **ShouldProcess Implementation:**
|
|
184
|
+
- Use `[CmdletBinding(SupportsShouldProcess = $true)]`
|
|
185
|
+
- Set appropriate `ConfirmImpact` level
|
|
186
|
+
- Call `$PSCmdlet.ShouldProcess()` for system changes
|
|
187
|
+
- Use `ShouldContinue()` for additional confirmations
|
|
188
|
+
|
|
189
|
+
- **Message Streams:**
|
|
190
|
+
- `Write-Verbose` for operational details with `-Verbose`
|
|
191
|
+
- `Write-Warning` for warning conditions
|
|
192
|
+
- `Write-Error` for non-terminating errors
|
|
193
|
+
- `throw` for terminating errors
|
|
194
|
+
- Avoid `Write-Host` except for user interface text
|
|
195
|
+
|
|
196
|
+
- **Error Handling Pattern:**
|
|
197
|
+
- Use try/catch blocks for error management
|
|
198
|
+
- Set appropriate ErrorAction preferences
|
|
199
|
+
- Return meaningful error messages
|
|
200
|
+
- Use ErrorVariable when needed
|
|
201
|
+
- Include proper terminating vs non-terminating error handling
|
|
202
|
+
- In advanced functions with `[CmdletBinding()]`, prefer `$PSCmdlet.WriteError()` over `Write-Error`
|
|
203
|
+
- In advanced functions with `[CmdletBinding()]`, prefer `$PSCmdlet.ThrowTerminatingError()` over `throw`
|
|
204
|
+
- Construct proper ErrorRecord objects with category, target, and exception details
|
|
205
|
+
|
|
206
|
+
- **Non-Interactive Design:**
|
|
207
|
+
- Accept input via parameters
|
|
208
|
+
- Avoid `Read-Host` in scripts
|
|
209
|
+
- Support automation scenarios
|
|
210
|
+
- Document all required inputs
|
|
211
|
+
|
|
212
|
+
### Example
|
|
213
|
+
|
|
214
|
+
```powershell
|
|
215
|
+
function Remove-UserAccount {
|
|
216
|
+
[CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = 'High')]
|
|
217
|
+
param(
|
|
218
|
+
[Parameter(Mandatory, ValueFromPipeline)]
|
|
219
|
+
[ValidateNotNullOrEmpty()]
|
|
220
|
+
[string]$Username,
|
|
221
|
+
|
|
222
|
+
[Parameter()]
|
|
223
|
+
[switch]$Force
|
|
224
|
+
)
|
|
225
|
+
|
|
226
|
+
begin {
|
|
227
|
+
Write-Verbose 'Starting user account removal process'
|
|
228
|
+
$ErrorActionPreference = 'Stop'
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
process {
|
|
232
|
+
try {
|
|
233
|
+
# Validation
|
|
234
|
+
if (-not (Test-UserExists -Username $Username)) {
|
|
235
|
+
$errorRecord = [System.Management.Automation.ErrorRecord]::new(
|
|
236
|
+
[System.Exception]::new("User account '$Username' not found"),
|
|
237
|
+
'UserNotFound',
|
|
238
|
+
[System.Management.Automation.ErrorCategory]::ObjectNotFound,
|
|
239
|
+
$Username
|
|
240
|
+
)
|
|
241
|
+
$PSCmdlet.WriteError($errorRecord)
|
|
242
|
+
return
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
# Confirmation
|
|
246
|
+
$shouldProcessMessage = "Remove user account '$Username'"
|
|
247
|
+
if ($Force -or $PSCmdlet.ShouldProcess($Username, $shouldProcessMessage)) {
|
|
248
|
+
Write-Verbose "Removing user account: $Username"
|
|
249
|
+
|
|
250
|
+
# Main operation
|
|
251
|
+
Remove-ADUser -Identity $Username -ErrorAction Stop
|
|
252
|
+
Write-Warning "User account '$Username' has been removed"
|
|
253
|
+
}
|
|
254
|
+
} catch [Microsoft.ActiveDirectory.Management.ADException] {
|
|
255
|
+
$errorRecord = [System.Management.Automation.ErrorRecord]::new(
|
|
256
|
+
$_.Exception,
|
|
257
|
+
'ActiveDirectoryError',
|
|
258
|
+
[System.Management.Automation.ErrorCategory]::NotSpecified,
|
|
259
|
+
$Username
|
|
260
|
+
)
|
|
261
|
+
$PSCmdlet.ThrowTerminatingError($errorRecord)
|
|
262
|
+
} catch {
|
|
263
|
+
$errorRecord = [System.Management.Automation.ErrorRecord]::new(
|
|
264
|
+
$_.Exception,
|
|
265
|
+
'UnexpectedError',
|
|
266
|
+
[System.Management.Automation.ErrorCategory]::NotSpecified,
|
|
267
|
+
$Username
|
|
268
|
+
)
|
|
269
|
+
$PSCmdlet.ThrowTerminatingError($errorRecord)
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
end {
|
|
274
|
+
Write-Verbose 'User account removal process completed'
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
## Documentation and Style
|
|
280
|
+
|
|
281
|
+
- **Comment-Based Help:** Include comment-based help for any public-facing function or cmdlet. Inside the function, add a `<# ... #>` help comment with at least:
|
|
282
|
+
- `.SYNOPSIS` Brief description
|
|
283
|
+
- `.DESCRIPTION` Detailed explanation
|
|
284
|
+
- `.EXAMPLE` sections with practical usage
|
|
285
|
+
- `.PARAMETER` descriptions
|
|
286
|
+
- `.OUTPUTS` Type of output returned
|
|
287
|
+
- `.NOTES` Additional information
|
|
288
|
+
|
|
289
|
+
- **Consistent Formatting:**
|
|
290
|
+
- Follow consistent PowerShell style
|
|
291
|
+
- Use proper indentation (4 spaces recommended)
|
|
292
|
+
- Opening braces on same line as statement
|
|
293
|
+
- Closing braces on new line
|
|
294
|
+
- Use line breaks after pipeline operators
|
|
295
|
+
- PascalCase for function and parameter names
|
|
296
|
+
- Avoid unnecessary whitespace
|
|
297
|
+
|
|
298
|
+
- **Pipeline Support:**
|
|
299
|
+
- Implement Begin/Process/End blocks for pipeline functions
|
|
300
|
+
- Use ValueFromPipeline where appropriate
|
|
301
|
+
- Support pipeline input by property name
|
|
302
|
+
- Return proper objects, not formatted text
|
|
303
|
+
|
|
304
|
+
- **Avoid Aliases:** Use full cmdlet names and parameters
|
|
305
|
+
- Avoid using aliases in scripts (e.g., use Get-ChildItem instead of gci); aliases are acceptable for interactive shell use.
|
|
306
|
+
- Use `Where-Object` instead of `?` or `where`
|
|
307
|
+
- Use `ForEach-Object` instead of `%`
|
|
308
|
+
- Use `Get-ChildItem` instead of `ls` or `dir`
|
|
309
|
+
|
|
310
|
+
## Full Example: End-to-End Cmdlet Pattern
|
|
311
|
+
|
|
312
|
+
```powershell
|
|
313
|
+
function New-Resource {
|
|
314
|
+
[CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = 'Medium')]
|
|
315
|
+
param(
|
|
316
|
+
[Parameter(Mandatory = $true,
|
|
317
|
+
ValueFromPipeline = $true,
|
|
318
|
+
ValueFromPipelineByPropertyName = $true)]
|
|
319
|
+
[ValidateNotNullOrEmpty()]
|
|
320
|
+
[string]$Name,
|
|
321
|
+
|
|
322
|
+
[Parameter()]
|
|
323
|
+
[ValidateSet('Development', 'Production')]
|
|
324
|
+
[string]$Environment = 'Development'
|
|
325
|
+
)
|
|
326
|
+
|
|
327
|
+
begin {
|
|
328
|
+
Write-Verbose 'Starting resource creation process'
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
process {
|
|
332
|
+
try {
|
|
333
|
+
if ($PSCmdlet.ShouldProcess($Name, 'Create new resource')) {
|
|
334
|
+
# Resource creation logic here
|
|
335
|
+
Write-Output ([PSCustomObject]@{
|
|
336
|
+
Name = $Name
|
|
337
|
+
Environment = $Environment
|
|
338
|
+
Created = Get-Date
|
|
339
|
+
})
|
|
340
|
+
}
|
|
341
|
+
} catch {
|
|
342
|
+
$errorRecord = [System.Management.Automation.ErrorRecord]::new(
|
|
343
|
+
$_.Exception,
|
|
344
|
+
'ResourceCreationFailed',
|
|
345
|
+
[System.Management.Automation.ErrorCategory]::NotSpecified,
|
|
346
|
+
$Name
|
|
347
|
+
)
|
|
348
|
+
$PSCmdlet.ThrowTerminatingError($errorRecord)
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
end {
|
|
353
|
+
Write-Verbose 'Completed resource creation process'
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
```
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 'Guidelines for creating high-quality prompt files for GitHub Copilot'
|
|
3
|
+
applyTo: '**/*.prompt.md'
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Copilot Prompt Files Guidelines
|
|
7
|
+
|
|
8
|
+
Instructions for creating effective and maintainable prompt files that guide GitHub Copilot in delivering consistent, high-quality outcomes across any repository.
|
|
9
|
+
|
|
10
|
+
## Scope and Principles
|
|
11
|
+
- Target audience: maintainers and contributors authoring reusable prompts for Copilot Chat.
|
|
12
|
+
- Goals: predictable behaviour, clear expectations, minimal permissions, and portability across repositories.
|
|
13
|
+
- Primary references: VS Code documentation on prompt files and organization-specific conventions.
|
|
14
|
+
|
|
15
|
+
## Frontmatter Requirements
|
|
16
|
+
- Include `description` (single sentence, actionable outcome), `mode` (explicitly choose `ask`, `edit`, or `agent`), and `tools` (minimal set of tool bundles required to fulfill the prompt).
|
|
17
|
+
- Declare `model` when the prompt depends on a specific capability tier; otherwise inherit the active model.
|
|
18
|
+
- Preserve any additional metadata (`language`, `tags`, `visibility`, etc.) required by your organization.
|
|
19
|
+
- Use consistent quoting (single quotes recommended) and keep one field per line for readability and version control clarity.
|
|
20
|
+
|
|
21
|
+
## File Naming and Placement
|
|
22
|
+
- Use kebab-case filenames ending with `.prompt.md` and store them under `.github/prompts/` unless your workspace standard specifies another directory.
|
|
23
|
+
- Provide a short filename that communicates the action (for example, `generate-readme.prompt.md` rather than `prompt1.prompt.md`).
|
|
24
|
+
|
|
25
|
+
## Body Structure
|
|
26
|
+
- Start with an `#` level heading that matches the prompt intent so it surfaces well in Quick Pick search.
|
|
27
|
+
- Organize content with predictable sections. Recommended baseline: `Mission` or `Primary Directive`, `Scope & Preconditions`, `Inputs`, `Workflow` (step-by-step), `Output Expectations`, and `Quality Assurance`.
|
|
28
|
+
- Adjust section names to fit the domain, but retain the logical flow: why → context → inputs → actions → outputs → validation.
|
|
29
|
+
- Reference related prompts or instruction files using relative links to aid discoverability.
|
|
30
|
+
|
|
31
|
+
## Input and Context Handling
|
|
32
|
+
- Use `${input:variableName[:placeholder]}` for required values and explain when the user must supply them. Provide defaults or alternatives where possible.
|
|
33
|
+
- Call out contextual variables such as `${selection}`, `${file}`, `${workspaceFolder}` only when they are essential, and describe how Copilot should interpret them.
|
|
34
|
+
- Document how to proceed when mandatory context is missing (for example, “Request the file path and stop if it remains undefined”).
|
|
35
|
+
|
|
36
|
+
## Tool and Permission Guidance
|
|
37
|
+
- Limit `tools` to the smallest set that enables the task. List them in the preferred execution order when the sequence matters.
|
|
38
|
+
- If the prompt inherits tools from a chat mode, mention that relationship and state any critical tool behaviours or side effects.
|
|
39
|
+
- Warn about destructive operations (file creation, edits, terminal commands) and include guard rails or confirmation steps in the workflow.
|
|
40
|
+
|
|
41
|
+
## Instruction Tone and Style
|
|
42
|
+
- Write in direct, imperative sentences targeted at Copilot (for example, “Analyze”, “Generate”, “Summarize”).
|
|
43
|
+
- Keep sentences short and unambiguous, following Google Developer Documentation translation best practices to support localization.
|
|
44
|
+
- Avoid idioms, humor, or culturally specific references; favor neutral, inclusive language.
|
|
45
|
+
|
|
46
|
+
## Output Definition
|
|
47
|
+
- Specify the format, structure, and location of expected results (for example, “Create `docs/adr/adr-XXXX.md` using the template below”).
|
|
48
|
+
- Include success criteria and failure triggers so Copilot knows when to halt or retry.
|
|
49
|
+
- Provide validation steps—manual checks, automated commands, or acceptance criteria lists—that reviewers can execute after running the prompt.
|
|
50
|
+
|
|
51
|
+
## Examples and Reusable Assets
|
|
52
|
+
- Embed Good/Bad examples or scaffolds (Markdown templates, JSON stubs) that the prompt should produce or follow.
|
|
53
|
+
- Maintain reference tables (capabilities, status codes, role descriptions) inline to keep the prompt self-contained. Update these tables when upstream resources change.
|
|
54
|
+
- Link to authoritative documentation instead of duplicating lengthy guidance.
|
|
55
|
+
|
|
56
|
+
## Quality Assurance Checklist
|
|
57
|
+
- [ ] Frontmatter fields are complete, accurate, and least-privilege.
|
|
58
|
+
- [ ] Inputs include placeholders, default behaviours, and fallbacks.
|
|
59
|
+
- [ ] Workflow covers preparation, execution, and post-processing without gaps.
|
|
60
|
+
- [ ] Output expectations include formatting and storage details.
|
|
61
|
+
- [ ] Validation steps are actionable (commands, diff checks, review prompts).
|
|
62
|
+
- [ ] Security, compliance, and privacy policies referenced by the prompt are current.
|
|
63
|
+
- [ ] Prompt executes successfully in VS Code (`Chat: Run Prompt`) using representative scenarios.
|
|
64
|
+
|
|
65
|
+
## Maintenance Guidance
|
|
66
|
+
- Version-control prompts alongside the code they affect; update them when dependencies, tooling, or review processes change.
|
|
67
|
+
- Review prompts periodically to ensure tool lists, model requirements, and linked documents remain valid.
|
|
68
|
+
- Coordinate with other repositories: when a prompt proves broadly useful, extract common guidance into instruction files or shared prompt packs.
|
|
69
|
+
|
|
70
|
+
## Additional Resources
|
|
71
|
+
- [Prompt Files Documentation](https://code.visualstudio.com/docs/copilot/customization/prompt-files#_prompt-file-format)
|
|
72
|
+
- [Awesome Copilot Prompt Files](https://github.com/github/awesome-copilot/tree/main/prompts)
|
|
73
|
+
- [Tool Configuration](https://code.visualstudio.com/docs/copilot/chat/chat-agent-mode#_agent-mode-tools)
|