@bonesofspring/ai-rules 0.2.12 → 0.2.14
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 +32 -0
- package/README.md +6 -2
- package/bin/cli.js +4 -0
- package/package.json +1 -1
- package/presets/_shared/README.md +1 -1
- package/presets/_shared/core/agent-team/agent-artifact-contracts.md +114 -0
- package/presets/_shared/core/agent-team/agent-team-orchestrator.md +64 -5
- package/presets/_shared/core/meta/preset-layering.md +1 -1
- package/presets/_shared/core/meta/preset-no-cross-stack-leakage.md +15 -1
- package/presets/_shared/core/meta/preset-pr-checklist.md +1 -1
- package/presets/_shared/core/meta/preset-twin-sync.md +4 -0
- package/presets/claude/go/agents/build-verifier.md +10 -3
- package/presets/claude/go/agents/code-reviewer.md +8 -1
- package/presets/claude/go/agents/feature-developer.md +8 -1
- package/presets/claude/go/agents/task-analyst.md +8 -1
- package/presets/claude/go/agents/task-router.md +33 -5
- package/presets/claude/go/commands/task.md +8 -6
- package/presets/claude/go/hooks/chain-team-phases.sh +195 -53
- package/presets/claude/go/rules/tooling-and-review/agent-team-orchestrator.md +30 -5
- package/presets/claude/go/rules/tooling-and-review/preset-layering.md +2 -1
- package/presets/claude/go/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -1
- package/presets/claude/go/rules/tooling-and-review/preset-pr-checklist.md +2 -1
- package/presets/claude/go/rules/tooling-and-review/preset-token-budget.md +1 -0
- package/presets/claude/go/rules/tooling-and-review/preset-twin-sync.md +5 -0
- package/presets/claude/go/team/README.md +13 -2
- package/presets/claude/ios-swift/agents/build-verifier.md +10 -3
- package/presets/claude/ios-swift/agents/code-reviewer.md +9 -14
- package/presets/claude/ios-swift/agents/feature-developer.md +8 -1
- package/presets/claude/ios-swift/agents/task-analyst.md +8 -1
- package/presets/claude/ios-swift/agents/task-router.md +31 -3
- package/presets/claude/ios-swift/commands/task.md +8 -6
- package/presets/claude/ios-swift/hooks/chain-team-phases.sh +177 -54
- package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +33 -2
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-layering.md +2 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-pr-checklist.md +2 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-token-budget.md +1 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-twin-sync.md +5 -0
- package/presets/claude/ios-swift/team/README.md +13 -2
- package/presets/claude/java/agents/build-verifier.md +9 -2
- package/presets/claude/java/agents/code-reviewer.md +8 -1
- package/presets/claude/java/agents/feature-developer.md +8 -1
- package/presets/claude/java/agents/task-analyst.md +8 -1
- package/presets/claude/java/agents/task-router.md +31 -3
- package/presets/claude/java/commands/task.md +8 -6
- package/presets/claude/java/hooks/chain-team-phases.sh +195 -53
- package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +30 -5
- package/presets/claude/java/rules/tooling-and-review/preset-layering.md +2 -1
- package/presets/claude/java/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -1
- package/presets/claude/java/rules/tooling-and-review/preset-pr-checklist.md +2 -1
- package/presets/claude/java/rules/tooling-and-review/preset-token-budget.md +1 -0
- package/presets/claude/java/rules/tooling-and-review/preset-twin-sync.md +5 -0
- package/presets/claude/java/team/README.md +13 -2
- package/presets/claude/mcp-ts/agents/build-verifier.md +10 -3
- package/presets/claude/mcp-ts/agents/feature-developer.md +7 -1
- package/presets/claude/mcp-ts/agents/task-analyst.md +8 -1
- package/presets/claude/mcp-ts/agents/task-router.md +33 -5
- package/presets/claude/mcp-ts/commands/task.md +8 -6
- package/presets/claude/mcp-ts/hooks/chain-team-phases.sh +181 -39
- package/presets/claude/mcp-ts/rules/tooling-and-review/agent-team-orchestrator.md +30 -5
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-layering.md +2 -1
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -1
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-pr-checklist.md +2 -1
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-token-budget.md +1 -0
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-twin-sync.md +5 -0
- package/presets/claude/mcp-ts/team/README.md +13 -2
- package/presets/claude/next/agents/accessibility-reviewer.md +6 -12
- package/presets/claude/next/agents/api-contract-reviewer.md +6 -12
- package/presets/claude/next/agents/build-verifier.md +10 -14
- package/presets/claude/next/agents/ci-investigator.md +7 -13
- package/presets/claude/next/agents/code-reviewer.md +9 -14
- package/presets/claude/next/agents/debugger.md +6 -12
- package/presets/claude/next/agents/feature-developer.md +8 -1
- package/presets/claude/next/agents/migration-specialist.md +6 -12
- package/presets/claude/next/agents/performance-auditor.md +5 -11
- package/presets/claude/next/agents/qa-tester.md +6 -12
- package/presets/claude/next/agents/security-reviewer.md +6 -12
- package/presets/claude/next/agents/solution-architect.md +6 -12
- package/presets/claude/next/agents/task-analyst.md +10 -16
- package/presets/claude/next/agents/task-router.md +31 -3
- package/presets/claude/next/agents/tech-writer.md +6 -13
- package/presets/claude/next/agents/unit-test-generator.md +6 -10
- package/presets/claude/next/agents/unit-test-healer.md +6 -10
- package/presets/claude/next/agents/unit-test-planner.md +5 -11
- package/presets/claude/next/commands/task.md +8 -6
- package/presets/claude/next/hooks/chain-team-phases.sh +197 -54
- package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +29 -4
- package/presets/claude/next/rules/tooling-and-review/preset-layering.md +2 -1
- package/presets/claude/next/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -1
- package/presets/claude/next/rules/tooling-and-review/preset-pr-checklist.md +2 -1
- package/presets/claude/next/rules/tooling-and-review/preset-token-budget.md +1 -0
- package/presets/claude/next/rules/tooling-and-review/preset-twin-sync.md +5 -0
- package/presets/claude/next/team/README.md +15 -3
- package/presets/claude/next/team/fixtures/artifact-manifest.example.json +61 -0
- package/presets/claude/next/team/fixtures/bugfix-standard.json +10 -0
- package/presets/claude/next/team/fixtures/feature-full.json +10 -0
- package/presets/claude/next/team/fixtures/feature-light.json +10 -0
- 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 +199 -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 +13 -0
- package/presets/claude/nuxt/commands/feature-continue.md +51 -0
- package/presets/claude/nuxt/commands/feature-start.md +30 -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 +62 -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 +76 -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 +67 -0
- package/presets/claude/nuxt/rules/architecture/README.md +12 -0
- package/presets/claude/nuxt/rules/architecture/architecture-boundaries-ui.md +15 -0
- package/presets/claude/nuxt/rules/architecture/architecture-boundaries.md +98 -0
- package/presets/claude/nuxt/rules/architecture/feature-delivery-workflow.md +88 -0
- package/presets/claude/nuxt/rules/architecture/layer-barrel-exports.md +71 -0
- package/presets/claude/nuxt/rules/architecture/public-imports.md +60 -0
- package/presets/claude/nuxt/rules/architecture/reference-features.md +49 -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 +61 -0
- package/presets/claude/nuxt/rules/stack/nuxt-app-core.md +43 -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 +40 -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 +15 -0
- package/presets/claude/nuxt/rules/tooling-and-review/agent-team-orchestrator.md +191 -0
- package/presets/claude/nuxt/rules/tooling-and-review/anti-sycophancy-discipline.md +33 -0
- package/presets/claude/nuxt/rules/tooling-and-review/code-quality.md +49 -0
- package/presets/claude/nuxt/rules/tooling-and-review/code-review-mr.md +63 -0
- package/presets/claude/nuxt/rules/tooling-and-review/design-guidance.md +114 -0
- package/presets/claude/nuxt/rules/tooling-and-review/package-manager.md +16 -0
- package/presets/claude/nuxt/rules/tooling-and-review/post-change-lint.md +43 -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 +39 -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 +15 -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 +34 -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 +136 -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/agents/build-verifier.md +10 -3
- package/presets/claude/php-hexagonal/agents/code-reviewer.md +8 -1
- package/presets/claude/php-hexagonal/agents/feature-developer.md +8 -1
- package/presets/claude/php-hexagonal/agents/task-analyst.md +8 -1
- package/presets/claude/php-hexagonal/agents/task-router.md +31 -3
- package/presets/claude/php-hexagonal/commands/task.md +8 -6
- package/presets/claude/php-hexagonal/hooks/README.md +1 -1
- package/presets/claude/php-hexagonal/hooks/chain-team-phases.sh +195 -53
- package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-orchestrator.md +30 -5
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-layering.md +2 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-pr-checklist.md +2 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-token-budget.md +1 -0
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-twin-sync.md +5 -0
- package/presets/claude/php-hexagonal/team/README.md +13 -2
- package/presets/claude/php-laravel/agents/build-verifier.md +10 -3
- package/presets/claude/php-laravel/agents/code-reviewer.md +8 -1
- package/presets/claude/php-laravel/agents/feature-developer.md +8 -1
- package/presets/claude/php-laravel/agents/task-analyst.md +8 -1
- package/presets/claude/php-laravel/agents/task-router.md +31 -3
- package/presets/claude/php-laravel/commands/task.md +8 -6
- package/presets/claude/php-laravel/hooks/chain-team-phases.sh +195 -53
- package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-orchestrator.md +30 -5
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-layering.md +2 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-no-cross-stack-leakage.md +16 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-pr-checklist.md +2 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-token-budget.md +1 -0
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-twin-sync.md +5 -0
- package/presets/claude/php-laravel/team/README.md +13 -2
- 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 +199 -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 +140 -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 +13 -0
- package/presets/claude/svelte/commands/feature-continue.md +51 -0
- package/presets/claude/svelte/commands/feature-start.md +30 -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 +62 -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 +51 -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 +50 -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 +36 -0
- package/presets/claude/svelte/rules/tooling-and-review/preset-no-cross-stack-leakage.md +83 -0
- package/presets/claude/svelte/rules/tooling-and-review/preset-pr-checklist.md +39 -0
- package/presets/claude/svelte/rules/tooling-and-review/preset-token-budget.md +41 -0
- package/presets/claude/svelte/rules/tooling-and-review/preset-twin-sync.md +54 -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 +136 -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/build-verifier.md +9 -2
- package/presets/cursor/go/agents/code-reviewer.md +8 -1
- package/presets/cursor/go/agents/feature-developer.md +8 -1
- package/presets/cursor/go/agents/task-analyst.md +8 -1
- package/presets/cursor/go/agents/task-router.md +31 -3
- package/presets/cursor/go/commands/task.md +8 -6
- package/presets/cursor/go/hooks/chain-team-phases.sh +195 -53
- package/presets/cursor/go/rules/agent-team-orchestrator.mdc +30 -5
- package/presets/cursor/go/rules/preset-layering.mdc +2 -1
- package/presets/cursor/go/rules/preset-no-cross-stack-leakage.mdc +16 -1
- package/presets/cursor/go/rules/preset-pr-checklist.mdc +2 -1
- package/presets/cursor/go/rules/preset-token-budget.mdc +1 -0
- package/presets/cursor/go/rules/preset-twin-sync.mdc +5 -0
- package/presets/cursor/go/team/README.md +13 -2
- package/presets/cursor/ios-swift/agents/build-verifier.md +10 -3
- package/presets/cursor/ios-swift/agents/code-reviewer.md +9 -14
- package/presets/cursor/ios-swift/agents/feature-developer.md +8 -1
- package/presets/cursor/ios-swift/agents/task-analyst.md +8 -1
- package/presets/cursor/ios-swift/agents/task-router.md +31 -3
- package/presets/cursor/ios-swift/commands/task.md +8 -6
- package/presets/cursor/ios-swift/hooks/chain-team-phases.sh +195 -54
- package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +23 -2
- package/presets/cursor/ios-swift/rules/preset-layering.mdc +2 -1
- package/presets/cursor/ios-swift/rules/preset-no-cross-stack-leakage.mdc +16 -1
- package/presets/cursor/ios-swift/rules/preset-pr-checklist.mdc +2 -1
- package/presets/cursor/ios-swift/rules/preset-token-budget.mdc +1 -0
- package/presets/cursor/ios-swift/rules/preset-twin-sync.mdc +5 -0
- package/presets/cursor/ios-swift/team/README.md +13 -2
- package/presets/cursor/java/agents/build-verifier.md +9 -2
- package/presets/cursor/java/agents/code-reviewer.md +8 -1
- package/presets/cursor/java/agents/feature-developer.md +8 -1
- package/presets/cursor/java/agents/task-analyst.md +8 -1
- package/presets/cursor/java/agents/task-router.md +31 -3
- package/presets/cursor/java/commands/task.md +8 -6
- package/presets/cursor/java/hooks/chain-team-phases.sh +195 -53
- package/presets/cursor/java/rules/agent-team-orchestrator.mdc +30 -5
- package/presets/cursor/java/rules/preset-layering.mdc +2 -1
- package/presets/cursor/java/rules/preset-no-cross-stack-leakage.mdc +16 -1
- package/presets/cursor/java/rules/preset-pr-checklist.mdc +2 -1
- package/presets/cursor/java/rules/preset-token-budget.mdc +1 -0
- package/presets/cursor/java/rules/preset-twin-sync.mdc +5 -0
- package/presets/cursor/java/team/README.md +13 -2
- package/presets/cursor/mcp-ts/agents/build-verifier.md +9 -2
- package/presets/cursor/mcp-ts/agents/feature-developer.md +7 -1
- package/presets/cursor/mcp-ts/agents/task-analyst.md +8 -1
- package/presets/cursor/mcp-ts/agents/task-router.md +31 -3
- package/presets/cursor/mcp-ts/commands/task.md +8 -6
- package/presets/cursor/mcp-ts/hooks/chain-team-phases.sh +181 -39
- package/presets/cursor/mcp-ts/rules/agent-team-orchestrator.mdc +30 -5
- package/presets/cursor/mcp-ts/rules/preset-layering.mdc +2 -1
- package/presets/cursor/mcp-ts/rules/preset-no-cross-stack-leakage.mdc +16 -1
- package/presets/cursor/mcp-ts/rules/preset-pr-checklist.mdc +2 -1
- package/presets/cursor/mcp-ts/rules/preset-token-budget.mdc +1 -0
- package/presets/cursor/mcp-ts/rules/preset-twin-sync.mdc +5 -0
- package/presets/cursor/mcp-ts/team/README.md +13 -2
- package/presets/cursor/next/agents/accessibility-reviewer.md +7 -14
- package/presets/cursor/next/agents/api-contract-reviewer.md +7 -14
- package/presets/cursor/next/agents/build-verifier.md +10 -15
- package/presets/cursor/next/agents/ci-investigator.md +7 -14
- package/presets/cursor/next/agents/code-reviewer.md +9 -14
- package/presets/cursor/next/agents/debugger.md +6 -12
- package/presets/cursor/next/agents/feature-developer.md +8 -1
- package/presets/cursor/next/agents/migration-specialist.md +7 -14
- package/presets/cursor/next/agents/performance-auditor.md +6 -13
- package/presets/cursor/next/agents/qa-tester.md +6 -13
- package/presets/cursor/next/agents/security-reviewer.md +7 -14
- package/presets/cursor/next/agents/solution-architect.md +6 -12
- package/presets/cursor/next/agents/task-analyst.md +10 -16
- package/presets/cursor/next/agents/task-router.md +31 -3
- package/presets/cursor/next/agents/tech-writer.md +6 -13
- package/presets/cursor/next/agents/unit-test-generator.md +6 -11
- package/presets/cursor/next/agents/unit-test-healer.md +6 -11
- package/presets/cursor/next/agents/unit-test-planner.md +6 -13
- package/presets/cursor/next/commands/task.md +8 -6
- package/presets/cursor/next/hooks/chain-team-phases.sh +197 -54
- package/presets/cursor/next/rules/agent-team-orchestrator.mdc +30 -5
- package/presets/cursor/next/rules/preset-layering.mdc +2 -1
- package/presets/cursor/next/rules/preset-no-cross-stack-leakage.mdc +16 -1
- package/presets/cursor/next/rules/preset-pr-checklist.mdc +2 -1
- package/presets/cursor/next/rules/preset-token-budget.mdc +1 -0
- package/presets/cursor/next/rules/preset-twin-sync.mdc +5 -0
- package/presets/cursor/next/team/README.md +16 -4
- package/presets/cursor/next/team/fixtures/artifact-manifest.example.json +61 -0
- package/presets/cursor/next/team/fixtures/bugfix-standard.json +10 -0
- package/presets/cursor/next/team/fixtures/feature-full.json +10 -0
- package/presets/cursor/next/team/fixtures/feature-light.json +10 -0
- 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 +51 -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 +37 -0
- package/presets/cursor/nuxt/rules/preset-no-cross-stack-leakage.mdc +84 -0
- package/presets/cursor/nuxt/rules/preset-pr-checklist.mdc +40 -0
- package/presets/cursor/nuxt/rules/preset-token-budget.mdc +42 -0
- package/presets/cursor/nuxt/rules/preset-twin-sync.mdc +55 -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 +51 -0
- package/presets/cursor/nuxt/rules/tests-unit.mdc +78 -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/build-verifier.md +9 -2
- package/presets/cursor/php-hexagonal/agents/code-reviewer.md +8 -1
- package/presets/cursor/php-hexagonal/agents/feature-developer.md +8 -1
- package/presets/cursor/php-hexagonal/agents/task-analyst.md +8 -1
- package/presets/cursor/php-hexagonal/agents/task-router.md +31 -3
- package/presets/cursor/php-hexagonal/commands/task.md +8 -6
- package/presets/cursor/php-hexagonal/hooks/chain-team-phases.sh +195 -53
- package/presets/cursor/php-hexagonal/rules/agent-team-orchestrator.mdc +30 -5
- package/presets/cursor/php-hexagonal/rules/preset-layering.mdc +2 -1
- package/presets/cursor/php-hexagonal/rules/preset-no-cross-stack-leakage.mdc +16 -1
- package/presets/cursor/php-hexagonal/rules/preset-pr-checklist.mdc +2 -1
- package/presets/cursor/php-hexagonal/rules/preset-token-budget.mdc +1 -0
- package/presets/cursor/php-hexagonal/rules/preset-twin-sync.mdc +5 -0
- package/presets/cursor/php-hexagonal/team/README.md +13 -2
- package/presets/cursor/php-laravel/agents/build-verifier.md +9 -2
- package/presets/cursor/php-laravel/agents/code-reviewer.md +8 -1
- package/presets/cursor/php-laravel/agents/feature-developer.md +8 -1
- package/presets/cursor/php-laravel/agents/task-analyst.md +8 -1
- package/presets/cursor/php-laravel/agents/task-router.md +31 -3
- package/presets/cursor/php-laravel/commands/task.md +8 -6
- package/presets/cursor/php-laravel/hooks/chain-team-phases.sh +195 -53
- package/presets/cursor/php-laravel/rules/agent-team-orchestrator.mdc +30 -5
- package/presets/cursor/php-laravel/rules/preset-layering.mdc +2 -1
- package/presets/cursor/php-laravel/rules/preset-no-cross-stack-leakage.mdc +16 -1
- package/presets/cursor/php-laravel/rules/preset-pr-checklist.mdc +2 -1
- package/presets/cursor/php-laravel/rules/preset-token-budget.mdc +1 -0
- package/presets/cursor/php-laravel/rules/preset-twin-sync.mdc +5 -0
- package/presets/cursor/php-laravel/team/README.md +13 -2
- 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 +51 -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 +37 -0
- package/presets/cursor/svelte/rules/preset-no-cross-stack-leakage.mdc +84 -0
- package/presets/cursor/svelte/rules/preset-pr-checklist.mdc +40 -0
- package/presets/cursor/svelte/rules/preset-token-budget.mdc +42 -0
- package/presets/cursor/svelte/rules/preset-twin-sync.mdc +55 -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 +51 -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,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Design smells (Fowler) and curated GoF patterns for agents. Load when assessing structure, smells, or pattern fit.
|
|
3
|
+
paths:
|
|
4
|
+
- pages/**/*
|
|
5
|
+
- components/**/*
|
|
6
|
+
- stores/**/*
|
|
7
|
+
- api/**/*
|
|
8
|
+
- composables/**/*
|
|
9
|
+
- types/**/*
|
|
10
|
+
---
|
|
11
|
+
<!-- shared-core: quality/design-guidance.md -->
|
|
12
|
+
|
|
13
|
+
# Design guidance (smells & patterns)
|
|
14
|
+
|
|
15
|
+
Словарь **code smells** (Fowler) и **design patterns** (GoF) для агентов при implement / review / debug.
|
|
16
|
+
|
|
17
|
+
Применять только в scope задачи или MR. Лёгкий refactor — да; «большой» rewrite без явного запроса — нет.
|
|
18
|
+
|
|
19
|
+
Называть паттерн **только если** репозиторий уже так делает или это минимальный match. Иначе — extract/split/move без ярлыка GoF.
|
|
20
|
+
|
|
21
|
+
Не заменяет always-on Principles в `code-quality-and-refactoring` (KISS, DRY + Rule of Three, YAGNI, SOLID, CUPID, composition, Demeter).
|
|
22
|
+
|
|
23
|
+
## When to load
|
|
24
|
+
|
|
25
|
+
- **Feature delivery / implement** — оценка структуры модулей, границ и дублирования.
|
|
26
|
+
- **Code review** — smells и pattern fit **в диффе MR**, не по всему репо.
|
|
27
|
+
- **Debug** — root-cause похож на wrong abstraction, Feature Envy, Message Chains, Shotgun Surgery.
|
|
28
|
+
- **Light refactor only** — улучшения в рамках boy-scout / MR scope; не расширять задачу ради каталога.
|
|
29
|
+
|
|
30
|
+
Агенты и skills подгружают stem по one-liner wiring — не копировать этот каталог в промпт агента.
|
|
31
|
+
|
|
32
|
+
## How to use (agent rules of thumb)
|
|
33
|
+
|
|
34
|
+
1. Сначала сверить с Principles (always-on): проще ли решение, нет ли ранней абстракции, соблюдён ли public API.
|
|
35
|
+
2. Затем отметить smells **в изменённых файлах** задачи/MR; предложить fix только если он укладывается в light refactor.
|
|
36
|
+
3. Паттерн GoF — опциональный ярлык после того, как структура уже ясна; не начинать дизайн с выбора паттерна.
|
|
37
|
+
4. Если smell и паттерн конфликтуют с границами слоёв стека — побеждают stack boundaries и existing repo patterns.
|
|
38
|
+
5. Не требовать переименования «под GoF», если поведение уже корректно и читаемо.
|
|
39
|
+
|
|
40
|
+
## Code smells (Fowler, curated ≤12)
|
|
41
|
+
|
|
42
|
+
Таблица: smell → detect hint → fix hint (одна линия каждый). Без механических меню рефакторинга.
|
|
43
|
+
|
|
44
|
+
| # | Smell | Detect | Fix hint |
|
|
45
|
+
|---|-------|--------|----------|
|
|
46
|
+
| 1 | Duplicate Code | одинаковая логика в ≥2 местах | dedupe после Rule of Three |
|
|
47
|
+
| 2 | Long Method / Long Module | единица делает слишком много | extract в рамках scope; без big rewrite |
|
|
48
|
+
| 3 | Feature Envy | метод чаще трогает чужие данные, чем свои | сдвинуть логику к данным / public API |
|
|
49
|
+
| 4 | Data Clumps | одни и те же группы аргументов кочуют вместе | сгруппировать в type / value object |
|
|
50
|
+
| 5 | Primitive Obsession | сырые string/int вместо доменных понятий | typed ids / value objects при нужде домена |
|
|
51
|
+
| 6 | Speculative Generality | неиспользуемые хуки, флаги, абстракции «на будущее» | удалить (YAGNI) |
|
|
52
|
+
| 7 | Message Chains | цепочки `a.b.c.d` | Demeter; facade / public API модуля |
|
|
53
|
+
| 8 | Middle Man | класс почти только прокидывает вызовы | убрать pass-through **или** оставить как boundary |
|
|
54
|
+
| 9 | Divergent Change | один модуль меняется по разным причинам | split по поводам изменения |
|
|
55
|
+
| 10 | Shotgun Surgery | одно смысловое изменение разъезжается по многим файлам | consolidate ответственность |
|
|
56
|
+
| 11 | Inappropriate Intimacy | доступ к чужим internals / private деталям | только public API / ports / facades |
|
|
57
|
+
| 12 | Refused Bequest / Parallel Inheritance | подтип игнорирует базу; зеркальные иерархии классов | composition; не плодить параллельные деревья |
|
|
58
|
+
|
|
59
|
+
**Skip Fowler (не в core):** Lazy Class, Incomplete Library Class, Comments-as-smell dogma, полный каталог 70+, пошаговые recipe-меню.
|
|
60
|
+
|
|
61
|
+
Приоритет при конфликте smells: Inappropriate Intimacy и Message Chains (границы модулей) > Duplicate Code (после Rule of Three) > Long Method внутри уже правильного модуля.
|
|
62
|
+
|
|
63
|
+
## Design patterns (GoF, curated ≤8)
|
|
64
|
+
|
|
65
|
+
Suggest only when repo already uses the shape or the match is minimal. Prefer extract-function over naming Strategy ради ярлыка.
|
|
66
|
+
|
|
67
|
+
Паттерны ниже — **разрешённый минимум** для агентов; остальной GoF по умолчанию в Skip.
|
|
68
|
+
|
|
69
|
+
| Pattern | When to suggest | Anti-trigger |
|
|
70
|
+
|---------|-----------------|--------------|
|
|
71
|
+
| Strategy | взаимозаменяемые алгоритмы уже (или явно скоро) выбираются политикой | один алгоритм без ветвления политики |
|
|
72
|
+
| Adapter | обернуть внешний / чужой API под локальный port | лишняя обёртка вокруг своего же API |
|
|
73
|
+
| Facade | упростить multi-step subsystem за public API | facade превращается в god-object |
|
|
74
|
+
| Factory Method | полиморфное создание уже принято в стиле репо | factory на каждый тривиальный `new` |
|
|
75
|
+
| Decorator | аддитивное поведение без взрыва subclass-иерархий | decorator «для слоёв» без реальной нужды |
|
|
76
|
+
| Observer | events / subscriptions уже есть в архитектуре | самодельный pub/sub без прецедента в репо |
|
|
77
|
+
| Template Method | общий algorithm skeleton + вариативные hooks | наследование ради пары отличающихся строк |
|
|
78
|
+
| Composite | дерево однородных узлов (UI/domain), как уже в репо | Composite на плоский список без иерархии |
|
|
79
|
+
|
|
80
|
+
Если сомневаешься между двумя паттернами — выбери более простой extract/compose без имени; ярлык можно добавить на review, если репо уже так говорит.
|
|
81
|
+
|
|
82
|
+
## Skip / avoid by default
|
|
83
|
+
|
|
84
|
+
| Catalog | Skip |
|
|
85
|
+
|---------|------|
|
|
86
|
+
| GoF | Singleton, Abstract Factory, Flyweight, Memento, Interpreter, Visitor, Bridge, Prototype |
|
|
87
|
+
| GoF (conditional) | Command, Chain of Responsibility, State — упоминать **только если** репо уже использует |
|
|
88
|
+
| Fowler | всё сверх 12 smells выше |
|
|
89
|
+
| DDD | Aggregates, bounded-context maps, event sourcing, CQRS — **не в core** |
|
|
90
|
+
| DDD (pointer) | ubiquitous language anti-pattern — расширять в `feature-delivery-workflow`, не здесь |
|
|
91
|
+
| GRASP | список Larman как отдельные правила — skip (перекрывается SOLID/CUPID) |
|
|
92
|
+
| Clean Code dogma | жёсткие caps на строки функции / «ровно один assert» — skip |
|
|
93
|
+
|
|
94
|
+
Не вводить второй stem (`refactoring-smells` / `design-patterns-for-agents`) — один каталог: `design-guidance`.
|
|
95
|
+
|
|
96
|
+
## Out of scope for this stem
|
|
97
|
+
|
|
98
|
+
- Полный GoF (23) и полный Fowler catalog.
|
|
99
|
+
- Stack-specific рецепты (пути модулей, lint-команды) — только в **Stack notes** адаптера.
|
|
100
|
+
- Security, a11y, perf — отдельные review-правила; здесь только структурные smells/patterns.
|
|
101
|
+
- Четвёртое always-on правило — запрещено; этот stem только requestable / agent-load.
|
|
102
|
+
|
|
103
|
+
## Cross-refs
|
|
104
|
+
|
|
105
|
+
- Always-on Principles: `code-quality-and-refactoring`.
|
|
106
|
+
- DIP / ports vs adapters: stack `architecture-boundaries` (детали стека — в Stack notes адаптеров).
|
|
107
|
+
- Ubiquitous language: `feature-delivery-workflow` (lineage).
|
|
108
|
+
- MR checklist (smells in scope; pattern name only if repo uses it): `code-review-mr`.
|
|
109
|
+
- Token / twin policy for authors: `preset-token-budget`, `preset-twin-sync` (meta, not consumer always-on).
|
|
110
|
+
|
|
111
|
+
## Stack notes
|
|
112
|
+
|
|
113
|
+
- Prefer hooks/mappers over HOC or new pattern names when the repo already extracts that way.
|
|
114
|
+
- Suggest Strategy/Adapter only when ports or policy branching already exist in `**`.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Перед командами в терминале определять менеджер пакетов репозитория и использовать только его
|
|
3
|
+
---
|
|
4
|
+
# Менеджер пакетов (терминал)
|
|
5
|
+
|
|
6
|
+
Перед **`npm install` / `yarn` / `pnpm` / `bun`** и **`… run …`** определи менеджер репозитория и **используй только его**.
|
|
7
|
+
|
|
8
|
+
## Как определить
|
|
9
|
+
|
|
10
|
+
1. **`packageManager`** в `package.json` (корень репозитория; в монорепо — workspace root, где живут scripts / `nuxt.config.*`).
|
|
11
|
+
2. **Lockfile** рядом: `yarn.lock` → yarn; `pnpm-lock.yaml` → pnpm; `package-lock.json` → npm; `bun.lock(b)` → bun.
|
|
12
|
+
3. Если неоднозначно — где `node_modules` и какой lockfile в CI.
|
|
13
|
+
|
|
14
|
+
## Stack notes
|
|
15
|
+
|
|
16
|
+
Рабочий каталог для scripts — **корень репозитория** (каталог с `nuxt.config.*`), **не** Next `app/`. Примеры: `yarn lint:js`, `pnpm run typecheck`. Не угадывай — проверь файлы.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Прогон ESLint и Stylelint после изменений кода. Requestable — подгружать после правок pages/components/stores/api/**; агенты обязаны запускать после code edits.
|
|
3
|
+
paths:
|
|
4
|
+
- pages/**/*
|
|
5
|
+
- components/**/*
|
|
6
|
+
---
|
|
7
|
+
# Линтеры после изменений кода
|
|
8
|
+
|
|
9
|
+
**Requestable, но обязателен при изменениях кода:** правило не always-on (экономия контекста); после правок исходников агент **должен** следовать этому чеклисту.
|
|
10
|
+
|
|
11
|
+
## Когда применять
|
|
12
|
+
|
|
13
|
+
После **любого** изменения исходников в `pages/**`, `components/**`, `composables/**`, `stores/**`, `api/**`, `lib/**`, `server/**`, `types/**`, `layouts/**`, `middleware/**` (Vue/TS/JS, CSS, scoped/CSS modules).
|
|
14
|
+
|
|
15
|
+
Исключения: правки документации, конфигов CI, `.cursor/rules/**`, если исполняемый код приложения не менялся.
|
|
16
|
+
|
|
17
|
+
**Pipeline exception:** если задача идёт через agent team и следующий шаг — `build-verifier`, developer может ограничиться lint/typecheck **изменённых файлов**; полный прогон — обязанность `build-verifier`. В single-agent режиме (без pipeline) — всегда полный прогон.
|
|
18
|
+
|
|
19
|
+
## Обязательные команды
|
|
20
|
+
|
|
21
|
+
Рабочий каталог — **корень репозитория** (где `nuxt.config.*`). Менеджер пакетов — **`package-manager`**.
|
|
22
|
+
|
|
23
|
+
1. **`lint:js`** — полный ESLint по проекту.
|
|
24
|
+
2. **`lint:css`** — полный Stylelint.
|
|
25
|
+
|
|
26
|
+
Точечный lint на один файл **не заменяет** полный прогон перед завершением задачи (кроме pipeline exception выше).
|
|
27
|
+
|
|
28
|
+
## Алгоритм
|
|
29
|
+
|
|
30
|
+
1. Завершить правки кода.
|
|
31
|
+
2. Запустить **`lint:js`** и **`lint:css`** из корня репозитория.
|
|
32
|
+
3. Проанализировать весь вывод; исправить errors/warnings в изменённых файлах; для Stylelint — autofix если доступен.
|
|
33
|
+
4. Повторить до exit code 0 или зафиксировать блокер в ответе пользователю.
|
|
34
|
+
5. **`typecheck`** (`nuxt typecheck`) при изменениях TypeScript / Vue SFC. CI-уровень: **`lint`** (= `lint:js` + `lint:css` + `typecheck`).
|
|
35
|
+
|
|
36
|
+
**Имя скрипта type gate — `typecheck`**, не next-овский `type-check`.
|
|
37
|
+
|
|
38
|
+
## Что исправлять
|
|
39
|
+
|
|
40
|
+
- **Errors** — обязательно.
|
|
41
|
+
- **Warnings** — обязательно в файлах задачи; вне скоупа — упомянуть, если мешают нулевому exit code.
|
|
42
|
+
|
|
43
|
+
Конфиги: `eslint.config.mjs` / `.eslintrc*`, `.stylelintrc*` (порядок CSS — `css-property-order-stylelint`).
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Preset authoring: Core → Stack → Platform layering. Use when editing packages/ai-rules/presets/**.
|
|
3
|
+
paths: packages/ai-rules/presets/**
|
|
4
|
+
---
|
|
5
|
+
<!-- shared-core: meta/preset-layering.md -->
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# Preset layering
|
|
9
|
+
|
|
10
|
+
Правила для **авторов пресетов** (`packages/ai-rules/presets/**`). Не always-on в consumer apps.
|
|
11
|
+
|
|
12
|
+
## Слои
|
|
13
|
+
|
|
14
|
+
| Слой | Где | Что класть |
|
|
15
|
+
|------|-----|------------|
|
|
16
|
+
| **Core** | `presets/_shared/core/**` | Stack-agnostic prose + checklists; без frontmatter; без путей `app/**`, `Features/**`, Playwright, xcodebuild |
|
|
17
|
+
| **Stack** | `presets/{cursor\|claude}/<stack>/` | Domain/tooling, always-on trio стека, stack examples в **Stack notes** |
|
|
18
|
+
| **Platform** | Cursor `.mdc` / Claude `.md` | Frontmatter (`alwaysApply`/`globs` vs `paths:`), platform-only (`BUGBOT.md`, `CLAUDE.md`) |
|
|
19
|
+
|
|
20
|
+
## Куда класть новое правило
|
|
21
|
+
|
|
22
|
+
1. Общие принципы для всех стеков → **core** + адаптеры с `<!-- shared-core: … -->`.
|
|
23
|
+
2. Только один из installable стеков (`next` / `nuxt` / `svelte` / `ios-swift` / `go` / `java` / `mcp-ts` / `php-hexagonal` / `php-laravel`) → **stack-specific** (не в `_shared`).
|
|
24
|
+
3. Только Cursor или только Claude packaging → platform artifact / frontmatter, не дублировать семантику.
|
|
25
|
+
|
|
26
|
+
## SoT
|
|
27
|
+
|
|
28
|
+
- Packages path — SoT; root `.cursor/` — dogfood sync.
|
|
29
|
+
- Per stack: **Cursor** `presets/cursor/<stack>/` → Claude twin same PR.
|
|
30
|
+
- `_shared` **не** `--preset` и не копируется CLI `init`.
|
|
31
|
+
|
|
32
|
+
См. также: `preset-twin-sync`, `preset-token-budget`, `preset-pr-checklist`, `preset-no-cross-stack-leakage`.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Preset authoring: forbid cross-stack agent/path leakage in hooks and agents.
|
|
3
|
+
paths: packages/ai-rules/presets/**
|
|
4
|
+
---
|
|
5
|
+
<!-- shared-core: meta/preset-no-cross-stack-leakage.md -->
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# Preset no cross-stack leakage
|
|
9
|
+
|
|
10
|
+
Запрет протекания stack-specific имён, путей и handoff stems между пресетами.
|
|
11
|
+
|
|
12
|
+
## Principles
|
|
13
|
+
|
|
14
|
+
- `next` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
15
|
+
- `nuxt` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
16
|
+
- `svelte` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
17
|
+
- `ios-swift` must not ship Playwright handoffs or Next lint recipes as required commands.
|
|
18
|
+
- `go` / `java` / `php-hexagonal` / `php-laravel` / `mcp-ts` must not ship Playwright, XCUITest, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
|
|
19
|
+
- `mcp-ts` must not ship Go tool commands (`go test`, `go vet`, `golangci-lint`) or `integration-test-*` agents as required delivery gates.
|
|
20
|
+
- Shared core must not embed stack paths (`app/src/**`, `Features/**`, `playwright`, `xcodebuild`).
|
|
21
|
+
|
|
22
|
+
## Forbidden in ios-swift hooks/agents (FAIL)
|
|
23
|
+
|
|
24
|
+
In ios-swift `chain-team-phases.sh` / agent handoffs (Cursor + Claude):
|
|
25
|
+
|
|
26
|
+
- `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`
|
|
27
|
+
- `app/__tests__/e2e` as a required path
|
|
28
|
+
- Positive yarn recipes `lint:js` / `lint:css` as commands to run (negation prose alone is weak — prefer zero occurrences)
|
|
29
|
+
|
|
30
|
+
Required instead: `xcuitest-test-*` stems; build-verifier mentions `xcodebuild` or `post-change-build` / `xcode-tooling`.
|
|
31
|
+
|
|
32
|
+
## Forbidden in next hooks/agents (FAIL when present as required)
|
|
33
|
+
|
|
34
|
+
- `xcuitest-test-` as handoff stems
|
|
35
|
+
- Requiring `xcodebuild` / SwiftLint as the default post-change gate for Next app work
|
|
36
|
+
|
|
37
|
+
## Forbidden in nuxt hooks/agents (FAIL when present as required)
|
|
38
|
+
|
|
39
|
+
- `xcuitest-test-` as handoff stems
|
|
40
|
+
- Requiring `xcodebuild` / SwiftLint as the default post-change gate for Nuxt app work
|
|
41
|
+
- Frontend profile mirrors `next`: Playwright / `lint:js` / `lint:css` allowed
|
|
42
|
+
|
|
43
|
+
## Forbidden in svelte hooks/agents (FAIL when present as required)
|
|
44
|
+
|
|
45
|
+
- `xcuitest-test-` as handoff stems
|
|
46
|
+
- Requiring `xcodebuild` / SwiftLint as the default post-change gate for SvelteKit app work
|
|
47
|
+
- Frontend profile mirrors `next` / `nuxt`: Playwright / `lint:js` / `lint:css` allowed
|
|
48
|
+
|
|
49
|
+
## Forbidden in go / java / php-hexagonal / php-laravel hooks/agents (FAIL)
|
|
50
|
+
|
|
51
|
+
Shared backend-stack bans (`go`, `java`, `php-hexagonal`, and `php-laravel`):
|
|
52
|
+
|
|
53
|
+
- `playwright-test-`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
|
|
54
|
+
- Positive yarn recipes `lint:js` / `lint:css`
|
|
55
|
+
- `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
56
|
+
- Agent file `accessibility-reviewer` (no UI surface)
|
|
57
|
+
|
|
58
|
+
Required instead: `integration-test-*`; build-verifier / `post-change-test` plus stack tooling — `go-tooling` (`go test`, `go vet`), `java-tooling` (`mvn test` / `./gradlew test`), or `php-tooling` (`php artisan test` / `composer test` / `vendor/bin/phpunit`).
|
|
59
|
+
|
|
60
|
+
## Forbidden in mcp-ts hooks/agents (FAIL)
|
|
61
|
+
|
|
62
|
+
Same UI/mobile bans as backend stacks, plus:
|
|
63
|
+
|
|
64
|
+
- `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
|
|
65
|
+
- Positive yarn recipes `lint:js` / `lint:css` as required gates
|
|
66
|
+
- `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
67
|
+
- Go tool commands as required MCP delivery gates: `go test`, `go vet`, `golangci-lint`
|
|
68
|
+
- Agent files: `playwright-test-*`, `xcuitest-test-*`, `integration-test-*`, `accessibility-reviewer`
|
|
69
|
+
|
|
70
|
+
Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`, `post-change-test`); Phase 1 gates `build-verifier` + `security-reviewer`.
|
|
71
|
+
|
|
72
|
+
## Soft / document
|
|
73
|
+
|
|
74
|
+
- Mentioning the other stack in **docs** comparing presets is OK.
|
|
75
|
+
- `build-verifier` may reference other stacks when validating **preset packaging** (`scope: preset-structure-validation`).
|
|
76
|
+
|
|
77
|
+
## Chain fork
|
|
78
|
+
|
|
79
|
+
`hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `nuxt`, `svelte`, `ios-swift`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (per platform).
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Preset authoring: PR checklist for twin sync, budget, leakage, README. Use on preset PRs.
|
|
3
|
+
paths: packages/ai-rules/presets/**
|
|
4
|
+
---
|
|
5
|
+
<!-- shared-core: meta/preset-pr-checklist.md -->
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# Preset PR checklist
|
|
9
|
+
|
|
10
|
+
Чеклист для PR, затрагивающих `packages/ai-rules/presets/**` (и dogfood `.cursor/` sync).
|
|
11
|
+
|
|
12
|
+
## Before merge
|
|
13
|
+
|
|
14
|
+
- [ ] **SoT:** правки в `packages/…` (не только root `.cursor/`)
|
|
15
|
+
- [ ] **Core:** если менялся `_shared/core/**` — обновлены все `<!-- shared-core: … -->` consumers (или documented intentional fork)
|
|
16
|
+
- [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, nuxt, svelte, ios-swift, go, java, mcp-ts, php-hexagonal, and php-laravel — см. `preset-twin-sync`)
|
|
17
|
+
- [ ] **Mapping:** `claude/<stack>/rules/README.md` mapping table актуален
|
|
18
|
+
- [ ] **Token budget:** alwaysApply / session-start ≤ 3; meta rules not always-on
|
|
19
|
+
- [ ] **Leakage:** нет чужих stack agent stems / handoff strings (`preset-no-cross-stack-leakage`)
|
|
20
|
+
- [ ] **Twin depth:** domain ≥15 lines; thin aliases documented
|
|
21
|
+
- [ ] **README:** stack `rules/README.md` core→stack mapping / catalog updated if stems added
|
|
22
|
+
- [ ] **CHANGELOG / package README:** note when public preset paths or install surface change
|
|
23
|
+
- [ ] **Dogfood:** run `packages/ai-rules/scripts/sync-dogfood-cursor.sh` (or document intentional skip) when maintaining this monorepo
|
|
24
|
+
- [ ] **shared-core drift:** for embed-mode stems, run `packages/ai-rules/scripts/check-shared-core-drift.sh` (or document intentional fork)
|
|
25
|
+
|
|
26
|
+
## Pointers
|
|
27
|
+
|
|
28
|
+
- Layering: `preset-layering`
|
|
29
|
+
- Sync: `preset-twin-sync`
|
|
30
|
+
- Budget: `preset-token-budget`
|
|
31
|
+
- Leakage: `preset-no-cross-stack-leakage`
|
|
32
|
+
- Validation: stack `agents/build-verifier.md` → preset-structure section
|
|
33
|
+
- Dogfood script: `packages/ai-rules/scripts/sync-dogfood-cursor.sh`
|
|
34
|
+
- Drift script: `packages/ai-rules/scripts/check-shared-core-drift.sh`
|
|
35
|
+
- Orchestrator: when editing presets, load this checklist + twin-sync
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Preset authoring: ≤3 always-on / session-start; meta rules never alwaysApply.
|
|
3
|
+
paths:
|
|
4
|
+
- packages/ai-rules/presets/**/*
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<!-- shared-core: meta/preset-token-budget.md -->
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# Preset token budget
|
|
11
|
+
|
|
12
|
+
Инварианты загрузки правил в **установленном** пресете (consumer app).
|
|
13
|
+
|
|
14
|
+
## Hard caps
|
|
15
|
+
|
|
16
|
+
| Platform | Always-on | Cap |
|
|
17
|
+
|----------|-----------|-----|
|
|
18
|
+
| Cursor | `alwaysApply: true` | **≤ 3** |
|
|
19
|
+
| Claude | rules **without** `paths:` | **ровно 3** |
|
|
20
|
+
|
|
21
|
+
**Claude Option A (README exclusion):** when counting Claude rules without `paths:` / session-start, **exclude `**/README.md`** (topic indexes are not session-start rules). The intended session-start trio remains **exactly 3**; body budget sums **only those 3** rules.
|
|
22
|
+
|
|
23
|
+
Session-start body budget (где задокументировано): ≤140 строк суммарно (stretch ≤120).
|
|
24
|
+
|
|
25
|
+
## Meta / author rules
|
|
26
|
+
|
|
27
|
+
Rules for preset authors (`preset-layering`, `preset-twin-sync`, …):
|
|
28
|
+
|
|
29
|
+
- **Never** `alwaysApply: true` on consumer installs.
|
|
30
|
+
- Cursor: `globs` limited to `packages/ai-rules/presets/**` (and dogfood `.cursor/**` where useful).
|
|
31
|
+
- Claude: `paths:` limited to `packages/ai-rules/presets/**` (and `.claude/**` dogfood if present).
|
|
32
|
+
|
|
33
|
+
## Heavy workflows
|
|
34
|
+
|
|
35
|
+
Orchestrator, feature-delivery, code-review, post-change gates, domain globs — **requestable / paths**, not always-on.
|
|
36
|
+
|
|
37
|
+
## Verifier
|
|
38
|
+
|
|
39
|
+
build-verifier **FAIL** if alwaysApply / session-start count exceeds 3 (Claude count **excludes `**/README.md`**), or if a `preset-*` meta rule is marked always-on.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Preset authoring: Cursor SoT → Claude twin same PR. Use when editing preset rules.
|
|
3
|
+
paths: packages/ai-rules/presets/**
|
|
4
|
+
---
|
|
5
|
+
<!-- shared-core: meta/preset-twin-sync.md -->
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# Preset twin sync
|
|
9
|
+
|
|
10
|
+
Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
|
|
11
|
+
|
|
12
|
+
## Matrix
|
|
13
|
+
|
|
14
|
+
| Stack | Cursor SoT | Claude derive | Mapping table |
|
|
15
|
+
|-------|------------|---------------|---------------|
|
|
16
|
+
| `next` | `presets/cursor/next/rules/*.mdc` | `presets/claude/next/rules/<topic>/` | **Required** in `claude/next/rules/README.md` |
|
|
17
|
+
| `nuxt` | `presets/cursor/nuxt/rules/*.mdc` | `presets/claude/nuxt/rules/<topic>/` | **Required** in `claude/nuxt/rules/README.md` |
|
|
18
|
+
| `svelte` | `presets/cursor/svelte/rules/*.mdc` | `presets/claude/svelte/rules/<topic>/` | **Required** in `claude/svelte/rules/README.md` |
|
|
19
|
+
| `ios-swift` | `presets/cursor/ios-swift/rules/*.mdc` | `presets/claude/ios-swift/rules/<topic>/` | Keep in `claude/ios-swift/rules/README.md` |
|
|
20
|
+
| `go` | `presets/cursor/go/rules/*.mdc` | `presets/claude/go/rules/<topic>/` | Keep in `claude/go/rules/README.md` |
|
|
21
|
+
| `java` | `presets/cursor/java/rules/*.mdc` | `presets/claude/java/rules/<topic>/` | Keep in `claude/java/rules/README.md` |
|
|
22
|
+
| `mcp-ts` | `presets/cursor/mcp-ts/rules/*.mdc` | `presets/claude/mcp-ts/rules/<topic>/` | Keep in `claude/mcp-ts/rules/README.md` |
|
|
23
|
+
| `php-hexagonal` | `presets/cursor/php-hexagonal/rules/*.mdc` | `presets/claude/php-hexagonal/rules/<topic>/` | Keep in `claude/php-hexagonal/rules/README.md` |
|
|
24
|
+
| `php-laravel` | `presets/cursor/php-laravel/rules/*.mdc` | `presets/claude/php-laravel/rules/<topic>/` | Keep in `claude/php-laravel/rules/README.md` |
|
|
25
|
+
|
|
26
|
+
## Same-PR checklist
|
|
27
|
+
|
|
28
|
+
1. Edit Cursor rule first (body + frontmatter).
|
|
29
|
+
2. Update Claude twin: body + `paths:` (from Cursor `globs:` / requestable triggers); drop `alwaysApply`.
|
|
30
|
+
3. Update mapping table row if stem/path changed.
|
|
31
|
+
4. If body embeds core (`<!-- shared-core: … -->`), sync core consumers across stacks when core changed.
|
|
32
|
+
|
|
33
|
+
## Twin depth
|
|
34
|
+
|
|
35
|
+
- **Domain** rules: ≥15 body lines (FAIL if thin without documented alias reason).
|
|
36
|
+
- **Thin aliases** (`agent-team-intake`, `technical-retro`): may be shorter (soft) if they only point to a command/skill.
|
|
37
|
+
|
|
38
|
+
## Severity (build-verifier)
|
|
39
|
+
|
|
40
|
+
- **next:** missing Claude twin for a changed Cursor rule → **FAIL** (mapping table required).
|
|
41
|
+
- **nuxt:** missing Claude twin for a changed Cursor rule → **FAIL** (mapping table required).
|
|
42
|
+
- **svelte:** missing Claude twin for a changed Cursor rule → **FAIL** (mapping table required).
|
|
43
|
+
- **ios-swift:** missing Claude twin for a changed Cursor rule → **FAIL**.
|
|
44
|
+
- **go:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift; mapping table required).
|
|
45
|
+
- **java:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go; mapping table required).
|
|
46
|
+
- **mcp-ts:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java; mapping table required).
|
|
47
|
+
- **php-hexagonal:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts; mapping table required).
|
|
48
|
+
- **php-laravel:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go / java / mcp-ts / php-hexagonal; mapping table required).
|
|
49
|
+
|
|
50
|
+
Dogfood: sync packages → root `.cursor/` after Cursor SoT changes (not the reverse). Use `packages/ai-rules/scripts/sync-dogfood-cursor.sh`.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Nuxt/Nitro security — runtimeConfig, SSR secrets, XSS, CSRF, server routes
|
|
3
|
+
paths:
|
|
4
|
+
- server/**/*
|
|
5
|
+
- nuxt.config.*
|
|
6
|
+
- pages/**/*
|
|
7
|
+
- components/**/*
|
|
8
|
+
- middleware/**/*
|
|
9
|
+
---
|
|
10
|
+
# Security (Nuxt)
|
|
11
|
+
|
|
12
|
+
## Secrets & config
|
|
13
|
+
|
|
14
|
+
- Private secrets: `runtimeConfig` (server-only). Public: `runtimeConfig.public` only.
|
|
15
|
+
- Never ship API keys / tokens in client bundles, composables without guard, or `public` config.
|
|
16
|
+
- `.env` / `.env.*` — do not commit secrets; document required keys without values.
|
|
17
|
+
|
|
18
|
+
## Server (Nitro)
|
|
19
|
+
|
|
20
|
+
- Validate/authorize in `server/api/**` and `server/middleware/**`.
|
|
21
|
+
- Do not trust client body/query; sanitize inputs.
|
|
22
|
+
- Prefer server proxies for third-party secrets rather than exposing keys to the browser.
|
|
23
|
+
|
|
24
|
+
## XSS / templates
|
|
25
|
+
|
|
26
|
+
- Prefer text interpolation; avoid `v-html` unless sanitized and necessary.
|
|
27
|
+
- User-generated content — follow existing sanitize helpers in the repo.
|
|
28
|
+
|
|
29
|
+
## Auth / CSRF / cookies
|
|
30
|
+
|
|
31
|
+
- Follow project auth middleware / session patterns; do not invent ad-hoc cookie auth.
|
|
32
|
+
- Cookie flags (`HttpOnly`, `Secure`, `SameSite`) — match security baseline of the repo.
|
|
33
|
+
- CSRF: use established Nuxt/server pattern already in the codebase when mutating state.
|
|
34
|
+
|
|
35
|
+
## Agent requirement
|
|
36
|
+
|
|
37
|
+
When touching auth, forms, env, or `server/api`, load this rule and prefer agent `security-reviewer` for risky changes.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Роль агента для проведения технического ретроспективы (retro) команды / спринта. On-demand — предпочтительнее slash-команда /technical-retro.
|
|
3
|
+
paths: .claude/team/**
|
|
4
|
+
---
|
|
5
|
+
<!-- shared-core: review/technical-retro.md -->
|
|
6
|
+
|
|
7
|
+
# Техническое ретро — rule alias
|
|
8
|
+
|
|
9
|
+
Полный сценарий (включая блок **«Работа агентов»** для slug из team tasks) — в slash-команде:
|
|
10
|
+
|
|
11
|
+
**`commands/technical-retro.md`** → `/technical-retro`
|
|
12
|
+
|
|
13
|
+
When a task has `metrics.json`, use the local aggregation script and state the cohort, sample size, incomplete artifacts, attribution confidence, active attempt duration, and human-gate wait separately. Do not score malformed artifacts or gate wait as agent work.
|
|
14
|
+
|
|
15
|
+
Используй rule только если command недоступен. Не дублируй содержимое command в ответе — следуй command-файлу и skill `technical-retro`.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# UI and accessibility
|
|
2
|
+
|
|
3
|
+
Компоненты, стили, пропсы.
|
|
4
|
+
|
|
5
|
+
| Файл | Содержание | Загрузка |
|
|
6
|
+
|------|------------|----------|
|
|
7
|
+
| `no-v-bind-spread.md` | Явные пропсы, без `v-bind="obj"` | `paths: **/*.{vue,tsx,jsx}` |
|
|
8
|
+
| `css-property-order.md` | Порядок CSS (Stylelint idiomatic-order) | `paths: **/*.{css,scss,vue}` |
|
|
9
|
+
| `vue-ui.md` | Структура SFC, стили, composables | `paths: components|pages|layouts/**/*.{vue,ts}` |
|
|
10
|
+
| `vue-a11y-coding.md` | A11y при написании UI | `paths: components|pages|layouts/**/*.{vue,ts}` |
|
|
11
|
+
|
|
12
|
+
Deprecated stub `component-styles.md` **removed** — styles colocation lives in `vue-ui.md`.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: CSS property order via Stylelint (Vue SFC styles included)
|
|
3
|
+
paths:
|
|
4
|
+
- "**/*.{css,scss,vue}"
|
|
5
|
+
---
|
|
6
|
+
# CSS property order
|
|
7
|
+
|
|
8
|
+
- Follow the repo Stylelint config (property order plugin if present).
|
|
9
|
+
- Applies to plain CSS/SCSS and `<style>` blocks in `.vue` SFCs.
|
|
10
|
+
- Do not hand-resort entire files unrelated to the task; fix order in touched rulesets.
|
|
11
|
+
- Run via **`post-change-lint`** (`lint:css`).
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Ban bulk v-bind object spread on components — prefer explicit props
|
|
3
|
+
paths:
|
|
4
|
+
- "**/*.{vue,tsx,jsx}"
|
|
5
|
+
---
|
|
6
|
+
# No bulk `v-bind` object spread
|
|
7
|
+
|
|
8
|
+
- **Forbidden:** `<Child v-bind="propsObject" />` / `v-bind="rest"` as a way to dump unknown prop bags.
|
|
9
|
+
- **Prefer:** explicit prop bindings (`:title="title" :count="count"`).
|
|
10
|
+
- Exception: intentional passthrough on a thin wrapper documented in-repo (rare); prefer `fallthroughAttributes` / explicit `inheritAttrs` patterns already used by neighbors.
|
|
11
|
+
- Do not "simplify" templates by packing props into a reactive object solely for `v-bind`.
|
|
12
|
+
- Analogue of next `no-props-spread` for Vue SFCs.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Accessibility coding standards for Vue/Nuxt UI
|
|
3
|
+
paths:
|
|
4
|
+
- "components/**/*.{vue,ts}"
|
|
5
|
+
- "pages/**/*.{vue,ts}"
|
|
6
|
+
- "layouts/**/*.{vue,ts}"
|
|
7
|
+
---
|
|
8
|
+
# Vue accessibility
|
|
9
|
+
|
|
10
|
+
- Semantic HTML first (`button`, `nav`, `main`, headings hierarchy).
|
|
11
|
+
- Interactive controls keyboard-reachable; visible focus.
|
|
12
|
+
- Images: meaningful `alt` (or empty alt for decorative).
|
|
13
|
+
- Forms: label association; error text linked via `aria-describedby` / native validation patterns used in repo.
|
|
14
|
+
- Prefer project a11y eslint (`eslint-plugin-vuejs-accessibility` when present) over inventing ARIA.
|
|
15
|
+
- Modals/dialogs: focus trap + Escape — follow existing component patterns.
|
|
16
|
+
- Do not rely on color alone for status.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Vue 3 SFC UI conventions for Nuxt (components, pages, layouts)
|
|
3
|
+
paths:
|
|
4
|
+
- "components/**/*.{vue,ts}"
|
|
5
|
+
- "pages/**/*.{vue,ts}"
|
|
6
|
+
- "layouts/**/*.{vue,ts}"
|
|
7
|
+
---
|
|
8
|
+
# Vue UI (Nuxt)
|
|
9
|
+
|
|
10
|
+
- Предпочитать **SFC** с `<script setup lang="ts">` (`script-setup-conventions`).
|
|
11
|
+
- Явные `defineProps` / `defineEmits` (typed); без массового `v-bind="object"` (`no-v-bind-spread`).
|
|
12
|
+
- Стили: scoped / CSS modules / design tokens — как у соседей; порядок свойств — `css-property-order-stylelint`.
|
|
13
|
+
- Данные: читать Pinia / composables; **не** вызывать HTTP из SFC — только через `~/api` / store actions.
|
|
14
|
+
- Навигация: `<NuxtLink>`, `navigateTo`, `useRouter` / `useRoute` — не `next/link` / `next/navigation`.
|
|
15
|
+
- A11y: `vue-a11y-coding`.
|
|
16
|
+
- Границы UI: `architecture-boundaries-ui` — no DTO in templates; map in `api/**`.
|
|
17
|
+
|
|
18
|
+
## Incorrect
|
|
19
|
+
|
|
20
|
+
```vue
|
|
21
|
+
<script setup lang="ts">
|
|
22
|
+
const data = await $fetch('/api/items')
|
|
23
|
+
</script>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Correct
|
|
27
|
+
|
|
28
|
+
```vue
|
|
29
|
+
<script setup lang="ts">
|
|
30
|
+
import { useItemsStore } from '~/stores/items'
|
|
31
|
+
const store = useItemsStore()
|
|
32
|
+
onMounted(() => { void store.load() })
|
|
33
|
+
</script>
|
|
34
|
+
```
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# `.claude/skills` (preset nuxt)
|
|
2
|
+
|
|
3
|
+
[Skills](https://code.claude.com/docs/en/skills) в Claude Code — сценарии, которые подгружаются по необходимости, а не в каждой сессии целиком. Они синхронизированы по смыслу с `.cursor/skills` из Cursor-пресета.
|
|
4
|
+
|
|
5
|
+
| Skill | Когда использовать |
|
|
6
|
+
|-------|--------------------|
|
|
7
|
+
| `feature-delivery` | End-to-end feature work across types, API, store, UI, tests |
|
|
8
|
+
| `code-review` | MR/diff review using project architecture and test standards |
|
|
9
|
+
| `debug-investigation` | Reproducing and fixing bugs with root-cause evidence |
|
|
10
|
+
| `ci-investigation` | Diagnosing and fixing failing CI checks on PRs/branches |
|
|
11
|
+
| `unit-testing` | Planning, generating, or healing unit test coverage |
|
|
12
|
+
| `playwright-e2e` | Planning, generating, or healing Playwright e2e coverage |
|
|
13
|
+
| `technical-retro` | Technical retrospective for a task, sprint, incident, or agent pipeline |
|
|
14
|
+
| `write-adr` | Author an Architecture Decision Record (context / decision / consequences) |
|
|
15
|
+
| `vue-performance` | Implementer checklist: bundle, SSR/payload/client, memo, waterfalls, CWV (not a perf audit agent) |
|
|
16
|
+
|
|
17
|
+
Папка копируется в `.claude/skills/` при `ai-rules init claude --preset nuxt`, если существует.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ci-investigation
|
|
3
|
+
description: Investigates failing CI checks on PRs and branches — lint, typecheck, unit, e2e — with local reproduction and minimal fixes. Use when CI is red or for ci-fix pipeline tasks.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# CI Investigation
|
|
7
|
+
|
|
8
|
+
## Workflow
|
|
9
|
+
|
|
10
|
+
1. Identify the **first failing check** (lint, typecheck, unit, e2e, build).
|
|
11
|
+
2. Capture error output — ignore cascading failures until root cause is found.
|
|
12
|
+
3. Reproduce locally with the same commands CI uses from repository root:
|
|
13
|
+
- `lint:js`, `lint:css`, `typecheck`
|
|
14
|
+
- targeted unit test file or suite
|
|
15
|
+
- affected Playwright spec if e2e failed
|
|
16
|
+
4. Inspect git diff for changed files related to the failure.
|
|
17
|
+
5. Apply **minimal fix** — no unrelated refactors.
|
|
18
|
+
|
|
19
|
+
## Artifact
|
|
20
|
+
|
|
21
|
+
Write `ci-report.md` under the task slug folder:
|
|
22
|
+
|
|
23
|
+
- Failed check name and link/log excerpt
|
|
24
|
+
- Root cause classification
|
|
25
|
+
- Fix applied (or handoff to feature-developer)
|
|
26
|
+
- Validation commands and results
|
|
27
|
+
|
|
28
|
+
## Handoff Rules
|
|
29
|
+
|
|
30
|
+
- Config-only or one-line fixes → fix in place, re-run check.
|
|
31
|
+
- Missing tests or architecture work → document and route to `feature-developer` or `qa-tester`.
|
|
32
|
+
- Flaky e2e → prefer `playwright-test-healer` after ci-investigator identifies the spec.
|
|
33
|
+
|
|
34
|
+
## Validation
|
|
35
|
+
|
|
36
|
+
Always re-run the failing command locally before marking complete. If environment blocks execution, state the exact command and blocker.
|