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,222 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: adapter-fastify
|
|
3
|
+
description: >
|
|
4
|
+
Mount tRPC as a Fastify plugin with fastifyTRPCPlugin from
|
|
5
|
+
@trpc/server/adapters/fastify. Configure prefix, trpcOptions (router,
|
|
6
|
+
createContext, onError). Enable WebSocket subscriptions with useWSS and
|
|
7
|
+
@fastify/websocket. Set routerOptions.maxParamLength for batch requests.
|
|
8
|
+
Requires Fastify v5+. FastifyTRPCPluginOptions for type-safe onError.
|
|
9
|
+
CreateFastifyContextOptions provides req, res.
|
|
10
|
+
type: core
|
|
11
|
+
library: trpc
|
|
12
|
+
library_version: '11.15.1'
|
|
13
|
+
requires:
|
|
14
|
+
- server-setup
|
|
15
|
+
sources:
|
|
16
|
+
- www/docs/server/adapters/fastify.md
|
|
17
|
+
- examples/fastify-server/
|
|
18
|
+
category: backend
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# tRPC — Adapter: Fastify
|
|
22
|
+
|
|
23
|
+
## Setup
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
// server.ts
|
|
27
|
+
import { initTRPC } from '@trpc/server';
|
|
28
|
+
import {
|
|
29
|
+
fastifyTRPCPlugin,
|
|
30
|
+
FastifyTRPCPluginOptions,
|
|
31
|
+
} from '@trpc/server/adapters/fastify';
|
|
32
|
+
import type { CreateFastifyContextOptions } from '@trpc/server/adapters/fastify';
|
|
33
|
+
import fastify from 'fastify';
|
|
34
|
+
import { z } from 'zod';
|
|
35
|
+
|
|
36
|
+
function createContext({ req, res }: CreateFastifyContextOptions) {
|
|
37
|
+
return { req, res };
|
|
38
|
+
}
|
|
39
|
+
type Context = Awaited<ReturnType<typeof createContext>>;
|
|
40
|
+
|
|
41
|
+
const t = initTRPC.context<Context>().create();
|
|
42
|
+
|
|
43
|
+
const appRouter = t.router({
|
|
44
|
+
greet: t.procedure
|
|
45
|
+
.input(z.object({ name: z.string() }))
|
|
46
|
+
.query(({ input }) => ({ greeting: `Hello, ${input.name}!` })),
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
export type AppRouter = typeof appRouter;
|
|
50
|
+
|
|
51
|
+
const server = fastify({
|
|
52
|
+
routerOptions: {
|
|
53
|
+
maxParamLength: 5000,
|
|
54
|
+
},
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
server.register(fastifyTRPCPlugin, {
|
|
58
|
+
prefix: '/trpc',
|
|
59
|
+
trpcOptions: {
|
|
60
|
+
router: appRouter,
|
|
61
|
+
createContext,
|
|
62
|
+
onError({ path, error }) {
|
|
63
|
+
console.error(`Error in tRPC handler on path '${path}':`, error);
|
|
64
|
+
},
|
|
65
|
+
} satisfies FastifyTRPCPluginOptions<AppRouter>['trpcOptions'],
|
|
66
|
+
});
|
|
67
|
+
|
|
68
|
+
(async () => {
|
|
69
|
+
try {
|
|
70
|
+
await server.listen({ port: 3000 });
|
|
71
|
+
console.log('Listening on http://localhost:3000');
|
|
72
|
+
} catch (err) {
|
|
73
|
+
server.log.error(err);
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
76
|
+
})();
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Core Patterns
|
|
80
|
+
|
|
81
|
+
### WebSocket subscriptions with @fastify/websocket
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
import ws from '@fastify/websocket';
|
|
85
|
+
import {
|
|
86
|
+
fastifyTRPCPlugin,
|
|
87
|
+
FastifyTRPCPluginOptions,
|
|
88
|
+
} from '@trpc/server/adapters/fastify';
|
|
89
|
+
import fastify from 'fastify';
|
|
90
|
+
import { createContext } from './context';
|
|
91
|
+
import { appRouter, type AppRouter } from './router';
|
|
92
|
+
|
|
93
|
+
const server = fastify({
|
|
94
|
+
routerOptions: { maxParamLength: 5000 },
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
// Register @fastify/websocket BEFORE the tRPC plugin
|
|
98
|
+
server.register(ws);
|
|
99
|
+
|
|
100
|
+
server.register(fastifyTRPCPlugin, {
|
|
101
|
+
prefix: '/trpc',
|
|
102
|
+
useWSS: true,
|
|
103
|
+
trpcOptions: {
|
|
104
|
+
router: appRouter,
|
|
105
|
+
createContext,
|
|
106
|
+
keepAlive: {
|
|
107
|
+
enabled: true,
|
|
108
|
+
pingMs: 30000,
|
|
109
|
+
pongWaitMs: 5000,
|
|
110
|
+
},
|
|
111
|
+
} satisfies FastifyTRPCPluginOptions<AppRouter>['trpcOptions'],
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
server.listen({ port: 3000 });
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Install: `npm install @fastify/websocket` (minimum version 3.11.0)
|
|
118
|
+
|
|
119
|
+
### Type-safe onError with satisfies
|
|
120
|
+
|
|
121
|
+
```ts
|
|
122
|
+
server.register(fastifyTRPCPlugin, {
|
|
123
|
+
prefix: '/trpc',
|
|
124
|
+
trpcOptions: {
|
|
125
|
+
router: appRouter,
|
|
126
|
+
createContext,
|
|
127
|
+
onError({ path, error, type, input }) {
|
|
128
|
+
console.error(`[${type}] ${path}:`, error.message);
|
|
129
|
+
},
|
|
130
|
+
} satisfies FastifyTRPCPluginOptions<AppRouter>['trpcOptions'],
|
|
131
|
+
});
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
Due to Fastify plugin type inference limitations, use `satisfies FastifyTRPCPluginOptions<AppRouter>['trpcOptions']` to get correct types on `onError` and other callbacks.
|
|
135
|
+
|
|
136
|
+
### Limiting batch size with maxBatchSize
|
|
137
|
+
|
|
138
|
+
```ts
|
|
139
|
+
server.register(fastifyTRPCPlugin, {
|
|
140
|
+
prefix: '/trpc',
|
|
141
|
+
trpcOptions: {
|
|
142
|
+
router: appRouter,
|
|
143
|
+
createContext,
|
|
144
|
+
maxBatchSize: 10,
|
|
145
|
+
} satisfies FastifyTRPCPluginOptions<AppRouter>['trpcOptions'],
|
|
146
|
+
});
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Requests batching more than `maxBatchSize` operations are rejected with a `400 Bad Request` error. Set `maxItems` on your client's `httpBatchLink` to the same value to avoid exceeding the limit.
|
|
150
|
+
|
|
151
|
+
## Common Mistakes
|
|
152
|
+
|
|
153
|
+
### HIGH Registering @fastify/websocket after tRPC plugin
|
|
154
|
+
|
|
155
|
+
Wrong:
|
|
156
|
+
|
|
157
|
+
```ts
|
|
158
|
+
server.register(fastifyTRPCPlugin, {
|
|
159
|
+
useWSS: true,
|
|
160
|
+
trpcOptions: { router: appRouter, createContext },
|
|
161
|
+
});
|
|
162
|
+
server.register(ws); // too late!
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Correct:
|
|
166
|
+
|
|
167
|
+
```ts
|
|
168
|
+
server.register(ws); // register FIRST
|
|
169
|
+
server.register(fastifyTRPCPlugin, {
|
|
170
|
+
useWSS: true,
|
|
171
|
+
trpcOptions: { router: appRouter, createContext },
|
|
172
|
+
});
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
The WebSocket plugin must be registered before the tRPC plugin. Reverse order causes WebSocket routes to not be recognized.
|
|
176
|
+
|
|
177
|
+
Source: www/docs/server/adapters/fastify.md
|
|
178
|
+
|
|
179
|
+
### HIGH Missing maxParamLength for batch requests
|
|
180
|
+
|
|
181
|
+
Wrong:
|
|
182
|
+
|
|
183
|
+
```ts
|
|
184
|
+
const server = fastify();
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
Correct:
|
|
188
|
+
|
|
189
|
+
```ts
|
|
190
|
+
const server = fastify({
|
|
191
|
+
routerOptions: { maxParamLength: 5000 },
|
|
192
|
+
});
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Fastify defaults to `maxParamLength: 100`. Batch requests from `httpBatchLink` encode multiple procedure names in the URL path parameter, which easily exceeds 100 characters and returns a 404.
|
|
196
|
+
|
|
197
|
+
Source: www/docs/server/adapters/fastify.md
|
|
198
|
+
|
|
199
|
+
### CRITICAL Using Fastify v4 with tRPC v11
|
|
200
|
+
|
|
201
|
+
Wrong:
|
|
202
|
+
|
|
203
|
+
```json
|
|
204
|
+
{ "dependencies": { "fastify": "^4.0.0" } }
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Correct:
|
|
208
|
+
|
|
209
|
+
```json
|
|
210
|
+
{ "dependencies": { "fastify": "^5.0.0" } }
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
tRPC v11 requires Fastify v5+. Fastify v4 may return empty responses without errors due to incompatible response handling.
|
|
214
|
+
|
|
215
|
+
Source: www/docs/server/adapters/fastify.md
|
|
216
|
+
|
|
217
|
+
## See Also
|
|
218
|
+
|
|
219
|
+
- **server-setup** -- `initTRPC.create()`, router/procedure definition, context
|
|
220
|
+
- **subscriptions** -- async generator subscriptions, `tracked()`, `keepAlive`
|
|
221
|
+
- **adapter-standalone** -- simpler adapter when Fastify features are not needed
|
|
222
|
+
- Fastify docs: https://fastify.dev/docs/latest/
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: adapter-fetch
|
|
3
|
+
description: >
|
|
4
|
+
Deploy tRPC on WinterCG-compliant edge runtimes with fetchRequestHandler() from
|
|
5
|
+
@trpc/server/adapters/fetch. Supports Cloudflare Workers, Deno Deploy, Vercel
|
|
6
|
+
Edge Runtime, Astro, Remix, SolidStart. FetchCreateContextFnOptions provides
|
|
7
|
+
req (Request) and resHeaders (Headers) for context creation. The endpoint option
|
|
8
|
+
must match the URL path prefix where the handler is mounted.
|
|
9
|
+
type: core
|
|
10
|
+
library: trpc
|
|
11
|
+
library_version: '11.15.1'
|
|
12
|
+
requires:
|
|
13
|
+
- server-setup
|
|
14
|
+
sources:
|
|
15
|
+
- www/docs/server/adapters/fetch.mdx
|
|
16
|
+
- examples/cloudflare-workers/
|
|
17
|
+
- examples/deno-deploy/
|
|
18
|
+
category: backend
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# tRPC — Adapter: Fetch / Edge Runtimes
|
|
22
|
+
|
|
23
|
+
## Setup
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
// Cloudflare Worker example
|
|
27
|
+
import { initTRPC } from '@trpc/server';
|
|
28
|
+
import { fetchRequestHandler } from '@trpc/server/adapters/fetch';
|
|
29
|
+
import type { FetchCreateContextFnOptions } from '@trpc/server/adapters/fetch';
|
|
30
|
+
import { z } from 'zod';
|
|
31
|
+
|
|
32
|
+
function createContext({ req, resHeaders }: FetchCreateContextFnOptions) {
|
|
33
|
+
const user = req.headers.get('authorization');
|
|
34
|
+
return { user, resHeaders };
|
|
35
|
+
}
|
|
36
|
+
type Context = Awaited<ReturnType<typeof createContext>>;
|
|
37
|
+
|
|
38
|
+
const t = initTRPC.context<Context>().create();
|
|
39
|
+
|
|
40
|
+
const appRouter = t.router({
|
|
41
|
+
greet: t.procedure
|
|
42
|
+
.input(z.object({ name: z.string() }))
|
|
43
|
+
.query(({ input }) => ({ greeting: `Hello, ${input.name}!` })),
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
export type AppRouter = typeof appRouter;
|
|
47
|
+
|
|
48
|
+
export default {
|
|
49
|
+
async fetch(request: Request): Promise<Response> {
|
|
50
|
+
return fetchRequestHandler({
|
|
51
|
+
endpoint: '/trpc',
|
|
52
|
+
req: request,
|
|
53
|
+
router: appRouter,
|
|
54
|
+
createContext,
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Core Patterns
|
|
61
|
+
|
|
62
|
+
### Cloudflare Workers
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
import { fetchRequestHandler } from '@trpc/server/adapters/fetch';
|
|
66
|
+
import { createContext } from './context';
|
|
67
|
+
import { appRouter } from './router';
|
|
68
|
+
|
|
69
|
+
export default {
|
|
70
|
+
async fetch(request: Request): Promise<Response> {
|
|
71
|
+
return fetchRequestHandler({
|
|
72
|
+
endpoint: '/trpc',
|
|
73
|
+
req: request,
|
|
74
|
+
router: appRouter,
|
|
75
|
+
createContext,
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Astro SSR
|
|
82
|
+
|
|
83
|
+
```ts
|
|
84
|
+
// src/pages/trpc/[trpc].ts
|
|
85
|
+
import { fetchRequestHandler } from '@trpc/server/adapters/fetch';
|
|
86
|
+
import type { APIRoute } from 'astro';
|
|
87
|
+
import { createContext } from '../../server/context';
|
|
88
|
+
import { appRouter } from '../../server/router';
|
|
89
|
+
|
|
90
|
+
export const ALL: APIRoute = (opts) => {
|
|
91
|
+
return fetchRequestHandler({
|
|
92
|
+
endpoint: '/trpc',
|
|
93
|
+
req: opts.request,
|
|
94
|
+
router: appRouter,
|
|
95
|
+
createContext,
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Remix
|
|
101
|
+
|
|
102
|
+
```ts
|
|
103
|
+
// app/routes/trpc.$trpc.ts
|
|
104
|
+
import type { ActionFunctionArgs, LoaderFunctionArgs } from '@remix-run/node';
|
|
105
|
+
import { fetchRequestHandler } from '@trpc/server/adapters/fetch';
|
|
106
|
+
import { createContext } from '~/server/context';
|
|
107
|
+
import { appRouter } from '~/server/router';
|
|
108
|
+
|
|
109
|
+
function handleRequest(args: LoaderFunctionArgs | ActionFunctionArgs) {
|
|
110
|
+
return fetchRequestHandler({
|
|
111
|
+
endpoint: '/trpc',
|
|
112
|
+
req: args.request,
|
|
113
|
+
router: appRouter,
|
|
114
|
+
createContext,
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export const loader = async (args: LoaderFunctionArgs) => handleRequest(args);
|
|
119
|
+
export const action = async (args: ActionFunctionArgs) => handleRequest(args);
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Deno Deploy
|
|
123
|
+
|
|
124
|
+
```ts
|
|
125
|
+
import { fetchRequestHandler } from 'npm:@trpc/server/adapters/fetch';
|
|
126
|
+
import { createContext } from './context.ts';
|
|
127
|
+
import { appRouter } from './router.ts';
|
|
128
|
+
|
|
129
|
+
Deno.serve((request) => {
|
|
130
|
+
return fetchRequestHandler({
|
|
131
|
+
endpoint: '/trpc',
|
|
132
|
+
req: request,
|
|
133
|
+
router: appRouter,
|
|
134
|
+
createContext,
|
|
135
|
+
});
|
|
136
|
+
});
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Limiting batch size with maxBatchSize
|
|
140
|
+
|
|
141
|
+
```ts
|
|
142
|
+
import { fetchRequestHandler } from '@trpc/server/adapters/fetch';
|
|
143
|
+
import { createContext } from './context';
|
|
144
|
+
import { appRouter } from './router';
|
|
145
|
+
|
|
146
|
+
export default {
|
|
147
|
+
async fetch(request: Request): Promise<Response> {
|
|
148
|
+
return fetchRequestHandler({
|
|
149
|
+
endpoint: '/trpc',
|
|
150
|
+
req: request,
|
|
151
|
+
router: appRouter,
|
|
152
|
+
createContext,
|
|
153
|
+
maxBatchSize: 10,
|
|
154
|
+
});
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Requests batching more than `maxBatchSize` operations are rejected with a `400 Bad Request` error. Set `maxItems` on your client's `httpBatchLink` to the same value to avoid exceeding the limit.
|
|
160
|
+
|
|
161
|
+
## Common Mistakes
|
|
162
|
+
|
|
163
|
+
### HIGH Mismatched endpoint path in fetchRequestHandler
|
|
164
|
+
|
|
165
|
+
Wrong:
|
|
166
|
+
|
|
167
|
+
```ts
|
|
168
|
+
// Handler mounted at /api/trpc/[trpc] but endpoint says /trpc
|
|
169
|
+
fetchRequestHandler({
|
|
170
|
+
endpoint: '/trpc',
|
|
171
|
+
req: request,
|
|
172
|
+
router: appRouter,
|
|
173
|
+
createContext,
|
|
174
|
+
});
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Correct:
|
|
178
|
+
|
|
179
|
+
```ts
|
|
180
|
+
// endpoint must match the actual URL path prefix
|
|
181
|
+
fetchRequestHandler({
|
|
182
|
+
endpoint: '/api/trpc',
|
|
183
|
+
req: request,
|
|
184
|
+
router: appRouter,
|
|
185
|
+
createContext,
|
|
186
|
+
});
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
The `endpoint` option tells tRPC where to strip the URL prefix to extract the procedure name. If it does not match the actual mount path, all procedures return 404 because the path parsing extracts the wrong procedure name.
|
|
190
|
+
|
|
191
|
+
Source: www/docs/server/adapters/fetch.mdx
|
|
192
|
+
|
|
193
|
+
## See Also
|
|
194
|
+
|
|
195
|
+
- **server-setup** -- `initTRPC.create()`, router/procedure definition, context
|
|
196
|
+
- **adapter-standalone** -- alternative for Node.js HTTP server
|
|
197
|
+
- **adapter-express** -- alternative when Express middleware ecosystem is needed
|
|
198
|
+
- **adapter-aws-lambda** -- alternative for AWS Lambda deployments
|
|
199
|
+
- Cloudflare Workers docs: https://developers.cloudflare.com/workers/
|
|
200
|
+
- Deno Deploy docs: https://deno.com/deploy/docs
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: api-docs
|
|
3
|
+
description: Generate API documentation from source code with JSDoc and OpenAPI support
|
|
4
|
+
argument-hint: "<source-path>"
|
|
5
|
+
allowed-tools: Bash(npx *) mcp__claude-flow__hooks_worker-dispatch Read Write Grep
|
|
6
|
+
category: backend
|
|
7
|
+
---
|
|
8
|
+
Generate API documentation from TypeScript/JavaScript source:
|
|
9
|
+
|
|
10
|
+
1. **Scan exports**: Find all public functions, classes, and interfaces
|
|
11
|
+
2. **Extract JSDoc**: Parse `@param`, `@returns`, `@throws`, `@example` annotations
|
|
12
|
+
3. **Generate missing docs**: Add JSDoc for undocumented public APIs
|
|
13
|
+
4. **OpenAPI spec**: For HTTP endpoints, generate OpenAPI 3.0 definitions
|
|
14
|
+
|
|
15
|
+
Dispatch via MCP: `mcp__claude-flow__hooks_worker-dispatch({ trigger: "document", scope: "api" })`
|
|
16
|
+
|
|
17
|
+
Conventions:
|
|
18
|
+
- Every public export must have a JSDoc comment
|
|
19
|
+
- Include `@param` with type and description
|
|
20
|
+
- Include `@returns` with type and description
|
|
21
|
+
- Include `@throws` for known error conditions
|
|
22
|
+
- Include `@example` for non-obvious usage
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aspire
|
|
3
|
+
description: 'Aspire skill covering the Aspire CLI, AppHost orchestration, service discovery, integrations, MCP server, VS Code extension, Dev Containers, GitHub Codespaces, templates, dashboard, and deployment. Use when the user asks to create, run, debug, configure, deploy, or troubleshoot an Aspire distributed application.'
|
|
4
|
+
category: backend
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Aspire — Polyglot Distributed-App Orchestration
|
|
8
|
+
|
|
9
|
+
Aspire is a **code-first, polyglot toolchain** for building observable, production-ready distributed applications. It orchestrates containers, executables, and cloud resources from a single AppHost project — regardless of whether the workloads are C#, Python, JavaScript/TypeScript, Go, Java, Rust, Bun, Deno, or PowerShell.
|
|
10
|
+
|
|
11
|
+
> **Mental model:** The AppHost is a *conductor* — it doesn't play the instruments, it tells every service when to start, how to find each other, and watches for problems.
|
|
12
|
+
|
|
13
|
+
Detailed reference material lives in the `references/` folder — load on demand.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## References
|
|
18
|
+
|
|
19
|
+
| Reference | When to load |
|
|
20
|
+
|---|---|
|
|
21
|
+
| [CLI Reference](references/cli-reference.md) | Command flags, options, or detailed usage |
|
|
22
|
+
| [MCP Server](references/mcp-server.md) | Setting up MCP for AI assistants, available tools |
|
|
23
|
+
| [Integrations Catalog](references/integrations-catalog.md) | Discovering integrations via MCP tools, wiring patterns |
|
|
24
|
+
| [Polyglot APIs](references/polyglot-apis.md) | Method signatures, chaining options, language-specific patterns |
|
|
25
|
+
| [Architecture](references/architecture.md) | DCP internals, resource model, service discovery, networking, telemetry |
|
|
26
|
+
| [Dashboard](references/dashboard.md) | Dashboard features, standalone mode, GenAI Visualizer |
|
|
27
|
+
| [Deployment](references/deployment.md) | Docker, Kubernetes, Azure Container Apps, App Service |
|
|
28
|
+
| [Testing](references/testing.md) | Integration tests against the AppHost |
|
|
29
|
+
| [Troubleshooting](references/troubleshooting.md) | Diagnostic codes, common errors, and fixes |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 1. Researching Aspire Documentation
|
|
34
|
+
|
|
35
|
+
The Aspire team ships an **MCP server** that provides documentation tools directly inside your AI assistant. See [MCP Server](references/mcp-server.md) for setup details.
|
|
36
|
+
|
|
37
|
+
### Aspire CLI 13.2+ (recommended — has built-in docs search)
|
|
38
|
+
|
|
39
|
+
If running Aspire CLI **13.2 or later** (`aspire --version`), the MCP server includes docs search tools:
|
|
40
|
+
|
|
41
|
+
| Tool | Description |
|
|
42
|
+
|---|---|
|
|
43
|
+
| `list_docs` | Lists all available documentation from aspire.dev |
|
|
44
|
+
| `search_docs` | Performs weighted lexical search across indexed documentation |
|
|
45
|
+
| `get_doc` | Retrieves a specific document by its slug |
|
|
46
|
+
|
|
47
|
+
These tools were added in [PR #14028](https://github.com/dotnet/aspire/pull/14028). To update: `aspire update --self --channel daily`.
|
|
48
|
+
|
|
49
|
+
For more on this approach, see David Pine's post: https://davidpine.dev/posts/aspire-docs-mcp-tools/
|
|
50
|
+
|
|
51
|
+
### Aspire CLI 13.1 (integration tools only)
|
|
52
|
+
|
|
53
|
+
On 13.1, the MCP server provides integration lookup but **not** docs search:
|
|
54
|
+
|
|
55
|
+
| Tool | Description |
|
|
56
|
+
|---|---|
|
|
57
|
+
| `list_integrations` | Lists available Aspire hosting integrations |
|
|
58
|
+
| `get_integration_docs` | Gets documentation for a specific integration package |
|
|
59
|
+
|
|
60
|
+
For general docs queries on 13.1, use **Context7** as your primary source (see below).
|
|
61
|
+
|
|
62
|
+
### Fallback: Context7
|
|
63
|
+
|
|
64
|
+
Use **Context7** (`mcp_context7`) when the Aspire MCP docs tools are unavailable (13.1) or the MCP server isn't running:
|
|
65
|
+
|
|
66
|
+
**Step 1 — Resolve the library ID** (one-time per session):
|
|
67
|
+
|
|
68
|
+
Call `mcp_context7_resolve-library-id` with `libraryName: ".NET Aspire"`.
|
|
69
|
+
|
|
70
|
+
| Rank | Library ID | Use when |
|
|
71
|
+
|---|---|---|
|
|
72
|
+
| 1 | `/microsoft/aspire.dev` | Primary source. Guides, integrations, CLI reference, deployment. |
|
|
73
|
+
| 2 | `/dotnet/aspire` | API internals, source-level implementation details. |
|
|
74
|
+
| 3 | `/communitytoolkit/aspire` | Non-Microsoft polyglot integrations (Go, Java, Node.js, Ollama). |
|
|
75
|
+
|
|
76
|
+
**Step 2 — Query docs:**
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
libraryId: "/microsoft/aspire.dev", query: "Python integration AddPythonApp service discovery"
|
|
80
|
+
libraryId: "/communitytoolkit/aspire", query: "Golang Java Node.js community integrations"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### Fallback: GitHub search (when Context7 is also unavailable)
|
|
84
|
+
|
|
85
|
+
Search the official docs repo on GitHub:
|
|
86
|
+
- **Docs repo:** `microsoft/aspire.dev` — path: `src/frontend/src/content/docs/`
|
|
87
|
+
- **Source repo:** `dotnet/aspire`
|
|
88
|
+
- **Samples repo:** `dotnet/aspire-samples`
|
|
89
|
+
- **Community integrations:** `CommunityToolkit/Aspire`
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 2. Prerequisites & Install
|
|
94
|
+
|
|
95
|
+
| Requirement | Details |
|
|
96
|
+
|---|---|
|
|
97
|
+
| **.NET SDK** | 10.0+ (required even for non-.NET workloads — the AppHost is .NET) |
|
|
98
|
+
| **Container runtime** | Docker Desktop, Podman, or Rancher Desktop |
|
|
99
|
+
| **IDE (optional)** | VS Code + C# Dev Kit, Visual Studio 2022, JetBrains Rider |
|
|
100
|
+
|
|
101
|
+
```bash
|
|
102
|
+
# Linux / macOS
|
|
103
|
+
curl -sSL https://aspire.dev/install.sh | bash
|
|
104
|
+
|
|
105
|
+
# Windows PowerShell
|
|
106
|
+
irm https://aspire.dev/install.ps1 | iex
|
|
107
|
+
|
|
108
|
+
# Verify
|
|
109
|
+
aspire --version
|
|
110
|
+
|
|
111
|
+
# Install templates
|
|
112
|
+
dotnet new install Aspire.ProjectTemplates
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 3. Project Templates
|
|
118
|
+
|
|
119
|
+
| Template | Command | Description |
|
|
120
|
+
|---|---|---|
|
|
121
|
+
| **aspire-starter** | `aspire new aspire-starter` | ASP.NET Core/Blazor starter + AppHost + tests |
|
|
122
|
+
| **aspire-ts-cs-starter** | `aspire new aspire-ts-cs-starter` | ASP.NET Core/React starter + AppHost |
|
|
123
|
+
| **aspire-py-starter** | `aspire new aspire-py-starter` | FastAPI/React starter + AppHost |
|
|
124
|
+
| **aspire-apphost-singlefile** | `aspire new aspire-apphost-singlefile` | Empty single-file AppHost |
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## 4. AppHost Quick Start (Polyglot)
|
|
129
|
+
|
|
130
|
+
The AppHost orchestrates all services. Non-.NET workloads run as containers or executables.
|
|
131
|
+
|
|
132
|
+
```csharp
|
|
133
|
+
var builder = DistributedApplication.CreateBuilder(args);
|
|
134
|
+
|
|
135
|
+
// Infrastructure
|
|
136
|
+
var redis = builder.AddRedis("cache");
|
|
137
|
+
var postgres = builder.AddPostgres("pg").AddDatabase("catalog");
|
|
138
|
+
|
|
139
|
+
// .NET API
|
|
140
|
+
var api = builder.AddProject<Projects.CatalogApi>("api")
|
|
141
|
+
.WithReference(postgres).WithReference(redis);
|
|
142
|
+
|
|
143
|
+
// Python ML service
|
|
144
|
+
var ml = builder.AddPythonApp("ml-service", "../ml-service", "main.py")
|
|
145
|
+
.WithHttpEndpoint(targetPort: 8000).WithReference(redis);
|
|
146
|
+
|
|
147
|
+
// React frontend (Vite)
|
|
148
|
+
var web = builder.AddViteApp("web", "../frontend")
|
|
149
|
+
.WithHttpEndpoint(targetPort: 5173).WithReference(api);
|
|
150
|
+
|
|
151
|
+
// Go worker
|
|
152
|
+
var worker = builder.AddGolangApp("worker", "../go-worker")
|
|
153
|
+
.WithReference(redis);
|
|
154
|
+
|
|
155
|
+
builder.Build().Run();
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
For complete API signatures, see [Polyglot APIs](references/polyglot-apis.md).
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 5. Core Concepts (Summary)
|
|
163
|
+
|
|
164
|
+
| Concept | Key point |
|
|
165
|
+
|---|---|
|
|
166
|
+
| **Run vs Publish** | `aspire run` = local dev (DCP engine). `aspire publish` = generate deployment manifests. |
|
|
167
|
+
| **Service discovery** | Automatic via env vars: `ConnectionStrings__<name>`, `services__<name>__http__0` |
|
|
168
|
+
| **Resource lifecycle** | DAG ordering — dependencies start first. `.WaitFor()` gates on health checks. |
|
|
169
|
+
| **Resource types** | `ProjectResource`, `ContainerResource`, `ExecutableResource`, `ParameterResource` |
|
|
170
|
+
| **Integrations** | 144+ across 13 categories. Hosting package (AppHost) + Client package (service). |
|
|
171
|
+
| **Dashboard** | Real-time logs, traces, metrics, GenAI visualizer. Runs automatically with `aspire run`. |
|
|
172
|
+
| **MCP Server** | AI assistants can query running apps and search docs via CLI (STDIO). |
|
|
173
|
+
| **Testing** | `Aspire.Hosting.Testing` — spin up full AppHost in xUnit/MSTest/NUnit. |
|
|
174
|
+
| **Deployment** | Docker, Kubernetes, Azure Container Apps, Azure App Service. |
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## 6. CLI Quick Reference
|
|
179
|
+
|
|
180
|
+
Valid commands in Aspire CLI 13.1:
|
|
181
|
+
|
|
182
|
+
| Command | Description | Status |
|
|
183
|
+
|---|---|---|
|
|
184
|
+
| `aspire new <template>` | Create from template | Stable |
|
|
185
|
+
| `aspire init` | Initialize in existing project | Stable |
|
|
186
|
+
| `aspire run` | Start all resources locally | Stable |
|
|
187
|
+
| `aspire add <integration>` | Add an integration | Stable |
|
|
188
|
+
| `aspire publish` | Generate deployment manifests | Preview |
|
|
189
|
+
| `aspire config` | Manage configuration settings | Stable |
|
|
190
|
+
| `aspire cache` | Manage disk cache | Stable |
|
|
191
|
+
| `aspire deploy` | Deploy to defined targets | Preview |
|
|
192
|
+
| `aspire do <step>` | Execute a pipeline step | Preview |
|
|
193
|
+
| `aspire update` | Update integrations (or `--self` for CLI) | Preview |
|
|
194
|
+
| `aspire mcp init` | Configure MCP for AI assistants | Stable |
|
|
195
|
+
| `aspire mcp start` | Start the MCP server | Stable |
|
|
196
|
+
|
|
197
|
+
Full command reference with flags: [CLI Reference](references/cli-reference.md).
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## 7. Common Patterns
|
|
202
|
+
|
|
203
|
+
### Adding a new service
|
|
204
|
+
|
|
205
|
+
1. Create your service directory (any language)
|
|
206
|
+
2. Add to AppHost: `Add*App()` or `AddProject<T>()`
|
|
207
|
+
3. Wire dependencies: `.WithReference()`
|
|
208
|
+
4. Gate on health: `.WaitFor()` if needed
|
|
209
|
+
5. Run: `aspire run`
|
|
210
|
+
|
|
211
|
+
### Migrating from Docker Compose
|
|
212
|
+
|
|
213
|
+
1. `aspire new aspire-apphost-singlefile` (empty AppHost)
|
|
214
|
+
2. Replace each `docker-compose` service with an Aspire resource
|
|
215
|
+
3. `depends_on` → `.WithReference()` + `.WaitFor()`
|
|
216
|
+
4. `ports` → `.WithHttpEndpoint()`
|
|
217
|
+
5. `environment` → `.WithEnvironment()` or `.WithReference()`
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## 8. Key URLs
|
|
222
|
+
|
|
223
|
+
| Resource | URL |
|
|
224
|
+
|---|---|
|
|
225
|
+
| **Documentation** | https://aspire.dev |
|
|
226
|
+
| **Runtime repo** | https://github.com/dotnet/aspire |
|
|
227
|
+
| **Docs repo** | https://github.com/microsoft/aspire.dev |
|
|
228
|
+
| **Samples** | https://github.com/dotnet/aspire-samples |
|
|
229
|
+
| **Community Toolkit** | https://github.com/CommunityToolkit/Aspire |
|
|
230
|
+
| **Dashboard image** | `mcr.microsoft.com/dotnet/aspire-dashboard` |
|
|
231
|
+
| **Discord** | https://aka.ms/aspire/discord |
|
|
232
|
+
| **Reddit** | https://www.reddit.com/r/aspiredotdev/ |
|