@bonesofspring/ai-rules 0.2.6 → 0.2.8
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 +65 -1
- package/README.md +13 -5
- package/bin/cli.js +30 -1
- package/package.json +3 -2
- package/presets/_shared/README.md +1 -1
- package/presets/_shared/core/agent-team/agent-team-intake.md +1 -1
- package/presets/_shared/core/agent-team/agent-team-orchestrator.md +1 -1
- package/presets/_shared/core/architecture/reference-features.template.md +12 -0
- package/presets/_shared/core/meta/preset-layering.md +1 -1
- package/presets/_shared/core/meta/preset-no-cross-stack-leakage.md +6 -4
- package/presets/_shared/core/meta/preset-pr-checklist.md +1 -1
- package/presets/_shared/core/meta/preset-twin-sync.md +2 -0
- package/presets/_shared/core/quality/code-quality-and-refactoring.md +11 -0
- package/presets/_shared/core/review/code-review-mr.md +9 -0
- package/presets/claude/go/CLAUDE.md +5 -1
- package/presets/claude/go/README.md +5 -1
- package/presets/claude/go/REPO_AGENTS.md +48 -0
- package/presets/claude/go/agents/README.md +19 -2
- package/presets/claude/go/agents/build-verifier.md +6 -1
- package/presets/claude/go/agents/codebase-analyzer.md +28 -0
- package/presets/claude/go/agents/feature-developer.md +13 -0
- package/presets/claude/go/hooks/README.md +6 -0
- package/presets/claude/go/hooks/examples/README.md +18 -0
- package/presets/claude/go/hooks/examples/format-edited.example.sh +9 -0
- package/presets/claude/go/hooks/examples/secret-guard.example.sh +10 -0
- package/presets/claude/go/hooks/examples/test-on-save.example.sh +11 -0
- package/presets/claude/go/rules/api-and-data/api-http.md +10 -3
- package/presets/claude/go/rules/architecture/reference-features.md +4 -0
- package/presets/claude/go/rules/stack/go-conventions.md +30 -3
- package/presets/claude/go/rules/tooling-and-review/agent-team-intake.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/code-quality.md +12 -1
- package/presets/claude/go/rules/tooling-and-review/code-review.md +9 -0
- package/presets/claude/go/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/preset-no-cross-stack-leakage.md +6 -8
- package/presets/claude/go/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/preset-twin-sync.md +2 -0
- package/presets/claude/go/skills/README.md +2 -2
- package/presets/claude/go/skills/code-review/SKILL.md +11 -2
- package/presets/claude/go/skills/feature-delivery/SKILL.md +4 -0
- package/presets/claude/go/skills/technical-retro/SKILL.md +46 -2
- package/presets/claude/go/skills/write-adr/SKILL.md +41 -0
- package/presets/claude/go/team/conventions.md +21 -0
- package/presets/claude/go/team/fixtures/feature-full.json +5 -23
- package/presets/claude/ios-swift/CLAUDE.md +4 -1
- package/presets/claude/ios-swift/README.md +5 -1
- package/presets/claude/ios-swift/REPO_AGENTS.md +46 -0
- package/presets/claude/ios-swift/agents/README.md +3 -2
- package/presets/claude/ios-swift/agents/build-verifier.md +7 -2
- package/presets/claude/ios-swift/agents/codebase-analyzer.md +28 -0
- package/presets/claude/ios-swift/agents/feature-developer.md +13 -0
- package/presets/claude/ios-swift/hooks/README.md +6 -0
- package/presets/claude/ios-swift/hooks/examples/README.md +18 -0
- package/presets/claude/ios-swift/hooks/examples/format-edited.example.sh +13 -0
- package/presets/claude/ios-swift/hooks/examples/secret-guard.example.sh +10 -0
- package/presets/claude/ios-swift/hooks/examples/test-on-save.example.sh +8 -0
- package/presets/claude/ios-swift/rules/architecture/reference-features.md +4 -0
- package/presets/claude/ios-swift/rules/stack/ios-app-core.md +5 -28
- package/presets/claude/ios-swift/rules/stack/swift-conventions.md +12 -2
- package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-intake.md +1 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/code-quality.md +12 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/code-review.md +47 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-no-cross-stack-leakage.md +6 -4
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-twin-sync.md +2 -0
- package/presets/claude/ios-swift/rules/ui-and-accessibility/swiftui.md +8 -0
- package/presets/claude/ios-swift/skills/README.md +1 -0
- package/presets/claude/ios-swift/skills/code-review/SKILL.md +10 -2
- package/presets/claude/ios-swift/skills/feature-delivery/SKILL.md +4 -0
- package/presets/claude/ios-swift/skills/technical-retro/SKILL.md +46 -2
- package/presets/claude/ios-swift/skills/write-adr/SKILL.md +41 -0
- package/presets/claude/ios-swift/team/conventions.md +21 -0
- package/presets/claude/java/CLAUDE.md +29 -0
- package/presets/claude/java/MCP.md +13 -0
- package/presets/claude/java/README.md +26 -0
- package/presets/claude/java/REPO_AGENTS.md +45 -0
- package/presets/claude/java/agents/README.md +32 -0
- package/presets/claude/java/agents/api-contract-reviewer.md +23 -0
- package/presets/claude/java/agents/build-verifier.md +45 -0
- package/presets/claude/java/agents/ci-investigator.md +17 -0
- package/presets/claude/java/agents/code-reviewer.md +40 -0
- package/presets/claude/java/agents/codebase-analyzer.md +28 -0
- package/presets/claude/java/agents/debugger.md +25 -0
- package/presets/claude/java/agents/feature-developer.md +43 -0
- package/presets/claude/java/agents/integration-test-generator.md +22 -0
- package/presets/claude/java/agents/integration-test-healer.md +22 -0
- package/presets/claude/java/agents/integration-test-planner.md +22 -0
- package/presets/claude/java/agents/migration-specialist.md +31 -0
- package/presets/claude/java/agents/performance-auditor.md +22 -0
- package/presets/claude/java/agents/qa-tester.md +24 -0
- package/presets/claude/java/agents/security-reviewer.md +20 -0
- package/presets/claude/java/agents/solution-architect.md +28 -0
- package/presets/claude/java/agents/task-analyst.md +25 -0
- package/presets/claude/java/agents/task-router.md +69 -0
- package/presets/claude/java/agents/tech-writer.md +15 -0
- package/presets/claude/java/agents/unit-test-generator.md +21 -0
- package/presets/claude/java/agents/unit-test-healer.md +13 -0
- package/presets/claude/java/agents/unit-test-planner.md +26 -0
- package/presets/claude/java/commands/README.md +13 -0
- package/presets/claude/java/commands/feature-continue.md +51 -0
- package/presets/claude/java/commands/feature-start.md +30 -0
- package/presets/claude/java/commands/task-continue.md +49 -0
- package/presets/claude/java/commands/task.md +49 -0
- package/presets/claude/java/commands/technical-retro.md +58 -0
- package/presets/claude/java/hooks/README.md +16 -0
- package/presets/claude/java/hooks/chain-team-phases.sh +381 -0
- package/presets/claude/java/hooks/examples/README.md +18 -0
- package/presets/claude/java/hooks/examples/format-edited.example.sh +11 -0
- package/presets/claude/java/hooks/examples/secret-guard.example.sh +10 -0
- package/presets/claude/java/hooks/examples/test-on-save.example.sh +18 -0
- package/presets/claude/java/hooks/guard-shell-command.sh +80 -0
- package/presets/claude/java/mcp.json +11 -0
- package/presets/claude/java/rules/README.md +60 -0
- package/presets/claude/java/rules/api-and-data/README.md +14 -0
- package/presets/claude/java/rules/api-and-data/adapters-driven.md +38 -0
- package/presets/claude/java/rules/api-and-data/adapters-driving.md +38 -0
- package/presets/claude/java/rules/api-and-data/api-grpc.md +29 -0
- package/presets/claude/java/rules/api-and-data/api-http.md +36 -0
- package/presets/claude/java/rules/api-and-data/messaging-adapters.md +24 -0
- package/presets/claude/java/rules/api-and-data/persistence-adapters.md +33 -0
- package/presets/claude/java/rules/architecture/README.md +16 -0
- package/presets/claude/java/rules/architecture/application-usecases.md +32 -0
- package/presets/claude/java/rules/architecture/boundaries.md +29 -0
- package/presets/claude/java/rules/architecture/composition-root.md +31 -0
- package/presets/claude/java/rules/architecture/domain-layer.md +38 -0
- package/presets/claude/java/rules/architecture/feature-delivery.md +52 -0
- package/presets/claude/java/rules/architecture/module-public-api.md +31 -0
- package/presets/claude/java/rules/architecture/ports-interfaces.md +34 -0
- package/presets/claude/java/rules/architecture/reference-features.md +34 -0
- package/presets/claude/java/rules/stack/README.md +10 -0
- package/presets/claude/java/rules/stack/java-app-core.md +32 -0
- package/presets/claude/java/rules/stack/java-conventions.md +52 -0
- package/presets/claude/java/rules/testing/README.md +11 -0
- package/presets/claude/java/rules/testing/e2e.md +22 -0
- package/presets/claude/java/rules/testing/integration.md +27 -0
- package/presets/claude/java/rules/testing/unit.md +33 -0
- package/presets/claude/java/rules/tooling-and-review/README.md +21 -0
- package/presets/claude/java/rules/tooling-and-review/agent-team-intake.md +26 -0
- package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +179 -0
- package/presets/claude/java/rules/tooling-and-review/code-quality.md +83 -0
- package/presets/claude/java/rules/tooling-and-review/code-review.md +59 -0
- package/presets/claude/java/rules/tooling-and-review/design-guidance.md +110 -0
- package/presets/claude/java/rules/tooling-and-review/java-tooling.md +36 -0
- package/presets/claude/java/rules/tooling-and-review/post-change-test.md +32 -0
- package/presets/claude/java/rules/tooling-and-review/preset-layering.md +36 -0
- package/presets/claude/java/rules/tooling-and-review/preset-no-cross-stack-leakage.md +56 -0
- package/presets/claude/java/rules/tooling-and-review/preset-pr-checklist.md +39 -0
- package/presets/claude/java/rules/tooling-and-review/preset-token-budget.md +41 -0
- package/presets/claude/java/rules/tooling-and-review/preset-twin-sync.md +44 -0
- package/presets/claude/java/rules/tooling-and-review/security-java.md +29 -0
- package/presets/claude/java/rules/tooling-and-review/technical-retro.md +20 -0
- package/presets/claude/java/rules/ui-and-accessibility/README.md +5 -0
- package/presets/claude/java/skills/README.md +5 -0
- package/presets/claude/java/skills/ci-investigation/SKILL.md +11 -0
- package/presets/claude/java/skills/code-review/SKILL.md +25 -0
- package/presets/claude/java/skills/debug-investigation/SKILL.md +15 -0
- package/presets/claude/java/skills/feature-delivery/SKILL.md +30 -0
- package/presets/claude/java/skills/integration-testing/SKILL.md +15 -0
- package/presets/claude/java/skills/technical-retro/SKILL.md +54 -0
- package/presets/claude/java/skills/unit-testing/SKILL.md +14 -0
- package/presets/claude/java/skills/write-adr/SKILL.md +41 -0
- package/presets/claude/java/team/README.md +27 -0
- package/presets/claude/java/team/conventions.md +21 -0
- package/presets/claude/java/team/fixtures/bugfix-standard.json +37 -0
- package/presets/claude/java/team/fixtures/feature-full.json +25 -0
- package/presets/claude/java/team/fixtures/feature-light.json +17 -0
- package/presets/claude/next/CLAUDE.md +5 -1
- package/presets/claude/next/README.md +6 -1
- package/presets/claude/next/REPO_AGENTS.md +48 -0
- package/presets/claude/next/agents/README.md +7 -1
- package/presets/claude/next/agents/build-verifier.md +7 -2
- package/presets/claude/next/agents/codebase-analyzer.md +28 -0
- package/presets/claude/next/agents/feature-developer.md +13 -0
- package/presets/claude/next/agents/security-reviewer.md +4 -2
- package/presets/claude/next/hooks/README.md +6 -0
- package/presets/claude/next/hooks/examples/README.md +18 -0
- package/presets/claude/next/hooks/examples/format-edited.example.sh +11 -0
- package/presets/claude/next/hooks/examples/secret-guard.example.sh +10 -0
- package/presets/claude/next/hooks/examples/test-on-save.example.sh +8 -0
- package/presets/claude/next/rules/README.md +2 -1
- package/presets/claude/next/rules/api-and-data/api-services.md +22 -0
- package/presets/claude/next/rules/api-and-data/http-client.md +21 -0
- package/presets/claude/next/rules/api-and-data/store-rtk.md +20 -0
- package/presets/claude/next/rules/architecture/architecture-boundaries.md +28 -0
- package/presets/claude/next/rules/architecture/layer-barrel-exports.md +15 -0
- package/presets/claude/next/rules/architecture/public-imports.md +14 -0
- package/presets/claude/next/rules/architecture/reference-features.md +4 -0
- package/presets/claude/next/rules/stack/arrow-functions.md +13 -28
- package/presets/claude/next/rules/stack/next-app-router.md +13 -1
- package/presets/claude/next/rules/testing/tests-unit.md +13 -0
- package/presets/claude/next/rules/tooling-and-review/README.md +2 -1
- package/presets/claude/next/rules/tooling-and-review/agent-team-intake.md +1 -1
- package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
- package/presets/claude/next/rules/tooling-and-review/code-quality.md +12 -2
- package/presets/claude/next/rules/tooling-and-review/code-review-mr.md +22 -0
- package/presets/claude/next/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/next/rules/tooling-and-review/preset-no-cross-stack-leakage.md +6 -4
- package/presets/claude/next/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/next/rules/tooling-and-review/preset-twin-sync.md +2 -0
- package/presets/claude/next/rules/tooling-and-review/security-next.md +57 -0
- package/presets/claude/next/rules/ui-and-accessibility/react-ui.md +21 -0
- package/presets/claude/next/skills/README.md +2 -0
- package/presets/claude/next/skills/code-review/SKILL.md +10 -2
- package/presets/claude/next/skills/feature-delivery/SKILL.md +4 -0
- package/presets/claude/next/skills/react-performance/SKILL.md +44 -0
- package/presets/claude/next/skills/technical-retro/SKILL.md +19 -5
- package/presets/claude/next/skills/write-adr/SKILL.md +41 -0
- package/presets/claude/next/team/conventions.md +21 -0
- package/presets/cursor/go/AGENTS.md +6 -0
- package/presets/cursor/go/README.md +6 -5
- package/presets/cursor/go/REPO_AGENTS.md +48 -0
- package/presets/cursor/go/agents/README.md +23 -2
- package/presets/cursor/go/agents/build-verifier.md +6 -1
- package/presets/cursor/go/agents/codebase-analyzer.md +28 -0
- package/presets/cursor/go/agents/feature-developer.md +13 -0
- package/presets/cursor/go/commands/README.md +1 -1
- package/presets/cursor/go/hooks/README.md +4 -0
- package/presets/cursor/go/hooks/examples/README.md +18 -0
- package/presets/cursor/go/hooks/examples/format-edited.example.sh +9 -0
- package/presets/cursor/go/hooks/examples/secret-guard.example.sh +10 -0
- package/presets/cursor/go/hooks/examples/test-on-save.example.sh +11 -0
- package/presets/cursor/go/rules/README.md +2 -2
- package/presets/cursor/go/rules/agent-team-intake.mdc +1 -1
- package/presets/cursor/go/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/go/rules/api-http.mdc +10 -3
- package/presets/cursor/go/rules/code-quality-and-refactoring.mdc +12 -1
- package/presets/cursor/go/rules/code-review-mr.mdc +9 -0
- package/presets/cursor/go/rules/go-conventions.mdc +30 -3
- package/presets/cursor/go/rules/preset-layering.mdc +1 -1
- package/presets/cursor/go/rules/preset-no-cross-stack-leakage.mdc +6 -8
- package/presets/cursor/go/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/go/rules/preset-twin-sync.mdc +2 -0
- package/presets/cursor/go/rules/reference-features.mdc +4 -0
- package/presets/cursor/go/skills/README.md +2 -2
- package/presets/cursor/go/skills/code-review/SKILL.md +10 -1
- package/presets/cursor/go/skills/feature-delivery/SKILL.md +4 -0
- package/presets/cursor/go/skills/technical-retro/SKILL.md +46 -2
- package/presets/cursor/go/skills/write-adr/SKILL.md +41 -0
- package/presets/cursor/go/team/conventions.md +21 -0
- package/presets/cursor/go/team/fixtures/feature-full.json +5 -23
- package/presets/cursor/ios-swift/AGENTS.md +5 -2
- package/presets/cursor/ios-swift/README.md +6 -5
- package/presets/cursor/ios-swift/REPO_AGENTS.md +46 -0
- package/presets/cursor/ios-swift/agents/README.md +3 -2
- package/presets/cursor/ios-swift/agents/build-verifier.md +7 -2
- package/presets/cursor/ios-swift/agents/codebase-analyzer.md +28 -0
- package/presets/cursor/ios-swift/agents/feature-developer.md +13 -0
- package/presets/cursor/ios-swift/commands/README.md +1 -1
- package/presets/cursor/ios-swift/hooks/README.md +4 -0
- package/presets/cursor/ios-swift/hooks/examples/README.md +18 -0
- package/presets/cursor/ios-swift/hooks/examples/format-edited.example.sh +13 -0
- package/presets/cursor/ios-swift/hooks/examples/secret-guard.example.sh +10 -0
- package/presets/cursor/ios-swift/hooks/examples/test-on-save.example.sh +8 -0
- package/presets/cursor/ios-swift/rules/agent-team-intake.mdc +1 -1
- package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/ios-swift/rules/code-quality-and-refactoring.mdc +12 -1
- package/presets/cursor/ios-swift/rules/code-review-mr.mdc +9 -0
- package/presets/cursor/ios-swift/rules/ios-app-core.mdc +5 -28
- package/presets/cursor/ios-swift/rules/preset-layering.mdc +1 -1
- package/presets/cursor/ios-swift/rules/preset-no-cross-stack-leakage.mdc +6 -4
- package/presets/cursor/ios-swift/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/ios-swift/rules/preset-twin-sync.mdc +2 -0
- package/presets/cursor/ios-swift/rules/reference-features.mdc +4 -0
- package/presets/cursor/ios-swift/rules/swift-conventions.mdc +12 -2
- package/presets/cursor/ios-swift/rules/swiftui-ui.mdc +8 -0
- package/presets/cursor/ios-swift/skills/README.md +1 -0
- package/presets/cursor/ios-swift/skills/code-review/SKILL.md +10 -2
- package/presets/cursor/ios-swift/skills/feature-delivery/SKILL.md +4 -0
- package/presets/cursor/ios-swift/skills/technical-retro/SKILL.md +46 -2
- package/presets/cursor/ios-swift/skills/write-adr/SKILL.md +41 -0
- package/presets/cursor/ios-swift/team/conventions.md +21 -0
- package/presets/cursor/java/AGENTS.md +37 -0
- package/presets/cursor/java/BUGBOT.md +11 -0
- package/presets/cursor/java/MCP.md +15 -0
- package/presets/cursor/java/README.md +26 -0
- package/presets/cursor/java/REPO_AGENTS.md +45 -0
- package/presets/cursor/java/agents/README.md +36 -0
- package/presets/cursor/java/agents/api-contract-reviewer.md +23 -0
- package/presets/cursor/java/agents/build-verifier.md +45 -0
- package/presets/cursor/java/agents/ci-investigator.md +17 -0
- package/presets/cursor/java/agents/code-reviewer.md +40 -0
- package/presets/cursor/java/agents/codebase-analyzer.md +28 -0
- package/presets/cursor/java/agents/debugger.md +25 -0
- package/presets/cursor/java/agents/feature-developer.md +43 -0
- package/presets/cursor/java/agents/integration-test-generator.md +22 -0
- package/presets/cursor/java/agents/integration-test-healer.md +22 -0
- package/presets/cursor/java/agents/integration-test-planner.md +22 -0
- package/presets/cursor/java/agents/migration-specialist.md +31 -0
- package/presets/cursor/java/agents/performance-auditor.md +22 -0
- package/presets/cursor/java/agents/qa-tester.md +24 -0
- package/presets/cursor/java/agents/security-reviewer.md +20 -0
- package/presets/cursor/java/agents/solution-architect.md +28 -0
- package/presets/cursor/java/agents/task-analyst.md +25 -0
- package/presets/cursor/java/agents/task-router.md +69 -0
- package/presets/cursor/java/agents/tech-writer.md +15 -0
- package/presets/cursor/java/agents/unit-test-generator.md +21 -0
- package/presets/cursor/java/agents/unit-test-healer.md +13 -0
- package/presets/cursor/java/agents/unit-test-planner.md +26 -0
- package/presets/cursor/java/commands/README.md +54 -0
- package/presets/cursor/java/commands/feature-continue.md +19 -0
- package/presets/cursor/java/commands/feature-start.md +33 -0
- package/presets/cursor/java/commands/task-continue.md +49 -0
- package/presets/cursor/java/commands/task.md +49 -0
- package/presets/cursor/java/commands/technical-retro.md +81 -0
- package/presets/cursor/java/hooks/README.md +12 -0
- package/presets/cursor/java/hooks/chain-team-phases.sh +381 -0
- package/presets/cursor/java/hooks/examples/README.md +18 -0
- package/presets/cursor/java/hooks/examples/format-edited.example.sh +11 -0
- package/presets/cursor/java/hooks/examples/secret-guard.example.sh +10 -0
- package/presets/cursor/java/hooks/examples/test-on-save.example.sh +18 -0
- package/presets/cursor/java/hooks/guard-shell-command.sh +80 -0
- package/presets/cursor/java/hooks.json +17 -0
- package/presets/cursor/java/mcp.json +11 -0
- package/presets/cursor/java/rules/README.md +97 -0
- package/presets/cursor/java/rules/adapters-driven.mdc +40 -0
- package/presets/cursor/java/rules/adapters-driving.mdc +40 -0
- package/presets/cursor/java/rules/agent-team-intake.mdc +20 -0
- package/presets/cursor/java/rules/agent-team-orchestrator.mdc +173 -0
- package/presets/cursor/java/rules/api-grpc.mdc +31 -0
- package/presets/cursor/java/rules/api-http.mdc +38 -0
- package/presets/cursor/java/rules/application-usecases.mdc +34 -0
- package/presets/cursor/java/rules/architecture-boundaries.mdc +30 -0
- package/presets/cursor/java/rules/code-quality-and-refactoring.mdc +84 -0
- package/presets/cursor/java/rules/code-review-mr.mdc +54 -0
- package/presets/cursor/java/rules/composition-root.mdc +33 -0
- package/presets/cursor/java/rules/design-guidance.mdc +112 -0
- package/presets/cursor/java/rules/domain-layer.mdc +40 -0
- package/presets/cursor/java/rules/feature-delivery-workflow.mdc +47 -0
- package/presets/cursor/java/rules/java-app-core.mdc +33 -0
- package/presets/cursor/java/rules/java-conventions.mdc +54 -0
- package/presets/cursor/java/rules/java-tooling.mdc +34 -0
- package/presets/cursor/java/rules/messaging-adapters.mdc +26 -0
- package/presets/cursor/java/rules/module-public-api.mdc +33 -0
- package/presets/cursor/java/rules/persistence-adapters.mdc +35 -0
- package/presets/cursor/java/rules/ports-interfaces.mdc +36 -0
- package/presets/cursor/java/rules/post-change-test.mdc +30 -0
- package/presets/cursor/java/rules/preset-layering.mdc +36 -0
- package/presets/cursor/java/rules/preset-no-cross-stack-leakage.mdc +56 -0
- package/presets/cursor/java/rules/preset-pr-checklist.mdc +39 -0
- package/presets/cursor/java/rules/preset-token-budget.mdc +41 -0
- package/presets/cursor/java/rules/preset-twin-sync.mdc +44 -0
- package/presets/cursor/java/rules/reference-features.mdc +36 -0
- package/presets/cursor/java/rules/security-java.mdc +31 -0
- package/presets/cursor/java/rules/technical-retro.mdc +14 -0
- package/presets/cursor/java/rules/tests-e2e.mdc +24 -0
- package/presets/cursor/java/rules/tests-integration.mdc +29 -0
- package/presets/cursor/java/rules/tests-unit.mdc +35 -0
- package/presets/cursor/java/skills/README.md +5 -0
- package/presets/cursor/java/skills/ci-investigation/SKILL.md +11 -0
- package/presets/cursor/java/skills/code-review/SKILL.md +25 -0
- package/presets/cursor/java/skills/debug-investigation/SKILL.md +15 -0
- package/presets/cursor/java/skills/feature-delivery/SKILL.md +30 -0
- package/presets/cursor/java/skills/integration-testing/SKILL.md +15 -0
- package/presets/cursor/java/skills/technical-retro/SKILL.md +54 -0
- package/presets/cursor/java/skills/unit-testing/SKILL.md +14 -0
- package/presets/cursor/java/skills/write-adr/SKILL.md +41 -0
- package/presets/cursor/java/team/README.md +31 -0
- package/presets/cursor/java/team/conventions.md +21 -0
- package/presets/cursor/java/team/fixtures/bugfix-standard.json +37 -0
- package/presets/cursor/java/team/fixtures/feature-full.json +25 -0
- package/presets/cursor/java/team/fixtures/feature-light.json +17 -0
- package/presets/cursor/next/AGENTS.md +5 -2
- package/presets/cursor/next/README.md +7 -6
- package/presets/cursor/next/REPO_AGENTS.md +48 -0
- package/presets/cursor/next/agents/README.md +7 -1
- package/presets/cursor/next/agents/build-verifier.md +7 -2
- package/presets/cursor/next/agents/codebase-analyzer.md +28 -0
- package/presets/cursor/next/agents/feature-developer.md +13 -0
- package/presets/cursor/next/agents/security-reviewer.md +4 -2
- package/presets/cursor/next/commands/README.md +1 -1
- package/presets/cursor/next/hooks/README.md +4 -0
- package/presets/cursor/next/hooks/examples/README.md +18 -0
- package/presets/cursor/next/hooks/examples/format-edited.example.sh +11 -0
- package/presets/cursor/next/hooks/examples/secret-guard.example.sh +10 -0
- package/presets/cursor/next/hooks/examples/test-on-save.example.sh +8 -0
- package/presets/cursor/next/rules/README.md +4 -3
- package/presets/cursor/next/rules/agent-team-intake.mdc +1 -1
- package/presets/cursor/next/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/next/rules/api-services.mdc +21 -0
- package/presets/cursor/next/rules/architecture-boundaries.mdc +27 -0
- package/presets/cursor/next/rules/arrow-functions.mdc +13 -28
- package/presets/cursor/next/rules/code-quality-and-refactoring.mdc +12 -2
- package/presets/cursor/next/rules/code-review-mr.mdc +11 -13
- package/presets/cursor/next/rules/http-client.mdc +21 -0
- package/presets/cursor/next/rules/layer-barrel-exports.mdc +15 -0
- package/presets/cursor/next/rules/next-app-router.mdc +13 -1
- package/presets/cursor/next/rules/preset-layering.mdc +1 -1
- package/presets/cursor/next/rules/preset-no-cross-stack-leakage.mdc +6 -4
- package/presets/cursor/next/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/next/rules/preset-twin-sync.mdc +2 -0
- package/presets/cursor/next/rules/public-imports.mdc +14 -0
- package/presets/cursor/next/rules/react-ui.mdc +20 -0
- package/presets/cursor/next/rules/reference-features.mdc +4 -0
- package/presets/cursor/next/rules/security-next.mdc +57 -0
- package/presets/cursor/next/rules/store-rtk.mdc +19 -0
- package/presets/cursor/next/rules/tests-unit.mdc +12 -0
- package/presets/cursor/next/skills/README.md +2 -0
- package/presets/cursor/next/skills/code-review/SKILL.md +10 -2
- package/presets/cursor/next/skills/feature-delivery/SKILL.md +4 -0
- package/presets/cursor/next/skills/react-performance/SKILL.md +44 -0
- package/presets/cursor/next/skills/technical-retro/SKILL.md +19 -5
- package/presets/cursor/next/skills/write-adr/SKILL.md +41 -0
- package/presets/cursor/next/team/conventions.md +21 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Optional: package-scoped go test for changed packages.
|
|
3
|
+
# NOT in default hooks.json.
|
|
4
|
+
set -euo pipefail
|
|
5
|
+
pkgs=$(git diff --name-only --diff-filter=ACMR HEAD 2>/dev/null | grep '\.go$' | xargs -n1 dirname 2>/dev/null | sort -u | sed 's|^|./|' || true)
|
|
6
|
+
if [[ -n "${pkgs:-}" ]]; then
|
|
7
|
+
go test $pkgs 2>/dev/null || true
|
|
8
|
+
else
|
|
9
|
+
go test ./... 2>/dev/null || true
|
|
10
|
+
fi
|
|
11
|
+
exit 0
|
|
@@ -6,15 +6,21 @@ paths:
|
|
|
6
6
|
- **/*router*.go
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
|
|
10
9
|
# HTTP API adapters
|
|
11
10
|
|
|
12
|
-
- Handlers call inbound
|
|
13
|
-
- Use consistent error envelope; map domain
|
|
11
|
+
- Handlers are **thin**: parse input, call one inbound port / use case, map status + body.
|
|
12
|
+
- Use consistent error envelope; map **domain exceptions** centrally — do not leak transport types into use cases.
|
|
14
13
|
- Version routes if the repo already versions (`/v1/...`).
|
|
15
14
|
- Prefer `net/http` interfaces so tests can use `httptest` without a full framework.
|
|
16
15
|
- Timeouts: set server read/write timeouts; propagate request context.
|
|
17
16
|
|
|
17
|
+
## Resilience
|
|
18
|
+
|
|
19
|
+
- Side-effect endpoints (charge, create, enqueue): accept/propagate an **idempotency key** when the domain already uses one; document if intentionally omitted.
|
|
20
|
+
- Outbound HTTP to third parties: prefer **per-provider clients** (separate timeouts/pools) — bulkhead isolation, not one shared client for everything.
|
|
21
|
+
- Provider/ACL adapters return typed results or errors — never raw `map[string]any` / untyped JSON blobs into the domain.
|
|
22
|
+
- Soft file-size hint: plan a split when a handler/router file grows past ~400 LOC; prefer package + re-export over god-files.
|
|
23
|
+
|
|
18
24
|
## Testing
|
|
19
25
|
|
|
20
26
|
- Prefer `httptest` against handler/router with mocked use cases (unit of adapter).
|
|
@@ -24,3 +30,4 @@ paths:
|
|
|
24
30
|
|
|
25
31
|
- Business rules or SQL in handlers.
|
|
26
32
|
- Ignoring `ctx` cancelation from `r.Context()`.
|
|
33
|
+
- Raising transport-only errors from use cases (keep HTTP mapping at the adapter edge).
|
|
@@ -21,6 +21,10 @@ Fill TBD paths after adopting this preset in a real service repo.
|
|
|
21
21
|
| Unit tests | `*_test.go` beside packages | `**/*_test.go` |
|
|
22
22
|
| Integration | `**/integration/` | `**/*_integration_test.go` |
|
|
23
23
|
|
|
24
|
+
## Living conventions
|
|
25
|
+
|
|
26
|
+
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.
|
|
27
|
+
|
|
24
28
|
## Dogfood scenarios
|
|
25
29
|
|
|
26
30
|
1. `/task` new use case — domain → ports → adapters → wire → `post-change-test`.
|
|
@@ -4,21 +4,48 @@ paths:
|
|
|
4
4
|
- **/*.go
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
# Go conventions
|
|
9
8
|
|
|
10
9
|
- Follow [Effective Go](https://go.dev/doc/effective_go) and repo `golangci-lint` / `staticcheck` when present.
|
|
11
10
|
- Accept `context.Context` as first param on I/O and use-case methods.
|
|
12
|
-
- Wrap errors: `fmt.Errorf("…: %w", err)`; avoid panics in library/service code.
|
|
13
11
|
- Prefer `camelCase` unexported, `PascalCase` exported; package names short and lowercase.
|
|
14
12
|
- Do not expose `internal/` outside the module.
|
|
15
13
|
- Prefer table-driven tests; use `t.Parallel` only when safe.
|
|
16
14
|
|
|
15
|
+
## Errors
|
|
16
|
+
|
|
17
|
+
- Always handle errors — never `_ = err`.
|
|
18
|
+
- Wrap with `fmt.Errorf("…: %w", err)`; check with `errors.Is` / `errors.As`.
|
|
19
|
+
- Prefer domain/custom error types for structured cases; avoid panics in library/service code.
|
|
20
|
+
|
|
21
|
+
## Interfaces
|
|
22
|
+
|
|
23
|
+
- Accept interfaces, return concrete types.
|
|
24
|
+
- Define interfaces at the **call site** (ports / consumers), not on every implementation.
|
|
25
|
+
- Prefer small, single-method interfaces when they match the use.
|
|
26
|
+
|
|
17
27
|
## Packages
|
|
18
28
|
|
|
19
29
|
- Avoid `util`/`common` dumping grounds — name by domain capability.
|
|
20
30
|
- Keep `main` packages thin (see composition-root).
|
|
31
|
+
- No `init()` for business logic; no package-level mutable state for request data.
|
|
21
32
|
|
|
22
33
|
## Concurrency
|
|
23
34
|
|
|
24
|
-
- Document cancelation;
|
|
35
|
+
- Document cancelation; `defer cancel()` after creating a derived context.
|
|
36
|
+
- Do not start unbounded goroutines from handlers without a termination condition / supervision (`WaitGroup`, errgroup, or context cancel).
|
|
37
|
+
- Channels for communication, mutexes for shared state — match existing package patterns.
|
|
38
|
+
|
|
39
|
+
## Anti-hallucination
|
|
40
|
+
|
|
41
|
+
| ❌ Avoid | ✅ Prefer |
|
|
42
|
+
|---------|----------|
|
|
43
|
+
| `_ = err` / ignored errors | Handle or wrap with `%w` |
|
|
44
|
+
| Interfaces on every struct «just in case» | Ports at consumer / call site |
|
|
45
|
+
| Invented modules not in `go.mod` | Add dependency explicitly or copy existing import |
|
|
46
|
+
| `interface{}` where generics or a concrete type fit | Generics / concrete types used by the repo |
|
|
47
|
+
| Business logic in `init()` | Wire in composition root / `main` |
|
|
48
|
+
|
|
49
|
+
## Agent requirement
|
|
50
|
+
|
|
51
|
+
New Go code must stay idiomatic and verifiable against `go.mod` and neighboring packages. Less guessed code is better than more.
|
|
@@ -16,7 +16,7 @@ When the user message looks like a **work request** (implement, add, fix, refact
|
|
|
16
16
|
|
|
17
17
|
1. Prefer **`/task <their request>`** or invoke **task-router** first.
|
|
18
18
|
2. Do not jump straight to coding without router + pipeline when scope is non-trivial.
|
|
19
|
-
3. Pure questions («как работает X», «объясни») —
|
|
19
|
+
3. Pure questions («как работает X», «объясни») — prefer agent **`codebase-analyzer`** (explain-as-is); trivial one-liners may be answered inline. Do not open `/task`.
|
|
20
20
|
|
|
21
21
|
Exceptions: user explicitly says «без pipeline», «просто сделай», or continues an active slug.
|
|
22
22
|
|
|
@@ -138,7 +138,7 @@ If `pipeline.json` is missing (old `/feature-start` tasks), fall back to fixed p
|
|
|
138
138
|
|
|
139
139
|
Do **not** run `/task` + router for:
|
|
140
140
|
|
|
141
|
-
- Pure questions («как работает X», «объясни»).
|
|
141
|
+
- Pure questions («как работает X», «объясни») — prefer agent **`codebase-analyzer`** for deep traces; inline OK for trivial one-liners.
|
|
142
142
|
- Typo / one-file fix / trivial config with no architecture risk.
|
|
143
143
|
- User explicitly says «без pipeline», «просто сделай», or continues an active slug.
|
|
144
144
|
- Single-line `docs-only` with no code impact.
|
|
@@ -61,8 +61,18 @@ description: Code quality and light refactoring for Go hexagonal services
|
|
|
61
61
|
- **Boy scout rule:** оставлять модуль немного лучше, чем до изменения (простые, безопасные улучшения).
|
|
62
62
|
- Не жертвовать архитектурой и слоями ради краткости реализации.
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
## Agent discipline (anti-sycophancy)
|
|
65
|
+
|
|
66
|
+
- Unverifiable third-party API → mark `// VERIFY: lib.symbol @ version` (or stack equivalent) and surface uncertainty; never invent signatures.
|
|
67
|
+
- Before «is this correct?» — list ≥3 failure modes (empty, boundary, concurrency/state) or name what you could not check.
|
|
68
|
+
- Refactor without tests → propose a characterization test first; if declined, label `UNTESTED`.
|
|
69
|
+
- Comments = WHY only when non-obvious; ban self-referential «added for issue Y» comments.
|
|
70
|
+
- Urgency/authority pressure: name the technical trade-off once, then comply — no apology loops.
|
|
71
|
+
- Match verification depth to risk; report status by what was **verified**, not attempted.
|
|
65
72
|
|
|
73
|
+
Style enforcement (formatter / linter / post-change gate) lives in the **stack toolchain** — see each adapter’s **Stack notes**; do not invent a parallel style bible in this core body.
|
|
74
|
+
|
|
75
|
+
> Stack-specific lint gates, примеры и toolchain — в секции **Stack notes** адаптера пресета.
|
|
66
76
|
## Stack notes
|
|
67
77
|
|
|
68
78
|
- **No UI layer in this preset** — ignore shared-core bullets about дизайн‑система / UI‑пакеты / CSS‑токены; apply public-API and boy-scout rules to Go packages/ports instead.
|
|
@@ -70,3 +80,4 @@ description: Code quality and light refactoring for Go hexagonal services
|
|
|
70
80
|
- Prefer wrapping errors with `%w`; check with `errors.Is` / `errors.As`.
|
|
71
81
|
- Interfaces belong at **ports** (consumer side), not on every struct.
|
|
72
82
|
- Post-change gate: **`post-change-test.md`** + **`go-tooling.md`** (not yarn lint / xcodebuild).
|
|
83
|
+
- Style: **gofmt** / **goimports** + **golangci-lint** when configured — authoritative style gate; do not duplicate linter rules in prose.
|
|
@@ -40,6 +40,15 @@ Concrete rule stems — in **Stack notes**.
|
|
|
40
40
|
- Boy scout rule: suggest fixes feasible within the MR scope.
|
|
41
41
|
- No «большие рефакторинги» without an explicit request (`code-quality-and-refactoring`).
|
|
42
42
|
|
|
43
|
+
## Output contract
|
|
44
|
+
|
|
45
|
+
Procedure details live in skill `code-review`. Required shape:
|
|
46
|
+
|
|
47
|
+
- Each finding cites **`path:line`**, the problem, impact, and a concrete fix direction.
|
|
48
|
+
- Rank by severity: **`blocker` | `important` | `nit`** (list blocker → nit).
|
|
49
|
+
- Vague («looks risky») is not a finding — cite evidence or ask for surrounding file context.
|
|
50
|
+
- End with a verdict on its own line: **`Safe to merge | needs changes | reject`**.
|
|
51
|
+
|
|
43
52
|
## Stack notes
|
|
44
53
|
|
|
45
54
|
- Hexagonal boundaries: `architecture-boundaries`, `domain-layer`, ports vs adapters.
|
|
@@ -24,7 +24,7 @@ paths:
|
|
|
24
24
|
## Куда класть новое правило
|
|
25
25
|
|
|
26
26
|
1. Общие принципы для всех стеков → **core** + адаптеры с `<!-- shared-core: … -->`.
|
|
27
|
-
2. Только один из installable стеков (`next` / `ios-swift` / `go`) → **stack-specific** (не в `_shared`).
|
|
27
|
+
2. Только один из installable стеков (`next` / `ios-swift` / `go` / `java`) → **stack-specific** (не в `_shared`).
|
|
28
28
|
3. Только Cursor или только Claude packaging → platform artifact / frontmatter, не дублировать семантику.
|
|
29
29
|
|
|
30
30
|
## SoT
|
|
@@ -17,7 +17,7 @@ paths:
|
|
|
17
17
|
|
|
18
18
|
- `next` must not require iOS-only agents/tooling (`xcuitest-*`, `xcodebuild` as required handoff, Keychain-only rules).
|
|
19
19
|
- `ios-swift` must not ship Playwright handoffs or Next lint recipes as required commands.
|
|
20
|
-
- `go` must not ship Playwright, XCUITest, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
|
|
20
|
+
- `go` / `java` must not ship Playwright, XCUITest, Next lint recipes, or `xcodebuild`/`SwiftLint` as required handoffs.
|
|
21
21
|
- Shared core must not embed stack paths (`app/src/**`, `Features/**`, `playwright`, `xcodebuild`).
|
|
22
22
|
|
|
23
23
|
## Forbidden in ios-swift hooks/agents (FAIL)
|
|
@@ -35,14 +35,16 @@ Required instead: `xcuitest-test-*` stems; build-verifier mentions `xcodebuild`
|
|
|
35
35
|
- `xcuitest-test-` as handoff stems
|
|
36
36
|
- Requiring `xcodebuild` / SwiftLint as the default post-change gate for Next app work
|
|
37
37
|
|
|
38
|
-
## Forbidden in go hooks/agents (FAIL)
|
|
38
|
+
## Forbidden in go / java hooks/agents (FAIL)
|
|
39
|
+
|
|
40
|
+
Shared backend-stack bans (both `go` and `java`):
|
|
39
41
|
|
|
40
42
|
- `playwright-test-`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
|
|
41
43
|
- Positive yarn recipes `lint:js` / `lint:css`
|
|
42
44
|
- `xcuitest-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
43
45
|
- Agent file `accessibility-reviewer` (no UI surface)
|
|
44
46
|
|
|
45
|
-
Required instead: `integration-test-*`; build-verifier / `post-change-test`
|
|
47
|
+
Required instead: `integration-test-*`; build-verifier / `post-change-test` plus stack tooling — `go-tooling` (`go test`, `go vet`) or `java-tooling` (`mvn test` / `./gradlew test`).
|
|
46
48
|
|
|
47
49
|
## Soft / document
|
|
48
50
|
|
|
@@ -51,8 +53,4 @@ Required instead: `integration-test-*`; build-verifier / `post-change-test` / `g
|
|
|
51
53
|
|
|
52
54
|
## Chain fork
|
|
53
55
|
|
|
54
|
-
`hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `ios-swift`, and `
|
|
55
|
-
|
|
56
|
-
## Stack notes
|
|
57
|
-
|
|
58
|
-
Forbidden positive handoffs on this stack are listed in core § go. Prefer `integration-test-*` and `post-change-test`.
|
|
56
|
+
`hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `ios-swift`, `go`, and `java` (per platform).
|
|
@@ -17,7 +17,7 @@ paths:
|
|
|
17
17
|
|
|
18
18
|
- [ ] **SoT:** правки в `packages/…` (не только root `.cursor/`)
|
|
19
19
|
- [ ] **Core:** если менялся `_shared/core/**` — обновлены все `<!-- shared-core: … -->` consumers (или documented intentional fork)
|
|
20
|
-
- [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, ios-swift, and
|
|
20
|
+
- [ ] **Twin:** Cursor change → Claude twin **same PR** (**FAIL** if missing on next, ios-swift, go, and java — см. `preset-twin-sync`)
|
|
21
21
|
- [ ] **Mapping:** `claude/<stack>/rules/README.md` mapping table актуален
|
|
22
22
|
- [ ] **Token budget:** alwaysApply / session-start ≤ 3; meta rules not always-on
|
|
23
23
|
- [ ] **Leakage:** нет чужих stack agent stems / handoff strings (`preset-no-cross-stack-leakage`)
|
|
@@ -20,6 +20,7 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
|
|
|
20
20
|
| `next` | `presets/cursor/next/rules/*.mdc` | `presets/claude/next/rules/<topic>/` | **Required** in `claude/next/rules/README.md` |
|
|
21
21
|
| `ios-swift` | `presets/cursor/ios-swift/rules/*.mdc` | `presets/claude/ios-swift/rules/<topic>/` | Keep in `claude/ios-swift/rules/README.md` |
|
|
22
22
|
| `go` | `presets/cursor/go/rules/*.mdc` | `presets/claude/go/rules/<topic>/` | Keep in `claude/go/rules/README.md` |
|
|
23
|
+
| `java` | `presets/cursor/java/rules/*.mdc` | `presets/claude/java/rules/<topic>/` | Keep in `claude/java/rules/README.md` |
|
|
23
24
|
|
|
24
25
|
## Same-PR checklist
|
|
25
26
|
|
|
@@ -38,5 +39,6 @@ Cursor `.mdc` — **SoT per stack**. Claude topic `.md` — derived twin.
|
|
|
38
39
|
- **next:** missing Claude twin for a changed Cursor rule → **FAIL** (mapping table required).
|
|
39
40
|
- **ios-swift:** missing Claude twin for a changed Cursor rule → **FAIL**.
|
|
40
41
|
- **go:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift; mapping table required).
|
|
42
|
+
- **java:** missing Claude twin for a changed Cursor rule → **FAIL** (same as next / ios-swift / go; mapping table required).
|
|
41
43
|
|
|
42
44
|
Dogfood: sync packages → root `.cursor/` after Cursor SoT changes (not the reverse). Use `packages/ai-rules/scripts/sync-dogfood-cursor.sh`.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# Skills (preset go)
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
8 skills: `feature-delivery`, `unit-testing`, `integration-testing`, `ci-investigation`, `debug-investigation`, `code-review`, `technical-retro`, `write-adr`.
|
|
4
4
|
|
|
5
|
-
No `playwright-e2e` / `xcuitest-e2e`.
|
|
5
|
+
No `playwright-e2e` / `xcuitest-e2e` / `react-performance`.
|
|
@@ -5,9 +5,18 @@ description: Reviews pull requests and branch diffs for Go hexagonal services us
|
|
|
5
5
|
|
|
6
6
|
# Code review (Go)
|
|
7
7
|
|
|
8
|
-
1. Diff-first; load `code-review
|
|
8
|
+
1. Diff-first; load `tooling-and-review/code-review.md` + hexagonal rules.
|
|
9
9
|
2. Check layer leaks, port ownership, composition root purity, tests, security-sensitive bits.
|
|
10
|
-
3.
|
|
10
|
+
3. **Reuse lens:** flag new helpers that duplicate existing packages/utilities; prefer shared adapters over copy-paste.
|
|
11
|
+
4. **Efficiency lens:** unnecessary allocations, N+1 I/O, sequential work that should be concurrent, hot-path bloat, missing context cancellation.
|
|
12
|
+
5. Write `review.md` using the output contract below.
|
|
13
|
+
|
|
14
|
+
## Output
|
|
15
|
+
|
|
16
|
+
- Each finding: **`path:line`** — problem — impact — concrete fix direction.
|
|
17
|
+
- Severity: **`blocker` | `important` | `nit`** (list blocker → nit).
|
|
18
|
+
- End with a verdict line: **`Safe to merge | needs changes | reject`**.
|
|
19
|
+
- Map agent status: Safe to merge → `completed`; needs changes / reject → `changes_requested`.
|
|
11
20
|
|
|
12
21
|
Never require iOS/Next-only gates (XCUITest, Playwright, `lint:js`).
|
|
13
22
|
|
|
@@ -17,6 +17,10 @@ description: Delivers Go hexagonal backend features end-to-end across domain, ap
|
|
|
17
17
|
- **Don't** put SQL/business rules in HTTP handlers or frameworks in domain.
|
|
18
18
|
- **Don't** use Playwright, XCUITest, or yarn lint as this stack's gate.
|
|
19
19
|
|
|
20
|
+
## Scope discipline
|
|
21
|
+
|
|
22
|
+
Implement only the current AC / decomposition task. Clarify ambiguity before coding; do not add unrelated hardening or drive-by refactors. See `feature-developer` → **Zero improvisation**.
|
|
23
|
+
|
|
20
24
|
## Handoff
|
|
21
25
|
|
|
22
26
|
Summarize by layer + validation. Update `.claude/team/tasks/<slug>/status.json`.
|
|
@@ -5,6 +5,50 @@ description: Facilitates technical retrospectives for tasks, sprints, incidents,
|
|
|
5
5
|
|
|
6
6
|
# Technical Retro
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
## Inputs
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Ask for missing period, focus, task slug, participants, or format constraints. If a slug is provided, read `.claude/team/tasks/<slug>/` artifacts and local git status/diff. Do not invent facts not present in artifacts or the user's message.
|
|
11
|
+
|
|
12
|
+
## Facilitation Principles
|
|
13
|
+
|
|
14
|
+
- Focus on process and system behavior, not blame.
|
|
15
|
+
- Separate facts, interpretations, and proposed actions.
|
|
16
|
+
- Balance what worked with what slowed delivery.
|
|
17
|
+
- Keep action items concrete, owned, and measurable.
|
|
18
|
+
|
|
19
|
+
## Default Structure
|
|
20
|
+
|
|
21
|
+
1. Goal and scope.
|
|
22
|
+
2. Timeline or factual observations.
|
|
23
|
+
3. What worked.
|
|
24
|
+
4. What hurt quality, speed, or confidence.
|
|
25
|
+
5. Root causes for the top one or two issues.
|
|
26
|
+
6. Experiments and action items.
|
|
27
|
+
|
|
28
|
+
## Agent Team Block
|
|
29
|
+
|
|
30
|
+
For `/task` pipelines, include router, analyst, developer, **build-verifier** (go test), reviewer, QA/integration tests, hooks, and rules.
|
|
31
|
+
|
|
32
|
+
## Wrong-turn taxonomy (optional)
|
|
33
|
+
|
|
34
|
+
When artifacts or the user mention agent mistakes, tag incidents:
|
|
35
|
+
|
|
36
|
+
| Kind | Signal |
|
|
37
|
+
|------|--------|
|
|
38
|
+
| `correction` | User pushback («no», «don't», «actually») |
|
|
39
|
+
| `retry` | Same tool/approach 2+ times before success |
|
|
40
|
+
| `waste` | Many searches before the right file |
|
|
41
|
+
| `reversal` | Edit then revert / delete |
|
|
42
|
+
| `dead-end` | Env/tool failure (missing binary, wrong path) |
|
|
43
|
+
|
|
44
|
+
Severity: **high** (explicit correction / large waste) · **med** · **low**. Confidence 0–100 — be honest; low-confidence items are optional.
|
|
45
|
+
|
|
46
|
+
## Preset feedback loop
|
|
47
|
+
|
|
48
|
+
If the same issue appeared in **2+** tasks (or **3+** for packaging a new rule/skill — Rule of Three), add section **Preset updates**:
|
|
49
|
+
|
|
50
|
+
- Proposed change to `.claude/rules/`, `.claude/agents/`, `.claude/skills/`, or **`.claude/team/conventions.md`** (prefer conventions for project gotchas)
|
|
51
|
+
- One concrete snippet or file path
|
|
52
|
+
- Whether it belongs in session-start vs `paths:` vs skill vs conventions (see `PRESET-CONTRIBUTION` → Building blocks)
|
|
53
|
+
|
|
54
|
+
Do not apply preset or conventions changes without user approval.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: write-adr
|
|
3
|
+
description: Author an Architecture Decision Record (ADR) with Context, Decision, Consequences, and Links. Use when capturing a durable technical choice for the team.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Write ADR
|
|
7
|
+
|
|
8
|
+
On-demand skill for durable architecture decisions. Stack-agnostic sections — fill with project-specific paths and links.
|
|
9
|
+
|
|
10
|
+
## When to use
|
|
11
|
+
|
|
12
|
+
- Choosing between non-trivial alternatives (storage, layering, library, API shape).
|
|
13
|
+
- Recording a decision that future agents/humans should not silently reverse.
|
|
14
|
+
- User asks for an ADR, decision log, or “why did we pick X”.
|
|
15
|
+
|
|
16
|
+
## Template
|
|
17
|
+
|
|
18
|
+
Create (or append) a short markdown ADR in the repo’s agreed location (e.g. `docs/adr/`, `.cursor/team/`, wiki). Suggested filename: `NNNN-short-title.md`.
|
|
19
|
+
|
|
20
|
+
```markdown
|
|
21
|
+
# ADR NNNN: <Title>
|
|
22
|
+
|
|
23
|
+
## Context
|
|
24
|
+
What problem / constraint / force requires a decision?
|
|
25
|
+
|
|
26
|
+
## Decision
|
|
27
|
+
What we chose (one clear option). Include rejected alternatives briefly if useful.
|
|
28
|
+
|
|
29
|
+
## Consequences
|
|
30
|
+
Positive and negative outcomes; follow-up work; what becomes harder.
|
|
31
|
+
|
|
32
|
+
## Links
|
|
33
|
+
Related PRs, issues, rules, prior ADRs, diagrams.
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Guidelines
|
|
37
|
+
|
|
38
|
+
- Prefer one decision per ADR.
|
|
39
|
+
- Keep Context factual; Decision imperative and short.
|
|
40
|
+
- Link living gotchas to `team/conventions.md` when the decision becomes a recurring local pattern.
|
|
41
|
+
- Do not put ADR bodies only in root `AGENTS.md` (overwrite on init).
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Living conventions (team)
|
|
2
|
+
|
|
3
|
+
Consumer-owned store for post-init gotchas, patterns, and decisions. **Not** always-on. Fill after `ai-rules init`. Root `AGENTS.md` only points here.
|
|
4
|
+
|
|
5
|
+
## Gotchas
|
|
6
|
+
|
|
7
|
+
<!-- e.g. fragile flows, “never do X in this repo” -->
|
|
8
|
+
|
|
9
|
+
-
|
|
10
|
+
|
|
11
|
+
## Patterns
|
|
12
|
+
|
|
13
|
+
<!-- local patterns beyond reference-features table -->
|
|
14
|
+
|
|
15
|
+
-
|
|
16
|
+
|
|
17
|
+
## Decisions
|
|
18
|
+
|
|
19
|
+
<!-- short pointers to ADRs / product choices that affect code -->
|
|
20
|
+
|
|
21
|
+
-
|
|
@@ -10,34 +10,16 @@
|
|
|
10
10
|
{ "agent": "build-verifier", "label": "go test / go vet / golangci-lint", "model": "cheap" },
|
|
11
11
|
{ "agent": "security-reviewer", "label": "Security review", "model": "strong" },
|
|
12
12
|
{ "agent": "code-reviewer", "label": "Code review", "model": "cheap" },
|
|
13
|
-
{ "agent": "qa-tester", "label": "Integration tests", "scope": "e2e-only" }
|
|
13
|
+
{ "agent": "qa-tester", "label": "Integration tests", "scope": "e2e-only" },
|
|
14
|
+
{ "agent": "integration-test-planner", "label": "Plan integration coverage" },
|
|
15
|
+
{ "agent": "integration-test-generator", "label": "Generate integration tests" }
|
|
14
16
|
],
|
|
15
17
|
"humanGates": ["after:task-analyst"],
|
|
16
18
|
"autoChain": true,
|
|
17
19
|
"skipped": [
|
|
18
20
|
{
|
|
19
|
-
"agent": "
|
|
20
|
-
"reason": "Go backend
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"agent": "playwright-test-generator",
|
|
24
|
-
"reason": "Go backend uses integration-test-*"
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"agent": "playwright-test-healer",
|
|
28
|
-
"reason": "Go backend uses integration-test-*"
|
|
29
|
-
},
|
|
30
|
-
{
|
|
31
|
-
"agent": "xcuitest-test-planner",
|
|
32
|
-
"reason": "Go backend uses integration-test-* — not XCUITest"
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"agent": "xcuitest-test-generator",
|
|
36
|
-
"reason": "Go backend uses integration-test-*"
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
"agent": "xcuitest-test-healer",
|
|
40
|
-
"reason": "Go backend uses integration-test-*"
|
|
21
|
+
"agent": "accessibility-reviewer",
|
|
22
|
+
"reason": "Go backend has no UI surface"
|
|
41
23
|
}
|
|
42
24
|
]
|
|
43
25
|
}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Краткая точка входа для Claude Code. Подробные правила — модульные topic `.md` под `rules/` (derived из Cursor SoT).
|
|
4
4
|
|
|
5
|
+
**Repo-root agents:** see [`AGENTS.md`](../../AGENTS.md) at the project root (cross-tool setup, commands, security, living conventions pointers).
|
|
6
|
+
|
|
5
7
|
See @rules/README.md for mapping and loading strategy.
|
|
6
8
|
|
|
7
9
|
## Conventions
|
|
@@ -24,6 +26,7 @@ See @rules/README.md for mapping and loading strategy.
|
|
|
24
26
|
| UI-тесты | skill `xcuitest-e2e` |
|
|
25
27
|
| Security | `tooling-and-review/security-ios.md` |
|
|
26
28
|
| Валидация | agent `build-verifier` |
|
|
29
|
+
| Как работает X | agent `codebase-analyzer` (explain-as-is) |
|
|
27
30
|
| Ретро | `commands/technical-retro.md` |
|
|
28
31
|
|
|
29
32
|
## Install
|
|
@@ -32,4 +35,4 @@ See @rules/README.md for mapping and loading strategy.
|
|
|
32
35
|
npx @bonesofspring/ai-rules init claude --preset ios-swift
|
|
33
36
|
```
|
|
34
37
|
|
|
35
|
-
Копирует `CLAUDE.md`, `rules/**`, `commands/**`, `agents/**`, `skills/**`, `hooks/**`, `team/**`, `MCP.md` в `.claude/`, плюс `mcp.json` → **`.mcp.json`**
|
|
38
|
+
Копирует `CLAUDE.md`, `rules/**`, `commands/**`, `agents/**`, `skills/**`, `hooks/**`, `team/**`, `MCP.md` в `.claude/`, плюс `mcp.json` → **`.mcp.json`** и `REPO_AGENTS.md` → корневой **`AGENTS.md`**. Skill: `write-adr` (on-demand).
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
| `rules/**` | `.claude/rules/**` |
|
|
11
11
|
| `commands/**` | `.claude/commands/**` |
|
|
12
12
|
| `skills/**` | `.claude/skills/**` (**7**, в т.ч. `xcuitest-e2e`) |
|
|
13
|
-
| `agents/**` | `.claude/agents/**` (**
|
|
13
|
+
| `agents/**` | `.claude/agents/**` (**22**, XCUITest trio + `codebase-analyzer`) |
|
|
14
14
|
| `hooks/**` | `.claude/hooks/**` (scripts + README; **нет** `hooks.json`) |
|
|
15
15
|
| `team/**` | `.claude/team/**` |
|
|
16
16
|
| `mcp.json` | **`.mcp.json`** в корне (Context7 + Figma) |
|
|
@@ -37,3 +37,7 @@ npx @bonesofspring/ai-rules init claude --preset ios-swift
|
|
|
37
37
|
- Change Cursor → update Claude twin **same PR**
|
|
38
38
|
- Mapping: [`rules/README.md`](./rules/README.md)
|
|
39
39
|
- **`BUGBOT.md`:** Cursor-only (нет twin); review в Claude — skill `code-review` + `tooling-and-review/code-review.md`
|
|
40
|
+
|
|
41
|
+
## Cross-tool root AGENTS
|
|
42
|
+
|
|
43
|
+
`REPO_AGENTS.md` → project-root `AGENTS.md` on init. Living conventions: `team/conventions.md`. Skill `write-adr` on-demand.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# iOS Swift — agent instructions
|
|
2
|
+
|
|
3
|
+
Cross-tool repo-root guide. Tool-specific maps stay under `.cursor/AGENTS.md` and `.claude/CLAUDE.md`.
|
|
4
|
+
|
|
5
|
+
## Cross-tool setup
|
|
6
|
+
|
|
7
|
+
- Treat this file as the **shared** entry for any agent (Cursor, Claude Code, or other).
|
|
8
|
+
- Tool maps live in `.cursor/AGENTS.md` / `.claude/CLAUDE.md` when that tool is installed.
|
|
9
|
+
- Install:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx @bonesofspring/ai-rules init cursor --preset ios-swift
|
|
13
|
+
npx @bonesofspring/ai-rules init claude --preset ios-swift
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
`init` overwrites this file from the preset (`REPO_AGENTS.md` → `AGENTS.md`). Living gotchas belong in `team/conventions.md`, not here.
|
|
17
|
+
|
|
18
|
+
## Commands (test / lint / build)
|
|
19
|
+
|
|
20
|
+
| Gate | Typical command |
|
|
21
|
+
|------|-----------------|
|
|
22
|
+
| Build | `xcodebuild` (scheme/workspace as in project docs) |
|
|
23
|
+
| Lint | **SwiftLint** (config in repo; see `xcode-tooling` / conventions) |
|
|
24
|
+
| Format | SwiftFormat when configured |
|
|
25
|
+
| Tests | `xcodebuild test` slice for the changed target |
|
|
26
|
+
|
|
27
|
+
After code edits: invoke **`post-change-build`** (requestable). Full gate: agent `build-verifier`.
|
|
28
|
+
|
|
29
|
+
## Security basics
|
|
30
|
+
|
|
31
|
+
- Do not commit secrets (API keys, Keychain dumps, `.env`).
|
|
32
|
+
- Review destructive git before running; respect shell hooks.
|
|
33
|
+
- Do not skip signing / CI gates unless the user explicitly asks.
|
|
34
|
+
|
|
35
|
+
## Tool entry points
|
|
36
|
+
|
|
37
|
+
| Tool | Map |
|
|
38
|
+
|------|-----|
|
|
39
|
+
| Cursor | `.cursor/AGENTS.md` (optional if Cursor not installed) |
|
|
40
|
+
| Claude Code | `.claude/CLAUDE.md` (optional if Claude not installed) |
|
|
41
|
+
|
|
42
|
+
Rules: `.cursor/rules/` or `.claude/rules/`. Skills: `.cursor/skills/` or `.claude/skills/`.
|
|
43
|
+
|
|
44
|
+
## Living conventions
|
|
45
|
+
|
|
46
|
+
Gotchas, local patterns, and team decisions: **`.cursor/team/conventions.md`** and/or **`.claude/team/conventions.md`** (fill after init).
|
|
@@ -13,11 +13,12 @@
|
|
|
13
13
|
|
|
14
14
|
When copying next pipeline templates: put Playwright stems in `skipped` with reason «iOS uses XCUITest» and schedule xcuitest trio instead.
|
|
15
15
|
|
|
16
|
-
## Roster (
|
|
16
|
+
## Roster (22)
|
|
17
17
|
|
|
18
18
|
| Agent | Production-код |
|
|
19
19
|
|-------|----------------|
|
|
20
20
|
| task-router, task-analyst, solution-architect, migration-specialist, api-contract-reviewer | no |
|
|
21
|
+
| codebase-analyzer | no (explain-as-is only) |
|
|
21
22
|
| feature-developer | yes |
|
|
22
23
|
| build-verifier | no |
|
|
23
24
|
| debugger, ci-investigator | minimal |
|
|
@@ -35,7 +36,7 @@ Same tiers as **claude/next**. Defaults in this preset:
|
|
|
35
36
|
|
|
36
37
|
| Tier | Frontmatter | Agents |
|
|
37
38
|
|------|-------------|--------|
|
|
38
|
-
| **cheap** | `fast` | router, analyst, build-verifier, code-reviewer, tech-writer |
|
|
39
|
+
| **cheap** | `fast` | router, analyst, build-verifier, code-reviewer, tech-writer, codebase-analyzer |
|
|
39
40
|
| **standard** | `inherit` | developer, debugger, ci-investigator, api-contract, a11y, qa, unit-*, xcuitest-* |
|
|
40
41
|
| **strong** | `opus` | solution-architect, migration-specialist, security-reviewer, performance-auditor |
|
|
41
42
|
|
|
@@ -35,11 +35,11 @@ When validating **ios-swift preset** changes (or `scope: preset-structure-valida
|
|
|
35
35
|
3. **Forbidden handoff strings** in ios-swift `chain-team-phases.sh`: `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`, positive `lint:js` / `lint:css` recipes. See `tooling-and-review/preset-no-cross-stack-leakage.md`.
|
|
36
36
|
4. **Required handoff stems:** `AGENT_HANDOFF` must include `xcuitest-test-planner` (or generator/healer); build-verifier mentions `xcodebuild` or `post-change-build` / `xcode-tooling`.
|
|
37
37
|
5. **Roster:** 21 agent stems; no `playwright-test-*` under ios-swift `agents/`.
|
|
38
|
-
6. **Twin presence (hard):** Cursor rule change → Claude twin same PR — **FAIL** if missing (next, ios-swift, and
|
|
38
|
+
6. **Twin presence (hard):** Cursor rule change → Claude twin same PR — **FAIL** if missing (next, ios-swift, go, and java).
|
|
39
39
|
7. **Mapping / README:** Cursor→Claude mapping table present; core→stack mapping when `_shared` consumers exist.
|
|
40
40
|
8. **shared-core consumers:** if `_shared/core/**` changed, update all `<!-- shared-core: … -->` consumers (or document intentional fork).
|
|
41
41
|
9. **Session-start body budget:** sum of the **3** intended session-start rule bodies ≤ **120** lines (stretch ≤100); do **not** include `**/README.md` — record in report.
|
|
42
|
-
10. **Embed drift (
|
|
42
|
+
10. **Embed drift (hard in `check:preset-structure`):** `packages/ai-rules/scripts/check-shared-core-drift.sh` with `AI_RULES_DRIFT_FAIL=1`.
|
|
43
43
|
11. **Dogfood (monorepo soft):** `packages/ai-rules/scripts/sync-dogfood-cursor.sh`; mass deletion without migration doc → risk / FAIL for maintainers.
|
|
44
44
|
|
|
45
45
|
### Soft rules (do not FAIL alone)
|
|
@@ -47,6 +47,11 @@ When validating **ios-swift preset** changes (or `scope: preset-structure-valida
|
|
|
47
47
|
- **Thin aliases:** `agent-team-intake`, `technical-retro` may be <15 body lines. Enforce ≥15 on **domain** rules.
|
|
48
48
|
- Embed vs lineage: `docs/PRESET-CONTRIBUTION.md`, `_shared/README.md`.
|
|
49
49
|
|
|
50
|
+
12. **Root AGENTS template:** each installable preset (`cursor|claude` × `next|ios-swift|go|java`) must ship `REPO_AGENTS.md` when validating preset packaging → **FAIL** if missing.
|
|
51
|
+
13. **Hooks cookbook:** default `hooks.json` must **not** reference `hooks/examples/` → **FAIL** if it does.
|
|
52
|
+
14. **No react-performance on ios/go/java:** skill directory / required handoff must be absent under ios-swift, go, and java → **FAIL** (leakage). Prefer `check:preset-leakage`.
|
|
53
|
+
15. **Rule eval (WARN):** `scripts/check-rule-eval.mjs` / `yarn check:rule-eval` should exist for maintainers; smoke optional. Hard fail only when the opt-in eval job runs — not part of default `check:preset-structure`.
|
|
54
|
+
|
|
50
55
|
## Output
|
|
51
56
|
|
|
52
57
|
Write `.claude/team/tasks/<slug>/validation-report.md`:
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: codebase-analyzer
|
|
3
|
+
description: Explains HOW existing iOS Swift/SwiftUI code works as-is. Use when the user asks how something works, to trace Feature layers, or document architecture — without suggesting changes. Prefer over /task for pure questions.
|
|
4
|
+
readonly: false
|
|
5
|
+
model: fast
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are a specialist at understanding HOW this iOS codebase works. Document implementation details with precise `path:line` references.
|
|
9
|
+
|
|
10
|
+
## CRITICAL — explain as-is only
|
|
11
|
+
|
|
12
|
+
- DO NOT suggest improvements, refactors, or "better approaches" unless the user explicitly asks.
|
|
13
|
+
- DO NOT perform root-cause analysis or bug hunts unless asked.
|
|
14
|
+
- DO NOT critique quality, performance, or security unless asked.
|
|
15
|
+
- ONLY describe what exists, how it works, and how components interact.
|
|
16
|
+
|
|
17
|
+
## Workflow
|
|
18
|
+
|
|
19
|
+
1. Start from entry points the user named (Feature folders, Views, ViewModels, Domain, Data).
|
|
20
|
+
2. Trace Presentation → Domain → Data and composition root in `App/` as applicable.
|
|
21
|
+
3. Summarize: purpose, flow, module/public API boundaries, conventions observed.
|
|
22
|
+
4. End with open questions only if facts are missing — not with a wishlist of changes.
|
|
23
|
+
|
|
24
|
+
## Will / Will not
|
|
25
|
+
|
|
26
|
+
**Will:** map files, call chains, Feature layers as they exist today.
|
|
27
|
+
|
|
28
|
+
**Will not:** edit production code; open `/task` pipelines; propose PRs or refactors unprompted; require Next/Playwright gates.
|
|
@@ -20,6 +20,19 @@ You are a senior iOS developer (SwiftUI-first, SPM as in repo) with strict layer
|
|
|
20
20
|
- Mark completed WPs in `decomposition.md`.
|
|
21
21
|
- After Swift edits: **invoke** `tooling-and-review/post-change-build.md` (+ `tooling-and-review/xcode-tooling.md` for commands). If next step is `build-verifier`, scoped build/lint on changed targets is enough.
|
|
22
22
|
|
|
23
|
+
## Zero improvisation
|
|
24
|
+
|
|
25
|
+
- Implement **only** what the brief / AC / current decomposition task require.
|
|
26
|
+
- If requirements are ambiguous, conflicting, or multi-way — **ask** before coding; do not guess extras as "best practices".
|
|
27
|
+
- Forbidden without explicit AC/task: unrelated Keychain/security hardening, extra validation, UI polish, logging, drive-by refactors, new config/env.
|
|
28
|
+
- Boy scout / `design-guidance` improvements stay **within** touched files and must not expand task scope.
|
|
29
|
+
|
|
30
|
+
## Will / Will not
|
|
31
|
+
|
|
32
|
+
**Will:** follow Feature layer order and reference Features; add required unit tests; run the post-change build gate; update task artifacts.
|
|
33
|
+
|
|
34
|
+
**Will not:** formal code review; invent AC; pull Next/Playwright gates; auto-continue the next WP when the pipeline expects a human gate or handoff.
|
|
35
|
+
|
|
23
36
|
## Preset / cross-stack fork (when editing agents, skills, hooks)
|
|
24
37
|
|
|
25
38
|
When copying from `next` into `ios-swift` (or another stack):
|