@punks/cli 0.1.16 → 1.0.1
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 +46400 -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/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 +25 -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,61 @@
|
|
|
1
|
+
# Good and Bad Tests
|
|
2
|
+
|
|
3
|
+
## Good Tests
|
|
4
|
+
|
|
5
|
+
**Integration-style**: Test through real interfaces, not mocks of internal parts.
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
// GOOD: Tests observable behavior
|
|
9
|
+
test("user can checkout with valid cart", async () => {
|
|
10
|
+
const cart = createCart();
|
|
11
|
+
cart.add(product);
|
|
12
|
+
const result = await checkout(cart, paymentMethod);
|
|
13
|
+
expect(result.status).toBe("confirmed");
|
|
14
|
+
});
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Characteristics:
|
|
18
|
+
|
|
19
|
+
- Tests behavior users/callers care about
|
|
20
|
+
- Uses public API only
|
|
21
|
+
- Survives internal refactors
|
|
22
|
+
- Describes WHAT, not HOW
|
|
23
|
+
- One logical assertion per test
|
|
24
|
+
|
|
25
|
+
## Bad Tests
|
|
26
|
+
|
|
27
|
+
**Implementation-detail tests**: Coupled to internal structure.
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
// BAD: Tests implementation details
|
|
31
|
+
test("checkout calls paymentService.process", async () => {
|
|
32
|
+
const mockPayment = jest.mock(paymentService);
|
|
33
|
+
await checkout(cart, payment);
|
|
34
|
+
expect(mockPayment.process).toHaveBeenCalledWith(cart.total);
|
|
35
|
+
});
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Red flags:
|
|
39
|
+
|
|
40
|
+
- Mocking internal collaborators
|
|
41
|
+
- Testing private methods
|
|
42
|
+
- Asserting on call counts/order
|
|
43
|
+
- Test breaks when refactoring without behavior change
|
|
44
|
+
- Test name describes HOW not WHAT
|
|
45
|
+
- Verifying through external means instead of interface
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
// BAD: Bypasses interface to verify
|
|
49
|
+
test("createUser saves to database", async () => {
|
|
50
|
+
await createUser({ name: "Alice" });
|
|
51
|
+
const row = await db.query("SELECT * FROM users WHERE name = ?", ["Alice"]);
|
|
52
|
+
expect(row).toBeDefined();
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// GOOD: Verifies through interface
|
|
56
|
+
test("createUser makes user retrievable", async () => {
|
|
57
|
+
const user = await createUser({ name: "Alice" });
|
|
58
|
+
const retrieved = await getUser(user.id);
|
|
59
|
+
expect(retrieved.name).toBe("Alice");
|
|
60
|
+
});
|
|
61
|
+
```
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: requirements-grill
|
|
3
|
+
description: Runs rigorous requirements grilling, persists branch decisions, and optionally synthesizes high-level wiki knowledge. Use when the user wants a long design interview, product/architecture requirements discovery, branch-by-branch decision closure, compaction-safe grill logs/status updates, or wiki synthesis from grilled requirements.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Requirements Grill
|
|
7
|
+
|
|
8
|
+
Use this skill to turn uncertain product, architecture, or implementation ideas into pinned requirements that can feed backlog/user-story creation.
|
|
9
|
+
|
|
10
|
+
This skill has three scoped references:
|
|
11
|
+
|
|
12
|
+
- Live grilling behavior: see [references/grilling-flow.md](references/grilling-flow.md)
|
|
13
|
+
- Durable grill artifacts: see [references/artifact-output.md](references/artifact-output.md)
|
|
14
|
+
- Wiki synthesis from closed grill branches: see [references/wiki-output.md](references/wiki-output.md)
|
|
15
|
+
|
|
16
|
+
## Quick Routing
|
|
17
|
+
|
|
18
|
+
Use active grilling when the user is still iterating on requirements, terminology, tradeoffs, branch closure, or status percentages. During a serious grilling session, load both `grilling-flow` and `artifact-output`; the interview and durable artifacts move together.
|
|
19
|
+
|
|
20
|
+
Use wiki synthesis when the user asks to persist closed grill decisions into `apps/wiki`, extract high-level flows/concepts, or sync domain knowledge from grill artifacts.
|
|
21
|
+
|
|
22
|
+
Both workflows can happen in one long session, but keep the responsibilities distinct:
|
|
23
|
+
|
|
24
|
+
- `docs/<topic>-grill-log.md` and `docs/<topic>-grill-status.md` are the detailed requirements record
|
|
25
|
+
- `apps/wiki/domains/` is synthesized domain knowledge
|
|
26
|
+
- backlog/user-story creation is the next phase after the grill gate, outside this skill's scope
|
|
27
|
+
|
|
28
|
+
## Core Behavior
|
|
29
|
+
|
|
30
|
+
- Ask one question at a time by default.
|
|
31
|
+
- For every question, provide a recommended answer and the reason for it.
|
|
32
|
+
- Inspect code/docs first when the answer can be found locally.
|
|
33
|
+
- Challenge conflicting glossary, vague terms, and hidden tradeoffs immediately.
|
|
34
|
+
- Prefer conservative defaults once enough context exists.
|
|
35
|
+
- If the user authorizes auto-pinning defaults, close obvious remaining decisions without needless extra questions.
|
|
36
|
+
- Treat parked branches as preserved knowledge, not deleted scope.
|
|
37
|
+
|
|
38
|
+
## Handoff
|
|
39
|
+
|
|
40
|
+
At the end, report branch percentages, parked branches, remaining non-design validation work, and the recommended next planning direction.
|
|
41
|
+
|
|
42
|
+
If all active branches are `100%`, say the requirements grill is done and the likely next direction is backlog/user-story creation.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Artifact Output
|
|
2
|
+
|
|
3
|
+
Use this reference to maintain the durable grill artifacts.
|
|
4
|
+
|
|
5
|
+
This workflow is always paired with [grilling-flow.md](grilling-flow.md) during a serious grilling session.
|
|
6
|
+
|
|
7
|
+
## Durable Artifacts
|
|
8
|
+
|
|
9
|
+
At the start of a serious grilling session, create or reuse:
|
|
10
|
+
|
|
11
|
+
- `docs/<topic>-grill-log.md`
|
|
12
|
+
- `docs/<topic>-grill-status.md`
|
|
13
|
+
|
|
14
|
+
The log is the durable decision record.
|
|
15
|
+
The status file is the current branch dashboard.
|
|
16
|
+
|
|
17
|
+
## Grill Log Contract
|
|
18
|
+
|
|
19
|
+
The log is structured, not a raw transcript.
|
|
20
|
+
|
|
21
|
+
Record accepted decisions as:
|
|
22
|
+
|
|
23
|
+
```md
|
|
24
|
+
### Q<N>
|
|
25
|
+
|
|
26
|
+
Question:
|
|
27
|
+
<question asked>
|
|
28
|
+
|
|
29
|
+
Accepted answer:
|
|
30
|
+
- <locked answer>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Group related decisions under branch headings.
|
|
34
|
+
|
|
35
|
+
When the user changes an earlier decision, add a new entry that explicitly supersedes the old one.
|
|
36
|
+
|
|
37
|
+
## Status File Contract
|
|
38
|
+
|
|
39
|
+
Maintain a compact branch dashboard with:
|
|
40
|
+
|
|
41
|
+
- branch name
|
|
42
|
+
- completion percentage
|
|
43
|
+
- locked direction
|
|
44
|
+
- still-open items
|
|
45
|
+
- parked branches
|
|
46
|
+
|
|
47
|
+
Completion percentages are working signals:
|
|
48
|
+
|
|
49
|
+
- `0-50%`: branch discovered but unsettled
|
|
50
|
+
- `50-85%`: major direction set, important questions remain
|
|
51
|
+
- `85-99%`: mostly closed, only constants/schema/naming remain
|
|
52
|
+
- `100%`: design closed; remaining work is implementation/tuning
|
|
53
|
+
- `parked`: preserved for later, out of current scope
|
|
54
|
+
|
|
55
|
+
## Branch Closure
|
|
56
|
+
|
|
57
|
+
When a branch closes:
|
|
58
|
+
|
|
59
|
+
1. Update the grill log with final accepted decisions.
|
|
60
|
+
2. Update the status file percentage and open items.
|
|
61
|
+
3. If the branch changes durable domain/product knowledge, run the wiki-output workflow.
|
|
62
|
+
4. Say exactly what changed and which artifacts were updated.
|
|
63
|
+
|
|
64
|
+
## Final Handoff
|
|
65
|
+
|
|
66
|
+
At the end, report:
|
|
67
|
+
|
|
68
|
+
- branch percentages
|
|
69
|
+
- parked branches
|
|
70
|
+
- remaining non-design validation work
|
|
71
|
+
- recommended next planning direction
|
|
72
|
+
|
|
73
|
+
If all active branches are `100%`, say the requirements grill is done and the likely next direction is backlog/user-story creation.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Grilling Flow
|
|
2
|
+
|
|
3
|
+
Use this reference during live requirements iteration.
|
|
4
|
+
|
|
5
|
+
This workflow is always paired with [artifact-output.md](artifact-output.md) during a serious grilling session.
|
|
6
|
+
|
|
7
|
+
## Session Behavior
|
|
8
|
+
|
|
9
|
+
Interview the user relentlessly about every aspect of the plan until shared understanding exists.
|
|
10
|
+
|
|
11
|
+
Walk the design tree branch by branch until each branch is:
|
|
12
|
+
|
|
13
|
+
- closed
|
|
14
|
+
- parked
|
|
15
|
+
- explicitly deferred
|
|
16
|
+
|
|
17
|
+
## Questioning Rules
|
|
18
|
+
|
|
19
|
+
- Ask one question at a time by default.
|
|
20
|
+
- Always include a recommended answer.
|
|
21
|
+
- Explain why the recommendation is preferred.
|
|
22
|
+
- If multiple interpretations exist, force a precise choice.
|
|
23
|
+
- When the answer can be found in code/docs, inspect first instead of asking.
|
|
24
|
+
- When the user authorizes auto-pinning, close obvious defaults without needless extra questions.
|
|
25
|
+
|
|
26
|
+
## Pressure Tests
|
|
27
|
+
|
|
28
|
+
Challenge glossary:
|
|
29
|
+
|
|
30
|
+
- If a term conflicts with existing specs, docs, or code language, call it out.
|
|
31
|
+
- Propose the canonical term.
|
|
32
|
+
- Make the user choose.
|
|
33
|
+
|
|
34
|
+
Sharpen vague language:
|
|
35
|
+
|
|
36
|
+
- Identify overloaded words.
|
|
37
|
+
- Replace fuzzy language with explicit states, enum values, ownership boundaries, or lifecycle rules.
|
|
38
|
+
|
|
39
|
+
Discuss concrete scenarios:
|
|
40
|
+
|
|
41
|
+
- Use edge cases to expose unclear boundaries.
|
|
42
|
+
- Stress-test state transitions, ownership, persistence, and failure behavior.
|
|
43
|
+
|
|
44
|
+
Cross-check with code:
|
|
45
|
+
|
|
46
|
+
- Verify user claims against local code when possible.
|
|
47
|
+
- Surface contradictions instead of smoothing them over.
|
|
48
|
+
|
|
49
|
+
## Conservative Closure
|
|
50
|
+
|
|
51
|
+
When the user asks to reduce scope or stop widening the design:
|
|
52
|
+
|
|
53
|
+
- choose the smallest already-justified model
|
|
54
|
+
- avoid new tables, modes, enum values, services, or abstractions
|
|
55
|
+
- keep future branches parked instead of partially designing them
|
|
56
|
+
- prefer app-layer projections before DB views or materialized layers
|
|
57
|
+
- prefer ordinary text/enforced-in-code enums before DB-native enum churn
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Wiki Output From Grill Artifacts
|
|
2
|
+
|
|
3
|
+
Use this reference when closed grill branches should be reflected in `apps/wiki`.
|
|
4
|
+
|
|
5
|
+
## Inputs
|
|
6
|
+
|
|
7
|
+
Use the grill artifacts as source:
|
|
8
|
+
|
|
9
|
+
- `docs/<topic>-grill-status.md`
|
|
10
|
+
- `docs/<topic>-grill-log.md`
|
|
11
|
+
|
|
12
|
+
Read status first to understand:
|
|
13
|
+
|
|
14
|
+
- active and parked branches
|
|
15
|
+
- branch completion
|
|
16
|
+
- current locked direction
|
|
17
|
+
- remaining non-design validation work
|
|
18
|
+
|
|
19
|
+
Read log second to extract:
|
|
20
|
+
|
|
21
|
+
- accepted decisions
|
|
22
|
+
- superseded decisions
|
|
23
|
+
- branch closure notes
|
|
24
|
+
- exact canonical terms
|
|
25
|
+
|
|
26
|
+
## Ownership
|
|
27
|
+
|
|
28
|
+
`requirements-grill` owns wiki synthesis from grilled requirements.
|
|
29
|
+
|
|
30
|
+
`docs-maintenance` owns formal spec ingest and ordinary docs upkeep.
|
|
31
|
+
|
|
32
|
+
## What Belongs In Wiki
|
|
33
|
+
|
|
34
|
+
Write durable domain/product knowledge into wiki pages.
|
|
35
|
+
|
|
36
|
+
Good wiki targets:
|
|
37
|
+
|
|
38
|
+
- product scope
|
|
39
|
+
- user-visible modes and behaviors
|
|
40
|
+
- high-level features
|
|
41
|
+
- conversation model
|
|
42
|
+
- lifecycle concepts
|
|
43
|
+
- memory model
|
|
44
|
+
- data model boundaries
|
|
45
|
+
- multi-step user or system flows
|
|
46
|
+
- major decisions whose rationale should stand alone
|
|
47
|
+
|
|
48
|
+
Usually keep out of wiki:
|
|
49
|
+
|
|
50
|
+
- retry constants
|
|
51
|
+
- wire-frame field lists
|
|
52
|
+
- DDL naming polish
|
|
53
|
+
- exact indexes
|
|
54
|
+
- low-level timeout values
|
|
55
|
+
- model artifact ids unless they change product capability
|
|
56
|
+
|
|
57
|
+
## Page Selection
|
|
58
|
+
|
|
59
|
+
Create or update concept pages for stable entities, terms, and invariants.
|
|
60
|
+
|
|
61
|
+
Create or update flow pages for sequences with:
|
|
62
|
+
|
|
63
|
+
- trigger
|
|
64
|
+
- actors
|
|
65
|
+
- ordered steps
|
|
66
|
+
- decision points
|
|
67
|
+
- terminal outcome
|
|
68
|
+
|
|
69
|
+
Create or update decision pages only when:
|
|
70
|
+
|
|
71
|
+
- a major tradeoff was resolved
|
|
72
|
+
- future maintainers will likely ask why an alternative was rejected
|
|
73
|
+
- the rationale would clutter a concept page
|
|
74
|
+
|
|
75
|
+
## Boundary
|
|
76
|
+
|
|
77
|
+
Keep `docs/` as the detailed design record.
|
|
78
|
+
|
|
79
|
+
Use `apps/wiki/domains/` for synthesized domain knowledge.
|
|
80
|
+
|
|
81
|
+
Do not duplicate the full grill log in wiki pages.
|
|
82
|
+
Summarize stable meaning and link back to source docs when useful.
|
|
83
|
+
|
|
84
|
+
## Bookkeeping
|
|
85
|
+
|
|
86
|
+
After wiki changes:
|
|
87
|
+
|
|
88
|
+
- update the domain index page
|
|
89
|
+
- update root wiki index counts if pages were added
|
|
90
|
+
- append a concise entry to `apps/wiki/log.md`
|
|
91
|
+
- preserve existing frontmatter
|
|
92
|
+
- update `updated`
|
|
93
|
+
|
|
94
|
+
Do not mark grill docs as `ingested` unless they have frontmatter designed for ingest tracking.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Write Backlog Examples
|
|
2
|
+
|
|
3
|
+
## From discussion to backlog
|
|
4
|
+
|
|
5
|
+
Input:
|
|
6
|
+
|
|
7
|
+
> We need a workflow module for intake and review. Coordinators should capture submissions, reviewers should assess and route them, reassignment should preserve context, and archived records must remain visible for auditing.
|
|
8
|
+
|
|
9
|
+
Output shape:
|
|
10
|
+
|
|
11
|
+
- Module / milestone: `Intake and review`
|
|
12
|
+
- Epic: `Submission lifecycle management`
|
|
13
|
+
- Stories:
|
|
14
|
+
- Coordinator creates a new submission from external intake
|
|
15
|
+
- Reviewer updates notes and attached evidence
|
|
16
|
+
- Reviewer views the full submission timeline
|
|
17
|
+
- Lead reassigns ownership to another reviewer
|
|
18
|
+
- Lead manages unassigned submissions
|
|
19
|
+
- Lead imports historical submissions
|
|
20
|
+
- System marks submissions unassigned when a reviewer is deactivated
|
|
21
|
+
|
|
22
|
+
Native order:
|
|
23
|
+
|
|
24
|
+
- `Lead manages unassigned submissions` is blocked by:
|
|
25
|
+
- `Lead reassigns ownership to another reviewer`
|
|
26
|
+
- `Lead imports historical submissions`
|
|
27
|
+
- `System marks submissions unassigned when a reviewer is deactivated`
|
|
28
|
+
|
|
29
|
+
## From `requirements-grill` artifacts to backlog
|
|
30
|
+
|
|
31
|
+
Input artifacts:
|
|
32
|
+
|
|
33
|
+
- `docs/submission-lifecycle-grill-status.md`
|
|
34
|
+
- `docs/submission-lifecycle-grill-log.md`
|
|
35
|
+
|
|
36
|
+
Read status first:
|
|
37
|
+
|
|
38
|
+
- branch `ownership-transfer` = `100%`
|
|
39
|
+
- branch `unassigned-queue` = `100%`
|
|
40
|
+
- branch `historical-import` = `100%`
|
|
41
|
+
- branch `deactivation-handling` = `100%`
|
|
42
|
+
- recommended next direction = backlog/user-story creation
|
|
43
|
+
|
|
44
|
+
Read log second:
|
|
45
|
+
|
|
46
|
+
- accepted decisions define ownership visibility, unassigned handling, and import behavior
|
|
47
|
+
- superseded decisions are ignored in favor of the latest locked answer
|
|
48
|
+
|
|
49
|
+
Output shape:
|
|
50
|
+
|
|
51
|
+
- Module / milestone: `Intake and review`
|
|
52
|
+
- Epic: `Submission lifecycle management`
|
|
53
|
+
- Stories:
|
|
54
|
+
- Lead reassigns ownership to another reviewer
|
|
55
|
+
- Lead manages unassigned submissions
|
|
56
|
+
- Lead imports historical submissions
|
|
57
|
+
- System marks submissions unassigned when a reviewer is deactivated
|
|
58
|
+
|
|
59
|
+
## Story-shape reminder
|
|
60
|
+
|
|
61
|
+
Good story:
|
|
62
|
+
|
|
63
|
+
`As a team lead, I want to view and manage unassigned submissions so I can restore ownership quickly without losing context`
|
|
64
|
+
|
|
65
|
+
Bad story:
|
|
66
|
+
|
|
67
|
+
`Add queue table and reassignment mutation`
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
# Write Backlog Reference
|
|
2
|
+
|
|
3
|
+
## Purpose
|
|
4
|
+
|
|
5
|
+
`write-backlog` is the canonical backlog-authoring skill for this repo.
|
|
6
|
+
|
|
7
|
+
It turns a large requirements discussion into:
|
|
8
|
+
|
|
9
|
+
- modules
|
|
10
|
+
- epics
|
|
11
|
+
- stories
|
|
12
|
+
- native ordering relations
|
|
13
|
+
|
|
14
|
+
It does not write specs, plans, or execution handoffs.
|
|
15
|
+
|
|
16
|
+
Downstream contract:
|
|
17
|
+
|
|
18
|
+
- one epic maps to one future `SPEC.md`
|
|
19
|
+
- child stories remain the product-facing slices beneath that epic
|
|
20
|
+
- `PLAN.md` later decomposes execution without replacing the backlog model
|
|
21
|
+
|
|
22
|
+
## Supported inputs
|
|
23
|
+
|
|
24
|
+
`write-backlog` can work from:
|
|
25
|
+
|
|
26
|
+
- a raw requirements discussion
|
|
27
|
+
- an existing messy backlog
|
|
28
|
+
- `requirements-grill` artifacts from `/Users/stefan/Desktop/repos/wearedevpunks-multiplai/.agents/skills/requirements-grill`
|
|
29
|
+
|
|
30
|
+
When grill artifacts exist, treat them as the highest-signal structured source for backlog derivation.
|
|
31
|
+
|
|
32
|
+
## `requirements-grill` artifact contract
|
|
33
|
+
|
|
34
|
+
Expected inputs:
|
|
35
|
+
|
|
36
|
+
- `docs/<topic>-grill-status.md`
|
|
37
|
+
- `docs/<topic>-grill-log.md`
|
|
38
|
+
|
|
39
|
+
Read order:
|
|
40
|
+
|
|
41
|
+
1. status file first
|
|
42
|
+
2. log file second
|
|
43
|
+
|
|
44
|
+
Use the status file to extract:
|
|
45
|
+
|
|
46
|
+
- branch names
|
|
47
|
+
- completion percentages
|
|
48
|
+
- locked direction
|
|
49
|
+
- still-open items
|
|
50
|
+
- parked branches
|
|
51
|
+
|
|
52
|
+
Use the log file to extract:
|
|
53
|
+
|
|
54
|
+
- accepted decisions
|
|
55
|
+
- superseded decisions
|
|
56
|
+
- canonical terms
|
|
57
|
+
- branch closure notes
|
|
58
|
+
|
|
59
|
+
Backlog derivation rules from grill artifacts:
|
|
60
|
+
|
|
61
|
+
- derive backlog from locked direction and accepted decisions
|
|
62
|
+
- do not promote unresolved still-open items into committed story scope without marking them explicitly
|
|
63
|
+
- preserve parked branches as deferred scope, follow-up epic candidates, or backlog notes when relevant
|
|
64
|
+
- if two decisions conflict, the latest explicit superseding decision wins
|
|
65
|
+
|
|
66
|
+
Good handoff signal from `requirements-grill`:
|
|
67
|
+
|
|
68
|
+
- active branches are `100%`
|
|
69
|
+
- remaining work is non-design validation
|
|
70
|
+
- recommended next direction is backlog/user-story creation
|
|
71
|
+
|
|
72
|
+
If the grill is still materially open:
|
|
73
|
+
|
|
74
|
+
- keep backlog conservative
|
|
75
|
+
- reflect the unresolved branch as an open scope note instead of pretending closure
|
|
76
|
+
|
|
77
|
+
## Canonical model
|
|
78
|
+
|
|
79
|
+
Use this hierarchy:
|
|
80
|
+
|
|
81
|
+
- module
|
|
82
|
+
- epic
|
|
83
|
+
- story
|
|
84
|
+
|
|
85
|
+
Provider mapping:
|
|
86
|
+
|
|
87
|
+
- module -> milestone or provider-equivalent grouping
|
|
88
|
+
- epic -> parent issue/work item/capability record
|
|
89
|
+
- story -> child issue/sub-issue/work item
|
|
90
|
+
|
|
91
|
+
Rules:
|
|
92
|
+
|
|
93
|
+
- every story must be independently understandable
|
|
94
|
+
- every story must describe product behavior, not implementation chores
|
|
95
|
+
- one epic may contain multiple stories
|
|
96
|
+
- one epic maps to one future `SPEC.md`
|
|
97
|
+
- one story does not imply one future `SPEC.md`
|
|
98
|
+
|
|
99
|
+
## Body ownership
|
|
100
|
+
|
|
101
|
+
Backlog bodies stay product-facing.
|
|
102
|
+
|
|
103
|
+
Epic bodies may include:
|
|
104
|
+
|
|
105
|
+
- outcome
|
|
106
|
+
- scope
|
|
107
|
+
- cross-story constraints
|
|
108
|
+
- links
|
|
109
|
+
|
|
110
|
+
Story bodies may include:
|
|
111
|
+
|
|
112
|
+
- outcome
|
|
113
|
+
- acceptance signals
|
|
114
|
+
- non-goals
|
|
115
|
+
- links
|
|
116
|
+
|
|
117
|
+
Do not put these in epic or story bodies:
|
|
118
|
+
|
|
119
|
+
- plan task ids
|
|
120
|
+
- TDD targets
|
|
121
|
+
- file paths
|
|
122
|
+
- validation commands
|
|
123
|
+
- worker handoffs
|
|
124
|
+
- code-structure notes
|
|
125
|
+
|
|
126
|
+
## Ordering rules
|
|
127
|
+
|
|
128
|
+
Implementation order belongs in the backlog only through native dependency primitives when supported.
|
|
129
|
+
|
|
130
|
+
Preferred order signal:
|
|
131
|
+
|
|
132
|
+
- native `blockedBy` / `blocks`
|
|
133
|
+
|
|
134
|
+
Avoid:
|
|
135
|
+
|
|
136
|
+
- prose-only dependency paragraphs
|
|
137
|
+
- fake ordering labels when native blockers exist
|
|
138
|
+
- using plan tasks as backlog children
|
|
139
|
+
|
|
140
|
+
## Derivation workflow
|
|
141
|
+
|
|
142
|
+
### 1. Derive modules
|
|
143
|
+
|
|
144
|
+
Split the requirements discussion into durable capability groups that would still make sense if implementation order changed.
|
|
145
|
+
|
|
146
|
+
Good module:
|
|
147
|
+
|
|
148
|
+
- intake and review
|
|
149
|
+
- account lifecycle
|
|
150
|
+
- notifications
|
|
151
|
+
|
|
152
|
+
Bad module:
|
|
153
|
+
|
|
154
|
+
- backend foundation
|
|
155
|
+
- frontend polish
|
|
156
|
+
|
|
157
|
+
### 2. Derive epics
|
|
158
|
+
|
|
159
|
+
Within each module, create epics/capabilities that will later justify one coherent spec.
|
|
160
|
+
|
|
161
|
+
Good epic:
|
|
162
|
+
|
|
163
|
+
- submission lifecycle management
|
|
164
|
+
- account onboarding and activation
|
|
165
|
+
|
|
166
|
+
Bad epic:
|
|
167
|
+
|
|
168
|
+
- database schema
|
|
169
|
+
- API routes
|
|
170
|
+
|
|
171
|
+
### 3. Derive stories
|
|
172
|
+
|
|
173
|
+
Break each epic into stories only when the slice is product-facing and independently observable.
|
|
174
|
+
|
|
175
|
+
Good story:
|
|
176
|
+
|
|
177
|
+
- coordinator creates a new submission from external intake
|
|
178
|
+
- lead reassigns ownership to another reviewer
|
|
179
|
+
|
|
180
|
+
Bad story:
|
|
181
|
+
|
|
182
|
+
- add column and router
|
|
183
|
+
- create mutation and form hook
|
|
184
|
+
|
|
185
|
+
### 4. Add native order
|
|
186
|
+
|
|
187
|
+
Only add blockers when one story truly depends on another story outcome.
|
|
188
|
+
|
|
189
|
+
Use blockers for:
|
|
190
|
+
|
|
191
|
+
- foundational product slices
|
|
192
|
+
- gating flows
|
|
193
|
+
- prerequisite user-visible capability
|
|
194
|
+
|
|
195
|
+
Do not add blockers for:
|
|
196
|
+
|
|
197
|
+
- internal code layering preferences
|
|
198
|
+
- one engineer wanting to implement one file before another
|
|
199
|
+
|
|
200
|
+
## Using grill artifacts during derivation
|
|
201
|
+
|
|
202
|
+
When the source is a grill status/log pair:
|
|
203
|
+
|
|
204
|
+
- use branch names and locked direction to identify likely module boundaries
|
|
205
|
+
- use accepted decisions to define epic boundaries
|
|
206
|
+
- use branch closure notes and concrete accepted answers to derive stories
|
|
207
|
+
- use still-open items only as:
|
|
208
|
+
- explicit open questions for the backlog author
|
|
209
|
+
- deferred scope notes
|
|
210
|
+
- follow-up epic/story candidates when the source already frames them that way
|
|
211
|
+
|
|
212
|
+
Do not:
|
|
213
|
+
|
|
214
|
+
- turn every grill question into a story
|
|
215
|
+
- treat partially closed branches as committed epic scope by default
|
|
216
|
+
- ignore canonical terminology captured in the grill log
|
|
217
|
+
|
|
218
|
+
## Handoff to `create-spec`
|
|
219
|
+
|
|
220
|
+
When `create-spec` is given a backlog-backed epic:
|
|
221
|
+
|
|
222
|
+
- the epic is the spec anchor
|
|
223
|
+
- every child story is mandatory source material
|
|
224
|
+
- the resulting `SPEC.md` must cover all child stories under that epic
|
|
225
|
+
- the spec must preserve per-story requirements while unifying them into one coherent problem-space contract
|
|
226
|
+
|
|
227
|
+
## Provider policy
|
|
228
|
+
|
|
229
|
+
This skill documents raw provider create payloads only.
|
|
230
|
+
|
|
231
|
+
In scope:
|
|
232
|
+
|
|
233
|
+
- create issue/work item payload shapes
|
|
234
|
+
- required vs optional fields
|
|
235
|
+
- how module/epic/story intent appears at creation time
|
|
236
|
+
|
|
237
|
+
Out of scope:
|
|
238
|
+
|
|
239
|
+
- update payloads
|
|
240
|
+
- comment payloads
|
|
241
|
+
- completion-time execution sync
|
|
242
|
+
|
|
243
|
+
If a provider cannot express part of the canonical model in the create payload alone:
|
|
244
|
+
|
|
245
|
+
- document the limitation explicitly
|
|
246
|
+
- do not silently reshape the model
|
|
247
|
+
|
|
248
|
+
## Anti-patterns
|
|
249
|
+
|
|
250
|
+
- one backlog item per implementation task
|
|
251
|
+
- one `SPEC.md` per child story when the epic is the real capability boundary
|
|
252
|
+
- milestone descriptions that duplicate entire epic bodies
|
|
253
|
+
- story bodies rewritten into execution handoffs after planning
|