@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,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Two-level barrel exports for layers with a regulated public API
|
|
3
|
+
paths:
|
|
4
|
+
- **/index.ts
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Barrel exports for layers with a public API
|
|
8
|
+
|
|
9
|
+
## When to apply
|
|
10
|
+
|
|
11
|
+
For **any layer** (directory, package, bounded context) that has:
|
|
12
|
+
|
|
13
|
+
- a **root barrel** — single import point for external consumers;
|
|
14
|
+
- deep imports into the layer **forbidden** from outside (ESLint `no-restricted-imports`, `public-imports.mdc` rules).
|
|
15
|
+
|
|
16
|
+
Example alias/entry points across projects: `@/api`, `@/types`, `@/core`, `@/store`, `packages/foo`.
|
|
17
|
+
|
|
18
|
+
## Two barrel levels
|
|
19
|
+
|
|
20
|
+
1. **Local** — `index.ts` of a module/feature inside the layer.
|
|
21
|
+
2. **Root public API** — layer barrel (e.g. `src/<layer>/index.ts`).
|
|
22
|
+
|
|
23
|
+
**Inside** the layer — relative imports and paths between submodules. **Outside** — only the root barrel and **explicitly allowed** secondary entry points (if fixed in project rules, e.g. `@/types/enums`).
|
|
24
|
+
|
|
25
|
+
## What to re-export outward
|
|
26
|
+
|
|
27
|
+
Only symbols that **must be available** to layer consumers: public functions/services/facades, contract types, constants and helpers needed by other layers or tests.
|
|
28
|
+
|
|
29
|
+
**Do not re-export:** internal adapters, mappers, transport details, intermediate objects used to assemble a facade inside the layer.
|
|
30
|
+
|
|
31
|
+
Grouping in the root barrel — **per repository convention** (orient on neighboring modules of the same layer).
|
|
32
|
+
|
|
33
|
+
## Agent checklist (required)
|
|
34
|
+
|
|
35
|
+
When adding or substantially extending a **module inside a regulated layer**:
|
|
36
|
+
|
|
37
|
+
1. Identify the layer, its **root barrel**, and extra entry points (`public-imports.mdc`).
|
|
38
|
+
2. Create/update the **local** `index.ts` — public symbols only.
|
|
39
|
+
3. If the layer has a **facade/aggregator** (`*ApiService.ts`, `rootReducer`, …) — wire the module there.
|
|
40
|
+
4. Add a **re-export** of new public symbols in the layer’s **root barrel**.
|
|
41
|
+
5. **Verify:** grep for the symbol name or path `./<Module>` in the root barrel; no deep imports from outside the layer.
|
|
42
|
+
|
|
43
|
+
The module is **not ready** until the checklist passes.
|
|
44
|
+
|
|
45
|
+
## How to find regulated layers in the repository
|
|
46
|
+
|
|
47
|
+
1. `public-imports.mdc` rules in `.claude/rules/`.
|
|
48
|
+
2. ESLint `no-restricted-imports` — `@/<layer>/*` patterns with barrel exception.
|
|
49
|
+
3. `architecture-boundaries.mdc`, project README.
|
|
50
|
+
|
|
51
|
+
## In this repository
|
|
52
|
+
|
|
53
|
+
| Layer | Root barrel | Import rule |
|
|
54
|
+
|-------|-------------|-------------|
|
|
55
|
+
| API | `api/index.ts` | `public-imports.mdc` |
|
|
56
|
+
| Types | `types/index.ts` | `public-imports.mdc` (+ `@/types/enums`) |
|
|
57
|
+
| Core | `core/index.ts` | ESLint: `@/core/index` |
|
|
58
|
+
|
|
59
|
+
Two-level illustration (API): local `services/.../<Feature>/index.ts` → facade `*ApiService.ts` → `api/index.ts`.
|
|
60
|
+
## Incorrect
|
|
61
|
+
|
|
62
|
+
```ts
|
|
63
|
+
// api/index.ts — leaking internals
|
|
64
|
+
export { mapCardResponse } from './services/CardsApi/cardResponseMappers'
|
|
65
|
+
export { rawCardsClient } from './clients/rawCardsClient'
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Correct
|
|
69
|
+
|
|
70
|
+
```ts
|
|
71
|
+
// api/index.ts — public facade only
|
|
72
|
+
export { cardsApi } from './services/CardsApi'
|
|
73
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Import domain types and API only through public barrels ($lib/types, $lib/api)
|
|
3
|
+
paths:
|
|
4
|
+
- src/lib/components/**/*
|
|
5
|
+
- src/lib/stores/**/*
|
|
6
|
+
- src/lib/**/*
|
|
7
|
+
- src/routes/**/*
|
|
8
|
+
- src/lib/types/**/*
|
|
9
|
+
- src/lib/api/**/*
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Public imports (`$lib/types`, `$lib/api`)
|
|
13
|
+
|
|
14
|
+
Preferred alias: **`$lib`**. Accept **`@/`** if consumer vite/tsconfig maps it. Respect `$app/*` / `$env/*` — do not invent modules.
|
|
15
|
+
|
|
16
|
+
## `$lib/types` (or `@/types`)
|
|
17
|
+
|
|
18
|
+
- Public types API — barrel `src/lib/types/index.ts`; outside the layer — only `$lib/types` / `@/types`.
|
|
19
|
+
- Forbidden to bypass the barrel via deep imports of internal type files (except a project enum convention if present).
|
|
20
|
+
- Inside `src/lib/types/**` — relative imports.
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
// ✅
|
|
24
|
+
import type { TUserProfile } from '$lib/types'
|
|
25
|
+
|
|
26
|
+
// ❌
|
|
27
|
+
import type { TUserProfile } from '$lib/types/User.types'
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## `$lib/api` (or `@/api`)
|
|
31
|
+
|
|
32
|
+
- Public API — barrel `src/lib/api/index.ts`. Outside `src/lib/api/**` — only `$lib/api` / `@/api`.
|
|
33
|
+
- Inside the layer — relative imports and `$lib/api/services/**` / `$lib/clients/**` as neighbors do.
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
// ✅
|
|
37
|
+
import { ordersApi } from '$lib/api'
|
|
38
|
+
|
|
39
|
+
// ❌
|
|
40
|
+
import { ordersApi } from '$lib/api/services/orders/orders.service'
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
New public symbols — re-export in the barrel per **`layer-barrel-exports`**.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Repository reference features — mirror their structure when implementing new work. Fill in paths after init in the target repo.
|
|
3
|
+
paths:
|
|
4
|
+
- src/lib/components/**/*
|
|
5
|
+
- src/lib/stores/**/*
|
|
6
|
+
- src/lib/api/**/*
|
|
7
|
+
- src/lib/types/**/*
|
|
8
|
+
- src/routes/**/*
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<!-- shared-core: architecture/reference-features.template.md -->
|
|
12
|
+
|
|
13
|
+
# Reference features
|
|
14
|
+
|
|
15
|
+
## Stack notes
|
|
16
|
+
|
|
17
|
+
Before implementing, find a feature of the same type and **mirror its structure**; do not invent a new file organization.
|
|
18
|
+
|
|
19
|
+
Taxonomy / shared core: [`presets/_shared/README.md`](../../../../_shared/README.md) · [Preset contribution guide](../../../../docs/PRESET-CONTRIBUTION.md).
|
|
20
|
+
|
|
21
|
+
## Reference table
|
|
22
|
+
|
|
23
|
+
Replace **TBD** with real paths after team agreement (or on `ai-rules init` in the target repo):
|
|
24
|
+
|
|
25
|
+
| Layer | Reference | What to copy |
|
|
26
|
+
|-------|-----------|--------------|
|
|
27
|
+
| UI route / page | **TBD** `src/routes/<example>/` | `+page.svelte`, `+page.ts`, layout nesting |
|
|
28
|
+
| UI component | **TBD** `src/lib/components/<Example>/` | `.svelte`, styles, barrel |
|
|
29
|
+
| Store | **TBD** `src/lib/stores/<example>.ts` | writable/derived or runes module, actions |
|
|
30
|
+
| API service | **TBD** `src/lib/api/services/<example>/` | service, mappers, barrel |
|
|
31
|
+
| Types module | **TBD** `src/lib/types/<example>/` | domain types, JSDoc, barrel export |
|
|
32
|
+
| Unit tests | **TBD** next to the reference mapper/service | `*.spec.ts`, describe/it naming |
|
|
33
|
+
| E2E area | **TBD** `tests/e2e/<Area>/` | `*.cases.md`, page objects, `_shared/` |
|
|
34
|
+
|
|
35
|
+
## How to use
|
|
36
|
+
|
|
37
|
+
1. Identify affected layers from `decomposition.md` or the task.
|
|
38
|
+
2. Open the reference from the table (after paths are filled in).
|
|
39
|
+
3. Mirror naming, file order, import patterns, and tests.
|
|
40
|
+
4. If there is no reference — pick the **closest** existing feature in the same layer and record the choice in the handoff.
|
|
41
|
+
|
|
42
|
+
## Living conventions
|
|
43
|
+
|
|
44
|
+
Post-init gotchas / patterns / decisions: **`.claude/team/conventions.md`** (and the twin tool path if both Cursor and Claude are installed). Consumer-owned; not always-on. See root `AGENTS.md` § Living conventions.
|
|
45
|
+
|
|
46
|
+
## Related rules
|
|
47
|
+
|
|
48
|
+
- `code-quality-and-refactoring.mdc` — repeat patterns; no deep-import.
|
|
49
|
+
- `feature-delivery-workflow.mdc` — layer order.
|
|
50
|
+
- skill `feature-delivery` — end-to-end scenario.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Stack (SvelteKit, Svelte 5, TypeScript)
|
|
2
|
+
|
|
3
|
+
Framework- and language-level rules.
|
|
4
|
+
|
|
5
|
+
| File | Contents | Loading |
|
|
6
|
+
|------|----------|---------|
|
|
7
|
+
| `svelte-app-core.md` | Stack, `src/routes/**` / `src/lib/**` structure, layers | session start |
|
|
8
|
+
| `svelte-script-conventions.md` | `<script lang="ts">` conventions | `paths: **/*.{svelte,ts}` |
|
|
9
|
+
| `no-type-assertion.md` | Limit `as` on module boundaries | on-demand |
|
|
10
|
+
| `navigation-router-ui.md` | Navigation in UI components (slim) | `paths: src/routes/**,src/hooks.server.ts,src/lib/components/**` |
|
|
11
|
+
| `navigation-router.md` | Full navigation stack audit (SvelteKit file-based routing) | `paths: src/routes/**,src/hooks.server.ts,svelte.config.*` |
|
|
12
|
+
| `types-jsdoc.md` | JSDoc in `types` | `paths: types/**/*.ts` |
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: SvelteKit link patterns in UI — a href, active state, prefetch
|
|
3
|
+
paths:
|
|
4
|
+
- src/lib/components/**/*
|
|
5
|
+
- src/routes/**/*
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Navigation (UI)
|
|
9
|
+
|
|
10
|
+
- Prefer native **`<a href="…">`** (and design-system Link wrappers that render anchors).
|
|
11
|
+
- Active state: follow repo pattern (`page.url`, `$app/state` / `$app/stores` as version allows — verify).
|
|
12
|
+
- Prefetch: use Kit data-sveltekit-* attributes / patterns already in the repo — do not invent.
|
|
13
|
+
- Do not use `next/link`, `<NuxtLink>`, or `RouterLink` as defaults in this preset.
|
|
14
|
+
- Programmatic navigation from UI handlers → `goto` (`navigation-router-stack`).
|
|
15
|
+
|
|
16
|
+
## Incorrect
|
|
17
|
+
|
|
18
|
+
```svelte
|
|
19
|
+
<a on:click|preventDefault={() => location.href = '/x'}>Go</a>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Correct
|
|
23
|
+
|
|
24
|
+
```svelte
|
|
25
|
+
<a href="/x">Go</a>
|
|
26
|
+
```
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: SvelteKit navigation APIs — $app/navigation, goto, invalidate
|
|
3
|
+
paths:
|
|
4
|
+
- src/routes/**/*
|
|
5
|
+
- svelte.config.*
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Navigation (stack)
|
|
9
|
+
|
|
10
|
+
For this preset the canon is **SvelteKit** (`svelte-app-core`, `sveltekit-routing`).
|
|
11
|
+
|
|
12
|
+
## Check in the repo
|
|
13
|
+
|
|
14
|
+
1. `package.json` workspace with `svelte.config.*` — `@sveltejs/kit` / `svelte` majors.
|
|
15
|
+
2. How neighbors already navigate: `goto`, `invalidate`, `beforeNavigate`, `<a href>`, wrappers.
|
|
16
|
+
3. Do not mix in Next (`next/navigation`) or Nuxt (`navigateTo`, `<NuxtLink>`) by default.
|
|
17
|
+
|
|
18
|
+
## API
|
|
19
|
+
|
|
20
|
+
| Need | Prefer |
|
|
21
|
+
|------|--------|
|
|
22
|
+
| Programmatic navigate | `goto` from `$app/navigation` |
|
|
23
|
+
| Refresh load data | `invalidate` / `invalidateAll` |
|
|
24
|
+
| Guards | `beforeNavigate` / `afterNavigate` |
|
|
25
|
+
| Links in UI | see `navigation-router-ui` |
|
|
26
|
+
|
|
27
|
+
Verify exports against installed `@sveltejs/kit` — mark `// VERIFY` if unsure (`svelte-sveltekit-anti-hallucination`).
|
|
28
|
+
|
|
29
|
+
## Incorrect
|
|
30
|
+
|
|
31
|
+
```ts
|
|
32
|
+
import { useRouter } from 'next/navigation'
|
|
33
|
+
await navigateTo('/items')
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Correct
|
|
37
|
+
|
|
38
|
+
```ts
|
|
39
|
+
import { goto } from '$app/navigation'
|
|
40
|
+
await goto('/items')
|
|
41
|
+
```
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Avoid type assertions via as at module boundaries (import/export)
|
|
3
|
+
paths:
|
|
4
|
+
- api/**/*
|
|
5
|
+
- src/lib/stores/**/*
|
|
6
|
+
- types/**/*
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Do not use `as` for type assertion on export and import (except necessary cases)
|
|
10
|
+
|
|
11
|
+
## What this is about
|
|
12
|
+
|
|
13
|
+
This is about TypeScript **type assertion**: expressions like `value as Type`.
|
|
14
|
+
|
|
15
|
+
**Not covered by this rule** (not assertion — module syntax):
|
|
16
|
+
|
|
17
|
+
- rename on export: `export { foo as bar }`, `export { default as Baz } from '...'`;
|
|
18
|
+
- rename on import: `import { foo as bar } from '...'`;
|
|
19
|
+
- `import type { Foo as Bar }` — type alias in a type import.
|
|
20
|
+
|
|
21
|
+
## Requirement
|
|
22
|
+
|
|
23
|
+
- On the **public module boundary** (what is **exported** from a file / barrel, and what is immediately **assigned from imported symbols** with a forced cast) **do not use** `as Type` to “force-fit” types when normal typing would work.
|
|
24
|
+
|
|
25
|
+
## Prefer instead of `as`
|
|
26
|
+
|
|
27
|
+
- an explicit annotation: `const x: T = ...` / `function f(): T`;
|
|
28
|
+
- **generics** on functions and classes;
|
|
29
|
+
- **`satisfies`** (when you need to check compatibility without narrowing to `any`);
|
|
30
|
+
- narrowing **`unknown`** after checks (type guards, `zod`, etc.);
|
|
31
|
+
- fixing **source types/DTOs/mappers**, not an assertion on the way out.
|
|
32
|
+
|
|
33
|
+
## When `as` is allowed
|
|
34
|
+
|
|
35
|
+
- interaction with **untyped** or incorrectly typed external modules where there is no reasonable alternative;
|
|
36
|
+
- narrow spots after **validation**, if a type guard still cannot be expressed without noise (prefer guard/`satisfies` anyway);
|
|
37
|
+
- **`as const`** — when literal types are needed and wide inference breaks the contract (a separate mechanism; use on purpose, not as a substitute for API typing).
|
|
38
|
+
- a **`catch (error)`** block after HTTP via the shared client: prefer narrowing with **`instanceof`** on the **transport error class** from `@/types` (which one — follow the existing implementation) and work with the narrowed type; bare **`as` to the same type** — only if `instanceof` is unavailable (different throw source) and deliberately.
|
|
39
|
+
|
|
40
|
+
## Examples
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
// ❌ Bad: assertion on exported API
|
|
44
|
+
export const config = loadRaw() as AppConfig
|
|
45
|
+
|
|
46
|
+
// ✅ Better: annotation + check or mapper
|
|
47
|
+
export const config: AppConfig = mapToAppConfig(loadRaw())
|
|
48
|
+
|
|
49
|
+
// ❌ Bad: immediately after import we “break” the type
|
|
50
|
+
import { getData } from './api'
|
|
51
|
+
export const data = getData() as MyDto[]
|
|
52
|
+
|
|
53
|
+
// ✅ Better: type getData / wrap with a type-safe function
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Agent requirement
|
|
57
|
+
|
|
58
|
+
On review and code generation **do not add** new `as Type` on exported entities and on the import → export chain without clear need; when possible fix the type contract at the source.
|
|
59
|
+
- In slices and services when handling API errors, first consider **`instanceof`** on the transport error class from `@/types` following existing code (`http-client.mdc`, `store-svelte.mdc`).
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Core principles, stack, and architecture for a SvelteKit app (preset)
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Stack and environment
|
|
6
|
+
|
|
7
|
+
Concrete versions — **from `package.json` and configs in the target repository**. Preset frame: SvelteKit, Svelte 5 (primary), TypeScript; runner/e2e/mocks/UI/APM — as established in the repo.
|
|
8
|
+
|
|
9
|
+
# Project structure
|
|
10
|
+
|
|
11
|
+
| Path | Purpose |
|
|
12
|
+
|------|---------|
|
|
13
|
+
| `src/routes/**` | Routes, layouts, load, form actions (`+page`, `+layout`, `+server`) |
|
|
14
|
+
| `src/lib/components/**` | UI components (`.svelte`) |
|
|
15
|
+
| `src/lib/**` | Facades / utils (no Vue-style `composables/` tree) |
|
|
16
|
+
| `src/lib/stores/**` | Svelte stores + shared runes modules |
|
|
17
|
+
| `src/lib/api/**` | Client services + mappers (barrel) |
|
|
18
|
+
| `src/lib/clients/**` | HTTP (`fetch` wrapper) |
|
|
19
|
+
| `src/hooks.server.ts` / `src/hooks.client.ts` | App hooks |
|
|
20
|
+
| `src/lib/types/**` | Domain types (barrel) |
|
|
21
|
+
| `tests/e2e/**` | Playwright e2e |
|
|
22
|
+
|
|
23
|
+
**Aliases:** prefer `$lib`; respect `$app/*` / `$env/*` (do not invent symbols); accept `@/` if configured. Scripts cwd — **SvelteKit root** (where `svelte.config.*` lives), not a Next-style `app/` wrapper.
|
|
24
|
+
|
|
25
|
+
# Architectural layers
|
|
26
|
+
|
|
27
|
+
| Layer | Directory | Details |
|
|
28
|
+
|-------|-----------|---------|
|
|
29
|
+
| UI | `src/routes/**`, `src/lib/components/**` | `svelte-ui`, `architecture-boundaries-ui` |
|
|
30
|
+
| Facades | `src/lib/**` | thin orchestration; no raw HTTP |
|
|
31
|
+
| Store | `src/lib/stores/**` | `store-svelte` — writable/derived/readable + runes |
|
|
32
|
+
| API | `src/lib/api/**` | `api-services`, `http-client` |
|
|
33
|
+
| HTTP | `src/lib/clients/**` | wrap `fetch` |
|
|
34
|
+
| Server | `+server.ts`, hooks | `security-sveltekit`; not a substitute for `src/lib/api/**` |
|
|
35
|
+
| Types | `src/lib/types/**` | `public-imports`, `types-jsdoc` |
|
|
36
|
+
|
|
37
|
+
Boundaries — **`architecture-boundaries`**. Imports `$lib/types`, `$lib/api` (or `@/…` if aliased) — **`public-imports`**. **Forbidden:** RTK / Pinia / stems `store-rtk` / `store-pinia`, React/RSC, Vue/Nuxt defaults, paths `app/src/**` / `pages/**` / `composables/**` as canon.
|
|
38
|
+
|
|
39
|
+
# Agent work
|
|
40
|
+
|
|
41
|
+
- Architecture and imports: `architecture-boundaries`, `public-imports`
|
|
42
|
+
- Features: `feature-delivery-workflow` + skill `feature-delivery`
|
|
43
|
+
- After edits: **invoke** `post-change-lint` (requestable); package manager: `package-manager`
|
|
44
|
+
- Copy neighbor patterns; prefer `unknown` over `any`
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Svelte script conventions — lang=ts, runes primary, follow neighbors
|
|
3
|
+
paths:
|
|
4
|
+
- "**/*.{svelte,ts}"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Svelte script conventions
|
|
8
|
+
|
|
9
|
+
- In `.svelte`: prefer `<script lang="ts">` (or project dual-script pattern if neighbors use it).
|
|
10
|
+
- **Svelte 5 primary:** `$state` / `$derived` / `$effect` / `$props` / snippets for new code.
|
|
11
|
+
- **Legacy secondary:** `svelte/store` writable/derived when neighbors use them — do not rewrite unrelated modules to runes in a drive-by.
|
|
12
|
+
- Keep `<script>` focused: UI bindings + thin orchestration; HTTP only via `$lib/api` / store actions.
|
|
13
|
+
- Prefer `unknown` over `any`; narrow before use.
|
|
14
|
+
- Do not invent Options-API / Vue `<script setup>` patterns in this preset.
|
|
15
|
+
- Arrow vs function: follow local neighbors; no blanket rewrite.
|
|
16
|
+
|
|
17
|
+
## Incorrect
|
|
18
|
+
|
|
19
|
+
```svelte
|
|
20
|
+
<script>
|
|
21
|
+
// no lang=ts in a TS codebase; Vue setup APIs
|
|
22
|
+
import { ref } from 'vue'
|
|
23
|
+
const count = ref(0)
|
|
24
|
+
</script>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Correct
|
|
28
|
+
|
|
29
|
+
```svelte
|
|
30
|
+
<script lang="ts">
|
|
31
|
+
let count = $state(0)
|
|
32
|
+
</script>
|
|
33
|
+
```
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: SvelteKit file-based routing, layouts, load, form actions
|
|
3
|
+
paths:
|
|
4
|
+
- src/routes/**/*
|
|
5
|
+
- svelte.config.*
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# SvelteKit routing
|
|
9
|
+
|
|
10
|
+
Canonical layout: **SvelteKit `src/`** — `src/routes/**`.
|
|
11
|
+
Flat (no-`src/`) layouts exist; **do not** default globs/examples to them or to Next `app/src/**` / Nuxt `pages/**`.
|
|
12
|
+
|
|
13
|
+
## Routing
|
|
14
|
+
|
|
15
|
+
- File-based routes: `+page.svelte`, `+layout.svelte`, `+error.svelte`.
|
|
16
|
+
- Load: `+page.ts` / `+page.server.ts` / `+layout.ts` / `+layout.server.ts` — verify signatures against installed `@sveltejs/kit`.
|
|
17
|
+
- Form actions in `+page.server.ts`; progressive enhancement via `$app/forms` `enhance` when used in repo.
|
|
18
|
+
- API / BFF: `+server.ts`; app hooks in `src/hooks.server.ts` / `src/hooks.client.ts` — see `security-sveltekit`.
|
|
19
|
+
- Navigation: `<a href>`, `goto`, `invalidate`, `beforeNavigate`, `$app/navigation` — not `next/navigation`, not `navigateTo` / `<NuxtLink>`.
|
|
20
|
+
|
|
21
|
+
## Data on pages
|
|
22
|
+
|
|
23
|
+
- Prefer `$lib/api` services + mappers for domain mapping; `load` may use event `fetch` for same-origin SSR cookie forwarding.
|
|
24
|
+
- Client orchestration via `store-svelte` (stores / runes).
|
|
25
|
+
- Secrets only via `$env/static/private` / server modules — never `$env/static/private` in client components.
|
|
26
|
+
|
|
27
|
+
## Incorrect
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
import { useRouter } from 'next/navigation'
|
|
31
|
+
import { navigateTo } from '#app'
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Correct
|
|
35
|
+
|
|
36
|
+
```ts
|
|
37
|
+
import { goto } from '$app/navigation'
|
|
38
|
+
|
|
39
|
+
await goto('/items')
|
|
40
|
+
```
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: JSDoc style for domain and transport types under types
|
|
3
|
+
paths:
|
|
4
|
+
- src/lib/types/**/*.ts
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Type documentation in `types`
|
|
8
|
+
|
|
9
|
+
When adding or substantially changing types in this layer **follow the JSDoc style already used in the repository** (see examples: `User.types.ts`, `Common.types.ts`, `ServerValidation.types.ts`, `TreatmentPlan/*.types.ts`).
|
|
10
|
+
|
|
11
|
+
## Language and form
|
|
12
|
+
|
|
13
|
+
- Comment text — **in Russian**, short and to the point: what the type or field means in the domain or API contract.
|
|
14
|
+
- **Do not rely** on tags like `@param`, `@returns`, `@see`, `@deprecated` for type descriptions — they are **not used** in this layer; plain `/** … */` text is enough.
|
|
15
|
+
|
|
16
|
+
## Exported `type` / `interface`
|
|
17
|
+
|
|
18
|
+
- Immediately **before the declaration** — a `/** … */` block.
|
|
19
|
+
- If you need to explain data source, constraints, or non-obvious bits — a **second paragraph** in the same block (blank line between paragraphs in JSDoc).
|
|
20
|
+
- For **nested** objects in the same file, each such type gets its own block above its declaration.
|
|
21
|
+
|
|
22
|
+
## Fields
|
|
23
|
+
|
|
24
|
+
- Every **public** property — a **one-line** `/** … */` on the line immediately **above** the field.
|
|
25
|
+
- If a field **does not come from the backend “as is”** but is computed or enriched on the frontend (mapper, selector, UI) — start the description with the **`[computed]`** prefix (as in `TUserProfile`, treatment-plan types).
|
|
26
|
+
- For data formats, state that **in the text**: e.g. date `YYYY-MM-DD`, example display string in quotes.
|
|
27
|
+
|
|
28
|
+
## Classes and other declarations
|
|
29
|
+
|
|
30
|
+
- For **classes** (e.g. transport errors), when changing the public API — a short block above the class and **comments on public fields** by the same rules as interface properties.
|
|
31
|
+
|
|
32
|
+
## `enum`
|
|
33
|
+
|
|
34
|
+
- In `enums.ts` historically often **without JSDoc** on each member; for new enums a short description **above the enum itself** is OK if purpose is not obvious from the name. UI labels — as usual, via `*Names` objects next to the enum.
|
|
35
|
+
|
|
36
|
+
## Agent practice
|
|
37
|
+
|
|
38
|
+
- When adding a new type or field, **do not leave** new public fields unexplained if the meaning is not 100% equal to the name.
|
|
39
|
+
- When editing a file that already has such comments, **keep the same style**, do not mix with English or “tag-style” blocks.
|
|
40
|
+
- Do not inflate comments: one–two phrases per type, one line per field — normal; exception — a truly complex domain caveat.
|
|
41
|
+
|
|
42
|
+
See also imports and barrel: `public-imports.mdc`.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Testing
|
|
2
|
+
|
|
3
|
+
Unit, e2e, Playwright agents.
|
|
4
|
+
|
|
5
|
+
| File | Contents | Loading |
|
|
6
|
+
|------|----------|---------|
|
|
7
|
+
| `playwright-agents.md` | Planner / generator / healer — e2e structure | session start |
|
|
8
|
+
| `tests-unit.md` | Unit/integration; titles in Russian (locale convention) | `paths: **/*.spec.*`, `*.test.*` |
|
|
9
|
+
| `tests-e2e-structure.md` | `*.cases.md`, page objects, data-testid | `paths: tests/e2e/**` |
|
|
10
|
+
|
|
11
|
+
See also `.claude/agents/playwright-test-*.md` after `ai-rules init`.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Playwright Agents (planner/generator/healer) configuration for e2e structure in tests/e2e
|
|
3
|
+
paths:
|
|
4
|
+
- tests/e2e/**/*
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Playwright Agents in this project
|
|
8
|
+
|
|
9
|
+
In this repository, Playwright Agents (planner, generator, healer) **must follow the existing e2e structure**:
|
|
10
|
+
|
|
11
|
+
- **Test directory**: `tests/e2e`
|
|
12
|
+
- **Test plans (specs)**: `*.cases.md` files under `tests/e2e/**`
|
|
13
|
+
- **Executable tests**: `*.spec.ts` files under `tests/e2e/**`
|
|
14
|
+
- **Seed test**: `tests/e2e/seed.spec.ts`
|
|
15
|
+
|
|
16
|
+
Do **not** introduce separate top-level `specs/` and `tests/` folders for real test coverage. Those may be used only as temporary sandboxes if explicitly requested.
|
|
17
|
+
|
|
18
|
+
## Planner (test plans)
|
|
19
|
+
|
|
20
|
+
When acting as a **Planner** (or working with the Playwright planner agent):
|
|
21
|
+
|
|
22
|
+
- **Treat `*.cases.md` as the canonical test plan files**, equivalent to Playwright's `specs/*.md`.
|
|
23
|
+
- **Location**:
|
|
24
|
+
- For a feature/domain, use the corresponding `*.cases.md` file under `tests/e2e`, e.g.:
|
|
25
|
+
- `tests/e2e/OrderHistory/order-history.cases.md`
|
|
26
|
+
- `tests/e2e/BillingReport/invoice-list.cases.md`
|
|
27
|
+
- **Content requirements**:
|
|
28
|
+
- Group scenarios by feature and subfeature using headings.
|
|
29
|
+
- For each scenario include:
|
|
30
|
+
- clear title,
|
|
31
|
+
- preconditions,
|
|
32
|
+
- ordered steps,
|
|
33
|
+
- expected results.
|
|
34
|
+
- Write in concise business language, but precise enough for automatic test generation.
|
|
35
|
+
- **Seed**:
|
|
36
|
+
- Assume environment is prepared by `tests/e2e/seed.spec.ts` (login, baseURL, mocks, etc.).
|
|
37
|
+
|
|
38
|
+
When asked to "generate a test plan" for a feature, **create or update the appropriate `*.cases.md` file in `tests/e2e/**`**, not in a separate `specs/` folder.
|
|
39
|
+
|
|
40
|
+
## Generator (tests from plans)
|
|
41
|
+
|
|
42
|
+
When acting as a **Generator** (or working with the Playwright generator agent):
|
|
43
|
+
|
|
44
|
+
- **Source of truth for scenarios**:
|
|
45
|
+
- Use the relevant `*.cases.md` file under `tests/e2e/**` as the test plan.
|
|
46
|
+
- **Target for tests**:
|
|
47
|
+
- Generate or update `*.spec.ts` files under the same folder, e.g.:
|
|
48
|
+
- plan: `tests/e2e/OrderHistory/order-history.cases.md`
|
|
49
|
+
- tests: `tests/e2e/OrderHistory/order-history.spec.ts` (or additional `*.spec.ts` in that folder if needed).
|
|
50
|
+
- **Structure**:
|
|
51
|
+
- Use `test.describe` to group by top-level plan sections (feature / user flow).
|
|
52
|
+
- Use `test(...)` titles that match scenario names from the plan.
|
|
53
|
+
- Prefer Page Object and fluent interfaces that already exist in this project, for example:
|
|
54
|
+
- `tests/e2e/OrderHistory/OrderHistoryPage.ts`
|
|
55
|
+
- shared helpers under `tests/e2e/_shared/`.
|
|
56
|
+
- **Seed**:
|
|
57
|
+
- If a seed test is needed, use `tests/e2e/seed.spec.ts` as the reference for environment setup.
|
|
58
|
+
|
|
59
|
+
Do **not** generate Playwright tests into a separate `tests/` folder by default. Keep all e2e tests under `tests/e2e/**` to respect project conventions.
|
|
60
|
+
|
|
61
|
+
## Healer (fixing tests)
|
|
62
|
+
|
|
63
|
+
When acting as a **Healer** (or working with the Playwright healer agent):
|
|
64
|
+
|
|
65
|
+
- Operate only on `*.spec.ts` files under `tests/e2e/**`.
|
|
66
|
+
- Use `*.cases.md` in the same folder as **documentation of the intended behavior**:
|
|
67
|
+
- Do not weaken or change business assertions in tests in a way that conflicts with the corresponding `*.cases.md`.
|
|
68
|
+
- Prefer updating locators, waits, and flow details to match the UI while keeping the scenario semantics intact.
|
|
69
|
+
- When multiple specs are involved, prioritize:
|
|
70
|
+
- the spec file in the same folder as the failing test,
|
|
71
|
+
- then shared utilities in `tests/e2e/_shared/`.
|
|
72
|
+
|
|
73
|
+
Healer should keep tests aligned with the existing test plans (`*.cases.md`) and with the page objects and helpers already used in the project.
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
## Stack notes (SvelteKit)
|
|
77
|
+
|
|
78
|
+
- E2E root: `tests/e2e/`.
|
|
79
|
+
- Default baseURL: `http://localhost:5173`.
|
|
80
|
+
- Prefer Playwright `webServer` → `vite dev` or `vite build && vite preview`.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Structure of e2e tests and plans (Playwright)
|
|
3
|
+
paths:
|
|
4
|
+
- tests/e2e/**/*
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# E2E structure in the project
|
|
8
|
+
|
|
9
|
+
- E2E folder: `tests/e2e/**`.
|
|
10
|
+
- Scenario plans:
|
|
11
|
+
- `*.cases.md` files — **canonical source of scenarios**.
|
|
12
|
+
- Tests:
|
|
13
|
+
- `*.spec.ts` files — Playwright scenario implementation.
|
|
14
|
+
- Shared utilities and abstractions:
|
|
15
|
+
- `tests/e2e/_shared/**` — constants, fluent interfaces, helpers.
|
|
16
|
+
|
|
17
|
+
# Principles
|
|
18
|
+
|
|
19
|
+
- Every scenario from `*.cases.md` must have a matching test (or set of tests).
|
|
20
|
+
- **Do not** weaken assertions in tests if that contradicts business expectations from the plans.
|
|
21
|
+
- Prefer:
|
|
22
|
+
- page objects (e.g. `OrderHistoryPage.ts`);
|
|
23
|
+
- shared helpers from `_shared`.
|
|
24
|
+
|
|
25
|
+
# E2E test naming
|
|
26
|
+
|
|
27
|
+
- Language:
|
|
28
|
+
- all `test` / `it` names, `describe` blocks, and steps in `*.cases.md` must be formulated **in Russian**, describing behavior and the expected result. <!-- i18n-keep: E5 -->
|
|
29
|
+
- E2E title format (`test(...)` / `it(...)`):
|
|
30
|
+
- before the scenario description, put a **numbered prefix** in the form: `PREFIX-XXX Scenario description`.
|
|
31
|
+
- `PREFIX` — abbreviation from the **first letters of the words** of the entity under test, written in **Latin uppercase**.
|
|
32
|
+
- example: `OrderHistory` → `OH`, `BillingReport` → `BR`.
|
|
33
|
+
- `XXX` — sequential test number **with three digits and leading zeros**: `001`, `002`, `010`, `123`, etc.
|
|
34
|
+
- full e2e title example:
|
|
35
|
+
- `test('OH-001 Отображается список заказов', async ({ page }) => { ... })` <!-- i18n-keep: E5 -->
|
|
36
|
+
- within one entity (`PREFIX`), test numbers must form a **consistent sequence** without duplicate numbers.
|
|
37
|
+
|
|
38
|
+
# data-testid for e2e
|
|
39
|
+
|
|
40
|
+
- **Selector priority:** `data-testid` for stable elements; `getByRole` and `getByLabel` for forms and accessible elements.
|
|
41
|
+
- **Naming:** scheme `{parent}__{element}` (e.g. `history-page__title`, `history-page__recognition-banner__attach-files-button`).
|
|
42
|
+
- **Where to add:** on page root containers and key interactive elements (buttons, links, fields) that page objects target.
|
|
43
|
+
- **When UI changes:** update data-testid in components and matching selectors in page objects; align with `*.cases.md`.
|
|
44
|
+
|
|
45
|
+
# Agent requirement
|
|
46
|
+
|
|
47
|
+
When adding/changing e2e tests:
|
|
48
|
+
- First look at the matching `*.cases.md` and sync scenario names.
|
|
49
|
+
- Place specs next to plans in the same directory.
|
|
50
|
+
- Reuse shared page objects and helpers; do not copy selectors into every test.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Unit tests — Vitest + Testing Library Svelte; colocated *.spec.ts
|
|
3
|
+
paths:
|
|
4
|
+
- "**/*.{spec,test}.ts"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Shared testing rules
|
|
8
|
+
|
|
9
|
+
- **File names:** new tests — **`*.spec.ts`**. Do not rename existing `*.test.ts` without a task.
|
|
10
|
+
- **Runner:** Vitest (or as in the project). Components — **`@testing-library/svelte`** (not `@vue/test-utils`, not React Testing Library as default).
|
|
11
|
+
- Assert **behavior**, not internals.
|
|
12
|
+
- **`describe` / `it` naming:** formulate titles **in Russian**, each sentence capitalized (as with ESLint `jest/valid-title` if enabled). <!-- i18n-keep: E5 -->
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
// ✅
|
|
16
|
+
it('Возвращает пустой список. Пользователь не авторизован', () => {}) // <!-- i18n-keep: E5 -->
|
|
17
|
+
|
|
18
|
+
// ❌
|
|
19
|
+
it('Returns empty list when user is guest', () => {})
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
# Components
|
|
23
|
+
|
|
24
|
+
- `render` from `@testing-library/svelte`.
|
|
25
|
+
- Interactions: `userEvent` from `@testing-library/user-event` when that is the repo convention.
|
|
26
|
+
|
|
27
|
+
# Isolation
|
|
28
|
+
|
|
29
|
+
- Mock `$lib/api` / stores per neighbor patterns.
|
|
30
|
+
- Do not mock the feature’s public contract without need.
|
|
31
|
+
|
|
32
|
+
# HTTP / mappers
|
|
33
|
+
|
|
34
|
+
- Changes to the shared HTTP client — behavior tests next to `src/lib/clients/**`.
|
|
35
|
+
- DTO→domain mappers — unit tests for edge cases.
|
|
36
|
+
|
|
37
|
+
# Placement
|
|
38
|
+
|
|
39
|
+
- UI: neighboring `*.spec.ts` (no required `__tests__/` inside the component).
|
|
40
|
+
- Other modules — as neighbors do.
|