opencode-agent-kit 1.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/README.md +796 -0
- package/bin/commands/init.mjs +221 -0
- package/bin/init.mjs +21 -0
- package/package.json +22 -0
- package/template/.opencode/agent-docs/backend/README.md +0 -0
- package/template/.opencode/agent-docs/backend/node/BACKEND_PATTERNS.md +82 -0
- package/template/.opencode/agent-docs/backend/node/BACKEND_QUICK_START.md +49 -0
- package/template/.opencode/agent-docs/frontend/next/README.md +0 -0
- package/template/.opencode/agent-docs/frontend/nuxt/API_PATTERNS.md +807 -0
- package/template/.opencode/agent-docs/frontend/nuxt/CHEATSHEET.md +676 -0
- package/template/.opencode/agent-docs/frontend/nuxt/COMPLETION_REPORT.md +613 -0
- package/template/.opencode/agent-docs/frontend/nuxt/EXAMPLES.md +956 -0
- package/template/.opencode/agent-docs/frontend/nuxt/INDEX.md +596 -0
- package/template/.opencode/agent-docs/frontend/nuxt/MCP_GUIDE.md +881 -0
- package/template/.opencode/agent-docs/frontend/nuxt/MENTOR_CURRICULUM_30_DAYS.md +256 -0
- package/template/.opencode/agent-docs/frontend/nuxt/MENTOR_CURRICULUM_CHECKLIST.md +156 -0
- package/template/.opencode/agent-docs/frontend/nuxt/MENTOR_WEEKLY_ASSIGNMENTS.md +191 -0
- package/template/.opencode/agent-docs/frontend/nuxt/QUICK_START.md +509 -0
- package/template/.opencode/agent-docs/frontend/nuxt/README.md +506 -0
- package/template/.opencode/agent-docs/frontend/nuxt/README_AGENTS.md +140 -0
- package/template/.opencode/agent-docs/frontend/nuxt/README_DOCS.md +65 -0
- package/template/.opencode/agent-docs/frontend/nuxt/SUMMARY.md +474 -0
- package/template/.opencode/agent-docs/frontend/nuxt/TEAM_OPERATING_GUIDE.md +54 -0
- package/template/.opencode/agent-docs/frontend/nuxt/TESTING_GUIDE.md +904 -0
- package/template/.opencode/agent-docs/frontend/nuxt/WORKFLOWS.md +758 -0
- package/template/.opencode/agent-docs/frontend/react/API_PATTERNS.md +187 -0
- package/template/.opencode/agent-docs/frontend/react/CHEATSHEET.md +87 -0
- package/template/.opencode/agent-docs/frontend/react/INDEX.md +45 -0
- package/template/.opencode/agent-docs/frontend/react/QUICK_START.md +43 -0
- package/template/.opencode/agent-docs/frontend/react/README.md +159 -0
- package/template/.opencode/agent-docs/frontend/vue/README.md +0 -0
- package/template/.opencode/agent-docs/mobile/android/README.md +45 -0
- package/template/.opencode/agent-docs/mobile/flutter/README.md +44 -0
- package/template/.opencode/agents/android-developer.md +418 -0
- package/template/.opencode/agents/code-igniter-3-fullstack.md +345 -0
- package/template/.opencode/agents/code-reviewer.md +517 -0
- package/template/.opencode/agents/database-specialist.md +455 -0
- package/template/.opencode/agents/devops-specialist.md +562 -0
- package/template/.opencode/agents/flutter-developer.md +556 -0
- package/template/.opencode/agents/it-leader.md +911 -0
- package/template/.opencode/agents/laravel-advanced.md +691 -0
- package/template/.opencode/agents/node-backend-developer.md +343 -0
- package/template/.opencode/agents/nuxt-frontend-developer-mentor.md +402 -0
- package/template/.opencode/agents/nuxt-frontend-developer.md +1573 -0
- package/template/.opencode/agents/react-frontend-developer.md +1017 -0
- package/template/.opencode/agents/seo-specialist.md +681 -0
- package/template/.opencode/agents/ui-ux-designer.md +783 -0
- package/template/.opencode/commands/android-build/command.md +25 -0
- package/template/.opencode/commands/android-test/command.md +23 -0
- package/template/.opencode/commands/build-fix.md +29 -0
- package/template/.opencode/commands/checkpoint.md +74 -0
- package/template/.opencode/commands/code-review.md +40 -0
- package/template/.opencode/commands/e2e.md +363 -0
- package/template/.opencode/commands/eval.md +120 -0
- package/template/.opencode/commands/evolve.md +193 -0
- package/template/.opencode/commands/flutter-build/command.md +25 -0
- package/template/.opencode/commands/flutter-test/command.md +24 -0
- package/template/.opencode/commands/go-build.md +183 -0
- package/template/.opencode/commands/go-review.md +148 -0
- package/template/.opencode/commands/go-test.md +268 -0
- package/template/.opencode/commands/gpc-release/command.md +30 -0
- package/template/.opencode/commands/instinct-export.md +91 -0
- package/template/.opencode/commands/instinct-import.md +142 -0
- package/template/.opencode/commands/instinct-status.md +86 -0
- package/template/.opencode/commands/learn.md +70 -0
- package/template/.opencode/commands/multi-backend.md +158 -0
- package/template/.opencode/commands/multi-execute.md +310 -0
- package/template/.opencode/commands/multi-frontend.md +158 -0
- package/template/.opencode/commands/multi-plan.md +261 -0
- package/template/.opencode/commands/multi-workflow.md +183 -0
- package/template/.opencode/commands/orchestrate.md +172 -0
- package/template/.opencode/commands/plan.md +113 -0
- package/template/.opencode/commands/pm2.md +271 -0
- package/template/.opencode/commands/python-review.md +297 -0
- package/template/.opencode/commands/refactor-clean.md +28 -0
- package/template/.opencode/commands/sessions.md +305 -0
- package/template/.opencode/commands/setup-pm.md +80 -0
- package/template/.opencode/commands/skill-create.md +174 -0
- package/template/.opencode/commands/tdd.md +326 -0
- package/template/.opencode/commands/test-coverage.md +27 -0
- package/template/.opencode/commands/update-codemaps.md +17 -0
- package/template/.opencode/commands/update-docs.md +31 -0
- package/template/.opencode/commands/verify.md +59 -0
- package/template/.opencode/config.example.json +309 -0
- package/template/.opencode/config.json +341 -0
- package/template/.opencode/contexts/dev.md +20 -0
- package/template/.opencode/contexts/research.md +26 -0
- package/template/.opencode/contexts/review.md +22 -0
- package/template/.opencode/hooks/hooks.json +169 -0
- package/template/.opencode/instructions/INSTRUCTIONS.md +388 -0
- package/template/.opencode/package.json +5 -0
- package/template/.opencode/rules/README.md +82 -0
- package/template/.opencode/rules/android/gradle.md +62 -0
- package/template/.opencode/rules/android/testing.md +27 -0
- package/template/.opencode/rules/common/agents.md +49 -0
- package/template/.opencode/rules/common/coding-style.md +48 -0
- package/template/.opencode/rules/common/git-workflow.md +45 -0
- package/template/.opencode/rules/common/hooks.md +30 -0
- package/template/.opencode/rules/common/patterns.md +31 -0
- package/template/.opencode/rules/common/performance.md +55 -0
- package/template/.opencode/rules/common/security.md +29 -0
- package/template/.opencode/rules/common/testing.md +29 -0
- package/template/.opencode/rules/flutter/state-management.md +57 -0
- package/template/.opencode/rules/flutter/testing.md +42 -0
- package/template/.opencode/rules/golang/coding-style.md +26 -0
- package/template/.opencode/rules/golang/hooks.md +11 -0
- package/template/.opencode/rules/golang/patterns.md +39 -0
- package/template/.opencode/rules/golang/security.md +28 -0
- package/template/.opencode/rules/golang/testing.md +25 -0
- package/template/.opencode/rules/mobile/performance.md +36 -0
- package/template/.opencode/rules/python/coding-style.md +37 -0
- package/template/.opencode/rules/python/hooks.md +14 -0
- package/template/.opencode/rules/python/patterns.md +34 -0
- package/template/.opencode/rules/python/security.md +25 -0
- package/template/.opencode/rules/python/testing.md +33 -0
- package/template/.opencode/rules/typescript/coding-style.md +58 -0
- package/template/.opencode/rules/typescript/hooks.md +15 -0
- package/template/.opencode/rules/typescript/patterns.md +45 -0
- package/template/.opencode/rules/typescript/security.md +21 -0
- package/template/.opencode/rules/typescript/testing.md +11 -0
- package/template/.opencode/skills/api-documentation/SKILL.md +188 -0
- package/template/.opencode/skills/backend-patterns/SKILL.md +587 -0
- package/template/.opencode/skills/building-components/SKILL.md +37 -0
- package/template/.opencode/skills/building-components/references/accessibility.mdx +819 -0
- package/template/.opencode/skills/building-components/references/as-child.mdx +324 -0
- package/template/.opencode/skills/building-components/references/composition.mdx +239 -0
- package/template/.opencode/skills/building-components/references/data-attributes.mdx +413 -0
- package/template/.opencode/skills/building-components/references/definitions.mdx +258 -0
- package/template/.opencode/skills/building-components/references/design-tokens.mdx +57 -0
- package/template/.opencode/skills/building-components/references/docs.mdx +155 -0
- package/template/.opencode/skills/building-components/references/marketplaces.mdx +144 -0
- package/template/.opencode/skills/building-components/references/npm.mdx +166 -0
- package/template/.opencode/skills/building-components/references/polymorphism.mdx +583 -0
- package/template/.opencode/skills/building-components/references/principles.mdx +61 -0
- package/template/.opencode/skills/building-components/references/registry.mdx +169 -0
- package/template/.opencode/skills/building-components/references/state.mdx +99 -0
- package/template/.opencode/skills/building-components/references/styling.mdx +286 -0
- package/template/.opencode/skills/building-components/references/types.mdx +191 -0
- package/template/.opencode/skills/clickhouse-io/SKILL.md +429 -0
- package/template/.opencode/skills/coding-standards/SKILL.md +520 -0
- package/template/.opencode/skills/configure-ecc/SKILL.md +298 -0
- package/template/.opencode/skills/continuous-learning/SKILL.md +110 -0
- package/template/.opencode/skills/continuous-learning/config.json +18 -0
- package/template/.opencode/skills/continuous-learning/evaluate-session.sh +60 -0
- package/template/.opencode/skills/continuous-learning-v2/SKILL.md +284 -0
- package/template/.opencode/skills/continuous-learning-v2/agents/observer.md +137 -0
- package/template/.opencode/skills/continuous-learning-v2/agents/start-observer.sh +134 -0
- package/template/.opencode/skills/continuous-learning-v2/config.json +41 -0
- package/template/.opencode/skills/continuous-learning-v2/hooks/observe.sh +153 -0
- package/template/.opencode/skills/continuous-learning-v2/scripts/instinct-cli.py +489 -0
- package/template/.opencode/skills/continuous-learning-v2/scripts/test_parse_instinct.py +82 -0
- package/template/.opencode/skills/dart-add-unit-test/SKILL.md +122 -0
- package/template/.opencode/skills/dart-build-cli-app/SKILL.md +185 -0
- package/template/.opencode/skills/dart-collect-coverage/SKILL.md +141 -0
- package/template/.opencode/skills/dart-fix-runtime-errors/SKILL.md +166 -0
- package/template/.opencode/skills/dart-generate-test-mocks/SKILL.md +155 -0
- package/template/.opencode/skills/dart-migrate-to-checks-package/SKILL.md +126 -0
- package/template/.opencode/skills/dart-resolve-package-conflicts/SKILL.md +116 -0
- package/template/.opencode/skills/dart-run-static-analysis/SKILL.md +104 -0
- package/template/.opencode/skills/dart-use-pattern-matching/SKILL.md +146 -0
- package/template/.opencode/skills/django-patterns/SKILL.md +733 -0
- package/template/.opencode/skills/django-security/SKILL.md +592 -0
- package/template/.opencode/skills/django-tdd/SKILL.md +728 -0
- package/template/.opencode/skills/django-verification/SKILL.md +460 -0
- package/template/.opencode/skills/eval-harness/SKILL.md +227 -0
- package/template/.opencode/skills/firebase-basics/SKILL.md +103 -0
- package/template/.opencode/skills/firebase-basics/references/additional-skills.md +113 -0
- package/template/.opencode/skills/firebase-basics/references/cli-usage.md +31 -0
- package/template/.opencode/skills/firebase-basics/references/client-library-usage.md +45 -0
- package/template/.opencode/skills/firebase-basics/references/core-concepts.md +61 -0
- package/template/.opencode/skills/firebase-basics/references/iac-usage.md +40 -0
- package/template/.opencode/skills/firebase-basics/references/iam-security.md +74 -0
- package/template/.opencode/skills/firebase-basics/references/mcp-usage.md +63 -0
- package/template/.opencode/skills/flutter/SKILL.md +292 -0
- package/template/.opencode/skills/flutter-add-integration-test/SKILL.md +163 -0
- package/template/.opencode/skills/flutter-add-widget-preview/SKILL.md +145 -0
- package/template/.opencode/skills/flutter-add-widget-test/SKILL.md +154 -0
- package/template/.opencode/skills/flutter-apply-architecture-best-practices/SKILL.md +162 -0
- package/template/.opencode/skills/flutter-build-responsive-layout/SKILL.md +139 -0
- package/template/.opencode/skills/flutter-fix-layout-issues/SKILL.md +130 -0
- package/template/.opencode/skills/flutter-implement-json-serialization/SKILL.md +153 -0
- package/template/.opencode/skills/flutter-setup-declarative-routing/SKILL.md +255 -0
- package/template/.opencode/skills/flutter-setup-localization/SKILL.md +210 -0
- package/template/.opencode/skills/flutter-use-http-package/SKILL.md +174 -0
- package/template/.opencode/skills/frontend-design/SKILL.md +89 -0
- package/template/.opencode/skills/frontend-patterns/SKILL.md +631 -0
- package/template/.opencode/skills/golang-patterns/SKILL.md +673 -0
- package/template/.opencode/skills/golang-testing/SKILL.md +719 -0
- package/template/.opencode/skills/impeccable/SKILL.md +165 -0
- package/template/.opencode/skills/impeccable/agents/impeccable-asset-producer.md +101 -0
- package/template/.opencode/skills/impeccable/reference/adapt.md +190 -0
- package/template/.opencode/skills/impeccable/reference/animate.md +175 -0
- package/template/.opencode/skills/impeccable/reference/audit.md +133 -0
- package/template/.opencode/skills/impeccable/reference/bolder.md +113 -0
- package/template/.opencode/skills/impeccable/reference/brand.md +118 -0
- package/template/.opencode/skills/impeccable/reference/clarify.md +174 -0
- package/template/.opencode/skills/impeccable/reference/codex.md +105 -0
- package/template/.opencode/skills/impeccable/reference/cognitive-load.md +106 -0
- package/template/.opencode/skills/impeccable/reference/color-and-contrast.md +105 -0
- package/template/.opencode/skills/impeccable/reference/colorize.md +154 -0
- package/template/.opencode/skills/impeccable/reference/craft.md +123 -0
- package/template/.opencode/skills/impeccable/reference/critique.md +273 -0
- package/template/.opencode/skills/impeccable/reference/delight.md +302 -0
- package/template/.opencode/skills/impeccable/reference/distill.md +111 -0
- package/template/.opencode/skills/impeccable/reference/document.md +427 -0
- package/template/.opencode/skills/impeccable/reference/extract.md +69 -0
- package/template/.opencode/skills/impeccable/reference/harden.md +347 -0
- package/template/.opencode/skills/impeccable/reference/heuristics-scoring.md +234 -0
- package/template/.opencode/skills/impeccable/reference/interaction-design.md +195 -0
- package/template/.opencode/skills/impeccable/reference/layout.md +141 -0
- package/template/.opencode/skills/impeccable/reference/live.md +622 -0
- package/template/.opencode/skills/impeccable/reference/motion-design.md +109 -0
- package/template/.opencode/skills/impeccable/reference/onboard.md +234 -0
- package/template/.opencode/skills/impeccable/reference/optimize.md +258 -0
- package/template/.opencode/skills/impeccable/reference/overdrive.md +130 -0
- package/template/.opencode/skills/impeccable/reference/personas.md +179 -0
- package/template/.opencode/skills/impeccable/reference/polish.md +242 -0
- package/template/.opencode/skills/impeccable/reference/product.md +62 -0
- package/template/.opencode/skills/impeccable/reference/quieter.md +99 -0
- package/template/.opencode/skills/impeccable/reference/responsive-design.md +114 -0
- package/template/.opencode/skills/impeccable/reference/shape.md +165 -0
- package/template/.opencode/skills/impeccable/reference/spatial-design.md +100 -0
- package/template/.opencode/skills/impeccable/reference/teach.md +156 -0
- package/template/.opencode/skills/impeccable/reference/typeset.md +124 -0
- package/template/.opencode/skills/impeccable/reference/typography.md +159 -0
- package/template/.opencode/skills/impeccable/reference/ux-writing.md +107 -0
- package/template/.opencode/skills/impeccable/scripts/cleanup-deprecated.mjs +284 -0
- package/template/.opencode/skills/impeccable/scripts/command-metadata.json +94 -0
- package/template/.opencode/skills/impeccable/scripts/critique-storage.mjs +242 -0
- package/template/.opencode/skills/impeccable/scripts/design-parser.mjs +820 -0
- package/template/.opencode/skills/impeccable/scripts/detect-csp.mjs +198 -0
- package/template/.opencode/skills/impeccable/scripts/detect.mjs +21 -0
- package/template/.opencode/skills/impeccable/scripts/impeccable-paths.mjs +110 -0
- package/template/.opencode/skills/impeccable/scripts/is-generated.mjs +69 -0
- package/template/.opencode/skills/impeccable/scripts/live-accept.mjs +595 -0
- package/template/.opencode/skills/impeccable/scripts/live-browser-session.js +123 -0
- package/template/.opencode/skills/impeccable/scripts/live-browser.js +4860 -0
- package/template/.opencode/skills/impeccable/scripts/live-complete.mjs +75 -0
- package/template/.opencode/skills/impeccable/scripts/live-completion.mjs +18 -0
- package/template/.opencode/skills/impeccable/scripts/live-inject.mjs +446 -0
- package/template/.opencode/skills/impeccable/scripts/live-poll.mjs +200 -0
- package/template/.opencode/skills/impeccable/scripts/live-resume.mjs +48 -0
- package/template/.opencode/skills/impeccable/scripts/live-server.mjs +838 -0
- package/template/.opencode/skills/impeccable/scripts/live-session-store.mjs +254 -0
- package/template/.opencode/skills/impeccable/scripts/live-status.mjs +47 -0
- package/template/.opencode/skills/impeccable/scripts/live-wrap.mjs +632 -0
- package/template/.opencode/skills/impeccable/scripts/live.mjs +247 -0
- package/template/.opencode/skills/impeccable/scripts/load-context.mjs +141 -0
- package/template/.opencode/skills/impeccable/scripts/modern-screenshot.umd.js +14 -0
- package/template/.opencode/skills/impeccable/scripts/pin.mjs +214 -0
- package/template/.opencode/skills/iterative-retrieval/SKILL.md +202 -0
- package/template/.opencode/skills/java-coding-standards/SKILL.md +138 -0
- package/template/.opencode/skills/jetpack-compose/.skillfish.json +10 -0
- package/template/.opencode/skills/jetpack-compose/SKILL.md +420 -0
- package/template/.opencode/skills/jpa-patterns/SKILL.md +141 -0
- package/template/.opencode/skills/nutrient-document-processing/SKILL.md +165 -0
- package/template/.opencode/skills/nuxt-ui/SKILL.md +334 -0
- package/template/.opencode/skills/nuxt-ui/references/components.md +377 -0
- package/template/.opencode/skills/nuxt-ui/references/composables.md +127 -0
- package/template/.opencode/skills/nuxt-ui/references/layouts/chat.md +266 -0
- package/template/.opencode/skills/nuxt-ui/references/layouts/dashboard.md +220 -0
- package/template/.opencode/skills/nuxt-ui/references/layouts/docs.md +141 -0
- package/template/.opencode/skills/nuxt-ui/references/layouts/editor.md +168 -0
- package/template/.opencode/skills/nuxt-ui/references/layouts/page.md +260 -0
- package/template/.opencode/skills/nuxt-ui/references/theming.md +427 -0
- package/template/.opencode/skills/postgres-patterns/SKILL.md +146 -0
- package/template/.opencode/skills/project-guidelines-example/SKILL.md +345 -0
- package/template/.opencode/skills/python-patterns/SKILL.md +749 -0
- package/template/.opencode/skills/python-testing/SKILL.md +815 -0
- package/template/.opencode/skills/security-review/SKILL.md +494 -0
- package/template/.opencode/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/template/.opencode/skills/shadcn-ui/README.md +248 -0
- package/template/.opencode/skills/shadcn-ui/SKILL.md +326 -0
- package/template/.opencode/skills/shadcn-ui/examples/auth-layout.tsx +177 -0
- package/template/.opencode/skills/shadcn-ui/examples/data-table.tsx +313 -0
- package/template/.opencode/skills/shadcn-ui/examples/form-pattern.tsx +177 -0
- package/template/.opencode/skills/shadcn-ui/resources/component-catalog.md +481 -0
- package/template/.opencode/skills/shadcn-ui/resources/customization-guide.md +516 -0
- package/template/.opencode/skills/shadcn-ui/resources/migration-guide.md +463 -0
- package/template/.opencode/skills/shadcn-ui/resources/setup-guide.md +412 -0
- package/template/.opencode/skills/shadcn-ui/scripts/verify-setup.sh +134 -0
- package/template/.opencode/skills/springboot-patterns/SKILL.md +304 -0
- package/template/.opencode/skills/springboot-security/SKILL.md +119 -0
- package/template/.opencode/skills/springboot-tdd/SKILL.md +157 -0
- package/template/.opencode/skills/springboot-verification/SKILL.md +100 -0
- package/template/.opencode/skills/strategic-compact/SKILL.md +63 -0
- package/template/.opencode/skills/strategic-compact/suggest-compact.sh +52 -0
- package/template/.opencode/skills/tdd-workflow/SKILL.md +409 -0
- package/template/.opencode/skills/vercel-composition-patterns/AGENTS.md +946 -0
- package/template/.opencode/skills/vercel-composition-patterns/SKILL.md +89 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/architecture-compound-components.md +112 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/state-context-interface.md +191 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/template/.opencode/skills/vercel-composition-patterns/rules/state-lift-state.md +125 -0
- package/template/.opencode/skills/vercel-react-best-practices/AGENTS.md +2934 -0
- package/template/.opencode/skills/vercel-react-best-practices/SKILL.md +136 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/async-defer-await.md +80 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/template/.opencode/skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/template/.opencode/skills/verification-loop/SKILL.md +120 -0
- package/template/.opencode/skills/web-design-guidelines/SKILL.md +39 -0
- package/template/AGENTS.md +32 -0
- package/template/opencode.json +354 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Python Coding Style
|
|
2
|
+
|
|
3
|
+
> This file extends [common/coding-style.md](../common/coding-style.md) with Python specific content.
|
|
4
|
+
|
|
5
|
+
## Standards
|
|
6
|
+
|
|
7
|
+
- Follow **PEP 8** conventions
|
|
8
|
+
- Use **type annotations** on all function signatures
|
|
9
|
+
|
|
10
|
+
## Immutability
|
|
11
|
+
|
|
12
|
+
Prefer immutable data structures:
|
|
13
|
+
|
|
14
|
+
```python
|
|
15
|
+
from dataclasses import dataclass
|
|
16
|
+
|
|
17
|
+
@dataclass(frozen=True)
|
|
18
|
+
class User:
|
|
19
|
+
name: str
|
|
20
|
+
email: str
|
|
21
|
+
|
|
22
|
+
from typing import NamedTuple
|
|
23
|
+
|
|
24
|
+
class Point(NamedTuple):
|
|
25
|
+
x: float
|
|
26
|
+
y: float
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Formatting
|
|
30
|
+
|
|
31
|
+
- **black** for code formatting
|
|
32
|
+
- **isort** for import sorting
|
|
33
|
+
- **ruff** for linting
|
|
34
|
+
|
|
35
|
+
## Reference
|
|
36
|
+
|
|
37
|
+
See skill: `python-patterns` for comprehensive Python idioms and patterns.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Python Hooks
|
|
2
|
+
|
|
3
|
+
> This file extends [common/hooks.md](../common/hooks.md) with Python specific content.
|
|
4
|
+
|
|
5
|
+
## PostToolUse Hooks
|
|
6
|
+
|
|
7
|
+
Configure in `~/.claude/settings.json`:
|
|
8
|
+
|
|
9
|
+
- **black/ruff**: Auto-format `.py` files after edit
|
|
10
|
+
- **mypy/pyright**: Run type checking after editing `.py` files
|
|
11
|
+
|
|
12
|
+
## Warnings
|
|
13
|
+
|
|
14
|
+
- Warn about `print()` statements in edited files (use `logging` module instead)
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Python Patterns
|
|
2
|
+
|
|
3
|
+
> This file extends [common/patterns.md](../common/patterns.md) with Python specific content.
|
|
4
|
+
|
|
5
|
+
## Protocol (Duck Typing)
|
|
6
|
+
|
|
7
|
+
```python
|
|
8
|
+
from typing import Protocol
|
|
9
|
+
|
|
10
|
+
class Repository(Protocol):
|
|
11
|
+
def find_by_id(self, id: str) -> dict | None: ...
|
|
12
|
+
def save(self, entity: dict) -> dict: ...
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Dataclasses as DTOs
|
|
16
|
+
|
|
17
|
+
```python
|
|
18
|
+
from dataclasses import dataclass
|
|
19
|
+
|
|
20
|
+
@dataclass
|
|
21
|
+
class CreateUserRequest:
|
|
22
|
+
name: str
|
|
23
|
+
email: str
|
|
24
|
+
age: int | None = None
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Context Managers & Generators
|
|
28
|
+
|
|
29
|
+
- Use context managers (`with` statement) for resource management
|
|
30
|
+
- Use generators for lazy evaluation and memory-efficient iteration
|
|
31
|
+
|
|
32
|
+
## Reference
|
|
33
|
+
|
|
34
|
+
See skill: `python-patterns` for comprehensive patterns including decorators, concurrency, and package organization.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Python Security
|
|
2
|
+
|
|
3
|
+
> This file extends [common/security.md](../common/security.md) with Python specific content.
|
|
4
|
+
|
|
5
|
+
## Secret Management
|
|
6
|
+
|
|
7
|
+
```python
|
|
8
|
+
import os
|
|
9
|
+
from dotenv import load_dotenv
|
|
10
|
+
|
|
11
|
+
load_dotenv()
|
|
12
|
+
|
|
13
|
+
api_key = os.environ["OPENAI_API_KEY"] # Raises KeyError if missing
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Security Scanning
|
|
17
|
+
|
|
18
|
+
- Use **bandit** for static security analysis:
|
|
19
|
+
```bash
|
|
20
|
+
bandit -r src/
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Reference
|
|
24
|
+
|
|
25
|
+
See skill: `django-security` for Django-specific security guidelines (if applicable).
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# Python Testing
|
|
2
|
+
|
|
3
|
+
> This file extends [common/testing.md](../common/testing.md) with Python specific content.
|
|
4
|
+
|
|
5
|
+
## Framework
|
|
6
|
+
|
|
7
|
+
Use **pytest** as the testing framework.
|
|
8
|
+
|
|
9
|
+
## Coverage
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pytest --cov=src --cov-report=term-missing
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Test Organization
|
|
16
|
+
|
|
17
|
+
Use `pytest.mark` for test categorization:
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
import pytest
|
|
21
|
+
|
|
22
|
+
@pytest.mark.unit
|
|
23
|
+
def test_calculate_total():
|
|
24
|
+
...
|
|
25
|
+
|
|
26
|
+
@pytest.mark.integration
|
|
27
|
+
def test_database_connection():
|
|
28
|
+
...
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Reference
|
|
32
|
+
|
|
33
|
+
See skill: `python-testing` for detailed pytest patterns and fixtures.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# TypeScript/JavaScript Coding Style
|
|
2
|
+
|
|
3
|
+
> This file extends [common/coding-style.md](../common/coding-style.md) with TypeScript/JavaScript specific content.
|
|
4
|
+
|
|
5
|
+
## Immutability
|
|
6
|
+
|
|
7
|
+
Use spread operator for immutable updates:
|
|
8
|
+
|
|
9
|
+
```typescript
|
|
10
|
+
// WRONG: Mutation
|
|
11
|
+
function updateUser(user, name) {
|
|
12
|
+
user.name = name // MUTATION!
|
|
13
|
+
return user
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// CORRECT: Immutability
|
|
17
|
+
function updateUser(user, name) {
|
|
18
|
+
return {
|
|
19
|
+
...user,
|
|
20
|
+
name
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Error Handling
|
|
26
|
+
|
|
27
|
+
Use async/await with try-catch:
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
try {
|
|
31
|
+
const result = await riskyOperation()
|
|
32
|
+
return result
|
|
33
|
+
} catch (error) {
|
|
34
|
+
console.error('Operation failed:', error)
|
|
35
|
+
throw new Error('Detailed user-friendly message')
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Input Validation
|
|
40
|
+
|
|
41
|
+
Use Zod for schema-based validation:
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
import { z } from 'zod'
|
|
45
|
+
|
|
46
|
+
const schema = z.object({
|
|
47
|
+
email: z.string().email(),
|
|
48
|
+
age: z.number().int().min(0).max(150)
|
|
49
|
+
})
|
|
50
|
+
|
|
51
|
+
const validated = schema.parse(input)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Console.log
|
|
55
|
+
|
|
56
|
+
- No `console.log` statements in production code
|
|
57
|
+
- Use proper logging libraries instead
|
|
58
|
+
- See hooks for automatic detection
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# TypeScript/JavaScript Hooks
|
|
2
|
+
|
|
3
|
+
> This file extends [common/hooks.md](../common/hooks.md) with TypeScript/JavaScript specific content.
|
|
4
|
+
|
|
5
|
+
## PostToolUse Hooks
|
|
6
|
+
|
|
7
|
+
Configure in `~/.claude/settings.json`:
|
|
8
|
+
|
|
9
|
+
- **Prettier**: Auto-format JS/TS files after edit
|
|
10
|
+
- **TypeScript check**: Run `tsc` after editing `.ts`/`.tsx` files
|
|
11
|
+
- **console.log warning**: Warn about `console.log` in edited files
|
|
12
|
+
|
|
13
|
+
## Stop Hooks
|
|
14
|
+
|
|
15
|
+
- **console.log audit**: Check all modified files for `console.log` before session ends
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# TypeScript/JavaScript Patterns
|
|
2
|
+
|
|
3
|
+
> This file extends [common/patterns.md](../common/patterns.md) with TypeScript/JavaScript specific content.
|
|
4
|
+
|
|
5
|
+
## API Response Format
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
interface ApiResponse<T> {
|
|
9
|
+
success: boolean
|
|
10
|
+
data?: T
|
|
11
|
+
error?: string
|
|
12
|
+
meta?: {
|
|
13
|
+
total: number
|
|
14
|
+
page: number
|
|
15
|
+
limit: number
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Custom Hooks Pattern
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
export function useDebounce<T>(value: T, delay: number): T {
|
|
24
|
+
const [debouncedValue, setDebouncedValue] = useState<T>(value)
|
|
25
|
+
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
const handler = setTimeout(() => setDebouncedValue(value), delay)
|
|
28
|
+
return () => clearTimeout(handler)
|
|
29
|
+
}, [value, delay])
|
|
30
|
+
|
|
31
|
+
return debouncedValue
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Repository Pattern
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
interface Repository<T> {
|
|
39
|
+
findAll(filters?: Filters): Promise<T[]>
|
|
40
|
+
findById(id: string): Promise<T | null>
|
|
41
|
+
create(data: CreateDto): Promise<T>
|
|
42
|
+
update(id: string, data: UpdateDto): Promise<T>
|
|
43
|
+
delete(id: string): Promise<void>
|
|
44
|
+
}
|
|
45
|
+
```
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# TypeScript/JavaScript Security
|
|
2
|
+
|
|
3
|
+
> This file extends [common/security.md](../common/security.md) with TypeScript/JavaScript specific content.
|
|
4
|
+
|
|
5
|
+
## Secret Management
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
// NEVER: Hardcoded secrets
|
|
9
|
+
const apiKey = "sk-proj-xxxxx"
|
|
10
|
+
|
|
11
|
+
// ALWAYS: Environment variables
|
|
12
|
+
const apiKey = process.env.OPENAI_API_KEY
|
|
13
|
+
|
|
14
|
+
if (!apiKey) {
|
|
15
|
+
throw new Error('OPENAI_API_KEY not configured')
|
|
16
|
+
}
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Agent Support
|
|
20
|
+
|
|
21
|
+
- Use **security-reviewer** skill for comprehensive security audits
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# TypeScript/JavaScript Testing
|
|
2
|
+
|
|
3
|
+
> This file extends [common/testing.md](../common/testing.md) with TypeScript/JavaScript specific content.
|
|
4
|
+
|
|
5
|
+
## E2E Testing
|
|
6
|
+
|
|
7
|
+
Use **Playwright** as the E2E testing framework for critical user flows.
|
|
8
|
+
|
|
9
|
+
## Agent Support
|
|
10
|
+
|
|
11
|
+
- **e2e-runner** - Playwright E2E testing specialist
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: api-documentation
|
|
3
|
+
description: API documentation generation with Postman sync workflow. Use when defining API contracts, creating endpoints, or designing API documentation.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# API Documentation & Postman Sync
|
|
7
|
+
|
|
8
|
+
Workflow for generating API documentation and optionally syncing to Postman collections.
|
|
9
|
+
|
|
10
|
+
## When to Activate
|
|
11
|
+
|
|
12
|
+
- Defining API contracts (endpoints, request/response schemas)
|
|
13
|
+
- Creating new API endpoints or modules
|
|
14
|
+
- Generating API documentation from code
|
|
15
|
+
- After completing backend endpoint implementation
|
|
16
|
+
|
|
17
|
+
## Confirmation Flow (User Must Approve)
|
|
18
|
+
|
|
19
|
+
Before any Postman sync, ALWAYS ask the user using the `question` tool:
|
|
20
|
+
|
|
21
|
+
```markdown
|
|
22
|
+
questions: [
|
|
23
|
+
{
|
|
24
|
+
header: "Postman Sync",
|
|
25
|
+
question: "Do you also want to create/update this API in Postman?",
|
|
26
|
+
options: [
|
|
27
|
+
{ label: "Yes (Recommended)", description: "Create/update Postman collection with all endpoints, requests, and response examples" },
|
|
28
|
+
{ label: "No", description: "Skip Postman sync, continue without" },
|
|
29
|
+
{ label: "Custom answer", description: "Type your own response" }
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Default fallback: If user doesn't select, pick "Yes (Recommended)".
|
|
36
|
+
|
|
37
|
+
## Postman Sync Workflow
|
|
38
|
+
|
|
39
|
+
### Prerequisites
|
|
40
|
+
- Postman MCP server enabled
|
|
41
|
+
- `POSTMAN_API_KEY` configured
|
|
42
|
+
- Postman workspace ID (ask user if not known)
|
|
43
|
+
|
|
44
|
+
### Step 1: Prepare API Contract Data
|
|
45
|
+
|
|
46
|
+
Before calling Postman tools, compile:
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"collectionName": "My API - v1",
|
|
51
|
+
"workspaceId": "ws-xxxxx",
|
|
52
|
+
"baseUrl": "https://api.example.com",
|
|
53
|
+
"endpoints": [
|
|
54
|
+
{
|
|
55
|
+
"name": "List Users",
|
|
56
|
+
"method": "GET",
|
|
57
|
+
"path": "/api/users",
|
|
58
|
+
"description": "Get paginated list of users",
|
|
59
|
+
"headers": { "Content-Type": "application/json", "Authorization": "Bearer {{token}}" },
|
|
60
|
+
"queryParams": [
|
|
61
|
+
{ "key": "limit", "value": "10", "description": "Max results" },
|
|
62
|
+
{ "key": "offset", "value": "0", "description": "Pagination offset" }
|
|
63
|
+
],
|
|
64
|
+
"responses": [
|
|
65
|
+
{ "code": 200, "name": "Success", "body": "{ \"users\": [], \"total\": 0 }" },
|
|
66
|
+
{ "code": 401, "name": "Unauthorized", "body": "{ \"error\": \"Unauthorized\" }" }
|
|
67
|
+
]
|
|
68
|
+
}
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Step 2: Resolve Workspace
|
|
74
|
+
|
|
75
|
+
```markdown
|
|
76
|
+
1. Call `postman_getWorkspaces` to list available workspaces
|
|
77
|
+
2. If workspace ID known, use it directly
|
|
78
|
+
3. If unknown, ask user: "Which Postman workspace should this collection be created in?"
|
|
79
|
+
4. Use question tool with workspace list as options
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### Step 3: Check Existing Collection
|
|
83
|
+
|
|
84
|
+
```markdown
|
|
85
|
+
1. Call `postman_getCollections(workspace)` to list collections
|
|
86
|
+
2. Search for collection by name match
|
|
87
|
+
3. If found: Ask user to merge/update or create new:
|
|
88
|
+
- "Collection 'X' already exists. Update it or create a new one?"
|
|
89
|
+
- Options: Update existing, Create new with suffix, Cancel
|
|
90
|
+
4. If not found: Create new collection
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Step 4: Create or Update Collection
|
|
94
|
+
|
|
95
|
+
**New Collection:**
|
|
96
|
+
```markdown
|
|
97
|
+
Call `postman_createCollection` with:
|
|
98
|
+
- workspace: the target workspace ID
|
|
99
|
+
- collection: full collection object with:
|
|
100
|
+
- info: { name, schema }
|
|
101
|
+
- item: array of endpoint items (can be nested in folders)
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**Update Existing:**
|
|
105
|
+
```markdown
|
|
106
|
+
Call `postman_patchCollection` with:
|
|
107
|
+
- collectionId: existing collection ID
|
|
108
|
+
- collection: { info: { name, description }, variable: [...] }
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### Step 5: Add Requests
|
|
112
|
+
|
|
113
|
+
For each endpoint, call `postman_createCollectionRequest`:
|
|
114
|
+
|
|
115
|
+
```markdown
|
|
116
|
+
Parameters:
|
|
117
|
+
- collectionId: the collection ID
|
|
118
|
+
- folderId: (optional) folder to place request in
|
|
119
|
+
- name: endpoint name (e.g., "List Users")
|
|
120
|
+
- method: GET/POST/PUT/PATCH/DELETE
|
|
121
|
+
- url: full URL (e.g., "{{baseUrl}}/api/users")
|
|
122
|
+
- headerData: array of { key, value, description }
|
|
123
|
+
- queryParams: array of { key, value, description, enabled }
|
|
124
|
+
- dataMode: raw / urlencoded / formdata / graphql
|
|
125
|
+
- rawModeData: raw JSON body (for POST/PUT/PATCH)
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Step 6: Add Response Examples
|
|
129
|
+
|
|
130
|
+
For each response variant, call `postman_createCollectionResponse`:
|
|
131
|
+
|
|
132
|
+
```markdown
|
|
133
|
+
Parameters:
|
|
134
|
+
- collectionId: the collection ID
|
|
135
|
+
- request: the request ID (from step 5 output)
|
|
136
|
+
- name: response name (e.g., "200 Success", "401 Unauthorized")
|
|
137
|
+
- responseCode: { code: 200, name: "OK" }
|
|
138
|
+
- text: response body string
|
|
139
|
+
- headers: array of response headers
|
|
140
|
+
- mime: "application/json"
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Step 7: Organize with Folders (Optional)
|
|
144
|
+
|
|
145
|
+
For multi-module APIs, group related endpoints:
|
|
146
|
+
|
|
147
|
+
```markdown
|
|
148
|
+
1. Call `postman_createCollectionFolder(collectionId, name)` for each module
|
|
149
|
+
2. Pass folderId when creating requests in step 5
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Postman MCP Tool Reference
|
|
153
|
+
|
|
154
|
+
| Tool | Purpose |
|
|
155
|
+
|------|---------|
|
|
156
|
+
| `postman_getWorkspaces` | List available workspaces |
|
|
157
|
+
| `postman_getCollections(workspace)` | List collections in workspace |
|
|
158
|
+
| `postman_getCollection(collectionId)` | Get collection details |
|
|
159
|
+
| `postman_createCollection(workspace, collection)` | Create new collection |
|
|
160
|
+
| `postman_patchCollection(collectionId, collection)` | Update collection |
|
|
161
|
+
| `postman_createCollectionFolder(collectionId, name)` | Create folder |
|
|
162
|
+
| `postman_createCollectionRequest(collectionId, ...)` | Create request |
|
|
163
|
+
| `postman_createCollectionResponse(collectionId, request, ...)` | Add response example |
|
|
164
|
+
| `postman_getCollectionContext(collectionId)` | Get collection summary |
|
|
165
|
+
| `postman_getRequestCodeContext(collectionId, requestId)` | Get request details for code gen |
|
|
166
|
+
|
|
167
|
+
## Security Notes
|
|
168
|
+
|
|
169
|
+
- Do NOT include real API keys or tokens in Postman collection variables
|
|
170
|
+
- Use Postman variables (`{{variableName}}`) for sensitive values
|
|
171
|
+
- Set `"disabled": true` for query parameters that should not be sent
|
|
172
|
+
- For auth headers, prefer Bearer token pattern with `{{token}}` variable
|
|
173
|
+
- Never commit Postman API key to source control
|
|
174
|
+
|
|
175
|
+
## Example Workflow
|
|
176
|
+
|
|
177
|
+
```
|
|
178
|
+
1. Define API contract: GET /api/users, POST /api/users
|
|
179
|
+
2. Ask user: "Sync to Postman?" → Yes
|
|
180
|
+
3. Get workspace list → user selects "My Project Workspace"
|
|
181
|
+
4. Check existing collections → "My API" doesn't exist
|
|
182
|
+
5. Create collection "My API - v1" in workspace
|
|
183
|
+
6. Create folder "Users" in collection
|
|
184
|
+
7. Create request "List Users" (GET) in folder
|
|
185
|
+
8. Create request "Create User" (POST) in folder
|
|
186
|
+
9. Add success/error response examples for each
|
|
187
|
+
10. Report: "Postman collection 'My API - v1' created with 2 endpoints"
|
|
188
|
+
```
|