@bonesofspring/ai-rules 0.2.31 → 0.2.32
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 +11 -0
- package/docs/LOCAL-OVERLAY.md +14 -0
- package/package.json +1 -1
- package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-orchestrator.md +1 -2
- package/presets/claude/go/rules/tooling-and-review/agent-team-orchestrator.md +1 -2
- package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +1 -2
- package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +1 -2
- package/presets/claude/mcp-ts/rules/tooling-and-review/agent-team-orchestrator.md +1 -2
- package/presets/claude/next/REPO_AGENTS.md +11 -1
- package/presets/claude/next/agents/build-verifier.md +1 -0
- package/presets/claude/next/agents/code-reviewer.md +1 -0
- package/presets/claude/next/agents/feature-developer.md +1 -0
- package/presets/claude/next/agents/openspec-author.md +2 -0
- package/presets/claude/next/agents/task-analyst.md +7 -0
- package/presets/claude/next/agents/task-router.md +1 -0
- package/presets/claude/next/rules/README.md +3 -0
- package/presets/claude/next/rules/anti-hallucination/react-next-anti-hallucination.md +10 -0
- package/presets/claude/next/rules/api-and-data/store-rtk.md +6 -0
- package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +5 -1
- package/presets/claude/next/rules/architecture/product-specs-authoring.md +1 -0
- package/presets/claude/next/rules/architecture/product-specs.md +1 -0
- package/presets/claude/next/rules/architecture/reference-features.md +5 -0
- package/presets/claude/next/rules/stack/next-app-core.md +3 -0
- package/presets/claude/next/rules/stack/next-static-export.md +36 -0
- package/presets/claude/next/rules/testing/tests-e2e-structure.md +1 -0
- package/presets/claude/next/rules/testing/tests-unit.md +1 -0
- package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +1 -2
- package/presets/claude/next/rules/tooling-and-review/ai-local-overlay.md +16 -2
- package/presets/claude/next/rules/tooling-and-review/code-review-mr.md +4 -0
- package/presets/claude/next/rules/tooling-and-review/mcp-usage.md +1 -0
- package/presets/claude/next/rules/tooling-and-review/post-change-lint.md +4 -0
- package/presets/claude/next/rules/tooling-and-review/security-next.md +13 -0
- package/presets/claude/next/rules/ui-and-accessibility/component-catalog-gate.md +39 -0
- package/presets/claude/next/rules/ui-and-accessibility/design-tokens-binding.md +1 -1
- package/presets/claude/next/rules/ui-and-accessibility/forms-validation.md +35 -0
- package/presets/claude/next/rules/ui-and-accessibility/react-ui.md +19 -1
- package/presets/claude/next/team/fixtures/feature-with-ux-no-figma.json +3 -4
- package/presets/claude/nuxt/rules/tooling-and-review/agent-team-orchestrator.md +1 -2
- package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-orchestrator.md +1 -2
- package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-orchestrator.md +1 -2
- package/presets/claude/svelte/rules/tooling-and-review/agent-team-orchestrator.md +1 -2
- package/presets/cursor/android-kotlin/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/go/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/java/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/mcp-ts/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/next/REPO_AGENTS.md +11 -1
- package/presets/cursor/next/agents/build-verifier.md +1 -0
- package/presets/cursor/next/agents/code-reviewer.md +1 -0
- package/presets/cursor/next/agents/feature-developer.md +1 -0
- package/presets/cursor/next/agents/openspec-author.md +2 -0
- package/presets/cursor/next/agents/task-analyst.md +7 -0
- package/presets/cursor/next/agents/task-router.md +1 -0
- package/presets/cursor/next/ai-local/rules-library/agent-artifacts-no-local-paths.md +41 -8
- package/presets/cursor/next/ai-local/rules-library/agent-pipeline-gates.md +19 -0
- package/presets/cursor/next/ai-local/rules-library/analytics-events.md +18 -0
- package/presets/cursor/next/ai-local/rules-library/api-contract-source.md +14 -0
- package/presets/cursor/next/ai-local/rules-library/artifact-lifecycle.md +17 -0
- package/presets/cursor/next/ai-local/rules-library/code-style.md +68 -0
- package/presets/cursor/next/ai-local/rules-library/component-child-decomposition.md +81 -0
- package/presets/cursor/next/ai-local/rules-library/feature-flags-experiments.md +15 -0
- package/presets/cursor/next/ai-local/rules-library/mcp-required-for-ui-layout.md +1 -1
- package/presets/cursor/next/ai-local/rules-library/no-react-fc.md +46 -0
- package/presets/cursor/next/ai-local/rules-library/no-test-driven-behavior-change.md +1 -1
- package/presets/cursor/next/ai-local/rules-library/pwa-service-worker.md +15 -0
- package/presets/cursor/next/ai-local/rules-library/qa-test-cases.md +14 -0
- package/presets/cursor/next/ai-local/rules-library/router-pages.md +4 -2
- package/presets/cursor/next/ai-local/rules-library/single-source-copy-constants.md +3 -1
- package/presets/cursor/next/ai-local/rules-library/storybook-catalog-structure.md +62 -0
- package/presets/cursor/next/ai-local/rules-library/storybook-cleanup-temp-screenshots.md +40 -0
- package/presets/cursor/next/ai-local/rules-library/storybook-csf-authoring.md +100 -0
- package/presets/cursor/next/ai-local/rules-library/storybook-dev-compare-figma.md +67 -0
- package/presets/cursor/next/ai-local/rules-library/storybook-keep-tests-current.md +75 -0
- package/presets/cursor/next/ai-local/rules-library/storybook-modals.md +64 -0
- package/presets/cursor/next/ai-local/rules-library/storybook-no-app-node-modules.md +40 -0
- package/presets/cursor/next/ai-local/rules-library/storybook-ui-quality-gate.md +38 -0
- package/presets/cursor/next/ai-local/rules-library/task-levels.md +28 -0
- package/presets/cursor/next/ai-local/rules-library/ui-change-review-gate.md +14 -0
- package/presets/cursor/next/rules/README.md +4 -1
- package/presets/cursor/next/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/next/rules/ai-local-overlay.mdc +16 -2
- package/presets/cursor/next/rules/code-review-mr.mdc +4 -0
- package/presets/cursor/next/rules/component-catalog-gate.mdc +38 -0
- package/presets/cursor/next/rules/design-tokens-binding.mdc +1 -1
- package/presets/cursor/next/rules/feature-delivery-workflow.mdc +5 -1
- package/presets/cursor/next/rules/forms-validation.mdc +33 -0
- package/presets/cursor/next/rules/mcp-usage.mdc +1 -0
- package/presets/cursor/next/rules/next-app-core.mdc +3 -0
- package/presets/cursor/next/rules/next-static-export.mdc +35 -0
- package/presets/cursor/next/rules/post-change-lint.mdc +4 -0
- package/presets/cursor/next/rules/product-specs-authoring.mdc +1 -0
- package/presets/cursor/next/rules/product-specs.mdc +1 -0
- package/presets/cursor/next/rules/react-next-anti-hallucination.mdc +10 -0
- package/presets/cursor/next/rules/react-ui.mdc +19 -1
- package/presets/cursor/next/rules/reference-features.mdc +5 -0
- package/presets/cursor/next/rules/security-next.mdc +12 -0
- package/presets/cursor/next/rules/store-rtk.mdc +6 -0
- package/presets/cursor/next/rules/tests-e2e-structure.mdc +1 -0
- package/presets/cursor/next/rules/tests-unit.mdc +1 -0
- package/presets/cursor/next/team/fixtures/feature-with-ux-no-figma.json +3 -4
- package/presets/cursor/nuxt/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/php-hexagonal/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/php-laravel/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/svelte/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/mavis/android-kotlin/adapter-map.json +1 -1
- package/presets/mavis/android-kotlin/rules/agent-team-orchestrator.md +1 -2
- package/presets/mavis/android-kotlin/rules/code-review-mr.md +6 -6
- package/presets/mavis/go/adapter-map.json +1 -1
- package/presets/mavis/go/rules/agent-team-orchestrator.md +1 -2
- package/presets/mavis/go/rules/code-quality-and-refactoring.md +1 -1
- package/presets/mavis/ios-swift/adapter-map.json +1 -1
- package/presets/mavis/ios-swift/rules/agent-team-orchestrator.md +1 -2
- package/presets/mavis/ios-swift/rules/code-quality-and-refactoring.md +1 -1
- package/presets/mavis/ios-swift/rules/code-review-mr.md +6 -6
- package/presets/mavis/ios-swift/rules/feature-delivery-workflow.md +14 -14
- package/presets/mavis/ios-swift/rules/reference-features.md +3 -3
- package/presets/mavis/java/adapter-map.json +1 -1
- package/presets/mavis/java/rules/agent-team-orchestrator.md +1 -2
- package/presets/mavis/java/rules/code-quality-and-refactoring.md +1 -1
- package/presets/mavis/mcp-ts/adapter-map.json +1 -1
- package/presets/mavis/mcp-ts/rules/agent-team-orchestrator.md +1 -2
- package/presets/mavis/next/REPO_AGENTS.md +11 -1
- package/presets/mavis/next/adapter-map.json +192 -8
- package/presets/mavis/next/agents/build-verifier.md +1 -0
- package/presets/mavis/next/agents/code-reviewer.md +1 -0
- package/presets/mavis/next/agents/feature-developer.md +1 -0
- package/presets/mavis/next/agents/openspec-author.md +2 -0
- package/presets/mavis/next/agents/task-analyst.md +7 -0
- package/presets/mavis/next/agents/task-router.md +1 -0
- package/presets/mavis/next/ai-local/rules-library/agent-artifacts-no-local-paths.md +41 -8
- package/presets/mavis/next/ai-local/rules-library/agent-pipeline-gates.md +19 -0
- package/presets/mavis/next/ai-local/rules-library/analytics-events.md +18 -0
- package/presets/mavis/next/ai-local/rules-library/api-contract-source.md +14 -0
- package/presets/mavis/next/ai-local/rules-library/artifact-lifecycle.md +17 -0
- package/presets/mavis/next/ai-local/rules-library/code-style.md +68 -0
- package/presets/mavis/next/ai-local/rules-library/component-child-decomposition.md +81 -0
- package/presets/mavis/next/ai-local/rules-library/feature-flags-experiments.md +15 -0
- package/presets/mavis/next/ai-local/rules-library/mcp-required-for-ui-layout.md +1 -1
- package/presets/mavis/next/ai-local/rules-library/no-react-fc.md +46 -0
- package/presets/mavis/next/ai-local/rules-library/no-test-driven-behavior-change.md +1 -1
- package/presets/mavis/next/ai-local/rules-library/pwa-service-worker.md +15 -0
- package/presets/mavis/next/ai-local/rules-library/qa-test-cases.md +14 -0
- package/presets/mavis/next/ai-local/rules-library/router-pages.md +4 -2
- package/presets/mavis/next/ai-local/rules-library/single-source-copy-constants.md +3 -1
- package/presets/mavis/next/ai-local/rules-library/storybook-catalog-structure.md +62 -0
- package/presets/mavis/next/ai-local/rules-library/storybook-cleanup-temp-screenshots.md +40 -0
- package/presets/mavis/next/ai-local/rules-library/storybook-csf-authoring.md +100 -0
- package/presets/mavis/next/ai-local/rules-library/storybook-dev-compare-figma.md +67 -0
- package/presets/mavis/next/ai-local/rules-library/storybook-keep-tests-current.md +75 -0
- package/presets/mavis/next/ai-local/rules-library/storybook-modals.md +64 -0
- package/presets/mavis/next/ai-local/rules-library/storybook-no-app-node-modules.md +40 -0
- package/presets/mavis/next/ai-local/rules-library/storybook-ui-quality-gate.md +38 -0
- package/presets/mavis/next/ai-local/rules-library/task-levels.md +28 -0
- package/presets/mavis/next/ai-local/rules-library/ui-change-review-gate.md +14 -0
- package/presets/mavis/next/rules/agent-team-orchestrator.md +1 -2
- package/presets/mavis/next/rules/ai-local-overlay.md +16 -2
- package/presets/mavis/next/rules/code-quality-and-refactoring.md +2 -2
- package/presets/mavis/next/rules/code-review-mr.md +11 -7
- package/presets/mavis/next/rules/component-catalog-gate.md +31 -0
- package/presets/mavis/next/rules/design-tokens-binding.md +1 -1
- package/presets/mavis/next/rules/feature-delivery-workflow.md +22 -18
- package/presets/mavis/next/rules/forms-validation.md +26 -0
- package/presets/mavis/next/rules/mcp-usage.md +1 -0
- package/presets/mavis/next/rules/mockup-review.md +1 -1
- package/presets/mavis/next/rules/next-app-core.md +3 -0
- package/presets/mavis/next/rules/next-static-export.md +28 -0
- package/presets/mavis/next/rules/post-change-lint.md +4 -0
- package/presets/mavis/next/rules/product-specs-authoring.md +1 -0
- package/presets/mavis/next/rules/product-specs.md +1 -0
- package/presets/mavis/next/rules/react-next-anti-hallucination.md +10 -0
- package/presets/mavis/next/rules/react-ui.md +19 -1
- package/presets/mavis/next/rules/reference-features.md +7 -2
- package/presets/mavis/next/rules/security-next.md +12 -0
- package/presets/mavis/next/rules/store-rtk.md +6 -0
- package/presets/mavis/next/rules/tests-e2e-structure.md +2 -1
- package/presets/mavis/next/rules/tests-unit.md +1 -0
- package/presets/mavis/next/team/fixtures/feature-with-ux-no-figma.json +3 -4
- package/presets/mavis/nuxt/adapter-map.json +1 -1
- package/presets/mavis/nuxt/rules/agent-team-orchestrator.md +1 -2
- package/presets/mavis/nuxt/rules/code-review-mr.md +6 -6
- package/presets/mavis/nuxt/rules/feature-delivery-workflow.md +15 -15
- package/presets/mavis/nuxt/rules/reference-features.md +2 -2
- package/presets/mavis/nuxt/rules/tests-e2e-structure.md +1 -1
- package/presets/mavis/php-hexagonal/adapter-map.json +1 -1
- package/presets/mavis/php-hexagonal/rules/agent-team-orchestrator.md +1 -2
- package/presets/mavis/php-hexagonal/rules/code-quality-and-refactoring.md +1 -1
- package/presets/mavis/php-laravel/adapter-map.json +1 -1
- package/presets/mavis/php-laravel/rules/agent-team-orchestrator.md +1 -2
- package/presets/mavis/php-laravel/rules/code-quality-and-refactoring.md +1 -1
- package/presets/mavis/svelte/adapter-map.json +1 -1
- package/presets/mavis/svelte/rules/agent-team-orchestrator.md +1 -2
- package/presets/mavis/svelte/rules/code-review-mr.md +6 -6
- package/presets/mavis/svelte/rules/feature-delivery-workflow.md +1 -1
- package/presets/mavis/svelte/rules/reference-features.md +2 -2
- package/presets/mavis/svelte/rules/tests-e2e-structure.md +1 -1
- package/presets/opencode/android-kotlin/adapter-map.json +1 -1
- package/presets/opencode/android-kotlin/rules/agent-team-orchestrator.md +1 -2
- package/presets/opencode/android-kotlin/rules/code-review-mr.md +6 -6
- package/presets/opencode/go/adapter-map.json +1 -1
- package/presets/opencode/go/rules/agent-team-orchestrator.md +1 -2
- package/presets/opencode/go/rules/code-quality-and-refactoring.md +1 -1
- package/presets/opencode/ios-swift/adapter-map.json +1 -1
- package/presets/opencode/ios-swift/rules/agent-team-orchestrator.md +1 -2
- package/presets/opencode/ios-swift/rules/code-quality-and-refactoring.md +1 -1
- package/presets/opencode/ios-swift/rules/code-review-mr.md +6 -6
- package/presets/opencode/ios-swift/rules/feature-delivery-workflow.md +14 -14
- package/presets/opencode/ios-swift/rules/reference-features.md +3 -3
- package/presets/opencode/java/adapter-map.json +1 -1
- package/presets/opencode/java/rules/agent-team-orchestrator.md +1 -2
- package/presets/opencode/java/rules/code-quality-and-refactoring.md +1 -1
- package/presets/opencode/mcp-ts/adapter-map.json +1 -1
- package/presets/opencode/mcp-ts/rules/agent-team-orchestrator.md +1 -2
- package/presets/opencode/next/REPO_AGENTS.md +11 -1
- package/presets/opencode/next/adapter-map.json +192 -8
- package/presets/opencode/next/agents/build-verifier.md +1 -0
- package/presets/opencode/next/agents/code-reviewer.md +1 -0
- package/presets/opencode/next/agents/feature-developer.md +1 -0
- package/presets/opencode/next/agents/openspec-author.md +2 -0
- package/presets/opencode/next/agents/task-analyst.md +7 -0
- package/presets/opencode/next/agents/task-router.md +1 -0
- package/presets/opencode/next/ai-local/rules-library/agent-artifacts-no-local-paths.md +41 -8
- package/presets/opencode/next/ai-local/rules-library/agent-pipeline-gates.md +19 -0
- package/presets/opencode/next/ai-local/rules-library/analytics-events.md +18 -0
- package/presets/opencode/next/ai-local/rules-library/api-contract-source.md +14 -0
- package/presets/opencode/next/ai-local/rules-library/artifact-lifecycle.md +17 -0
- package/presets/opencode/next/ai-local/rules-library/code-style.md +68 -0
- package/presets/opencode/next/ai-local/rules-library/component-child-decomposition.md +81 -0
- package/presets/opencode/next/ai-local/rules-library/feature-flags-experiments.md +15 -0
- package/presets/opencode/next/ai-local/rules-library/mcp-required-for-ui-layout.md +1 -1
- package/presets/opencode/next/ai-local/rules-library/no-react-fc.md +46 -0
- package/presets/opencode/next/ai-local/rules-library/no-test-driven-behavior-change.md +1 -1
- package/presets/opencode/next/ai-local/rules-library/pwa-service-worker.md +15 -0
- package/presets/opencode/next/ai-local/rules-library/qa-test-cases.md +14 -0
- package/presets/opencode/next/ai-local/rules-library/router-pages.md +4 -2
- package/presets/opencode/next/ai-local/rules-library/single-source-copy-constants.md +3 -1
- package/presets/opencode/next/ai-local/rules-library/storybook-catalog-structure.md +62 -0
- package/presets/opencode/next/ai-local/rules-library/storybook-cleanup-temp-screenshots.md +40 -0
- package/presets/opencode/next/ai-local/rules-library/storybook-csf-authoring.md +100 -0
- package/presets/opencode/next/ai-local/rules-library/storybook-dev-compare-figma.md +67 -0
- package/presets/opencode/next/ai-local/rules-library/storybook-keep-tests-current.md +75 -0
- package/presets/opencode/next/ai-local/rules-library/storybook-modals.md +64 -0
- package/presets/opencode/next/ai-local/rules-library/storybook-no-app-node-modules.md +40 -0
- package/presets/opencode/next/ai-local/rules-library/storybook-ui-quality-gate.md +38 -0
- package/presets/opencode/next/ai-local/rules-library/task-levels.md +28 -0
- package/presets/opencode/next/ai-local/rules-library/ui-change-review-gate.md +14 -0
- package/presets/opencode/next/rules/agent-team-orchestrator.md +1 -2
- package/presets/opencode/next/rules/ai-local-overlay.md +16 -2
- package/presets/opencode/next/rules/code-quality-and-refactoring.md +2 -2
- package/presets/opencode/next/rules/code-review-mr.md +11 -7
- package/presets/opencode/next/rules/component-catalog-gate.md +31 -0
- package/presets/opencode/next/rules/design-tokens-binding.md +1 -1
- package/presets/opencode/next/rules/feature-delivery-workflow.md +22 -18
- package/presets/opencode/next/rules/forms-validation.md +26 -0
- package/presets/opencode/next/rules/mcp-usage.md +1 -0
- package/presets/opencode/next/rules/mockup-review.md +1 -1
- package/presets/opencode/next/rules/next-app-core.md +3 -0
- package/presets/opencode/next/rules/next-static-export.md +28 -0
- package/presets/opencode/next/rules/post-change-lint.md +4 -0
- package/presets/opencode/next/rules/product-specs-authoring.md +1 -0
- package/presets/opencode/next/rules/product-specs.md +1 -0
- package/presets/opencode/next/rules/react-next-anti-hallucination.md +10 -0
- package/presets/opencode/next/rules/react-ui.md +19 -1
- package/presets/opencode/next/rules/reference-features.md +7 -2
- package/presets/opencode/next/rules/security-next.md +12 -0
- package/presets/opencode/next/rules/store-rtk.md +6 -0
- package/presets/opencode/next/rules/tests-e2e-structure.md +2 -1
- package/presets/opencode/next/rules/tests-unit.md +1 -0
- package/presets/opencode/next/team/fixtures/feature-with-ux-no-figma.json +3 -4
- package/presets/opencode/nuxt/adapter-map.json +1 -1
- package/presets/opencode/nuxt/rules/agent-team-orchestrator.md +1 -2
- package/presets/opencode/nuxt/rules/code-review-mr.md +6 -6
- package/presets/opencode/nuxt/rules/feature-delivery-workflow.md +15 -15
- package/presets/opencode/nuxt/rules/reference-features.md +2 -2
- package/presets/opencode/nuxt/rules/tests-e2e-structure.md +1 -1
- package/presets/opencode/php-hexagonal/adapter-map.json +1 -1
- package/presets/opencode/php-hexagonal/rules/agent-team-orchestrator.md +1 -2
- package/presets/opencode/php-hexagonal/rules/code-quality-and-refactoring.md +1 -1
- package/presets/opencode/php-laravel/adapter-map.json +1 -1
- package/presets/opencode/php-laravel/rules/agent-team-orchestrator.md +1 -2
- package/presets/opencode/php-laravel/rules/code-quality-and-refactoring.md +1 -1
- package/presets/opencode/svelte/adapter-map.json +1 -1
- package/presets/opencode/svelte/rules/agent-team-orchestrator.md +1 -2
- package/presets/opencode/svelte/rules/code-review-mr.md +6 -6
- package/presets/opencode/svelte/rules/feature-delivery-workflow.md +1 -1
- package/presets/opencode/svelte/rules/reference-features.md +2 -2
- package/presets/opencode/svelte/rules/tests-e2e-structure.md +1 -1
- package/scripts/check-generated-drift.mjs +42 -2
- package/scripts/check-local-overlay.sh +39 -0
- package/scripts/fixtures/cli-golden/claude/next.json +44 -41
- package/scripts/fixtures/cli-golden/cursor/next.json +69 -46
- package/scripts/fixtures/cli-golden/mavis/android-kotlin.json +21 -21
- package/scripts/fixtures/cli-golden/mavis/go.json +8 -8
- package/scripts/fixtures/cli-golden/mavis/ios-swift.json +12 -12
- package/scripts/fixtures/cli-golden/mavis/java.json +8 -8
- package/scripts/fixtures/cli-golden/mavis/mcp-ts.json +5 -5
- package/scripts/fixtures/cli-golden/mavis/next.json +70 -47
- package/scripts/fixtures/cli-golden/mavis/nuxt.json +25 -25
- package/scripts/fixtures/cli-golden/mavis/php-hexagonal.json +8 -8
- package/scripts/fixtures/cli-golden/mavis/php-laravel.json +8 -8
- package/scripts/fixtures/cli-golden/mavis/svelte.json +25 -25
- package/scripts/fixtures/cli-golden/opencode/android-kotlin.json +21 -21
- package/scripts/fixtures/cli-golden/opencode/go.json +8 -8
- package/scripts/fixtures/cli-golden/opencode/ios-swift.json +12 -12
- package/scripts/fixtures/cli-golden/opencode/java.json +8 -8
- package/scripts/fixtures/cli-golden/opencode/mcp-ts.json +5 -5
- package/scripts/fixtures/cli-golden/opencode/next.json +70 -47
- package/scripts/fixtures/cli-golden/opencode/nuxt.json +25 -25
- package/scripts/fixtures/cli-golden/opencode/php-hexagonal.json +8 -8
- package/scripts/fixtures/cli-golden/opencode/php-laravel.json +8 -8
- package/scripts/fixtures/cli-golden/opencode/svelte.json +25 -25
- package/scripts/lib/generate-adapter-common.mjs +17 -0
- package/scripts/lib/generate-mavis-adapter.mjs +9 -3
- package/scripts/lib/generate-opencode-adapter.mjs +9 -3
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"platform": "mavis",
|
|
4
4
|
"stack": "go",
|
|
5
5
|
"semanticSource": "cursor/go",
|
|
6
|
-
"sourceRevision": "
|
|
6
|
+
"sourceRevision": "a10667f5e6e99f00e672d48fced90254249ba8d887c4a9ae1173a22ae671a9d9",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
9
9
|
"source": "AGENTS.md",
|
|
@@ -109,8 +109,7 @@ Each slug has one `artifact-manifest.json` at `.ai.local/team/tasks/<slug>/`. Th
|
|
|
109
109
|
|
|
110
110
|
- Read the manifest before broad prior-artifact discovery. Each step receives authoritative input entry IDs, owns named output entry IDs, and finishes with one terminal receipt linked to AC/task IDs.
|
|
111
111
|
- Markdown remains detailed evidence; the manifest points to authoritative paths and records producer, status, timestamps, outcome, and evidence paths.
|
|
112
|
-
-
|
|
113
|
-
Agents upsert only the items in `manifest.artifacts[]` they own and preserve foreign items. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
|
|
112
|
+
- Agents upsert only the items they own in `manifest.artifacts[]` and preserve all foreign items in that array. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges. The top-level array key is `artifacts` — not `entries`; see `agent-artifact-contracts.md` for the schema callout.
|
|
114
113
|
- The orchestration runtime/hook is the single writer for `status.json` lifecycle fields and `metrics.json`. Agents read status for eligibility but never rewrite unrelated state, gate, retry, attempt, timestamp, or metrics fields.
|
|
115
114
|
- Missing/stale manifests are reported as a handoff gap; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` rather than inventing authority.
|
|
116
115
|
|
|
@@ -51,5 +51,5 @@ Style enforcement (formatter / linter / post-change gate) lives in the **stack t
|
|
|
51
51
|
- Public API between packages: exported types/funcs in `pkg/` or explicit ports — avoid deep imports of another feature's `internal`.
|
|
52
52
|
- Prefer wrapping errors with `%w`; check with `errors.Is` / `errors.As`.
|
|
53
53
|
- Interfaces belong at **ports** (consumer side), not on every struct.
|
|
54
|
-
- Post-change gate: **`post-change-test.
|
|
54
|
+
- Post-change gate: **`post-change-test.md`** + **`go-tooling.md`** (not yarn lint / xcodebuild).
|
|
55
55
|
- Style: **gofmt** / **goimports** + **golangci-lint** when configured — authoritative style gate; do not duplicate linter rules in prose.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"platform": "mavis",
|
|
4
4
|
"stack": "ios-swift",
|
|
5
5
|
"semanticSource": "cursor/ios-swift",
|
|
6
|
-
"sourceRevision": "
|
|
6
|
+
"sourceRevision": "937738f39c2c848d8187165c9eb63070218c522570ec6529fd4c8b12db317432",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
9
9
|
"source": "AGENTS.md",
|
|
@@ -109,8 +109,7 @@ Each slug has one `artifact-manifest.json` at `.ai.local/team/tasks/<slug>/`. Th
|
|
|
109
109
|
|
|
110
110
|
- Read the manifest before broad prior-artifact discovery. Each step receives authoritative input entry IDs, owns named output entry IDs, and finishes with one terminal receipt linked to AC/task IDs.
|
|
111
111
|
- Markdown remains detailed evidence; the manifest points to authoritative paths and records producer, status, timestamps, outcome, and evidence paths.
|
|
112
|
-
-
|
|
113
|
-
Agents upsert only the items in `manifest.artifacts[]` they own and preserve foreign items. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
|
|
112
|
+
- Agents upsert only the items they own in `manifest.artifacts[]` and preserve all foreign items in that array. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges. The top-level array key is `artifacts` — not `entries`; see `agent-artifact-contracts.md` for the schema callout.
|
|
114
113
|
- The orchestration runtime/hook is the single writer for `status.json` lifecycle fields and `metrics.json`. Agents read status for eligibility but never rewrite unrelated state, gate, retry, attempt, timestamp, or metrics fields.
|
|
115
114
|
- Missing/stale manifests are reported as a handoff gap; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` rather than inventing authority.
|
|
116
115
|
|
|
@@ -50,5 +50,5 @@ Style enforcement (formatter / linter / post-change gate) lives in the **stack t
|
|
|
50
50
|
- Before adding a new UI control, check DesignSystem and existing components.
|
|
51
51
|
- Public API: protocols and facades between features.
|
|
52
52
|
- Acceptable examples: shared mapper/validation; replace force unwrap; split an overloaded ViewModel into use cases; design tokens instead of magic numbers/colors; remove a direct View→Data dependency in favor of a protocol.
|
|
53
|
-
- Post-change gate: **`post-change-build.
|
|
53
|
+
- Post-change gate: **`post-change-build.md`** + `xcode-tooling.md` (not yarn lint).
|
|
54
54
|
- Style: **SwiftLint** (+ SwiftFormat when configured) — authoritative style gate; do not duplicate linter rules in prose.
|
|
@@ -48,7 +48,7 @@ On-demand rule for review flows (not always-on).
|
|
|
48
48
|
- Rely on the local repository: branch, `git diff`, open files.
|
|
49
49
|
|
|
50
50
|
- **What the agent must check**
|
|
51
|
-
- **Architecture and layers** (`architecture-boundaries.
|
|
51
|
+
- **Architecture and layers** (`architecture-boundaries.md`, `ios-app-core.md`):
|
|
52
52
|
- View does not call APIs and does not know DTOs.
|
|
53
53
|
- ViewModel does not depend on Data implementations directly.
|
|
54
54
|
- Domain does not import SwiftUI/UIKit.
|
|
@@ -57,21 +57,21 @@ On-demand rule for review flows (not always-on).
|
|
|
57
57
|
- DI via protocols; composition root in App.
|
|
58
58
|
- No deep-import between features.
|
|
59
59
|
- Files in the correct layers (`Presentation`, `Domain`, `Data`, `DesignSystem`).
|
|
60
|
-
- **Swift and concurrency** (`swift-conventions.
|
|
60
|
+
- **Swift and concurrency** (`swift-conventions.md`):
|
|
61
61
|
- `@MainActor` on UI; no unjustified force unwraps.
|
|
62
62
|
- Typed errors; correct Task cancellation where needed.
|
|
63
|
-
- **UI** (`swiftui-ui.
|
|
63
|
+
- **UI** (`swiftui-ui.md`):
|
|
64
64
|
- Thin Views; Design System tokens; accessibility identifiers for testable elements.
|
|
65
|
-
- **Networking and data** (`networking-services.
|
|
65
|
+
- **Networking and data** (`networking-services.md`):
|
|
66
66
|
- DTOs separated from domain; mappers cover edge cases.
|
|
67
67
|
- **Tests**:
|
|
68
|
-
- Non-trivial logic — unit (`tests-unit.
|
|
68
|
+
- Non-trivial logic — unit (`tests-unit.md`); user flows — UI (`tests-ui.md`).
|
|
69
69
|
- State which tests to add or update.
|
|
70
70
|
|
|
71
71
|
- **Depth and format**
|
|
72
72
|
- Focus on the **MR diff**, not the whole project.
|
|
73
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.
|
|
74
|
+
- No “big refactors” without a request (`code-quality-and-refactoring.md`).
|
|
75
75
|
|
|
76
76
|
- **Constraints**
|
|
77
77
|
- Do not invent CI/MR hosting metadata without local data.
|
|
@@ -52,16 +52,16 @@ Filled in the stack adapter: concrete globs/paths and `.mdc` / topic `.md` names
|
|
|
52
52
|
|
|
53
53
|
When the prompt or `brief.md` contains a `figma.com` URL, **mockup review** (`mockup-reviewer` / skill `mockup-review`) must complete — or the user must continue past FAIL/`BLOCKED_MCP` via `/task-continue` — **before UI implementation**. Non-UI tasks no-op this gate. When required-signal and **no** `figma.com`, **`ux-design.md`** (on the analysis manifest entry) must exist and not be `INCOMPLETE` before UI work — else **blocked**, hand back to `task-analyst`. Parallel to the mockup gate.
|
|
54
54
|
|
|
55
|
-
Typical feature with data and UI. Layer details — `architecture-boundaries.
|
|
55
|
+
Typical feature with data and UI. Layer details — `architecture-boundaries.md`, `ios-app-core.md`.
|
|
56
56
|
|
|
57
57
|
## Checklist (work order)
|
|
58
58
|
|
|
59
59
|
1. **Domain** — entities, value types, repository / use case protocols (`Features/**/Domain/**`).
|
|
60
|
-
2. **Data** — DTOs (`Codable`), Domain ↔ DTO mappers, repository implementations, API client (`networking-services.
|
|
61
|
-
3. **ViewModel** — state, use case / protocol calls; DI from App; no DTOs or URLs (`state-and-viewmodels.
|
|
62
|
-
4. **View / navigation** — thin SwiftUI Views, Design System; navigation as in the repo (`swiftui-ui.
|
|
63
|
-
5. **Tests** — unit for mappers / use cases / VM (`tests-unit.
|
|
64
|
-
6. **Completion** — **invoke** `post-change-build.
|
|
60
|
+
2. **Data** — DTOs (`Codable`), Domain ↔ DTO mappers, repository implementations, API client (`networking-services.md`).
|
|
61
|
+
3. **ViewModel** — state, use case / protocol calls; DI from App; no DTOs or URLs (`state-and-viewmodels.md`).
|
|
62
|
+
4. **View / navigation** — thin SwiftUI Views, Design System; navigation as in the repo (`swiftui-ui.md`).
|
|
63
|
+
5. **Tests** — unit for mappers / use cases / VM (`tests-unit.md`); UI flows — XCUITest (`tests-ui.md`).
|
|
64
|
+
6. **Completion** — **invoke** `post-change-build.md` (+ `xcode-tooling.md` for schemes/commands): build touched targets + lint/format per repo config. When the current WP spans **more than one** layer or module, `implementation.md` includes a **Code Map** (3–8 annotated paths) and **Suggested Review Order** (`concern | path:line | ≤15 word note`). Omit both for a single-file or single-layer WP.
|
|
65
65
|
|
|
66
66
|
## Data flow (orientation)
|
|
67
67
|
|
|
@@ -99,14 +99,14 @@ flowchart LR
|
|
|
99
99
|
|
|
100
100
|
| Zone | Rules |
|
|
101
101
|
|------|---------|
|
|
102
|
-
| `Features/**/Domain/**`, `Core/Domain/**` | `architecture-boundaries.
|
|
103
|
-
| `Features/**/Data/**`, `**/Network*/**` | `networking-services.
|
|
104
|
-
| `*ViewModel*.swift`, Presentation state | `state-and-viewmodels.
|
|
105
|
-
| `Presentation/**`, `DesignSystem/**` | `swiftui-ui.
|
|
106
|
-
| `**/*.swift` (style) | `swift-conventions.
|
|
107
|
-
| `*Tests/**` | `tests-unit.
|
|
108
|
-
| `*UITests/**` | `tests-ui.
|
|
109
|
-
| After Swift edits | `post-change-build.
|
|
102
|
+
| `Features/**/Domain/**`, `Core/Domain/**` | `architecture-boundaries.md`, `ios-app-core.md` |
|
|
103
|
+
| `Features/**/Data/**`, `**/Network*/**` | `networking-services.md`, `architecture-boundaries.md` |
|
|
104
|
+
| `*ViewModel*.swift`, Presentation state | `state-and-viewmodels.md` |
|
|
105
|
+
| `Presentation/**`, `DesignSystem/**` | `swiftui-ui.md`, `architecture-boundaries.md` |
|
|
106
|
+
| `**/*.swift` (style) | `swift-conventions.md` |
|
|
107
|
+
| `*Tests/**` | `tests-unit.md` |
|
|
108
|
+
| `*UITests/**` | `tests-ui.md` |
|
|
109
|
+
| After Swift edits | `post-change-build.md` |
|
|
110
110
|
|
|
111
111
|
When adding or extending a feature, **walk the checklist** and the table rules for touched zones.
|
|
112
112
|
|
|
@@ -81,7 +81,7 @@ Run after preset init (manual smoke for agents):
|
|
|
81
81
|
2. ViewModel bug — debugger → fix → unit test.
|
|
82
82
|
3. DTO↔domain mapper — unit-test-planner/generator.
|
|
83
83
|
4. UI flow — `xcuitest-test-planner` → generator (accessibilityIdentifier).
|
|
84
|
-
5. Auth/Keychain touch — security-reviewer + `security-ios.
|
|
84
|
+
5. Auth/Keychain touch — security-reviewer + `security-ios.md`.
|
|
85
85
|
|
|
86
86
|
## Living conventions
|
|
87
87
|
|
|
@@ -89,6 +89,6 @@ Post-init gotchas / patterns / decisions: **`.ai.local/conventions.md`** (shared
|
|
|
89
89
|
|
|
90
90
|
## Related rules
|
|
91
91
|
|
|
92
|
-
- `code-quality-and-refactoring.
|
|
93
|
-
- `feature-delivery-workflow.
|
|
92
|
+
- `code-quality-and-refactoring.md` — repeat patterns.
|
|
93
|
+
- `feature-delivery-workflow.md` — layer order.
|
|
94
94
|
- skill `feature-delivery` — end-to-end scenario.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"platform": "mavis",
|
|
4
4
|
"stack": "java",
|
|
5
5
|
"semanticSource": "cursor/java",
|
|
6
|
-
"sourceRevision": "
|
|
6
|
+
"sourceRevision": "f817ff79b2cc0a6c212b33bf8d1e926be75de0cc957c5edc06ca13c61971d3bd",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
9
9
|
"source": "AGENTS.md",
|
|
@@ -109,8 +109,7 @@ Each slug has one `artifact-manifest.json` at `.ai.local/team/tasks/<slug>/`. Th
|
|
|
109
109
|
|
|
110
110
|
- Read the manifest before broad prior-artifact discovery. Each step receives authoritative input entry IDs, owns named output entry IDs, and finishes with one terminal receipt linked to AC/task IDs.
|
|
111
111
|
- Markdown remains detailed evidence; the manifest points to authoritative paths and records producer, status, timestamps, outcome, and evidence paths.
|
|
112
|
-
-
|
|
113
|
-
Agents upsert only the items in `manifest.artifacts[]` they own and preserve foreign items. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
|
|
112
|
+
- Agents upsert only the items they own in `manifest.artifacts[]` and preserve all foreign items in that array. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges. The top-level array key is `artifacts` — not `entries`; see `agent-artifact-contracts.md` for the schema callout.
|
|
114
113
|
- The orchestration runtime/hook is the single writer for `status.json` lifecycle fields and `metrics.json`. Agents read status for eligibility but never rewrite unrelated state, gate, retry, attempt, timestamp, or metrics fields.
|
|
115
114
|
- Missing/stale manifests are reported as a handoff gap; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` rather than inventing authority.
|
|
116
115
|
|
|
@@ -51,5 +51,5 @@ Style enforcement (formatter / linter / post-change gate) lives in the **stack t
|
|
|
51
51
|
- Public API between packages: exported types in module API or explicit ports — avoid deep imports of another feature's internals.
|
|
52
52
|
- Prefer checked/unchecked exceptions with clear translation at adapter edges; do not leak persistence exceptions upward.
|
|
53
53
|
- Interfaces belong at **ports** (consumer side), not on every class; prefer composition over inheritance.
|
|
54
|
-
- Post-change gate: **`post-change-test.
|
|
54
|
+
- Post-change gate: **`post-change-test.md`** + **`java-tooling.md`** (not yarn lint / xcodebuild / Playwright).
|
|
55
55
|
- Style/static analysis: use **repository/CI** formatter and checks — do not invent a parallel Checkstyle/SpotBugs bible in rules.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"platform": "mavis",
|
|
4
4
|
"stack": "mcp-ts",
|
|
5
5
|
"semanticSource": "cursor/mcp-ts",
|
|
6
|
-
"sourceRevision": "
|
|
6
|
+
"sourceRevision": "3c9fa1ca7b809872976784c16439a35be56bd3719267217a4b67fc91686c7181",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
9
9
|
"source": "AGENTS.md",
|
|
@@ -109,8 +109,7 @@ Each slug has one `artifact-manifest.json` at `.ai.local/team/tasks/<slug>/`. Th
|
|
|
109
109
|
|
|
110
110
|
- Read the manifest before broad prior-artifact discovery. Each step receives authoritative input entry IDs, owns named output entry IDs, and finishes with one terminal receipt linked to AC/task IDs.
|
|
111
111
|
- Markdown remains detailed evidence; the manifest points to authoritative paths and records producer, status, timestamps, outcome, and evidence paths.
|
|
112
|
-
-
|
|
113
|
-
Agents upsert only the items in `manifest.artifacts[]` they own and preserve foreign items. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges.
|
|
112
|
+
- Agents upsert only the items they own in `manifest.artifacts[]` and preserve all foreign items in that array. Parallel agents use distinct IDs; the parent/orchestrator serializes manifest merges. The top-level array key is `artifacts` — not `entries`; see `agent-artifact-contracts.md` for the schema callout.
|
|
114
113
|
- The orchestration runtime/hook is the single writer for `status.json` lifecycle fields and `metrics.json`. Agents read status for eligibility but never rewrite unrelated state, gate, retry, attempt, timestamp, or metrics fields.
|
|
115
114
|
- Missing/stale manifests are reported as a handoff gap; fall back to `brief.md`, `decomposition.md`, and `pipeline.json` rather than inventing authority.
|
|
116
115
|
|
|
@@ -43,6 +43,8 @@ Working directory for app scripts: **`app/`**. Detect the package manager from l
|
|
|
43
43
|
|
|
44
44
|
After code edits: invoke **`post-change-lint`** (requestable). Full gate: agent `build-verifier`.
|
|
45
45
|
|
|
46
|
+
Repositories with more than one package (e.g. `app/` + `storybook/`) run each package's own scripts from its own directory; do not conflate runners.
|
|
47
|
+
|
|
46
48
|
## Security basics
|
|
47
49
|
|
|
48
50
|
- Do not commit secrets (`.env`, tokens, credentials).
|
|
@@ -65,10 +67,18 @@ Skills: `.cursor/skills/`, `.claude/skills/`, `.mavis/skills/`, or `.opencode/sk
|
|
|
65
67
|
|
|
66
68
|
Gotchas, local patterns, and team decisions: **`.ai.local/conventions.md`** (fill after init; `init` does not overwrite it).
|
|
67
69
|
|
|
70
|
+
## Seed library (`.ai.local/rules-library/`)
|
|
71
|
+
|
|
72
|
+
`init` seeds **staged-inactive** rule templates here (Cursor `.mdc` sources analog: `presets/cursor/next/ai-local/rules-library/**`). They are **not** active until moved into `.ai.local/rules/`. When a seed matches the task scope, apply it and tell the owner to move it. Typical seeds: `router-pages` (Pages Router override), `no-react-fc`, `component-child-decomposition`, `single-source-copy-constants`, `commit-hygiene`, `pre-pr-checklist`, `api-contract-source`, `agent-pipeline-gates`, `task-levels`, `analytics-events`, `feature-flags-experiments`, `pwa-service-worker`, `qa-test-cases`, `forms-validation`, and the `storybook-*` set.
|
|
73
|
+
|
|
74
|
+
## Managed vs preserved
|
|
75
|
+
|
|
76
|
+
`init` owns `.cursor/**`, `.claude/**`, `.mavis/**`, `.opencode/**`, root `AGENTS.md`, and the tool MCP config; it **overwrites/merges** them. Durable project config and authoritative specs belong **outside** those trees: `.ai.local/**`, `.ai/context/**`, `docs/specs/**`, `openspec/**`, repo-root `.mcp.json`. After a re-init, re-check any consumer-owned block added to a managed file.
|
|
77
|
+
|
|
68
78
|
## Local overlay (`.ai.local/`) — MANDATORY
|
|
69
79
|
|
|
70
80
|
A `.ai.local/` directory MAY exist at the repo root or at any nesting depth in monorepos. **All agents MUST read and apply it on every turn.** Rules there override preset rules; in conflicts, the local rule wins. `override: kill <preset-rule-name>` drops the named preset rule from the agent's context entirely.
|
|
71
81
|
|
|
72
|
-
Plain markdown rules under `.ai.local/rules/*.md` are read by the agent with higher priority than preset rules. Living gotchas live in `.ai.local/conventions.md`.
|
|
82
|
+
Plain markdown rules under `.ai.local/rules/*.md` are read by the agent with higher priority than preset rules. Living gotchas live in `.ai.local/conventions.md`. Staged seeds live in `.ai.local/rules-library/**`; a matching seed must be moved into `.ai.local/rules/` to activate.
|
|
73
83
|
|
|
74
84
|
On every turn, probe `ls -la .ai.local`, apply `.ai.local/rules/*.md` and `.ai.local/conventions.md`, and acknowledge `Using .ai.local: <rule-name>`. Authoring guide: `docs/LOCAL-OVERLAY.md` in the `@bonesofspring/ai-rules` package. The `ai-local-overlay` rule is always-on on Cursor and session-start on Claude (no `paths:`). Mavis and OpenCode have no native `alwaysApply`; this section plus the platform entry's essential-rules list is the reinforcement.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"platform": "mavis",
|
|
4
4
|
"stack": "next",
|
|
5
5
|
"semanticSource": "cursor/next",
|
|
6
|
-
"sourceRevision": "
|
|
6
|
+
"sourceRevision": "be4e35ed4a2c1a3f44e976c64eb4ba9dc9940f91b5c440e72ac1375f62e4a481",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
9
9
|
"source": "AGENTS.md",
|
|
@@ -250,7 +250,47 @@
|
|
|
250
250
|
"category": "ai-local",
|
|
251
251
|
"disposition": "transform",
|
|
252
252
|
"loadMode": "manual",
|
|
253
|
-
"reason": "
|
|
253
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"source": "ai-local/rules-library/agent-pipeline-gates.md",
|
|
257
|
+
"target": "ai-local/rules-library/agent-pipeline-gates.md",
|
|
258
|
+
"category": "ai-local",
|
|
259
|
+
"disposition": "transform",
|
|
260
|
+
"loadMode": "manual",
|
|
261
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
"source": "ai-local/rules-library/analytics-events.md",
|
|
265
|
+
"target": "ai-local/rules-library/analytics-events.md",
|
|
266
|
+
"category": "ai-local",
|
|
267
|
+
"disposition": "transform",
|
|
268
|
+
"loadMode": "manual",
|
|
269
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"source": "ai-local/rules-library/api-contract-source.md",
|
|
273
|
+
"target": "ai-local/rules-library/api-contract-source.md",
|
|
274
|
+
"category": "ai-local",
|
|
275
|
+
"disposition": "transform",
|
|
276
|
+
"loadMode": "manual",
|
|
277
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"source": "ai-local/rules-library/artifact-lifecycle.md",
|
|
281
|
+
"target": "ai-local/rules-library/artifact-lifecycle.md",
|
|
282
|
+
"category": "ai-local",
|
|
283
|
+
"disposition": "transform",
|
|
284
|
+
"loadMode": "manual",
|
|
285
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
"source": "ai-local/rules-library/code-style.md",
|
|
289
|
+
"target": "ai-local/rules-library/code-style.md",
|
|
290
|
+
"category": "ai-local",
|
|
291
|
+
"disposition": "transform",
|
|
292
|
+
"loadMode": "manual",
|
|
293
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
254
294
|
},
|
|
255
295
|
{
|
|
256
296
|
"source": "ai-local/rules-library/commit-hygiene.md",
|
|
@@ -258,7 +298,23 @@
|
|
|
258
298
|
"category": "ai-local",
|
|
259
299
|
"disposition": "transform",
|
|
260
300
|
"loadMode": "manual",
|
|
261
|
-
"reason": "
|
|
301
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
302
|
+
},
|
|
303
|
+
{
|
|
304
|
+
"source": "ai-local/rules-library/component-child-decomposition.md",
|
|
305
|
+
"target": "ai-local/rules-library/component-child-decomposition.md",
|
|
306
|
+
"category": "ai-local",
|
|
307
|
+
"disposition": "transform",
|
|
308
|
+
"loadMode": "manual",
|
|
309
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
"source": "ai-local/rules-library/feature-flags-experiments.md",
|
|
313
|
+
"target": "ai-local/rules-library/feature-flags-experiments.md",
|
|
314
|
+
"category": "ai-local",
|
|
315
|
+
"disposition": "transform",
|
|
316
|
+
"loadMode": "manual",
|
|
317
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
262
318
|
},
|
|
263
319
|
{
|
|
264
320
|
"source": "ai-local/rules-library/mcp-required-for-ui-layout.md",
|
|
@@ -266,7 +322,15 @@
|
|
|
266
322
|
"category": "ai-local",
|
|
267
323
|
"disposition": "transform",
|
|
268
324
|
"loadMode": "manual",
|
|
269
|
-
"reason": "
|
|
325
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
"source": "ai-local/rules-library/no-react-fc.md",
|
|
329
|
+
"target": "ai-local/rules-library/no-react-fc.md",
|
|
330
|
+
"category": "ai-local",
|
|
331
|
+
"disposition": "transform",
|
|
332
|
+
"loadMode": "manual",
|
|
333
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
270
334
|
},
|
|
271
335
|
{
|
|
272
336
|
"source": "ai-local/rules-library/no-test-driven-behavior-change.md",
|
|
@@ -274,7 +338,7 @@
|
|
|
274
338
|
"category": "ai-local",
|
|
275
339
|
"disposition": "transform",
|
|
276
340
|
"loadMode": "manual",
|
|
277
|
-
"reason": "
|
|
341
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
278
342
|
},
|
|
279
343
|
{
|
|
280
344
|
"source": "ai-local/rules-library/pre-pr-checklist.md",
|
|
@@ -282,7 +346,23 @@
|
|
|
282
346
|
"category": "ai-local",
|
|
283
347
|
"disposition": "transform",
|
|
284
348
|
"loadMode": "manual",
|
|
285
|
-
"reason": "
|
|
349
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"source": "ai-local/rules-library/pwa-service-worker.md",
|
|
353
|
+
"target": "ai-local/rules-library/pwa-service-worker.md",
|
|
354
|
+
"category": "ai-local",
|
|
355
|
+
"disposition": "transform",
|
|
356
|
+
"loadMode": "manual",
|
|
357
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"source": "ai-local/rules-library/qa-test-cases.md",
|
|
361
|
+
"target": "ai-local/rules-library/qa-test-cases.md",
|
|
362
|
+
"category": "ai-local",
|
|
363
|
+
"disposition": "transform",
|
|
364
|
+
"loadMode": "manual",
|
|
365
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
286
366
|
},
|
|
287
367
|
{
|
|
288
368
|
"source": "ai-local/rules-library/router-pages.md",
|
|
@@ -290,7 +370,7 @@
|
|
|
290
370
|
"category": "ai-local",
|
|
291
371
|
"disposition": "transform",
|
|
292
372
|
"loadMode": "manual",
|
|
293
|
-
"reason": "
|
|
373
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
294
374
|
},
|
|
295
375
|
{
|
|
296
376
|
"source": "ai-local/rules-library/single-source-copy-constants.md",
|
|
@@ -298,7 +378,87 @@
|
|
|
298
378
|
"category": "ai-local",
|
|
299
379
|
"disposition": "transform",
|
|
300
380
|
"loadMode": "manual",
|
|
301
|
-
"reason": "
|
|
381
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
382
|
+
},
|
|
383
|
+
{
|
|
384
|
+
"source": "ai-local/rules-library/storybook-catalog-structure.md",
|
|
385
|
+
"target": "ai-local/rules-library/storybook-catalog-structure.md",
|
|
386
|
+
"category": "ai-local",
|
|
387
|
+
"disposition": "transform",
|
|
388
|
+
"loadMode": "manual",
|
|
389
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
"source": "ai-local/rules-library/storybook-cleanup-temp-screenshots.md",
|
|
393
|
+
"target": "ai-local/rules-library/storybook-cleanup-temp-screenshots.md",
|
|
394
|
+
"category": "ai-local",
|
|
395
|
+
"disposition": "transform",
|
|
396
|
+
"loadMode": "manual",
|
|
397
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
398
|
+
},
|
|
399
|
+
{
|
|
400
|
+
"source": "ai-local/rules-library/storybook-csf-authoring.md",
|
|
401
|
+
"target": "ai-local/rules-library/storybook-csf-authoring.md",
|
|
402
|
+
"category": "ai-local",
|
|
403
|
+
"disposition": "transform",
|
|
404
|
+
"loadMode": "manual",
|
|
405
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
"source": "ai-local/rules-library/storybook-dev-compare-figma.md",
|
|
409
|
+
"target": "ai-local/rules-library/storybook-dev-compare-figma.md",
|
|
410
|
+
"category": "ai-local",
|
|
411
|
+
"disposition": "transform",
|
|
412
|
+
"loadMode": "manual",
|
|
413
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"source": "ai-local/rules-library/storybook-keep-tests-current.md",
|
|
417
|
+
"target": "ai-local/rules-library/storybook-keep-tests-current.md",
|
|
418
|
+
"category": "ai-local",
|
|
419
|
+
"disposition": "transform",
|
|
420
|
+
"loadMode": "manual",
|
|
421
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
"source": "ai-local/rules-library/storybook-modals.md",
|
|
425
|
+
"target": "ai-local/rules-library/storybook-modals.md",
|
|
426
|
+
"category": "ai-local",
|
|
427
|
+
"disposition": "transform",
|
|
428
|
+
"loadMode": "manual",
|
|
429
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
"source": "ai-local/rules-library/storybook-no-app-node-modules.md",
|
|
433
|
+
"target": "ai-local/rules-library/storybook-no-app-node-modules.md",
|
|
434
|
+
"category": "ai-local",
|
|
435
|
+
"disposition": "transform",
|
|
436
|
+
"loadMode": "manual",
|
|
437
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
438
|
+
},
|
|
439
|
+
{
|
|
440
|
+
"source": "ai-local/rules-library/storybook-ui-quality-gate.md",
|
|
441
|
+
"target": "ai-local/rules-library/storybook-ui-quality-gate.md",
|
|
442
|
+
"category": "ai-local",
|
|
443
|
+
"disposition": "transform",
|
|
444
|
+
"loadMode": "manual",
|
|
445
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
446
|
+
},
|
|
447
|
+
{
|
|
448
|
+
"source": "ai-local/rules-library/task-levels.md",
|
|
449
|
+
"target": "ai-local/rules-library/task-levels.md",
|
|
450
|
+
"category": "ai-local",
|
|
451
|
+
"disposition": "transform",
|
|
452
|
+
"loadMode": "manual",
|
|
453
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
"source": "ai-local/rules-library/ui-change-review-gate.md",
|
|
457
|
+
"target": "ai-local/rules-library/ui-change-review-gate.md",
|
|
458
|
+
"category": "ai-local",
|
|
459
|
+
"disposition": "transform",
|
|
460
|
+
"loadMode": "manual",
|
|
461
|
+
"reason": "Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)"
|
|
302
462
|
},
|
|
303
463
|
{
|
|
304
464
|
"source": "commands/spec-start.md",
|
|
@@ -473,6 +633,14 @@
|
|
|
473
633
|
"reason": "Requestable Cursor rule: referenced from entry files; not claimed as MiniMax auto-load",
|
|
474
634
|
"sharedCoreStem": "review/code-review-mr.md"
|
|
475
635
|
},
|
|
636
|
+
{
|
|
637
|
+
"source": "rules/component-catalog-gate.mdc",
|
|
638
|
+
"target": "rules/component-catalog-gate.md",
|
|
639
|
+
"category": "rules",
|
|
640
|
+
"disposition": "transform",
|
|
641
|
+
"loadMode": "referenced",
|
|
642
|
+
"reason": "Requestable Cursor rule: referenced from entry files; not claimed as MiniMax auto-load"
|
|
643
|
+
},
|
|
476
644
|
{
|
|
477
645
|
"source": "rules/css-property-order-stylelint.mdc",
|
|
478
646
|
"target": "rules/css-property-order-stylelint.md",
|
|
@@ -507,6 +675,14 @@
|
|
|
507
675
|
"reason": "Requestable Cursor rule: referenced from entry files; not claimed as MiniMax auto-load",
|
|
508
676
|
"sharedCoreStem": "architecture/feature-delivery-workflow.md"
|
|
509
677
|
},
|
|
678
|
+
{
|
|
679
|
+
"source": "rules/forms-validation.mdc",
|
|
680
|
+
"target": "rules/forms-validation.md",
|
|
681
|
+
"category": "rules",
|
|
682
|
+
"disposition": "transform",
|
|
683
|
+
"loadMode": "referenced",
|
|
684
|
+
"reason": "Requestable Cursor rule: referenced from entry files; not claimed as MiniMax auto-load"
|
|
685
|
+
},
|
|
510
686
|
{
|
|
511
687
|
"source": "rules/http-client.mdc",
|
|
512
688
|
"target": "rules/http-client.md",
|
|
@@ -573,6 +749,14 @@
|
|
|
573
749
|
"loadMode": "referenced",
|
|
574
750
|
"reason": "Requestable Cursor rule: referenced from entry files; not claimed as MiniMax auto-load"
|
|
575
751
|
},
|
|
752
|
+
{
|
|
753
|
+
"source": "rules/next-static-export.mdc",
|
|
754
|
+
"target": "rules/next-static-export.md",
|
|
755
|
+
"category": "rules",
|
|
756
|
+
"disposition": "transform",
|
|
757
|
+
"loadMode": "referenced",
|
|
758
|
+
"reason": "Requestable Cursor rule: referenced from entry files; not claimed as MiniMax auto-load"
|
|
759
|
+
},
|
|
576
760
|
{
|
|
577
761
|
"source": "rules/no-props-spread.mdc",
|
|
578
762
|
"target": "rules/no-props-spread.md",
|
|
@@ -33,6 +33,7 @@ Use **`package-manager.md`** for the repo package manager.
|
|
|
33
33
|
2. **`lint:css`** — full Stylelint.
|
|
34
34
|
3. **`type-check`** — when TypeScript changed.
|
|
35
35
|
4. **Unit tests** — run specs for changed modules (paths from diff); if unclear, run the narrowest parent suite that covers changed mappers/services/store.
|
|
36
|
+
5. **Component catalog** — when the repo ships a catalog (e.g. `storybook/`) and `app/src/ui/**` or catalog files changed, run the catalog's own test/visual-baseline suite from the catalog package and require green **without** `--update` (`component-catalog-gate`). A green app unit run does not cover catalog stories.
|
|
36
37
|
|
|
37
38
|
Prefer **`lint`** (= js + css + type-check) before handoff on large changes.
|
|
38
39
|
|
|
@@ -110,5 +110,6 @@ Do not mix this output with retrospective facilitation — keep review and retro
|
|
|
110
110
|
|
|
111
111
|
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, implementation, validation evidence, and the scoped git diff.
|
|
112
112
|
- **Owned outputs:** `review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `review`) and preserve all foreign items in `manifest.artifacts[]`.
|
|
113
|
+
- **Commit hygiene:** never run `git commit` / `git push`. Reviewer turns end with findings only; when asked for commit guidance, propose an area-split commit plan (source / artifacts / docs) with the owning slug.
|
|
113
114
|
- **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `changes_requested`. Bind it to the supplied `attemptId` when present.
|
|
114
115
|
- **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
|
|
@@ -153,5 +153,6 @@ Shipped browser split: Playwright MCP for e2e specs/selectors; Chrome DevTools M
|
|
|
153
153
|
|
|
154
154
|
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, current scope, and applicable prior findings.
|
|
155
155
|
- **Owned outputs:** `implementation.md` plus changed implementation/test paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `implementation`) and preserve all foreign items in `manifest.artifacts[]`.
|
|
156
|
+
- **Commit hygiene:** never run `git commit` / `git push`. At the end of the turn return a `## Human commits` block: files touched + a proposed commit message, split by area (source / artifacts / docs) with the owning slug/ticket in the subject. See the consumer `commit-hygiene` local rule.
|
|
156
157
|
- **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
|
|
157
158
|
- **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
|
|
@@ -71,6 +71,8 @@ Hard constraints (read `config.yaml rules.proposal` first — they win):
|
|
|
71
71
|
|
|
72
72
|
- `proposal.md` ≤ 500 words.
|
|
73
73
|
- `## Non-goals` section mandatory (omit → `blocked`).
|
|
74
|
+
- `## Compliance impact` block mandatory in `proposal.md` and `design.md` (None | Affected — list PD / medical / analytics / SSR-cookie / third-party surfaces); when unclear, default to `Affected` and block.
|
|
75
|
+
- `## Hard rules applied` block at the top of `proposal.md` / `design.md` / `tasks.md` (applicable rules + how applied; `N/A — reason` for the rest), when the consumer repo maintains hard rules.
|
|
74
76
|
- `## What Changes` lists capability deltas **only**; no implementation steps.
|
|
75
77
|
- `## Capabilities` table groups deltas by capability slug; cite spec paths.
|
|
76
78
|
- Spec deltas use `## MODIFIED Requirements` heading (or `## REMOVED Requirements`); Each `### Requirement:` block carries `SHALL` statements and `#### Scenario:` Given/When/Then. Mirror existing capability voice.
|
|
@@ -60,6 +60,13 @@ Create or update files under `.ai.local/team/tasks/<slug>/`:
|
|
|
60
60
|
## Slug
|
|
61
61
|
<slug>
|
|
62
62
|
|
|
63
|
+
## Hard rules applied
|
|
64
|
+
- <applicable preset/local rule> — <how applied>
|
|
65
|
+
- N/A — <reason> (list non-applicable hard rules explicitly)
|
|
66
|
+
|
|
67
|
+
## Compliance impact
|
|
68
|
+
None | Affected — <surfaces: PD / medical data / analytics / SSR cookies / error reporting / third-party scripts>
|
|
69
|
+
|
|
63
70
|
## Goal
|
|
64
71
|
...
|
|
65
72
|
|
|
@@ -111,6 +111,7 @@ Keep top-level `profile` and emit this top-level object in every new `pipeline.j
|
|
|
111
111
|
- If prompt or `brief.md` contains `figma.com` on `feature` / `refactor` / `spike` / `spec-gen`, insert **mockup-reviewer** after **task-analyst** (when present) and before **solution-architect** and **feature-developer**. Set `model: "strong"` on that step. Do not add static `humanGates: ["after:mockup-reviewer"]` (FAIL-only hook exception). Never put `mockup-reviewer` in a `parallel: true` step (FAIL-only gate is serial).
|
|
112
112
|
- Classify intent `mockup-review` **before** `ux-design` **before** `review-only`. A `figma.com` URL with review-not-implement language is `mockup-review` even without the word «макет», including when the user said «ревью UX». <!-- i18n-keep: E4 -->
|
|
113
113
|
- If UI stack and (required-signal or advisory UI AC), instruct **task-analyst** to load skill `ux-design` (no new pipeline step; analyst default model, not `strong`). Required-signal: user asked UX, or AC require flows/states, or spec-gen page/feature.
|
|
114
|
+
- If the resolved scope touches UI paths (`app/src/ui/**`, or the repo's component-catalog root) on `feature` / `refactor`, insert **mockup-reviewer** even **without** a `figma.com` URL — it reviews against the AC / `ux-design.md` instead of Figma. Pair it with a **`mockup-review.md`** terminal artifact requirement (the UI change is not complete without it) and, where the repo ships a component catalog, a catalog-test note on `build-verifier` (`component-catalog-gate`).
|
|
114
115
|
- Skip **task-analyst** if AC/scope fully specified → document in `skipped`.
|
|
115
116
|
- Add **solution-architect** for cross-layer / new public APIs — after analyst, before developer.
|
|
116
117
|
- Add **api-contract-reviewer** for new/changed backend contracts — before developer.
|