@punks/cli 0.1.16 → 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/AGENTS.md +10 -0
- package/README.md +64 -0
- package/dist/data/AGENTS.md +123 -0
- package/dist/data/catalog/lint.ts +349 -0
- package/dist/data/catalog/packs.ts +44 -0
- package/dist/data/catalog/skills.ts +47 -0
- package/dist/data/catalog/tools.ts +22 -0
- package/dist/data/hooks/format-edited-file.mjs +554 -0
- package/dist/data/hooks/format-edited-file.py +157 -0
- package/dist/data/hooks/format-edited-file.sh +37 -0
- package/dist/data/hooks/require-tests-for-pr.mjs +144 -0
- package/dist/data/scripts/sync-subagents.mjs +420 -0
- package/dist/data/subagents/manifest.mjs +253 -0
- package/dist/index.js +46415 -0
- package/dist/skills/agnostic/backend/backend-domain-structure/SKILL.md +50 -0
- package/dist/skills/agnostic/backend/backend-domain-structure/agents/openai.yaml +4 -0
- package/dist/skills/agnostic/backend/backend-domain-structure/references/layout.md +167 -0
- package/dist/skills/agnostic/backend/backend-recoverable-actions/SKILL.md +49 -0
- package/dist/skills/agnostic/backend/backend-recoverable-actions/agents/openai.yaml +4 -0
- package/dist/skills/agnostic/backend/backend-recoverable-actions/references/strategy-matrix.md +34 -0
- package/dist/skills/agnostic/backend/backend-recoverable-actions/references/test-matrix.md +34 -0
- package/dist/skills/agnostic/docs/docs-maintenance/SKILL.md +193 -0
- package/dist/skills/agnostic/docs/docs-maintenance/agents/openai.yaml +4 -0
- package/dist/skills/agnostic/docs/docs-maintenance/references/concept-pages.md +48 -0
- package/dist/skills/agnostic/docs/docs-maintenance/references/flow-pages.md +41 -0
- package/dist/skills/agnostic/frontend/agent-browser/.clawdhub/origin.json +7 -0
- package/dist/skills/agnostic/frontend/agent-browser/SKILL.md +229 -0
- package/dist/skills/agnostic/frontend/agent-browser/references/authentication.md +202 -0
- package/dist/skills/agnostic/frontend/agent-browser/references/commands.md +259 -0
- package/dist/skills/agnostic/frontend/agent-browser/references/proxy-support.md +188 -0
- package/dist/skills/agnostic/frontend/agent-browser/references/session-management.md +193 -0
- package/dist/skills/agnostic/frontend/agent-browser/references/snapshot-refs.md +194 -0
- package/dist/skills/agnostic/frontend/agent-browser/references/video-recording.md +173 -0
- package/dist/skills/agnostic/frontend/agent-browser/templates/authenticated-session.sh +97 -0
- package/dist/skills/agnostic/frontend/agent-browser/templates/capture-workflow.sh +69 -0
- package/dist/skills/agnostic/frontend/agent-browser/templates/form-automation.sh +62 -0
- package/dist/skills/agnostic/frontend/design-taste-frontend/SKILL.md +226 -0
- package/dist/skills/agnostic/frontend/frontend-domain-structure/SKILL.md +55 -0
- package/dist/skills/agnostic/frontend/frontend-domain-structure/agents/openai.yaml +4 -0
- package/dist/skills/agnostic/frontend/frontend-domain-structure/references/react/structure.md +102 -0
- package/dist/skills/agnostic/frontend/frontend-domain-structure/references/structure.md +257 -0
- package/dist/skills/agnostic/frontend/gpt-taste/SKILL.md +74 -0
- package/dist/skills/agnostic/frontend/image-taste-frontend/SKILL.md +1102 -0
- package/dist/skills/agnostic/frontend/redesign-existing-projects/SKILL.md +178 -0
- package/dist/skills/agnostic/planning/create-plan/REFERENCE.md +37 -0
- package/dist/skills/agnostic/planning/create-plan/SKILL.md +69 -0
- package/dist/skills/agnostic/planning/create-plan/references/backlog-sync.md +44 -0
- package/dist/skills/agnostic/planning/create-plan/references/grill-phase.md +86 -0
- package/dist/skills/agnostic/planning/create-plan/references/plan-schema.md +66 -0
- package/dist/skills/agnostic/planning/create-plan/references/planner-phase.md +39 -0
- package/dist/skills/agnostic/planning/create-plan/references/stop-conditions.md +18 -0
- package/dist/skills/agnostic/planning/create-plan/references/tdd-phase.md +26 -0
- package/dist/skills/agnostic/planning/create-spec/SKILL.md +57 -0
- package/dist/skills/agnostic/planning/create-spec/assets/SPEC-TEMPLATE.md +91 -0
- package/dist/skills/agnostic/planning/create-spec/references/discovery.md +44 -0
- package/dist/skills/agnostic/planning/create-spec/references/folder-naming.md +27 -0
- package/dist/skills/agnostic/planning/create-spec/references/handoff.md +47 -0
- package/dist/skills/agnostic/planning/create-spec/references/questioning.md +41 -0
- package/dist/skills/agnostic/planning/create-spec/references/spec-quality-bar.md +58 -0
- package/dist/skills/agnostic/planning/create-spec/references/wiki-bookkeeping.md +26 -0
- package/dist/skills/agnostic/planning/grill-me/SKILL.md +28 -0
- package/dist/skills/agnostic/planning/implement-spec/SKILL.md +72 -0
- package/dist/skills/agnostic/planning/implement-spec/assets/IMPLEMENTATION-NOTES-TEMPLATE.md +47 -0
- package/dist/skills/agnostic/planning/implement-spec/references/lifecycle.md +149 -0
- package/dist/skills/agnostic/planning/implement-spec/references/parallel-orchestration.md +102 -0
- package/dist/skills/agnostic/planning/implement-spec/references/parallel-worker-brief.md +65 -0
- package/dist/skills/agnostic/planning/implement-spec/references/parallel.md +56 -0
- package/dist/skills/agnostic/planning/implement-spec/references/sequential.md +28 -0
- package/dist/skills/agnostic/planning/swarm-planner/SKILL.md +179 -0
- package/dist/skills/agnostic/quality/simplify/SKILL.md +14 -0
- package/dist/skills/agnostic/quality/tdd/SKILL.md +107 -0
- package/dist/skills/agnostic/quality/tdd/deep-modules.md +33 -0
- package/dist/skills/agnostic/quality/tdd/interface-design.md +31 -0
- package/dist/skills/agnostic/quality/tdd/mocking.md +59 -0
- package/dist/skills/agnostic/quality/tdd/refactoring.md +10 -0
- package/dist/skills/agnostic/quality/tdd/tests.md +61 -0
- package/dist/skills/agnostic/requirements/requirements-grill/SKILL.md +42 -0
- package/dist/skills/agnostic/requirements/requirements-grill/references/artifact-output.md +73 -0
- package/dist/skills/agnostic/requirements/requirements-grill/references/grilling-flow.md +57 -0
- package/dist/skills/agnostic/requirements/requirements-grill/references/wiki-output.md +94 -0
- package/dist/skills/agnostic/requirements/write-backlog/EXAMPLES.md +67 -0
- package/dist/skills/agnostic/requirements/write-backlog/REFERENCE.md +253 -0
- package/dist/skills/agnostic/requirements/write-backlog/SKILL.md +68 -0
- package/dist/skills/agnostic/requirements/write-backlog/assets/concepts/backlog-model.md +69 -0
- package/dist/skills/agnostic/requirements/write-backlog/assets/concepts/story-shape.md +66 -0
- package/dist/skills/agnostic/requirements/write-backlog/assets/providers/azure-devops-create-payload.md +63 -0
- package/dist/skills/agnostic/requirements/write-backlog/assets/providers/github-issues-create-payload.md +48 -0
- package/dist/skills/agnostic/requirements/write-backlog/assets/providers/linear-create-payload.md +76 -0
- package/dist/skills/agnostic/research/improve-codebase-architecture/REFERENCE.md +78 -0
- package/dist/skills/agnostic/research/improve-codebase-architecture/SKILL.md +76 -0
- package/dist/skills/agnostic/research/parallel-research/SKILL.md +68 -0
- package/dist/skills/agnostic/research/parallel-research/agents/openai.yaml +4 -0
- package/dist/skills/agnostic/subagents/swarm-planner/SKILL.md +179 -0
- package/dist/skills/agnostic/write-a-skill/SKILL.md +117 -0
- package/dist/skills/frameworks/better-auth/better-auth-best-practices/SKILL.md +166 -0
- package/dist/skills/frameworks/better-auth/better-auth-security-best-practices/SKILL.MD +432 -0
- package/dist/skills/frameworks/effect/effect-authoring/SKILL.md +116 -0
- package/dist/skills/frameworks/effect/effect-authoring/references/branded-types.md +98 -0
- package/dist/skills/frameworks/effect/effect-authoring/references/effect-atom-patterns.md +257 -0
- package/dist/skills/frameworks/effect/effect-authoring/references/effect-primitives.md +144 -0
- package/dist/skills/frameworks/effect/effect-authoring/references/error-patterns.md +156 -0
- package/dist/skills/frameworks/effect/effect-authoring/references/otel-patterns.md +113 -0
- package/dist/skills/frameworks/effect/effect-authoring/references/test-patterns.md +146 -0
- package/dist/skills/frameworks/effect/effect-backend-structure/SKILL.md +96 -0
- package/dist/skills/frameworks/effect/effect-backend-structure/agents/openai.yaml +4 -0
- package/dist/skills/frameworks/effect/effect-backend-structure/references/layout.md +68 -0
- package/dist/skills/frameworks/effect/effect-best-practices/SKILL.md +517 -0
- package/dist/skills/frameworks/effect/effect-best-practices/references/anti-patterns.md +392 -0
- package/dist/skills/frameworks/effect/effect-best-practices/references/effect-atom-patterns.md +653 -0
- package/dist/skills/frameworks/effect/effect-best-practices/references/error-patterns.md +464 -0
- package/dist/skills/frameworks/effect/effect-best-practices/references/language-server.md +287 -0
- package/dist/skills/frameworks/effect/effect-best-practices/references/layer-patterns.md +495 -0
- package/dist/skills/frameworks/effect/effect-best-practices/references/observability-patterns.md +342 -0
- package/dist/skills/frameworks/effect/effect-best-practices/references/rpc-cluster-patterns.md +418 -0
- package/dist/skills/frameworks/effect/effect-best-practices/references/schema-patterns.md +353 -0
- package/dist/skills/frameworks/effect/effect-best-practices/references/service-patterns.md +299 -0
- package/dist/skills/frameworks/effect/effect-recoverable-actions/SKILL.md +65 -0
- package/dist/skills/frameworks/effect/effect-recoverable-actions/agents/openai.yaml +4 -0
- package/dist/skills/frameworks/effect/effect-recoverable-actions/references/flow-examples.md +154 -0
- package/dist/skills/frameworks/effect/effect-recoverable-actions/references/source-backed-primitives.md +104 -0
- package/dist/skills/frameworks/effect/effect-recoverable-actions/references/strategy-matrix.md +34 -0
- package/dist/skills/frameworks/effect/effect-recoverable-actions/references/test-matrix.md +36 -0
- package/dist/skills/frameworks/elysia/elysiajs/SKILL.md +475 -0
- package/dist/skills/frameworks/elysia/elysiajs/examples/basic.ts +9 -0
- package/dist/skills/frameworks/elysia/elysiajs/examples/body-parser.ts +33 -0
- package/dist/skills/frameworks/elysia/elysiajs/examples/complex.ts +112 -0
- package/dist/skills/frameworks/elysia/elysiajs/examples/cookie.ts +45 -0
- package/dist/skills/frameworks/elysia/elysiajs/examples/error.ts +38 -0
- package/dist/skills/frameworks/elysia/elysiajs/examples/file.ts +10 -0
- package/dist/skills/frameworks/elysia/elysiajs/examples/guard.ts +34 -0
- package/dist/skills/frameworks/elysia/elysiajs/examples/map-response.ts +15 -0
- package/dist/skills/frameworks/elysia/elysiajs/examples/redirect.ts +6 -0
- package/dist/skills/frameworks/elysia/elysiajs/examples/rename.ts +32 -0
- package/dist/skills/frameworks/elysia/elysiajs/examples/schema.ts +61 -0
- package/dist/skills/frameworks/elysia/elysiajs/examples/state.ts +6 -0
- package/dist/skills/frameworks/elysia/elysiajs/examples/upload-file.ts +20 -0
- package/dist/skills/frameworks/elysia/elysiajs/examples/websocket.ts +25 -0
- package/dist/skills/frameworks/elysia/elysiajs/integrations/ai-sdk.md +92 -0
- package/dist/skills/frameworks/elysia/elysiajs/integrations/astro.md +59 -0
- package/dist/skills/frameworks/elysia/elysiajs/integrations/better-auth.md +117 -0
- package/dist/skills/frameworks/elysia/elysiajs/integrations/cloudflare-worker.md +95 -0
- package/dist/skills/frameworks/elysia/elysiajs/integrations/deno.md +34 -0
- package/dist/skills/frameworks/elysia/elysiajs/integrations/drizzle.md +258 -0
- package/dist/skills/frameworks/elysia/elysiajs/integrations/expo.md +95 -0
- package/dist/skills/frameworks/elysia/elysiajs/integrations/nextjs.md +103 -0
- package/dist/skills/frameworks/elysia/elysiajs/integrations/nodejs.md +64 -0
- package/dist/skills/frameworks/elysia/elysiajs/integrations/nuxt.md +67 -0
- package/dist/skills/frameworks/elysia/elysiajs/integrations/prisma.md +93 -0
- package/dist/skills/frameworks/elysia/elysiajs/integrations/react-email.md +134 -0
- package/dist/skills/frameworks/elysia/elysiajs/integrations/sveltekit.md +53 -0
- package/dist/skills/frameworks/elysia/elysiajs/integrations/tanstack-start.md +87 -0
- package/dist/skills/frameworks/elysia/elysiajs/integrations/vercel.md +55 -0
- package/dist/skills/frameworks/elysia/elysiajs/patterns/mvc.md +380 -0
- package/dist/skills/frameworks/elysia/elysiajs/plugins/bearer.md +30 -0
- package/dist/skills/frameworks/elysia/elysiajs/plugins/cors.md +141 -0
- package/dist/skills/frameworks/elysia/elysiajs/plugins/cron.md +265 -0
- package/dist/skills/frameworks/elysia/elysiajs/plugins/graphql-apollo.md +90 -0
- package/dist/skills/frameworks/elysia/elysiajs/plugins/graphql-yoga.md +87 -0
- package/dist/skills/frameworks/elysia/elysiajs/plugins/html.md +188 -0
- package/dist/skills/frameworks/elysia/elysiajs/plugins/jwt.md +197 -0
- package/dist/skills/frameworks/elysia/elysiajs/plugins/openapi.md +246 -0
- package/dist/skills/frameworks/elysia/elysiajs/plugins/opentelemetry.md +167 -0
- package/dist/skills/frameworks/elysia/elysiajs/plugins/server-timing.md +71 -0
- package/dist/skills/frameworks/elysia/elysiajs/plugins/static.md +84 -0
- package/dist/skills/frameworks/elysia/elysiajs/references/bun-fullstack-dev-server.md +129 -0
- package/dist/skills/frameworks/elysia/elysiajs/references/cookie.md +187 -0
- package/dist/skills/frameworks/elysia/elysiajs/references/deployment.md +413 -0
- package/dist/skills/frameworks/elysia/elysiajs/references/eden.md +158 -0
- package/dist/skills/frameworks/elysia/elysiajs/references/lifecycle.md +198 -0
- package/dist/skills/frameworks/elysia/elysiajs/references/macro.md +83 -0
- package/dist/skills/frameworks/elysia/elysiajs/references/plugin.md +207 -0
- package/dist/skills/frameworks/elysia/elysiajs/references/route.md +331 -0
- package/dist/skills/frameworks/elysia/elysiajs/references/testing.md +385 -0
- package/dist/skills/frameworks/elysia/elysiajs/references/validation.md +491 -0
- package/dist/skills/frameworks/elysia/elysiajs/references/websocket.md +250 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/.github/workflows/branch-protection.yml +24 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/.github/workflows/deploy.yml +61 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/AGENTS.md +5958 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/SKILL.md +130 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/api-use-dto-serialization.md +182 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/api-use-interceptors.md +202 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/api-use-pipes.md +205 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/api-versioning.md +191 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/arch-avoid-circular-deps.md +80 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/arch-feature-modules.md +82 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/arch-module-sharing.md +141 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/arch-single-responsibility.md +106 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/arch-use-events.md +108 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/arch-use-repository-pattern.md +97 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/db-avoid-n-plus-one.md +139 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/db-use-migrations.md +129 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/db-use-transactions.md +140 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/devops-graceful-shutdown.md +222 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/devops-use-config-module.md +167 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/devops-use-logging.md +232 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/di-avoid-service-locator.md +104 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/di-interface-segregation.md +165 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/di-liskov-substitution.md +221 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/di-prefer-constructor-injection.md +86 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/di-scope-awareness.md +94 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/di-use-interfaces-tokens.md +101 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/error-handle-async-errors.md +125 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/error-throw-http-exceptions.md +114 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/error-use-exception-filters.md +140 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/micro-use-health-checks.md +226 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/micro-use-patterns.md +167 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/micro-use-queues.md +252 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/perf-async-hooks.md +109 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/perf-lazy-loading.md +121 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/perf-optimize-database.md +131 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/perf-use-caching.md +128 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/security-auth-jwt.md +146 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/security-rate-limiting.md +125 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/security-sanitize-output.md +139 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/security-use-guards.md +135 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/security-validate-all-input.md +150 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/test-e2e-supertest.md +178 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/test-mock-external-services.md +179 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/rules/test-use-testing-module.md +153 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/scripts/build-agents.ts +299 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/scripts/build.sh +16 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/scripts/package-lock.json +237 -0
- package/dist/skills/frameworks/nestjs/nestjs-best-practices/scripts/package.json +15 -0
- package/dist/skills/frameworks/nestjs/nestjs-expert/SKILL.md +208 -0
- package/dist/skills/frameworks/nestjs/nestjs-expert/references/authentication.md +166 -0
- package/dist/skills/frameworks/nestjs/nestjs-expert/references/controllers-routing.md +111 -0
- package/dist/skills/frameworks/nestjs/nestjs-expert/references/dtos-validation.md +153 -0
- package/dist/skills/frameworks/nestjs/nestjs-expert/references/migration-from-express.md +1237 -0
- package/dist/skills/frameworks/nestjs/nestjs-expert/references/services-di.md +140 -0
- package/dist/skills/frameworks/nestjs/nestjs-expert/references/testing-patterns.md +186 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/SKILL.md +153 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/async-patterns.md +87 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/bundling.md +180 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/data-patterns.md +297 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/debug-tricks.md +105 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/directives.md +73 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/error-handling.md +227 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/file-conventions.md +140 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/font.md +245 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/functions.md +108 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/hydration-error.md +91 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/image.md +173 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/metadata.md +301 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/parallel-routes.md +287 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/route-handlers.md +146 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/rsc-boundaries.md +159 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/runtime-selection.md +39 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/scripts.md +141 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/self-hosting.md +371 -0
- package/dist/skills/frameworks/nextjs/next-best-practices/suspense-boundaries.md +67 -0
- package/dist/skills/frameworks/nextjs/next-cache-components/SKILL.md +360 -0
- package/dist/skills/frameworks/react/async-react-patterns/SKILL.md +78 -0
- package/dist/skills/frameworks/react/vercel-composition-patterns/AGENTS.md +946 -0
- package/dist/skills/frameworks/react/vercel-composition-patterns/SKILL.md +89 -0
- package/dist/skills/frameworks/react/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/dist/skills/frameworks/react/vercel-composition-patterns/rules/architecture-compound-components.md +112 -0
- package/dist/skills/frameworks/react/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/dist/skills/frameworks/react/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/dist/skills/frameworks/react/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/dist/skills/frameworks/react/vercel-composition-patterns/rules/state-context-interface.md +191 -0
- package/dist/skills/frameworks/react/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/dist/skills/frameworks/react/vercel-composition-patterns/rules/state-lift-state.md +125 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/AGENTS.md +3750 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/SKILL.md +148 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/advanced-effect-event-deps.md +56 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/async-defer-await.md +82 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/bundle-barrel-imports.md +60 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-request-idle-callback.md +105 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-hoist-static-io.md +149 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-no-shared-module-state.md +50 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
- package/dist/skills/frameworks/react/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/.claude-plugin/plugin.json +12 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/SKILL.md +1058 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/assets/example-template.txt +14 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/references/best-practices.md +304 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/references/common-patterns.md +271 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/references/example-reference.md +26 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/references/testing.md +282 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/references/top-errors.md +332 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/references/typescript-patterns.md +291 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/references/v4-to-v5-migration.md +231 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/rules/tanstack-query.md +126 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/scripts/example-script.sh +15 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/custom-hooks-pattern.tsx +281 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/devtools-setup.tsx +248 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/error-boundary.tsx +243 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/package.json +31 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/provider-setup.tsx +50 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/query-client-config.ts +72 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/use-infinite-query.tsx +214 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/use-mutation-basic.tsx +201 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/use-mutation-optimistic.tsx +234 -0
- package/dist/skills/frameworks/tanstack-query/tanstack-query/templates/use-query-basic.tsx +119 -0
- package/dist/skills/frameworks/trpc/tanstack-query/.claude-plugin/plugin.json +12 -0
- package/dist/skills/frameworks/trpc/tanstack-query/SKILL.md +1058 -0
- package/dist/skills/frameworks/trpc/tanstack-query/assets/example-template.txt +14 -0
- package/dist/skills/frameworks/trpc/tanstack-query/references/best-practices.md +304 -0
- package/dist/skills/frameworks/trpc/tanstack-query/references/common-patterns.md +271 -0
- package/dist/skills/frameworks/trpc/tanstack-query/references/example-reference.md +26 -0
- package/dist/skills/frameworks/trpc/tanstack-query/references/testing.md +282 -0
- package/dist/skills/frameworks/trpc/tanstack-query/references/top-errors.md +332 -0
- package/dist/skills/frameworks/trpc/tanstack-query/references/typescript-patterns.md +291 -0
- package/dist/skills/frameworks/trpc/tanstack-query/references/v4-to-v5-migration.md +231 -0
- package/dist/skills/frameworks/trpc/tanstack-query/rules/tanstack-query.md +126 -0
- package/dist/skills/frameworks/trpc/tanstack-query/scripts/example-script.sh +15 -0
- package/dist/skills/frameworks/trpc/tanstack-query/templates/custom-hooks-pattern.tsx +281 -0
- package/dist/skills/frameworks/trpc/tanstack-query/templates/devtools-setup.tsx +248 -0
- package/dist/skills/frameworks/trpc/tanstack-query/templates/error-boundary.tsx +243 -0
- package/dist/skills/frameworks/trpc/tanstack-query/templates/package.json +31 -0
- package/dist/skills/frameworks/trpc/tanstack-query/templates/provider-setup.tsx +50 -0
- package/dist/skills/frameworks/trpc/tanstack-query/templates/query-client-config.ts +72 -0
- package/dist/skills/frameworks/trpc/tanstack-query/templates/use-infinite-query.tsx +214 -0
- package/dist/skills/frameworks/trpc/tanstack-query/templates/use-mutation-basic.tsx +201 -0
- package/dist/skills/frameworks/trpc/tanstack-query/templates/use-mutation-optimistic.tsx +234 -0
- package/dist/skills/frameworks/trpc/tanstack-query/templates/use-query-basic.tsx +119 -0
- package/dist/skills/frameworks/turborepo/turborepo/SKILL.md +914 -0
- package/dist/skills/frameworks/turborepo/turborepo/command/turborepo.md +70 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/best-practices/RULE.md +241 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/best-practices/dependencies.md +246 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/best-practices/packages.md +335 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/best-practices/structure.md +270 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/boundaries/RULE.md +126 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/caching/RULE.md +107 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/caching/gotchas.md +169 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/caching/remote-cache.md +127 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/ci/RULE.md +79 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/ci/github-actions.md +162 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/ci/patterns.md +145 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/ci/vercel.md +103 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/cli/RULE.md +100 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/cli/commands.md +297 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/configuration/RULE.md +211 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/configuration/global-options.md +187 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/configuration/gotchas.md +348 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/configuration/tasks.md +285 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/environment/RULE.md +96 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/environment/gotchas.md +141 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/environment/modes.md +101 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/filtering/RULE.md +148 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/filtering/patterns.md +152 -0
- package/dist/skills/frameworks/turborepo/turborepo/references/watch/RULE.md +99 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/docs/README.md +20 -0
- package/docs/reference/dp-requirements.md +210 -0
- package/docs/runbooks/dp-cli-scaffolding.md +187 -0
- package/package.json +24 -50
- package/.eslintignore +0 -4
- package/.eslintrc +0 -127
- package/.prettierignore +0 -4
- package/.prettierrc +0 -7
- package/bin/abstractions/builder.d.ts +0 -4
- package/bin/abstractions/builder.js +0 -7
- package/bin/builders/dotnet/base.d.ts +0 -18
- package/bin/builders/dotnet/base.js +0 -47
- package/bin/builders/dotnet/entity-configuration/index.d.ts +0 -8
- package/bin/builders/dotnet/entity-configuration/index.js +0 -29
- package/bin/builders/dotnet/entity-converter/index.d.ts +0 -8
- package/bin/builders/dotnet/entity-converter/index.js +0 -29
- package/bin/builders/dotnet/entity-model-create/index.d.ts +0 -8
- package/bin/builders/dotnet/entity-model-create/index.js +0 -29
- package/bin/builders/dotnet/entity-model-dto/index.d.ts +0 -8
- package/bin/builders/dotnet/entity-model-dto/index.js +0 -29
- package/bin/builders/dotnet/entity-model-list-item-dto/index.d.ts +0 -8
- package/bin/builders/dotnet/entity-model-list-item-dto/index.js +0 -29
- package/bin/builders/dotnet/entity-model-update/index.d.ts +0 -8
- package/bin/builders/dotnet/entity-model-update/index.js +0 -29
- package/bin/builders/dotnet/entity-search-parameters/index.d.ts +0 -8
- package/bin/builders/dotnet/entity-search-parameters/index.js +0 -29
- package/bin/builders/dotnet/entity-search-query-builder/index.d.ts +0 -8
- package/bin/builders/dotnet/entity-search-query-builder/index.js +0 -29
- package/bin/builders/dotnet/firestore-connector/index.d.ts +0 -8
- package/bin/builders/dotnet/firestore-connector/index.js +0 -29
- package/bin/builders/dotnet/firestore-mapper/index.d.ts +0 -8
- package/bin/builders/dotnet/firestore-mapper/index.js +0 -29
- package/bin/builders/dotnet/types.d.ts +0 -10
- package/bin/builders/dotnet/types.js +0 -3
- package/bin/commands/entity-add/__test__/dotnet/common.d.ts +0 -2
- package/bin/commands/entity-add/__test__/dotnet/common.js +0 -11
- package/bin/commands/entity-add/__test__/dotnet/render.configuration.spec.d.ts +0 -1
- package/bin/commands/entity-add/__test__/dotnet/render.configuration.spec.js +0 -22
- package/bin/commands/entity-add/__test__/dotnet/render.converter.spec.d.ts +0 -1
- package/bin/commands/entity-add/__test__/dotnet/render.converter.spec.js +0 -22
- package/bin/commands/entity-add/__test__/dotnet/render.firestore-connector.spec.d.ts +0 -1
- package/bin/commands/entity-add/__test__/dotnet/render.firestore-connector.spec.js +0 -22
- package/bin/commands/entity-add/__test__/dotnet/render.firestore-mapper.spec.d.ts +0 -1
- package/bin/commands/entity-add/__test__/dotnet/render.firestore-mapper.spec.js +0 -22
- package/bin/commands/entity-add/__test__/dotnet/render.model-create.spec.d.ts +0 -1
- package/bin/commands/entity-add/__test__/dotnet/render.model-create.spec.js +0 -22
- package/bin/commands/entity-add/__test__/dotnet/render.model-dto.spec.d.ts +0 -1
- package/bin/commands/entity-add/__test__/dotnet/render.model-dto.spec.js +0 -22
- package/bin/commands/entity-add/__test__/dotnet/render.model-list-item-dto.spec.d.ts +0 -1
- package/bin/commands/entity-add/__test__/dotnet/render.model-list-item-dto.spec.js +0 -22
- package/bin/commands/entity-add/__test__/dotnet/render.model-update.spec.d.ts +0 -1
- package/bin/commands/entity-add/__test__/dotnet/render.model-update.spec.js +0 -22
- package/bin/commands/entity-add/__test__/dotnet/render.search-parameters.spec.d.ts +0 -1
- package/bin/commands/entity-add/__test__/dotnet/render.search-parameters.spec.js +0 -22
- package/bin/commands/entity-add/__test__/dotnet/render.search-query.spec.d.ts +0 -1
- package/bin/commands/entity-add/__test__/dotnet/render.search-query.spec.js +0 -22
- package/bin/commands/entity-add/index.d.ts +0 -26
- package/bin/commands/entity-add/index.js +0 -44
- package/bin/logging/index.d.ts +0 -8
- package/bin/logging/index.js +0 -28
- package/bin/providers/rendering/base.d.ts +0 -3
- package/bin/providers/rendering/base.js +0 -7
- package/bin/providers/rendering/factory.d.ts +0 -5
- package/bin/providers/rendering/factory.js +0 -16
- package/bin/providers/rendering/handlebars.d.ts +0 -4
- package/bin/providers/rendering/handlebars.js +0 -16
- package/bin/renderer/index.d.ts +0 -6
- package/bin/renderer/index.js +0 -27
- package/bin/run.d.ts +0 -2
- package/bin/run.js +0 -70
- package/bin/services/folders.d.ts +0 -1
- package/bin/services/folders.js +0 -31
- package/bin/types/commands.d.ts +0 -5
- package/bin/types/commands.js +0 -3
- package/bin/utils/collections.d.ts +0 -1
- package/bin/utils/collections.js +0 -6
- package/bin/utils/files.d.ts +0 -3
- package/bin/utils/files.js +0 -19
- package/bin/utils/strings.d.ts +0 -4
- package/bin/utils/strings.js +0 -22
- package/bin/utils/text.d.ts +0 -1
- package/bin/utils/text.js +0 -8
- package/em-cli +0 -0
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.configuration.spec.ts.snap +0 -49
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.converter.spec.ts.snap +0 -53
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.firestore-connector.spec.ts.snap +0 -20
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.firestore-mapper.spec.ts.snap +0 -29
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.model-create.spec.ts.snap +0 -10
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.model-dto.spec.ts.snap +0 -9
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.model-list-item-dto.spec.ts.snap +0 -11
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.model-update.spec.ts.snap +0 -11
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.search-parameters.spec.ts.snap +0 -29
- package/src/commands/entity-add/__test__/dotnet/__snapshots__/render.search-query.spec.ts.snap +0 -42
- package/templates/dotnet/NewEntity/Configuration/<PluralizedEntity>Configuration.cs.template +0 -48
- package/templates/dotnet/NewEntity/Connectors/<PluralizedEntity>FirestoreConnector.cs.template +0 -15
- package/templates/dotnet/NewEntity/Converters/<PluralizedEntity>Converter.cs.template +0 -48
- package/templates/dotnet/NewEntity/Mappers/<PluralizedEntity>FirestoreMapper.cs.template +0 -25
- package/templates/dotnet/NewEntity/Models/<Entity>CreateInput.cs.template +0 -6
- package/templates/dotnet/NewEntity/Models/<Entity>Dto.cs.template +0 -5
- package/templates/dotnet/NewEntity/Models/<Entity>ListItemDto.cs.template +0 -6
- package/templates/dotnet/NewEntity/Models/<Entity>UpdateInput.cs.template +0 -6
- package/templates/dotnet/NewEntity/Search/<PluralizedEntity>QueryBuilder.cs.template +0 -38
- package/templates/dotnet/NewEntity/Search/<PluralizedEntity>SearchParameters.cs.template +0 -24
- package/tsconfig.json +0 -25
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
---
|
|
2
|
+
domain:
|
|
3
|
+
type: spec
|
|
4
|
+
status: draft
|
|
5
|
+
links: []
|
|
6
|
+
created: YYYY-MM-DD
|
|
7
|
+
updated: YYYY-MM-DD
|
|
8
|
+
id: # optional — ticket ID, remove if not applicable
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Spec: [Title]
|
|
12
|
+
|
|
13
|
+
<!--
|
|
14
|
+
INSTRUCTIONS FOR THE AGENT (remove this block before saving the final spec):
|
|
15
|
+
|
|
16
|
+
- Each spec covers one epic/capability boundary.
|
|
17
|
+
- If the epic contains multiple child stories, the spec must cover all of them.
|
|
18
|
+
- Preserve individual story requirements while unifying them into one coherent problem-space contract.
|
|
19
|
+
- The audience is engineers. Keep it tight. A spec that takes 10 minutes to read won't get reviewed. Aim for 2–3 minutes.
|
|
20
|
+
- This template is a starting point, not a rulebook:
|
|
21
|
+
- Remove sections that don't apply — don't leave them blank or write "N/A"
|
|
22
|
+
- Add sections if something important doesn't fit (e.g. "Data model", "API contract")
|
|
23
|
+
- Adjust depth to complexity — a simple task may only need Context + Acceptance Criteria
|
|
24
|
+
-->
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## User input
|
|
29
|
+
|
|
30
|
+
_Verbatim copy of everything the user said that is relevant to this spec — across one or more messages if needed. Do not paraphrase or summarize. Preserve the original wording as closely as possible._
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Context
|
|
35
|
+
|
|
36
|
+
_What is this, why does it need to exist, and who is it for? Cover the problem and the purpose in a few sentences. Name the actual roles affected (admin, customer, developer — not just "user")._
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## Non-Goals
|
|
41
|
+
|
|
42
|
+
_Explicitly list what is out of scope for this spec. This prevents scope creep and misunderstandings._
|
|
43
|
+
|
|
44
|
+
-
|
|
45
|
+
-
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Acceptance Criteria
|
|
50
|
+
|
|
51
|
+
_The observable, binary conditions that define "done". Each one should be independently testable — you should be able to read it and immediately know what test would prove it true or false. When the epic has multiple child stories, consolidate their requirements into one coherent epic-level contract and ensure every story contributes explicit criteria._
|
|
52
|
+
|
|
53
|
+
-
|
|
54
|
+
-
|
|
55
|
+
-
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Constraints
|
|
60
|
+
|
|
61
|
+
_Technical, legal, organizational, or timeline constraints that shape the solution space — including quality requirements like performance, security, or accessibility if they're genuinely relevant._
|
|
62
|
+
|
|
63
|
+
-
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Technical Notes
|
|
68
|
+
|
|
69
|
+
_Optional. Technical discoveries, known system constraints, or early implementation observations that surfaced before or during spec writing_
|
|
70
|
+
|
|
71
|
+
-
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Open Questions
|
|
76
|
+
|
|
77
|
+
_Unresolved questions that could affect implementation._
|
|
78
|
+
|
|
79
|
+
| # | Question | Affects | Owner | Status |
|
|
80
|
+
|---|----------|---------|-------|--------|
|
|
81
|
+
| 1 | | | | Open |
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Decision Log
|
|
86
|
+
|
|
87
|
+
_Decisions made during spec refinement, with rationale._
|
|
88
|
+
|
|
89
|
+
| Decision | Rationale |
|
|
90
|
+
|----------|-----------|
|
|
91
|
+
| | |
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# Discovery
|
|
2
|
+
|
|
3
|
+
Use this reference before asking clarifying questions.
|
|
4
|
+
|
|
5
|
+
## Required order
|
|
6
|
+
|
|
7
|
+
1. Read `apps/wiki/AGENTS.md`.
|
|
8
|
+
- Stop if it does not exist. The wiki is not bootstrapped yet.
|
|
9
|
+
2. Read `apps/wiki/index.md`.
|
|
10
|
+
- Use it as the master map for domains, contracts, and existing specs.
|
|
11
|
+
3. Identify the primary domain.
|
|
12
|
+
- Prefer the domain whose contract most clearly owns the request.
|
|
13
|
+
- If multiple domains are involved, pick the primary owner and note cross-domain scope in the spec.
|
|
14
|
+
- If no domain matches, stop and tell the user to run `/create-wiki-domain <name>` first.
|
|
15
|
+
4. Read the relevant domain contract:
|
|
16
|
+
- `apps/wiki/domains/<domain>/<domain>-contract.md`
|
|
17
|
+
5. Optionally read related domain concepts or flows when they are obviously relevant.
|
|
18
|
+
6. Check for existing overlapping specs in:
|
|
19
|
+
- `apps/wiki/specs/<domain>/<domain>-specs.md`
|
|
20
|
+
7. If backlog context exists, inspect the parent epic/capability and every child story beneath it.
|
|
21
|
+
Use [../../write-backlog/assets/concepts/backlog-model.md](../../write-backlog/assets/concepts/backlog-model.md) as the source of truth for how to interpret module -> epic -> story shape.
|
|
22
|
+
Harvest:
|
|
23
|
+
- epic outcome and constraints
|
|
24
|
+
- each child story title
|
|
25
|
+
- each child story body and acceptance signals
|
|
26
|
+
- cross-story blockers or sequencing assumptions that affect the problem statement
|
|
27
|
+
8. Check existing DB schema when a matching domain schema file exists:
|
|
28
|
+
- `packages/db/src/schema/<domain>.ts`
|
|
29
|
+
Use it to:
|
|
30
|
+
- avoid speccing duplicates
|
|
31
|
+
- catch contradictions with the implemented model
|
|
32
|
+
- surface open questions when a required field is absent
|
|
33
|
+
9. Glance at the top-level repo structure only if needed for terminology or context.
|
|
34
|
+
|
|
35
|
+
## Exploration rule
|
|
36
|
+
|
|
37
|
+
This is orientation, not deep implementation research.
|
|
38
|
+
|
|
39
|
+
- Keep it read-only
|
|
40
|
+
- Keep it fast
|
|
41
|
+
- Prefer enough context to ask better questions
|
|
42
|
+
- Do not drift into solution design
|
|
43
|
+
|
|
44
|
+
If the Agent tool is available, use a subagent for this pass so the main thread stays clean.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Folder Naming
|
|
2
|
+
|
|
3
|
+
Use this reference after questioning and before writing the file.
|
|
4
|
+
|
|
5
|
+
## Domain resolution
|
|
6
|
+
|
|
7
|
+
- The spec path is `apps/wiki/specs/<domain>/<folder-name>/SPEC.md`.
|
|
8
|
+
- Use the exact existing domain directory name from `apps/wiki/`.
|
|
9
|
+
- If multiple domains are touched, choose the primary owner and describe the cross-domain aspect in the spec body.
|
|
10
|
+
|
|
11
|
+
## Folder-name rules
|
|
12
|
+
|
|
13
|
+
- Base the name on the subject matter: `oauth-providers`, `invoice-export`
|
|
14
|
+
- If the user mentioned a ticket id, prepend it: `PROJ-123-oauth-providers`
|
|
15
|
+
- If the user specified an exact folder name, use that as-is
|
|
16
|
+
- Keep it short but recognizable
|
|
17
|
+
- Use kebab-case
|
|
18
|
+
|
|
19
|
+
## Collision rule
|
|
20
|
+
|
|
21
|
+
Each spec folder must be unique within its domain.
|
|
22
|
+
|
|
23
|
+
If the folder already exists:
|
|
24
|
+
|
|
25
|
+
- ask whether to update the existing spec or create a new one
|
|
26
|
+
|
|
27
|
+
Do not ask the user to confirm the folder name unless the correct name is genuinely ambiguous.
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Handoff
|
|
2
|
+
|
|
3
|
+
Use this reference after the spec and wiki bookkeeping are complete.
|
|
4
|
+
|
|
5
|
+
## Complexity assessment
|
|
6
|
+
|
|
7
|
+
Classify the change before recommending the next step.
|
|
8
|
+
|
|
9
|
+
### Trivial / straightforward
|
|
10
|
+
|
|
11
|
+
- small and well-scoped
|
|
12
|
+
- clear acceptance criteria
|
|
13
|
+
- few unknowns
|
|
14
|
+
- low architectural risk
|
|
15
|
+
- limited surface area
|
|
16
|
+
|
|
17
|
+
Recommendation:
|
|
18
|
+
|
|
19
|
+
- suggest direct implementation
|
|
20
|
+
|
|
21
|
+
### Non-trivial
|
|
22
|
+
|
|
23
|
+
- multiple moving parts
|
|
24
|
+
- unclear dependencies
|
|
25
|
+
- architectural choices still matter
|
|
26
|
+
- risk of breaking existing behavior
|
|
27
|
+
- open questions remain about the approach
|
|
28
|
+
|
|
29
|
+
Recommendation:
|
|
30
|
+
|
|
31
|
+
- suggest `create-plan`
|
|
32
|
+
|
|
33
|
+
## User-facing closeout
|
|
34
|
+
|
|
35
|
+
Tell the user:
|
|
36
|
+
|
|
37
|
+
- where the spec was created
|
|
38
|
+
- that wiki index and log were updated
|
|
39
|
+
- that the spec is ready for review
|
|
40
|
+
- the suggested next step
|
|
41
|
+
|
|
42
|
+
Then ask them to reply with:
|
|
43
|
+
|
|
44
|
+
- `[P]` to create an implementation plan
|
|
45
|
+
- `[I]` to implement directly
|
|
46
|
+
|
|
47
|
+
Then stop and wait. Do not proceed until the user approves the spec and picks a next step.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Questioning
|
|
2
|
+
|
|
3
|
+
Use this reference after discovery and before writing.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
Ask only enough to produce a useful, bounded spec. A vague spec creates false confidence.
|
|
8
|
+
|
|
9
|
+
## Priority topics
|
|
10
|
+
|
|
11
|
+
Surface these as needed:
|
|
12
|
+
|
|
13
|
+
- which epic/capability is in scope
|
|
14
|
+
- which child stories under that epic are in scope
|
|
15
|
+
- who this is for
|
|
16
|
+
- why it needs to exist
|
|
17
|
+
- what "done" looks like
|
|
18
|
+
- what is out of scope
|
|
19
|
+
- what constraints exist
|
|
20
|
+
- what is still unknown
|
|
21
|
+
- whether a ticket or project id should influence naming
|
|
22
|
+
|
|
23
|
+
## Asking strategy
|
|
24
|
+
|
|
25
|
+
- Group questions naturally instead of dumping a long questionnaire.
|
|
26
|
+
- Skip questions already answered by repo context or by the user.
|
|
27
|
+
- If a fact is ambiguous and matters to the spec, ask directly.
|
|
28
|
+
- Prefer concrete examples over abstract wording.
|
|
29
|
+
- When backlog context exists, ask about cross-story interactions only after reading all child stories first.
|
|
30
|
+
|
|
31
|
+
## Stop asking when
|
|
32
|
+
|
|
33
|
+
- the core problem is clear
|
|
34
|
+
- the epic boundary is clear
|
|
35
|
+
- every child story in scope has been harvested into the spec
|
|
36
|
+
- affected actors or stakeholders are clear
|
|
37
|
+
- success is concrete and observable
|
|
38
|
+
- major functional requirements are identifiable
|
|
39
|
+
- key non-goals are explicit
|
|
40
|
+
|
|
41
|
+
If a branch remains open, capture it as an open question or assumption inside the spec rather than pretending certainty.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# Spec Quality Bar
|
|
2
|
+
|
|
3
|
+
Use this reference while filling the template and before saving.
|
|
4
|
+
|
|
5
|
+
## Core rule
|
|
6
|
+
|
|
7
|
+
The spec lives in the problem space.
|
|
8
|
+
|
|
9
|
+
- include what, who, why, acceptance criteria, non-goals, constraints, open questions
|
|
10
|
+
- exclude architecture, implementation steps, code structure, or solution design
|
|
11
|
+
- when the epic has child stories, include the concrete requirements of each child story instead of summarizing only the parent issue
|
|
12
|
+
|
|
13
|
+
## Acceptance-criteria bar
|
|
14
|
+
|
|
15
|
+
Every acceptance criterion should be:
|
|
16
|
+
|
|
17
|
+
- binary
|
|
18
|
+
- observable
|
|
19
|
+
- testable
|
|
20
|
+
|
|
21
|
+
Avoid:
|
|
22
|
+
|
|
23
|
+
- vague outcomes like "works well" or "feels intuitive"
|
|
24
|
+
- hidden implementation requirements disguised as product behavior
|
|
25
|
+
- mixed criteria that bundle several independent outcomes into one line
|
|
26
|
+
|
|
27
|
+
## Epic completeness bar
|
|
28
|
+
|
|
29
|
+
When writing a spec from an epic with child stories:
|
|
30
|
+
|
|
31
|
+
- the spec must cover the full scope of the epic
|
|
32
|
+
- each child story must contribute concrete requirements, constraints, or acceptance criteria
|
|
33
|
+
- cross-story interactions must be resolved in the spec rather than left implicit in backlog items
|
|
34
|
+
|
|
35
|
+
Avoid:
|
|
36
|
+
|
|
37
|
+
- a spec that summarizes the epic but omits concrete requirements from one or more child stories
|
|
38
|
+
- a spec that treats child stories as links only, without incorporating their product details
|
|
39
|
+
- a spec that copies child stories separately without unifying overlaps and shared constraints
|
|
40
|
+
|
|
41
|
+
## Self-review before saving
|
|
42
|
+
|
|
43
|
+
- remove all template scaffolding
|
|
44
|
+
- remove empty or irrelevant sections
|
|
45
|
+
- ensure the document reads cleanly with no ghost instructions
|
|
46
|
+
- check that terminology matches the repo domain language
|
|
47
|
+
|
|
48
|
+
## Field naming rule
|
|
49
|
+
|
|
50
|
+
Any field name in backticks must use English identifiers.
|
|
51
|
+
|
|
52
|
+
Examples:
|
|
53
|
+
|
|
54
|
+
- `first_name`, not `nome`
|
|
55
|
+
- `acquisition_channel`, not `canale_acquisizione`
|
|
56
|
+
- `visits`, not `visite`
|
|
57
|
+
|
|
58
|
+
If a business term needs clarification, explain it in prose only.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Wiki Bookkeeping
|
|
2
|
+
|
|
3
|
+
Use this reference after writing `SPEC.md`.
|
|
4
|
+
|
|
5
|
+
## Required updates
|
|
6
|
+
|
|
7
|
+
1. Add a row to the **Specs** table in `apps/wiki/index.md`:
|
|
8
|
+
|
|
9
|
+
```md
|
|
10
|
+
| <domain> | [[specs/<domain>/<folder-name>/SPEC]] | Draft |
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
2. Add an entry to `apps/wiki/specs/<domain>/<domain>-specs.md` with:
|
|
14
|
+
- the spec name
|
|
15
|
+
- a one-line summary
|
|
16
|
+
|
|
17
|
+
3. Append to `apps/wiki/log.md`:
|
|
18
|
+
|
|
19
|
+
```md
|
|
20
|
+
## [YYYY-MM-DD] spec | <spec title>
|
|
21
|
+
- Created spec: [[specs/<domain>/<folder-name>/SPEC]]
|
|
22
|
+
- Domain: <domain>
|
|
23
|
+
- Status: Draft
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Do not skip this step.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: grill-me
|
|
3
|
+
description: Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Interview the user relentlessly about every aspect of the plan until shared understanding exists. Walk each branch of the design tree and resolve dependencies one by one. For every question, provide a recommended answer.
|
|
7
|
+
|
|
8
|
+
Ask one question at a time.
|
|
9
|
+
|
|
10
|
+
If the answer can be found in the codebase, inspect first instead of asking.
|
|
11
|
+
|
|
12
|
+
## During the session
|
|
13
|
+
|
|
14
|
+
### Challenge the glossary
|
|
15
|
+
|
|
16
|
+
If the user uses a term that conflicts with existing specs, docs, or code language, call it out immediately and force a precise choice.
|
|
17
|
+
|
|
18
|
+
### Sharpen vague language
|
|
19
|
+
|
|
20
|
+
When the user uses fuzzy or overloaded terms, propose a canonical term and make them choose the right one.
|
|
21
|
+
|
|
22
|
+
### Discuss concrete scenarios
|
|
23
|
+
|
|
24
|
+
Stress-test relationships and boundaries with specific scenarios, including edge cases that force precision.
|
|
25
|
+
|
|
26
|
+
### Cross-check with code
|
|
27
|
+
|
|
28
|
+
When the user states how the system works, verify it against the code. Surface contradictions instead of smoothing them over.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: implement-spec
|
|
3
|
+
description: Implement an approved spec folder while keeping `IMPLEMENTATION-NOTES.md`, `PLAN.md`, and spec-linked tech debt in sync. Use when a reviewed spec already has a `PLAN.md` and execution should proceed either sequentially in one thread or in parallel with explicit worker orchestration.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Implement Spec
|
|
7
|
+
|
|
8
|
+
## Contract
|
|
9
|
+
|
|
10
|
+
- **Role:** higher-order execution orchestrator
|
|
11
|
+
- **Entrypoint type:** public entrypoint
|
|
12
|
+
- **Upstream:** reviewed spec folder with `SPEC.md` and `PLAN.md`
|
|
13
|
+
- **Delegates to:** `$tdd`, `$simplify`, and internal worker orchestration in parallel mode
|
|
14
|
+
- **Downstream:** `docs-maintenance` when the resulting spec folder should be ingested into domain knowledge
|
|
15
|
+
- **Entry conditions:** existing reviewed spec folder; stop and use `create-plan` if `PLAN.md` is missing
|
|
16
|
+
- **Stop conditions:** shared acceptance audit complete, spec folder finalized, blocked work reported honestly
|
|
17
|
+
|
|
18
|
+
## Required Inner Skills
|
|
19
|
+
|
|
20
|
+
- MUST use `$tdd`
|
|
21
|
+
- MUST use `$simplify`
|
|
22
|
+
Use `$agent-browser` when any task `review_mode` is `browser` or `mixed`.
|
|
23
|
+
|
|
24
|
+
## Parallel responsibilities
|
|
25
|
+
|
|
26
|
+
When `implement-spec` runs in `parallel` mode, it must follow [references/parallel.md](references/parallel.md) as the full orchestration contract.
|
|
27
|
+
|
|
28
|
+
That means `implement-spec` itself owns all of the following in parallel mode:
|
|
29
|
+
|
|
30
|
+
- parsing `PLAN.md`
|
|
31
|
+
- finding the currently unblocked tasks from `depends_on`
|
|
32
|
+
- launching workers in waves
|
|
33
|
+
- reviewing worker outputs
|
|
34
|
+
- validating each wave before advancing
|
|
35
|
+
- ensuring `PLAN.md` and `IMPLEMENTATION-NOTES.md` are updated after each completed wave
|
|
36
|
+
|
|
37
|
+
## Quick start
|
|
38
|
+
|
|
39
|
+
1. Resolve the target spec folder under `apps/wiki/specs/<domain>/<spec>/`.
|
|
40
|
+
2. Read `references/lifecycle.md` and follow the shared execution contract exactly.
|
|
41
|
+
3. Choose the execution mode explicitly:
|
|
42
|
+
- Read `references/sequential.md` for one-thread execution.
|
|
43
|
+
- Read `references/parallel.md` for wave-based worker execution.
|
|
44
|
+
4. Record the chosen mode under **Execution mode** in `IMPLEMENTATION-NOTES.md` before coding.
|
|
45
|
+
5. Execute only the chosen mode. Do not mix modes inside one run.
|
|
46
|
+
6. After each completed task or wave, update `PLAN.md`, `IMPLEMENTATION-NOTES.md`, and spec-linked tech debt before advancing.
|
|
47
|
+
7. If backlog sync is in scope, keep epic/story bodies product-facing and use native metadata or comments instead of execution handoff rewrites.
|
|
48
|
+
8. Finish with the shared acceptance audit and spec finalization contract.
|
|
49
|
+
|
|
50
|
+
## Mode selection
|
|
51
|
+
|
|
52
|
+
Choose `sequential` when:
|
|
53
|
+
|
|
54
|
+
- the user wants single-threaded execution
|
|
55
|
+
- tasks are tightly coupled
|
|
56
|
+
- worker handoff cost would outweigh parallelism
|
|
57
|
+
|
|
58
|
+
Choose `parallel` when:
|
|
59
|
+
|
|
60
|
+
- the user wants explicit parallel execution
|
|
61
|
+
- the plan contains independent waves
|
|
62
|
+
- disjoint write scopes make worker fan-out safe
|
|
63
|
+
|
|
64
|
+
If the user already chose a mode, honor it. If not, make the smallest safe choice and state it.
|
|
65
|
+
|
|
66
|
+
## Advanced features
|
|
67
|
+
|
|
68
|
+
- Shared lifecycle, notes contract, tech-debt rules, acceptance audit, finalization: see [references/lifecycle.md](references/lifecycle.md)
|
|
69
|
+
- Sequential execution specifics: see [references/sequential.md](references/sequential.md)
|
|
70
|
+
- Parallel execution specifics: see [references/parallel.md](references/parallel.md)
|
|
71
|
+
- Parallel plan parsing and wave construction: see [references/parallel-orchestration.md](references/parallel-orchestration.md)
|
|
72
|
+
- Parallel worker brief contract: see [references/parallel-worker-brief.md](references/parallel-worker-brief.md)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Implementation Notes
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
-
|
|
6
|
+
|
|
7
|
+
## Execution Mode
|
|
8
|
+
|
|
9
|
+
-
|
|
10
|
+
|
|
11
|
+
## Deviations From the Plan
|
|
12
|
+
|
|
13
|
+
-
|
|
14
|
+
|
|
15
|
+
## Surprises and Decisions
|
|
16
|
+
|
|
17
|
+
-
|
|
18
|
+
|
|
19
|
+
## Sanity Checks
|
|
20
|
+
|
|
21
|
+
| Check | Result | Notes |
|
|
22
|
+
|------|--------|-------|
|
|
23
|
+
| | | |
|
|
24
|
+
|
|
25
|
+
## Acceptance Criteria Status
|
|
26
|
+
|
|
27
|
+
| Criterion | Status | Notes |
|
|
28
|
+
|-----------|--------|-------|
|
|
29
|
+
| | | |
|
|
30
|
+
|
|
31
|
+
## Pre-existing Issues
|
|
32
|
+
|
|
33
|
+
-
|
|
34
|
+
|
|
35
|
+
## Out of Scope Observations
|
|
36
|
+
|
|
37
|
+
-
|
|
38
|
+
|
|
39
|
+
## Remaining Work
|
|
40
|
+
|
|
41
|
+
-
|
|
42
|
+
|
|
43
|
+
## Steering
|
|
44
|
+
|
|
45
|
+
| Date | Feedback | Changes |
|
|
46
|
+
|------|----------|---------|
|
|
47
|
+
| | | |
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Implement Spec Lifecycle
|
|
2
|
+
|
|
3
|
+
## Shared contract
|
|
4
|
+
|
|
5
|
+
`implement-spec` is the only public execution entrypoint.
|
|
6
|
+
|
|
7
|
+
It routes to one of two approaches:
|
|
8
|
+
|
|
9
|
+
- `sequential` — one thread, no workers
|
|
10
|
+
- `parallel` — wave-based execution with explicit worker orchestration
|
|
11
|
+
|
|
12
|
+
Do not recreate wrapper skills for these modes. Keep the routing here and load only the needed mode reference.
|
|
13
|
+
|
|
14
|
+
## 1. Require an existing reviewed spec folder
|
|
15
|
+
|
|
16
|
+
Execution must stay grounded in:
|
|
17
|
+
|
|
18
|
+
`apps/wiki/specs/<domain>/<spec>/`
|
|
19
|
+
|
|
20
|
+
Required files:
|
|
21
|
+
|
|
22
|
+
- `SPEC.md`
|
|
23
|
+
- `PLAN.md`
|
|
24
|
+
|
|
25
|
+
If `SPEC.md` is missing, stop and report the resolved path error.
|
|
26
|
+
|
|
27
|
+
If `PLAN.md` is missing, stop and use `create-plan`. Do not auto-generate plans from this skill.
|
|
28
|
+
|
|
29
|
+
## 2. Resolve the target folder
|
|
30
|
+
|
|
31
|
+
Accept either:
|
|
32
|
+
|
|
33
|
+
- a domain plus spec folder name
|
|
34
|
+
- a full spec folder path
|
|
35
|
+
- a direct `SPEC.md` or `PLAN.md` path
|
|
36
|
+
|
|
37
|
+
Normalize to the containing spec folder before doing any work.
|
|
38
|
+
|
|
39
|
+
## 3. Load the working set
|
|
40
|
+
|
|
41
|
+
Read, in this order:
|
|
42
|
+
|
|
43
|
+
1. `apps/wiki/AGENTS.md`
|
|
44
|
+
2. `apps/wiki/specs/<domain>/<spec>/SPEC.md`
|
|
45
|
+
3. `apps/wiki/specs/<domain>/<spec>/PLAN.md`
|
|
46
|
+
4. `apps/wiki/specs/<domain>/<spec>/IMPLEMENTATION-NOTES.md` if present
|
|
47
|
+
5. `docs/reference/tech-debt/<domain>/<spec>.md` if present
|
|
48
|
+
|
|
49
|
+
If package or framework behavior matters, inspect source with `opensrc --modify false` before guessing.
|
|
50
|
+
|
|
51
|
+
## 4. Prepare execution notes
|
|
52
|
+
|
|
53
|
+
Use [../assets/IMPLEMENTATION-NOTES-TEMPLATE.md](../assets/IMPLEMENTATION-NOTES-TEMPLATE.md).
|
|
54
|
+
|
|
55
|
+
- Create `IMPLEMENTATION-NOTES.md` from the template when missing.
|
|
56
|
+
- Append or refine when it already exists.
|
|
57
|
+
- Keep it current during the run, not only at the end.
|
|
58
|
+
|
|
59
|
+
## 5. Prepare the tech-debt ledger
|
|
60
|
+
|
|
61
|
+
Persistent implementation drift belongs in:
|
|
62
|
+
|
|
63
|
+
`docs/reference/tech-debt/<domain>/<spec>.md`
|
|
64
|
+
|
|
65
|
+
Use it only for durable drift that should inform later work on the same spec:
|
|
66
|
+
|
|
67
|
+
- scoped compromises
|
|
68
|
+
- unresolved gaps
|
|
69
|
+
- pre-existing debt discovered during execution
|
|
70
|
+
- cleanup intentionally deferred by the current spec
|
|
71
|
+
|
|
72
|
+
Do not create the file when nothing durable must survive the run.
|
|
73
|
+
|
|
74
|
+
## 6. Shared execution invariants
|
|
75
|
+
|
|
76
|
+
- Mode is manual. The chosen approach decides the execution path.
|
|
77
|
+
- Do not switch modes mid-run unless the user explicitly redirects.
|
|
78
|
+
- Treat every `tdd_target` as required RED-first behavior, never optional guidance.
|
|
79
|
+
- Treat every `review_mode` as required validation routing, never optional metadata.
|
|
80
|
+
- Keep an operator-visible execution board in the conversation so progress is obvious.
|
|
81
|
+
- Keep scope discipline. Out-of-scope findings go to `IMPLEMENTATION-NOTES.md`, not silent scope creep.
|
|
82
|
+
- If backlog sync is part of the run, keep epic and story bodies product-facing.
|
|
83
|
+
- Execution-time backlog sync may use comments, links, native status, and native relations.
|
|
84
|
+
- Never rewrite epic or story bodies with task ids, TDD targets, validation commands, or file lists.
|
|
85
|
+
|
|
86
|
+
## 7. Shared upkeep after each completed unit
|
|
87
|
+
|
|
88
|
+
After each completed task or wave:
|
|
89
|
+
|
|
90
|
+
- update `PLAN.md` status
|
|
91
|
+
- append a concise execution log in `PLAN.md`
|
|
92
|
+
- record touched files in `PLAN.md`
|
|
93
|
+
- update `IMPLEMENTATION-NOTES.md` with non-obvious decisions, surprises, or deviations
|
|
94
|
+
- update the spec-linked tech-debt file when durable drift appears
|
|
95
|
+
- if backlog sync is in scope, prefer native metadata changes or concise comments over body rewrites
|
|
96
|
+
|
|
97
|
+
## 8. Handle blockers honestly
|
|
98
|
+
|
|
99
|
+
If a task is blocked:
|
|
100
|
+
|
|
101
|
+
1. record it in `IMPLEMENTATION-NOTES.md`
|
|
102
|
+
2. update the spec-linked tech-debt file when the blocker is durable
|
|
103
|
+
3. skip only tasks truly blocked by it
|
|
104
|
+
4. finish all remaining reachable work
|
|
105
|
+
5. report blocked tasks clearly at the end
|
|
106
|
+
|
|
107
|
+
Do not fake completion.
|
|
108
|
+
|
|
109
|
+
## 9. Apply runtime-aware validation
|
|
110
|
+
|
|
111
|
+
Use the task `review_mode`:
|
|
112
|
+
|
|
113
|
+
- `cli`: tests, commands, type-checks, API calls, or non-visual checks
|
|
114
|
+
- `browser`: browser validation through `$agent-browser`
|
|
115
|
+
- `mixed`: both
|
|
116
|
+
|
|
117
|
+
If running inside a worktree and `portless` is available, prefer it for server-based validation to avoid port conflicts.
|
|
118
|
+
|
|
119
|
+
## 10. Verify acceptance criteria
|
|
120
|
+
|
|
121
|
+
Re-read `SPEC.md` acceptance criteria and mark each one:
|
|
122
|
+
|
|
123
|
+
- met
|
|
124
|
+
- unmet
|
|
125
|
+
- blocked
|
|
126
|
+
|
|
127
|
+
Record a reason for every unmet or blocked item in `IMPLEMENTATION-NOTES.md`.
|
|
128
|
+
|
|
129
|
+
## 11. Finalize the spec folder
|
|
130
|
+
|
|
131
|
+
Before reporting back:
|
|
132
|
+
|
|
133
|
+
- remove empty sections from `IMPLEMENTATION-NOTES.md`
|
|
134
|
+
- ensure **Execution mode** reflects the mode actually used
|
|
135
|
+
- ensure **Sanity checks** lists only commands actually run
|
|
136
|
+
- ensure **Remaining work** matches any unmet or blocked criteria
|
|
137
|
+
- set `SPEC.md` frontmatter `status: implemented`
|
|
138
|
+
- set `PLAN.md` `**Status:** Complete` when that line exists
|
|
139
|
+
|
|
140
|
+
## 12. Final report shape
|
|
141
|
+
|
|
142
|
+
Summarize:
|
|
143
|
+
|
|
144
|
+
- implementation status
|
|
145
|
+
- validation results
|
|
146
|
+
- key deviations or surprises
|
|
147
|
+
- acceptance-criteria status
|
|
148
|
+
- blocked tasks needing input
|
|
149
|
+
- whether the spec-linked tech-debt file was created or updated
|