@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
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Insert or replace the "## Rules to load (subagent context)" block in every
|
|
4
|
+
* Claude agent for every released stack. Claude presets are hand-maintained
|
|
5
|
+
* (no `generate-claude.mjs`); this codemod keeps parity with the opencode
|
|
6
|
+
* and mavis generators via `expectedRulesToLoadBlock`.
|
|
7
|
+
*
|
|
8
|
+
* Replaces an existing section in place (the block is refreshed when the
|
|
9
|
+
* profile changes). Only the section is rewritten; frontmatter fields and
|
|
10
|
+
* the agent body stay put.
|
|
11
|
+
*
|
|
12
|
+
* Usage: node scripts/inject-claude-agent-rules-block.mjs [--stack <name>]
|
|
13
|
+
* No flag → all released stacks (loaded from presets/opencode/platform-contract.json).
|
|
14
|
+
*/
|
|
15
|
+
import fs from 'node:fs';
|
|
16
|
+
import path from 'node:path';
|
|
17
|
+
import { fileURLToPath } from 'node:url';
|
|
18
|
+
import {
|
|
19
|
+
expectedRulesToLoadBlock,
|
|
20
|
+
indexClaudeRuleStems,
|
|
21
|
+
loadReleasedStacks,
|
|
22
|
+
PLATFORM_RULES_INTRO,
|
|
23
|
+
upsertRulesToLoadBlock,
|
|
24
|
+
} from './lib/generate-adapter-common.mjs';
|
|
25
|
+
import { getStackProfile, getZoneRulesForAgent, parseStackArg } from './lib/stack-platform-profiles.mjs';
|
|
26
|
+
|
|
27
|
+
const scriptDirectory = path.dirname(fileURLToPath(import.meta.url));
|
|
28
|
+
const packageRoot = path.join(scriptDirectory, '..');
|
|
29
|
+
const presetsRoot = path.join(packageRoot, 'presets');
|
|
30
|
+
|
|
31
|
+
function inject(stack) {
|
|
32
|
+
const profile = getStackProfile(stack);
|
|
33
|
+
const claudeRulesDir = path.join(presetsRoot, 'claude', stack, 'rules');
|
|
34
|
+
const { availableStems, pathForStem } = indexClaudeRuleStems(claudeRulesDir);
|
|
35
|
+
const agentsDir = path.join(presetsRoot, 'claude', stack, 'agents');
|
|
36
|
+
if (!fs.existsSync(agentsDir)) {
|
|
37
|
+
console.log(`skip claude/${stack}: no agents dir`);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
let replaced = 0;
|
|
41
|
+
let inserted = 0;
|
|
42
|
+
let unchanged = 0;
|
|
43
|
+
for (const entry of fs.readdirSync(agentsDir)) {
|
|
44
|
+
if (!entry.endsWith('.md') || entry === 'README.md') continue;
|
|
45
|
+
const filePath = path.join(agentsDir, entry);
|
|
46
|
+
const text = fs.readFileSync(filePath, 'utf8');
|
|
47
|
+
const hadBlock = text.includes('## Rules to load (subagent context)');
|
|
48
|
+
const agentStem = entry.slice(0, -'.md'.length);
|
|
49
|
+
const block = expectedRulesToLoadBlock({
|
|
50
|
+
rulesPath: '.claude/rules',
|
|
51
|
+
alwaysOn: profile.alwaysOn,
|
|
52
|
+
zoneRules: getZoneRulesForAgent(stack, agentStem),
|
|
53
|
+
availableStems,
|
|
54
|
+
intro: PLATFORM_RULES_INTRO.claude,
|
|
55
|
+
pathForStem,
|
|
56
|
+
});
|
|
57
|
+
const next = upsertRulesToLoadBlock(text, block);
|
|
58
|
+
if (!next) {
|
|
59
|
+
console.warn(`WARN claude/${stack}/${entry}: missing frontmatter; skipping`);
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
if (next === text) {
|
|
63
|
+
unchanged += 1;
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
fs.writeFileSync(filePath, next);
|
|
67
|
+
if (hadBlock) replaced += 1;
|
|
68
|
+
else inserted += 1;
|
|
69
|
+
}
|
|
70
|
+
console.log(
|
|
71
|
+
`claude/${stack}: replaced ${replaced}, inserted ${inserted}, unchanged ${unchanged}`,
|
|
72
|
+
);
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function main() {
|
|
76
|
+
const explicitStack = parseStackArg(process.argv.slice(2), { required: false });
|
|
77
|
+
const stacks = explicitStack ? [explicitStack] : loadReleasedStacks(presetsRoot, 'opencode');
|
|
78
|
+
for (const stack of stacks) {
|
|
79
|
+
inject(stack);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
main();
|
|
@@ -402,3 +402,185 @@ export function strongTierCell(profile) {
|
|
|
402
402
|
}
|
|
403
403
|
return base;
|
|
404
404
|
}
|
|
405
|
+
|
|
406
|
+
/**
|
|
407
|
+
* Short glosses for the rule stems most commonly cited in subagent prompts.
|
|
408
|
+
* Glosses are stack-neutral; per-platform stems (e.g. `react-ui`) only appear in
|
|
409
|
+
* the stacks that ship them.
|
|
410
|
+
*/
|
|
411
|
+
const RULE_GLOSS = {
|
|
412
|
+
'architecture-boundaries': 'layer boundaries and allowed imports',
|
|
413
|
+
'public-imports': '@/types, @/api barrels',
|
|
414
|
+
'react-ui': 'UI component style (no FC, no spread, decomposition)',
|
|
415
|
+
'store-rtk': 'Redux Toolkit patterns',
|
|
416
|
+
'react-next-anti-hallucination': 'phantom import banlist',
|
|
417
|
+
'feature-delivery-workflow': 'layer order, mockup gate, ux-design gate',
|
|
418
|
+
'reference-features': 'analog files first',
|
|
419
|
+
'anti-sycophancy-discipline': 'procedural anti-sycophancy rules',
|
|
420
|
+
'post-change-lint': 'lint/type-check after code edits',
|
|
421
|
+
'mcp-usage': 'when verifying third-party APIs (Context7)',
|
|
422
|
+
};
|
|
423
|
+
|
|
424
|
+
export const RULES_TO_LOAD_HEADING = '## Rules to load (subagent context)';
|
|
425
|
+
|
|
426
|
+
const RULES_TO_LOAD_CLOSING_PREFIX = 'Also read matching ';
|
|
427
|
+
|
|
428
|
+
/** Platform intro lines. One string per adapter so generators, the Claude codemod, and CI cannot drift. */
|
|
429
|
+
export const PLATFORM_RULES_INTRO = {
|
|
430
|
+
claude:
|
|
431
|
+
'This subagent does **not** inherit the parent session context or `CLAUDE.md`. Read these rules explicitly before acting:',
|
|
432
|
+
opencode:
|
|
433
|
+
'This subagent does **not** inherit `opencode.json` `instructions`. Read these rules explicitly before acting:',
|
|
434
|
+
mavis:
|
|
435
|
+
'This subagent runs standalone (`mcode exec --file`) and inherits no global context. Read these rules explicitly before acting:',
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
/**
|
|
439
|
+
* Build the "## Rules to load (subagent context)" block injected into every
|
|
440
|
+
* generated agent. Subagents (OpenCode `Task`, Mavis `mcode exec --file`,
|
|
441
|
+
* Claude Code subagents) start blank and inherit no always-on context, so this
|
|
442
|
+
* block enumerates the rules the agent must Read explicitly before acting.
|
|
443
|
+
*
|
|
444
|
+
* Filtered to stems that exist for the stack (caller passes `availableStems`).
|
|
445
|
+
* Always-on rules are listed first, then zone rules. Bullet text is produced
|
|
446
|
+
* only here — callers use `expectedRulesToLoadBlock`.
|
|
447
|
+
*
|
|
448
|
+
* @param {{
|
|
449
|
+
* rulesPath: string, // flat rules dir, e.g. '.opencode/rules' or '.mavis/rules'.
|
|
450
|
+
* // Ignored when `pathForStem` is provided.
|
|
451
|
+
* alwaysOn: string[],
|
|
452
|
+
* zoneRules: string[],
|
|
453
|
+
* availableStems: Set<string>,
|
|
454
|
+
* intro: string, // platform-specific single-sentence intro line
|
|
455
|
+
* pathForStem?: (stem: string) => string | undefined, // Claude uses nested layout
|
|
456
|
+
* }} params
|
|
457
|
+
*/
|
|
458
|
+
export function buildRulesToLoadBlock({
|
|
459
|
+
rulesPath,
|
|
460
|
+
alwaysOn,
|
|
461
|
+
zoneRules,
|
|
462
|
+
availableStems,
|
|
463
|
+
intro,
|
|
464
|
+
pathForStem,
|
|
465
|
+
}) {
|
|
466
|
+
const seen = new Set();
|
|
467
|
+
const ordered = [];
|
|
468
|
+
for (const stem of [...(alwaysOn || []), ...(zoneRules || [])]) {
|
|
469
|
+
if (seen.has(stem)) continue;
|
|
470
|
+
if (!availableStems.has(stem)) continue;
|
|
471
|
+
seen.add(stem);
|
|
472
|
+
ordered.push(stem);
|
|
473
|
+
}
|
|
474
|
+
const bullets = ordered
|
|
475
|
+
.map((stem) => {
|
|
476
|
+
const gloss = RULE_GLOSS[stem];
|
|
477
|
+
const resolved = typeof pathForStem === 'function' ? pathForStem(stem) : undefined;
|
|
478
|
+
const ref = resolved || `${rulesPath}/${stem}.md`;
|
|
479
|
+
return gloss ? `- \`${ref}\` — ${gloss}` : `- \`${ref}\``;
|
|
480
|
+
})
|
|
481
|
+
.join('\n');
|
|
482
|
+
return [
|
|
483
|
+
RULES_TO_LOAD_HEADING,
|
|
484
|
+
'',
|
|
485
|
+
intro,
|
|
486
|
+
'',
|
|
487
|
+
bullets,
|
|
488
|
+
'',
|
|
489
|
+
'Also read matching `.ai.local/rules/*.md` (local overlay) for the active zone, and the project strict rules if present.',
|
|
490
|
+
].join('\n');
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
/**
|
|
494
|
+
* Expected «Rules to load» block for one agent. Generators, the Claude inject
|
|
495
|
+
* codemod, and `check-claude-agent-blocks` all call this so bullet text cannot
|
|
496
|
+
* fork. `zoneRules` is the already-resolved list (profile zones, or
|
|
497
|
+
* `getZoneRulesForAgent` once roles apply).
|
|
498
|
+
*/
|
|
499
|
+
export function expectedRulesToLoadBlock(params) {
|
|
500
|
+
return buildRulesToLoadBlock(params);
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
const CLAUDE_MAPPING_ROW = /^\|\s*`([^`]+?\.mdc)`\s*\|\s*`([^`]+?\.md)`\s*\|/;
|
|
504
|
+
|
|
505
|
+
/**
|
|
506
|
+
* Cursor stem → Claude topic path, from `rules/README.md` «Cursor → Claude mapping».
|
|
507
|
+
* Filename stems are not enough: twins such as `code-quality.md` keep the
|
|
508
|
+
* Cursor stem `code-quality-and-refactoring`. A row counts only when the file exists.
|
|
509
|
+
*/
|
|
510
|
+
export function indexClaudeRuleStems(claudeRulesDir) {
|
|
511
|
+
const stemToRelPath = new Map();
|
|
512
|
+
const availableStems = new Set();
|
|
513
|
+
const readmePath = path.join(claudeRulesDir, 'README.md');
|
|
514
|
+
if (fs.existsSync(readmePath)) {
|
|
515
|
+
let section = fs.readFileSync(readmePath, 'utf8');
|
|
516
|
+
const marker = '## Cursor → Claude mapping';
|
|
517
|
+
const markerAt = section.indexOf(marker);
|
|
518
|
+
if (markerAt >= 0) {
|
|
519
|
+
section = section.slice(markerAt);
|
|
520
|
+
const nextHeading = section.slice(marker.length).search(/\n## (?!#)/);
|
|
521
|
+
if (nextHeading >= 0) {
|
|
522
|
+
section = section.slice(0, marker.length + nextHeading);
|
|
523
|
+
}
|
|
524
|
+
}
|
|
525
|
+
for (const line of section.split('\n')) {
|
|
526
|
+
const match = line.match(CLAUDE_MAPPING_ROW);
|
|
527
|
+
if (!match) continue;
|
|
528
|
+
const stem = match[1].slice(0, -'.mdc'.length);
|
|
529
|
+
const relPath = match[2];
|
|
530
|
+
if (!fs.existsSync(path.join(claudeRulesDir, relPath))) continue;
|
|
531
|
+
if (!stemToRelPath.has(stem)) {
|
|
532
|
+
stemToRelPath.set(stem, relPath);
|
|
533
|
+
availableStems.add(stem);
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
const pathForStem = (stem) => {
|
|
538
|
+
const rel = stemToRelPath.get(stem);
|
|
539
|
+
return rel ? `.claude/rules/${rel}` : undefined;
|
|
540
|
+
};
|
|
541
|
+
return { availableStems, pathForStem };
|
|
542
|
+
}
|
|
543
|
+
|
|
544
|
+
/** Section from the heading through the closing "Also read matching" line, or ''. */
|
|
545
|
+
export function extractRulesToLoadBlock(text) {
|
|
546
|
+
const start = text.indexOf(RULES_TO_LOAD_HEADING);
|
|
547
|
+
if (start < 0) return '';
|
|
548
|
+
const lines = text.slice(start).split('\n');
|
|
549
|
+
const end = lines.findIndex((line) => line.startsWith(RULES_TO_LOAD_CLOSING_PREFIX));
|
|
550
|
+
if (end < 0) return '';
|
|
551
|
+
return lines.slice(0, end + 1).join('\n');
|
|
552
|
+
}
|
|
553
|
+
|
|
554
|
+
/**
|
|
555
|
+
* Insert or replace the rules block immediately after YAML frontmatter.
|
|
556
|
+
* Returns null when the opening `---` is missing. Repairs a missing closer
|
|
557
|
+
* when a previous insert left the heading inside the frontmatter.
|
|
558
|
+
* Does not rewrite the agent body.
|
|
559
|
+
*/
|
|
560
|
+
export function upsertRulesToLoadBlock(markdown, block) {
|
|
561
|
+
if (!markdown.startsWith('---\n')) return null;
|
|
562
|
+
const rest = markdown.slice(4);
|
|
563
|
+
const headingAt = rest.indexOf(`\n${RULES_TO_LOAD_HEADING}`);
|
|
564
|
+
const closeAt = rest.indexOf('\n---\n');
|
|
565
|
+
let frontmatter;
|
|
566
|
+
let body;
|
|
567
|
+
if (closeAt >= 0 && (headingAt < 0 || closeAt < headingAt)) {
|
|
568
|
+
frontmatter = rest.slice(0, closeAt).replace(/\s+$/, '');
|
|
569
|
+
body = rest.slice(closeAt + '\n---\n'.length).replace(/^\n/, '');
|
|
570
|
+
} else if (headingAt >= 0) {
|
|
571
|
+
frontmatter = rest.slice(0, headingAt).replace(/\s+$/, '');
|
|
572
|
+
body = rest.slice(headingAt + 1);
|
|
573
|
+
} else {
|
|
574
|
+
return null;
|
|
575
|
+
}
|
|
576
|
+
const existing = extractRulesToLoadBlock(body);
|
|
577
|
+
if (existing) {
|
|
578
|
+
const at = body.indexOf(existing);
|
|
579
|
+
const before = body.slice(0, at).replace(/\s+$/, '');
|
|
580
|
+
const after = body.slice(at + existing.length).replace(/^\n+/, '');
|
|
581
|
+
body = `${before ? `${before}\n\n` : ''}${block}\n\n${after}`;
|
|
582
|
+
} else {
|
|
583
|
+
body = `${block}\n\n${body.replace(/^\n+/, '')}`;
|
|
584
|
+
}
|
|
585
|
+
return `---\n${frontmatter}\n---\n\n${body}`.replace(/\s+$/, '\n');
|
|
586
|
+
}
|
|
@@ -5,6 +5,8 @@ import fs from 'node:fs';
|
|
|
5
5
|
import path from 'node:path';
|
|
6
6
|
import { fileURLToPath } from 'node:url';
|
|
7
7
|
import {
|
|
8
|
+
expectedRulesToLoadBlock,
|
|
9
|
+
PLATFORM_RULES_INTRO,
|
|
8
10
|
countAgentRoleFiles,
|
|
9
11
|
deriveAdapterStack,
|
|
10
12
|
dropLeadingHeading,
|
|
@@ -25,7 +27,7 @@ import {
|
|
|
25
27
|
stripFrontmatter,
|
|
26
28
|
stripInstallSection,
|
|
27
29
|
} from './generate-adapter-common.mjs';
|
|
28
|
-
import { getStackProfile, parseStackArg } from './stack-platform-profiles.mjs';
|
|
30
|
+
import { getStackProfile, getZoneRulesForAgent, parseStackArg } from './stack-platform-profiles.mjs';
|
|
29
31
|
|
|
30
32
|
const libDirectory = path.dirname(fileURLToPath(import.meta.url));
|
|
31
33
|
const packageRoot = path.join(libDirectory, '..', '..');
|
|
@@ -164,15 +166,35 @@ Do not write \`~/.minimax/**\`.
|
|
|
164
166
|
- Roles: \`mcode exec --file .mavis/agents/<role>.md --output-format json\`.
|
|
165
167
|
- Commands: natural-language procedures in \`.mavis/commands/\`, or
|
|
166
168
|
\`mcode exec --file .mavis/commands/task.md "<task>"\`.
|
|
167
|
-
- After a producer receipt, run \`
|
|
169
|
+
- After a producer receipt, run the chain by hand (\`projectHooks\` is \`manual\`, not auto-registered):
|
|
170
|
+
\`printf '%s\\n' '{"status":"completed"}' | bash .mavis/hooks/chain-team-phases.sh\`.
|
|
171
|
+
Procedures: \`mcode exec --file .mavis/commands/<name>.md\`. Roles: \`mcode exec --file .mavis/agents/<role>.md\`.
|
|
168
172
|
Agents must not write lifecycle fields in \`status.json\` / \`metrics.json\`.
|
|
169
173
|
|
|
170
174
|
## Essential rules (read every turn)
|
|
171
175
|
|
|
172
176
|
${essential}
|
|
173
177
|
|
|
178
|
+
Every turn, probe \`ls -la .ai.local\`, then apply \`.ai.local/rules/*.md\` and
|
|
179
|
+
\`.ai.local/conventions.md\`. Acknowledge \`Using .ai.local: <rule-name>\`.
|
|
180
|
+
Guide: \`docs/LOCAL-OVERLAY.md\`. These essential rules are a prompt contract.
|
|
181
|
+
\`nativeProjectRules\` is \`unknown\` — do not claim engine \`alwaysApply\`.
|
|
182
|
+
|
|
174
183
|
See \`.mavis/rules/README.md\` for the full catalog and loading strategy.
|
|
175
184
|
|
|
185
|
+
## Harness wiring
|
|
186
|
+
|
|
187
|
+
- **Subagent rules** are re-declared inside every \`.mavis/agents/*.md\` via
|
|
188
|
+
the \`## Rules to load (subagent context)\` block (always-on + zone rules
|
|
189
|
+
filtered to stems that exist for this stack). Subagents run via
|
|
190
|
+
\`mcode exec --file\` and inherit no global context, so the block is the
|
|
191
|
+
authoritative mechanism.
|
|
192
|
+
- **MiniMax Code has no permission/instructions config schema** (no analog
|
|
193
|
+
of OpenCode's \`opencode.json\` \`permission.bash\` or Claude Code's
|
|
194
|
+
\`.claude/settings.json\`). Universal \`git commit/push deny\` and
|
|
195
|
+
package-manager guards live in the agent prompt bodies; harness-level
|
|
196
|
+
enforcement is intentionally omitted.
|
|
197
|
+
|
|
176
198
|
**Platform docs:** published with the \`@bonesofspring/ai-rules\` package
|
|
177
199
|
(\`docs/MAVIS.md\`, \`docs/MAVIS-COMPATIBILITY.md\`) — **not** copied into
|
|
178
200
|
the consumer repo. Source: https://github.com/bonesofspring/ai-rules
|
|
@@ -188,6 +210,8 @@ npx @bonesofspring/ai-rules init mavis --preset ${stack}
|
|
|
188
210
|
Copies rules, commands, agents, hooks, skills, \`MAVIS.md\` → \`.mavis/AGENTS.md\`,
|
|
189
211
|
\`MCP.md\`, \`mcp.json\` → \`.mavis/mcp.json\`, plus \`REPO_AGENTS.md\` → root \`AGENTS.md\`.
|
|
190
212
|
Seeds \`.ai.local/team/\`.
|
|
213
|
+
\`freshInit\` is \`unknown\`: \`mcode init\` is TTY-only and a live first \`init mavis\` is not verified.
|
|
214
|
+
MCP mode is \`fallback-manual-import\`: import \`.mavis/mcp.json\` in the MiniMax Code UI. Do not write \`~/.minimax/**\`.
|
|
191
215
|
${skillsLine}
|
|
192
216
|
`;
|
|
193
217
|
}
|
|
@@ -345,6 +369,16 @@ export function generateMavisStack(stack, { root = packageRoot } = {}) {
|
|
|
345
369
|
const alwaysOn = new Set(profile.alwaysOn);
|
|
346
370
|
const rewriteProse = (text) => finalizeMavisProse(text, stack);
|
|
347
371
|
|
|
372
|
+
const cursorRulesDir = path.join(root, 'presets', 'cursor', stack, 'rules');
|
|
373
|
+
const availableStems = new Set();
|
|
374
|
+
if (fs.existsSync(cursorRulesDir)) {
|
|
375
|
+
for (const entry of fs.readdirSync(cursorRulesDir)) {
|
|
376
|
+
if (entry.endsWith('.mdc')) {
|
|
377
|
+
availableStems.add(entry.slice(0, -'.mdc'.length));
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
|
|
348
382
|
return deriveAdapterStack({
|
|
349
383
|
platform: 'mavis',
|
|
350
384
|
stack,
|
|
@@ -400,14 +434,25 @@ export function generateMavisStack(stack, { root = packageRoot } = {}) {
|
|
|
400
434
|
},
|
|
401
435
|
{
|
|
402
436
|
match: (source) => source.startsWith('agents/') && source.endsWith('.md'),
|
|
403
|
-
map: ({ source, sourceText }) =>
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
437
|
+
map: ({ source, sourceText }) => {
|
|
438
|
+
const body = transformMarkdown(sourceText, stack, { allowEmbedEntry: false });
|
|
439
|
+
const stem = path.basename(source, '.md');
|
|
440
|
+
const rulesBlock = expectedRulesToLoadBlock({
|
|
441
|
+
rulesPath: '.mavis/rules',
|
|
442
|
+
alwaysOn: profile.alwaysOn,
|
|
443
|
+
zoneRules: getZoneRulesForAgent(stack, stem),
|
|
444
|
+
availableStems,
|
|
445
|
+
intro: PLATFORM_RULES_INTRO.mavis,
|
|
446
|
+
});
|
|
447
|
+
return {
|
|
448
|
+
target: source,
|
|
449
|
+
content: `${rulesBlock}\n\n${body}`,
|
|
450
|
+
category: 'agents',
|
|
451
|
+
disposition: 'transform',
|
|
452
|
+
loadMode: 'manual',
|
|
453
|
+
reason: 'Native workspace agent discovery is unknown; attach with mcode exec --file',
|
|
454
|
+
};
|
|
455
|
+
},
|
|
411
456
|
},
|
|
412
457
|
{
|
|
413
458
|
match: (source) => source.startsWith('skills/') && source.endsWith('/SKILL.md'),
|
|
@@ -5,6 +5,8 @@ import fs from 'node:fs';
|
|
|
5
5
|
import path from 'node:path';
|
|
6
6
|
import { fileURLToPath } from 'node:url';
|
|
7
7
|
import {
|
|
8
|
+
expectedRulesToLoadBlock,
|
|
9
|
+
PLATFORM_RULES_INTRO,
|
|
8
10
|
countAgentRoleFiles,
|
|
9
11
|
deriveAdapterStack,
|
|
10
12
|
dropLeadingHeading,
|
|
@@ -27,6 +29,7 @@ import {
|
|
|
27
29
|
} from './generate-adapter-common.mjs';
|
|
28
30
|
import {
|
|
29
31
|
AGENT_WRITE_SCOPES,
|
|
32
|
+
getZoneRulesForAgent,
|
|
30
33
|
getStackProfile,
|
|
31
34
|
parseStackArg,
|
|
32
35
|
REVIEW_AGENTS,
|
|
@@ -131,7 +134,7 @@ function yamlEditPermission(canEditProduction, extraScopes) {
|
|
|
131
134
|
return `permission:\n edit:\n "*": deny\n${globLines}`;
|
|
132
135
|
}
|
|
133
136
|
|
|
134
|
-
function transformAgent(source, sourceText, stack, developerAgents) {
|
|
137
|
+
function transformAgent(source, sourceText, stack, developerAgents, profile, availableStems) {
|
|
135
138
|
const { frontmatter, body } = stripFrontmatter(sourceText);
|
|
136
139
|
const fields = parseFrontmatterFields(frontmatter);
|
|
137
140
|
const stem = path.basename(source, '.md');
|
|
@@ -141,7 +144,14 @@ function transformAgent(source, sourceText, stack, developerAgents) {
|
|
|
141
144
|
const description = fields.description || stem;
|
|
142
145
|
const header = `---\nname: ${stem}\ndescription: ${yamlString(description)}\nmode: subagent\n${permission}\n---\n\n`;
|
|
143
146
|
const transformed = finalizeOpencodeProse(body, stack);
|
|
144
|
-
|
|
147
|
+
const rulesBlock = expectedRulesToLoadBlock({
|
|
148
|
+
rulesPath: '.opencode/rules',
|
|
149
|
+
alwaysOn: profile?.alwaysOn ?? [],
|
|
150
|
+
zoneRules: getZoneRulesForAgent(stack, stem),
|
|
151
|
+
availableStems: availableStems ?? new Set(),
|
|
152
|
+
intro: PLATFORM_RULES_INTRO.opencode,
|
|
153
|
+
});
|
|
154
|
+
let withNote = `${rulesBlock}\n\n${transformed}`;
|
|
145
155
|
if (!canEditProduction) {
|
|
146
156
|
let leadIn;
|
|
147
157
|
if (extraScopes.length > 0) {
|
|
@@ -152,7 +162,7 @@ function transformAgent(source, sourceText, stack, developerAgents) {
|
|
|
152
162
|
} else {
|
|
153
163
|
leadIn = 'Write only team artifacts under `.ai.local/team/**`. Do not edit production code.';
|
|
154
164
|
}
|
|
155
|
-
withNote = `${leadIn}\n\n${transformed}`;
|
|
165
|
+
withNote = `${leadIn}\n\n${rulesBlock}\n\n${transformed}`;
|
|
156
166
|
}
|
|
157
167
|
return `${header}${withNote.endsWith('\n') ? withNote : `${withNote}\n`}`;
|
|
158
168
|
}
|
|
@@ -188,7 +198,7 @@ function transformCommand(sourceText, stack) {
|
|
|
188
198
|
return `${header}${next.endsWith('\n') ? next : `${next}\n`}`;
|
|
189
199
|
}
|
|
190
200
|
|
|
191
|
-
function cursorMcpToOpencode(sourceText) {
|
|
201
|
+
function cursorMcpToOpencode(sourceText, profile, availableStems) {
|
|
192
202
|
const parsed = JSON.parse(sourceText);
|
|
193
203
|
const mcp = {};
|
|
194
204
|
for (const [id, server] of Object.entries(parsed.mcpServers || {})) {
|
|
@@ -208,7 +218,25 @@ function cursorMcpToOpencode(sourceText) {
|
|
|
208
218
|
mcp[id] = mapped;
|
|
209
219
|
}
|
|
210
220
|
}
|
|
211
|
-
|
|
221
|
+
// Compact instructions: always-on rule paths + .opencode/AGENTS.md (root
|
|
222
|
+
// AGENTS.md is auto-loaded natively). Filter to stems that exist for the
|
|
223
|
+
// stack so consumers don't see phantom references. Permission.bash enforces
|
|
224
|
+
// the harness-level "no commit/push" and JS-stack package-manager rules.
|
|
225
|
+
// mergeOpencodeConfig unions preset instruction paths and fills missing
|
|
226
|
+
// bash keys on re-init; consumer extras and same-key overrides win.
|
|
227
|
+
const instructions = [
|
|
228
|
+
'.opencode/AGENTS.md',
|
|
229
|
+
...(profile?.alwaysOn ?? [])
|
|
230
|
+
.filter((stem) => availableStems?.has(stem))
|
|
231
|
+
.map((stem) => `.opencode/rules/${stem}.md`),
|
|
232
|
+
];
|
|
233
|
+
const out = {
|
|
234
|
+
$schema: 'https://opencode.ai/config.json',
|
|
235
|
+
instructions,
|
|
236
|
+
permission: { bash: profile?.bashPermission ?? {} },
|
|
237
|
+
mcp,
|
|
238
|
+
};
|
|
239
|
+
return `${JSON.stringify(out, null, 2)}\n`;
|
|
212
240
|
}
|
|
213
241
|
|
|
214
242
|
function opencodeEntryTitle(sourceText) {
|
|
@@ -244,15 +272,35 @@ Root \`AGENTS.md\` is native always-on. Read it first, then this file.
|
|
|
244
272
|
- Other rules: lazy \`Read\` \`.opencode/rules/<stem>.md\` when the task matches.
|
|
245
273
|
- Agents: native \`@name\` / Task from \`.opencode/agents/\`.
|
|
246
274
|
- Commands: native \`/task\` from \`.opencode/commands/\`.
|
|
247
|
-
- After a producer receipt, run \`
|
|
275
|
+
- After a producer receipt, run the chain by hand (\`projectHooks\` is \`manual\`; this preset ships no plugin):
|
|
276
|
+
\`printf '%s\\n' '{"status":"completed"}' | bash .opencode/hooks/chain-team-phases.sh\`.
|
|
277
|
+
Slash commands are native (\`/task\` from \`.opencode/commands/\`). Do not assume \`SubagentStop\` auto-chain.
|
|
248
278
|
Agents must not write lifecycle fields in \`status.json\` / \`metrics.json\`.
|
|
249
279
|
|
|
250
280
|
## Essential rules (read every turn)
|
|
251
281
|
|
|
252
282
|
${essential}
|
|
253
283
|
|
|
284
|
+
Every turn, probe \`ls -la .ai.local\`, then apply \`.ai.local/rules/*.md\` and
|
|
285
|
+
\`.ai.local/conventions.md\`. Acknowledge \`Using .ai.local: <rule-name>\`.
|
|
286
|
+
Guide: \`docs/LOCAL-OVERLAY.md\`. These essential rules are a prompt contract.
|
|
287
|
+
\`nativeProjectRules\` is \`no-equivalent\` — do not claim engine \`alwaysApply\`.
|
|
288
|
+
|
|
254
289
|
See \`.opencode/rules/README.md\` for the full catalog and loading strategy.
|
|
255
290
|
|
|
291
|
+
## Harness wiring
|
|
292
|
+
|
|
293
|
+
- \`opencode.json\` carries a compact \`instructions\` list (always-on rule
|
|
294
|
+
paths + \`.opencode/AGENTS.md\`) and a harness-level \`permission.bash\`
|
|
295
|
+
block. On re-init, \`mergeOpencodeConfig\` unions preset instruction paths
|
|
296
|
+
into the consumer list and fills missing bash keys. Extra paths and
|
|
297
|
+
same-key overrides stay.
|
|
298
|
+
- **Subagent rules** are re-declared inside every \`.opencode/agents/*.md\`
|
|
299
|
+
via the \`## Rules to load (subagent context)\` block (always-on + zone
|
|
300
|
+
rules filtered to stems that exist for this stack). \`Task\`-launched
|
|
301
|
+
subagents do not inherit the parent's \`instructions\`, so this block
|
|
302
|
+
is the authoritative mechanism.
|
|
303
|
+
|
|
256
304
|
**Platform docs:** published with the \`@bonesofspring/ai-rules\` package
|
|
257
305
|
(\`docs/OPENCODE.md\`, \`docs/OPENCODE-COMPATIBILITY.md\`) — **not** copied into
|
|
258
306
|
the consumer repo. Source: https://github.com/bonesofspring/ai-rules
|
|
@@ -267,7 +315,8 @@ npx @bonesofspring/ai-rules init opencode --preset ${stack}
|
|
|
267
315
|
|
|
268
316
|
Copies rules, commands, agents, hooks, skills, \`OPENCODE.md\` →
|
|
269
317
|
\`.opencode/AGENTS.md\`, \`MCP.md\`, \`opencode.json\` → project \`opencode.json\`
|
|
270
|
-
(\`mcp\` merge
|
|
318
|
+
(\`mcp\` merge, instruction-path union, missing bash keys), plus
|
|
319
|
+
\`REPO_AGENTS.md\` → root \`AGENTS.md\`. Seeds \`.ai.local/team/\`.
|
|
271
320
|
`;
|
|
272
321
|
}
|
|
273
322
|
|
|
@@ -377,8 +426,13 @@ Plain Markdown. OpenCode does **not** auto-load these files. Root \`AGENTS.md\`
|
|
|
377
426
|
and \`.opencode/AGENTS.md\` list four essential paths to Read immediately; the
|
|
378
427
|
rest are lazy-loaded when the task matches.
|
|
379
428
|
|
|
380
|
-
|
|
381
|
-
|
|
429
|
+
Subagent tasks (\`Task\`/\`@name\`) start blank and never read these rule files;
|
|
430
|
+
the **authoritative** mechanism is the \`## Rules to load (subagent context)\`
|
|
431
|
+
block injected into every \`.opencode/agents/*.md\`. The preset also adds a
|
|
432
|
+
compact \`opencode.json\` \`instructions\` list (alwaysOn paths +
|
|
433
|
+
\`.opencode/AGENTS.md\`) as a hedge for the parent context, with
|
|
434
|
+
\`bin/opencode-install.js\` filling-if-absent on re-init; do **not** treat
|
|
435
|
+
\`instructions\` as the only always-on path (V2 may ignore the field).
|
|
382
436
|
|
|
383
437
|
## Essential (entry-critical)
|
|
384
438
|
|
|
@@ -427,6 +481,16 @@ export function generateOpencodeStack(stack, { root = packageRoot } = {}) {
|
|
|
427
481
|
const developerAgents = new Set(profile.developerAgents);
|
|
428
482
|
const rewriteProse = (text) => finalizeOpencodeProse(text, stack);
|
|
429
483
|
|
|
484
|
+
const cursorRulesDir = path.join(root, 'presets', 'cursor', stack, 'rules');
|
|
485
|
+
const availableStems = new Set();
|
|
486
|
+
if (fs.existsSync(cursorRulesDir)) {
|
|
487
|
+
for (const entry of fs.readdirSync(cursorRulesDir)) {
|
|
488
|
+
if (entry.endsWith('.mdc')) {
|
|
489
|
+
availableStems.add(entry.slice(0, -'.mdc'.length));
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
|
|
430
494
|
return deriveAdapterStack({
|
|
431
495
|
platform: 'opencode',
|
|
432
496
|
stack,
|
|
@@ -484,7 +548,7 @@ export function generateOpencodeStack(stack, { root = packageRoot } = {}) {
|
|
|
484
548
|
match: (source) => source.startsWith('agents/') && source.endsWith('.md'),
|
|
485
549
|
map: ({ source, sourceText }) => ({
|
|
486
550
|
target: source,
|
|
487
|
-
content: transformAgent(source, sourceText, stack, developerAgents),
|
|
551
|
+
content: transformAgent(source, sourceText, stack, developerAgents, profile, availableStems),
|
|
488
552
|
category: 'agents',
|
|
489
553
|
disposition: 'transform',
|
|
490
554
|
loadMode: 'native-team',
|
|
@@ -534,11 +598,11 @@ export function generateOpencodeStack(stack, { root = packageRoot } = {}) {
|
|
|
534
598
|
match: (source) => source === 'mcp.json',
|
|
535
599
|
map: ({ sourceText }) => ({
|
|
536
600
|
target: 'opencode.json',
|
|
537
|
-
content: cursorMcpToOpencode(sourceText),
|
|
601
|
+
content: cursorMcpToOpencode(sourceText, profile, availableStems),
|
|
538
602
|
category: 'mcp',
|
|
539
603
|
disposition: 'transform',
|
|
540
604
|
loadMode: 'manual',
|
|
541
|
-
reason: 'Cursor mcp.json → opencode.json mcp (local/remote types)',
|
|
605
|
+
reason: 'Cursor mcp.json → opencode.json mcp (local/remote types); emits permission.bash + compact instructions',
|
|
542
606
|
}),
|
|
543
607
|
},
|
|
544
608
|
{
|