@bonesofspring/ai-rules 0.2.27 → 0.2.29
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/README.md +1 -1
- package/bin/cli.js +13 -2
- package/bin/lib/seed-ai-local-team.js +43 -5
- package/bin/opencode-install.js +58 -0
- package/docs/MAVIS-COMPATIBILITY.md +10 -6
- package/docs/MAVIS.md +15 -6
- package/docs/OPENCODE-COMPATIBILITY.md +3 -3
- package/docs/OPENCODE.md +16 -6
- package/package.json +2 -1
- package/presets/_shared/core/meta/preset-pr-checklist.md +2 -2
- package/presets/claude/android-kotlin/CLAUDE.md +15 -1
- package/presets/claude/android-kotlin/REPO_AGENTS.md +1 -1
- 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 +17 -0
- 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/hooks/README.md +6 -5
- package/presets/claude/android-kotlin/hooks/chain-team-phases.sh +18 -0
- package/presets/claude/android-kotlin/hooks/examples/README.md +2 -0
- package/presets/claude/android-kotlin/hooks/guard-shell-command.sh +32 -9
- package/presets/claude/android-kotlin/rules/README.md +1 -1
- package/presets/claude/android-kotlin/rules/tooling-and-review/ai-local-overlay.md +0 -5
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/android-kotlin/settings.json +33 -0
- package/presets/claude/go/CLAUDE.md +15 -1
- package/presets/claude/go/REPO_AGENTS.md +1 -1
- package/presets/claude/go/agents/api-contract-reviewer.md +17 -0
- package/presets/claude/go/agents/build-verifier.md +17 -0
- 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/hooks/README.md +6 -5
- package/presets/claude/go/hooks/chain-team-phases.sh +18 -0
- package/presets/claude/go/hooks/examples/README.md +2 -0
- package/presets/claude/go/hooks/guard-shell-command.sh +32 -9
- package/presets/claude/go/rules/README.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/ai-local-overlay.md +0 -5
- package/presets/claude/go/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/go/settings.json +33 -0
- package/presets/claude/ios-swift/CLAUDE.md +15 -1
- package/presets/claude/ios-swift/REPO_AGENTS.md +1 -1
- 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 +17 -0
- 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/hooks/README.md +6 -5
- package/presets/claude/ios-swift/hooks/chain-team-phases.sh +18 -0
- package/presets/claude/ios-swift/hooks/examples/README.md +2 -0
- package/presets/claude/ios-swift/hooks/guard-shell-command.sh +32 -9
- package/presets/claude/ios-swift/rules/README.md +1 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/ai-local-overlay.md +0 -5
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/ios-swift/settings.json +33 -0
- package/presets/claude/java/CLAUDE.md +15 -1
- package/presets/claude/java/REPO_AGENTS.md +1 -1
- package/presets/claude/java/agents/api-contract-reviewer.md +17 -0
- package/presets/claude/java/agents/build-verifier.md +17 -0
- 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/hooks/README.md +6 -5
- package/presets/claude/java/hooks/chain-team-phases.sh +18 -0
- package/presets/claude/java/hooks/examples/README.md +2 -0
- package/presets/claude/java/hooks/guard-shell-command.sh +32 -9
- package/presets/claude/java/rules/README.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/ai-local-overlay.md +0 -5
- package/presets/claude/java/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/java/settings.json +33 -0
- package/presets/claude/mcp-ts/CLAUDE.md +15 -1
- package/presets/claude/mcp-ts/REPO_AGENTS.md +1 -1
- package/presets/claude/mcp-ts/agents/build-verifier.md +17 -0
- 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/hooks/README.md +8 -3
- package/presets/claude/mcp-ts/hooks/chain-team-phases.sh +18 -0
- package/presets/claude/mcp-ts/hooks/examples/README.md +5 -0
- package/presets/claude/mcp-ts/hooks/guard-shell-command.sh +32 -9
- package/presets/claude/mcp-ts/rules/README.md +1 -1
- package/presets/claude/mcp-ts/rules/tooling-and-review/ai-local-overlay.md +0 -5
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/mcp-ts/settings.json +33 -0
- package/presets/claude/next/CLAUDE.md +15 -1
- package/presets/claude/next/REPO_AGENTS.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 +17 -0
- 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/hooks/README.md +10 -1
- package/presets/claude/next/hooks/chain-team-phases.sh +18 -0
- package/presets/claude/next/hooks/examples/README.md +2 -0
- package/presets/claude/next/hooks/guard-shell-command.sh +32 -9
- package/presets/claude/next/rules/README.md +1 -1
- package/presets/claude/next/rules/tooling-and-review/ai-local-overlay.md +0 -5
- package/presets/claude/next/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/next/settings.json +39 -0
- package/presets/claude/nuxt/CLAUDE.md +15 -1
- package/presets/claude/nuxt/REPO_AGENTS.md +1 -1
- 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 +17 -0
- 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/hooks/README.md +7 -4
- package/presets/claude/nuxt/hooks/chain-team-phases.sh +18 -0
- package/presets/claude/nuxt/hooks/examples/README.md +2 -0
- package/presets/claude/nuxt/hooks/guard-shell-command.sh +32 -9
- package/presets/claude/nuxt/rules/README.md +1 -1
- package/presets/claude/nuxt/rules/tooling-and-review/ai-local-overlay.md +0 -5
- package/presets/claude/nuxt/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/nuxt/settings.json +39 -0
- package/presets/claude/php-hexagonal/CLAUDE.md +15 -1
- package/presets/claude/php-hexagonal/REPO_AGENTS.md +1 -1
- package/presets/claude/php-hexagonal/agents/api-contract-reviewer.md +17 -0
- package/presets/claude/php-hexagonal/agents/build-verifier.md +17 -0
- 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/hooks/README.md +6 -5
- package/presets/claude/php-hexagonal/hooks/chain-team-phases.sh +18 -0
- package/presets/claude/php-hexagonal/hooks/examples/README.md +3 -1
- package/presets/claude/php-hexagonal/hooks/guard-shell-command.sh +32 -9
- package/presets/claude/php-hexagonal/rules/README.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/ai-local-overlay.md +0 -5
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/php-hexagonal/settings.json +33 -0
- package/presets/claude/php-laravel/CLAUDE.md +18 -0
- package/presets/claude/php-laravel/REPO_AGENTS.md +1 -1
- package/presets/claude/php-laravel/agents/api-contract-reviewer.md +18 -0
- package/presets/claude/php-laravel/agents/build-verifier.md +17 -0
- 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/hooks/README.md +6 -5
- package/presets/claude/php-laravel/hooks/chain-team-phases.sh +18 -0
- package/presets/claude/php-laravel/hooks/examples/README.md +3 -1
- package/presets/claude/php-laravel/hooks/guard-shell-command.sh +32 -9
- package/presets/claude/php-laravel/rules/README.md +1 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/ai-local-overlay.md +0 -5
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/php-laravel/settings.json +33 -0
- package/presets/claude/svelte/CLAUDE.md +15 -1
- package/presets/claude/svelte/REPO_AGENTS.md +1 -1
- 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 +17 -0
- 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/hooks/README.md +7 -4
- package/presets/claude/svelte/hooks/chain-team-phases.sh +18 -0
- package/presets/claude/svelte/hooks/examples/README.md +2 -0
- package/presets/claude/svelte/hooks/guard-shell-command.sh +32 -9
- package/presets/claude/svelte/rules/README.md +1 -1
- package/presets/claude/svelte/rules/tooling-and-review/ai-local-overlay.md +0 -5
- package/presets/claude/svelte/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/svelte/settings.json +39 -0
- package/presets/cursor/android-kotlin/REPO_AGENTS.md +1 -1
- package/presets/cursor/android-kotlin/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/go/REPO_AGENTS.md +1 -1
- package/presets/cursor/go/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/ios-swift/REPO_AGENTS.md +1 -1
- package/presets/cursor/ios-swift/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/java/REPO_AGENTS.md +1 -1
- package/presets/cursor/java/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/mcp-ts/REPO_AGENTS.md +1 -1
- package/presets/cursor/mcp-ts/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/next/REPO_AGENTS.md +1 -1
- 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/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/nuxt/REPO_AGENTS.md +1 -1
- package/presets/cursor/nuxt/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/php-hexagonal/REPO_AGENTS.md +1 -1
- package/presets/cursor/php-hexagonal/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/php-laravel/REPO_AGENTS.md +1 -1
- package/presets/cursor/php-laravel/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/svelte/REPO_AGENTS.md +1 -1
- package/presets/cursor/svelte/rules/preset-pr-checklist.mdc +2 -2
- package/presets/mavis/README.md +2 -0
- package/presets/mavis/android-kotlin/MAVIS.md +23 -1
- package/presets/mavis/android-kotlin/REPO_AGENTS.md +1 -1
- 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 +17 -0
- 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/rules/preset-pr-checklist.md +2 -2
- package/presets/mavis/go/MAVIS.md +23 -1
- package/presets/mavis/go/REPO_AGENTS.md +1 -1
- 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 +17 -0
- 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/rules/preset-pr-checklist.md +2 -2
- package/presets/mavis/ios-swift/MAVIS.md +23 -1
- package/presets/mavis/ios-swift/REPO_AGENTS.md +1 -1
- 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 +17 -0
- 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/rules/preset-pr-checklist.md +2 -2
- package/presets/mavis/java/MAVIS.md +23 -1
- package/presets/mavis/java/REPO_AGENTS.md +1 -1
- 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 +17 -0
- 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/rules/preset-pr-checklist.md +2 -2
- package/presets/mavis/mcp-ts/MAVIS.md +23 -1
- package/presets/mavis/mcp-ts/REPO_AGENTS.md +1 -1
- package/presets/mavis/mcp-ts/adapter-map.json +1 -1
- package/presets/mavis/mcp-ts/agents/build-verifier.md +17 -0
- 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/rules/preset-pr-checklist.md +2 -2
- package/presets/mavis/next/MAVIS.md +23 -1
- package/presets/mavis/next/REPO_AGENTS.md +1 -1
- 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 +17 -0
- 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/rules/preset-pr-checklist.md +2 -2
- package/presets/mavis/nuxt/MAVIS.md +23 -1
- package/presets/mavis/nuxt/REPO_AGENTS.md +1 -1
- 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 +17 -0
- 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/rules/preset-pr-checklist.md +2 -2
- package/presets/mavis/php-hexagonal/MAVIS.md +23 -1
- package/presets/mavis/php-hexagonal/REPO_AGENTS.md +1 -1
- 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 +17 -0
- 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/rules/preset-pr-checklist.md +2 -2
- package/presets/mavis/php-laravel/MAVIS.md +23 -1
- package/presets/mavis/php-laravel/REPO_AGENTS.md +1 -1
- 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 +17 -0
- 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/rules/preset-pr-checklist.md +2 -2
- package/presets/mavis/platform-contract.json +4 -4
- package/presets/mavis/svelte/MAVIS.md +23 -1
- package/presets/mavis/svelte/REPO_AGENTS.md +1 -1
- 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 +17 -0
- 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/rules/preset-pr-checklist.md +2 -2
- package/presets/opencode/README.md +1 -1
- package/presets/opencode/android-kotlin/OPENCODE.md +23 -2
- package/presets/opencode/android-kotlin/REPO_AGENTS.md +1 -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 +17 -0
- 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/opencode.json +14 -0
- package/presets/opencode/android-kotlin/rules/README.md +7 -2
- package/presets/opencode/android-kotlin/rules/preset-pr-checklist.md +2 -2
- package/presets/opencode/go/OPENCODE.md +23 -2
- package/presets/opencode/go/REPO_AGENTS.md +1 -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 +17 -0
- 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/opencode.json +14 -0
- package/presets/opencode/go/rules/README.md +7 -2
- package/presets/opencode/go/rules/preset-pr-checklist.md +2 -2
- package/presets/opencode/ios-swift/OPENCODE.md +23 -2
- package/presets/opencode/ios-swift/REPO_AGENTS.md +1 -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 +17 -0
- 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/opencode.json +14 -0
- package/presets/opencode/ios-swift/rules/README.md +7 -2
- package/presets/opencode/ios-swift/rules/preset-pr-checklist.md +2 -2
- package/presets/opencode/java/OPENCODE.md +23 -2
- package/presets/opencode/java/REPO_AGENTS.md +1 -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 +17 -0
- 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/opencode.json +14 -0
- package/presets/opencode/java/rules/README.md +7 -2
- package/presets/opencode/java/rules/preset-pr-checklist.md +2 -2
- package/presets/opencode/mcp-ts/OPENCODE.md +23 -2
- package/presets/opencode/mcp-ts/REPO_AGENTS.md +1 -1
- package/presets/opencode/mcp-ts/adapter-map.json +2 -2
- package/presets/opencode/mcp-ts/agents/build-verifier.md +17 -0
- 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/opencode.json +14 -0
- package/presets/opencode/mcp-ts/rules/README.md +7 -2
- package/presets/opencode/mcp-ts/rules/preset-pr-checklist.md +2 -2
- package/presets/opencode/next/OPENCODE.md +23 -2
- package/presets/opencode/next/REPO_AGENTS.md +1 -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 +17 -0
- 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/opencode.json +19 -0
- package/presets/opencode/next/rules/README.md +7 -2
- package/presets/opencode/next/rules/preset-pr-checklist.md +2 -2
- package/presets/opencode/nuxt/OPENCODE.md +23 -2
- package/presets/opencode/nuxt/REPO_AGENTS.md +1 -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 +17 -0
- 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/opencode.json +19 -0
- package/presets/opencode/nuxt/rules/README.md +7 -2
- package/presets/opencode/nuxt/rules/preset-pr-checklist.md +2 -2
- package/presets/opencode/php-hexagonal/OPENCODE.md +23 -2
- package/presets/opencode/php-hexagonal/REPO_AGENTS.md +1 -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 +17 -0
- 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/opencode.json +14 -0
- package/presets/opencode/php-hexagonal/rules/README.md +7 -2
- package/presets/opencode/php-hexagonal/rules/preset-pr-checklist.md +2 -2
- package/presets/opencode/php-laravel/OPENCODE.md +23 -2
- package/presets/opencode/php-laravel/REPO_AGENTS.md +1 -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 +17 -0
- 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/opencode.json +14 -0
- package/presets/opencode/php-laravel/rules/README.md +7 -2
- package/presets/opencode/php-laravel/rules/preset-pr-checklist.md +2 -2
- package/presets/opencode/platform-contract.json +1 -1
- package/presets/opencode/svelte/OPENCODE.md +23 -2
- package/presets/opencode/svelte/REPO_AGENTS.md +1 -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 +17 -0
- 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/opencode.json +19 -0
- package/presets/opencode/svelte/rules/README.md +7 -2
- package/presets/opencode/svelte/rules/preset-pr-checklist.md +2 -2
- package/scripts/check-claude-agent-blocks.mjs +82 -0
- package/scripts/check-local-overlay.sh +40 -4
- package/scripts/check-mavis-local-overlay.mjs +23 -0
- package/scripts/check-mavis-platform-contract.mjs +5 -2
- package/scripts/check-opencode-local-overlay.mjs +19 -0
- package/scripts/check-opencode-platform-contract.mjs +5 -2
- package/scripts/check-preset-structure.sh +9 -0
- package/scripts/check-preset-token-budget.sh +7 -0
- package/scripts/fixtures/cli-golden/claude/next.json +34 -33
- package/scripts/fixtures/cli-golden/cursor/next.json +9 -2
- package/scripts/fixtures/cli-golden/mavis/android-kotlin.json +27 -27
- package/scripts/fixtures/cli-golden/mavis/go.json +25 -25
- package/scripts/fixtures/cli-golden/mavis/ios-swift.json +27 -27
- package/scripts/fixtures/cli-golden/mavis/java.json +25 -25
- package/scripts/fixtures/cli-golden/mavis/mcp-ts.json +9 -9
- package/scripts/fixtures/cli-golden/mavis/next.json +34 -27
- package/scripts/fixtures/cli-golden/mavis/nuxt.json +27 -27
- package/scripts/fixtures/cli-golden/mavis/php-hexagonal.json +25 -25
- package/scripts/fixtures/cli-golden/mavis/php-laravel.json +25 -25
- package/scripts/fixtures/cli-golden/mavis/svelte.json +27 -27
- package/scripts/fixtures/cli-golden/opencode/android-kotlin.json +29 -29
- package/scripts/fixtures/cli-golden/opencode/go.json +27 -27
- package/scripts/fixtures/cli-golden/opencode/ios-swift.json +29 -29
- package/scripts/fixtures/cli-golden/opencode/java.json +27 -27
- package/scripts/fixtures/cli-golden/opencode/mcp-ts.json +11 -11
- package/scripts/fixtures/cli-golden/opencode/next.json +36 -29
- package/scripts/fixtures/cli-golden/opencode/nuxt.json +29 -29
- package/scripts/fixtures/cli-golden/opencode/php-hexagonal.json +27 -27
- package/scripts/fixtures/cli-golden/opencode/php-laravel.json +27 -27
- package/scripts/fixtures/cli-golden/opencode/svelte.json +29 -29
- package/scripts/inject-claude-agent-rules-block.mjs +83 -0
- package/scripts/lib/generate-adapter-common.mjs +182 -0
- package/scripts/lib/generate-mavis-adapter.mjs +55 -10
- package/scripts/lib/generate-opencode-adapter.mjs +76 -12
- package/scripts/lib/stack-platform-profiles.mjs +321 -1
- package/scripts/sync-claude-harness-wiring.mjs +56 -0
- package/scripts/sync-claude-settings.mjs +81 -0
- package/scripts/sync-dogfood-claude.sh +62 -0
- package/scripts/test-cli-mcp-merge.mjs +54 -0
- package/scripts/test-mavis-orchestration.mjs +3 -2
|
@@ -34,7 +34,296 @@ const BACKEND_DEVELOPER_AGENTS = [
|
|
|
34
34
|
|
|
35
35
|
const QUALITY_OVERLAY = ['code-quality-and-refactoring', 'ai-local-overlay'];
|
|
36
36
|
|
|
37
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* Requestable-but-critical rules a subagent must Read explicitly, because a
|
|
39
|
+
* `Task`/`mcode exec`/Claude subagent starts blank and inherits no always-on
|
|
40
|
+
* context. Filtered to stems that exist for the stack at generation time.
|
|
41
|
+
*/
|
|
42
|
+
const NEXT_ZONE_RULES = [
|
|
43
|
+
'architecture-boundaries',
|
|
44
|
+
'public-imports',
|
|
45
|
+
'react-ui',
|
|
46
|
+
'store-rtk',
|
|
47
|
+
'react-next-anti-hallucination',
|
|
48
|
+
'no-props-spread',
|
|
49
|
+
'no-type-assertion-as-import-export',
|
|
50
|
+
'feature-delivery-workflow',
|
|
51
|
+
'reference-features',
|
|
52
|
+
'anti-sycophancy-discipline',
|
|
53
|
+
'post-change-lint',
|
|
54
|
+
'mcp-usage',
|
|
55
|
+
];
|
|
56
|
+
|
|
57
|
+
const UNIVERSAL_ZONE_RULES = [
|
|
58
|
+
'architecture-boundaries',
|
|
59
|
+
'feature-delivery-workflow',
|
|
60
|
+
'reference-features',
|
|
61
|
+
'anti-sycophancy-discipline',
|
|
62
|
+
'post-change-lint',
|
|
63
|
+
'mcp-usage',
|
|
64
|
+
];
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Glob-only Next stems absent from NEXT_ZONE_RULES. Only the implementer role
|
|
68
|
+
* receives them — the roles that edit those zones — not every agent.
|
|
69
|
+
*/
|
|
70
|
+
const NEXT_GLOB_ONLY_ZONE_RULES = [
|
|
71
|
+
'architecture-boundaries-ui',
|
|
72
|
+
'arrow-functions',
|
|
73
|
+
'css-property-order-stylelint',
|
|
74
|
+
'layer-barrel-exports',
|
|
75
|
+
'navigation-router-stack',
|
|
76
|
+
'navigation-router-ui',
|
|
77
|
+
'next-app-router',
|
|
78
|
+
'react-a11y-coding',
|
|
79
|
+
'types-jsdoc',
|
|
80
|
+
];
|
|
81
|
+
|
|
82
|
+
const FRONTEND_API_ZONE_RULES = ['api-services', 'http-client'];
|
|
83
|
+
const HEX_API_ZONE_RULES = ['api-http', 'api-grpc'];
|
|
84
|
+
const HEX_DOMAIN_ZONE_RULES = [
|
|
85
|
+
'domain-layer',
|
|
86
|
+
'application-usecases',
|
|
87
|
+
'ports-interfaces',
|
|
88
|
+
'adapters-driven',
|
|
89
|
+
'adapters-driving',
|
|
90
|
+
'composition-root',
|
|
91
|
+
'module-public-api',
|
|
92
|
+
'persistence-adapters',
|
|
93
|
+
'messaging-adapters',
|
|
94
|
+
];
|
|
95
|
+
|
|
96
|
+
/** Domain stems beyond UNIVERSAL_ZONE_RULES for the implementer role. */
|
|
97
|
+
const DOMAIN_ZONE_RULES = {
|
|
98
|
+
next: [
|
|
99
|
+
...NEXT_ZONE_RULES.filter((stem) => !UNIVERSAL_ZONE_RULES.includes(stem)),
|
|
100
|
+
...NEXT_GLOB_ONLY_ZONE_RULES,
|
|
101
|
+
],
|
|
102
|
+
nuxt: [
|
|
103
|
+
'public-imports',
|
|
104
|
+
'vue-ui',
|
|
105
|
+
'store-pinia',
|
|
106
|
+
'vue-nuxt-anti-hallucination',
|
|
107
|
+
'no-v-bind-spread',
|
|
108
|
+
'no-type-assertion-as-import-export',
|
|
109
|
+
'architecture-boundaries-ui',
|
|
110
|
+
'css-property-order-stylelint',
|
|
111
|
+
'layer-barrel-exports',
|
|
112
|
+
'navigation-router-stack',
|
|
113
|
+
'navigation-router-ui',
|
|
114
|
+
'nuxt-pages-routing',
|
|
115
|
+
'vue-a11y-coding',
|
|
116
|
+
'types-jsdoc',
|
|
117
|
+
'script-setup-conventions',
|
|
118
|
+
],
|
|
119
|
+
svelte: [
|
|
120
|
+
'public-imports',
|
|
121
|
+
'svelte-ui',
|
|
122
|
+
'store-svelte',
|
|
123
|
+
'svelte-sveltekit-anti-hallucination',
|
|
124
|
+
'no-rest-props-spread',
|
|
125
|
+
'no-type-assertion-as-import-export',
|
|
126
|
+
'architecture-boundaries-ui',
|
|
127
|
+
'css-property-order-stylelint',
|
|
128
|
+
'layer-barrel-exports',
|
|
129
|
+
'navigation-router-stack',
|
|
130
|
+
'navigation-router-ui',
|
|
131
|
+
'sveltekit-routing',
|
|
132
|
+
'svelte-a11y-coding',
|
|
133
|
+
'types-jsdoc',
|
|
134
|
+
'svelte-script-conventions',
|
|
135
|
+
],
|
|
136
|
+
'ios-swift': [
|
|
137
|
+
'swiftui-ui',
|
|
138
|
+
'swift-conventions',
|
|
139
|
+
'state-and-viewmodels',
|
|
140
|
+
'navigation-coordinators',
|
|
141
|
+
'persistence-data',
|
|
142
|
+
'module-public-api',
|
|
143
|
+
],
|
|
144
|
+
'android-kotlin': [
|
|
145
|
+
'compose-ui',
|
|
146
|
+
'kotlin-conventions',
|
|
147
|
+
'state-and-viewmodels',
|
|
148
|
+
'navigation-feature-launcher',
|
|
149
|
+
'persistence-data',
|
|
150
|
+
'module-public-api',
|
|
151
|
+
'di-dagger-feature-holders',
|
|
152
|
+
],
|
|
153
|
+
go: [...HEX_DOMAIN_ZONE_RULES, 'go-conventions'],
|
|
154
|
+
java: [...HEX_DOMAIN_ZONE_RULES, 'java-conventions'],
|
|
155
|
+
'php-hexagonal': [...HEX_DOMAIN_ZONE_RULES, 'php-conventions'],
|
|
156
|
+
'php-laravel': [
|
|
157
|
+
'domain-layer',
|
|
158
|
+
'actions-services',
|
|
159
|
+
'eloquent-persistence',
|
|
160
|
+
'events-listeners',
|
|
161
|
+
'jobs-queues',
|
|
162
|
+
'laravel-conventions',
|
|
163
|
+
'module-public-api',
|
|
164
|
+
'policies-authorization',
|
|
165
|
+
'service-providers',
|
|
166
|
+
],
|
|
167
|
+
'mcp-ts': [
|
|
168
|
+
'mcp-tool-design',
|
|
169
|
+
'mcp-contract-testing',
|
|
170
|
+
'mcp-auth-secrets',
|
|
171
|
+
'mcp-transport-packaging',
|
|
172
|
+
'mcp-ts-conventions',
|
|
173
|
+
],
|
|
174
|
+
};
|
|
175
|
+
|
|
176
|
+
const API_ZONE_RULES = {
|
|
177
|
+
next: FRONTEND_API_ZONE_RULES,
|
|
178
|
+
nuxt: FRONTEND_API_ZONE_RULES,
|
|
179
|
+
svelte: FRONTEND_API_ZONE_RULES,
|
|
180
|
+
'ios-swift': ['networking-services'],
|
|
181
|
+
'android-kotlin': ['networking-data'],
|
|
182
|
+
go: HEX_API_ZONE_RULES,
|
|
183
|
+
java: HEX_API_ZONE_RULES,
|
|
184
|
+
'php-hexagonal': HEX_API_ZONE_RULES,
|
|
185
|
+
'php-laravel': ['http-layer', 'routes-api', 'form-requests'],
|
|
186
|
+
'mcp-ts': [],
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
const E2E_ZONE_RULES = {
|
|
190
|
+
next: ['playwright-agents', 'tests-e2e-structure'],
|
|
191
|
+
nuxt: ['playwright-agents', 'tests-e2e-structure'],
|
|
192
|
+
svelte: ['playwright-agents', 'tests-e2e-structure'],
|
|
193
|
+
'ios-swift': ['tests-ui'],
|
|
194
|
+
'android-kotlin': ['tests-ui'],
|
|
195
|
+
go: ['tests-integration', 'tests-e2e'],
|
|
196
|
+
java: ['tests-integration', 'tests-e2e'],
|
|
197
|
+
'php-hexagonal': ['tests-integration', 'tests-e2e'],
|
|
198
|
+
'php-laravel': ['tests-integration', 'tests-e2e'],
|
|
199
|
+
'mcp-ts': [],
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
const TOOLING_ZONE_RULES = {
|
|
203
|
+
next: [],
|
|
204
|
+
nuxt: [],
|
|
205
|
+
svelte: [],
|
|
206
|
+
'ios-swift': ['xcode-tooling', 'post-change-build'],
|
|
207
|
+
'android-kotlin': ['gradle-tooling', 'post-change-build'],
|
|
208
|
+
go: ['go-tooling', 'post-change-test'],
|
|
209
|
+
java: ['java-tooling', 'post-change-test'],
|
|
210
|
+
'php-hexagonal': ['php-tooling', 'post-change-test'],
|
|
211
|
+
'php-laravel': ['php-tooling', 'post-change-test'],
|
|
212
|
+
'mcp-ts': ['mcp-ts-tooling', 'post-change-test'],
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
const IMPLEMENTER_AGENTS = new Set(['feature-developer', 'debugger', 'ci-investigator']);
|
|
216
|
+
|
|
217
|
+
function dedupeStems(stems) {
|
|
218
|
+
const seen = new Set();
|
|
219
|
+
const ordered = [];
|
|
220
|
+
for (const stem of stems) {
|
|
221
|
+
if (seen.has(stem)) continue;
|
|
222
|
+
seen.add(stem);
|
|
223
|
+
ordered.push(stem);
|
|
224
|
+
}
|
|
225
|
+
return ordered;
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
function zoneRulesForRole(stack, role) {
|
|
229
|
+
const domain = DOMAIN_ZONE_RULES[stack] ?? [];
|
|
230
|
+
const api = API_ZONE_RULES[stack] ?? [];
|
|
231
|
+
const tooling = TOOLING_ZONE_RULES[stack] ?? [];
|
|
232
|
+
const e2e = E2E_ZONE_RULES[stack] ?? [];
|
|
233
|
+
switch (role) {
|
|
234
|
+
case 'implementer':
|
|
235
|
+
return dedupeStems([...UNIVERSAL_ZONE_RULES, ...domain, ...api, ...tooling]);
|
|
236
|
+
case 'reviewer':
|
|
237
|
+
return dedupeStems([...UNIVERSAL_ZONE_RULES, 'code-review-mr']);
|
|
238
|
+
case 'unit-test':
|
|
239
|
+
return dedupeStems([...UNIVERSAL_ZONE_RULES, 'tests-unit']);
|
|
240
|
+
case 'e2e':
|
|
241
|
+
return dedupeStems([...UNIVERSAL_ZONE_RULES, ...e2e]);
|
|
242
|
+
case 'qa':
|
|
243
|
+
return dedupeStems([...UNIVERSAL_ZONE_RULES, 'tests-unit', ...e2e]);
|
|
244
|
+
case 'api-contract':
|
|
245
|
+
return dedupeStems([...UNIVERSAL_ZONE_RULES, ...api]);
|
|
246
|
+
case 'verifier':
|
|
247
|
+
return dedupeStems([...UNIVERSAL_ZONE_RULES, ...tooling]);
|
|
248
|
+
default:
|
|
249
|
+
return [...UNIVERSAL_ZONE_RULES];
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
const ROLE_KEYS = [
|
|
254
|
+
'implementer',
|
|
255
|
+
'reviewer',
|
|
256
|
+
'unit-test',
|
|
257
|
+
'e2e',
|
|
258
|
+
'qa',
|
|
259
|
+
'api-contract',
|
|
260
|
+
'verifier',
|
|
261
|
+
'default',
|
|
262
|
+
];
|
|
263
|
+
|
|
264
|
+
/** @type {Record<string, Record<string, string[]>>} */
|
|
265
|
+
export const zoneRulesByRole = Object.fromEntries(
|
|
266
|
+
Object.keys(DOMAIN_ZONE_RULES).map((stack) => [
|
|
267
|
+
stack,
|
|
268
|
+
Object.fromEntries(ROLE_KEYS.map((role) => [role, zoneRulesForRole(stack, role)])),
|
|
269
|
+
]),
|
|
270
|
+
);
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* Smallest stem→role map that keeps the 9 Next glob stems on production
|
|
274
|
+
* editors only. Test prefixes win over the developer-agent write list so
|
|
275
|
+
* unit-test roles do not inherit the UI bundle. qa-tester writes tests, not
|
|
276
|
+
* UI zones, so it is not an implementer.
|
|
277
|
+
*/
|
|
278
|
+
export function resolveAgentRole(agentStem) {
|
|
279
|
+
if (agentStem === 'code-reviewer') return 'reviewer';
|
|
280
|
+
if (agentStem.startsWith('unit-test-')) return 'unit-test';
|
|
281
|
+
if (
|
|
282
|
+
agentStem.startsWith('playwright-test-') ||
|
|
283
|
+
agentStem.startsWith('xcuitest-test-') ||
|
|
284
|
+
agentStem.startsWith('instrumentation-test-') ||
|
|
285
|
+
agentStem.startsWith('integration-test-')
|
|
286
|
+
) {
|
|
287
|
+
return 'e2e';
|
|
288
|
+
}
|
|
289
|
+
if (agentStem === 'api-contract-reviewer') return 'api-contract';
|
|
290
|
+
if (agentStem === 'qa-tester') return 'qa';
|
|
291
|
+
if (agentStem === 'build-verifier') return 'verifier';
|
|
292
|
+
if (IMPLEMENTER_AGENTS.has(agentStem)) return 'implementer';
|
|
293
|
+
return 'default';
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Universal harness-level `permission.bash` guards. Apply to every stack.
|
|
298
|
+
* `git commit/push` are universally denied to honor the "human commits" contract
|
|
299
|
+
* from root `AGENTS.md`; package-manager enforcement is stack-driven via
|
|
300
|
+
* `STACK_BASH_PERMISSIONS_OVERRIDES`.
|
|
301
|
+
*/
|
|
302
|
+
const UNIVERSAL_BASH_PERMISSION = {
|
|
303
|
+
'*': 'allow',
|
|
304
|
+
'git commit *': 'deny',
|
|
305
|
+
'git push *': 'deny',
|
|
306
|
+
};
|
|
307
|
+
|
|
308
|
+
const JS_STACK_PACKAGE_GUARDS = {
|
|
309
|
+
'npm *': 'ask',
|
|
310
|
+
'npx *': 'ask',
|
|
311
|
+
'pnpm *': 'ask',
|
|
312
|
+
'bun *': 'ask',
|
|
313
|
+
'npx jest*': 'deny',
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
const STACK_BASH_PERMISSIONS_OVERRIDES = {
|
|
317
|
+
next: { ...JS_STACK_PACKAGE_GUARDS },
|
|
318
|
+
nuxt: { ...JS_STACK_PACKAGE_GUARDS },
|
|
319
|
+
svelte: { ...JS_STACK_PACKAGE_GUARDS },
|
|
320
|
+
};
|
|
321
|
+
|
|
322
|
+
/**
|
|
323
|
+
* `zoneRules` is the pre-S1 homogeneous catalog (still the default shape of the
|
|
324
|
+
* profile). Subagent «Rules to load» blocks use `getZoneRulesForAgent` instead.
|
|
325
|
+
* @typedef {{ title: string, family: string, alwaysOn: string[], zoneRules: string[], developerAgents: string[], bashPermission: Record<string,string> }} StackProfile
|
|
326
|
+
*/
|
|
38
327
|
|
|
39
328
|
/** @type {Record<string, StackProfile>} */
|
|
40
329
|
export const STACK_PROFILES = {
|
|
@@ -42,24 +331,32 @@ export const STACK_PROFILES = {
|
|
|
42
331
|
title: 'Next.js',
|
|
43
332
|
family: 'frontend',
|
|
44
333
|
alwaysOn: ['next-app-core', 'package-manager', ...QUALITY_OVERLAY],
|
|
334
|
+
zoneRules: NEXT_ZONE_RULES,
|
|
45
335
|
developerAgents: FRONTEND_DEVELOPER_AGENTS,
|
|
336
|
+
bashPermission: { ...UNIVERSAL_BASH_PERMISSION, ...JS_STACK_PACKAGE_GUARDS },
|
|
46
337
|
},
|
|
47
338
|
nuxt: {
|
|
48
339
|
title: 'Nuxt 3',
|
|
49
340
|
family: 'frontend',
|
|
50
341
|
alwaysOn: ['nuxt-app-core', 'package-manager', ...QUALITY_OVERLAY],
|
|
342
|
+
zoneRules: UNIVERSAL_ZONE_RULES,
|
|
51
343
|
developerAgents: FRONTEND_DEVELOPER_AGENTS,
|
|
344
|
+
bashPermission: { ...UNIVERSAL_BASH_PERMISSION, ...JS_STACK_PACKAGE_GUARDS },
|
|
52
345
|
},
|
|
53
346
|
svelte: {
|
|
54
347
|
title: 'SvelteKit',
|
|
55
348
|
family: 'frontend',
|
|
56
349
|
alwaysOn: ['svelte-app-core', 'package-manager', ...QUALITY_OVERLAY],
|
|
350
|
+
zoneRules: UNIVERSAL_ZONE_RULES,
|
|
57
351
|
developerAgents: FRONTEND_DEVELOPER_AGENTS,
|
|
352
|
+
bashPermission: { ...UNIVERSAL_BASH_PERMISSION, ...JS_STACK_PACKAGE_GUARDS },
|
|
58
353
|
},
|
|
59
354
|
'ios-swift': {
|
|
60
355
|
title: 'iOS Swift',
|
|
61
356
|
family: 'ios',
|
|
62
357
|
alwaysOn: ['ios-app-core', 'architecture-boundaries', ...QUALITY_OVERLAY],
|
|
358
|
+
zoneRules: UNIVERSAL_ZONE_RULES,
|
|
359
|
+
bashPermission: { ...UNIVERSAL_BASH_PERMISSION },
|
|
63
360
|
developerAgents: [
|
|
64
361
|
...MOBILE_DEVELOPER_BASE,
|
|
65
362
|
'xcuitest-test-generator',
|
|
@@ -70,6 +367,8 @@ export const STACK_PROFILES = {
|
|
|
70
367
|
title: 'Android Kotlin',
|
|
71
368
|
family: 'android',
|
|
72
369
|
alwaysOn: ['android-app-core', 'architecture-boundaries', ...QUALITY_OVERLAY],
|
|
370
|
+
zoneRules: UNIVERSAL_ZONE_RULES,
|
|
371
|
+
bashPermission: { ...UNIVERSAL_BASH_PERMISSION },
|
|
73
372
|
developerAgents: [
|
|
74
373
|
...MOBILE_DEVELOPER_BASE,
|
|
75
374
|
'instrumentation-test-generator',
|
|
@@ -80,31 +379,41 @@ export const STACK_PROFILES = {
|
|
|
80
379
|
title: 'Go hexagonal',
|
|
81
380
|
family: 'backend',
|
|
82
381
|
alwaysOn: ['go-app-core', 'architecture-boundaries', ...QUALITY_OVERLAY],
|
|
382
|
+
zoneRules: UNIVERSAL_ZONE_RULES,
|
|
383
|
+
bashPermission: { ...UNIVERSAL_BASH_PERMISSION },
|
|
83
384
|
developerAgents: BACKEND_DEVELOPER_AGENTS,
|
|
84
385
|
},
|
|
85
386
|
java: {
|
|
86
387
|
title: 'Java hexagonal',
|
|
87
388
|
family: 'backend',
|
|
88
389
|
alwaysOn: ['java-app-core', 'architecture-boundaries', ...QUALITY_OVERLAY],
|
|
390
|
+
zoneRules: UNIVERSAL_ZONE_RULES,
|
|
391
|
+
bashPermission: { ...UNIVERSAL_BASH_PERMISSION },
|
|
89
392
|
developerAgents: BACKEND_DEVELOPER_AGENTS,
|
|
90
393
|
},
|
|
91
394
|
'php-hexagonal': {
|
|
92
395
|
title: 'PHP hexagonal',
|
|
93
396
|
family: 'backend',
|
|
94
397
|
alwaysOn: ['php-app-core', 'architecture-boundaries', ...QUALITY_OVERLAY],
|
|
398
|
+
zoneRules: UNIVERSAL_ZONE_RULES,
|
|
399
|
+
bashPermission: { ...UNIVERSAL_BASH_PERMISSION },
|
|
95
400
|
developerAgents: BACKEND_DEVELOPER_AGENTS,
|
|
96
401
|
},
|
|
97
402
|
'php-laravel': {
|
|
98
403
|
title: 'Laravel',
|
|
99
404
|
family: 'backend',
|
|
100
405
|
alwaysOn: ['laravel-app-core', 'architecture-boundaries', ...QUALITY_OVERLAY],
|
|
406
|
+
zoneRules: UNIVERSAL_ZONE_RULES,
|
|
407
|
+
bashPermission: { ...UNIVERSAL_BASH_PERMISSION },
|
|
101
408
|
developerAgents: BACKEND_DEVELOPER_AGENTS,
|
|
102
409
|
},
|
|
103
410
|
'mcp-ts': {
|
|
104
411
|
title: 'TypeScript MCP',
|
|
105
412
|
family: 'mcp-ts',
|
|
106
413
|
alwaysOn: ['mcp-ts-app-core', 'mcp-server-boundaries', ...QUALITY_OVERLAY],
|
|
414
|
+
zoneRules: UNIVERSAL_ZONE_RULES,
|
|
107
415
|
developerAgents: ['feature-developer'],
|
|
416
|
+
bashPermission: { ...UNIVERSAL_BASH_PERMISSION },
|
|
108
417
|
},
|
|
109
418
|
};
|
|
110
419
|
|
|
@@ -126,6 +435,17 @@ export function getStackProfile(stack) {
|
|
|
126
435
|
return profile;
|
|
127
436
|
}
|
|
128
437
|
|
|
438
|
+
/** Role-trimmed zone stems for one agent. Filtered again to stems that exist at generation time. */
|
|
439
|
+
export function getZoneRulesForAgent(stack, agentStem) {
|
|
440
|
+
getStackProfile(stack);
|
|
441
|
+
const role = resolveAgentRole(agentStem);
|
|
442
|
+
const rules = zoneRulesByRole[stack]?.[role];
|
|
443
|
+
if (!rules) {
|
|
444
|
+
throw new Error(`no zone rules for stack "${stack}" role "${role}"`);
|
|
445
|
+
}
|
|
446
|
+
return rules;
|
|
447
|
+
}
|
|
448
|
+
|
|
129
449
|
export function parseStackArg(argv, { required = true } = {}) {
|
|
130
450
|
let stack;
|
|
131
451
|
for (let index = 0; index < argv.length; index += 1) {
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Append a "## Harness wiring" section to `presets/claude/<stack>/CLAUDE.md`
|
|
4
|
+
* for every released stack. Idempotent: skips files that already contain
|
|
5
|
+
* the heading. Claude presets are hand-maintained; this keeps them aligned
|
|
6
|
+
* with the cross-platform harness story (OpenCode/Mavis parity work).
|
|
7
|
+
*
|
|
8
|
+
* Usage: node scripts/sync-claude-harness-wiring.mjs
|
|
9
|
+
*/
|
|
10
|
+
import fs from 'node:fs';
|
|
11
|
+
import path from 'node:path';
|
|
12
|
+
import { fileURLToPath } from 'node:url';
|
|
13
|
+
import { loadReleasedStacks } from './lib/generate-adapter-common.mjs';
|
|
14
|
+
|
|
15
|
+
const scriptDirectory = path.dirname(fileURLToPath(import.meta.url));
|
|
16
|
+
const packageRoot = path.join(scriptDirectory, '..');
|
|
17
|
+
const presetsRoot = path.join(packageRoot, 'presets');
|
|
18
|
+
const HEADING = '## Harness wiring';
|
|
19
|
+
|
|
20
|
+
const SECTION = `
|
|
21
|
+
## Harness wiring
|
|
22
|
+
|
|
23
|
+
- **Subagent rules** are re-declared inside every \`.claude/agents/*.md\` via
|
|
24
|
+
the \`## Rules to load (subagent context)\` block (always-on + zone rules
|
|
25
|
+
filtered to stems that exist for this stack, using the nested
|
|
26
|
+
\`.claude/rules/<topic>/<stem>.md\` paths). Claude Code subagents inherit
|
|
27
|
+
no parent context, so this block is the authoritative mechanism.
|
|
28
|
+
- \`.claude/settings.json\` ships harness-level denials (universal
|
|
29
|
+
\`git commit/push deny\`; JS stacks also \`npx jest* deny\` and \`npm/npx/pnpm/bun\`
|
|
30
|
+
ask). Re-init overwrites the file (consumer can edit afterwards); mirror
|
|
31
|
+
with root \`AGENTS.md\` if you change the harness.
|
|
32
|
+
`;
|
|
33
|
+
|
|
34
|
+
function sync(stack) {
|
|
35
|
+
const dest = path.join(presetsRoot, 'claude', stack, 'CLAUDE.md');
|
|
36
|
+
if (!fs.existsSync(dest)) {
|
|
37
|
+
console.log(`skip claude/${stack}: no CLAUDE.md`);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
const text = fs.readFileSync(dest, 'utf8');
|
|
41
|
+
if (text.includes(HEADING)) {
|
|
42
|
+
console.log(`claude/${stack}: already has ${HEADING}`);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
const next = text.replace(/\n+$/, '\n') + SECTION;
|
|
46
|
+
fs.writeFileSync(dest, next);
|
|
47
|
+
console.log(`claude/${stack}: appended ${HEADING}`);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function main() {
|
|
51
|
+
for (const stack of loadReleasedStacks(presetsRoot, 'opencode')) {
|
|
52
|
+
sync(stack);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
main();
|
|
@@ -0,0 +1,81 @@
|
|
|
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 hookCommand = (script) =>
|
|
41
|
+
`\${CLAUDE_PROJECT_DIR}/.claude/hooks/${script}`;
|
|
42
|
+
const settings = {
|
|
43
|
+
$schema: 'https://json.schemastore.org/claude-code-settings.json',
|
|
44
|
+
permissions,
|
|
45
|
+
hooks: {
|
|
46
|
+
PreToolUse: [
|
|
47
|
+
{
|
|
48
|
+
matcher: 'Bash',
|
|
49
|
+
hooks: [
|
|
50
|
+
{
|
|
51
|
+
type: 'command',
|
|
52
|
+
command: hookCommand('guard-shell-command.sh'),
|
|
53
|
+
},
|
|
54
|
+
],
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
SubagentStop: [
|
|
58
|
+
{
|
|
59
|
+
hooks: [
|
|
60
|
+
{
|
|
61
|
+
type: 'command',
|
|
62
|
+
command: hookCommand('chain-team-phases.sh'),
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
},
|
|
66
|
+
],
|
|
67
|
+
},
|
|
68
|
+
};
|
|
69
|
+
const dest = path.join(presetsRoot, 'claude', stack, 'settings.json');
|
|
70
|
+
fs.mkdirSync(path.dirname(dest), { recursive: true });
|
|
71
|
+
fs.writeFileSync(dest, `${JSON.stringify(settings, null, 2)}\n`);
|
|
72
|
+
console.log(`claude/${stack}: wrote ${path.relative(packageRoot, dest)}`);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function main() {
|
|
76
|
+
for (const stack of loadReleasedStacks(presetsRoot, 'opencode')) {
|
|
77
|
+
sync(stack);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
main();
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Sync monorepo dogfood root `.claude/` from Claude next preset (packages SoT).
|
|
3
|
+
# Also syncs repo-root AGENTS.md from REPO_AGENTS.md and project `.mcp.json`.
|
|
4
|
+
# Usage (from repo root or any cwd):
|
|
5
|
+
# ./packages/ai-rules/scripts/sync-dogfood-claude.sh
|
|
6
|
+
# AI_RULES_DOGFOOD_PRESET=ios-swift ./packages/ai-rules/scripts/sync-dogfood-claude.sh
|
|
7
|
+
#
|
|
8
|
+
# Note: this monorepo dogfood stays `next` (do not sync other released stacks here).
|
|
9
|
+
set -euo pipefail
|
|
10
|
+
|
|
11
|
+
ROOT="$(cd "$(dirname "$0")/../../.." && pwd)"
|
|
12
|
+
PRESET_NAME="${AI_RULES_DOGFOOD_PRESET:-next}"
|
|
13
|
+
SRC="$ROOT/packages/ai-rules/presets/claude/$PRESET_NAME"
|
|
14
|
+
DST="$ROOT/.claude"
|
|
15
|
+
|
|
16
|
+
if [[ ! -d "$SRC" ]]; then
|
|
17
|
+
echo "error: preset not found: $SRC" >&2
|
|
18
|
+
exit 1
|
|
19
|
+
fi
|
|
20
|
+
|
|
21
|
+
echo "Dogfood sync: $SRC → $DST (preset=$PRESET_NAME)"
|
|
22
|
+
|
|
23
|
+
mkdir -p "$DST"
|
|
24
|
+
|
|
25
|
+
for f in CLAUDE.md MCP.md settings.json README.md; do
|
|
26
|
+
if [[ -f "$SRC/$f" ]]; then
|
|
27
|
+
cp "$SRC/$f" "$DST/$f"
|
|
28
|
+
fi
|
|
29
|
+
done
|
|
30
|
+
|
|
31
|
+
if [[ -f "$SRC/REPO_AGENTS.md" ]]; then
|
|
32
|
+
cp "$SRC/REPO_AGENTS.md" "$ROOT/AGENTS.md"
|
|
33
|
+
echo "Copied REPO_AGENTS.md → $ROOT/AGENTS.md"
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
# Claude init copies mcp.json to the project-root `.mcp.json` (not under .claude/).
|
|
37
|
+
if [[ -f "$SRC/mcp.json" ]]; then
|
|
38
|
+
cp "$SRC/mcp.json" "$ROOT/.mcp.json"
|
|
39
|
+
echo "Copied mcp.json → $ROOT/.mcp.json"
|
|
40
|
+
fi
|
|
41
|
+
|
|
42
|
+
for dir in agents commands hooks rules skills; do
|
|
43
|
+
if [[ -d "$SRC/$dir" ]]; then
|
|
44
|
+
mkdir -p "$DST/$dir"
|
|
45
|
+
rsync -a --delete "$SRC/$dir/" "$DST/$dir/"
|
|
46
|
+
fi
|
|
47
|
+
done
|
|
48
|
+
|
|
49
|
+
if [[ -f "$DST/hooks/chain-team-phases.sh" ]]; then
|
|
50
|
+
chmod +x "$DST/hooks/chain-team-phases.sh"
|
|
51
|
+
fi
|
|
52
|
+
if [[ -f "$DST/hooks/guard-shell-command.sh" ]]; then
|
|
53
|
+
chmod +x "$DST/hooks/guard-shell-command.sh"
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
node -e "
|
|
57
|
+
const { seedAiLocalTeam } = require(process.argv[1]);
|
|
58
|
+
seedAiLocalTeam({ cwd: process.argv[2], presetTeamSrc: process.argv[3] });
|
|
59
|
+
" "$ROOT/packages/ai-rules/bin/lib/seed-ai-local-team.js" "$ROOT" "$SRC/team"
|
|
60
|
+
|
|
61
|
+
echo "Done. Review: git status -- .claude/ AGENTS.md .mcp.json .ai.local/team"
|
|
62
|
+
echo "Tip: run packages/ai-rules/scripts/check-shared-core-drift.sh after core edits."
|
|
@@ -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 });
|
|
@@ -33,9 +33,10 @@ assert.equal(
|
|
|
33
33
|
false,
|
|
34
34
|
'Mavis must not ship hooks.json',
|
|
35
35
|
);
|
|
36
|
-
assert.equal(contract.nativeCapabilities.projectHooks.status, '
|
|
36
|
+
assert.equal(contract.nativeCapabilities.projectHooks.status, 'manual');
|
|
37
|
+
assert.equal(contract.nativeCapabilities.freshInit.status, 'unknown');
|
|
37
38
|
assert.equal(contract.mcp.mode, 'fallback-manual-import');
|
|
38
|
-
console.log('ok P3 semi-auto: projectHooks unknown, no hooks.json');
|
|
39
|
+
console.log('ok P3 semi-auto: projectHooks manual, freshInit unknown, no hooks.json');
|
|
39
40
|
|
|
40
41
|
function readJson(filePath) {
|
|
41
42
|
return JSON.parse(fs.readFileSync(filePath, 'utf8'));
|