@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
|
@@ -28,9 +28,45 @@ Do not invent architecture or persistence stacks — frame “as in the repo”.
|
|
|
28
28
|
|
|
29
29
|
- Optional: Load `design-guidance` (rule stem) when assessing structure, smells, or pattern fit — only when decomposing refactor/architecture tasks (not default).
|
|
30
30
|
|
|
31
|
+
## Product specs (docs/specs)
|
|
32
|
+
|
|
33
|
+
**Consume (default):** When work touches a page/feature/route/alias and `docs/specs/INDEX.md` exists, load **`product-specs`**, resolve the linked page/feature spec, and cite it under **Related specs** in `brief.md`. Soft-fail on miss (`open_questions` + code / `.ai/context` fallback); **never invent** product behavior. If INDEX is absent, treat specs as optional unless author mode applies.
|
|
34
|
+
|
|
35
|
+
**Author mode (Generate / Bootstrap):** When the user runs `/spec-start`, router intent is `spec-gen` / bootstrap, or brief/AC requests generation: load **`product-specs`** + **`product-specs-authoring`** and skill **`spec-authoring`**. You are the **primary author** (INDEX bootstrap included). Follow frontmatter v1 + required headings; update INDEX in the **same change set**; default `status: draft`. Block handoff via `open_questions` until the authoring self-check passes.
|
|
36
|
+
|
|
37
|
+
### Brief sections (when author mode or INDEX exists)
|
|
38
|
+
|
|
39
|
+
Add to `brief.md`:
|
|
40
|
+
|
|
41
|
+
```markdown
|
|
42
|
+
## Related specs
|
|
43
|
+
- path or id (or N/A)
|
|
44
|
+
|
|
45
|
+
## Spec gaps / generation requested
|
|
46
|
+
- [ ] none | generate | bootstrap — sources: …
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
## UX design (behavioral)
|
|
51
|
+
|
|
52
|
+
Load requestable skill **`ux-design`** and rule **`ux-design`** when:
|
|
53
|
+
- standalone router intent `ux-design`, or
|
|
54
|
+
- **required-signal:** the user asked for UX, **or** AC explicitly require flows/states, **or** `spec-gen` / `/spec-start` for a **page/feature**, or
|
|
55
|
+
- advisory UI AC on this UI stack (notes only; skip if no UI surface).
|
|
56
|
+
|
|
57
|
+
**Order:** write `ux-design.md` **before** author mode / skill `spec-authoring` when both apply. You remain the only INDEX writer.
|
|
58
|
+
|
|
59
|
+
Write `.cursor/team/tasks/<slug>/ux-design.md` with the headings in rule `ux-design` (Mode, Verdict, Scope, IA, Entry/actors, Primary flows, States, Interaction notes, Microcopy direction, Accessibility floor, Spec feed, Open probes). Modes: `synthesize` | `review`.
|
|
60
|
+
|
|
61
|
+
**Required vs advisory:** required-signal + missing named primary flows **or** empty/error/loading matrix → DoR not met (`open_questions` / blocked analysis). Isolated missing microcopy never blocks. Advisory `INCOMPLETE` → notes only. Do **not** copy the mockup FAIL-only hook.
|
|
62
|
+
|
|
63
|
+
**Forbidden:** Figma MCP tools (`get_metadata`, `get_design_context`, `get_screenshot`, `search_design_system`, `get_variable_defs`, `use_figma`, `create_new_file`, `generate_*`). When Figma is present and required-signal fires, emit a **thin** `ux-design.md` from AC only (no visual claims). Only `mockup-reviewer` reads Figma.
|
|
64
|
+
|
|
65
|
+
When produced, append `ux-design.md` to this step's **`analysis`** `authoritativePaths` / `evidencePaths`. No new manifest producer row.
|
|
66
|
+
|
|
31
67
|
## Artifact contract
|
|
32
68
|
|
|
33
69
|
- **Authoritative inputs:** read `.cursor/team/tasks/<slug>/artifact-manifest.json` first; consume `pipeline.json`, the manifest routing entry, user-approved decisions, and any authoritative architecture/approval entries.
|
|
34
|
-
- **Owned outputs:** `brief.md` and `decomposition.md
|
|
70
|
+
- **Owned outputs:** `brief.md` and `decomposition.md` (plus `ux-design.md` when produced); upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `analysis`) and preserve all foreign entries.
|
|
35
71
|
- **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed` or `blocked`. Bind it to the supplied `attemptId` when present.
|
|
36
72
|
- **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
|
|
@@ -23,6 +23,8 @@ You are a task router for an **Android Kotlin/Jetpack Compose** agent team. You
|
|
|
23
23
|
| `migration` | “migration”, “upgrade”, “update Android Studio / AGP/Gradle modules” | task-analyst → migration-specialist → feature-developer → build-verifier → code-reviewer |
|
|
24
24
|
| `perf-audit` | “performance”, “Profiler”, “Macrobenchmark”, “launch”, “slow” | performance-auditor |
|
|
25
25
|
| `a11y` | “a11y”, “TalkBack”, “font scale”, “semantics”, “contentDescription”, “accessibility” | task-analyst → feature-developer → build-verifier → accessibility-reviewer → code-reviewer |
|
|
26
|
+
| `mockup-review` | “mockup review”, “check Figma”, “figma review”, mockup + review verb, `figma.com` + review-not-implement | mockup-reviewer |
|
|
27
|
+
| `ux-design` | «разработай UX» (design UX), «спроектируй» (design) flows, “journey”, “IA”, “state matrix”, «ревью UX» (UX review) without Figma | task-analyst | <!-- i18n-keep: E4 -->
|
|
26
28
|
| `review-only` | “review”, “review MR”, “check the diff” | code-reviewer |
|
|
27
29
|
| `test-only` | “cover with tests” (unit+UI, no impl) | task-analyst → qa-tester |
|
|
28
30
|
| `unit-only` | “unit”, “JUnit”, “cover mapper” | unit-test-planner → unit-test-generator, or unit-test-healer |
|
|
@@ -33,10 +35,15 @@ You are a task router for an **Android Kotlin/Jetpack Compose** agent team. You
|
|
|
33
35
|
| `retro` | “retro”, “postmortem” | (orchestrator → `/technical-retro`) |
|
|
34
36
|
|
|
35
37
|
**Never schedule Playwright agents** (`playwright-test-*`). If a next template mentions them, put in `skipped` with reason "Android uses Android instrumentation" and use instrumentation-test trio.
|
|
38
|
+
**Light by intent:** `mockup-review` → only `mockup-reviewer` (`model: "strong"`, never `cheap`). `ux-design` → only `task-analyst` (skill `ux-design`; analyst default model, not `strong`). Classify `mockup-review` **before** `ux-design` **before** `review-only`. A `figma.com` URL with review-not-implement language remains `mockup-review` even if the user said «ревью UX». <!-- i18n-keep: E4 -->
|
|
39
|
+
**Embed UX:** on `feature` / `refactor` / `spike` / `spec-gen` with required-signal or advisory UI AC, instruct **task-analyst** to load skill `ux-design` (no new pipeline step).
|
|
40
|
+
|
|
41
|
+
**Embed `figma.com`:** on `feature` / `refactor` / `spike` / `spec-gen`, insert `mockup-reviewer` after `task-analyst` (when present) and before `solution-architect` and `feature-developer`. Do **not** add static `humanGates: ["after:mockup-reviewer"]` (FAIL-only gate is a hook exception). Never put `mockup-reviewer` in a `parallel: true` step.
|
|
42
|
+
|
|
36
43
|
|
|
37
44
|
## Pipeline profiles
|
|
38
45
|
|
|
39
|
-
`"profile": "full" | "standard" | "light"`. Default: **standard** for feature/refactor/bugfix; **light** for review-only/perf; **full** when cross-layer or UI-test AC.
|
|
46
|
+
`"profile": "full" | "standard" | "light"`. Default: **standard** for feature/refactor/bugfix; **light** for review-only/perf/mockup-review/ux-design; **full** when cross-layer or UI-test AC.
|
|
40
47
|
|
|
41
48
|
**Never skip `build-verifier`** after developer when Kotlin/Android Studio / AGP sources changed.
|
|
42
49
|
|
|
@@ -66,7 +73,7 @@ Keep top-level `profile` and emit this top-level object in every new `pipeline.j
|
|
|
66
73
|
Optional: `"model": "cheap" | "standard" | "strong"`. Same policy as **cursor/next** `task-router.md`:
|
|
67
74
|
|
|
68
75
|
- `light` → `cheap` on all steps (debugger unclear root cause → `strong`)
|
|
69
|
-
- `full` / `spike` / security|perf specialists → `strong` on architect, migration, security, perf steps
|
|
76
|
+
- `full` / `spike` / security|perf|mockup specialists → `strong` on architect, migration, security, perf, and `mockup-reviewer` steps
|
|
70
77
|
- never `strong` on build-verifier / tech-writer / task-router
|
|
71
78
|
- omit on `standard` → agent frontmatter (`fast` / `inherit` / `claude-opus-4-8[effort=high]`)
|
|
72
79
|
|
|
@@ -81,6 +88,8 @@ Fixtures: `.cursor/team/fixtures/` (feature-full, feature-light, bugfix-standard
|
|
|
81
88
|
| unit-only | `["after:unit-test-planner"]` when new plan |
|
|
82
89
|
| e2e-only | `["after:instrumentation-test-planner"]` when new plan |
|
|
83
90
|
| bugfix, review-only, ci-fix | `[]` |
|
|
91
|
+
| mockup-review | `[]` |
|
|
92
|
+
| ux-design | `[]` |
|
|
84
93
|
| spike | `["after:solution-architect"]` |
|
|
85
94
|
|
|
86
95
|
## Output
|
|
@@ -91,6 +100,17 @@ Write `.cursor/team/tasks/<slug>/pipeline.json` and initialize the routing entry
|
|
|
91
100
|
|
|
92
101
|
Intent + steps table + skipped + gates → invoke `steps[0].agent` (unless retro).
|
|
93
102
|
|
|
103
|
+
## Spec generation intents
|
|
104
|
+
|
|
105
|
+
Detect and set routing reasons when the user asks to **generate / bootstrap product specs**, mentions `docs/specs`, or runs `/spec-start`:
|
|
106
|
+
|
|
107
|
+
| Signal | Intent | Steps |
|
|
108
|
+
|--------|--------|-------|
|
|
109
|
+
| `/spec-start`, "bootstrap docs/specs", "generate product spec" | `spec-gen` | task-analyst (**author mode**) → human gate → stop (or continue to feature-developer only if implement-after) |
|
|
110
|
+
| Feature/task with AC "generate specs" / missing INDEX + bootstrap AC | `spec-gen` inside feature profile | task-analyst author mode first; **not** a separate agent step |
|
|
111
|
+
|
|
112
|
+
Do **not** add a dedicated `spec-author` agent. Do not require solution-architect for routine spec authoring.
|
|
113
|
+
|
|
94
114
|
## Runtime initialization
|
|
95
115
|
|
|
96
116
|
Return the routing receipt to the orchestrator. The orchestration runtime/hook exclusively initializes and updates `status.json`, `metrics.json`, attempt identities, and gate lifecycle; the router does not write those shared runtime files.
|
|
@@ -48,6 +48,11 @@ Conventional commit / release note snippet.
|
|
|
48
48
|
|
|
49
49
|
Write the owned terminal receipt described under **Artifact contract**.
|
|
50
50
|
|
|
51
|
+
## Product specs (docs/specs)
|
|
52
|
+
|
|
53
|
+
Post-delivery: when behavior or public docs changed and `docs/specs/` is in play, load **`product-specs`** (+ **`product-specs-authoring`** if updating specs). Sync page/feature specs + INDEX in the **same change set**. **Never invent** product behavior without AC/code source; label inferred lines `status: draft`. Soft-fail on miss; no-op if INDEX absent and sync not requested.
|
|
54
|
+
|
|
55
|
+
|
|
51
56
|
## Artifact contract
|
|
52
57
|
|
|
53
58
|
- **Authoritative inputs:** read `.cursor/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for `brief.md`, `decomposition.md`, and other authoritative prior artifacts for this step.
|
|
@@ -17,3 +17,7 @@ Continue after a human gate. Full logic is in **`task-continue.md`**.
|
|
|
17
17
|
4. The hook continues the chain when `autoChain: true`.
|
|
18
18
|
|
|
19
19
|
See `task-continue.md` for details and the handoff table.
|
|
20
|
+
|
|
21
|
+
## Product specs (docs/specs)
|
|
22
|
+
|
|
23
|
+
When the next agent is **feature-developer** (or other implementer): if `docs/specs/INDEX.md` exists, instruct them to load **`product-specs`** and honor **Related specs** from `brief.md` (behavior SoT). Soft-fail on miss; never invent product behavior. No-op if INDEX is absent.
|
|
@@ -19,11 +19,19 @@ Starts the **analysis phase** without the router. The parent agent acts as orche
|
|
|
19
19
|
6. Invoke subagent **task-analyst** (Task tool) with the full task description and artifact paths.
|
|
20
20
|
7. Wait for the analyst to finish. **Do not invoke developer** at this stage.
|
|
21
21
|
|
|
22
|
+
## Product specs (docs/specs)
|
|
23
|
+
|
|
24
|
+
When invoking **task-analyst**: if `docs/specs/INDEX.md` exists, instruct consume via **`product-specs`** and cite **Related specs**. Soft-fail on miss; never invent behavior.
|
|
25
|
+
|
|
26
|
+
If the user/AC requests generation or bootstrap, or INDEX is missing **with** bootstrap AC / `/spec-start` intent: instruct **author mode** inside the same analyst step — load **`product-specs-authoring`** + skill **`spec-authoring`**. Authoring is **not** a separate pipeline agent. Handoff must list created paths + INDEX diff; human gate must approve generated specs before feature-developer.
|
|
27
|
+
|
|
28
|
+
|
|
22
29
|
## Human gate
|
|
23
30
|
|
|
24
31
|
After the analyst:
|
|
25
32
|
|
|
26
33
|
- Show the user links to `brief.md` and `decomposition.md`.
|
|
34
|
+
- Also ask them to check **Related specs** in `brief.md` when `docs/specs/INDEX.md` exists.
|
|
27
35
|
- Ask them to review and approve or send edits.
|
|
28
36
|
- To continue: `/task-continue <slug>` or `/feature-continue <slug>`.
|
|
29
37
|
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: spec-start
|
|
3
|
+
description: Bootstrap or generate docs/specs (INDEX + page/feature) via task-analyst author mode. Optional docs-only path with human gate.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Spec start — generate / bootstrap product specs
|
|
7
|
+
|
|
8
|
+
Routes intent **`spec-gen`** (or bootstrap) → **task-analyst** in **author mode** → human gate (`after:task-analyst`) → stop, or continue to feature-developer if the user asked to implement after.
|
|
9
|
+
|
|
10
|
+
## What to do
|
|
11
|
+
|
|
12
|
+
1. Extract description from arguments after `/spec-start` (domain, page/feature ids, sources).
|
|
13
|
+
2. Generate a **slug** (kebab-case, ≤48 chars), e.g. `spec-<domain>-<id>`.
|
|
14
|
+
3. Ensure `.cursor/team/tasks/<slug>/` exists (Write artifacts; not Shell mkdir).
|
|
15
|
+
4. Write `.cursor/team/active-task.json` → `{ "slug": "<slug>" }`.
|
|
16
|
+
5. Write minimal `pipeline.json`: task-analyst → (optional stop) → feature-developer only if user asked implement-after. **No separate spec-author agent.**
|
|
17
|
+
6. Invoke **task-analyst** with: author mode; load **`product-specs`** + **`product-specs-authoring`** + skill **`spec-authoring`**; Bootstrap if `docs/specs/` absent, else Generate.
|
|
18
|
+
7. Wait for analyst. **Do not** invoke feature-developer until human gate passes.
|
|
19
|
+
|
|
20
|
+
## Human gate
|
|
21
|
+
|
|
22
|
+
- Show created/updated spec paths and INDEX diff.
|
|
23
|
+
- Ask user to approve drafts (`status: draft` → promote) or send edits.
|
|
24
|
+
- Continue: `/task-continue <slug>` only after approval when implementation follows; otherwise stop after docs.
|
|
25
|
+
|
|
26
|
+
## Notes
|
|
27
|
+
|
|
28
|
+
- Greenfield invent of INDEX is allowed **only** via this command, explicit ask, or AC bootstrap language.
|
|
29
|
+
- mcp-ts: analyst-only author/sync (no tech-writer).
|
|
@@ -32,19 +32,24 @@ printf '%s\n' '{"status":"completed","action":"end_human_gate","activateNext":tr
|
|
|
32
32
|
|
|
33
33
|
3. Re-read `status.json` (and the hook `followup_message`).
|
|
34
34
|
4. Invoke the subagent named in `status.currentAgent` / followup — do **not** advance the pipeline a second time.
|
|
35
|
-
3. **Review `changes_requested`** (not a human gate): set `currentAgent` to `feature-developer` (same index / find developer in steps), `state: in_progress`, then invoke developer. Do **not** call `end_human_gate` unless `activeHumanGateEventId` is set.
|
|
36
|
-
4.
|
|
37
|
-
5.
|
|
35
|
+
3. **Review `changes_requested`** (not a human gate): if `currentAgent` is **`mockup-reviewer`**, this is the FAIL-only mockup gate — do **not** retry `feature-developer`. Read `mockup-review.md` and resume via the human-gate path (`end_human_gate` / `activateNext`). Otherwise: set `currentAgent` to `feature-developer` (same index / find developer in steps), `state: in_progress`, then invoke developer. Do **not** call `end_human_gate` unless `activeHumanGateEventId` is set.
|
|
36
|
+
4. **`blocked` + `currentAgent: mockup-reviewer`** (`BLOCKED_MCP`): skip-forward via the same `end_human_gate`/`activateNext` path (explicit «proceed without MCP»). Do not invent DS claims.
|
|
37
|
+
5. **Other resume**: restore `pipelineIndex` / `currentAgent` from status and invoke that agent.
|
|
38
|
+
6. After the invoked agent completes, `chain-team-phases.sh` on `subagentStop` continues the chain when `autoChain: true`.
|
|
38
39
|
|
|
39
40
|
## Artifacts for handoff
|
|
40
41
|
|
|
41
42
|
| Agent | Read |
|
|
42
43
|
|-------|------|
|
|
43
|
-
| feature-developer | brief.md, decomposition.md, validation-report.md (if retry), review.md (if retry), architecture.md |
|
|
44
|
+
| feature-developer | brief.md (incl. **Related specs**), decomposition.md, ux-design.md (if present), mockup-review.md (if present), validation-report.md (if retry), review.md (if retry), architecture.md; if `docs/specs/INDEX.md` exists → load **`product-specs`** |
|
|
44
45
|
| build-verifier | git diff, decomposition.md |
|
|
45
46
|
| code-reviewer | brief.md, validation-report.md, git diff |
|
|
47
|
+
| mockup-reviewer | mockup-review.md |
|
|
46
48
|
| qa-tester | brief.md, decomposition.md, scope from pipeline step |
|
|
47
49
|
|
|
48
|
-
##
|
|
50
|
+
## Product specs (docs/specs)
|
|
51
|
+
|
|
52
|
+
When the next agent is **feature-developer** (or other implementer): if `docs/specs/INDEX.md` exists or brief lists approved specs, instruct them to load **`product-specs`** and honor **Related specs** / approved generated specs as behavior SoT. Soft-fail on miss; never invent product behavior.
|
|
53
|
+
|
|
54
|
+
If analyst ran **author mode**, confirm human approved drafts before developer. Pass spec paths + INDEX diff in the handoff. No-op if INDEX is absent and no approved specs.
|
|
49
55
|
|
|
50
|
-
On human-gate resume, the hook action above appends `human_gate_ended` under the per-task lock **before** any new `attempt_started`. Agents must not calculate durations.
|
|
@@ -22,6 +22,8 @@ Examples:
|
|
|
22
22
|
- `/task Write a changelog for the filters release`
|
|
23
23
|
- `/task Review my changes in features/Orders`
|
|
24
24
|
- `/task Write an Android instrumentation for the payment flow`
|
|
25
|
+
- `/task Review mockup https://figma.com/design/...`
|
|
26
|
+
- `/task Design UX flows for Order History` (no Figma)
|
|
25
27
|
|
|
26
28
|
## Algorithm
|
|
27
29
|
|
|
@@ -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
|
};
|
|
@@ -313,6 +314,8 @@ const AGENT_HANDOFF = {
|
|
|
313
314
|
`Invoke accessibility-reviewer (readonly) for slug "${s}". Review Presentation/Jetpack Compose (or Android View system) diff for TalkBack/font scale/semantics/testTag; write a11y-review.md. Upsert the owned terminal receipt in artifact-manifest.json; do not mutate status.json lifecycle fields.`,
|
|
314
315
|
'performance-auditor': (s) =>
|
|
315
316
|
`Invoke performance-auditor (readonly) for slug "${s}". Audit launch/Jetpack Compose performance risks; write perf-report.md. Upsert the owned terminal receipt in artifact-manifest.json; do not mutate status.json lifecycle fields.`,
|
|
317
|
+
'mockup-reviewer': (s) =>
|
|
318
|
+
`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.`,
|
|
316
319
|
'code-reviewer': (s) =>
|
|
317
320
|
`Invoke code-reviewer subagent (readonly) for slug "${s}". Review git diff vs brief.md per code-review-mr.mdc. ` +
|
|
318
321
|
`Upsert the owned terminal receipt in artifact-manifest.json; do not mutate status.json lifecycle fields.`,
|
|
@@ -597,6 +600,18 @@ if (currentStep?.parallel && stepAgents.length > 1) {
|
|
|
597
600
|
}
|
|
598
601
|
|
|
599
602
|
const retryReviewer = stepAgents.find((agent) => outcomes[agent]?.outcome === 'changes_requested');
|
|
603
|
+
if (retryReviewer === 'mockup-reviewer') {
|
|
604
|
+
beginHumanGate();
|
|
605
|
+
writeStatus({
|
|
606
|
+
awaitingHumanGate: true,
|
|
607
|
+
state: 'awaiting_approval',
|
|
608
|
+
currentAgent: 'mockup-reviewer',
|
|
609
|
+
parallelCompleted: [],
|
|
610
|
+
parallelOutcomes: {},
|
|
611
|
+
});
|
|
612
|
+
out(`Mockup review FAIL for slug "${slug}". Read mockup-review.md. Resume only via /task-continue. Do not retry feature-developer.`);
|
|
613
|
+
process.exit(0);
|
|
614
|
+
}
|
|
600
615
|
if (retryReviewer) {
|
|
601
616
|
const retryAfterFixStepIndex = idx;
|
|
602
617
|
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) {
|
|
@@ -25,6 +25,7 @@ Flat Cursor SoT. Claude twins live under `presets/claude/android-kotlin/rules/<t
|
|
|
25
25
|
| `kotlin-conventions.mdc` | `**/*.{kt,kts}` | Null-safety, coroutines |
|
|
26
26
|
| `feature-delivery-workflow.mdc` | requestable | Feature checklist |
|
|
27
27
|
| `reference-features.mdc` | `features/**` | Placeholder path table |
|
|
28
|
+
| `product-specs.mdc` | `docs/specs/**` | Product specs INDEX discovery |
|
|
28
29
|
| `module-public-api.mdc` | `**/api/**` | Public contracts |
|
|
29
30
|
| `di-dagger-feature-holders.mdc` | `**/di/**`, holders/components | No Hilt by default |
|
|
30
31
|
| `networking-data.mdc` | data/network | DTO→domain |
|
|
@@ -43,6 +44,8 @@ Flat Cursor SoT. Claude twins live under `presets/claude/android-kotlin/rules/<t
|
|
|
43
44
|
| `agent-team-intake.mdc` | requestable | thin `/task` hint |
|
|
44
45
|
| `agent-team-orchestrator.mdc` | requestable | Pipeline |
|
|
45
46
|
| `technical-retro.mdc` | requestable | thin retro alias |
|
|
47
|
+
| `mockup-review.mdc` | requestable | Figma mockup checklist + Stack notes breakpoints |
|
|
48
|
+
| `ux-design.mdc` | requestable | Behavioral UX checklist + Stack notes form-factor |
|
|
46
49
|
| `preset-*.mdc` (×5) | author globs | Meta only |
|
|
47
50
|
|
|
48
51
|
## Core → stack mapping
|
|
@@ -56,6 +59,10 @@ Flat Cursor SoT. Claude twins live under `presets/claude/android-kotlin/rules/<t
|
|
|
56
59
|
| `agent-team/agent-team-intake.md` | `agent-team-intake.mdc` | thin alias |
|
|
57
60
|
| `architecture/feature-delivery-workflow.md` | `feature-delivery-workflow.mdc` | Android checklist |
|
|
58
61
|
| `architecture/reference-features.template.md` | `reference-features.mdc` | placeholders |
|
|
62
|
+
| `architecture/product-specs.md` | `product-specs.mdc` | INDEX discovery; Stack notes field semantics |
|
|
63
|
+
| `architecture/product-specs-authoring.md` | `product-specs-authoring.mdc` | Generate/Bootstrap contract; requestable |
|
|
59
64
|
| `review/code-review-mr.md` | `code-review-mr.mdc` | Android checklist |
|
|
60
65
|
| `review/technical-retro.md` | `technical-retro.mdc` | thin alias |
|
|
66
|
+
| `review/mockup-review.md` | `mockup-review.mdc` | Stack notes breakpoints; requestable |
|
|
67
|
+
| `review/ux-design.md` | `ux-design.mdc` | Stack notes form-factor; requestable |
|
|
61
68
|
| `meta/preset-*.md` | `preset-*.mdc` | author globs only |
|
|
@@ -28,7 +28,7 @@ Work request without `/task` — see **`agent-team-intake.mdc`**.
|
|
|
28
28
|
| Agent | Prod writes | Typical intent |
|
|
29
29
|
|-------|-------------|----------------|
|
|
30
30
|
| `task-router` | no (team) | Every `/task` |
|
|
31
|
-
| `task-analyst` | no | feature, refactor, test-only, a11y, docs, migration |
|
|
31
|
+
| `task-analyst` | no | feature, refactor, test-only, a11y, docs, migration, ux-design |
|
|
32
32
|
| `solution-architect` | no | spike, cross-layer Feature |
|
|
33
33
|
| `migration-specialist` | no | Android Studio / AGP/Gradle modules/Android upgrades |
|
|
34
34
|
| `api-contract-reviewer` | no | OpenAPI / Kotlin codegen contracts |
|
|
@@ -38,6 +38,7 @@ Work request without `/task` — see **`agent-team-intake.mdc`**.
|
|
|
38
38
|
| `build-verifier` | no | ./gradlew + ktlint/detekt/Format + unit smoke; preset-structure for preset PRs |
|
|
39
39
|
| `accessibility-reviewer` | no | TalkBack / font scale / semantics |
|
|
40
40
|
| `performance-auditor` | no | launch / Profiler / Macrobenchmark |
|
|
41
|
+
| `mockup-reviewer` | no (team only) | mockup-review, feature/refactor/spike/spec-gen with `figma.com` |
|
|
41
42
|
| `code-reviewer` | no | most pipelines, review-only |
|
|
42
43
|
| `security-reviewer` | no | Android Keystore / encrypted storage, network security / cleartext, PII |
|
|
43
44
|
| `qa-tester` | tests | feature, bugfix, test-only |
|
|
@@ -51,6 +52,10 @@ Work request without `/task` — see **`agent-team-intake.mdc`**.
|
|
|
51
52
|
|
|
52
53
|
Full prompts: `.cursor/agents/*.md`. Artifact conventions: `.cursor/team/README.md`; schema SoT: **agent-artifact-contracts**.
|
|
53
54
|
|
|
55
|
+
**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.
|
|
56
|
+
|
|
57
|
+
**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.
|
|
58
|
+
|
|
54
59
|
When editing `packages/ai-rules/presets/**`, follow **`preset-pr-checklist.mdc`** (+ twin-sync / layering / token-budget / leakage meta-rules).
|
|
55
60
|
|
|
56
61
|
## Dynamic pipeline
|
|
@@ -98,8 +103,8 @@ On each `subagentStop`, the hook reconciles `status.state` from the completing p
|
|
|
98
103
|
2. Read `pipeline.json` before every subagent invocation.
|
|
99
104
|
3. One role per Task call — except parallel steps.
|
|
100
105
|
4. **Never** skip `humanGates` without `/task-continue` or explicit approval.
|
|
101
|
-
5. Persist handoffs to disk under `.cursor/team/tasks/<slug>/` via **Write** (not Shell `mkdir`).
|
|
102
|
-
6. On `changes_requested`: developer → same reviewer.
|
|
106
|
+
5. Persist handoffs to disk under `.cursor/team/tasks/<slug>/` via **Write** (not Shell `mkdir`), including `mockup-review.md` / `ux-design.md` when those producers ran.
|
|
107
|
+
6. On `changes_requested`: developer → same reviewer. Exception: embedded `mockup-reviewer` FAIL → `awaiting_approval` / `/task-continue` only (no developer retry).
|
|
103
108
|
7. On `validation_failed`: developer → build-verifier.
|
|
104
109
|
8. When all steps complete, suggest `/technical-retro <slug>`.
|
|
105
110
|
9. If `autoChain: false`, do not rely on hook.
|
|
@@ -3,6 +3,8 @@ description: End-to-end checklist for Android features (domain → data → DI
|
|
|
3
3
|
alwaysApply: false
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
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.
|
|
7
|
+
|
|
6
8
|
<!-- shared-core: architecture/feature-delivery-workflow.md -->
|
|
7
9
|
|
|
8
10
|
# Feature delivery (Android Kotlin)
|
|
@@ -34,3 +36,7 @@ Deliver features in layer order. Prefer neighboring `features/<name>/` analogs.
|
|
|
34
36
|
|
|
35
37
|
- Skill `feature-delivery` owns the end-to-end path; do not skip api/impl boundaries for speed.
|
|
36
38
|
- Local type names only in consumer `team/conventions.md`.
|
|
39
|
+
|
|
40
|
+
## Related
|
|
41
|
+
|
|
42
|
+
- Product behavior discovery: requestable **`product-specs`** (`docs/specs/INDEX.md`) — do not paste the discovery algorithm here.
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Figma mockup review checklist (DS, coverage, viewports). On-demand — load via mockup-reviewer / skill mockup-review.
|
|
3
|
+
alwaysApply: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- shared-core: review/mockup-review.md -->
|
|
7
|
+
|
|
8
|
+
# Mockup review checklist
|
|
9
|
+
|
|
10
|
+
On-demand reviewer checklist for Figma mockups. **Procedure:** skill `mockup-review`. **Agent:** `mockup-reviewer`. Do not inline this checklist into the agent prompt.
|
|
11
|
+
|
|
12
|
+
Stack-agnostic: no app-source globs, Playwright, or `xcodebuild`. Breakpoint **examples** live in adapter **Stack notes** only — do not FAIL on exact pixels.
|
|
13
|
+
|
|
14
|
+
## When to load
|
|
15
|
+
|
|
16
|
+
- Pipeline step `mockup-reviewer` (standalone intent `mockup-review` or embedded after analyst)
|
|
17
|
+
- Prompt or `brief.md` contains a `figma.com` URL on a UI-capable stack
|
|
18
|
+
- User asks to review a mockup / Figma file (not a code MR)
|
|
19
|
+
|
|
20
|
+
## Inputs
|
|
21
|
+
|
|
22
|
+
1. Task `artifact-manifest.json`, then prompt Figma URL(s); `brief.md` / `decomposition.md` when present
|
|
23
|
+
2. Skill `mockup-review` + this rule
|
|
24
|
+
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
|
|
25
|
+
|
|
26
|
+
## MCP-first
|
|
27
|
+
|
|
28
|
+
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`.
|
|
29
|
+
|
|
30
|
+
**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`).
|
|
31
|
+
|
|
32
|
+
Cite `fileKey` + node IDs. Screenshots are supporting evidence, not a second reviewer. No screenshot-only path.
|
|
33
|
+
|
|
34
|
+
**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.
|
|
35
|
+
|
|
36
|
+
**Degradation:** MCP unavailable or OAuth fail → verdict `BLOCKED_MCP`. Do **not** invent DS compliance claims.
|
|
37
|
+
|
|
38
|
+
## Review dimensions
|
|
39
|
+
|
|
40
|
+
### DS components (AC-4)
|
|
41
|
+
|
|
42
|
+
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.
|
|
43
|
+
|
|
44
|
+
- Critical DS reimplementation (custom frame where an attached-library component exists) → **FAIL**
|
|
45
|
+
- One-off frame, no DS equivalent; mixed/unpublished library → WARN or notes (`PASS_WITH_NOTES`)
|
|
46
|
+
- No attached library detectable → notes only; do not invent DS claims (`PASS_WITH_NOTES`)
|
|
47
|
+
|
|
48
|
+
Confidence: `high` (MCP library match) / `low` (unpublished or mixed) — prefer `PASS_WITH_NOTES` over FAIL when confidence is low.
|
|
49
|
+
|
|
50
|
+
### Tokens (AC-5)
|
|
51
|
+
|
|
52
|
+
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.
|
|
53
|
+
|
|
54
|
+
- Isolated unbound values → **WARN** (`PASS_WITH_NOTES`)
|
|
55
|
+
- Wholesale token ignore on a library-attached file (systemic; treat as critical DS with AC-4) → **FAIL**
|
|
56
|
+
|
|
57
|
+
### Quality (AC-6)
|
|
58
|
+
|
|
59
|
+
Cover at minimum, each item PASS / WARN / FAIL eligible:
|
|
60
|
+
|
|
61
|
+
- Layer/frame naming hygiene
|
|
62
|
+
- Auto-layout vs absolute positioning for responsive regions
|
|
63
|
+
- Text style usage
|
|
64
|
+
- Component variant/property correctness
|
|
65
|
+
- Detached or orphaned component instances
|
|
66
|
+
|
|
67
|
+
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.
|
|
68
|
+
|
|
69
|
+
### Feature coverage (AC-7)
|
|
70
|
+
|
|
71
|
+
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).
|
|
72
|
+
|
|
73
|
+
- Missing **core** flow or primary action from brief AC (or labeled `inferred` primary flow from the URL) → **FAIL**
|
|
74
|
+
- Missing empty/loading/error/success on a form/list called out in AC → **FAIL**
|
|
75
|
+
- Missing secondary states (disabled/validation) not in AC → **WARN**
|
|
76
|
+
|
|
77
|
+
### Viewports (AC-8)
|
|
78
|
+
|
|
79
|
+
Verify **≥3 viewport representations** (small / medium / large) via dedicated frames, Figma viewport presets, or responsive component variants.
|
|
80
|
+
|
|
81
|
+
- Fewer than 3 → **FAIL**
|
|
82
|
+
- 3 exist but sizes ≠ stack example buckets → **WARN** only (no exact pixel enforcement in core)
|
|
83
|
+
|
|
84
|
+
## Severity (v1)
|
|
85
|
+
|
|
86
|
+
Isolated **WARN** never blocks. Overall verdict = worst FAIL > BLOCKED_MCP > PASS_WITH_NOTES > PASS. Multiple WARNs without FAIL → `PASS_WITH_NOTES`, not FAIL.
|
|
87
|
+
|
|
88
|
+
## Report headings
|
|
89
|
+
|
|
90
|
+
Write `mockup-review.md` with these headings (must match the agent template):
|
|
91
|
+
|
|
92
|
+
```markdown
|
|
93
|
+
# Mockup review: <slug>
|
|
94
|
+
|
|
95
|
+
## Verdict
|
|
96
|
+
PASS | PASS_WITH_NOTES | FAIL | BLOCKED_MCP
|
|
97
|
+
|
|
98
|
+
## Scope
|
|
99
|
+
- Figma fileKey / node IDs
|
|
100
|
+
- MCP: available | unavailable (reason)
|
|
101
|
+
- Feature scope source: brief AC | prompt | inferred
|
|
102
|
+
|
|
103
|
+
## Critical (must fix)
|
|
104
|
+
## Warnings (should fix)
|
|
105
|
+
## Suggestions
|
|
106
|
+
## DS compliance (AC-4, AC-5)
|
|
107
|
+
## Quality (AC-6)
|
|
108
|
+
## Feature coverage (AC-7)
|
|
109
|
+
## Viewport matrix (AC-8)
|
|
110
|
+
## AC coverage
|
|
111
|
+
| Criterion | Status | Notes |
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Stack notes
|
|
115
|
+
|
|
116
|
+
Illustrative Android buckets (not enforced pixels): ~sw360 / sw600 / sw840 (phone / tablet / large) mapped to small / medium / large.
|
|
@@ -70,7 +70,8 @@ Shared backend-stack bans (`go`, `java`, `php-hexagonal`, and `php-laravel`):
|
|
|
70
70
|
- `playwright-test-`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
|
|
71
71
|
- Positive yarn recipes `lint:js` / `lint:css`
|
|
72
72
|
- `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
73
|
-
- Agent
|
|
73
|
+
- Agent files `accessibility-reviewer`, `mockup-reviewer`, `ux-designer` (no UI surface)
|
|
74
|
+
- Required `skills/ux-design`, required `rules/ux-design`, or required pipeline handoff stem `ux-design`
|
|
74
75
|
|
|
75
76
|
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`).
|
|
76
77
|
|
|
@@ -82,7 +83,8 @@ Same UI/mobile bans as backend stacks, plus:
|
|
|
82
83
|
- Positive yarn recipes `lint:js` / `lint:css` as required gates
|
|
83
84
|
- `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
84
85
|
- Go tool commands as required MCP delivery gates: `go test`, `go vet`, `golangci-lint`
|
|
85
|
-
- Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`
|
|
86
|
+
- Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`, `mockup-reviewer`, `ux-designer`
|
|
87
|
+
- Required `skills/ux-design`, required `rules/ux-design`, or required pipeline handoff stem `ux-design`
|
|
86
88
|
|
|
87
89
|
Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`, `post-change-test`); Phase 1 gates `build-verifier` + `security-reviewer`.
|
|
88
90
|
|
|
@@ -94,7 +96,6 @@ Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`,
|
|
|
94
96
|
## Chain fork
|
|
95
97
|
|
|
96
98
|
`hooks/chain-team-phases.sh` must differ **byte-wise** pairwise among `next`, `nuxt`, `svelte`, `ios-swift`, `android-kotlin`, `go`, `java`, `mcp-ts`, `php-hexagonal`, and `php-laravel` (per platform).
|
|
97
|
-
|
|
98
99
|
## Stack notes
|
|
99
100
|
|
|
100
101
|
- **Authoring meta:** forbidden/required sections above describe **other stacks** (and this one) for preset authors. Consumer installs of `android-kotlin` must still keep foreign agent stems out of required handoffs.
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Author/generate product specs (docs/specs) — modes, INDEX/frontmatter, checklist
|
|
3
|
+
globs:
|
|
4
|
+
- docs/specs/**/*
|
|
5
|
+
alwaysApply: false
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
<!-- shared-core: architecture/product-specs-authoring.md -->
|
|
9
|
+
|
|
10
|
+
# Product specs authoring
|
|
11
|
+
|
|
12
|
+
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`**.
|
|
13
|
+
|
|
14
|
+
## Modes
|
|
15
|
+
|
|
16
|
+
1. **Consume** — default; never invent INDEX/specs (see `product-specs`).
|
|
17
|
+
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`).
|
|
18
|
+
3. **Bootstrap** — create `INDEX.md` + `_templates/` copies + first domain spec under greenfield policy.
|
|
19
|
+
|
|
20
|
+
## Greenfield policy
|
|
21
|
+
|
|
22
|
+
Agents **may** create INDEX + first specs **only when** one of:
|
|
23
|
+
|
|
24
|
+
1. User runs `/spec-start` or explicitly asks to bootstrap `docs/specs`.
|
|
25
|
+
2. Brief/AC includes generation or bootstrap language.
|
|
26
|
+
3. Router detects `spec-gen` intent.
|
|
27
|
+
|
|
28
|
+
Otherwise: missing INDEX → optional tree; do **not** invent INDEX merely because discovery loaded.
|
|
29
|
+
|
|
30
|
+
## Conflict precedence
|
|
31
|
+
|
|
32
|
+
1. **Human gate** decision (approved brief/spec edits).
|
|
33
|
+
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.
|
|
34
|
+
3. **Approved `docs/specs/**`** — behavior SoT for feature-developer once gate passed.
|
|
35
|
+
4. **Code / `.ai/context`** — discovery evidence only; never override approved spec without gate.
|
|
36
|
+
|
|
37
|
+
Label inferred-from-code lines with `status: draft` until human promotes.
|
|
38
|
+
|
|
39
|
+
## INDEX.md contract (v1)
|
|
40
|
+
|
|
41
|
+
| Column | Required | Notes |
|
|
42
|
+
|--------|----------|-------|
|
|
43
|
+
| `id` | yes | Stable kebab/id matching frontmatter `id` |
|
|
44
|
+
| `type` | yes | `page` \| `feature` |
|
|
45
|
+
| `domain` | yes | Domain folder under `docs/specs/domains/<domain>/` |
|
|
46
|
+
| `title` | yes | Human label |
|
|
47
|
+
| `path` | yes | Repo-relative path to markdown file |
|
|
48
|
+
| `routes` | no | Summary; may duplicate frontmatter |
|
|
49
|
+
| `aliases` | no | Comma-separated PageName / deep-link aliases |
|
|
50
|
+
| `status` | no | `draft` \| `active` \| `deprecated` |
|
|
51
|
+
|
|
52
|
+
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**.
|
|
53
|
+
|
|
54
|
+
## Frontmatter v1
|
|
55
|
+
|
|
56
|
+
| Field | Type | Required | Notes |
|
|
57
|
+
|-------|------|----------|-------|
|
|
58
|
+
| `id` | string | yes | Unique; matches INDEX |
|
|
59
|
+
| `type` | enum `page` \| `feature` | yes | Backend/MCP: prefer `feature` |
|
|
60
|
+
| `domain` | string | yes | |
|
|
61
|
+
| `routes` | string[] | yes (may be `[]`) | Web: URL paths; mobile: deep links/screens; backend: HTTP paths; mcp-ts: tool names |
|
|
62
|
+
| `ui` | string[] | yes (may be `[]`) | Component/screen refs; empty on backend/mcp |
|
|
63
|
+
| `store` | string[] | yes (may be `[]`) | Slice/module refs; empty when N/A |
|
|
64
|
+
| `api` | string[] | yes (may be `[]`) | Services/ports/tools |
|
|
65
|
+
| `aliases` | string[] | yes (may be `[]`) | |
|
|
66
|
+
| `e2e` | string[] | yes (may be `[]`) | Stack-appropriate test paths |
|
|
67
|
+
| `status` | enum | no | default `draft` on agent generate |
|
|
68
|
+
| `owners` | string[] | no | |
|
|
69
|
+
| `related` | string[] | no | Spec ids or paths |
|
|
70
|
+
|
|
71
|
+
Arrays are **always present** (empty allowed). Do not omit keys for N/A stacks.
|
|
72
|
+
|
|
73
|
+
## Body headings (minimum)
|
|
74
|
+
|
|
75
|
+
**`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).
|
|
76
|
+
|
|
77
|
+
**`page` optional:** Analytics, Accessibility, Edge cases, Related specs.
|
|
78
|
+
|
|
79
|
+
**`feature` required:** Overview; Shared behavior / constraints; Related pages (links).
|
|
80
|
+
|
|
81
|
+
**`feature` optional:** Cross-cutting states, Analytics.
|
|
82
|
+
|
|
83
|
+
Compliant = valid frontmatter + all required headings present (non-empty prose or explicit `N/A`) + INDEX row with resolvable `path`.
|
|
84
|
+
|
|
85
|
+
## Templates & assets
|
|
86
|
+
|
|
87
|
+
**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`).
|
|
88
|
+
|
|
89
|
+
**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.
|
|
90
|
+
|
|
91
|
+
**Skill fallback:** if consumer `_templates/` missing during author mode, copy from package/skill assets before authoring.
|
|
92
|
+
|
|
93
|
+
## Author roles
|
|
94
|
+
|
|
95
|
+
| Role | Responsibility |
|
|
96
|
+
|------|----------------|
|
|
97
|
+
| **task-analyst** | Primary author (Generate + Bootstrap); INDEX bootstrap; brief **Related specs** + **Spec gaps / generation requested**; loads this stem + skill `spec-authoring` |
|
|
98
|
+
| **tech-writer** | Post-delivery sync where present; never invent product behavior without AC/code source |
|
|
99
|
+
| **feature-developer** | Consumes approved specs as SoT; mechanical INDEX/frontmatter fixes only on renames |
|
|
100
|
+
| **mcp-ts** | No tech-writer — author + post-sync via **task-analyst** only |
|
|
101
|
+
|
|
102
|
+
## Self-check before handoff (soft block)
|
|
103
|
+
|
|
104
|
+
Block handoff via `open_questions` until fixed:
|
|
105
|
+
|
|
106
|
+
- [ ] Required frontmatter keys present; arrays always present (may be `[]`)
|
|
107
|
+
- [ ] Required body headings present (or explicit `N/A`)
|
|
108
|
+
- [ ] INDEX row added/updated with resolvable `path` in the **same change set**
|
|
109
|
+
- [ ] Sources cited; invented product behavior absent (or labeled `draft` / `inferred`)
|
|
110
|
+
- [ ] Conflict with brief AC reconciled or flagged
|
|
111
|
+
|
|
112
|
+
## Related
|
|
113
|
+
|
|
114
|
+
- `product-specs` — discovery / consume
|
|
115
|
+
- Skill `spec-authoring` — procedural checklist
|
|
116
|
+
- Optional consumer script `scripts/check-product-specs.sh` (WARN default; `--strict` FAIL)
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
## Stack notes
|
|
120
|
+
|
|
121
|
+
- Author via skill `spec-authoring`; templates from package assets / consumer `docs/specs/_templates/`.
|
|
122
|
+
- Field semantics match discovery stem (`routes` = deep links; `e2e` = instrumentation). **No** web Playwright / iOS XCUITest recipes.
|
|
123
|
+
- Requestable — not always-on / session-start.
|