@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
|
@@ -13,23 +13,23 @@
|
|
|
13
13
|
".opencode/MCP.md": "82420d33d4b50e9f082b2a65c62657592f6eb541034771811c13015f9bd36660",
|
|
14
14
|
".opencode/agents/README.md": "b49bff590381deb0841766c785c4124a590315080b363f373416f445a630153c",
|
|
15
15
|
".opencode/agents/api-contract-reviewer.md": "aae9e9e4a831658ec193ce72d549023c7d8b11cafc2569ce07eb964a353bf1f0",
|
|
16
|
-
".opencode/agents/build-verifier.md": "
|
|
16
|
+
".opencode/agents/build-verifier.md": "b271082efd336123ddce17d7cf8b877eb549b07300002b6f882eff0cafa13b94",
|
|
17
17
|
".opencode/agents/ci-investigator.md": "d2f22009081bba3696550e779faf72f115e9f07ed4053d4dbe174375dcb3cb0a",
|
|
18
|
-
".opencode/agents/code-reviewer.md": "
|
|
18
|
+
".opencode/agents/code-reviewer.md": "fc4e1552310066ddfe80adccff1853cc4629793017eb4f8bf8ce0cdd25841e03",
|
|
19
19
|
".opencode/agents/codebase-analyzer.md": "2545bf58b383c205164f5c6d2db4f01722bd201c7bb272014256686daead90ad",
|
|
20
20
|
".opencode/agents/debugger.md": "d412fa153e291dbc6f2e3dd659905ff51cc8d8a112968325a67ec85277df76b0",
|
|
21
|
-
".opencode/agents/feature-developer.md": "
|
|
21
|
+
".opencode/agents/feature-developer.md": "198fbca63d374d31a5f6a0f2fd16c8e6e2ac7956ea4baf8b0effac7bbc0bdec9",
|
|
22
22
|
".opencode/agents/integration-test-generator.md": "f43866c354a97377cbfbe84e740159b3eb81ebf688c58eb0bbed5effe7245d83",
|
|
23
23
|
".opencode/agents/integration-test-healer.md": "67c74f8d77b714788b16c671245b091552c598dd7115faf0610a0b639e6a9d9b",
|
|
24
24
|
".opencode/agents/integration-test-planner.md": "57e215b97fb4a245d320930239816a8ae38573c3086d90e2929da349b62a3587",
|
|
25
25
|
".opencode/agents/migration-specialist.md": "b44d5a6511e28f1033cced72fc20510db0de98ca4d05f93f4a771e9963eb4158",
|
|
26
|
-
".opencode/agents/openspec-author.md": "
|
|
26
|
+
".opencode/agents/openspec-author.md": "c4ce0951a6ac8583a2f901869067e883b7007c3efb810a89020282711ac2adbe",
|
|
27
27
|
".opencode/agents/performance-auditor.md": "20d11dde57fa797202c52d6d2c1b45a79656eaecc5e2d9702ec68c94ba07ed7c",
|
|
28
28
|
".opencode/agents/qa-tester.md": "158e71ed249f5d27f8fec8287a3060e42d3979fe032b992ecc6ea16a44d81d52",
|
|
29
29
|
".opencode/agents/security-reviewer.md": "c083ee23c2a43357e2fbd4ef58d882683eea8692f3ec665d788936aaf2bc25f3",
|
|
30
30
|
".opencode/agents/solution-architect.md": "8574f97b8675a9fd4a6a39c9ee567abd4975157c9b2f1e795c0bd9d2be06077c",
|
|
31
|
-
".opencode/agents/task-analyst.md": "
|
|
32
|
-
".opencode/agents/task-router.md": "
|
|
31
|
+
".opencode/agents/task-analyst.md": "520ddf61e49f227d0637a39e11aa95d546f75803bb73dd07b76ae26a2cda17b6",
|
|
32
|
+
".opencode/agents/task-router.md": "26bd5fd2a13fd041f5ed31eb24facc8778b14735e670c6e113c1cc8e8466dd65",
|
|
33
33
|
".opencode/agents/tech-writer.md": "8b40fc07f0a8073ac96f6cae11c8dfe60aba21ee1bdb0dd588a15fb63128da89",
|
|
34
34
|
".opencode/agents/unit-test-generator.md": "8cdff91a86ce70fdf67b73456fa2758258a514778c9d9f09a47c1f322635a842",
|
|
35
35
|
".opencode/agents/unit-test-healer.md": "5ec9f0f435ee24254fecc7f623f92a9225065e1edfc7ed7f680c5b2ceb43c243",
|
|
@@ -44,11 +44,11 @@
|
|
|
44
44
|
".opencode/rules/README.md": "92a21eb0103a6309ec8e0296bd9c02355d452257fb41ca27c524cba3c622b89e",
|
|
45
45
|
".opencode/rules/actions-services.md": "173a4aab9256ac8f3526a395d00cd62ef22acadd76c67f9ab176fd6058b6f9db",
|
|
46
46
|
".opencode/rules/agent-team-intake.md": "12a7d81ccb2b6f504b92cd08a4f8da52d65595750a8ad457649fe44f135adf01",
|
|
47
|
-
".opencode/rules/agent-team-orchestrator.md": "
|
|
47
|
+
".opencode/rules/agent-team-orchestrator.md": "1d9e58a3509dc5262cad1eff9cddf7d65972223bac8ede5d259c3d0f62ff7ade",
|
|
48
48
|
".opencode/rules/ai-local-overlay.md": "5a5f8d29d15bfb76a8e6cc631abb729599cea347f6ebb8221195758a5eab87a1",
|
|
49
49
|
".opencode/rules/anti-sycophancy-discipline.md": "653231c835a98f944e2c125fe5f8cf818b56c0f3602e469488dac1b2267da023",
|
|
50
50
|
".opencode/rules/architecture-boundaries.md": "1b8d164445df36bbe2dd4db46ec2cfa187774e745112216661281e728b39ac0e",
|
|
51
|
-
".opencode/rules/code-quality-and-refactoring.md": "
|
|
51
|
+
".opencode/rules/code-quality-and-refactoring.md": "aff01ce1a59ac4022bd0f722224228ccb7f821d92fde6095220ac28eccd47506",
|
|
52
52
|
".opencode/rules/code-review-mr.md": "4a7ed7c34301b231e1c04e1c83afb00e3735b475f2261fe80d0126a843896f74",
|
|
53
53
|
".opencode/rules/design-guidance.md": "320aa9db3c014e5189130f24e81bfde59d065ac670d1361b1f3c4d3bbd9a35ee",
|
|
54
54
|
".opencode/rules/domain-layer.md": "41d8cdcdf2f7abd7035bec4bf498f1f945e2bc3041bbb1be8dffd466e5afba68",
|
|
@@ -25,30 +25,30 @@
|
|
|
25
25
|
".opencode/AGENTS.md": "e52d6380b1d7c33dc0c819eb88b535ec28c4376016e0751e91877313de6bd0a2",
|
|
26
26
|
".opencode/MCP.md": "3a27ce1483e2c6df44a531556738558898f50a20e16450bea02f620c0ad84b54",
|
|
27
27
|
".opencode/agents/README.md": "8a9a4307b5326db65490cd73ff1e309d9bc8a678477d51b358b86dbc388d9b61",
|
|
28
|
-
".opencode/agents/accessibility-reviewer.md": "
|
|
29
|
-
".opencode/agents/api-contract-reviewer.md": "
|
|
30
|
-
".opencode/agents/build-verifier.md": "
|
|
31
|
-
".opencode/agents/ci-investigator.md": "
|
|
32
|
-
".opencode/agents/code-reviewer.md": "
|
|
28
|
+
".opencode/agents/accessibility-reviewer.md": "af2ca0cbe12864c4d5384396a3c63931c9ee105bb5dc31cd0a60eaa4f6c2129b",
|
|
29
|
+
".opencode/agents/api-contract-reviewer.md": "d21cda31442838e51833c9b3f775f40865adb586ac14d36b2e5c61344564c633",
|
|
30
|
+
".opencode/agents/build-verifier.md": "e2679ba112dcd97a81a6ba33913c73c14799eb6f9ee88837d9d1aaf8fba6f521",
|
|
31
|
+
".opencode/agents/ci-investigator.md": "8b118897ac0b2e328317077d3ddf88c7d3de728ebca0513a71a0dad338e454df",
|
|
32
|
+
".opencode/agents/code-reviewer.md": "586c57d090c53856b47e73d7396af434e06528d4789bdc911068e09140c8cae5",
|
|
33
33
|
".opencode/agents/codebase-analyzer.md": "38b19c35e0299fe2884a83c7dd6ffb45a4ed62761c667694651393a6e0d5b861",
|
|
34
|
-
".opencode/agents/debugger.md": "
|
|
35
|
-
".opencode/agents/feature-developer.md": "
|
|
36
|
-
".opencode/agents/migration-specialist.md": "
|
|
37
|
-
".opencode/agents/mockup-reviewer.md": "
|
|
38
|
-
".opencode/agents/openspec-author.md": "
|
|
39
|
-
".opencode/agents/performance-auditor.md": "
|
|
34
|
+
".opencode/agents/debugger.md": "b47942a8af4a609c229b9412be6ced6203d2bf520dde23ae529f01c5d35eca04",
|
|
35
|
+
".opencode/agents/feature-developer.md": "60dec7408836d4a430e6049777c79f3467f376664bbd71d95d2b2de36066e3dd",
|
|
36
|
+
".opencode/agents/migration-specialist.md": "366d4ab3a5055be8119e997c659d439eb60af1a233158b040d0e81ad995dcb6d",
|
|
37
|
+
".opencode/agents/mockup-reviewer.md": "b1601db31a43a684eafe604cd44f052c22dd260434a4cc6cb980cd74bfeb71b1",
|
|
38
|
+
".opencode/agents/openspec-author.md": "f62ab57eb47b2bd659eb70b215b7e13d4fd6af43d9a504ec2b039da10aca0c43",
|
|
39
|
+
".opencode/agents/performance-auditor.md": "5a143225080880604e2fb4b213175e237c7067dac91a5b89a72781226ec51408",
|
|
40
40
|
".opencode/agents/playwright-test-generator.md": "4a283aabd817cb78654c60fb62bd220c90deb13b628a0264ce7f513c3f54a697",
|
|
41
41
|
".opencode/agents/playwright-test-healer.md": "aab31a04e04a87fac8b24240bebcf011d0793ca9b205563e2c2f837ee3d6705b",
|
|
42
42
|
".opencode/agents/playwright-test-planner.md": "8079e3c765a1b696ecb1ab68f5c47cb8a4e0fb9c258e3ecf29e14a43310999fc",
|
|
43
|
-
".opencode/agents/qa-tester.md": "
|
|
44
|
-
".opencode/agents/security-reviewer.md": "
|
|
45
|
-
".opencode/agents/solution-architect.md": "
|
|
46
|
-
".opencode/agents/task-analyst.md": "
|
|
47
|
-
".opencode/agents/task-router.md": "
|
|
48
|
-
".opencode/agents/tech-writer.md": "
|
|
49
|
-
".opencode/agents/unit-test-generator.md": "
|
|
50
|
-
".opencode/agents/unit-test-healer.md": "
|
|
51
|
-
".opencode/agents/unit-test-planner.md": "
|
|
43
|
+
".opencode/agents/qa-tester.md": "120cdc3e41b570bd70889e01625870eab4ce3f72653d414578b8b0e76240946e",
|
|
44
|
+
".opencode/agents/security-reviewer.md": "6e14abfd44e8c5fac6bd6a94287789f9e19816bd9842e81e525c3622ae285c59",
|
|
45
|
+
".opencode/agents/solution-architect.md": "e4d66a58223722c1d2c6ddfc00f5dd83a86e13885eed84dcab0fed483611d412",
|
|
46
|
+
".opencode/agents/task-analyst.md": "ee2503e6f2c1dcaa3b03bf2b9618a4a0dafad7d31943963be2356e87726fcc65",
|
|
47
|
+
".opencode/agents/task-router.md": "18c554047c7705a78524d75883baf6223e9c77e964834bf3146ba463e4094c83",
|
|
48
|
+
".opencode/agents/tech-writer.md": "7a15bdbe585036d070732a13b64961e19d656cd82b377b4375873e419426aba2",
|
|
49
|
+
".opencode/agents/unit-test-generator.md": "f4de329360a65117cf03ad66959bc96e97fcaf9836cba5ed237e1ebf01179ee4",
|
|
50
|
+
".opencode/agents/unit-test-healer.md": "32ba9e0aff1b600f8c55f704cbe51ce51ac0ed90de3b3889c6b637c3040127f8",
|
|
51
|
+
".opencode/agents/unit-test-planner.md": "6c6fafa68b6294b15c9b0d950d602ffe1f5ea5afc87de5b327bb5bc6d78f7eb8",
|
|
52
52
|
".opencode/commands/README.md": "ea7561075abfa64140ecd467ed0107f0d9242b8194035f108826361157ab04c8",
|
|
53
53
|
".opencode/commands/spec-start.md": "0e7f610784a24c9feca8ecce14934d85233821265258fe09abab2892b9f81e0b",
|
|
54
54
|
".opencode/commands/task-continue.md": "f73926dd94b27dd34cbb99646bedb45fe8ad7f42623591e0760d4074941ecb4d",
|
|
@@ -58,17 +58,17 @@
|
|
|
58
58
|
".opencode/hooks/chain-team-phases.sh": "f4d2b6ba2765065d8cde93d6f9d8eb3f7866509cf5c473b76c12117aa6114448",
|
|
59
59
|
".opencode/rules/README.md": "a844bb203c33e8128c7841bde7a250db53a2cf4726af257aed323f822a9f1a82",
|
|
60
60
|
".opencode/rules/agent-team-intake.md": "6804fda59160de1f3720d7832c7227a8e5c9b8e4c2b9e60fd9a648edd59c2414",
|
|
61
|
-
".opencode/rules/agent-team-orchestrator.md": "
|
|
61
|
+
".opencode/rules/agent-team-orchestrator.md": "1d9e58a3509dc5262cad1eff9cddf7d65972223bac8ede5d259c3d0f62ff7ade",
|
|
62
62
|
".opencode/rules/ai-local-overlay.md": "5a5f8d29d15bfb76a8e6cc631abb729599cea347f6ebb8221195758a5eab87a1",
|
|
63
63
|
".opencode/rules/anti-sycophancy-discipline.md": "653231c835a98f944e2c125fe5f8cf818b56c0f3602e469488dac1b2267da023",
|
|
64
64
|
".opencode/rules/api-services.md": "f9fb6e35114a54d3c41a2ae7098c5d2b3e548a64da28891a8596077860809365",
|
|
65
65
|
".opencode/rules/architecture-boundaries-ui.md": "42f07eb22802fd92204f2a3b155316a167a7382b6d818c961ae4656e47c9c790",
|
|
66
66
|
".opencode/rules/architecture-boundaries.md": "c35db8b3ad042d8569f6b99850e8bc3049856a0e66377d8be4b5657495b5e763",
|
|
67
67
|
".opencode/rules/code-quality-and-refactoring.md": "221426208f3bd19b3f97ed9e764e682f6ad56029daba0694a34b2c3bdf9ffd2f",
|
|
68
|
-
".opencode/rules/code-review-mr.md": "
|
|
68
|
+
".opencode/rules/code-review-mr.md": "f301078de63d5b0ce2df2dbcfe0328358ab1c08ad1013c2cd8389ed1890f3613",
|
|
69
69
|
".opencode/rules/css-property-order-stylelint.md": "d1de016aad731818bf3cf4705d42ca4a60d44663ada0cdf3c8f911dd76e500d3",
|
|
70
70
|
".opencode/rules/design-guidance.md": "0a5eaa999f5d5e930e0a54859c7f634968d8b3c7379b60a7cb7968c438d5e59e",
|
|
71
|
-
".opencode/rules/feature-delivery-workflow.md": "
|
|
71
|
+
".opencode/rules/feature-delivery-workflow.md": "4205458081fe28ef4143d3e87f80e2df5d33b5cbe5bbeb6a1a0e5fafe8631ada",
|
|
72
72
|
".opencode/rules/http-client.md": "19bc5fbb0070d000e3b0c6ffb1c4d818c8d7fc8e614595b1038433ae11760b0b",
|
|
73
73
|
".opencode/rules/layer-barrel-exports.md": "e0f6d1e6e10f84867660bdeb88799d9ffd4bfd778029fafde86a349d912573ec",
|
|
74
74
|
".opencode/rules/mcp-usage.md": "0726fa82721b16e0eeca6f32493f0e4411cf8e9ddc60f687c5d4a0357d8660eb",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
".opencode/rules/product-specs-authoring.md": "e355387117e689cd957ec02a0c7c306014f7a21cdcaf0e85f57858c12ad0911e",
|
|
89
89
|
".opencode/rules/product-specs.md": "e1210aa455b65adcedef6c9d79b55273de989c459fc9a3564bfc167b61e481d8",
|
|
90
90
|
".opencode/rules/public-imports.md": "c6ec89498e372307f59472d640512f7ab7c7ad73a32b430fafe1eb7fcf1b3fec",
|
|
91
|
-
".opencode/rules/reference-features.md": "
|
|
91
|
+
".opencode/rules/reference-features.md": "cc1cb58c1c8c4e4100b137bd756fcfbdd442057cc3e785db72cbac910f78f00e",
|
|
92
92
|
".opencode/rules/security-sveltekit.md": "d22fa9ad9ff3199b9932dab782ba0619d3827aabbfa0149537754f525c9e218d",
|
|
93
93
|
".opencode/rules/store-svelte.md": "e677453db5afb848775062061aeaaffe75b4c55ed162254da9e0f269c26ddd7b",
|
|
94
94
|
".opencode/rules/svelte-a11y-coding.md": "f27bb73f047f5ace9ec28e37bd94c42bc436bdfc5f62d5c0e4b84996ef5c53bb",
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
".opencode/rules/svelte-ui.md": "806656b8a77a17523808608a1cb2e463ad0fc56a95b7bc877ec9ec0e94cb8805",
|
|
99
99
|
".opencode/rules/sveltekit-routing.md": "376e1b079e27abc9cbdcb4cc7038185db54a86e018653a07d055cd8ff23decc8",
|
|
100
100
|
".opencode/rules/technical-retro.md": "5f9ed6b3b86035866e26d153a60805da08c4670f3d46581bde1839469861b179",
|
|
101
|
-
".opencode/rules/tests-e2e-structure.md": "
|
|
101
|
+
".opencode/rules/tests-e2e-structure.md": "ffbc196682d90b5b51f996d86e2578e0616638cdde355d221fb7ad985f722666",
|
|
102
102
|
".opencode/rules/tests-unit.md": "508506fd752f1641537b71361c34ffee2577b67888dccae5e16242e0a1a310ab",
|
|
103
103
|
".opencode/rules/types-jsdoc.md": "5827aeb0fba00ab115d37607b621eb8d562d12b8d404c9994ee17a5f4445ea5f",
|
|
104
104
|
".opencode/rules/ux-design.md": "a62ef0c176f0615c4a27ff3c5859eb858be5a8e28de430a41be4504f5f2fd960",
|
|
@@ -241,6 +241,23 @@ export function rewriteMdcToMd(text) {
|
|
|
241
241
|
.replace(/(?<![\w./-])([\w-]+)\.mdc\b/g, '$1.md');
|
|
242
242
|
}
|
|
243
243
|
|
|
244
|
+
/**
|
|
245
|
+
* Rewrite `.mdc` cross-references to sibling rule stems only.
|
|
246
|
+
*
|
|
247
|
+
* The broad `rewriteMdcToMd` also rewrites backticked paths such as
|
|
248
|
+
* `presets/cursor/next/rules/*.mdc`, which is wrong inside embed-mode adapter
|
|
249
|
+
* bodies (Stack notes / preserved prose) where meta-rules legitimately describe
|
|
250
|
+
* the Cursor SoT. Restrict to stems that exist as rules in the target tree.
|
|
251
|
+
*/
|
|
252
|
+
export function rewriteRuleStemRefs(text, stems) {
|
|
253
|
+
if (!stems || stems.size === 0) {
|
|
254
|
+
return text;
|
|
255
|
+
}
|
|
256
|
+
return text.replace(/(?<![\w./-])([a-z][\w-]*)\.mdc\b/g, (match, stem) =>
|
|
257
|
+
stems.has(stem) ? `${stem}.md` : match,
|
|
258
|
+
);
|
|
259
|
+
}
|
|
260
|
+
|
|
244
261
|
export function rewriteConsumerRoot(text, fromRoot, toRoot) {
|
|
245
262
|
return text
|
|
246
263
|
// Living conventions live at `.ai.local/conventions.md`; `.ai.local/team/**`
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
rewriteCursorPipelineIntro,
|
|
22
22
|
rewriteMdcToMd,
|
|
23
23
|
rewriteOrchestratorCursorNotes,
|
|
24
|
+
rewriteRuleStemRefs,
|
|
24
25
|
sharedCoreStem,
|
|
25
26
|
standardTierCell,
|
|
26
27
|
strongTierCell,
|
|
@@ -95,7 +96,7 @@ function stripEmbeddedCatalogLine(body) {
|
|
|
95
96
|
function transformMarkdown(
|
|
96
97
|
sourceText,
|
|
97
98
|
stack,
|
|
98
|
-
{ command = false, allowEmbedEntry = true, preserveStackNotes = true } = {},
|
|
99
|
+
{ command = false, allowEmbedEntry = true, preserveStackNotes = true, ruleStems } = {},
|
|
99
100
|
) {
|
|
100
101
|
const rewriteProse = (text) => finalizeMavisProse(text, stack);
|
|
101
102
|
const { body } = stripFrontmatter(sourceText);
|
|
@@ -117,7 +118,7 @@ function transformMarkdown(
|
|
|
117
118
|
if (stackNotes) {
|
|
118
119
|
next += `\n${stackNotes}\n`;
|
|
119
120
|
}
|
|
120
|
-
next = rewriteConsumerPaths(next);
|
|
121
|
+
next = rewriteRuleStemRefs(rewriteConsumerPaths(next), ruleStems);
|
|
121
122
|
} else {
|
|
122
123
|
next = rewriteProse(body);
|
|
123
124
|
}
|
|
@@ -416,6 +417,8 @@ export function generateMavisStack(stack, { root = packageRoot } = {}) {
|
|
|
416
417
|
// transformOrchestrator injects a platform-neutral note instead.
|
|
417
418
|
let markdown = transformMarkdown(sourceText, stack, {
|
|
418
419
|
preserveStackNotes: stem !== 'agent-team-orchestrator',
|
|
420
|
+
// Author meta-rules legitimately reference Cursor `.mdc` filenames.
|
|
421
|
+
ruleStems: stem.startsWith('preset-') ? undefined : availableStems,
|
|
419
422
|
});
|
|
420
423
|
if (stem === 'agent-team-orchestrator') {
|
|
421
424
|
markdown = transformOrchestrator(markdown);
|
|
@@ -512,7 +515,10 @@ export function generateMavisStack(stack, { root = packageRoot } = {}) {
|
|
|
512
515
|
category: 'ai-local',
|
|
513
516
|
disposition: 'transform',
|
|
514
517
|
loadMode: 'manual',
|
|
515
|
-
reason:
|
|
518
|
+
reason:
|
|
519
|
+
source === 'ai-local/conventions.md'
|
|
520
|
+
? 'Consumer-owned overlay template; seeded to .ai.local/conventions.md on init'
|
|
521
|
+
: 'Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)',
|
|
516
522
|
}),
|
|
517
523
|
},
|
|
518
524
|
{
|
|
@@ -21,6 +21,7 @@ import {
|
|
|
21
21
|
rewriteCursorPipelineIntro,
|
|
22
22
|
rewriteMdcToMd,
|
|
23
23
|
rewriteOrchestratorCursorNotes,
|
|
24
|
+
rewriteRuleStemRefs,
|
|
24
25
|
sharedCoreStem,
|
|
25
26
|
standardTierCell,
|
|
26
27
|
strongTierCell,
|
|
@@ -92,7 +93,7 @@ function stripEmbeddedCatalogLine(body) {
|
|
|
92
93
|
function transformMarkdown(
|
|
93
94
|
sourceText,
|
|
94
95
|
stack,
|
|
95
|
-
{ allowEmbedEntry = true, preserveStackNotes = true } = {},
|
|
96
|
+
{ allowEmbedEntry = true, preserveStackNotes = true, ruleStems } = {},
|
|
96
97
|
) {
|
|
97
98
|
const rewriteProse = (text) => finalizeOpencodeProse(text, stack);
|
|
98
99
|
const { body } = stripFrontmatter(sourceText);
|
|
@@ -114,7 +115,7 @@ function transformMarkdown(
|
|
|
114
115
|
if (stackNotes) {
|
|
115
116
|
next += `\n${stackNotes}\n`;
|
|
116
117
|
}
|
|
117
|
-
next = rewriteConsumerPaths(next);
|
|
118
|
+
next = rewriteRuleStemRefs(rewriteConsumerPaths(next), ruleStems);
|
|
118
119
|
} else {
|
|
119
120
|
next = rewriteProse(body);
|
|
120
121
|
}
|
|
@@ -528,6 +529,8 @@ export function generateOpencodeStack(stack, { root = packageRoot } = {}) {
|
|
|
528
529
|
// transformOrchestrator injects a platform-neutral note instead.
|
|
529
530
|
let markdown = transformMarkdown(sourceText, stack, {
|
|
530
531
|
preserveStackNotes: stem !== 'agent-team-orchestrator',
|
|
532
|
+
// Author meta-rules legitimately reference Cursor `.mdc` filenames.
|
|
533
|
+
ruleStems: stem.startsWith('preset-') ? undefined : availableStems,
|
|
531
534
|
});
|
|
532
535
|
if (stem === 'agent-team-orchestrator') {
|
|
533
536
|
markdown = transformOrchestrator(markdown);
|
|
@@ -624,7 +627,10 @@ export function generateOpencodeStack(stack, { root = packageRoot } = {}) {
|
|
|
624
627
|
category: 'ai-local',
|
|
625
628
|
disposition: 'transform',
|
|
626
629
|
loadMode: 'manual',
|
|
627
|
-
reason:
|
|
630
|
+
reason:
|
|
631
|
+
source === 'ai-local/conventions.md'
|
|
632
|
+
? 'Consumer-owned overlay template; seeded to .ai.local/conventions.md on init'
|
|
633
|
+
: 'Staged-inactive local overlay rule template; copied to .ai.local/rules-library/ on init (activate by moving it to .ai.local/rules/)',
|
|
628
634
|
}),
|
|
629
635
|
},
|
|
630
636
|
{
|