@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,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: backend-domain-structure
|
|
3
|
+
description: |
|
|
4
|
+
Organize backend code into domain-first layers with thin transport entrypoints,
|
|
5
|
+
platform composition, external integrations, and feature-owned business behavior.
|
|
6
|
+
Use when creating or refactoring backend services, API routes, repositories,
|
|
7
|
+
providers, test layout, or import boundaries across backend frameworks.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Backend Domain Structure
|
|
11
|
+
|
|
12
|
+
Use this skill to keep backend code domain-based instead of transport- or utility-bucket-based.
|
|
13
|
+
|
|
14
|
+
Read `references/layout.md` before structure decisions or large refactors.
|
|
15
|
+
|
|
16
|
+
## Quick Classifier
|
|
17
|
+
|
|
18
|
+
Place code by responsibility first.
|
|
19
|
+
|
|
20
|
+
- Put root runtime composition, request context, transport runners, and router assembly in `platform/`.
|
|
21
|
+
- Put external system adapters and provider mechanics in `integrations/`.
|
|
22
|
+
- Put business use cases, policies, repositories, models, and transport endpoints in `features/<domain>/`.
|
|
23
|
+
- Put code reused across backend package boundaries in shared libraries or packages.
|
|
24
|
+
|
|
25
|
+
## Boundary Rules
|
|
26
|
+
|
|
27
|
+
- Keep transport thin. Parse input, call feature behavior, map errors at the boundary.
|
|
28
|
+
- Keep product policy out of `platform/` and `integrations/`.
|
|
29
|
+
- Let features depend on integrations and shared libraries.
|
|
30
|
+
- Do not let integrations import features.
|
|
31
|
+
- Do not move app-specific business logic into shared libraries.
|
|
32
|
+
- Avoid root-level generic buckets like `services`, `utils`, `helpers`, or `lib` when code can belong to a domain.
|
|
33
|
+
|
|
34
|
+
## Actions, Services, Repositories
|
|
35
|
+
|
|
36
|
+
Default to explicit use-case actions.
|
|
37
|
+
|
|
38
|
+
- Use `actions/` for orchestration, authorization checks, policy, state transitions, and business flows.
|
|
39
|
+
- Use `repositories/` for persistence reads and writes.
|
|
40
|
+
- Use `services/` only for reusable mechanics or capability abstractions consumed by multiple actions.
|
|
41
|
+
- Use `models/` for domain data shapes, schemas, and branded identifiers when the stack supports them.
|
|
42
|
+
|
|
43
|
+
## Use This Skill
|
|
44
|
+
|
|
45
|
+
- Read `references/layout.md`.
|
|
46
|
+
- Identify the backend root from the current repo instead of assuming a package path.
|
|
47
|
+
- Classify each file by responsibility first.
|
|
48
|
+
- Group business behavior under feature domains.
|
|
49
|
+
- Keep dependencies flowing: `platform -> features -> integrations -> external systems`.
|
|
50
|
+
- Keep tests near the feature or module that owns the behavior.
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Backend Domain Structure"
|
|
3
|
+
short_description: "Domain-first backend structure"
|
|
4
|
+
default_prompt: "Use $backend-domain-structure to place backend code in the correct platform, integrations, features, or shared-library layer; pair it with framework-specific backend structure skills when present."
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# Backend Domain Structure Reference
|
|
2
|
+
|
|
3
|
+
## Goal
|
|
4
|
+
|
|
5
|
+
Organize backend code by responsibility and domain instead of by file type.
|
|
6
|
+
|
|
7
|
+
Prefer this shape inside the backend root:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
<backend-root>/src/
|
|
11
|
+
platform/
|
|
12
|
+
integrations/
|
|
13
|
+
features/
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The backend root may be an app folder, package folder, service folder, or workspace package. Derive it from the current repo.
|
|
17
|
+
|
|
18
|
+
## Layer Meanings
|
|
19
|
+
|
|
20
|
+
### `platform/`
|
|
21
|
+
|
|
22
|
+
Use `platform/` for cross-domain execution wiring.
|
|
23
|
+
|
|
24
|
+
Good fits:
|
|
25
|
+
|
|
26
|
+
- root app composition
|
|
27
|
+
- request-scoped context construction
|
|
28
|
+
- transport runners
|
|
29
|
+
- router assembly
|
|
30
|
+
- dependency graph assembly
|
|
31
|
+
- process/runtime adapters
|
|
32
|
+
|
|
33
|
+
Bad fits:
|
|
34
|
+
|
|
35
|
+
- business policy
|
|
36
|
+
- feature orchestration
|
|
37
|
+
- direct provider details that belong to an integration
|
|
38
|
+
- persistence queries that belong to repositories
|
|
39
|
+
|
|
40
|
+
### `integrations/`
|
|
41
|
+
|
|
42
|
+
Use `integrations/` for external systems and shared provider mechanics.
|
|
43
|
+
|
|
44
|
+
Good fits:
|
|
45
|
+
|
|
46
|
+
- auth provider client
|
|
47
|
+
- database adapter helpers
|
|
48
|
+
- email, queues, storage, billing, search, analytics, or third-party APIs
|
|
49
|
+
- SDK wrappers
|
|
50
|
+
- provider-specific error mapping
|
|
51
|
+
|
|
52
|
+
Do not put product policy in `integrations/`. An integration says how to talk to a system; a feature decides why and when.
|
|
53
|
+
|
|
54
|
+
### `features/<domain>/`
|
|
55
|
+
|
|
56
|
+
Use features for business behavior.
|
|
57
|
+
|
|
58
|
+
Common local folders:
|
|
59
|
+
|
|
60
|
+
- `actions/`
|
|
61
|
+
- `models/`
|
|
62
|
+
- `repositories/`
|
|
63
|
+
- `services/`
|
|
64
|
+
- `tests/`
|
|
65
|
+
- `errors.ts`
|
|
66
|
+
- `layer.ts`, `container.ts`, `module.ts`, or equivalent composition file
|
|
67
|
+
- `router.ts`, `controller.ts`, or equivalent transport adapter when the feature exposes endpoints
|
|
68
|
+
|
|
69
|
+
Feature domains own use cases, policy, persistence contracts, and public behavior.
|
|
70
|
+
|
|
71
|
+
## Actions vs Services
|
|
72
|
+
|
|
73
|
+
Default to actions.
|
|
74
|
+
|
|
75
|
+
Use `actions/` for:
|
|
76
|
+
|
|
77
|
+
- orchestration
|
|
78
|
+
- auth checks
|
|
79
|
+
- policy
|
|
80
|
+
- state transitions
|
|
81
|
+
- use cases
|
|
82
|
+
- multi-step workflows
|
|
83
|
+
|
|
84
|
+
Use `services/` only for reusable mechanics consumed by multiple actions, such as:
|
|
85
|
+
|
|
86
|
+
- provider wrappers already scoped to the feature
|
|
87
|
+
- shared low-level operations
|
|
88
|
+
- capability-style abstractions with stable reuse
|
|
89
|
+
|
|
90
|
+
Use `repositories/` for:
|
|
91
|
+
|
|
92
|
+
- persistence reads
|
|
93
|
+
- persistence writes
|
|
94
|
+
- query composition
|
|
95
|
+
- persistence model mapping
|
|
96
|
+
|
|
97
|
+
Quick rule:
|
|
98
|
+
|
|
99
|
+
- "what this flow means" -> `actions/`
|
|
100
|
+
- "how this reusable mechanic works" -> `services/`
|
|
101
|
+
- "how data is persisted/read" -> `repositories/`
|
|
102
|
+
|
|
103
|
+
Avoid broad god-services that collect unrelated use cases.
|
|
104
|
+
|
|
105
|
+
## Transport Boundary
|
|
106
|
+
|
|
107
|
+
Keep transport thin.
|
|
108
|
+
|
|
109
|
+
- parse and validate input
|
|
110
|
+
- resolve request context
|
|
111
|
+
- call feature actions or query entrypoints
|
|
112
|
+
- map domain failures to transport errors
|
|
113
|
+
- return transport-shaped output
|
|
114
|
+
|
|
115
|
+
Business logic, external side effects, and DB queries should not live directly in routers, controllers, or handlers.
|
|
116
|
+
|
|
117
|
+
## Dependency Direction
|
|
118
|
+
|
|
119
|
+
Prefer this direction:
|
|
120
|
+
|
|
121
|
+
- `platform -> features -> integrations -> external systems`
|
|
122
|
+
- `features -> shared libraries`
|
|
123
|
+
- `integrations -> shared libraries`
|
|
124
|
+
|
|
125
|
+
Avoid:
|
|
126
|
+
|
|
127
|
+
- `integrations -> features`
|
|
128
|
+
- shared libraries importing app-local code
|
|
129
|
+
- transport files importing many low-level helpers instead of one feature entrypoint
|
|
130
|
+
- feature domains reaching into another feature's internals
|
|
131
|
+
|
|
132
|
+
Features may depend on other features only when the domain relationship is explicit, stable, and exposed through a public feature entrypoint.
|
|
133
|
+
|
|
134
|
+
## Testing Layout
|
|
135
|
+
|
|
136
|
+
Keep tests near the owning feature or module.
|
|
137
|
+
|
|
138
|
+
Prefer:
|
|
139
|
+
|
|
140
|
+
```text
|
|
141
|
+
<backend-root>/src/features/<domain>/
|
|
142
|
+
tests/
|
|
143
|
+
support/
|
|
144
|
+
unit/
|
|
145
|
+
integration/
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Testing split:
|
|
149
|
+
|
|
150
|
+
- `tests/support`
|
|
151
|
+
fakes, builders, fixtures, and test-specific dependency wiring
|
|
152
|
+
- `tests/unit`
|
|
153
|
+
action, guard, policy, and repository behavior with controlled dependencies
|
|
154
|
+
- `tests/integration`
|
|
155
|
+
public behavior through live infrastructure or the transport/action boundary
|
|
156
|
+
|
|
157
|
+
Avoid a distant package-root `tests/` folder unless the project already has a strong convention for it.
|
|
158
|
+
|
|
159
|
+
## Review Checklist
|
|
160
|
+
|
|
161
|
+
- Is transport thin?
|
|
162
|
+
- Did business policy land in a feature?
|
|
163
|
+
- Did external provider code stay in an integration?
|
|
164
|
+
- Are repositories the only persistence owners?
|
|
165
|
+
- Are services reusable mechanics rather than use-case buckets?
|
|
166
|
+
- Are tests colocated with the owning domain?
|
|
167
|
+
- Are imports flowing one way without layer inversions?
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: backend-recoverable-actions
|
|
3
|
+
description: |
|
|
4
|
+
Design recoverable backend action flows for multi-step mutations with explicit
|
|
5
|
+
transaction, retry, rollback, compensation, and failure-path testing strategy.
|
|
6
|
+
Use when backend work chains dependent writes, DB changes plus external side
|
|
7
|
+
effects, durable repair flows, or review of partial-failure risk.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Backend Recoverable Actions
|
|
11
|
+
|
|
12
|
+
Use this skill for chained multi-step backend mutations. Every mutating flow must be atomic or intentionally repairable.
|
|
13
|
+
|
|
14
|
+
Do not use this for simple single-step reads or writes.
|
|
15
|
+
|
|
16
|
+
Read `references/strategy-matrix.md` and `references/test-matrix.md` before implementation.
|
|
17
|
+
|
|
18
|
+
## Workflow
|
|
19
|
+
|
|
20
|
+
1. Enumerate the action steps in order.
|
|
21
|
+
2. Classify each step:
|
|
22
|
+
- `preflight`
|
|
23
|
+
- `transactional-local`
|
|
24
|
+
- `retryable transient integration`
|
|
25
|
+
- `compensation-required external`
|
|
26
|
+
- `post-commit follow-up`
|
|
27
|
+
3. Choose the failure strategy before writing code.
|
|
28
|
+
4. Keep commit-path orchestration sequential unless concurrency semantics are explicit.
|
|
29
|
+
5. Add failure-path tests before considering the action complete.
|
|
30
|
+
|
|
31
|
+
## Hard Rules
|
|
32
|
+
|
|
33
|
+
- Local multi-write groups need one explicit transaction boundary when the storage layer supports transactions.
|
|
34
|
+
- Cross-system flows cannot pretend local rollback will undo auth providers, email, queues, billing, or other external writes.
|
|
35
|
+
- Retries must be explicit and step-local.
|
|
36
|
+
- Never retry an entire non-idempotent mutation pipeline by default.
|
|
37
|
+
- External writes need compensation, durable repair state, or a documented best-effort policy.
|
|
38
|
+
- Cleanup/finalization is not the same as business rollback.
|
|
39
|
+
- Parallel validation is allowed before commit; parallel mutation needs explicit failure semantics.
|
|
40
|
+
|
|
41
|
+
## Output Checklist
|
|
42
|
+
|
|
43
|
+
- each step boundary has an explicit strategy
|
|
44
|
+
- local multi-write groups have one transaction boundary
|
|
45
|
+
- cross-system steps have a compensation or durable repair story
|
|
46
|
+
- retries are narrow, explicit, and only for transient idempotent steps
|
|
47
|
+
- expected recoverable failures stay typed or structured
|
|
48
|
+
- failure-path tests cover the chosen recovery model
|
|
49
|
+
- no silent partial-write risk remains undocumented
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Backend Recoverable Actions"
|
|
3
|
+
short_description: "Recoverable backend mutation flows"
|
|
4
|
+
default_prompt: "Use $backend-recoverable-actions for backend action flows that chain multiple dependent operations and need explicit transaction, retry, rollback, compensation, or failure-path testing strategy; pair it with framework-specific recoverability skills when present."
|
package/dist/skills/agnostic/backend/backend-recoverable-actions/references/strategy-matrix.md
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Strategy Matrix
|
|
2
|
+
|
|
3
|
+
Use this table to choose the recovery model before writing code.
|
|
4
|
+
|
|
5
|
+
| Flow shape | Default strategy | Notes |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| Local read + local write + local write | One transaction around the local mutation group | Keep commit-path sequencing explicit. |
|
|
8
|
+
| Local write + local write inside nested helpers | One outer transaction boundary | Helper internals should participate in the outer transaction when the stack supports it. |
|
|
9
|
+
| Local write + auth provider mutation | Compensation or durable repair path | Local rollback does not undo external auth state. |
|
|
10
|
+
| Local write + auth provider + email | Transaction only for local writes, explicit compensation or repair for auth, explicit delivery policy for email | Do not imply a single rollback boundary across systems. |
|
|
11
|
+
| Local write + email / queue / third-party side effect | Explicit commit boundary plus post-commit recovery story | Decide whether the side effect is best-effort, compensatable, or repairable. |
|
|
12
|
+
| Preflight validation over many items | Accumulate validation failures before mutation | Use before the commit path, not during it. |
|
|
13
|
+
| Parallel validation or read-only fan-out | Explicit concurrency plus explicit error aggregation semantics | Be clear about fail-fast vs collect-all behavior. |
|
|
14
|
+
| Commit path orchestration | Sequential by default | Introduce concurrency only when failure semantics stay safe and obvious. |
|
|
15
|
+
|
|
16
|
+
## Classification Guide
|
|
17
|
+
|
|
18
|
+
- `preflight`
|
|
19
|
+
Validation, lookups, and checks that can fail before any durable mutation starts.
|
|
20
|
+
- `transactional-local`
|
|
21
|
+
Local writes that must commit or roll back together.
|
|
22
|
+
- `retryable transient integration`
|
|
23
|
+
External call with explicit transient failure handling and safe retry semantics.
|
|
24
|
+
- `compensation-required external`
|
|
25
|
+
External write that cannot be covered by local rollback.
|
|
26
|
+
- `post-commit follow-up`
|
|
27
|
+
Side effect that happens after the main durable state transition and therefore needs an explicit repair story if it fails.
|
|
28
|
+
|
|
29
|
+
## Approval Heuristics
|
|
30
|
+
|
|
31
|
+
- If all durable mutations are in the same transaction-capable store, use one transaction.
|
|
32
|
+
- If any step mutates external state, write down the compensation or repair story before implementation.
|
|
33
|
+
- If a retry changes business semantics or risks duplicates, do not retry the whole pipeline.
|
|
34
|
+
- If a collection helper hides which steps are concurrent or fail-fast, prefer explicit sequential composition in the commit path.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Test Matrix
|
|
2
|
+
|
|
3
|
+
Every multi-step mutating action needs failure-path coverage, not only happy-path coverage.
|
|
4
|
+
|
|
5
|
+
## Required Scenarios
|
|
6
|
+
|
|
7
|
+
- later local write fails and earlier local writes are rolled back
|
|
8
|
+
- nested helper usage still preserves the outer transaction boundary
|
|
9
|
+
- external step succeeds and a later local step fails, triggering compensation or leaving a deliberate repairable state
|
|
10
|
+
- transient retryable integration step retries only that step
|
|
11
|
+
- non-retryable integration failure surfaces once as a typed or structured error
|
|
12
|
+
- preflight accumulation returns the intended set of validation failures
|
|
13
|
+
- intentionally parallel validation or read fan-out uses the expected error semantics
|
|
14
|
+
- simple one-step actions are not over-engineered with unnecessary orchestration machinery
|
|
15
|
+
|
|
16
|
+
## Unit-Level Expectations
|
|
17
|
+
|
|
18
|
+
- fake leaf services and repositories should make each failure point injectable
|
|
19
|
+
- tests should assert which step ran and which step did not
|
|
20
|
+
- tests should prove the chosen retry, compensation, or transaction story, not just the final error message
|
|
21
|
+
|
|
22
|
+
## Integration-Level Expectations
|
|
23
|
+
|
|
24
|
+
- verify rollback behavior with live infrastructure when the flow relies on transactions
|
|
25
|
+
- verify public action or transport behavior exposes expected failures correctly
|
|
26
|
+
- verify recoverable degraded states are observable when compensation is impossible
|
|
27
|
+
|
|
28
|
+
## Review Checklist
|
|
29
|
+
|
|
30
|
+
- where is the transaction boundary
|
|
31
|
+
- what external writes escape the local transaction boundary
|
|
32
|
+
- what is the retry scope
|
|
33
|
+
- what is the compensation or repair path
|
|
34
|
+
- which tests prove the story
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs-maintenance
|
|
3
|
+
description: Ingest a spec folder into the wiki domain layer by extracting and writing flow pages first, then concept pages, then syncing ingest metadata. Secondary: update docs/ when code changes alter architecture, setup, contracts, or operator workflow. Use when a spec is ready to be captured as domain knowledge after review or implementation, or when a code task changes non-obvious behavior that docs/ should reflect.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Docs Maintenance
|
|
7
|
+
|
|
8
|
+
## Contract
|
|
9
|
+
|
|
10
|
+
- **Role:** higher-order ingest and repo-docs orchestrator
|
|
11
|
+
- **Entrypoint type:** public entrypoint
|
|
12
|
+
- **Upstream:** reviewed or implemented spec folder, or code changes that may require `docs/` updates
|
|
13
|
+
- **Delegates to:** internal flow-writing phase, then internal concept-writing phase
|
|
14
|
+
- **Downstream:** synced wiki indexes, ingest metadata, wiki log, and any required `docs/` updates
|
|
15
|
+
- **Entry conditions:** resolved spec folder for ingest work, or a concrete docs-affecting code change
|
|
16
|
+
- **Stop conditions:** ingest bookkeeping complete, required docs updates complete, failures reported honestly
|
|
17
|
+
|
|
18
|
+
## Overview
|
|
19
|
+
|
|
20
|
+
**Primary purpose:** synthesize `<wiki-root>/specs/<domain>/<spec>/SPEC.md` (and optionally `IMPLEMENTATION-NOTES.md`) into the wiki domain knowledge layer. Write flow pages first, then concept pages, then sync ingest bookkeeping.
|
|
21
|
+
|
|
22
|
+
**Secondary purpose:** keep `docs/` accurate when code changes alter architecture, setup, contracts, decisions, or operator-facing behavior.
|
|
23
|
+
|
|
24
|
+
Read `<wiki-root>/AGENTS.md` before touching any wiki content.
|
|
25
|
+
|
|
26
|
+
`<wiki-root>` is repo-shape dependent:
|
|
27
|
+
- monorepo: `apps/wiki`
|
|
28
|
+
- single-repo: `wiki`
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Primary: Wiki Ingest Orchestration
|
|
33
|
+
|
|
34
|
+
### Pipeline
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
docs-maintenance (orchestrator)
|
|
38
|
+
└─ 1. flow-writing phase — writes flows/, updates domain index
|
|
39
|
+
└─ 2. concept-writing phase — reads flows/ for cross-linking, writes concepts/, updates domain index
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Why this order is required:** concept writing reads existing flow pages to cross-link concepts. Flow pages must exist before concept pages are written.
|
|
43
|
+
|
|
44
|
+
### Inputs
|
|
45
|
+
|
|
46
|
+
Accept any of:
|
|
47
|
+
- A spec folder path: `<wiki-root>/specs/<domain>/<spec>/`
|
|
48
|
+
- A domain name + spec name
|
|
49
|
+
- An explicit `SPEC.md` path
|
|
50
|
+
|
|
51
|
+
Resolve all inputs to a full spec folder path before continuing. If the target is still ambiguous, ask only for the missing folder.
|
|
52
|
+
|
|
53
|
+
### Step 1: Guard
|
|
54
|
+
|
|
55
|
+
Check `SPEC.md` frontmatter for `ingested: true`. If set, exit with a clear no-op message.
|
|
56
|
+
|
|
57
|
+
Verify the spec has `domain:` in frontmatter. Error if absent.
|
|
58
|
+
|
|
59
|
+
### Step 2: Read the source
|
|
60
|
+
|
|
61
|
+
Read in order:
|
|
62
|
+
1. `SPEC.md` — mandatory. If missing, stop and report.
|
|
63
|
+
2. `IMPLEMENTATION-NOTES.md` — optional. If present, flows and concepts become `status: implemented`. If absent, status is `proposed`.
|
|
64
|
+
- Check its frontmatter. If it lacks frontmatter (no YAML block), add it now before continuing:
|
|
65
|
+
```yaml
|
|
66
|
+
---
|
|
67
|
+
domain: <domain from SPEC.md>
|
|
68
|
+
type: implementation-notes
|
|
69
|
+
spec: <spec id from SPEC.md>
|
|
70
|
+
links:
|
|
71
|
+
- "[[specs/<domain>/<spec>/SPEC]]"
|
|
72
|
+
ingested: false
|
|
73
|
+
last_ingested: null
|
|
74
|
+
created: <today>
|
|
75
|
+
updated: <today>
|
|
76
|
+
---
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Verify `<wiki-root>/domains/<domain>/` exists with a `<domain>.md` index file. If the domain is missing, stop and scaffold the wiki/domain structure first.
|
|
80
|
+
|
|
81
|
+
### Step 3: Extract flows
|
|
82
|
+
|
|
83
|
+
A flow exists when the spec describes a **sequence of user or system actions with a defined start, steps, and end outcome**.
|
|
84
|
+
|
|
85
|
+
Look for flows in:
|
|
86
|
+
- Multi-step acceptance criteria (e.g. "On save, the system runs duplicate detection → blocks if exact match → redirects operator on success")
|
|
87
|
+
- Explicit user journeys or process descriptions in the Context section
|
|
88
|
+
- "When X, then Y" conditional chains across multiple acceptance criteria
|
|
89
|
+
- Any section titled Flow, Process, Journey, or similar
|
|
90
|
+
|
|
91
|
+
For each flow found:
|
|
92
|
+
- Assign a descriptive `flow_name` (e.g., "Create Patient", "Document Upload", "Duplicate Check")
|
|
93
|
+
- Extract `flow_content`: triggering event, actors involved, ordered steps with decision points, terminal outcome
|
|
94
|
+
- When `IMPLEMENTATION-NOTES.md` is present: note deviations, surprises, or blocked steps inline
|
|
95
|
+
|
|
96
|
+
If no multi-step sequence is discernible (e.g., a purely data-model spec), record the absence and skip flow delegation.
|
|
97
|
+
|
|
98
|
+
### Step 4: Write flow pages
|
|
99
|
+
|
|
100
|
+
Read [references/flow-pages.md](references/flow-pages.md) and apply that contract to every extracted flow.
|
|
101
|
+
|
|
102
|
+
Wait for all flow pages to complete before proceeding.
|
|
103
|
+
|
|
104
|
+
If any flow write fails, stop immediately. Do not proceed to concept writing. Report the failure so the run can be resumed cleanly.
|
|
105
|
+
|
|
106
|
+
### Step 5: Extract concepts
|
|
107
|
+
|
|
108
|
+
A concept exists when the spec **names a domain entity or term with defined attributes, invariants, or bounded scope**.
|
|
109
|
+
|
|
110
|
+
Look for concepts in:
|
|
111
|
+
- Fields listed in acceptance criteria (e.g., `first_name`, `email`, `acquisition_channel`, `nin`)
|
|
112
|
+
- Explicit data model or entity sections
|
|
113
|
+
- Nouns that recur across multiple acceptance criteria with their own distinct attributes or rules
|
|
114
|
+
- Enum sets representing a bounded domain state (e.g., `acquisition_channel` values)
|
|
115
|
+
- Entities referenced via `[[wikilinks]]` to other specs or domain pages
|
|
116
|
+
|
|
117
|
+
**Grouping rule:** collect related fields under one owning entity rather than creating a concept per field. All patient registry fields → one "Patient" concept. All acquisition channel variants → one "Acquisition Channel" concept.
|
|
118
|
+
|
|
119
|
+
If no distinct domain entity is identifiable, record the absence and skip concept delegation.
|
|
120
|
+
|
|
121
|
+
### Step 6: Write concept pages
|
|
122
|
+
|
|
123
|
+
Read [references/concept-pages.md](references/concept-pages.md) and apply that contract to every extracted concept.
|
|
124
|
+
|
|
125
|
+
Wait for all concept pages to complete.
|
|
126
|
+
|
|
127
|
+
### Step 7: Mark sources as ingested
|
|
128
|
+
|
|
129
|
+
Update `SPEC.md` frontmatter:
|
|
130
|
+
```yaml
|
|
131
|
+
ingested: true
|
|
132
|
+
last_ingested: YYYY-MM-DD
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
If `IMPLEMENTATION-NOTES.md` is present, update its frontmatter:
|
|
136
|
+
```yaml
|
|
137
|
+
ingested: true
|
|
138
|
+
last_ingested: YYYY-MM-DD
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Also populate its `links` array with every flow and concept page written in Steps 4 and 6 (in addition to the SPEC link that was set in Step 2). This is the only moment where IMPLEMENTATION-NOTES links are updated — do not leave them pointing only at the SPEC.
|
|
142
|
+
|
|
143
|
+
### Step 8: Log entry
|
|
144
|
+
|
|
145
|
+
Append to `<wiki-root>/log.md` (cap at 50 entries; drop oldest when over):
|
|
146
|
+
```md
|
|
147
|
+
## [YYYY-MM-DD] ingest | <spec title>
|
|
148
|
+
- Source: [[specs/<domain>/<spec>/SPEC]]
|
|
149
|
+
- Flows written: <count>
|
|
150
|
+
- Concepts written: <count>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Step 9: Update wiki index
|
|
154
|
+
|
|
155
|
+
If new pages were created, update the Concepts and Flows counts in the relevant Domains table row in `<wiki-root>/index.md`.
|
|
156
|
+
|
|
157
|
+
### Resumability
|
|
158
|
+
|
|
159
|
+
Output pages are the checkpoints. On re-invocation of the same source:
|
|
160
|
+
|
|
161
|
+
- Flow pages with `ingested: true` → skip Step 4 for those flows
|
|
162
|
+
- Any expected flow page missing → re-run Step 4 for it before Step 6
|
|
163
|
+
- Concept pages with `ingested: true` → skip Step 6 for those concepts
|
|
164
|
+
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
## Secondary: docs/ Maintenance
|
|
168
|
+
|
|
169
|
+
Update `docs/` when a code task changes **architecture, setup, contracts, decisions, or non-obvious operator-facing behavior**. Do not let docs/ work displace or delay wiki ingest.
|
|
170
|
+
|
|
171
|
+
1. Read `docs/README.md` and the nearest affected section README before editing.
|
|
172
|
+
2. Prefer editing an existing leaf doc over creating a new one.
|
|
173
|
+
3. When a doc is added, removed, or renamed: update `docs/README.md` and the nearest section README in the same task.
|
|
174
|
+
4. Record repo-wide behavior changes in `docs/architecture/decisions/`.
|
|
175
|
+
|
|
176
|
+
**Route by owned behavior:**
|
|
177
|
+
- Backend/runtime surface → `docs/reference/domains/backend-effect-sql.md` or `docs/runbooks/`
|
|
178
|
+
- Auth/user-management → `docs/reference/domains/user-management.md`
|
|
179
|
+
- Frontend/app structure → `docs/reference/domains/frontend-application-structure.md`
|
|
180
|
+
- AI workflow/agent infrastructure → `docs/runbooks/subagent-templates.md` or `docs/runbooks/claude-code-hooks.md`
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Never Do
|
|
185
|
+
|
|
186
|
+
- Ingest a spec with `ingested: true` — exit early instead
|
|
187
|
+
- Ingest an `IMPLEMENTATION-NOTES.md` with `ingested: true` — treat it as already reflected in domain pages
|
|
188
|
+
- Proceed to concept writing when a flow write has failed
|
|
189
|
+
- Create `docs/prd`, `docs/dev`, roadmap, sprint, or backlog-mirror folders
|
|
190
|
+
- Document speculative or future-state features as current truth
|
|
191
|
+
- Put agent task instructions inside human-facing docs pages
|
|
192
|
+
- Leave docs orphaned from `docs/README.md` after adding or renaming them
|
|
193
|
+
- Duplicate content between `<wiki-root>/domains/` (the "what") and `docs/reference/domains/` (the "how")
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Docs Maintenance"
|
|
3
|
+
short_description: "Wiki ingest plus repo docs maintenance"
|
|
4
|
+
default_prompt: "Use $docs-maintenance to own the wiki ingest pipeline, then keep docs/ human-facing and implementation-grounded when code changes affect durable knowledge."
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Concept Pages
|
|
2
|
+
|
|
3
|
+
Use this reference during Step 6 of `docs-maintenance`.
|
|
4
|
+
|
|
5
|
+
## Input expansion
|
|
6
|
+
|
|
7
|
+
For each extracted concept:
|
|
8
|
+
|
|
9
|
+
1. Read existing flow pages under `<wiki-root>/domains/<domain>/flows/` for cross-linking.
|
|
10
|
+
2. Scan `<wiki-root>/raw/` recursively and collect files where frontmatter `ingested: false` or `ingested` is absent.
|
|
11
|
+
3. Use relevant raw content only as supplementary material. Do not mark raw files as ingested here.
|
|
12
|
+
|
|
13
|
+
## Output contract
|
|
14
|
+
|
|
15
|
+
4. Synthesize concept content in this precedence order:
|
|
16
|
+
- `IMPLEMENTATION-NOTES.md` deviations, surprises, and judgment calls
|
|
17
|
+
- `SPEC.md` acceptance criteria, data model, and technical notes
|
|
18
|
+
- relevant sections from flow pages
|
|
19
|
+
- relevant raw file content
|
|
20
|
+
5. Determine status:
|
|
21
|
+
- `proposed` when only `SPEC.md` is present
|
|
22
|
+
- `implemented` when `IMPLEMENTATION-NOTES.md` is present
|
|
23
|
+
6. Derive the output path:
|
|
24
|
+
- slugify the concept name to kebab-case
|
|
25
|
+
- write to `<wiki-root>/domains/<domain>/concepts/<concept-name>.md`
|
|
26
|
+
7. Write or merge the concept page:
|
|
27
|
+
- preserve established facts
|
|
28
|
+
- append new information under `## [Source: <origin>]`
|
|
29
|
+
- flag contradictions inline: `> [!warning] CONTRADICTS [[source]]`
|
|
30
|
+
8. Every concept page must include:
|
|
31
|
+
- frontmatter:
|
|
32
|
+
```yaml
|
|
33
|
+
---
|
|
34
|
+
domain: <domain>
|
|
35
|
+
type: concept
|
|
36
|
+
status: proposed | implemented
|
|
37
|
+
ingested: true
|
|
38
|
+
last_ingested: YYYY-MM-DD
|
|
39
|
+
links: []
|
|
40
|
+
created: YYYY-MM-DD
|
|
41
|
+
updated: YYYY-MM-DD
|
|
42
|
+
---
|
|
43
|
+
```
|
|
44
|
+
- `Definition`
|
|
45
|
+
- `Attributes` table
|
|
46
|
+
- `Related flows`
|
|
47
|
+
- `## [Source: <origin>]`
|
|
48
|
+
9. Update `<wiki-root>/domains/<domain>/<domain>.md` to link the concept page if not already present
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# Flow Pages
|
|
2
|
+
|
|
3
|
+
Use this reference during Step 4 of `docs-maintenance`.
|
|
4
|
+
|
|
5
|
+
## Output contract
|
|
6
|
+
|
|
7
|
+
For each extracted flow:
|
|
8
|
+
|
|
9
|
+
1. Derive the output path:
|
|
10
|
+
- slugify `flow_name` to kebab-case
|
|
11
|
+
- write to `<wiki-root>/domains/<domain>/flows/<flow-name>.md`
|
|
12
|
+
2. Determine status:
|
|
13
|
+
- `proposed` when only `SPEC.md` is present
|
|
14
|
+
- `implemented` when `IMPLEMENTATION-NOTES.md` is present
|
|
15
|
+
3. Reconcile implementation notes when present:
|
|
16
|
+
- use `SPEC.md` acceptance criteria as the skeleton
|
|
17
|
+
- override or annotate steps where `IMPLEMENTATION-NOTES.md` records a deviation, surprise, or judgment call
|
|
18
|
+
- mark blocked or unmet steps: `⚠ blocked — <reason>`
|
|
19
|
+
4. Write or merge the flow page:
|
|
20
|
+
- preserve established facts
|
|
21
|
+
- append new information under `## [Source: <origin>]`
|
|
22
|
+
- flag contradictions inline: `> [!warning] CONTRADICTS [[source]]`
|
|
23
|
+
5. Every flow page must include:
|
|
24
|
+
- frontmatter:
|
|
25
|
+
```yaml
|
|
26
|
+
---
|
|
27
|
+
domain: <domain>
|
|
28
|
+
type: flow
|
|
29
|
+
status: proposed | implemented
|
|
30
|
+
ingested: true
|
|
31
|
+
last_ingested: YYYY-MM-DD
|
|
32
|
+
links:
|
|
33
|
+
- "[[specs/<domain>/<spec>/SPEC]]"
|
|
34
|
+
- "[[specs/<domain>/<spec>/IMPLEMENTATION-NOTES]]" # only when notes exist
|
|
35
|
+
created: YYYY-MM-DD
|
|
36
|
+
updated: YYYY-MM-DD
|
|
37
|
+
---
|
|
38
|
+
```
|
|
39
|
+
- a Mermaid diagram
|
|
40
|
+
- a numbered step list aligned to the diagram nodes
|
|
41
|
+
6. Update `<wiki-root>/domains/<domain>/<domain>.md` to link the flow page if not already present
|