@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,210 @@
|
|
|
1
|
+
# `punks` Requirements
|
|
2
|
+
|
|
3
|
+
This document captures the durable requirements agreed for the `punks` CLI so the implementation can evolve without losing the product contract.
|
|
4
|
+
|
|
5
|
+
## Goal
|
|
6
|
+
|
|
7
|
+
`punks` is an AI-first scaffolding CLI for agent-ready projects.
|
|
8
|
+
|
|
9
|
+
It should:
|
|
10
|
+
|
|
11
|
+
- scaffold the right AI operating context for the current project phase
|
|
12
|
+
- keep pre-boilerplate flows lightweight and language-agnostic
|
|
13
|
+
- keep repo-aware setup deterministic once a repo and stack exist
|
|
14
|
+
- emit operator prompts that guide the next agent through the current gate
|
|
15
|
+
|
|
16
|
+
## Core Principles
|
|
17
|
+
|
|
18
|
+
- The lifecycle is explicit.
|
|
19
|
+
- Pre-boilerplate scaffolding is stage-driven.
|
|
20
|
+
- Repo-aware setup is pack-driven.
|
|
21
|
+
- Skill selection is curated by the CLI, not exposed as a raw chooser.
|
|
22
|
+
- Shared bundled assets come from this repo, not network fetches at runtime.
|
|
23
|
+
|
|
24
|
+
## Command Contract
|
|
25
|
+
|
|
26
|
+
`punks scaffold` is the lifecycle index. It explains the available scaffold phases and is no longer an alias for repo setup.
|
|
27
|
+
|
|
28
|
+
The current scaffold namespace is:
|
|
29
|
+
|
|
30
|
+
- `punks scaffold init`
|
|
31
|
+
requirements gate; scaffolds `requirements-grill`, `write-backlog`, and seeds the wiki tree
|
|
32
|
+
- `punks scaffold backlog`
|
|
33
|
+
backlog gate; currently prints guidance only
|
|
34
|
+
- `punks scaffold setup`
|
|
35
|
+
repo-aware setup; detects technologies, resolves packs, and emits prompts/manifests/hooks
|
|
36
|
+
|
|
37
|
+
## Pre-Boilerplate Contract
|
|
38
|
+
|
|
39
|
+
`punks scaffold init` and `punks scaffold backlog` assume the operator is already inside the target workspace or repository folder.
|
|
40
|
+
|
|
41
|
+
They should:
|
|
42
|
+
|
|
43
|
+
- copy only their exact stage-owned skills into `.agents/skills/`
|
|
44
|
+
- overwrite those scaffolded files on rerun for idempotency
|
|
45
|
+
- let `init` seed the dedicated wiki tree early so later planning/docs skills have a concrete schema root
|
|
46
|
+
- avoid pack detection, stack evaluation, or other side effects beyond the minimal repo-shape sniff needed to choose `apps/wiki` vs `wiki`
|
|
47
|
+
- print a fixed operator prompt to stdout that explains how to use the newly scaffolded skills
|
|
48
|
+
- make the requirements grill the canonical gate before backlog creation, with `write-backlog` available after the grill handoff closes
|
|
49
|
+
|
|
50
|
+
They should not:
|
|
51
|
+
|
|
52
|
+
- write a root `AGENTS.md`
|
|
53
|
+
- scan for PRDs yet
|
|
54
|
+
- create issues, call external services, or mutate anything beyond the bundled scaffold files they own
|
|
55
|
+
|
|
56
|
+
The dedicated wiki tree is part of that bundled stage output:
|
|
57
|
+
|
|
58
|
+
- monorepo-shaped target => `apps/wiki/`
|
|
59
|
+
- single-repo target => `wiki/`
|
|
60
|
+
|
|
61
|
+
That wiki tree is not the same thing as `docs/`. It owns specs, raw inputs, and synthesized domain knowledge.
|
|
62
|
+
|
|
63
|
+
## Repo-Aware Setup Contract
|
|
64
|
+
|
|
65
|
+
`punks scaffold setup` remains the deterministic repo-aware scaffold flow.
|
|
66
|
+
|
|
67
|
+
It should:
|
|
68
|
+
|
|
69
|
+
- detect repo facts, not ask the agent to invent them
|
|
70
|
+
- resolve those facts to predefined DevPunks packs
|
|
71
|
+
- scaffold the shared AI setup
|
|
72
|
+
- emit instructions/specs the next agent can use to generate repo-scoped prompts and subagent config
|
|
73
|
+
|
|
74
|
+
The CLI must stay deterministic at the detection/mapping layer and flexible at the final repo-reconciliation layer.
|
|
75
|
+
|
|
76
|
+
## Repository Model
|
|
77
|
+
|
|
78
|
+
`punks scaffold setup` must support both:
|
|
79
|
+
|
|
80
|
+
- monorepos
|
|
81
|
+
- single-repo package layouts
|
|
82
|
+
|
|
83
|
+
Repo shape remains an invariant used during scaffold generation and must stay overrideable with:
|
|
84
|
+
|
|
85
|
+
- `auto`
|
|
86
|
+
- `monorepo`
|
|
87
|
+
- `single`
|
|
88
|
+
|
|
89
|
+
## Detection Contract
|
|
90
|
+
|
|
91
|
+
Initial setup detection is JS/TS manifest based.
|
|
92
|
+
|
|
93
|
+
Primary sources:
|
|
94
|
+
|
|
95
|
+
- repo `package.json` files discovered recursively, with ignore rules for generated/non-source trees
|
|
96
|
+
|
|
97
|
+
Initial technology mapping:
|
|
98
|
+
|
|
99
|
+
- `next` -> `nextjs`, `react`
|
|
100
|
+
- `react`, `react-dom` -> `react`
|
|
101
|
+
- `@tanstack/react-query` and related query packages -> `tanstack-query`
|
|
102
|
+
- `elysia` -> `elysia`
|
|
103
|
+
- `@trpc/*` -> `trpc`
|
|
104
|
+
- `drizzle-orm`, `drizzle-kit` -> `drizzle`
|
|
105
|
+
- `better-auth` -> `better-auth`
|
|
106
|
+
- `turbo` -> `turborepo`
|
|
107
|
+
- `effect`, `@effect/*` -> `effect`
|
|
108
|
+
|
|
109
|
+
## Pack Contract
|
|
110
|
+
|
|
111
|
+
Pack resolution happens at pack level only during `punks scaffold setup`.
|
|
112
|
+
|
|
113
|
+
The CLI must never ask the user or agent to choose raw skills in the repo-aware setup flow.
|
|
114
|
+
|
|
115
|
+
### Default packs
|
|
116
|
+
|
|
117
|
+
Default packs are always preselected and visually distinguished. They are not removable.
|
|
118
|
+
|
|
119
|
+
Current default packs:
|
|
120
|
+
|
|
121
|
+
- `docs`
|
|
122
|
+
`docs-maintenance`
|
|
123
|
+
- `planning`
|
|
124
|
+
`grill-me`, `create-spec`, `create-plan`, `implement-spec`
|
|
125
|
+
- `subagents`
|
|
126
|
+
`domain-plan`, `domain-execute`, `parallel-task`, `swarm-planner`
|
|
127
|
+
- `quality`
|
|
128
|
+
`tdd`, `simplify`
|
|
129
|
+
- `research`
|
|
130
|
+
`parallel-research`
|
|
131
|
+
- `requirements`
|
|
132
|
+
`requirements-grill`, `write-backlog`
|
|
133
|
+
|
|
134
|
+
### Surface packs
|
|
135
|
+
|
|
136
|
+
Frontend-oriented skills should be grouped into a single detected frontend surface pack:
|
|
137
|
+
|
|
138
|
+
- `frontend`
|
|
139
|
+
`agent-browser`, `frontend-design`, `web-design-guidelines`
|
|
140
|
+
|
|
141
|
+
Framework/data packs may layer on top of that surface:
|
|
142
|
+
|
|
143
|
+
- `react`
|
|
144
|
+
`async-react-patterns`, `react-domain-structure`, `vercel-composition-patterns`, `vercel-react-best-practices`
|
|
145
|
+
- `nextjs`
|
|
146
|
+
`next-best-practices`, `next-cache-components`
|
|
147
|
+
- `tanstack-query`
|
|
148
|
+
`tanstack-query`
|
|
149
|
+
|
|
150
|
+
## Prompt Contract
|
|
151
|
+
|
|
152
|
+
Pre-boilerplate commands use fixed stdout operator prompts.
|
|
153
|
+
|
|
154
|
+
`punks scaffold setup` must not hardcode all final repo-scoped prompts as static bundled prompt bodies. Instead it should:
|
|
155
|
+
|
|
156
|
+
- directly scaffold only shared global harness prompts
|
|
157
|
+
- emit prompt specs for root/docs/workspace scopes
|
|
158
|
+
- instruct the next agent how to turn those specs into final scoped `AGENTS.md` files
|
|
159
|
+
|
|
160
|
+
## Subagent Manifest Contract
|
|
161
|
+
|
|
162
|
+
`punks scaffold setup` must emit structured guidance for `.agents/subagents/manifest.mjs`.
|
|
163
|
+
|
|
164
|
+
That guidance must let the next agent derive:
|
|
165
|
+
|
|
166
|
+
- which specialists should exist
|
|
167
|
+
- owned paths
|
|
168
|
+
- guidance files
|
|
169
|
+
- packs
|
|
170
|
+
- explicit skills
|
|
171
|
+
- scope boundaries
|
|
172
|
+
|
|
173
|
+
It should also scaffold the neutral harness-sync layer around that manifest:
|
|
174
|
+
|
|
175
|
+
- shared hooks under `.agents/hooks/`
|
|
176
|
+
- harness sync entrypoint under `.agents/scripts/sync-subagents.mjs`
|
|
177
|
+
- generated harness-native agent/config/mirror surfaces for `.claude`, `.codex`, `.cursor`, and `.opencode`
|
|
178
|
+
|
|
179
|
+
## Tool Bootstrap Contract
|
|
180
|
+
|
|
181
|
+
If a bundled skill or scaffold baseline depends on a global external tool, the CLI should model that dependency explicitly and ensure the tool is installed during `punks scaffold setup`.
|
|
182
|
+
|
|
183
|
+
Current examples:
|
|
184
|
+
|
|
185
|
+
- `agent-browser`
|
|
186
|
+
- `opensrc`
|
|
187
|
+
- `portless`
|
|
188
|
+
|
|
189
|
+
The scaffold output should also record the resolved tool requirements in a machine-readable manifest.
|
|
190
|
+
|
|
191
|
+
## Lint Scaffold Contract
|
|
192
|
+
|
|
193
|
+
The shipped starter/root lint baseline should exclude generated and non-source surfaces by default, including:
|
|
194
|
+
|
|
195
|
+
- all lock files
|
|
196
|
+
- all dot-directories
|
|
197
|
+
- generated agent/harness folders unless a target repo explicitly opts them back into lint scope
|
|
198
|
+
|
|
199
|
+
## Dedicated CLI Repo Contract
|
|
200
|
+
|
|
201
|
+
The standalone private `wearedevpunks/cli` repo remains the source of truth for:
|
|
202
|
+
|
|
203
|
+
- pack registry
|
|
204
|
+
- stage-owned scaffold prompts
|
|
205
|
+
- subagent templates
|
|
206
|
+
- hook base files
|
|
207
|
+
- root/shared prompt assets
|
|
208
|
+
- examples
|
|
209
|
+
|
|
210
|
+
The public `wearedevpunks/skills` repo remains the source of truth for the shareable skill directories. This private CLI syncs that public tree into local `skills/` through a local cache clone and scaffolds from the local copy. Runtime scaffold behavior must not depend on network fetches.
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# `punks` CLI Scaffolding
|
|
2
|
+
|
|
3
|
+
This repository owns the `punks` command used to scaffold AI operating context across the project lifecycle.
|
|
4
|
+
|
|
5
|
+
For the durable product contract, see [requirements](../reference/punks-requirements.md). This runbook focuses on how the implementation behaves today.
|
|
6
|
+
|
|
7
|
+
## Current Command Surface
|
|
8
|
+
|
|
9
|
+
- `punks scaffold`
|
|
10
|
+
lifecycle index; prints the available scaffold phases
|
|
11
|
+
- `punks scaffold init`
|
|
12
|
+
scaffolds the requirements grill and backlog authoring skills, seeds the wiki tree, and prints the operator prompt
|
|
13
|
+
- `punks scaffold backlog`
|
|
14
|
+
prints the backlog-stage operator prompt; no backlog-stage packs are scaffolded today
|
|
15
|
+
- `punks scaffold setup`
|
|
16
|
+
runs the repo-aware scaffold flow: detect repo facts, resolve packs, confirm selection, and emit prompts/manifests/hooks
|
|
17
|
+
- `punks update`
|
|
18
|
+
refreshes scaffold-managed assets from the recorded `.devpunks/scaffold-manifest.json`
|
|
19
|
+
|
|
20
|
+
## `init` Behavior
|
|
21
|
+
|
|
22
|
+
`punks scaffold init`:
|
|
23
|
+
|
|
24
|
+
- writes into the current working directory by default
|
|
25
|
+
- supports `-o, --output <path>` to target a different output directory
|
|
26
|
+
- copies only:
|
|
27
|
+
- `.agents/skills/requirements-grill`
|
|
28
|
+
- `.agents/skills/write-backlog`
|
|
29
|
+
- seeds a dedicated wiki tree:
|
|
30
|
+
- monorepo-shaped target => `apps/wiki/`
|
|
31
|
+
- single-repo target => `wiki/`
|
|
32
|
+
- creates:
|
|
33
|
+
- `<wiki-root>/AGENTS.md`
|
|
34
|
+
- `<wiki-root>/CLAUDE.md` as a symlink mirror of `AGENTS.md`
|
|
35
|
+
- `<wiki-root>/domains/.gitkeep`
|
|
36
|
+
- `<wiki-root>/specs/.gitkeep`
|
|
37
|
+
- `<wiki-root>/raw/assets/.gitkeep`
|
|
38
|
+
- `<wiki-root>/raw/external/.gitkeep`
|
|
39
|
+
- `<wiki-root>/raw/meetings/.gitkeep`
|
|
40
|
+
- `<wiki-root>/index.md`
|
|
41
|
+
- `<wiki-root>/log.md`
|
|
42
|
+
- overwrites those scaffolded files on rerun
|
|
43
|
+
- prints a fixed operator prompt that tells the next agent to run `requirements-grill`, then `write-backlog` after the grill handoff closes, and treat the scaffolded wiki root as distinct from `docs/`
|
|
44
|
+
|
|
45
|
+
It does not:
|
|
46
|
+
|
|
47
|
+
- write a root `AGENTS.md`
|
|
48
|
+
- do full pack or technology detection
|
|
49
|
+
- inspect existing repo shape only enough to choose `apps/wiki` vs `wiki`
|
|
50
|
+
- inspect the PRD location
|
|
51
|
+
- create external side effects
|
|
52
|
+
|
|
53
|
+
## `backlog` Behavior
|
|
54
|
+
|
|
55
|
+
`punks scaffold backlog`:
|
|
56
|
+
|
|
57
|
+
- writes into the current working directory by default
|
|
58
|
+
- supports `-o, --output <path>` to target a different output directory
|
|
59
|
+
- copies no stage-specific packs right now
|
|
60
|
+
- prints a fixed operator prompt that makes the empty backlog stage explicit
|
|
61
|
+
|
|
62
|
+
It does not scan for the PRD yet and does not scaffold planning skills.
|
|
63
|
+
|
|
64
|
+
## `setup` Behavior
|
|
65
|
+
|
|
66
|
+
`punks scaffold setup` is the existing repo-aware scaffold flow.
|
|
67
|
+
|
|
68
|
+
Current scope:
|
|
69
|
+
|
|
70
|
+
- scan `package.json` manifests recursively across the target repo, with ignore rules for non-source trees
|
|
71
|
+
- detect normalized technologies from dependency names
|
|
72
|
+
- treat React, Next.js, and TanStack Query as separate frontend capability layers; React is the plain framework pack triggered by `react` / `react-dom` or implied by `next`, and pulls in `async-react-patterns` to prevent outdated manual async state modeling
|
|
73
|
+
- include the `frontend` agnostic surface pack only when React or Next.js is detected; it carries product UI, browser validation, and frontend domain-structure guidance
|
|
74
|
+
- include the `backend` agnostic surface pack when backend framework/data/auth packages are detected (`elysia`, `@trpc/*`, `drizzle-orm`, `drizzle-kit`, `better-auth`) or when package names/manifest paths clearly mark an API/backend/server/service workspace
|
|
75
|
+
- keep all non-surface agnostic skill packs mandatory (`docs`, `planning`, `quality`, `research`, `requirements`, `subagents`)
|
|
76
|
+
- detect monorepo signals from `pnpm-workspace.yaml`, `turbo.json`, root workspaces, and workspace package count
|
|
77
|
+
- resolve predefined packs from those facts
|
|
78
|
+
- run a branded interactive confirmation flow
|
|
79
|
+
- print a human summary plus optional JSON confirmation result to stdout
|
|
80
|
+
- support `-i, --input <path>` to scan a different repository root
|
|
81
|
+
- support `-o, --output <path>` to target a different output location
|
|
82
|
+
- support `--json` to print the full machine-readable scaffold payload on demand
|
|
83
|
+
- support `--repo-shape auto|monorepo|single` to override repo-shape detection when needed
|
|
84
|
+
- copy shared prompt/manifest assets, selected skill directories, shared hook files, harness sync scripts, and subagent templates
|
|
85
|
+
- generate harness-native agent/config/mirror surfaces for `.claude`, `.codex`, `.cursor`, and `.opencode`
|
|
86
|
+
- emit prompt specs, selected lint asset specs, subagent manifest specs, a required-tools manifest, and an agent handoff file
|
|
87
|
+
- write a paste-ready next-agent prompt file and try to copy it to the clipboard automatically
|
|
88
|
+
- include `portless` in the required tools manifest so follow-up agents can standardize local dev URLs across worktrees and avoid raw port collisions
|
|
89
|
+
|
|
90
|
+
If `-o, --output` points at a path that does not exist yet, `punks scaffold setup` creates it before writing the generated files.
|
|
91
|
+
|
|
92
|
+
## `setup` Output Contract
|
|
93
|
+
|
|
94
|
+
After confirmation, `punks scaffold setup` writes:
|
|
95
|
+
|
|
96
|
+
- `.agents/AGENTS.md`
|
|
97
|
+
- `.agents/hooks/*`
|
|
98
|
+
- `.agents/scripts/sync-subagents.mjs`
|
|
99
|
+
- `.agents/skills/*`
|
|
100
|
+
- `.claude/skills` as a symlink to `.agents/skills`
|
|
101
|
+
- `.devpunks/AGENT-HANDOFF.md`
|
|
102
|
+
- `.devpunks/AGENT-SYSTEM-PROMPT.md`
|
|
103
|
+
- `.devpunks/required-tools.json`
|
|
104
|
+
- `.devpunks/specs/lint/assets.json`
|
|
105
|
+
- `.devpunks/specs/lint/selection.json`
|
|
106
|
+
- `.devpunks/specs/lint/README.md`
|
|
107
|
+
- `.devpunks/specs/lint/oxlint-starter.json` when no root Oxlint config already exists
|
|
108
|
+
- `.devpunks/specs/prompts/shared-agents.md`
|
|
109
|
+
- `.devpunks/specs/prompts/root.md`
|
|
110
|
+
- `.devpunks/specs/prompts/docs.md`
|
|
111
|
+
- `.devpunks/specs/prompts/apps/*/prompt.md`
|
|
112
|
+
- `.devpunks/specs/prompts/packages/*/prompt.md`
|
|
113
|
+
- `.devpunks/specs/subagents/manifest-spec.json`
|
|
114
|
+
- `.agents/subagents/manifest.prompt.md`
|
|
115
|
+
- `.agents/subagents/manifest.mjs`
|
|
116
|
+
- generated harness surfaces under `.claude/`, `.codex/`, `.cursor/`, `.opencode/`
|
|
117
|
+
- `.devpunks/scaffold-manifest.json`
|
|
118
|
+
|
|
119
|
+
It does **not** write final root/docs/workspace `AGENTS.md` files yet. Those remain authored by the next agent from the generated prompt specs.
|
|
120
|
+
|
|
121
|
+
After scaffold completes, the CLI writes `.devpunks/AGENT-SYSTEM-PROMPT.md`, tries to copy that prompt to the clipboard, and ends with a short terminal section telling the operator to paste that generated prompt into the next agent.
|
|
122
|
+
|
|
123
|
+
Scaffolded guidance treats `portless` as the local-development URL baseline. Generated prompt specs and handoff text tell follow-up agents to prefer stable `*.localhost` subdomains over raw `localhost:<port>` values in env examples, endpoint defaults, callback URLs, allowed origins, CORS, and app-to-app proxy targets. In linked git worktrees, portless prefixes hostnames with the branch name, so local URLs must be modeled as stable origins that may vary by worktree. When a local frontend proxy targets another portless app, configure the proxy to rewrite the host/origin so the request reaches the intended service instead of looping back to the caller.
|
|
124
|
+
|
|
125
|
+
When the next agent authors those final prompt files, each root/docs/workspace `AGENTS.md` should be treated as the neutral source of truth and mirrored by a sibling `CLAUDE.md` symlink. `.agents/AGENTS.md` remains the shared global neutral source, and `.claude/CLAUDE.md` should mirror it.
|
|
126
|
+
|
|
127
|
+
Keep `.agents/skills/` as the main skill directory. Only `.claude/skills` is generated as a compatibility symlink; Codex, Cursor, and OpenCode should read skills from `.agents/skills` instead of maintaining `.codex/skills`, `.cursor/skills`, or `.opencode/skills` mirrors.
|
|
128
|
+
|
|
129
|
+
It also does **not** mutate the repo's final Oxlint config. Lint is scaffolded as selected pack-owned assets plus placement guidance so the follow-up agent can fit the final `.oxlintrc.json` shape to the real repo layout.
|
|
130
|
+
|
|
131
|
+
The scaffolded starter baseline excludes lock files and dot-directories by default so generated/vendor surfaces do not get linted as product code.
|
|
132
|
+
|
|
133
|
+
## `update` Behavior
|
|
134
|
+
|
|
135
|
+
`punks update` is the maintenance path after `punks scaffold setup`.
|
|
136
|
+
|
|
137
|
+
Current scope:
|
|
138
|
+
|
|
139
|
+
- reads only `.devpunks/scaffold-manifest.json`
|
|
140
|
+
- uses the recorded `finalPacks` as the update source of truth
|
|
141
|
+
- re-scans package manifests to refresh repo facts and detect pack drift
|
|
142
|
+
- renders the expected scaffold output into a temporary directory before touching the repo
|
|
143
|
+
- diffs managed files with `diff`/jsdiff unified patches
|
|
144
|
+
- asks before writing by default
|
|
145
|
+
- supports `-i, --input <path>` to target a scaffolded repo root
|
|
146
|
+
- supports `--check` to write nothing and exit nonzero when managed updates are available
|
|
147
|
+
- supports `--write` to apply without prompting
|
|
148
|
+
- supports `--json` to print the machine-readable update result
|
|
149
|
+
- restores missing managed files that still belong to the current scaffold output
|
|
150
|
+
- reports stale managed files from the old manifest but does not delete them
|
|
151
|
+
- installs/ensures required tools when applying updates, matching setup behavior
|
|
152
|
+
|
|
153
|
+
`punks update` updates scaffold-managed assets such as `.agents/AGENTS.md`, selected skills, prompt/lint/subagent specs, hook/script files, harness surfaces, required-tools metadata, handoff prompts, and `.devpunks/scaffold-manifest.json`.
|
|
154
|
+
|
|
155
|
+
It does **not** silently accept a newly resolved pack set. When current package manifests resolve to different packs than the recorded manifest, update reports pack drift and prints an operator prompt for an agent to rerun `punks scaffold setup` intentionally.
|
|
156
|
+
|
|
157
|
+
To test the built command locally without preparing another repo first, use the committed fixtures:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
bun run build
|
|
161
|
+
bun ./dist/index.js update -i test-fixtures/single-package --check
|
|
162
|
+
bun ./dist/index.js update -i test-fixtures/monorepo-root --check
|
|
163
|
+
bun ./dist/index.js update -i test-fixtures/root-with-src-monorepo/src --check
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Those fixtures include minimal `.devpunks/scaffold-manifest.json` files and intentionally omit the generated managed assets, so `--check` should report missing managed files and exit nonzero.
|
|
167
|
+
|
|
168
|
+
## Content Base
|
|
169
|
+
|
|
170
|
+
The standalone CLI repo is the canonical source of scaffolded content.
|
|
171
|
+
|
|
172
|
+
Bundled source-of-truth assets live under:
|
|
173
|
+
|
|
174
|
+
- `skills/`
|
|
175
|
+
- `src/data/subagents/`
|
|
176
|
+
- `src/data/hooks/`
|
|
177
|
+
- `src/data/scripts/`
|
|
178
|
+
- `src/data/catalog/`
|
|
179
|
+
- `src/content/stage-scaffold.ts`
|
|
180
|
+
|
|
181
|
+
`skills/` is refreshed from the public [wearedevpunks/skills](https://github.com/wearedevpunks/skills) repo through a shallow local cache clone. Refresh it with:
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
bun run sync:skills
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
The sync command replaces only `skills/` and overwrites any local changes there.
|
package/package.json
CHANGED
|
@@ -1,59 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@punks/cli",
|
|
3
|
-
"
|
|
4
|
-
"
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "DevPunks AI scaffolding CLI",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"bin": {
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
"type": "git",
|
|
10
|
-
"url": "https://gitlab.com/web-punks/entity-manager"
|
|
11
|
-
},
|
|
12
|
-
"publishConfig": {
|
|
13
|
-
"registry": "https://registry.npmjs.org/"
|
|
7
|
+
"devpunks": "./dist/index.js",
|
|
8
|
+
"dp": "./dist/index.js",
|
|
9
|
+
"punks": "./dist/index.js"
|
|
14
10
|
},
|
|
11
|
+
"files": [
|
|
12
|
+
"dist",
|
|
13
|
+
"docs",
|
|
14
|
+
"AGENTS.md"
|
|
15
|
+
],
|
|
15
16
|
"scripts": {
|
|
16
|
-
"build": "
|
|
17
|
-
"
|
|
18
|
-
"
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
"devDependencies": {
|
|
22
|
-
"@types/jest": "^29.4.0",
|
|
23
|
-
"@types/node": "^16.4.13",
|
|
24
|
-
"@types/source-map-support": "^0.5.4",
|
|
25
|
-
"@types/yargs": "^17.0.2",
|
|
26
|
-
"jest": "^29.4.1",
|
|
27
|
-
"prettier": "^2.3.2",
|
|
28
|
-
"rimraf": "^4.1.2",
|
|
29
|
-
"ts-creator": "^1.2.5",
|
|
30
|
-
"ts-jest": "^29.0.5",
|
|
31
|
-
"ts-loader": "^9.4.2",
|
|
32
|
-
"ts-node": "^10.9.1",
|
|
33
|
-
"typescript": "4.3.5"
|
|
17
|
+
"build": "node ./scripts/build-dist.mjs",
|
|
18
|
+
"check-types": "tsc --noEmit",
|
|
19
|
+
"dev": "bun run ./src/index.ts scaffold",
|
|
20
|
+
"sync:skills": "node ./scripts/sync-skills-repo.mjs",
|
|
21
|
+
"test": "vitest run --config vitest.config.ts"
|
|
34
22
|
},
|
|
35
23
|
"dependencies": {
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"
|
|
24
|
+
"react-devtools-core": "^6.1.5"
|
|
25
|
+
},
|
|
26
|
+
"devDependencies": {
|
|
27
|
+
"@effect/vitest": "0.27.0",
|
|
28
|
+
"@types/node": "^22.13.14",
|
|
29
|
+
"typescript": "^5.8.3",
|
|
30
|
+
"vitest": "^3.2.4"
|
|
40
31
|
},
|
|
41
|
-
"
|
|
42
|
-
"moduleFileExtensions": [
|
|
43
|
-
"js",
|
|
44
|
-
"json",
|
|
45
|
-
"ts"
|
|
46
|
-
],
|
|
47
|
-
"moduleNameMapper": {},
|
|
48
|
-
"rootDir": "src",
|
|
49
|
-
"testRegex": ".*\\.spec\\.ts$",
|
|
50
|
-
"transform": {
|
|
51
|
-
"^.+\\.(t|j)s$": "ts-jest"
|
|
52
|
-
},
|
|
53
|
-
"collectCoverageFrom": [
|
|
54
|
-
"**/*.(t|j)s"
|
|
55
|
-
],
|
|
56
|
-
"coverageDirectory": "../coverage",
|
|
57
|
-
"testEnvironment": "node"
|
|
58
|
-
}
|
|
32
|
+
"packageManager": "bun@1.3.5"
|
|
59
33
|
}
|
package/.eslintignore
DELETED
package/.eslintrc
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"parser": "@typescript-eslint/parser",
|
|
3
|
-
"extends": [
|
|
4
|
-
"standard",
|
|
5
|
-
"plugin:prettier/recommended",
|
|
6
|
-
"plugin:@typescript-eslint/recommended",
|
|
7
|
-
"plugin:react/recommended",
|
|
8
|
-
"prettier/@typescript-eslint",
|
|
9
|
-
"prettier/react",
|
|
10
|
-
"plugin:prettier/recommended",
|
|
11
|
-
"plugin:import/errors",
|
|
12
|
-
"plugin:import/warnings",
|
|
13
|
-
"plugin:import/typescript"
|
|
14
|
-
],
|
|
15
|
-
"plugins": ["import", "@typescript-eslint", "prettier", "react"],
|
|
16
|
-
"parserOptions": {
|
|
17
|
-
"ecmaVersion": 2018,
|
|
18
|
-
"sourceType": "module",
|
|
19
|
-
"ecmaFeatures": {
|
|
20
|
-
"jsx": true
|
|
21
|
-
}
|
|
22
|
-
},
|
|
23
|
-
"rules": {
|
|
24
|
-
"quotes": [2, "double", "avoid-escape"],
|
|
25
|
-
"camelcase": "off",
|
|
26
|
-
"@typescript-eslint/naming-convention": [
|
|
27
|
-
"error",
|
|
28
|
-
{
|
|
29
|
-
"selector": "default",
|
|
30
|
-
"format": ["camelCase"]
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"selector": "variable",
|
|
34
|
-
"modifiers": ["const"],
|
|
35
|
-
"format": ["camelCase", "PascalCase", "UPPER_CASE"]
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
"selector": "function",
|
|
39
|
-
"format": ["camelCase", "PascalCase"]
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
"selector": "parameter",
|
|
43
|
-
"format": ["camelCase", "PascalCase"]
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
"selector": "property",
|
|
47
|
-
"format": null
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
"selector": "typeParameter",
|
|
51
|
-
"format": ["PascalCase"],
|
|
52
|
-
"prefix": ["T"]
|
|
53
|
-
},
|
|
54
|
-
{
|
|
55
|
-
"selector": "interface",
|
|
56
|
-
"format": ["PascalCase"],
|
|
57
|
-
"custom": {
|
|
58
|
-
"regex": "^I[A-Z]",
|
|
59
|
-
"match": false
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
{
|
|
63
|
-
"selector": "typeLike",
|
|
64
|
-
"format": ["PascalCase"]
|
|
65
|
-
}
|
|
66
|
-
],
|
|
67
|
-
"@typescript-eslint/explicit-function-return-type": "off",
|
|
68
|
-
"@typescript-eslint/explicit-module-boundary-types": "off",
|
|
69
|
-
"@typescript-eslint/no-explicit-any": "off",
|
|
70
|
-
"@typescript-eslint/no-useless-constructor": "off",
|
|
71
|
-
"@typescript-eslint/no-use-before-define": "error",
|
|
72
|
-
"@typescript-eslint/no-empty-interface": "off",
|
|
73
|
-
"@typescript-eslint/no-empty-function": "off",
|
|
74
|
-
"@typescript-eslint/ban-ts-ignore": "off",
|
|
75
|
-
"no-useless-constructor": "off",
|
|
76
|
-
"no-empty-pattern": "off",
|
|
77
|
-
"no-use-before-define": "off",
|
|
78
|
-
"react/prop-types": "off",
|
|
79
|
-
"react/display-name": "off",
|
|
80
|
-
"prettier/prettier": "error"
|
|
81
|
-
},
|
|
82
|
-
"overrides": [{
|
|
83
|
-
"files": ["__mocks__/**/*.js", "**/*.spec.{ts,tsx}"],
|
|
84
|
-
"env": {
|
|
85
|
-
"browser": true,
|
|
86
|
-
"node": true,
|
|
87
|
-
"mocha": true,
|
|
88
|
-
"jest": true
|
|
89
|
-
},
|
|
90
|
-
"rules": {
|
|
91
|
-
"no-restricted-globals": [
|
|
92
|
-
"error",
|
|
93
|
-
{
|
|
94
|
-
"name": "fit",
|
|
95
|
-
"message": "Use it instead."
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
"name": "fdescribe",
|
|
99
|
-
"message": "Use describe instead."
|
|
100
|
-
}
|
|
101
|
-
],
|
|
102
|
-
"no-restricted-properties": [
|
|
103
|
-
"error",
|
|
104
|
-
{
|
|
105
|
-
"object": "describe",
|
|
106
|
-
"property": "only",
|
|
107
|
-
"message": "Use describe instead."
|
|
108
|
-
},
|
|
109
|
-
{
|
|
110
|
-
"object": "it",
|
|
111
|
-
"property": "only",
|
|
112
|
-
"message": "Use it instead."
|
|
113
|
-
},
|
|
114
|
-
{
|
|
115
|
-
"object": "test",
|
|
116
|
-
"property": "only",
|
|
117
|
-
"message": "Use test instead."
|
|
118
|
-
}
|
|
119
|
-
]
|
|
120
|
-
}
|
|
121
|
-
}],
|
|
122
|
-
"settings": {
|
|
123
|
-
"react": {
|
|
124
|
-
"version": "detect"
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
package/.prettierignore
DELETED
package/.prettierrc
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AbstractBuilder = void 0;
|
|
4
|
-
class AbstractBuilder {
|
|
5
|
-
}
|
|
6
|
-
exports.AbstractBuilder = AbstractBuilder;
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hYnN0cmFjdGlvbnMvYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxNQUFzQixlQUFlO0NBRXBDO0FBRkQsMENBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZENvbW1hbmRJbnB1dCB9IGZyb20gXCIuLi90eXBlcy9jb21tYW5kc1wiXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdEJ1aWxkZXI8VENvbnRleHQ+IHtcbiAgYWJzdHJhY3QgYnVpbGRDb21tYW5kKCk6IFByb21pc2U8QnVpbGRDb21tYW5kSW5wdXQ8VENvbnRleHQ+PlxufVxuIl19
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { AbstractBuilder } from "../../abstractions/builder";
|
|
2
|
-
import { DotNetProjectSettings, EntityAddCommandInput } from "../../commands/entity-add";
|
|
3
|
-
import { DotnetCommandContext } from "./types";
|
|
4
|
-
export declare abstract class DotnetAbstractBuilder extends AbstractBuilder<DotnetCommandContext> {
|
|
5
|
-
protected readonly input: EntityAddCommandInput;
|
|
6
|
-
protected readonly settings: DotNetProjectSettings;
|
|
7
|
-
constructor(input: EntityAddCommandInput, settings: DotNetProjectSettings);
|
|
8
|
-
protected defaultContext(): DotnetCommandContext;
|
|
9
|
-
protected templatePath({ file }: {
|
|
10
|
-
file: string;
|
|
11
|
-
}): string;
|
|
12
|
-
protected outputPath({ fileName, entityName, pluralizedEntityName, folder, }: {
|
|
13
|
-
fileName: string;
|
|
14
|
-
entityName: string;
|
|
15
|
-
pluralizedEntityName: string;
|
|
16
|
-
folder: string;
|
|
17
|
-
}): string;
|
|
18
|
-
}
|