@bonesofspring/ai-rules 0.2.26 → 0.2.28
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 +12 -0
- package/LICENSE +21 -0
- package/README.md +1 -1
- package/bin/cli.js +275 -46
- package/bin/lib/safe-path.js +93 -0
- package/bin/lib/seed-ai-local-team.js +48 -5
- package/bin/mavis-install.js +35 -8
- package/bin/opencode-install.js +92 -11
- package/docs/LOCAL-OVERLAY.md +186 -0
- package/docs/MAVIS-COMPATIBILITY.md +174 -0
- package/docs/MAVIS.md +120 -0
- package/docs/OPENCODE-COMPATIBILITY.md +54 -0
- package/docs/OPENCODE.md +133 -0
- package/docs/PRESET-CONTRIBUTION.md +431 -0
- package/docs/PRESET-ENGLISH-STYLE.md +91 -0
- package/docs/specs/INDEX.md +9 -0
- package/docs/specs/_templates/feature.md +32 -0
- package/docs/specs/_templates/page.md +47 -0
- package/package.json +7 -1
- package/presets/_shared/core/meta/preset-layering.md +1 -1
- package/presets/_shared/core/meta/preset-pr-checklist.md +1 -1
- package/presets/_shared/core/meta/preset-token-budget.md +10 -10
- package/presets/_shared/core/quality/code-quality-and-refactoring.md +6 -0
- package/presets/claude/android-kotlin/CLAUDE.md +12 -0
- package/presets/claude/android-kotlin/agents/accessibility-reviewer.md +15 -0
- package/presets/claude/android-kotlin/agents/api-contract-reviewer.md +16 -1
- package/presets/claude/android-kotlin/agents/build-verifier.md +19 -2
- package/presets/claude/android-kotlin/agents/ci-investigator.md +25 -0
- package/presets/claude/android-kotlin/agents/code-reviewer.md +16 -0
- package/presets/claude/android-kotlin/agents/codebase-analyzer.md +15 -0
- package/presets/claude/android-kotlin/agents/debugger.md +25 -0
- package/presets/claude/android-kotlin/agents/feature-developer.md +25 -0
- package/presets/claude/android-kotlin/agents/instrumentation-test-generator.md +16 -0
- package/presets/claude/android-kotlin/agents/instrumentation-test-healer.md +16 -0
- package/presets/claude/android-kotlin/agents/instrumentation-test-planner.md +16 -0
- package/presets/claude/android-kotlin/agents/migration-specialist.md +15 -0
- package/presets/claude/android-kotlin/agents/mockup-reviewer.md +15 -0
- package/presets/claude/android-kotlin/agents/openspec-author.md +15 -0
- package/presets/claude/android-kotlin/agents/performance-auditor.md +15 -0
- package/presets/claude/android-kotlin/agents/qa-tester.md +17 -0
- package/presets/claude/android-kotlin/agents/security-reviewer.md +15 -0
- package/presets/claude/android-kotlin/agents/solution-architect.md +15 -0
- package/presets/claude/android-kotlin/agents/task-analyst.md +15 -0
- package/presets/claude/android-kotlin/agents/task-router.md +15 -0
- package/presets/claude/android-kotlin/agents/tech-writer.md +15 -1
- package/presets/claude/android-kotlin/agents/unit-test-generator.md +16 -0
- package/presets/claude/android-kotlin/agents/unit-test-healer.md +16 -0
- package/presets/claude/android-kotlin/agents/unit-test-planner.md +16 -0
- package/presets/claude/android-kotlin/commands/task.md +1 -1
- package/presets/claude/android-kotlin/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/android-kotlin/hooks/examples/README.md +5 -3
- package/presets/claude/android-kotlin/hooks/examples/test-on-save.example.sh +6 -4
- package/presets/claude/android-kotlin/rules/README.md +1 -1
- package/presets/claude/android-kotlin/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/mcp-usage.md +1 -1
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-layering.md +2 -2
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-token-budget.md +11 -11
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-twin-sync.md +1 -1
- package/presets/claude/android-kotlin/rules/ui-and-accessibility/compose.md +2 -0
- package/presets/claude/android-kotlin/settings.json +10 -0
- package/presets/claude/go/CLAUDE.md +13 -1
- package/presets/claude/go/agents/api-contract-reviewer.md +17 -0
- package/presets/claude/go/agents/build-verifier.md +18 -1
- package/presets/claude/go/agents/ci-investigator.md +29 -0
- package/presets/claude/go/agents/code-reviewer.md +16 -0
- package/presets/claude/go/agents/codebase-analyzer.md +15 -0
- package/presets/claude/go/agents/debugger.md +29 -0
- package/presets/claude/go/agents/feature-developer.md +29 -0
- package/presets/claude/go/agents/integration-test-generator.md +17 -0
- package/presets/claude/go/agents/integration-test-healer.md +17 -0
- package/presets/claude/go/agents/integration-test-planner.md +17 -0
- package/presets/claude/go/agents/migration-specialist.md +15 -0
- package/presets/claude/go/agents/openspec-author.md +15 -0
- package/presets/claude/go/agents/performance-auditor.md +15 -0
- package/presets/claude/go/agents/qa-tester.md +18 -0
- package/presets/claude/go/agents/security-reviewer.md +15 -0
- package/presets/claude/go/agents/solution-architect.md +15 -0
- package/presets/claude/go/agents/task-analyst.md +15 -0
- package/presets/claude/go/agents/task-router.md +15 -0
- package/presets/claude/go/agents/tech-writer.md +15 -1
- package/presets/claude/go/agents/unit-test-generator.md +16 -0
- package/presets/claude/go/agents/unit-test-healer.md +16 -0
- package/presets/claude/go/agents/unit-test-planner.md +16 -0
- package/presets/claude/go/commands/task.md +1 -1
- package/presets/claude/go/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/go/hooks/examples/README.md +5 -3
- package/presets/claude/go/rules/README.md +1 -1
- package/presets/claude/go/rules/api-and-data/adapters-driven.md +3 -3
- package/presets/claude/go/rules/api-and-data/adapters-driving.md +2 -2
- package/presets/claude/go/rules/api-and-data/api-grpc.md +2 -2
- package/presets/claude/go/rules/api-and-data/api-http.md +3 -3
- package/presets/claude/go/rules/api-and-data/messaging-adapters.md +1 -1
- package/presets/claude/go/rules/api-and-data/persistence-adapters.md +2 -2
- package/presets/claude/go/rules/architecture/application-usecases.md +1 -1
- package/presets/claude/go/rules/architecture/domain-layer.md +1 -1
- package/presets/claude/go/rules/architecture/feature-delivery.md +1 -1
- package/presets/claude/go/rules/architecture/ports-interfaces.md +2 -2
- package/presets/claude/go/rules/stack/go-conventions.md +1 -1
- package/presets/claude/go/rules/testing/e2e.md +2 -2
- package/presets/claude/go/rules/testing/integration.md +2 -2
- package/presets/claude/go/rules/testing/unit.md +1 -1
- 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 +6 -0
- package/presets/claude/go/rules/tooling-and-review/code-review.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/go-tooling.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/mcp-usage.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/post-change-test.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/preset-token-budget.md +10 -10
- package/presets/claude/go/rules/tooling-and-review/security-go.md +3 -3
- package/presets/claude/go/rules/tooling-and-review/technical-retro.md +1 -1
- package/presets/claude/go/settings.json +10 -0
- package/presets/claude/ios-swift/CLAUDE.md +12 -0
- package/presets/claude/ios-swift/agents/accessibility-reviewer.md +15 -0
- package/presets/claude/ios-swift/agents/api-contract-reviewer.md +16 -0
- package/presets/claude/ios-swift/agents/build-verifier.md +20 -3
- package/presets/claude/ios-swift/agents/ci-investigator.md +24 -0
- package/presets/claude/ios-swift/agents/code-reviewer.md +16 -0
- package/presets/claude/ios-swift/agents/codebase-analyzer.md +15 -0
- package/presets/claude/ios-swift/agents/debugger.md +24 -0
- package/presets/claude/ios-swift/agents/feature-developer.md +24 -0
- package/presets/claude/ios-swift/agents/migration-specialist.md +15 -0
- package/presets/claude/ios-swift/agents/mockup-reviewer.md +15 -0
- package/presets/claude/ios-swift/agents/openspec-author.md +15 -0
- package/presets/claude/ios-swift/agents/performance-auditor.md +15 -0
- package/presets/claude/ios-swift/agents/qa-tester.md +17 -0
- package/presets/claude/ios-swift/agents/security-reviewer.md +15 -0
- package/presets/claude/ios-swift/agents/solution-architect.md +15 -0
- package/presets/claude/ios-swift/agents/task-analyst.md +15 -0
- package/presets/claude/ios-swift/agents/task-router.md +15 -0
- package/presets/claude/ios-swift/agents/tech-writer.md +15 -1
- package/presets/claude/ios-swift/agents/unit-test-generator.md +16 -0
- package/presets/claude/ios-swift/agents/unit-test-healer.md +16 -0
- package/presets/claude/ios-swift/agents/unit-test-planner.md +16 -0
- package/presets/claude/ios-swift/agents/xcuitest-test-generator.md +16 -0
- package/presets/claude/ios-swift/agents/xcuitest-test-healer.md +16 -0
- package/presets/claude/ios-swift/agents/xcuitest-test-planner.md +16 -0
- package/presets/claude/ios-swift/commands/task.md +1 -1
- package/presets/claude/ios-swift/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/ios-swift/hooks/examples/README.md +5 -3
- package/presets/claude/ios-swift/rules/README.md +1 -1
- package/presets/claude/ios-swift/rules/architecture/feature-delivery.md +3 -3
- package/presets/claude/ios-swift/rules/architecture/reference-features.md +1 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/mcp-usage.md +1 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/post-change-build.md +2 -2
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-layering.md +2 -2
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-token-budget.md +11 -11
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-twin-sync.md +1 -1
- package/presets/claude/ios-swift/rules/ui-and-accessibility/swiftui.md +7 -0
- package/presets/claude/ios-swift/settings.json +10 -0
- package/presets/claude/java/CLAUDE.md +14 -2
- package/presets/claude/java/agents/api-contract-reviewer.md +17 -0
- package/presets/claude/java/agents/build-verifier.md +18 -1
- package/presets/claude/java/agents/ci-investigator.md +29 -0
- package/presets/claude/java/agents/code-reviewer.md +16 -0
- package/presets/claude/java/agents/codebase-analyzer.md +15 -0
- package/presets/claude/java/agents/debugger.md +29 -0
- package/presets/claude/java/agents/feature-developer.md +29 -0
- package/presets/claude/java/agents/integration-test-generator.md +17 -0
- package/presets/claude/java/agents/integration-test-healer.md +17 -0
- package/presets/claude/java/agents/integration-test-planner.md +17 -0
- package/presets/claude/java/agents/migration-specialist.md +15 -0
- package/presets/claude/java/agents/openspec-author.md +15 -0
- package/presets/claude/java/agents/performance-auditor.md +15 -0
- package/presets/claude/java/agents/qa-tester.md +18 -0
- package/presets/claude/java/agents/security-reviewer.md +15 -0
- package/presets/claude/java/agents/solution-architect.md +15 -0
- package/presets/claude/java/agents/task-analyst.md +15 -0
- package/presets/claude/java/agents/task-router.md +15 -0
- package/presets/claude/java/agents/tech-writer.md +15 -1
- package/presets/claude/java/agents/unit-test-generator.md +16 -0
- package/presets/claude/java/agents/unit-test-healer.md +16 -0
- package/presets/claude/java/agents/unit-test-planner.md +16 -0
- package/presets/claude/java/commands/task.md +1 -1
- package/presets/claude/java/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/java/hooks/examples/README.md +5 -3
- package/presets/claude/java/rules/README.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/java/rules/tooling-and-review/mcp-usage.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/preset-token-budget.md +10 -10
- package/presets/claude/java/settings.json +10 -0
- package/presets/claude/mcp-ts/CLAUDE.md +13 -1
- package/presets/claude/mcp-ts/agents/build-verifier.md +18 -1
- package/presets/claude/mcp-ts/agents/feature-developer.md +22 -0
- package/presets/claude/mcp-ts/agents/security-reviewer.md +15 -0
- package/presets/claude/mcp-ts/agents/solution-architect.md +15 -1
- package/presets/claude/mcp-ts/agents/task-analyst.md +15 -0
- package/presets/claude/mcp-ts/agents/task-router.md +15 -0
- package/presets/claude/mcp-ts/commands/task.md +1 -1
- package/presets/claude/mcp-ts/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/mcp-ts/rules/README.md +1 -1
- package/presets/claude/mcp-ts/rules/api-and-data/mcp-auth-secrets.md +4 -4
- package/presets/claude/mcp-ts/rules/api-and-data/mcp-contract-testing.md +2 -2
- package/presets/claude/mcp-ts/rules/api-and-data/mcp-tool-design.md +1 -1
- package/presets/claude/mcp-ts/rules/api-and-data/mcp-transport-packaging.md +2 -2
- package/presets/claude/mcp-ts/rules/architecture/mcp-server-boundaries.md +1 -1
- package/presets/claude/mcp-ts/rules/testing/unit.md +2 -2
- package/presets/claude/mcp-ts/rules/tooling-and-review/anti-sycophancy-discipline.md +2 -2
- package/presets/claude/mcp-ts/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/mcp-ts/rules/tooling-and-review/mcp-ts-tooling.md +3 -3
- package/presets/claude/mcp-ts/rules/tooling-and-review/post-change-test.md +1 -1
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-token-budget.md +10 -10
- package/presets/claude/mcp-ts/rules/tooling-and-review/security-mcp.md +1 -1
- package/presets/claude/mcp-ts/settings.json +10 -0
- package/presets/claude/next/CLAUDE.md +12 -0
- package/presets/claude/next/README.md +1 -1
- package/presets/claude/next/agents/accessibility-reviewer.md +17 -0
- package/presets/claude/next/agents/api-contract-reviewer.md +19 -0
- package/presets/claude/next/agents/build-verifier.md +19 -2
- package/presets/claude/next/agents/ci-investigator.md +34 -0
- package/presets/claude/next/agents/code-reviewer.md +18 -0
- package/presets/claude/next/agents/codebase-analyzer.md +17 -0
- package/presets/claude/next/agents/debugger.md +34 -0
- package/presets/claude/next/agents/feature-developer.md +34 -0
- package/presets/claude/next/agents/migration-specialist.md +17 -0
- package/presets/claude/next/agents/mockup-reviewer.md +17 -0
- package/presets/claude/next/agents/openspec-author.md +17 -0
- package/presets/claude/next/agents/performance-auditor.md +17 -0
- package/presets/claude/next/agents/playwright-test-generator.md +19 -0
- package/presets/claude/next/agents/playwright-test-healer.md +19 -1
- package/presets/claude/next/agents/playwright-test-planner.md +20 -1
- package/presets/claude/next/agents/qa-tester.md +20 -0
- package/presets/claude/next/agents/security-reviewer.md +17 -0
- package/presets/claude/next/agents/solution-architect.md +17 -0
- package/presets/claude/next/agents/task-analyst.md +17 -0
- package/presets/claude/next/agents/task-router.md +17 -0
- package/presets/claude/next/agents/tech-writer.md +17 -0
- package/presets/claude/next/agents/unit-test-generator.md +18 -0
- package/presets/claude/next/agents/unit-test-healer.md +18 -0
- package/presets/claude/next/agents/unit-test-planner.md +18 -0
- package/presets/claude/next/commands/task.md +1 -1
- package/presets/claude/next/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/next/hooks/examples/README.md +5 -3
- package/presets/claude/next/rules/README.md +1 -1
- package/presets/claude/next/rules/api-and-data/api-services.md +6 -4
- package/presets/claude/next/rules/api-and-data/store-rtk.md +6 -5
- package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +4 -0
- package/presets/claude/next/rules/architecture/reference-features.md +1 -1
- package/presets/claude/next/rules/stack/next-app-core.md +2 -1
- package/presets/claude/next/rules/testing/tests-unit.md +1 -0
- package/presets/claude/next/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/next/rules/tooling-and-review/preset-layering.md +2 -2
- package/presets/claude/next/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
- package/presets/claude/next/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/next/rules/tooling-and-review/preset-token-budget.md +11 -11
- package/presets/claude/next/rules/tooling-and-review/preset-twin-sync.md +1 -1
- package/presets/claude/next/rules/ui-and-accessibility/react-ui.md +37 -1
- package/presets/claude/next/settings.json +16 -0
- package/presets/claude/next/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json +69 -0
- package/presets/claude/next/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json +5 -0
- package/presets/claude/next/team/fixtures/metrics-scenarios/tasks/parallel-receipts/metrics.json +79 -0
- package/presets/claude/next/team/fixtures/metrics-scenarios/tasks/serial-retry/metrics.json +124 -0
- package/presets/claude/next/team/fixtures/metrics-scenarios/tasks/validation-failed/metrics.json +124 -0
- package/presets/claude/next/team/fixtures/metrics.example.json +54 -0
- package/presets/claude/nuxt/CLAUDE.md +12 -0
- package/presets/claude/nuxt/agents/accessibility-reviewer.md +17 -0
- package/presets/claude/nuxt/agents/api-contract-reviewer.md +19 -0
- package/presets/claude/nuxt/agents/build-verifier.md +19 -2
- package/presets/claude/nuxt/agents/ci-investigator.md +34 -0
- package/presets/claude/nuxt/agents/code-reviewer.md +18 -0
- package/presets/claude/nuxt/agents/codebase-analyzer.md +17 -0
- package/presets/claude/nuxt/agents/debugger.md +34 -0
- package/presets/claude/nuxt/agents/feature-developer.md +34 -0
- package/presets/claude/nuxt/agents/migration-specialist.md +17 -0
- package/presets/claude/nuxt/agents/mockup-reviewer.md +17 -0
- package/presets/claude/nuxt/agents/openspec-author.md +17 -0
- package/presets/claude/nuxt/agents/performance-auditor.md +17 -0
- package/presets/claude/nuxt/agents/playwright-test-generator.md +19 -0
- package/presets/claude/nuxt/agents/playwright-test-healer.md +19 -1
- package/presets/claude/nuxt/agents/playwright-test-planner.md +20 -1
- package/presets/claude/nuxt/agents/qa-tester.md +20 -0
- package/presets/claude/nuxt/agents/security-reviewer.md +17 -0
- package/presets/claude/nuxt/agents/solution-architect.md +17 -0
- package/presets/claude/nuxt/agents/task-analyst.md +17 -0
- package/presets/claude/nuxt/agents/task-router.md +17 -0
- package/presets/claude/nuxt/agents/tech-writer.md +17 -0
- package/presets/claude/nuxt/agents/unit-test-generator.md +18 -0
- package/presets/claude/nuxt/agents/unit-test-healer.md +18 -0
- package/presets/claude/nuxt/agents/unit-test-planner.md +18 -0
- package/presets/claude/nuxt/commands/task.md +1 -1
- package/presets/claude/nuxt/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/nuxt/hooks/examples/README.md +5 -3
- package/presets/claude/nuxt/hooks/examples/format-edited.example.sh +8 -7
- package/presets/claude/nuxt/hooks/examples/test-on-save.example.sh +8 -3
- package/presets/claude/nuxt/rules/README.md +1 -1
- package/presets/claude/nuxt/rules/architecture/layer-barrel-exports.md +1 -1
- package/presets/claude/nuxt/rules/architecture/reference-features.md +1 -1
- package/presets/claude/nuxt/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/nuxt/rules/tooling-and-review/preset-layering.md +2 -2
- package/presets/claude/nuxt/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
- package/presets/claude/nuxt/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/nuxt/rules/tooling-and-review/preset-token-budget.md +11 -11
- package/presets/claude/nuxt/rules/tooling-and-review/preset-twin-sync.md +1 -1
- package/presets/claude/nuxt/rules/ui-and-accessibility/vue-ui.md +7 -0
- package/presets/claude/nuxt/settings.json +16 -0
- package/presets/claude/nuxt/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json +69 -0
- package/presets/claude/nuxt/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json +5 -0
- package/presets/claude/nuxt/team/fixtures/metrics-scenarios/tasks/parallel-receipts/metrics.json +79 -0
- package/presets/claude/nuxt/team/fixtures/metrics-scenarios/tasks/serial-retry/metrics.json +124 -0
- package/presets/claude/nuxt/team/fixtures/metrics-scenarios/tasks/validation-failed/metrics.json +124 -0
- package/presets/claude/nuxt/team/fixtures/metrics.example.json +54 -0
- package/presets/claude/php-hexagonal/CLAUDE.md +14 -2
- package/presets/claude/php-hexagonal/agents/api-contract-reviewer.md +17 -0
- package/presets/claude/php-hexagonal/agents/build-verifier.md +18 -1
- package/presets/claude/php-hexagonal/agents/ci-investigator.md +29 -0
- package/presets/claude/php-hexagonal/agents/code-reviewer.md +16 -0
- package/presets/claude/php-hexagonal/agents/codebase-analyzer.md +15 -0
- package/presets/claude/php-hexagonal/agents/debugger.md +29 -0
- package/presets/claude/php-hexagonal/agents/feature-developer.md +29 -0
- package/presets/claude/php-hexagonal/agents/integration-test-generator.md +17 -0
- package/presets/claude/php-hexagonal/agents/integration-test-healer.md +17 -0
- package/presets/claude/php-hexagonal/agents/integration-test-planner.md +17 -0
- package/presets/claude/php-hexagonal/agents/migration-specialist.md +15 -0
- package/presets/claude/php-hexagonal/agents/openspec-author.md +15 -0
- package/presets/claude/php-hexagonal/agents/performance-auditor.md +15 -0
- package/presets/claude/php-hexagonal/agents/qa-tester.md +18 -0
- package/presets/claude/php-hexagonal/agents/security-reviewer.md +15 -0
- package/presets/claude/php-hexagonal/agents/solution-architect.md +15 -0
- package/presets/claude/php-hexagonal/agents/task-analyst.md +15 -0
- package/presets/claude/php-hexagonal/agents/task-router.md +15 -0
- package/presets/claude/php-hexagonal/agents/tech-writer.md +15 -1
- package/presets/claude/php-hexagonal/agents/unit-test-generator.md +16 -0
- package/presets/claude/php-hexagonal/agents/unit-test-healer.md +16 -0
- package/presets/claude/php-hexagonal/agents/unit-test-planner.md +16 -0
- package/presets/claude/php-hexagonal/commands/task.md +1 -1
- package/presets/claude/php-hexagonal/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/php-hexagonal/hooks/examples/README.md +5 -3
- package/presets/claude/php-hexagonal/rules/README.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/php-hexagonal/rules/tooling-and-review/mcp-usage.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-token-budget.md +10 -10
- package/presets/claude/php-hexagonal/settings.json +10 -0
- package/presets/claude/php-laravel/CLAUDE.md +12 -0
- package/presets/claude/php-laravel/agents/api-contract-reviewer.md +18 -0
- package/presets/claude/php-laravel/agents/build-verifier.md +18 -1
- package/presets/claude/php-laravel/agents/ci-investigator.md +29 -0
- package/presets/claude/php-laravel/agents/code-reviewer.md +16 -0
- package/presets/claude/php-laravel/agents/codebase-analyzer.md +15 -0
- package/presets/claude/php-laravel/agents/debugger.md +29 -0
- package/presets/claude/php-laravel/agents/feature-developer.md +29 -0
- package/presets/claude/php-laravel/agents/integration-test-generator.md +17 -0
- package/presets/claude/php-laravel/agents/integration-test-healer.md +17 -0
- package/presets/claude/php-laravel/agents/integration-test-planner.md +17 -0
- package/presets/claude/php-laravel/agents/migration-specialist.md +15 -0
- package/presets/claude/php-laravel/agents/openspec-author.md +15 -0
- package/presets/claude/php-laravel/agents/performance-auditor.md +15 -0
- package/presets/claude/php-laravel/agents/qa-tester.md +18 -0
- package/presets/claude/php-laravel/agents/security-reviewer.md +15 -0
- package/presets/claude/php-laravel/agents/solution-architect.md +15 -0
- package/presets/claude/php-laravel/agents/task-analyst.md +15 -0
- package/presets/claude/php-laravel/agents/task-router.md +15 -0
- package/presets/claude/php-laravel/agents/tech-writer.md +15 -1
- package/presets/claude/php-laravel/agents/unit-test-generator.md +16 -0
- package/presets/claude/php-laravel/agents/unit-test-healer.md +16 -0
- package/presets/claude/php-laravel/agents/unit-test-planner.md +16 -0
- package/presets/claude/php-laravel/commands/task.md +1 -1
- package/presets/claude/php-laravel/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/php-laravel/hooks/examples/README.md +5 -3
- package/presets/claude/php-laravel/rules/README.md +1 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/php-laravel/rules/tooling-and-review/mcp-usage.md +1 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-token-budget.md +10 -10
- package/presets/claude/php-laravel/settings.json +10 -0
- package/presets/claude/svelte/CLAUDE.md +12 -0
- package/presets/claude/svelte/agents/accessibility-reviewer.md +17 -0
- package/presets/claude/svelte/agents/api-contract-reviewer.md +19 -0
- package/presets/claude/svelte/agents/build-verifier.md +19 -2
- package/presets/claude/svelte/agents/ci-investigator.md +34 -0
- package/presets/claude/svelte/agents/code-reviewer.md +18 -0
- package/presets/claude/svelte/agents/codebase-analyzer.md +17 -0
- package/presets/claude/svelte/agents/debugger.md +34 -0
- package/presets/claude/svelte/agents/feature-developer.md +34 -0
- package/presets/claude/svelte/agents/migration-specialist.md +17 -0
- package/presets/claude/svelte/agents/mockup-reviewer.md +17 -0
- package/presets/claude/svelte/agents/openspec-author.md +17 -0
- package/presets/claude/svelte/agents/performance-auditor.md +17 -0
- package/presets/claude/svelte/agents/playwright-test-generator.md +19 -0
- package/presets/claude/svelte/agents/playwright-test-healer.md +19 -1
- package/presets/claude/svelte/agents/playwright-test-planner.md +20 -1
- package/presets/claude/svelte/agents/qa-tester.md +20 -0
- package/presets/claude/svelte/agents/security-reviewer.md +17 -0
- package/presets/claude/svelte/agents/solution-architect.md +17 -0
- package/presets/claude/svelte/agents/task-analyst.md +17 -0
- package/presets/claude/svelte/agents/task-router.md +17 -0
- package/presets/claude/svelte/agents/tech-writer.md +17 -0
- package/presets/claude/svelte/agents/unit-test-generator.md +18 -0
- package/presets/claude/svelte/agents/unit-test-healer.md +18 -0
- package/presets/claude/svelte/agents/unit-test-planner.md +18 -0
- package/presets/claude/svelte/commands/task.md +1 -1
- package/presets/claude/svelte/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/svelte/hooks/examples/README.md +5 -3
- package/presets/claude/svelte/rules/README.md +1 -1
- package/presets/claude/svelte/rules/api-and-data/store-svelte.md +1 -1
- package/presets/claude/svelte/rules/architecture/layer-barrel-exports.md +1 -1
- package/presets/claude/svelte/rules/architecture/reference-features.md +1 -1
- package/presets/claude/svelte/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/svelte/rules/tooling-and-review/mcp-usage.md +1 -1
- package/presets/claude/svelte/rules/tooling-and-review/preset-layering.md +2 -2
- package/presets/claude/svelte/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
- package/presets/claude/svelte/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/svelte/rules/tooling-and-review/preset-token-budget.md +11 -11
- package/presets/claude/svelte/rules/tooling-and-review/preset-twin-sync.md +1 -1
- package/presets/claude/svelte/rules/ui-and-accessibility/no-rest-props-spread.md +1 -1
- package/presets/claude/svelte/rules/ui-and-accessibility/svelte-ui.md +7 -0
- package/presets/claude/svelte/settings.json +16 -0
- package/presets/claude/svelte/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json +69 -0
- package/presets/claude/svelte/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json +5 -0
- package/presets/claude/svelte/team/fixtures/metrics-scenarios/tasks/parallel-receipts/metrics.json +79 -0
- package/presets/claude/svelte/team/fixtures/metrics-scenarios/tasks/serial-retry/metrics.json +124 -0
- package/presets/claude/svelte/team/fixtures/metrics-scenarios/tasks/validation-failed/metrics.json +124 -0
- package/presets/claude/svelte/team/fixtures/metrics.example.json +54 -0
- package/presets/cursor/android-kotlin/agents/build-verifier.md +2 -2
- package/presets/cursor/android-kotlin/commands/task.md +1 -1
- package/presets/cursor/android-kotlin/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/android-kotlin/hooks/examples/test-on-save.example.sh +6 -4
- package/presets/cursor/android-kotlin/rules/README.md +1 -1
- package/presets/cursor/android-kotlin/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/android-kotlin/rules/compose-ui.mdc +2 -0
- package/presets/cursor/android-kotlin/rules/preset-layering.mdc +2 -2
- package/presets/cursor/android-kotlin/rules/preset-no-cross-stack-leakage.mdc +1 -1
- package/presets/cursor/android-kotlin/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/android-kotlin/rules/preset-token-budget.mdc +11 -11
- package/presets/cursor/android-kotlin/rules/preset-twin-sync.mdc +1 -1
- package/presets/cursor/go/README.md +1 -1
- package/presets/cursor/go/agents/build-verifier.md +1 -1
- package/presets/cursor/go/commands/task.md +1 -1
- package/presets/cursor/go/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/go/rules/README.md +2 -2
- package/presets/cursor/go/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/go/rules/preset-layering.mdc +1 -1
- package/presets/cursor/go/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/go/rules/preset-token-budget.mdc +10 -10
- package/presets/cursor/ios-swift/README.md +1 -1
- package/presets/cursor/ios-swift/agents/build-verifier.md +3 -3
- package/presets/cursor/ios-swift/commands/task.md +1 -1
- package/presets/cursor/ios-swift/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/ios-swift/rules/README.md +2 -2
- package/presets/cursor/ios-swift/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/ios-swift/rules/preset-layering.mdc +2 -2
- package/presets/cursor/ios-swift/rules/preset-no-cross-stack-leakage.mdc +1 -1
- package/presets/cursor/ios-swift/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/ios-swift/rules/preset-token-budget.mdc +11 -11
- package/presets/cursor/ios-swift/rules/preset-twin-sync.mdc +1 -1
- package/presets/cursor/ios-swift/rules/reference-features.mdc +1 -1
- package/presets/cursor/ios-swift/rules/swiftui-ui.mdc +7 -0
- package/presets/cursor/java/AGENTS.md +1 -1
- package/presets/cursor/java/agents/build-verifier.md +1 -1
- package/presets/cursor/java/commands/task.md +1 -1
- package/presets/cursor/java/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/java/rules/README.md +2 -2
- package/presets/cursor/java/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/java/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/java/rules/preset-layering.mdc +1 -1
- package/presets/cursor/java/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/java/rules/preset-token-budget.mdc +10 -10
- package/presets/cursor/mcp-ts/agents/build-verifier.md +1 -1
- package/presets/cursor/mcp-ts/commands/task.md +1 -1
- package/presets/cursor/mcp-ts/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/mcp-ts/rules/README.md +2 -2
- package/presets/cursor/mcp-ts/rules/anti-sycophancy-discipline.mdc +2 -2
- package/presets/cursor/mcp-ts/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/mcp-ts/rules/mcp-auth-secrets.mdc +4 -4
- package/presets/cursor/mcp-ts/rules/mcp-contract-testing.mdc +2 -2
- package/presets/cursor/mcp-ts/rules/mcp-server-boundaries.mdc +1 -1
- package/presets/cursor/mcp-ts/rules/mcp-tool-design.mdc +1 -1
- package/presets/cursor/mcp-ts/rules/mcp-transport-packaging.mdc +2 -2
- package/presets/cursor/mcp-ts/rules/mcp-ts-tooling.mdc +3 -3
- package/presets/cursor/mcp-ts/rules/preset-layering.mdc +1 -1
- package/presets/cursor/mcp-ts/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/mcp-ts/rules/preset-token-budget.mdc +10 -10
- package/presets/cursor/mcp-ts/rules/security-mcp.mdc +1 -1
- package/presets/cursor/mcp-ts/rules/tests-unit.mdc +2 -2
- package/presets/cursor/next/README.md +2 -2
- package/presets/cursor/next/agents/build-verifier.md +2 -2
- package/presets/cursor/next/ai-local/rules-library/agent-artifacts-no-local-paths.md +38 -0
- package/presets/cursor/next/ai-local/rules-library/commit-hygiene.md +17 -0
- package/presets/cursor/next/ai-local/rules-library/mcp-required-for-ui-layout.md +41 -0
- package/presets/cursor/next/ai-local/rules-library/no-test-driven-behavior-change.md +14 -0
- package/presets/cursor/next/ai-local/rules-library/pre-pr-checklist.md +16 -0
- package/presets/cursor/next/ai-local/rules-library/router-pages.md +23 -0
- package/presets/cursor/next/ai-local/rules-library/single-source-copy-constants.md +16 -0
- package/presets/cursor/next/commands/task.md +1 -1
- package/presets/cursor/next/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/next/rules/README.md +1 -1
- package/presets/cursor/next/rules/api-services.mdc +6 -4
- package/presets/cursor/next/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/next/rules/feature-delivery-workflow.mdc +4 -0
- package/presets/cursor/next/rules/next-app-core.mdc +2 -1
- package/presets/cursor/next/rules/preset-layering.mdc +2 -2
- package/presets/cursor/next/rules/preset-no-cross-stack-leakage.mdc +1 -1
- package/presets/cursor/next/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/next/rules/preset-token-budget.mdc +11 -11
- package/presets/cursor/next/rules/preset-twin-sync.mdc +1 -1
- package/presets/cursor/next/rules/react-ui.mdc +37 -1
- package/presets/cursor/next/rules/reference-features.mdc +1 -1
- package/presets/cursor/next/rules/store-rtk.mdc +6 -5
- package/presets/cursor/next/rules/tests-unit.mdc +1 -0
- package/presets/cursor/nuxt/README.md +1 -1
- package/presets/cursor/nuxt/agents/build-verifier.md +2 -2
- package/presets/cursor/nuxt/commands/task.md +1 -1
- package/presets/cursor/nuxt/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/nuxt/hooks/examples/format-edited.example.sh +8 -7
- package/presets/cursor/nuxt/hooks/examples/test-on-save.example.sh +8 -3
- package/presets/cursor/nuxt/rules/anti-sycophancy-discipline.mdc +1 -1
- package/presets/cursor/nuxt/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/nuxt/rules/design-guidance.mdc +1 -1
- package/presets/cursor/nuxt/rules/layer-barrel-exports.mdc +1 -1
- package/presets/cursor/nuxt/rules/preset-layering.mdc +2 -2
- package/presets/cursor/nuxt/rules/preset-no-cross-stack-leakage.mdc +1 -1
- package/presets/cursor/nuxt/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/nuxt/rules/preset-token-budget.mdc +11 -11
- package/presets/cursor/nuxt/rules/preset-twin-sync.mdc +1 -1
- package/presets/cursor/nuxt/rules/reference-features.mdc +1 -1
- package/presets/cursor/nuxt/rules/vue-ui.mdc +7 -0
- package/presets/cursor/php-hexagonal/AGENTS.md +1 -1
- package/presets/cursor/php-hexagonal/agents/build-verifier.md +1 -1
- package/presets/cursor/php-hexagonal/commands/task.md +1 -1
- package/presets/cursor/php-hexagonal/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/php-hexagonal/rules/README.md +2 -2
- package/presets/cursor/php-hexagonal/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/php-hexagonal/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/php-hexagonal/rules/preset-layering.mdc +1 -1
- package/presets/cursor/php-hexagonal/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/php-hexagonal/rules/preset-token-budget.mdc +10 -10
- package/presets/cursor/php-laravel/AGENTS.md +1 -1
- package/presets/cursor/php-laravel/agents/build-verifier.md +1 -1
- package/presets/cursor/php-laravel/commands/task.md +1 -1
- package/presets/cursor/php-laravel/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/php-laravel/rules/README.md +2 -2
- package/presets/cursor/php-laravel/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/php-laravel/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/php-laravel/rules/preset-layering.mdc +1 -1
- package/presets/cursor/php-laravel/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/php-laravel/rules/preset-token-budget.mdc +10 -10
- package/presets/cursor/svelte/README.md +1 -1
- package/presets/cursor/svelte/agents/build-verifier.md +2 -2
- package/presets/cursor/svelte/commands/task.md +1 -1
- package/presets/cursor/svelte/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/svelte/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/svelte/rules/layer-barrel-exports.mdc +1 -1
- package/presets/cursor/svelte/rules/preset-layering.mdc +2 -2
- package/presets/cursor/svelte/rules/preset-no-cross-stack-leakage.mdc +1 -1
- package/presets/cursor/svelte/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/svelte/rules/preset-token-budget.mdc +11 -11
- package/presets/cursor/svelte/rules/preset-twin-sync.mdc +1 -1
- package/presets/cursor/svelte/rules/reference-features.mdc +1 -1
- package/presets/cursor/svelte/rules/svelte-ui.mdc +7 -0
- package/presets/mavis/android-kotlin/MAVIS.md +13 -0
- package/presets/mavis/android-kotlin/adapter-map.json +1 -1
- package/presets/mavis/android-kotlin/agents/accessibility-reviewer.md +15 -0
- package/presets/mavis/android-kotlin/agents/api-contract-reviewer.md +16 -0
- package/presets/mavis/android-kotlin/agents/build-verifier.md +19 -2
- package/presets/mavis/android-kotlin/agents/ci-investigator.md +25 -0
- package/presets/mavis/android-kotlin/agents/code-reviewer.md +16 -0
- package/presets/mavis/android-kotlin/agents/codebase-analyzer.md +15 -0
- package/presets/mavis/android-kotlin/agents/debugger.md +25 -0
- package/presets/mavis/android-kotlin/agents/feature-developer.md +25 -0
- package/presets/mavis/android-kotlin/agents/instrumentation-test-generator.md +16 -0
- package/presets/mavis/android-kotlin/agents/instrumentation-test-healer.md +16 -0
- package/presets/mavis/android-kotlin/agents/instrumentation-test-planner.md +16 -0
- package/presets/mavis/android-kotlin/agents/migration-specialist.md +15 -0
- package/presets/mavis/android-kotlin/agents/mockup-reviewer.md +15 -0
- package/presets/mavis/android-kotlin/agents/openspec-author.md +15 -0
- package/presets/mavis/android-kotlin/agents/performance-auditor.md +15 -0
- package/presets/mavis/android-kotlin/agents/qa-tester.md +17 -0
- package/presets/mavis/android-kotlin/agents/security-reviewer.md +15 -0
- package/presets/mavis/android-kotlin/agents/solution-architect.md +15 -0
- package/presets/mavis/android-kotlin/agents/task-analyst.md +15 -0
- package/presets/mavis/android-kotlin/agents/task-router.md +15 -0
- package/presets/mavis/android-kotlin/agents/tech-writer.md +15 -0
- package/presets/mavis/android-kotlin/agents/unit-test-generator.md +16 -0
- package/presets/mavis/android-kotlin/agents/unit-test-healer.md +16 -0
- package/presets/mavis/android-kotlin/agents/unit-test-planner.md +16 -0
- package/presets/mavis/android-kotlin/commands/spec-start.md +2 -2
- package/presets/mavis/android-kotlin/commands/task.md +6 -6
- package/presets/mavis/android-kotlin/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/android-kotlin/rules/code-quality-and-refactoring.md +14 -0
- package/presets/mavis/android-kotlin/rules/code-review-mr.md +39 -0
- package/presets/mavis/android-kotlin/rules/compose-ui.md +2 -0
- package/presets/mavis/android-kotlin/rules/design-guidance.md +5 -0
- package/presets/mavis/android-kotlin/rules/mcp-usage.md +8 -0
- package/presets/mavis/android-kotlin/rules/mockup-review.md +4 -0
- package/presets/mavis/android-kotlin/rules/preset-layering.md +1 -1
- package/presets/mavis/android-kotlin/rules/preset-no-cross-stack-leakage.md +4 -0
- package/presets/mavis/android-kotlin/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/android-kotlin/rules/preset-token-budget.md +10 -10
- package/presets/mavis/android-kotlin/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/android-kotlin/rules/product-specs.md +5 -0
- package/presets/mavis/android-kotlin/rules/ux-design.md +4 -0
- package/presets/mavis/android-kotlin/skills/debug-investigation/SKILL.md +39 -0
- package/presets/mavis/go/MAVIS.md +13 -0
- package/presets/mavis/go/adapter-map.json +1 -1
- package/presets/mavis/go/agents/api-contract-reviewer.md +17 -0
- package/presets/mavis/go/agents/build-verifier.md +18 -1
- package/presets/mavis/go/agents/ci-investigator.md +29 -0
- package/presets/mavis/go/agents/code-reviewer.md +16 -0
- package/presets/mavis/go/agents/codebase-analyzer.md +15 -0
- package/presets/mavis/go/agents/debugger.md +29 -0
- package/presets/mavis/go/agents/feature-developer.md +29 -0
- package/presets/mavis/go/agents/integration-test-generator.md +17 -0
- package/presets/mavis/go/agents/integration-test-healer.md +17 -0
- package/presets/mavis/go/agents/integration-test-planner.md +17 -0
- package/presets/mavis/go/agents/migration-specialist.md +15 -0
- package/presets/mavis/go/agents/openspec-author.md +15 -0
- package/presets/mavis/go/agents/performance-auditor.md +15 -0
- package/presets/mavis/go/agents/qa-tester.md +18 -0
- package/presets/mavis/go/agents/security-reviewer.md +15 -0
- package/presets/mavis/go/agents/solution-architect.md +15 -0
- package/presets/mavis/go/agents/task-analyst.md +15 -0
- package/presets/mavis/go/agents/task-router.md +15 -0
- package/presets/mavis/go/agents/tech-writer.md +15 -0
- package/presets/mavis/go/agents/unit-test-generator.md +16 -0
- package/presets/mavis/go/agents/unit-test-healer.md +16 -0
- package/presets/mavis/go/agents/unit-test-planner.md +16 -0
- package/presets/mavis/go/commands/spec-start.md +2 -2
- package/presets/mavis/go/commands/task.md +6 -6
- package/presets/mavis/go/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/go/rules/agent-team-intake.md +4 -0
- package/presets/mavis/go/rules/code-quality-and-refactoring.md +15 -0
- package/presets/mavis/go/rules/code-review-mr.md +7 -0
- package/presets/mavis/go/rules/design-guidance.md +5 -0
- package/presets/mavis/go/rules/mcp-usage.md +7 -0
- package/presets/mavis/go/rules/preset-layering.md +1 -1
- package/presets/mavis/go/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/go/rules/preset-token-budget.md +10 -10
- package/presets/mavis/go/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/go/rules/product-specs.md +6 -0
- package/presets/mavis/go/skills/debug-investigation/SKILL.md +20 -0
- package/presets/mavis/ios-swift/MAVIS.md +13 -0
- package/presets/mavis/ios-swift/adapter-map.json +1 -1
- package/presets/mavis/ios-swift/agents/accessibility-reviewer.md +15 -0
- package/presets/mavis/ios-swift/agents/api-contract-reviewer.md +16 -0
- package/presets/mavis/ios-swift/agents/build-verifier.md +20 -3
- package/presets/mavis/ios-swift/agents/ci-investigator.md +24 -0
- package/presets/mavis/ios-swift/agents/code-reviewer.md +16 -0
- package/presets/mavis/ios-swift/agents/codebase-analyzer.md +15 -0
- package/presets/mavis/ios-swift/agents/debugger.md +24 -0
- package/presets/mavis/ios-swift/agents/feature-developer.md +24 -0
- package/presets/mavis/ios-swift/agents/migration-specialist.md +15 -0
- package/presets/mavis/ios-swift/agents/mockup-reviewer.md +15 -0
- package/presets/mavis/ios-swift/agents/openspec-author.md +15 -0
- package/presets/mavis/ios-swift/agents/performance-auditor.md +15 -0
- package/presets/mavis/ios-swift/agents/qa-tester.md +17 -0
- package/presets/mavis/ios-swift/agents/security-reviewer.md +15 -0
- package/presets/mavis/ios-swift/agents/solution-architect.md +15 -0
- package/presets/mavis/ios-swift/agents/task-analyst.md +15 -0
- package/presets/mavis/ios-swift/agents/task-router.md +15 -0
- package/presets/mavis/ios-swift/agents/tech-writer.md +15 -0
- package/presets/mavis/ios-swift/agents/unit-test-generator.md +16 -0
- package/presets/mavis/ios-swift/agents/unit-test-healer.md +16 -0
- package/presets/mavis/ios-swift/agents/unit-test-planner.md +16 -0
- package/presets/mavis/ios-swift/agents/xcuitest-test-generator.md +16 -0
- package/presets/mavis/ios-swift/agents/xcuitest-test-healer.md +16 -0
- package/presets/mavis/ios-swift/agents/xcuitest-test-planner.md +16 -0
- package/presets/mavis/ios-swift/commands/spec-start.md +2 -2
- package/presets/mavis/ios-swift/commands/task.md +6 -6
- package/presets/mavis/ios-swift/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/ios-swift/rules/code-quality-and-refactoring.md +14 -0
- package/presets/mavis/ios-swift/rules/code-review-mr.md +39 -0
- package/presets/mavis/ios-swift/rules/design-guidance.md +5 -0
- package/presets/mavis/ios-swift/rules/feature-delivery-workflow.md +66 -0
- package/presets/mavis/ios-swift/rules/mcp-usage.md +8 -0
- package/presets/mavis/ios-swift/rules/mockup-review.md +4 -0
- package/presets/mavis/ios-swift/rules/preset-layering.md +1 -1
- package/presets/mavis/ios-swift/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/ios-swift/rules/preset-token-budget.md +10 -10
- package/presets/mavis/ios-swift/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/ios-swift/rules/product-specs.md +5 -0
- package/presets/mavis/ios-swift/rules/reference-features.md +49 -0
- package/presets/mavis/ios-swift/rules/swiftui-ui.md +7 -0
- package/presets/mavis/ios-swift/rules/ux-design.md +4 -0
- package/presets/mavis/ios-swift/skills/debug-investigation/SKILL.md +39 -0
- package/presets/mavis/java/MAVIS.md +13 -0
- package/presets/mavis/java/adapter-map.json +1 -1
- package/presets/mavis/java/agents/api-contract-reviewer.md +17 -0
- package/presets/mavis/java/agents/build-verifier.md +18 -1
- package/presets/mavis/java/agents/ci-investigator.md +29 -0
- package/presets/mavis/java/agents/code-reviewer.md +16 -0
- package/presets/mavis/java/agents/codebase-analyzer.md +15 -0
- package/presets/mavis/java/agents/debugger.md +29 -0
- package/presets/mavis/java/agents/feature-developer.md +29 -0
- package/presets/mavis/java/agents/integration-test-generator.md +17 -0
- package/presets/mavis/java/agents/integration-test-healer.md +17 -0
- package/presets/mavis/java/agents/integration-test-planner.md +17 -0
- package/presets/mavis/java/agents/migration-specialist.md +15 -0
- package/presets/mavis/java/agents/openspec-author.md +15 -0
- package/presets/mavis/java/agents/performance-auditor.md +15 -0
- package/presets/mavis/java/agents/qa-tester.md +18 -0
- package/presets/mavis/java/agents/security-reviewer.md +15 -0
- package/presets/mavis/java/agents/solution-architect.md +15 -0
- package/presets/mavis/java/agents/task-analyst.md +15 -0
- package/presets/mavis/java/agents/task-router.md +15 -0
- package/presets/mavis/java/agents/tech-writer.md +15 -0
- package/presets/mavis/java/agents/unit-test-generator.md +16 -0
- package/presets/mavis/java/agents/unit-test-healer.md +16 -0
- package/presets/mavis/java/agents/unit-test-planner.md +16 -0
- package/presets/mavis/java/commands/spec-start.md +2 -2
- package/presets/mavis/java/commands/task.md +6 -6
- package/presets/mavis/java/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/java/rules/agent-team-intake.md +4 -0
- package/presets/mavis/java/rules/code-quality-and-refactoring.md +15 -0
- package/presets/mavis/java/rules/code-review-mr.md +9 -0
- package/presets/mavis/java/rules/design-guidance.md +6 -0
- package/presets/mavis/java/rules/mcp-usage.md +6 -0
- package/presets/mavis/java/rules/preset-layering.md +1 -1
- package/presets/mavis/java/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/java/rules/preset-token-budget.md +10 -10
- package/presets/mavis/java/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/java/rules/product-specs.md +6 -0
- package/presets/mavis/java/skills/debug-investigation/SKILL.md +20 -0
- package/presets/mavis/mcp-ts/MAVIS.md +13 -0
- package/presets/mavis/mcp-ts/adapter-map.json +1 -1
- package/presets/mavis/mcp-ts/agents/build-verifier.md +18 -1
- package/presets/mavis/mcp-ts/agents/feature-developer.md +22 -0
- package/presets/mavis/mcp-ts/agents/security-reviewer.md +15 -0
- package/presets/mavis/mcp-ts/agents/solution-architect.md +15 -0
- package/presets/mavis/mcp-ts/agents/task-analyst.md +15 -0
- package/presets/mavis/mcp-ts/agents/task-router.md +15 -0
- package/presets/mavis/mcp-ts/commands/spec-start.md +2 -2
- package/presets/mavis/mcp-ts/commands/task.md +6 -6
- package/presets/mavis/mcp-ts/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/mcp-ts/rules/agent-team-intake.md +5 -0
- package/presets/mavis/mcp-ts/rules/anti-sycophancy-discipline.md +4 -0
- package/presets/mavis/mcp-ts/rules/code-quality-and-refactoring.md +15 -0
- package/presets/mavis/mcp-ts/rules/code-review-mr.md +6 -0
- package/presets/mavis/mcp-ts/rules/design-guidance.md +5 -0
- package/presets/mavis/mcp-ts/rules/mcp-usage.md +7 -0
- package/presets/mavis/mcp-ts/rules/preset-layering.md +1 -1
- package/presets/mavis/mcp-ts/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/mcp-ts/rules/preset-token-budget.md +10 -10
- package/presets/mavis/mcp-ts/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/mcp-ts/rules/product-specs.md +6 -0
- package/presets/mavis/mcp-ts/skills/debug-investigation/SKILL.md +15 -0
- package/presets/mavis/next/MAVIS.md +13 -0
- package/presets/mavis/next/adapter-map.json +57 -1
- package/presets/mavis/next/agents/accessibility-reviewer.md +17 -0
- package/presets/mavis/next/agents/api-contract-reviewer.md +19 -0
- package/presets/mavis/next/agents/build-verifier.md +19 -2
- package/presets/mavis/next/agents/ci-investigator.md +34 -0
- package/presets/mavis/next/agents/code-reviewer.md +18 -0
- package/presets/mavis/next/agents/codebase-analyzer.md +17 -0
- package/presets/mavis/next/agents/debugger.md +34 -0
- package/presets/mavis/next/agents/feature-developer.md +34 -0
- package/presets/mavis/next/agents/migration-specialist.md +17 -0
- package/presets/mavis/next/agents/mockup-reviewer.md +17 -0
- package/presets/mavis/next/agents/openspec-author.md +17 -0
- package/presets/mavis/next/agents/performance-auditor.md +17 -0
- package/presets/mavis/next/agents/playwright-test-generator.md +19 -0
- package/presets/mavis/next/agents/playwright-test-healer.md +19 -0
- package/presets/mavis/next/agents/playwright-test-planner.md +19 -0
- package/presets/mavis/next/agents/qa-tester.md +20 -0
- package/presets/mavis/next/agents/security-reviewer.md +17 -0
- package/presets/mavis/next/agents/solution-architect.md +17 -0
- package/presets/mavis/next/agents/task-analyst.md +17 -0
- package/presets/mavis/next/agents/task-router.md +17 -0
- package/presets/mavis/next/agents/tech-writer.md +17 -0
- package/presets/mavis/next/agents/unit-test-generator.md +18 -0
- package/presets/mavis/next/agents/unit-test-healer.md +18 -0
- package/presets/mavis/next/agents/unit-test-planner.md +18 -0
- package/presets/mavis/next/ai-local/rules-library/agent-artifacts-no-local-paths.md +38 -0
- package/presets/mavis/next/ai-local/rules-library/commit-hygiene.md +17 -0
- package/presets/mavis/next/ai-local/rules-library/mcp-required-for-ui-layout.md +41 -0
- package/presets/mavis/next/ai-local/rules-library/no-test-driven-behavior-change.md +14 -0
- package/presets/mavis/next/ai-local/rules-library/pre-pr-checklist.md +16 -0
- package/presets/mavis/next/ai-local/rules-library/router-pages.md +23 -0
- package/presets/mavis/next/ai-local/rules-library/single-source-copy-constants.md +16 -0
- package/presets/mavis/next/commands/spec-start.md +2 -2
- package/presets/mavis/next/commands/task.md +6 -6
- package/presets/mavis/next/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/next/rules/api-services.md +6 -4
- package/presets/mavis/next/rules/code-quality-and-refactoring.md +13 -0
- package/presets/mavis/next/rules/code-review-mr.md +13 -0
- package/presets/mavis/next/rules/design-guidance.md +5 -0
- package/presets/mavis/next/rules/feature-delivery-workflow.md +85 -0
- package/presets/mavis/next/rules/mcp-usage.md +9 -0
- package/presets/mavis/next/rules/mockup-review.md +4 -0
- package/presets/mavis/next/rules/next-app-core.md +2 -1
- package/presets/mavis/next/rules/preset-layering.md +1 -1
- package/presets/mavis/next/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/next/rules/preset-token-budget.md +10 -10
- package/presets/mavis/next/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/next/rules/product-specs.md +6 -0
- package/presets/mavis/next/rules/react-ui.md +37 -1
- package/presets/mavis/next/rules/reference-features.md +36 -0
- package/presets/mavis/next/rules/store-rtk.md +6 -5
- package/presets/mavis/next/rules/tests-e2e-structure.md +15 -0
- package/presets/mavis/next/rules/tests-unit.md +33 -0
- package/presets/mavis/next/rules/ux-design.md +4 -0
- package/presets/mavis/next/skills/debug-investigation/SKILL.md +28 -0
- package/presets/mavis/nuxt/MAVIS.md +13 -0
- package/presets/mavis/nuxt/adapter-map.json +1 -1
- package/presets/mavis/nuxt/agents/accessibility-reviewer.md +17 -0
- package/presets/mavis/nuxt/agents/api-contract-reviewer.md +19 -0
- package/presets/mavis/nuxt/agents/build-verifier.md +19 -2
- package/presets/mavis/nuxt/agents/ci-investigator.md +34 -0
- package/presets/mavis/nuxt/agents/code-reviewer.md +18 -0
- package/presets/mavis/nuxt/agents/codebase-analyzer.md +17 -0
- package/presets/mavis/nuxt/agents/debugger.md +34 -0
- package/presets/mavis/nuxt/agents/feature-developer.md +34 -0
- package/presets/mavis/nuxt/agents/migration-specialist.md +17 -0
- package/presets/mavis/nuxt/agents/mockup-reviewer.md +17 -0
- package/presets/mavis/nuxt/agents/openspec-author.md +17 -0
- package/presets/mavis/nuxt/agents/performance-auditor.md +17 -0
- package/presets/mavis/nuxt/agents/playwright-test-generator.md +19 -0
- package/presets/mavis/nuxt/agents/playwright-test-healer.md +19 -0
- package/presets/mavis/nuxt/agents/playwright-test-planner.md +19 -0
- package/presets/mavis/nuxt/agents/qa-tester.md +20 -0
- package/presets/mavis/nuxt/agents/security-reviewer.md +17 -0
- package/presets/mavis/nuxt/agents/solution-architect.md +17 -0
- package/presets/mavis/nuxt/agents/task-analyst.md +17 -0
- package/presets/mavis/nuxt/agents/task-router.md +17 -0
- package/presets/mavis/nuxt/agents/tech-writer.md +17 -0
- package/presets/mavis/nuxt/agents/unit-test-generator.md +18 -0
- package/presets/mavis/nuxt/agents/unit-test-healer.md +18 -0
- package/presets/mavis/nuxt/agents/unit-test-planner.md +18 -0
- package/presets/mavis/nuxt/commands/spec-start.md +2 -2
- package/presets/mavis/nuxt/commands/task.md +6 -6
- package/presets/mavis/nuxt/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/nuxt/rules/code-quality-and-refactoring.md +13 -0
- package/presets/mavis/nuxt/rules/code-review-mr.md +13 -0
- package/presets/mavis/nuxt/rules/design-guidance.md +5 -0
- package/presets/mavis/nuxt/rules/feature-delivery-workflow.md +82 -0
- package/presets/mavis/nuxt/rules/mcp-usage.md +9 -0
- package/presets/mavis/nuxt/rules/mockup-review.md +4 -0
- package/presets/mavis/nuxt/rules/preset-layering.md +1 -1
- package/presets/mavis/nuxt/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/nuxt/rules/preset-token-budget.md +10 -10
- package/presets/mavis/nuxt/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/nuxt/rules/product-specs.md +5 -0
- package/presets/mavis/nuxt/rules/reference-features.md +36 -0
- package/presets/mavis/nuxt/rules/tests-e2e-structure.md +16 -0
- package/presets/mavis/nuxt/rules/tests-unit.md +11 -0
- package/presets/mavis/nuxt/rules/ux-design.md +4 -0
- package/presets/mavis/nuxt/rules/vue-ui.md +7 -0
- package/presets/mavis/nuxt/skills/debug-investigation/SKILL.md +30 -0
- package/presets/mavis/php-hexagonal/MAVIS.md +13 -0
- package/presets/mavis/php-hexagonal/adapter-map.json +1 -1
- package/presets/mavis/php-hexagonal/agents/api-contract-reviewer.md +17 -0
- package/presets/mavis/php-hexagonal/agents/build-verifier.md +18 -1
- package/presets/mavis/php-hexagonal/agents/ci-investigator.md +29 -0
- package/presets/mavis/php-hexagonal/agents/code-reviewer.md +16 -0
- package/presets/mavis/php-hexagonal/agents/codebase-analyzer.md +15 -0
- package/presets/mavis/php-hexagonal/agents/debugger.md +29 -0
- package/presets/mavis/php-hexagonal/agents/feature-developer.md +29 -0
- package/presets/mavis/php-hexagonal/agents/integration-test-generator.md +17 -0
- package/presets/mavis/php-hexagonal/agents/integration-test-healer.md +17 -0
- package/presets/mavis/php-hexagonal/agents/integration-test-planner.md +17 -0
- package/presets/mavis/php-hexagonal/agents/migration-specialist.md +15 -0
- package/presets/mavis/php-hexagonal/agents/openspec-author.md +15 -0
- package/presets/mavis/php-hexagonal/agents/performance-auditor.md +15 -0
- package/presets/mavis/php-hexagonal/agents/qa-tester.md +18 -0
- package/presets/mavis/php-hexagonal/agents/security-reviewer.md +15 -0
- package/presets/mavis/php-hexagonal/agents/solution-architect.md +15 -0
- package/presets/mavis/php-hexagonal/agents/task-analyst.md +15 -0
- package/presets/mavis/php-hexagonal/agents/task-router.md +15 -0
- package/presets/mavis/php-hexagonal/agents/tech-writer.md +15 -0
- package/presets/mavis/php-hexagonal/agents/unit-test-generator.md +16 -0
- package/presets/mavis/php-hexagonal/agents/unit-test-healer.md +16 -0
- package/presets/mavis/php-hexagonal/agents/unit-test-planner.md +16 -0
- package/presets/mavis/php-hexagonal/commands/spec-start.md +2 -2
- package/presets/mavis/php-hexagonal/commands/task.md +6 -6
- package/presets/mavis/php-hexagonal/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/php-hexagonal/rules/agent-team-intake.md +4 -0
- package/presets/mavis/php-hexagonal/rules/code-quality-and-refactoring.md +15 -0
- package/presets/mavis/php-hexagonal/rules/code-review-mr.md +9 -0
- package/presets/mavis/php-hexagonal/rules/design-guidance.md +6 -0
- package/presets/mavis/php-hexagonal/rules/mcp-usage.md +6 -0
- package/presets/mavis/php-hexagonal/rules/preset-layering.md +1 -1
- package/presets/mavis/php-hexagonal/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/php-hexagonal/rules/preset-token-budget.md +10 -10
- package/presets/mavis/php-hexagonal/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/php-hexagonal/rules/product-specs.md +6 -0
- package/presets/mavis/php-hexagonal/skills/debug-investigation/SKILL.md +20 -0
- package/presets/mavis/php-laravel/MAVIS.md +13 -0
- package/presets/mavis/php-laravel/adapter-map.json +1 -1
- package/presets/mavis/php-laravel/agents/api-contract-reviewer.md +18 -0
- package/presets/mavis/php-laravel/agents/build-verifier.md +18 -1
- package/presets/mavis/php-laravel/agents/ci-investigator.md +29 -0
- package/presets/mavis/php-laravel/agents/code-reviewer.md +16 -0
- package/presets/mavis/php-laravel/agents/codebase-analyzer.md +15 -0
- package/presets/mavis/php-laravel/agents/debugger.md +29 -0
- package/presets/mavis/php-laravel/agents/feature-developer.md +29 -0
- package/presets/mavis/php-laravel/agents/integration-test-generator.md +17 -0
- package/presets/mavis/php-laravel/agents/integration-test-healer.md +17 -0
- package/presets/mavis/php-laravel/agents/integration-test-planner.md +17 -0
- package/presets/mavis/php-laravel/agents/migration-specialist.md +15 -0
- package/presets/mavis/php-laravel/agents/openspec-author.md +15 -0
- package/presets/mavis/php-laravel/agents/performance-auditor.md +15 -0
- package/presets/mavis/php-laravel/agents/qa-tester.md +18 -0
- package/presets/mavis/php-laravel/agents/security-reviewer.md +15 -0
- package/presets/mavis/php-laravel/agents/solution-architect.md +15 -0
- package/presets/mavis/php-laravel/agents/task-analyst.md +15 -0
- package/presets/mavis/php-laravel/agents/task-router.md +15 -0
- package/presets/mavis/php-laravel/agents/tech-writer.md +15 -0
- package/presets/mavis/php-laravel/agents/unit-test-generator.md +16 -0
- package/presets/mavis/php-laravel/agents/unit-test-healer.md +16 -0
- package/presets/mavis/php-laravel/agents/unit-test-planner.md +16 -0
- package/presets/mavis/php-laravel/commands/spec-start.md +2 -2
- package/presets/mavis/php-laravel/commands/task.md +6 -6
- package/presets/mavis/php-laravel/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/php-laravel/rules/agent-team-intake.md +4 -0
- package/presets/mavis/php-laravel/rules/code-quality-and-refactoring.md +15 -0
- package/presets/mavis/php-laravel/rules/code-review-mr.md +10 -0
- package/presets/mavis/php-laravel/rules/design-guidance.md +6 -0
- package/presets/mavis/php-laravel/rules/mcp-usage.md +6 -0
- package/presets/mavis/php-laravel/rules/preset-layering.md +1 -1
- package/presets/mavis/php-laravel/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/php-laravel/rules/preset-token-budget.md +10 -10
- package/presets/mavis/php-laravel/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/php-laravel/rules/product-specs.md +6 -0
- package/presets/mavis/php-laravel/skills/debug-investigation/SKILL.md +20 -0
- package/presets/mavis/svelte/MAVIS.md +13 -0
- package/presets/mavis/svelte/adapter-map.json +1 -1
- package/presets/mavis/svelte/agents/accessibility-reviewer.md +17 -0
- package/presets/mavis/svelte/agents/api-contract-reviewer.md +19 -0
- package/presets/mavis/svelte/agents/build-verifier.md +19 -2
- package/presets/mavis/svelte/agents/ci-investigator.md +34 -0
- package/presets/mavis/svelte/agents/code-reviewer.md +18 -0
- package/presets/mavis/svelte/agents/codebase-analyzer.md +17 -0
- package/presets/mavis/svelte/agents/debugger.md +34 -0
- package/presets/mavis/svelte/agents/feature-developer.md +34 -0
- package/presets/mavis/svelte/agents/migration-specialist.md +17 -0
- package/presets/mavis/svelte/agents/mockup-reviewer.md +17 -0
- package/presets/mavis/svelte/agents/openspec-author.md +17 -0
- package/presets/mavis/svelte/agents/performance-auditor.md +17 -0
- package/presets/mavis/svelte/agents/playwright-test-generator.md +19 -0
- package/presets/mavis/svelte/agents/playwright-test-healer.md +19 -0
- package/presets/mavis/svelte/agents/playwright-test-planner.md +19 -0
- package/presets/mavis/svelte/agents/qa-tester.md +20 -0
- package/presets/mavis/svelte/agents/security-reviewer.md +17 -0
- package/presets/mavis/svelte/agents/solution-architect.md +17 -0
- package/presets/mavis/svelte/agents/task-analyst.md +17 -0
- package/presets/mavis/svelte/agents/task-router.md +17 -0
- package/presets/mavis/svelte/agents/tech-writer.md +17 -0
- package/presets/mavis/svelte/agents/unit-test-generator.md +18 -0
- package/presets/mavis/svelte/agents/unit-test-healer.md +18 -0
- package/presets/mavis/svelte/agents/unit-test-planner.md +18 -0
- package/presets/mavis/svelte/commands/spec-start.md +2 -2
- package/presets/mavis/svelte/commands/task.md +6 -6
- package/presets/mavis/svelte/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/svelte/rules/code-quality-and-refactoring.md +13 -0
- package/presets/mavis/svelte/rules/code-review-mr.md +13 -0
- package/presets/mavis/svelte/rules/design-guidance.md +5 -0
- package/presets/mavis/svelte/rules/feature-delivery-workflow.md +54 -0
- package/presets/mavis/svelte/rules/mcp-usage.md +9 -0
- package/presets/mavis/svelte/rules/mockup-review.md +4 -0
- package/presets/mavis/svelte/rules/preset-layering.md +1 -1
- package/presets/mavis/svelte/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/svelte/rules/preset-token-budget.md +10 -10
- package/presets/mavis/svelte/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/svelte/rules/product-specs.md +5 -0
- package/presets/mavis/svelte/rules/reference-features.md +37 -0
- package/presets/mavis/svelte/rules/svelte-ui.md +7 -0
- package/presets/mavis/svelte/rules/tests-e2e-structure.md +16 -0
- package/presets/mavis/svelte/rules/tests-unit.md +11 -0
- package/presets/mavis/svelte/rules/ux-design.md +4 -0
- package/presets/mavis/svelte/skills/debug-investigation/SKILL.md +30 -0
- package/presets/opencode/android-kotlin/OPENCODE.md +15 -1
- package/presets/opencode/android-kotlin/adapter-map.json +2 -2
- package/presets/opencode/android-kotlin/agents/accessibility-reviewer.md +15 -0
- package/presets/opencode/android-kotlin/agents/api-contract-reviewer.md +16 -0
- package/presets/opencode/android-kotlin/agents/build-verifier.md +19 -2
- package/presets/opencode/android-kotlin/agents/ci-investigator.md +25 -0
- package/presets/opencode/android-kotlin/agents/code-reviewer.md +16 -0
- package/presets/opencode/android-kotlin/agents/codebase-analyzer.md +15 -0
- package/presets/opencode/android-kotlin/agents/debugger.md +25 -0
- package/presets/opencode/android-kotlin/agents/feature-developer.md +25 -0
- package/presets/opencode/android-kotlin/agents/instrumentation-test-generator.md +16 -0
- package/presets/opencode/android-kotlin/agents/instrumentation-test-healer.md +16 -0
- package/presets/opencode/android-kotlin/agents/instrumentation-test-planner.md +16 -0
- package/presets/opencode/android-kotlin/agents/migration-specialist.md +15 -0
- package/presets/opencode/android-kotlin/agents/mockup-reviewer.md +15 -0
- package/presets/opencode/android-kotlin/agents/openspec-author.md +15 -0
- package/presets/opencode/android-kotlin/agents/performance-auditor.md +15 -0
- package/presets/opencode/android-kotlin/agents/qa-tester.md +17 -0
- package/presets/opencode/android-kotlin/agents/security-reviewer.md +15 -0
- package/presets/opencode/android-kotlin/agents/solution-architect.md +15 -0
- package/presets/opencode/android-kotlin/agents/task-analyst.md +15 -0
- package/presets/opencode/android-kotlin/agents/task-router.md +15 -0
- package/presets/opencode/android-kotlin/agents/tech-writer.md +15 -0
- package/presets/opencode/android-kotlin/agents/unit-test-generator.md +16 -0
- package/presets/opencode/android-kotlin/agents/unit-test-healer.md +16 -0
- package/presets/opencode/android-kotlin/agents/unit-test-planner.md +16 -0
- package/presets/opencode/android-kotlin/commands/spec-start.md +1 -1
- package/presets/opencode/android-kotlin/commands/task-continue.md +1 -1
- package/presets/opencode/android-kotlin/commands/task.md +1 -1
- package/presets/opencode/android-kotlin/commands/technical-retro.md +1 -1
- package/presets/opencode/android-kotlin/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/android-kotlin/opencode.json +14 -0
- package/presets/opencode/android-kotlin/rules/README.md +7 -2
- package/presets/opencode/android-kotlin/rules/code-quality-and-refactoring.md +14 -0
- package/presets/opencode/android-kotlin/rules/code-review-mr.md +39 -0
- package/presets/opencode/android-kotlin/rules/compose-ui.md +2 -0
- package/presets/opencode/android-kotlin/rules/design-guidance.md +5 -0
- package/presets/opencode/android-kotlin/rules/mcp-usage.md +8 -0
- package/presets/opencode/android-kotlin/rules/mockup-review.md +4 -0
- package/presets/opencode/android-kotlin/rules/preset-layering.md +1 -1
- package/presets/opencode/android-kotlin/rules/preset-no-cross-stack-leakage.md +4 -0
- package/presets/opencode/android-kotlin/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/android-kotlin/rules/preset-token-budget.md +10 -10
- package/presets/opencode/android-kotlin/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/android-kotlin/rules/product-specs.md +5 -0
- package/presets/opencode/android-kotlin/rules/ux-design.md +4 -0
- package/presets/opencode/android-kotlin/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/instrumentation-ui-e2e/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/mockup-review/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/ux-design/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/write-adr/SKILL.md +1 -1
- package/presets/opencode/go/OPENCODE.md +15 -1
- package/presets/opencode/go/adapter-map.json +2 -2
- package/presets/opencode/go/agents/api-contract-reviewer.md +17 -0
- package/presets/opencode/go/agents/build-verifier.md +18 -1
- package/presets/opencode/go/agents/ci-investigator.md +29 -0
- package/presets/opencode/go/agents/code-reviewer.md +16 -0
- package/presets/opencode/go/agents/codebase-analyzer.md +15 -0
- package/presets/opencode/go/agents/debugger.md +29 -0
- package/presets/opencode/go/agents/feature-developer.md +29 -0
- package/presets/opencode/go/agents/integration-test-generator.md +17 -0
- package/presets/opencode/go/agents/integration-test-healer.md +17 -0
- package/presets/opencode/go/agents/integration-test-planner.md +17 -0
- package/presets/opencode/go/agents/migration-specialist.md +15 -0
- package/presets/opencode/go/agents/openspec-author.md +15 -0
- package/presets/opencode/go/agents/performance-auditor.md +15 -0
- package/presets/opencode/go/agents/qa-tester.md +18 -0
- package/presets/opencode/go/agents/security-reviewer.md +15 -0
- package/presets/opencode/go/agents/solution-architect.md +15 -0
- package/presets/opencode/go/agents/task-analyst.md +15 -0
- package/presets/opencode/go/agents/task-router.md +15 -0
- package/presets/opencode/go/agents/tech-writer.md +15 -0
- package/presets/opencode/go/agents/unit-test-generator.md +16 -0
- package/presets/opencode/go/agents/unit-test-healer.md +16 -0
- package/presets/opencode/go/agents/unit-test-planner.md +16 -0
- package/presets/opencode/go/commands/spec-start.md +1 -1
- package/presets/opencode/go/commands/task-continue.md +1 -1
- package/presets/opencode/go/commands/task.md +1 -1
- package/presets/opencode/go/commands/technical-retro.md +1 -1
- package/presets/opencode/go/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/go/opencode.json +14 -0
- package/presets/opencode/go/rules/README.md +7 -2
- package/presets/opencode/go/rules/agent-team-intake.md +4 -0
- package/presets/opencode/go/rules/code-quality-and-refactoring.md +15 -0
- package/presets/opencode/go/rules/code-review-mr.md +7 -0
- package/presets/opencode/go/rules/design-guidance.md +5 -0
- package/presets/opencode/go/rules/mcp-usage.md +7 -0
- package/presets/opencode/go/rules/preset-layering.md +1 -1
- package/presets/opencode/go/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/go/rules/preset-token-budget.md +10 -10
- package/presets/opencode/go/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/go/rules/product-specs.md +6 -0
- package/presets/opencode/go/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/go/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/go/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/go/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/go/skills/integration-testing/SKILL.md +1 -1
- package/presets/opencode/go/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/go/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/go/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/go/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/go/skills/write-adr/SKILL.md +1 -1
- package/presets/opencode/ios-swift/OPENCODE.md +15 -1
- package/presets/opencode/ios-swift/adapter-map.json +2 -2
- package/presets/opencode/ios-swift/agents/accessibility-reviewer.md +15 -0
- package/presets/opencode/ios-swift/agents/api-contract-reviewer.md +16 -0
- package/presets/opencode/ios-swift/agents/build-verifier.md +20 -3
- package/presets/opencode/ios-swift/agents/ci-investigator.md +24 -0
- package/presets/opencode/ios-swift/agents/code-reviewer.md +16 -0
- package/presets/opencode/ios-swift/agents/codebase-analyzer.md +15 -0
- package/presets/opencode/ios-swift/agents/debugger.md +24 -0
- package/presets/opencode/ios-swift/agents/feature-developer.md +24 -0
- package/presets/opencode/ios-swift/agents/migration-specialist.md +15 -0
- package/presets/opencode/ios-swift/agents/mockup-reviewer.md +15 -0
- package/presets/opencode/ios-swift/agents/openspec-author.md +15 -0
- package/presets/opencode/ios-swift/agents/performance-auditor.md +15 -0
- package/presets/opencode/ios-swift/agents/qa-tester.md +17 -0
- package/presets/opencode/ios-swift/agents/security-reviewer.md +15 -0
- package/presets/opencode/ios-swift/agents/solution-architect.md +15 -0
- package/presets/opencode/ios-swift/agents/task-analyst.md +15 -0
- package/presets/opencode/ios-swift/agents/task-router.md +15 -0
- package/presets/opencode/ios-swift/agents/tech-writer.md +15 -0
- package/presets/opencode/ios-swift/agents/unit-test-generator.md +16 -0
- package/presets/opencode/ios-swift/agents/unit-test-healer.md +16 -0
- package/presets/opencode/ios-swift/agents/unit-test-planner.md +16 -0
- package/presets/opencode/ios-swift/agents/xcuitest-test-generator.md +16 -0
- package/presets/opencode/ios-swift/agents/xcuitest-test-healer.md +16 -0
- package/presets/opencode/ios-swift/agents/xcuitest-test-planner.md +16 -0
- package/presets/opencode/ios-swift/commands/spec-start.md +1 -1
- package/presets/opencode/ios-swift/commands/task-continue.md +1 -1
- package/presets/opencode/ios-swift/commands/task.md +1 -1
- package/presets/opencode/ios-swift/commands/technical-retro.md +1 -1
- package/presets/opencode/ios-swift/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/ios-swift/opencode.json +14 -0
- package/presets/opencode/ios-swift/rules/README.md +7 -2
- package/presets/opencode/ios-swift/rules/code-quality-and-refactoring.md +14 -0
- package/presets/opencode/ios-swift/rules/code-review-mr.md +39 -0
- package/presets/opencode/ios-swift/rules/design-guidance.md +5 -0
- package/presets/opencode/ios-swift/rules/feature-delivery-workflow.md +66 -0
- package/presets/opencode/ios-swift/rules/mcp-usage.md +8 -0
- package/presets/opencode/ios-swift/rules/mockup-review.md +4 -0
- package/presets/opencode/ios-swift/rules/preset-layering.md +1 -1
- package/presets/opencode/ios-swift/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/ios-swift/rules/preset-token-budget.md +10 -10
- package/presets/opencode/ios-swift/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/ios-swift/rules/product-specs.md +5 -0
- package/presets/opencode/ios-swift/rules/reference-features.md +49 -0
- package/presets/opencode/ios-swift/rules/swiftui-ui.md +7 -0
- package/presets/opencode/ios-swift/rules/ux-design.md +4 -0
- package/presets/opencode/ios-swift/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/mockup-review/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/ux-design/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/write-adr/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/xcuitest-e2e/SKILL.md +1 -1
- package/presets/opencode/java/OPENCODE.md +15 -1
- package/presets/opencode/java/adapter-map.json +2 -2
- package/presets/opencode/java/agents/api-contract-reviewer.md +17 -0
- package/presets/opencode/java/agents/build-verifier.md +18 -1
- package/presets/opencode/java/agents/ci-investigator.md +29 -0
- package/presets/opencode/java/agents/code-reviewer.md +16 -0
- package/presets/opencode/java/agents/codebase-analyzer.md +15 -0
- package/presets/opencode/java/agents/debugger.md +29 -0
- package/presets/opencode/java/agents/feature-developer.md +29 -0
- package/presets/opencode/java/agents/integration-test-generator.md +17 -0
- package/presets/opencode/java/agents/integration-test-healer.md +17 -0
- package/presets/opencode/java/agents/integration-test-planner.md +17 -0
- package/presets/opencode/java/agents/migration-specialist.md +15 -0
- package/presets/opencode/java/agents/openspec-author.md +15 -0
- package/presets/opencode/java/agents/performance-auditor.md +15 -0
- package/presets/opencode/java/agents/qa-tester.md +18 -0
- package/presets/opencode/java/agents/security-reviewer.md +15 -0
- package/presets/opencode/java/agents/solution-architect.md +15 -0
- package/presets/opencode/java/agents/task-analyst.md +15 -0
- package/presets/opencode/java/agents/task-router.md +15 -0
- package/presets/opencode/java/agents/tech-writer.md +15 -0
- package/presets/opencode/java/agents/unit-test-generator.md +16 -0
- package/presets/opencode/java/agents/unit-test-healer.md +16 -0
- package/presets/opencode/java/agents/unit-test-planner.md +16 -0
- package/presets/opencode/java/commands/spec-start.md +1 -1
- package/presets/opencode/java/commands/task-continue.md +1 -1
- package/presets/opencode/java/commands/task.md +1 -1
- package/presets/opencode/java/commands/technical-retro.md +1 -1
- package/presets/opencode/java/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/java/opencode.json +14 -0
- package/presets/opencode/java/rules/README.md +7 -2
- package/presets/opencode/java/rules/agent-team-intake.md +4 -0
- package/presets/opencode/java/rules/code-quality-and-refactoring.md +15 -0
- package/presets/opencode/java/rules/code-review-mr.md +9 -0
- package/presets/opencode/java/rules/design-guidance.md +6 -0
- package/presets/opencode/java/rules/mcp-usage.md +6 -0
- package/presets/opencode/java/rules/preset-layering.md +1 -1
- package/presets/opencode/java/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/java/rules/preset-token-budget.md +10 -10
- package/presets/opencode/java/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/java/rules/product-specs.md +6 -0
- package/presets/opencode/java/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/java/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/java/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/java/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/java/skills/integration-testing/SKILL.md +1 -1
- package/presets/opencode/java/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/java/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/java/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/java/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/java/skills/write-adr/SKILL.md +1 -1
- package/presets/opencode/mcp-ts/OPENCODE.md +15 -1
- package/presets/opencode/mcp-ts/adapter-map.json +2 -2
- package/presets/opencode/mcp-ts/agents/build-verifier.md +18 -1
- package/presets/opencode/mcp-ts/agents/feature-developer.md +22 -0
- package/presets/opencode/mcp-ts/agents/security-reviewer.md +15 -0
- package/presets/opencode/mcp-ts/agents/solution-architect.md +15 -0
- package/presets/opencode/mcp-ts/agents/task-analyst.md +15 -0
- package/presets/opencode/mcp-ts/agents/task-router.md +15 -0
- package/presets/opencode/mcp-ts/commands/spec-start.md +1 -1
- package/presets/opencode/mcp-ts/commands/task-continue.md +1 -1
- package/presets/opencode/mcp-ts/commands/task.md +1 -1
- package/presets/opencode/mcp-ts/commands/technical-retro.md +1 -1
- package/presets/opencode/mcp-ts/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/mcp-ts/opencode.json +14 -0
- package/presets/opencode/mcp-ts/rules/README.md +7 -2
- package/presets/opencode/mcp-ts/rules/agent-team-intake.md +5 -0
- package/presets/opencode/mcp-ts/rules/anti-sycophancy-discipline.md +4 -0
- package/presets/opencode/mcp-ts/rules/code-quality-and-refactoring.md +15 -0
- package/presets/opencode/mcp-ts/rules/code-review-mr.md +6 -0
- package/presets/opencode/mcp-ts/rules/design-guidance.md +5 -0
- package/presets/opencode/mcp-ts/rules/mcp-usage.md +7 -0
- package/presets/opencode/mcp-ts/rules/preset-layering.md +1 -1
- package/presets/opencode/mcp-ts/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/mcp-ts/rules/preset-token-budget.md +10 -10
- package/presets/opencode/mcp-ts/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/mcp-ts/rules/product-specs.md +6 -0
- package/presets/opencode/mcp-ts/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/mcp-ts/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/mcp-ts/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/mcp-ts/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/mcp-ts/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/mcp-ts/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/next/OPENCODE.md +15 -1
- package/presets/opencode/next/adapter-map.json +58 -2
- package/presets/opencode/next/agents/accessibility-reviewer.md +17 -0
- package/presets/opencode/next/agents/api-contract-reviewer.md +19 -0
- package/presets/opencode/next/agents/build-verifier.md +19 -2
- package/presets/opencode/next/agents/ci-investigator.md +34 -0
- package/presets/opencode/next/agents/code-reviewer.md +18 -0
- package/presets/opencode/next/agents/codebase-analyzer.md +17 -0
- package/presets/opencode/next/agents/debugger.md +34 -0
- package/presets/opencode/next/agents/feature-developer.md +34 -0
- package/presets/opencode/next/agents/migration-specialist.md +17 -0
- package/presets/opencode/next/agents/mockup-reviewer.md +17 -0
- package/presets/opencode/next/agents/openspec-author.md +17 -0
- package/presets/opencode/next/agents/performance-auditor.md +17 -0
- package/presets/opencode/next/agents/playwright-test-generator.md +19 -0
- package/presets/opencode/next/agents/playwright-test-healer.md +19 -0
- package/presets/opencode/next/agents/playwright-test-planner.md +19 -0
- package/presets/opencode/next/agents/qa-tester.md +20 -0
- package/presets/opencode/next/agents/security-reviewer.md +17 -0
- package/presets/opencode/next/agents/solution-architect.md +17 -0
- package/presets/opencode/next/agents/task-analyst.md +17 -0
- package/presets/opencode/next/agents/task-router.md +17 -0
- package/presets/opencode/next/agents/tech-writer.md +17 -0
- package/presets/opencode/next/agents/unit-test-generator.md +18 -0
- package/presets/opencode/next/agents/unit-test-healer.md +18 -0
- package/presets/opencode/next/agents/unit-test-planner.md +18 -0
- package/presets/opencode/next/ai-local/rules-library/agent-artifacts-no-local-paths.md +38 -0
- package/presets/opencode/next/ai-local/rules-library/commit-hygiene.md +17 -0
- package/presets/opencode/next/ai-local/rules-library/mcp-required-for-ui-layout.md +41 -0
- package/presets/opencode/next/ai-local/rules-library/no-test-driven-behavior-change.md +14 -0
- package/presets/opencode/next/ai-local/rules-library/pre-pr-checklist.md +16 -0
- package/presets/opencode/next/ai-local/rules-library/router-pages.md +23 -0
- package/presets/opencode/next/ai-local/rules-library/single-source-copy-constants.md +16 -0
- package/presets/opencode/next/commands/spec-start.md +1 -1
- package/presets/opencode/next/commands/task-continue.md +1 -1
- package/presets/opencode/next/commands/task.md +1 -1
- package/presets/opencode/next/commands/technical-retro.md +1 -1
- package/presets/opencode/next/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/next/opencode.json +19 -0
- package/presets/opencode/next/rules/README.md +7 -2
- package/presets/opencode/next/rules/api-services.md +6 -4
- package/presets/opencode/next/rules/code-quality-and-refactoring.md +13 -0
- package/presets/opencode/next/rules/code-review-mr.md +13 -0
- package/presets/opencode/next/rules/design-guidance.md +5 -0
- package/presets/opencode/next/rules/feature-delivery-workflow.md +85 -0
- package/presets/opencode/next/rules/mcp-usage.md +9 -0
- package/presets/opencode/next/rules/mockup-review.md +4 -0
- package/presets/opencode/next/rules/next-app-core.md +2 -1
- package/presets/opencode/next/rules/preset-layering.md +1 -1
- package/presets/opencode/next/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/next/rules/preset-token-budget.md +10 -10
- package/presets/opencode/next/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/next/rules/product-specs.md +6 -0
- package/presets/opencode/next/rules/react-ui.md +37 -1
- package/presets/opencode/next/rules/reference-features.md +36 -0
- package/presets/opencode/next/rules/store-rtk.md +6 -5
- package/presets/opencode/next/rules/tests-e2e-structure.md +15 -0
- package/presets/opencode/next/rules/tests-unit.md +33 -0
- package/presets/opencode/next/rules/ux-design.md +4 -0
- package/presets/opencode/next/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/next/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/next/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/next/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/next/skills/mockup-review/SKILL.md +1 -1
- package/presets/opencode/next/skills/playwright-e2e/SKILL.md +1 -1
- package/presets/opencode/next/skills/react-performance/SKILL.md +1 -1
- package/presets/opencode/next/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/next/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/next/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/next/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/next/skills/ux-design/SKILL.md +1 -1
- package/presets/opencode/next/skills/write-adr/SKILL.md +1 -1
- package/presets/opencode/nuxt/OPENCODE.md +15 -1
- package/presets/opencode/nuxt/adapter-map.json +2 -2
- package/presets/opencode/nuxt/agents/accessibility-reviewer.md +17 -0
- package/presets/opencode/nuxt/agents/api-contract-reviewer.md +19 -0
- package/presets/opencode/nuxt/agents/build-verifier.md +19 -2
- package/presets/opencode/nuxt/agents/ci-investigator.md +34 -0
- package/presets/opencode/nuxt/agents/code-reviewer.md +18 -0
- package/presets/opencode/nuxt/agents/codebase-analyzer.md +17 -0
- package/presets/opencode/nuxt/agents/debugger.md +34 -0
- package/presets/opencode/nuxt/agents/feature-developer.md +34 -0
- package/presets/opencode/nuxt/agents/migration-specialist.md +17 -0
- package/presets/opencode/nuxt/agents/mockup-reviewer.md +17 -0
- package/presets/opencode/nuxt/agents/openspec-author.md +17 -0
- package/presets/opencode/nuxt/agents/performance-auditor.md +17 -0
- package/presets/opencode/nuxt/agents/playwright-test-generator.md +19 -0
- package/presets/opencode/nuxt/agents/playwright-test-healer.md +19 -0
- package/presets/opencode/nuxt/agents/playwright-test-planner.md +19 -0
- package/presets/opencode/nuxt/agents/qa-tester.md +20 -0
- package/presets/opencode/nuxt/agents/security-reviewer.md +17 -0
- package/presets/opencode/nuxt/agents/solution-architect.md +17 -0
- package/presets/opencode/nuxt/agents/task-analyst.md +17 -0
- package/presets/opencode/nuxt/agents/task-router.md +17 -0
- package/presets/opencode/nuxt/agents/tech-writer.md +17 -0
- package/presets/opencode/nuxt/agents/unit-test-generator.md +18 -0
- package/presets/opencode/nuxt/agents/unit-test-healer.md +18 -0
- package/presets/opencode/nuxt/agents/unit-test-planner.md +18 -0
- package/presets/opencode/nuxt/commands/spec-start.md +1 -1
- package/presets/opencode/nuxt/commands/task-continue.md +1 -1
- package/presets/opencode/nuxt/commands/task.md +1 -1
- package/presets/opencode/nuxt/commands/technical-retro.md +1 -1
- package/presets/opencode/nuxt/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/nuxt/opencode.json +19 -0
- package/presets/opencode/nuxt/rules/README.md +7 -2
- package/presets/opencode/nuxt/rules/code-quality-and-refactoring.md +13 -0
- package/presets/opencode/nuxt/rules/code-review-mr.md +13 -0
- package/presets/opencode/nuxt/rules/design-guidance.md +5 -0
- package/presets/opencode/nuxt/rules/feature-delivery-workflow.md +82 -0
- package/presets/opencode/nuxt/rules/mcp-usage.md +9 -0
- package/presets/opencode/nuxt/rules/mockup-review.md +4 -0
- package/presets/opencode/nuxt/rules/preset-layering.md +1 -1
- package/presets/opencode/nuxt/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/nuxt/rules/preset-token-budget.md +10 -10
- package/presets/opencode/nuxt/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/nuxt/rules/product-specs.md +5 -0
- package/presets/opencode/nuxt/rules/reference-features.md +36 -0
- package/presets/opencode/nuxt/rules/tests-e2e-structure.md +16 -0
- package/presets/opencode/nuxt/rules/tests-unit.md +11 -0
- package/presets/opencode/nuxt/rules/ux-design.md +4 -0
- package/presets/opencode/nuxt/rules/vue-ui.md +7 -0
- package/presets/opencode/nuxt/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/mockup-review/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/playwright-e2e/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/ux-design/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/vue-performance/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/write-adr/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/OPENCODE.md +15 -1
- package/presets/opencode/php-hexagonal/adapter-map.json +2 -2
- package/presets/opencode/php-hexagonal/agents/api-contract-reviewer.md +17 -0
- package/presets/opencode/php-hexagonal/agents/build-verifier.md +18 -1
- package/presets/opencode/php-hexagonal/agents/ci-investigator.md +29 -0
- package/presets/opencode/php-hexagonal/agents/code-reviewer.md +16 -0
- package/presets/opencode/php-hexagonal/agents/codebase-analyzer.md +15 -0
- package/presets/opencode/php-hexagonal/agents/debugger.md +29 -0
- package/presets/opencode/php-hexagonal/agents/feature-developer.md +29 -0
- package/presets/opencode/php-hexagonal/agents/integration-test-generator.md +17 -0
- package/presets/opencode/php-hexagonal/agents/integration-test-healer.md +17 -0
- package/presets/opencode/php-hexagonal/agents/integration-test-planner.md +17 -0
- package/presets/opencode/php-hexagonal/agents/migration-specialist.md +15 -0
- package/presets/opencode/php-hexagonal/agents/openspec-author.md +15 -0
- package/presets/opencode/php-hexagonal/agents/performance-auditor.md +15 -0
- package/presets/opencode/php-hexagonal/agents/qa-tester.md +18 -0
- package/presets/opencode/php-hexagonal/agents/security-reviewer.md +15 -0
- package/presets/opencode/php-hexagonal/agents/solution-architect.md +15 -0
- package/presets/opencode/php-hexagonal/agents/task-analyst.md +15 -0
- package/presets/opencode/php-hexagonal/agents/task-router.md +15 -0
- package/presets/opencode/php-hexagonal/agents/tech-writer.md +15 -0
- package/presets/opencode/php-hexagonal/agents/unit-test-generator.md +16 -0
- package/presets/opencode/php-hexagonal/agents/unit-test-healer.md +16 -0
- package/presets/opencode/php-hexagonal/agents/unit-test-planner.md +16 -0
- package/presets/opencode/php-hexagonal/commands/spec-start.md +1 -1
- package/presets/opencode/php-hexagonal/commands/task-continue.md +1 -1
- package/presets/opencode/php-hexagonal/commands/task.md +1 -1
- package/presets/opencode/php-hexagonal/commands/technical-retro.md +1 -1
- package/presets/opencode/php-hexagonal/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/php-hexagonal/opencode.json +14 -0
- package/presets/opencode/php-hexagonal/rules/README.md +7 -2
- package/presets/opencode/php-hexagonal/rules/agent-team-intake.md +4 -0
- package/presets/opencode/php-hexagonal/rules/code-quality-and-refactoring.md +15 -0
- package/presets/opencode/php-hexagonal/rules/code-review-mr.md +9 -0
- package/presets/opencode/php-hexagonal/rules/design-guidance.md +6 -0
- package/presets/opencode/php-hexagonal/rules/mcp-usage.md +6 -0
- package/presets/opencode/php-hexagonal/rules/preset-layering.md +1 -1
- package/presets/opencode/php-hexagonal/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/php-hexagonal/rules/preset-token-budget.md +10 -10
- package/presets/opencode/php-hexagonal/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/php-hexagonal/rules/product-specs.md +6 -0
- package/presets/opencode/php-hexagonal/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/integration-testing/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/write-adr/SKILL.md +1 -1
- package/presets/opencode/php-laravel/OPENCODE.md +15 -1
- package/presets/opencode/php-laravel/adapter-map.json +2 -2
- package/presets/opencode/php-laravel/agents/api-contract-reviewer.md +18 -0
- package/presets/opencode/php-laravel/agents/build-verifier.md +18 -1
- package/presets/opencode/php-laravel/agents/ci-investigator.md +29 -0
- package/presets/opencode/php-laravel/agents/code-reviewer.md +16 -0
- package/presets/opencode/php-laravel/agents/codebase-analyzer.md +15 -0
- package/presets/opencode/php-laravel/agents/debugger.md +29 -0
- package/presets/opencode/php-laravel/agents/feature-developer.md +29 -0
- package/presets/opencode/php-laravel/agents/integration-test-generator.md +17 -0
- package/presets/opencode/php-laravel/agents/integration-test-healer.md +17 -0
- package/presets/opencode/php-laravel/agents/integration-test-planner.md +17 -0
- package/presets/opencode/php-laravel/agents/migration-specialist.md +15 -0
- package/presets/opencode/php-laravel/agents/openspec-author.md +15 -0
- package/presets/opencode/php-laravel/agents/performance-auditor.md +15 -0
- package/presets/opencode/php-laravel/agents/qa-tester.md +18 -0
- package/presets/opencode/php-laravel/agents/security-reviewer.md +15 -0
- package/presets/opencode/php-laravel/agents/solution-architect.md +15 -0
- package/presets/opencode/php-laravel/agents/task-analyst.md +15 -0
- package/presets/opencode/php-laravel/agents/task-router.md +15 -0
- package/presets/opencode/php-laravel/agents/tech-writer.md +15 -0
- package/presets/opencode/php-laravel/agents/unit-test-generator.md +16 -0
- package/presets/opencode/php-laravel/agents/unit-test-healer.md +16 -0
- package/presets/opencode/php-laravel/agents/unit-test-planner.md +16 -0
- package/presets/opencode/php-laravel/commands/spec-start.md +1 -1
- package/presets/opencode/php-laravel/commands/task-continue.md +1 -1
- package/presets/opencode/php-laravel/commands/task.md +1 -1
- package/presets/opencode/php-laravel/commands/technical-retro.md +1 -1
- package/presets/opencode/php-laravel/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/php-laravel/opencode.json +14 -0
- package/presets/opencode/php-laravel/rules/README.md +7 -2
- package/presets/opencode/php-laravel/rules/agent-team-intake.md +4 -0
- package/presets/opencode/php-laravel/rules/code-quality-and-refactoring.md +15 -0
- package/presets/opencode/php-laravel/rules/code-review-mr.md +10 -0
- package/presets/opencode/php-laravel/rules/design-guidance.md +6 -0
- package/presets/opencode/php-laravel/rules/mcp-usage.md +6 -0
- package/presets/opencode/php-laravel/rules/preset-layering.md +1 -1
- package/presets/opencode/php-laravel/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/php-laravel/rules/preset-token-budget.md +10 -10
- package/presets/opencode/php-laravel/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/php-laravel/rules/product-specs.md +6 -0
- package/presets/opencode/php-laravel/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/integration-testing/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/write-adr/SKILL.md +1 -1
- package/presets/opencode/svelte/OPENCODE.md +15 -1
- package/presets/opencode/svelte/adapter-map.json +2 -2
- package/presets/opencode/svelte/agents/accessibility-reviewer.md +17 -0
- package/presets/opencode/svelte/agents/api-contract-reviewer.md +19 -0
- package/presets/opencode/svelte/agents/build-verifier.md +19 -2
- package/presets/opencode/svelte/agents/ci-investigator.md +34 -0
- package/presets/opencode/svelte/agents/code-reviewer.md +18 -0
- package/presets/opencode/svelte/agents/codebase-analyzer.md +17 -0
- package/presets/opencode/svelte/agents/debugger.md +34 -0
- package/presets/opencode/svelte/agents/feature-developer.md +34 -0
- package/presets/opencode/svelte/agents/migration-specialist.md +17 -0
- package/presets/opencode/svelte/agents/mockup-reviewer.md +17 -0
- package/presets/opencode/svelte/agents/openspec-author.md +17 -0
- package/presets/opencode/svelte/agents/performance-auditor.md +17 -0
- package/presets/opencode/svelte/agents/playwright-test-generator.md +19 -0
- package/presets/opencode/svelte/agents/playwright-test-healer.md +19 -0
- package/presets/opencode/svelte/agents/playwright-test-planner.md +19 -0
- package/presets/opencode/svelte/agents/qa-tester.md +20 -0
- package/presets/opencode/svelte/agents/security-reviewer.md +17 -0
- package/presets/opencode/svelte/agents/solution-architect.md +17 -0
- package/presets/opencode/svelte/agents/task-analyst.md +17 -0
- package/presets/opencode/svelte/agents/task-router.md +17 -0
- package/presets/opencode/svelte/agents/tech-writer.md +17 -0
- package/presets/opencode/svelte/agents/unit-test-generator.md +18 -0
- package/presets/opencode/svelte/agents/unit-test-healer.md +18 -0
- package/presets/opencode/svelte/agents/unit-test-planner.md +18 -0
- package/presets/opencode/svelte/commands/spec-start.md +1 -1
- package/presets/opencode/svelte/commands/task-continue.md +1 -1
- package/presets/opencode/svelte/commands/task.md +1 -1
- package/presets/opencode/svelte/commands/technical-retro.md +1 -1
- package/presets/opencode/svelte/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/svelte/opencode.json +19 -0
- package/presets/opencode/svelte/rules/README.md +7 -2
- package/presets/opencode/svelte/rules/code-quality-and-refactoring.md +13 -0
- package/presets/opencode/svelte/rules/code-review-mr.md +13 -0
- package/presets/opencode/svelte/rules/design-guidance.md +5 -0
- package/presets/opencode/svelte/rules/feature-delivery-workflow.md +54 -0
- package/presets/opencode/svelte/rules/mcp-usage.md +9 -0
- package/presets/opencode/svelte/rules/mockup-review.md +4 -0
- package/presets/opencode/svelte/rules/preset-layering.md +1 -1
- package/presets/opencode/svelte/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/svelte/rules/preset-token-budget.md +10 -10
- package/presets/opencode/svelte/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/svelte/rules/product-specs.md +5 -0
- package/presets/opencode/svelte/rules/reference-features.md +37 -0
- package/presets/opencode/svelte/rules/svelte-ui.md +7 -0
- package/presets/opencode/svelte/rules/tests-e2e-structure.md +16 -0
- package/presets/opencode/svelte/rules/tests-unit.md +11 -0
- package/presets/opencode/svelte/rules/ux-design.md +4 -0
- package/presets/opencode/svelte/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/mockup-review/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/playwright-e2e/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/svelte-performance/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/ux-design/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/write-adr/SKILL.md +1 -1
- package/scripts/capture-cli-golden.mjs +8 -5
- package/scripts/check-claude-agent-blocks.mjs +82 -0
- package/scripts/check-frontmatter.mjs +83 -0
- package/scripts/check-generated-drift.mjs +106 -0
- package/scripts/check-mavis-token-budget.mjs +1 -1
- package/scripts/check-opencode-token-budget.mjs +1 -1
- package/scripts/check-preset-structure.sh +36 -0
- package/scripts/check-preset-token-budget.sh +16 -17
- package/scripts/check-shared-core-drift.sh +10 -5
- package/scripts/close-agent-task-human-gate.mjs +6 -4
- package/scripts/fixtures/cli-golden/claude/next.json +49 -42
- package/scripts/fixtures/cli-golden/cursor/next.json +24 -17
- package/scripts/fixtures/cli-golden/mavis/android-kotlin.json +42 -42
- package/scripts/fixtures/cli-golden/mavis/go.json +37 -37
- package/scripts/fixtures/cli-golden/mavis/ios-swift.json +43 -43
- package/scripts/fixtures/cli-golden/mavis/java.json +37 -37
- package/scripts/fixtures/cli-golden/mavis/mcp-ts.json +22 -22
- package/scripts/fixtures/cli-golden/mavis/next.json +55 -48
- package/scripts/fixtures/cli-golden/mavis/nuxt.json +45 -45
- package/scripts/fixtures/cli-golden/mavis/php-hexagonal.json +37 -37
- package/scripts/fixtures/cli-golden/mavis/php-laravel.json +37 -37
- package/scripts/fixtures/cli-golden/mavis/svelte.json +45 -45
- package/scripts/fixtures/cli-golden/opencode/android-kotlin.json +57 -57
- package/scripts/fixtures/cli-golden/opencode/go.json +50 -50
- package/scripts/fixtures/cli-golden/opencode/ios-swift.json +58 -58
- package/scripts/fixtures/cli-golden/opencode/java.json +50 -50
- package/scripts/fixtures/cli-golden/opencode/mcp-ts.json +31 -31
- package/scripts/fixtures/cli-golden/opencode/next.json +71 -64
- package/scripts/fixtures/cli-golden/opencode/nuxt.json +61 -61
- package/scripts/fixtures/cli-golden/opencode/php-hexagonal.json +50 -50
- package/scripts/fixtures/cli-golden/opencode/php-laravel.json +50 -50
- package/scripts/fixtures/cli-golden/opencode/svelte.json +61 -61
- package/scripts/inject-claude-agent-rules-block.mjs +83 -0
- package/scripts/lib/generate-adapter-common.mjs +193 -0
- package/scripts/lib/generate-mavis-adapter.mjs +65 -19
- package/scripts/lib/generate-opencode-adapter.mjs +87 -15
- package/scripts/lib/stack-platform-profiles.mjs +321 -1
- package/scripts/sync-claude-harness-wiring.mjs +56 -0
- package/scripts/sync-claude-settings.mjs +56 -0
- package/scripts/test-agent-task-metrics-hooks.mjs +5 -5
- package/scripts/test-chain-team-phases-coverage.mjs +176 -1
- package/scripts/test-cli-init-clean.mjs +165 -34
- package/scripts/test-cli-mcp-merge.mjs +54 -0
- package/scripts/test-mavis-context-budget.mjs +1 -1
- package/scripts/test-opencode-context-budget.mjs +1 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Generate (and keep fresh) `presets/claude/<stack>/settings.json` from the
|
|
4
|
+
* stack profile's `bashPermission`. Claude Code's settings.json uses
|
|
5
|
+
* `permissions.deny` / `permissions.ask` (glob patterns). We map:
|
|
6
|
+
* - `<perm>`: "deny" → `permissions.deny`
|
|
7
|
+
* - `<perm>`: "ask" → `permissions.ask`
|
|
8
|
+
* (`allow` entries are ignored since they are not needed for the harness.)
|
|
9
|
+
*
|
|
10
|
+
* Idempotent: rewrites every stack. Claude presets are hand-maintained, so
|
|
11
|
+
* this script keeps them aligned with the StackProfile in
|
|
12
|
+
* `stack-platform-profiles.mjs` — run after editing `bashPermission` there.
|
|
13
|
+
*
|
|
14
|
+
* Usage: node scripts/sync-claude-settings.mjs
|
|
15
|
+
*/
|
|
16
|
+
import fs from 'node:fs';
|
|
17
|
+
import path from 'node:path';
|
|
18
|
+
import { fileURLToPath } from 'node:url';
|
|
19
|
+
import { loadReleasedStacks } from './lib/generate-adapter-common.mjs';
|
|
20
|
+
import { getStackProfile } from './lib/stack-platform-profiles.mjs';
|
|
21
|
+
|
|
22
|
+
const scriptDirectory = path.dirname(fileURLToPath(import.meta.url));
|
|
23
|
+
const packageRoot = path.join(scriptDirectory, '..');
|
|
24
|
+
const presetsRoot = path.join(packageRoot, 'presets');
|
|
25
|
+
|
|
26
|
+
function buildClaudePermissions(bashPermission) {
|
|
27
|
+
const deny = [];
|
|
28
|
+
const ask = [];
|
|
29
|
+
for (const [pattern, action] of Object.entries(bashPermission || {})) {
|
|
30
|
+
if (pattern === '*') continue;
|
|
31
|
+
if (action === 'deny') deny.push(`Bash(${pattern})`);
|
|
32
|
+
else if (action === 'ask') ask.push(`Bash(${pattern})`);
|
|
33
|
+
}
|
|
34
|
+
return { deny: deny.sort(), ask: ask.sort() };
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function sync(stack) {
|
|
38
|
+
const profile = getStackProfile(stack);
|
|
39
|
+
const permissions = buildClaudePermissions(profile.bashPermission);
|
|
40
|
+
const settings = {
|
|
41
|
+
$schema: 'https://json.schemastore.org/claude-code-settings.json',
|
|
42
|
+
permissions,
|
|
43
|
+
};
|
|
44
|
+
const dest = path.join(presetsRoot, 'claude', stack, 'settings.json');
|
|
45
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
46
|
+
fs.writeFileSync(dest, `${JSON.stringify(settings, null, 2)}\n`);
|
|
47
|
+
console.log(`claude/${stack}: wrote ${path.relative(packageRoot, dest)}`);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function main() {
|
|
51
|
+
for (const stack of loadReleasedStacks(presetsRoot, 'opencode')) {
|
|
52
|
+
sync(stack);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
main();
|
|
@@ -994,12 +994,12 @@ for (const hook of hooks) {
|
|
|
994
994
|
const elapsed = Date.now() - releaseAt;
|
|
995
995
|
assert.equal(exitCode, 0, `${hook}: hook did not exit 0 after lock release (stderr=${stderr.slice(0, 400)})`);
|
|
996
996
|
|
|
997
|
-
// The hook's waitForMetricsLock busy-waits on EEXIST in 10 ms slices
|
|
998
|
-
//
|
|
999
|
-
//
|
|
1000
|
-
//
|
|
997
|
+
// The hook's waitForMetricsLock busy-waits on EEXIST in 10 ms slices. The
|
|
998
|
+
// "still alive while held" assertion above proves the lock actually blocked;
|
|
999
|
+
// this bound only catches a permanently stuck implementation. It is generous
|
|
1000
|
+
// on purpose: bash + node startup under loaded CI regularly exceeds 1.5 s.
|
|
1001
1001
|
assert.ok(elapsed >= 1, `${hook}: hook finished suspiciously fast after lock release (${elapsed} ms)`);
|
|
1002
|
-
assert.ok(elapsed <
|
|
1002
|
+
assert.ok(elapsed < 10000, `${hook}: hook took ${elapsed} ms after lock release — lock impl may be stuck`);
|
|
1003
1003
|
const ledger = readJson(metricsPath);
|
|
1004
1004
|
const finished = ledger.events.find(
|
|
1005
1005
|
(event) => event.type === 'attempt_finished' && event.attemptId === attemptId,
|
|
@@ -515,4 +515,179 @@ for (const hook of hooks) {
|
|
|
515
515
|
}
|
|
516
516
|
}
|
|
517
517
|
|
|
518
|
-
|
|
518
|
+
// ---------------------------------------------------------------------------
|
|
519
|
+
// Test 7 — end_human_gate idempotency (H2): a second/retried end_human_gate
|
|
520
|
+
// must be a no-op. It must not activate the step after the one already resumed.
|
|
521
|
+
// ---------------------------------------------------------------------------
|
|
522
|
+
for (const hook of hooks) {
|
|
523
|
+
const root = fs.mkdtempSync(path.join(packageDirectory, '.gate-idempotent-'));
|
|
524
|
+
try {
|
|
525
|
+
const platform = platformFor(hook);
|
|
526
|
+
const runId = 'gate-idempotent-run';
|
|
527
|
+
const { taskDirectory } = writeTask(
|
|
528
|
+
root,
|
|
529
|
+
hook,
|
|
530
|
+
'gate-idempotent',
|
|
531
|
+
{
|
|
532
|
+
intent: 'feature',
|
|
533
|
+
profile: 'standard',
|
|
534
|
+
steps: [
|
|
535
|
+
{ agent: 'task-analyst', label: 'Analyze' },
|
|
536
|
+
{ agent: 'feature-developer', label: 'Develop' },
|
|
537
|
+
{ agent: 'build-verifier', label: 'Verify' },
|
|
538
|
+
],
|
|
539
|
+
humanGates: ['after:task-analyst'],
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
slug: 'gate-idempotent',
|
|
543
|
+
intent: 'feature',
|
|
544
|
+
pipelineIndex: 0,
|
|
545
|
+
currentAgent: 'task-analyst',
|
|
546
|
+
phase: 'human_gate',
|
|
547
|
+
state: 'awaiting_approval',
|
|
548
|
+
awaitingHumanGate: true,
|
|
549
|
+
activeHumanGateEventId: `${runId}:gate`,
|
|
550
|
+
activeAttempts: {},
|
|
551
|
+
metricsRunId: runId,
|
|
552
|
+
},
|
|
553
|
+
{
|
|
554
|
+
schemaVersion: 1,
|
|
555
|
+
task: { runId, slug: 'gate-idempotent', preset: 'ai-rules', stack: 'test', platform, intent: 'feature', profile: 'standard' },
|
|
556
|
+
events: [{ eventId: `${runId}:task_started`, type: 'task_started', at: todayIso }],
|
|
557
|
+
},
|
|
558
|
+
);
|
|
559
|
+
invokeHook(hook, root, undefined, { action: 'end_human_gate', activateNext: true });
|
|
560
|
+
const afterFirst = readJson(path.join(taskDirectory, 'status.json'));
|
|
561
|
+
assert.equal(afterFirst.pipelineIndex, 1, `${hook}: end_human_gate did not resume the next step`);
|
|
562
|
+
assert.equal(afterFirst.currentAgent, 'feature-developer', `${hook}: end_human_gate resumed the wrong agent`);
|
|
563
|
+
// Duplicate call: no open gate anymore, so it must not advance again.
|
|
564
|
+
invokeHook(hook, root, undefined, { action: 'end_human_gate', activateNext: true });
|
|
565
|
+
const afterSecond = readJson(path.join(taskDirectory, 'status.json'));
|
|
566
|
+
assert.equal(afterSecond.pipelineIndex, 1, `${hook}: duplicate end_human_gate skipped a pipeline step`);
|
|
567
|
+
assert.equal(afterSecond.currentAgent, 'feature-developer', `${hook}: duplicate end_human_gate changed the active agent`);
|
|
568
|
+
} finally {
|
|
569
|
+
fs.rmSync(root, { recursive: true, force: true });
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
// ---------------------------------------------------------------------------
|
|
574
|
+
// Test 8 — terminal human gate (H3): closing a gate that follows the final
|
|
575
|
+
// step must complete the pipeline, not leave it in_progress forever.
|
|
576
|
+
// ---------------------------------------------------------------------------
|
|
577
|
+
for (const hook of hooks) {
|
|
578
|
+
const root = fs.mkdtempSync(path.join(packageDirectory, '.gate-terminal-'));
|
|
579
|
+
try {
|
|
580
|
+
const platform = platformFor(hook);
|
|
581
|
+
const runId = 'gate-terminal-run';
|
|
582
|
+
const { taskDirectory } = writeTask(
|
|
583
|
+
root,
|
|
584
|
+
hook,
|
|
585
|
+
'gate-terminal',
|
|
586
|
+
{
|
|
587
|
+
intent: 'feature',
|
|
588
|
+
profile: 'standard',
|
|
589
|
+
steps: [
|
|
590
|
+
{ agent: 'task-analyst', label: 'Analyze' },
|
|
591
|
+
{ agent: 'feature-developer', label: 'Develop' },
|
|
592
|
+
],
|
|
593
|
+
humanGates: ['after:feature-developer'],
|
|
594
|
+
},
|
|
595
|
+
{
|
|
596
|
+
slug: 'gate-terminal',
|
|
597
|
+
intent: 'feature',
|
|
598
|
+
pipelineIndex: 1,
|
|
599
|
+
currentAgent: 'feature-developer',
|
|
600
|
+
phase: 'human_gate',
|
|
601
|
+
state: 'awaiting_approval',
|
|
602
|
+
awaitingHumanGate: true,
|
|
603
|
+
activeHumanGateEventId: `${runId}:gate`,
|
|
604
|
+
activeAttempts: {},
|
|
605
|
+
metricsRunId: runId,
|
|
606
|
+
},
|
|
607
|
+
{
|
|
608
|
+
schemaVersion: 1,
|
|
609
|
+
task: { runId, slug: 'gate-terminal', preset: 'ai-rules', stack: 'test', platform, intent: 'feature', profile: 'standard' },
|
|
610
|
+
events: [{ eventId: `${runId}:task_started`, type: 'task_started', at: todayIso }],
|
|
611
|
+
},
|
|
612
|
+
);
|
|
613
|
+
invokeHook(hook, root, undefined, { action: 'end_human_gate', activateNext: true });
|
|
614
|
+
const status = readJson(path.join(taskDirectory, 'status.json'));
|
|
615
|
+
assert.equal(status.state, 'completed', `${hook}: terminal gate did not complete the pipeline (got: ${status.state})`);
|
|
616
|
+
assert.equal(status.phase, 'done', `${hook}: terminal gate did not reach phase=done`);
|
|
617
|
+
const completed = readJson(path.join(taskDirectory, 'metrics.json')).events.filter(
|
|
618
|
+
(event) => event.type === 'task_completed',
|
|
619
|
+
);
|
|
620
|
+
assert.equal(completed.length, 1, `${hook}: terminal gate did not emit task_completed`);
|
|
621
|
+
} finally {
|
|
622
|
+
fs.rmSync(root, { recursive: true, force: true });
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
// ---------------------------------------------------------------------------
|
|
627
|
+
// Test 9 — stale lock recovery (H4): a lock file left by a killed process
|
|
628
|
+
// (mtime far in the past) must be reclaimed instead of failing the hook.
|
|
629
|
+
// ---------------------------------------------------------------------------
|
|
630
|
+
for (const hook of hooks) {
|
|
631
|
+
const root = fs.mkdtempSync(path.join(packageDirectory, '.stale-lock-'));
|
|
632
|
+
try {
|
|
633
|
+
const platform = platformFor(hook);
|
|
634
|
+
const runId = 'stale-lock-run';
|
|
635
|
+
const attemptId = `${runId}:step-0:feature-developer:attempt-1`;
|
|
636
|
+
const { taskDirectory } = writeTask(
|
|
637
|
+
root,
|
|
638
|
+
hook,
|
|
639
|
+
'stale-lock',
|
|
640
|
+
{ intent: 'feature', steps: [{ agent: 'feature-developer' }] },
|
|
641
|
+
{
|
|
642
|
+
slug: 'stale-lock',
|
|
643
|
+
intent: 'feature',
|
|
644
|
+
pipelineIndex: 0,
|
|
645
|
+
currentAgent: 'feature-developer',
|
|
646
|
+
phase: 'executing',
|
|
647
|
+
state: 'completed',
|
|
648
|
+
activeAttempts: {
|
|
649
|
+
[attemptId]: { agent: 'feature-developer', stepIndex: 0, attempt: 1, startedAt: todayIso, parallelGroupId: null },
|
|
650
|
+
},
|
|
651
|
+
metricsRunId: runId,
|
|
652
|
+
},
|
|
653
|
+
{
|
|
654
|
+
schemaVersion: 1,
|
|
655
|
+
task: { runId, slug: 'stale-lock', preset: 'ai-rules', stack: 'test', platform, intent: 'feature', profile: 'standard' },
|
|
656
|
+
events: [
|
|
657
|
+
{ eventId: `${runId}:task_started`, type: 'task_started', at: todayIso },
|
|
658
|
+
{ eventId: `${runId}:start`, type: 'attempt_started', attemptId, agent: 'feature-developer', stepIndex: 0, attempt: 1, at: todayIso },
|
|
659
|
+
],
|
|
660
|
+
},
|
|
661
|
+
);
|
|
662
|
+
const lockPath = path.join(taskDirectory, 'metrics.json.lock');
|
|
663
|
+
fs.writeFileSync(lockPath, '');
|
|
664
|
+
const ancient = Date.now() / 1000 - 3600;
|
|
665
|
+
fs.utimesSync(lockPath, ancient, ancient);
|
|
666
|
+
const raw = invokeHook(hook, root, attemptId);
|
|
667
|
+
assert.ok(raw.length > 0, `${hook}: stale lock was not reclaimed (no output)`);
|
|
668
|
+
assert.equal(fs.existsSync(lockPath), false, `${hook}: stale lock was not cleaned up`);
|
|
669
|
+
} finally {
|
|
670
|
+
fs.rmSync(root, { recursive: true, force: true });
|
|
671
|
+
}
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
// ---------------------------------------------------------------------------
|
|
675
|
+
// Test 10 — slug traversal (H6): a slug escaping tasks/ must be rejected
|
|
676
|
+
// without writing status.json outside the task tree.
|
|
677
|
+
// ---------------------------------------------------------------------------
|
|
678
|
+
for (const hook of hooks) {
|
|
679
|
+
const root = fs.mkdtempSync(path.join(packageDirectory, '.slug-traversal-'));
|
|
680
|
+
try {
|
|
681
|
+
const teamRoot = path.join(root, '.ai.local', 'team');
|
|
682
|
+
fs.mkdirSync(teamRoot, { recursive: true });
|
|
683
|
+
writeJson(path.join(teamRoot, 'active-task.json'), { slug: '../../evil' });
|
|
684
|
+
const raw = invokeHook(hook, root, undefined, {});
|
|
685
|
+
assert.deepEqual(JSON.parse(raw), {}, `${hook}: traversal slug was not rejected`);
|
|
686
|
+
assert.equal(fs.existsSync(path.join(root, '.ai.local', 'evil')), false, `${hook}: traversal slug wrote outside tasks/`);
|
|
687
|
+
assert.equal(fs.existsSync(path.join(root, 'evil')), false, `${hook}: traversal slug escaped the repo`);
|
|
688
|
+
} finally {
|
|
689
|
+
fs.rmSync(root, { recursive: true, force: true });
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
|
|
693
|
+
console.log(`Verified openspec-author handoff, qa-tester handoff, pipeline misparse blocking, legacy fallback, writeStatus durability, stale attemptId rejection, end_human_gate idempotency, terminal-gate completion, stale-lock recovery, and slug-traversal rejection in ${hooks.length} hooks.`);
|
|
@@ -58,9 +58,15 @@ function assertGolden(tool, preset) {
|
|
|
58
58
|
runInit(cli, tmp, tool, preset);
|
|
59
59
|
const expected = readJson(path.join(goldenRoot, tool, `${preset}.json`));
|
|
60
60
|
const actual = snapshotInstall(tmp);
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
const manifestKey = {
|
|
62
|
+
cursor: '.cursor/.ai-rules-install.json',
|
|
63
|
+
claude: '.claude/.ai-rules-install.json',
|
|
64
|
+
mavis: '.mavis/.ai-rules-install.json',
|
|
65
|
+
opencode: '.opencode/.ai-rules-install.json',
|
|
66
|
+
}[tool];
|
|
67
|
+
if (manifestKey) {
|
|
68
|
+
delete actual[manifestKey];
|
|
69
|
+
delete expected.files[manifestKey];
|
|
64
70
|
}
|
|
65
71
|
assert.deepEqual(actual, expected.files, `${tool}/${preset} golden drifted`);
|
|
66
72
|
} finally {
|
|
@@ -226,18 +232,13 @@ runInit(cli, mavisGoldenDir, 'mavis', 'next');
|
|
|
226
232
|
const mavisFiles = snapshotInstall(mavisGoldenDir);
|
|
227
233
|
delete mavisFiles['.mavis/.ai-rules-install.json'];
|
|
228
234
|
const mavisGoldenPath = path.join(goldenRoot, 'mavis', 'next.json');
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
} else {
|
|
237
|
-
const expectedMavis = readJson(mavisGoldenPath);
|
|
238
|
-
delete expectedMavis.files['.mavis/.ai-rules-install.json'];
|
|
239
|
-
assert.deepEqual(mavisFiles, expectedMavis.files, 'mavis/next golden drifted');
|
|
240
|
-
}
|
|
235
|
+
assert.ok(
|
|
236
|
+
fs.existsSync(mavisGoldenPath),
|
|
237
|
+
'mavis/next golden missing — capture it with scripts/capture-cli-golden.mjs',
|
|
238
|
+
);
|
|
239
|
+
const expectedMavis = readJson(mavisGoldenPath);
|
|
240
|
+
delete expectedMavis.files['.mavis/.ai-rules-install.json'];
|
|
241
|
+
assert.deepEqual(mavisFiles, expectedMavis.files, 'mavis/next golden drifted');
|
|
241
242
|
|
|
242
243
|
const ocFresh = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-opencode-fresh-'));
|
|
243
244
|
const ocInitOut = execFileSync(
|
|
@@ -331,18 +332,13 @@ runInit(cli, ocGoldenDir, 'opencode', 'next');
|
|
|
331
332
|
const ocFiles = snapshotInstall(ocGoldenDir);
|
|
332
333
|
delete ocFiles['.opencode/.ai-rules-install.json'];
|
|
333
334
|
const ocGoldenPath = path.join(goldenRoot, 'opencode', 'next.json');
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
} else {
|
|
342
|
-
const expectedOc = readJson(ocGoldenPath);
|
|
343
|
-
delete expectedOc.files['.opencode/.ai-rules-install.json'];
|
|
344
|
-
assert.deepEqual(ocFiles, expectedOc.files, 'opencode/next golden drifted');
|
|
345
|
-
}
|
|
335
|
+
assert.ok(
|
|
336
|
+
fs.existsSync(ocGoldenPath),
|
|
337
|
+
'opencode/next golden missing — capture it with scripts/capture-cli-golden.mjs',
|
|
338
|
+
);
|
|
339
|
+
const expectedOc = readJson(ocGoldenPath);
|
|
340
|
+
delete expectedOc.files['.opencode/.ai-rules-install.json'];
|
|
341
|
+
assert.deepEqual(ocFiles, expectedOc.files, 'opencode/next golden drifted');
|
|
346
342
|
|
|
347
343
|
const canonicalRepoAgents = fs.readFileSync(
|
|
348
344
|
path.join(packageDirectory, 'presets', 'cursor', 'next', 'REPO_AGENTS.md'),
|
|
@@ -363,13 +359,13 @@ function ensureGolden(tool, preset, manifestRel) {
|
|
|
363
359
|
const files = snapshotInstall(tmp);
|
|
364
360
|
delete files[manifestRel];
|
|
365
361
|
const goldenPath = path.join(goldenRoot, tool, `${preset}.json`);
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
}
|
|
362
|
+
assert.ok(
|
|
363
|
+
fs.existsSync(goldenPath),
|
|
364
|
+
`${tool}/${preset} golden missing — capture it with scripts/capture-cli-golden.mjs`,
|
|
365
|
+
);
|
|
366
|
+
const expected = readJson(goldenPath);
|
|
367
|
+
delete expected.files[manifestRel];
|
|
368
|
+
assert.deepEqual(files, expected.files, `${tool}/${preset} golden drifted`);
|
|
373
369
|
} finally {
|
|
374
370
|
fs.rmSync(tmp, { recursive: true, force: true });
|
|
375
371
|
}
|
|
@@ -618,6 +614,130 @@ assert.equal(
|
|
|
618
614
|
'migration must not write the pointer README outside --cwd',
|
|
619
615
|
);
|
|
620
616
|
|
|
617
|
+
// --- CLI ownership + path-safety regressions ----------------------------
|
|
618
|
+
// init writes an ownership manifest for cursor/claude (like mavis/opencode).
|
|
619
|
+
const ownedClean = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-owned-clean-'));
|
|
620
|
+
runInit(cli, ownedClean, 'cursor', 'next');
|
|
621
|
+
const cursorManifest = readJson(path.join(ownedClean, '.cursor', '.ai-rules-install.json'));
|
|
622
|
+
assert.equal(cursorManifest.platform, 'cursor');
|
|
623
|
+
assert.ok(cursorManifest.managedFiles['.cursor/rules/next-app-core.mdc']);
|
|
624
|
+
assert.ok(cursorManifest.managedFiles['AGENTS.md']);
|
|
625
|
+
assert.ok(cursorManifest.shippedMcpServerIds.includes('context7'));
|
|
626
|
+
|
|
627
|
+
// A consumer file under .cursor/ and a modified shared AGENTS.md survive clean.
|
|
628
|
+
fs.writeFileSync(path.join(ownedClean, '.cursor', 'rules', 'mine.mdc'), '# mine\n');
|
|
629
|
+
fs.writeFileSync(path.join(ownedClean, 'AGENTS.md'), '# consumer agents\n');
|
|
630
|
+
runClean(ownedClean, 'cursor');
|
|
631
|
+
assert.equal(
|
|
632
|
+
fs.existsSync(path.join(ownedClean, '.cursor', 'rules', 'mine.mdc')),
|
|
633
|
+
true,
|
|
634
|
+
'consumer rule must survive clean cursor',
|
|
635
|
+
);
|
|
636
|
+
assert.equal(
|
|
637
|
+
fs.readFileSync(path.join(ownedClean, 'AGENTS.md'), 'utf8'),
|
|
638
|
+
'# consumer agents\n',
|
|
639
|
+
'modified shared AGENTS.md must survive clean cursor',
|
|
640
|
+
);
|
|
641
|
+
|
|
642
|
+
// clean without an install manifest is fail-safe: it deletes nothing.
|
|
643
|
+
const noManifest = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-no-manifest-'));
|
|
644
|
+
fs.mkdirSync(path.join(noManifest, '.cursor', 'rules'), { recursive: true });
|
|
645
|
+
fs.writeFileSync(path.join(noManifest, '.cursor', 'rules', 'mine.mdc'), '# mine\n');
|
|
646
|
+
const noManifestClean = runCli(noManifest, ['clean', 'cursor']);
|
|
647
|
+
assert.equal(noManifestClean.status, 1);
|
|
648
|
+
assert.equal(
|
|
649
|
+
fs.existsSync(path.join(noManifest, '.cursor', 'rules', 'mine.mdc')),
|
|
650
|
+
true,
|
|
651
|
+
'clean cursor must not delete consumer files when no manifest exists',
|
|
652
|
+
);
|
|
653
|
+
|
|
654
|
+
// A manifest entry that escapes cwd is ignored, never followed.
|
|
655
|
+
const traversal = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-traversal-'));
|
|
656
|
+
fs.writeFileSync(path.join(traversal, 'victim.txt'), 'victim\n');
|
|
657
|
+
const victimHash = sha256File(path.join(traversal, 'victim.txt'));
|
|
658
|
+
fs.mkdirSync(path.join(traversal, '.mavis'), { recursive: true });
|
|
659
|
+
fs.writeFileSync(
|
|
660
|
+
path.join(traversal, '.mavis', '.ai-rules-install.json'),
|
|
661
|
+
`${JSON.stringify({
|
|
662
|
+
schemaVersion: 1,
|
|
663
|
+
platform: 'mavis',
|
|
664
|
+
preset: 'next',
|
|
665
|
+
managedFiles: { '../victim.txt': victimHash },
|
|
666
|
+
managedDirectories: ['../'],
|
|
667
|
+
})}\n`,
|
|
668
|
+
);
|
|
669
|
+
const traversalClean = runCli(traversal, ['clean', 'mavis']);
|
|
670
|
+
assert.equal(traversalClean.status, 0);
|
|
671
|
+
assert.equal(
|
|
672
|
+
fs.existsSync(path.join(traversal, 'victim.txt')),
|
|
673
|
+
true,
|
|
674
|
+
'path-traversal manifest entry must not delete outside cwd',
|
|
675
|
+
);
|
|
676
|
+
|
|
677
|
+
// A symlinked destination root is refused instead of written through.
|
|
678
|
+
const symlinkInit = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-symlink-init-'));
|
|
679
|
+
const symlinkTarget = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-symlink-target-'));
|
|
680
|
+
fs.symlinkSync(symlinkTarget, path.join(symlinkInit, '.ai.local'), 'dir');
|
|
681
|
+
const symlinkResult = runCli(symlinkInit, ['init', 'cursor', '--preset', 'next']);
|
|
682
|
+
assert.equal(symlinkResult.status, 1);
|
|
683
|
+
assert.equal(
|
|
684
|
+
fs.existsSync(path.join(symlinkTarget, 'team')),
|
|
685
|
+
false,
|
|
686
|
+
'init must not write .ai.local/team through a symlinked .ai.local',
|
|
687
|
+
);
|
|
688
|
+
const mavisLink = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-mavis-link-'));
|
|
689
|
+
const mavisTarget = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-mavis-link-target-'));
|
|
690
|
+
fs.symlinkSync(mavisTarget, path.join(mavisLink, '.mavis'), 'dir');
|
|
691
|
+
const mavisLinkResult = runCli(mavisLink, ['init', 'mavis', '--preset', 'next']);
|
|
692
|
+
assert.equal(mavisLinkResult.status, 1);
|
|
693
|
+
assert.equal(
|
|
694
|
+
fs.existsSync(path.join(mavisTarget, 'AGENTS.md')),
|
|
695
|
+
false,
|
|
696
|
+
'init mavis must not write through a symlinked .mavis',
|
|
697
|
+
);
|
|
698
|
+
|
|
699
|
+
// A failed re-init must not roll back pre-existing consumer directories.
|
|
700
|
+
const rollbackReinit = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-rollback-reinit-'));
|
|
701
|
+
runInit(cli, rollbackReinit, 'cursor', 'next');
|
|
702
|
+
fs.writeFileSync(path.join(rollbackReinit, '.cursor', 'rules', 'mine.mdc'), '# mine\n');
|
|
703
|
+
fs.rmSync(path.join(rollbackReinit, '.cursor', 'hooks.json'), { force: true });
|
|
704
|
+
fs.mkdirSync(path.join(rollbackReinit, '.cursor', 'hooks.json'));
|
|
705
|
+
const reinit = runCli(rollbackReinit, ['init', 'cursor', '--preset', 'next']);
|
|
706
|
+
assert.equal(reinit.status, 1);
|
|
707
|
+
assert.equal(
|
|
708
|
+
fs.existsSync(path.join(rollbackReinit, '.cursor', 'rules', 'mine.mdc')),
|
|
709
|
+
true,
|
|
710
|
+
'failed re-init rollback must not delete pre-existing consumer files',
|
|
711
|
+
);
|
|
712
|
+
|
|
713
|
+
// `--preset ""` is a missing value, not a silent fall back to the default.
|
|
714
|
+
const emptyPreset = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-empty-preset-'));
|
|
715
|
+
const emptyPresetResult = runCli(emptyPreset, ['init', 'cursor', '--preset', '']);
|
|
716
|
+
assert.equal(emptyPresetResult.status, 1);
|
|
717
|
+
assert.match(emptyPresetResult.stderr, /Missing value for --preset/);
|
|
718
|
+
|
|
719
|
+
// Unknown flags are rejected.
|
|
720
|
+
const unknownFlag = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-unknown-flag-'));
|
|
721
|
+
const unknownFlagResult = runCli(unknownFlag, ['init', 'cursor', '--preset', 'next', '--bogus']);
|
|
722
|
+
assert.equal(unknownFlagResult.status, 1);
|
|
723
|
+
assert.match(unknownFlagResult.stderr, /Unknown option: --bogus/);
|
|
724
|
+
|
|
725
|
+
// Consumer MCP servers survive clean cursor (only shipped keys are stripped).
|
|
726
|
+
const mcpExtra = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-mcp-extra-'));
|
|
727
|
+
runInit(cli, mcpExtra, 'cursor', 'next');
|
|
728
|
+
const mcpExtraPath = path.join(mcpExtra, '.cursor', 'mcp.json');
|
|
729
|
+
const mcpExtraJson = readJson(mcpExtraPath);
|
|
730
|
+
mcpExtraJson.mcpServers.myPrivate = { command: 'my-server' };
|
|
731
|
+
fs.writeFileSync(mcpExtraPath, `${JSON.stringify(mcpExtraJson, null, 2)}\n`);
|
|
732
|
+
runClean(mcpExtra, 'cursor');
|
|
733
|
+
const mcpAfter = readJson(mcpExtraPath);
|
|
734
|
+
assert.ok(mcpAfter.mcpServers.myPrivate, 'consumer MCP server must survive clean cursor');
|
|
735
|
+
assert.equal(
|
|
736
|
+
Object.hasOwn(mcpAfter.mcpServers, 'context7'),
|
|
737
|
+
false,
|
|
738
|
+
'shipped MCP server must be stripped by clean cursor',
|
|
739
|
+
);
|
|
740
|
+
|
|
621
741
|
const multiClean = runCli(multiDir, ['clean', 'multi']);
|
|
622
742
|
assert.equal(multiClean.status, 1);
|
|
623
743
|
assert.match(`${multiClean.stderr}${multiClean.stdout}`, /clean multi is not supported/);
|
|
@@ -655,6 +775,17 @@ for (const dir of [
|
|
|
655
775
|
collision,
|
|
656
776
|
symlinked,
|
|
657
777
|
outsideDir,
|
|
778
|
+
ownedClean,
|
|
779
|
+
noManifest,
|
|
780
|
+
traversal,
|
|
781
|
+
symlinkInit,
|
|
782
|
+
symlinkTarget,
|
|
783
|
+
mavisLink,
|
|
784
|
+
mavisTarget,
|
|
785
|
+
rollbackReinit,
|
|
786
|
+
emptyPreset,
|
|
787
|
+
unknownFlag,
|
|
788
|
+
mcpExtra,
|
|
658
789
|
...lastInitDirs,
|
|
659
790
|
]) {
|
|
660
791
|
fs.rmSync(dir, { recursive: true, force: true });
|
|
@@ -154,6 +154,60 @@ try {
|
|
|
154
154
|
assert.equal(fs.existsSync(path.join(mavisDir, '.minimax')), false);
|
|
155
155
|
fs.rmSync(mavisDir, { recursive: true, force: true });
|
|
156
156
|
|
|
157
|
+
// OpenCode re-init unions preset instruction paths and fills missing bash keys.
|
|
158
|
+
const freshOc = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-oc-fresh-'));
|
|
159
|
+
init(freshOc, 'opencode', 'next');
|
|
160
|
+
const freshOcJson = readJson(path.join(freshOc, 'opencode.json'));
|
|
161
|
+
assert.ok(Array.isArray(freshOcJson.instructions), 'fresh opencode.json should have instructions');
|
|
162
|
+
assert.ok(freshOcJson.instructions.includes('.opencode/AGENTS.md'));
|
|
163
|
+
assert.ok(freshOcJson.permission, 'fresh opencode.json should have permission');
|
|
164
|
+
assert.ok(freshOcJson.permission.bash, 'fresh opencode.json should have permission.bash');
|
|
165
|
+
assert.equal(freshOcJson.permission.bash['git commit *'], 'deny');
|
|
166
|
+
assert.equal(freshOcJson.permission.bash['git push *'], 'deny');
|
|
167
|
+
assert.equal(freshOcJson.permission.bash['npx jest*'], 'deny');
|
|
168
|
+
const presetInstructions = freshOcJson.instructions.slice();
|
|
169
|
+
const presetBash = { ...freshOcJson.permission.bash };
|
|
170
|
+
fs.rmSync(freshOc, { recursive: true, force: true });
|
|
171
|
+
|
|
172
|
+
const repeatOc = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-oc-repeat-'));
|
|
173
|
+
init(repeatOc, 'opencode', 'next');
|
|
174
|
+
const consumerInstructions = ['.opencode/AGENTS.md', 'CONSUMER-RULE.md'];
|
|
175
|
+
const consumerBash = { '*': 'allow', 'git push *': 'allow', 'rm -rf /': 'deny' };
|
|
176
|
+
writeJson(path.join(repeatOc, 'opencode.json'), {
|
|
177
|
+
$schema: 'https://opencode.ai/config.json',
|
|
178
|
+
instructions: consumerInstructions,
|
|
179
|
+
permission: { bash: consumerBash },
|
|
180
|
+
mcp: { context7: { type: 'local', command: ['npx', '-y', '@upstash/context7-mcp@4.0.2'] } },
|
|
181
|
+
customNote: true,
|
|
182
|
+
});
|
|
183
|
+
init(repeatOc, 'opencode', 'next');
|
|
184
|
+
const preserved = readJson(path.join(repeatOc, 'opencode.json'));
|
|
185
|
+
assert.deepEqual(
|
|
186
|
+
preserved.instructions,
|
|
187
|
+
[...consumerInstructions, ...presetInstructions.filter((item) => !consumerInstructions.includes(item))],
|
|
188
|
+
'preset instruction paths are unioned; consumer extras stay first',
|
|
189
|
+
);
|
|
190
|
+
assert.equal(preserved.permission.bash['git push *'], 'allow', 'consumer bash override wins');
|
|
191
|
+
assert.equal(preserved.permission.bash['rm -rf /'], 'deny', 'consumer extra bash key stays');
|
|
192
|
+
assert.equal(preserved.permission.bash['git commit *'], presetBash['git commit *'], 'missing preset bash key is filled');
|
|
193
|
+
assert.equal(preserved.customNote, true, 'consumer custom keys preserved');
|
|
194
|
+
fs.rmSync(repeatOc, { recursive: true, force: true });
|
|
195
|
+
|
|
196
|
+
const emptyOc = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-oc-empty-'));
|
|
197
|
+
init(emptyOc, 'opencode', 'next');
|
|
198
|
+
writeJson(path.join(emptyOc, 'opencode.json'), {
|
|
199
|
+
$schema: 'https://opencode.ai/config.json',
|
|
200
|
+
instructions: [],
|
|
201
|
+
permission: {},
|
|
202
|
+
customNote: true,
|
|
203
|
+
});
|
|
204
|
+
init(emptyOc, 'opencode', 'next');
|
|
205
|
+
const filled = readJson(path.join(emptyOc, 'opencode.json'));
|
|
206
|
+
assert.deepEqual(filled.instructions, presetInstructions, 'empty instructions receive the preset list');
|
|
207
|
+
assert.deepEqual(filled.permission.bash, presetBash, 'missing bash object receives the preset map');
|
|
208
|
+
assert.equal(filled.customNote, true);
|
|
209
|
+
fs.rmSync(emptyOc, { recursive: true, force: true });
|
|
210
|
+
|
|
157
211
|
console.log('test-cli-mcp-merge: ok');
|
|
158
212
|
} finally {
|
|
159
213
|
fs.rmSync(tmp, { recursive: true, force: true });
|
|
@@ -11,7 +11,7 @@ import { getStackProfile } from './lib/stack-platform-profiles.mjs';
|
|
|
11
11
|
|
|
12
12
|
const scriptDirectory = path.dirname(fileURLToPath(import.meta.url));
|
|
13
13
|
const presetsRoot = path.join(scriptDirectory, '..', 'presets');
|
|
14
|
-
const LINE_CAP =
|
|
14
|
+
const LINE_CAP = 200;
|
|
15
15
|
const PLATFORM_SENTINELS = ['.mavis/AGENTS.md', 'status.json', '~/.minimax'];
|
|
16
16
|
|
|
17
17
|
function nonemptyLines(text) {
|
|
@@ -10,7 +10,7 @@ import { getStackProfile } from './lib/stack-platform-profiles.mjs';
|
|
|
10
10
|
|
|
11
11
|
const scriptDirectory = path.dirname(fileURLToPath(import.meta.url));
|
|
12
12
|
const presetsRoot = path.join(scriptDirectory, '..', 'presets');
|
|
13
|
-
const LINE_CAP =
|
|
13
|
+
const LINE_CAP = 200;
|
|
14
14
|
const PLATFORM_SENTINELS = ['.opencode/AGENTS.md', 'status.json'];
|
|
15
15
|
|
|
16
16
|
function nonemptyLines(text) {
|