@kensaurus/skills 0.0.0-stage → 2.0.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/.claude-plugin/marketplace.json +53 -0
- package/.claude-plugin/plugin.json +40 -0
- package/.cursor-plugin/plugin.json +38 -0
- package/.mcp.json +28 -0
- package/CHANGELOG.md +1761 -0
- package/LICENSE +21 -0
- package/NOTICE +13 -0
- package/README.md +820 -2
- package/SECURITY.md +55 -0
- package/agents/code-reviewer.md +60 -0
- package/agents/completion-judge.md +89 -0
- package/agents/db-migrator.md +125 -0
- package/agents/debugger.md +47 -0
- package/agents/deploy-checker.md +100 -0
- package/agents/perf-monitor.md +74 -0
- package/assets/favicon.png +0 -0
- package/assets/logo-light.png +0 -0
- package/assets/logo.png +0 -0
- package/assets/logo.svg +6 -0
- package/assets/og.png +0 -0
- package/bin/install.mjs +1127 -0
- package/bin/kenji.js +2 -0
- package/commands/adr.md +17 -0
- package/commands/aeo-plan.md +18 -0
- package/commands/arch-boundaries.md +17 -0
- package/commands/aso-plan.md +18 -0
- package/commands/auth-flows.md +19 -0
- package/commands/backup-plan.md +17 -0
- package/commands/burndown-full.md +25 -0
- package/commands/capacitor-plan.md +18 -0
- package/commands/codemod-safety.md +22 -0
- package/commands/commit.md +18 -0
- package/commands/complete-everything.md +40 -0
- package/commands/cost-plan.md +19 -0
- package/commands/deadcode-plan.md +26 -0
- package/commands/deadcode.md +32 -0
- package/commands/debug-issue.md +17 -0
- package/commands/deps-plan.md +18 -0
- package/commands/docs-plan.md +17 -0
- package/commands/doctrine.md +19 -0
- package/commands/error-plan.md +19 -0
- package/commands/feedback-to-closure.md +36 -0
- package/commands/fix-issue.md +76 -0
- package/commands/gate-logic.md +26 -0
- package/commands/green-repo.md +36 -0
- package/commands/grill-me.md +19 -0
- package/commands/gtm-plan.md +21 -0
- package/commands/gtm-weekly.md +17 -0
- package/commands/gtm.md +22 -0
- package/commands/handoff.md +15 -0
- package/commands/housekeep-backlog.md +18 -0
- package/commands/housekeep-files.md +22 -0
- package/commands/housekeep-gates.md +18 -0
- package/commands/instant-nav.md +11 -0
- package/commands/integrity-plan.md +19 -0
- package/commands/launch-kit.md +16 -0
- package/commands/mcp-guide.md +40 -0
- package/commands/mobile-plan.md +19 -0
- package/commands/native-rn-monorepo/README.md +78 -0
- package/commands/native-rn-monorepo/android-build.md +26 -0
- package/commands/native-rn-monorepo/android-install.md +32 -0
- package/commands/native-rn-monorepo/android-logcat.md +37 -0
- package/commands/native-rn-monorepo/ios-ci-logs.md +56 -0
- package/commands/native-rn-monorepo/ios-ci-status.md +52 -0
- package/commands/native-rn-monorepo/ios-ci-trigger.md +59 -0
- package/commands/native-rn-monorepo/rn-reset.md +50 -0
- package/commands/native-rn-monorepo/rn-ship-ios.md +67 -0
- package/commands/native-rn-monorepo/rn-verify.md +53 -0
- package/commands/perf-plan.md +18 -0
- package/commands/plan-mode.md +74 -0
- package/commands/pr.md +16 -0
- package/commands/pricing-plan.md +20 -0
- package/commands/privacy-plan.md +18 -0
- package/commands/readability.md +12 -0
- package/commands/readme.md +15 -0
- package/commands/refactor.md +15 -0
- package/commands/release-prep.md +17 -0
- package/commands/research.md +25 -0
- package/commands/responsive-audit.md +21 -0
- package/commands/review-code.md +18 -0
- package/commands/rls-plan.md +18 -0
- package/commands/secrets-plan.md +18 -0
- package/commands/security-plan.md +19 -0
- package/commands/ship-and-observe.md +36 -0
- package/commands/skill-conflicts.md +19 -0
- package/commands/slop-plan.md +18 -0
- package/commands/stub-plan.md +18 -0
- package/commands/test-mutation.md +16 -0
- package/commands/test-plan.md +17 -0
- package/commands/test.md +29 -0
- package/commands/thirdparty-web-interface-guidelines.md +185 -0
- package/commands/uiux-plan.md +18 -0
- package/commands/uiux.md +45 -0
- package/commands/update-deps.md +21 -0
- package/commands/validation-plan.md +19 -0
- package/commands-portable/fix-issue.md +72 -0
- package/commands-portable/plan-mode.md +92 -0
- package/commands-portable/research.md +91 -0
- package/docs/screenshots/README.md +5 -0
- package/docs/screenshots/audit-dark.png +0 -0
- package/docs/screenshots/build-dark.png +0 -0
- package/docs/screenshots/grill-dark.png +0 -0
- package/docs/screenshots/hero-dark.png +0 -0
- package/docs/screenshots/hero-light.png +0 -0
- package/docs/screenshots/ship-dark.png +0 -0
- package/docs/screenshots/src/showcase.html +320 -0
- package/hooks/completion-gate.mjs +258 -0
- package/hooks/cursor-hooks.json +13 -0
- package/hooks/hooks.json +15 -0
- package/install.sh +21 -0
- package/llms.txt +40 -0
- package/mcp/README.md +266 -0
- package/mcp/VERSIONS.md +41 -0
- package/mcp/mcp-full.json.template +124 -0
- package/mcp/mcp.json.template +29 -0
- package/mcp/pinned-versions.json +27 -0
- package/package.json +93 -4
- package/rules/approved-plan-execution.mdc +65 -0
- package/rules/full-stack-ship-discipline.mdc +37 -0
- package/rules/native-rn-monorepo/README.md +63 -0
- package/rules/native-rn-monorepo/_project.mdc +69 -0
- package/rules/native-rn-monorepo/native-android.mdc +72 -0
- package/rules/native-rn-monorepo/native-ios.mdc +61 -0
- package/rules/native-rn-monorepo/react-native-js.mdc +78 -0
- package/rules/native-rn-monorepo/web.mdc +60 -0
- package/rules/project-starter/components.mdc +54 -0
- package/rules/project-starter/data-fetching.mdc +77 -0
- package/rules/project-starter/git.mdc +41 -0
- package/rules/project-starter/supabase.mdc +37 -0
- package/rules/project-starter/tailwind.mdc +48 -0
- package/rules/project-starter/typescript.mdc +36 -0
- package/rules/project-starter/web-performance.mdc +42 -0
- package/rules/senior-engineer.mdc +30 -0
- package/rules/shell-first-search.mdc +19 -0
- package/rules/skill-workflows.mdc +35 -0
- package/rules/verification-before-completion.mdc +57 -0
- package/skills/audit-accessibility/SKILL.md +441 -0
- package/skills/audit-agent-speed/SKILL.md +181 -0
- package/skills/audit-agent-speed/scripts/stop-typecheck.mjs +151 -0
- package/skills/audit-analytics/SKILL.md +138 -0
- package/skills/audit-auth-flows/SKILL.md +267 -0
- package/skills/audit-backend-architecture/SKILL.md +266 -0
- package/skills/audit-backend-architecture/references/patterns.md +386 -0
- package/skills/audit-bundle-size/SKILL.md +296 -0
- package/skills/audit-cicd/SKILL.md +218 -0
- package/skills/audit-code-quality/SKILL.md +314 -0
- package/skills/audit-code-review/SKILL.md +289 -0
- package/skills/audit-codemod-safety/SKILL.md +159 -0
- package/skills/audit-db-schema/SKILL.md +465 -0
- package/skills/audit-db-schema/references/details.md +110 -0
- package/skills/audit-doctrine/SKILL.md +189 -0
- package/skills/audit-env-parity/SKILL.md +133 -0
- package/skills/audit-fe-api/SKILL.md +458 -0
- package/skills/audit-gate-logic/SKILL.md +219 -0
- package/skills/audit-i18n/SKILL.md +339 -0
- package/skills/audit-infra-cost/SKILL.md +142 -0
- package/skills/audit-langfuse-llm/SKILL.md +468 -0
- package/skills/audit-langfuse-llm/references/details.md +226 -0
- package/skills/audit-llm-security/SKILL.md +147 -0
- package/skills/audit-monetization-iap/SKILL.md +137 -0
- package/skills/audit-payment-system/SKILL.md +268 -0
- package/skills/audit-payment-system/references/checklist.md +283 -0
- package/skills/audit-performance/SKILL.md +383 -0
- package/skills/audit-performance/references/loading-priority-2026.md +81 -0
- package/skills/audit-realworld/SKILL.md +287 -0
- package/skills/audit-registry-listing/SKILL.md +122 -0
- package/skills/audit-resilience/SKILL.md +154 -0
- package/skills/audit-responsive/SKILL.md +221 -0
- package/skills/audit-responsive/references/checklist.md +166 -0
- package/skills/audit-security/SKILL.md +289 -0
- package/skills/audit-skill-conflicts/SKILL.md +178 -0
- package/skills/audit-ui-states/SKILL.md +146 -0
- package/skills/audit-uiux-design-system/SKILL.md +475 -0
- package/skills/audit-uiux-design-system/references/details.md +71 -0
- package/skills/audit-ux/SKILL.md +379 -0
- package/skills/audit-ux/references/details.md +245 -0
- package/skills/audit-ux-journeys/SKILL.md +215 -0
- package/skills/audit-ux-journeys/references/checklist.md +179 -0
- package/skills/backend-db-performance/SKILL.md +441 -0
- package/skills/backend-error-handling/SKILL.md +489 -0
- package/skills/backend-error-handling/references/details.md +58 -0
- package/skills/backend-observability/SKILL.md +88 -0
- package/skills/backend-patterns/SKILL.md +499 -0
- package/skills/backend-patterns/references/architecture-patterns.md +298 -0
- package/skills/backend-realtime/SKILL.md +403 -0
- package/skills/backend-realtime/references/patterns.md +74 -0
- package/skills/burndown-full/SKILL.md +174 -0
- package/skills/complete-everything/SKILL.md +295 -0
- package/skills/data-pipeline/SKILL.md +109 -0
- package/skills/data-visualization/SKILL.md +488 -0
- package/skills/debug-error/SKILL.md +322 -0
- package/skills/debug-fe-be-integration/SKILL.md +459 -0
- package/skills/debug-sentry-monitor/SKILL.md +497 -0
- package/skills/debug-sentry-monitor/references/details.md +165 -0
- package/skills/deploy-npm/SKILL.md +394 -0
- package/skills/deploy-npm/references/example-mushi-mushi.md +52 -0
- package/skills/deploy-verify/SKILL.md +489 -0
- package/skills/design-api/SKILL.md +379 -0
- package/skills/design-canvas/SKILL.md +155 -0
- package/skills/design-email/SKILL.md +370 -0
- package/skills/design-frontend/SKILL.md +143 -0
- package/skills/design-generative-art/SKILL.md +474 -0
- package/skills/design-mobile-first/SKILL.md +506 -0
- package/skills/design-motion/SKILL.md +333 -0
- package/skills/design-motion/references/delight-interactions.md +191 -0
- package/skills/design-prd/SKILL.md +443 -0
- package/skills/design-system/SKILL.md +457 -0
- package/skills/design-theme/SKILL.md +226 -0
- package/skills/design-theme/themes/tsumagoi-ranch.md +150 -0
- package/skills/docs-adr/SKILL.md +168 -0
- package/skills/docs-coauthor/SKILL.md +368 -0
- package/skills/docs-comparison-pages/SKILL.md +117 -0
- package/skills/docs-domain-modeling/SKILL.md +97 -0
- package/skills/docs-launch-kit/SKILL.md +139 -0
- package/skills/docs-writer/SKILL.md +469 -0
- package/skills/enhance-agent-guardrails/SKILL.md +164 -0
- package/skills/enhance-arch-boundaries/SKILL.md +154 -0
- package/skills/enhance-capacitor-ui/SKILL.md +463 -0
- package/skills/enhance-capacitor-ui/references/details.md +750 -0
- package/skills/enhance-email-deliverability/SKILL.md +143 -0
- package/skills/enhance-growth-loops/SKILL.md +122 -0
- package/skills/enhance-lifecycle-email/SKILL.md +130 -0
- package/skills/enhance-motion/SKILL.md +193 -0
- package/skills/enhance-onboarding/SKILL.md +148 -0
- package/skills/enhance-pwa/SKILL.md +304 -0
- package/skills/enhance-readability/SKILL.md +146 -0
- package/skills/enhance-readme/SKILL.md +496 -0
- package/skills/enhance-readme/package-lock.json +187 -0
- package/skills/enhance-readme/package.json +17 -0
- package/skills/enhance-readme/scripts/generate-readme-blocks.mjs +199 -0
- package/skills/enhance-readme/scripts/record-readme-tour.mjs +442 -0
- package/skills/enhance-skill-prompts/SKILL.md +167 -0
- package/skills/enhance-skill-prompts/references/exemplar-audit-auth-flows.md +311 -0
- package/skills/enhance-web-conversion/SKILL.md +155 -0
- package/skills/enhance-web-forms/SKILL.md +154 -0
- package/skills/enhance-web-instant-nav/SKILL.md +138 -0
- package/skills/enhance-web-instant-nav/references/bfcache-blockers.md +23 -0
- package/skills/enhance-web-instant-nav/references/early-hints.md +33 -0
- package/skills/enhance-web-instant-nav/references/speculation-rules.md +44 -0
- package/skills/enhance-web-landing/SKILL.md +459 -0
- package/skills/enhance-web-landing/references/details.md +773 -0
- package/skills/enhance-web-redesign/SKILL.md +228 -0
- package/skills/enhance-web-seo/SKILL.md +276 -0
- package/skills/enhance-web-ui/SKILL.md +473 -0
- package/skills/enhance-web-ui/references/details.md +674 -0
- package/skills/enhance-web-ux/HEURISTICS.md +242 -0
- package/skills/enhance-web-ux/PATTERNS.md +375 -0
- package/skills/enhance-web-ux/SKILL.md +464 -0
- package/skills/enhance-web-ux/examples.md +222 -0
- package/skills/enhance-web-ux/references/details.md +406 -0
- package/skills/enhance-web-web3d/SKILL.md +397 -0
- package/skills/enhance-web-web3d/references/css-canvas-effects.md +180 -0
- package/skills/handoff/SKILL.md +66 -0
- package/skills/housekeep-backlog/SKILL.md +149 -0
- package/skills/housekeep-dead-code/SKILL.md +387 -0
- package/skills/housekeep-dead-code/references/ratchet-ci.md +205 -0
- package/skills/housekeep-dead-code/references/supabase-hygiene.md +152 -0
- package/skills/housekeep-design/SKILL.md +207 -0
- package/skills/housekeep-files/SKILL.md +220 -0
- package/skills/housekeep-files/references/naming-and-catalog.md +86 -0
- package/skills/housekeep-files/scripts/housekeep-files.ps1 +360 -0
- package/skills/housekeep-files/scripts/housekeep-files.sh +238 -0
- package/skills/housekeep-gates/SKILL.md +174 -0
- package/skills/iterate-agent-harness/SKILL.md +137 -0
- package/skills/iterate-gtm-weekly/SKILL.md +103 -0
- package/skills/iterate-post-launch/SKILL.md +292 -0
- package/skills/meta-mcp-builder/SKILL.md +313 -0
- package/skills/meta-skill-creator/SKILL.md +304 -0
- package/skills/mobile-capacitor-platform/SKILL.md +104 -0
- package/skills/mobile-emulator-start/SKILL.md +296 -0
- package/skills/mobile-emulator-test/SKILL.md +491 -0
- package/skills/mobile-emulator-test/references/details.md +478 -0
- package/skills/mobile-rn-performance/SKILL.md +107 -0
- package/skills/mobile-rn-screen/SKILL.md +476 -0
- package/skills/mobile-rn-screen/references/details.md +785 -0
- package/skills/mushi-health/SKILL.md +206 -0
- package/skills/mushi-integration/SKILL.md +257 -0
- package/skills/plan-aeo-readiness/SKILL.md +166 -0
- package/skills/plan-antislop/SKILL.md +281 -0
- package/skills/plan-aso/SKILL.md +149 -0
- package/skills/plan-backup-dr/SKILL.md +131 -0
- package/skills/plan-capacitor-hardening/SKILL.md +217 -0
- package/skills/plan-data-integrity/SKILL.md +187 -0
- package/skills/plan-dead-code/SKILL.md +386 -0
- package/skills/plan-dead-code/references/knip-config.md +214 -0
- package/skills/plan-dead-code/references/output-templates.md +133 -0
- package/skills/plan-dead-code/references/preservation-contract.md +50 -0
- package/skills/plan-dead-code/references/residue-greps.md +84 -0
- package/skills/plan-dependency-provenance/SKILL.md +200 -0
- package/skills/plan-docs-sync/SKILL.md +143 -0
- package/skills/plan-docs-sync/references/drift-taxonomy.md +43 -0
- package/skills/plan-docs-sync/references/output-templates.md +33 -0
- package/skills/plan-docs-sync/references/preservation-contract.md +17 -0
- package/skills/plan-error-handling/SKILL.md +205 -0
- package/skills/plan-gtm/SKILL.md +276 -0
- package/skills/plan-gtm/references/benchmarks-2026.md +183 -0
- package/skills/plan-input-validation/SKILL.md +179 -0
- package/skills/plan-llm-cost-guardrails/SKILL.md +176 -0
- package/skills/plan-mobile-readiness/SKILL.md +171 -0
- package/skills/plan-perf-audit/SKILL.md +145 -0
- package/skills/plan-perf-audit/references/audit-scope.md +51 -0
- package/skills/plan-perf-audit/references/output-templates.md +33 -0
- package/skills/plan-perf-audit/references/preservation-contract.md +13 -0
- package/skills/plan-pricing/SKILL.md +173 -0
- package/skills/plan-privacy-compliance/SKILL.md +148 -0
- package/skills/plan-rls-audit/SKILL.md +231 -0
- package/skills/plan-secrets-audit/SKILL.md +181 -0
- package/skills/plan-security-audit/SKILL.md +168 -0
- package/skills/plan-security-audit/references/output-templates.md +36 -0
- package/skills/plan-security-audit/references/owasp-supabase-scope.md +55 -0
- package/skills/plan-security-audit/references/preservation-contract.md +18 -0
- package/skills/plan-stub-checker/SKILL.md +216 -0
- package/skills/plan-stub-checker/references/detection-methodology.md +75 -0
- package/skills/plan-stub-checker/references/detection-taxonomy.md +34 -0
- package/skills/plan-stub-checker/references/output-templates.md +63 -0
- package/skills/plan-stub-checker/references/preservation-contract.md +24 -0
- package/skills/plan-test-coverage/SKILL.md +170 -0
- package/skills/plan-test-coverage/references/methodology.md +54 -0
- package/skills/plan-test-coverage/references/output-templates.md +34 -0
- package/skills/plan-test-coverage/references/preservation-contract.md +15 -0
- package/skills/plan-uiux-unification/SKILL.md +230 -0
- package/skills/plan-uiux-unification/references/output-templates.md +67 -0
- package/skills/plan-uiux-unification/references/phase-workbook.md +85 -0
- package/skills/plan-uiux-unification/references/preservation-contract.md +24 -0
- package/skills/protocol-browser-anti-stall/SKILL.md +211 -0
- package/skills/protocol-browser-anti-stall/references/mcp-to-cli-map.md +113 -0
- package/skills/protocol-browser-anti-stall/references/playwright-session-coordination.md +170 -0
- package/skills/research/SKILL.md +422 -0
- package/skills/test-exploratory/SKILL.md +165 -0
- package/skills/test-exploratory/references/charter-template.md +29 -0
- package/skills/test-load/SKILL.md +126 -0
- package/skills/test-mutation/SKILL.md +160 -0
- package/skills/test-playwright/SKILL.md +354 -0
- package/skills/test-qa/SKILL.md +364 -0
- package/skills/test-qa/references/details.md +268 -0
- package/skills/test-red-team/SKILL.md +387 -0
- package/skills/test-red-team/references/owasp-attack-checklist.md +193 -0
- package/skills/test-unit/SKILL.md +259 -0
- package/skills/test-unit/references/details.md +267 -0
- package/skills/test-visual-regression/SKILL.md +132 -0
- package/skills/thirdparty-emil-design-eng/ATTRIBUTION.md +20 -0
- package/skills/thirdparty-emil-design-eng/SKILL.md +21 -0
- package/skills/thirdparty-emil-design-eng/references/emil-design-eng.md +676 -0
- package/skills/thirdparty-ui-ux-pro-max/ATTRIBUTION.md +22 -0
- package/skills/thirdparty-ui-ux-pro-max/SKILL.md +304 -0
- package/skills/thirdparty-ui-ux-pro-max/data/charts.csv +26 -0
- package/skills/thirdparty-ui-ux-pro-max/data/colors.csv +97 -0
- package/skills/thirdparty-ui-ux-pro-max/data/icons.csv +101 -0
- package/skills/thirdparty-ui-ux-pro-max/data/landing.csv +31 -0
- package/skills/thirdparty-ui-ux-pro-max/data/products.csv +97 -0
- package/skills/thirdparty-ui-ux-pro-max/data/react-performance.csv +45 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/skills/thirdparty-ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/skills/thirdparty-ui-ux-pro-max/data/styles.csv +68 -0
- package/skills/thirdparty-ui-ux-pro-max/data/typography.csv +58 -0
- package/skills/thirdparty-ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/skills/thirdparty-ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/skills/thirdparty-ui-ux-pro-max/data/web-interface.csv +31 -0
- package/skills/thirdparty-ui-ux-pro-max/scripts/core.py +253 -0
- package/skills/thirdparty-ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/skills/thirdparty-ui-ux-pro-max/scripts/search.py +114 -0
- package/skills/thirdparty-web-interface-guidelines/ATTRIBUTION.md +23 -0
- package/skills/thirdparty-web-interface-guidelines/SKILL.md +190 -0
- package/skills/workflow-build-feature/SKILL.md +118 -0
- package/skills/workflow-coding-discipline/SKILL.md +140 -0
- package/skills/workflow-environment-ready/SKILL.md +128 -0
- package/skills/workflow-feature-flag/SKILL.md +262 -0
- package/skills/workflow-feedback-to-closure/SKILL.md +165 -0
- package/skills/workflow-fix-and-ship/SKILL.md +136 -0
- package/skills/workflow-git-commit/SKILL.md +200 -0
- package/skills/workflow-green-repo/SKILL.md +166 -0
- package/skills/workflow-grilling/SKILL.md +73 -0
- package/skills/workflow-gtm/SKILL.md +153 -0
- package/skills/workflow-housekeep/SKILL.md +453 -0
- package/skills/workflow-housekeep/references/templates.md +109 -0
- package/skills/workflow-launch-ready/SKILL.md +145 -0
- package/skills/workflow-merge-conflicts/SKILL.md +62 -0
- package/skills/workflow-onboard/SKILL.md +99 -0
- package/skills/workflow-parallel-agents/SKILL.md +164 -0
- package/skills/workflow-pr/SKILL.md +197 -0
- package/skills/workflow-quality-gate/SKILL.md +147 -0
- package/skills/workflow-refactor/SKILL.md +274 -0
- package/skills/workflow-release-prep/SKILL.md +207 -0
- package/skills/workflow-ship-and-observe/SKILL.md +164 -0
- package/skills/workflow-spec-tdd/SKILL.md +141 -0
- package/skills/workflow-spec-tdd/references/spec-template.md +126 -0
- package/skills/workflow-spec-tdd/references/tdd-patterns.md +167 -0
- package/skills-cursor/babysit/SKILL.md +17 -0
- package/skills-cursor/canvas/SKILL.md +142 -0
- package/skills-cursor/canvas/sdk/canvas-tokens.d.ts +235 -0
- package/skills-cursor/canvas/sdk/chart-primitives.d.ts +200 -0
- package/skills-cursor/canvas/sdk/dag-layout.d.ts +102 -0
- package/skills-cursor/canvas/sdk/diff-view.d.ts +130 -0
- package/skills-cursor/canvas/sdk/form-primitives.d.ts +194 -0
- package/skills-cursor/canvas/sdk/hooks.d.ts +117 -0
- package/skills-cursor/canvas/sdk/index.d.ts +47 -0
- package/skills-cursor/canvas/sdk/theme.d.ts +61 -0
- package/skills-cursor/canvas/sdk/todo-list.d.ts +49 -0
- package/skills-cursor/canvas/sdk/ui-primitives.d.ts +549 -0
- package/skills-cursor/canvas/sdk/ui-primitives.test.d.ts +2 -0
- package/skills-cursor/create-hook/SKILL.md +238 -0
- package/skills-cursor/create-rule/SKILL.md +185 -0
- package/skills-cursor/create-skill/SKILL.md +269 -0
- package/skills-cursor/create-skill/references/authoring-guide.md +182 -0
- package/skills-cursor/create-subagent/SKILL.md +228 -0
- package/skills-cursor/migrate-to-skills/SKILL.md +121 -0
- package/skills-cursor/shell/SKILL.md +22 -0
- package/skills-cursor/split-to-prs/SKILL.md +47 -0
- package/skills-cursor/statusline/SKILL.md +193 -0
- package/skills-cursor/update-cli-config/SKILL.md +85 -0
- package/skills-cursor/update-cursor-settings/SKILL.md +137 -0
- package/skills.sh.json +296 -0
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: iterate-post-launch
|
|
3
|
+
description: >
|
|
4
|
+
Close the feedback loop on a live app: read production signals, rank the top
|
|
5
|
+
issues, fix, verify live, repeat. Use when "post-launch polish", "fix the
|
|
6
|
+
top production issues", "iterate on feedback", or "what should I fix next
|
|
7
|
+
after launch?".
|
|
8
|
+
license: MIT
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# iterate-post-launch — Production Signal → Prioritised Fix Loop
|
|
12
|
+
|
|
13
|
+
**Degree of freedom: MIXED.** Triage and sprint plan `[HIGH freedom]`;
|
|
14
|
+
signal pulls, confirmation-before-edit, and live verify
|
|
15
|
+
`[LOW freedom — run exactly]`.
|
|
16
|
+
|
|
17
|
+
**You shipped. That is the beginning, not the end.** Real users hit real paths
|
|
18
|
+
you did not test. Sentry, Supabase logs, and the live UI tell you exactly what
|
|
19
|
+
to fix next — if you know how to read them. This skill turns those signals into
|
|
20
|
+
a ranked, actionable improvement plan and then implements it.
|
|
21
|
+
|
|
22
|
+
> **Plan → Signal → Triage → Fix → Verify.** Do not guess what to improve.
|
|
23
|
+
> Let production data point to the highest-impact work first.
|
|
24
|
+
|
|
25
|
+
**Before ANY browser action, read `protocol-browser-anti-stall`.**
|
|
26
|
+
|
|
27
|
+
## How to reason
|
|
28
|
+
|
|
29
|
+
1. **Observe** — Sentry, Supabase logs/advisors, and a headed walkthrough in parallel
|
|
30
|
+
2. **Interpret** — impact × effort from those signals, not a guessed redesign
|
|
31
|
+
3. **Classify** — Critical / High / Medium / Low; present the sprint before editing
|
|
32
|
+
4. **Verify** — live Playwright (or the failing query) before resolving the Sentry issue
|
|
33
|
+
|
|
34
|
+
## Worked example
|
|
35
|
+
|
|
36
|
+
> **Observe:** Sentry `TypeError` on `/checkout` 2.4k events / 14d; advisor missing index on `orders(user_id)`; live empty cart has no message.
|
|
37
|
+
> **Interpret:** checkout crash blocks paying users — outranks the index and the empty state.
|
|
38
|
+
> **Classify:** Critical = crash fix; High = index; Medium = empty-cart copy. Present that sprint; do not start a homepage rewrite.
|
|
39
|
+
> **Verify:** headed `-s=post-launch` replay of checkout → 2xx; then `sentry:update_issue` resolved.
|
|
40
|
+
|
|
41
|
+
## Self-critique before reporting
|
|
42
|
+
|
|
43
|
+
- **Signal-backed** — every fix traces to Sentry, logs, advisors, or the walkthrough
|
|
44
|
+
- **Live before resolve** — Playwright or the query, then Sentry resolved
|
|
45
|
+
- **Rows ask first** — asked-for schema ships; DELETE/UPDATE on real rows waits
|
|
46
|
+
- **Right owner** — one named bug → `workflow-fix-and-ship`
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Phase 0: Context [LOW freedom — run exactly]
|
|
51
|
+
|
|
52
|
+
Read the stack before pulling any signals:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
package.json → framework, Sentry SDK, Supabase client version
|
|
56
|
+
.env.local → SENTRY_ORG, SENTRY_PROJECT, SUPABASE_PROJECT_ID (name only)
|
|
57
|
+
README → any known issues the team is tracking
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Confirm available MCPs: `sentry`, `supabase`,
|
|
61
|
+
`firecrawl`, `playwright`.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Phase 1: Pull production signals [LOW freedom — pull these sources]
|
|
66
|
+
|
|
67
|
+
Run all signal sources in parallel, then synthesise.
|
|
68
|
+
|
|
69
|
+
### 1a. Sentry — errors and performance
|
|
70
|
+
|
|
71
|
+
Look up the tool schemas first.
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
sentry:search_issues
|
|
75
|
+
{
|
|
76
|
+
"organizationSlug": "<ORG>",
|
|
77
|
+
"query": "unresolved issues last 14 days sorted by frequency",
|
|
78
|
+
"projectSlugOrId": "<PROJECT>",
|
|
79
|
+
"regionUrl": "<REGION_URL>",
|
|
80
|
+
"limit": 25
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
For each top-5 issue, get root-cause analysis:
|
|
85
|
+
```json
|
|
86
|
+
sentry:analyze_issue_with_seer
|
|
87
|
+
{
|
|
88
|
+
"organizationSlug": "<ORG>",
|
|
89
|
+
"issueId": "<ISSUE_ID>",
|
|
90
|
+
"regionUrl": "<REGION_URL>"
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Record per issue: title, frequency (events/users), first/last seen, component.
|
|
95
|
+
|
|
96
|
+
### 1b. Supabase — query performance and API failures
|
|
97
|
+
|
|
98
|
+
```json
|
|
99
|
+
supabase:query_logs
|
|
100
|
+
{
|
|
101
|
+
"sql": "select timestamp, event_message, log_attributes['request.method'] as method, log_attributes['request.path'] as path, log_attributes['response.status_code'] as status_code from logs where source = 'edge_logs' order by timestamp desc limit 100"
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
```json
|
|
106
|
+
supabase:query_logs
|
|
107
|
+
{
|
|
108
|
+
"sql": "select timestamp, event_message, log_attributes['parsed.error_severity'] as error_severity from logs where source = 'postgres_logs' order by timestamp desc limit 100"
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
supabase:get_advisors
|
|
114
|
+
{
|
|
115
|
+
"type": "security"
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
supabase:get_advisors
|
|
121
|
+
{
|
|
122
|
+
"type": "performance"
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
`query_logs` (read-only ClickHouse SQL over one `logs` table, filtered by
|
|
127
|
+
`source`) replaces `get_logs` on current servers. It reads the last 24 hours
|
|
128
|
+
unless you pass `iso_timestamp_start` / `iso_timestamp_end`.
|
|
129
|
+
|
|
130
|
+
Flag:
|
|
131
|
+
- API: repeated 5xx, slow responses (>1 s), CORS errors, RLS denies
|
|
132
|
+
- Postgres: sequential scans on large tables, missing indexes, bloated RLS policies
|
|
133
|
+
- Advisors: ERROR-level items = immediate action; WARN = scheduled
|
|
134
|
+
|
|
135
|
+
### 1c. Live UX walkthrough (Playwright)
|
|
136
|
+
|
|
137
|
+
Navigate the app's 3–5 most-used flows as a real user. Look for:
|
|
138
|
+
- Anything that is obviously broken, slow, or confusing
|
|
139
|
+
- Empty/error states that have no message
|
|
140
|
+
- Console errors and network failures during normal use
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
PW="npx --yes @playwright/cli@latest"
|
|
144
|
+
$PW -s=post-launch open --headed "<app-url>" # then `goto` each primary page
|
|
145
|
+
$PW -s=post-launch console # capture errors
|
|
146
|
+
$PW -s=post-launch requests # capture 4xx/5xx
|
|
147
|
+
$PW -s=post-launch screenshot --filename ".playwright-mcp/post-launch-<page>.png"
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### 1d. Research best practices for flagged areas
|
|
151
|
+
|
|
152
|
+
For each signal category that surfaced issues:
|
|
153
|
+
```json
|
|
154
|
+
firecrawl:firecrawl_search
|
|
155
|
+
{
|
|
156
|
+
"query": "<framework> <issue-type> fix best practices <current year>",
|
|
157
|
+
"limit": 3,
|
|
158
|
+
"sources": [{ "type": "web" }]
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## Phase 2: Triage — rank by impact × effort [HIGH freedom]
|
|
165
|
+
|
|
166
|
+
Build an improvement backlog. For each finding:
|
|
167
|
+
|
|
168
|
+
| Field | What to fill |
|
|
169
|
+
|-------|-------------|
|
|
170
|
+
| Source | Sentry / Supabase logs / Advisor / Live walkthrough |
|
|
171
|
+
| Finding | One sentence describing what is wrong |
|
|
172
|
+
| Affected users | High (blocks most users) / Medium (hits some) / Low (edge case) |
|
|
173
|
+
| Effort | S (< 1 h) / M (half day) / L (multi-day, consider splitting) |
|
|
174
|
+
| Priority | Critical / High / Medium / Low |
|
|
175
|
+
|
|
176
|
+
**Priority mapping**:
|
|
177
|
+
- Critical: production crash or data loss affecting real users
|
|
178
|
+
- High: broken feature, significant UX failure, missing index on hot query
|
|
179
|
+
- Medium: degraded experience, slow query, console error not shown to user
|
|
180
|
+
- Low: cosmetic issue, info-only log noise, minor UX annoyance
|
|
181
|
+
|
|
182
|
+
Sort the backlog: Critical first, then by impact ÷ effort (quick wins above hard ones).
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Phase 3: Plan the improvement sprint [HIGH freedom]
|
|
187
|
+
|
|
188
|
+
For the top 5–10 items, map each to specific code:
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
Improvement: [title]
|
|
192
|
+
Root cause: [1 sentence]
|
|
193
|
+
Fix: [file path + what to change]
|
|
194
|
+
Verify: [how to confirm it is fixed]
|
|
195
|
+
Risk: [low / medium — explain if medium+]
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Present the plan to the user. Get confirmation before making changes.
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Phase 4: Implement fixes [LOW freedom — surgical]
|
|
203
|
+
|
|
204
|
+
Work through the approved list one by one, following
|
|
205
|
+
`workflow-coding-discipline` principles:
|
|
206
|
+
|
|
207
|
+
1. Read the file before editing. Understand the existing pattern.
|
|
208
|
+
2. Make the surgical change. No refactoring unrelated code.
|
|
209
|
+
3. Run the repo's lint/typecheck after each edit (Cursor: `ReadLints`). Fix introduced errors.
|
|
210
|
+
4. For Supabase schema fixes (missing index, RLS policy):
|
|
211
|
+
- Deploy via MCP: `apply_migration` for DDL, `execute_sql` for data fixes
|
|
212
|
+
- Write the matching versioned migration file under `supabase/migrations/`
|
|
213
|
+
- Verify the object exists: query `information_schema` / `pg_indexes` / `pg_policies`
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## Phase 5: Verify each fix [LOW freedom — run exactly]
|
|
218
|
+
|
|
219
|
+
After each fix, drive the specific flow that was broken:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
$PW -s=post-launch goto "<affected-page>"
|
|
223
|
+
$PW -s=post-launch snapshot # confirm page renders correctly
|
|
224
|
+
# … reproduce the original scenario as a real user …
|
|
225
|
+
$PW -s=post-launch console # green (no new errors)
|
|
226
|
+
$PW -s=post-launch requests # 2xx where it was failing
|
|
227
|
+
$PW -s=post-launch screenshot --filename ".playwright-mcp/fixed-<flow>.png"
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
For Supabase fixes, re-run the failing query with `execute_sql` and confirm
|
|
231
|
+
the performance improvement or policy correction.
|
|
232
|
+
|
|
233
|
+
For Sentry issues: mark as resolved only after live verification confirms the
|
|
234
|
+
fix, not before:
|
|
235
|
+
```json
|
|
236
|
+
sentry:update_issue
|
|
237
|
+
{
|
|
238
|
+
"organizationSlug": "<ORG>",
|
|
239
|
+
"issueId": "<ISSUE_ID>",
|
|
240
|
+
"status": "resolved",
|
|
241
|
+
"regionUrl": "<REGION_URL>"
|
|
242
|
+
}
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
`update_issue` needs the Triage skill on the Sentry MCP connection; if the tool
|
|
246
|
+
is missing, resolve the issue in the Sentry UI instead.
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Phase 6: Improvement report [LOW freedom — this shape]
|
|
251
|
+
|
|
252
|
+
```markdown
|
|
253
|
+
## Post-Launch Improvement Report — [App] — [Date]
|
|
254
|
+
|
|
255
|
+
### Signal sources checked
|
|
256
|
+
- Sentry: [issue count, date range]
|
|
257
|
+
- Supabase logs: [service, date range]
|
|
258
|
+
- Supabase advisors: [ERROR count / WARN count]
|
|
259
|
+
- Live walkthrough: [pages tested]
|
|
260
|
+
|
|
261
|
+
### Improvements implemented
|
|
262
|
+
| # | Source | Finding | Fix (file) | Verified |
|
|
263
|
+
|---|--------|---------|-----------|---------|
|
|
264
|
+
| 1 | Sentry | [error] | [file:line] | ✅ |
|
|
265
|
+
|
|
266
|
+
### Deferred (needs more investigation or is out of scope)
|
|
267
|
+
| # | Finding | Why deferred | Recommendation |
|
|
268
|
+
|---|---------|-------------|----------------|
|
|
269
|
+
|
|
270
|
+
### Remaining Sentry noise
|
|
271
|
+
- [issues that are known / won't-fix / need tracking ticket]
|
|
272
|
+
|
|
273
|
+
### Before / after summary
|
|
274
|
+
- Errors resolved: [count]
|
|
275
|
+
- Queries improved: [count, estimated ms saved]
|
|
276
|
+
- UX issues fixed: [count]
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## Guardrails
|
|
282
|
+
|
|
283
|
+
- **No speculative improvements** — only act on signal from production data.
|
|
284
|
+
- **Ask before deleting or restructuring** — fixes should be surgical.
|
|
285
|
+
- **Schema the user asked for ships; DELETE/UPDATE on real rows asks first.**
|
|
286
|
+
- **Re-test every fix live** — a fix is not done until Playwright confirms it.
|
|
287
|
+
|
|
288
|
+
## Related
|
|
289
|
+
|
|
290
|
+
- `audit-analytics` — prove the funnel events this loop iterates on actually fire
|
|
291
|
+
- `test-red-team` / `deploy-verify` / `debug-sentry-monitor` / `test-playwright`
|
|
292
|
+
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: meta-mcp-builder
|
|
3
|
+
description: >
|
|
4
|
+
Build Model Context Protocol (MCP) servers that expose services, APIs, and
|
|
5
|
+
data as typed tools for agents. Use when "build an MCP server", "give Claude
|
|
6
|
+
access to X", "create an MCP tool", "expose my API to an agent", or "AI
|
|
7
|
+
agent integration".
|
|
8
|
+
license: MIT
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# MCP Server Development Guide
|
|
12
|
+
|
|
13
|
+
**Degree of freedom: MIXED.** Which tools to expose `[HIGH freedom]`;
|
|
14
|
+
SDK tool shape, annotations, env-based auth, and Inspector
|
|
15
|
+
`[LOW freedom — run exactly]`.
|
|
16
|
+
|
|
17
|
+
Create MCP servers that enable LLMs to interact with external services.
|
|
18
|
+
|
|
19
|
+
## How to reason
|
|
20
|
+
|
|
21
|
+
1. **Observe** — the real agent job (search, create, send), not the raw API catalog
|
|
22
|
+
2. **Interpret** — compose-from-primitives vs one workflow tool
|
|
23
|
+
3. **Classify** — prefixed action names, typed params, annotations (readOnly / destructive / idempotent)
|
|
24
|
+
4. **Verify** — Inspector + valid/invalid/edge; errors tell the agent what to do next
|
|
25
|
+
|
|
26
|
+
## Worked example
|
|
27
|
+
|
|
28
|
+
> **Observe:** "give Claude access to Linear"; agents will search issues and file one — not walk the full GraphQL schema.
|
|
29
|
+
> **Interpret:** start with workflow-shaped tools, not 40 raw endpoints.
|
|
30
|
+
> **Classify:** `linear_search_issues`, `linear_create_issue`; zod params; `create` is `readOnlyHint: false`.
|
|
31
|
+
> **Ship:** env `LINEAR_API_KEY` (throw if missing); Inspector on both tools; no hardcoded token.
|
|
32
|
+
|
|
33
|
+
## Self-critique before reporting
|
|
34
|
+
|
|
35
|
+
- **Names** — action-oriented and service-prefixed
|
|
36
|
+
- **Errors actionable** — next step in the message; no hardcoded credentials
|
|
37
|
+
- **Annotations match** — destructive tools say so
|
|
38
|
+
- **Right owner** — pack SKILL.md authoring → `meta-skill-creator`; calling an existing MCP is not this skill
|
|
39
|
+
|
|
40
|
+
## Overview
|
|
41
|
+
|
|
42
|
+
MCP (Model Context Protocol) servers expose tools that AI agents can use. Quality is measured by how well they enable agents to accomplish real tasks.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Quick Start [HIGH freedom]
|
|
47
|
+
|
|
48
|
+
### 1. Choose Stack
|
|
49
|
+
|
|
50
|
+
**Recommended:** TypeScript with MCP SDK
|
|
51
|
+
- High-quality SDK support
|
|
52
|
+
- Good compatibility across environments
|
|
53
|
+
- Strong type safety
|
|
54
|
+
|
|
55
|
+
**Alternative:** Python with FastMCP
|
|
56
|
+
- Good for Python-heavy workflows
|
|
57
|
+
|
|
58
|
+
### 2. Project Structure
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
my-mcp-server/
|
|
62
|
+
├── src/
|
|
63
|
+
│ ├── index.ts # Entry point
|
|
64
|
+
│ ├── tools/ # Tool implementations
|
|
65
|
+
│ │ ├── search.ts
|
|
66
|
+
│ │ └── create.ts
|
|
67
|
+
│ └── utils/ # Shared utilities
|
|
68
|
+
│ ├── api-client.ts
|
|
69
|
+
│ └── error-handler.ts
|
|
70
|
+
├── package.json
|
|
71
|
+
├── tsconfig.json
|
|
72
|
+
└── README.md
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Tool Design Principles [HIGH freedom]
|
|
78
|
+
|
|
79
|
+
### 1. Clear Naming
|
|
80
|
+
```typescript
|
|
81
|
+
// ✅ Good - action-oriented, prefixed
|
|
82
|
+
'github_create_issue'
|
|
83
|
+
'github_list_repos'
|
|
84
|
+
'slack_send_message'
|
|
85
|
+
|
|
86
|
+
// ❌ Avoid - vague
|
|
87
|
+
'process'
|
|
88
|
+
'handle'
|
|
89
|
+
'do_thing'
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 2. Complete descriptions — a man page, not a slogan
|
|
93
|
+
|
|
94
|
+
Under-description is the common failure. State what the tool does, when to use it and when not to, what each parameter means, caveats, and what it does not return — three to four sentences or more. Keep behavioral steering ("always prefer this tool") and worked examples out of the description; they constrain exploration and cost tokens on every request, and belong in a skill.
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
{
|
|
98
|
+
name: 'github_search_issues',
|
|
99
|
+
description: 'Search GitHub issues in one repository by free-text query, state, and labels. Returns up to `limit` issues with title, number, state, and URL; does not return bodies or comments (use github_get_issue for those). For creating an issue use github_create_issue.',
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 3. Typed Parameters
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
import { z } from 'zod';
|
|
107
|
+
|
|
108
|
+
const searchIssuesSchema = z.object({
|
|
109
|
+
query: z.string().describe('Search query string'),
|
|
110
|
+
state: z.enum(['open', 'closed', 'all']).default('open'),
|
|
111
|
+
labels: z.array(z.string()).optional().describe('Filter by labels'),
|
|
112
|
+
limit: z.number().min(1).max(100).default(10),
|
|
113
|
+
});
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### 4. Actionable Errors
|
|
117
|
+
|
|
118
|
+
```typescript
|
|
119
|
+
// ❌ Bad
|
|
120
|
+
throw new Error('Failed');
|
|
121
|
+
|
|
122
|
+
// ✅ Good
|
|
123
|
+
throw new Error(
|
|
124
|
+
`GitHub API rate limit exceeded. ` +
|
|
125
|
+
`Resets at ${resetTime}. ` +
|
|
126
|
+
`Try again later or authenticate for higher limits.`
|
|
127
|
+
);
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## Implementation Pattern [LOW freedom — this shape]
|
|
133
|
+
|
|
134
|
+
### Basic Tool Structure
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
138
|
+
import { z } from 'zod';
|
|
139
|
+
|
|
140
|
+
const server = new McpServer({
|
|
141
|
+
name: 'my-service',
|
|
142
|
+
version: '1.0.0',
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
// Define tool
|
|
146
|
+
server.tool(
|
|
147
|
+
'service_action',
|
|
148
|
+
'Description of what this tool does and when to use it',
|
|
149
|
+
{
|
|
150
|
+
param1: z.string().describe('What this param is for'),
|
|
151
|
+
param2: z.number().optional().describe('Optional param'),
|
|
152
|
+
},
|
|
153
|
+
async ({ param1, param2 }) => {
|
|
154
|
+
// Implementation
|
|
155
|
+
const result = await performAction(param1, param2);
|
|
156
|
+
|
|
157
|
+
return {
|
|
158
|
+
content: [
|
|
159
|
+
{
|
|
160
|
+
type: 'text',
|
|
161
|
+
text: JSON.stringify(result, null, 2),
|
|
162
|
+
},
|
|
163
|
+
],
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
);
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Tool Annotations
|
|
170
|
+
|
|
171
|
+
```typescript
|
|
172
|
+
server.tool(
|
|
173
|
+
'delete_item',
|
|
174
|
+
'Delete an item permanently',
|
|
175
|
+
{ id: z.string() },
|
|
176
|
+
async ({ id }) => { /* ... */ },
|
|
177
|
+
{
|
|
178
|
+
annotations: {
|
|
179
|
+
readOnlyHint: false, // Modifies data
|
|
180
|
+
destructiveHint: true, // Cannot be undone
|
|
181
|
+
idempotentHint: true, // Safe to retry
|
|
182
|
+
openWorldHint: false, // Closed set of operations
|
|
183
|
+
},
|
|
184
|
+
}
|
|
185
|
+
);
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Best Practices [HIGH freedom]
|
|
191
|
+
|
|
192
|
+
### API Coverage vs Workflow Tools
|
|
193
|
+
|
|
194
|
+
| Approach | When to Use |
|
|
195
|
+
|----------|-------------|
|
|
196
|
+
| full API coverage | Agent needs flexibility to compose operations |
|
|
197
|
+
| Workflow tools | Specific task needs multi-step automation |
|
|
198
|
+
|
|
199
|
+
**Default:** start with the tools that match the agent's real jobs (workflow-shaped), then add raw-coverage tools only where agents need to compose operations the workflow tools do not cover. Past a few dozen tools, rely on the client's tool search / deferred loading instead of always-loading every schema.
|
|
200
|
+
|
|
201
|
+
### Response Formatting
|
|
202
|
+
|
|
203
|
+
```typescript
|
|
204
|
+
// Return structured data
|
|
205
|
+
return {
|
|
206
|
+
content: [{
|
|
207
|
+
type: 'text',
|
|
208
|
+
text: JSON.stringify({
|
|
209
|
+
success: true,
|
|
210
|
+
data: results,
|
|
211
|
+
metadata: { count: results.length },
|
|
212
|
+
}, null, 2),
|
|
213
|
+
}],
|
|
214
|
+
};
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### Pagination Support
|
|
218
|
+
|
|
219
|
+
```typescript
|
|
220
|
+
const listItemsSchema = z.object({
|
|
221
|
+
limit: z.number().min(1).max(100).default(20),
|
|
222
|
+
cursor: z.string().optional().describe('Pagination cursor from previous response'),
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
// Return cursor in response
|
|
226
|
+
return {
|
|
227
|
+
items: results,
|
|
228
|
+
nextCursor: hasMore ? lastId : null,
|
|
229
|
+
};
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Testing [LOW freedom — run exactly]
|
|
235
|
+
|
|
236
|
+
### 1. Build Check
|
|
237
|
+
```bash
|
|
238
|
+
npm run build # Must pass without errors
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### 2. Test with Inspector
|
|
242
|
+
```bash
|
|
243
|
+
npx @modelcontextprotocol/inspector
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### 3. Test Each Tool
|
|
247
|
+
- Valid inputs → expected output
|
|
248
|
+
- Invalid inputs → helpful error
|
|
249
|
+
- Edge cases → graceful handling
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## Quality Checklist [LOW freedom — do not skip]
|
|
254
|
+
|
|
255
|
+
- [ ] All tools have clear, descriptive names
|
|
256
|
+
- [ ] All parameters have descriptions
|
|
257
|
+
- [ ] Every description says when not to use the tool and what it does not return
|
|
258
|
+
- [ ] Error messages are actionable
|
|
259
|
+
- [ ] Pagination for list operations
|
|
260
|
+
- [ ] No hardcoded credentials
|
|
261
|
+
- [ ] TypeScript types for all inputs/outputs
|
|
262
|
+
- [ ] README documents all tools
|
|
263
|
+
- [ ] Examples provided for complex tools
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## Common Patterns [HIGH freedom]
|
|
268
|
+
|
|
269
|
+
### Authentication
|
|
270
|
+
```typescript
|
|
271
|
+
const apiKey = process.env.SERVICE_API_KEY;
|
|
272
|
+
if (!apiKey) {
|
|
273
|
+
throw new Error('SERVICE_API_KEY environment variable required');
|
|
274
|
+
}
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### Rate Limiting
|
|
278
|
+
```typescript
|
|
279
|
+
import { RateLimiter } from 'limiter';
|
|
280
|
+
|
|
281
|
+
const limiter = new RateLimiter({
|
|
282
|
+
tokensPerInterval: 100,
|
|
283
|
+
interval: 'minute',
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
async function callApi() {
|
|
287
|
+
await limiter.removeTokens(1);
|
|
288
|
+
// Make API call
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### Caching
|
|
293
|
+
```typescript
|
|
294
|
+
const cache = new Map<string, { data: any; expiry: number }>();
|
|
295
|
+
|
|
296
|
+
async function getCached(key: string, fetcher: () => Promise<any>) {
|
|
297
|
+
const cached = cache.get(key);
|
|
298
|
+
if (cached && cached.expiry > Date.now()) {
|
|
299
|
+
return cached.data;
|
|
300
|
+
}
|
|
301
|
+
const data = await fetcher();
|
|
302
|
+
cache.set(key, { data, expiry: Date.now() + 60000 });
|
|
303
|
+
return data;
|
|
304
|
+
}
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## Resources
|
|
310
|
+
|
|
311
|
+
- MCP Specification: https://modelcontextprotocol.io
|
|
312
|
+
- TypeScript SDK: https://github.com/modelcontextprotocol/typescript-sdk
|
|
313
|
+
- Python SDK: https://github.com/modelcontextprotocol/python-sdk
|