@bonesofspring/ai-rules 0.2.13 → 0.2.15
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/CHANGELOG.md +36 -1
- package/README.md +6 -2
- package/bin/cli.js +4 -0
- package/package.json +2 -1
- package/presets/_shared/README.md +1 -1
- package/presets/_shared/core/agent-team/agent-team-intake.md +2 -2
- package/presets/_shared/core/agent-team/agent-team-orchestrator.md +4 -4
- package/presets/_shared/core/architecture/feature-delivery-workflow.md +27 -27
- package/presets/_shared/core/architecture/reference-features.template.md +23 -23
- package/presets/_shared/core/meta/preset-layering.md +12 -12
- package/presets/_shared/core/meta/preset-no-cross-stack-leakage.md +16 -2
- package/presets/_shared/core/meta/preset-pr-checklist.md +6 -6
- package/presets/_shared/core/meta/preset-token-budget.md +3 -3
- package/presets/_shared/core/meta/preset-twin-sync.md +4 -0
- package/presets/_shared/core/quality/code-quality-and-refactoring.md +19 -19
- package/presets/_shared/core/quality/design-guidance.md +54 -54
- package/presets/_shared/core/review/code-review-mr.md +4 -4
- package/presets/_shared/core/review/technical-retro.md +3 -3
- package/presets/claude/go/MCP.md +7 -7
- package/presets/claude/go/README.md +3 -3
- package/presets/claude/go/agents/README.md +2 -2
- package/presets/claude/go/agents/build-verifier.md +1 -1
- package/presets/claude/go/agents/task-router.md +13 -13
- package/presets/claude/go/commands/README.md +8 -8
- package/presets/claude/go/commands/feature-continue.md +21 -21
- package/presets/claude/go/commands/feature-start.md +16 -16
- package/presets/claude/go/commands/task-continue.md +14 -14
- package/presets/claude/go/commands/task.md +32 -32
- package/presets/claude/go/commands/technical-retro.md +38 -38
- package/presets/claude/go/rules/architecture/boundaries.md +10 -10
- package/presets/claude/go/rules/stack/README.md +1 -1
- package/presets/claude/go/rules/stack/go-app-core.md +11 -11
- package/presets/claude/go/rules/tooling-and-review/README.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/agent-team-intake.md +2 -2
- package/presets/claude/go/rules/tooling-and-review/agent-team-orchestrator.md +4 -4
- package/presets/claude/go/rules/tooling-and-review/code-quality.md +21 -20
- package/presets/claude/go/rules/tooling-and-review/code-review.md +4 -4
- package/presets/claude/go/rules/tooling-and-review/design-guidance.md +54 -54
- package/presets/claude/go/rules/tooling-and-review/post-change-test.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/preset-layering.md +12 -12
- package/presets/claude/go/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -2
- package/presets/claude/go/rules/tooling-and-review/preset-pr-checklist.md +6 -6
- package/presets/claude/go/rules/tooling-and-review/preset-token-budget.md +3 -3
- package/presets/claude/go/rules/tooling-and-review/preset-twin-sync.md +4 -0
- package/presets/claude/go/rules/tooling-and-review/technical-retro.md +3 -3
- package/presets/claude/go/team/README.md +1 -1
- package/presets/claude/ios-swift/CLAUDE.md +16 -16
- package/presets/claude/ios-swift/MCP.md +10 -8
- package/presets/claude/ios-swift/README.md +8 -8
- package/presets/claude/ios-swift/agents/README.md +11 -11
- package/presets/claude/ios-swift/agents/build-verifier.md +2 -2
- package/presets/claude/ios-swift/agents/feature-developer.md +1 -1
- package/presets/claude/ios-swift/agents/task-analyst.md +1 -1
- package/presets/claude/ios-swift/agents/task-router.md +18 -18
- package/presets/claude/ios-swift/commands/README.md +48 -10
- package/presets/claude/ios-swift/commands/feature-continue.md +9 -41
- package/presets/claude/ios-swift/commands/feature-start.md +19 -16
- package/presets/claude/ios-swift/commands/task-continue.md +14 -14
- package/presets/claude/ios-swift/commands/task.md +33 -33
- package/presets/claude/ios-swift/commands/technical-retro.md +61 -38
- package/presets/claude/ios-swift/rules/README.md +7 -7
- package/presets/claude/ios-swift/rules/api-and-data/README.md +1 -1
- package/presets/claude/ios-swift/rules/api-and-data/networking.md +31 -31
- package/presets/claude/ios-swift/rules/api-and-data/persistence.md +13 -13
- package/presets/claude/ios-swift/rules/architecture/README.md +1 -1
- package/presets/claude/ios-swift/rules/architecture/boundaries.md +20 -20
- package/presets/claude/ios-swift/rules/architecture/feature-delivery.md +31 -30
- package/presets/claude/ios-swift/rules/architecture/module-public-api.md +11 -11
- package/presets/claude/ios-swift/rules/architecture/reference-features.md +25 -22
- package/presets/claude/ios-swift/rules/stack/README.md +1 -1
- package/presets/claude/ios-swift/rules/stack/ios-app-core.md +10 -10
- package/presets/claude/ios-swift/rules/stack/swift-conventions.md +17 -17
- package/presets/claude/ios-swift/rules/testing/README.md +1 -1
- package/presets/claude/ios-swift/rules/testing/ui.md +27 -27
- package/presets/claude/ios-swift/rules/testing/unit.md +25 -25
- package/presets/claude/ios-swift/rules/tooling-and-review/README.md +5 -2
- package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-intake.md +2 -2
- package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +51 -21
- package/presets/claude/ios-swift/rules/tooling-and-review/code-quality.md +25 -24
- package/presets/claude/ios-swift/rules/tooling-and-review/code-review.md +40 -39
- package/presets/claude/ios-swift/rules/tooling-and-review/design-guidance.md +54 -54
- package/presets/claude/ios-swift/rules/tooling-and-review/post-change-build.md +18 -18
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-layering.md +12 -12
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -2
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-pr-checklist.md +6 -6
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-token-budget.md +3 -3
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-twin-sync.md +4 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/security-ios.md +14 -14
- package/presets/claude/ios-swift/rules/tooling-and-review/technical-retro.md +4 -4
- package/presets/claude/ios-swift/rules/tooling-and-review/xcode-tooling.md +11 -11
- package/presets/claude/ios-swift/rules/ui-and-accessibility/README.md +1 -1
- package/presets/claude/ios-swift/rules/ui-and-accessibility/navigation.md +13 -13
- package/presets/claude/ios-swift/rules/ui-and-accessibility/swiftui.md +39 -39
- package/presets/claude/ios-swift/rules/ui-and-accessibility/viewmodels.md +24 -24
- package/presets/claude/ios-swift/skills/README.md +3 -3
- package/presets/claude/ios-swift/team/README.md +6 -2
- package/presets/claude/java/MCP.md +5 -5
- package/presets/claude/java/agents/README.md +2 -2
- package/presets/claude/java/agents/build-verifier.md +1 -1
- package/presets/claude/java/agents/task-router.md +13 -13
- package/presets/claude/java/commands/README.md +8 -8
- package/presets/claude/java/commands/feature-continue.md +21 -21
- package/presets/claude/java/commands/feature-start.md +16 -16
- package/presets/claude/java/commands/task-continue.md +14 -14
- package/presets/claude/java/commands/task.md +32 -32
- package/presets/claude/java/commands/technical-retro.md +38 -38
- package/presets/claude/java/rules/architecture/boundaries.md +10 -10
- package/presets/claude/java/rules/stack/README.md +1 -1
- package/presets/claude/java/rules/stack/java-app-core.md +9 -9
- package/presets/claude/java/rules/tooling-and-review/README.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/agent-team-intake.md +2 -2
- package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +4 -4
- package/presets/claude/java/rules/tooling-and-review/code-quality.md +21 -20
- package/presets/claude/java/rules/tooling-and-review/code-review.md +5 -4
- package/presets/claude/java/rules/tooling-and-review/design-guidance.md +55 -54
- package/presets/claude/java/rules/tooling-and-review/post-change-test.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/preset-layering.md +12 -12
- package/presets/claude/java/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -2
- package/presets/claude/java/rules/tooling-and-review/preset-pr-checklist.md +6 -6
- package/presets/claude/java/rules/tooling-and-review/preset-token-budget.md +3 -3
- package/presets/claude/java/rules/tooling-and-review/preset-twin-sync.md +4 -0
- package/presets/claude/java/rules/tooling-and-review/technical-retro.md +3 -3
- package/presets/claude/java/team/README.md +1 -1
- package/presets/claude/mcp-ts/MCP.md +5 -5
- package/presets/claude/mcp-ts/agents/build-verifier.md +1 -1
- package/presets/claude/mcp-ts/agents/task-router.md +7 -7
- package/presets/claude/mcp-ts/commands/README.md +1 -1
- package/presets/claude/mcp-ts/commands/feature-continue.md +8 -8
- package/presets/claude/mcp-ts/commands/feature-start.md +17 -17
- package/presets/claude/mcp-ts/commands/task-continue.md +14 -14
- package/presets/claude/mcp-ts/commands/task.md +32 -32
- package/presets/claude/mcp-ts/commands/technical-retro.md +54 -54
- package/presets/claude/mcp-ts/rules/architecture/mcp-server-boundaries.md +2 -2
- package/presets/claude/mcp-ts/rules/stack/mcp-ts-app-core.md +9 -9
- package/presets/claude/mcp-ts/rules/tooling-and-review/agent-team-intake.md +3 -3
- package/presets/claude/mcp-ts/rules/tooling-and-review/agent-team-orchestrator.md +4 -4
- package/presets/claude/mcp-ts/rules/tooling-and-review/code-quality.md +21 -20
- package/presets/claude/mcp-ts/rules/tooling-and-review/code-review.md +5 -4
- package/presets/claude/mcp-ts/rules/tooling-and-review/design-guidance.md +55 -54
- package/presets/claude/mcp-ts/rules/tooling-and-review/post-change-test.md +1 -1
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-layering.md +12 -12
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -2
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-pr-checklist.md +6 -6
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-token-budget.md +3 -3
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-twin-sync.md +4 -0
- package/presets/claude/mcp-ts/rules/tooling-and-review/technical-retro.md +3 -3
- package/presets/claude/next/CLAUDE.md +17 -17
- package/presets/claude/next/MCP.md +8 -8
- package/presets/claude/next/README.md +16 -16
- package/presets/claude/next/agents/README.md +19 -19
- package/presets/claude/next/agents/build-verifier.md +3 -3
- package/presets/claude/next/agents/feature-developer.md +1 -1
- package/presets/claude/next/agents/task-analyst.md +1 -1
- package/presets/claude/next/agents/task-router.md +16 -16
- package/presets/claude/next/commands/README.md +9 -9
- package/presets/claude/next/commands/feature-continue.md +21 -21
- package/presets/claude/next/commands/feature-start.md +16 -16
- package/presets/claude/next/commands/task-continue.md +14 -14
- package/presets/claude/next/commands/task.md +33 -33
- package/presets/claude/next/commands/technical-retro.md +38 -38
- package/presets/claude/next/rules/README.md +12 -12
- package/presets/claude/next/rules/api-and-data/README.md +6 -6
- package/presets/claude/next/rules/api-and-data/api-services.md +42 -42
- package/presets/claude/next/rules/api-and-data/http-client.md +22 -21
- package/presets/claude/next/rules/api-and-data/store-rtk.md +60 -60
- package/presets/claude/next/rules/architecture/README.md +8 -8
- package/presets/claude/next/rules/architecture/architecture-boundaries-ui.md +6 -6
- package/presets/claude/next/rules/architecture/architecture-boundaries.md +44 -44
- package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +39 -39
- package/presets/claude/next/rules/architecture/layer-barrel-exports.md +30 -29
- package/presets/claude/next/rules/architecture/public-imports.md +13 -13
- package/presets/claude/next/rules/architecture/reference-features.md +16 -16
- package/presets/claude/next/rules/stack/README.md +9 -9
- package/presets/claude/next/rules/stack/arrow-functions.md +7 -7
- package/presets/claude/next/rules/stack/navigation-router-ui.md +6 -6
- package/presets/claude/next/rules/stack/navigation-router.md +37 -37
- package/presets/claude/next/rules/stack/next-app-core.md +17 -17
- package/presets/claude/next/rules/stack/next-app-router.md +17 -17
- package/presets/claude/next/rules/stack/no-type-assertion.md +28 -28
- package/presets/claude/next/rules/stack/types-jsdoc.md +31 -20
- package/presets/claude/next/rules/testing/README.md +5 -5
- package/presets/claude/next/rules/testing/playwright-agents.md +1 -1
- package/presets/claude/next/rules/testing/tests-e2e-structure.md +48 -47
- package/presets/claude/next/rules/testing/tests-unit.md +50 -51
- package/presets/claude/next/rules/tooling-and-review/README.md +9 -9
- package/presets/claude/next/rules/tooling-and-review/agent-team-intake.md +2 -2
- package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +4 -4
- package/presets/claude/next/rules/tooling-and-review/code-quality.md +25 -24
- package/presets/claude/next/rules/tooling-and-review/code-review-mr.md +4 -4
- package/presets/claude/next/rules/tooling-and-review/design-guidance.md +54 -54
- package/presets/claude/next/rules/tooling-and-review/package-manager.md +7 -7
- package/presets/claude/next/rules/tooling-and-review/post-change-lint.md +22 -22
- package/presets/claude/next/rules/tooling-and-review/preset-layering.md +12 -12
- package/presets/claude/next/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -2
- package/presets/claude/next/rules/tooling-and-review/preset-pr-checklist.md +6 -6
- package/presets/claude/next/rules/tooling-and-review/preset-token-budget.md +3 -3
- package/presets/claude/next/rules/tooling-and-review/preset-twin-sync.md +4 -0
- package/presets/claude/next/rules/tooling-and-review/technical-retro.md +4 -4
- package/presets/claude/next/rules/ui-and-accessibility/README.md +7 -7
- package/presets/claude/next/rules/ui-and-accessibility/css-property-order.md +3 -3
- package/presets/claude/next/rules/ui-and-accessibility/no-props-spread.md +18 -18
- package/presets/claude/next/rules/ui-and-accessibility/react-a11y-coding.md +20 -20
- package/presets/claude/next/rules/ui-and-accessibility/react-ui.md +63 -63
- package/presets/claude/next/skills/README.md +4 -4
- package/presets/claude/next/skills/feature-delivery/SKILL.md +1 -1
- package/presets/claude/next/team/README.md +2 -2
- package/presets/claude/nuxt/CLAUDE.md +39 -0
- package/presets/claude/nuxt/MCP.md +16 -0
- package/presets/claude/nuxt/README.md +39 -0
- package/presets/claude/nuxt/REPO_AGENTS.md +49 -0
- package/presets/claude/nuxt/agents/README.md +206 -0
- package/presets/claude/nuxt/agents/accessibility-reviewer.md +59 -0
- package/presets/claude/nuxt/agents/api-contract-reviewer.md +63 -0
- package/presets/claude/nuxt/agents/build-verifier.md +89 -0
- package/presets/claude/nuxt/agents/ci-investigator.md +60 -0
- package/presets/claude/nuxt/agents/code-reviewer.md +62 -0
- package/presets/claude/nuxt/agents/codebase-analyzer.md +28 -0
- package/presets/claude/nuxt/agents/debugger.md +65 -0
- package/presets/claude/nuxt/agents/feature-developer.md +59 -0
- package/presets/claude/nuxt/agents/migration-specialist.md +67 -0
- package/presets/claude/nuxt/agents/performance-auditor.md +66 -0
- package/presets/claude/nuxt/agents/playwright-test-generator.md +75 -0
- package/presets/claude/nuxt/agents/playwright-test-healer.md +61 -0
- package/presets/claude/nuxt/agents/playwright-test-planner.md +67 -0
- package/presets/claude/nuxt/agents/qa-tester.md +54 -0
- package/presets/claude/nuxt/agents/security-reviewer.md +60 -0
- package/presets/claude/nuxt/agents/solution-architect.md +68 -0
- package/presets/claude/nuxt/agents/task-analyst.md +109 -0
- package/presets/claude/nuxt/agents/task-router.md +140 -0
- package/presets/claude/nuxt/agents/tech-writer.md +54 -0
- package/presets/claude/nuxt/agents/unit-test-generator.md +37 -0
- package/presets/claude/nuxt/agents/unit-test-healer.md +38 -0
- package/presets/claude/nuxt/agents/unit-test-planner.md +60 -0
- package/presets/claude/nuxt/commands/README.md +51 -0
- package/presets/claude/nuxt/commands/feature-continue.md +19 -0
- package/presets/claude/nuxt/commands/feature-start.md +33 -0
- package/presets/claude/nuxt/commands/task-continue.md +50 -0
- package/presets/claude/nuxt/commands/task.md +56 -0
- package/presets/claude/nuxt/commands/technical-retro.md +85 -0
- package/presets/claude/nuxt/hooks/README.md +14 -0
- package/presets/claude/nuxt/hooks/chain-team-phases.sh +723 -0
- package/presets/claude/nuxt/hooks/examples/README.md +18 -0
- package/presets/claude/nuxt/hooks/examples/format-edited.example.sh +11 -0
- package/presets/claude/nuxt/hooks/examples/secret-guard.example.sh +10 -0
- package/presets/claude/nuxt/hooks/examples/test-on-save.example.sh +8 -0
- package/presets/claude/nuxt/hooks/guard-shell-command.sh +77 -0
- package/presets/claude/nuxt/mcp.json +20 -0
- package/presets/claude/nuxt/rules/README.md +90 -0
- package/presets/claude/nuxt/rules/anti-hallucination/vue-nuxt-anti-hallucination.md +72 -0
- package/presets/claude/nuxt/rules/api-and-data/README.md +9 -0
- package/presets/claude/nuxt/rules/api-and-data/api-services.md +77 -0
- package/presets/claude/nuxt/rules/api-and-data/http-client.md +16 -0
- package/presets/claude/nuxt/rules/api-and-data/store-pinia.md +68 -0
- package/presets/claude/nuxt/rules/architecture/README.md +12 -0
- package/presets/claude/nuxt/rules/architecture/architecture-boundaries-ui.md +16 -0
- package/presets/claude/nuxt/rules/architecture/architecture-boundaries.md +99 -0
- package/presets/claude/nuxt/rules/architecture/feature-delivery-workflow.md +89 -0
- package/presets/claude/nuxt/rules/architecture/layer-barrel-exports.md +72 -0
- package/presets/claude/nuxt/rules/architecture/public-imports.md +61 -0
- package/presets/claude/nuxt/rules/architecture/reference-features.md +50 -0
- package/presets/claude/nuxt/rules/stack/README.md +12 -0
- package/presets/claude/nuxt/rules/stack/navigation-router-ui.md +14 -0
- package/presets/claude/nuxt/rules/stack/navigation-router.md +59 -0
- package/presets/claude/nuxt/rules/stack/no-type-assertion.md +62 -0
- package/presets/claude/nuxt/rules/stack/nuxt-app-core.md +44 -0
- package/presets/claude/nuxt/rules/stack/nuxt-pages-routing.md +39 -0
- package/presets/claude/nuxt/rules/stack/script-setup-conventions.md +12 -0
- package/presets/claude/nuxt/rules/stack/types-jsdoc.md +41 -0
- package/presets/claude/nuxt/rules/testing/README.md +11 -0
- package/presets/claude/nuxt/rules/testing/playwright-agents.md +78 -0
- package/presets/claude/nuxt/rules/testing/tests-e2e-structure.md +49 -0
- package/presets/claude/nuxt/rules/testing/tests-unit.md +75 -0
- package/presets/claude/nuxt/rules/tooling-and-review/README.md +15 -0
- package/presets/claude/nuxt/rules/tooling-and-review/agent-team-intake.md +16 -0
- package/presets/claude/nuxt/rules/tooling-and-review/agent-team-orchestrator.md +192 -0
- package/presets/claude/nuxt/rules/tooling-and-review/anti-sycophancy-discipline.md +34 -0
- package/presets/claude/nuxt/rules/tooling-and-review/code-quality.md +51 -0
- package/presets/claude/nuxt/rules/tooling-and-review/code-review-mr.md +64 -0
- package/presets/claude/nuxt/rules/tooling-and-review/design-guidance.md +115 -0
- package/presets/claude/nuxt/rules/tooling-and-review/package-manager.md +17 -0
- package/presets/claude/nuxt/rules/tooling-and-review/post-change-lint.md +44 -0
- package/presets/claude/nuxt/rules/tooling-and-review/preset-layering.md +32 -0
- package/presets/claude/nuxt/rules/tooling-and-review/preset-no-cross-stack-leakage.md +79 -0
- package/presets/claude/nuxt/rules/tooling-and-review/preset-pr-checklist.md +35 -0
- package/presets/claude/nuxt/rules/tooling-and-review/preset-token-budget.md +38 -0
- package/presets/claude/nuxt/rules/tooling-and-review/preset-twin-sync.md +50 -0
- package/presets/claude/nuxt/rules/tooling-and-review/security-nuxt.md +37 -0
- package/presets/claude/nuxt/rules/tooling-and-review/technical-retro.md +16 -0
- package/presets/claude/nuxt/rules/ui-and-accessibility/README.md +12 -0
- package/presets/claude/nuxt/rules/ui-and-accessibility/css-property-order.md +11 -0
- package/presets/claude/nuxt/rules/ui-and-accessibility/no-v-bind-spread.md +12 -0
- package/presets/claude/nuxt/rules/ui-and-accessibility/vue-a11y-coding.md +16 -0
- package/presets/claude/nuxt/rules/ui-and-accessibility/vue-ui.md +35 -0
- package/presets/claude/nuxt/skills/README.md +17 -0
- package/presets/claude/nuxt/skills/ci-investigation/SKILL.md +36 -0
- package/presets/claude/nuxt/skills/code-review/SKILL.md +38 -0
- package/presets/claude/nuxt/skills/debug-investigation/SKILL.md +32 -0
- package/presets/claude/nuxt/skills/feature-delivery/SKILL.md +34 -0
- package/presets/claude/nuxt/skills/playwright-e2e/SKILL.md +37 -0
- package/presets/claude/nuxt/skills/technical-retro/SKILL.md +54 -0
- package/presets/claude/nuxt/skills/unit-testing/SKILL.md +32 -0
- package/presets/claude/nuxt/skills/vue-performance/SKILL.md +53 -0
- package/presets/claude/nuxt/skills/write-adr/SKILL.md +41 -0
- package/presets/claude/nuxt/team/README.md +140 -0
- package/presets/claude/nuxt/team/conventions.md +21 -0
- package/presets/claude/nuxt/team/fixtures/artifact-manifest.example.json +61 -0
- package/presets/claude/nuxt/team/fixtures/bugfix-standard.json +25 -0
- package/presets/claude/nuxt/team/fixtures/feature-full.json +28 -0
- package/presets/claude/nuxt/team/fixtures/feature-light.json +27 -0
- package/presets/claude/nuxt/team/tasks/.gitkeep +1 -0
- package/presets/claude/php-hexagonal/MCP.md +7 -7
- package/presets/claude/php-hexagonal/agents/README.md +3 -3
- package/presets/claude/php-hexagonal/agents/build-verifier.md +1 -1
- package/presets/claude/php-hexagonal/agents/task-router.md +12 -12
- package/presets/claude/php-hexagonal/commands/README.md +9 -9
- package/presets/claude/php-hexagonal/commands/feature-continue.md +21 -21
- package/presets/claude/php-hexagonal/commands/feature-start.md +16 -16
- package/presets/claude/php-hexagonal/commands/task-continue.md +14 -14
- package/presets/claude/php-hexagonal/commands/task.md +32 -32
- package/presets/claude/php-hexagonal/commands/technical-retro.md +38 -38
- package/presets/claude/php-hexagonal/rules/architecture/boundaries.md +11 -10
- package/presets/claude/php-hexagonal/rules/stack/README.md +1 -1
- package/presets/claude/php-hexagonal/rules/stack/php-app-core.md +11 -10
- package/presets/claude/php-hexagonal/rules/tooling-and-review/README.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-intake.md +2 -2
- package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-orchestrator.md +4 -4
- package/presets/claude/php-hexagonal/rules/tooling-and-review/code-quality.md +21 -21
- package/presets/claude/php-hexagonal/rules/tooling-and-review/code-review.md +4 -4
- package/presets/claude/php-hexagonal/rules/tooling-and-review/design-guidance.md +54 -54
- package/presets/claude/php-hexagonal/rules/tooling-and-review/post-change-test.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-layering.md +12 -12
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -2
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-pr-checklist.md +6 -6
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-token-budget.md +3 -3
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-twin-sync.md +4 -0
- package/presets/claude/php-hexagonal/rules/tooling-and-review/technical-retro.md +3 -3
- package/presets/claude/php-hexagonal/team/README.md +1 -1
- package/presets/claude/php-laravel/agents/README.md +3 -3
- package/presets/claude/php-laravel/agents/build-verifier.md +1 -1
- package/presets/claude/php-laravel/agents/task-router.md +14 -14
- package/presets/claude/php-laravel/commands/README.md +9 -9
- package/presets/claude/php-laravel/commands/feature-continue.md +21 -21
- package/presets/claude/php-laravel/commands/feature-start.md +16 -16
- package/presets/claude/php-laravel/commands/task-continue.md +14 -14
- package/presets/claude/php-laravel/commands/task.md +32 -32
- package/presets/claude/php-laravel/commands/technical-retro.md +38 -38
- package/presets/claude/php-laravel/rules/api-and-data/events-listeners.md +1 -1
- package/presets/claude/php-laravel/rules/architecture/boundaries.md +11 -11
- package/presets/claude/php-laravel/rules/stack/laravel-app-core.md +8 -8
- package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-intake.md +3 -2
- package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-orchestrator.md +4 -4
- package/presets/claude/php-laravel/rules/tooling-and-review/code-quality.md +21 -20
- package/presets/claude/php-laravel/rules/tooling-and-review/code-review.md +4 -5
- package/presets/claude/php-laravel/rules/tooling-and-review/design-guidance.md +54 -54
- package/presets/claude/php-laravel/rules/tooling-and-review/post-change-test.md +1 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-layering.md +13 -12
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-no-cross-stack-leakage.md +17 -2
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-pr-checklist.md +7 -6
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-token-budget.md +4 -3
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-twin-sync.md +5 -0
- package/presets/claude/php-laravel/rules/tooling-and-review/technical-retro.md +4 -3
- package/presets/claude/php-laravel/team/README.md +1 -1
- package/presets/claude/svelte/CLAUDE.md +39 -0
- package/presets/claude/svelte/MCP.md +16 -0
- package/presets/claude/svelte/README.md +13 -0
- package/presets/claude/svelte/REPO_AGENTS.md +49 -0
- package/presets/claude/svelte/agents/README.md +206 -0
- package/presets/claude/svelte/agents/accessibility-reviewer.md +59 -0
- package/presets/claude/svelte/agents/api-contract-reviewer.md +63 -0
- package/presets/claude/svelte/agents/build-verifier.md +89 -0
- package/presets/claude/svelte/agents/ci-investigator.md +60 -0
- package/presets/claude/svelte/agents/code-reviewer.md +62 -0
- package/presets/claude/svelte/agents/codebase-analyzer.md +28 -0
- package/presets/claude/svelte/agents/debugger.md +65 -0
- package/presets/claude/svelte/agents/feature-developer.md +59 -0
- package/presets/claude/svelte/agents/migration-specialist.md +67 -0
- package/presets/claude/svelte/agents/performance-auditor.md +66 -0
- package/presets/claude/svelte/agents/playwright-test-generator.md +75 -0
- package/presets/claude/svelte/agents/playwright-test-healer.md +61 -0
- package/presets/claude/svelte/agents/playwright-test-planner.md +67 -0
- package/presets/claude/svelte/agents/qa-tester.md +54 -0
- package/presets/claude/svelte/agents/security-reviewer.md +60 -0
- package/presets/claude/svelte/agents/solution-architect.md +68 -0
- package/presets/claude/svelte/agents/task-analyst.md +109 -0
- package/presets/claude/svelte/agents/task-router.md +141 -0
- package/presets/claude/svelte/agents/tech-writer.md +54 -0
- package/presets/claude/svelte/agents/unit-test-generator.md +37 -0
- package/presets/claude/svelte/agents/unit-test-healer.md +38 -0
- package/presets/claude/svelte/agents/unit-test-planner.md +60 -0
- package/presets/claude/svelte/commands/README.md +51 -0
- package/presets/claude/svelte/commands/feature-continue.md +19 -0
- package/presets/claude/svelte/commands/feature-start.md +33 -0
- package/presets/claude/svelte/commands/task-continue.md +50 -0
- package/presets/claude/svelte/commands/task.md +56 -0
- package/presets/claude/svelte/commands/technical-retro.md +85 -0
- package/presets/claude/svelte/hooks/README.md +14 -0
- package/presets/claude/svelte/hooks/chain-team-phases.sh +723 -0
- package/presets/claude/svelte/hooks/examples/README.md +18 -0
- package/presets/claude/svelte/hooks/examples/format-edited.example.sh +13 -0
- package/presets/claude/svelte/hooks/examples/secret-guard.example.sh +10 -0
- package/presets/claude/svelte/hooks/examples/test-on-save.example.sh +14 -0
- package/presets/claude/svelte/hooks/guard-shell-command.sh +77 -0
- package/presets/claude/svelte/mcp.json +20 -0
- package/presets/claude/svelte/rules/README.md +90 -0
- package/presets/claude/svelte/rules/anti-hallucination/svelte-sveltekit-anti-hallucination.md +71 -0
- package/presets/claude/svelte/rules/api-and-data/README.md +9 -0
- package/presets/claude/svelte/rules/api-and-data/api-services.md +45 -0
- package/presets/claude/svelte/rules/api-and-data/http-client.md +17 -0
- package/presets/claude/svelte/rules/api-and-data/store-svelte.md +67 -0
- package/presets/claude/svelte/rules/architecture/README.md +12 -0
- package/presets/claude/svelte/rules/architecture/architecture-boundaries-ui.md +16 -0
- package/presets/claude/svelte/rules/architecture/architecture-boundaries.md +65 -0
- package/presets/claude/svelte/rules/architecture/feature-delivery-workflow.md +61 -0
- package/presets/claude/svelte/rules/architecture/layer-barrel-exports.md +73 -0
- package/presets/claude/svelte/rules/architecture/public-imports.md +43 -0
- package/presets/claude/svelte/rules/architecture/reference-features.md +50 -0
- package/presets/claude/svelte/rules/stack/README.md +12 -0
- package/presets/claude/svelte/rules/stack/navigation-router-ui.md +26 -0
- package/presets/claude/svelte/rules/stack/navigation-router.md +41 -0
- package/presets/claude/svelte/rules/stack/no-type-assertion.md +59 -0
- package/presets/claude/svelte/rules/stack/svelte-app-core.md +44 -0
- package/presets/claude/svelte/rules/stack/svelte-script-conventions.md +33 -0
- package/presets/claude/svelte/rules/stack/sveltekit-routing.md +40 -0
- package/presets/claude/svelte/rules/stack/types-jsdoc.md +42 -0
- package/presets/claude/svelte/rules/testing/README.md +11 -0
- package/presets/claude/svelte/rules/testing/playwright-agents.md +80 -0
- package/presets/claude/svelte/rules/testing/tests-e2e-structure.md +50 -0
- package/presets/claude/svelte/rules/testing/tests-unit.md +40 -0
- package/presets/claude/svelte/rules/tooling-and-review/README.md +15 -0
- package/presets/claude/svelte/rules/tooling-and-review/agent-team-intake.md +17 -0
- package/presets/claude/svelte/rules/tooling-and-review/agent-team-orchestrator.md +193 -0
- package/presets/claude/svelte/rules/tooling-and-review/anti-sycophancy-discipline.md +29 -0
- package/presets/claude/svelte/rules/tooling-and-review/code-quality.md +51 -0
- package/presets/claude/svelte/rules/tooling-and-review/code-review-mr.md +64 -0
- package/presets/claude/svelte/rules/tooling-and-review/design-guidance.md +110 -0
- package/presets/claude/svelte/rules/tooling-and-review/package-manager.md +17 -0
- package/presets/claude/svelte/rules/tooling-and-review/post-change-lint.md +44 -0
- package/presets/claude/svelte/rules/tooling-and-review/preset-layering.md +35 -0
- package/presets/claude/svelte/rules/tooling-and-review/preset-no-cross-stack-leakage.md +82 -0
- package/presets/claude/svelte/rules/tooling-and-review/preset-pr-checklist.md +38 -0
- package/presets/claude/svelte/rules/tooling-and-review/preset-token-budget.md +40 -0
- package/presets/claude/svelte/rules/tooling-and-review/preset-twin-sync.md +53 -0
- package/presets/claude/svelte/rules/tooling-and-review/security-sveltekit.md +41 -0
- package/presets/claude/svelte/rules/tooling-and-review/technical-retro.md +17 -0
- package/presets/claude/svelte/rules/ui-and-accessibility/README.md +12 -0
- package/presets/claude/svelte/rules/ui-and-accessibility/css-property-order.md +12 -0
- package/presets/claude/svelte/rules/ui-and-accessibility/no-rest-props-spread.md +32 -0
- package/presets/claude/svelte/rules/ui-and-accessibility/svelte-a11y-coding.md +28 -0
- package/presets/claude/svelte/rules/ui-and-accessibility/svelte-ui.md +38 -0
- package/presets/claude/svelte/skills/README.md +17 -0
- package/presets/claude/svelte/skills/ci-investigation/SKILL.md +36 -0
- package/presets/claude/svelte/skills/code-review/SKILL.md +38 -0
- package/presets/claude/svelte/skills/debug-investigation/SKILL.md +32 -0
- package/presets/claude/svelte/skills/feature-delivery/SKILL.md +34 -0
- package/presets/claude/svelte/skills/playwright-e2e/SKILL.md +37 -0
- package/presets/claude/svelte/skills/svelte-performance/SKILL.md +52 -0
- package/presets/claude/svelte/skills/technical-retro/SKILL.md +54 -0
- package/presets/claude/svelte/skills/unit-testing/SKILL.md +32 -0
- package/presets/claude/svelte/skills/write-adr/SKILL.md +41 -0
- package/presets/claude/svelte/team/README.md +140 -0
- package/presets/claude/svelte/team/conventions.md +21 -0
- package/presets/claude/svelte/team/fixtures/artifact-manifest.example.json +61 -0
- package/presets/claude/svelte/team/fixtures/bugfix-standard.json +25 -0
- package/presets/claude/svelte/team/fixtures/feature-full.json +28 -0
- package/presets/claude/svelte/team/fixtures/feature-light.json +27 -0
- package/presets/claude/svelte/team/tasks/.gitkeep +1 -0
- package/presets/cursor/go/AGENTS.md +10 -10
- package/presets/cursor/go/MCP.md +7 -7
- package/presets/cursor/go/README.md +4 -4
- package/presets/cursor/go/agents/README.md +3 -3
- package/presets/cursor/go/agents/build-verifier.md +1 -1
- package/presets/cursor/go/agents/task-router.md +13 -13
- package/presets/cursor/go/commands/README.md +23 -23
- package/presets/cursor/go/commands/feature-continue.md +8 -8
- package/presets/cursor/go/commands/feature-start.md +17 -17
- package/presets/cursor/go/commands/task-continue.md +14 -14
- package/presets/cursor/go/commands/task.md +32 -32
- package/presets/cursor/go/commands/technical-retro.md +49 -49
- package/presets/cursor/go/rules/README.md +3 -3
- package/presets/cursor/go/rules/agent-team-intake.mdc +2 -2
- package/presets/cursor/go/rules/agent-team-orchestrator.mdc +4 -4
- package/presets/cursor/go/rules/architecture-boundaries.mdc +10 -10
- package/presets/cursor/go/rules/code-quality-and-refactoring.mdc +21 -20
- package/presets/cursor/go/rules/code-review-mr.mdc +4 -4
- package/presets/cursor/go/rules/design-guidance.mdc +54 -54
- package/presets/cursor/go/rules/go-app-core.mdc +11 -11
- package/presets/cursor/go/rules/post-change-test.mdc +1 -1
- package/presets/cursor/go/rules/preset-layering.mdc +12 -12
- package/presets/cursor/go/rules/preset-no-cross-stack-leakage.mdc +16 -2
- package/presets/cursor/go/rules/preset-pr-checklist.mdc +6 -6
- package/presets/cursor/go/rules/preset-token-budget.mdc +3 -3
- package/presets/cursor/go/rules/preset-twin-sync.mdc +4 -0
- package/presets/cursor/go/rules/technical-retro.mdc +3 -3
- package/presets/cursor/go/team/README.md +1 -1
- package/presets/cursor/ios-swift/AGENTS.md +20 -20
- package/presets/cursor/ios-swift/MCP.md +8 -8
- package/presets/cursor/ios-swift/README.md +9 -9
- package/presets/cursor/ios-swift/agents/README.md +7 -7
- package/presets/cursor/ios-swift/agents/build-verifier.md +2 -2
- package/presets/cursor/ios-swift/agents/feature-developer.md +1 -1
- package/presets/cursor/ios-swift/agents/task-analyst.md +1 -1
- package/presets/cursor/ios-swift/agents/task-router.md +16 -16
- package/presets/cursor/ios-swift/commands/README.md +23 -23
- package/presets/cursor/ios-swift/commands/feature-continue.md +8 -8
- package/presets/cursor/ios-swift/commands/feature-start.md +17 -17
- package/presets/cursor/ios-swift/commands/task-continue.md +14 -14
- package/presets/cursor/ios-swift/commands/task.md +33 -33
- package/presets/cursor/ios-swift/commands/technical-retro.md +50 -50
- package/presets/cursor/ios-swift/rules/README.md +23 -23
- package/presets/cursor/ios-swift/rules/agent-team-intake.mdc +2 -2
- package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +2 -2
- package/presets/cursor/ios-swift/rules/architecture-boundaries.mdc +20 -20
- package/presets/cursor/ios-swift/rules/code-quality-and-refactoring.mdc +25 -24
- package/presets/cursor/ios-swift/rules/code-review-mr.mdc +40 -40
- package/presets/cursor/ios-swift/rules/design-guidance.mdc +54 -54
- package/presets/cursor/ios-swift/rules/feature-delivery-workflow.mdc +30 -30
- package/presets/cursor/ios-swift/rules/ios-app-core.mdc +10 -10
- package/presets/cursor/ios-swift/rules/module-public-api.mdc +11 -11
- package/presets/cursor/ios-swift/rules/navigation-coordinators.mdc +13 -13
- package/presets/cursor/ios-swift/rules/networking-services.mdc +31 -31
- package/presets/cursor/ios-swift/rules/persistence-data.mdc +13 -13
- package/presets/cursor/ios-swift/rules/post-change-build.mdc +18 -18
- package/presets/cursor/ios-swift/rules/preset-layering.mdc +12 -12
- package/presets/cursor/ios-swift/rules/preset-no-cross-stack-leakage.mdc +16 -2
- package/presets/cursor/ios-swift/rules/preset-pr-checklist.mdc +6 -6
- package/presets/cursor/ios-swift/rules/preset-token-budget.mdc +3 -3
- package/presets/cursor/ios-swift/rules/preset-twin-sync.mdc +4 -0
- package/presets/cursor/ios-swift/rules/reference-features.mdc +22 -22
- package/presets/cursor/ios-swift/rules/security-ios.mdc +14 -14
- package/presets/cursor/ios-swift/rules/state-and-viewmodels.mdc +24 -24
- package/presets/cursor/ios-swift/rules/swift-conventions.mdc +17 -17
- package/presets/cursor/ios-swift/rules/swiftui-ui.mdc +39 -39
- package/presets/cursor/ios-swift/rules/technical-retro.mdc +4 -4
- package/presets/cursor/ios-swift/rules/tests-ui.mdc +27 -26
- package/presets/cursor/ios-swift/rules/tests-unit.mdc +25 -25
- package/presets/cursor/ios-swift/rules/xcode-tooling.mdc +11 -11
- package/presets/cursor/ios-swift/skills/README.md +3 -3
- package/presets/cursor/ios-swift/team/README.md +1 -1
- package/presets/cursor/java/AGENTS.md +10 -10
- package/presets/cursor/java/MCP.md +6 -6
- package/presets/cursor/java/agents/README.md +3 -3
- package/presets/cursor/java/agents/build-verifier.md +1 -1
- package/presets/cursor/java/agents/task-router.md +13 -13
- package/presets/cursor/java/commands/README.md +23 -23
- package/presets/cursor/java/commands/feature-continue.md +8 -8
- package/presets/cursor/java/commands/feature-start.md +17 -17
- package/presets/cursor/java/commands/task-continue.md +14 -14
- package/presets/cursor/java/commands/task.md +32 -32
- package/presets/cursor/java/commands/technical-retro.md +49 -49
- package/presets/cursor/java/rules/README.md +2 -2
- package/presets/cursor/java/rules/agent-team-intake.mdc +2 -2
- package/presets/cursor/java/rules/agent-team-orchestrator.mdc +4 -4
- package/presets/cursor/java/rules/architecture-boundaries.mdc +10 -10
- package/presets/cursor/java/rules/code-quality-and-refactoring.mdc +21 -20
- package/presets/cursor/java/rules/code-review-mr.mdc +4 -4
- package/presets/cursor/java/rules/design-guidance.mdc +54 -54
- package/presets/cursor/java/rules/java-app-core.mdc +9 -9
- package/presets/cursor/java/rules/post-change-test.mdc +1 -1
- package/presets/cursor/java/rules/preset-layering.mdc +12 -12
- package/presets/cursor/java/rules/preset-no-cross-stack-leakage.mdc +16 -2
- package/presets/cursor/java/rules/preset-pr-checklist.mdc +6 -6
- package/presets/cursor/java/rules/preset-token-budget.mdc +3 -3
- package/presets/cursor/java/rules/preset-twin-sync.mdc +4 -0
- package/presets/cursor/java/rules/technical-retro.mdc +3 -3
- package/presets/cursor/java/team/README.md +1 -1
- package/presets/cursor/mcp-ts/AGENTS.md +6 -6
- package/presets/cursor/mcp-ts/MCP.md +5 -5
- package/presets/cursor/mcp-ts/agents/build-verifier.md +1 -1
- package/presets/cursor/mcp-ts/agents/task-router.md +7 -7
- package/presets/cursor/mcp-ts/commands/README.md +1 -1
- package/presets/cursor/mcp-ts/commands/feature-continue.md +8 -8
- package/presets/cursor/mcp-ts/commands/feature-start.md +17 -17
- package/presets/cursor/mcp-ts/commands/task-continue.md +14 -14
- package/presets/cursor/mcp-ts/commands/task.md +32 -32
- package/presets/cursor/mcp-ts/commands/technical-retro.md +50 -50
- package/presets/cursor/mcp-ts/rules/README.md +1 -1
- package/presets/cursor/mcp-ts/rules/agent-team-intake.mdc +3 -3
- package/presets/cursor/mcp-ts/rules/agent-team-orchestrator.mdc +4 -4
- package/presets/cursor/mcp-ts/rules/code-quality-and-refactoring.mdc +21 -20
- package/presets/cursor/mcp-ts/rules/code-review-mr.mdc +5 -4
- package/presets/cursor/mcp-ts/rules/design-guidance.mdc +55 -54
- package/presets/cursor/mcp-ts/rules/mcp-server-boundaries.mdc +2 -2
- package/presets/cursor/mcp-ts/rules/mcp-ts-app-core.mdc +9 -9
- package/presets/cursor/mcp-ts/rules/post-change-test.mdc +1 -1
- package/presets/cursor/mcp-ts/rules/preset-layering.mdc +12 -12
- package/presets/cursor/mcp-ts/rules/preset-no-cross-stack-leakage.mdc +16 -2
- package/presets/cursor/mcp-ts/rules/preset-pr-checklist.mdc +6 -6
- package/presets/cursor/mcp-ts/rules/preset-token-budget.mdc +3 -3
- package/presets/cursor/mcp-ts/rules/preset-twin-sync.mdc +4 -0
- package/presets/cursor/mcp-ts/rules/technical-retro.mdc +3 -3
- package/presets/cursor/next/AGENTS.md +15 -15
- package/presets/cursor/next/MCP.md +9 -9
- package/presets/cursor/next/README.md +9 -9
- package/presets/cursor/next/agents/README.md +22 -22
- package/presets/cursor/next/agents/build-verifier.md +3 -3
- package/presets/cursor/next/agents/feature-developer.md +1 -1
- package/presets/cursor/next/agents/task-analyst.md +1 -1
- package/presets/cursor/next/agents/task-router.md +16 -16
- package/presets/cursor/next/commands/README.md +22 -22
- package/presets/cursor/next/commands/feature-continue.md +8 -8
- package/presets/cursor/next/commands/feature-start.md +17 -17
- package/presets/cursor/next/commands/task-continue.md +14 -14
- package/presets/cursor/next/commands/task.md +33 -33
- package/presets/cursor/next/commands/technical-retro.md +49 -49
- package/presets/cursor/next/rules/README.md +52 -52
- package/presets/cursor/next/rules/agent-team-intake.mdc +2 -2
- package/presets/cursor/next/rules/agent-team-orchestrator.mdc +4 -4
- package/presets/cursor/next/rules/api-services.mdc +43 -43
- package/presets/cursor/next/rules/architecture-boundaries-ui.mdc +7 -7
- package/presets/cursor/next/rules/architecture-boundaries.mdc +45 -45
- package/presets/cursor/next/rules/arrow-functions.mdc +8 -8
- package/presets/cursor/next/rules/code-quality-and-refactoring.mdc +25 -24
- package/presets/cursor/next/rules/code-review-mr.mdc +5 -5
- package/presets/cursor/next/rules/css-property-order-stylelint.mdc +4 -4
- package/presets/cursor/next/rules/design-guidance.mdc +54 -54
- package/presets/cursor/next/rules/feature-delivery-workflow.mdc +43 -43
- package/presets/cursor/next/rules/http-client.mdc +23 -22
- package/presets/cursor/next/rules/layer-barrel-exports.mdc +31 -30
- package/presets/cursor/next/rules/navigation-router-stack.mdc +37 -37
- package/presets/cursor/next/rules/navigation-router-ui.mdc +7 -7
- package/presets/cursor/next/rules/next-app-core.mdc +16 -16
- package/presets/cursor/next/rules/next-app-router.mdc +17 -17
- package/presets/cursor/next/rules/no-props-spread.mdc +20 -20
- package/presets/cursor/next/rules/no-type-assertion-as-import-export.mdc +29 -29
- package/presets/cursor/next/rules/package-manager.mdc +8 -8
- package/presets/cursor/next/rules/post-change-lint.mdc +22 -22
- package/presets/cursor/next/rules/preset-layering.mdc +12 -12
- package/presets/cursor/next/rules/preset-no-cross-stack-leakage.mdc +16 -2
- package/presets/cursor/next/rules/preset-pr-checklist.mdc +6 -6
- package/presets/cursor/next/rules/preset-token-budget.mdc +3 -3
- package/presets/cursor/next/rules/preset-twin-sync.mdc +4 -0
- package/presets/cursor/next/rules/public-imports.mdc +14 -14
- package/presets/cursor/next/rules/react-a11y-coding.mdc +21 -21
- package/presets/cursor/next/rules/react-ui.mdc +66 -66
- package/presets/cursor/next/rules/reference-features.mdc +17 -17
- package/presets/cursor/next/rules/store-rtk.mdc +60 -60
- package/presets/cursor/next/rules/technical-retro.mdc +4 -4
- package/presets/cursor/next/rules/tests-e2e-structure.mdc +46 -46
- package/presets/cursor/next/rules/tests-unit.mdc +51 -52
- package/presets/cursor/next/rules/types-jsdoc.mdc +29 -22
- package/presets/cursor/next/skills/feature-delivery/SKILL.md +1 -1
- package/presets/cursor/next/team/README.md +2 -2
- package/presets/cursor/nuxt/AGENTS.md +39 -0
- package/presets/cursor/nuxt/BUGBOT.md +14 -0
- package/presets/cursor/nuxt/MCP.md +16 -0
- package/presets/cursor/nuxt/README.md +47 -0
- package/presets/cursor/nuxt/REPO_AGENTS.md +49 -0
- package/presets/cursor/nuxt/agents/README.md +206 -0
- package/presets/cursor/nuxt/agents/accessibility-reviewer.md +60 -0
- package/presets/cursor/nuxt/agents/api-contract-reviewer.md +64 -0
- package/presets/cursor/nuxt/agents/build-verifier.md +90 -0
- package/presets/cursor/nuxt/agents/ci-investigator.md +61 -0
- package/presets/cursor/nuxt/agents/code-reviewer.md +63 -0
- package/presets/cursor/nuxt/agents/codebase-analyzer.md +28 -0
- package/presets/cursor/nuxt/agents/debugger.md +66 -0
- package/presets/cursor/nuxt/agents/feature-developer.md +60 -0
- package/presets/cursor/nuxt/agents/migration-specialist.md +68 -0
- package/presets/cursor/nuxt/agents/performance-auditor.md +67 -0
- package/presets/cursor/nuxt/agents/playwright-test-generator.md +27 -0
- package/presets/cursor/nuxt/agents/playwright-test-healer.md +27 -0
- package/presets/cursor/nuxt/agents/playwright-test-planner.md +28 -0
- package/presets/cursor/nuxt/agents/qa-tester.md +55 -0
- package/presets/cursor/nuxt/agents/security-reviewer.md +61 -0
- package/presets/cursor/nuxt/agents/solution-architect.md +69 -0
- package/presets/cursor/nuxt/agents/task-analyst.md +110 -0
- package/presets/cursor/nuxt/agents/task-router.md +141 -0
- package/presets/cursor/nuxt/agents/tech-writer.md +55 -0
- package/presets/cursor/nuxt/agents/unit-test-generator.md +38 -0
- package/presets/cursor/nuxt/agents/unit-test-healer.md +39 -0
- package/presets/cursor/nuxt/agents/unit-test-planner.md +61 -0
- package/presets/cursor/nuxt/commands/README.md +51 -0
- package/presets/cursor/nuxt/commands/feature-continue.md +19 -0
- package/presets/cursor/nuxt/commands/feature-start.md +33 -0
- package/presets/cursor/nuxt/commands/task-continue.md +50 -0
- package/presets/cursor/nuxt/commands/task.md +56 -0
- package/presets/cursor/nuxt/commands/technical-retro.md +85 -0
- package/presets/cursor/nuxt/hooks/README.md +12 -0
- package/presets/cursor/nuxt/hooks/chain-team-phases.sh +727 -0
- package/presets/cursor/nuxt/hooks/examples/README.md +18 -0
- package/presets/cursor/nuxt/hooks/examples/format-edited.example.sh +11 -0
- package/presets/cursor/nuxt/hooks/examples/secret-guard.example.sh +10 -0
- package/presets/cursor/nuxt/hooks/examples/test-on-save.example.sh +8 -0
- package/presets/cursor/nuxt/hooks/guard-shell-command.sh +77 -0
- package/presets/cursor/nuxt/hooks.json +17 -0
- package/presets/cursor/nuxt/mcp.json +19 -0
- package/presets/cursor/nuxt/rules/README.md +108 -0
- package/presets/cursor/nuxt/rules/agent-team-intake.mdc +16 -0
- package/presets/cursor/nuxt/rules/agent-team-orchestrator.mdc +192 -0
- package/presets/cursor/nuxt/rules/anti-sycophancy-discipline.mdc +30 -0
- package/presets/cursor/nuxt/rules/api-services.mdc +79 -0
- package/presets/cursor/nuxt/rules/architecture-boundaries-ui.mdc +15 -0
- package/presets/cursor/nuxt/rules/architecture-boundaries.mdc +97 -0
- package/presets/cursor/nuxt/rules/code-quality-and-refactoring.mdc +52 -0
- package/presets/cursor/nuxt/rules/code-review-mr.mdc +58 -0
- package/presets/cursor/nuxt/rules/css-property-order-stylelint.mdc +12 -0
- package/presets/cursor/nuxt/rules/design-guidance.mdc +111 -0
- package/presets/cursor/nuxt/rules/feature-delivery-workflow.mdc +83 -0
- package/presets/cursor/nuxt/rules/http-client.mdc +15 -0
- package/presets/cursor/nuxt/rules/layer-barrel-exports.mdc +74 -0
- package/presets/cursor/nuxt/rules/navigation-router-stack.mdc +61 -0
- package/presets/cursor/nuxt/rules/navigation-router-ui.mdc +16 -0
- package/presets/cursor/nuxt/rules/no-type-assertion-as-import-export.mdc +60 -0
- package/presets/cursor/nuxt/rules/no-v-bind-spread.mdc +13 -0
- package/presets/cursor/nuxt/rules/nuxt-app-core.mdc +45 -0
- package/presets/cursor/nuxt/rules/nuxt-pages-routing.mdc +37 -0
- package/presets/cursor/nuxt/rules/package-manager.mdc +18 -0
- package/presets/cursor/nuxt/rules/playwright-agents.mdc +80 -0
- package/presets/cursor/nuxt/rules/post-change-lint.mdc +42 -0
- package/presets/cursor/nuxt/rules/preset-layering.mdc +36 -0
- package/presets/cursor/nuxt/rules/preset-no-cross-stack-leakage.mdc +83 -0
- package/presets/cursor/nuxt/rules/preset-pr-checklist.mdc +39 -0
- package/presets/cursor/nuxt/rules/preset-token-budget.mdc +41 -0
- package/presets/cursor/nuxt/rules/preset-twin-sync.mdc +54 -0
- package/presets/cursor/nuxt/rules/public-imports.mdc +62 -0
- package/presets/cursor/nuxt/rules/reference-features.mdc +49 -0
- package/presets/cursor/nuxt/rules/script-setup-conventions.mdc +13 -0
- package/presets/cursor/nuxt/rules/security-nuxt.mdc +34 -0
- package/presets/cursor/nuxt/rules/store-pinia.mdc +68 -0
- package/presets/cursor/nuxt/rules/technical-retro.mdc +16 -0
- package/presets/cursor/nuxt/rules/tests-e2e-structure.mdc +50 -0
- package/presets/cursor/nuxt/rules/tests-unit.mdc +77 -0
- package/presets/cursor/nuxt/rules/types-jsdoc.mdc +42 -0
- package/presets/cursor/nuxt/rules/vue-a11y-coding.mdc +15 -0
- package/presets/cursor/nuxt/rules/vue-nuxt-anti-hallucination.mdc +68 -0
- package/presets/cursor/nuxt/rules/vue-ui.mdc +33 -0
- package/presets/cursor/nuxt/skills/README.md +17 -0
- package/presets/cursor/nuxt/skills/ci-investigation/SKILL.md +36 -0
- package/presets/cursor/nuxt/skills/code-review/SKILL.md +38 -0
- package/presets/cursor/nuxt/skills/debug-investigation/SKILL.md +32 -0
- package/presets/cursor/nuxt/skills/feature-delivery/SKILL.md +34 -0
- package/presets/cursor/nuxt/skills/playwright-e2e/SKILL.md +37 -0
- package/presets/cursor/nuxt/skills/technical-retro/SKILL.md +54 -0
- package/presets/cursor/nuxt/skills/unit-testing/SKILL.md +32 -0
- package/presets/cursor/nuxt/skills/vue-performance/SKILL.md +53 -0
- package/presets/cursor/nuxt/skills/write-adr/SKILL.md +41 -0
- package/presets/cursor/nuxt/team/README.md +140 -0
- package/presets/cursor/nuxt/team/conventions.md +21 -0
- package/presets/cursor/nuxt/team/fixtures/artifact-manifest.example.json +61 -0
- package/presets/cursor/nuxt/team/fixtures/bugfix-standard.json +25 -0
- package/presets/cursor/nuxt/team/fixtures/feature-full.json +28 -0
- package/presets/cursor/nuxt/team/fixtures/feature-light.json +27 -0
- package/presets/cursor/nuxt/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json +69 -0
- package/presets/cursor/nuxt/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json +5 -0
- package/presets/cursor/nuxt/team/fixtures/metrics-scenarios/tasks/parallel-receipts/metrics.json +79 -0
- package/presets/cursor/nuxt/team/fixtures/metrics-scenarios/tasks/serial-retry/metrics.json +124 -0
- package/presets/cursor/nuxt/team/fixtures/metrics-scenarios/tasks/validation-failed/metrics.json +124 -0
- package/presets/cursor/nuxt/team/fixtures/metrics.example.json +54 -0
- package/presets/cursor/nuxt/team/tasks/.gitkeep +0 -0
- package/presets/cursor/php-hexagonal/AGENTS.md +11 -11
- package/presets/cursor/php-hexagonal/MCP.md +7 -7
- package/presets/cursor/php-hexagonal/agents/README.md +4 -4
- package/presets/cursor/php-hexagonal/agents/build-verifier.md +1 -1
- package/presets/cursor/php-hexagonal/agents/task-router.md +12 -12
- package/presets/cursor/php-hexagonal/commands/README.md +25 -25
- package/presets/cursor/php-hexagonal/commands/feature-continue.md +8 -8
- package/presets/cursor/php-hexagonal/commands/feature-start.md +17 -17
- package/presets/cursor/php-hexagonal/commands/task-continue.md +14 -14
- package/presets/cursor/php-hexagonal/commands/task.md +32 -32
- package/presets/cursor/php-hexagonal/commands/technical-retro.md +49 -49
- package/presets/cursor/php-hexagonal/rules/README.md +2 -2
- package/presets/cursor/php-hexagonal/rules/agent-team-intake.mdc +2 -2
- package/presets/cursor/php-hexagonal/rules/agent-team-orchestrator.mdc +4 -4
- package/presets/cursor/php-hexagonal/rules/architecture-boundaries.mdc +10 -10
- package/presets/cursor/php-hexagonal/rules/code-quality-and-refactoring.mdc +20 -20
- package/presets/cursor/php-hexagonal/rules/code-review-mr.mdc +4 -4
- package/presets/cursor/php-hexagonal/rules/design-guidance.mdc +54 -54
- package/presets/cursor/php-hexagonal/rules/php-app-core.mdc +10 -10
- package/presets/cursor/php-hexagonal/rules/post-change-test.mdc +1 -1
- package/presets/cursor/php-hexagonal/rules/preset-layering.mdc +12 -12
- package/presets/cursor/php-hexagonal/rules/preset-no-cross-stack-leakage.mdc +16 -2
- package/presets/cursor/php-hexagonal/rules/preset-pr-checklist.mdc +6 -6
- package/presets/cursor/php-hexagonal/rules/preset-token-budget.mdc +3 -3
- package/presets/cursor/php-hexagonal/rules/preset-twin-sync.mdc +4 -0
- package/presets/cursor/php-hexagonal/rules/technical-retro.mdc +3 -3
- package/presets/cursor/php-hexagonal/team/README.md +1 -1
- package/presets/cursor/php-laravel/AGENTS.md +10 -10
- package/presets/cursor/php-laravel/agents/README.md +4 -4
- package/presets/cursor/php-laravel/agents/build-verifier.md +1 -1
- package/presets/cursor/php-laravel/agents/task-router.md +14 -14
- package/presets/cursor/php-laravel/commands/README.md +25 -25
- package/presets/cursor/php-laravel/commands/feature-continue.md +8 -8
- package/presets/cursor/php-laravel/commands/feature-start.md +17 -17
- package/presets/cursor/php-laravel/commands/task-continue.md +14 -14
- package/presets/cursor/php-laravel/commands/task.md +32 -32
- package/presets/cursor/php-laravel/commands/technical-retro.md +50 -50
- package/presets/cursor/php-laravel/rules/README.md +2 -2
- package/presets/cursor/php-laravel/rules/agent-team-intake.mdc +2 -2
- package/presets/cursor/php-laravel/rules/agent-team-orchestrator.mdc +4 -4
- package/presets/cursor/php-laravel/rules/architecture-boundaries.mdc +11 -11
- package/presets/cursor/php-laravel/rules/code-quality-and-refactoring.mdc +20 -20
- package/presets/cursor/php-laravel/rules/code-review-mr.mdc +4 -5
- package/presets/cursor/php-laravel/rules/design-guidance.mdc +54 -54
- package/presets/cursor/php-laravel/rules/events-listeners.mdc +1 -1
- package/presets/cursor/php-laravel/rules/laravel-app-core.mdc +8 -8
- package/presets/cursor/php-laravel/rules/post-change-test.mdc +1 -1
- package/presets/cursor/php-laravel/rules/preset-layering.mdc +12 -12
- package/presets/cursor/php-laravel/rules/preset-no-cross-stack-leakage.mdc +16 -2
- package/presets/cursor/php-laravel/rules/preset-pr-checklist.mdc +6 -6
- package/presets/cursor/php-laravel/rules/preset-token-budget.mdc +3 -3
- package/presets/cursor/php-laravel/rules/preset-twin-sync.mdc +4 -0
- package/presets/cursor/php-laravel/rules/technical-retro.mdc +3 -3
- package/presets/cursor/php-laravel/team/README.md +1 -1
- package/presets/cursor/svelte/AGENTS.md +39 -0
- package/presets/cursor/svelte/BUGBOT.md +14 -0
- package/presets/cursor/svelte/MCP.md +16 -0
- package/presets/cursor/svelte/README.md +47 -0
- package/presets/cursor/svelte/REPO_AGENTS.md +49 -0
- package/presets/cursor/svelte/agents/README.md +206 -0
- package/presets/cursor/svelte/agents/accessibility-reviewer.md +60 -0
- package/presets/cursor/svelte/agents/api-contract-reviewer.md +64 -0
- package/presets/cursor/svelte/agents/build-verifier.md +90 -0
- package/presets/cursor/svelte/agents/ci-investigator.md +61 -0
- package/presets/cursor/svelte/agents/code-reviewer.md +63 -0
- package/presets/cursor/svelte/agents/codebase-analyzer.md +28 -0
- package/presets/cursor/svelte/agents/debugger.md +66 -0
- package/presets/cursor/svelte/agents/feature-developer.md +60 -0
- package/presets/cursor/svelte/agents/migration-specialist.md +68 -0
- package/presets/cursor/svelte/agents/performance-auditor.md +67 -0
- package/presets/cursor/svelte/agents/playwright-test-generator.md +27 -0
- package/presets/cursor/svelte/agents/playwright-test-healer.md +27 -0
- package/presets/cursor/svelte/agents/playwright-test-planner.md +28 -0
- package/presets/cursor/svelte/agents/qa-tester.md +55 -0
- package/presets/cursor/svelte/agents/security-reviewer.md +61 -0
- package/presets/cursor/svelte/agents/solution-architect.md +69 -0
- package/presets/cursor/svelte/agents/task-analyst.md +110 -0
- package/presets/cursor/svelte/agents/task-router.md +141 -0
- package/presets/cursor/svelte/agents/tech-writer.md +55 -0
- package/presets/cursor/svelte/agents/unit-test-generator.md +38 -0
- package/presets/cursor/svelte/agents/unit-test-healer.md +39 -0
- package/presets/cursor/svelte/agents/unit-test-planner.md +61 -0
- package/presets/cursor/svelte/commands/README.md +51 -0
- package/presets/cursor/svelte/commands/feature-continue.md +19 -0
- package/presets/cursor/svelte/commands/feature-start.md +33 -0
- package/presets/cursor/svelte/commands/task-continue.md +50 -0
- package/presets/cursor/svelte/commands/task.md +56 -0
- package/presets/cursor/svelte/commands/technical-retro.md +85 -0
- package/presets/cursor/svelte/hooks/README.md +12 -0
- package/presets/cursor/svelte/hooks/chain-team-phases.sh +727 -0
- package/presets/cursor/svelte/hooks/examples/README.md +18 -0
- package/presets/cursor/svelte/hooks/examples/format-edited.example.sh +13 -0
- package/presets/cursor/svelte/hooks/examples/secret-guard.example.sh +10 -0
- package/presets/cursor/svelte/hooks/examples/test-on-save.example.sh +14 -0
- package/presets/cursor/svelte/hooks/guard-shell-command.sh +77 -0
- package/presets/cursor/svelte/hooks.json +17 -0
- package/presets/cursor/svelte/mcp.json +19 -0
- package/presets/cursor/svelte/rules/README.md +86 -0
- package/presets/cursor/svelte/rules/agent-team-intake.mdc +16 -0
- package/presets/cursor/svelte/rules/agent-team-orchestrator.mdc +192 -0
- package/presets/cursor/svelte/rules/anti-sycophancy-discipline.mdc +30 -0
- package/presets/cursor/svelte/rules/api-services.mdc +46 -0
- package/presets/cursor/svelte/rules/architecture-boundaries-ui.mdc +15 -0
- package/presets/cursor/svelte/rules/architecture-boundaries.mdc +61 -0
- package/presets/cursor/svelte/rules/code-quality-and-refactoring.mdc +52 -0
- package/presets/cursor/svelte/rules/code-review-mr.mdc +58 -0
- package/presets/cursor/svelte/rules/css-property-order-stylelint.mdc +12 -0
- package/presets/cursor/svelte/rules/design-guidance.mdc +111 -0
- package/presets/cursor/svelte/rules/feature-delivery-workflow.mdc +55 -0
- package/presets/cursor/svelte/rules/http-client.mdc +16 -0
- package/presets/cursor/svelte/rules/layer-barrel-exports.mdc +74 -0
- package/presets/cursor/svelte/rules/navigation-router-stack.mdc +40 -0
- package/presets/cursor/svelte/rules/navigation-router-ui.mdc +25 -0
- package/presets/cursor/svelte/rules/no-rest-props-spread.mdc +32 -0
- package/presets/cursor/svelte/rules/no-type-assertion-as-import-export.mdc +60 -0
- package/presets/cursor/svelte/rules/package-manager.mdc +18 -0
- package/presets/cursor/svelte/rules/playwright-agents.mdc +80 -0
- package/presets/cursor/svelte/rules/post-change-lint.mdc +42 -0
- package/presets/cursor/svelte/rules/preset-layering.mdc +36 -0
- package/presets/cursor/svelte/rules/preset-no-cross-stack-leakage.mdc +83 -0
- package/presets/cursor/svelte/rules/preset-pr-checklist.mdc +39 -0
- package/presets/cursor/svelte/rules/preset-token-budget.mdc +41 -0
- package/presets/cursor/svelte/rules/preset-twin-sync.mdc +54 -0
- package/presets/cursor/svelte/rules/public-imports.mdc +45 -0
- package/presets/cursor/svelte/rules/reference-features.mdc +51 -0
- package/presets/cursor/svelte/rules/security-sveltekit.mdc +38 -0
- package/presets/cursor/svelte/rules/store-svelte.mdc +66 -0
- package/presets/cursor/svelte/rules/svelte-a11y-coding.mdc +27 -0
- package/presets/cursor/svelte/rules/svelte-app-core.mdc +45 -0
- package/presets/cursor/svelte/rules/svelte-script-conventions.mdc +33 -0
- package/presets/cursor/svelte/rules/svelte-sveltekit-anti-hallucination.mdc +69 -0
- package/presets/cursor/svelte/rules/svelte-ui.mdc +37 -0
- package/presets/cursor/svelte/rules/sveltekit-routing.mdc +39 -0
- package/presets/cursor/svelte/rules/technical-retro.mdc +16 -0
- package/presets/cursor/svelte/rules/tests-e2e-structure.mdc +50 -0
- package/presets/cursor/svelte/rules/tests-unit.mdc +42 -0
- package/presets/cursor/svelte/rules/types-jsdoc.mdc +42 -0
- package/presets/cursor/svelte/skills/README.md +17 -0
- package/presets/cursor/svelte/skills/ci-investigation/SKILL.md +36 -0
- package/presets/cursor/svelte/skills/code-review/SKILL.md +38 -0
- package/presets/cursor/svelte/skills/debug-investigation/SKILL.md +32 -0
- package/presets/cursor/svelte/skills/feature-delivery/SKILL.md +34 -0
- package/presets/cursor/svelte/skills/playwright-e2e/SKILL.md +37 -0
- package/presets/cursor/svelte/skills/svelte-performance/SKILL.md +52 -0
- package/presets/cursor/svelte/skills/technical-retro/SKILL.md +54 -0
- package/presets/cursor/svelte/skills/unit-testing/SKILL.md +32 -0
- package/presets/cursor/svelte/skills/write-adr/SKILL.md +41 -0
- package/presets/cursor/svelte/team/README.md +140 -0
- package/presets/cursor/svelte/team/conventions.md +21 -0
- package/presets/cursor/svelte/team/fixtures/artifact-manifest.example.json +61 -0
- package/presets/cursor/svelte/team/fixtures/bugfix-standard.json +25 -0
- package/presets/cursor/svelte/team/fixtures/feature-full.json +28 -0
- package/presets/cursor/svelte/team/fixtures/feature-light.json +27 -0
- package/presets/cursor/svelte/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json +69 -0
- package/presets/cursor/svelte/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json +5 -0
- package/presets/cursor/svelte/team/fixtures/metrics-scenarios/tasks/parallel-receipts/metrics.json +79 -0
- package/presets/cursor/svelte/team/fixtures/metrics-scenarios/tasks/serial-retry/metrics.json +124 -0
- package/presets/cursor/svelte/team/fixtures/metrics-scenarios/tasks/validation-failed/metrics.json +124 -0
- package/presets/cursor/svelte/team/fixtures/metrics.example.json +54 -0
- package/presets/cursor/svelte/team/tasks/.gitkeep +0 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Hooks cookbook (examples)
|
|
2
|
+
|
|
3
|
+
Optional scripts under `hooks/examples/`. **Not** referenced from default `hooks.json` (only `guard-shell-command.sh` + `chain-team-phases.sh`).
|
|
4
|
+
|
|
5
|
+
| Script | Purpose |
|
|
6
|
+
|--------|---------|
|
|
7
|
+
| `secret-guard.example.sh` | Fail if staged diff looks like secrets |
|
|
8
|
+
| `format-edited.example.sh` | Stack formatter / linter on edited files |
|
|
9
|
+
| `test-on-save.example.sh` | Scoped tests for the stack |
|
|
10
|
+
|
|
11
|
+
## Wiring (Cursor)
|
|
12
|
+
|
|
13
|
+
1. Copy an example into `hooks/` (drop `.example` suffix), e.g. `cp hooks/examples/secret-guard.example.sh hooks/secret-guard.sh`.
|
|
14
|
+
2. `chmod +x hooks/secret-guard.sh`.
|
|
15
|
+
3. Add a hook entry in `.cursor/hooks.json` (e.g. `beforeShellExecution` or `afterFileEdit` — see Cursor hooks docs).
|
|
16
|
+
4. Keep cookbook scripts **out** of the default preset `hooks.json` when contributing back upstream.
|
|
17
|
+
|
|
18
|
+
Stack: **svelte** — recipes must stay stack-safe (no cross-stack lint/test commands).
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Optional: format/lint edited JS/TS/Svelte at SvelteKit project root after save.
|
|
3
|
+
# NOT in default hooks.json. Cwd: directory with svelte.config.* (not Next-style app/).
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
ROOT="${CURSOR_PROJECT_DIR:-.}"
|
|
6
|
+
cd "$ROOT" 2>/dev/null || exit 0
|
|
7
|
+
[[ -f svelte.config.js || -f svelte.config.ts || -f svelte.config.mjs ]] || exit 0
|
|
8
|
+
# Prefer project scripts; adjust names to match package.json (see package-manager).
|
|
9
|
+
yarn lint --fix 2>/dev/null \
|
|
10
|
+
|| yarn eslint --fix . 2>/dev/null \
|
|
11
|
+
|| yarn check 2>/dev/null \
|
|
12
|
+
|| true
|
|
13
|
+
exit 0
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Optional cookbook: block committing likely secrets in staged diffs.
|
|
3
|
+
# NOT wired in default hooks.json — copy to hooks/ and register manually.
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
PATTERN='(AKIA[0-9A-Z]{16}|-----BEGIN (RSA |OPENSSH )?PRIVATE KEY-----|api[_-]?key\s*[:=]\s*['\''\"][^'\''\"]{12,})'
|
|
6
|
+
if git diff --cached -U0 2>/dev/null | grep -Eiq "$PATTERN"; then
|
|
7
|
+
echo "secret-guard: possible secret in staged diff — review before commit" >&2
|
|
8
|
+
exit 1
|
|
9
|
+
fi
|
|
10
|
+
exit 0
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Optional: scoped unit tests / check at SvelteKit project root.
|
|
3
|
+
# NOT in default hooks.json. No Playwright here.
|
|
4
|
+
# Cwd: directory with svelte.config.* (not Next-style app/).
|
|
5
|
+
set -euo pipefail
|
|
6
|
+
ROOT="${CURSOR_PROJECT_DIR:-.}"
|
|
7
|
+
cd "$ROOT" 2>/dev/null || exit 0
|
|
8
|
+
[[ -f svelte.config.js || -f svelte.config.ts || -f svelte.config.mjs ]] || exit 0
|
|
9
|
+
# Prefer Vitest related/run; fall back to package `test` / `check` (see package-manager).
|
|
10
|
+
yarn vitest related --run --passWithNoTests 2>/dev/null \
|
|
11
|
+
|| yarn test --run --passWithNoTests 2>/dev/null \
|
|
12
|
+
|| yarn check 2>/dev/null \
|
|
13
|
+
|| true
|
|
14
|
+
exit 0
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Lightweight shell guard for Claude projects using this preset.
|
|
3
|
+
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
|
|
6
|
+
input=$(cat)
|
|
7
|
+
|
|
8
|
+
INPUT="$input" node <<'NODE'
|
|
9
|
+
const fs = require('fs');
|
|
10
|
+
|
|
11
|
+
const raw = process.env.INPUT || '';
|
|
12
|
+
let event;
|
|
13
|
+
try {
|
|
14
|
+
event = JSON.parse(raw);
|
|
15
|
+
} catch {
|
|
16
|
+
process.stdout.write('{ "permission": "allow" }');
|
|
17
|
+
process.exit(0);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const command = String(event.command || event.input?.command || '');
|
|
21
|
+
if (!command.trim()) {
|
|
22
|
+
process.stdout.write('{ "permission": "allow" }');
|
|
23
|
+
process.exit(0);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function out(permission, userMessage, agentMessage) {
|
|
27
|
+
process.stdout.write(JSON.stringify({
|
|
28
|
+
permission,
|
|
29
|
+
user_message: userMessage,
|
|
30
|
+
agent_message: agentMessage || userMessage,
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const dangerousGit = /\bgit\s+(reset\s+--hard|clean\s+-[^\n]*f|push\s+--force|push\s+-f|checkout\s+--\s+)/;
|
|
35
|
+
if (dangerousGit.test(command)) {
|
|
36
|
+
out(
|
|
37
|
+
'ask',
|
|
38
|
+
'This command looks destructive for git state. Review it before continuing.',
|
|
39
|
+
'A project hook flagged a destructive git command. Ask the user before running it.',
|
|
40
|
+
);
|
|
41
|
+
process.exit(0);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const managerByFile = [
|
|
45
|
+
['yarn.lock', 'yarn'],
|
|
46
|
+
['pnpm-lock.yaml', 'pnpm'],
|
|
47
|
+
['package-lock.json', 'npm'],
|
|
48
|
+
].find(([file]) => fs.existsSync(file));
|
|
49
|
+
|
|
50
|
+
let expected = managerByFile?.[1];
|
|
51
|
+
if (!expected && fs.existsSync('package.json')) {
|
|
52
|
+
try {
|
|
53
|
+
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
|
|
54
|
+
const pm = typeof pkg.packageManager === 'string' ? pkg.packageManager : '';
|
|
55
|
+
expected = pm.split('@')[0] || undefined;
|
|
56
|
+
} catch {
|
|
57
|
+
// Ignore invalid package.json in the hook; the agent can diagnose it later.
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (!expected) {
|
|
62
|
+
process.stdout.write('{ "permission": "allow" }');
|
|
63
|
+
process.exit(0);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const used = command.match(/(^|[;&|]\s*)(npm|yarn|pnpm)\s+/)?.[2];
|
|
67
|
+
if (used && used !== expected) {
|
|
68
|
+
out(
|
|
69
|
+
'ask',
|
|
70
|
+
`This repository appears to use ${expected}, but the command uses ${used}. Confirm before continuing.`,
|
|
71
|
+
`Use ${expected} for package scripts and installs unless the user explicitly approves ${used}.`,
|
|
72
|
+
);
|
|
73
|
+
process.exit(0);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
process.stdout.write('{ "permission": "allow" }');
|
|
77
|
+
NODE
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"mcpServers": {
|
|
3
|
+
"context7": {
|
|
4
|
+
"command": "npx",
|
|
5
|
+
"args": ["-y", "@upstash/context7-mcp"]
|
|
6
|
+
},
|
|
7
|
+
"playwright-test": {
|
|
8
|
+
"command": "npx",
|
|
9
|
+
"args": ["-y", "@playwright/mcp@latest"]
|
|
10
|
+
},
|
|
11
|
+
"chrome-devtools": {
|
|
12
|
+
"command": "npx",
|
|
13
|
+
"args": ["-y", "chrome-devtools-mcp@latest"]
|
|
14
|
+
},
|
|
15
|
+
"figma": {
|
|
16
|
+
"type": "http",
|
|
17
|
+
"url": "https://mcp.figma.com/mcp"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# `.claude/rules` (preset svelte)
|
|
2
|
+
|
|
3
|
+
In Claude Code all `.md` under `rules/` are **discovered recursively**. Bodies are **derived** from Cursor SoT; indexes are not a second SoT.
|
|
4
|
+
|
|
5
|
+
## SoT sync
|
|
6
|
+
|
|
7
|
+
| Principle | Detail |
|
|
8
|
+
|-----------|--------|
|
|
9
|
+
| **SoT** | `presets/cursor/svelte/rules/*.mdc` — edit here first |
|
|
10
|
+
| **Derive** | Claude topic `.md` = body + `paths:` (from Cursor `globs:` / requestable triggers) |
|
|
11
|
+
| **Drop** | Cursor-only keys (`alwaysApply`); keep short `description` |
|
|
12
|
+
| **Checklist** | change Cursor → update Claude twin **same PR** (**FAIL** if missing — includes `svelte`; see `preset-twin-sync` / build-verifier) |
|
|
13
|
+
| **Shared core** | `presets/_shared/core/**` — see `<!-- shared-core: … -->` markers; taxonomy in `_shared/README.md` |
|
|
14
|
+
|
|
15
|
+
## Loading strategy
|
|
16
|
+
|
|
17
|
+
- **Session start (no `paths:`):** exactly **3** — `svelte-app-core`, `package-manager`, `code-quality`
|
|
18
|
+
- **On-demand (`paths:` or via commands):** `post-change-lint`, `security-sveltekit`, architecture, UI, tests, `svelte-sveltekit-anti-hallucination`, **preset-*** meta, …
|
|
19
|
+
- **Skills:** `feature-delivery`, `svelte-performance`, `code-review`, …
|
|
20
|
+
|
|
21
|
+
## Cursor → Claude mapping
|
|
22
|
+
|
|
23
|
+
| Cursor `.mdc` (SoT) | Claude topic |
|
|
24
|
+
|---------------------|--------------|
|
|
25
|
+
| `svelte-app-core.mdc` | `stack/svelte-app-core.md` |
|
|
26
|
+
| `package-manager.mdc` | `tooling-and-review/package-manager.md` |
|
|
27
|
+
| `code-quality-and-refactoring.mdc` | `tooling-and-review/code-quality.md` |
|
|
28
|
+
| `anti-sycophancy-discipline.mdc` | `tooling-and-review/anti-sycophancy-discipline.md` |
|
|
29
|
+
| `svelte-sveltekit-anti-hallucination.mdc` | `anti-hallucination/svelte-sveltekit-anti-hallucination.md` |
|
|
30
|
+
| `design-guidance.mdc` | `tooling-and-review/design-guidance.md` |
|
|
31
|
+
| `sveltekit-routing.mdc` | `stack/sveltekit-routing.md` |
|
|
32
|
+
| `svelte-script-conventions.mdc` | `stack/svelte-script-conventions.md` |
|
|
33
|
+
| `types-jsdoc.mdc` | `stack/types-jsdoc.md` |
|
|
34
|
+
| `no-type-assertion-as-import-export.mdc` | `stack/no-type-assertion.md` |
|
|
35
|
+
| `navigation-router-stack.mdc` | `stack/navigation-router.md` |
|
|
36
|
+
| `navigation-router-ui.mdc` | `stack/navigation-router-ui.md` |
|
|
37
|
+
| `architecture-boundaries.mdc` | `architecture/architecture-boundaries.md` |
|
|
38
|
+
| `architecture-boundaries-ui.mdc` | `architecture/architecture-boundaries-ui.md` |
|
|
39
|
+
| `feature-delivery-workflow.mdc` | `architecture/feature-delivery-workflow.md` |
|
|
40
|
+
| `reference-features.mdc` | `architecture/reference-features.md` |
|
|
41
|
+
| `public-imports.mdc` | `architecture/public-imports.md` |
|
|
42
|
+
| `layer-barrel-exports.mdc` | `architecture/layer-barrel-exports.md` |
|
|
43
|
+
| `api-services.mdc` | `api-and-data/api-services.md` |
|
|
44
|
+
| `http-client.mdc` | `api-and-data/http-client.md` |
|
|
45
|
+
| `store-svelte.mdc` | `api-and-data/store-svelte.md` |
|
|
46
|
+
| `svelte-ui.mdc` | `ui-and-accessibility/svelte-ui.md` |
|
|
47
|
+
| `svelte-a11y-coding.mdc` | `ui-and-accessibility/svelte-a11y-coding.md` |
|
|
48
|
+
| `no-rest-props-spread.mdc` | `ui-and-accessibility/no-rest-props-spread.md` |
|
|
49
|
+
| `css-property-order-stylelint.mdc` | `ui-and-accessibility/css-property-order.md` |
|
|
50
|
+
| `tests-unit.mdc` | `testing/tests-unit.md` |
|
|
51
|
+
| `tests-e2e-structure.mdc` | `testing/tests-e2e-structure.md` |
|
|
52
|
+
| `playwright-agents.mdc` | `testing/playwright-agents.md` |
|
|
53
|
+
| `post-change-lint.mdc` | `tooling-and-review/post-change-lint.md` |
|
|
54
|
+
| `code-review-mr.mdc` | `tooling-and-review/code-review-mr.md` |
|
|
55
|
+
| `security-sveltekit.mdc` | `tooling-and-review/security-sveltekit.md` |
|
|
56
|
+
| `agent-team-intake.mdc` | `tooling-and-review/agent-team-intake.md` |
|
|
57
|
+
| `agent-team-orchestrator.mdc` | `tooling-and-review/agent-team-orchestrator.md` |
|
|
58
|
+
| `technical-retro.mdc` | `tooling-and-review/technical-retro.md` |
|
|
59
|
+
| `preset-layering.mdc` | `tooling-and-review/preset-layering.md` |
|
|
60
|
+
| `preset-twin-sync.mdc` | `tooling-and-review/preset-twin-sync.md` |
|
|
61
|
+
| `preset-token-budget.mdc` | `tooling-and-review/preset-token-budget.md` |
|
|
62
|
+
| `preset-pr-checklist.mdc` | `tooling-and-review/preset-pr-checklist.md` |
|
|
63
|
+
| `preset-no-cross-stack-leakage.mdc` | `tooling-and-review/preset-no-cross-stack-leakage.md` |
|
|
64
|
+
|
|
65
|
+
## Core → stack mapping
|
|
66
|
+
|
|
67
|
+
| Shared core | Cursor adapter | Notes |
|
|
68
|
+
|-------------|----------------|-------|
|
|
69
|
+
| `quality/code-quality-and-refactoring.md` | `code-quality-and-refactoring.mdc` / `code-quality.md` | + Stack notes (ESLint/Svelte/CSS) |
|
|
70
|
+
| `quality/anti-sycophancy-discipline.md` | `anti-sycophancy-discipline.mdc` | requestable |
|
|
71
|
+
| `quality/design-guidance.md` | `design-guidance.mdc` | requestable |
|
|
72
|
+
| `agent-team/agent-team-orchestrator.md` | `agent-team-orchestrator.mdc` | Roles in Stack notes |
|
|
73
|
+
| `agent-team/agent-team-intake.md` | `agent-team-intake.mdc` | thin alias |
|
|
74
|
+
| `architecture/feature-delivery-workflow.md` | `feature-delivery-workflow.mdc` | SvelteKit layer checklist |
|
|
75
|
+
| `architecture/reference-features.template.md` | `reference-features.mdc` | path table |
|
|
76
|
+
| `review/code-review-mr.md` | `code-review-mr.mdc` | SvelteKit checklist refs |
|
|
77
|
+
| `review/technical-retro.md` | `technical-retro.mdc` | thin alias |
|
|
78
|
+
| `meta/preset-*.md` | `preset-*.mdc` | author globs only |
|
|
79
|
+
|
|
80
|
+
## Folders
|
|
81
|
+
|
|
82
|
+
| Folder | Contents |
|
|
83
|
+
|--------|----------|
|
|
84
|
+
| `stack/` | app-core, routing, script conventions, types |
|
|
85
|
+
| `architecture/` | boundaries, public imports, feature delivery |
|
|
86
|
+
| `api-and-data/` | store-svelte, http-client, api-services |
|
|
87
|
+
| `ui-and-accessibility/` | svelte-ui, a11y, rest-props, css order |
|
|
88
|
+
| `testing/` | unit, e2e, playwright agents |
|
|
89
|
+
| `tooling-and-review/` | lint, security, agent-team, preset meta |
|
|
90
|
+
| `anti-hallucination/` | svelte-sveltekit-anti-hallucination |
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Svelte/SvelteKit anti-hallucination banlist — phantom imports, load/server APIs, stores/runes
|
|
3
|
+
paths:
|
|
4
|
+
- "**/*.{svelte,ts,js}"
|
|
5
|
+
- src/routes/**/*
|
|
6
|
+
- src/lib/**/*
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Svelte / SvelteKit anti-hallucination
|
|
10
|
+
|
|
11
|
+
These rows **OVERRIDE** generation for the listed patterns. Before inventing an import, load helper, or store API: verify against `package.json` (installed majors), `svelte.config.*`, and sibling files. If unsure, mark `// VERIFY: lib.symbol @ version` and surface the uncertainty — do not silently stub.
|
|
12
|
+
|
|
13
|
+
## 1. Phantom `$app/*` / Kit modules
|
|
14
|
+
|
|
15
|
+
| ❌ Avoid | ✅ Prefer |
|
|
16
|
+
|---------|----------|
|
|
17
|
+
| Invented `$app/foo`, `$app/router`, `$app/auth` | Real `$app/navigation`, `$app/stores`, `$app/forms`, `$app/environment`, `$app/paths`, `$app/state` **for installed major** |
|
|
18
|
+
| Importing Next `next/navigation` / `next/link` | `$app/navigation`, `<a href>` |
|
|
19
|
+
| `navigateTo`, `<NuxtLink>`, `#imports` auto-import phantoms | Kit APIs + explicit imports that exist in repo |
|
|
20
|
+
| Invented `@sveltejs/kit` helpers not in docs/lockfile | Documented Kit exports for installed version |
|
|
21
|
+
|
|
22
|
+
## 2. Load / page data signatures
|
|
23
|
+
|
|
24
|
+
| ❌ Avoid | ✅ Prefer |
|
|
25
|
+
|---------|----------|
|
|
26
|
+
| Invented `PageLoad` / `LayoutServerLoad` shapes from blogs | Types from `./$types` generated for the route; match siblings |
|
|
27
|
+
| Returning random keys without `data` contract | Follow existing `+page(.server).ts` return shapes |
|
|
28
|
+
| Calling React `getServerSideProps` / Nuxt `useAsyncData` in Kit | `load` / form actions / `$lib/api` |
|
|
29
|
+
|
|
30
|
+
## 3. Form actions / enhance
|
|
31
|
+
|
|
32
|
+
| ❌ Avoid | ✅ Prefer |
|
|
33
|
+
|---------|----------|
|
|
34
|
+
| Phantom `enhance` option bags siblings never use | `$app/forms` `enhance` patterns from neighbors + Kit docs |
|
|
35
|
+
| Invented `fail` / `redirect` import paths | `@sveltejs/kit` exports verified for major |
|
|
36
|
+
| Posting secrets from client form without server action | `+page.server.ts` actions + `$env` discipline |
|
|
37
|
+
|
|
38
|
+
## 4. `$env/*` misuse
|
|
39
|
+
|
|
40
|
+
| ❌ Avoid | ✅ Prefer |
|
|
41
|
+
|---------|----------|
|
|
42
|
+
| `$env/static/private` / private dynamic env in `.svelte` client | Private env only in `.server.ts` / hooks / `+server.ts` |
|
|
43
|
+
| Invented `$env/secret` | `$env/static/public`, `$env/static/private`, `$env/dynamic/*` as documented |
|
|
44
|
+
|
|
45
|
+
## 5. Runes vs stores
|
|
46
|
+
|
|
47
|
+
| ❌ Avoid | ✅ Prefer |
|
|
48
|
+
|---------|----------|
|
|
49
|
+
| `import { $state } from 'svelte/store'` (wrong) | Runes are language/runtime — follow Svelte 5 docs / neighbors |
|
|
50
|
+
| Pinia `defineStore` / RTK `createSlice` | `store-svelte` — writable/derived/readable or runes modules |
|
|
51
|
+
| Invented `createRuneStore` helpers | Patterns already in `src/lib/stores/**` |
|
|
52
|
+
|
|
53
|
+
## 6. Cross-stack APIs (banned as defaults)
|
|
54
|
+
|
|
55
|
+
| ❌ Avoid | ✅ Prefer |
|
|
56
|
+
|---------|----------|
|
|
57
|
+
| React hooks (`useEffect`, `useState` from `react`) | Svelte reactivity / runes / stores |
|
|
58
|
+
| RSC / `next/navigation` / `next/image` | Kit routes + `$app/*` |
|
|
59
|
+
| Vue/Nuxt: `ref`, `defineStore`, `useFetch`, `navigateTo` | Svelte / Kit equivalents above |
|
|
60
|
+
|
|
61
|
+
## 7. Paths / gates / spreads
|
|
62
|
+
|
|
63
|
+
| ❌ Avoid | ✅ Prefer |
|
|
64
|
+
|---------|----------|
|
|
65
|
+
| E2E under `app/__tests__/e2e` | `tests/e2e/**` |
|
|
66
|
+
| Required script named `typecheck` / `type-check` | Package script **`check`** (`svelte-kit sync && svelte-check`) |
|
|
67
|
+
| Unlimited `{...props}` / `$$restProps` as default | Explicit props (`no-rest-props-spread`) |
|
|
68
|
+
| Server-only modules imported into client components | Keep private env / Node APIs in `.server.ts` |
|
|
69
|
+
| Vue-style auto-import of missing symbols | Explicit `$lib` / `$app` imports that exist |
|
|
70
|
+
|
|
71
|
+
When a row conflicts with a verified sibling pattern in this repo, **the sibling wins** — update this banlist in a preset PR rather than inventing a third path.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# API and data
|
|
2
|
+
|
|
3
|
+
HTTP transport, services, Svelte stores/runes store.
|
|
4
|
+
|
|
5
|
+
| File | Contents | `paths:` |
|
|
6
|
+
|------|----------|----------|
|
|
7
|
+
| `http-client.md` | Shared HTTP client, errors, link to store | `src/lib/clients/**`, `src/lib/clients/**` |
|
|
8
|
+
| `api-services.md` | Services, mappers, DTO → domain | `api/services/**` |
|
|
9
|
+
| `store-svelte.md` | Svelte stores/runes, actions, typing | `src/lib/stores/**` |
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Conventions for API services and mappers (SvelteKit $lib/api)
|
|
3
|
+
paths:
|
|
4
|
+
- src/lib/api/**/*.ts
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Role of the API layer
|
|
8
|
+
|
|
9
|
+
- Encapsulate HTTP via clients in `src/lib/clients/**` (`http-client`), URLs, headers, DTOs.
|
|
10
|
+
- Provide UI and store a **stable domain interface** — functions with domain types from `$lib/types` + DTO↔domain mappers.
|
|
11
|
+
- May call relative `+server.ts` routes (`/api/...`) for BFF — still through services, not from `.svelte`.
|
|
12
|
+
|
|
13
|
+
# Structure
|
|
14
|
+
|
|
15
|
+
- Service directories under `src/lib/api/services/**` (or the neighbor scheme).
|
|
16
|
+
- Outside the layer — only barrel `src/lib/api/index.ts` (`public-imports`, `layer-barrel-exports`).
|
|
17
|
+
|
|
18
|
+
# Mappers
|
|
19
|
+
|
|
20
|
+
- Pure functions; UI/store see domain models, not raw DTOs.
|
|
21
|
+
- Do not call `fetch` directly in the service body — only through the client / `event.fetch` patterns documented in the repo.
|
|
22
|
+
|
|
23
|
+
# Errors
|
|
24
|
+
|
|
25
|
+
- Do not swallow errors; throw unified / Result-like forms as in the project.
|
|
26
|
+
- APM — centrally in the client, not in every method.
|
|
27
|
+
|
|
28
|
+
# Incorrect / Correct
|
|
29
|
+
|
|
30
|
+
```ts
|
|
31
|
+
// ❌ DTO leak
|
|
32
|
+
export const getCard = async (id: string) => {
|
|
33
|
+
const data = await cardsClient.get(`/cards/${id}`)
|
|
34
|
+
return data
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// ✅
|
|
38
|
+
import type { TCard } from '$lib/types'
|
|
39
|
+
import { mapCardResponse } from './cardResponseMappers'
|
|
40
|
+
|
|
41
|
+
export const getCard = async (id: string): Promise<TCard> => {
|
|
42
|
+
const data = await cardsClient.get(`/cards/${id}`)
|
|
43
|
+
return mapCardResponse(data)
|
|
44
|
+
}
|
|
45
|
+
```
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: HTTP client wrapper for SvelteKit — fetch, one stack, error contracts
|
|
3
|
+
paths:
|
|
4
|
+
- src/lib/clients/**/*.ts
|
|
5
|
+
- src/lib/api/**/*.ts
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# HTTP client
|
|
9
|
+
|
|
10
|
+
- One HTTP stack for the app: wrap **`fetch`** (or the shared client already in `src/lib/clients/**`).
|
|
11
|
+
- Do not mix ad-hoc `axios`/`ky` in features if a shared client exists.
|
|
12
|
+
- Services in `src/lib/api/**` call the wrapper — UI/stores do not own transport.
|
|
13
|
+
- In `load` / form actions, prefer the provided `event.fetch` for same-origin SSR cookie forwarding when calling own endpoints.
|
|
14
|
+
- Map responses to domain models in services/mappers before stores/runes.
|
|
15
|
+
- Errors: use project transport error types from `$lib/types`; narrow with `instanceof` when available.
|
|
16
|
+
- Base URL / auth: from `$env/*` / existing client factories — do not hardcode secrets.
|
|
17
|
+
- Calling relative `/api/*` (`+server.ts` BFF) from the client is fine when that is the repo pattern — still through services.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Svelte stores and runes — client state (SvelteKit)
|
|
3
|
+
paths:
|
|
4
|
+
- src/lib/stores/**/*.ts
|
|
5
|
+
- src/lib/stores/**/*.js
|
|
6
|
+
- **/*.svelte.ts
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Shared principles
|
|
10
|
+
|
|
11
|
+
- **Primary (Svelte 5):** runes in `.svelte` / `.svelte.ts` — `$state`, `$derived`, `$effect`, `$props`, `$bindable` as applicable.
|
|
12
|
+
- **Secondary (legacy / shared):** `writable` / `derived` / `readable` from `svelte/store` when neighbors do so or for shared state outside runes — “follow neighbors”.
|
|
13
|
+
- Store / shared modules hold **domain models**, not raw DTOs.
|
|
14
|
+
- DTO → domain mapping — in `src/lib/api/**` (or server mappers) **before** writing to store/runes.
|
|
15
|
+
- UI-only flags may stay local in the component (`$state`) if that is the repo convention.
|
|
16
|
+
|
|
17
|
+
# Forbidden in this preset
|
|
18
|
+
|
|
19
|
+
- RTK / Redux: `createSlice`, `createAsyncThunk`, RTK Query, `useDispatch` / `useSelector`, stem `store-rtk`.
|
|
20
|
+
- Pinia / Vuex: `defineStore`, stem `store-pinia`.
|
|
21
|
+
- Raw `fetch` from the store bypassing `$lib/api` services (except narrow documented repo exceptions).
|
|
22
|
+
- Importing `$state` / runes from invented packages — only Svelte runtime / documented APIs for the installed major.
|
|
23
|
+
|
|
24
|
+
# Structure
|
|
25
|
+
|
|
26
|
+
- Domain module — file under `src/lib/stores/**` (e.g. `src/lib/stores/profile.ts` or `profile.svelte.ts`).
|
|
27
|
+
- Export explicit store factories / rune modules; names as neighbors use.
|
|
28
|
+
- Actions / functions call services from `$lib/api` (`public-imports`).
|
|
29
|
+
|
|
30
|
+
# Async
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
// Incorrect — raw HTTP + DTO in state
|
|
34
|
+
import { writable } from 'svelte/store'
|
|
35
|
+
export const profile = writable(null)
|
|
36
|
+
export async function loadProfile() {
|
|
37
|
+
profile.set(await fetch('/api/profile').then((r) => r.json()))
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Correct
|
|
41
|
+
import { writable } from 'svelte/store'
|
|
42
|
+
import { profileApi } from '$lib/api'
|
|
43
|
+
import type { Profile } from '$lib/types'
|
|
44
|
+
|
|
45
|
+
export const profile = writable<Profile | null>(null)
|
|
46
|
+
|
|
47
|
+
export async function loadProfile() {
|
|
48
|
+
profile.set(await profileApi.getProfile())
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
# Typing and errors
|
|
53
|
+
|
|
54
|
+
- Domain types from `$lib/types` (or `@/types` if aliased).
|
|
55
|
+
- Transport errors — contracts from types / the accepted client class (`http-client`).
|
|
56
|
+
- In UI: `$profile` / subscribe / `$derived` — follow neighbors.
|
|
57
|
+
|
|
58
|
+
# Testing
|
|
59
|
+
|
|
60
|
+
- Cover important stores / rune modules (init, transitions, actions with mocked API).
|
|
61
|
+
- Unit: Vitest; mock `$lib/api` services.
|
|
62
|
+
|
|
63
|
+
# Agent requirement
|
|
64
|
+
|
|
65
|
+
- Do not put HTTP/transport in components.
|
|
66
|
+
- Strictly type state/actions.
|
|
67
|
+
- Follow the style of neighboring stores / runes modules.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Architecture rules
|
|
2
|
+
|
|
3
|
+
| File | Purpose |
|
|
4
|
+
|------|---------|
|
|
5
|
+
| `public-imports.md` | Imports `@/types`, `@/types/enums`, `@/api` (outside `src/lib/api/**`) |
|
|
6
|
+
| `architecture-boundaries-ui.md` | Slim UI boundaries when editing components |
|
|
7
|
+
| `architecture-boundaries.md` | Full UI / store / API map (api, store, types, lib) |
|
|
8
|
+
| `layer-barrel-exports.md` | Two-level barrels for layers with a public API |
|
|
9
|
+
| `feature-delivery-workflow.md` | End-to-end checklist for a new feature |
|
|
10
|
+
| `reference-features.md` | Reference paths for UI/store/API/types |
|
|
11
|
+
|
|
12
|
+
Deprecated stubs `types-public-imports.md` / `api-public-imports.md` **removed** — use `public-imports.md`.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: UI layer boundaries — slim rule for component edits (without the full store/API map)
|
|
3
|
+
paths:
|
|
4
|
+
- src/lib/components/**/*
|
|
5
|
+
- src/routes/**/*
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# UI layer boundaries (slim)
|
|
9
|
+
|
|
10
|
+
- **Imports:** `src/lib/components/**`, facades under `src/lib/**`, `src/lib/stores/**` (public), types from `$lib/types` / `@/types`, API — only `$lib/api` / `@/api` (`public-imports`).
|
|
11
|
+
- **Forbidden:** direct HTTP client (`fetch` outside `src/lib/clients`); knowing DTOs — domain types only.
|
|
12
|
+
- **State:** write scenarios — via `store-svelte` (stores / runes); narrow direct `$lib/api` reads — only as in neighboring features.
|
|
13
|
+
- **Organization:** `$lib` / `@/`; no deep imports into other features; public API only.
|
|
14
|
+
- **Barrel:** when adding public symbols — re-export per `layer-barrel-exports`.
|
|
15
|
+
|
|
16
|
+
Full layer map: **`architecture-boundaries`** — when editing `src/lib/api`, `src/lib/stores`, `src/lib/types`, `src/lib/clients`.
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Architectural boundaries and import rules (SvelteKit)
|
|
3
|
+
paths:
|
|
4
|
+
- src/lib/api/**/*
|
|
5
|
+
- src/lib/stores/**/*
|
|
6
|
+
- src/lib/types/**/*
|
|
7
|
+
- src/lib/clients/**/*
|
|
8
|
+
- src/lib/components/**/*
|
|
9
|
+
- src/routes/**/*
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Boundaries between layers
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
src/routes (+page/+layout) / src/lib/components
|
|
16
|
+
→ src/lib facades (optional)
|
|
17
|
+
→ src/lib/stores ──→ src/lib/api (services barrel)
|
|
18
|
+
↘︎ src/lib/types
|
|
19
|
+
→ src/lib/api (read-only / narrow cases) ──→ src/lib/clients (fetch)
|
|
20
|
+
+server.ts / hooks.server.ts ──→ types / shared pure utils
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
- **UI (`src/routes/**`, `src/lib/components/**`)**:
|
|
24
|
+
- May import: components, facades, `src/lib/stores/**` (public), types from `$lib/types` / `@/types`, API — **only** from `$lib/api` / `@/api` (`public-imports`).
|
|
25
|
+
- Must not: call the HTTP client directly; know backend DTOs.
|
|
26
|
+
- **Store (`src/lib/stores/**`)** — `store-svelte`:
|
|
27
|
+
- May import: other stores (public), `$lib/api`, `$lib/types`.
|
|
28
|
+
- Must not: depend on UI; reach `src/lib/clients` bypassing services.
|
|
29
|
+
- **API (`src/lib/api/**`)**:
|
|
30
|
+
- Services + mappers; HTTP via `src/lib/clients/**`.
|
|
31
|
+
- Must not: pull UI or store.
|
|
32
|
+
- **Server (`+server.ts`, hooks)**:
|
|
33
|
+
- Edge/BFF; secrets via `$env/static/private`; do not replace `src/lib/api/**` domain services.
|
|
34
|
+
|
|
35
|
+
## UI and API access
|
|
36
|
+
|
|
37
|
+
- Scenarios that change server state — via store actions / rune modules.
|
|
38
|
+
- Direct `$lib/api` calls from UI — only narrow read-only cases that do not duplicate a store scenario.
|
|
39
|
+
- Facades under `src/lib/**` — thin orchestration (not Vue `composables/`).
|
|
40
|
+
|
|
41
|
+
## Import rules
|
|
42
|
+
|
|
43
|
+
- Between layers — `$lib/…` (preferred) or `@/…` if configured; respect `$app/*` / `$env/*` without phantoms.
|
|
44
|
+
- Inside a feature — relative without climbing above the feature root.
|
|
45
|
+
- Outside a layer — public barrels only (`layer-barrel-exports`, `public-imports`).
|
|
46
|
+
|
|
47
|
+
## Forbidden as defaults
|
|
48
|
+
|
|
49
|
+
- RTK / Pinia / Vuex; stems `store-rtk` / `store-pinia`.
|
|
50
|
+
- Next `app/src/**`, Nuxt `pages/**` / `composables/**` as canon.
|
|
51
|
+
|
|
52
|
+
## Incorrect
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
import { httpClient } from '$lib/clients/http'
|
|
56
|
+
// UI / page calling transport directly
|
|
57
|
+
await httpClient.get('/orders')
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Correct
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
import { loadOrders } from '$lib/stores/orders'
|
|
64
|
+
await loadOrders()
|
|
65
|
+
```
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: End-to-end checklist for a new feature and the “layer → Cursor rule” matrix. Use when implementing features via feature-developer or feature-delivery skill.
|
|
3
|
+
paths:
|
|
4
|
+
- src/routes/**/*
|
|
5
|
+
- src/lib/components/**/*
|
|
6
|
+
- src/lib/stores/**/*
|
|
7
|
+
- api/**/*
|
|
8
|
+
- src/lib/**/*
|
|
9
|
+
- types/**/*
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<!-- shared-core: architecture/feature-delivery-workflow.md -->
|
|
13
|
+
|
|
14
|
+
# Feature delivery (end-to-end order)
|
|
15
|
+
|
|
16
|
+
## Stack notes
|
|
17
|
+
|
|
18
|
+
Typical feature with backend data and shared state. Layer details — `architecture-boundaries.mdc`, `svelte-app-core.mdc`.
|
|
19
|
+
|
|
20
|
+
Canonical paths: `src/routes/**`, `src/lib/{components,stores,api,clients,types}/**`, `tests/e2e/**`. Aliases: `$lib` preferred; `@/` if configured. State: `store-svelte` (runes primary; legacy stores secondary).
|
|
21
|
+
|
|
22
|
+
## Checklist (work order)
|
|
23
|
+
|
|
24
|
+
1. **Domain types** — `src/lib/types/**`, barrel (`public-imports`, `layer-barrel-exports`); JSDoc — `types-jsdoc`.
|
|
25
|
+
2. **API contract** — DTOs where the repo uses them; domain types in `$lib/types`.
|
|
26
|
+
3. **Mappers** — DTO → domain in `*responseMappers.ts` (`api-services`).
|
|
27
|
+
4. **Services** — clients `src/lib/clients/**`, barrel `$lib/api` (`api-services`, `http-client`). No `fetch` from UI/store.
|
|
28
|
+
5. **State** — `src/lib/stores/**` / runes (`store-svelte`); actions → `$lib/api`. **Not** RTK / Pinia.
|
|
29
|
+
6. **UI** — `src/routes/**`, `src/lib/components/**`; data via store / facades / `load`.
|
|
30
|
+
7. **Unit** — colocated `*.spec.ts` (Vitest + Testing Library Svelte).
|
|
31
|
+
8. **E2E** — `tests/e2e/<Area>/<plan>.cases.md` + `*.spec.ts`.
|
|
32
|
+
9. **Gate** — `post-change-lint`: `lint:js`, `lint:css`, `check`.
|
|
33
|
+
|
|
34
|
+
## Partial scenarios
|
|
35
|
+
|
|
36
|
+
| Task | Minimum |
|
|
37
|
+
|------|---------|
|
|
38
|
+
| API + types only | Types, service, mappers, `$lib/api` barrel; unit for mapper. |
|
|
39
|
+
| Store only | Store/runes actions on `$lib/api`. |
|
|
40
|
+
| UI only | Store/`load` data; no HTTP/DTO. |
|
|
41
|
+
| E2E only | `*.cases.md` + spec; page object. |
|
|
42
|
+
|
|
43
|
+
## Anti-patterns
|
|
44
|
+
|
|
45
|
+
- DTO in UI or untyped store.
|
|
46
|
+
- HTTP from a component / store bypassing the service.
|
|
47
|
+
- Deep-import `$lib/api/services/**` from UI/store.
|
|
48
|
+
- `{...props}` / `$$restProps` without discipline — `no-rest-props-spread`.
|
|
49
|
+
- RTK / Pinia / Vue / Nuxt APIs as defaults.
|
|
50
|
+
- Load `design-guidance` when assessing structure / smells.
|
|
51
|
+
|
|
52
|
+
## Zone → rules matrix
|
|
53
|
+
|
|
54
|
+
| Zone | Rules |
|
|
55
|
+
|------|-------|
|
|
56
|
+
| `src/lib/clients/**` | `http-client`, `tests-unit` |
|
|
57
|
+
| `src/lib/api/**` | `api-services`, `layer-barrel-exports`, `http-client` |
|
|
58
|
+
| `src/lib/stores/**` | `store-svelte`, `architecture-boundaries`, `public-imports` |
|
|
59
|
+
| `src/lib/components/**`, `src/routes/**` | `svelte-ui`, `no-rest-props-spread`, `public-imports` |
|
|
60
|
+
| `src/lib/types/**` | `public-imports`, `types-jsdoc`, `layer-barrel-exports` |
|
|
61
|
+
| `tests/e2e/**` | `tests-e2e-structure`, `playwright-agents` |
|