@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
|
@@ -45,9 +45,9 @@ On-demand rule for review flows. **Procedure and output format:** skill `code-re
|
|
|
45
45
|
|
|
46
46
|
### Checklist references
|
|
47
47
|
|
|
48
|
-
- Architecture layers: `architecture-boundaries.
|
|
49
|
-
- Imports: `public-imports.
|
|
50
|
-
- UI: `vue-ui.
|
|
51
|
-
- Security: `security-nuxt.
|
|
52
|
-
- Tests: `tests-unit.
|
|
53
|
-
- Lint gate before final report: `post-change-lint.
|
|
48
|
+
- Architecture layers: `architecture-boundaries.md`, `nuxt-app-core.md`; network: `http-client.md`
|
|
49
|
+
- Imports: `public-imports.md`, `layer-barrel-exports.md`
|
|
50
|
+
- UI: `vue-ui.md`
|
|
51
|
+
- Security: `security-nuxt.md`
|
|
52
|
+
- Tests: `tests-unit.md`, `playwright-agents.md`, `tests-e2e-structure.md`
|
|
53
|
+
- Lint gate before final report: `post-change-lint.md`
|
|
@@ -52,19 +52,19 @@ 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 backend data and shared state. Layer details — `architecture-boundaries.
|
|
55
|
+
Typical feature with backend data and shared state. Layer details — `architecture-boundaries.md`, `nuxt-app-core.md`.
|
|
56
56
|
|
|
57
57
|
## Checklist (work order)
|
|
58
58
|
|
|
59
|
-
1. **Domain types** — `types/**`, export via barrel (`public-imports.
|
|
59
|
+
1. **Domain types** — `types/**`, export via barrel (`public-imports.md`, **`layer-barrel-exports.md`**); JSDoc — `types-jsdoc.md`.
|
|
60
60
|
2. **API contract** — DTOs where the repo uses them; domain types in `@/types`.
|
|
61
|
-
3. **Mappers** — DTO → domain in `*responseMappers.ts` (`api-services.
|
|
62
|
-
4. **Services** — clients `api/clients/**`, barrel `@/api` (`api-services.
|
|
63
|
-
5. **State** — `defineStore` / Pinia actions (`store-pinia.
|
|
64
|
-
6. **UI** — types from `@/types`, no DTOs (`vue-ui.
|
|
61
|
+
3. **Mappers** — DTO → domain in `*responseMappers.ts` (`api-services.md`).
|
|
62
|
+
4. **Services** — clients `api/clients/**`, barrel `@/api` (`api-services.md`, `http-client.md`, **`layer-barrel-exports.md`**). No `fetch` from UI/store.
|
|
63
|
+
5. **State** — `defineStore` / Pinia actions (`store-pinia.md`); actions → services from `~/api` / `@/api`.
|
|
64
|
+
6. **UI** — types from `@/types`, no DTOs (`vue-ui.md`, `architecture-boundaries-ui.md`, `no-v-bind-spread.md`).
|
|
65
65
|
7. **Mocks** — per repo layout; register in `mocks/handlers.ts` (see below).
|
|
66
|
-
8. **Tests** — unit for mappers (`tests-unit.
|
|
67
|
-
9. **Completion** — **`post-change-lint.
|
|
66
|
+
8. **Tests** — unit for mappers (`tests-unit.md`); e2e from `*.cases.md` (`tests-e2e-structure.md`, `playwright-agents.md`).
|
|
67
|
+
9. **Completion** — **`post-change-lint.md`**: `lint:js` + `lint:css` + `typecheck`; package manager — `package-manager.md`. 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.
|
|
68
68
|
|
|
69
69
|
## Data flow (orientation)
|
|
70
70
|
|
|
@@ -107,7 +107,7 @@ flowchart LR
|
|
|
107
107
|
- DTO in UI or untyped store.
|
|
108
108
|
- HTTP client from a component/Pinia action bypassing the service.
|
|
109
109
|
- Deep-import `@/api/services/**` from UI/store.
|
|
110
|
-
- `{...props}` / `v-bind="$attrs"` spread without an explicit list — `no-v-bind-spread.
|
|
110
|
+
- `{...props}` / `v-bind="$attrs"` spread without an explicit list — `no-v-bind-spread.md`.
|
|
111
111
|
- RTK / Redux (`createSlice`, `createAsyncThunk`, `stores/slices/**` as the canon).
|
|
112
112
|
- **Ubiquitous language:** Domain/type names reflect the feature’s subject domain — do not mix transport/framework terms into the domain without need.
|
|
113
113
|
- Load `design-guidance` (rule stem) when assessing structure, smells, or pattern fit.
|
|
@@ -117,12 +117,12 @@ flowchart LR
|
|
|
117
117
|
|
|
118
118
|
| Zone | Rules |
|
|
119
119
|
|------|-------|
|
|
120
|
-
| `api/clients/**`, `lib/clients/**` | `http-client.
|
|
121
|
-
| `api/services/**` | `api-services.
|
|
122
|
-
| `stores/**` | `store-pinia.
|
|
123
|
-
| `components/**` | `vue-ui.
|
|
124
|
-
| `types/**` | `public-imports.
|
|
125
|
-
| `tests/e2e/**` | `tests-e2e-structure.
|
|
120
|
+
| `api/clients/**`, `lib/clients/**` | `http-client.md`, `tests-unit.md` (behavior) |
|
|
121
|
+
| `api/services/**` | `api-services.md`, `layer-barrel-exports.md`, `http-client.md` |
|
|
122
|
+
| `stores/**` | `store-pinia.md`, `architecture-boundaries.md`, `public-imports.md` |
|
|
123
|
+
| `components/**` | `vue-ui.md`, `no-v-bind-spread.md`, `public-imports.md` |
|
|
124
|
+
| `types/**` | `public-imports.md`, `types-jsdoc.md`, `layer-barrel-exports.md` |
|
|
125
|
+
| `tests/e2e/**` | `tests-e2e-structure.md`, `playwright-agents.md` |
|
|
126
126
|
|
|
127
127
|
When adding or extending a feature, **walk the checklist** and the rules from the table for affected zones.
|
|
128
128
|
|
|
@@ -76,6 +76,6 @@ Post-init gotchas / patterns / decisions: **`.ai.local/conventions.md`** (shared
|
|
|
76
76
|
|
|
77
77
|
## Related rules
|
|
78
78
|
|
|
79
|
-
- `code-quality-and-refactoring.
|
|
80
|
-
- `feature-delivery-workflow.
|
|
79
|
+
- `code-quality-and-refactoring.md` — repeat patterns, no deep-import.
|
|
80
|
+
- `feature-delivery-workflow.md` — layer order.
|
|
81
81
|
- skill `feature-delivery` — end-to-end scenario.
|
|
@@ -84,5 +84,5 @@ Bad (no capital after period; or wrong locale for configured ESLint):
|
|
|
84
84
|
- `PREFIX-XXX` example: `OrderHistory` → `OH`, `BillingReport` → `BR`.
|
|
85
85
|
- Russian example: `test('OH-001 Отображается список заказов', async ({ page }) => { ... })` <!-- i18n-keep: E5 --> (Order list is displayed).
|
|
86
86
|
- Page object example filename: `OrderHistoryPage.ts`.
|
|
87
|
-
- Cross-reference: See also **`playwright-agents.
|
|
87
|
+
- Cross-reference: See also **`playwright-agents.md`** for planner / generator / healer.
|
|
88
88
|
- `## Stack notes` content is stripped by `scripts/check-shared-core-drift.sh` before byte-comparing this file against `_shared/core/testing/testing-principles.md`; keep prose above (core content) verbatim against the core file.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"platform": "opencode",
|
|
4
4
|
"stack": "php-hexagonal",
|
|
5
5
|
"semanticSource": "cursor/php-hexagonal",
|
|
6
|
-
"sourceRevision": "
|
|
6
|
+
"sourceRevision": "0e02d198e46638a756f299d18cbd1ff9616c992a0fbf77487d8789d5fdc6bf62",
|
|
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`** + **`php-tooling.md`** (not yarn lint / xcodebuild / Playwright).
|
|
55
55
|
- Style/static analysis: use **repository/CI** formatter and checks — do not invent a parallel PHP-CS-Fixer/PHPStan bible in rules.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"platform": "opencode",
|
|
4
4
|
"stack": "php-laravel",
|
|
5
5
|
"semanticSource": "cursor/php-laravel",
|
|
6
|
-
"sourceRevision": "
|
|
6
|
+
"sourceRevision": "463034132b1604e6fc1f7f8db08e2f0d3d9005bc2252be1d1fe50e8e2ac795cd",
|
|
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
|
- Prefer thin controllers + single-purpose Actions; Services for multi-step orchestration — avoid fat controllers and god Services.
|
|
52
52
|
- Repository interfaces **only when justified** (multiple backends / test seams) — not required for every Eloquent model.
|
|
53
53
|
- Prefer Laravel exceptions + Form Request / Policy mapping at the HTTP edge; do not leak raw persistence exceptions as HTTP bodies.
|
|
54
|
-
- Post-change gate: **`post-change-test.
|
|
54
|
+
- Post-change gate: **`post-change-test.md`** + **`php-tooling.md`** (`php artisan test` / `composer test` — not yarn lint / xcodebuild / Playwright).
|
|
55
55
|
- Style/static analysis: use **repository/CI** Pint/PHPStan/Psalm — do not invent a parallel bible in rules.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"platform": "opencode",
|
|
4
4
|
"stack": "svelte",
|
|
5
5
|
"semanticSource": "cursor/svelte",
|
|
6
|
-
"sourceRevision": "
|
|
6
|
+
"sourceRevision": "f8364c02ac0324cb56fc221ae76c6e9e09413e83336037f6b2627613dca9d15b",
|
|
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
|
|
|
@@ -45,9 +45,9 @@ On-demand rule for review flows. **Procedure and output format:** skill `code-re
|
|
|
45
45
|
|
|
46
46
|
### Checklist references
|
|
47
47
|
|
|
48
|
-
- Architecture layers: `architecture-boundaries.
|
|
49
|
-
- Imports: `public-imports.
|
|
50
|
-
- UI: `svelte-ui.
|
|
51
|
-
- Security: `security-sveltekit.
|
|
52
|
-
- Tests: `tests-unit.
|
|
53
|
-
- Lint gate before final report: `post-change-lint.
|
|
48
|
+
- Architecture layers: `architecture-boundaries.md`, `svelte-app-core.md`; network: `http-client.md`
|
|
49
|
+
- Imports: `public-imports.md`, `layer-barrel-exports.md`
|
|
50
|
+
- UI: `svelte-ui.md`
|
|
51
|
+
- Security: `security-sveltekit.md`
|
|
52
|
+
- Tests: `tests-unit.md`, `playwright-agents.md`, `tests-e2e-structure.md`
|
|
53
|
+
- Lint gate before final report: `post-change-lint.md`
|
|
@@ -52,7 +52,7 @@ 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 backend data and shared state. Layer details — `architecture-boundaries.
|
|
55
|
+
Typical feature with backend data and shared state. Layer details — `architecture-boundaries.md`, `svelte-app-core.md`.
|
|
56
56
|
|
|
57
57
|
Canonical paths: `src/routes/**`, `src/lib/{components,stores,api,clients,types}/**`, `tests/e2e/**`. Aliases: `$lib` preferred; `@/` if configured. State: `store-svelte` (runes primary; legacy stores secondary).
|
|
58
58
|
|
|
@@ -77,6 +77,6 @@ Post-init gotchas / patterns / decisions: **`.ai.local/conventions.md`** (shared
|
|
|
77
77
|
|
|
78
78
|
## Related rules
|
|
79
79
|
|
|
80
|
-
- `code-quality-and-refactoring.
|
|
81
|
-
- `feature-delivery-workflow.
|
|
80
|
+
- `code-quality-and-refactoring.md` — repeat patterns; no deep-import.
|
|
81
|
+
- `feature-delivery-workflow.md` — layer order.
|
|
82
82
|
- skill `feature-delivery` — end-to-end scenario.
|
|
@@ -84,5 +84,5 @@ Bad (no capital after period; or wrong locale for configured ESLint):
|
|
|
84
84
|
- `PREFIX-XXX` example: `OrderHistory` → `OH`, `BillingReport` → `BR`.
|
|
85
85
|
- Russian example: `test('OH-001 Отображается список заказов', async ({ page }) => { ... })` <!-- i18n-keep: E5 --> (Order list is displayed).
|
|
86
86
|
- Page object example filename: `OrderHistoryPage.ts`.
|
|
87
|
-
- Cross-reference: See also **`playwright-agents.
|
|
87
|
+
- Cross-reference: See also **`playwright-agents.md`**.
|
|
88
88
|
- `## Stack notes` content is stripped by `scripts/check-shared-core-drift.sh` before byte-comparing this file against `_shared/core/testing/testing-principles.md`; keep prose above (core content) verbatim against the core file.
|
|
@@ -45,6 +45,42 @@ function sha256File(filePath) {
|
|
|
45
45
|
return crypto.createHash('sha256').update(fs.readFileSync(filePath)).digest('hex');
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Generated rule bodies must not point at sibling rules via `.mdc` — the target
|
|
50
|
+
* trees ship `.md` only (e.g. `feature-delivery-workflow.md` referencing
|
|
51
|
+
* `store-rtk.mdc`). Embed-mode bodies preserve Cursor `## Stack notes` prose, so
|
|
52
|
+
* this is easy to regress. Only stems that exist as sibling `.md` are flagged.
|
|
53
|
+
*/
|
|
54
|
+
function findDanglingMdcRefs(rulesRoot) {
|
|
55
|
+
const issues = [];
|
|
56
|
+
if (!fs.existsSync(rulesRoot)) {
|
|
57
|
+
return issues;
|
|
58
|
+
}
|
|
59
|
+
const stems = new Set(
|
|
60
|
+
fs
|
|
61
|
+
.readdirSync(rulesRoot)
|
|
62
|
+
.filter((name) => name.endsWith('.md'))
|
|
63
|
+
.map((name) => name.slice(0, -'.md'.length)),
|
|
64
|
+
);
|
|
65
|
+
const refRe = /(?<![\w./-])([a-z][\w-]*)\.mdc\b/g;
|
|
66
|
+
for (const name of fs.readdirSync(rulesRoot)) {
|
|
67
|
+
if (!name.endsWith('.md')) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
// Author meta-rules describe the Cursor `.mdc` SoT; `.mdc` refs there are intentional.
|
|
71
|
+
if (name.startsWith('preset-')) {
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
const text = fs.readFileSync(path.join(rulesRoot, name), 'utf8');
|
|
75
|
+
for (const match of text.matchAll(refRe)) {
|
|
76
|
+
if (stems.has(match[1])) {
|
|
77
|
+
issues.push(`${name}: dangling .mdc reference to sibling rule '${match[1]}.mdc'`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return issues;
|
|
82
|
+
}
|
|
83
|
+
|
|
48
84
|
function compareTrees(expectedRoot, actualRoot, label, drift) {
|
|
49
85
|
const expected = walkRelative(expectedRoot);
|
|
50
86
|
const actual = walkRelative(actualRoot);
|
|
@@ -66,8 +102,7 @@ function compareTrees(expectedRoot, actualRoot, label, drift) {
|
|
|
66
102
|
|
|
67
103
|
const tempRoot = fs.mkdtempSync(path.join(os.tmpdir(), 'ai-rules-generated-drift-'));
|
|
68
104
|
const drift = [];
|
|
69
|
-
try {
|
|
70
|
-
fs.mkdirSync(path.join(tempRoot, 'presets'), { recursive: true });
|
|
105
|
+
try { fs.mkdirSync(path.join(tempRoot, 'presets'), { recursive: true });
|
|
71
106
|
fs.cpSync(path.join(presetsRoot, 'cursor'), path.join(tempRoot, 'presets', 'cursor'), {
|
|
72
107
|
recursive: true,
|
|
73
108
|
});
|
|
@@ -88,6 +123,11 @@ try {
|
|
|
88
123
|
`${platform}/${stack}`,
|
|
89
124
|
drift,
|
|
90
125
|
);
|
|
126
|
+
drift.push(
|
|
127
|
+
...findDanglingMdcRefs(path.join(presetsRoot, platform, stack, 'rules')).map(
|
|
128
|
+
(issue) => `${platform}/${stack}/${issue}`,
|
|
129
|
+
),
|
|
130
|
+
);
|
|
91
131
|
}
|
|
92
132
|
}
|
|
93
133
|
} finally {
|
|
@@ -235,6 +235,45 @@ if not offenders:
|
|
|
235
235
|
print(" OK: no `team/conventions` references in any form; conventions templates present")
|
|
236
236
|
print()
|
|
237
237
|
|
|
238
|
+
# --- Seed glob contract (next) -------------------------------------------
|
|
239
|
+
# Staged-inactive seeds under `ai-local/rules-library/` ship globs for the
|
|
240
|
+
# CONSUMER layout. The next stack mandates `app/src/**`, so a bare `src/` glob
|
|
241
|
+
# never activates — the rule silently no-ops. Guard the seed set.
|
|
242
|
+
print("=== seed globs (next) ===")
|
|
243
|
+
SEED_ROOT_PREFIXES = (
|
|
244
|
+
"app/",
|
|
245
|
+
"storybook/",
|
|
246
|
+
".ai.local/",
|
|
247
|
+
"docs/",
|
|
248
|
+
"openspec/",
|
|
249
|
+
"packages/",
|
|
250
|
+
)
|
|
251
|
+
bad_seed_globs: list[str] = []
|
|
252
|
+
next_seed_dir = presets / "cursor" / "next" / "ai-local" / "rules-library"
|
|
253
|
+
if next_seed_dir.is_dir():
|
|
254
|
+
for path in sorted(next_seed_dir.glob("*.md")):
|
|
255
|
+
text = path.read_text(encoding="utf-8")
|
|
256
|
+
for line in text.splitlines():
|
|
257
|
+
if not re.match(r"^glob(s)?\s*:", line):
|
|
258
|
+
continue
|
|
259
|
+
value = line.split(":", 1)[1].strip()
|
|
260
|
+
if value == "always":
|
|
261
|
+
continue
|
|
262
|
+
for glob in (part.strip() for part in re.split(r",(?![^{]*\})", value)):
|
|
263
|
+
if not glob or glob.startswith("*"):
|
|
264
|
+
continue
|
|
265
|
+
if not glob.startswith(SEED_ROOT_PREFIXES):
|
|
266
|
+
bad_seed_globs.append(f"{path.name}: `{glob}`")
|
|
267
|
+
for issue in bad_seed_globs:
|
|
268
|
+
print(
|
|
269
|
+
"FAIL: seed glob must start with app/ (or storybook/.ai.local/docs/openspec): "
|
|
270
|
+
f"{issue}"
|
|
271
|
+
)
|
|
272
|
+
failed += len(bad_seed_globs)
|
|
273
|
+
if not bad_seed_globs:
|
|
274
|
+
print(" OK: next seeds use consumer-layout globs")
|
|
275
|
+
print()
|
|
276
|
+
|
|
238
277
|
if failed:
|
|
239
278
|
print(f"Result: FAIL ({failed} issue(s) across {sum(1 for v in stack_failed.values() if v > 0)} stack(s))")
|
|
240
279
|
sys.exit(1)
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
".ai.local/team/fixtures/feature-full.json": "1110b152cdcb5508e8ce4179aa2e760f7f7c66569ba081d6bdf0a49a0a449470",
|
|
11
11
|
".ai.local/team/fixtures/feature-light.json": "618ac9da9527d688ec7dac849eafb869ae342ec890d0e7c73c1e57c0f8fb5a1b",
|
|
12
12
|
".ai.local/team/fixtures/feature-with-figma-url.json": "8aec2ac11ba552bc9135721678af58c73ca5a74b3038c5f4dc878b1080ade9be",
|
|
13
|
-
".ai.local/team/fixtures/feature-with-ux-no-figma.json": "
|
|
13
|
+
".ai.local/team/fixtures/feature-with-ux-no-figma.json": "78e0d14218a3dc0d23edd6ea6fbf96b0392ffd8b9744f8b45b6aed14b98c43d0",
|
|
14
14
|
".ai.local/team/fixtures/memlog.example.md": "53d281ddd383e0337b038a0dc6dd4e14f84743066a1a99bf45fc2e7064cce222",
|
|
15
15
|
".ai.local/team/fixtures/metrics-scenarios/tasks/human-gate/metrics.json": "6642b2ae310cdb89eb80fce7bb01d69a428c9ca8072651af7397f4f19eb0a724",
|
|
16
16
|
".ai.local/team/fixtures/metrics-scenarios/tasks/missing-ledger/status.json": "c27b87afa3c82d7d0d4b0e8385b8ebb245e17c10e3fe00f94938141f5843e9d7",
|
|
@@ -25,95 +25,98 @@
|
|
|
25
25
|
".claude/CLAUDE.md": "2adbeb71dbadbaefeb4f7576e6ce5db395f7bfd566b665532e156265f9457293",
|
|
26
26
|
".claude/MCP.md": "a40a7f9cd8a11a031a5fb3f2e4ccdb6cb2186461600146765d3255990e6133d0",
|
|
27
27
|
".claude/agents/README.md": "98fd8018a96eb924977217f81eb9cf966e88dee151b60af2c7c94ae2a8b32730",
|
|
28
|
-
".claude/agents/accessibility-reviewer.md": "
|
|
29
|
-
".claude/agents/api-contract-reviewer.md": "
|
|
30
|
-
".claude/agents/build-verifier.md": "
|
|
31
|
-
".claude/agents/ci-investigator.md": "
|
|
32
|
-
".claude/agents/code-reviewer.md": "
|
|
28
|
+
".claude/agents/accessibility-reviewer.md": "0458052fb565978f1572a9cdb05ff76d76ef9a30a0695d5dcc4cbd8d0855fd50",
|
|
29
|
+
".claude/agents/api-contract-reviewer.md": "f79ffdcb0ef82f634224e70ab625b7b6c50b7596ddd6a349b40b44d1d813e4bd",
|
|
30
|
+
".claude/agents/build-verifier.md": "00ce6acfbebe453271e1d45d8e5403616b65a16f9dab1bff6fcdd6086ddb4360",
|
|
31
|
+
".claude/agents/ci-investigator.md": "88c04c8e2f8f04c2d1acb9ac04e554252d7fa2db5a67423032858561bfdd6ff7",
|
|
32
|
+
".claude/agents/code-reviewer.md": "3c7496f6ff33f1b1c99d8a4f965fbc5216c8ab205abbe6c9d8492746ee9ba617",
|
|
33
33
|
".claude/agents/codebase-analyzer.md": "73810a9283924c64d14eb2e6e9a515c8edf03fbdacb1f58cda5725b3dd17cc8b",
|
|
34
|
-
".claude/agents/debugger.md": "
|
|
35
|
-
".claude/agents/feature-developer.md": "
|
|
36
|
-
".claude/agents/migration-specialist.md": "
|
|
37
|
-
".claude/agents/mockup-reviewer.md": "
|
|
38
|
-
".claude/agents/openspec-author.md": "
|
|
39
|
-
".claude/agents/performance-auditor.md": "
|
|
34
|
+
".claude/agents/debugger.md": "201895766073b626a7d3694cbeb28cd04cb0a407baba54c96ffe9c4ed8a9b737",
|
|
35
|
+
".claude/agents/feature-developer.md": "a9e663c0f89e4b4eceffcdd0b0b2da39c709084d3d841924ac8600e12a02590c",
|
|
36
|
+
".claude/agents/migration-specialist.md": "8f334cf59b2e46a28e501e42aa68fb72d08702943046ecd3cfd72a1a20989676",
|
|
37
|
+
".claude/agents/mockup-reviewer.md": "a9cf91311aa26905631af62f457ec76f329b9b239fa8d2552d22dd78cba2e3a2",
|
|
38
|
+
".claude/agents/openspec-author.md": "2cdf40edf0860b328859067c1dda145f3c918d9d438ee0eb46a771c52256716b",
|
|
39
|
+
".claude/agents/performance-auditor.md": "5b20c9d24dc1a69b4a9532916e488ca05d41bf3ac00fdd095aeaf68a9648da5b",
|
|
40
40
|
".claude/agents/playwright-test-generator.md": "b52015503915632f6562091c468589e8d9441b8f1f99c0a1434b2c0cb1cf0af2",
|
|
41
41
|
".claude/agents/playwright-test-healer.md": "54ff2800f93fe67fa63f32a1183d13818f69a669fe60c7f8297c1e7c6272bca4",
|
|
42
42
|
".claude/agents/playwright-test-planner.md": "23937e4eea308eea970859a40c02accdf7cb974f2b79505bd7b9408796506aab",
|
|
43
|
-
".claude/agents/qa-tester.md": "
|
|
44
|
-
".claude/agents/security-reviewer.md": "
|
|
45
|
-
".claude/agents/solution-architect.md": "
|
|
46
|
-
".claude/agents/task-analyst.md": "
|
|
47
|
-
".claude/agents/task-router.md": "
|
|
48
|
-
".claude/agents/tech-writer.md": "
|
|
49
|
-
".claude/agents/unit-test-generator.md": "
|
|
50
|
-
".claude/agents/unit-test-healer.md": "
|
|
51
|
-
".claude/agents/unit-test-planner.md": "
|
|
43
|
+
".claude/agents/qa-tester.md": "1e17916566bc9666d2f0403315dcf5bafa5df316b69009385fa26f1191a1fdc8",
|
|
44
|
+
".claude/agents/security-reviewer.md": "7ee50623115fd5ac5c0dccd6213627edf21fa30cf9842cf4bc384b1b52dc6d30",
|
|
45
|
+
".claude/agents/solution-architect.md": "09a8a8b3aec392db1cb9295afc537b2620d97885d1d4a83ff1a1dfdfccfaa930",
|
|
46
|
+
".claude/agents/task-analyst.md": "ea4c1ce928d32508864297cc0a86295d6eb1dfb26b2e902b920eafa5760365c2",
|
|
47
|
+
".claude/agents/task-router.md": "480117a53d780baf3946a66c764d9a81e170d363bcc636a2fdafb28a60e3f815",
|
|
48
|
+
".claude/agents/tech-writer.md": "13a2a12f8209209531271d38d987c26e279021fc053affb59fa6fc699d7a445e",
|
|
49
|
+
".claude/agents/unit-test-generator.md": "dad7636b2fc46ed306c86203f5541ede6127d0afa60ec84ff2159e03c3e22b60",
|
|
50
|
+
".claude/agents/unit-test-healer.md": "66804a932416c9f3d01b29a01700fab48e6481e5625db62d9b4df4c4ac17584a",
|
|
51
|
+
".claude/agents/unit-test-planner.md": "9931282e10cdf374cd147a19b4929a0db80fa3f07774674cf6c1d71bbdd2b48d",
|
|
52
52
|
".claude/commands/README.md": "30574717de5deb51a4f5bbe8da7373e560403cc4710acaf0c730d27dd1cf964f",
|
|
53
53
|
".claude/commands/spec-start.md": "4c6ca849ea2d8835a9cc0902a4e39749510db1021fbc0b1a623a46c9644afbf1",
|
|
54
54
|
".claude/commands/task-continue.md": "8c2bec3c204c25910e8fc349c571778275905380e90d8bd02c0092c83ecfe6f6",
|
|
55
55
|
".claude/commands/task.md": "4db4b9245e7d5d0d56fb06d86196502aa8fa6487c747c2c103d09da27b02941e",
|
|
56
56
|
".claude/commands/technical-retro.md": "6195206cc687645fadcbe011306f6c62f1d082508c9182d880e5e4485d17214c",
|
|
57
57
|
".claude/hooks/README.md": "61a608772430bd8b1f95c0bff19fd7e1c0b554a0f0ea16b56f95a6a1b521ae60",
|
|
58
|
-
".claude/hooks/chain-team-phases.sh": "
|
|
58
|
+
".claude/hooks/chain-team-phases.sh": "86d24436aad31e5ef1fde3eeafa399a02457cf51ed609a9d876347af93556232",
|
|
59
59
|
".claude/hooks/examples/README.md": "c5bdc1398bdaad95a15051d75c9f896f5c4991d66641982e675db648e9591813",
|
|
60
60
|
".claude/hooks/examples/format-edited.example.sh": "fd4df1d6c2a5673f963febd4f3f21ec8c42899645bdc53144d713c66b2affc76",
|
|
61
61
|
".claude/hooks/examples/secret-guard.example.sh": "51cbc95c3a1b64dfc5b19901932b4e3a047ade9332451282f254bf5f8d45a58f",
|
|
62
62
|
".claude/hooks/examples/test-on-save.example.sh": "ae185e383811e2f8f89ae5f631993705c06fc8cf7216cf8f0862a5b55c64ca2a",
|
|
63
63
|
".claude/hooks/guard-shell-command.sh": "31e1451148c17aedbcc2e9f372e50f079624f2624fb93505ba74850543749c75",
|
|
64
|
-
".claude/rules/README.md": "
|
|
65
|
-
".claude/rules/anti-hallucination/react-next-anti-hallucination.md": "
|
|
64
|
+
".claude/rules/README.md": "fc53a029835b93b232b107fb9930facce73b02f85a0ed6702f85064004b471f2",
|
|
65
|
+
".claude/rules/anti-hallucination/react-next-anti-hallucination.md": "275e6325605d39171b896e33d5d0c90bdf0e091bfa915890e904c0cde0f286e1",
|
|
66
66
|
".claude/rules/api-and-data/README.md": "1caace24921f00d60a58bea551988abd15c32f13a2711ae799ce1e689b838de2",
|
|
67
67
|
".claude/rules/api-and-data/api-services.md": "30b50d49c4281c4e0f9169d453c285f7dfc828d9991520e0c204101b5b634cb9",
|
|
68
68
|
".claude/rules/api-and-data/http-client.md": "437a97b8b533b6df8ae29d346f68a86e49fa0a66fe7ad3bec4b3874403ea6c09",
|
|
69
|
-
".claude/rules/api-and-data/store-rtk.md": "
|
|
69
|
+
".claude/rules/api-and-data/store-rtk.md": "fabad917c372a20c1e54fdb155a4eca106da6af7b4e71e8c6f87e706ebe0a09b",
|
|
70
70
|
".claude/rules/architecture/README.md": "289158e67b7048545c69efdb4d5e03cc721dbf23d66e0cfe5830093d281d2326",
|
|
71
71
|
".claude/rules/architecture/architecture-boundaries-ui.md": "fefaf65f6893d087064a14602bdac7a13f8ca7dafec5af286ecc7d0ec4e332ba",
|
|
72
72
|
".claude/rules/architecture/architecture-boundaries.md": "05214891d47a286761390afb7109a6d7c10d715f84aca2d0df98960075b78b57",
|
|
73
|
-
".claude/rules/architecture/feature-delivery-workflow.md": "
|
|
73
|
+
".claude/rules/architecture/feature-delivery-workflow.md": "bccbe54efe6c699c8e8833fc7161e31250d30a7c8f7e011b637adb34475a3755",
|
|
74
74
|
".claude/rules/architecture/layer-barrel-exports.md": "c0339a15b5c161bde70107b9dbbd02817d603dcd00d84b43cdd72528c63b4c22",
|
|
75
|
-
".claude/rules/architecture/product-specs-authoring.md": "
|
|
76
|
-
".claude/rules/architecture/product-specs.md": "
|
|
75
|
+
".claude/rules/architecture/product-specs-authoring.md": "88d4e112d158a22e4eb12fa076f4f338139643aa12c68a8e4bf4197ab99ca93e",
|
|
76
|
+
".claude/rules/architecture/product-specs.md": "547051fa5308584a7884e03ed03c0ed0c92ebbb245cbaaa7f83c6403173a378d",
|
|
77
77
|
".claude/rules/architecture/public-imports.md": "da67712b2bb2462967d0869555fb145063fd7ecce53e4b0a08ffc7e53ffac6f3",
|
|
78
|
-
".claude/rules/architecture/reference-features.md": "
|
|
78
|
+
".claude/rules/architecture/reference-features.md": "6e4c78725ca6c501fa5638ed5e9d787c755efc74fc552db7dba4dd4fb8ad4769",
|
|
79
79
|
".claude/rules/stack/README.md": "8dda2a6cacc3346300ea445bcb87d157c898fabdc820ca202667b915f9088de2",
|
|
80
80
|
".claude/rules/stack/arrow-functions.md": "4e382cc791c2d057431830baccff4f7043c4a39424370fe2fa0c57c62a646ea4",
|
|
81
81
|
".claude/rules/stack/navigation-router-ui.md": "8cabe15ed92ae9574c152dd1c001f4771ac1e1d287b0d2f2b12b7f84ddd5fa73",
|
|
82
82
|
".claude/rules/stack/navigation-router.md": "67e2198e7100fe96764acf47810839f8c169b118a2da71ecc172f1569a2571d6",
|
|
83
|
-
".claude/rules/stack/next-app-core.md": "
|
|
83
|
+
".claude/rules/stack/next-app-core.md": "d3e4e44291af48c8628b5d37864aaf3e6e3af492000f01b766a2d5cd4d359692",
|
|
84
84
|
".claude/rules/stack/next-app-router.md": "bb5b0a77fdd17f6643cdf825732e985fa41beea410fe5d6060bc259e507c4446",
|
|
85
|
+
".claude/rules/stack/next-static-export.md": "f9dd3307229e5be58bc13072ba8ceca17aceffc5db89d8882ee2a83e03896445",
|
|
85
86
|
".claude/rules/stack/no-type-assertion.md": "6fb33fa61bceea2fad7cde3361d82c9655b6fd84d43d863033d039b78e6af210",
|
|
86
87
|
".claude/rules/stack/types-jsdoc.md": "1c9b63c5c2230ef7dc8fbb224cecb7b0a99d2235ae17f720b5a92fcd0291ffc5",
|
|
87
88
|
".claude/rules/testing/README.md": "0018e4e37f60352fafac64cad74209aedf88e9129d9bbbd3016a6cb36efe7e0a",
|
|
88
89
|
".claude/rules/testing/playwright-agents.md": "c1d5ce31222bd2dc4ccebea2be79180fe1632a69eedaca1cbf37604b7e783219",
|
|
89
|
-
".claude/rules/testing/tests-e2e-structure.md": "
|
|
90
|
-
".claude/rules/testing/tests-unit.md": "
|
|
90
|
+
".claude/rules/testing/tests-e2e-structure.md": "62ad7b10aad5b0c57888f409e643b1fd34142de3101fea44cd54ac82030ced41",
|
|
91
|
+
".claude/rules/testing/tests-unit.md": "5cb7e5069b36a19a36ace4b359fd77c55cfc4f17223ffaabe14ffdfb18bd8f08",
|
|
91
92
|
".claude/rules/tooling-and-review/README.md": "27a956fa7fa68c58cd17a9b598580b06cb2241aadef29e3b647a31ab418d99ec",
|
|
92
93
|
".claude/rules/tooling-and-review/agent-team-intake.md": "e05a5879d587a9c4774e9e36cfcadca5664eedaabe02051745fb6c87a6143e42",
|
|
93
|
-
".claude/rules/tooling-and-review/agent-team-orchestrator.md": "
|
|
94
|
-
".claude/rules/tooling-and-review/ai-local-overlay.md": "
|
|
94
|
+
".claude/rules/tooling-and-review/agent-team-orchestrator.md": "04bc26f758ff5e303e49e908dba98902485afd29ee3864be5c76b51c33871f26",
|
|
95
|
+
".claude/rules/tooling-and-review/ai-local-overlay.md": "8146c33d2c56a8029045a21f87df4f1a3ea4b3d59be2fb90dbf9323ca940485c",
|
|
95
96
|
".claude/rules/tooling-and-review/anti-sycophancy-discipline.md": "6d359631dde6dbe6588397aa1108752cfdad9764d90d6d9da31606a463b72226",
|
|
96
97
|
".claude/rules/tooling-and-review/code-quality.md": "fc764e9fbf7101475fc709a4610d09758a3a959f2fe82d3d1a487f2c8556c1b4",
|
|
97
|
-
".claude/rules/tooling-and-review/code-review-mr.md": "
|
|
98
|
+
".claude/rules/tooling-and-review/code-review-mr.md": "902e13e1394e4a41d5d8dd4dedc51a0c7bfcabc7a87479bb7c8432328efd2963",
|
|
98
99
|
".claude/rules/tooling-and-review/design-guidance.md": "6eb8a48f9d9f69896c047c9418577e47eda6d2ad6bf18b3dff761c6de675f7d3",
|
|
99
|
-
".claude/rules/tooling-and-review/mcp-usage.md": "
|
|
100
|
+
".claude/rules/tooling-and-review/mcp-usage.md": "a5f17c8bc75ea34a56a0406f13081036600afb8031c03da98453febdce9afc56",
|
|
100
101
|
".claude/rules/tooling-and-review/mockup-review.md": "42e9007a00015f812a049edd2a934ed3caf7d1e0ff8500120ab761379ecd4237",
|
|
101
102
|
".claude/rules/tooling-and-review/package-manager.md": "1e80459ac986a61eee45a6d0aef67177aa449279784848397c32ac0511b0c208",
|
|
102
|
-
".claude/rules/tooling-and-review/post-change-lint.md": "
|
|
103
|
+
".claude/rules/tooling-and-review/post-change-lint.md": "600819e8b51430c0df46cafe80111b1a3e6f525b2ff76c643d06fc4d79f71668",
|
|
103
104
|
".claude/rules/tooling-and-review/preset-layering.md": "006b9ea97f55d039debc16847ac9b0bfae6b26b56f44e812081ddd65760289ca",
|
|
104
105
|
".claude/rules/tooling-and-review/preset-no-cross-stack-leakage.md": "01e045b7f6f5a472581804499ec97dc4296264da90e3a6e3a25807501a300dad",
|
|
105
106
|
".claude/rules/tooling-and-review/preset-pr-checklist.md": "769addcfbde87d6681291ee038ff57842e03a4634dbc90f2562fb95efd5fc625",
|
|
106
107
|
".claude/rules/tooling-and-review/preset-token-budget.md": "bc22059a066d3ba21d8813f5e50d5cc9eef3a28860372d122d31b50977438e18",
|
|
107
108
|
".claude/rules/tooling-and-review/preset-twin-sync.md": "bdd98171bc8218fdd84834aa8051e8c899f87bb1063f9a5fd539af1154cb618f",
|
|
108
|
-
".claude/rules/tooling-and-review/security-next.md": "
|
|
109
|
+
".claude/rules/tooling-and-review/security-next.md": "9d51252401790c79f63623e4a37c417a15461dc68a2358decb6b29dcdd12ba53",
|
|
109
110
|
".claude/rules/tooling-and-review/technical-retro.md": "45e059219204712dbaaeda860b553eb557a539ff164e425ff4181da43c86f24a",
|
|
110
111
|
".claude/rules/tooling-and-review/ux-design.md": "df354f533cb2c3593758a68d2e276d9fa89f9ae15d408fb94b49040a3545be6c",
|
|
111
112
|
".claude/rules/ui-and-accessibility/README.md": "a3f6fed71b29b82c107014461f7546c341fea7f2c46a39e99181816b57e979d2",
|
|
113
|
+
".claude/rules/ui-and-accessibility/component-catalog-gate.md": "ff4baa8c478423dcb07207463fde80bd957ca0b3822cb437967e57042ea256f8",
|
|
112
114
|
".claude/rules/ui-and-accessibility/css-property-order.md": "1f3ed3e5891adb0114e203e26a4ad86c12d0bfeeadb7d425104e92fd5bf20dc1",
|
|
113
|
-
".claude/rules/ui-and-accessibility/design-tokens-binding.md": "
|
|
115
|
+
".claude/rules/ui-and-accessibility/design-tokens-binding.md": "e8de5136a2a530e6f1036429a8643926546507d2ac1d6d2da96673092392063f",
|
|
116
|
+
".claude/rules/ui-and-accessibility/forms-validation.md": "6a4ab1e42f4e2799b5f7636c0a7562e4f15ba711d21c3c5e65d752e9aedf660d",
|
|
114
117
|
".claude/rules/ui-and-accessibility/no-props-spread.md": "60aa9ca9c94db981bcceb05a090734e540644febfa88f4e40089f5d16a8a5d7f",
|
|
115
118
|
".claude/rules/ui-and-accessibility/react-a11y-coding.md": "8709f43c13f7071b2cd645c29b171de218551c3895479901efa1a817585b245d",
|
|
116
|
-
".claude/rules/ui-and-accessibility/react-ui.md": "
|
|
119
|
+
".claude/rules/ui-and-accessibility/react-ui.md": "c61a53e4c8f16ca443561bb8311b61fc5fa47b79fd30397a59479262b2b37ee3",
|
|
117
120
|
".claude/settings.json": "930a46deffc5aee8161328b29ca7122d32a8434415988462f3be6578fcf5036f",
|
|
118
121
|
".claude/skills/README.md": "1aeac616a5270d0ce6be132a3dff3e0bbca1371191503f0ecf3eeeeea5b4e9f3",
|
|
119
122
|
".claude/skills/ci-investigation/SKILL.md": "b13ed9de0716671b7d192dc2ba7fec139466a933b52f25c075623dcdef38b399",
|
|
@@ -130,7 +133,7 @@
|
|
|
130
133
|
".claude/skills/ux-design/SKILL.md": "74b70875ba3d41ffb8401c42bc8c9e442e73b36c6a6b0d8d9d2aae0a6017479c",
|
|
131
134
|
".claude/skills/write-adr/SKILL.md": "607d70eff78d6a7b67b783237721fdc42eaa5170cb6175882e7e2a4adf132242",
|
|
132
135
|
".mcp.json": "f68a14db68a491a982975a3e6cc985057072a68eebdcedf33d8ac2a4a3b284ca",
|
|
133
|
-
"AGENTS.md": "
|
|
136
|
+
"AGENTS.md": "c29c284ba6b5e847c885fd7eda026c3bf48ae3700426f5d99449bdeb1c728434",
|
|
134
137
|
"docs/specs/INDEX.md": "cab59f2093e6aaa376246a56d53e4268cb59070a6b10e87a94895192c35f422d",
|
|
135
138
|
"docs/specs/_templates/feature.md": "83c47b90334c555fb5144749837e2ddfe1cae5bb89031f885ba98671075d59e7",
|
|
136
139
|
"docs/specs/_templates/page.md": "a668c584e28edd52afaf3f9f8f898a75e43cb82fa12822c7a016033441e12e54"
|