@bonesofspring/ai-rules 0.2.26 → 0.2.27
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 +7 -0
- package/LICENSE +21 -0
- package/README.md +1 -1
- package/bin/cli.js +262 -44
- package/bin/lib/safe-path.js +93 -0
- package/bin/lib/seed-ai-local-team.js +5 -0
- package/bin/mavis-install.js +35 -8
- package/bin/opencode-install.js +34 -11
- package/docs/LOCAL-OVERLAY.md +186 -0
- package/docs/MAVIS-COMPATIBILITY.md +174 -0
- package/docs/MAVIS.md +120 -0
- package/docs/OPENCODE-COMPATIBILITY.md +54 -0
- package/docs/OPENCODE.md +123 -0
- package/docs/PRESET-CONTRIBUTION.md +431 -0
- package/docs/PRESET-ENGLISH-STYLE.md +91 -0
- package/docs/specs/INDEX.md +9 -0
- package/docs/specs/_templates/feature.md +32 -0
- package/docs/specs/_templates/page.md +47 -0
- package/package.json +6 -1
- package/presets/_shared/core/meta/preset-layering.md +1 -1
- package/presets/_shared/core/meta/preset-pr-checklist.md +1 -1
- package/presets/_shared/core/meta/preset-token-budget.md +10 -10
- package/presets/_shared/core/quality/code-quality-and-refactoring.md +6 -0
- package/presets/claude/android-kotlin/agents/build-verifier.md +2 -2
- package/presets/claude/android-kotlin/commands/task.md +1 -1
- package/presets/claude/android-kotlin/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/android-kotlin/hooks/examples/README.md +5 -3
- package/presets/claude/android-kotlin/hooks/examples/test-on-save.example.sh +6 -4
- package/presets/claude/android-kotlin/rules/README.md +1 -1
- package/presets/claude/android-kotlin/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/mcp-usage.md +1 -1
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-layering.md +2 -2
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-token-budget.md +11 -11
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-twin-sync.md +1 -1
- package/presets/claude/android-kotlin/rules/ui-and-accessibility/compose.md +2 -0
- package/presets/claude/go/CLAUDE.md +1 -1
- package/presets/claude/go/agents/build-verifier.md +1 -1
- package/presets/claude/go/commands/task.md +1 -1
- package/presets/claude/go/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/go/hooks/examples/README.md +5 -3
- package/presets/claude/go/rules/README.md +1 -1
- package/presets/claude/go/rules/api-and-data/adapters-driven.md +3 -3
- package/presets/claude/go/rules/api-and-data/adapters-driving.md +2 -2
- package/presets/claude/go/rules/api-and-data/api-grpc.md +2 -2
- package/presets/claude/go/rules/api-and-data/api-http.md +3 -3
- package/presets/claude/go/rules/api-and-data/messaging-adapters.md +1 -1
- package/presets/claude/go/rules/api-and-data/persistence-adapters.md +2 -2
- package/presets/claude/go/rules/architecture/application-usecases.md +1 -1
- package/presets/claude/go/rules/architecture/domain-layer.md +1 -1
- package/presets/claude/go/rules/architecture/feature-delivery.md +1 -1
- package/presets/claude/go/rules/architecture/ports-interfaces.md +2 -2
- package/presets/claude/go/rules/stack/go-conventions.md +1 -1
- package/presets/claude/go/rules/testing/e2e.md +2 -2
- package/presets/claude/go/rules/testing/integration.md +2 -2
- package/presets/claude/go/rules/testing/unit.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/agent-team-intake.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/go/rules/tooling-and-review/code-review.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/go-tooling.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/mcp-usage.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/post-change-test.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/preset-token-budget.md +10 -10
- package/presets/claude/go/rules/tooling-and-review/security-go.md +3 -3
- package/presets/claude/go/rules/tooling-and-review/technical-retro.md +1 -1
- package/presets/claude/ios-swift/agents/build-verifier.md +3 -3
- package/presets/claude/ios-swift/commands/task.md +1 -1
- package/presets/claude/ios-swift/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/ios-swift/hooks/examples/README.md +5 -3
- package/presets/claude/ios-swift/rules/README.md +1 -1
- package/presets/claude/ios-swift/rules/architecture/feature-delivery.md +3 -3
- package/presets/claude/ios-swift/rules/architecture/reference-features.md +1 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/mcp-usage.md +1 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/post-change-build.md +2 -2
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-layering.md +2 -2
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-token-budget.md +11 -11
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-twin-sync.md +1 -1
- package/presets/claude/ios-swift/rules/ui-and-accessibility/swiftui.md +7 -0
- package/presets/claude/java/CLAUDE.md +2 -2
- package/presets/claude/java/agents/build-verifier.md +1 -1
- package/presets/claude/java/commands/task.md +1 -1
- package/presets/claude/java/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/java/hooks/examples/README.md +5 -3
- package/presets/claude/java/rules/README.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/java/rules/tooling-and-review/mcp-usage.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/preset-token-budget.md +10 -10
- package/presets/claude/mcp-ts/CLAUDE.md +1 -1
- package/presets/claude/mcp-ts/agents/build-verifier.md +1 -1
- package/presets/claude/mcp-ts/commands/task.md +1 -1
- package/presets/claude/mcp-ts/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/mcp-ts/rules/README.md +1 -1
- package/presets/claude/mcp-ts/rules/api-and-data/mcp-auth-secrets.md +4 -4
- package/presets/claude/mcp-ts/rules/api-and-data/mcp-contract-testing.md +2 -2
- package/presets/claude/mcp-ts/rules/api-and-data/mcp-tool-design.md +1 -1
- package/presets/claude/mcp-ts/rules/api-and-data/mcp-transport-packaging.md +2 -2
- package/presets/claude/mcp-ts/rules/architecture/mcp-server-boundaries.md +1 -1
- package/presets/claude/mcp-ts/rules/testing/unit.md +2 -2
- package/presets/claude/mcp-ts/rules/tooling-and-review/anti-sycophancy-discipline.md +2 -2
- package/presets/claude/mcp-ts/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/mcp-ts/rules/tooling-and-review/mcp-ts-tooling.md +3 -3
- package/presets/claude/mcp-ts/rules/tooling-and-review/post-change-test.md +1 -1
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-token-budget.md +10 -10
- package/presets/claude/mcp-ts/rules/tooling-and-review/security-mcp.md +1 -1
- package/presets/claude/next/README.md +1 -1
- package/presets/claude/next/agents/build-verifier.md +2 -2
- package/presets/claude/next/commands/task.md +1 -1
- package/presets/claude/next/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/next/hooks/examples/README.md +5 -3
- package/presets/claude/next/rules/README.md +1 -1
- package/presets/claude/next/rules/api-and-data/api-services.md +6 -4
- package/presets/claude/next/rules/api-and-data/store-rtk.md +6 -5
- package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +4 -0
- package/presets/claude/next/rules/architecture/reference-features.md +1 -1
- package/presets/claude/next/rules/stack/next-app-core.md +2 -1
- package/presets/claude/next/rules/testing/tests-unit.md +1 -0
- package/presets/claude/next/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/next/rules/tooling-and-review/preset-layering.md +2 -2
- package/presets/claude/next/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
- package/presets/claude/next/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/next/rules/tooling-and-review/preset-token-budget.md +11 -11
- package/presets/claude/next/rules/tooling-and-review/preset-twin-sync.md +1 -1
- package/presets/claude/next/rules/ui-and-accessibility/react-ui.md +37 -1
- package/presets/claude/next/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json +69 -0
- package/presets/claude/next/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json +5 -0
- package/presets/claude/next/team/fixtures/metrics-scenarios/tasks/parallel-receipts/metrics.json +79 -0
- package/presets/claude/next/team/fixtures/metrics-scenarios/tasks/serial-retry/metrics.json +124 -0
- package/presets/claude/next/team/fixtures/metrics-scenarios/tasks/validation-failed/metrics.json +124 -0
- package/presets/claude/next/team/fixtures/metrics.example.json +54 -0
- package/presets/claude/nuxt/agents/build-verifier.md +2 -2
- package/presets/claude/nuxt/commands/task.md +1 -1
- package/presets/claude/nuxt/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/nuxt/hooks/examples/README.md +5 -3
- package/presets/claude/nuxt/hooks/examples/format-edited.example.sh +8 -7
- package/presets/claude/nuxt/hooks/examples/test-on-save.example.sh +8 -3
- package/presets/claude/nuxt/rules/README.md +1 -1
- package/presets/claude/nuxt/rules/architecture/layer-barrel-exports.md +1 -1
- package/presets/claude/nuxt/rules/architecture/reference-features.md +1 -1
- package/presets/claude/nuxt/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/nuxt/rules/tooling-and-review/preset-layering.md +2 -2
- package/presets/claude/nuxt/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
- package/presets/claude/nuxt/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/nuxt/rules/tooling-and-review/preset-token-budget.md +11 -11
- package/presets/claude/nuxt/rules/tooling-and-review/preset-twin-sync.md +1 -1
- package/presets/claude/nuxt/rules/ui-and-accessibility/vue-ui.md +7 -0
- package/presets/claude/nuxt/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json +69 -0
- package/presets/claude/nuxt/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json +5 -0
- package/presets/claude/nuxt/team/fixtures/metrics-scenarios/tasks/parallel-receipts/metrics.json +79 -0
- package/presets/claude/nuxt/team/fixtures/metrics-scenarios/tasks/serial-retry/metrics.json +124 -0
- package/presets/claude/nuxt/team/fixtures/metrics-scenarios/tasks/validation-failed/metrics.json +124 -0
- package/presets/claude/nuxt/team/fixtures/metrics.example.json +54 -0
- package/presets/claude/php-hexagonal/CLAUDE.md +2 -2
- package/presets/claude/php-hexagonal/agents/build-verifier.md +1 -1
- package/presets/claude/php-hexagonal/commands/task.md +1 -1
- package/presets/claude/php-hexagonal/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/php-hexagonal/hooks/examples/README.md +5 -3
- package/presets/claude/php-hexagonal/rules/README.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/php-hexagonal/rules/tooling-and-review/mcp-usage.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-token-budget.md +10 -10
- package/presets/claude/php-laravel/agents/build-verifier.md +1 -1
- package/presets/claude/php-laravel/commands/task.md +1 -1
- package/presets/claude/php-laravel/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/php-laravel/hooks/examples/README.md +5 -3
- package/presets/claude/php-laravel/rules/README.md +1 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/php-laravel/rules/tooling-and-review/mcp-usage.md +1 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-layering.md +1 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-pr-checklist.md +1 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-token-budget.md +10 -10
- package/presets/claude/svelte/agents/build-verifier.md +2 -2
- package/presets/claude/svelte/commands/task.md +1 -1
- package/presets/claude/svelte/hooks/chain-team-phases.sh +32 -3
- package/presets/claude/svelte/hooks/examples/README.md +5 -3
- package/presets/claude/svelte/rules/README.md +1 -1
- package/presets/claude/svelte/rules/api-and-data/store-svelte.md +1 -1
- package/presets/claude/svelte/rules/architecture/layer-barrel-exports.md +1 -1
- package/presets/claude/svelte/rules/architecture/reference-features.md +1 -1
- package/presets/claude/svelte/rules/tooling-and-review/code-quality.md +6 -0
- package/presets/claude/svelte/rules/tooling-and-review/mcp-usage.md +1 -1
- package/presets/claude/svelte/rules/tooling-and-review/preset-layering.md +2 -2
- package/presets/claude/svelte/rules/tooling-and-review/preset-no-cross-stack-leakage.md +1 -1
- package/presets/claude/svelte/rules/tooling-and-review/preset-pr-checklist.md +2 -2
- package/presets/claude/svelte/rules/tooling-and-review/preset-token-budget.md +11 -11
- package/presets/claude/svelte/rules/tooling-and-review/preset-twin-sync.md +1 -1
- package/presets/claude/svelte/rules/ui-and-accessibility/no-rest-props-spread.md +1 -1
- package/presets/claude/svelte/rules/ui-and-accessibility/svelte-ui.md +7 -0
- package/presets/claude/svelte/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json +69 -0
- package/presets/claude/svelte/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json +5 -0
- package/presets/claude/svelte/team/fixtures/metrics-scenarios/tasks/parallel-receipts/metrics.json +79 -0
- package/presets/claude/svelte/team/fixtures/metrics-scenarios/tasks/serial-retry/metrics.json +124 -0
- package/presets/claude/svelte/team/fixtures/metrics-scenarios/tasks/validation-failed/metrics.json +124 -0
- package/presets/claude/svelte/team/fixtures/metrics.example.json +54 -0
- package/presets/cursor/android-kotlin/agents/build-verifier.md +2 -2
- package/presets/cursor/android-kotlin/commands/task.md +1 -1
- package/presets/cursor/android-kotlin/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/android-kotlin/hooks/examples/test-on-save.example.sh +6 -4
- package/presets/cursor/android-kotlin/rules/README.md +1 -1
- package/presets/cursor/android-kotlin/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/android-kotlin/rules/compose-ui.mdc +2 -0
- package/presets/cursor/android-kotlin/rules/preset-layering.mdc +2 -2
- package/presets/cursor/android-kotlin/rules/preset-no-cross-stack-leakage.mdc +1 -1
- package/presets/cursor/android-kotlin/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/android-kotlin/rules/preset-token-budget.mdc +11 -11
- package/presets/cursor/android-kotlin/rules/preset-twin-sync.mdc +1 -1
- package/presets/cursor/go/README.md +1 -1
- package/presets/cursor/go/agents/build-verifier.md +1 -1
- package/presets/cursor/go/commands/task.md +1 -1
- package/presets/cursor/go/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/go/rules/README.md +2 -2
- package/presets/cursor/go/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/go/rules/preset-layering.mdc +1 -1
- package/presets/cursor/go/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/go/rules/preset-token-budget.mdc +10 -10
- package/presets/cursor/ios-swift/README.md +1 -1
- package/presets/cursor/ios-swift/agents/build-verifier.md +3 -3
- package/presets/cursor/ios-swift/commands/task.md +1 -1
- package/presets/cursor/ios-swift/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/ios-swift/rules/README.md +2 -2
- package/presets/cursor/ios-swift/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/ios-swift/rules/preset-layering.mdc +2 -2
- package/presets/cursor/ios-swift/rules/preset-no-cross-stack-leakage.mdc +1 -1
- package/presets/cursor/ios-swift/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/ios-swift/rules/preset-token-budget.mdc +11 -11
- package/presets/cursor/ios-swift/rules/preset-twin-sync.mdc +1 -1
- package/presets/cursor/ios-swift/rules/reference-features.mdc +1 -1
- package/presets/cursor/ios-swift/rules/swiftui-ui.mdc +7 -0
- package/presets/cursor/java/AGENTS.md +1 -1
- package/presets/cursor/java/agents/build-verifier.md +1 -1
- package/presets/cursor/java/commands/task.md +1 -1
- package/presets/cursor/java/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/java/rules/README.md +2 -2
- package/presets/cursor/java/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/java/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/java/rules/preset-layering.mdc +1 -1
- package/presets/cursor/java/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/java/rules/preset-token-budget.mdc +10 -10
- package/presets/cursor/mcp-ts/agents/build-verifier.md +1 -1
- package/presets/cursor/mcp-ts/commands/task.md +1 -1
- package/presets/cursor/mcp-ts/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/mcp-ts/rules/README.md +2 -2
- package/presets/cursor/mcp-ts/rules/anti-sycophancy-discipline.mdc +2 -2
- package/presets/cursor/mcp-ts/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/mcp-ts/rules/mcp-auth-secrets.mdc +4 -4
- package/presets/cursor/mcp-ts/rules/mcp-contract-testing.mdc +2 -2
- package/presets/cursor/mcp-ts/rules/mcp-server-boundaries.mdc +1 -1
- package/presets/cursor/mcp-ts/rules/mcp-tool-design.mdc +1 -1
- package/presets/cursor/mcp-ts/rules/mcp-transport-packaging.mdc +2 -2
- package/presets/cursor/mcp-ts/rules/mcp-ts-tooling.mdc +3 -3
- package/presets/cursor/mcp-ts/rules/preset-layering.mdc +1 -1
- package/presets/cursor/mcp-ts/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/mcp-ts/rules/preset-token-budget.mdc +10 -10
- package/presets/cursor/mcp-ts/rules/security-mcp.mdc +1 -1
- package/presets/cursor/mcp-ts/rules/tests-unit.mdc +2 -2
- package/presets/cursor/next/README.md +2 -2
- package/presets/cursor/next/agents/build-verifier.md +2 -2
- package/presets/cursor/next/commands/task.md +1 -1
- package/presets/cursor/next/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/next/rules/README.md +1 -1
- package/presets/cursor/next/rules/api-services.mdc +6 -4
- package/presets/cursor/next/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/next/rules/feature-delivery-workflow.mdc +4 -0
- package/presets/cursor/next/rules/next-app-core.mdc +2 -1
- package/presets/cursor/next/rules/preset-layering.mdc +2 -2
- package/presets/cursor/next/rules/preset-no-cross-stack-leakage.mdc +1 -1
- package/presets/cursor/next/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/next/rules/preset-token-budget.mdc +11 -11
- package/presets/cursor/next/rules/preset-twin-sync.mdc +1 -1
- package/presets/cursor/next/rules/react-ui.mdc +37 -1
- package/presets/cursor/next/rules/reference-features.mdc +1 -1
- package/presets/cursor/next/rules/store-rtk.mdc +6 -5
- package/presets/cursor/next/rules/tests-unit.mdc +1 -0
- package/presets/cursor/nuxt/README.md +1 -1
- package/presets/cursor/nuxt/agents/build-verifier.md +2 -2
- package/presets/cursor/nuxt/commands/task.md +1 -1
- package/presets/cursor/nuxt/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/nuxt/hooks/examples/format-edited.example.sh +8 -7
- package/presets/cursor/nuxt/hooks/examples/test-on-save.example.sh +8 -3
- package/presets/cursor/nuxt/rules/anti-sycophancy-discipline.mdc +1 -1
- package/presets/cursor/nuxt/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/nuxt/rules/design-guidance.mdc +1 -1
- package/presets/cursor/nuxt/rules/layer-barrel-exports.mdc +1 -1
- package/presets/cursor/nuxt/rules/preset-layering.mdc +2 -2
- package/presets/cursor/nuxt/rules/preset-no-cross-stack-leakage.mdc +1 -1
- package/presets/cursor/nuxt/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/nuxt/rules/preset-token-budget.mdc +11 -11
- package/presets/cursor/nuxt/rules/preset-twin-sync.mdc +1 -1
- package/presets/cursor/nuxt/rules/reference-features.mdc +1 -1
- package/presets/cursor/nuxt/rules/vue-ui.mdc +7 -0
- package/presets/cursor/php-hexagonal/AGENTS.md +1 -1
- package/presets/cursor/php-hexagonal/agents/build-verifier.md +1 -1
- package/presets/cursor/php-hexagonal/commands/task.md +1 -1
- package/presets/cursor/php-hexagonal/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/php-hexagonal/rules/README.md +2 -2
- package/presets/cursor/php-hexagonal/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/php-hexagonal/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/php-hexagonal/rules/preset-layering.mdc +1 -1
- package/presets/cursor/php-hexagonal/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/php-hexagonal/rules/preset-token-budget.mdc +10 -10
- package/presets/cursor/php-laravel/AGENTS.md +1 -1
- package/presets/cursor/php-laravel/agents/build-verifier.md +1 -1
- package/presets/cursor/php-laravel/commands/task.md +1 -1
- package/presets/cursor/php-laravel/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/php-laravel/rules/README.md +2 -2
- package/presets/cursor/php-laravel/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/php-laravel/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/php-laravel/rules/preset-layering.mdc +1 -1
- package/presets/cursor/php-laravel/rules/preset-pr-checklist.mdc +1 -1
- package/presets/cursor/php-laravel/rules/preset-token-budget.mdc +10 -10
- package/presets/cursor/svelte/README.md +1 -1
- package/presets/cursor/svelte/agents/build-verifier.md +2 -2
- package/presets/cursor/svelte/commands/task.md +1 -1
- package/presets/cursor/svelte/hooks/chain-team-phases.sh +32 -3
- package/presets/cursor/svelte/rules/code-quality-and-refactoring.mdc +6 -0
- package/presets/cursor/svelte/rules/layer-barrel-exports.mdc +1 -1
- package/presets/cursor/svelte/rules/preset-layering.mdc +2 -2
- package/presets/cursor/svelte/rules/preset-no-cross-stack-leakage.mdc +1 -1
- package/presets/cursor/svelte/rules/preset-pr-checklist.mdc +2 -2
- package/presets/cursor/svelte/rules/preset-token-budget.mdc +11 -11
- package/presets/cursor/svelte/rules/preset-twin-sync.mdc +1 -1
- package/presets/cursor/svelte/rules/reference-features.mdc +1 -1
- package/presets/cursor/svelte/rules/svelte-ui.mdc +7 -0
- package/presets/mavis/android-kotlin/adapter-map.json +1 -1
- package/presets/mavis/android-kotlin/agents/build-verifier.md +2 -2
- package/presets/mavis/android-kotlin/commands/spec-start.md +2 -2
- package/presets/mavis/android-kotlin/commands/task.md +6 -6
- package/presets/mavis/android-kotlin/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/android-kotlin/rules/code-quality-and-refactoring.md +14 -0
- package/presets/mavis/android-kotlin/rules/code-review-mr.md +39 -0
- package/presets/mavis/android-kotlin/rules/compose-ui.md +2 -0
- package/presets/mavis/android-kotlin/rules/design-guidance.md +5 -0
- package/presets/mavis/android-kotlin/rules/mcp-usage.md +8 -0
- package/presets/mavis/android-kotlin/rules/mockup-review.md +4 -0
- package/presets/mavis/android-kotlin/rules/preset-layering.md +1 -1
- package/presets/mavis/android-kotlin/rules/preset-no-cross-stack-leakage.md +4 -0
- package/presets/mavis/android-kotlin/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/android-kotlin/rules/preset-token-budget.md +10 -10
- package/presets/mavis/android-kotlin/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/android-kotlin/rules/product-specs.md +5 -0
- package/presets/mavis/android-kotlin/rules/ux-design.md +4 -0
- package/presets/mavis/android-kotlin/skills/debug-investigation/SKILL.md +39 -0
- package/presets/mavis/go/adapter-map.json +1 -1
- package/presets/mavis/go/agents/build-verifier.md +1 -1
- package/presets/mavis/go/commands/spec-start.md +2 -2
- package/presets/mavis/go/commands/task.md +6 -6
- package/presets/mavis/go/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/go/rules/agent-team-intake.md +4 -0
- package/presets/mavis/go/rules/code-quality-and-refactoring.md +15 -0
- package/presets/mavis/go/rules/code-review-mr.md +7 -0
- package/presets/mavis/go/rules/design-guidance.md +5 -0
- package/presets/mavis/go/rules/mcp-usage.md +7 -0
- package/presets/mavis/go/rules/preset-layering.md +1 -1
- package/presets/mavis/go/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/go/rules/preset-token-budget.md +10 -10
- package/presets/mavis/go/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/go/rules/product-specs.md +6 -0
- package/presets/mavis/go/skills/debug-investigation/SKILL.md +20 -0
- package/presets/mavis/ios-swift/adapter-map.json +1 -1
- package/presets/mavis/ios-swift/agents/build-verifier.md +3 -3
- package/presets/mavis/ios-swift/commands/spec-start.md +2 -2
- package/presets/mavis/ios-swift/commands/task.md +6 -6
- package/presets/mavis/ios-swift/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/ios-swift/rules/code-quality-and-refactoring.md +14 -0
- package/presets/mavis/ios-swift/rules/code-review-mr.md +39 -0
- package/presets/mavis/ios-swift/rules/design-guidance.md +5 -0
- package/presets/mavis/ios-swift/rules/feature-delivery-workflow.md +66 -0
- package/presets/mavis/ios-swift/rules/mcp-usage.md +8 -0
- package/presets/mavis/ios-swift/rules/mockup-review.md +4 -0
- package/presets/mavis/ios-swift/rules/preset-layering.md +1 -1
- package/presets/mavis/ios-swift/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/ios-swift/rules/preset-token-budget.md +10 -10
- package/presets/mavis/ios-swift/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/ios-swift/rules/product-specs.md +5 -0
- package/presets/mavis/ios-swift/rules/reference-features.md +49 -0
- package/presets/mavis/ios-swift/rules/swiftui-ui.md +7 -0
- package/presets/mavis/ios-swift/rules/ux-design.md +4 -0
- package/presets/mavis/ios-swift/skills/debug-investigation/SKILL.md +39 -0
- package/presets/mavis/java/adapter-map.json +1 -1
- package/presets/mavis/java/agents/build-verifier.md +1 -1
- package/presets/mavis/java/commands/spec-start.md +2 -2
- package/presets/mavis/java/commands/task.md +6 -6
- package/presets/mavis/java/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/java/rules/agent-team-intake.md +4 -0
- package/presets/mavis/java/rules/code-quality-and-refactoring.md +15 -0
- package/presets/mavis/java/rules/code-review-mr.md +9 -0
- package/presets/mavis/java/rules/design-guidance.md +6 -0
- package/presets/mavis/java/rules/mcp-usage.md +6 -0
- package/presets/mavis/java/rules/preset-layering.md +1 -1
- package/presets/mavis/java/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/java/rules/preset-token-budget.md +10 -10
- package/presets/mavis/java/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/java/rules/product-specs.md +6 -0
- package/presets/mavis/java/skills/debug-investigation/SKILL.md +20 -0
- package/presets/mavis/mcp-ts/adapter-map.json +1 -1
- package/presets/mavis/mcp-ts/agents/build-verifier.md +1 -1
- package/presets/mavis/mcp-ts/commands/spec-start.md +2 -2
- package/presets/mavis/mcp-ts/commands/task.md +6 -6
- package/presets/mavis/mcp-ts/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/mcp-ts/rules/agent-team-intake.md +5 -0
- package/presets/mavis/mcp-ts/rules/anti-sycophancy-discipline.md +4 -0
- package/presets/mavis/mcp-ts/rules/code-quality-and-refactoring.md +15 -0
- package/presets/mavis/mcp-ts/rules/code-review-mr.md +6 -0
- package/presets/mavis/mcp-ts/rules/design-guidance.md +5 -0
- package/presets/mavis/mcp-ts/rules/mcp-usage.md +7 -0
- package/presets/mavis/mcp-ts/rules/preset-layering.md +1 -1
- package/presets/mavis/mcp-ts/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/mcp-ts/rules/preset-token-budget.md +10 -10
- package/presets/mavis/mcp-ts/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/mcp-ts/rules/product-specs.md +6 -0
- package/presets/mavis/mcp-ts/skills/debug-investigation/SKILL.md +15 -0
- package/presets/mavis/next/adapter-map.json +1 -1
- package/presets/mavis/next/agents/build-verifier.md +2 -2
- package/presets/mavis/next/commands/spec-start.md +2 -2
- package/presets/mavis/next/commands/task.md +6 -6
- package/presets/mavis/next/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/next/rules/api-services.md +6 -4
- package/presets/mavis/next/rules/code-quality-and-refactoring.md +13 -0
- package/presets/mavis/next/rules/code-review-mr.md +13 -0
- package/presets/mavis/next/rules/design-guidance.md +5 -0
- package/presets/mavis/next/rules/feature-delivery-workflow.md +85 -0
- package/presets/mavis/next/rules/mcp-usage.md +9 -0
- package/presets/mavis/next/rules/mockup-review.md +4 -0
- package/presets/mavis/next/rules/next-app-core.md +2 -1
- package/presets/mavis/next/rules/preset-layering.md +1 -1
- package/presets/mavis/next/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/next/rules/preset-token-budget.md +10 -10
- package/presets/mavis/next/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/next/rules/product-specs.md +6 -0
- package/presets/mavis/next/rules/react-ui.md +37 -1
- package/presets/mavis/next/rules/reference-features.md +36 -0
- package/presets/mavis/next/rules/store-rtk.md +6 -5
- package/presets/mavis/next/rules/tests-e2e-structure.md +15 -0
- package/presets/mavis/next/rules/tests-unit.md +33 -0
- package/presets/mavis/next/rules/ux-design.md +4 -0
- package/presets/mavis/next/skills/debug-investigation/SKILL.md +28 -0
- package/presets/mavis/nuxt/adapter-map.json +1 -1
- package/presets/mavis/nuxt/agents/build-verifier.md +2 -2
- package/presets/mavis/nuxt/commands/spec-start.md +2 -2
- package/presets/mavis/nuxt/commands/task.md +6 -6
- package/presets/mavis/nuxt/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/nuxt/rules/code-quality-and-refactoring.md +13 -0
- package/presets/mavis/nuxt/rules/code-review-mr.md +13 -0
- package/presets/mavis/nuxt/rules/design-guidance.md +5 -0
- package/presets/mavis/nuxt/rules/feature-delivery-workflow.md +82 -0
- package/presets/mavis/nuxt/rules/mcp-usage.md +9 -0
- package/presets/mavis/nuxt/rules/mockup-review.md +4 -0
- package/presets/mavis/nuxt/rules/preset-layering.md +1 -1
- package/presets/mavis/nuxt/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/nuxt/rules/preset-token-budget.md +10 -10
- package/presets/mavis/nuxt/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/nuxt/rules/product-specs.md +5 -0
- package/presets/mavis/nuxt/rules/reference-features.md +36 -0
- package/presets/mavis/nuxt/rules/tests-e2e-structure.md +16 -0
- package/presets/mavis/nuxt/rules/tests-unit.md +11 -0
- package/presets/mavis/nuxt/rules/ux-design.md +4 -0
- package/presets/mavis/nuxt/rules/vue-ui.md +7 -0
- package/presets/mavis/nuxt/skills/debug-investigation/SKILL.md +30 -0
- package/presets/mavis/php-hexagonal/adapter-map.json +1 -1
- package/presets/mavis/php-hexagonal/agents/build-verifier.md +1 -1
- package/presets/mavis/php-hexagonal/commands/spec-start.md +2 -2
- package/presets/mavis/php-hexagonal/commands/task.md +6 -6
- package/presets/mavis/php-hexagonal/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/php-hexagonal/rules/agent-team-intake.md +4 -0
- package/presets/mavis/php-hexagonal/rules/code-quality-and-refactoring.md +15 -0
- package/presets/mavis/php-hexagonal/rules/code-review-mr.md +9 -0
- package/presets/mavis/php-hexagonal/rules/design-guidance.md +6 -0
- package/presets/mavis/php-hexagonal/rules/mcp-usage.md +6 -0
- package/presets/mavis/php-hexagonal/rules/preset-layering.md +1 -1
- package/presets/mavis/php-hexagonal/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/php-hexagonal/rules/preset-token-budget.md +10 -10
- package/presets/mavis/php-hexagonal/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/php-hexagonal/rules/product-specs.md +6 -0
- package/presets/mavis/php-hexagonal/skills/debug-investigation/SKILL.md +20 -0
- package/presets/mavis/php-laravel/adapter-map.json +1 -1
- package/presets/mavis/php-laravel/agents/build-verifier.md +1 -1
- package/presets/mavis/php-laravel/commands/spec-start.md +2 -2
- package/presets/mavis/php-laravel/commands/task.md +6 -6
- package/presets/mavis/php-laravel/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/php-laravel/rules/agent-team-intake.md +4 -0
- package/presets/mavis/php-laravel/rules/code-quality-and-refactoring.md +15 -0
- package/presets/mavis/php-laravel/rules/code-review-mr.md +10 -0
- package/presets/mavis/php-laravel/rules/design-guidance.md +6 -0
- package/presets/mavis/php-laravel/rules/mcp-usage.md +6 -0
- package/presets/mavis/php-laravel/rules/preset-layering.md +1 -1
- package/presets/mavis/php-laravel/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/php-laravel/rules/preset-token-budget.md +10 -10
- package/presets/mavis/php-laravel/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/php-laravel/rules/product-specs.md +6 -0
- package/presets/mavis/php-laravel/skills/debug-investigation/SKILL.md +20 -0
- package/presets/mavis/svelte/adapter-map.json +1 -1
- package/presets/mavis/svelte/agents/build-verifier.md +2 -2
- package/presets/mavis/svelte/commands/spec-start.md +2 -2
- package/presets/mavis/svelte/commands/task.md +6 -6
- package/presets/mavis/svelte/hooks/chain-team-phases.sh +32 -3
- package/presets/mavis/svelte/rules/code-quality-and-refactoring.md +13 -0
- package/presets/mavis/svelte/rules/code-review-mr.md +13 -0
- package/presets/mavis/svelte/rules/design-guidance.md +5 -0
- package/presets/mavis/svelte/rules/feature-delivery-workflow.md +54 -0
- package/presets/mavis/svelte/rules/mcp-usage.md +9 -0
- package/presets/mavis/svelte/rules/mockup-review.md +4 -0
- package/presets/mavis/svelte/rules/preset-layering.md +1 -1
- package/presets/mavis/svelte/rules/preset-pr-checklist.md +1 -1
- package/presets/mavis/svelte/rules/preset-token-budget.md +10 -10
- package/presets/mavis/svelte/rules/product-specs-authoring.md +6 -0
- package/presets/mavis/svelte/rules/product-specs.md +5 -0
- package/presets/mavis/svelte/rules/reference-features.md +37 -0
- package/presets/mavis/svelte/rules/svelte-ui.md +7 -0
- package/presets/mavis/svelte/rules/tests-e2e-structure.md +16 -0
- package/presets/mavis/svelte/rules/tests-unit.md +11 -0
- package/presets/mavis/svelte/rules/ux-design.md +4 -0
- package/presets/mavis/svelte/skills/debug-investigation/SKILL.md +30 -0
- package/presets/opencode/android-kotlin/adapter-map.json +1 -1
- package/presets/opencode/android-kotlin/agents/build-verifier.md +2 -2
- package/presets/opencode/android-kotlin/commands/spec-start.md +1 -1
- package/presets/opencode/android-kotlin/commands/task-continue.md +1 -1
- package/presets/opencode/android-kotlin/commands/task.md +1 -1
- package/presets/opencode/android-kotlin/commands/technical-retro.md +1 -1
- package/presets/opencode/android-kotlin/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/android-kotlin/rules/code-quality-and-refactoring.md +14 -0
- package/presets/opencode/android-kotlin/rules/code-review-mr.md +39 -0
- package/presets/opencode/android-kotlin/rules/compose-ui.md +2 -0
- package/presets/opencode/android-kotlin/rules/design-guidance.md +5 -0
- package/presets/opencode/android-kotlin/rules/mcp-usage.md +8 -0
- package/presets/opencode/android-kotlin/rules/mockup-review.md +4 -0
- package/presets/opencode/android-kotlin/rules/preset-layering.md +1 -1
- package/presets/opencode/android-kotlin/rules/preset-no-cross-stack-leakage.md +4 -0
- package/presets/opencode/android-kotlin/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/android-kotlin/rules/preset-token-budget.md +10 -10
- package/presets/opencode/android-kotlin/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/android-kotlin/rules/product-specs.md +5 -0
- package/presets/opencode/android-kotlin/rules/ux-design.md +4 -0
- package/presets/opencode/android-kotlin/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/instrumentation-ui-e2e/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/mockup-review/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/ux-design/SKILL.md +1 -1
- package/presets/opencode/android-kotlin/skills/write-adr/SKILL.md +1 -1
- package/presets/opencode/go/adapter-map.json +1 -1
- package/presets/opencode/go/agents/build-verifier.md +1 -1
- package/presets/opencode/go/commands/spec-start.md +1 -1
- package/presets/opencode/go/commands/task-continue.md +1 -1
- package/presets/opencode/go/commands/task.md +1 -1
- package/presets/opencode/go/commands/technical-retro.md +1 -1
- package/presets/opencode/go/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/go/rules/agent-team-intake.md +4 -0
- package/presets/opencode/go/rules/code-quality-and-refactoring.md +15 -0
- package/presets/opencode/go/rules/code-review-mr.md +7 -0
- package/presets/opencode/go/rules/design-guidance.md +5 -0
- package/presets/opencode/go/rules/mcp-usage.md +7 -0
- package/presets/opencode/go/rules/preset-layering.md +1 -1
- package/presets/opencode/go/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/go/rules/preset-token-budget.md +10 -10
- package/presets/opencode/go/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/go/rules/product-specs.md +6 -0
- package/presets/opencode/go/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/go/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/go/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/go/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/go/skills/integration-testing/SKILL.md +1 -1
- package/presets/opencode/go/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/go/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/go/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/go/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/go/skills/write-adr/SKILL.md +1 -1
- package/presets/opencode/ios-swift/adapter-map.json +1 -1
- package/presets/opencode/ios-swift/agents/build-verifier.md +3 -3
- package/presets/opencode/ios-swift/commands/spec-start.md +1 -1
- package/presets/opencode/ios-swift/commands/task-continue.md +1 -1
- package/presets/opencode/ios-swift/commands/task.md +1 -1
- package/presets/opencode/ios-swift/commands/technical-retro.md +1 -1
- package/presets/opencode/ios-swift/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/ios-swift/rules/code-quality-and-refactoring.md +14 -0
- package/presets/opencode/ios-swift/rules/code-review-mr.md +39 -0
- package/presets/opencode/ios-swift/rules/design-guidance.md +5 -0
- package/presets/opencode/ios-swift/rules/feature-delivery-workflow.md +66 -0
- package/presets/opencode/ios-swift/rules/mcp-usage.md +8 -0
- package/presets/opencode/ios-swift/rules/mockup-review.md +4 -0
- package/presets/opencode/ios-swift/rules/preset-layering.md +1 -1
- package/presets/opencode/ios-swift/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/ios-swift/rules/preset-token-budget.md +10 -10
- package/presets/opencode/ios-swift/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/ios-swift/rules/product-specs.md +5 -0
- package/presets/opencode/ios-swift/rules/reference-features.md +49 -0
- package/presets/opencode/ios-swift/rules/swiftui-ui.md +7 -0
- package/presets/opencode/ios-swift/rules/ux-design.md +4 -0
- package/presets/opencode/ios-swift/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/mockup-review/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/ux-design/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/write-adr/SKILL.md +1 -1
- package/presets/opencode/ios-swift/skills/xcuitest-e2e/SKILL.md +1 -1
- package/presets/opencode/java/adapter-map.json +1 -1
- package/presets/opencode/java/agents/build-verifier.md +1 -1
- package/presets/opencode/java/commands/spec-start.md +1 -1
- package/presets/opencode/java/commands/task-continue.md +1 -1
- package/presets/opencode/java/commands/task.md +1 -1
- package/presets/opencode/java/commands/technical-retro.md +1 -1
- package/presets/opencode/java/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/java/rules/agent-team-intake.md +4 -0
- package/presets/opencode/java/rules/code-quality-and-refactoring.md +15 -0
- package/presets/opencode/java/rules/code-review-mr.md +9 -0
- package/presets/opencode/java/rules/design-guidance.md +6 -0
- package/presets/opencode/java/rules/mcp-usage.md +6 -0
- package/presets/opencode/java/rules/preset-layering.md +1 -1
- package/presets/opencode/java/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/java/rules/preset-token-budget.md +10 -10
- package/presets/opencode/java/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/java/rules/product-specs.md +6 -0
- package/presets/opencode/java/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/java/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/java/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/java/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/java/skills/integration-testing/SKILL.md +1 -1
- package/presets/opencode/java/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/java/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/java/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/java/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/java/skills/write-adr/SKILL.md +1 -1
- package/presets/opencode/mcp-ts/adapter-map.json +1 -1
- package/presets/opencode/mcp-ts/agents/build-verifier.md +1 -1
- package/presets/opencode/mcp-ts/commands/spec-start.md +1 -1
- package/presets/opencode/mcp-ts/commands/task-continue.md +1 -1
- package/presets/opencode/mcp-ts/commands/task.md +1 -1
- package/presets/opencode/mcp-ts/commands/technical-retro.md +1 -1
- package/presets/opencode/mcp-ts/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/mcp-ts/rules/agent-team-intake.md +5 -0
- package/presets/opencode/mcp-ts/rules/anti-sycophancy-discipline.md +4 -0
- package/presets/opencode/mcp-ts/rules/code-quality-and-refactoring.md +15 -0
- package/presets/opencode/mcp-ts/rules/code-review-mr.md +6 -0
- package/presets/opencode/mcp-ts/rules/design-guidance.md +5 -0
- package/presets/opencode/mcp-ts/rules/mcp-usage.md +7 -0
- package/presets/opencode/mcp-ts/rules/preset-layering.md +1 -1
- package/presets/opencode/mcp-ts/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/mcp-ts/rules/preset-token-budget.md +10 -10
- package/presets/opencode/mcp-ts/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/mcp-ts/rules/product-specs.md +6 -0
- package/presets/opencode/mcp-ts/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/mcp-ts/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/mcp-ts/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/mcp-ts/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/mcp-ts/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/mcp-ts/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/next/adapter-map.json +1 -1
- package/presets/opencode/next/agents/build-verifier.md +2 -2
- package/presets/opencode/next/commands/spec-start.md +1 -1
- package/presets/opencode/next/commands/task-continue.md +1 -1
- package/presets/opencode/next/commands/task.md +1 -1
- package/presets/opencode/next/commands/technical-retro.md +1 -1
- package/presets/opencode/next/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/next/rules/api-services.md +6 -4
- package/presets/opencode/next/rules/code-quality-and-refactoring.md +13 -0
- package/presets/opencode/next/rules/code-review-mr.md +13 -0
- package/presets/opencode/next/rules/design-guidance.md +5 -0
- package/presets/opencode/next/rules/feature-delivery-workflow.md +85 -0
- package/presets/opencode/next/rules/mcp-usage.md +9 -0
- package/presets/opencode/next/rules/mockup-review.md +4 -0
- package/presets/opencode/next/rules/next-app-core.md +2 -1
- package/presets/opencode/next/rules/preset-layering.md +1 -1
- package/presets/opencode/next/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/next/rules/preset-token-budget.md +10 -10
- package/presets/opencode/next/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/next/rules/product-specs.md +6 -0
- package/presets/opencode/next/rules/react-ui.md +37 -1
- package/presets/opencode/next/rules/reference-features.md +36 -0
- package/presets/opencode/next/rules/store-rtk.md +6 -5
- package/presets/opencode/next/rules/tests-e2e-structure.md +15 -0
- package/presets/opencode/next/rules/tests-unit.md +33 -0
- package/presets/opencode/next/rules/ux-design.md +4 -0
- package/presets/opencode/next/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/next/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/next/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/next/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/next/skills/mockup-review/SKILL.md +1 -1
- package/presets/opencode/next/skills/playwright-e2e/SKILL.md +1 -1
- package/presets/opencode/next/skills/react-performance/SKILL.md +1 -1
- package/presets/opencode/next/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/next/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/next/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/next/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/next/skills/ux-design/SKILL.md +1 -1
- package/presets/opencode/next/skills/write-adr/SKILL.md +1 -1
- package/presets/opencode/nuxt/adapter-map.json +1 -1
- package/presets/opencode/nuxt/agents/build-verifier.md +2 -2
- package/presets/opencode/nuxt/commands/spec-start.md +1 -1
- package/presets/opencode/nuxt/commands/task-continue.md +1 -1
- package/presets/opencode/nuxt/commands/task.md +1 -1
- package/presets/opencode/nuxt/commands/technical-retro.md +1 -1
- package/presets/opencode/nuxt/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/nuxt/rules/code-quality-and-refactoring.md +13 -0
- package/presets/opencode/nuxt/rules/code-review-mr.md +13 -0
- package/presets/opencode/nuxt/rules/design-guidance.md +5 -0
- package/presets/opencode/nuxt/rules/feature-delivery-workflow.md +82 -0
- package/presets/opencode/nuxt/rules/mcp-usage.md +9 -0
- package/presets/opencode/nuxt/rules/mockup-review.md +4 -0
- package/presets/opencode/nuxt/rules/preset-layering.md +1 -1
- package/presets/opencode/nuxt/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/nuxt/rules/preset-token-budget.md +10 -10
- package/presets/opencode/nuxt/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/nuxt/rules/product-specs.md +5 -0
- package/presets/opencode/nuxt/rules/reference-features.md +36 -0
- package/presets/opencode/nuxt/rules/tests-e2e-structure.md +16 -0
- package/presets/opencode/nuxt/rules/tests-unit.md +11 -0
- package/presets/opencode/nuxt/rules/ux-design.md +4 -0
- package/presets/opencode/nuxt/rules/vue-ui.md +7 -0
- package/presets/opencode/nuxt/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/mockup-review/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/playwright-e2e/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/ux-design/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/vue-performance/SKILL.md +1 -1
- package/presets/opencode/nuxt/skills/write-adr/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/adapter-map.json +1 -1
- package/presets/opencode/php-hexagonal/agents/build-verifier.md +1 -1
- package/presets/opencode/php-hexagonal/commands/spec-start.md +1 -1
- package/presets/opencode/php-hexagonal/commands/task-continue.md +1 -1
- package/presets/opencode/php-hexagonal/commands/task.md +1 -1
- package/presets/opencode/php-hexagonal/commands/technical-retro.md +1 -1
- package/presets/opencode/php-hexagonal/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/php-hexagonal/rules/agent-team-intake.md +4 -0
- package/presets/opencode/php-hexagonal/rules/code-quality-and-refactoring.md +15 -0
- package/presets/opencode/php-hexagonal/rules/code-review-mr.md +9 -0
- package/presets/opencode/php-hexagonal/rules/design-guidance.md +6 -0
- package/presets/opencode/php-hexagonal/rules/mcp-usage.md +6 -0
- package/presets/opencode/php-hexagonal/rules/preset-layering.md +1 -1
- package/presets/opencode/php-hexagonal/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/php-hexagonal/rules/preset-token-budget.md +10 -10
- package/presets/opencode/php-hexagonal/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/php-hexagonal/rules/product-specs.md +6 -0
- package/presets/opencode/php-hexagonal/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/integration-testing/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/php-hexagonal/skills/write-adr/SKILL.md +1 -1
- package/presets/opencode/php-laravel/adapter-map.json +1 -1
- package/presets/opencode/php-laravel/agents/build-verifier.md +1 -1
- package/presets/opencode/php-laravel/commands/spec-start.md +1 -1
- package/presets/opencode/php-laravel/commands/task-continue.md +1 -1
- package/presets/opencode/php-laravel/commands/task.md +1 -1
- package/presets/opencode/php-laravel/commands/technical-retro.md +1 -1
- package/presets/opencode/php-laravel/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/php-laravel/rules/agent-team-intake.md +4 -0
- package/presets/opencode/php-laravel/rules/code-quality-and-refactoring.md +15 -0
- package/presets/opencode/php-laravel/rules/code-review-mr.md +10 -0
- package/presets/opencode/php-laravel/rules/design-guidance.md +6 -0
- package/presets/opencode/php-laravel/rules/mcp-usage.md +6 -0
- package/presets/opencode/php-laravel/rules/preset-layering.md +1 -1
- package/presets/opencode/php-laravel/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/php-laravel/rules/preset-token-budget.md +10 -10
- package/presets/opencode/php-laravel/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/php-laravel/rules/product-specs.md +6 -0
- package/presets/opencode/php-laravel/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/integration-testing/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/php-laravel/skills/write-adr/SKILL.md +1 -1
- package/presets/opencode/svelte/adapter-map.json +1 -1
- package/presets/opencode/svelte/agents/build-verifier.md +2 -2
- package/presets/opencode/svelte/commands/spec-start.md +1 -1
- package/presets/opencode/svelte/commands/task-continue.md +1 -1
- package/presets/opencode/svelte/commands/task.md +1 -1
- package/presets/opencode/svelte/commands/technical-retro.md +1 -1
- package/presets/opencode/svelte/hooks/chain-team-phases.sh +32 -3
- package/presets/opencode/svelte/rules/code-quality-and-refactoring.md +13 -0
- package/presets/opencode/svelte/rules/code-review-mr.md +13 -0
- package/presets/opencode/svelte/rules/design-guidance.md +5 -0
- package/presets/opencode/svelte/rules/feature-delivery-workflow.md +54 -0
- package/presets/opencode/svelte/rules/mcp-usage.md +9 -0
- package/presets/opencode/svelte/rules/mockup-review.md +4 -0
- package/presets/opencode/svelte/rules/preset-layering.md +1 -1
- package/presets/opencode/svelte/rules/preset-pr-checklist.md +1 -1
- package/presets/opencode/svelte/rules/preset-token-budget.md +10 -10
- package/presets/opencode/svelte/rules/product-specs-authoring.md +6 -0
- package/presets/opencode/svelte/rules/product-specs.md +5 -0
- package/presets/opencode/svelte/rules/reference-features.md +37 -0
- package/presets/opencode/svelte/rules/svelte-ui.md +7 -0
- package/presets/opencode/svelte/rules/tests-e2e-structure.md +16 -0
- package/presets/opencode/svelte/rules/tests-unit.md +11 -0
- package/presets/opencode/svelte/rules/ux-design.md +4 -0
- package/presets/opencode/svelte/skills/ci-investigation/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/code-review/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/debug-investigation/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/feature-delivery/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/mockup-review/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/playwright-e2e/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/spec-authoring/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/spec-discovery/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/svelte-performance/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/technical-retro/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/unit-testing/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/ux-design/SKILL.md +1 -1
- package/presets/opencode/svelte/skills/write-adr/SKILL.md +1 -1
- package/scripts/capture-cli-golden.mjs +8 -5
- package/scripts/check-frontmatter.mjs +83 -0
- package/scripts/check-generated-drift.mjs +106 -0
- package/scripts/check-mavis-token-budget.mjs +1 -1
- package/scripts/check-opencode-token-budget.mjs +1 -1
- package/scripts/check-preset-structure.sh +27 -0
- package/scripts/check-preset-token-budget.sh +16 -17
- package/scripts/check-shared-core-drift.sh +10 -5
- package/scripts/close-agent-task-human-gate.mjs +6 -4
- package/scripts/fixtures/cli-golden/claude/next.json +24 -18
- package/scripts/fixtures/cli-golden/cursor/next.json +17 -17
- package/scripts/fixtures/cli-golden/mavis/android-kotlin.json +18 -18
- package/scripts/fixtures/cli-golden/mavis/go.json +15 -15
- package/scripts/fixtures/cli-golden/mavis/ios-swift.json +19 -19
- package/scripts/fixtures/cli-golden/mavis/java.json +15 -15
- package/scripts/fixtures/cli-golden/mavis/mcp-ts.json +16 -16
- package/scripts/fixtures/cli-golden/mavis/next.json +24 -24
- package/scripts/fixtures/cli-golden/mavis/nuxt.json +21 -21
- package/scripts/fixtures/cli-golden/mavis/php-hexagonal.json +15 -15
- package/scripts/fixtures/cli-golden/mavis/php-laravel.json +15 -15
- package/scripts/fixtures/cli-golden/mavis/svelte.json +21 -21
- package/scripts/fixtures/cli-golden/opencode/android-kotlin.json +31 -31
- package/scripts/fixtures/cli-golden/opencode/go.json +26 -26
- package/scripts/fixtures/cli-golden/opencode/ios-swift.json +32 -32
- package/scripts/fixtures/cli-golden/opencode/java.json +26 -26
- package/scripts/fixtures/cli-golden/opencode/mcp-ts.json +23 -23
- package/scripts/fixtures/cli-golden/opencode/next.json +38 -38
- package/scripts/fixtures/cli-golden/opencode/nuxt.json +35 -35
- package/scripts/fixtures/cli-golden/opencode/php-hexagonal.json +26 -26
- package/scripts/fixtures/cli-golden/opencode/php-laravel.json +26 -26
- package/scripts/fixtures/cli-golden/opencode/svelte.json +35 -35
- package/scripts/lib/generate-adapter-common.mjs +11 -0
- package/scripts/lib/generate-mavis-adapter.mjs +20 -10
- package/scripts/lib/generate-opencode-adapter.mjs +19 -4
- package/scripts/test-agent-task-metrics-hooks.mjs +5 -5
- package/scripts/test-chain-team-phases-coverage.mjs +176 -1
- package/scripts/test-cli-init-clean.mjs +165 -34
- package/scripts/test-mavis-context-budget.mjs +1 -1
- package/scripts/test-opencode-context-budget.mjs +1 -1
|
@@ -42,7 +42,7 @@ When validating **android-kotlin preset** changes (or `scope: preset-structure-v
|
|
|
42
42
|
|
|
43
43
|
### FAIL (android-kotlin packaging)
|
|
44
44
|
|
|
45
|
-
1. **Token budget:** Cursor `alwaysApply: true` count
|
|
45
|
+
1. **Token budget:** Cursor `alwaysApply: true` count 3–5; Claude rules without `paths:` 3–5 (**exclude `**/README.md`**). Meta `preset-*` rules must **not** be always-on.
|
|
46
46
|
2. **Chain fork:** `hooks/chain-team-phases.sh` byte-≠ every other stack (Cursor + Claude).
|
|
47
47
|
3. **Forbidden handoff strings** in android-kotlin `chain-team-phases.sh` (Cursor + Claude): `playwright-test-`, `playwright-agents`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`, `xcuitest-test-`, positive `xcodebuild` / `SwiftLint` as required handoffs, positive yarn `lint:js` / `lint:css`.
|
|
48
48
|
4. **Required handoff stems:** `AGENT_HANDOFF` includes `instrumentation-test-planner` (or generator/healer); `build-verifier` prose mentions `gradle-tooling` and/or `post-change-build`.
|
|
@@ -50,7 +50,7 @@ When validating **android-kotlin preset** changes (or `scope: preset-structure-v
|
|
|
50
50
|
6. **Twin presence (hard):** Cursor rule → Claude twin + mapping row — **FAIL** if missing.
|
|
51
51
|
7. **Mapping / README:** `claude/android-kotlin/rules/README.md` mapping table present.
|
|
52
52
|
8. **shared-core consumers:** if `_shared/core/**` changed, matching embeds updated (or intentional fork documented).
|
|
53
|
-
9. **Session-start body budget:** sum of the
|
|
53
|
+
9. **Session-start body budget:** sum of the intended always-on / session-start bodies ≤ **200** lines.
|
|
54
54
|
10. **Embed drift:** `packages/ai-rules/scripts/check-shared-core-drift.sh` with `AI_RULES_DRIFT_FAIL=1`.
|
|
55
55
|
11. **Root AGENTS template:** ship `REPO_AGENTS.md` → **FAIL** if missing.
|
|
56
56
|
12. **Hooks cookbook:** `hooks.json` must **not** reference `hooks/examples/`.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Bootstrap or generate docs/specs (INDEX + page/feature) via task-analyst author mode. Optional docs-only path with human gate.
|
|
2
|
+
description: "Bootstrap or generate docs/specs (INDEX + page/feature) via task-analyst author mode. Optional docs-only path with human gate."
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
## Invocation arguments
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Continue an agent-team task after a human gate, pause, or review changes request using pipeline.json and status.json.
|
|
2
|
+
description: "Continue an agent-team task after a human gate, pause, or review changes request using pipeline.json and status.json."
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
## Invocation arguments
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Route a natural-language task through the agent-team pipeline: task-router, pipeline.json, and the first planned specialist.
|
|
2
|
+
description: "Route a natural-language task through the agent-team pipeline: task-router, pipeline.json, and the first planned specialist."
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
## Invocation arguments
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Facilitate a technical retrospective for a period, incident, release, or completed agent-team task slug.
|
|
2
|
+
description: "Facilitate a technical retrospective for a period, incident, release, or completed agent-team task slug."
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
## Invocation arguments
|
|
@@ -42,7 +42,10 @@ try {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
const slug = active.slug;
|
|
45
|
-
|
|
45
|
+
// Reject non-kebab / traversal slugs: the runtime writes status.json and
|
|
46
|
+
// metrics.json under tasks/<slug>, so an unchecked slug could escape the tree.
|
|
47
|
+
const SLUG_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
48
|
+
if (typeof slug !== 'string' || slug.length > 48 || !SLUG_RE.test(slug)) {
|
|
46
49
|
process.stdout.write('{}');
|
|
47
50
|
process.exit(0);
|
|
48
51
|
}
|
|
@@ -69,6 +72,9 @@ function waitForMetricsLock() {
|
|
|
69
72
|
// and never blocked on the lock file, so two concurrent subagentStop events
|
|
70
73
|
// could both acquire the lock and corrupt metrics.json. Retry EEXIST with a
|
|
71
74
|
// 10 ms sleep up to 200 attempts (2 s ceiling). On any other error, throw.
|
|
75
|
+
// A lock left behind by a killed process is reclaimed once its mtime is older
|
|
76
|
+
// than STALE_LOCK_MS, so one crash cannot brick the task forever.
|
|
77
|
+
const STALE_LOCK_MS = 30000;
|
|
72
78
|
for (let attempt = 0; attempt < 200; attempt += 1) {
|
|
73
79
|
try {
|
|
74
80
|
const fd = fs.openSync(METRICS_LOCK, 'wx');
|
|
@@ -76,6 +82,13 @@ function waitForMetricsLock() {
|
|
|
76
82
|
return;
|
|
77
83
|
} catch (error) {
|
|
78
84
|
if (!error || error.code !== 'EEXIST') throw error;
|
|
85
|
+
try {
|
|
86
|
+
const lockStat = fs.statSync(METRICS_LOCK);
|
|
87
|
+
if (Date.now() - lockStat.mtimeMs > STALE_LOCK_MS) {
|
|
88
|
+
fs.unlinkSync(METRICS_LOCK);
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
} catch {}
|
|
79
92
|
const until = Date.now() + 10;
|
|
80
93
|
while (Date.now() < until) { /* 10 ms busy-wait */ }
|
|
81
94
|
}
|
|
@@ -495,7 +508,10 @@ function legacyFlow() {
|
|
|
495
508
|
|
|
496
509
|
|
|
497
510
|
if (hookInput.action === 'end_human_gate') {
|
|
498
|
-
|
|
511
|
+
// Only advance when a gate was actually open. A duplicate or retried
|
|
512
|
+
// end_human_gate must be a no-op, not a silent pipeline skip.
|
|
513
|
+
const gateWasOpen = Boolean(status.activeHumanGateEventId) || status.awaitingHumanGate === true;
|
|
514
|
+
status.awaitingHumanGate = false;
|
|
499
515
|
// A2 (retro §8): pin a single runId per pipeline so subsequent events don't
|
|
500
516
|
// fragment the metrics ledger across multiple runId sequences. Prefer
|
|
501
517
|
// metrics.json.task.runId when metrics already exist, then status.metricsRunId,
|
|
@@ -522,7 +538,7 @@ if (hookInput.action === 'end_human_gate') {
|
|
|
522
538
|
});
|
|
523
539
|
delete status.activeHumanGateEventId;
|
|
524
540
|
}
|
|
525
|
-
if (hookInput.activateNext && fs.existsSync(pipelinePath)) {
|
|
541
|
+
if (gateWasOpen && hookInput.activateNext && fs.existsSync(pipelinePath)) {
|
|
526
542
|
let resumePipeline = null;
|
|
527
543
|
try { resumePipeline = JSON.parse(fs.readFileSync(pipelinePath, 'utf8')); } catch {}
|
|
528
544
|
if (resumePipeline) {
|
|
@@ -544,6 +560,19 @@ if (hookInput.action === 'end_human_gate') {
|
|
|
544
560
|
else out(handoffForAgent(resumeAgents[0], resumeNext.step.scope, resumeNext.step));
|
|
545
561
|
process.exit(0);
|
|
546
562
|
}
|
|
563
|
+
// Gate on the final step: no executable step remains. Complete the
|
|
564
|
+
// pipeline instead of leaving it in_progress forever.
|
|
565
|
+
status.state = 'completed';
|
|
566
|
+
completeTaskMetrics();
|
|
567
|
+
writeStatus({
|
|
568
|
+
pipelineIndex: resumeSteps.length,
|
|
569
|
+
phase: 'done',
|
|
570
|
+
state: 'completed',
|
|
571
|
+
currentAgent: null,
|
|
572
|
+
awaitingHumanGate: false,
|
|
573
|
+
});
|
|
574
|
+
out(`Pipeline complete for "${slug}". Run /technical-retro ${slug}.`);
|
|
575
|
+
process.exit(0);
|
|
547
576
|
}
|
|
548
577
|
}
|
|
549
578
|
// A2 (retro §8): if gate closes the final human gate of the pipeline
|
|
@@ -14,6 +14,12 @@
|
|
|
14
14
|
- **CUPID:** Composable; Unix philosophy (one responsibility); Predictable; Idiomatic (repo); Domain-based.
|
|
15
15
|
- **Composition over inheritance;** Law of Demeter — no `a.b.c.d` chains; via public API / facade.
|
|
16
16
|
|
|
17
|
+
# Over-abstraction guardrails
|
|
18
|
+
|
|
19
|
+
- **No unnecessary constants:** do not hoist a one-off literal, string, or boolean into a named constant. Inline it, or use an existing token/enum when the value is meaningful and reused. Named constants are for shared, semantic, or repeated values.
|
|
20
|
+
- **No invented utilities:** do not add a `utils`/helper for a single call site or a thin pass-through wrapper. Inline it or extend the existing helper; a new shared utility is justified only after the Rule of Three.
|
|
21
|
+
- **Decompose over conditionals:** a unit (function, component, hook) that accumulates several branches (`if` / ternary / `switch`) should be split into smaller units with one reason to change instead of piling up conditions.
|
|
22
|
+
|
|
17
23
|
# Refactoring during changes
|
|
18
24
|
|
|
19
25
|
- Light refactor is OK if it reduces duplication, improves readability, and does not break public contracts.
|
|
@@ -38,3 +44,11 @@ Essentials below. Full procedural set (~17 rules) → load **`anti-sycophancy-di
|
|
|
38
44
|
Style enforcement (formatter / linter / post-change gate) lives in the **stack toolchain** — see each adapter’s **Stack notes**.
|
|
39
45
|
|
|
40
46
|
> Stack-specific lint gates, examples, and toolchain — in the preset adapter **Stack notes** section.
|
|
47
|
+
|
|
48
|
+
## Stack notes
|
|
49
|
+
|
|
50
|
+
- Before adding a new UI control, check the project design-system and existing Compose components.
|
|
51
|
+
- Public API: `features/<name>/api` contracts and launcher ports — not deep `impl` imports.
|
|
52
|
+
- Acceptable examples: shared mapper/validation; replace `!!`; split an overloaded ViewModel; design tokens instead of magic colors; remove UI→data short-circuits.
|
|
53
|
+
- Post-change gate: **`post-change-build`** + **`gradle-tooling`** (not yarn `lint:js`/`lint:css`).
|
|
54
|
+
- Style: **ktlint / detekt / Android Lint** only when the repo/CI already configures them.
|
|
@@ -38,3 +38,42 @@ Procedure details live in skill `code-review`. Required shape:
|
|
|
38
38
|
- Rank by severity: **`blocker` | `important` | `nit`** (list blocker → nit).
|
|
39
39
|
- Vague («looks risky») is not a finding — cite evidence or ask for surrounding file context.
|
|
40
40
|
- End with a verdict on its own line: **`Safe to merge | needs changes | reject`**.
|
|
41
|
+
|
|
42
|
+
## Stack notes
|
|
43
|
+
|
|
44
|
+
On-demand rule for review flows (not always-on).
|
|
45
|
+
|
|
46
|
+
- **When to apply**
|
|
47
|
+
- Requests: “review this”, “evaluate the MR/branch/diff”, “look at the changes”.
|
|
48
|
+
- Rely on the local repository: branch, `git diff`, open files.
|
|
49
|
+
|
|
50
|
+
- **What the agent must check**
|
|
51
|
+
- **Architecture and layers** (`architecture-boundaries.mdc`, `android-app-core.mdc`):
|
|
52
|
+
- View does not call APIs and does not know DTOs.
|
|
53
|
+
- ViewModel does not depend on Data implementations directly.
|
|
54
|
+
- Domain does not import Jetpack Compose/Android View system.
|
|
55
|
+
- Data does not pull Presentation.
|
|
56
|
+
- **Dependencies and modules**:
|
|
57
|
+
- DI via protocols; composition / holders in `applications/` + feature DI.
|
|
58
|
+
- No deep-import between features.
|
|
59
|
+
- Files in the correct layers (`presentation`, `domain`, `data`, design-system / `api`/`impl`).
|
|
60
|
+
- **Kotlin and concurrency** (`kotlin-conventions.mdc`):
|
|
61
|
+
- `main-safe / viewModelScope` on UI; no unjustified `!!`s.
|
|
62
|
+
- Typed errors; structured concurrency / cancellation where needed.
|
|
63
|
+
- **UI** (`compose-ui.mdc`):
|
|
64
|
+
- Thin Views; Design System tokens; semantics / content descriptions for testable elements.
|
|
65
|
+
- **Networking and data** (`networking-data.mdc`):
|
|
66
|
+
- DTOs separated from domain; mappers cover edge cases.
|
|
67
|
+
- **Tests**:
|
|
68
|
+
- Non-trivial logic — unit (`tests-unit.mdc`); user flows — UI (`tests-ui.mdc`).
|
|
69
|
+
- State which tests to add or update.
|
|
70
|
+
|
|
71
|
+
- **Depth and format**
|
|
72
|
+
- Focus on the **MR diff**, not the whole project.
|
|
73
|
+
- Overview first (MR goal, risks), then concrete comments with file and a fix suggestion matching repo patterns.
|
|
74
|
+
- No “big refactors” without a request (`code-quality-and-refactoring.mdc`).
|
|
75
|
+
|
|
76
|
+
- **Constraints**
|
|
77
|
+
- Do not invent CI/MR hosting metadata without local data.
|
|
78
|
+
- Boy scout rule within the MR.
|
|
79
|
+
- BUGBOT automated review — see root `BUGBOT.md` (Cursor).
|
|
@@ -21,3 +21,5 @@
|
|
|
21
21
|
- Render loading / empty / error / content from ViewModel state — no hidden local business rules.
|
|
22
22
|
- Hoist state as the repo does; avoid duplicating ViewModel state in remember blocks.
|
|
23
23
|
- Side-effect APIs (`LaunchedEffect`, etc.) only for UI concerns, not repository calls.
|
|
24
|
+
- Prefer **decomposition over conditionals**: a composable with several `when` / `if` branches that render different UI should delegate to small sub-composables (`LoadingState()`, `EmptyState()`, `Content()`), not nest branches in one body.
|
|
25
|
+
- Keep the condition in the parent; sub-composables receive resolved state. A `mode` / `variant` parameter that switches between unrelated layouts is **two** composables, not one.
|
|
@@ -97,3 +97,8 @@ Do not introduce a second stem (`refactoring-smells` / `design-patterns-for-agen
|
|
|
97
97
|
- Ubiquitous language: `feature-delivery-workflow` (lineage).
|
|
98
98
|
- MR checklist (smells in scope; pattern name only if repo uses it): `code-review-mr`.
|
|
99
99
|
- Token / twin policy for authors: `preset-token-budget`, `preset-twin-sync` (meta, not consumer always-on).
|
|
100
|
+
|
|
101
|
+
## Stack notes
|
|
102
|
+
|
|
103
|
+
- Prefer protocol + composition over class inheritance hierarchies.
|
|
104
|
+
- Suggest Adapter/Facade at Feature public API / DI boundaries — not inside Views.
|
|
@@ -84,3 +84,11 @@ Policy is stack-class-specific — see adapter **Stack notes**. If a Figma **plu
|
|
|
84
84
|
- Treating overlay absence as blocked (except user-required SoT)
|
|
85
85
|
- Tracker/admin write tools without an explicit ask
|
|
86
86
|
- Calling overlay MCP “just in case” on unrelated tasks
|
|
87
|
+
|
|
88
|
+
## Stack notes
|
|
89
|
+
|
|
90
|
+
- Pipeline **`mockup-reviewer`** is the only agent that reads Figma for mockup review. See `mockup-review`.
|
|
91
|
+
- Shipped besides Context7: Figma (mockup-review pipeline). See `mockup-review`.
|
|
92
|
+
- Do **not** require Storybook, Playwright, or Chrome DevTools MCP as handoffs or delivery gates.
|
|
93
|
+
- Observability and ticket overlays still apply when present.
|
|
94
|
+
- `init` **merges** `mcpServers`: preset keys update; extra local servers are kept.
|
|
@@ -105,3 +105,7 @@ PASS | PASS_WITH_NOTES | FAIL | BLOCKED_MCP
|
|
|
105
105
|
## AC coverage
|
|
106
106
|
| Criterion | Status | Notes |
|
|
107
107
|
```
|
|
108
|
+
|
|
109
|
+
## Stack notes
|
|
110
|
+
|
|
111
|
+
Illustrative Android buckets (not enforced pixels): ~sw360 / sw600 / sw840 (phone / tablet / large) mapped to small / medium / large.
|
|
@@ -9,7 +9,7 @@ Rules for **preset authors** (`packages/ai-rules/presets/**`). Not always-on in
|
|
|
9
9
|
| Layer | Where | What to put |
|
|
10
10
|
|-------|-------|-------------|
|
|
11
11
|
| **Core** | `presets/_shared/core/**` | Stack-agnostic prose + checklists; no frontmatter; no paths `app/**`, `Features/**`, Playwright, xcodebuild |
|
|
12
|
-
| **Stack** | `presets/{cursor\|claude\|mavis\|opencode}/<stack>/` | Domain/tooling, stack always-on
|
|
12
|
+
| **Stack** | `presets/{cursor\|claude\|mavis\|opencode}/<stack>/` | Domain/tooling, stack always-on set (3–5), stack examples in **Stack notes** |
|
|
13
13
|
| **Platform** | Cursor `.mdc` / Claude `.md` / Mavis `.md` / OpenCode `.md` | Frontmatter (`alwaysApply`/`globs` vs `paths:` vs OpenCode `mode`/`permission`), platform-only (`BUGBOT.md`, `CLAUDE.md`) |
|
|
14
14
|
|
|
15
15
|
## Where to put a new rule
|
|
@@ -88,3 +88,7 @@ Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`,
|
|
|
88
88
|
## Chain fork
|
|
89
89
|
|
|
90
90
|
`hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `nuxt`, `svelte`, `ios-swift`, `android-kotlin`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (per platform). Released Mavis/OpenCode stacks must also differ from the Cursor and Claude twins of the same stack.
|
|
91
|
+
|
|
92
|
+
## Stack notes
|
|
93
|
+
|
|
94
|
+
- **Authoring meta:** forbidden/required sections above describe **other stacks** (and this one) for preset authors. Consumer installs of `android-kotlin` must still keep foreign agent stems out of required handoffs.
|
|
@@ -12,7 +12,7 @@ Checklist for PRs that touch `packages/ai-rules/presets/**` (and dogfood `.curso
|
|
|
12
12
|
- [ ] **Mavis derive:** mapped `cursor/<stack>/` change → `mavis/<stack>/` + `adapter-map.json` **same PR** when the stack is in `releasedStacks` (run `generate-mavis.mjs --stack <stack>` + `check-mavis-adapter-map.mjs`; see `preset-twin-sync` § Mavis derivation)
|
|
13
13
|
- [ ] **OpenCode derive:** mapped `cursor/<stack>/` change → `opencode/<stack>/` + `adapter-map.json` **same PR** when the stack is in `releasedStacks` (run `generate-opencode.mjs --stack <stack>` + `check-opencode-adapter-map.mjs`; see `preset-twin-sync` § OpenCode derivation)
|
|
14
14
|
- [ ] **Mapping:** `claude/<stack>/rules/README.md` mapping table is current
|
|
15
|
-
- [ ] **Token budget:** Cursor `alwaysApply`
|
|
15
|
+
- [ ] **Token budget:** Cursor `alwaysApply` and Claude session-start both **3–5** (extra slots reserved for `ai-local-overlay`); body sum ≤200 (stretch ≤170); meta rules not always-on
|
|
16
16
|
- [ ] **Local overlay coverage:** every installable stack ships `ai-local-overlay.mdc` (Cursor) and `ai-local-overlay.md` (Claude) with `MANDATORY` + acknowledgement format + `docs/LOCAL-OVERLAY.md` pointer; Claude twin listed in `claude/<stack>/rules/README.md` mapping table. Run `packages/ai-rules/scripts/check-local-overlay.sh`.
|
|
17
17
|
- [ ] **Leakage:** no foreign stack agent stems / handoff strings (`preset-no-cross-stack-leakage`)
|
|
18
18
|
- [ ] **Hook-only lifecycle:** `status.json` / `metrics.json` writes happen only inside `hooks/`; agents read but never rewrite lifecycle fields. Run `packages/ai-rules/scripts/check-hook-only-lifecycle.sh`.
|
|
@@ -8,19 +8,19 @@ Invariants for rule loading in an **installed** preset (consumer app).
|
|
|
8
8
|
|
|
9
9
|
| Platform | Always-on | Cap |
|
|
10
10
|
|----------|-----------|-----|
|
|
11
|
-
| Cursor | `alwaysApply: true` |
|
|
12
|
-
| Claude | rules **without** `paths:` | **
|
|
13
|
-
| Mavis | `adapter-map` rules with `loadMode: root-entry` |
|
|
14
|
-
| OpenCode | `adapter-map` rules with `loadMode: root-entry` |
|
|
11
|
+
| Cursor | `alwaysApply: true` | **3–5** |
|
|
12
|
+
| Claude | rules **without** `paths:` | **3–5** |
|
|
13
|
+
| Mavis | `adapter-map` rules with `loadMode: root-entry` | **3–5** |
|
|
14
|
+
| OpenCode | `adapter-map` rules with `loadMode: root-entry` | **3–5** |
|
|
15
15
|
|
|
16
|
-
**
|
|
16
|
+
Caps are **aligned** across platforms: minimum **3** (base invariants), maximum **5**. Slots beyond the base invariants are reserved for `ai-local-overlay` (consumer-owned `.ai.local/` rules). If you do not need local overlay, demote that rule to `globs: ["**/.ai.local/**"]` / Claude `paths:`, or a non-root load mode on Mavis / OpenCode.
|
|
17
17
|
|
|
18
|
-
**Claude Option A (README exclusion):** when counting Claude rules without `paths:` / session-start, **exclude `**/README.md`** (topic indexes are not session-start rules).
|
|
18
|
+
**Claude Option A (README exclusion):** when counting Claude rules without `paths:` / session-start, **exclude `**/README.md`** (topic indexes are not session-start rules). Body budget sums only the intended session-start rules (≤5).
|
|
19
19
|
|
|
20
20
|
Session-start body budget:
|
|
21
|
-
- Claude
|
|
22
|
-
- Cursor
|
|
23
|
-
- Mavis / OpenCode: ≤
|
|
21
|
+
- Claude session-start: ≤200 lines total (stretch ≤170).
|
|
22
|
+
- Cursor always-on: ≤200 lines total (stretch ≤170).
|
|
23
|
+
- Mavis / OpenCode: ≤5 root-entry rule files; combined root `AGENTS.md` + platform entry ≤200 nonempty lines. Do not dump the full rule catalog into `AGENTS.md`.
|
|
24
24
|
|
|
25
25
|
## Meta / author rules
|
|
26
26
|
|
|
@@ -36,4 +36,4 @@ Orchestrator, feature-delivery, code-review, post-change gates, domain globs —
|
|
|
36
36
|
|
|
37
37
|
## Verifier
|
|
38
38
|
|
|
39
|
-
build-verifier **FAIL** if Cursor `alwaysApply` count
|
|
39
|
+
build-verifier **FAIL** if Cursor `alwaysApply` count or Claude session-start count is outside **3–5** (Claude count **excludes `**/README.md`**), or if a `preset-*` meta rule is marked always-on.
|
|
@@ -110,3 +110,9 @@ Block handoff via `open_questions` until fixed:
|
|
|
110
110
|
- Skill `spec-authoring` — procedural checklist
|
|
111
111
|
- Skill `spec-discovery` — opt-in research-before-spec (not default)
|
|
112
112
|
- Optional consumer script `scripts/check-product-specs.sh` (ships in the npm package; WARN default; `--strict` FAIL). Bash checks INDEX links, required frontmatter keys, and body headings — it does **not** evaluate `frontmatter-v1.schema.json`
|
|
113
|
+
|
|
114
|
+
## Stack notes
|
|
115
|
+
|
|
116
|
+
- Author via skill `spec-authoring`; templates from package assets / consumer `docs/specs/_templates/`.
|
|
117
|
+
- Field semantics match discovery stem (`routes` = deep links; `e2e` = instrumentation). **No** web Playwright / iOS XCUITest recipes.
|
|
118
|
+
- Requestable — not always-on / session-start.
|
|
@@ -54,3 +54,8 @@ Same-changeset INDEX updates, frontmatter v1, required body headings, templates,
|
|
|
54
54
|
- Skill `spec-discovery` — opt-in research-before-spec (author mode only; not default consume).
|
|
55
55
|
- `reference-features` — code structure mirror (how to layout files), not product behavior.
|
|
56
56
|
- Consumer `.ai/context/**` when present — review/domain glossary; cross-link, do not replace.
|
|
57
|
+
|
|
58
|
+
## Stack notes
|
|
59
|
+
|
|
60
|
+
- `routes`: deep links / screen ids. `ui` / `store`: feature presentation / ViewModel (`features/**` or `features/<name>/impl/**/presentation/`) — **not** web `app/src/ui` or iOS `Features/**`. `e2e`: instrumentation test paths.
|
|
61
|
+
- Requestable / `docs/specs/**` globs — not always-on / session-start.
|
|
@@ -97,3 +97,7 @@ PASS | PASS_WITH_NOTES | INCOMPLETE
|
|
|
97
97
|
## Spec feed
|
|
98
98
|
## Open probes
|
|
99
99
|
```
|
|
100
|
+
|
|
101
|
+
## Stack notes
|
|
102
|
+
|
|
103
|
+
Form-factor **android**: navigation chrome, system back, TalkBack / font-scale intent. Same `ux-design.md` schema as web; put sw/window-size examples here only — do not FAIL on exact dp.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ci-investigation
|
|
3
|
-
description: Investigates failing CI checks on PRs and branches — ./gradlew, ktlint/detekt, unit, Android instrumentation — with local reproduction and minimal fixes. Use when CI is red or for ci-fix pipeline tasks.
|
|
3
|
+
description: "Investigates failing CI checks on PRs and branches — ./gradlew, ktlint/detekt, unit, Android instrumentation — with local reproduction and minimal fixes. Use when CI is red or for ci-fix pipeline tasks."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# CI Investigation (Android)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: code-review
|
|
3
|
-
description: Reviews pull requests, merge requests, git diffs, and branch changes using Android architecture, Jetpack Compose, networking, and testing standards. Use when the user asks for review or when code-reviewer runs in an agent pipeline.
|
|
3
|
+
description: "Reviews pull requests, merge requests, git diffs, and branch changes using Android architecture, Jetpack Compose, networking, and testing standards. Use when the user asks for review or when code-reviewer runs in an agent pipeline."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Code Review (Android)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: debug-investigation
|
|
3
|
-
description: Investigates bugs, failing tests, crashes, and incorrect behavior with runtime evidence before applying minimal fixes. Use for bugfix tasks, debugger agent runs, regressions, and flaky test diagnosis.
|
|
3
|
+
description: "Investigates bugs, failing tests, crashes, and incorrect behavior with runtime evidence before applying minimal fixes. Use for bugfix tasks, debugger agent runs, regressions, and flaky test diagnosis."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
<!-- shared-core: quality/debug-investigation.md -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: feature-delivery
|
|
3
|
-
description: Delivers Android Kotlin/Jetpack Compose features end-to-end across Domain, Data, ViewModels, Views, tests, and post-change-build validation. Use when implementing or extending a feature, especially through /task or feature-developer.
|
|
3
|
+
description: "Delivers Android Kotlin/Jetpack Compose features end-to-end across Domain, Data, ViewModels, Views, tests, and post-change-build validation. Use when implementing or extending a feature, especially through /task or feature-developer."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Feature Delivery (Android)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: instrumentation-ui-e2e
|
|
3
|
-
description: Plan, generate, and heal Android instrumentation UI tests using androidTest sources, project robots/page objects, and Gradle-discovered tasks. Use for instrumentation planning, generation, or fixing flaky UI tests.
|
|
3
|
+
description: "Plan, generate, and heal Android instrumentation UI tests using androidTest sources, project robots/page objects, and Gradle-discovered tasks. Use for instrumentation planning, generation, or fixing flaky UI tests."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Instrumentation UI e2e (Android)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mockup-review
|
|
3
|
-
description: Reviews a Figma mockup for design-system compliance, feature coverage, and viewport matrix via Figma MCP. Use for standalone mockup-review intent or when a feature/refactor/spike/spec-gen task includes a figma.com URL.
|
|
3
|
+
description: "Reviews a Figma mockup for design-system compliance, feature coverage, and viewport matrix via Figma MCP. Use for standalone mockup-review intent or when a feature/refactor/spike/spec-gen task includes a figma.com URL."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Mockup review
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-authoring
|
|
3
|
-
description: Author or bootstrap consumer docs/specs (INDEX, page/feature templates, frontmatter v1). Use with task-analyst author mode, /spec-start, or when brief AC requests Generate/Bootstrap.
|
|
3
|
+
description: "Author or bootstrap consumer docs/specs (INDEX, page/feature templates, frontmatter v1). Use with task-analyst author mode, /spec-start, or when brief AC requests Generate/Bootstrap."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Spec authoring
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: spec-discovery
|
|
3
|
-
description: Opt-in research-before-spec for task-analyst author mode. 11 named methods plus a mandatory claim ledger. Use when the user or AC asks discovery before generating docs/specs — not default /task consume.
|
|
3
|
+
description: "Opt-in research-before-spec for task-analyst author mode. 11 named methods plus a mandatory claim ledger. Use when the user or AC asks discovery before generating docs/specs — not default /task consume."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Spec discovery
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: technical-retro
|
|
3
|
-
description: Facilitates technical retrospectives for tasks, sprints, incidents, releases, and agent-team pipelines. Use when the user asks for retro, postmortem, process review, or action items after delivery.
|
|
3
|
+
description: "Facilitates technical retrospectives for tasks, sprints, incidents, releases, and agent-team pipelines. Use when the user asks for retro, postmortem, process review, or action items after delivery."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Technical Retro
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: unit-testing
|
|
3
|
-
description: Plans, generates, and heals JUnit 4/5 (repo default) for mappers, use cases, and ViewModels using src/test and tests-unit rules. Use for unit test planning, generation, or fixing failing unit tests.
|
|
3
|
+
description: "Plans, generates, and heals JUnit 4/5 (repo default) for mappers, use cases, and ViewModels using src/test and tests-unit rules. Use for unit test planning, generation, or fixing failing unit tests."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Unit Testing (Android)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ux-design
|
|
3
|
-
description: Behavioral UX synthesis and review for task-analyst. Modes synthesize|review. Standalone intent ux-design or embedded required-signal / advisory UI AC. No Figma MCP; no DESIGN.md.
|
|
3
|
+
description: "Behavioral UX synthesis and review for task-analyst. Modes synthesize|review. Standalone intent ux-design or embedded required-signal / advisory UI AC. No Figma MCP; no DESIGN.md."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# UX design
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: write-adr
|
|
3
|
-
description: Author an Architecture Decision Record (ADR) with Context, Decision, Consequences, and Links. Use when capturing a durable technical choice for the team.
|
|
3
|
+
description: "Author an Architecture Decision Record (ADR) with Context, Decision, Consequences, and Links. Use when capturing a durable technical choice for the team."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Write ADR
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"platform": "opencode",
|
|
4
4
|
"stack": "go",
|
|
5
5
|
"semanticSource": "cursor/go",
|
|
6
|
-
"sourceRevision": "
|
|
6
|
+
"sourceRevision": "c80c2a8469a9d8c0b09042fa2dee8e9ba0193704587e9586d352e506126547a6",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
9
9
|
"source": "AGENTS.md",
|
|
@@ -36,7 +36,7 @@ From `packages/ai-rules/`:
|
|
|
36
36
|
yarn check:preset-structure
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
Hard gates: twin-map (stacks include **go**), token-budget (alwaysApply/session-start
|
|
39
|
+
Hard gates: twin-map (stacks include **go**), token-budget (alwaysApply / session-start 3–5), leakage (`GO_FORBIDDEN_*`, chain forks go≠next≠ios-swift≠java), shared-core drift (`AI_RULES_DRIFT_FAIL=1` via `check:preset-structure`).
|
|
40
40
|
|
|
41
41
|
Document PASS/FAIL in `validation-report.md`.
|
|
42
42
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Bootstrap or generate docs/specs (INDEX + page/feature) via task-analyst author mode. Optional docs-only path with human gate.
|
|
2
|
+
description: "Bootstrap or generate docs/specs (INDEX + page/feature) via task-analyst author mode. Optional docs-only path with human gate."
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
## Invocation arguments
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Continue an agent-team task after a human gate, pause, or review changes request using pipeline.json and status.json.
|
|
2
|
+
description: "Continue an agent-team task after a human gate, pause, or review changes request using pipeline.json and status.json."
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
## Invocation arguments
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Route a natural-language task through the agent-team pipeline: task-router, pipeline.json, and the first planned specialist.
|
|
2
|
+
description: "Route a natural-language task through the agent-team pipeline: task-router, pipeline.json, and the first planned specialist."
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
## Invocation arguments
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Facilitate a technical retrospective for a period, incident, release, or completed agent-team task slug.
|
|
2
|
+
description: "Facilitate a technical retrospective for a period, incident, release, or completed agent-team task slug."
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
## Invocation arguments
|
|
@@ -43,7 +43,10 @@ try {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
const slug = active.slug;
|
|
46
|
-
|
|
46
|
+
// Reject non-kebab / traversal slugs: the runtime writes status.json and
|
|
47
|
+
// metrics.json under tasks/<slug>, so an unchecked slug could escape the tree.
|
|
48
|
+
const SLUG_RE = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
49
|
+
if (typeof slug !== 'string' || slug.length > 48 || !SLUG_RE.test(slug)) {
|
|
47
50
|
process.stdout.write('{}');
|
|
48
51
|
process.exit(0);
|
|
49
52
|
}
|
|
@@ -70,6 +73,9 @@ function waitForMetricsLock() {
|
|
|
70
73
|
// and never blocked on the lock file, so two concurrent subagentStop events
|
|
71
74
|
// could both acquire the lock and corrupt metrics.json. Retry EEXIST with a
|
|
72
75
|
// 10 ms sleep up to 200 attempts (2 s ceiling). On any other error, throw.
|
|
76
|
+
// A lock left behind by a killed process is reclaimed once its mtime is older
|
|
77
|
+
// than STALE_LOCK_MS, so one crash cannot brick the task forever.
|
|
78
|
+
const STALE_LOCK_MS = 30000;
|
|
73
79
|
for (let attempt = 0; attempt < 200; attempt += 1) {
|
|
74
80
|
try {
|
|
75
81
|
const fd = fs.openSync(METRICS_LOCK, 'wx');
|
|
@@ -77,6 +83,13 @@ function waitForMetricsLock() {
|
|
|
77
83
|
return;
|
|
78
84
|
} catch (error) {
|
|
79
85
|
if (!error || error.code !== 'EEXIST') throw error;
|
|
86
|
+
try {
|
|
87
|
+
const lockStat = fs.statSync(METRICS_LOCK);
|
|
88
|
+
if (Date.now() - lockStat.mtimeMs > STALE_LOCK_MS) {
|
|
89
|
+
fs.unlinkSync(METRICS_LOCK);
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
} catch {}
|
|
80
93
|
const until = Date.now() + 10;
|
|
81
94
|
while (Date.now() < until) { /* 10 ms busy-wait */ }
|
|
82
95
|
}
|
|
@@ -490,7 +503,10 @@ function legacyFlow() {
|
|
|
490
503
|
|
|
491
504
|
|
|
492
505
|
if (hookInput.action === 'end_human_gate') {
|
|
493
|
-
|
|
506
|
+
// Only advance when a gate was actually open. A duplicate or retried
|
|
507
|
+
// end_human_gate must be a no-op, not a silent pipeline skip.
|
|
508
|
+
const gateWasOpen = Boolean(status.activeHumanGateEventId) || status.awaitingHumanGate === true;
|
|
509
|
+
status.awaitingHumanGate = false;
|
|
494
510
|
// A2 (retro §8): pin a single runId per pipeline so subsequent events don't
|
|
495
511
|
// fragment the metrics ledger across multiple runId sequences. Prefer
|
|
496
512
|
// metrics.json.task.runId when metrics already exist, then status.metricsRunId,
|
|
@@ -517,7 +533,7 @@ if (hookInput.action === 'end_human_gate') {
|
|
|
517
533
|
});
|
|
518
534
|
delete status.activeHumanGateEventId;
|
|
519
535
|
}
|
|
520
|
-
if (hookInput.activateNext && fs.existsSync(pipelinePath)) {
|
|
536
|
+
if (gateWasOpen && hookInput.activateNext && fs.existsSync(pipelinePath)) {
|
|
521
537
|
let resumePipeline = null;
|
|
522
538
|
try { resumePipeline = JSON.parse(fs.readFileSync(pipelinePath, 'utf8')); } catch {}
|
|
523
539
|
if (resumePipeline) {
|
|
@@ -539,6 +555,19 @@ if (hookInput.action === 'end_human_gate') {
|
|
|
539
555
|
else out(handoffForAgent(resumeAgents[0], resumeNext.step.scope, resumeNext.step));
|
|
540
556
|
process.exit(0);
|
|
541
557
|
}
|
|
558
|
+
// Gate on the final step: no executable step remains. Complete the
|
|
559
|
+
// pipeline instead of leaving it in_progress forever.
|
|
560
|
+
status.state = 'completed';
|
|
561
|
+
completeTaskMetrics();
|
|
562
|
+
writeStatus({
|
|
563
|
+
pipelineIndex: resumeSteps.length,
|
|
564
|
+
phase: 'done',
|
|
565
|
+
state: 'completed',
|
|
566
|
+
currentAgent: null,
|
|
567
|
+
awaitingHumanGate: false,
|
|
568
|
+
});
|
|
569
|
+
out(`Pipeline complete for "${slug}". Run /technical-retro ${slug}.`);
|
|
570
|
+
process.exit(0);
|
|
542
571
|
}
|
|
543
572
|
}
|
|
544
573
|
// A2 (retro §8): if gate closes the final human gate of the pipeline
|
|
@@ -9,3 +9,7 @@ When the user message looks like a **work request** (implement, add, fix, refact
|
|
|
9
9
|
3. Pure questions (“how does X work”, “explain”) — prefer agent **`codebase-analyzer`** (explain-as-is); trivial one-liners may be answered inline. Do not open `/task`.
|
|
10
10
|
|
|
11
11
|
Exceptions: user explicitly says “no pipeline”, “just do it”, or continues an active slug.
|
|
12
|
+
|
|
13
|
+
## Stack notes
|
|
14
|
+
|
|
15
|
+
- Scope: Go services (`cmd/`, `internal/**`) — hexagonal ports/adapters — not Playwright/XCUITest UI flows.
|
|
@@ -14,6 +14,12 @@
|
|
|
14
14
|
- **CUPID:** Composable; Unix philosophy (one responsibility); Predictable; Idiomatic (repo); Domain-based.
|
|
15
15
|
- **Composition over inheritance;** Law of Demeter — no `a.b.c.d` chains; via public API / facade.
|
|
16
16
|
|
|
17
|
+
# Over-abstraction guardrails
|
|
18
|
+
|
|
19
|
+
- **No unnecessary constants:** do not hoist a one-off literal, string, or boolean into a named constant. Inline it, or use an existing token/enum when the value is meaningful and reused. Named constants are for shared, semantic, or repeated values.
|
|
20
|
+
- **No invented utilities:** do not add a `utils`/helper for a single call site or a thin pass-through wrapper. Inline it or extend the existing helper; a new shared utility is justified only after the Rule of Three.
|
|
21
|
+
- **Decompose over conditionals:** a unit (function, component, hook) that accumulates several branches (`if` / ternary / `switch`) should be split into smaller units with one reason to change instead of piling up conditions.
|
|
22
|
+
|
|
17
23
|
# Refactoring during changes
|
|
18
24
|
|
|
19
25
|
- Light refactor is OK if it reduces duplication, improves readability, and does not break public contracts.
|
|
@@ -38,3 +44,12 @@ Essentials below. Full procedural set (~17 rules) → load **`anti-sycophancy-di
|
|
|
38
44
|
Style enforcement (formatter / linter / post-change gate) lives in the **stack toolchain** — see each adapter’s **Stack notes**.
|
|
39
45
|
|
|
40
46
|
> Stack-specific lint gates, examples, and toolchain — in the preset adapter **Stack notes** section.
|
|
47
|
+
|
|
48
|
+
## Stack notes
|
|
49
|
+
|
|
50
|
+
- **No UI layer in this preset** — ignore shared-core bullets about design system / UI packages / CSS tokens; apply public-API and boy-scout rules to Go packages/ports instead.
|
|
51
|
+
- Public API between packages: exported types/funcs in `pkg/` or explicit ports — avoid deep imports of another feature's `internal`.
|
|
52
|
+
- Prefer wrapping errors with `%w`; check with `errors.Is` / `errors.As`.
|
|
53
|
+
- Interfaces belong at **ports** (consumer side), not on every struct.
|
|
54
|
+
- Post-change gate: **`post-change-test.mdc`** + **`go-tooling.mdc`** (not yarn lint / xcodebuild).
|
|
55
|
+
- Style: **gofmt** / **goimports** + **golangci-lint** when configured — authoritative style gate; do not duplicate linter rules in prose.
|