@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
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Component catalog gate (UI quality)
|
|
2
|
+
|
|
3
|
+
When the repo ships a **component catalog** (Storybook, Ladle, Chromatic, or a `stories/` tree), it is the required surface for developing and reviewing UI. A route screenshot, a source-only review, or unit tests without stories is **not** enough.
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
- Triggers: a new `app/src/ui/**` component / page / block / modal, or a visual/interaction refactor (layout, styles, tokens, copy, hover/open, empty / error / loading).
|
|
8
|
+
- Skip: types / API / store / mocks with no render or style change.
|
|
9
|
+
|
|
10
|
+
## Rules
|
|
11
|
+
|
|
12
|
+
- **Stories ship with the UI**, in the same change — not after.
|
|
13
|
+
- **Compare against the design source** (Figma, else the AC): the catalog is the canvas, the design is the truth. Visual baselines are a **regression detector**, not a design spec — fix the implementation first, then update the baseline.
|
|
14
|
+
- **Package isolation:** when the catalog is its own package (own `package.json` / lockfile / `node_modules`), it resolves dependencies from **its own** `node_modules` — never the app's. Missing package ⇒ add it to the catalog manifest; never alias into the app.
|
|
15
|
+
- **Clean up** temp screenshots you created this turn; keep only intentional baselines and product assets.
|
|
16
|
+
- Keep catalog tests green — do not finish with red or stale baselines.
|
|
17
|
+
|
|
18
|
+
## Stack notes
|
|
19
|
+
|
|
20
|
+
- Catalog: Storybook. Developer loop: read Figma → implement → preview the story → screenshot → compare → fix → **update baselines last**.
|
|
21
|
+
- Run the catalog runner from the catalog directory (e.g. its own Vitest project), not the app's unit runner.
|
|
22
|
+
|
|
23
|
+
## Handoff
|
|
24
|
+
|
|
25
|
+
- `feature-developer`: a UI work package in a catalog repo is **not done** without a story and a green catalog test run.
|
|
26
|
+
- `code-reviewer`: a UI-touching MR with a catalog present and no story → `REQUEST_CHANGES`.
|
|
27
|
+
|
|
28
|
+
## Related
|
|
29
|
+
|
|
30
|
+
- `design-tokens-binding.md` — Figma → repo token binding for the implementation.
|
|
31
|
+
- `mockup-review.md` — the reviewer-side parity gate.
|
|
@@ -22,7 +22,7 @@ The implementation must mirror the Figma mockup token-for-token. Raw design valu
|
|
|
22
22
|
|
|
23
23
|
## Imagery & icons
|
|
24
24
|
|
|
25
|
-
- **Images:** use the Figma asset source from `get_design_context` / the node’s image fill. Repo: `next/image`
|
|
25
|
+
- **Images:** use the Figma asset source from `get_design_context` / the node’s image fill. Repo: **the project’s image primitive** — check the nearest component in the same layer (often a plain `<img>` or a DS image component; `next/image` only where the config keeps the optimizer enabled). Derive `src`, `width`, `height` from Figma. Do not use a placeholder, do not invent a URL, do not change aspect ratio.
|
|
26
26
|
- **Icons:** use the `@sds/icon` (or project DS) symbol name from the Figma component instance / metadata. Do not invent icon names. The Figma node’s component name (e.g. `Icon / chevron-right`) maps to the DS symbol.
|
|
27
27
|
- `alt` text from the Figma node name when meaningful; otherwise from the design context copy.
|
|
28
28
|
|
|
@@ -52,6 +52,10 @@ 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
|
+
**UI-scope gate (no Figma).** When the scope touches `app/src/ui/**` or the component-catalog root on `feature` / `refactor`, a terminal `mockup-review.md` is required **even without** a `figma.com` URL — reviewed against the AC / `ux-design.md`. Where the repo ships a component catalog, stories ship with the UI and `build-verifier` runs the catalog suite green (`component-catalog-gate`).
|
|
56
|
+
|
|
57
|
+
**Consumer context.** When `.ai/context/**` exists, read it before deriving architecture, domain vocabulary, or test placement.
|
|
58
|
+
|
|
55
59
|
## Style discovery (mandatory)
|
|
56
60
|
|
|
57
61
|
Before writing a new file in a layer, open **1–2 analog files** in the same layer and mirror: export shape, name prefixes (`T` / `I` where the repo uses them), file suffixes (`.apiMethods.ts`, `.endpoints.ts`, `.data.ts`, `.hooks.ts`, `styles.ts`), mapper / selector / thunk naming, and barrel shape. Record the analogs in the handoff. Where this preset's examples differ from the repo, **the repo wins**.
|
|
@@ -60,32 +64,32 @@ Before writing a new file in a layer, open **1–2 analog files** in the same la
|
|
|
60
64
|
|
|
61
65
|
When the prompt or `brief.md` contains a Figma URL with a node id (`?node-id=…`), `mockup-reviewer` must walk the node subtree via Figma MCP and emit **two sections** in `mockup-review.md`:
|
|
62
66
|
|
|
63
|
-
- `## Design contract` — Figma variables, text styles, components/assets used by the subtree, with the repo mapping (`@sds/tokens-colors` / `@sds/brand-colors` / `@sds/tokens-typography` / `@sds/tokens` / DS components /
|
|
67
|
+
- `## Design contract` — Figma variables, text styles, components/assets used by the subtree, with the repo mapping (`@sds/tokens-colors` / `@sds/brand-colors` / `@sds/tokens-typography` / `@sds/tokens` / DS components / the project image primitive with Figma-derived `src/width/height`). This is the binding table the developer uses for typography, color, spacing, and imagery.
|
|
64
68
|
- `## Node decomposition (AC-2)` — the child→component map (with a `Bindings` column for the Figma design bindings).
|
|
65
69
|
|
|
66
|
-
`feature-developer` must **not** start UI implementation until both sections are present, and must load requestable `design-tokens-binding.
|
|
70
|
+
`feature-developer` must **not** start UI implementation until both sections are present, and must load requestable `design-tokens-binding.md` to bind every value to a Figma variable / text style / repo token (raw `#…` / `px` are a finding). The full procedure and verdict rule live in the `mockup-reviewer` agent prompt and the `mockup-review` Stack notes.
|
|
67
71
|
|
|
68
72
|
## UI MR — Figma parity gate (mandatory in code review)
|
|
69
73
|
|
|
70
|
-
When the MR touches UI / layout / styling (`app/src/ui/**`, global layout/CSS/tokens) and a Figma reference exists in `brief.md` / `decomposition.md` or `mockup-review.md` is present, `code-reviewer` must perform a **detailed, pixel-accurate** comparison of the implementation against the mockup across **every project viewport** (mockup-review AC-8 / Stack notes set and the repo’s Storybook viewport toolbar). The comparison is a per-element parity check (typography / color / spacing / imagery / states / structure / auto-layout intent) bound to the `## Design contract` and the `design-tokens-binding.
|
|
74
|
+
When the MR touches UI / layout / styling (`app/src/ui/**`, global layout/CSS/tokens) and a Figma reference exists in `brief.md` / `decomposition.md` or `mockup-review.md` is present, `code-reviewer` must perform a **detailed, pixel-accurate** comparison of the implementation against the mockup across **every project viewport** (mockup-review AC-8 / Stack notes set and the repo’s Storybook viewport toolbar). The comparison is a per-element parity check (typography / color / spacing / imagery / states / structure / auto-layout intent) bound to the `## Design contract` and the `design-tokens-binding.md` discipline. Findings go in `## Figma parity (UI)` in `review.md`. **Storybook visual baselines are not a substitute.** Missing or `unable_to_compare` parity on a UI MR with a Figma reference → `REQUEST_CHANGES`. The full gate lives in the `code-reviewer` agent prompt and the `code-review-mr` Stack notes.
|
|
71
75
|
|
|
72
76
|
## UI self-check vs Figma (mandatory in implementation)
|
|
73
77
|
|
|
74
78
|
For UI WPs with a Figma reference, `feature-developer` performs a **self-check vs Figma** at each project viewport (Playwright MCP / Chrome DevTools MCP) before the implementation receipt, fixes obvious typography / color / spacing / imagery / state deviations, and records a `## UI self-check vs Figma` block in `implementation.md`. This is the developer-side counterpart to the parity gate and closes the fidelity loop (extract contract → bind → self-check → review-block).
|
|
75
79
|
|
|
76
|
-
Typical feature with backend data and shared state. Layer details — `architecture-boundaries.
|
|
80
|
+
Typical feature with backend data and shared state. Layer details — `architecture-boundaries.md`, `next-app-core.md`.
|
|
77
81
|
|
|
78
82
|
## Checklist (work order)
|
|
79
83
|
|
|
80
|
-
1. **Domain types** — `app/src/types/**`, export via barrel (`public-imports.
|
|
84
|
+
1. **Domain types** — `app/src/types/**`, export via barrel (`public-imports.md`, **`layer-barrel-exports.md`**); JSDoc — `types-jsdoc.md`.
|
|
81
85
|
2. **API contract** — DTOs where the repo uses them; domain types in `@/types`.
|
|
82
|
-
3. **Mappers** — DTO → domain in `*responseMappers.ts` (`api-services.
|
|
83
|
-
4. **Services** — clients `app/src/api/clients/**`, barrel `@/api` (`api-services.
|
|
84
|
-
5. **State** — `createSlice` / `createAsyncThunk` (`store-rtk.
|
|
85
|
-
6. **UI** — types from `@/types`, no DTOs (`react-ui.
|
|
86
|
+
3. **Mappers** — DTO → domain in `*responseMappers.ts` (`api-services.md`).
|
|
87
|
+
4. **Services** — clients `app/src/api/clients/**`, barrel `@/api` (`api-services.md`, `http-client.md`, **`layer-barrel-exports.md`**). No `fetch` from UI/store.
|
|
88
|
+
5. **State** — `createSlice` / `createAsyncThunk` (`store-rtk.md`); thunk → services from `@/api`.
|
|
89
|
+
6. **UI** — types from `@/types`, no DTOs (`react-ui.md`, `architecture-boundaries-ui.md`, `no-props-spread.md`).
|
|
86
90
|
7. **Mocks** — per repo layout; register in `app/src/mocks/handlers.ts` (see below).
|
|
87
|
-
8. **Tests** — unit for mappers (`tests-unit.
|
|
88
|
-
9. **Completion** — **`post-change-lint.
|
|
91
|
+
8. **Tests** — unit for mappers (`tests-unit.md`); e2e from `*.cases.md` (`tests-e2e-structure.md`, `playwright-agents.md`).
|
|
92
|
+
9. **Completion** — **`post-change-lint.md`**: `lint:js` + `lint:css` + `type-check`; 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.
|
|
89
93
|
|
|
90
94
|
## Data flow (orientation)
|
|
91
95
|
|
|
@@ -128,7 +132,7 @@ flowchart LR
|
|
|
128
132
|
- DTO in UI or untyped store.
|
|
129
133
|
- HTTP client from a component/thunk bypassing the service.
|
|
130
134
|
- Deep-import `@/api/services/**` from UI/store.
|
|
131
|
-
- `{...props}` into components — `no-props-spread.
|
|
135
|
+
- `{...props}` into components — `no-props-spread.md`.
|
|
132
136
|
- **Ubiquitous language:** Domain/type names reflect the feature’s subject domain — do not mix transport/framework terms into the domain without need.
|
|
133
137
|
- Load `design-guidance` (rule stem) when assessing structure, smells, or pattern fit.
|
|
134
138
|
- Do not mutate pipeline `status.json` / `metrics.json`; the orchestration hook is the single writer. Skills upsert the owned terminal receipt in `artifact-manifest.json`.
|
|
@@ -137,12 +141,12 @@ flowchart LR
|
|
|
137
141
|
|
|
138
142
|
| Zone | Rules |
|
|
139
143
|
|------|-------|
|
|
140
|
-
| `app/src/api/clients/**`, `app/src/lib/clients/**` | `http-client.
|
|
141
|
-
| `app/src/api/services/**` | `api-services.
|
|
142
|
-
| `app/src/store/**` | `store-rtk.
|
|
143
|
-
| `app/src/ui/**` | `react-ui.
|
|
144
|
-
| `app/src/types/**` | `public-imports.
|
|
145
|
-
| `app/__tests__/e2e/**` | `tests-e2e-structure.
|
|
144
|
+
| `app/src/api/clients/**`, `app/src/lib/clients/**` | `http-client.md`, `tests-unit.md` (behavior) |
|
|
145
|
+
| `app/src/api/services/**` | `api-services.md`, `layer-barrel-exports.md`, `http-client.md` |
|
|
146
|
+
| `app/src/store/**` | `store-rtk.md`, `architecture-boundaries.md`, `public-imports.md` |
|
|
147
|
+
| `app/src/ui/**` | `react-ui.md`, `no-props-spread.md`, `public-imports.md` |
|
|
148
|
+
| `app/src/types/**` | `public-imports.md`, `types-jsdoc.md`, `layer-barrel-exports.md` |
|
|
149
|
+
| `app/__tests__/e2e/**` | `tests-e2e-structure.md`, `playwright-agents.md` |
|
|
146
150
|
|
|
147
151
|
When adding or extending a feature, **walk the checklist** and the rules from the table for affected zones.
|
|
148
152
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Forms and validation
|
|
2
|
+
|
|
3
|
+
Use the form solution already in the repo (`package.json` + the nearest form component). Do not hand-roll form state with `useState` when a form library is present.
|
|
4
|
+
|
|
5
|
+
## Rules
|
|
6
|
+
|
|
7
|
+
- One form-hook instance per form; register design-system fields through the library's controller/wrapper (controlled) — not a raw `<input>` when a DS field exists.
|
|
8
|
+
- Validate with the repo's resolver/schema library and reuse the shared validators under the repo's validation utils — never re-implement email / phone / date / length rules inline.
|
|
9
|
+
- Masked inputs (phone, date, card) go through the repo's mask library, not ad-hoc regex on change.
|
|
10
|
+
- Disable submit while `!isValid` / `isSubmitting`; surface field errors from the form library's error state.
|
|
11
|
+
- Keep side effects out of field components: the form owns `onSubmit`; data flows to store/API through the repo's layers (`architecture-boundaries-ui.md`).
|
|
12
|
+
|
|
13
|
+
## Accessibility
|
|
14
|
+
|
|
15
|
+
- Every field has a visible label and an associated error message; do not rely on placeholder-only labels.
|
|
16
|
+
- Field errors are announced and tied to the input; keep the DS field's wiring instead of a bespoke error node.
|
|
17
|
+
|
|
18
|
+
## Stack notes
|
|
19
|
+
|
|
20
|
+
- Library: `react-hook-form` + `yup` resolver; `mode: 'onTouched'`.
|
|
21
|
+
- DS fields: `app/src/ui/components/_form/**`; shared validators: `app/src/lib/utils/validations/**`; masks: `imask` / `react-imask`.
|
|
22
|
+
|
|
23
|
+
## Related
|
|
24
|
+
|
|
25
|
+
- `react-ui.md` — component structure and decomposition.
|
|
26
|
+
- `architecture-boundaries-ui.md` — no API/DTO in UI.
|
|
@@ -87,6 +87,7 @@ Policy is stack-class-specific — see adapter **Stack notes**. If a Figma **plu
|
|
|
87
87
|
|
|
88
88
|
## Stack notes
|
|
89
89
|
|
|
90
|
+
- **Installed Next docs first:** the installed `next` may ship version-pinned agent docs at `node_modules/next/dist/docs/` and a managed `AGENTS.md` block. Prefer them for framework APIs (they match the installed major) — reach for Context7 only when they are insufficient or absent.
|
|
90
91
|
- Pipeline **`mockup-reviewer`** is the only agent that reads Figma for mockup review. See `mockup-review`.
|
|
91
92
|
- Shipped besides Context7: browser automation MCP (`playwright` / `playwright-test` / `user-playwright`) and `chrome-devtools`.
|
|
92
93
|
- **Split:** Playwright MCP → e2e agents (planner/generator/healer), selector checks, spec reproduction. Chrome DevTools MCP → `debugger` / `performance-auditor` against a **running app** (console, network, traces). Not a substitute for e2e.
|
|
@@ -117,4 +117,4 @@ When the Figma URL contains a node id (`?node-id=…`), `mockup-reviewer` must:
|
|
|
117
117
|
1. Walk the node subtree via Figma MCP `get_metadata` and emit a **Node→component map** (each child node id/name/type → target `app/src/ui/**` component, attached library component (e.g. `@sds/*`), or `new: <ProposedName>`). The map goes in `mockup-review.md` under `## Node decomposition (AC-2)` as a table plus a short prose summary, with a `Bindings` column / per-row note for the Figma design bindings.
|
|
118
118
|
2. Extract the **Design contract** (above the Node decomposition table): Figma variables used by the subtree (color, spacing, radius, effect — one `get_variable_defs` call per file), text styles used, and components / assets (library instances, image fills via `get_design_context`, icons). Each item mapped to the repo equivalent: `@sds/tokens-colors` / `@sds/brand-colors` / `@sds/tokens-typography` / `@sds/tokens` / DS component (`@sds/icon` symbol name, `Text variant="…"`) / `next/image` with Figma-derived `src/width/height`.
|
|
119
119
|
|
|
120
|
-
Both sections are the **pre-implementation contract** the developer reads before coding; the DS/tokens/quality/coverage/viewport dimensions still apply on top. Verdict: missing map **or** missing Design contract on a node-link input → `FAIL` (unless `BLOCKED_MCP`). The developer (`feature-developer`) must not start UI work until both sections are present, and must bind implementation to the Design contract (see `design-tokens-binding.
|
|
120
|
+
Both sections are the **pre-implementation contract** the developer reads before coding; the DS/tokens/quality/coverage/viewport dimensions still apply on top. Verdict: missing map **or** missing Design contract on a node-link input → `FAIL` (unless `BLOCKED_MCP`). The developer (`feature-developer`) must not start UI work until both sections are present, and must bind implementation to the Design contract (see `design-tokens-binding.md`).
|
|
@@ -8,6 +8,9 @@ Concrete versions come **from `package.json` and configs of the target repositor
|
|
|
8
8
|
- `app/tsconfig.json`: `paths: { "@/*": ["./src/*"] }` (`baseUrl` may be absent with TS ≥5 / `moduleResolution: bundler` — check the file, do not add it blindly).
|
|
9
9
|
- **Requirement:** `@/*` instead of relative imports that climb the tree.
|
|
10
10
|
- **Router mode:** detect from the repo before adding routes — App Router (`app/src/app/**`, `page.tsx`) vs Pages Router (`app/src/pages/**`, `_app.tsx`). Do **not** assume App Router; follow the mode already in use (`next-app-router.md`, `navigation-router-stack.md`).
|
|
11
|
+
- **Deployment model:** read `output` in `next.config.*`. With `output: 'export'` the app is a static SPA — no server runtime, no API routes / middleware / SSR (`next-static-export.md`).
|
|
12
|
+
- **Consumer context:** when `.ai/context/**` exists, read it for the repo's compressed architecture, domain glossary, and test-placement conventions before deriving them yourself.
|
|
13
|
+
- **Env access:** read `NEXT_PUBLIC_*` through the repo's config module (e.g. `@/config`); new public keys must also be listed in `next.config.*` `env`. Never read `process.env` inside components.
|
|
11
14
|
|
|
12
15
|
# Architectural layers
|
|
13
16
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Static export (Next.js `output: 'export'`)
|
|
2
|
+
|
|
3
|
+
Detect the deployment model **before** writing data-fetching or routing code: read `output` in `next.config.*`. With `output: 'export'` the build produces a static SPA — there is no server runtime at request time.
|
|
4
|
+
|
|
5
|
+
## Unavailable
|
|
6
|
+
|
|
7
|
+
- `getServerSideProps`, `getInitialProps`.
|
|
8
|
+
- API routes (`pages/api/**`, App Router `route.ts`) and `middleware.ts`.
|
|
9
|
+
- Server Actions; server `cookies()` / `headers()`.
|
|
10
|
+
- ISR / `revalidate` / `dynamic = 'force-dynamic'`.
|
|
11
|
+
- The image optimizer when `images.unoptimized: true` (`next/image` `loader` / `sizes` buy nothing).
|
|
12
|
+
|
|
13
|
+
## Available / preferred
|
|
14
|
+
|
|
15
|
+
- `getStaticProps` / `getStaticPaths` run at **build** time only.
|
|
16
|
+
- Runtime data comes from the browser: store thunk → `@/api` service (`store-rtk.md`, `api-services.md`).
|
|
17
|
+
- Auth / session are enforced by the BFF plus a client route guard — not by a Next server.
|
|
18
|
+
- `basePath` / `assetPrefix`: build local links and asset URLs from those values; never hardcode `/`.
|
|
19
|
+
|
|
20
|
+
## Agent requirement
|
|
21
|
+
|
|
22
|
+
- Copy the data-fetch and navigation pattern from a sibling page under `app/src/pages/**`; do not port SSR/RSC examples from docs or blogs into a static-export repo.
|
|
23
|
+
- If a requested feature implies a server runtime, mark it **N/A — static export** and propose the client/BFF alternative instead of writing server code.
|
|
24
|
+
|
|
25
|
+
## Related
|
|
26
|
+
|
|
27
|
+
- `react-next-anti-hallucination.md` — phantom-import banlist for this deployment model.
|
|
28
|
+
- `navigation-router-stack.md` — Pages Router vs App Router.
|
|
@@ -10,6 +10,10 @@ Exceptions: documentation edits outside `app/`, CI configs, `.mavis/rules/**`, i
|
|
|
10
10
|
|
|
11
11
|
**Pipeline exception:** if the task runs through the agent team and the next step is `build-verifier`, the developer may limit lint/type-check to **changed files**; full run is **`build-verifier`’s** responsibility. In single-agent mode (no pipeline) — always a full run.
|
|
12
12
|
|
|
13
|
+
**Secondary packages:** when the repo has more than one package with a manifest (e.g. `app/` + `storybook/`), run each package's own scripts from its own directory. Do not conflate runners (app unit runner vs catalog runner).
|
|
14
|
+
|
|
15
|
+
**Run the package script, not a bare runner:** prefer `yarn lint:js` / `yarn test` over `npx eslint` / `npx jest`. Scripts carry env (`TZ`), coverage, and reporters that CI depends on; a bare runner can diverge from CI.
|
|
16
|
+
|
|
13
17
|
## Required commands
|
|
14
18
|
|
|
15
19
|
Working directory — **`app/`**. Package manager — **`package-manager.md`**.
|
|
@@ -114,5 +114,6 @@ Block handoff via `open_questions` until fixed:
|
|
|
114
114
|
## Stack notes
|
|
115
115
|
|
|
116
116
|
- Author via skill `spec-authoring`; templates from package assets / consumer `docs/specs/_templates/`.
|
|
117
|
+
- **Glossary & contrast (mandatory):** before authoring, read the repo glossary (`openspec/config.yaml` `context:`, `.ai/context/**`, domain README). Each generated spec maps product terms to code symbols + record types and adds one **contrast** requirement/scenario against the nearest confusable symbol. Declare **compliance impact** (None | Affected) for any spec touching medical/personal data or analytics.
|
|
117
118
|
- Field semantics match discovery stem (`routes` = URL paths; `e2e` = Playwright).
|
|
118
119
|
- Requestable — not always-on / session-start.
|
|
@@ -58,5 +58,6 @@ Same-changeset INDEX updates, frontmatter v1, required body headings, templates,
|
|
|
58
58
|
## Stack notes
|
|
59
59
|
|
|
60
60
|
- `routes`: app URL paths. `ui` / `store`: presentation + RTK/store paths (e.g. `app/src/ui/pages/...`). `e2e`: Playwright paths under `app/__tests__/e2e/**` (or repo equivalent).
|
|
61
|
+
- **Domain glossary & contrast:** read the repo glossary first (e.g. `openspec/config.yaml` `context:`). Every spec that names a domain states a **term → code symbol + record type** mapping and includes one **contrast** scenario naming the nearest confusable symbol/page (e.g. an in-person-consultation spec contrasts `OfflineConsultation*` with `OnlineConsultationPage`). This prevents the highest-frequency domain-confusion bug in these repos.
|
|
61
62
|
- Dogfood example (emedcard-web AnalysisPage): `docs/specs/domains/analysis/analysis-page.md`.
|
|
62
63
|
- Requestable / `docs/specs/**` globs — not always-on / session-start.
|
|
@@ -4,6 +4,13 @@ These rows **OVERRIDE** generation for the listed patterns. Before inventing an
|
|
|
4
4
|
|
|
5
5
|
App Router–specific rows (async `params` / `cookies()`, invented auth helpers, etc.) stay in **`next-app-router.md`**. This rule covers broader React / RTK / Next phantom imports and boundary mistakes across `app/**`.
|
|
6
6
|
|
|
7
|
+
## 0. Installed Next ships its own docs (read them first)
|
|
8
|
+
|
|
9
|
+
The installed `next` may bundle version-pinned agent docs and a managed `AGENTS.md` block written by `next dev`:
|
|
10
|
+
|
|
11
|
+
- Docs: `node_modules/next/dist/docs/` (`01-app`, `02-pages`, `03-architecture`, …). Prefer these over blog posts and over training data for framework APIs — they match the installed major.
|
|
12
|
+
- Managed block: `<!-- BEGIN:nextjs-agent-rules -->` in `AGENTS.md` (see `node_modules/next/dist/server/lib/generate-agent-files.js`). **Do not delete it** — `next dev` re-creates it; commit it with your change to keep the tree clean.
|
|
13
|
+
|
|
7
14
|
## 1. Phantom / wrong Next imports
|
|
8
15
|
|
|
9
16
|
| ❌ Avoid | ✅ Prefer |
|
|
@@ -49,6 +56,9 @@ App Router–specific rows (async `params` / `cookies()`, invented auth helpers,
|
|
|
49
56
|
| `Router.push` / Pages `withRouter` patterns in `app/` UI | App Router navigation helpers already used in `app/src/ui/**` |
|
|
50
57
|
| Client `fetch` / raw HTTP from UI or `page.tsx` bypassing `@/api` | Services via `@/api` / established loaders (`api-services.md`, `http-client.md`) |
|
|
51
58
|
| Invented `next/link` props that siblings never use (e.g. fake prefetch enums) | Match existing `<Link>` usage; verify against installed Next |
|
|
59
|
+
| `getServerSideProps` / `getInitialProps`, `pages/api/**`, `route.ts`, `middleware.ts` in an `output: 'export'` repo | build-time `getStaticProps` / `getStaticPaths` or client store/thunk fetch (`next-static-export.md`) |
|
|
60
|
+
| Hardcoded `/` root for links / assets when the repo uses `basePath` / `assetPrefix` | Derive from `basePath` / `assetPrefix` |
|
|
61
|
+
| `next/image` `loader` / `sizes` / `quality` expecting the optimizer in a repo with `images.unoptimized: true` | The repo's image primitive; no optimizer assumptions |
|
|
52
62
|
|
|
53
63
|
## 6. Version drift
|
|
54
64
|
|
|
@@ -17,6 +17,24 @@
|
|
|
17
17
|
- No nested ternaries in JSX. For not-ready / empty / error, use an early return or a dedicated `EmptyState` / `ErrorState` component.
|
|
18
18
|
- A `variant` / `mode` flag that renders two unrelated layouts is **two** components, not one.
|
|
19
19
|
|
|
20
|
+
# One component / one styled element — one purpose
|
|
21
|
+
|
|
22
|
+
- Each component **and** each styled element serves exactly **one** purpose. Do not drive two distinct shapes (different padding, slot set, alignment, visual identity) from a `variant` / `is…` flag or branchy styles.
|
|
23
|
+
- Two call sites that need visibly different markup → two named components (or two named styled exports). Share the base via a small primitive (`BaseCard` styled block + two thin extensions), not a universal branchy `Card`.
|
|
24
|
+
- A flag that flips a single non-layout property (`compact`, `disabled`) is fine; a flag that flips layout, slots, or visual identity is not — split it.
|
|
25
|
+
|
|
26
|
+
# CSS-in-JS interpolation functions
|
|
27
|
+
|
|
28
|
+
- Inside `${…}` interpolations of a styled template (`styled.*`), do **not** write an inline arrow (`${({ tone }) => …}` or `${({ gap }) => gap}`). Reference a **module-level function** that takes the styled props: `${getPromoStatusColor}`.
|
|
29
|
+
- Name it `get` + the value (`getColor`, `getGap`, `getPromoStatusColor`); keep the prop type shared between the styled generic and the function parameter.
|
|
30
|
+
- A module-level function is debuggable, type-checkable in isolation, and reusable across sibling styled blocks; an inline arrow compiles to an untestable one-shot.
|
|
31
|
+
|
|
32
|
+
# Async UI states
|
|
33
|
+
|
|
34
|
+
- Loading, empty, error, and load-failed are **distinct** states — render each explicitly; do not collapse them into one spinner/blank branch.
|
|
35
|
+
- Prefer a **per-block skeleton** over a page-level spinner, and reuse the repo's existing primitives (`Skeleton`, `EmptyState`, `ErrorState`, load-failed stub, global `ErrorBoundary`) instead of inventing new ones.
|
|
36
|
+
- Error boundaries are usually mounted once at the app root; add a local boundary only when the repo already does so for that region.
|
|
37
|
+
|
|
20
38
|
## Incorrect
|
|
21
39
|
|
|
22
40
|
```tsx
|
|
@@ -90,7 +108,7 @@ For a reusable component:
|
|
|
90
108
|
- **Forbidden** to import another component's `styles` (`../Other/styles`, `../../styles`). Allowed: `./styles`, shared primitives from `@/ui/components/...` or design-system packages.
|
|
91
109
|
- CSS / `styled` order — Stylelint idiomatic-order: `css-property-order-stylelint.md` (loads on `styles.ts` / `.css`).
|
|
92
110
|
- For visuals use **the style stack and tokens already in the project** (variables, theme, shared classes, design package).
|
|
93
|
-
- **Token binding (Figma → repo):** typography, color, spacing, radius, shadow, and imagery must bind to the project token module and the design system (`@sds/tokens-*` / `@sds/brand-colors` / DS components like `Text variant="…"`, `@sds/icon`,
|
|
111
|
+
- **Token binding (Figma → repo):** typography, color, spacing, radius, shadow, and imagery must bind to the project token module and the design system (`@sds/tokens-*` / `@sds/brand-colors` / DS components like `Text variant="…"`, `@sds/icon`, the project image primitive). Raw `#…` / `rgb(…)` / `px` where a token exists is a finding. The full discipline — including the per-element parity checklist and the developer self-check vs Figma — is in **`design-tokens-binding.md`**. When a Figma reference exists, the `mockup-review.md` `## Design contract` section is the binding table; use it.
|
|
94
112
|
- Avoid:
|
|
95
113
|
- inline styles except simple cases;
|
|
96
114
|
- duplicating styling already covered by shared primitives;
|
|
@@ -62,6 +62,11 @@ Replace **TBD** with real paths after team agreement (or on `ai-rules init` in t
|
|
|
62
62
|
| Types module | **TBD** `app/src/types/<example>/` | domain types, JSDoc, barrel export |
|
|
63
63
|
| Unit tests | **TBD** mirrored under `app/__tests__/unit/<rel>` | `*.spec.ts`, describe/it naming |
|
|
64
64
|
| E2E area | **TBD** `app/__tests__/e2e/<Area>/` | `*.cases.md`, page objects, `_shared/` |
|
|
65
|
+
| Scaffold | **TBD** `app/src/boilerplate/**` | new-component skeleton (copy, then rename) |
|
|
66
|
+
| Global singletons | **TBD** `app/src/ui/components/_singletons/**` | app-root-mounted containers (modals, sync, flags) |
|
|
67
|
+
| Layout / guard | **TBD** `app/src/ui/layouts/**`, `app/src/ui/guards/**` | route wrapping (auth, chrome) |
|
|
68
|
+
| Cross-feature hooks | **TBD** `app/src/core/**` | reusable feature hooks used across pages |
|
|
69
|
+
| Internal slices | **TBD** `app/src/store/slices/_complexSlices/**`, `_utilsSlices/**` | cross-slice orchestration / pure helpers — **no** direct slice→slice imports |
|
|
65
70
|
|
|
66
71
|
## How to use
|
|
67
72
|
|
|
@@ -76,6 +81,6 @@ Post-init gotchas / patterns / decisions: **`.ai.local/conventions.md`** (shared
|
|
|
76
81
|
|
|
77
82
|
## Related rules
|
|
78
83
|
|
|
79
|
-
- `code-quality-and-refactoring.
|
|
80
|
-
- `feature-delivery-workflow.
|
|
84
|
+
- `code-quality-and-refactoring.md` — repeat patterns, no deep-import.
|
|
85
|
+
- `feature-delivery-workflow.md` — layer order.
|
|
81
86
|
- skill `feature-delivery` — end-to-end scenario.
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Coding-time checklist. Full audit → agent `security-reviewer` + skill `code-review`.
|
|
4
4
|
|
|
5
|
+
**Deployment model first.** Read `output` in `next.config.*`. With `output: 'export'` there is **no server tier**: the Server Actions / route handlers / middleware items below are **N/A**. The applicable subset is Secrets & env, XSS, redirects, data exposure, and third-party scripts — and auth/session are enforced by the BFF plus a client route guard.
|
|
6
|
+
|
|
5
7
|
## Secrets and env
|
|
6
8
|
|
|
7
9
|
- Never put service / secret keys in `NEXT_PUBLIC_*` or client bundles (`sk_`, private API keys, DB URLs).
|
|
@@ -14,6 +16,7 @@ Coding-time checklist. Full audit → agent `security-reviewer` + skill `code-re
|
|
|
14
16
|
- Middleware may refresh sessions; do not treat middleware alone as authorization.
|
|
15
17
|
- Prefer httpOnly secure cookies over `localStorage` for tokens when the repo pattern allows.
|
|
16
18
|
- Never trust client-only session claims without a server verify step used by the project.
|
|
19
|
+
- **Static-export / SPA repos:** there is no server session verify — use the repo's client route guard plus BFF-issued httpOnly cookies; do not invent a server verifier.
|
|
17
20
|
|
|
18
21
|
## Mutations and input
|
|
19
22
|
|
|
@@ -39,6 +42,15 @@ Coding-time checklist. Full audit → agent `security-reviewer` + skill `code-re
|
|
|
39
42
|
| Invented auth helpers not in `package.json` / codebase | Copy patterns from existing auth routes |
|
|
40
43
|
| Putting secrets in `NEXT_PUBLIC_*` | Server-only env + server modules |
|
|
41
44
|
| Auth only in middleware | Server `getUser` / session verify in layout/page/action |
|
|
45
|
+
| Server session verifier / Server Action in a static-export repo | Client route guard + BFF-issued httpOnly cookie |
|
|
46
|
+
|
|
47
|
+
## Compliance / personal data (regulated apps)
|
|
48
|
+
|
|
49
|
+
For apps that ship medical or personal data (e.g. GDPR / local data-protection law):
|
|
50
|
+
|
|
51
|
+
- Logs, traces, analytics payloads, error reports, and third-party scripts must **not** carry PD, full record text, raw auth tokens, or full URL search params.
|
|
52
|
+
- Flag every new third-party script and every change to the SSR/cookie payload shape for review.
|
|
53
|
+
- Any change touching PD, medical data, analytics, or third-party scripts declares a **compliance impact** block (None | Affected) in its L2+ artifact; when unclear, default to Affected and block.
|
|
42
54
|
|
|
43
55
|
## Agent requirement
|
|
44
56
|
|
|
@@ -43,6 +43,12 @@
|
|
|
43
43
|
- avoid duplicating entity descriptions in multiple places.
|
|
44
44
|
- **Domain boundary**: in **state**, store domain models; the client **response wrapper** type is acceptable as a thunk **return type** or interim before mapping — without duplicating DTOs in state fields unnecessarily (aligned with `api-services.md` and `http-client.md`).
|
|
45
45
|
|
|
46
|
+
# Middleware and cross-slice orchestration
|
|
47
|
+
|
|
48
|
+
- Cross-cutting side effects (analytics, captcha, file lifecycle, cross-slice sync) live in **listener middleware** at `app/src/store/middleware/<Domain>Middleware/`, registered in the store factory — follow the repo's `prepend`/`concat` order.
|
|
49
|
+
- A slice **must not import another slice**. When two domains must react to each other, orchestrate in middleware or a dedicated `_complexSlices/<Domain>` module (`_utilsSlices` for pure helpers) — never a direct slice→slice import.
|
|
50
|
+
- Prefer a thunk for a single request/response; prefer middleware for reactions that span slices or emit analytics.
|
|
51
|
+
|
|
46
52
|
# Slice testing
|
|
47
53
|
|
|
48
54
|
- For important slices:
|
|
@@ -74,6 +74,7 @@ Bad (no capital after period; or wrong locale for configured ESLint):
|
|
|
74
74
|
## Stack notes
|
|
75
75
|
|
|
76
76
|
- Runner: Playwright (`@playwright/test`).
|
|
77
|
+
- Consolidated QA docs (`docs/qa/**`): when present they are a derived view of the spec + `*.cases.md` (route table, `as-is`/`target` marking, PREFIX map). Cite the source per case and keep them in sync on behaviour change — do not treat them as a second SoT.
|
|
77
78
|
- E2E folder: `app/__tests__/e2e/**`.
|
|
78
79
|
- Placement mirrors source paths: `app/src/<rel>` → `app/__tests__/e2e/<rel>`. Use the deepest folder of the source under test; page-wide scenarios mirror the page folder.
|
|
79
80
|
- Scenario plans: `*.cases.md` files — canonical source of scenarios.
|
|
@@ -83,5 +84,5 @@ Bad (no capital after period; or wrong locale for configured ESLint):
|
|
|
83
84
|
- `data-testid` naming scheme: `{parent}__{element}` — example `history-page__title`, `history-page__recognition-banner__attach-files-button`.
|
|
84
85
|
- `PREFIX-XXX` example: `OrderHistory` → `OH`, `BillingReport` → `BR`; Russian example — `test('OH-001 Отображается список заказов', async ({ page }) => { ... })` <!-- i18n-keep: E5 --> (Order list is displayed).
|
|
85
86
|
- Page object example filename: `OrderHistoryPage.ts` (the seed test pointer lives at `app/__tests__/e2e/seed.spec.ts`).
|
|
86
|
-
- Cross-reference: See also **`playwright-agents.
|
|
87
|
+
- Cross-reference: See also **`playwright-agents.md`** for the e2e planner / generator / healer agents.
|
|
87
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.
|
|
@@ -81,6 +81,7 @@ Bad (no capital after period; or wrong locale for configured ESLint):
|
|
|
81
81
|
- `app/src/mocks/**` — shared fixtures and MSW handlers live here (or repo equivalent).
|
|
82
82
|
- Unit-test placement mirrors source paths: `app/src/<rel>` → `app/__tests__/unit/<rel>`. Do not colocate `*.spec.ts(x)` or `*.test.ts(x)` under `app/src/**`.
|
|
83
83
|
- HTTP-client behavior tests live under the mirrored `app/__tests__/unit/lib/clients/**` path (prefer `*.spec.ts`).
|
|
84
|
+
- Prefer the package script over a bare runner (`yarn test`, not `npx jest`): scripts carry env (`TZ`), coverage, and reporters that CI depends on.
|
|
84
85
|
- UI tests live under the mirrored `app/__tests__/unit/ui/**` path. Import the source under test through the `@/` alias.
|
|
85
86
|
- `## 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.
|
|
86
87
|
|
|
@@ -2,16 +2,15 @@
|
|
|
2
2
|
"slug": "example-feature-with-ux-no-figma",
|
|
3
3
|
"intent": "feature",
|
|
4
4
|
"profile": "standard",
|
|
5
|
-
"summary": "
|
|
5
|
+
"summary": "UI-scope feature with required-signal UX and no Figma URL — task-analyst loads skill ux-design; UI scope forces mockup-reviewer (reviewed against AC / ux-design.md)",
|
|
6
6
|
"steps": [
|
|
7
7
|
{ "agent": "task-analyst", "label": "Clarify, UX design, decompose" },
|
|
8
|
+
{ "agent": "mockup-reviewer", "label": "UI review vs AC / ux-design" },
|
|
8
9
|
{ "agent": "feature-developer", "label": "Implement" },
|
|
9
10
|
{ "agent": "build-verifier", "label": "Validation gate", "model": "cheap" },
|
|
10
11
|
{ "agent": "code-reviewer", "label": "Code review", "model": "cheap" }
|
|
11
12
|
],
|
|
12
13
|
"humanGates": ["after:task-analyst"],
|
|
13
14
|
"autoChain": true,
|
|
14
|
-
"skipped": [
|
|
15
|
-
{ "agent": "mockup-reviewer", "reason": "No figma.com URL; analyst skill ux-design covers behavioral UX" }
|
|
16
|
-
]
|
|
15
|
+
"skipped": []
|
|
17
16
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"platform": "mavis",
|
|
4
4
|
"stack": "nuxt",
|
|
5
5
|
"semanticSource": "cursor/nuxt",
|
|
6
|
-
"sourceRevision": "
|
|
6
|
+
"sourceRevision": "db4f3a8b5bfad0c5c168cd116ac20e482be3ad18886e250dcc74c59061363706",
|
|
7
7
|
"entries": [
|
|
8
8
|
{
|
|
9
9
|
"source": "AGENTS.md",
|
|
@@ -68,8 +68,8 @@ Shipped browser split: Playwright MCP for e2e specs/selectors; Chrome DevTools M
|
|
|
68
68
|
|
|
69
69
|
## Artifact contract
|
|
70
70
|
|
|
71
|
-
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest
|
|
72
|
-
- **Owned outputs:** `a11y-review.md`; upsert only the manifest
|
|
71
|
+
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, implementation or UI diff scope, and prior review artifacts when present.
|
|
72
|
+
- **Owned outputs:** `a11y-review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `a11y-review`) and preserve all foreign items in `manifest.artifacts[]`.
|
|
73
73
|
- **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `changes_requested`. Bind it to the supplied `attemptId` when present.
|
|
74
74
|
- **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
|
|
75
75
|
|
|
@@ -66,8 +66,8 @@ For feature-developer before or during implementation.
|
|
|
66
66
|
|
|
67
67
|
## Artifact contract
|
|
68
68
|
|
|
69
|
-
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest
|
|
70
|
-
- **Owned outputs:** `api-contract-review.md`; upsert only the manifest
|
|
69
|
+
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, architecture when present, and changed types/API/mocks against the contract docs.
|
|
70
|
+
- **Owned outputs:** `api-contract-review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `api-contract-review`) and preserve all foreign items in `manifest.artifacts[]`.
|
|
71
71
|
- **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `changes_requested`. Bind it to the supplied `attemptId` when present.
|
|
72
72
|
- **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
|
|
73
73
|
|
|
@@ -111,7 +111,7 @@ Do not fix code — report only. Do not advance to code-reviewer until PASS.
|
|
|
111
111
|
|
|
112
112
|
## Artifact contract
|
|
113
113
|
|
|
114
|
-
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest
|
|
115
|
-
- **Owned outputs:** `validation-report.md`; upsert only the manifest
|
|
114
|
+
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, implementation evidence, pipeline scope, and changed files.
|
|
115
|
+
- **Owned outputs:** `validation-report.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `validation`) and preserve all foreign items in `manifest.artifacts[]`.
|
|
116
116
|
- **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `validation_failed`. Bind it to the supplied `attemptId` when present.
|
|
117
117
|
- **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
|
|
@@ -84,8 +84,8 @@ If a Sentry/Datadog (or similar) MCP is ready and the task is a production error
|
|
|
84
84
|
|
|
85
85
|
## Artifact contract
|
|
86
86
|
|
|
87
|
-
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest
|
|
88
|
-
- **Owned outputs:** `ci-report.md` plus any minimal fix paths; upsert only the manifest
|
|
87
|
+
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition when present, failing check context, and prior validation/debug artifacts.
|
|
88
|
+
- **Owned outputs:** `ci-report.md` plus any minimal fix paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `ci`) and preserve all foreign items in `manifest.artifacts[]`.
|
|
89
89
|
- **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
|
|
90
90
|
- **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
|
|
91
91
|
|
|
@@ -74,7 +74,7 @@ Do not mix this output with retrospective facilitation — keep review and retro
|
|
|
74
74
|
|
|
75
75
|
## Artifact contract
|
|
76
76
|
|
|
77
|
-
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest
|
|
78
|
-
- **Owned outputs:** `review.md`; upsert only the manifest
|
|
77
|
+
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition, implementation, validation evidence, and the scoped git diff.
|
|
78
|
+
- **Owned outputs:** `review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `review`) and preserve all foreign items in `manifest.artifacts[]`.
|
|
79
79
|
- **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `changes_requested`. Bind it to the supplied `attemptId` when present.
|
|
80
80
|
- **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
|
|
@@ -91,8 +91,8 @@ If a Sentry/Datadog (or similar) MCP is ready and the task is a production error
|
|
|
91
91
|
|
|
92
92
|
## Artifact contract
|
|
93
93
|
|
|
94
|
-
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest
|
|
95
|
-
- **Owned outputs:** `debug-report.md` plus any minimal fix paths; upsert only the manifest
|
|
94
|
+
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition when present, failing evidence, and related prior artifacts.
|
|
95
|
+
- **Owned outputs:** `debug-report.md` plus any minimal fix paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `debug`) and preserve all foreign items in `manifest.artifacts[]`.
|
|
96
96
|
- **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
|
|
97
97
|
- **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
|
|
98
98
|
|
|
@@ -129,7 +129,7 @@ Shipped browser split: Playwright MCP for e2e specs/selectors; Chrome DevTools M
|
|
|
129
129
|
|
|
130
130
|
## Artifact contract
|
|
131
131
|
|
|
132
|
-
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest
|
|
133
|
-
- **Owned outputs:** `implementation.md` plus changed implementation/test paths; upsert only the manifest
|
|
132
|
+
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for `brief.md`, `decomposition.md`, current scope, and applicable prior findings.
|
|
133
|
+
- **Owned outputs:** `implementation.md` plus changed implementation/test paths; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `implementation`) and preserve all foreign items in `manifest.artifacts[]`.
|
|
134
134
|
- **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
|
|
135
135
|
- **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
|
|
@@ -72,8 +72,8 @@ Load requestable rule `mcp-usage` when verifying third-party library APIs (Conte
|
|
|
72
72
|
|
|
73
73
|
## Artifact contract
|
|
74
74
|
|
|
75
|
-
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest
|
|
76
|
-
- **Owned outputs:** `migration-plan.md`; upsert only the manifest
|
|
75
|
+
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition and stack/version context from the repo.
|
|
76
|
+
- **Owned outputs:** `migration-plan.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `migration-plan`) and preserve all foreign items in `manifest.artifacts[]`.
|
|
77
77
|
- **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
|
|
78
78
|
- **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
|
|
79
79
|
|
|
@@ -62,8 +62,8 @@ Standalone FAIL must **not** set `changes_requested`. Embedded FAIL is a FAIL-on
|
|
|
62
62
|
|
|
63
63
|
## Artifact contract
|
|
64
64
|
|
|
65
|
-
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest
|
|
66
|
-
- **Owned outputs:** `mockup-review.md`; upsert only the manifest
|
|
65
|
+
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for routing + analysis when present (standalone may have only the prompt + URL).
|
|
66
|
+
- **Owned outputs:** `mockup-review.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `mockup-review`) and preserve all foreign items in `manifest.artifacts[]`.
|
|
67
67
|
- **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed`, `changes_requested`, or `blocked` per the table above. Bind it to the supplied `attemptId` when present.
|
|
68
68
|
- **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
|
|
69
69
|
|
|
@@ -132,8 +132,8 @@ If `scope` carries multiple phases (e.g. `openspec:<change-id>:propose+apply`),
|
|
|
132
132
|
|
|
133
133
|
## Artifact contract
|
|
134
134
|
|
|
135
|
-
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest
|
|
136
|
-
- **Owned outputs:** `openspec/changes/<change-id>/**` (proposal.md, design.md, tasks.md, .openspec.yaml, specs/<capability>/spec.md delta) plus the team slot `openspec-change.md` in `.ai.local/team/tasks/<slug>/` when the orchestrator asks for a summary handoff. Preserve all foreign
|
|
135
|
+
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief/decomposition and available architecture/migration/review artifacts.
|
|
136
|
+
- **Owned outputs:** `openspec/changes/<change-id>/**` (proposal.md, design.md, tasks.md, .openspec.yaml, specs/<capability>/spec.md delta) plus the team slot `openspec-change.md` in `.ai.local/team/tasks/<slug>/` when the orchestrator asks for a summary handoff. Preserve all foreign items in `manifest.artifacts[]`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `openspec-change`).
|
|
137
137
|
- **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths under `openspec/changes/<change-id>/**`, attach `openspec validate <change-id> --type change --strict` exit code + deltas-only summary, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
|
|
138
138
|
- **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
|
|
139
139
|
|
|
@@ -71,8 +71,8 @@ If Chrome DevTools MCP is ready and the app is running, use it for console/netwo
|
|
|
71
71
|
|
|
72
72
|
## Artifact contract
|
|
73
73
|
|
|
74
|
-
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest
|
|
75
|
-
- **Owned outputs:** `perf-report.md`; upsert only the manifest
|
|
74
|
+
- **Authoritative inputs:** read `.ai.local/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the items in `manifest.artifacts[]` for brief when present and the scoped git diff / routes under audit.
|
|
75
|
+
- **Owned outputs:** `perf-report.md`; upsert only the entry in `manifest.artifacts[]` assigned by handoff (`artifactOutputId`; fallback `perf-report`) and preserve all foreign items in `manifest.artifacts[]`.
|
|
76
76
|
- **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
|
|
77
77
|
- **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
|
|
78
78
|
|