@bonesofspring/ai-rules 0.2.17 → 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 +18 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/presets/_shared/README.md +1 -1
- 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/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 +6 -0
- package/presets/claude/android-kotlin/agents/feature-developer.md +6 -0
- package/presets/claude/android-kotlin/agents/mockup-reviewer.md +59 -0
- package/presets/claude/android-kotlin/agents/task-analyst.md +18 -1
- package/presets/claude/android-kotlin/agents/task-router.md +11 -2
- package/presets/claude/android-kotlin/commands/task-continue.md +6 -4
- 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 +2 -0
- package/presets/claude/android-kotlin/rules/architecture/feature-delivery.md +2 -0
- package/presets/claude/android-kotlin/rules/tooling-and-review/agent-team-orchestrator.md +6 -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 +3 -0
- package/presets/claude/android-kotlin/skills/mockup-review/SKILL.md +29 -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 +6 -0
- package/presets/claude/go/agents/task-router.md +1 -1
- package/presets/claude/go/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
- package/presets/claude/ios-swift/agents/README.md +2 -2
- package/presets/claude/ios-swift/agents/build-verifier.md +6 -0
- package/presets/claude/ios-swift/agents/feature-developer.md +6 -0
- package/presets/claude/ios-swift/agents/mockup-reviewer.md +59 -0
- package/presets/claude/ios-swift/agents/task-analyst.md +18 -1
- package/presets/claude/ios-swift/agents/task-router.md +11 -2
- package/presets/claude/ios-swift/commands/task-continue.md +6 -4
- 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 +4 -0
- package/presets/claude/ios-swift/rules/architecture/feature-delivery.md +2 -0
- package/presets/claude/ios-swift/rules/tooling-and-review/agent-team-orchestrator.md +6 -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 +3 -0
- package/presets/claude/ios-swift/skills/mockup-review/SKILL.md +29 -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 +7 -1
- package/presets/claude/java/agents/task-router.md +1 -1
- package/presets/claude/java/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
- package/presets/claude/mcp-ts/agents/build-verifier.md +7 -1
- package/presets/claude/mcp-ts/agents/task-router.md +1 -1
- package/presets/claude/mcp-ts/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
- package/presets/claude/next/agents/README.md +2 -1
- package/presets/claude/next/agents/build-verifier.md +6 -0
- package/presets/claude/next/agents/feature-developer.md +6 -0
- package/presets/claude/next/agents/mockup-reviewer.md +59 -0
- package/presets/claude/next/agents/task-analyst.md +18 -1
- package/presets/claude/next/agents/task-router.md +12 -3
- package/presets/claude/next/commands/task-continue.md +6 -4
- 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 +5 -1
- package/presets/claude/next/rules/architecture/feature-delivery-workflow.md +2 -0
- package/presets/claude/next/rules/tooling-and-review/agent-team-orchestrator.md +6 -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 +3 -0
- package/presets/claude/next/skills/mockup-review/SKILL.md +29 -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 +6 -0
- package/presets/claude/nuxt/agents/feature-developer.md +6 -0
- package/presets/claude/nuxt/agents/mockup-reviewer.md +59 -0
- package/presets/claude/nuxt/agents/task-analyst.md +18 -1
- package/presets/claude/nuxt/agents/task-router.md +12 -3
- package/presets/claude/nuxt/commands/task-continue.md +6 -4
- 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 +4 -0
- package/presets/claude/nuxt/rules/architecture/feature-delivery-workflow.md +2 -0
- package/presets/claude/nuxt/rules/tooling-and-review/agent-team-orchestrator.md +6 -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 +3 -0
- package/presets/claude/nuxt/skills/mockup-review/SKILL.md +29 -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 +7 -1
- package/presets/claude/php-hexagonal/agents/task-router.md +1 -1
- package/presets/claude/php-hexagonal/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
- package/presets/claude/php-laravel/agents/build-verifier.md +7 -1
- package/presets/claude/php-laravel/agents/task-router.md +1 -1
- package/presets/claude/php-laravel/rules/tooling-and-review/preset-no-cross-stack-leakage.md +4 -2
- package/presets/claude/svelte/agents/README.md +2 -1
- package/presets/claude/svelte/agents/build-verifier.md +6 -0
- package/presets/claude/svelte/agents/feature-developer.md +6 -0
- package/presets/claude/svelte/agents/mockup-reviewer.md +59 -0
- package/presets/claude/svelte/agents/task-analyst.md +18 -1
- package/presets/claude/svelte/agents/task-router.md +12 -3
- package/presets/claude/svelte/commands/task-continue.md +6 -4
- 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 +4 -0
- package/presets/claude/svelte/rules/architecture/feature-delivery-workflow.md +2 -0
- package/presets/claude/svelte/rules/tooling-and-review/agent-team-orchestrator.md +6 -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 +3 -0
- package/presets/claude/svelte/skills/mockup-review/SKILL.md +29 -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 +6 -0
- package/presets/cursor/android-kotlin/agents/feature-developer.md +6 -0
- package/presets/cursor/android-kotlin/agents/mockup-reviewer.md +60 -0
- package/presets/cursor/android-kotlin/agents/task-analyst.md +18 -1
- package/presets/cursor/android-kotlin/agents/task-router.md +11 -2
- package/presets/cursor/android-kotlin/commands/task-continue.md +6 -4
- 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 +4 -0
- package/presets/cursor/android-kotlin/rules/agent-team-orchestrator.mdc +6 -3
- package/presets/cursor/android-kotlin/rules/feature-delivery-workflow.mdc +2 -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/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 +3 -0
- package/presets/cursor/android-kotlin/skills/mockup-review/SKILL.md +29 -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 +6 -0
- package/presets/cursor/go/agents/task-router.md +1 -1
- package/presets/cursor/go/rules/preset-no-cross-stack-leakage.mdc +4 -2
- package/presets/cursor/ios-swift/agents/README.md +2 -2
- package/presets/cursor/ios-swift/agents/build-verifier.md +6 -0
- package/presets/cursor/ios-swift/agents/feature-developer.md +6 -0
- package/presets/cursor/ios-swift/agents/mockup-reviewer.md +60 -0
- package/presets/cursor/ios-swift/agents/task-analyst.md +18 -1
- package/presets/cursor/ios-swift/agents/task-router.md +11 -2
- package/presets/cursor/ios-swift/commands/task-continue.md +6 -4
- 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 +5 -1
- package/presets/cursor/ios-swift/rules/agent-team-orchestrator.mdc +6 -3
- package/presets/cursor/ios-swift/rules/feature-delivery-workflow.mdc +2 -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/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 +3 -0
- package/presets/cursor/ios-swift/skills/mockup-review/SKILL.md +29 -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 +7 -1
- package/presets/cursor/java/agents/task-router.md +1 -1
- package/presets/cursor/java/rules/preset-no-cross-stack-leakage.mdc +4 -2
- package/presets/cursor/mcp-ts/agents/build-verifier.md +7 -1
- package/presets/cursor/mcp-ts/agents/task-router.md +1 -1
- package/presets/cursor/mcp-ts/rules/preset-no-cross-stack-leakage.mdc +4 -2
- package/presets/cursor/next/agents/README.md +2 -1
- package/presets/cursor/next/agents/build-verifier.md +6 -0
- package/presets/cursor/next/agents/feature-developer.md +6 -0
- package/presets/cursor/next/agents/mockup-reviewer.md +60 -0
- package/presets/cursor/next/agents/task-analyst.md +18 -1
- package/presets/cursor/next/agents/task-router.md +12 -3
- package/presets/cursor/next/commands/task-continue.md +6 -4
- 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 +3 -1
- package/presets/cursor/next/rules/agent-team-orchestrator.mdc +6 -3
- package/presets/cursor/next/rules/feature-delivery-workflow.mdc +2 -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/ux-design.mdc +108 -0
- package/presets/cursor/next/skills/README.md +2 -0
- package/presets/cursor/next/skills/feature-delivery/SKILL.md +3 -0
- package/presets/cursor/next/skills/mockup-review/SKILL.md +29 -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 +6 -0
- package/presets/cursor/nuxt/agents/feature-developer.md +6 -0
- package/presets/cursor/nuxt/agents/mockup-reviewer.md +60 -0
- package/presets/cursor/nuxt/agents/task-analyst.md +18 -1
- package/presets/cursor/nuxt/agents/task-router.md +12 -3
- package/presets/cursor/nuxt/commands/task-continue.md +6 -4
- 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 +3 -1
- package/presets/cursor/nuxt/rules/agent-team-orchestrator.mdc +6 -3
- package/presets/cursor/nuxt/rules/feature-delivery-workflow.mdc +2 -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/ux-design.mdc +108 -0
- package/presets/cursor/nuxt/skills/README.md +2 -0
- package/presets/cursor/nuxt/skills/feature-delivery/SKILL.md +3 -0
- package/presets/cursor/nuxt/skills/mockup-review/SKILL.md +29 -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 +7 -1
- package/presets/cursor/php-hexagonal/agents/task-router.md +1 -1
- package/presets/cursor/php-hexagonal/rules/preset-no-cross-stack-leakage.mdc +4 -2
- package/presets/cursor/php-laravel/agents/build-verifier.md +7 -1
- package/presets/cursor/php-laravel/agents/task-router.md +1 -1
- package/presets/cursor/php-laravel/rules/preset-no-cross-stack-leakage.mdc +4 -2
- package/presets/cursor/svelte/agents/README.md +2 -1
- package/presets/cursor/svelte/agents/build-verifier.md +6 -0
- package/presets/cursor/svelte/agents/feature-developer.md +6 -0
- package/presets/cursor/svelte/agents/mockup-reviewer.md +60 -0
- package/presets/cursor/svelte/agents/task-analyst.md +18 -1
- package/presets/cursor/svelte/agents/task-router.md +12 -3
- package/presets/cursor/svelte/commands/task-continue.md +6 -4
- 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 +3 -1
- package/presets/cursor/svelte/rules/agent-team-orchestrator.mdc +6 -3
- package/presets/cursor/svelte/rules/feature-delivery-workflow.mdc +2 -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/ux-design.mdc +108 -0
- package/presets/cursor/svelte/skills/README.md +2 -0
- package/presets/cursor/svelte/skills/feature-delivery/SKILL.md +3 -0
- package/presets/cursor/svelte/skills/mockup-review/SKILL.md +29 -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
|
@@ -69,7 +69,8 @@ Shared backend-stack bans (`go`, `java`, `php-hexagonal`, and `php-laravel`):
|
|
|
69
69
|
- `playwright-test-`, `playwright-e2e`, `user-playwright`, `app/__tests__/e2e`
|
|
70
70
|
- Positive yarn recipes `lint:js` / `lint:css`
|
|
71
71
|
- `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
72
|
-
- Agent
|
|
72
|
+
- Agent files `accessibility-reviewer`, `mockup-reviewer`, `ux-designer` (no UI surface)
|
|
73
|
+
- Required `skills/ux-design`, required `rules/ux-design`, or required pipeline handoff stem `ux-design`
|
|
73
74
|
|
|
74
75
|
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`).
|
|
75
76
|
|
|
@@ -81,7 +82,8 @@ Same UI/mobile bans as backend stacks, plus:
|
|
|
81
82
|
- Positive yarn recipes `lint:js` / `lint:css` as required gates
|
|
82
83
|
- `xcuitest-test-`, `instrumentation-test-`, `xcodebuild`, `SwiftLint` as required handoffs
|
|
83
84
|
- Go tool commands as required MCP delivery gates: `go test`, `go vet`, `golangci-lint`
|
|
84
|
-
- Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`
|
|
85
|
+
- Agent files: `playwright-test-*`, `xcuitest-test-*`, `instrumentation-test-*`, `integration-test-*`, `accessibility-reviewer`, `mockup-reviewer`, `ux-designer`
|
|
86
|
+
- Required `skills/ux-design`, required `rules/ux-design`, or required pipeline handoff stem `ux-design`
|
|
85
87
|
|
|
86
88
|
Required instead: package-manager–discovered typecheck/test (`mcp-ts-tooling`, `post-change-test`); Phase 1 gates `build-verifier` + `security-reviewer`.
|
|
87
89
|
|
|
@@ -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 |
|
|
@@ -11,6 +11,9 @@ description: Delivers SvelteKit frontend features end-to-end across domain types
|
|
|
11
11
|
4. Add or update focused tests for changed behavior.
|
|
12
12
|
5. Validation from SvelteKit root: **invoke** **`post-change-lint`** after code edits (requestable, not always-on — but **must** when code changed). Pipeline: scoped lint OK if next step is `build-verifier`.
|
|
13
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.
|
|
16
|
+
|
|
14
17
|
## Scope discipline
|
|
15
18
|
|
|
16
19
|
Implement only the current AC / decomposition task. Clarify ambiguity before coding; do not add unrelated hardening, polish, or refactors. See `feature-developer` → **Zero improvisation**.
|
|
@@ -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.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ux-design
|
|
3
|
+
description: Behavioral UX synthesis and review for task-analyst. Modes synthesize|review. Standalone intent ux-design or embedded required-signal / advisory UI AC. No Figma MCP; no DESIGN.md.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# UX design
|
|
7
|
+
|
|
8
|
+
Requestable procedure for **task-analyst** (not a pipeline agent). Checklist lives in rule `ux-design` — do not duplicate it here.
|
|
9
|
+
|
|
10
|
+
**Not** a Figma workflow: do not call Figma MCP; do not write `DESIGN.md`. Visual/DS/viewport audit stays with `mockup-reviewer` / skill `mockup-review`.
|
|
11
|
+
|
|
12
|
+
## When to run
|
|
13
|
+
|
|
14
|
+
- Standalone `/task` intent `ux-design` (report-only; profile `light`; steps only `task-analyst`; modes `synthesize` | `review`; `humanGates: []`).
|
|
15
|
+
- Embedded: `feature` / `refactor` / `spike` / `spec-gen` on a UI stack when required-signal or advisory UI AC fires — inside the analyst step (no new pipeline agent). Required-signal: user asked UX, or AC require flows/states, or spec-gen page/feature.
|
|
16
|
+
|
|
17
|
+
## Modes
|
|
18
|
+
|
|
19
|
+
- `synthesize` — elicit IA, named primary flows, empty/error/loading matrix from the brief/AC.
|
|
20
|
+
- `review` — critique a brief/wireframe/description **without** Figma. A `figma.com` URL with review-not-implement language is intent `mockup-review`, not this skill.
|
|
21
|
+
|
|
22
|
+
## Order
|
|
23
|
+
|
|
24
|
+
UX synthesis **before** skill `spec-authoring` / author mode when both apply. Analyst remains the only INDEX writer. Map headings via the rule's Spec feed table; do not paste the whole UX file into `docs/specs`.
|
|
25
|
+
|
|
26
|
+
## Forbidden Figma MCP
|
|
27
|
+
|
|
28
|
+
Do not call `get_metadata`, `get_design_context`, `get_screenshot`, `search_design_system`, `get_variable_defs`, `use_figma`, `create_new_file`, `generate_*`. Only `mockup-reviewer` reads Figma.
|
|
29
|
+
|
|
30
|
+
## Load the checklist
|
|
31
|
+
|
|
32
|
+
Load requestable rule `ux-design` and follow its required-signal vs advisory rules, forbidden MCP list, verdicts, surface-closure, and report headings.
|
|
33
|
+
|
|
34
|
+
## Output
|
|
35
|
+
|
|
36
|
+
Write `.claude/team/tasks/<slug>/ux-design.md` and append that path to the **`analysis`** manifest entry (`authoritativePaths` / `evidencePaths`). Do **not** create a new producer row. Receipt stays on `analysis`: required `INCOMPLETE` (missing primary flows or empty/error/loading matrix) → DoR not met; advisory `INCOMPLETE` → notes only. Never copy the mockup FAIL-only hook.
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"id": "analysis",
|
|
26
26
|
"producer": "task-analyst",
|
|
27
27
|
"status": "completed",
|
|
28
|
-
"authoritativePaths": ["brief.md", "decomposition.md"],
|
|
28
|
+
"authoritativePaths": ["brief.md", "decomposition.md", "ux-design.md"],
|
|
29
29
|
"acceptanceCriteriaIds": ["AC-1", "AC-2"],
|
|
30
30
|
"taskIds": ["T1", "T2"],
|
|
31
31
|
"timestamps": {
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"receipt": {
|
|
37
37
|
"outcome": "completed",
|
|
38
38
|
"summary": "The acceptance criteria and implementation tasks are ready.",
|
|
39
|
-
"evidencePaths": ["brief.md", "decomposition.md"]
|
|
39
|
+
"evidencePaths": ["brief.md", "decomposition.md", "ux-design.md"]
|
|
40
40
|
}
|
|
41
41
|
},
|
|
42
42
|
{
|
|
@@ -56,6 +56,24 @@
|
|
|
56
56
|
"summary": "Implementation and focused unit coverage are complete.",
|
|
57
57
|
"evidencePaths": ["implementation.md"]
|
|
58
58
|
}
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"id": "mockup-review",
|
|
62
|
+
"producer": "mockup-reviewer",
|
|
63
|
+
"status": "completed",
|
|
64
|
+
"authoritativePaths": ["mockup-review.md"],
|
|
65
|
+
"acceptanceCriteriaIds": ["AC-4", "AC-5", "AC-6", "AC-7", "AC-8"],
|
|
66
|
+
"taskIds": [],
|
|
67
|
+
"timestamps": {
|
|
68
|
+
"createdAt": "2026-07-31T12:05:30.000Z",
|
|
69
|
+
"updatedAt": "2026-07-31T12:05:45.000Z",
|
|
70
|
+
"completedAt": "2026-07-31T12:05:45.000Z"
|
|
71
|
+
},
|
|
72
|
+
"receipt": {
|
|
73
|
+
"outcome": "completed",
|
|
74
|
+
"summary": "Mockup review completed with verdict PASS_WITH_NOTES.",
|
|
75
|
+
"evidencePaths": ["mockup-review.md"]
|
|
76
|
+
}
|
|
59
77
|
}
|
|
60
78
|
]
|
|
61
79
|
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "example-feature-with-figma",
|
|
3
|
+
"intent": "feature",
|
|
4
|
+
"profile": "full",
|
|
5
|
+
"summary": "Feature with Figma mockup URL — mockup-reviewer after analyst, before architect and developer",
|
|
6
|
+
"steps": [
|
|
7
|
+
{ "agent": "task-analyst", "label": "Clarify and decompose" },
|
|
8
|
+
{ "agent": "mockup-reviewer", "label": "Figma mockup review", "model": "strong" },
|
|
9
|
+
{ "agent": "solution-architect", "label": "Design boundaries", "model": "strong" },
|
|
10
|
+
{ "agent": "feature-developer", "label": "Implement" },
|
|
11
|
+
{ "agent": "build-verifier", "label": "Validation gate", "model": "cheap" },
|
|
12
|
+
{ "agent": "code-reviewer", "label": "Code review", "model": "cheap" }
|
|
13
|
+
],
|
|
14
|
+
"humanGates": ["after:task-analyst"],
|
|
15
|
+
"autoChain": true,
|
|
16
|
+
"skipped": []
|
|
17
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "example-feature-with-ux-no-figma",
|
|
3
|
+
"intent": "feature",
|
|
4
|
+
"profile": "standard",
|
|
5
|
+
"summary": "Feature with required-signal UX and no Figma URL — task-analyst loads skill ux-design; no mockup-reviewer step",
|
|
6
|
+
"steps": [
|
|
7
|
+
{ "agent": "task-analyst", "label": "Clarify, UX design, decompose" },
|
|
8
|
+
{ "agent": "feature-developer", "label": "Implement" },
|
|
9
|
+
{ "agent": "build-verifier", "label": "Validation gate", "model": "cheap" },
|
|
10
|
+
{ "agent": "code-reviewer", "label": "Code review", "model": "cheap" }
|
|
11
|
+
],
|
|
12
|
+
"humanGates": ["after:task-analyst"],
|
|
13
|
+
"autoChain": true,
|
|
14
|
+
"skipped": [
|
|
15
|
+
{ "agent": "mockup-reviewer", "reason": "No figma.com URL; analyst skill ux-design covers behavioral UX" }
|
|
16
|
+
]
|
|
17
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "example-mockup-fail-gate",
|
|
3
|
+
"state": "awaiting_approval",
|
|
4
|
+
"currentAgent": "mockup-reviewer",
|
|
5
|
+
"awaitingHumanGate": true,
|
|
6
|
+
"retryAfterFix": null,
|
|
7
|
+
"note": "Embedded mockup FAIL: hook must NOT set retryAfterFix to feature-developer. Resume only via /task-continue."
|
|
8
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "example-mockup-review-standalone",
|
|
3
|
+
"intent": "mockup-review",
|
|
4
|
+
"profile": "light",
|
|
5
|
+
"summary": "Standalone Figma mockup review (report-only)",
|
|
6
|
+
"steps": [
|
|
7
|
+
{ "agent": "mockup-reviewer", "label": "Figma mockup review", "model": "strong" }
|
|
8
|
+
],
|
|
9
|
+
"humanGates": [],
|
|
10
|
+
"autoChain": true,
|
|
11
|
+
"skipped": [
|
|
12
|
+
{ "agent": "feature-developer", "reason": "Standalone mockup-review is report-only" }
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slug": "example-ux-design-standalone",
|
|
3
|
+
"intent": "ux-design",
|
|
4
|
+
"profile": "light",
|
|
5
|
+
"summary": "Standalone behavioral UX design (analyst + skill ux-design; report-only; no developer)",
|
|
6
|
+
"steps": [
|
|
7
|
+
{ "agent": "task-analyst", "label": "UX design (skill ux-design)" }
|
|
8
|
+
],
|
|
9
|
+
"humanGates": [],
|
|
10
|
+
"autoChain": true,
|
|
11
|
+
"skipped": [
|
|
12
|
+
{ "agent": "feature-developer", "reason": "Standalone ux-design is report-only" },
|
|
13
|
+
{ "agent": "mockup-reviewer", "reason": "No figma.com URL; not a mockup review" }
|
|
14
|
+
]
|
|
15
|
+
}
|
|
@@ -27,7 +27,7 @@ When copying next pipeline templates: put Playwright / XCUITest / integration-te
|
|
|
27
27
|
| feature-developer | yes (Kotlin/Android sources) |
|
|
28
28
|
| build-verifier | no (report only) |
|
|
29
29
|
| debugger, ci-investigator | minimal |
|
|
30
|
-
| code-reviewer, accessibility-reviewer, security-reviewer, performance-auditor | team only |
|
|
30
|
+
| code-reviewer, accessibility-reviewer, security-reviewer, performance-auditor, mockup-reviewer | team only |
|
|
31
31
|
| qa-tester, unit-test-*, instrumentation-test-* | tests only |
|
|
32
32
|
| tech-writer | docs only |
|
|
33
33
|
|
|
@@ -37,7 +37,7 @@ When copying next pipeline templates: put Playwright / XCUITest / integration-te
|
|
|
37
37
|
|------|------------|----------------|
|
|
38
38
|
| **cheap** | `fast` / cheap | build-verifier, some generators/healers |
|
|
39
39
|
| **standard** | `inherit` | feature-developer, debugger, ci-investigator, a11y, qa, unit-*, instrumentation-* |
|
|
40
|
-
| **strong** | `strong` | solution-architect, security-reviewer (when scheduled) |
|
|
40
|
+
| **strong** | `strong` | solution-architect, security-reviewer, mockup-reviewer (when scheduled) |
|
|
41
41
|
|
|
42
42
|
## Pipeline schema
|
|
43
43
|
|
|
@@ -46,6 +46,12 @@ When validating **android-kotlin preset** changes (or `scope: preset-structure-v
|
|
|
46
46
|
13. **AC-11 vendor neutrality:** no private consumer repo names, brand/product vendor strings, or org-specific type names in `presets/{cursor,claude}/android-kotlin/**`.
|
|
47
47
|
14. Prefer `yarn check:preset-structure` (twin-map + token-budget + leakage + i18n).
|
|
48
48
|
|
|
49
|
+
|
|
50
|
+
**mockup-reviewer (UI):** `agents/mockup-reviewer.md` and `skills/mockup-review/` must exist (Cursor + Claude). Missing → **FAIL**. Backend stacks must **not** ship that agent file or a required `mockup-reviewer` chain handoff → **FAIL** if present.
|
|
51
|
+
|
|
52
|
+
**ux-design (UI):** `skills/ux-design/` and requestable rule `ux-design` (`ux-design.mdc` / `tooling-and-review/ux-design.md`) must exist (Cursor + Claude). Missing → **FAIL**. Do **not** require `agents/ux-designer.md`. Backend stacks must **not** ship that agent file or a required `ux-design` skill/rule/handoff → **FAIL** if present.
|
|
53
|
+
|
|
54
|
+
|
|
49
55
|
### Soft rules
|
|
50
56
|
|
|
51
57
|
- Thin aliases (`agent-team-intake`, `technical-retro`) may be <15 body lines; domain rules ≥15.
|
|
@@ -55,6 +55,12 @@ Emit the owned implementation receipt with outcome `completed`. Handoff by layer
|
|
|
55
55
|
|
|
56
56
|
- When writing or changing code, load / follow rule `anti-sycophancy-discipline`.
|
|
57
57
|
|
|
58
|
+
## UX design (behavioral)
|
|
59
|
+
|
|
60
|
+
Read order when present: manifest → `brief.md` / `decomposition.md` → **`ux-design.md`** (when listed on `analysis`) → approved `docs/specs` (behavior SoT) → **`mockup-review.md`** when Figma was in scope → `architecture.md`.
|
|
61
|
+
|
|
62
|
+
If required-signal fired (user asked UX, AC require flows/states, or spec-gen page/feature) and there is **no** `figma.com` URL, and `ux-design.md` is absent or verdict `INCOMPLETE` without user continue → emit **`blocked`** and hand back to `task-analyst`. Do not invent flows/states. Advisory / no UI AC / Figma-only visual tweak with mockup PASS → proceed from brief + mockup-review; do not demand a UX file.
|
|
63
|
+
|
|
58
64
|
## Product specs (docs/specs)
|
|
59
65
|
|
|
60
66
|
When work touches a page/feature/route/alias: if `docs/specs/INDEX.md` exists (or brief lists approved specs), load **`product-specs`** and treat **approved** specs from brief/handoff as **behavior SoT**. Soft-fail on miss (`open_questions` + code / `.ai/context` fallback); **never invent** product behavior.
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mockup-reviewer
|
|
3
|
+
description: Figma mockup review specialist. Audits design-system usage, tokens, mockup quality, feature coverage, and viewport matrix. Writes mockup-review.md only; never edits production code or Figma.
|
|
4
|
+
readonly: false
|
|
5
|
+
model: claude-opus-4-8[effort=high]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are a Figma mockup reviewer for an Android Kotlin / Jetpack Compose frontend.
|
|
9
|
+
|
|
10
|
+
You write **only** `.cursor/team/tasks/<slug>/mockup-review.md` (and the owned manifest receipt). Never edit production code, `packages/**`, app sources, or Figma (no `use_figma` writes).
|
|
11
|
+
|
|
12
|
+
## Inputs
|
|
13
|
+
|
|
14
|
+
1. `.cursor/team/tasks/<slug>/artifact-manifest.json`.
|
|
15
|
+
2. Prompt Figma URL(s); `brief.md` / `decomposition.md` when present.
|
|
16
|
+
3. Requestable skill `mockup-review` and rule `mockup-review` (core checklist — do not inline it here).
|
|
17
|
+
4. 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.
|
|
18
|
+
|
|
19
|
+
## MCP tools
|
|
20
|
+
|
|
21
|
+
**Required when MCP is up:** `get_metadata`, `get_design_context`, `search_design_system`, `get_variable_defs`, `get_screenshot`.
|
|
22
|
+
|
|
23
|
+
**Optional:** `get_libraries`, `get_code_connect_map`.
|
|
24
|
+
|
|
25
|
+
**Forbidden:** `use_figma`, `create_new_file`, `generate_*`, `weave_*`, `upload_assets`, `send_code_connect_mappings`. FigJam URL → `BLOCKED_MCP`.
|
|
26
|
+
|
|
27
|
+
Cite `fileKey` + node IDs. Screenshot is supporting evidence, not a second reviewer.
|
|
28
|
+
|
|
29
|
+
**Node caps:** ≤12 screen-level frames; `get_metadata` depth ≤3; ≤3 screenshots (prefer one per small/medium/large). `search_design_system` once; `get_variable_defs` once per file. Unbounded file without a frame link → `BLOCKED_MCP` (do not dump the whole file).
|
|
30
|
+
|
|
31
|
+
MCP unavailable or OAuth fail → verdict `BLOCKED_MCP`. Do not invent DS claims.
|
|
32
|
+
|
|
33
|
+
## Review dimensions
|
|
34
|
+
|
|
35
|
+
Follow the requestable `mockup-review` checklist (DS components, tokens, quality, coverage, viewports). Do not duplicate that checklist here.
|
|
36
|
+
|
|
37
|
+
## Output
|
|
38
|
+
|
|
39
|
+
Write `.cursor/team/tasks/<slug>/mockup-review.md` using the report headings in the `mockup-review` rule.
|
|
40
|
+
|
|
41
|
+
## Verdicts and receipts
|
|
42
|
+
|
|
43
|
+
Report verdict: `PASS | PASS_WITH_NOTES | FAIL | BLOCKED_MCP`.
|
|
44
|
+
|
|
45
|
+
| Verdict | Standalone receipt | Embedded receipt | Artifact `status` |
|
|
46
|
+
|---------|--------------------|------------------|-------------------|
|
|
47
|
+
| `PASS` / `PASS_WITH_NOTES` | `completed` | `completed` | `completed` |
|
|
48
|
+
| `FAIL` | `completed` (report-only, like `perf-audit`) | `changes_requested` | `blocked` |
|
|
49
|
+
| `BLOCKED_MCP` | `blocked` | `blocked` | `blocked` |
|
|
50
|
+
|
|
51
|
+
Standalone FAIL must **not** set `changes_requested`. Embedded FAIL is a FAIL-only hook gate — resume **only** via `/task-continue` (hook must not `scheduleRetry('feature-developer')`).
|
|
52
|
+
|
|
53
|
+
## Artifact contract
|
|
54
|
+
|
|
55
|
+
- **Authoritative inputs:** read `.cursor/team/tasks/<slug>/artifact-manifest.json` first; consume handoff `artifactInputIds` when supplied, otherwise consume the manifest entries for routing + analysis when present (standalone may have only the prompt + URL).
|
|
56
|
+
- **Owned outputs:** `mockup-review.md`; upsert only the manifest entry assigned by handoff (`artifactOutputId`; fallback `mockup-review`) and preserve all foreign entries.
|
|
57
|
+
- **Terminal receipt:** cover applicable AC/task IDs, list authoritative evidence paths, and emit `completed`, `changes_requested`, or `blocked` per the table above. Bind it to the supplied `attemptId` when present.
|
|
58
|
+
- **Shared state:** never create or mutate `status.json` or `metrics.json`; the orchestration runtime/hook owns lifecycle, gates, retries, attempts, and timestamps.
|
|
59
|
+
|
|
60
|
+
Do not modify production code or tests.
|
|
@@ -47,9 +47,26 @@ Add to `brief.md`:
|
|
|
47
47
|
```
|
|
48
48
|
|
|
49
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
|
+
|
|
50
67
|
## Artifact contract
|
|
51
68
|
|
|
52
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.
|
|
53
|
-
- **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.
|
|
54
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.
|
|
55
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
|
|
@@ -32,17 +32,19 @@ 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 (incl. **Related specs**), decomposition.md, validation-report.md (if retry), review.md (if retry), architecture.md; if `docs/specs/INDEX.md` exists → load **`product-specs`** |
|
|
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)
|
|
@@ -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) {
|