shmakk 1.1.0 → 1.2.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/README.md +16 -1
- package/package.json +6 -3
- package/scripts/import-skills.js +536 -0
- package/scripts/install-skills.js +64 -0
- package/skills/ai-elements.md +482 -0
- package/skills/architecture.md +151 -0
- package/skills/backend-adapter-aws-lambda.md +204 -0
- package/skills/backend-adapter-express.md +177 -0
- package/skills/backend-adapter-fastify.md +222 -0
- package/skills/backend-adapter-fetch.md +200 -0
- package/skills/backend-api-docs.md +22 -0
- package/skills/backend-aspire.md +232 -0
- package/skills/backend-aspnet-core.md +62 -0
- package/skills/backend-build-chatgpt-app.md +321 -0
- package/skills/backend-build-mcp-app.md +393 -0
- package/skills/backend-build-mcp-server.md +222 -0
- package/skills/backend-build-mcpb.md +200 -0
- package/skills/backend-building-ai-agent-on-cloudflare.md +401 -0
- package/skills/backend-caching.md +206 -0
- package/skills/backend-chatgpt-app-submission.md +157 -0
- package/skills/backend-chatgpt-apps.md +321 -0
- package/skills/backend-client-setup.md +318 -0
- package/skills/backend-containerize-aspnet-framework.md +455 -0
- package/skills/backend-create-spring-boot-java-project.md +164 -0
- package/skills/backend-create-spring-boot-kotlin-project.md +148 -0
- package/skills/backend-csharp-async.md +50 -0
- package/skills/backend-csharp-docs.md +63 -0
- package/skills/backend-csharp-mcp-server-generator.md +60 -0
- package/skills/backend-dotenv.md +201 -0
- package/skills/backend-dotenvx.md +119 -0
- package/skills/backend-env-vars.md +259 -0
- package/skills/backend-error-handling.md +254 -0
- package/skills/backend-fastapi.md +437 -0
- package/skills/backend-go-mcp-server-generator.md +335 -0
- package/skills/backend-java-mcp-server-generator.md +757 -0
- package/skills/backend-kotlin-mcp-server-generator.md +450 -0
- package/skills/backend-middlewares.md +243 -0
- package/skills/backend-multi-stage-dockerfile.md +47 -0
- package/skills/backend-nestjs.md +192 -0
- package/skills/backend-next-forge.md +375 -0
- package/skills/backend-nextjs.md +746 -0
- package/skills/backend-openapi-to-application-code.md +113 -0
- package/skills/backend-php-mcp-server-generator.md +523 -0
- package/skills/backend-python-mcp-server-generator.md +106 -0
- package/skills/backend-routing-middleware.md +251 -0
- package/skills/backend-ruby-mcp-server-generator.md +661 -0
- package/skills/backend-rust-mcp-server-generator.md +578 -0
- package/skills/backend-semantic-kernel.md +57 -0
- package/skills/backend-server-setup.md +379 -0
- package/skills/backend-server-side-calls.md +250 -0
- package/skills/backend-subscriptions.md +407 -0
- package/skills/backend-swift-mcp-server-generator.md +670 -0
- package/skills/backend-trpc-router.md +152 -0
- package/skills/backend-typescript-mcp-server-generator.md +91 -0
- package/skills/backend-validators.md +229 -0
- package/skills/backend.md +76 -0
- package/skills/backup.md +165 -0
- package/skills/budget.md +140 -0
- package/skills/business-gtm-0-to-1-launch.md +322 -0
- package/skills/business-gtm-operating-cadence.md +421 -0
- package/skills/business-gtm-positioning-strategy.md +439 -0
- package/skills/business-gtm-product-led-growth.md +340 -0
- package/skills/calendar.md +95 -0
- package/skills/code-review.md +130 -0
- package/skills/compliance.md +168 -0
- package/skills/contracts.md +130 -0
- package/skills/daily-job-run.md +46 -0
- package/skills/daily-webdesign.md +187 -0
- package/skills/database-bigquery-pipeline-audit.md +130 -0
- package/skills/database-cosmosdb-datamodeling.md +1046 -0
- package/skills/database-durable-objects.md +187 -0
- package/skills/database-ef-core.md +76 -0
- package/skills/database-fabric-lakehouse.md +107 -0
- package/skills/database-neon-postgres-egress-optimizer.md +213 -0
- package/skills/database-neon-postgres.md +218 -0
- package/skills/database-postgresql-code-review.md +213 -0
- package/skills/database-postgresql-optimization.md +405 -0
- package/skills/database-sql-code-review.md +302 -0
- package/skills/database-sql-optimization.md +297 -0
- package/skills/dependency-audit.md +165 -0
- package/skills/design-kami-landing.md +234 -0
- package/skills/design.md +221 -0
- package/skills/dev-acquire-codebase-knowledge.md +175 -0
- package/skills/dev-add-educational-comments.md +129 -0
- package/skills/dev-add-model-descriptions.md +74 -0
- package/skills/dev-adr-review.md +56 -0
- package/skills/dev-boost-prompt.md +26 -0
- package/skills/dev-build-run-debug.md +130 -0
- package/skills/dev-chunk.md +49 -0
- package/skills/dev-claude-md-improver.md +180 -0
- package/skills/dev-code-exemplars-blueprint-generator.md +127 -0
- package/skills/dev-code-tour.md +434 -0
- package/skills/dev-comment-code-generate-a-tutorial.md +27 -0
- package/skills/dev-commit.md +81 -0
- package/skills/dev-context-map.md +53 -0
- package/skills/dev-conventional-commit.md +73 -0
- package/skills/dev-create-architectural-decision-record.md +98 -0
- package/skills/dev-create-draft-pr.md +17 -0
- package/skills/dev-create-pr.md +17 -0
- package/skills/dev-create-readme.md +22 -0
- package/skills/dev-csharp-mstest.md +479 -0
- package/skills/dev-csharp-nunit.md +72 -0
- package/skills/dev-csharp-tunit.md +101 -0
- package/skills/dev-csharp-xunit.md +69 -0
- package/skills/dev-debug-failing-test.md +90 -0
- package/skills/dev-diff-analyze.md +32 -0
- package/skills/dev-diffs.md +24 -0
- package/skills/dev-dotnet-best-practices.md +86 -0
- package/skills/dev-dotnet-design-pattern-review.md +43 -0
- package/skills/dev-dotnet-timezone.md +110 -0
- package/skills/dev-dotnet-upgrade.md +117 -0
- package/skills/dev-doublecheck.md +278 -0
- package/skills/dev-explain-error.md +15 -0
- package/skills/dev-finding-discovery.md +164 -0
- package/skills/dev-fix-finding.md +111 -0
- package/skills/dev-full-file-edit.md +25 -0
- package/skills/dev-git-commit.md +125 -0
- package/skills/dev-git-flow-branch-creator.md +293 -0
- package/skills/dev-git-workflow.md +46 -0
- package/skills/dev-github-automation.md +64 -0
- package/skills/dev-github-code-review.md +1140 -0
- package/skills/dev-github-issues.md +202 -0
- package/skills/dev-gpt-5-4-prompting.md +55 -0
- package/skills/dev-investigation-mode.md +277 -0
- package/skills/dev-java-add-graalvm-native-image-support.md +450 -0
- package/skills/dev-java-docs.md +24 -0
- package/skills/dev-java-refactoring-extract-method.md +105 -0
- package/skills/dev-java-refactoring-remove-parameter.md +85 -0
- package/skills/dev-merge.md +73 -0
- package/skills/dev-migrate-create.md +36 -0
- package/skills/dev-migrate-validate.md +36 -0
- package/skills/dev-my-issues.md +9 -0
- package/skills/dev-my-pull-requests.md +15 -0
- package/skills/dev-planning-oracle-to-postgres-migration-integration-testing.md +45 -0
- package/skills/dev-playwright-generate-test.md +18 -0
- package/skills/dev-playwright.md +148 -0
- package/skills/dev-prompt-builder.md +142 -0
- package/skills/dev-pytest-coverage.md +29 -0
- package/skills/dev-python-manager-discovery.md +330 -0
- package/skills/dev-python-pypi-package-builder.md +445 -0
- package/skills/dev-readme-blueprint-generator.md +79 -0
- package/skills/dev-refactor-method-complexity-reduce.md +99 -0
- package/skills/dev-refactor-plan.md +66 -0
- package/skills/dev-refactor.md +646 -0
- package/skills/dev-review-and-refactor.md +16 -0
- package/skills/dev-reviewing-oracle-to-postgres-migration.md +68 -0
- package/skills/dev-ruff-recursive-fix.md +201 -0
- package/skills/dev-run-e2e-tests.md +126 -0
- package/skills/dev-run-pre-commit-checks.md +133 -0
- package/skills/dev-run-smoke-tests.md +127 -0
- package/skills/dev-scaffolding-oracle-to-postgres-migration-test-project.md +55 -0
- package/skills/dev-spring-boot-testing.md +190 -0
- package/skills/dev-sync-upstream.md +32 -0
- package/skills/dev-sync.md +74 -0
- package/skills/dev-tdd-workflow.md +23 -0
- package/skills/dev-terraform-azurerm-set-diff-analyzer.md +49 -0
- package/skills/dev-test-driven-development.md +372 -0
- package/skills/dev-test-gaps.md +18 -0
- package/skills/dev-test-triage.md +55 -0
- package/skills/dev-typer.md +267 -0
- package/skills/dev-typescript-setup.md +25 -0
- package/skills/dev-unified-diff-edit.md +16 -0
- package/skills/dev-unit-test-vue-pinia.md +198 -0
- package/skills/dev-using-git-worktrees.md +216 -0
- package/skills/dev-validation.md +99 -0
- package/skills/dev-verification.md +168 -0
- package/skills/dev-webapp-testing.md +134 -0
- package/skills/dev-write-coding-standards-from-file.md +317 -0
- package/skills/dev-write-tests.md +16 -0
- package/skills/devops-appinsights-instrumentation.md +49 -0
- package/skills/devops-az-cost-optimize.md +306 -0
- package/skills/devops-chronicle.md +154 -0
- package/skills/devops-deployments-cicd.md +331 -0
- package/skills/devops-devops-rollout-plan.md +118 -0
- package/skills/devops-geistdocs.md +276 -0
- package/skills/devops-observability.md +774 -0
- package/skills/devops-observe-metrics.md +35 -0
- package/skills/devops-observe-trace.md +30 -0
- package/skills/devops-phoenix-cli.md +163 -0
- package/skills/devops-phoenix-tracing.md +140 -0
- package/skills/devops-publish-to-pages.md +108 -0
- package/skills/devops-telemetry.md +87 -0
- package/skills/devops-update-avm-modules-in-bicep.md +61 -0
- package/skills/devops.md +81 -0
- package/skills/diagrams-canvas.md +204 -0
- package/skills/diagrams-draw-io-diagram-generator.md +463 -0
- package/skills/diagrams-excalidraw-diagram-generator.md +614 -0
- package/skills/diagrams-graphify.md +1277 -0
- package/skills/docs-bear-notes.md +108 -0
- package/skills/docs-create-llms.md +211 -0
- package/skills/docs-doc-gen.md +20 -0
- package/skills/docs-documentation-writer.md +46 -0
- package/skills/docs-llm-config.md +33 -0
- package/skills/docs-mkdocs-translations.md +109 -0
- package/skills/docs-obsidian-vault-maintainer.md +14 -0
- package/skills/docs-obsidian.md +82 -0
- package/skills/docs-prose.md +324 -0
- package/skills/docs-update-llms.md +217 -0
- package/skills/docs-update-markdown-file-index.md +77 -0
- package/skills/docs-wiki-maintainer.md +20 -0
- package/skills/documents.md +120 -0
- package/skills/email.md +113 -0
- package/skills/expenses.md +140 -0
- package/skills/file-ops.md +149 -0
- package/skills/files-convert-plaintext-to-md.md +363 -0
- package/skills/files-doc.md +81 -0
- package/skills/files-docx.md +594 -0
- package/skills/files-markdown-to-html.md +917 -0
- package/skills/files-nano-pdf.md +39 -0
- package/skills/files-pdf.md +315 -0
- package/skills/files-pdftk-server.md +163 -0
- package/skills/files-pptx-html-fidelity-audit.md +255 -0
- package/skills/files-pptx.md +231 -0
- package/skills/files-xlsx.md +301 -0
- package/skills/find-jobs.md +78 -0
- package/skills/format-conversion.md +157 -0
- package/skills/frontend-ai-elements.md +483 -0
- package/skills/frontend-ai-gateway.md +563 -0
- package/skills/frontend-ai-generation-persistence.md +242 -0
- package/skills/frontend-ai-sdk.md +799 -0
- package/skills/frontend-ai-visibility.md +127 -0
- package/skills/frontend-angular-developer.md +130 -0
- package/skills/frontend-aspnet-minimal-api-openapi.md +42 -0
- package/skills/frontend-bencium-innovative-ux-designer.md +719 -0
- package/skills/frontend-chat-sdk.md +666 -0
- package/skills/frontend-chrome-devtools.md +98 -0
- package/skills/frontend-frontend-app-builder.md +186 -0
- package/skills/frontend-frontend-design.md +43 -0
- package/skills/frontend-frontend-testing-debugging.md +143 -0
- package/skills/frontend-gsap-framer-scroll-animation.md +152 -0
- package/skills/frontend-internal-linking.md +109 -0
- package/skills/frontend-json-render.md +335 -0
- package/skills/frontend-keyword-clustering.md +118 -0
- package/skills/frontend-next-intl-add-language.md +20 -0
- package/skills/frontend-on-page-seo.md +112 -0
- package/skills/frontend-premium-frontend-ui.md +114 -0
- package/skills/frontend-react-best-practices.md +143 -0
- package/skills/frontend-schema-markup.md +160 -0
- package/skills/frontend-seo-audit.md +110 -0
- package/skills/frontend-swr.md +215 -0
- package/skills/frontend-technical-seo.md +162 -0
- package/skills/frontend-use-dom.md +418 -0
- package/skills/frontend-web-coder.md +564 -0
- package/skills/frontend-web-design-reviewer.md +369 -0
- package/skills/frontend-web-perf.md +202 -0
- package/skills/frontend.md +125 -0
- package/skills/general-adapter-standalone.md +199 -0
- package/skills/general-auth.md +356 -0
- package/skills/general-containerize-aspnetcore.md +393 -0
- package/skills/general-create-technical-spike.md +231 -0
- package/skills/general-cron-jobs.md +72 -0
- package/skills/general-ddd-aggregate.md +52 -0
- package/skills/general-ddd-context.md +46 -0
- package/skills/general-ddd-validate.md +51 -0
- package/skills/general-dependency-check.md +26 -0
- package/skills/general-email-marketing.md +86 -0
- package/skills/general-healthcheck.md +246 -0
- package/skills/general-import-infrastructure-as-code.md +368 -0
- package/skills/general-init.md +49 -0
- package/skills/general-java-junit.md +64 -0
- package/skills/general-java-springboot.md +66 -0
- package/skills/general-javascript-typescript-jest.md +45 -0
- package/skills/general-kotlin-springboot.md +71 -0
- package/skills/general-make-repo-contribution.md +91 -0
- package/skills/general-market-research.md +78 -0
- package/skills/general-marketplace.md +468 -0
- package/skills/general-model-recommendation.md +673 -0
- package/skills/general-payments.md +352 -0
- package/skills/general-quality-playbook.md +480 -0
- package/skills/general-run-integration-tests.md +113 -0
- package/skills/general-superjson.md +274 -0
- package/skills/general-swiftpm-macos.md +51 -0
- package/skills/general-threat-model.md +61 -0
- package/skills/invoices.md +167 -0
- package/skills/licenses.md +159 -0
- package/skills/logs.md +156 -0
- package/skills/marketing.md +139 -0
- package/skills/media-image-manipulation-image-magick.md +253 -0
- package/skills/media-imagegen.md +357 -0
- package/skills/media-openai-whisper-api.md +63 -0
- package/skills/media-openai-whisper.md +39 -0
- package/skills/media-peekaboo.md +191 -0
- package/skills/media-screenshot.md +268 -0
- package/skills/media-speech.md +145 -0
- package/skills/media-transcribe.md +82 -0
- package/skills/media-video-frames.md +47 -0
- package/skills/mobile-android-emulator-qa.md +81 -0
- package/skills/mobile-android-performance.md +280 -0
- package/skills/mobile-building-mcp-server-on-cloudflare.md +267 -0
- package/skills/mobile-building-native-ui.md +322 -0
- package/skills/mobile-expo-api-routes.md +369 -0
- package/skills/mobile-expo-cicd-workflows.md +92 -0
- package/skills/mobile-expo-deployment.md +191 -0
- package/skills/mobile-expo-dev-client.md +165 -0
- package/skills/mobile-expo-module.md +177 -0
- package/skills/mobile-expo-tailwind-setup.md +481 -0
- package/skills/mobile-expo-ui-jetpack-compose.md +41 -0
- package/skills/mobile-expo-ui-swift-ui.md +40 -0
- package/skills/mobile-ios-app-intents.md +78 -0
- package/skills/mobile-ios-debugger-agent.md +52 -0
- package/skills/mobile-ios-ettrace-performance.md +198 -0
- package/skills/mobile-ios-memgraph-leaks.md +77 -0
- package/skills/mobile-native-data-fetching.md +508 -0
- package/skills/mobile-packaging-notarization.md +48 -0
- package/skills/mobile-react-native-architecture.md +672 -0
- package/skills/mobile-react-native-mobile-design.md +438 -0
- package/skills/mobile-signing-entitlements.md +59 -0
- package/skills/mobile-swiftui-liquid-glass.md +91 -0
- package/skills/mobile-swiftui-patterns.md +210 -0
- package/skills/mobile-swiftui-performance-audit.md +108 -0
- package/skills/mobile-swiftui-ui-patterns.md +97 -0
- package/skills/mobile-swiftui-view-refactor.md +204 -0
- package/skills/mobile-upgrading-expo.md +134 -0
- package/skills/mobile.md +183 -0
- package/skills/notes.md +106 -0
- package/skills/planning-adr-create.md +62 -0
- package/skills/planning-adr-index.md +67 -0
- package/skills/planning-architecture-blueprint-generator.md +323 -0
- package/skills/planning-brainstorming.md +165 -0
- package/skills/planning-breakdown-epic-arch.md +67 -0
- package/skills/planning-breakdown-epic-pm.md +59 -0
- package/skills/planning-breakdown-feature-implementation.md +129 -0
- package/skills/planning-breakdown-feature-prd.md +62 -0
- package/skills/planning-breakdown-plan.md +510 -0
- package/skills/planning-breakdown-test.md +366 -0
- package/skills/planning-cloud-design-patterns.md +63 -0
- package/skills/planning-content-brief.md +128 -0
- package/skills/planning-content-strategy.md +138 -0
- package/skills/planning-content-translation.md +143 -0
- package/skills/planning-create-github-action-workflow-specification.md +277 -0
- package/skills/planning-create-github-issues-feature-from-implementation-plan.md +29 -0
- package/skills/planning-create-github-issues-for-unmet-specification-requirements.md +36 -0
- package/skills/planning-create-github-pull-request-from-specification.md +25 -0
- package/skills/planning-create-implementation-plan.md +158 -0
- package/skills/planning-create-specification.md +128 -0
- package/skills/planning-first-ask.md +31 -0
- package/skills/planning-folder-structure-blueprint-generator.md +406 -0
- package/skills/planning-gen-specs-as-issues.md +166 -0
- package/skills/planning-generate-snapshot.md +144 -0
- package/skills/planning-generate-status-report.md +336 -0
- package/skills/planning-metric-pack-designer.md +27 -0
- package/skills/planning-pm-spec.md +53 -0
- package/skills/planning-prd.md +144 -0
- package/skills/planning-project-assessment.md +182 -0
- package/skills/planning-project-setup-info-local.md +128 -0
- package/skills/planning-project-workflow-analysis-blueprint-generator.md +294 -0
- package/skills/planning-service-oriented-architecture.md +248 -0
- package/skills/planning-spec-to-backlog.md +544 -0
- package/skills/planning-technology-stack-blueprint-generator.md +243 -0
- package/skills/planning-update-implementation-plan.md +158 -0
- package/skills/planning-update-specification.md +128 -0
- package/skills/planning-what-context-needed.md +40 -0
- package/skills/planning-writing-plans.md +153 -0
- package/skills/prepare-application.md +81 -0
- package/skills/productivity-apple-notes.md +78 -0
- package/skills/productivity-apple-reminders.md +119 -0
- package/skills/productivity-capture-tasks-from-meeting-notes.md +680 -0
- package/skills/productivity-daily-prep.md +156 -0
- package/skills/productivity-email-drafter.md +101 -0
- package/skills/productivity-hr-onboarding.md +53 -0
- package/skills/productivity-things-mac.md +87 -0
- package/skills/productivity-update.md +169 -0
- package/skills/reminders.md +109 -0
- package/skills/research-dossier-collect.md +71 -0
- package/skills/research-kg-extract.md +37 -0
- package/skills/research-openai-docs.md +89 -0
- package/skills/research-research-add-items.md +31 -0
- package/skills/research-research-report.md +94 -0
- package/skills/research-research-synthesize.md +63 -0
- package/skills/research-summarize.md +88 -0
- package/skills/research-transformers-js.md +635 -0
- package/skills/research.md +119 -0
- package/skills/security-ai-prompt-engineering-safety-review.md +231 -0
- package/skills/security-attack-path-analysis.md +182 -0
- package/skills/security-gdpr-compliant.md +284 -0
- package/skills/security-mcp-security-audit.md +279 -0
- package/skills/security-pii-detect.md +31 -0
- package/skills/security-secret-scanning.md +243 -0
- package/skills/security-security-best-practices.md +87 -0
- package/skills/security-security-ownership-map.md +207 -0
- package/skills/security-security-review.md +169 -0
- package/skills/security-security-scan.md +138 -0
- package/skills/security-security-threat-model.md +82 -0
- package/skills/security-threat-model-analyst.md +76 -0
- package/skills/sysmon.md +181 -0
- package/skills/system-arch-linux-triage.md +32 -0
- package/skills/system-centos-linux-triage.md +32 -0
- package/skills/system-debian-linux-triage.md +32 -0
- package/skills/system-fedora-linux-triage.md +32 -0
- package/skills/system-geofeed-tuner.md +865 -0
- package/skills/system-iot-anomalies.md +15 -0
- package/skills/system-iot-firmware.md +16 -0
- package/skills/system-iot-fleet.md +14 -0
- package/skills/system-iot-register.md +19 -0
- package/skills/system-iot-witness-verify.md +15 -0
- package/skills/system-tmux.md +171 -0
- package/skills/system-window-management.md +228 -0
- package/skills/task-management.md +90 -0
- package/skills/tasks.md +102 -0
- package/skills/test-coverage.md +188 -0
- package/skills/ux-ui.md +128 -0
- package/skills/web.md +186 -0
- package/skills/workflow-act-on-feedback.md +15 -0
- package/skills/workflow-automate-this.md +245 -0
- package/skills/workflow-autoresearch.md +276 -0
- package/skills/workflow-coding-agent.md +317 -0
- package/skills/workflow-deep-research.md +44 -0
- package/skills/workflow-dispatching-parallel-agents.md +183 -0
- package/skills/workflow-eval-driven-dev.md +148 -0
- package/skills/workflow-executing-plans.md +71 -0
- package/skills/workflow-mentoring-juniors.md +311 -0
- package/skills/workflow-receiving-code-review.md +214 -0
- package/skills/workflow-repo-story-time.md +155 -0
- package/skills/workflow-requesting-code-review.md +104 -0
- package/skills/workflow-session-report.md +43 -0
- package/skills/workflow-structured-autonomy-generate.md +126 -0
- package/skills/workflow-subagent-driven-development.md +280 -0
- package/skills/writing.md +106 -0
- package/src/agent.js +0 -0
- package/src/browser.js +297 -0
- package/src/cli.js +25 -4
- package/src/code-reviewer.js +119 -0
- package/src/completions.js +1 -1
- package/src/control.js +222 -30
- package/src/coordinator.js +303 -0
- package/src/correction.js +29 -8
- package/src/edit-tracker.js +21 -0
- package/src/edit-viewer.js +414 -0
- package/src/endpoints.js +64 -15
- package/src/index.js +45 -11
- package/src/llm.js +86 -2
- package/src/mcp-client.js +416 -0
- package/src/memory.js +182 -0
- package/src/planner.js +216 -0
- package/src/rules.js +90 -0
- package/src/self-commands.js +757 -0
- package/src/services/voice.js +10 -7
- package/src/session-search.js +427 -0
- package/src/session.js +487 -99
- package/src/shmakk-server.js +91 -0
- package/src/skills.js +410 -3
- package/src/subagent.js +4 -1
- package/src/system-prompt.js +13 -5
- package/src/task-file.js +114 -0
- package/src/taskClassifier.js +246 -0
- package/src/team.js +752 -0
- package/src/tools.js +142 -21
- package/src/web.js +35 -5
- package/src/workflows.js +261 -0
- package/src/workspace-index.js +25 -6
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: csharp-nunit
|
|
3
|
+
description: 'Get best practices for NUnit unit testing, including data-driven tests'
|
|
4
|
+
category: dev
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# NUnit Best Practices
|
|
8
|
+
|
|
9
|
+
Your goal is to help me write effective unit tests with NUnit, covering both standard and data-driven testing approaches.
|
|
10
|
+
|
|
11
|
+
## Project Setup
|
|
12
|
+
|
|
13
|
+
- Use a separate test project with naming convention `[ProjectName].Tests`
|
|
14
|
+
- Reference Microsoft.NET.Test.Sdk, NUnit, and NUnit3TestAdapter packages
|
|
15
|
+
- Create test classes that match the classes being tested (e.g., `CalculatorTests` for `Calculator`)
|
|
16
|
+
- Use .NET SDK test commands: `dotnet test` for running tests
|
|
17
|
+
|
|
18
|
+
## Test Structure
|
|
19
|
+
|
|
20
|
+
- Apply `[TestFixture]` attribute to test classes
|
|
21
|
+
- Use `[Test]` attribute for test methods
|
|
22
|
+
- Follow the Arrange-Act-Assert (AAA) pattern
|
|
23
|
+
- Name tests using the pattern `MethodName_Scenario_ExpectedBehavior`
|
|
24
|
+
- Use `[SetUp]` and `[TearDown]` for per-test setup and teardown
|
|
25
|
+
- Use `[OneTimeSetUp]` and `[OneTimeTearDown]` for per-class setup and teardown
|
|
26
|
+
- Use `[SetUpFixture]` for assembly-level setup and teardown
|
|
27
|
+
|
|
28
|
+
## Standard Tests
|
|
29
|
+
|
|
30
|
+
- Keep tests focused on a single behavior
|
|
31
|
+
- Avoid testing multiple behaviors in one test method
|
|
32
|
+
- Use clear assertions that express intent
|
|
33
|
+
- Include only the assertions needed to verify the test case
|
|
34
|
+
- Make tests independent and idempotent (can run in any order)
|
|
35
|
+
- Avoid test interdependencies
|
|
36
|
+
|
|
37
|
+
## Data-Driven Tests
|
|
38
|
+
|
|
39
|
+
- Use `[TestCase]` for inline test data
|
|
40
|
+
- Use `[TestCaseSource]` for programmatically generated test data
|
|
41
|
+
- Use `[Values]` for simple parameter combinations
|
|
42
|
+
- Use `[ValueSource]` for property or method-based data sources
|
|
43
|
+
- Use `[Random]` for random numeric test values
|
|
44
|
+
- Use `[Range]` for sequential numeric test values
|
|
45
|
+
- Use `[Combinatorial]` or `[Pairwise]` for combining multiple parameters
|
|
46
|
+
|
|
47
|
+
## Assertions
|
|
48
|
+
|
|
49
|
+
- Use `Assert.That` with constraint model (preferred NUnit style)
|
|
50
|
+
- Use constraints like `Is.EqualTo`, `Is.SameAs`, `Contains.Item`
|
|
51
|
+
- Use `Assert.AreEqual` for simple value equality (classic style)
|
|
52
|
+
- Use `CollectionAssert` for collection comparisons
|
|
53
|
+
- Use `StringAssert` for string-specific assertions
|
|
54
|
+
- Use `Assert.Throws<T>` or `Assert.ThrowsAsync<T>` to test exceptions
|
|
55
|
+
- Use descriptive messages in assertions for clarity on failure
|
|
56
|
+
|
|
57
|
+
## Mocking and Isolation
|
|
58
|
+
|
|
59
|
+
- Consider using Moq or NSubstitute alongside NUnit
|
|
60
|
+
- Mock dependencies to isolate units under test
|
|
61
|
+
- Use interfaces to facilitate mocking
|
|
62
|
+
- Consider using a DI container for complex test setups
|
|
63
|
+
|
|
64
|
+
## Test Organization
|
|
65
|
+
|
|
66
|
+
- Group tests by feature or component
|
|
67
|
+
- Use categories with `[Category("CategoryName")]`
|
|
68
|
+
- Use `[Order]` to control test execution order when necessary
|
|
69
|
+
- Use `[Author("DeveloperName")]` to indicate ownership
|
|
70
|
+
- Use `[Description]` to provide additional test information
|
|
71
|
+
- Consider `[Explicit]` for tests that shouldn't run automatically
|
|
72
|
+
- Use `[Ignore("Reason")]` to temporarily skip tests
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: csharp-tunit
|
|
3
|
+
description: 'Get best practices for TUnit unit testing, including data-driven tests'
|
|
4
|
+
category: dev
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# TUnit Best Practices
|
|
8
|
+
|
|
9
|
+
Your goal is to help me write effective unit tests with TUnit, covering both standard and data-driven testing approaches.
|
|
10
|
+
|
|
11
|
+
## Project Setup
|
|
12
|
+
|
|
13
|
+
- Use a separate test project with naming convention `[ProjectName].Tests`
|
|
14
|
+
- Reference TUnit package and TUnit.Assertions for fluent assertions
|
|
15
|
+
- Create test classes that match the classes being tested (e.g., `CalculatorTests` for `Calculator`)
|
|
16
|
+
- Use .NET SDK test commands: `dotnet test` for running tests
|
|
17
|
+
- TUnit requires .NET 8.0 or higher
|
|
18
|
+
|
|
19
|
+
## Test Structure
|
|
20
|
+
|
|
21
|
+
- No test class attributes required (like xUnit/NUnit)
|
|
22
|
+
- Use `[Test]` attribute for test methods (not `[Fact]` like xUnit)
|
|
23
|
+
- Follow the Arrange-Act-Assert (AAA) pattern
|
|
24
|
+
- Name tests using the pattern `MethodName_Scenario_ExpectedBehavior`
|
|
25
|
+
- Use lifecycle hooks: `[Before(Test)]` for setup and `[After(Test)]` for teardown
|
|
26
|
+
- Use `[Before(Class)]` and `[After(Class)]` for shared context between tests in a class
|
|
27
|
+
- Use `[Before(Assembly)]` and `[After(Assembly)]` for shared context across test classes
|
|
28
|
+
- TUnit supports advanced lifecycle hooks like `[Before(TestSession)]` and `[After(TestSession)]`
|
|
29
|
+
|
|
30
|
+
## Standard Tests
|
|
31
|
+
|
|
32
|
+
- Keep tests focused on a single behavior
|
|
33
|
+
- Avoid testing multiple behaviors in one test method
|
|
34
|
+
- Use TUnit's fluent assertion syntax with `await Assert.That()`
|
|
35
|
+
- Include only the assertions needed to verify the test case
|
|
36
|
+
- Make tests independent and idempotent (can run in any order)
|
|
37
|
+
- Avoid test interdependencies (use `[DependsOn]` attribute if needed)
|
|
38
|
+
|
|
39
|
+
## Data-Driven Tests
|
|
40
|
+
|
|
41
|
+
- Use `[Arguments]` attribute for inline test data (equivalent to xUnit's `[InlineData]`)
|
|
42
|
+
- Use `[MethodData]` for method-based test data (equivalent to xUnit's `[MemberData]`)
|
|
43
|
+
- Use `[ClassData]` for class-based test data
|
|
44
|
+
- Create custom data sources by implementing `ITestDataSource`
|
|
45
|
+
- Use meaningful parameter names in data-driven tests
|
|
46
|
+
- Multiple `[Arguments]` attributes can be applied to the same test method
|
|
47
|
+
|
|
48
|
+
## Assertions
|
|
49
|
+
|
|
50
|
+
- Use `await Assert.That(value).IsEqualTo(expected)` for value equality
|
|
51
|
+
- Use `await Assert.That(value).IsSameReferenceAs(expected)` for reference equality
|
|
52
|
+
- Use `await Assert.That(value).IsTrue()` or `await Assert.That(value).IsFalse()` for boolean conditions
|
|
53
|
+
- Use `await Assert.That(collection).Contains(item)` or `await Assert.That(collection).DoesNotContain(item)` for collections
|
|
54
|
+
- Use `await Assert.That(value).Matches(pattern)` for regex pattern matching
|
|
55
|
+
- Use `await Assert.That(action).Throws<TException>()` or `await Assert.That(asyncAction).ThrowsAsync<TException>()` to test exceptions
|
|
56
|
+
- Chain assertions with `.And` operator: `await Assert.That(value).IsNotNull().And.IsEqualTo(expected)`
|
|
57
|
+
- Use `.Or` operator for alternative conditions: `await Assert.That(value).IsEqualTo(1).Or.IsEqualTo(2)`
|
|
58
|
+
- Use `.Within(tolerance)` for DateTime and numeric comparisons with tolerance
|
|
59
|
+
- All assertions are asynchronous and must be awaited
|
|
60
|
+
|
|
61
|
+
## Advanced Features
|
|
62
|
+
|
|
63
|
+
- Use `[Repeat(n)]` to repeat tests multiple times
|
|
64
|
+
- Use `[Retry(n)]` for automatic retry on failure
|
|
65
|
+
- Use `[ParallelLimit<T>]` to control parallel execution limits
|
|
66
|
+
- Use `[Skip("reason")]` to skip tests conditionally
|
|
67
|
+
- Use `[DependsOn(nameof(OtherTest))]` to create test dependencies
|
|
68
|
+
- Use `[Timeout(milliseconds)]` to set test timeouts
|
|
69
|
+
- Create custom attributes by extending TUnit's base attributes
|
|
70
|
+
|
|
71
|
+
## Test Organization
|
|
72
|
+
|
|
73
|
+
- Group tests by feature or component
|
|
74
|
+
- Use `[Category("CategoryName")]` for test categorization
|
|
75
|
+
- Use `[DisplayName("Custom Test Name")]` for custom test names
|
|
76
|
+
- Consider using `TestContext` for test diagnostics and information
|
|
77
|
+
- Use conditional attributes like custom `[WindowsOnly]` for platform-specific tests
|
|
78
|
+
|
|
79
|
+
## Performance and Parallel Execution
|
|
80
|
+
|
|
81
|
+
- TUnit runs tests in parallel by default (unlike xUnit which requires explicit configuration)
|
|
82
|
+
- Use `[NotInParallel]` to disable parallel execution for specific tests
|
|
83
|
+
- Use `[ParallelLimit<T>]` with custom limit classes to control concurrency
|
|
84
|
+
- Tests within the same class run sequentially by default
|
|
85
|
+
- Use `[Repeat(n)]` with `[ParallelLimit<T>]` for load testing scenarios
|
|
86
|
+
|
|
87
|
+
## Migration from xUnit
|
|
88
|
+
|
|
89
|
+
- Replace `[Fact]` with `[Test]`
|
|
90
|
+
- Replace `[Theory]` with `[Test]` and use `[Arguments]` for data
|
|
91
|
+
- Replace `[InlineData]` with `[Arguments]`
|
|
92
|
+
- Replace `[MemberData]` with `[MethodData]`
|
|
93
|
+
- Replace `Assert.Equal` with `await Assert.That(actual).IsEqualTo(expected)`
|
|
94
|
+
- Replace `Assert.True` with `await Assert.That(condition).IsTrue()`
|
|
95
|
+
- Replace `Assert.Throws<T>` with `await Assert.That(action).Throws<T>()`
|
|
96
|
+
- Replace constructor/IDisposable with `[Before(Test)]`/`[After(Test)]`
|
|
97
|
+
- Replace `IClassFixture<T>` with `[Before(Class)]`/`[After(Class)]`
|
|
98
|
+
|
|
99
|
+
**Why TUnit over xUnit?**
|
|
100
|
+
|
|
101
|
+
TUnit offers a modern, fast, and flexible testing experience with advanced features not present in xUnit, such as asynchronous assertions, more refined lifecycle hooks, and improved data-driven testing capabilities. TUnit's fluent assertions provide clearer and more expressive test validation, making it especially suitable for complex .NET projects.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: csharp-xunit
|
|
3
|
+
description: 'Get best practices for XUnit unit testing, including data-driven tests'
|
|
4
|
+
category: dev
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# XUnit Best Practices
|
|
8
|
+
|
|
9
|
+
Your goal is to help me write effective unit tests with XUnit, covering both standard and data-driven testing approaches.
|
|
10
|
+
|
|
11
|
+
## Project Setup
|
|
12
|
+
|
|
13
|
+
- Use a separate test project with naming convention `[ProjectName].Tests`
|
|
14
|
+
- Reference Microsoft.NET.Test.Sdk, xunit, and xunit.runner.visualstudio packages
|
|
15
|
+
- Create test classes that match the classes being tested (e.g., `CalculatorTests` for `Calculator`)
|
|
16
|
+
- Use .NET SDK test commands: `dotnet test` for running tests
|
|
17
|
+
|
|
18
|
+
## Test Structure
|
|
19
|
+
|
|
20
|
+
- No test class attributes required (unlike MSTest/NUnit)
|
|
21
|
+
- Use fact-based tests with `[Fact]` attribute for simple tests
|
|
22
|
+
- Follow the Arrange-Act-Assert (AAA) pattern
|
|
23
|
+
- Name tests using the pattern `MethodName_Scenario_ExpectedBehavior`
|
|
24
|
+
- Use constructor for setup and `IDisposable.Dispose()` for teardown
|
|
25
|
+
- Use `IClassFixture<T>` for shared context between tests in a class
|
|
26
|
+
- Use `ICollectionFixture<T>` for shared context between multiple test classes
|
|
27
|
+
|
|
28
|
+
## Standard Tests
|
|
29
|
+
|
|
30
|
+
- Keep tests focused on a single behavior
|
|
31
|
+
- Avoid testing multiple behaviors in one test method
|
|
32
|
+
- Use clear assertions that express intent
|
|
33
|
+
- Include only the assertions needed to verify the test case
|
|
34
|
+
- Make tests independent and idempotent (can run in any order)
|
|
35
|
+
- Avoid test interdependencies
|
|
36
|
+
|
|
37
|
+
## Data-Driven Tests
|
|
38
|
+
|
|
39
|
+
- Use `[Theory]` combined with data source attributes
|
|
40
|
+
- Use `[InlineData]` for inline test data
|
|
41
|
+
- Use `[MemberData]` for method-based test data
|
|
42
|
+
- Use `[ClassData]` for class-based test data
|
|
43
|
+
- Create custom data attributes by implementing `DataAttribute`
|
|
44
|
+
- Use meaningful parameter names in data-driven tests
|
|
45
|
+
|
|
46
|
+
## Assertions
|
|
47
|
+
|
|
48
|
+
- Use `Assert.Equal` for value equality
|
|
49
|
+
- Use `Assert.Same` for reference equality
|
|
50
|
+
- Use `Assert.True`/`Assert.False` for boolean conditions
|
|
51
|
+
- Use `Assert.Contains`/`Assert.DoesNotContain` for collections
|
|
52
|
+
- Use `Assert.Matches`/`Assert.DoesNotMatch` for regex pattern matching
|
|
53
|
+
- Use `Assert.Throws<T>` or `await Assert.ThrowsAsync<T>` to test exceptions
|
|
54
|
+
- Use fluent assertions library for more readable assertions
|
|
55
|
+
|
|
56
|
+
## Mocking and Isolation
|
|
57
|
+
|
|
58
|
+
- Consider using Moq or NSubstitute alongside XUnit
|
|
59
|
+
- Mock dependencies to isolate units under test
|
|
60
|
+
- Use interfaces to facilitate mocking
|
|
61
|
+
- Consider using a DI container for complex test setups
|
|
62
|
+
|
|
63
|
+
## Test Organization
|
|
64
|
+
|
|
65
|
+
- Group tests by feature or component
|
|
66
|
+
- Use `[Trait("Category", "CategoryName")]` for categorization
|
|
67
|
+
- Use collection fixtures to group tests with shared dependencies
|
|
68
|
+
- Consider output helpers (`ITestOutputHelper`) for test diagnostics
|
|
69
|
+
- Skip tests conditionally with `Skip = "reason"` in fact/theory attributes
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: debug-failing-test
|
|
3
|
+
description: Debug a failing test using an iterative logging approach, then clean up and document the learning.
|
|
4
|
+
category: dev
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
Debug a failing unit test by iteratively adding verbose logging, running the test, and analyzing the output until the root cause is found and fixed.
|
|
8
|
+
|
|
9
|
+
## Workflow
|
|
10
|
+
|
|
11
|
+
### Phase 1: Initial Assessment
|
|
12
|
+
|
|
13
|
+
1. **Run the failing test** to capture the current error message and stack trace
|
|
14
|
+
2. **Read the test file** to understand what is being tested
|
|
15
|
+
3. **Read the source file** being tested to understand the expected behavior
|
|
16
|
+
4. **Identify the assertion that fails** and what values are involved
|
|
17
|
+
|
|
18
|
+
### Phase 2: Iterative Debugging Loop
|
|
19
|
+
|
|
20
|
+
Repeat until the root cause is understood:
|
|
21
|
+
|
|
22
|
+
1. **Add verbose logging** around the suspicious code:
|
|
23
|
+
- Use `console.log('[DEBUG]', ...)` with descriptive labels
|
|
24
|
+
- Log input values, intermediate states, and return values
|
|
25
|
+
- Log before/after key operations
|
|
26
|
+
- Add timestamps if timing might be relevant
|
|
27
|
+
|
|
28
|
+
2. **Run the test** and capture output
|
|
29
|
+
|
|
30
|
+
3. **Assess the logging output:**
|
|
31
|
+
- What values are unexpected?
|
|
32
|
+
- Where does the behavior diverge from expectations?
|
|
33
|
+
- What additional logging would help narrow down the issue?
|
|
34
|
+
|
|
35
|
+
4. **Decide next action:**
|
|
36
|
+
- If root cause is clear → proceed to fix
|
|
37
|
+
- If more information needed → add more targeted logging and repeat
|
|
38
|
+
|
|
39
|
+
### Phase 3: Fix and Verify
|
|
40
|
+
|
|
41
|
+
1. **Implement the fix** based on findings
|
|
42
|
+
2. **Run the test** to verify it passes
|
|
43
|
+
3. **Run related tests** to ensure no regressions
|
|
44
|
+
|
|
45
|
+
### Phase 4: Clean Up
|
|
46
|
+
|
|
47
|
+
1. **Remove ALL debugging artifacts:**
|
|
48
|
+
- Delete all `console.log('[DEBUG]', ...)` statements added
|
|
49
|
+
- Remove any temporary variables or code added for debugging
|
|
50
|
+
- Ensure the code is in a clean, production-ready state
|
|
51
|
+
|
|
52
|
+
2. **Verify the test still passes** after cleanup
|
|
53
|
+
|
|
54
|
+
### Phase 5: Document and Learn
|
|
55
|
+
|
|
56
|
+
1. **Provide a summary** to the user (1-3 sentences):
|
|
57
|
+
- What was the bug?
|
|
58
|
+
- What was the fix?
|
|
59
|
+
|
|
60
|
+
2. **Record the learning** by following the learning instructions (if you have them):
|
|
61
|
+
- Extract a single, clear learning from this debugging session
|
|
62
|
+
- Add it to the "Learnings" section of the most relevant instruction file
|
|
63
|
+
- If a similar learning already exists, increment its counter instead
|
|
64
|
+
|
|
65
|
+
## Logging Conventions
|
|
66
|
+
|
|
67
|
+
When adding debug logging, use this format for easy identification and removal:
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
console.log('[DEBUG] <location>:', <value>);
|
|
71
|
+
console.log('[DEBUG] before <operation>:', { input, state });
|
|
72
|
+
console.log('[DEBUG] after <operation>:', { result, state });
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Example Debug Session
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
// Added logging example:
|
|
79
|
+
console.log('[DEBUG] getEnvironments input:', { workspaceFolder });
|
|
80
|
+
const envs = await manager.getEnvironments(workspaceFolder);
|
|
81
|
+
console.log('[DEBUG] getEnvironments result:', { count: envs.length, envs });
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Notes
|
|
85
|
+
|
|
86
|
+
- Prefer targeted logging over flooding the output
|
|
87
|
+
- Start with the failing assertion and work backwards
|
|
88
|
+
- Consider async timing issues, race conditions, and mock setup problems
|
|
89
|
+
- Check that mocks are returning expected values
|
|
90
|
+
- Verify test setup/teardown is correct
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: diff-analyze
|
|
3
|
+
description: Analyze git diffs for risk scoring, reviewer recommendations, and change classification
|
|
4
|
+
argument-hint: "[--branch BRANCH] [--pr PR#]"
|
|
5
|
+
allowed-tools: mcp__claude-flow__analyze_diff mcp__claude-flow__analyze_diff-risk mcp__claude-flow__analyze_diff-classify mcp__claude-flow__analyze_diff-reviewers mcp__claude-flow__analyze_diff-stats mcp__claude-flow__analyze_file-risk Bash
|
|
6
|
+
category: dev
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Diff Analysis
|
|
10
|
+
|
|
11
|
+
Analyze git diffs for risk, complexity, and reviewer assignment.
|
|
12
|
+
|
|
13
|
+
## When to use
|
|
14
|
+
|
|
15
|
+
Before submitting a PR or after making significant changes, analyze the diff to understand risk level, get reviewer recommendations, and classify the type of change.
|
|
16
|
+
|
|
17
|
+
## Steps
|
|
18
|
+
|
|
19
|
+
1. **Analyze diff** — call `mcp__claude-flow__analyze_diff` with the diff content for a comprehensive analysis
|
|
20
|
+
2. **Risk score** — call `mcp__claude-flow__analyze_diff-risk` for a quantified risk assessment
|
|
21
|
+
3. **Classify changes** — call `mcp__claude-flow__analyze_diff-classify` to categorize (feature, bugfix, refactor, etc.)
|
|
22
|
+
4. **Get reviewers** — call `mcp__claude-flow__analyze_diff-reviewers` for recommended reviewers based on code ownership
|
|
23
|
+
5. **Diff stats** — call `mcp__claude-flow__analyze_diff-stats` for line counts, file counts, complexity metrics
|
|
24
|
+
6. **File-level risk** — call `mcp__claude-flow__analyze_file-risk` for per-file risk breakdown
|
|
25
|
+
|
|
26
|
+
## Risk factors
|
|
27
|
+
|
|
28
|
+
- Files with high churn history
|
|
29
|
+
- Security-sensitive paths (auth, crypto, permissions)
|
|
30
|
+
- Large diffs (>500 lines)
|
|
31
|
+
- Cross-module changes
|
|
32
|
+
- Database migration files
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: diffs
|
|
3
|
+
description: Use the diffs tool to produce real, shareable diffs (viewer URL, file artifact, or both) instead of manual edit summaries.
|
|
4
|
+
category: dev
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
When you need to show edits as a real diff, prefer the `diffs` tool instead of writing a manual summary.
|
|
8
|
+
|
|
9
|
+
The `diffs` tool accepts either `before` + `after` text, or a unified `patch` string.
|
|
10
|
+
|
|
11
|
+
Use `mode=view` when you want an interactive gateway-hosted viewer. After the tool returns, use `details.viewerUrl` with the canvas tool via `canvas present` or `canvas navigate`.
|
|
12
|
+
If the deployment uses a loopback trusted proxy (for example Tailscale Serve with `gateway.trustedProxies` including `127.0.0.1`), raw loopback viewer requests can fail closed without forwarded client-IP headers. In that topology, prefer `mode=file` / `mode=both`, or use a configured `viewerBaseUrl` / explicit proxy/public `baseUrl` when you need a shareable viewer URL.
|
|
13
|
+
|
|
14
|
+
Use `mode=file` when you need a rendered file artifact. Set `fileFormat=png` (default) or `fileFormat=pdf`. The tool result includes `details.filePath`.
|
|
15
|
+
|
|
16
|
+
For large or high-fidelity files, use `fileQuality` (`standard`|`hq`|`print`) and optionally override `fileScale`/`fileMaxWidth`.
|
|
17
|
+
|
|
18
|
+
When you need to deliver the rendered file to a user or channel, do not rely on the raw tool-result renderer. Instead, call the `message` tool and pass `details.filePath` through `path` or `filePath`.
|
|
19
|
+
|
|
20
|
+
Use `mode=both` when you want both the gateway viewer URL and the rendered artifact.
|
|
21
|
+
|
|
22
|
+
If the user has configured diffs plugin defaults, prefer omitting `mode`, `theme`, `layout`, and related presentation options unless you need to override them for this specific diff.
|
|
23
|
+
|
|
24
|
+
Include `path` for before/after text when you know the file name.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dotnet-best-practices
|
|
3
|
+
description: 'Ensure .NET/C# code meets best practices for the solution/project.'
|
|
4
|
+
category: dev
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# .NET/C# Best Practices
|
|
8
|
+
|
|
9
|
+
Your task is to ensure .NET/C# code in ${selection} meets the best practices specific to this solution/project. This includes:
|
|
10
|
+
|
|
11
|
+
## Documentation & Structure
|
|
12
|
+
|
|
13
|
+
- Create comprehensive XML documentation comments for all public classes, interfaces, methods, and properties
|
|
14
|
+
- Include parameter descriptions and return value descriptions in XML comments
|
|
15
|
+
- Follow the established namespace structure: {Core|Console|App|Service}.{Feature}
|
|
16
|
+
|
|
17
|
+
## Design Patterns & Architecture
|
|
18
|
+
|
|
19
|
+
- Use primary constructor syntax for dependency injection (e.g., `public class MyClass(IDependency dependency)`)
|
|
20
|
+
- Implement the Command Handler pattern with generic base classes (e.g., `CommandHandler<TOptions>`)
|
|
21
|
+
- Use interface segregation with clear naming conventions (prefix interfaces with 'I')
|
|
22
|
+
- Follow the Factory pattern for complex object creation.
|
|
23
|
+
|
|
24
|
+
## Dependency Injection & Services
|
|
25
|
+
|
|
26
|
+
- Use constructor dependency injection with null checks via ArgumentNullException
|
|
27
|
+
- Register services with appropriate lifetimes (Singleton, Scoped, Transient)
|
|
28
|
+
- Use Microsoft.Extensions.DependencyInjection patterns
|
|
29
|
+
- Implement service interfaces for testability
|
|
30
|
+
|
|
31
|
+
## Resource Management & Localization
|
|
32
|
+
|
|
33
|
+
- Use ResourceManager for localized messages and error strings
|
|
34
|
+
- Separate LogMessages and ErrorMessages resource files
|
|
35
|
+
- Access resources via `_resourceManager.GetString("MessageKey")`
|
|
36
|
+
|
|
37
|
+
## Async/Await Patterns
|
|
38
|
+
|
|
39
|
+
- Use async/await for all I/O operations and long-running tasks
|
|
40
|
+
- Return Task or Task<T> from async methods
|
|
41
|
+
- Use ConfigureAwait(false) where appropriate
|
|
42
|
+
- Handle async exceptions properly
|
|
43
|
+
|
|
44
|
+
## Testing Standards
|
|
45
|
+
|
|
46
|
+
- Use MSTest framework with FluentAssertions for assertions
|
|
47
|
+
- Follow AAA pattern (Arrange, Act, Assert)
|
|
48
|
+
- Use Moq for mocking dependencies
|
|
49
|
+
- Test both success and failure scenarios
|
|
50
|
+
- Include null parameter validation tests
|
|
51
|
+
|
|
52
|
+
## Configuration & Settings
|
|
53
|
+
|
|
54
|
+
- Use strongly-typed configuration classes with data annotations
|
|
55
|
+
- Implement validation attributes (Required, NotEmptyOrWhitespace)
|
|
56
|
+
- Use IConfiguration binding for settings
|
|
57
|
+
- Support appsettings.json configuration files
|
|
58
|
+
|
|
59
|
+
## Semantic Kernel & AI Integration
|
|
60
|
+
|
|
61
|
+
- Use Microsoft.SemanticKernel for AI operations
|
|
62
|
+
- Implement proper kernel configuration and service registration
|
|
63
|
+
- Handle AI model settings (ChatCompletion, Embedding, etc.)
|
|
64
|
+
- Use structured output patterns for reliable AI responses
|
|
65
|
+
|
|
66
|
+
## Error Handling & Logging
|
|
67
|
+
|
|
68
|
+
- Use structured logging with Microsoft.Extensions.Logging
|
|
69
|
+
- Include scoped logging with meaningful context
|
|
70
|
+
- Throw specific exceptions with descriptive messages
|
|
71
|
+
- Use try-catch blocks for expected failure scenarios
|
|
72
|
+
|
|
73
|
+
## Performance & Security
|
|
74
|
+
|
|
75
|
+
- Use C# 12+ features and .NET 8 optimizations where applicable
|
|
76
|
+
- Implement proper input validation and sanitization
|
|
77
|
+
- Use parameterized queries for database operations
|
|
78
|
+
- Follow secure coding practices for AI/ML operations
|
|
79
|
+
|
|
80
|
+
## Code Quality
|
|
81
|
+
|
|
82
|
+
- Ensure SOLID principles compliance
|
|
83
|
+
- Avoid code duplication through base classes and utilities
|
|
84
|
+
- Use meaningful names that reflect domain concepts
|
|
85
|
+
- Keep methods focused and cohesive
|
|
86
|
+
- Implement proper disposal patterns for resources
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dotnet-design-pattern-review
|
|
3
|
+
description: 'Review the C#/.NET code for design pattern implementation and suggest improvements.'
|
|
4
|
+
category: dev
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# .NET/C# Design Pattern Review
|
|
8
|
+
|
|
9
|
+
Review the C#/.NET code in ${selection} for design pattern implementation and suggest improvements for the solution/project. Do not make any changes to the code, just provide a review.
|
|
10
|
+
|
|
11
|
+
## Required Design Patterns
|
|
12
|
+
|
|
13
|
+
- **Command Pattern**: Generic base classes (`CommandHandler<TOptions>`), `ICommandHandler<TOptions>` interface, `CommandHandlerOptions` inheritance, static `SetupCommand(IHost host)` methods
|
|
14
|
+
- **Factory Pattern**: Complex object creation service provider integration
|
|
15
|
+
- **Dependency Injection**: Primary constructor syntax, `ArgumentNullException` null checks, interface abstractions, proper service lifetimes
|
|
16
|
+
- **Repository Pattern**: Async data access interfaces provider abstractions for connections
|
|
17
|
+
- **Provider Pattern**: External service abstractions (database, AI), clear contracts, configuration handling
|
|
18
|
+
- **Resource Pattern**: ResourceManager for localized messages, separate .resx files (LogMessages, ErrorMessages)
|
|
19
|
+
|
|
20
|
+
## Review Checklist
|
|
21
|
+
|
|
22
|
+
- **Design Patterns**: Identify patterns used. Are Command Handler, Factory, Provider, and Repository patterns correctly implemented? Missing beneficial patterns?
|
|
23
|
+
- **Architecture**: Follow namespace conventions (`{Core|Console|App|Service}.{Feature}`)? Proper separation between Core/Console projects? Modular and readable?
|
|
24
|
+
- **.NET Best Practices**: Primary constructors, async/await with Task returns, ResourceManager usage, structured logging, strongly-typed configuration?
|
|
25
|
+
- **GoF Patterns**: Command, Factory, Template Method, Strategy patterns correctly implemented?
|
|
26
|
+
- **SOLID Principles**: Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion violations?
|
|
27
|
+
- **Performance**: Proper async/await, resource disposal, ConfigureAwait(false), parallel processing opportunities?
|
|
28
|
+
- **Maintainability**: Clear separation of concerns, consistent error handling, proper configuration usage?
|
|
29
|
+
- **Testability**: Dependencies abstracted via interfaces, mockable components, async testability, AAA pattern compatibility?
|
|
30
|
+
- **Security**: Input validation, secure credential handling, parameterized queries, safe exception handling?
|
|
31
|
+
- **Documentation**: XML docs for public APIs, parameter/return descriptions, resource file organization?
|
|
32
|
+
- **Code Clarity**: Meaningful names reflecting domain concepts, clear intent through patterns, self-explanatory structure?
|
|
33
|
+
- **Clean Code**: Consistent style, appropriate method/class size, minimal complexity, eliminated duplication?
|
|
34
|
+
|
|
35
|
+
## Improvement Focus Areas
|
|
36
|
+
|
|
37
|
+
- **Command Handlers**: Validation in base class, consistent error handling, proper resource management
|
|
38
|
+
- **Factories**: Dependency configuration, service provider integration, disposal patterns
|
|
39
|
+
- **Providers**: Connection management, async patterns, exception handling and logging
|
|
40
|
+
- **Configuration**: Data annotations, validation attributes, secure sensitive value handling
|
|
41
|
+
- **AI/ML Integration**: Semantic Kernel patterns, structured output handling, model configuration
|
|
42
|
+
|
|
43
|
+
Provide specific, actionable recommendations for improvements aligned with the project's architecture and .NET best practices.
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: dotnet-timezone
|
|
3
|
+
description: '.NET timezone handling guidance for C# applications. Use when working with TimeZoneInfo, DateTimeOffset, NodaTime, UTC conversion, daylight saving time, scheduling across timezones, cross-platform Windows/IANA timezone IDs, or when a .NET user needs the timezone for a city, address, region, or country and copy-paste-ready C# code.'
|
|
4
|
+
category: dev
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# .NET Timezone
|
|
8
|
+
|
|
9
|
+
Resolve timezone questions for .NET and C# code with production-safe guidance and copy-paste-ready snippets.
|
|
10
|
+
|
|
11
|
+
## Start With The Right Path
|
|
12
|
+
|
|
13
|
+
Identify the request type first:
|
|
14
|
+
|
|
15
|
+
- Address or location lookup
|
|
16
|
+
- Timezone ID lookup
|
|
17
|
+
- UTC/local conversion
|
|
18
|
+
- Cross-platform timezone compatibility
|
|
19
|
+
- Scheduling or DST handling
|
|
20
|
+
- API or persistence design
|
|
21
|
+
|
|
22
|
+
If the library is unclear, default to `TimeZoneConverter` for cross-platform work. If the scenario involves recurring schedules or strict DST rules, prefer `NodaTime`.
|
|
23
|
+
|
|
24
|
+
## Resolve Addresses And Locations
|
|
25
|
+
|
|
26
|
+
If the user provides an address, city, region, country, or document containing place names:
|
|
27
|
+
|
|
28
|
+
1. Extract each location from the input.
|
|
29
|
+
2. Read `references/timezone-index.md` for common Windows and IANA mappings.
|
|
30
|
+
3. If the exact location is not listed, infer the correct IANA zone from geography, then map it to the Windows ID.
|
|
31
|
+
4. Return both IDs and a ready-to-use C# example.
|
|
32
|
+
|
|
33
|
+
For each resolved location, provide:
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
Location: <resolved place>
|
|
37
|
+
Windows ID: <windows id>
|
|
38
|
+
IANA ID: <iana id>
|
|
39
|
+
UTC offset: <standard offset and DST offset when relevant>
|
|
40
|
+
DST: <yes/no>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Then include a cross-platform snippet like:
|
|
44
|
+
|
|
45
|
+
```csharp
|
|
46
|
+
using TimeZoneConverter;
|
|
47
|
+
|
|
48
|
+
TimeZoneInfo tz = TZConvert.GetTimeZoneInfo("Asia/Colombo");
|
|
49
|
+
DateTime local = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tz);
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
If multiple locations are present, include one block per location and then a combined multi-timezone snippet.
|
|
53
|
+
|
|
54
|
+
If a location is ambiguous, list the possible timezone matches and ask the user to choose the correct one.
|
|
55
|
+
|
|
56
|
+
## Look Up Timezone IDs
|
|
57
|
+
|
|
58
|
+
Use `references/timezone-index.md` for Windows to IANA mappings.
|
|
59
|
+
|
|
60
|
+
Always provide both formats:
|
|
61
|
+
|
|
62
|
+
- Windows ID for `TimeZoneInfo.FindSystemTimeZoneById()` on Windows
|
|
63
|
+
- IANA ID for Linux, containers, `NodaTime`, and `TimeZoneConverter`
|
|
64
|
+
|
|
65
|
+
## Generate Code
|
|
66
|
+
|
|
67
|
+
Use `references/code-patterns.md` and pick the smallest pattern that fits:
|
|
68
|
+
|
|
69
|
+
- Pattern 1: `TimeZoneInfo` for Windows-only code
|
|
70
|
+
- Pattern 2: `TimeZoneConverter` for cross-platform conversion
|
|
71
|
+
- Pattern 3: `NodaTime` for strict timezone arithmetic and DST-sensitive scheduling
|
|
72
|
+
- Pattern 4: `DateTimeOffset` for APIs and data transfer
|
|
73
|
+
- Pattern 5: ASP.NET Core persistence and presentation
|
|
74
|
+
- Pattern 6: recurring jobs and schedulers
|
|
75
|
+
- Pattern 7: ambiguous and invalid DST timestamps
|
|
76
|
+
|
|
77
|
+
Always include package guidance when recommending third-party libraries.
|
|
78
|
+
|
|
79
|
+
## Warn About Common Pitfalls
|
|
80
|
+
|
|
81
|
+
Mention the relevant warning when applicable:
|
|
82
|
+
|
|
83
|
+
- `TimeZoneInfo.FindSystemTimeZoneById()` is platform-specific for timezone IDs.
|
|
84
|
+
- Avoid storing `DateTime.Now` in databases; store UTC instead.
|
|
85
|
+
- Treat `DateTimeKind.Unspecified` as a bug risk unless it is deliberate input.
|
|
86
|
+
- DST transitions can skip or repeat local times.
|
|
87
|
+
- Azure Windows and Azure Linux environments may expect different timezone ID formats.
|
|
88
|
+
|
|
89
|
+
## Response Shape
|
|
90
|
+
|
|
91
|
+
For address and location requests:
|
|
92
|
+
|
|
93
|
+
1. Return the resolved timezone block for each location.
|
|
94
|
+
2. State the recommended implementation in one sentence.
|
|
95
|
+
3. Include a copy-paste-ready C# snippet.
|
|
96
|
+
|
|
97
|
+
For code and architecture requests:
|
|
98
|
+
|
|
99
|
+
1. State the recommended approach in one sentence.
|
|
100
|
+
2. Provide the timezone IDs if relevant.
|
|
101
|
+
3. Include the minimal working code snippet.
|
|
102
|
+
4. Mention the package requirement if needed.
|
|
103
|
+
5. Add one pitfall warning if it matters.
|
|
104
|
+
|
|
105
|
+
Keep responses concise and code-first.
|
|
106
|
+
|
|
107
|
+
## References
|
|
108
|
+
|
|
109
|
+
- `references/timezone-index.md`: common Windows and IANA timezone mappings
|
|
110
|
+
- `references/code-patterns.md`: ready-to-use .NET timezone patterns
|