@bonesofspring/ai-rules 0.2.16 → 0.2.18
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 +41 -0
- package/README.md +19 -2
- package/bin/cli.js +39 -0
- package/package.json +3 -1
- package/presets/_shared/README.md +3 -3
- package/presets/_shared/assets/docs-specs/INDEX.md +9 -0
- package/presets/_shared/assets/docs-specs/_templates/feature.md +32 -0
- package/presets/_shared/assets/docs-specs/_templates/page.md +47 -0
- package/presets/_shared/assets/docs-specs/schemas/frontmatter-v1.schema.json +22 -0
- package/presets/_shared/core/agent-team/agent-artifact-contracts.md +3 -0
- package/presets/_shared/core/agent-team/agent-team-orchestrator.md +4 -4
- package/presets/_shared/core/architecture/feature-delivery-workflow.md +1 -1
- package/presets/_shared/core/architecture/product-specs-authoring.md +107 -0
- package/presets/_shared/core/architecture/product-specs.md +49 -0
- package/presets/_shared/core/meta/preset-no-cross-stack-leakage.md +4 -2
- package/presets/_shared/core/review/mockup-review.md +105 -0
- package/presets/_shared/core/review/ux-design.md +97 -0
- package/presets/claude/android-kotlin/agents/README.md +2 -2
- package/presets/claude/android-kotlin/agents/build-verifier.md +9 -0
- package/presets/claude/android-kotlin/agents/code-reviewer.md +2 -0
- package/presets/claude/android-kotlin/agents/feature-developer.md +13 -0
- package/presets/claude/android-kotlin/agents/mockup-reviewer.md +59 -0
- package/presets/claude/android-kotlin/agents/task-analyst.md +37 -1
- package/presets/claude/android-kotlin/agents/task-router.md +22 -2
- package/presets/claude/android-kotlin/agents/tech-writer.md +5 -0
- package/presets/claude/android-kotlin/commands/feature-continue.md +4 -0
- package/presets/claude/android-kotlin/commands/feature-start.md +8 -0
- package/presets/claude/android-kotlin/commands/spec-start.md +29 -0
- package/presets/claude/android-kotlin/commands/task-continue.md +11 -6
- package/presets/claude/android-kotlin/commands/task.md +2 -0
- package/presets/claude/android-kotlin/hooks/chain-team-phases.sh +26 -0
- package/presets/claude/android-kotlin/rules/README.md +4 -0
- package/presets/claude/android-kotlin/rules/architecture/feature-delivery.md +6 -0
- package/presets/claude/android-kotlin/rules/architecture/product-specs-authoring.md +121 -0
- package/presets/claude/android-kotlin/rules/architecture/product-specs.md +62 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-orchestrator.md +8 -3
- package/presets/claude/android-kotlin/rules/tooling-and-review/mockup-review.md +118 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -3
- package/presets/claude/android-kotlin/rules/tooling-and-review/ux-design.md +110 -0
- package/presets/claude/android-kotlin/skills/README.md +2 -0
- package/presets/claude/android-kotlin/skills/feature-delivery/SKILL.md +8 -4
- package/presets/claude/android-kotlin/skills/mockup-review/SKILL.md +29 -0
- package/presets/claude/android-kotlin/skills/spec-authoring/SKILL.md +26 -0
- package/presets/claude/android-kotlin/skills/ux-design/SKILL.md +36 -0
- package/presets/claude/android-kotlin/team/fixtures/artifact-manifest.example.json +25 -0
- package/presets/claude/android-kotlin/team/fixtures/feature-with-figma-url.json +17 -0
- package/presets/claude/android-kotlin/team/fixtures/feature-with-ux-no-figma.json +17 -0
- package/presets/claude/android-kotlin/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
- package/presets/claude/android-kotlin/team/fixtures/mockup-review-standalone.json +14 -0
- package/presets/claude/android-kotlin/team/fixtures/ux-design-standalone.json +15 -0
- package/presets/claude/go/MCP.md +1 -1
- package/presets/claude/go/agents/build-verifier.md +9 -0
- package/presets/claude/go/agents/code-reviewer.md +2 -0
- package/presets/claude/go/agents/feature-developer.md +7 -0
- package/presets/claude/go/agents/task-analyst.md +19 -0
- package/presets/claude/go/agents/task-router.md +12 -1
- package/presets/claude/go/agents/tech-writer.md +5 -0
- package/presets/claude/go/commands/feature-continue.md +1 -0
- package/presets/claude/go/commands/feature-start.md +8 -0
- package/presets/claude/go/commands/spec-start.md +29 -0
- package/presets/claude/go/commands/task-continue.md +6 -3
- package/presets/claude/go/rules/README.md +2 -0
- package/presets/claude/go/rules/architecture/feature-delivery.md +4 -0
- package/presets/claude/go/rules/architecture/product-specs-authoring.md +121 -0
- package/presets/claude/go/rules/architecture/product-specs.md +63 -0
- package/presets/claude/go/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
- package/presets/claude/go/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
- package/presets/claude/go/skills/feature-delivery/SKILL.md +5 -4
- package/presets/claude/go/skills/spec-authoring/SKILL.md +26 -0
- package/presets/claude/ios-swift/agents/README.md +2 -2
- package/presets/claude/ios-swift/agents/build-verifier.md +9 -0
- package/presets/claude/ios-swift/agents/code-reviewer.md +2 -0
- package/presets/claude/ios-swift/agents/feature-developer.md +13 -0
- package/presets/claude/ios-swift/agents/mockup-reviewer.md +59 -0
- package/presets/claude/ios-swift/agents/task-analyst.md +37 -1
- package/presets/claude/ios-swift/agents/task-router.md +22 -2
- package/presets/claude/ios-swift/agents/tech-writer.md +2 -15
- package/presets/claude/ios-swift/commands/feature-continue.md +4 -0
- package/presets/claude/ios-swift/commands/feature-start.md +8 -0
- package/presets/claude/ios-swift/commands/spec-start.md +29 -0
- package/presets/claude/ios-swift/commands/task-continue.md +11 -6
- package/presets/claude/ios-swift/commands/task.md +2 -0
- package/presets/claude/ios-swift/hooks/chain-team-phases.sh +26 -0
- package/presets/claude/ios-swift/rules/README.md +7 -0
- package/presets/claude/ios-swift/rules/architecture/feature-delivery.md +6 -0
- package/presets/claude/ios-swift/rules/architecture/product-specs-authoring.md +121 -0
- package/presets/claude/ios-swift/rules/architecture/product-specs.md +62 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +8 -3
- package/presets/claude/ios-swift/rules/tooling-and-review/mockup-review.md +118 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
- package/presets/claude/ios-swift/rules/tooling-and-review/ux-design.md +110 -0
- package/presets/claude/ios-swift/skills/README.md +2 -0
- package/presets/claude/ios-swift/skills/feature-delivery/SKILL.md +8 -4
- package/presets/claude/ios-swift/skills/mockup-review/SKILL.md +29 -0
- package/presets/claude/ios-swift/skills/spec-authoring/SKILL.md +26 -0
- package/presets/claude/ios-swift/skills/ux-design/SKILL.md +36 -0
- package/presets/claude/ios-swift/team/fixtures/artifact-manifest.example.json +25 -0
- package/presets/claude/ios-swift/team/fixtures/feature-with-figma-url.json +17 -0
- package/presets/claude/ios-swift/team/fixtures/feature-with-ux-no-figma.json +17 -0
- package/presets/claude/ios-swift/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
- package/presets/claude/ios-swift/team/fixtures/mockup-review-standalone.json +14 -0
- package/presets/claude/ios-swift/team/fixtures/ux-design-standalone.json +15 -0
- package/presets/claude/java/agents/build-verifier.md +10 -1
- package/presets/claude/java/agents/code-reviewer.md +2 -0
- package/presets/claude/java/agents/feature-developer.md +7 -0
- package/presets/claude/java/agents/task-analyst.md +19 -0
- package/presets/claude/java/agents/task-router.md +12 -1
- package/presets/claude/java/agents/tech-writer.md +5 -0
- package/presets/claude/java/commands/feature-continue.md +1 -0
- package/presets/claude/java/commands/feature-start.md +8 -0
- package/presets/claude/java/commands/spec-start.md +29 -0
- package/presets/claude/java/commands/task-continue.md +6 -3
- package/presets/claude/java/rules/README.md +2 -0
- package/presets/claude/java/rules/architecture/feature-delivery.md +4 -0
- package/presets/claude/java/rules/architecture/product-specs-authoring.md +121 -0
- package/presets/claude/java/rules/architecture/product-specs.md +63 -0
- package/presets/claude/java/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
- package/presets/claude/java/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
- package/presets/claude/java/skills/feature-delivery/SKILL.md +5 -4
- package/presets/claude/java/skills/spec-authoring/SKILL.md +26 -0
- package/presets/claude/mcp-ts/agents/build-verifier.md +10 -1
- package/presets/claude/mcp-ts/agents/feature-developer.md +7 -0
- package/presets/claude/mcp-ts/agents/task-analyst.md +21 -0
- package/presets/claude/mcp-ts/agents/task-router.md +12 -1
- package/presets/claude/mcp-ts/commands/feature-continue.md +4 -0
- package/presets/claude/mcp-ts/commands/feature-start.md +8 -0
- package/presets/claude/mcp-ts/commands/spec-start.md +29 -0
- package/presets/claude/mcp-ts/commands/task-continue.md +6 -3
- package/presets/claude/mcp-ts/rules/README.md +2 -0
- package/presets/claude/mcp-ts/rules/architecture/feature-delivery.md +4 -0
- package/presets/claude/mcp-ts/rules/architecture/product-specs-authoring.md +121 -0
- package/presets/claude/mcp-ts/rules/architecture/product-specs.md +63 -0
- package/presets/claude/mcp-ts/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
- package/presets/claude/mcp-ts/skills/feature-delivery/SKILL.md +4 -3
- package/presets/claude/mcp-ts/skills/spec-authoring/SKILL.md +26 -0
- package/presets/claude/next/agents/README.md +2 -1
- package/presets/claude/next/agents/build-verifier.md +9 -0
- package/presets/claude/next/agents/code-reviewer.md +1 -0
- package/presets/claude/next/agents/feature-developer.md +13 -0
- package/presets/claude/next/agents/mockup-reviewer.md +59 -0
- package/presets/claude/next/agents/task-analyst.md +37 -1
- package/presets/claude/next/agents/task-router.md +23 -3
- package/presets/claude/next/agents/tech-writer.md +5 -0
- package/presets/claude/next/commands/feature-continue.md +1 -0
- package/presets/claude/next/commands/feature-start.md +8 -0
- package/presets/claude/next/commands/spec-start.md +29 -0
- package/presets/claude/next/commands/task-continue.md +11 -6
- package/presets/claude/next/commands/task.md +2 -0
- package/presets/claude/next/hooks/chain-team-phases.sh +26 -0
- package/presets/claude/next/rules/README.md +8 -1
- package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +6 -0
- package/presets/claude/next/rules/architecture/product-specs-authoring.md +121 -0
- package/presets/claude/next/rules/architecture/product-specs.md +63 -0
- package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +8 -3
- package/presets/claude/next/rules/tooling-and-review/mockup-review.md +118 -0
- package/presets/claude/next/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
- package/presets/claude/next/rules/tooling-and-review/ux-design.md +110 -0
- package/presets/claude/next/skills/README.md +2 -0
- package/presets/claude/next/skills/feature-delivery/SKILL.md +7 -3
- package/presets/claude/next/skills/mockup-review/SKILL.md +29 -0
- package/presets/claude/next/skills/spec-authoring/SKILL.md +26 -0
- package/presets/claude/next/skills/ux-design/SKILL.md +36 -0
- package/presets/claude/next/team/fixtures/artifact-manifest.example.json +20 -2
- package/presets/claude/next/team/fixtures/feature-with-figma-url.json +17 -0
- package/presets/claude/next/team/fixtures/feature-with-ux-no-figma.json +17 -0
- package/presets/claude/next/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
- package/presets/claude/next/team/fixtures/mockup-review-standalone.json +14 -0
- package/presets/claude/next/team/fixtures/ux-design-standalone.json +15 -0
- package/presets/claude/nuxt/agents/README.md +2 -1
- package/presets/claude/nuxt/agents/build-verifier.md +9 -0
- package/presets/claude/nuxt/agents/code-reviewer.md +2 -0
- package/presets/claude/nuxt/agents/feature-developer.md +13 -0
- package/presets/claude/nuxt/agents/mockup-reviewer.md +59 -0
- package/presets/claude/nuxt/agents/task-analyst.md +37 -1
- package/presets/claude/nuxt/agents/task-router.md +23 -3
- package/presets/claude/nuxt/agents/tech-writer.md +5 -0
- package/presets/claude/nuxt/commands/feature-continue.md +4 -0
- package/presets/claude/nuxt/commands/feature-start.md +8 -0
- package/presets/claude/nuxt/commands/spec-start.md +29 -0
- package/presets/claude/nuxt/commands/task-continue.md +11 -6
- package/presets/claude/nuxt/commands/task.md +2 -0
- package/presets/claude/nuxt/hooks/chain-team-phases.sh +26 -0
- package/presets/claude/nuxt/rules/README.md +7 -0
- package/presets/claude/nuxt/rules/architecture/feature-delivery-workflow.md +6 -0
- package/presets/claude/nuxt/rules/architecture/product-specs-authoring.md +121 -0
- package/presets/claude/nuxt/rules/architecture/product-specs.md +62 -0
- package/presets/claude/nuxt/rules/tooling-and-review/agent-team-orchestrator.md +8 -3
- package/presets/claude/nuxt/rules/tooling-and-review/mockup-review.md +118 -0
- package/presets/claude/nuxt/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
- package/presets/claude/nuxt/rules/tooling-and-review/ux-design.md +110 -0
- package/presets/claude/nuxt/skills/README.md +2 -0
- package/presets/claude/nuxt/skills/feature-delivery/SKILL.md +7 -3
- package/presets/claude/nuxt/skills/mockup-review/SKILL.md +29 -0
- package/presets/claude/nuxt/skills/spec-authoring/SKILL.md +26 -0
- package/presets/claude/nuxt/skills/ux-design/SKILL.md +36 -0
- package/presets/claude/nuxt/team/fixtures/artifact-manifest.example.json +20 -2
- package/presets/claude/nuxt/team/fixtures/feature-with-figma-url.json +17 -0
- package/presets/claude/nuxt/team/fixtures/feature-with-ux-no-figma.json +17 -0
- package/presets/claude/nuxt/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
- package/presets/claude/nuxt/team/fixtures/mockup-review-standalone.json +14 -0
- package/presets/claude/nuxt/team/fixtures/ux-design-standalone.json +15 -0
- package/presets/claude/php-hexagonal/agents/build-verifier.md +10 -1
- package/presets/claude/php-hexagonal/agents/code-reviewer.md +2 -0
- package/presets/claude/php-hexagonal/agents/feature-developer.md +7 -0
- package/presets/claude/php-hexagonal/agents/task-analyst.md +19 -0
- package/presets/claude/php-hexagonal/agents/task-router.md +12 -1
- package/presets/claude/php-hexagonal/agents/tech-writer.md +5 -0
- package/presets/claude/php-hexagonal/commands/feature-continue.md +1 -0
- package/presets/claude/php-hexagonal/commands/feature-start.md +8 -0
- package/presets/claude/php-hexagonal/commands/spec-start.md +29 -0
- package/presets/claude/php-hexagonal/commands/task-continue.md +6 -3
- package/presets/claude/php-hexagonal/rules/README.md +2 -0
- package/presets/claude/php-hexagonal/rules/architecture/feature-delivery.md +4 -0
- package/presets/claude/php-hexagonal/rules/architecture/product-specs-authoring.md +121 -0
- package/presets/claude/php-hexagonal/rules/architecture/product-specs.md +63 -0
- package/presets/claude/php-hexagonal/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
- package/presets/claude/php-hexagonal/skills/feature-delivery/SKILL.md +5 -4
- package/presets/claude/php-hexagonal/skills/spec-authoring/SKILL.md +26 -0
- package/presets/claude/php-laravel/agents/build-verifier.md +10 -1
- package/presets/claude/php-laravel/agents/code-reviewer.md +2 -0
- package/presets/claude/php-laravel/agents/feature-developer.md +7 -0
- package/presets/claude/php-laravel/agents/task-analyst.md +19 -0
- package/presets/claude/php-laravel/agents/task-router.md +12 -1
- package/presets/claude/php-laravel/agents/tech-writer.md +5 -0
- package/presets/claude/php-laravel/commands/feature-continue.md +1 -0
- package/presets/claude/php-laravel/commands/feature-start.md +8 -0
- package/presets/claude/php-laravel/commands/spec-start.md +29 -0
- package/presets/claude/php-laravel/commands/task-continue.md +6 -3
- package/presets/claude/php-laravel/rules/README.md +2 -0
- package/presets/claude/php-laravel/rules/architecture/feature-delivery.md +4 -0
- package/presets/claude/php-laravel/rules/architecture/product-specs-authoring.md +121 -0
- package/presets/claude/php-laravel/rules/architecture/product-specs.md +63 -0
- package/presets/claude/php-laravel/rules/tooling-and-review/agent-team-orchestrator.md +2 -0
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
- package/presets/claude/php-laravel/skills/feature-delivery/SKILL.md +5 -4
- package/presets/claude/php-laravel/skills/spec-authoring/SKILL.md +26 -0
- package/presets/claude/svelte/agents/README.md +2 -1
- package/presets/claude/svelte/agents/build-verifier.md +9 -0
- package/presets/claude/svelte/agents/code-reviewer.md +2 -0
- package/presets/claude/svelte/agents/feature-developer.md +13 -0
- package/presets/claude/svelte/agents/mockup-reviewer.md +59 -0
- package/presets/claude/svelte/agents/task-analyst.md +37 -1
- package/presets/claude/svelte/agents/task-router.md +23 -3
- package/presets/claude/svelte/agents/tech-writer.md +5 -0
- package/presets/claude/svelte/commands/feature-continue.md +4 -0
- package/presets/claude/svelte/commands/feature-start.md +8 -0
- package/presets/claude/svelte/commands/spec-start.md +29 -0
- package/presets/claude/svelte/commands/task-continue.md +11 -6
- package/presets/claude/svelte/commands/task.md +2 -0
- package/presets/claude/svelte/hooks/chain-team-phases.sh +26 -0
- package/presets/claude/svelte/rules/README.md +7 -0
- package/presets/claude/svelte/rules/architecture/feature-delivery-workflow.md +6 -0
- package/presets/claude/svelte/rules/architecture/product-specs-authoring.md +121 -0
- package/presets/claude/svelte/rules/architecture/product-specs.md +62 -0
- package/presets/claude/svelte/rules/tooling-and-review/agent-team-orchestrator.md +8 -3
- package/presets/claude/svelte/rules/tooling-and-review/mockup-review.md +118 -0
- package/presets/claude/svelte/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
- package/presets/claude/svelte/rules/tooling-and-review/ux-design.md +110 -0
- package/presets/claude/svelte/skills/README.md +2 -0
- package/presets/claude/svelte/skills/feature-delivery/SKILL.md +7 -3
- package/presets/claude/svelte/skills/mockup-review/SKILL.md +29 -0
- package/presets/claude/svelte/skills/spec-authoring/SKILL.md +26 -0
- package/presets/claude/svelte/skills/ux-design/SKILL.md +36 -0
- package/presets/claude/svelte/team/fixtures/artifact-manifest.example.json +20 -2
- package/presets/claude/svelte/team/fixtures/feature-with-figma-url.json +17 -0
- package/presets/claude/svelte/team/fixtures/feature-with-ux-no-figma.json +17 -0
- package/presets/claude/svelte/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
- package/presets/claude/svelte/team/fixtures/mockup-review-standalone.json +14 -0
- package/presets/claude/svelte/team/fixtures/ux-design-standalone.json +15 -0
- package/presets/cursor/android-kotlin/agents/README.md +2 -2
- package/presets/cursor/android-kotlin/agents/build-verifier.md +9 -0
- package/presets/cursor/android-kotlin/agents/code-reviewer.md +2 -0
- package/presets/cursor/android-kotlin/agents/feature-developer.md +13 -0
- package/presets/cursor/android-kotlin/agents/mockup-reviewer.md +60 -0
- package/presets/cursor/android-kotlin/agents/task-analyst.md +37 -1
- package/presets/cursor/android-kotlin/agents/task-router.md +22 -2
- package/presets/cursor/android-kotlin/agents/tech-writer.md +5 -0
- package/presets/cursor/android-kotlin/commands/feature-continue.md +4 -0
- package/presets/cursor/android-kotlin/commands/feature-start.md +8 -0
- package/presets/cursor/android-kotlin/commands/spec-start.md +29 -0
- package/presets/cursor/android-kotlin/commands/task-continue.md +11 -6
- package/presets/cursor/android-kotlin/commands/task.md +2 -0
- package/presets/cursor/android-kotlin/hooks/chain-team-phases.sh +26 -0
- package/presets/cursor/android-kotlin/rules/README.md +7 -0
- package/presets/cursor/android-kotlin/rules/agent-team-orchestrator.mdc +8 -3
- package/presets/cursor/android-kotlin/rules/feature-delivery-workflow.mdc +6 -0
- package/presets/cursor/android-kotlin/rules/mockup-review.mdc +116 -0
- package/presets/cursor/android-kotlin/rules/preset-no-cross-stack-leakage.mdc +4 -3
- package/presets/cursor/android-kotlin/rules/product-specs-authoring.mdc +123 -0
- package/presets/cursor/android-kotlin/rules/product-specs.mdc +64 -0
- package/presets/cursor/android-kotlin/rules/ux-design.mdc +108 -0
- package/presets/cursor/android-kotlin/skills/README.md +2 -0
- package/presets/cursor/android-kotlin/skills/feature-delivery/SKILL.md +8 -4
- package/presets/cursor/android-kotlin/skills/mockup-review/SKILL.md +29 -0
- package/presets/cursor/android-kotlin/skills/spec-authoring/SKILL.md +26 -0
- package/presets/cursor/android-kotlin/skills/ux-design/SKILL.md +36 -0
- package/presets/cursor/android-kotlin/team/fixtures/artifact-manifest.example.json +25 -0
- package/presets/cursor/android-kotlin/team/fixtures/feature-with-figma-url.json +17 -0
- package/presets/cursor/android-kotlin/team/fixtures/feature-with-ux-no-figma.json +17 -0
- package/presets/cursor/android-kotlin/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
- package/presets/cursor/android-kotlin/team/fixtures/mockup-review-standalone.json +14 -0
- package/presets/cursor/android-kotlin/team/fixtures/ux-design-standalone.json +15 -0
- package/presets/cursor/go/MCP.md +1 -1
- package/presets/cursor/go/agents/build-verifier.md +9 -0
- package/presets/cursor/go/agents/code-reviewer.md +2 -0
- package/presets/cursor/go/agents/feature-developer.md +7 -0
- package/presets/cursor/go/agents/task-analyst.md +19 -0
- package/presets/cursor/go/agents/task-router.md +12 -1
- package/presets/cursor/go/agents/tech-writer.md +5 -0
- package/presets/cursor/go/commands/feature-continue.md +4 -0
- package/presets/cursor/go/commands/feature-start.md +8 -0
- package/presets/cursor/go/commands/spec-start.md +29 -0
- package/presets/cursor/go/commands/task-continue.md +6 -3
- package/presets/cursor/go/rules/README.md +4 -1
- package/presets/cursor/go/rules/agent-team-orchestrator.mdc +2 -0
- package/presets/cursor/go/rules/feature-delivery-workflow.mdc +4 -0
- package/presets/cursor/go/rules/preset-no-cross-stack-leakage.mdc +4 -2
- package/presets/cursor/go/rules/product-specs-authoring.mdc +123 -0
- package/presets/cursor/go/rules/product-specs.mdc +65 -0
- package/presets/cursor/go/skills/feature-delivery/SKILL.md +5 -4
- package/presets/cursor/go/skills/spec-authoring/SKILL.md +26 -0
- package/presets/cursor/ios-swift/agents/README.md +2 -2
- package/presets/cursor/ios-swift/agents/build-verifier.md +9 -0
- package/presets/cursor/ios-swift/agents/code-reviewer.md +2 -0
- package/presets/cursor/ios-swift/agents/feature-developer.md +13 -0
- package/presets/cursor/ios-swift/agents/mockup-reviewer.md +60 -0
- package/presets/cursor/ios-swift/agents/task-analyst.md +37 -1
- package/presets/cursor/ios-swift/agents/task-router.md +22 -2
- package/presets/cursor/ios-swift/agents/tech-writer.md +2 -15
- package/presets/cursor/ios-swift/commands/feature-continue.md +4 -0
- package/presets/cursor/ios-swift/commands/feature-start.md +8 -0
- package/presets/cursor/ios-swift/commands/spec-start.md +29 -0
- package/presets/cursor/ios-swift/commands/task-continue.md +11 -6
- package/presets/cursor/ios-swift/commands/task.md +2 -0
- package/presets/cursor/ios-swift/hooks/chain-team-phases.sh +26 -0
- package/presets/cursor/ios-swift/rules/README.md +8 -1
- package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +8 -3
- package/presets/cursor/ios-swift/rules/feature-delivery-workflow.mdc +6 -0
- package/presets/cursor/ios-swift/rules/mockup-review.mdc +116 -0
- package/presets/cursor/ios-swift/rules/preset-no-cross-stack-leakage.mdc +4 -2
- package/presets/cursor/ios-swift/rules/product-specs-authoring.mdc +123 -0
- package/presets/cursor/ios-swift/rules/product-specs.mdc +64 -0
- package/presets/cursor/ios-swift/rules/ux-design.mdc +108 -0
- package/presets/cursor/ios-swift/skills/README.md +2 -0
- package/presets/cursor/ios-swift/skills/feature-delivery/SKILL.md +8 -4
- package/presets/cursor/ios-swift/skills/mockup-review/SKILL.md +29 -0
- package/presets/cursor/ios-swift/skills/spec-authoring/SKILL.md +26 -0
- package/presets/cursor/ios-swift/skills/ux-design/SKILL.md +36 -0
- package/presets/cursor/ios-swift/team/fixtures/artifact-manifest.example.json +25 -0
- package/presets/cursor/ios-swift/team/fixtures/feature-with-figma-url.json +17 -0
- package/presets/cursor/ios-swift/team/fixtures/feature-with-ux-no-figma.json +17 -0
- package/presets/cursor/ios-swift/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
- package/presets/cursor/ios-swift/team/fixtures/mockup-review-standalone.json +14 -0
- package/presets/cursor/ios-swift/team/fixtures/ux-design-standalone.json +15 -0
- package/presets/cursor/java/agents/build-verifier.md +10 -1
- package/presets/cursor/java/agents/code-reviewer.md +2 -0
- package/presets/cursor/java/agents/feature-developer.md +7 -0
- package/presets/cursor/java/agents/task-analyst.md +19 -0
- package/presets/cursor/java/agents/task-router.md +12 -1
- package/presets/cursor/java/agents/tech-writer.md +5 -0
- package/presets/cursor/java/commands/feature-continue.md +4 -0
- package/presets/cursor/java/commands/feature-start.md +8 -0
- package/presets/cursor/java/commands/spec-start.md +29 -0
- package/presets/cursor/java/commands/task-continue.md +6 -3
- package/presets/cursor/java/rules/README.md +4 -1
- package/presets/cursor/java/rules/agent-team-orchestrator.mdc +2 -0
- package/presets/cursor/java/rules/feature-delivery-workflow.mdc +4 -0
- package/presets/cursor/java/rules/preset-no-cross-stack-leakage.mdc +4 -2
- package/presets/cursor/java/rules/product-specs-authoring.mdc +123 -0
- package/presets/cursor/java/rules/product-specs.mdc +65 -0
- package/presets/cursor/java/skills/feature-delivery/SKILL.md +5 -4
- package/presets/cursor/java/skills/spec-authoring/SKILL.md +26 -0
- package/presets/cursor/mcp-ts/agents/build-verifier.md +10 -1
- package/presets/cursor/mcp-ts/agents/feature-developer.md +7 -0
- package/presets/cursor/mcp-ts/agents/task-analyst.md +21 -0
- package/presets/cursor/mcp-ts/agents/task-router.md +12 -1
- package/presets/cursor/mcp-ts/commands/feature-continue.md +4 -0
- package/presets/cursor/mcp-ts/commands/feature-start.md +8 -0
- package/presets/cursor/mcp-ts/commands/spec-start.md +29 -0
- package/presets/cursor/mcp-ts/commands/task-continue.md +6 -3
- package/presets/cursor/mcp-ts/rules/README.md +2 -0
- package/presets/cursor/mcp-ts/rules/agent-team-orchestrator.mdc +2 -0
- package/presets/cursor/mcp-ts/rules/feature-delivery-workflow.mdc +4 -0
- package/presets/cursor/mcp-ts/rules/preset-no-cross-stack-leakage.mdc +4 -2
- package/presets/cursor/mcp-ts/rules/product-specs-authoring.mdc +123 -0
- package/presets/cursor/mcp-ts/rules/product-specs.mdc +65 -0
- package/presets/cursor/mcp-ts/skills/feature-delivery/SKILL.md +4 -3
- package/presets/cursor/mcp-ts/skills/spec-authoring/SKILL.md +26 -0
- package/presets/cursor/next/agents/README.md +2 -1
- package/presets/cursor/next/agents/build-verifier.md +9 -0
- package/presets/cursor/next/agents/code-reviewer.md +1 -0
- package/presets/cursor/next/agents/feature-developer.md +13 -0
- package/presets/cursor/next/agents/mockup-reviewer.md +60 -0
- package/presets/cursor/next/agents/task-analyst.md +37 -1
- package/presets/cursor/next/agents/task-router.md +23 -3
- package/presets/cursor/next/agents/tech-writer.md +5 -0
- package/presets/cursor/next/commands/feature-continue.md +4 -0
- package/presets/cursor/next/commands/feature-start.md +8 -0
- package/presets/cursor/next/commands/spec-start.md +29 -0
- package/presets/cursor/next/commands/task-continue.md +11 -6
- package/presets/cursor/next/commands/task.md +2 -0
- package/presets/cursor/next/hooks/chain-team-phases.sh +26 -0
- package/presets/cursor/next/rules/README.md +5 -1
- package/presets/cursor/next/rules/agent-team-orchestrator.mdc +8 -3
- package/presets/cursor/next/rules/feature-delivery-workflow.mdc +6 -0
- package/presets/cursor/next/rules/mockup-review.mdc +116 -0
- package/presets/cursor/next/rules/preset-no-cross-stack-leakage.mdc +4 -2
- package/presets/cursor/next/rules/product-specs-authoring.mdc +123 -0
- package/presets/cursor/next/rules/product-specs.mdc +65 -0
- package/presets/cursor/next/rules/ux-design.mdc +108 -0
- package/presets/cursor/next/skills/README.md +2 -0
- package/presets/cursor/next/skills/feature-delivery/SKILL.md +7 -3
- package/presets/cursor/next/skills/mockup-review/SKILL.md +29 -0
- package/presets/cursor/next/skills/spec-authoring/SKILL.md +26 -0
- package/presets/cursor/next/skills/ux-design/SKILL.md +36 -0
- package/presets/cursor/next/team/fixtures/artifact-manifest.example.json +20 -2
- package/presets/cursor/next/team/fixtures/feature-with-figma-url.json +17 -0
- package/presets/cursor/next/team/fixtures/feature-with-ux-no-figma.json +17 -0
- package/presets/cursor/next/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
- package/presets/cursor/next/team/fixtures/mockup-review-standalone.json +14 -0
- package/presets/cursor/next/team/fixtures/ux-design-standalone.json +15 -0
- package/presets/cursor/nuxt/agents/README.md +2 -1
- package/presets/cursor/nuxt/agents/build-verifier.md +9 -0
- package/presets/cursor/nuxt/agents/code-reviewer.md +2 -0
- package/presets/cursor/nuxt/agents/feature-developer.md +13 -0
- package/presets/cursor/nuxt/agents/mockup-reviewer.md +60 -0
- package/presets/cursor/nuxt/agents/task-analyst.md +37 -1
- package/presets/cursor/nuxt/agents/task-router.md +23 -3
- package/presets/cursor/nuxt/agents/tech-writer.md +5 -0
- package/presets/cursor/nuxt/commands/feature-continue.md +4 -0
- package/presets/cursor/nuxt/commands/feature-start.md +8 -0
- package/presets/cursor/nuxt/commands/spec-start.md +29 -0
- package/presets/cursor/nuxt/commands/task-continue.md +11 -6
- package/presets/cursor/nuxt/commands/task.md +2 -0
- package/presets/cursor/nuxt/hooks/chain-team-phases.sh +26 -0
- package/presets/cursor/nuxt/rules/README.md +5 -1
- package/presets/cursor/nuxt/rules/agent-team-orchestrator.mdc +8 -3
- package/presets/cursor/nuxt/rules/feature-delivery-workflow.mdc +6 -0
- package/presets/cursor/nuxt/rules/mockup-review.mdc +116 -0
- package/presets/cursor/nuxt/rules/preset-no-cross-stack-leakage.mdc +4 -2
- package/presets/cursor/nuxt/rules/product-specs-authoring.mdc +123 -0
- package/presets/cursor/nuxt/rules/product-specs.mdc +64 -0
- package/presets/cursor/nuxt/rules/ux-design.mdc +108 -0
- package/presets/cursor/nuxt/skills/README.md +2 -0
- package/presets/cursor/nuxt/skills/feature-delivery/SKILL.md +7 -3
- package/presets/cursor/nuxt/skills/mockup-review/SKILL.md +29 -0
- package/presets/cursor/nuxt/skills/spec-authoring/SKILL.md +26 -0
- package/presets/cursor/nuxt/skills/ux-design/SKILL.md +36 -0
- package/presets/cursor/nuxt/team/fixtures/artifact-manifest.example.json +20 -2
- package/presets/cursor/nuxt/team/fixtures/feature-with-figma-url.json +17 -0
- package/presets/cursor/nuxt/team/fixtures/feature-with-ux-no-figma.json +17 -0
- package/presets/cursor/nuxt/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
- package/presets/cursor/nuxt/team/fixtures/mockup-review-standalone.json +14 -0
- package/presets/cursor/nuxt/team/fixtures/ux-design-standalone.json +15 -0
- package/presets/cursor/php-hexagonal/agents/build-verifier.md +10 -1
- package/presets/cursor/php-hexagonal/agents/code-reviewer.md +2 -0
- package/presets/cursor/php-hexagonal/agents/feature-developer.md +7 -0
- package/presets/cursor/php-hexagonal/agents/task-analyst.md +19 -0
- package/presets/cursor/php-hexagonal/agents/task-router.md +12 -1
- package/presets/cursor/php-hexagonal/agents/tech-writer.md +5 -0
- package/presets/cursor/php-hexagonal/commands/feature-continue.md +4 -0
- package/presets/cursor/php-hexagonal/commands/feature-start.md +8 -0
- package/presets/cursor/php-hexagonal/commands/spec-start.md +29 -0
- package/presets/cursor/php-hexagonal/commands/task-continue.md +6 -3
- package/presets/cursor/php-hexagonal/rules/README.md +4 -1
- package/presets/cursor/php-hexagonal/rules/agent-team-orchestrator.mdc +2 -0
- package/presets/cursor/php-hexagonal/rules/feature-delivery-workflow.mdc +4 -0
- package/presets/cursor/php-hexagonal/rules/preset-no-cross-stack-leakage.mdc +4 -2
- package/presets/cursor/php-hexagonal/rules/product-specs-authoring.mdc +123 -0
- package/presets/cursor/php-hexagonal/rules/product-specs.mdc +65 -0
- package/presets/cursor/php-hexagonal/skills/feature-delivery/SKILL.md +5 -4
- package/presets/cursor/php-hexagonal/skills/spec-authoring/SKILL.md +26 -0
- package/presets/cursor/php-laravel/agents/build-verifier.md +10 -1
- package/presets/cursor/php-laravel/agents/code-reviewer.md +2 -0
- package/presets/cursor/php-laravel/agents/feature-developer.md +7 -0
- package/presets/cursor/php-laravel/agents/task-analyst.md +19 -0
- package/presets/cursor/php-laravel/agents/task-router.md +12 -1
- package/presets/cursor/php-laravel/agents/tech-writer.md +5 -0
- package/presets/cursor/php-laravel/commands/feature-continue.md +4 -0
- package/presets/cursor/php-laravel/commands/feature-start.md +8 -0
- package/presets/cursor/php-laravel/commands/spec-start.md +29 -0
- package/presets/cursor/php-laravel/commands/task-continue.md +6 -3
- package/presets/cursor/php-laravel/rules/README.md +4 -1
- package/presets/cursor/php-laravel/rules/agent-team-orchestrator.mdc +2 -0
- package/presets/cursor/php-laravel/rules/feature-delivery-workflow.mdc +4 -0
- package/presets/cursor/php-laravel/rules/preset-no-cross-stack-leakage.mdc +4 -2
- package/presets/cursor/php-laravel/rules/product-specs-authoring.mdc +123 -0
- package/presets/cursor/php-laravel/rules/product-specs.mdc +65 -0
- package/presets/cursor/php-laravel/skills/feature-delivery/SKILL.md +5 -4
- package/presets/cursor/php-laravel/skills/spec-authoring/SKILL.md +26 -0
- package/presets/cursor/svelte/agents/README.md +2 -1
- package/presets/cursor/svelte/agents/build-verifier.md +9 -0
- package/presets/cursor/svelte/agents/code-reviewer.md +2 -0
- package/presets/cursor/svelte/agents/feature-developer.md +13 -0
- package/presets/cursor/svelte/agents/mockup-reviewer.md +60 -0
- package/presets/cursor/svelte/agents/task-analyst.md +37 -1
- package/presets/cursor/svelte/agents/task-router.md +23 -3
- package/presets/cursor/svelte/agents/tech-writer.md +5 -0
- package/presets/cursor/svelte/commands/feature-continue.md +4 -0
- package/presets/cursor/svelte/commands/feature-start.md +8 -0
- package/presets/cursor/svelte/commands/spec-start.md +29 -0
- package/presets/cursor/svelte/commands/task-continue.md +11 -6
- package/presets/cursor/svelte/commands/task.md +2 -0
- package/presets/cursor/svelte/hooks/chain-team-phases.sh +26 -0
- package/presets/cursor/svelte/rules/README.md +5 -1
- package/presets/cursor/svelte/rules/agent-team-orchestrator.mdc +8 -3
- package/presets/cursor/svelte/rules/feature-delivery-workflow.mdc +6 -0
- package/presets/cursor/svelte/rules/mockup-review.mdc +116 -0
- package/presets/cursor/svelte/rules/preset-no-cross-stack-leakage.mdc +4 -2
- package/presets/cursor/svelte/rules/product-specs-authoring.mdc +123 -0
- package/presets/cursor/svelte/rules/product-specs.mdc +64 -0
- package/presets/cursor/svelte/rules/ux-design.mdc +108 -0
- package/presets/cursor/svelte/skills/README.md +2 -0
- package/presets/cursor/svelte/skills/feature-delivery/SKILL.md +7 -3
- package/presets/cursor/svelte/skills/mockup-review/SKILL.md +29 -0
- package/presets/cursor/svelte/skills/spec-authoring/SKILL.md +26 -0
- package/presets/cursor/svelte/skills/ux-design/SKILL.md +36 -0
- package/presets/cursor/svelte/team/fixtures/artifact-manifest.example.json +20 -2
- package/presets/cursor/svelte/team/fixtures/feature-with-figma-url.json +17 -0
- package/presets/cursor/svelte/team/fixtures/feature-with-ux-no-figma.json +17 -0
- package/presets/cursor/svelte/team/fixtures/mockup-review-fail-embedded-status.json +8 -0
- package/presets/cursor/svelte/team/fixtures/mockup-review-standalone.json +14 -0
- package/presets/cursor/svelte/team/fixtures/ux-design-standalone.json +15 -0
|
@@ -135,6 +135,7 @@ const DEFAULT_ARTIFACT_OUTPUT_IDS = {
|
|
|
135
135
|
'security-reviewer': 'security-review',
|
|
136
136
|
'accessibility-reviewer': 'a11y-review',
|
|
137
137
|
'performance-auditor': 'perf-report',
|
|
138
|
+
'mockup-reviewer': 'mockup-review',
|
|
138
139
|
'api-contract-reviewer': 'api-contract-review',
|
|
139
140
|
'tech-writer': 'documentation',
|
|
140
141
|
};
|
|
@@ -311,6 +312,8 @@ const AGENT_HANDOFF = {
|
|
|
311
312
|
`Invoke accessibility-reviewer (readonly) for slug "${s}". Review UI diff; write a11y-review.md. Upsert the owned terminal receipt in artifact-manifest.json; do not mutate status.json lifecycle fields.`,
|
|
312
313
|
'performance-auditor': (s) =>
|
|
313
314
|
`Invoke performance-auditor (readonly) for slug "${s}". Write perf-report.md. Upsert the owned terminal receipt in artifact-manifest.json; do not mutate status.json lifecycle fields.`,
|
|
315
|
+
'mockup-reviewer': (s) =>
|
|
316
|
+
`Invoke mockup-reviewer (readonly) for slug "${s}". Write mockup-review.md. Load requestable mockup-review skill/rule. Upsert the owned terminal receipt in artifact-manifest.json; do not mutate status.json lifecycle fields.`,
|
|
314
317
|
'code-reviewer': (s) =>
|
|
315
318
|
`Invoke code-reviewer subagent (readonly) for slug "${s}". Review git diff vs brief.md per tooling-and-review/code-review-mr.md. ` +
|
|
316
319
|
`Upsert the owned terminal receipt in artifact-manifest.json; do not mutate status.json lifecycle fields.`,
|
|
@@ -596,6 +599,18 @@ if (currentStep?.parallel && stepAgents.length > 1) {
|
|
|
596
599
|
}
|
|
597
600
|
|
|
598
601
|
const retryReviewer = stepAgents.find((agent) => outcomes[agent]?.outcome === 'changes_requested');
|
|
602
|
+
if (retryReviewer === 'mockup-reviewer') {
|
|
603
|
+
beginHumanGate();
|
|
604
|
+
writeStatus({
|
|
605
|
+
awaitingHumanGate: true,
|
|
606
|
+
state: 'awaiting_approval',
|
|
607
|
+
currentAgent: 'mockup-reviewer',
|
|
608
|
+
parallelCompleted: [],
|
|
609
|
+
parallelOutcomes: {},
|
|
610
|
+
});
|
|
611
|
+
out(`Mockup review FAIL for slug "${slug}". Read mockup-review.md. Resume only via /task-continue. Do not retry feature-developer.`);
|
|
612
|
+
process.exit(0);
|
|
613
|
+
}
|
|
599
614
|
if (retryReviewer) {
|
|
600
615
|
const retryAfterFixStepIndex = idx;
|
|
601
616
|
const predecessor = outcomes[retryReviewer]
|
|
@@ -628,6 +643,17 @@ if (status.state === 'blocked') {
|
|
|
628
643
|
process.exit(0);
|
|
629
644
|
}
|
|
630
645
|
|
|
646
|
+
if (status.state === 'changes_requested' && (completedAgent === 'mockup-reviewer' || status.currentAgent === 'mockup-reviewer')) {
|
|
647
|
+
beginHumanGate();
|
|
648
|
+
writeStatus({
|
|
649
|
+
awaitingHumanGate: true,
|
|
650
|
+
state: 'awaiting_approval',
|
|
651
|
+
currentAgent: 'mockup-reviewer',
|
|
652
|
+
});
|
|
653
|
+
out(`Mockup review FAIL for slug "${slug}". Read mockup-review.md. Resume only via /task-continue. Do not retry feature-developer.`);
|
|
654
|
+
process.exit(0);
|
|
655
|
+
}
|
|
656
|
+
|
|
631
657
|
if (status.state === 'changes_requested') {
|
|
632
658
|
const reviewer = status.currentAgent || finishedAttempt?.entry?.agent;
|
|
633
659
|
if (!reviewer) {
|
|
@@ -38,6 +38,8 @@ In Claude Code all `.md` files under `rules/` are **discovered recursively**. Bo
|
|
|
38
38
|
| `architecture-boundaries-ui.mdc` | `architecture/architecture-boundaries-ui.md` |
|
|
39
39
|
| `feature-delivery-workflow.mdc` | `architecture/feature-delivery-workflow.md` |
|
|
40
40
|
| `reference-features.mdc` | `architecture/reference-features.md` |
|
|
41
|
+
| `product-specs.mdc` | `architecture/product-specs.md` |
|
|
42
|
+
| `product-specs-authoring.mdc` | `architecture/product-specs-authoring.md` | Generate/Bootstrap; requestable |
|
|
41
43
|
| `public-imports.mdc` | `architecture/public-imports.md` |
|
|
42
44
|
| `layer-barrel-exports.mdc` | `architecture/layer-barrel-exports.md` |
|
|
43
45
|
| `api-services.mdc` | `api-and-data/api-services.md` |
|
|
@@ -56,6 +58,8 @@ In Claude Code all `.md` files under `rules/` are **discovered recursively**. Bo
|
|
|
56
58
|
| `agent-team-intake.mdc` | `tooling-and-review/agent-team-intake.md` |
|
|
57
59
|
| `agent-team-orchestrator.mdc` | `tooling-and-review/agent-team-orchestrator.md` |
|
|
58
60
|
| `technical-retro.mdc` | `tooling-and-review/technical-retro.md` |
|
|
61
|
+
| `mockup-review.mdc` | `tooling-and-review/mockup-review.md` |
|
|
62
|
+
| `ux-design.mdc` | `tooling-and-review/ux-design.md` |
|
|
59
63
|
| `preset-layering.mdc` | `tooling-and-review/preset-layering.md` |
|
|
60
64
|
| `preset-twin-sync.mdc` | `tooling-and-review/preset-twin-sync.md` |
|
|
61
65
|
| `preset-token-budget.mdc` | `tooling-and-review/preset-token-budget.md` |
|
|
@@ -73,8 +77,11 @@ In Claude Code all `.md` files under `rules/` are **discovered recursively**. Bo
|
|
|
73
77
|
| `agent-team/agent-team-intake.md` | `agent-team-intake.mdc` | thin alias |
|
|
74
78
|
| `architecture/feature-delivery-workflow.md` | `feature-delivery-workflow.mdc` | Nuxt layer checklist |
|
|
75
79
|
| `architecture/reference-features.template.md` | `reference-features.mdc` | path table |
|
|
80
|
+
| `architecture/product-specs.md` | `product-specs.mdc` | INDEX discovery; Stack notes |
|
|
76
81
|
| `review/code-review-mr.md` | `code-review-mr.mdc` | Nuxt checklist refs |
|
|
77
82
|
| `review/technical-retro.md` | `technical-retro.mdc` | thin alias |
|
|
83
|
+
| `review/mockup-review.md` | `mockup-review.mdc` | Stack notes breakpoints; on-demand |
|
|
84
|
+
| `review/ux-design.md` | `ux-design.mdc` | Stack notes form-factor; on-demand |
|
|
78
85
|
| `meta/preset-*.md` | `preset-*.mdc` | author globs only |
|
|
79
86
|
|
|
80
87
|
## Folders
|
|
@@ -15,6 +15,8 @@ paths:
|
|
|
15
15
|
|
|
16
16
|
## Stack notes
|
|
17
17
|
|
|
18
|
+
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.
|
|
19
|
+
|
|
18
20
|
Typical feature with backend data and shared state. Layer details — `architecture-boundaries.mdc`, `nuxt-app-core.mdc`.
|
|
19
21
|
|
|
20
22
|
## Checklist (work order)
|
|
@@ -87,3 +89,7 @@ flowchart LR
|
|
|
87
89
|
| `tests/e2e/**` | `tests-e2e-structure.mdc`, `playwright-agents.mdc` |
|
|
88
90
|
|
|
89
91
|
When adding or extending a feature, **walk the checklist** and the rules from the table for affected zones.
|
|
92
|
+
|
|
93
|
+
## Related
|
|
94
|
+
|
|
95
|
+
- Product behavior discovery: requestable **`product-specs`** (`docs/specs/INDEX.md`) — do not paste the discovery algorithm here.
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- docs/specs/**/*
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- shared-core: architecture/product-specs-authoring.md -->
|
|
7
|
+
|
|
8
|
+
# Product specs authoring
|
|
9
|
+
|
|
10
|
+
Load when **Generate** or **Bootstrap** is requested (`/spec-start`, router `spec-gen`, brief AC, or analyst author mode). Discovery-only work stays on **`product-specs`**.
|
|
11
|
+
|
|
12
|
+
## Modes
|
|
13
|
+
|
|
14
|
+
1. **Consume** — default; never invent INDEX/specs (see `product-specs`).
|
|
15
|
+
2. **Generate** — create/update page/feature specs + INDEX rows from brief AC, user intent, Figma, or code archaeology. Inventing *product* behavior is forbidden without a stated source (AC / user / UI copy / code-observed behavior labeled `status: draft` or `inferred`).
|
|
16
|
+
3. **Bootstrap** — create `INDEX.md` + `_templates/` copies + first domain spec under greenfield policy.
|
|
17
|
+
|
|
18
|
+
## Greenfield policy
|
|
19
|
+
|
|
20
|
+
Agents **may** create INDEX + first specs **only when** one of:
|
|
21
|
+
|
|
22
|
+
1. User runs `/spec-start` or explicitly asks to bootstrap `docs/specs`.
|
|
23
|
+
2. Brief/AC includes generation or bootstrap language.
|
|
24
|
+
3. Router detects `spec-gen` intent.
|
|
25
|
+
|
|
26
|
+
Otherwise: missing INDEX → optional tree; do **not** invent INDEX merely because discovery loaded.
|
|
27
|
+
|
|
28
|
+
## Conflict precedence
|
|
29
|
+
|
|
30
|
+
1. **Human gate** decision (approved brief/spec edits).
|
|
31
|
+
2. **Current task `brief.md` AC** — if AC contradicts an existing spec, analyst must reconcile (update spec as `draft` or revise AC) before developer; no silent contradiction.
|
|
32
|
+
3. **Approved `docs/specs/**`** — behavior SoT for feature-developer once gate passed.
|
|
33
|
+
4. **Code / `.ai/context`** — discovery evidence only; never override approved spec without gate.
|
|
34
|
+
|
|
35
|
+
Label inferred-from-code lines with `status: draft` until human promotes.
|
|
36
|
+
|
|
37
|
+
## INDEX.md contract (v1)
|
|
38
|
+
|
|
39
|
+
| Column | Required | Notes |
|
|
40
|
+
|--------|----------|-------|
|
|
41
|
+
| `id` | yes | Stable kebab/id matching frontmatter `id` |
|
|
42
|
+
| `type` | yes | `page` \| `feature` |
|
|
43
|
+
| `domain` | yes | Domain folder under `docs/specs/domains/<domain>/` |
|
|
44
|
+
| `title` | yes | Human label |
|
|
45
|
+
| `path` | yes | Repo-relative path to markdown file |
|
|
46
|
+
| `routes` | no | Summary; may duplicate frontmatter |
|
|
47
|
+
| `aliases` | no | Comma-separated PageName / deep-link aliases |
|
|
48
|
+
| `status` | no | `draft` \| `active` \| `deprecated` |
|
|
49
|
+
|
|
50
|
+
Layout: `docs/specs/domains/<domain>/<id>.md` (page) and optional `docs/specs/domains/<domain>/feature.md`. Adding/renaming/removing a linked file **must** update INDEX in the **same change set**.
|
|
51
|
+
|
|
52
|
+
## Frontmatter v1
|
|
53
|
+
|
|
54
|
+
| Field | Type | Required | Notes |
|
|
55
|
+
|-------|------|----------|-------|
|
|
56
|
+
| `id` | string | yes | Unique; matches INDEX |
|
|
57
|
+
| `type` | enum `page` \| `feature` | yes | Backend/MCP: prefer `feature` |
|
|
58
|
+
| `domain` | string | yes | |
|
|
59
|
+
| `routes` | string[] | yes (may be `[]`) | Web: URL paths; mobile: deep links/screens; backend: HTTP paths; mcp-ts: tool names |
|
|
60
|
+
| `ui` | string[] | yes (may be `[]`) | Component/screen refs; empty on backend/mcp |
|
|
61
|
+
| `store` | string[] | yes (may be `[]`) | Slice/module refs; empty when N/A |
|
|
62
|
+
| `api` | string[] | yes (may be `[]`) | Services/ports/tools |
|
|
63
|
+
| `aliases` | string[] | yes (may be `[]`) | |
|
|
64
|
+
| `e2e` | string[] | yes (may be `[]`) | Stack-appropriate test paths |
|
|
65
|
+
| `status` | enum | no | default `draft` on agent generate |
|
|
66
|
+
| `owners` | string[] | no | |
|
|
67
|
+
| `related` | string[] | no | Spec ids or paths |
|
|
68
|
+
|
|
69
|
+
Arrays are **always present** (empty allowed). Do not omit keys for N/A stacks.
|
|
70
|
+
|
|
71
|
+
## Body headings (minimum)
|
|
72
|
+
|
|
73
|
+
**`page` required:** Overview; Entry / actors; Primary flows; States (loading / empty / error / success as applicable — mark N/A explicitly); Acceptance criteria (links or bullets to brief AC / product source).
|
|
74
|
+
|
|
75
|
+
**`page` optional:** Analytics, Accessibility, Edge cases, Related specs.
|
|
76
|
+
|
|
77
|
+
**`feature` required:** Overview; Shared behavior / constraints; Related pages (links).
|
|
78
|
+
|
|
79
|
+
**`feature` optional:** Cross-cutting states, Analytics.
|
|
80
|
+
|
|
81
|
+
Compliant = valid frontmatter + all required headings present (non-empty prose or explicit `N/A`) + INDEX row with resolvable `path`.
|
|
82
|
+
|
|
83
|
+
## Templates & assets
|
|
84
|
+
|
|
85
|
+
**Package SoT:** `packages/ai-rules/presets/_shared/assets/docs-specs/` (`INDEX.md` stub, `_templates/page.md`, `_templates/feature.md`; optional `schemas/frontmatter-v1.schema.json`).
|
|
86
|
+
|
|
87
|
+
**CLI `init`:** when consumer `docs/specs/` is **absent**, copy INDEX stub + `_templates/*` (idempotent; **never overwrite** existing INDEX). When the tree already exists, skip seed entirely.
|
|
88
|
+
|
|
89
|
+
**Skill fallback:** if consumer `_templates/` missing during author mode, copy from package/skill assets before authoring.
|
|
90
|
+
|
|
91
|
+
## Author roles
|
|
92
|
+
|
|
93
|
+
| Role | Responsibility |
|
|
94
|
+
|------|----------------|
|
|
95
|
+
| **task-analyst** | Primary author (Generate + Bootstrap); INDEX bootstrap; brief **Related specs** + **Spec gaps / generation requested**; loads this stem + skill `spec-authoring` |
|
|
96
|
+
| **tech-writer** | Post-delivery sync where present; never invent product behavior without AC/code source |
|
|
97
|
+
| **feature-developer** | Consumes approved specs as SoT; mechanical INDEX/frontmatter fixes only on renames |
|
|
98
|
+
| **mcp-ts** | No tech-writer — author + post-sync via **task-analyst** only |
|
|
99
|
+
|
|
100
|
+
## Self-check before handoff (soft block)
|
|
101
|
+
|
|
102
|
+
Block handoff via `open_questions` until fixed:
|
|
103
|
+
|
|
104
|
+
- [ ] Required frontmatter keys present; arrays always present (may be `[]`)
|
|
105
|
+
- [ ] Required body headings present (or explicit `N/A`)
|
|
106
|
+
- [ ] INDEX row added/updated with resolvable `path` in the **same change set**
|
|
107
|
+
- [ ] Sources cited; invented product behavior absent (or labeled `draft` / `inferred`)
|
|
108
|
+
- [ ] Conflict with brief AC reconciled or flagged
|
|
109
|
+
|
|
110
|
+
## Related
|
|
111
|
+
|
|
112
|
+
- `product-specs` — discovery / consume
|
|
113
|
+
- Skill `spec-authoring` — procedural checklist
|
|
114
|
+
- Optional consumer script `scripts/check-product-specs.sh` (WARN default; `--strict` FAIL)
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
## Stack notes
|
|
118
|
+
|
|
119
|
+
- Author via skill `spec-authoring`; templates from package assets / consumer `docs/specs/_templates/`.
|
|
120
|
+
- Field semantics match discovery stem (`routes` = URL paths; `e2e` = Playwright).
|
|
121
|
+
- Requestable — not always-on / session-start.
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
paths:
|
|
3
|
+
- docs/specs/**/*
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- shared-core: architecture/product-specs.md -->
|
|
7
|
+
|
|
8
|
+
# Product specs (docs/specs)
|
|
9
|
+
|
|
10
|
+
Product page/feature **behavior** specs live under the consumer repo `docs/specs/**`. This stem covers **discovery and presence** — not layer implementation order (see `feature-delivery-workflow`) and not code-structure mirroring (see `reference-features`).
|
|
11
|
+
|
|
12
|
+
**Authoring** (Generate / Bootstrap modes, INDEX/frontmatter v1, body checklist, greenfield, conflict precedence) → load **`product-specs-authoring`** when generation is requested (`/spec-start`, brief AC, or router `spec-gen`).
|
|
13
|
+
|
|
14
|
+
## Modes (summary)
|
|
15
|
+
|
|
16
|
+
| Mode | When | Behavior |
|
|
17
|
+
|------|------|----------|
|
|
18
|
+
| **Consume** (default) | INDEX exists or globs hit `docs/specs/**` without generate intent | Discover via INDEX; soft-fail on miss; **never invent** INDEX/specs |
|
|
19
|
+
| **Generate** | Explicit generate intent / AC / `/spec-start` with existing tree | Create/update page/feature specs + INDEX from stated sources |
|
|
20
|
+
| **Bootstrap** | Explicit bootstrap / `/spec-start` when tree absent | Create INDEX + templates + first domain spec |
|
|
21
|
+
|
|
22
|
+
Greenfield: agents may create INDEX/specs **only** on explicit intent, AC, or `/spec-start`. Missing INDEX alone does **not** authorize inventing the tree.
|
|
23
|
+
|
|
24
|
+
## Presence policy
|
|
25
|
+
|
|
26
|
+
- If `docs/specs/INDEX.md` is **missing** → the tree is **optional** (greenfield OK for *consume*). Continue with code/brief discovery; do not invent an INDEX solely because this stem loaded.
|
|
27
|
+
- If INDEX **exists** → it is the **required discovery path** for work that touches a listed page, feature, route, or alias.
|
|
28
|
+
|
|
29
|
+
## Discovery algorithm
|
|
30
|
+
|
|
31
|
+
1. Always start at `docs/specs/INDEX.md` when present.
|
|
32
|
+
2. Resolve the entry by: route, stable `id`, PageName / alias, or domain folder.
|
|
33
|
+
3. Read the linked page spec (and optional domain `feature.md` when the INDEX or page Related links it).
|
|
34
|
+
|
|
35
|
+
## Miss policy (INDEX present, row or file missing)
|
|
36
|
+
|
|
37
|
+
- Record the gap in `open_questions` / handoff gaps.
|
|
38
|
+
- Fall back to code discovery and consumer `.ai/context/**` when present.
|
|
39
|
+
- **Do not invent** product behavior, states, interactions, or contracts.
|
|
40
|
+
- Hard-fail / block only when the task’s acceptance criteria explicitly require a named spec that is absent (human/gate decision).
|
|
41
|
+
|
|
42
|
+
## Authoring pointer
|
|
43
|
+
|
|
44
|
+
Same-changeset INDEX updates, frontmatter v1, required body headings, templates, and conflict precedence live in **`product-specs-authoring`**. Do not paste the full checklist here.
|
|
45
|
+
|
|
46
|
+
## Non-goals
|
|
47
|
+
|
|
48
|
+
- Not a replacement for `.ai/context/**` (external AI Code Review glossary) or `reference-features` (file-layout mirror).
|
|
49
|
+
- Not Tessl / an external host as primary SoT.
|
|
50
|
+
- No stack filesystem path recipes in this core body — path examples belong only in adapter **Stack notes**.
|
|
51
|
+
|
|
52
|
+
## Related
|
|
53
|
+
|
|
54
|
+
- `product-specs-authoring` — generation modes, contracts, self-check.
|
|
55
|
+
- `reference-features` — code structure mirror (how to layout files), not product behavior.
|
|
56
|
+
- Consumer `.ai/context/**` when present — review/domain glossary; cross-link, do not replace.
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
## Stack notes
|
|
60
|
+
|
|
61
|
+
- `routes`: Nuxt/app URL paths. `ui` / `store`: pages/components + Pinia/store paths. `e2e`: Playwright paths under repo `tests/e2e/**` (or equivalent).
|
|
62
|
+
- Requestable / `docs/specs/**` globs — not always-on / session-start.
|
|
@@ -28,7 +28,7 @@ Work request without `/task` — see **`agent-team-intake.mdc`** (when to sugges
|
|
|
28
28
|
| Agent | App / prod writes | Typical intent |
|
|
29
29
|
|-------|-------------------|----------------|
|
|
30
30
|
| `task-router` | no (team only) | Every `/task` — writes `pipeline.json` |
|
|
31
|
-
| `task-analyst` | no (team only) | feature, refactor, test-only, a11y, docs-only, migration |
|
|
31
|
+
| `task-analyst` | no (team only) | feature, refactor, test-only, a11y, docs-only, migration, ux-design |
|
|
32
32
|
| `solution-architect` | no (team only) | spike, complex cross-layer feature |
|
|
33
33
|
| `migration-specialist` | no (team only) | migration — phased upgrade plan |
|
|
34
34
|
| `api-contract-reviewer` | no (team only) | new/changed backend API contracts |
|
|
@@ -38,6 +38,7 @@ Work request without `/task` — see **`agent-team-intake.mdc`** (when to sugges
|
|
|
38
38
|
| `build-verifier` | no (team only) | lint/typecheck/unit gate after developer; preset-structure when editing presets |
|
|
39
39
|
| `accessibility-reviewer` | no (team only) | a11y, UI-heavy feature |
|
|
40
40
|
| `performance-auditor` | no (team only) | perf-audit, perf-sensitive feature |
|
|
41
|
+
| `mockup-reviewer` | no (team only) | mockup-review, feature/refactor/spike/spec-gen with `figma.com` |
|
|
41
42
|
| `code-reviewer` | no (team only) | most pipelines, review-only |
|
|
42
43
|
| `security-reviewer` | no (team only) | auth, forms, sensitive data |
|
|
43
44
|
| `qa-tester` | tests only | feature, bugfix, test-only |
|
|
@@ -53,6 +54,10 @@ Work request without `/task` — see **`agent-team-intake.mdc`** (when to sugges
|
|
|
53
54
|
|
|
54
55
|
Full prompts: `.cursor/agents/*.md`. Artifact conventions: `.cursor/team/README.md`; schema SoT: **agent-artifact-contracts**.
|
|
55
56
|
|
|
57
|
+
**Behavioral UX:** `task-analyst` loads requestable skill `ux-design` for standalone intent `ux-design` and embedded required-signal / advisory UI AC. No `ux-designer` agent in v1.
|
|
58
|
+
|
|
59
|
+
**Product specs:** When `/task`, `/feature-start`, or `/spec-start` touches pages/features/`docs/specs`: if INDEX exists and no generate intent → instruct next agent to load requestable **`product-specs`** (consume; soft-fail; never invent). If generate/bootstrap/`spec-gen` → load **`product-specs-authoring`** + skill **`spec-authoring`** inside **task-analyst** (not a separate pipeline step); pass created spec paths + INDEX diff in handoff; human gate must approve before feature-developer. No-op if INDEX absent and no author intent.
|
|
60
|
+
|
|
56
61
|
When editing `packages/ai-rules/presets/**`, follow **`preset-pr-checklist.mdc`** (+ twin-sync / layering / token-budget / leakage meta-rules).
|
|
57
62
|
|
|
58
63
|
## Dynamic pipeline
|
|
@@ -145,8 +150,8 @@ On each `subagentStop`, the hook reconciles `status.state` from the completing p
|
|
|
145
150
|
2. Read `pipeline.json` before every subagent invocation.
|
|
146
151
|
3. One role per Task call — **except** parallel steps: multiple Task calls in one message.
|
|
147
152
|
4. **Never** skip `humanGates` without `/task-continue` or explicit user approval.
|
|
148
|
-
5. Persist handoffs to disk and update the producer-owned terminal receipt in `artifact-manifest.json`; Markdown remains detailed evidence.
|
|
149
|
-
6. On `changes_requested` from reviewers: hook sets `retryAfterFix` → developer → same reviewer.
|
|
153
|
+
5. Persist handoffs to disk (including `mockup-review.md` and `ux-design.md` when those producers ran) and update the producer-owned terminal receipt in `artifact-manifest.json`; Markdown remains detailed evidence.
|
|
154
|
+
6. On `changes_requested` from reviewers: hook sets `retryAfterFix` → developer → same reviewer. Exception: embedded `mockup-reviewer` FAIL → `awaiting_approval` / `/task-continue` only — do **not** retry `feature-developer`.
|
|
150
155
|
7. On `validation_failed` from `build-verifier`: hook sets `retryAfterFix: build-verifier` → developer → build-verifier.
|
|
151
156
|
8. When all steps complete, suggest `/technical-retro <slug>`.
|
|
152
157
|
9. If `autoChain: false` in pipeline, do not rely on hook — manual step only.
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Figma mockup review checklist (DS, coverage, viewports). On-demand — load via mockup-reviewer / skill mockup-review.
|
|
3
|
+
paths:
|
|
4
|
+
- .claude/commands/**/*
|
|
5
|
+
- .claude/team/**/*
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- shared-core: review/mockup-review.md -->
|
|
9
|
+
|
|
10
|
+
# Mockup review checklist
|
|
11
|
+
|
|
12
|
+
On-demand reviewer checklist for Figma mockups. **Procedure:** skill `mockup-review`. **Agent:** `mockup-reviewer`. Do not inline this checklist into the agent prompt.
|
|
13
|
+
|
|
14
|
+
Stack-agnostic: no app-source globs, Playwright, or `xcodebuild`. Breakpoint **examples** live in adapter **Stack notes** only — do not FAIL on exact pixels.
|
|
15
|
+
|
|
16
|
+
## When to load
|
|
17
|
+
|
|
18
|
+
- Pipeline step `mockup-reviewer` (standalone intent `mockup-review` or embedded after analyst)
|
|
19
|
+
- Prompt or `brief.md` contains a `figma.com` URL on a UI-capable stack
|
|
20
|
+
- User asks to review a mockup / Figma file (not a code MR)
|
|
21
|
+
|
|
22
|
+
## Inputs
|
|
23
|
+
|
|
24
|
+
1. Task `artifact-manifest.json`, then prompt Figma URL(s); `brief.md` / `decomposition.md` when present
|
|
25
|
+
2. Skill `mockup-review` + this rule
|
|
26
|
+
3. If plugin skills `figma-use` / `figma-design-to-code` are installed: **reference** them for URL parse and MCP invocation only — do not copy their bodies; do not run design-to-code
|
|
27
|
+
|
|
28
|
+
## MCP-first
|
|
29
|
+
|
|
30
|
+
Required when MCP is up: `get_metadata`, `get_design_context`, `search_design_system`, `get_variable_defs`, `get_screenshot`. Optional: `get_libraries`, `get_code_connect_map`.
|
|
31
|
+
|
|
32
|
+
**Forbidden:** `use_figma`, `create_new_file`, `generate_*`, `weave_*`, `upload_assets`, `send_code_connect_mappings`. FigJam URL → `BLOCKED_MCP` / out of scope (do not call `get_figjam` unless the URL is a FigJam board — then still `BLOCKED_MCP`).
|
|
33
|
+
|
|
34
|
+
Cite `fileKey` + node IDs. Screenshots are supporting evidence, not a second reviewer. No screenshot-only path.
|
|
35
|
+
|
|
36
|
+
**Node caps:** ≤12 screen-level frames; `get_metadata` depth ≤3 named-frame levels; ≤3 screenshots (prefer one per small/medium/large). `search_design_system` once; `get_variable_defs` once per file. No node-id on URL: pick top-level frames matching the feature name; if still unbounded → `BLOCKED_MCP` (or `PASS_WITH_NOTES` only if MCP returned a tiny file) — do not dump the whole file.
|
|
37
|
+
|
|
38
|
+
**Degradation:** MCP unavailable or OAuth fail → verdict `BLOCKED_MCP`. Do **not** invent DS compliance claims.
|
|
39
|
+
|
|
40
|
+
## Review dimensions
|
|
41
|
+
|
|
42
|
+
### DS components (AC-4)
|
|
43
|
+
|
|
44
|
+
When an attached library is detectable (`search_design_system` / `get_metadata`): list **library component instances vs custom frames** with file/node references. Flag substitutions where a DS equivalent exists.
|
|
45
|
+
|
|
46
|
+
- Critical DS reimplementation (custom frame where an attached-library component exists) → **FAIL**
|
|
47
|
+
- One-off frame, no DS equivalent; mixed/unpublished library → WARN or notes (`PASS_WITH_NOTES`)
|
|
48
|
+
- No attached library detectable → notes only; do not invent DS claims (`PASS_WITH_NOTES`)
|
|
49
|
+
|
|
50
|
+
Confidence: `high` (MCP library match) / `low` (unpublished or mixed) — prefer `PASS_WITH_NOTES` over FAIL when confidence is low.
|
|
51
|
+
|
|
52
|
+
### Tokens (AC-5)
|
|
53
|
+
|
|
54
|
+
When variables/styles are available (`get_variable_defs`, style metadata): flag fills, strokes, spacing, or typography that use raw values instead of bound variables/styles.
|
|
55
|
+
|
|
56
|
+
- Isolated unbound values → **WARN** (`PASS_WITH_NOTES`)
|
|
57
|
+
- Wholesale token ignore on a library-attached file (systemic; treat as critical DS with AC-4) → **FAIL**
|
|
58
|
+
|
|
59
|
+
### Quality (AC-6)
|
|
60
|
+
|
|
61
|
+
Cover at minimum, each item PASS / WARN / FAIL eligible:
|
|
62
|
+
|
|
63
|
+
- Layer/frame naming hygiene
|
|
64
|
+
- Auto-layout vs absolute positioning for responsive regions
|
|
65
|
+
- Text style usage
|
|
66
|
+
- Component variant/property correctness
|
|
67
|
+
- Detached or orphaned component instances
|
|
68
|
+
|
|
69
|
+
Naming hygiene, minor detached instances, text-style drift → **WARN**. Detached **core** DS component that is a substitution → **FAIL** (same as AC-4 critical). Absolute layout on a region that is the only «responsive» evidence → WARN unless it also fails viewports.
|
|
70
|
+
|
|
71
|
+
### Feature coverage (AC-7)
|
|
72
|
+
|
|
73
|
+
Map **flows → screens/frames**, **actions → interactive elements**, and **states** (empty, loading, error, success, disabled/validation). List explicit **missing** items. Label scope **`inferred`** when only a URL is provided (no brief AC).
|
|
74
|
+
|
|
75
|
+
- Missing **core** flow or primary action from brief AC (or labeled `inferred` primary flow from the URL) → **FAIL**
|
|
76
|
+
- Missing empty/loading/error/success on a form/list called out in AC → **FAIL**
|
|
77
|
+
- Missing secondary states (disabled/validation) not in AC → **WARN**
|
|
78
|
+
|
|
79
|
+
### Viewports (AC-8)
|
|
80
|
+
|
|
81
|
+
Verify **≥3 viewport representations** (small / medium / large) via dedicated frames, Figma viewport presets, or responsive component variants.
|
|
82
|
+
|
|
83
|
+
- Fewer than 3 → **FAIL**
|
|
84
|
+
- 3 exist but sizes ≠ stack example buckets → **WARN** only (no exact pixel enforcement in core)
|
|
85
|
+
|
|
86
|
+
## Severity (v1)
|
|
87
|
+
|
|
88
|
+
Isolated **WARN** never blocks. Overall verdict = worst FAIL > BLOCKED_MCP > PASS_WITH_NOTES > PASS. Multiple WARNs without FAIL → `PASS_WITH_NOTES`, not FAIL.
|
|
89
|
+
|
|
90
|
+
## Report headings
|
|
91
|
+
|
|
92
|
+
Write `mockup-review.md` with these headings (must match the agent template):
|
|
93
|
+
|
|
94
|
+
```markdown
|
|
95
|
+
# Mockup review: <slug>
|
|
96
|
+
|
|
97
|
+
## Verdict
|
|
98
|
+
PASS | PASS_WITH_NOTES | FAIL | BLOCKED_MCP
|
|
99
|
+
|
|
100
|
+
## Scope
|
|
101
|
+
- Figma fileKey / node IDs
|
|
102
|
+
- MCP: available | unavailable (reason)
|
|
103
|
+
- Feature scope source: brief AC | prompt | inferred
|
|
104
|
+
|
|
105
|
+
## Critical (must fix)
|
|
106
|
+
## Warnings (should fix)
|
|
107
|
+
## Suggestions
|
|
108
|
+
## DS compliance (AC-4, AC-5)
|
|
109
|
+
## Quality (AC-6)
|
|
110
|
+
## Feature coverage (AC-7)
|
|
111
|
+
## Viewport matrix (AC-8)
|
|
112
|
+
## AC coverage
|
|
113
|
+
| Criterion | Status | Notes |
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Stack notes
|
|
117
|
+
|
|
118
|
+
Illustrative web buckets (not enforced pixels): ~375 / ~768 / ~1280 mapped to small / medium / large.
|
|
@@ -66,7 +66,8 @@ Shared backend-stack bans (`go`, `java`, `php-hexagonal`, and `php-laravel`):
|
|
|
66
66
|
- `playwright-test-`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
|
|
67
67
|
- Positive yarn recipes `lint:js` / `lint:css`
|
|
68
68
|
- `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
69
|
-
- Agent
|
|
69
|
+
- Agent files `accessibility-reviewer`, `mockup-reviewer`, `ux-designer` (no UI surface)
|
|
70
|
+
- Required `skills/ux-design`, required `rules/ux-design`, or required pipeline handoff stem `ux-design`
|
|
70
71
|
|
|
71
72
|
Required instead: `integration-test-*`; build-verifier / `post-change-test` plus stack tooling — `go-tooling` (`go test`, `go vet`), `java-tooling` (`mvn test` / `./gradlew test`), or `php-tooling` (`php artisan test` / `composer test` / `vendor/bin/phpunit`).
|
|
72
73
|
|
|
@@ -78,7 +79,8 @@ Same UI/mobile bans as backend stacks, plus:
|
|
|
78
79
|
- Positive yarn recipes `lint:js` / `lint:css` as required gates
|
|
79
80
|
- `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
80
81
|
- Go tool commands as required MCP delivery gates: `go test`, `go vet`, `golangci-lint`
|
|
81
|
-
- Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`
|
|
82
|
+
- Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`, `mockup-reviewer`, `ux-designer`
|
|
83
|
+
- Required `skills/ux-design`, required `rules/ux-design`, or required pipeline handoff stem `ux-design`
|
|
82
84
|
|
|
83
85
|
Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`, `post-change-test`); Phase 1 gates `build-verifier` + `security-reviewer`.
|
|
84
86
|
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Behavioral UX design checklist (IA, flows, states). On-demand — load via task-analyst / skill ux-design.
|
|
3
|
+
paths:
|
|
4
|
+
- .claude/commands/**/*
|
|
5
|
+
- .claude/team/**/*
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- shared-core: review/ux-design.md -->
|
|
9
|
+
|
|
10
|
+
# UX design checklist
|
|
11
|
+
|
|
12
|
+
On-demand behavioral UX checklist (IA, named flows, state matrix). **Procedure:** skill `ux-design`. **Producer:** `task-analyst` (not a pipeline agent). Do not inline this checklist into the analyst prompt.
|
|
13
|
+
|
|
14
|
+
Stack-agnostic: no app-source globs, Playwright, or `xcodebuild`. Form-factor **examples** live in adapter **Stack notes** only.
|
|
15
|
+
|
|
16
|
+
## When to load
|
|
17
|
+
|
|
18
|
+
- Standalone `/task` intent `ux-design` (modes `synthesize` | `review`; profile `light`; steps only `task-analyst`)
|
|
19
|
+
- Embedded on a UI-capable stack when **required-signal** or advisory UI AC fires on `feature` / `refactor` / `spike` / `spec-gen`
|
|
20
|
+
- Required-signal (any one): the user asked for UX, **or** AC explicitly require flows/states, **or** intent is `spec-gen` / `/spec-start` for a **page/feature**. Else **advisory** (notes only; skip if no UI surface)
|
|
21
|
+
- **Do not** load for backend-only AC even on a UI stack. Classify `mockup-review` (Figma) before `ux-design` before `review-only`
|
|
22
|
+
|
|
23
|
+
## Inputs
|
|
24
|
+
|
|
25
|
+
1. Task `artifact-manifest.json`, then prompt / `brief.md` / `decomposition.md` when present
|
|
26
|
+
2. Skill `ux-design` + this rule
|
|
27
|
+
3. Approved `docs/specs` only as product-behavior SoT **after** UX synthesis maps via Spec feed — do not write INDEX here
|
|
28
|
+
|
|
29
|
+
## Forbidden Figma MCP
|
|
30
|
+
|
|
31
|
+
Do **not** call Figma MCP. Only `mockup-reviewer` reads Figma. Forbidden by name: `get_metadata`, `get_design_context`, `get_screenshot`, `search_design_system`, `get_variable_defs`, `use_figma`, `create_new_file`, `generate_*`.
|
|
32
|
+
|
|
33
|
+
When `figma.com` is present and required-signal fires, emit a **thin** `ux-design.md` from AC only (IA/flows the mockup must cover; no visual or DS claims). If the user only pasted a URL and AC are visual, the UX file may be omitted; `mockup-review.md` coverage stands.
|
|
34
|
+
|
|
35
|
+
Do **not** write BMAD-style `DESIGN.md` or a second visual spine. One experience artifact: `ux-design.md`.
|
|
36
|
+
|
|
37
|
+
## Modes
|
|
38
|
+
|
|
39
|
+
| Mode | When |
|
|
40
|
+
|------|------|
|
|
41
|
+
| `synthesize` | Design UX from a brief/AC (standalone «разработай UX» / embedded required-signal) | <!-- i18n-keep: E4 -->
|
|
42
|
+
| `review` | Critique a brief/wireframe/description **without** Figma («ревью UX»). Figma + review-not-implement remains intent `mockup-review` | <!-- i18n-keep: E4 -->
|
|
43
|
+
|
|
44
|
+
## Required vs advisory
|
|
45
|
+
|
|
46
|
+
- **Required** when required-signal fires (user-asked-ux / ac-requires-flows-states / spec-gen-page-feature)
|
|
47
|
+
- **Advisory** otherwise (UI AC without those signals). Advisory `INCOMPLETE` → notes only; DoR may complete
|
|
48
|
+
- Skip the skill when there is no UI surface or the prompt is empty of UX-relevant AC
|
|
49
|
+
|
|
50
|
+
## Verdicts
|
|
51
|
+
|
|
52
|
+
`PASS` | `PASS_WITH_NOTES` | `INCOMPLETE`. Never copy the mockup FAIL-only hook (`changes_requested` + do-not-retry-developer). Incomplete UX is an analyst/DoR problem.
|
|
53
|
+
|
|
54
|
+
| Verdict | Required step | Advisory step | Standalone intent `ux-design` |
|
|
55
|
+
|---------|---------------|---------------|-------------------------------|
|
|
56
|
+
| `PASS` / `PASS_WITH_NOTES` | Analysis may complete DoR | Analysis may complete | `completed` |
|
|
57
|
+
| `INCOMPLETE` | DoR **not** met: `open_questions` / blocked analysis; existing `after:task-analyst` gate | Notes only; DoR may complete | `completed` (report-only) |
|
|
58
|
+
|
|
59
|
+
**Block (`INCOMPLETE` as DoR failure) only when the step was required and primary flows *or* the empty/error/loading matrix are missing.** Isolated missing microcopy or optional protagonist names never block.
|
|
60
|
+
|
|
61
|
+
## Surface-closure
|
|
62
|
+
|
|
63
|
+
Each stated need → a surface; each surface → a flow that lands there. If closure fails, list probes under **Open probes** — **do not invent** screens, flows, or copy to fill gaps.
|
|
64
|
+
|
|
65
|
+
## Spec feed
|
|
66
|
+
|
|
67
|
+
Analyst remains the **only** writer of `docs/specs` INDEX and page/feature files. Map `ux-design.md` → templates **after** UX synthesis (UX before `spec-authoring` author mode):
|
|
68
|
+
|
|
69
|
+
| `ux-design.md` heading | Page template | Feature template |
|
|
70
|
+
|------------------------|---------------|------------------|
|
|
71
|
+
| Scope + IA | **Overview** | **Overview** |
|
|
72
|
+
| Entry / actors | **Entry / actors** | — (page-level) |
|
|
73
|
+
| Primary flows | **Primary flows** | **Shared behavior / constraints** when a flow is cross-page |
|
|
74
|
+
| States | **States** (loading/empty/error/success) | **Cross-cutting states** when shared |
|
|
75
|
+
| Interaction notes + microcopy direction | Inform **Acceptance criteria**; leftover → **Edge cases** | Shared constraints |
|
|
76
|
+
| Accessibility floor (behavioral) | Testable AC without pixels; else Edge cases | Shared constraints |
|
|
77
|
+
| Surface-closure probes | Analyst `open_questions` — **do not** invent spec rows | Same |
|
|
78
|
+
|
|
79
|
+
## Manifest
|
|
80
|
+
|
|
81
|
+
When produced, append `ux-design.md` to the **`analysis`** entry `authoritativePaths` and `evidencePaths`. Do **not** add a new default producer row for v1 (`ux-designer` is deferred).
|
|
82
|
+
|
|
83
|
+
## Report headings
|
|
84
|
+
|
|
85
|
+
Write `ux-design.md` with these headings (must match the architecture artifact contract):
|
|
86
|
+
|
|
87
|
+
```markdown
|
|
88
|
+
# UX design: <slug>
|
|
89
|
+
## Mode
|
|
90
|
+
synthesize | review
|
|
91
|
+
## Verdict
|
|
92
|
+
PASS | PASS_WITH_NOTES | INCOMPLETE
|
|
93
|
+
## Scope
|
|
94
|
+
- Form factor: web | ios | android | mixed
|
|
95
|
+
- Figma present: yes | no
|
|
96
|
+
- Required-signal: user-asked-ux | ac-requires-flows-states | spec-gen-page-feature | advisory
|
|
97
|
+
## Information architecture
|
|
98
|
+
## Entry / actors
|
|
99
|
+
## Primary flows
|
|
100
|
+
## States
|
|
101
|
+
## Interaction notes
|
|
102
|
+
## Microcopy direction
|
|
103
|
+
## Accessibility floor (behavioral)
|
|
104
|
+
## Spec feed
|
|
105
|
+
## Open probes
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Stack notes
|
|
109
|
+
|
|
110
|
+
Form-factor **web**: browser chrome, responsive layout, pointer + keyboard. Do not FAIL on exact pixels; name surfaces (page, modal, drawer) as in the product.
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
| Skill | When to use |
|
|
6
6
|
|-------|-------------|
|
|
7
7
|
| `feature-delivery` | End-to-end feature work across types, API, store, UI, tests |
|
|
8
|
+
| `mockup-review` | Figma mockup review: DS, coverage, viewports (standalone or embedded) |
|
|
9
|
+
| `ux-design` | Behavioral UX synthesis/review via task-analyst (standalone or embedded; no Figma MCP) |
|
|
8
10
|
| `code-review` | MR/diff review using project architecture and test standards |
|
|
9
11
|
| `debug-investigation` | Reproducing and fixing bugs with root-cause evidence |
|
|
10
12
|
| `ci-investigation` | Diagnosing and fixing failing CI checks on PRs/branches |
|
|
@@ -6,9 +6,13 @@ description: Delivers Nuxt 3 frontend features end-to-end across domain types, A
|
|
|
6
6
|
# Feature Delivery
|
|
7
7
|
|
|
8
8
|
1. Read task brief, acceptance criteria, and decomposition if present.
|
|
9
|
-
2.
|
|
10
|
-
3.
|
|
11
|
-
4.
|
|
9
|
+
2. If `docs/specs/INDEX.md` exists **or** brief/handoff lists approved generated specs, resolve via **`product-specs`** and treat approved specs as behavior SoT before layer work (soft-fail on miss — do not invent behavior). If generation was requested but not yet approved, stop for human gate — do not implement against draft-only gaps.
|
|
10
|
+
3. Read **`rules/architecture/feature-delivery-workflow.md`** and **`rules/architecture/reference-features.md`** — follow layer order and mirror closest reference feature.
|
|
11
|
+
4. Add or update focused tests for changed behavior.
|
|
12
|
+
5. Validation from repository root: **invoke** **`rules/tooling-and-review/post-change-lint.md`** after code edits (requestable, not session-start — but **must** when code changed). Pipeline: scoped lint OK if next step is `build-verifier`.
|
|
13
|
+
|
|
14
|
+
- If the prompt or brief contains a `figma.com` URL, load requestable skill `mockup-review` and do not start UI work until the mockup-reviewer step is completed or the user continued past FAIL/`BLOCKED_MCP`.
|
|
15
|
+
- When required-signal (user asked UX, AC require flows/states, or spec-gen page/feature) and **no** `figma.com` URL: `ux-design.md` must exist on the analysis manifest entry (verdict not `INCOMPLETE`) before UI work. If missing, **blocked** — hand back to `task-analyst`. Parallel to the mockup gate when Figma exists.
|
|
12
16
|
|
|
13
17
|
## Scope discipline
|
|
14
18
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mockup-review
|
|
3
|
+
description: Reviews a Figma mockup for design-system compliance, feature coverage, and viewport matrix via Figma MCP. Use for standalone mockup-review intent or when a feature/refactor/spike/spec-gen task includes a figma.com URL.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Mockup review
|
|
7
|
+
|
|
8
|
+
Requestable procedure for agent `mockup-reviewer`. Checklist lives in rule `mockup-review` — do not duplicate it here.
|
|
9
|
+
|
|
10
|
+
## When to run
|
|
11
|
+
|
|
12
|
+
- Standalone `/task` intent `mockup-review` (report-only; profile `light`; steps only `mockup-reviewer`).
|
|
13
|
+
- Embedded: `feature` / `refactor` / `spike` / `spec-gen` whose prompt or `brief.md` contains a `figma.com` URL on a UI stack — after `task-analyst` (when present), before architect and developer.
|
|
14
|
+
|
|
15
|
+
## MCP OAuth preflight
|
|
16
|
+
|
|
17
|
+
Confirm Figma MCP is configured (see `MCP.md`). Do not ship secrets. If MCP is down or auth fails, write `mockup-review.md` with verdict `BLOCKED_MCP` and receipt `blocked`. Do not invent DS claims. Embedded skip-forward is `/task-continue` (explicit «proceed without MCP»).
|
|
18
|
+
|
|
19
|
+
## Plugin skills
|
|
20
|
+
|
|
21
|
+
If plugin skills `figma-design-to-code` / `figma-use` are installed, load them for MCP invocation recipes; do not paste their bodies; do not run design-to-code. Preset owns the checklist, agent, and routing; plugin owns MCP recipes.
|
|
22
|
+
|
|
23
|
+
## Load the checklist
|
|
24
|
+
|
|
25
|
+
Load requestable rule `mockup-review` and follow its review dimensions, node caps, and report headings.
|
|
26
|
+
|
|
27
|
+
## Output
|
|
28
|
+
|
|
29
|
+
Write `.claude/team/tasks/<slug>/mockup-review.md` and upsert manifest entry id `mockup-review` (producer `mockup-reviewer`). Receipt mapping is in the agent prompt.
|