@bonesofspring/ai-rules 0.2.30 → 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/_shared/core/agent-team/agent-artifact-contracts.md +6 -4
- package/presets/_shared/core/agent-team/agent-task-metrics.md +14 -1
- package/presets/_shared/core/agent-team/agent-team-orchestrator.md +3 -1
- package/presets/claude/android-kotlin/agents/accessibility-reviewer.md +2 -2
- package/presets/claude/android-kotlin/agents/api-contract-reviewer.md +2 -2
- package/presets/claude/android-kotlin/agents/build-verifier.md +1 -1
- package/presets/claude/android-kotlin/agents/ci-investigator.md +2 -2
- package/presets/claude/android-kotlin/agents/code-reviewer.md +2 -2
- package/presets/claude/android-kotlin/agents/debugger.md +2 -2
- package/presets/claude/android-kotlin/agents/feature-developer.md +2 -2
- package/presets/claude/android-kotlin/agents/migration-specialist.md +2 -2
- package/presets/claude/android-kotlin/agents/mockup-reviewer.md +2 -2
- package/presets/claude/android-kotlin/agents/openspec-author.md +2 -2
- package/presets/claude/android-kotlin/agents/performance-auditor.md +2 -2
- package/presets/claude/android-kotlin/agents/qa-tester.md +2 -2
- package/presets/claude/android-kotlin/agents/security-reviewer.md +2 -2
- package/presets/claude/android-kotlin/agents/task-analyst.md +1 -1
- package/presets/claude/android-kotlin/agents/task-router.md +1 -1
- package/presets/claude/android-kotlin/agents/tech-writer.md +2 -2
- package/presets/claude/android-kotlin/agents/unit-test-generator.md +2 -2
- package/presets/claude/android-kotlin/agents/unit-test-healer.md +2 -2
- package/presets/claude/android-kotlin/agents/unit-test-planner.md +2 -2
- package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
- package/presets/claude/go/agents/build-verifier.md +2 -2
- package/presets/claude/go/agents/code-reviewer.md +2 -2
- package/presets/claude/go/agents/feature-developer.md +2 -2
- package/presets/claude/go/agents/openspec-author.md +2 -2
- package/presets/claude/go/agents/task-analyst.md +1 -1
- package/presets/claude/go/agents/task-router.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/agent-team-orchestrator.md +3 -1
- package/presets/claude/ios-swift/agents/build-verifier.md +2 -2
- package/presets/claude/ios-swift/agents/code-reviewer.md +2 -2
- package/presets/claude/ios-swift/agents/feature-developer.md +2 -2
- package/presets/claude/ios-swift/agents/mockup-reviewer.md +2 -2
- package/presets/claude/ios-swift/agents/openspec-author.md +2 -2
- package/presets/claude/ios-swift/agents/task-analyst.md +1 -1
- package/presets/claude/ios-swift/agents/task-router.md +1 -1
- package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +1 -1
- package/presets/claude/java/agents/build-verifier.md +2 -2
- package/presets/claude/java/agents/code-reviewer.md +2 -2
- package/presets/claude/java/agents/feature-developer.md +2 -2
- package/presets/claude/java/agents/openspec-author.md +2 -2
- package/presets/claude/java/agents/task-analyst.md +1 -1
- package/presets/claude/java/agents/task-router.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +3 -1
- package/presets/claude/mcp-ts/agents/build-verifier.md +2 -2
- package/presets/claude/mcp-ts/agents/feature-developer.md +2 -2
- package/presets/claude/mcp-ts/agents/task-analyst.md +1 -1
- package/presets/claude/mcp-ts/agents/task-router.md +1 -1
- package/presets/claude/mcp-ts/rules/tooling-and-review/agent-team-orchestrator.md +3 -1
- package/presets/claude/next/REPO_AGENTS.md +11 -1
- package/presets/claude/next/agents/accessibility-reviewer.md +2 -2
- package/presets/claude/next/agents/api-contract-reviewer.md +2 -2
- package/presets/claude/next/agents/build-verifier.md +3 -2
- package/presets/claude/next/agents/ci-investigator.md +2 -2
- package/presets/claude/next/agents/code-reviewer.md +3 -2
- package/presets/claude/next/agents/debugger.md +2 -2
- package/presets/claude/next/agents/feature-developer.md +3 -2
- package/presets/claude/next/agents/migration-specialist.md +2 -2
- package/presets/claude/next/agents/mockup-reviewer.md +2 -2
- package/presets/claude/next/agents/openspec-author.md +4 -2
- package/presets/claude/next/agents/performance-auditor.md +2 -2
- package/presets/claude/next/agents/qa-tester.md +2 -2
- package/presets/claude/next/agents/security-reviewer.md +2 -2
- package/presets/claude/next/agents/solution-architect.md +2 -2
- package/presets/claude/next/agents/task-analyst.md +8 -1
- package/presets/claude/next/agents/task-router.md +2 -1
- package/presets/claude/next/agents/tech-writer.md +2 -2
- package/presets/claude/next/agents/unit-test-generator.md +2 -2
- package/presets/claude/next/agents/unit-test-healer.md +2 -2
- package/presets/claude/next/agents/unit-test-planner.md +2 -2
- package/presets/claude/next/hooks/chain-team-phases.sh +46 -1
- 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 +3 -1
- 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/agents/accessibility-reviewer.md +2 -2
- package/presets/claude/nuxt/agents/api-contract-reviewer.md +2 -2
- package/presets/claude/nuxt/agents/build-verifier.md +2 -2
- package/presets/claude/nuxt/agents/ci-investigator.md +2 -2
- package/presets/claude/nuxt/agents/code-reviewer.md +2 -2
- package/presets/claude/nuxt/agents/debugger.md +2 -2
- package/presets/claude/nuxt/agents/feature-developer.md +2 -2
- package/presets/claude/nuxt/agents/migration-specialist.md +2 -2
- package/presets/claude/nuxt/agents/mockup-reviewer.md +2 -2
- package/presets/claude/nuxt/agents/openspec-author.md +2 -2
- package/presets/claude/nuxt/agents/performance-auditor.md +2 -2
- package/presets/claude/nuxt/agents/qa-tester.md +2 -2
- package/presets/claude/nuxt/agents/security-reviewer.md +2 -2
- package/presets/claude/nuxt/agents/solution-architect.md +2 -2
- package/presets/claude/nuxt/agents/task-analyst.md +1 -1
- package/presets/claude/nuxt/agents/task-router.md +1 -1
- package/presets/claude/nuxt/agents/tech-writer.md +2 -2
- package/presets/claude/nuxt/agents/unit-test-generator.md +2 -2
- package/presets/claude/nuxt/agents/unit-test-healer.md +2 -2
- package/presets/claude/nuxt/agents/unit-test-planner.md +2 -2
- package/presets/claude/nuxt/rules/tooling-and-review/agent-team-orchestrator.md +3 -1
- package/presets/claude/php-hexagonal/agents/build-verifier.md +2 -2
- package/presets/claude/php-hexagonal/agents/code-reviewer.md +2 -2
- package/presets/claude/php-hexagonal/agents/feature-developer.md +2 -2
- package/presets/claude/php-hexagonal/agents/openspec-author.md +2 -2
- package/presets/claude/php-hexagonal/agents/task-analyst.md +1 -1
- package/presets/claude/php-hexagonal/agents/task-router.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-orchestrator.md +3 -1
- package/presets/claude/php-laravel/agents/build-verifier.md +2 -2
- package/presets/claude/php-laravel/agents/code-reviewer.md +2 -2
- package/presets/claude/php-laravel/agents/feature-developer.md +2 -2
- package/presets/claude/php-laravel/agents/openspec-author.md +2 -2
- package/presets/claude/php-laravel/agents/task-analyst.md +1 -1
- package/presets/claude/php-laravel/agents/task-router.md +1 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-orchestrator.md +3 -1
- package/presets/claude/svelte/agents/accessibility-reviewer.md +2 -2
- package/presets/claude/svelte/agents/api-contract-reviewer.md +2 -2
- package/presets/claude/svelte/agents/build-verifier.md +2 -2
- package/presets/claude/svelte/agents/ci-investigator.md +2 -2
- package/presets/claude/svelte/agents/code-reviewer.md +2 -2
- package/presets/claude/svelte/agents/debugger.md +2 -2
- package/presets/claude/svelte/agents/feature-developer.md +2 -2
- package/presets/claude/svelte/agents/migration-specialist.md +2 -2
- package/presets/claude/svelte/agents/mockup-reviewer.md +2 -2
- package/presets/claude/svelte/agents/openspec-author.md +2 -2
- package/presets/claude/svelte/agents/performance-auditor.md +2 -2
- package/presets/claude/svelte/agents/qa-tester.md +2 -2
- package/presets/claude/svelte/agents/security-reviewer.md +2 -2
- package/presets/claude/svelte/agents/solution-architect.md +2 -2
- package/presets/claude/svelte/agents/task-analyst.md +1 -1
- package/presets/claude/svelte/agents/task-router.md +1 -1
- package/presets/claude/svelte/agents/tech-writer.md +2 -2
- package/presets/claude/svelte/agents/unit-test-generator.md +2 -2
- package/presets/claude/svelte/agents/unit-test-healer.md +2 -2
- package/presets/claude/svelte/agents/unit-test-planner.md +2 -2
- package/presets/claude/svelte/rules/tooling-and-review/agent-team-orchestrator.md +3 -1
- package/presets/cursor/android-kotlin/agents/accessibility-reviewer.md +2 -2
- package/presets/cursor/android-kotlin/agents/api-contract-reviewer.md +2 -2
- package/presets/cursor/android-kotlin/agents/build-verifier.md +1 -1
- package/presets/cursor/android-kotlin/agents/ci-investigator.md +2 -2
- package/presets/cursor/android-kotlin/agents/code-reviewer.md +2 -2
- package/presets/cursor/android-kotlin/agents/debugger.md +2 -2
- package/presets/cursor/android-kotlin/agents/feature-developer.md +2 -2
- package/presets/cursor/android-kotlin/agents/migration-specialist.md +2 -2
- package/presets/cursor/android-kotlin/agents/mockup-reviewer.md +2 -2
- package/presets/cursor/android-kotlin/agents/openspec-author.md +2 -2
- package/presets/cursor/android-kotlin/agents/performance-auditor.md +2 -2
- package/presets/cursor/android-kotlin/agents/qa-tester.md +2 -2
- package/presets/cursor/android-kotlin/agents/security-reviewer.md +2 -2
- package/presets/cursor/android-kotlin/agents/task-analyst.md +1 -1
- package/presets/cursor/android-kotlin/agents/task-router.md +1 -1
- package/presets/cursor/android-kotlin/agents/tech-writer.md +2 -2
- package/presets/cursor/android-kotlin/agents/unit-test-generator.md +2 -2
- package/presets/cursor/android-kotlin/agents/unit-test-healer.md +2 -2
- package/presets/cursor/android-kotlin/agents/unit-test-planner.md +2 -2
- package/presets/cursor/android-kotlin/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/go/agents/build-verifier.md +2 -2
- package/presets/cursor/go/agents/code-reviewer.md +2 -2
- package/presets/cursor/go/agents/feature-developer.md +2 -2
- package/presets/cursor/go/agents/openspec-author.md +2 -2
- package/presets/cursor/go/agents/task-analyst.md +1 -1
- package/presets/cursor/go/agents/task-router.md +1 -1
- package/presets/cursor/go/rules/agent-team-orchestrator.mdc +3 -1
- package/presets/cursor/ios-swift/agents/build-verifier.md +2 -2
- package/presets/cursor/ios-swift/agents/code-reviewer.md +2 -2
- package/presets/cursor/ios-swift/agents/feature-developer.md +2 -2
- package/presets/cursor/ios-swift/agents/mockup-reviewer.md +2 -2
- package/presets/cursor/ios-swift/agents/openspec-author.md +2 -2
- package/presets/cursor/ios-swift/agents/task-analyst.md +1 -1
- package/presets/cursor/ios-swift/agents/task-router.md +1 -1
- package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +1 -1
- package/presets/cursor/java/agents/build-verifier.md +2 -2
- package/presets/cursor/java/agents/code-reviewer.md +2 -2
- package/presets/cursor/java/agents/feature-developer.md +2 -2
- package/presets/cursor/java/agents/openspec-author.md +2 -2
- package/presets/cursor/java/agents/task-analyst.md +1 -1
- package/presets/cursor/java/agents/task-router.md +1 -1
- package/presets/cursor/java/rules/agent-team-orchestrator.mdc +3 -1
- package/presets/cursor/mcp-ts/agents/build-verifier.md +2 -2
- package/presets/cursor/mcp-ts/agents/feature-developer.md +2 -2
- package/presets/cursor/mcp-ts/agents/task-analyst.md +1 -1
- package/presets/cursor/mcp-ts/agents/task-router.md +1 -1
- package/presets/cursor/mcp-ts/rules/agent-team-orchestrator.mdc +3 -1
- package/presets/cursor/next/REPO_AGENTS.md +11 -1
- package/presets/cursor/next/agents/accessibility-reviewer.md +2 -2
- package/presets/cursor/next/agents/api-contract-reviewer.md +2 -2
- package/presets/cursor/next/agents/build-verifier.md +3 -2
- package/presets/cursor/next/agents/ci-investigator.md +2 -2
- package/presets/cursor/next/agents/code-reviewer.md +3 -2
- package/presets/cursor/next/agents/debugger.md +2 -2
- package/presets/cursor/next/agents/feature-developer.md +3 -2
- package/presets/cursor/next/agents/migration-specialist.md +2 -2
- package/presets/cursor/next/agents/mockup-reviewer.md +2 -2
- package/presets/cursor/next/agents/openspec-author.md +4 -2
- package/presets/cursor/next/agents/performance-auditor.md +2 -2
- package/presets/cursor/next/agents/qa-tester.md +2 -2
- package/presets/cursor/next/agents/security-reviewer.md +2 -2
- package/presets/cursor/next/agents/solution-architect.md +2 -2
- package/presets/cursor/next/agents/task-analyst.md +8 -1
- package/presets/cursor/next/agents/task-router.md +2 -1
- package/presets/cursor/next/agents/tech-writer.md +2 -2
- package/presets/cursor/next/agents/unit-test-generator.md +2 -2
- package/presets/cursor/next/agents/unit-test-healer.md +2 -2
- package/presets/cursor/next/agents/unit-test-planner.md +2 -2
- 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/hooks/chain-team-phases.sh +46 -1
- package/presets/cursor/next/rules/README.md +4 -1
- package/presets/cursor/next/rules/agent-team-orchestrator.mdc +3 -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/agents/accessibility-reviewer.md +2 -2
- package/presets/cursor/nuxt/agents/api-contract-reviewer.md +2 -2
- package/presets/cursor/nuxt/agents/build-verifier.md +2 -2
- package/presets/cursor/nuxt/agents/ci-investigator.md +2 -2
- package/presets/cursor/nuxt/agents/code-reviewer.md +2 -2
- package/presets/cursor/nuxt/agents/debugger.md +2 -2
- package/presets/cursor/nuxt/agents/feature-developer.md +2 -2
- package/presets/cursor/nuxt/agents/migration-specialist.md +2 -2
- package/presets/cursor/nuxt/agents/mockup-reviewer.md +2 -2
- package/presets/cursor/nuxt/agents/openspec-author.md +2 -2
- package/presets/cursor/nuxt/agents/performance-auditor.md +2 -2
- package/presets/cursor/nuxt/agents/qa-tester.md +2 -2
- package/presets/cursor/nuxt/agents/security-reviewer.md +2 -2
- package/presets/cursor/nuxt/agents/solution-architect.md +2 -2
- package/presets/cursor/nuxt/agents/task-analyst.md +1 -1
- package/presets/cursor/nuxt/agents/task-router.md +1 -1
- package/presets/cursor/nuxt/agents/tech-writer.md +2 -2
- package/presets/cursor/nuxt/agents/unit-test-generator.md +2 -2
- package/presets/cursor/nuxt/agents/unit-test-healer.md +2 -2
- package/presets/cursor/nuxt/agents/unit-test-planner.md +2 -2
- package/presets/cursor/nuxt/rules/agent-team-orchestrator.mdc +3 -1
- package/presets/cursor/php-hexagonal/agents/build-verifier.md +2 -2
- package/presets/cursor/php-hexagonal/agents/code-reviewer.md +2 -2
- package/presets/cursor/php-hexagonal/agents/feature-developer.md +2 -2
- package/presets/cursor/php-hexagonal/agents/openspec-author.md +2 -2
- package/presets/cursor/php-hexagonal/agents/task-analyst.md +1 -1
- package/presets/cursor/php-hexagonal/agents/task-router.md +1 -1
- package/presets/cursor/php-hexagonal/rules/agent-team-orchestrator.mdc +3 -1
- package/presets/cursor/php-laravel/agents/build-verifier.md +2 -2
- package/presets/cursor/php-laravel/agents/code-reviewer.md +2 -2
- package/presets/cursor/php-laravel/agents/feature-developer.md +2 -2
- package/presets/cursor/php-laravel/agents/openspec-author.md +2 -2
- package/presets/cursor/php-laravel/agents/task-analyst.md +1 -1
- package/presets/cursor/php-laravel/agents/task-router.md +1 -1
- package/presets/cursor/php-laravel/rules/agent-team-orchestrator.mdc +3 -1
- package/presets/cursor/svelte/agents/accessibility-reviewer.md +2 -2
- package/presets/cursor/svelte/agents/api-contract-reviewer.md +2 -2
- package/presets/cursor/svelte/agents/build-verifier.md +2 -2
- package/presets/cursor/svelte/agents/ci-investigator.md +2 -2
- package/presets/cursor/svelte/agents/code-reviewer.md +2 -2
- package/presets/cursor/svelte/agents/debugger.md +2 -2
- package/presets/cursor/svelte/agents/feature-developer.md +2 -2
- package/presets/cursor/svelte/agents/migration-specialist.md +2 -2
- package/presets/cursor/svelte/agents/mockup-reviewer.md +2 -2
- package/presets/cursor/svelte/agents/openspec-author.md +2 -2
- package/presets/cursor/svelte/agents/performance-auditor.md +2 -2
- package/presets/cursor/svelte/agents/qa-tester.md +2 -2
- package/presets/cursor/svelte/agents/security-reviewer.md +2 -2
- package/presets/cursor/svelte/agents/solution-architect.md +2 -2
- package/presets/cursor/svelte/agents/task-analyst.md +1 -1
- package/presets/cursor/svelte/agents/task-router.md +1 -1
- package/presets/cursor/svelte/agents/tech-writer.md +2 -2
- package/presets/cursor/svelte/agents/unit-test-generator.md +2 -2
- package/presets/cursor/svelte/agents/unit-test-healer.md +2 -2
- package/presets/cursor/svelte/agents/unit-test-planner.md +2 -2
- package/presets/cursor/svelte/rules/agent-team-orchestrator.mdc +3 -1
- package/presets/mavis/android-kotlin/adapter-map.json +1 -1
- package/presets/mavis/android-kotlin/agents/accessibility-reviewer.md +2 -2
- package/presets/mavis/android-kotlin/agents/api-contract-reviewer.md +2 -2
- package/presets/mavis/android-kotlin/agents/build-verifier.md +1 -1
- package/presets/mavis/android-kotlin/agents/ci-investigator.md +2 -2
- package/presets/mavis/android-kotlin/agents/code-reviewer.md +2 -2
- package/presets/mavis/android-kotlin/agents/debugger.md +2 -2
- package/presets/mavis/android-kotlin/agents/feature-developer.md +2 -2
- package/presets/mavis/android-kotlin/agents/migration-specialist.md +2 -2
- package/presets/mavis/android-kotlin/agents/mockup-reviewer.md +2 -2
- package/presets/mavis/android-kotlin/agents/openspec-author.md +2 -2
- package/presets/mavis/android-kotlin/agents/performance-auditor.md +2 -2
- package/presets/mavis/android-kotlin/agents/qa-tester.md +2 -2
- package/presets/mavis/android-kotlin/agents/security-reviewer.md +2 -2
- package/presets/mavis/android-kotlin/agents/task-analyst.md +1 -1
- package/presets/mavis/android-kotlin/agents/task-router.md +1 -1
- package/presets/mavis/android-kotlin/agents/tech-writer.md +2 -2
- package/presets/mavis/android-kotlin/agents/unit-test-generator.md +2 -2
- package/presets/mavis/android-kotlin/agents/unit-test-healer.md +2 -2
- package/presets/mavis/android-kotlin/agents/unit-test-planner.md +2 -2
- package/presets/mavis/android-kotlin/rules/agent-team-orchestrator.md +3 -1
- 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/agents/build-verifier.md +2 -2
- package/presets/mavis/go/agents/code-reviewer.md +2 -2
- package/presets/mavis/go/agents/feature-developer.md +2 -2
- package/presets/mavis/go/agents/openspec-author.md +2 -2
- package/presets/mavis/go/agents/task-analyst.md +1 -1
- package/presets/mavis/go/agents/task-router.md +1 -1
- package/presets/mavis/go/rules/agent-team-orchestrator.md +3 -1
- 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/agents/build-verifier.md +2 -2
- package/presets/mavis/ios-swift/agents/code-reviewer.md +2 -2
- package/presets/mavis/ios-swift/agents/feature-developer.md +2 -2
- package/presets/mavis/ios-swift/agents/mockup-reviewer.md +2 -2
- package/presets/mavis/ios-swift/agents/openspec-author.md +2 -2
- package/presets/mavis/ios-swift/agents/task-analyst.md +1 -1
- package/presets/mavis/ios-swift/agents/task-router.md +1 -1
- package/presets/mavis/ios-swift/rules/agent-team-orchestrator.md +3 -1
- 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/agents/build-verifier.md +2 -2
- package/presets/mavis/java/agents/code-reviewer.md +2 -2
- package/presets/mavis/java/agents/feature-developer.md +2 -2
- package/presets/mavis/java/agents/openspec-author.md +2 -2
- package/presets/mavis/java/agents/task-analyst.md +1 -1
- package/presets/mavis/java/agents/task-router.md +1 -1
- package/presets/mavis/java/rules/agent-team-orchestrator.md +3 -1
- 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/agents/build-verifier.md +2 -2
- package/presets/mavis/mcp-ts/agents/feature-developer.md +2 -2
- package/presets/mavis/mcp-ts/agents/task-analyst.md +1 -1
- package/presets/mavis/mcp-ts/agents/task-router.md +1 -1
- package/presets/mavis/mcp-ts/rules/agent-team-orchestrator.md +3 -1
- package/presets/mavis/next/REPO_AGENTS.md +11 -1
- package/presets/mavis/next/adapter-map.json +192 -8
- package/presets/mavis/next/agents/accessibility-reviewer.md +2 -2
- package/presets/mavis/next/agents/api-contract-reviewer.md +2 -2
- package/presets/mavis/next/agents/build-verifier.md +3 -2
- package/presets/mavis/next/agents/ci-investigator.md +2 -2
- package/presets/mavis/next/agents/code-reviewer.md +3 -2
- package/presets/mavis/next/agents/debugger.md +2 -2
- package/presets/mavis/next/agents/feature-developer.md +3 -2
- package/presets/mavis/next/agents/migration-specialist.md +2 -2
- package/presets/mavis/next/agents/mockup-reviewer.md +2 -2
- package/presets/mavis/next/agents/openspec-author.md +4 -2
- package/presets/mavis/next/agents/performance-auditor.md +2 -2
- package/presets/mavis/next/agents/qa-tester.md +2 -2
- package/presets/mavis/next/agents/security-reviewer.md +2 -2
- package/presets/mavis/next/agents/solution-architect.md +2 -2
- package/presets/mavis/next/agents/task-analyst.md +8 -1
- package/presets/mavis/next/agents/task-router.md +2 -1
- package/presets/mavis/next/agents/tech-writer.md +2 -2
- package/presets/mavis/next/agents/unit-test-generator.md +2 -2
- package/presets/mavis/next/agents/unit-test-healer.md +2 -2
- package/presets/mavis/next/agents/unit-test-planner.md +2 -2
- 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/hooks/chain-team-phases.sh +46 -1
- package/presets/mavis/next/rules/agent-team-orchestrator.md +3 -1
- 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/agents/accessibility-reviewer.md +2 -2
- package/presets/mavis/nuxt/agents/api-contract-reviewer.md +2 -2
- package/presets/mavis/nuxt/agents/build-verifier.md +2 -2
- package/presets/mavis/nuxt/agents/ci-investigator.md +2 -2
- package/presets/mavis/nuxt/agents/code-reviewer.md +2 -2
- package/presets/mavis/nuxt/agents/debugger.md +2 -2
- package/presets/mavis/nuxt/agents/feature-developer.md +2 -2
- package/presets/mavis/nuxt/agents/migration-specialist.md +2 -2
- package/presets/mavis/nuxt/agents/mockup-reviewer.md +2 -2
- package/presets/mavis/nuxt/agents/openspec-author.md +2 -2
- package/presets/mavis/nuxt/agents/performance-auditor.md +2 -2
- package/presets/mavis/nuxt/agents/qa-tester.md +2 -2
- package/presets/mavis/nuxt/agents/security-reviewer.md +2 -2
- package/presets/mavis/nuxt/agents/solution-architect.md +2 -2
- package/presets/mavis/nuxt/agents/task-analyst.md +1 -1
- package/presets/mavis/nuxt/agents/task-router.md +1 -1
- package/presets/mavis/nuxt/agents/tech-writer.md +2 -2
- package/presets/mavis/nuxt/agents/unit-test-generator.md +2 -2
- package/presets/mavis/nuxt/agents/unit-test-healer.md +2 -2
- package/presets/mavis/nuxt/agents/unit-test-planner.md +2 -2
- package/presets/mavis/nuxt/rules/agent-team-orchestrator.md +3 -1
- 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/agents/build-verifier.md +2 -2
- package/presets/mavis/php-hexagonal/agents/code-reviewer.md +2 -2
- package/presets/mavis/php-hexagonal/agents/feature-developer.md +2 -2
- package/presets/mavis/php-hexagonal/agents/openspec-author.md +2 -2
- package/presets/mavis/php-hexagonal/agents/task-analyst.md +1 -1
- package/presets/mavis/php-hexagonal/agents/task-router.md +1 -1
- package/presets/mavis/php-hexagonal/rules/agent-team-orchestrator.md +3 -1
- 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/agents/build-verifier.md +2 -2
- package/presets/mavis/php-laravel/agents/code-reviewer.md +2 -2
- package/presets/mavis/php-laravel/agents/feature-developer.md +2 -2
- package/presets/mavis/php-laravel/agents/openspec-author.md +2 -2
- package/presets/mavis/php-laravel/agents/task-analyst.md +1 -1
- package/presets/mavis/php-laravel/agents/task-router.md +1 -1
- package/presets/mavis/php-laravel/rules/agent-team-orchestrator.md +3 -1
- 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/agents/accessibility-reviewer.md +2 -2
- package/presets/mavis/svelte/agents/api-contract-reviewer.md +2 -2
- package/presets/mavis/svelte/agents/build-verifier.md +2 -2
- package/presets/mavis/svelte/agents/ci-investigator.md +2 -2
- package/presets/mavis/svelte/agents/code-reviewer.md +2 -2
- package/presets/mavis/svelte/agents/debugger.md +2 -2
- package/presets/mavis/svelte/agents/feature-developer.md +2 -2
- package/presets/mavis/svelte/agents/migration-specialist.md +2 -2
- package/presets/mavis/svelte/agents/mockup-reviewer.md +2 -2
- package/presets/mavis/svelte/agents/openspec-author.md +2 -2
- package/presets/mavis/svelte/agents/performance-auditor.md +2 -2
- package/presets/mavis/svelte/agents/qa-tester.md +2 -2
- package/presets/mavis/svelte/agents/security-reviewer.md +2 -2
- package/presets/mavis/svelte/agents/solution-architect.md +2 -2
- package/presets/mavis/svelte/agents/task-analyst.md +1 -1
- package/presets/mavis/svelte/agents/task-router.md +1 -1
- package/presets/mavis/svelte/agents/tech-writer.md +2 -2
- package/presets/mavis/svelte/agents/unit-test-generator.md +2 -2
- package/presets/mavis/svelte/agents/unit-test-healer.md +2 -2
- package/presets/mavis/svelte/agents/unit-test-planner.md +2 -2
- package/presets/mavis/svelte/rules/agent-team-orchestrator.md +3 -1
- 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/agents/accessibility-reviewer.md +2 -2
- package/presets/opencode/android-kotlin/agents/api-contract-reviewer.md +2 -2
- package/presets/opencode/android-kotlin/agents/build-verifier.md +1 -1
- package/presets/opencode/android-kotlin/agents/ci-investigator.md +2 -2
- package/presets/opencode/android-kotlin/agents/code-reviewer.md +2 -2
- package/presets/opencode/android-kotlin/agents/debugger.md +2 -2
- package/presets/opencode/android-kotlin/agents/feature-developer.md +2 -2
- package/presets/opencode/android-kotlin/agents/migration-specialist.md +2 -2
- package/presets/opencode/android-kotlin/agents/mockup-reviewer.md +2 -2
- package/presets/opencode/android-kotlin/agents/openspec-author.md +2 -2
- package/presets/opencode/android-kotlin/agents/performance-auditor.md +2 -2
- package/presets/opencode/android-kotlin/agents/qa-tester.md +2 -2
- package/presets/opencode/android-kotlin/agents/security-reviewer.md +2 -2
- package/presets/opencode/android-kotlin/agents/task-analyst.md +1 -1
- package/presets/opencode/android-kotlin/agents/task-router.md +1 -1
- package/presets/opencode/android-kotlin/agents/tech-writer.md +2 -2
- package/presets/opencode/android-kotlin/agents/unit-test-generator.md +2 -2
- package/presets/opencode/android-kotlin/agents/unit-test-healer.md +2 -2
- package/presets/opencode/android-kotlin/agents/unit-test-planner.md +2 -2
- package/presets/opencode/android-kotlin/rules/agent-team-orchestrator.md +3 -1
- 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/agents/build-verifier.md +2 -2
- package/presets/opencode/go/agents/code-reviewer.md +2 -2
- package/presets/opencode/go/agents/feature-developer.md +2 -2
- package/presets/opencode/go/agents/openspec-author.md +2 -2
- package/presets/opencode/go/agents/task-analyst.md +1 -1
- package/presets/opencode/go/agents/task-router.md +1 -1
- package/presets/opencode/go/rules/agent-team-orchestrator.md +3 -1
- 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/agents/build-verifier.md +2 -2
- package/presets/opencode/ios-swift/agents/code-reviewer.md +2 -2
- package/presets/opencode/ios-swift/agents/feature-developer.md +2 -2
- package/presets/opencode/ios-swift/agents/mockup-reviewer.md +2 -2
- package/presets/opencode/ios-swift/agents/openspec-author.md +2 -2
- package/presets/opencode/ios-swift/agents/task-analyst.md +1 -1
- package/presets/opencode/ios-swift/agents/task-router.md +1 -1
- package/presets/opencode/ios-swift/rules/agent-team-orchestrator.md +3 -1
- 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/agents/build-verifier.md +2 -2
- package/presets/opencode/java/agents/code-reviewer.md +2 -2
- package/presets/opencode/java/agents/feature-developer.md +2 -2
- package/presets/opencode/java/agents/openspec-author.md +2 -2
- package/presets/opencode/java/agents/task-analyst.md +1 -1
- package/presets/opencode/java/agents/task-router.md +1 -1
- package/presets/opencode/java/rules/agent-team-orchestrator.md +3 -1
- 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/agents/build-verifier.md +2 -2
- package/presets/opencode/mcp-ts/agents/feature-developer.md +2 -2
- package/presets/opencode/mcp-ts/agents/task-analyst.md +1 -1
- package/presets/opencode/mcp-ts/agents/task-router.md +1 -1
- package/presets/opencode/mcp-ts/rules/agent-team-orchestrator.md +3 -1
- package/presets/opencode/next/REPO_AGENTS.md +11 -1
- package/presets/opencode/next/adapter-map.json +192 -8
- package/presets/opencode/next/agents/accessibility-reviewer.md +2 -2
- package/presets/opencode/next/agents/api-contract-reviewer.md +2 -2
- package/presets/opencode/next/agents/build-verifier.md +3 -2
- package/presets/opencode/next/agents/ci-investigator.md +2 -2
- package/presets/opencode/next/agents/code-reviewer.md +3 -2
- package/presets/opencode/next/agents/debugger.md +2 -2
- package/presets/opencode/next/agents/feature-developer.md +3 -2
- package/presets/opencode/next/agents/migration-specialist.md +2 -2
- package/presets/opencode/next/agents/mockup-reviewer.md +2 -2
- package/presets/opencode/next/agents/openspec-author.md +4 -2
- package/presets/opencode/next/agents/performance-auditor.md +2 -2
- package/presets/opencode/next/agents/qa-tester.md +2 -2
- package/presets/opencode/next/agents/security-reviewer.md +2 -2
- package/presets/opencode/next/agents/solution-architect.md +2 -2
- package/presets/opencode/next/agents/task-analyst.md +8 -1
- package/presets/opencode/next/agents/task-router.md +2 -1
- package/presets/opencode/next/agents/tech-writer.md +2 -2
- package/presets/opencode/next/agents/unit-test-generator.md +2 -2
- package/presets/opencode/next/agents/unit-test-healer.md +2 -2
- package/presets/opencode/next/agents/unit-test-planner.md +2 -2
- 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/hooks/chain-team-phases.sh +46 -1
- package/presets/opencode/next/rules/agent-team-orchestrator.md +3 -1
- 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/agents/accessibility-reviewer.md +2 -2
- package/presets/opencode/nuxt/agents/api-contract-reviewer.md +2 -2
- package/presets/opencode/nuxt/agents/build-verifier.md +2 -2
- package/presets/opencode/nuxt/agents/ci-investigator.md +2 -2
- package/presets/opencode/nuxt/agents/code-reviewer.md +2 -2
- package/presets/opencode/nuxt/agents/debugger.md +2 -2
- package/presets/opencode/nuxt/agents/feature-developer.md +2 -2
- package/presets/opencode/nuxt/agents/migration-specialist.md +2 -2
- package/presets/opencode/nuxt/agents/mockup-reviewer.md +2 -2
- package/presets/opencode/nuxt/agents/openspec-author.md +2 -2
- package/presets/opencode/nuxt/agents/performance-auditor.md +2 -2
- package/presets/opencode/nuxt/agents/qa-tester.md +2 -2
- package/presets/opencode/nuxt/agents/security-reviewer.md +2 -2
- package/presets/opencode/nuxt/agents/solution-architect.md +2 -2
- package/presets/opencode/nuxt/agents/task-analyst.md +1 -1
- package/presets/opencode/nuxt/agents/task-router.md +1 -1
- package/presets/opencode/nuxt/agents/tech-writer.md +2 -2
- package/presets/opencode/nuxt/agents/unit-test-generator.md +2 -2
- package/presets/opencode/nuxt/agents/unit-test-healer.md +2 -2
- package/presets/opencode/nuxt/agents/unit-test-planner.md +2 -2
- package/presets/opencode/nuxt/rules/agent-team-orchestrator.md +3 -1
- 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/agents/build-verifier.md +2 -2
- package/presets/opencode/php-hexagonal/agents/code-reviewer.md +2 -2
- package/presets/opencode/php-hexagonal/agents/feature-developer.md +2 -2
- package/presets/opencode/php-hexagonal/agents/openspec-author.md +2 -2
- package/presets/opencode/php-hexagonal/agents/task-analyst.md +1 -1
- package/presets/opencode/php-hexagonal/agents/task-router.md +1 -1
- package/presets/opencode/php-hexagonal/rules/agent-team-orchestrator.md +3 -1
- 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/agents/build-verifier.md +2 -2
- package/presets/opencode/php-laravel/agents/code-reviewer.md +2 -2
- package/presets/opencode/php-laravel/agents/feature-developer.md +2 -2
- package/presets/opencode/php-laravel/agents/openspec-author.md +2 -2
- package/presets/opencode/php-laravel/agents/task-analyst.md +1 -1
- package/presets/opencode/php-laravel/agents/task-router.md +1 -1
- package/presets/opencode/php-laravel/rules/agent-team-orchestrator.md +3 -1
- 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/agents/accessibility-reviewer.md +2 -2
- package/presets/opencode/svelte/agents/api-contract-reviewer.md +2 -2
- package/presets/opencode/svelte/agents/build-verifier.md +2 -2
- package/presets/opencode/svelte/agents/ci-investigator.md +2 -2
- package/presets/opencode/svelte/agents/code-reviewer.md +2 -2
- package/presets/opencode/svelte/agents/debugger.md +2 -2
- package/presets/opencode/svelte/agents/feature-developer.md +2 -2
- package/presets/opencode/svelte/agents/migration-specialist.md +2 -2
- package/presets/opencode/svelte/agents/mockup-reviewer.md +2 -2
- package/presets/opencode/svelte/agents/openspec-author.md +2 -2
- package/presets/opencode/svelte/agents/performance-auditor.md +2 -2
- package/presets/opencode/svelte/agents/qa-tester.md +2 -2
- package/presets/opencode/svelte/agents/security-reviewer.md +2 -2
- package/presets/opencode/svelte/agents/solution-architect.md +2 -2
- package/presets/opencode/svelte/agents/task-analyst.md +1 -1
- package/presets/opencode/svelte/agents/task-router.md +1 -1
- package/presets/opencode/svelte/agents/tech-writer.md +2 -2
- package/presets/opencode/svelte/agents/unit-test-generator.md +2 -2
- package/presets/opencode/svelte/agents/unit-test-healer.md +2 -2
- package/presets/opencode/svelte/agents/unit-test-planner.md +2 -2
- package/presets/opencode/svelte/rules/agent-team-orchestrator.md +3 -1
- 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
|
@@ -6,7 +6,18 @@ glob: always
|
|
|
6
6
|
|
|
7
7
|
When this rule applies, acknowledge: `Using .ai.local: agent-artifacts-no-local-paths(, …)*`.
|
|
8
8
|
|
|
9
|
-
Committed agent artifacts leak into git history. Absolute host paths expose the developer machine layout even if the file is deleted in a later MR.
|
|
9
|
+
Committed agent artifacts leak into git history. Absolute host paths (`/Users/<username>/…`) expose the developer machine layout even if the file is deleted in a later MR.
|
|
10
|
+
|
|
11
|
+
## Scope (mandatory)
|
|
12
|
+
|
|
13
|
+
Every agent-written file that may be committed, especially:
|
|
14
|
+
|
|
15
|
+
- `.ai.local/team/tasks/<slug>/pipeline.json`
|
|
16
|
+
- `.ai.local/team/tasks/<slug>/artifact-manifest.json` (`authoritativePaths`, `evidencePaths`, any path array)
|
|
17
|
+
- `.ai.local/team/**` markdown (`brief.md`, `decomposition.md`, `implementation.md`, `review.md`, `validation-report.md`, …)
|
|
18
|
+
- `.ai.local/team/active-task.json` and other team JSON
|
|
19
|
+
|
|
20
|
+
Same ban for any other agent-authored committed path (`openspec/**`, `docs/**`).
|
|
10
21
|
|
|
11
22
|
## Forbidden
|
|
12
23
|
|
|
@@ -14,20 +25,42 @@ Do **not** write host-absolute paths, including:
|
|
|
14
25
|
|
|
15
26
|
- `/Users/<username>/…` (macOS)
|
|
16
27
|
- `/home/<username>/…` (Linux)
|
|
17
|
-
- `C:\Users\<username>\…` and `C:/Users/<username
|
|
18
|
-
- Any other absolute checkout root
|
|
28
|
+
- `C:\Users\<username>\…` and `C:/Users/<username>\…` (Windows)
|
|
29
|
+
- Any other absolute checkout root (`/Users/…/<workspace>/<repo>`, `~/…` expanded)
|
|
19
30
|
|
|
20
|
-
Do **not** put those strings in `
|
|
31
|
+
Do **not** put those strings in `instructions[]`, config values, summaries, or `authoritativePaths` / `evidencePaths`.
|
|
21
32
|
|
|
22
33
|
## Required instead
|
|
23
34
|
|
|
24
|
-
- This repo: path from
|
|
25
|
-
- Task-local artifacts: basename is enough (`pipeline.json`, `brief.md`) when the file lives in the same task directory.
|
|
35
|
+
- This repo: repo-relative path from the repo root (`app/src/…`, `.ai.local/team/tasks/<slug>/pipeline.json`).
|
|
36
|
+
- Task-local artifacts: basename is enough (`pipeline.json`, `brief.md`) when the file lives in the same task directory — match `.ai.local/team/fixtures/artifact-manifest.example.json`.
|
|
26
37
|
- Sibling / other repo: **repo name** + repo-relative path. Never the filesystem location of that checkout.
|
|
27
38
|
|
|
39
|
+
```jsonc
|
|
40
|
+
// ❌ BAD — a receipt in artifact-manifest.json leaking the host path
|
|
41
|
+
{
|
|
42
|
+
"receipt": {
|
|
43
|
+
"evidencePaths": [
|
|
44
|
+
"/Users/<username>/<workspace>/other-repo/app/src/modules/health-tracking/"
|
|
45
|
+
]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// ✅ GOOD — repo-relative; another repo is prefixed by its name
|
|
50
|
+
{
|
|
51
|
+
"receipt": {
|
|
52
|
+
"evidencePaths": [
|
|
53
|
+
"other-repo:app/src/modules/health-tracking/"
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Prose: `other-repo` `app/src/modules/health-tracking/` — not a `/Users/…` prefix.
|
|
60
|
+
|
|
28
61
|
## Gate before finishing a write
|
|
29
62
|
|
|
30
|
-
After writing or editing a team artifact, scan the file (and
|
|
63
|
+
After writing or editing a team artifact, scan the file (and the JSON you are about to write) for `/Users/`, `/home/`, `C:\Users`, `C:/Users`. If any match, rewrite to repo-relative **before** considering the step done. Do not `git add` until clean.
|
|
31
64
|
|
|
32
65
|
Deleting a leaked file later does **not** remove it from git history — prevention is the only fix.
|
|
33
66
|
|
|
@@ -35,4 +68,4 @@ Deleting a leaked file later does **not** remove it from git history — prevent
|
|
|
35
68
|
|
|
36
69
|
- Repo-relative paths, `@/` aliases, URL paths (`/api/…`).
|
|
37
70
|
- Public URLs (`https://…`, `figma.com/…`).
|
|
38
|
-
- Ephemeral local logs that are **not** committed.
|
|
71
|
+
- Ephemeral local logs that are **not** committed (e.g. `/tmp/….log`). Do not copy those absolute paths into committed artifacts; cite the command or a repo-relative copy instead.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
glob: always
|
|
2
|
+
|
|
3
|
+
## Body
|
|
4
|
+
|
|
5
|
+
# Agent pipeline gates (local overlay)
|
|
6
|
+
|
|
7
|
+
These gates are **agent-enforced** (local rules; the preset hook/router is not edited). Treat them as MUST, not advisory. Acknowledge: `Using .ai.local: agent-pipeline-gates(, …)*`.
|
|
8
|
+
|
|
9
|
+
## Gates
|
|
10
|
+
|
|
11
|
+
- **UI scope** (`app/src/ui/**`): the pipeline MUST include `mockup-reviewer` — not only when a `figma.com` URL is present. A terminal `mockup-review.md` with verdict `PASS`/`PASS_WITH_NOTES` is required before the task is complete. Missing artifact = **blocked**, not a warning. (See `ui-change-review-gate`.)
|
|
12
|
+
- **DTO/type scope**: `api-contract-reviewer` is blocking per `api-contract-source`.
|
|
13
|
+
- **build-verifier**: when `storybook/**` or `app/src/ui/**` changed, run targeted storybook tests and require green **without** `--update`.
|
|
14
|
+
- **code-reviewer**: (a) a behaviour change under `app/src/**` without a matching `docs/qa/**` or `*.cases.md` update → WARN (REQUEST_CHANGES when AC names the case); (b) a production behaviour change made to satisfy a test → **blocker**; (c) every review artifact states the reviewed revision (sha or `working tree @ <date>`).
|
|
15
|
+
- **single writer**: do not rewrite a block shipped the same day without a new review artifact and an owner.
|
|
16
|
+
|
|
17
|
+
## Why local, not preset
|
|
18
|
+
|
|
19
|
+
The mechanical hook/router gate would live in the preset-managed hook + router, which `init` overwrites. Per project decision, all gate changes stay in `.ai.local` (agent-enforced).
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
globs: app/src/analytics/**/*.{ts,tsx},app/src/ui/**/*.{ts,tsx}
|
|
2
|
+
|
|
3
|
+
## Body
|
|
4
|
+
|
|
5
|
+
# Analytics / telemetry events (team conventions template)
|
|
6
|
+
|
|
7
|
+
When emitting or changing an analytics/telemetry event, acknowledge: `Using .ai.local: analytics-events(, …)*`.
|
|
8
|
+
|
|
9
|
+
Events go through one owned module per domain — not scattered `pushEvent` / `track` calls in components.
|
|
10
|
+
|
|
11
|
+
## Rules
|
|
12
|
+
|
|
13
|
+
- Event modules live under `app/src/analytics/events/<domain>/` and expose `logX(...)` functions wrapping the analytics client (`pushEvent` or repo equivalent); payload types live in a sibling `*.types.ts`.
|
|
14
|
+
- Components emit events via a hook or store slice (`_complexSlices/Analytics` analog), not by importing the analytics client directly.
|
|
15
|
+
- Respect the repo's gating flag (e.g. `NEXT_PUBLIC_*_ANALYTICS_DISABLED`) and the init in the app root; do not initialize adapters twice.
|
|
16
|
+
- Deduplicate repeated events with the repo's cache idiom when it exists.
|
|
17
|
+
- **Never** put PD, medical/record text, raw auth tokens, or full URL search params into a payload. See the security rule's compliance section.
|
|
18
|
+
- Analytics is a side effect: cross-slice event emission belongs in listener middleware, not in a reducer (see `store-rtk`).
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
globs: app/src/api/**/*.{ts,tsx},app/src/types/**/*.{ts,tsx},app/src/mocks/**/*.{ts,tsx}
|
|
2
|
+
|
|
3
|
+
## Body
|
|
4
|
+
|
|
5
|
+
# API contract source is mandatory (no invented DTOs)
|
|
6
|
+
|
|
7
|
+
When changing DTOs, response types, mappers, or mocks, acknowledge: `Using .ai.local: api-contract-source(, …)*`.
|
|
8
|
+
|
|
9
|
+
## Rules
|
|
10
|
+
|
|
11
|
+
- Any new/changed DTO, response type, response mapper, or shared type **names its contract source** in the task brief: an OpenAPI path + schema (or the project's equivalent contract), or an explicit `no in-repo contract — capture is provisional` risk.
|
|
12
|
+
- The API-contract reviewer is **blocking** when the contract source is a capture and the DTO is new/changed → emit `changes_requested`, not advisory notes.
|
|
13
|
+
- Map only fields present in the contract source. Do not add a field that exists only in mockup copy or a guessed payload.
|
|
14
|
+
- Watch nullability / object-vs-scalar: verify against the contract schema, not a single capture (a capture cannot show absent/empty cases).
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
glob: always
|
|
2
|
+
|
|
3
|
+
## Body
|
|
4
|
+
|
|
5
|
+
# Agent artifact lifecycle
|
|
6
|
+
|
|
7
|
+
When writing team artifacts, acknowledge: `Using .ai.local: artifact-lifecycle(, …)*`.
|
|
8
|
+
|
|
9
|
+
Task-folder artifacts (`.ai.local/team/tasks/<slug>/**`) are an **audit trail**, not a second source of truth. Durable knowledge (decisions, contracts, product behaviour) belongs in `docs/specs/**` or `openspec/**`.
|
|
10
|
+
|
|
11
|
+
## Rules
|
|
12
|
+
|
|
13
|
+
- `.ai.local/team/tasks/**` stays **tracked in git** by default; do not add a gitignore entry. Committing task artifacts is the human's choice at the commit step.
|
|
14
|
+
- Keep artifacts **small**: no host paths (see `agent-artifacts-no-local-paths`), no raw diff dumps, no duplicate copies (`* (1).*`), no screenshots beyond intentional baselines.
|
|
15
|
+
- **Never bulk-purge** committed artifacts to "clean up". Deleting does not remove git history. Prevention only.
|
|
16
|
+
- Durable output (approved spec, ADR, contract, QA cases) is copied into `docs/specs/**` / `openspec/**`; the task folder is not the SoT.
|
|
17
|
+
- Follow `commit-hygiene`: artifact/doc churn does not share a commit with `app/src/**`.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
globs: app/src/**/*.{ts,tsx},app/__tests__/**/*.{ts,tsx}
|
|
2
|
+
|
|
3
|
+
## Body
|
|
4
|
+
|
|
5
|
+
# Code style (team conventions template)
|
|
6
|
+
|
|
7
|
+
When editing TS/TSX, acknowledge: `Using .ai.local: code-style(, …)*`.
|
|
8
|
+
|
|
9
|
+
The preset is generic. This repo has its own naming and file shapes — **open the nearest analog in the same layer and mirror it**. Where a preset example differs, this rule wins.
|
|
10
|
+
|
|
11
|
+
## Reference analogs (mirror these)
|
|
12
|
+
|
|
13
|
+
| Layer | Analog |
|
|
14
|
+
|-------|--------|
|
|
15
|
+
| UI page | `app/src/ui/pages/<Domain>/` |
|
|
16
|
+
| UI component | `app/src/ui/components/<Name>/` |
|
|
17
|
+
| Store slice | `app/src/store/slices/<Domain>/` |
|
|
18
|
+
| API service | `app/src/api/services/<Service>/<Domain>/` |
|
|
19
|
+
| Types | `app/src/types/<Entity>.types.ts` |
|
|
20
|
+
| Unit tests | `app/__tests__/unit/<mirrored path>/` |
|
|
21
|
+
|
|
22
|
+
## Naming
|
|
23
|
+
|
|
24
|
+
- Domain types — `T` prefix: `TAnalysis`, `TUserProfile`. Transport/response types — `T…Response` (`TAnalysisResponse`).
|
|
25
|
+
- Interfaces / props — `I` prefix: `interface IProps`, `IRootState`.
|
|
26
|
+
- DTO → domain mappers — verb `format`: `formatAnalysis`, `formatBiomarkers`. Not `map…`.
|
|
27
|
+
- Endpoint constants — `SCREAMING_SNAKE` + `_ENDPOINT` (`DOMAIN_ANALYSIS_ENDPOINT`); dynamic — `prepare…Endpoint`.
|
|
28
|
+
- No `FC` / `React.FC` (see `no-react-fc`).
|
|
29
|
+
|
|
30
|
+
## Components
|
|
31
|
+
|
|
32
|
+
- `export const X = ({ ... }: IProps) => (...)`; no `FC`.
|
|
33
|
+
- Styles: a sibling styles module; root export `Root`.
|
|
34
|
+
- Local children in `./components/<Name>/`: `Name.tsx` + `styles.ts` (or `Name.styles.ts` when the parent already has a `styles.ts`) + optional `Name.data.ts` / `Name.utils.ts` / `Name.hooks.ts` + `index.ts`. **Strictly forbidden:** declaring a subcomponent in the same file as the parent — see `component-child-decomposition`.
|
|
35
|
+
- Layout sizes of one component (skeleton `height` / `width` / `maxWidth`, one-off `px`) stay as literals in the JSX prop or in `styles.ts`. Do not hoist them into `SCREAMING_SNAKE` constants or a `*.data.ts`.
|
|
36
|
+
- `*.data.ts` is for copy, labels, lookup maps, and values imported by another module. A file that only names pixels is overhead — delete it and inline.
|
|
37
|
+
|
|
38
|
+
## API layer (`app/src/api/services/<Service>/<Domain>/`)
|
|
39
|
+
|
|
40
|
+
- `<Domain>.apiMethods.ts` — `export const XxxApiMethods = { fetchX, createX, saveX, deleteX: async (...) => { … } }`.
|
|
41
|
+
- `<Domain>.endpoints.ts` — path constants.
|
|
42
|
+
- `<Domain>.responseTypes.ts` — `T…Response` (DTO).
|
|
43
|
+
- `<Domain>.responseMappers.ts` — `formatXxx(data: T…Response): T…`.
|
|
44
|
+
- `index.ts` — re-export the four above.
|
|
45
|
+
- Cross-entity mappers — `_shared/<Entity>/<Entity>.responseMappers.ts`.
|
|
46
|
+
- Outside the layer, import only from the `@/api` barrel.
|
|
47
|
+
|
|
48
|
+
## Store (`app/src/store/slices/<Domain>/`)
|
|
49
|
+
|
|
50
|
+
- Folder: `<Domain>.ts` (slice + thunks + selectors), `types.ts`, `utils.ts`, `index.ts` barrel.
|
|
51
|
+
- Slice named `xxxSlice`, re-exported via the barrel; not a default export.
|
|
52
|
+
- Thunks: `fetchX` / `createX` / `saveX` / `deleteX`; error typing via `rejectWithValue`.
|
|
53
|
+
- Selectors: curried `xxxSelector = (args) => (state: IRootState) => …`; memoize derived values with `createSelector`.
|
|
54
|
+
- Local `interface IRootState { <sliceName>: TState }` in the slice file; state shape typed in `types.ts`.
|
|
55
|
+
- Errors: follow the existing slice pattern; do not rewrite the error model in a point task.
|
|
56
|
+
- Domain comments — in the project language.
|
|
57
|
+
|
|
58
|
+
## Types (`app/src/types`)
|
|
59
|
+
|
|
60
|
+
- Project-language JSDoc; `[computed]` prefix on frontend-derived fields; `Xxx.types.ts` or a folder + barrel `index.ts`.
|
|
61
|
+
|
|
62
|
+
## Tests
|
|
63
|
+
|
|
64
|
+
- Mirrored path `app/__tests__/unit/<rel>`, `*.spec.ts(x)`; project-language `describe` / `it`.
|
|
65
|
+
|
|
66
|
+
## Format
|
|
67
|
+
|
|
68
|
+
- Prettier: no semicolons, single quotes, trailing commas, width 100. The linter enforces it — run the post-change gate.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
globs: app/src/**/*.{ts,tsx},storybook/stories/**/*.stories.tsx
|
|
2
|
+
|
|
3
|
+
## Body
|
|
4
|
+
|
|
5
|
+
# Component child decomposition (strict)
|
|
6
|
+
|
|
7
|
+
When this rule applies, acknowledge: `Using .ai.local: component-child-decomposition(, …)*`.
|
|
8
|
+
|
|
9
|
+
A subcomponent of a parent UI component **must** live in a dedicated `components/<Name>/` subfolder of the parent. Defining a subcomponent in the same file as the parent is a **forbidden** shortcut — it breaks the convention used by every other modal/card in the repo, makes the parent file mix orchestration with detail rendering, and prevents re-use of the child from sibling features.
|
|
10
|
+
|
|
11
|
+
This is enforced by the file structure visible in the working tree. A reviewer or `code-reviewer` agent who finds a subcomponent declared alongside the parent's main export must request changes with reference to this rule.
|
|
12
|
+
|
|
13
|
+
## File structure
|
|
14
|
+
|
|
15
|
+
```
|
|
16
|
+
Parent/
|
|
17
|
+
├── Parent.tsx ← public export, thin composition only
|
|
18
|
+
├── Parent.styles.ts ← only styles used directly by Parent (Root, Title, layout shell, list)
|
|
19
|
+
├── index.ts ← re-export of Parent
|
|
20
|
+
└── components/
|
|
21
|
+
└── Child/
|
|
22
|
+
├── Child.tsx ← public export of the subcomponent
|
|
23
|
+
├── Child.styles.ts ← styles specific to the child (its own Card, Icon, Title, etc.)
|
|
24
|
+
├── Child.utils.ts ← OPTIONAL: pure helpers
|
|
25
|
+
├── Child.data.ts ← OPTIONAL: lookup maps / constants
|
|
26
|
+
└── index.ts ← re-export of Child
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
- Child file name: `Child.tsx` (PascalCase, same as folder name). Styles: `Child.styles.ts` (prefixed with child name) to avoid collision when the parent also has a `styles.ts`.
|
|
30
|
+
- Parent uses `import { Child } from './components/Child'` (or `./components/Child/index`); never imports from `../Child.tsx` or `../../Child`.
|
|
31
|
+
- The child does not import from the parent's `styles.ts`. If both share a token, they each import it from the design-token source directly.
|
|
32
|
+
- `Child.utils.ts` / `Child.data.ts` are optional and only added when there are real helpers/maps. Do not create empty files.
|
|
33
|
+
|
|
34
|
+
## Subcomponents
|
|
35
|
+
|
|
36
|
+
A **subcomponent** is any JSX `<X .../>` (a) the parent repeats, (b) the parent passes resolved props to (instead of letting the child compute them), or (c) that owns its own layout/typography/visual contract. Inline JSX like `<s.Icon><img/></s.Icon>` is a styled element, not a subcomponent.
|
|
37
|
+
|
|
38
|
+
When the parent has more than one or two branches, several repeated JSX subtrees, or any non-trivial rendering block, that block **must** be extracted to a subcomponent in `./components/<Name>/`. The parent then becomes a thin switch — it owns the wiring, the wrapper, and the iteration that maps data into `<Child>` instances.
|
|
39
|
+
|
|
40
|
+
## Forbidden
|
|
41
|
+
|
|
42
|
+
```tsx
|
|
43
|
+
// ❌ Parent file with a co-located subcomponent
|
|
44
|
+
export const ItemsModal = () => (
|
|
45
|
+
<Modal>
|
|
46
|
+
{items.map((item) => (
|
|
47
|
+
<s.Card key={item.id}>
|
|
48
|
+
<s.Icon><s.IconImage src={...} /></s.Icon>
|
|
49
|
+
<s.Body><s.Title>{item.title}</s.Title>...</s.Body>
|
|
50
|
+
</s.Card>
|
|
51
|
+
))}
|
|
52
|
+
</Modal>
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
// Declared in the same file — file structure is wrong
|
|
56
|
+
const CardItem = ({ item }) => <s.Card>...</s.Card>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Correct
|
|
60
|
+
|
|
61
|
+
```tsx
|
|
62
|
+
// ItemsModal/ItemsModal.tsx
|
|
63
|
+
import { CardItem } from './components/CardItem'
|
|
64
|
+
|
|
65
|
+
export const ItemsModal = () => (
|
|
66
|
+
<Modal>{items.map((i) => <CardItem key={i.id} item={i} />)}</Modal>
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
// ItemsModal/components/CardItem/CardItem.tsx
|
|
70
|
+
import * as s from './CardItem.styles'
|
|
71
|
+
|
|
72
|
+
export const CardItem = ({ item }: { item: TItem }) => <s.Card>...</s.Card>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Why the rule is strict, not a preference
|
|
76
|
+
|
|
77
|
+
- **Diffability:** a change to the child shows up in `components/Child/Child.tsx`, not as noise in the parent file.
|
|
78
|
+
- **Reviewability:** the parent file stays short (~50 lines) and the reviewer reads orchestration without scrolling past detail rendering.
|
|
79
|
+
- **Re-use:** the child can be imported by other stories, modals, or pages without copy-paste.
|
|
80
|
+
- **Tests:** a child-only story (visual regression of the card alone) is possible without re-rendering the whole modal.
|
|
81
|
+
- **Lint / IDE:** per-folder patterns scale better than 200-line parent files mixing styles + helpers + subcomponents + data.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
globs: app/src/constants/**/*.{ts,tsx},app/src/ui/**/*.{ts,tsx}
|
|
2
|
+
|
|
3
|
+
## Body
|
|
4
|
+
|
|
5
|
+
# Feature flags & experiments (team conventions template)
|
|
6
|
+
|
|
7
|
+
When gating UI/behaviour by a flag or A/B experiment, acknowledge: `Using .ai.local: feature-flags-experiments(, …)*`.
|
|
8
|
+
|
|
9
|
+
## Rules
|
|
10
|
+
|
|
11
|
+
- Local flags live in one module (e.g. `app/src/constants/localFeatureFlags.ts`) as `isFeature…Enabled`; remote experiments come from the experiments client (`@sh/experiments` analog).
|
|
12
|
+
- Read a flag through the repo's access path — a store slice / provider / singleton mounted at the app root — not by scattering `process.env` checks or ad-hoc constants.
|
|
13
|
+
- Experiment-gated routes are registered in the repo's allowlist (e.g. `EXPERIMENT_PAGES`); do not invent a parallel mechanism.
|
|
14
|
+
- Experimental / legacy page variants are **non-canonical** — do not copy them as the reference for new work, and do not delete a flag without the paired spec / story / e2e sync (flag removal is a cross-cutting change).
|
|
15
|
+
- A flag that flips layout or visual identity is still one purpose per component after the flag is removed — do not bake the flag into a universal branchy component (`react-ui`).
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
globs: **/*.{tsx,ts}
|
|
2
|
+
|
|
3
|
+
## Body
|
|
4
|
+
|
|
5
|
+
# No `FC` / `React.FC`
|
|
6
|
+
|
|
7
|
+
When this rule applies, acknowledge: `Using .ai.local: no-react-fc(, …)*`.
|
|
8
|
+
|
|
9
|
+
Do **not** type React components as `FC`, `React.FC`, `FunctionComponent`, or `React.FunctionComponent`.
|
|
10
|
+
|
|
11
|
+
`FC` adds implicit `children`, is outdated for React 18+, and the rest of a typical repo already uses a plain arrow + props type.
|
|
12
|
+
|
|
13
|
+
## Required shape
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
interface IProps {
|
|
17
|
+
title: string
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export const Example = ({ title }: IProps) => {
|
|
21
|
+
return <s.Root>{title}</s.Root>
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
If there are no props:
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
export const Example = () => <s.Root />
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Forbidden
|
|
32
|
+
|
|
33
|
+
```tsx
|
|
34
|
+
import { type FC } from 'react'
|
|
35
|
+
|
|
36
|
+
export const Example: FC<IProps> = ({ title }) => { /* … */ }
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
export const Example: React.FC<IProps> = ({ title }) => { /* … */ }
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Notes
|
|
44
|
+
|
|
45
|
+
- Type props with `interface IProps` / `type TProps` (match the neighboring file).
|
|
46
|
+
- If the component accepts `children`, declare `children` explicitly on the props type — do not get it from `FC`.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
globs: app/src/lib/pwa/**/*.{ts,tsx},app/public/**
|
|
2
|
+
|
|
3
|
+
## Body
|
|
4
|
+
|
|
5
|
+
# PWA / service worker (team conventions template)
|
|
6
|
+
|
|
7
|
+
When touching the service worker, manifest, or offline behaviour, acknowledge: `Using .ai.local: pwa-service-worker(, …)*`.
|
|
8
|
+
|
|
9
|
+
## Rules
|
|
10
|
+
|
|
11
|
+
- Service worker and web manifest are wired through the app root / document head via one init hook; do not register a second service worker or add a competing `<link rel="manifest">`.
|
|
12
|
+
- Service-worker scope and asset paths are derived from `basePath` / `assetPrefix` — a hardcoded `/` breaks scoped deployments.
|
|
13
|
+
- A dev-only `Service-Worker-Allowed` header (or equivalent) is a dev concern; do not assume it exists in production.
|
|
14
|
+
- Do not introduce `next-pwa`-style tooling unless the repo already uses it; follow the existing registration path.
|
|
15
|
+
- Offline/caching changes are behaviour changes: update the spec / e2e / QA case that covers offline flows.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
globs: docs/qa/**/*.md,app/__tests__/e2e/**/*.cases.md
|
|
2
|
+
|
|
3
|
+
## Body
|
|
4
|
+
|
|
5
|
+
# Consolidated QA test cases (`docs/qa/**`)
|
|
6
|
+
|
|
7
|
+
When editing QA case docs or the matching e2e plan, acknowledge: `Using .ai.local: qa-test-cases(, …)*`.
|
|
8
|
+
|
|
9
|
+
## Rules
|
|
10
|
+
|
|
11
|
+
- A consolidated QA doc (`docs/qa/<area>-test-cases.md`) is a **derived view** of the spec + `*.cases.md` — not a second source of truth. Cite the source (spec path / scenario id) per case.
|
|
12
|
+
- Keep the route table, PREFIX map, and grouping in sync with the executable plan; mark each case `as-is` (characterization) or `target` (planned).
|
|
13
|
+
- On a behaviour change, update the QA doc in the same changeset as the `*.cases.md` / spec.
|
|
14
|
+
- Do not weaken or delete cases to match an unintended behaviour change — fix the implementation or file a task (`no-test-driven-behavior-change`).
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
override: kill next-app-router
|
|
2
|
-
globs: src/pages/**/*.{ts,tsx},src/ui/**/*.{ts,tsx},next.config.ts
|
|
2
|
+
globs: app/src/pages/**/*.{ts,tsx},app/src/ui/**/*.{ts,tsx},app/next.config.ts
|
|
3
3
|
|
|
4
4
|
## Body
|
|
5
5
|
|
|
@@ -15,9 +15,11 @@ This rule drops the preset's `next-app-router` rule from context for repos using
|
|
|
15
15
|
- Domain UI lives in `src/ui/pages/<Name>Page`; route files do not contain layout/business logic.
|
|
16
16
|
- Navigation: `next/router` (`useRouter`) and `next/link`. **Never** `next/navigation`.
|
|
17
17
|
- `_app.tsx` / `_document.tsx` stay in `src/pages/`.
|
|
18
|
+
- Dynamic routes: the dynamic segment is **last**, `[id].tsx` → `[id].html`; do **not** add catch-all `[...slug]` routes. Read a dynamic param only after the router is ready (`useRouterReady()` analog) and parse it with the repo's slug helper; push `/404` when it is invalid.
|
|
18
19
|
|
|
19
20
|
## Forbidden
|
|
20
21
|
|
|
21
22
|
- Creating App Router files (`src/app/**`, `page.tsx`, `layout.tsx`, `loading.tsx`, `error.tsx`, `route.ts`).
|
|
22
23
|
- Importing `next/navigation` or App Router server APIs (`cookies()`, `headers()`, `redirect()`).
|
|
23
|
-
- `getServerSideProps` / `getStaticProps` — the app is a client-rendered static export; data goes through the store/`@/api`.
|
|
24
|
+
- `getServerSideProps` / `getStaticProps` — the app is a client-rendered static export; data goes through the store/`@/api`.
|
|
25
|
+
- Reading `router.query` before `router.isReady` (cold-load crash); non-integer / non-final dynamic segments (nginx serves only integer slugs at the end).
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
globs: src/**/*.{ts,tsx}
|
|
1
|
+
globs: app/src/**/*.{ts,tsx}
|
|
2
2
|
|
|
3
3
|
## Body
|
|
4
4
|
|
|
@@ -11,6 +11,8 @@ Copy (button labels, headings, alt text, aria-labels), constants, enums, and rou
|
|
|
11
11
|
## Rules
|
|
12
12
|
|
|
13
13
|
- User-visible copy: inline unless the same string is used in ≥2 distinct places OR is consumed by tests/stories that need a shared reference. Multi-instance refactors belong to a dedicated task.
|
|
14
|
+
- A new inline data table (dictionary/map) larger than ~50 entries requires a cited source (spec, mockup node, or contract) in the task artifact — otherwise it is invented content.
|
|
15
|
+
- Copy changes cite a spec or mockup node.
|
|
14
16
|
- Numeric / pixel / token aliases: inline directly; do not re-wrap into a named constant when used exactly once in the same file.
|
|
15
17
|
- Counters and derived single-use values: inline (`array.length`, computed expressions).
|
|
16
18
|
- Layout sizes of one component (skeleton `height`/`width`/`maxWidth`, one-off `px`) stay as literals in the JSX prop or in `styles.ts`. Do not hoist them into named constants or a `*.data.ts`, even when the same number is repeated in that component's JSX and its styles.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
globs: storybook/stories/**/*.stories.tsx, storybook/stories/**/README.md, storybook/stories/**/*
|
|
2
|
+
|
|
3
|
+
## Body
|
|
4
|
+
|
|
5
|
+
# Storybook catalog structure
|
|
6
|
+
|
|
7
|
+
When editing Storybook catalog files, acknowledge: `Using .ai.local: storybook-catalog-structure(, …)*`.
|
|
8
|
+
|
|
9
|
+
## Before you add a story
|
|
10
|
+
|
|
11
|
+
- UI develop/refactor starts with **`storybook-ui-quality-gate`** (preview vs mockup + story tests) — stories are not post-hoc docs.
|
|
12
|
+
- Read the folder README: `storybook/stories/pages/README.md`, `components/README.md`, `modals/README.md`.
|
|
13
|
+
- Copy the nearest analog file; do not invent a new sidebar branch.
|
|
14
|
+
- After add/edit (and after UI refactors that stories cover): **`storybook-keep-tests-current`** — tests + baselines green.
|
|
15
|
+
|
|
16
|
+
## Sidebar roots (fixed)
|
|
17
|
+
|
|
18
|
+
| Title pattern | Path | Notes |
|
|
19
|
+
|---------------|------|-------|
|
|
20
|
+
| `UI/Pages/<ShortName>` | `pages/<Page>/<Page>.stories.tsx` | Full page; `layout: 'fullscreen'`, `defaultViewport: 'desktop'`. |
|
|
21
|
+
| `UI/Pages/<Page>/Components/<Block>` | `pages/<Page>/Components/<Block>.stories.tsx` | **Required** for page-level blocks. |
|
|
22
|
+
| `UI/Pages/<Page>/Cards/<Card>` | `pages/<Page>/Cards/` | List cards only. |
|
|
23
|
+
| `UI/Components/<Name>` | `components/` | Reusable `app/src/ui/components/**`. |
|
|
24
|
+
| `UI/Modals/<Domain>/<Modal>` | `modals/<Domain>/` | Isolated dialogs only. |
|
|
25
|
+
|
|
26
|
+
## Page Components section (required)
|
|
27
|
+
|
|
28
|
+
When a page has distinct blocks (summary, side panel, files, skeletons, etc.):
|
|
29
|
+
|
|
30
|
+
- Add `storybook/stories/pages/<Page>/Components/<BlockName>.stories.tsx`.
|
|
31
|
+
- Title: `UI/Pages/<ShortName>/Components/<BlockName>`.
|
|
32
|
+
- Cover **every code-implemented visual state** (loading skeleton, empty, error, feature-flag variants).
|
|
33
|
+
- Document in page `README.md`: block × state → export name → fixture/mock id.
|
|
34
|
+
- Nested modals inside blocks: story the **block** or use existing `UI/Modals/*` — not a separate modal story.
|
|
35
|
+
- Pure skeleton/presentational blocks: single default export is OK.
|
|
36
|
+
- White-card blocks: apply the grey-canvas decorator so the card edge is visible. Skip grey/primary/secondary roots (see `storybook-csf-authoring`).
|
|
37
|
+
- If the page CSF grows: extract a block into `Components/` — **never** `PageName.p1.stories.tsx`.
|
|
38
|
+
|
|
39
|
+
## Placement rules
|
|
40
|
+
|
|
41
|
+
- Reusable across pages → `storybook/stories/components/` (see components README out-of-scope table).
|
|
42
|
+
- Modal/dialog → `storybook/stories/modals/` only.
|
|
43
|
+
- Page-only block → page `Components/` (not `UI/Components/`).
|
|
44
|
+
- List cards → `pages/<Page>/Cards/` (not modal wrappers).
|
|
45
|
+
|
|
46
|
+
## README requirement
|
|
47
|
+
|
|
48
|
+
Each page folder keeps `README.md`: mock id map, state vocabulary, vitest validation path, Components catalog when present.
|
|
49
|
+
|
|
50
|
+
Example validation (from `storybook/`):
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
yarn vitest run --project=storybook stories/pages/<Page>/Components/<Block>.stories.tsx
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Forbidden
|
|
57
|
+
|
|
58
|
+
- Duplicating a modal under page/Components when `UI/Modals/...` already exists.
|
|
59
|
+
- New `*Modal*` titles under `UI/Components/`.
|
|
60
|
+
- New flat page-block files at page root — use `Components/`.
|
|
61
|
+
- **No** `*.p1.stories.tsx`, `*.p2.stories.tsx`, or any `*.pN.stories.tsx` — one CSF per `title`.
|
|
62
|
+
- **No** viewport-duplicate stories: `Mobile*`, `Mobile_*`, `defaultViewport: 'mobile*'`, `isMobile` preloads.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
glob: always
|
|
2
|
+
|
|
3
|
+
## Body
|
|
4
|
+
|
|
5
|
+
# Storybook temp screenshot cleanup
|
|
6
|
+
|
|
7
|
+
When this rule applies, acknowledge: `Using .ai.local: storybook-cleanup-temp-screenshots(, …)*`.
|
|
8
|
+
|
|
9
|
+
## When (mandatory)
|
|
10
|
+
|
|
11
|
+
Before declaring Storybook or UI work complete, and after any browser / Figma / Playwright / Storybook MCP screenshot: delete files **this turn created** that are not product assets or vis baselines.
|
|
12
|
+
|
|
13
|
+
Leaving dump PNGs in the repo is incomplete work — same severity as red Storybook tests.
|
|
14
|
+
|
|
15
|
+
## Delete
|
|
16
|
+
|
|
17
|
+
Typical dumps (names vary):
|
|
18
|
+
|
|
19
|
+
- Repo-root images: `*-after.png`, `*-before.png`, `positive-story.png`, and any other untracked `*.png` / `*.jpg` / `*.webp` at the workspace root that you created.
|
|
20
|
+
- `/tmp/**` review dumps.
|
|
21
|
+
- Workspace copies of Figma screenshots, browser screenshots, or Playwright traces/screenshots written **into the git worktree** (not CI artifacts).
|
|
22
|
+
|
|
23
|
+
## Keep
|
|
24
|
+
|
|
25
|
+
- `storybook/__vis__/<platform>/__baselines__` — CI vis; refresh via `--update`, never `rm` to hide drift.
|
|
26
|
+
- `storybook/__vis__/local` — gitignored local baselines; still refresh, do not wipe.
|
|
27
|
+
- Product assets: `app/public/**`, component `images/`, committed mocks.
|
|
28
|
+
- Files the user explicitly asked to keep.
|
|
29
|
+
|
|
30
|
+
## How
|
|
31
|
+
|
|
32
|
+
1. `git status --short` (and `ls` repo root) for untracked/modified images from this turn.
|
|
33
|
+
2. Delete **only those paths**. No `git clean -fd`, no `git checkout` of vis baselines.
|
|
34
|
+
3. Confirm gone. Do not `git add` temp screenshots.
|
|
35
|
+
|
|
36
|
+
## Forbidden
|
|
37
|
+
|
|
38
|
+
- Committing verification / MCP / Playwright dump images.
|
|
39
|
+
- Leaving repo-root PNGs "for the user to review" unless they asked.
|
|
40
|
+
- Deleting vis baselines instead of `--update`.
|