analyzthis_design 1.6.0 → 1.8.0

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Analyzthis_Design
2
2
 
3
- A set of AI design personas and a task-first evaluation framework that plugs into Cursor, Claude Code, and Codex CLI as slash commands.
3
+ A set of AI design personas and a task-first evaluation framework that plugs into Cursor, Claude Code, and Codex CLI as slash commands — plus an agentic MoE router with shared session state so you can call the same graph from any IDE or from the CLI.
4
4
 
5
5
  Install once. Run structured UX critiques, multi-phase ideation, and task-grounded screen reviews — directly inside your AI chat.
6
6
 
@@ -38,150 +38,162 @@ npx analyzthis_design --target all
38
38
 
39
39
  | Command | What it does |
40
40
  |---|---|
41
- | `/ux-story-gate` | **Recommended first step.** Discovers PRDs and user stories from your knowledge bank and repo, builds a task map, routes to the right personas, and synthesises findings by task with P0/P1/P2 priorities. |
42
- | `/design-critic` | 4-persona critique `SHIP / REVISE / BLOCK` verdict with a Composite Score out of 20. |
41
+ | `/persona-orchestrator` | **Recommended agentic entry point.** Loads MoE router + session state, runs ux-story-gate intake, executes the right persona chain, enforces DS / hierarchy / verify gates, synthesises a SHIP/REVISE/BLOCK verdict. |
42
+ | `/ux-story-gate` | Task-first gate: discovers PRDs, DS/Figma discovery, MoE routing, browser verify, assess-only mode. |
43
+ | `/design-critic` | 4-persona critique → `SHIP / REVISE / BLOCK` verdict with a Composite Score out of 20 + Information Hierarchy Gate. |
43
44
  | `/ux-ideator` | 6-phase ideation → two competing IA concepts, deliberation, delight pass, feasibility check. |
44
45
 
45
46
  ### 7 Individual Personas
46
47
 
47
- Invoke directly for targeted, already-grounded questions. For full screen evaluation, prefer `/ux-story-gate`.
48
+ Invoke directly for targeted, already-grounded questions. For full screen evaluation, prefer `/persona-orchestrator` or `/ux-story-gate`.
48
49
 
49
50
  | Command | Persona | What they evaluate |
50
51
  |---|---|---|
51
- | `/arjun` | UX Agent | UX Honeycomb (7 dimensions, A–F): Useful, Usable, Findable, Credible, Accessible, Desirable, Valuable |
52
- | `/meera` | Business Agent | Retention, ARR, GTM lever, adoption risk by customer segment |
53
- | `/priya` | Feasibility Agent | Engineering effort (T-shirt sizing, 2-axis model), state machine traps, implementation risks |
54
- | `/zara` | Delight Agent | Picks exactly ONE peak delight moment — or says "speed is the craft" for working surfaces |
55
- | `/noor` | IA Architect | Minimalist, progressive-disclosure wireframe Concept A, ≤3 nav levels |
56
- | `/anuj` | Power-User Advocate | Dense, expert-optimized wireframeConcept B, bulk actions, keyboard shortcuts |
52
+ | `/arjun` | UX + Visual Design | UX Honeycomb + Visual Design Audit (hierarchy, color, type, spacing, components, style fit, micro-interactions) |
53
+ | `/meera` | Business Agent | Retention, ARR, GTM lever, adoption risk; hierarchy vs north-star check |
54
+ | `/priya` | Feasibility Agent | Engineering effort (T-shirt sizing, 2-axis model), state machine traps |
55
+ | `/zara` | Delight Agent | Exactly ONE peak delight moment — never contrast/token recovery (routes to DS Gate + Arjun) |
56
+ | `/noor` | IA Architect | Minimalist Concept A + declared ranked information hierarchy |
57
+ | `/anuj` | Power-User Advocate | Dense Concept B — bulk actions, keyboard shortcuts, hierarchy kept prominent |
57
58
  | `/raj` | Arbitrator | Resolves persona stalemates using 5 ranked product principles. Never speaks first. |
58
59
 
59
60
  ### Supporting skills
60
61
 
61
62
  | Command | Purpose |
62
63
  |---|---|
63
- | `/design-personas` | Session context template — fill in once before a session to ground all 7 personas in project-specific data |
64
+ | `/design-personas` | Session context template — fill in once before a session |
64
65
  | `/knowledge-bank` | Auto-populated from your connected vault. All personas read this first. |
66
+ | `/design-reference` | CSV reference data (colors, typography, UX guidelines, stacks, …) |
65
67
 
66
68
  ---
67
69
 
68
- ## UX Story Gate — How it works
70
+ ## Agentic system (v1.8)
71
+
72
+ ```
73
+ User ask / Figma URL
74
+
75
+ /persona-orchestrator
76
+
77
+ ux-story-gate Phases 0–1.5 (PRD + DS/Figma + MoE router)
78
+
79
+ MoE subset OR design-critic / ideation chain
80
+
81
+ Hard gates: DS tokens → Information Hierarchy → Browser verify
82
+
83
+ Session state persisted → SHIP / REVISE / BLOCK
84
+ ```
85
+
86
+ **Shared session state** lives at `~/.analyzthis_design/sessions/{project-id}/session-state.json` so Ask→Agent turns do not re-derive the task map, DS checklist, or routing decision.
87
+
88
+ ```bash
89
+ npx analyzthis_design session init
90
+ npx analyzthis_design session show
91
+ npx analyzthis_design session reset
92
+ ```
69
93
 
70
- `/ux-story-gate` is the task-first entry point for any screen evaluation. It runs in 5 phases:
94
+ **Portable agent graph** (same manifests for Cursor / Claude / Codex / CLI):
71
95
 
72
- **Phase 0 — PRD Discovery (automatic)**
73
- Before asking you anything, it scans:
74
- 1. Your connected knowledge bank for user stories, PRDs, acceptance criteria
75
- 2. The current repo for `PRD*.md`, `docs/**/*.md`, `requirements/*.md`, and any file containing "user story / acceptance criteria / done when"
96
+ ```
97
+ agents/
98
+ manifests/ # one JSON per persona + orchestrator
99
+ router.json # MoE problem-type expert list
100
+ chain.json # default + ideation sequential graphs
101
+ session-schema.json
102
+ ```
76
103
 
77
- It builds a draft task map from what it finds and asks you to confirm — you correct, not fill in from scratch.
104
+ **Standalone runtime (v2):**
78
105
 
79
- **Phase 1 — Task Map Gate**
80
- If no PRD context is found anywhere, it asks for the task map manually:
81
- - Which persona? (e.g. Retailer Admin, Media Sales)
82
- - What task? (verb + object)
83
- - How often? (daily / weekly / one-time)
84
- - Done when?
85
- - Fails when?
106
+ ```bash
107
+ # Print routing only (no API calls)
108
+ npx analyzthis_design run --task "Fix contrast on landing page" --dry-run
86
109
 
87
- **Phase 2 Field Veto Pass**
88
- Every field, button, and section on the screen gets a verdict:
89
- - Keep maps to a task
90
- - ❌ Cut — no task owner
91
- - ⚠️ Clarify — ambiguous
110
+ # Call Anthropic / OpenAI per persona step
111
+ export ANTHROPIC_API_KEY=sk-...
112
+ npx analyzthis_design run --task "Review this screen" --figma https://figma.com/... --provider anthropic
113
+ ```
92
114
 
93
- **Phase 3 Scale & States**
94
- Forces declaration of scale (rows/entities), and checks for Empty / Error / Loading / Edge states before personas run.
115
+ Provider defaults live in `~/.analyzthis_design/config.json`:
95
116
 
96
- **Phase 4 — Persona Routing**
97
- Routes to the right personas based on task characteristics — not screen type.
117
+ ```json
118
+ {
119
+ "orchestrator": { "provider": "anthropic", "model": "claude-sonnet-4-20250514" },
120
+ "research": { "provider": "https://example.com/search?q={query}" }
121
+ }
122
+ ```
98
123
 
99
- **Phase 5 — Synthesis**
100
- A Task × Finding table with P0 / P1 / P2 priorities and a build-ready verdict.
124
+ **Web research:**
125
+
126
+ ```bash
127
+ npx analyzthis_design research --url https://example.com/design-tokens
128
+ npx analyzthis_design research --query "EY design system tokens"
129
+ ```
130
+
131
+ Writes to `~/.analyzthis_design/sessions/{id}/web-context.md` and merges into the knowledge bank on `sync`.
101
132
 
102
133
  ---
103
134
 
104
- ## Knowledge BankConnect your vault
135
+ ## UX Story Gate How it works
136
+
137
+ `/ux-story-gate` is the task-first gate for any screen evaluation:
105
138
 
106
- The knowledge bank lets you connect an Obsidian vault or any markdown folder so that personas read your actual project context — brand guidelines, design decisions, PRDs, research — before forming any opinion.
139
+ | Phase | What it does |
140
+ |---|---|
141
+ | 0 | PRD discovery from knowledge bank + repo |
142
+ | 0.5 | DS / Figma discovery + DS Token Checklist (exit criteria) |
143
+ | 1 | Task map intake gate |
144
+ | 1.5 | MoE problem-type router → writes `routing_decision` to session state |
145
+ | 2 | Field veto pass |
146
+ | 3 | Scale & states declaration |
147
+ | 4 | Per-task persona routing |
148
+ | 4.5 | Browser verify gate (navigate → snapshot → primary flow → mobile+desktop screenshot) |
149
+ | 5 | Task × Finding synthesis |
150
+ | 5.5 | Assess-only mode — no code changes until you say build / implement / apply |
151
+
152
+ ---
153
+
154
+ ## Knowledge Bank — Connect your vault
107
155
 
108
156
  ```bash
109
- # Connect a vault (all notes)
110
157
  npx analyzthis_design connect --vault ~/Documents/MyVault
111
-
112
- # Connect with tag filter (only notes tagged #design, #brand, #prd)
113
158
  npx analyzthis_design connect --vault ~/vault --tags design,brand,prd,product
114
-
115
- # Connect with folder filter
116
159
  npx analyzthis_design connect --vault ~/vault --include Design,Brand,PRDs,Research
117
-
118
- # Sync to Cursor
119
160
  npx analyzthis_design sync
120
-
121
- # Sync to all tools
122
161
  npx analyzthis_design sync --target all
123
-
124
- # Check what's connected
125
162
  npx analyzthis_design status
126
-
127
- # Remove a source
128
163
  npx analyzthis_design disconnect --vault ~/Documents/MyVault
129
164
  ```
130
165
 
131
- Once synced, the knowledge bank is auto-read at the start of every persona session. Your project-specific context takes full precedence over built-in persona defaults.
166
+ PRDs and user stories are surfaced at the top of the knowledge bank. Brand / design-system notes feed Phase 0.5. Web research merges under **Web Research Context**.
132
167
 
133
- **PRDs and user stories** in your vault are automatically detected and surfaced at the top of the knowledge bank — `ux-story-gate` reads them in Phase 0 to build the task map without you having to type it out.
134
-
135
- Config is stored at `~/.analyzthis_design/config.json` — global across all projects.
168
+ Config: `~/.analyzthis_design/config.json`.
136
169
 
137
170
  ---
138
171
 
139
172
  ## CLI Reference
140
173
 
141
174
  ```bash
142
- # ── Install ────────────────────────────────────────────────────────────────
143
- npx analyzthis_design # install for Cursor
144
- npx analyzthis_design --target claude # install for Claude Code
145
- npx analyzthis_design --target codex # install for Codex CLI
146
- npx analyzthis_design --target all # install for all tools
147
- npx analyzthis_design --force # overwrite existing skills
148
-
149
- # ── Remove ─────────────────────────────────────────────────────────────────
150
- npx analyzthis_design remove # remove from Cursor
151
- npx analyzthis_design remove --target all # remove from all tools
152
-
153
- # ── List ───────────────────────────────────────────────────────────────────
154
- npx analyzthis_design list # show Cursor installs
155
- npx analyzthis_design list --target all # show all tool installs
156
-
157
- # ── Knowledge bank ─────────────────────────────────────────────────────────
158
- npx analyzthis_design connect --vault <path>
159
- npx analyzthis_design connect --vault <path> --tags design,prd,brand
160
- npx analyzthis_design connect --vault <path> --include Design,PRDs,Research
161
- npx analyzthis_design sync
162
- npx analyzthis_design sync --target all
175
+ # Install / remove / list
176
+ npx analyzthis_design
177
+ npx analyzthis_design --target all
178
+ npx analyzthis_design --force
179
+ npx analyzthis_design remove --target all
180
+ npx analyzthis_design list --target all
181
+
182
+ # Knowledge bank
183
+ npx analyzthis_design connect --vault <path> [--tags ...] [--include ...]
184
+ npx analyzthis_design sync [--target all]
163
185
  npx analyzthis_design disconnect --vault <path>
164
186
  npx analyzthis_design status
165
- ```
166
187
 
167
- ---
188
+ # Session (agentic)
189
+ npx analyzthis_design session init|show|reset [--project id] [--all]
168
190
 
169
- ## How it fits together
191
+ # Research
192
+ npx analyzthis_design research --url <url>
193
+ npx analyzthis_design research --query <text>
170
194
 
171
- ```
172
- Your vault / repo PRDs
173
-
174
- knowledge bank ←── npx analyzthis_design sync
175
-
176
- /ux-story-gate
177
-
178
- Phase 0: read knowledge bank + scan repo for PRDs
179
-
180
- Build task map (or confirm draft from PRDs)
181
-
182
- Route to: /noor /anuj /arjun (+/meera /zara as needed)
183
-
184
- Task × Finding table → P0 / P1 / P2 verdict
195
+ # Standalone orchestrator
196
+ npx analyzthis_design run --task "..." [--figma URL] [--provider anthropic|openai] [--dry-run] [--output path]
185
197
  ```
186
198
 
187
199
  ---
@@ -189,28 +201,22 @@ Your vault / repo PRDs
189
201
  ## Repository structure
190
202
 
191
203
  ```
192
- bin/
193
- cli.js CLI entry point
204
+ agents/ Portable MoE graph (manifests, router, chain, session schema)
205
+ bin/cli.js CLI entry point
194
206
  lib/
195
- install.js Skill installation logic (copies to ~/.cursor/skills/ etc.)
196
- knowledge.js Vault reading, sync, PRD categorisation
197
- scripts/
198
- obfuscate.js Build step — obfuscates lib/ and bin/ into dist/ before publish
207
+ install.js Skill installation
208
+ knowledge.js Vault sync + web-context merge
209
+ session.js Shared session-state.json
210
+ research.js URL / query web-context.md
211
+ orchestrator/run.js Standalone LLM runtime (v2)
212
+ scripts/obfuscate.js Build step → dist/
199
213
  skills/
200
- arjun/ UX Agent Honeycomb scoring
201
- meera/ Business Agent retention, ARR, GTM
202
- priya/ Feasibility Agent effort sizing
203
- zara/ Delight Agent — peak-end moment
204
- noor/ IA Architect minimalist Concept A
205
- anuj/ Power-User Advocate — dense Concept B
206
- raj/ Arbitrator — stalemate resolution
207
- design-critic/ Orchestrator — 4-persona critique
208
- ux-ideator/ Orchestrator — 6-phase ideation
209
- ux-story-gate/ Orchestrator — task-first gate + PRD discovery
210
- design-personas/ Session context template
211
- knowledge-bank/ Auto-populated from connected vault
212
- design-reference/ 12 CSV files — colors, typography, UX guidelines,
213
- component patterns, charts, icons, 16 framework stacks
214
+ persona-orchestrator/ Agentic entry point
215
+ ux-story-gate/ Task-first gate + DS/MoE/verify/assess phases
216
+ design-critic/ 4-persona critique + hierarchy gate
217
+ ux-ideator/ 6-phase ideation
218
+ arjun/ meera/ priya/ zara/ noor/ anuj/ raj/
219
+ design-personas/ knowledge-bank/ design-reference/
214
220
  ```
215
221
 
216
222
  ---
@@ -220,6 +226,7 @@ skills/
220
226
  - Node.js 16+
221
227
  - [Cursor](https://cursor.com) with Agent Mode (for `/skill` commands)
222
228
  - Claude Code or Codex CLI if using those targets
229
+ - For `run` (non–dry-run): `ANTHROPIC_API_KEY` or `OPENAI_API_KEY`
223
230
 
224
231
  ---
225
232
 
@@ -0,0 +1,27 @@
1
+ {
2
+ "description": "Default sequential graph for a full multi-persona critique (design-critic). The MoE router in router.json can select a subset of this chain for narrower asks instead of running it end to end.",
3
+ "default_chain": [
4
+ { "step": 1, "persona": "arjun", "handoff_from": null, "handoff_to": "meera" },
5
+ { "step": 2, "persona": "meera", "handoff_from": "arjun", "handoff_to": "priya" },
6
+ { "step": 3, "persona": "priya", "handoff_from": "meera", "handoff_to": "zara" },
7
+ { "step": 4, "persona": "zara", "handoff_from": "priya", "handoff_to": null }
8
+ ],
9
+ "ideation_chain": [
10
+ { "step": 1, "persona": "meera", "handoff_to": ["noor", "anuj"] },
11
+ { "step": 2, "persona": "noor", "handoff_from": "meera", "handoff_to": "arjun" },
12
+ { "step": 2, "persona": "anuj", "handoff_from": "meera", "handoff_to": "arjun" },
13
+ { "step": 3, "persona": "arjun", "handoff_from": ["noor", "anuj"], "handoff_to": "zara" },
14
+ { "step": 4, "persona": "zara", "handoff_from": "arjun", "handoff_to": "priya" },
15
+ { "step": 5, "persona": "priya", "handoff_from": "zara", "handoff_to": "raj" },
16
+ { "step": 6, "persona": "raj", "handoff_from": "priya", "handoff_to": null }
17
+ ],
18
+ "gates": [
19
+ { "name": "ds_gate", "runs": "before persona chain (ux-story-gate Phase 0.5)" },
20
+ { "name": "information_hierarchy_gate", "runs": "after persona chain, before re-evaluation/BLOCK escalation" },
21
+ { "name": "verify_gate", "runs": "after persona chain, before synthesis (ux-story-gate Phase 4.5)" }
22
+ ],
23
+ "escalation": {
24
+ "condition": "stalemate or BLOCK verdict from any persona",
25
+ "route_to": "raj"
26
+ }
27
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "id": "anuj",
3
+ "role": "power_user",
4
+ "system_skill": "skills/anuj/SKILL.md",
5
+ "inputs": ["task_map", "session_context", "information_hierarchy"],
6
+ "outputs": ["concept_b_wireframe"],
7
+ "allowed_tools": ["design-reference", "stacks"],
8
+ "allowed_jobs": [
9
+ "audit density, bulk actions, keyboard shortcuts for daily-use surfaces",
10
+ "produce Concept B wireframe",
11
+ "keep rank #1 of the declared information hierarchy prominent even at full density"
12
+ ],
13
+ "forbidden_jobs": [
14
+ "propose density audits for surfaces with task Frequency != daily/weekly",
15
+ "implement code without explicit build approval"
16
+ ],
17
+ "routing_triggers": ["daily_use", "data_density", "bulk_actions", "keyboard_shortcuts"],
18
+ "never_route_for": ["one_time_use_surfaces", "learning_products_without_daily_frequency"],
19
+ "chain_position": 1,
20
+ "handoff_from": [],
21
+ "handoff_to": ["arjun"],
22
+ "requires_session_state": true
23
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "id": "arjun",
3
+ "role": "ux_visual",
4
+ "system_skill": "skills/arjun/SKILL.md",
5
+ "inputs": ["task_map", "session_context", "ds_checklist", "figma_context", "information_hierarchy"],
6
+ "outputs": ["ux_critique", "visual_audit", "combined_score"],
7
+ "allowed_tools": ["design-reference", "browser_verify", "figma_mcp"],
8
+ "allowed_jobs": [
9
+ "UX Honeycomb critique",
10
+ "Visual Design Audit (hierarchy, color, typography, spacing, components, style fit, micro-interactions)",
11
+ "diagnose visual issues against declared information hierarchy and DS tokens"
12
+ ],
13
+ "forbidden_jobs": [
14
+ "brand-system recovery as a primary job (diagnostic only — cite tokens, do not ship !important overrides)",
15
+ "delight pass (hand off to Zara)",
16
+ "implement code without explicit build approval"
17
+ ],
18
+ "routing_triggers": ["ux", "accessibility", "responsive", "interaction_bug", "visual_quality"],
19
+ "never_route_for": ["business_priority", "build_effort", "delight_moment"],
20
+ "chain_position": 2,
21
+ "handoff_from": ["noor"],
22
+ "handoff_to": ["meera"],
23
+ "requires_session_state": true,
24
+ "hard_gates": ["ds_gate", "information_hierarchy_gate"]
25
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "design-critic",
3
+ "role": "orchestrator",
4
+ "system_skill": "skills/design-critic/SKILL.md",
5
+ "inputs": ["task_map", "session_context", "figma_context", "ds_checklist"],
6
+ "outputs": ["composite_score", "task_finding_table", "verdict"],
7
+ "allowed_tools": ["design-reference", "browser_verify", "figma_mcp"],
8
+ "allowed_jobs": [
9
+ "run the full persona chain (Arjun -> Meera -> Priya -> Zara) for a full screen review",
10
+ "enforce the Information Hierarchy Gate",
11
+ "escalate to Raj on stalemate/BLOCK"
12
+ ],
13
+ "forbidden_jobs": [
14
+ "run without a completed ux-story-gate pass",
15
+ "implement code without explicit build approval"
16
+ ],
17
+ "routing_triggers": ["full_screen_review", "multi_persona_critique"],
18
+ "chain": ["arjun", "meera", "priya", "zara"],
19
+ "escalates_to": "raj",
20
+ "requires_session_state": true
21
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "id": "meera",
3
+ "role": "business",
4
+ "system_skill": "skills/meera/SKILL.md",
5
+ "inputs": ["task_map", "session_context", "arjun_output", "information_hierarchy"],
6
+ "outputs": ["business_impact", "hierarchy_metric_check"],
7
+ "allowed_tools": ["design-reference"],
8
+ "allowed_jobs": [
9
+ "north-star metric impact assessment",
10
+ "segment / GTM / retention analysis",
11
+ "check that rank #1 on screen matches the actual business-critical driver"
12
+ ],
13
+ "forbidden_jobs": [
14
+ "visual or UX critique (route to Arjun)",
15
+ "implement code without explicit build approval"
16
+ ],
17
+ "routing_triggers": ["business_priority", "pricing", "access_control", "monetization", "retention"],
18
+ "never_route_for": ["visual_quality", "ia_structure"],
19
+ "chain_position": 3,
20
+ "handoff_from": ["arjun"],
21
+ "handoff_to": ["priya"],
22
+ "requires_session_state": true
23
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "id": "noor",
3
+ "role": "information_architect",
4
+ "system_skill": "skills/noor/SKILL.md",
5
+ "inputs": ["task_map", "session_context", "figma_context"],
6
+ "outputs": ["concept_a_wireframe", "information_hierarchy"],
7
+ "allowed_tools": ["design-reference"],
8
+ "allowed_jobs": [
9
+ "declare ranked information hierarchy",
10
+ "propose minimalist IA / progressive disclosure structure",
11
+ "produce Concept A wireframe"
12
+ ],
13
+ "forbidden_jobs": [
14
+ "brand token recovery",
15
+ "contrast / accessibility fixes (route to Arjun)",
16
+ "implement code without explicit build approval"
17
+ ],
18
+ "routing_triggers": ["structure", "ia", "navigation", "nested_ui", "wizard", "form"],
19
+ "never_route_for": ["brand", "contrast", "design_system_compliance"],
20
+ "chain_position": 1,
21
+ "handoff_from": [],
22
+ "handoff_to": ["arjun", "anuj"],
23
+ "requires_session_state": true
24
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "id": "persona-orchestrator",
3
+ "role": "entry_point",
4
+ "system_skill": "skills/persona-orchestrator/SKILL.md",
5
+ "inputs": ["user_ask", "figma_url"],
6
+ "outputs": ["session_state", "task_finding_table", "verdict"],
7
+ "allowed_tools": ["design-reference", "figma_mcp", "browser_verify", "knowledge-bank"],
8
+ "allowed_jobs": [
9
+ "single entry point for agentic runs: load router + session, run ux-story-gate, execute chain or MoE subset, run gates, synthesize verdict"
10
+ ],
11
+ "forbidden_jobs": [
12
+ "bypass ux-story-gate phases 0-1.5",
13
+ "implement code without explicit build approval (respect assess-only mode)"
14
+ ],
15
+ "reads": ["agents/router.json", "agents/chain.json", "agents/session-schema.json"],
16
+ "requires_session_state": true
17
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "id": "priya",
3
+ "role": "feasibility",
4
+ "system_skill": "skills/priya/SKILL.md",
5
+ "inputs": ["task_map", "session_context", "meera_output", "tech_stack"],
6
+ "outputs": ["feasibility_analysis"],
7
+ "allowed_tools": ["design-reference", "stacks"],
8
+ "allowed_jobs": [
9
+ "T-shirt sizing (two-axis: UI x State)",
10
+ "risk and blocker identification",
11
+ "simpler-alternative sizing (modal vs accordion vs wizard, etc.)"
12
+ ],
13
+ "forbidden_jobs": [
14
+ "visual or business critique",
15
+ "implement code without explicit build approval"
16
+ ],
17
+ "routing_triggers": ["build_effort", "implementation_risk", "modal_vs_wizard", "state_machine"],
18
+ "never_route_for": ["visual_quality", "delight_moment"],
19
+ "chain_position": 4,
20
+ "handoff_from": ["meera"],
21
+ "handoff_to": ["zara"],
22
+ "requires_session_state": true
23
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "id": "raj",
3
+ "role": "arbitrator",
4
+ "system_skill": "skills/raj/SKILL.md",
5
+ "inputs": ["session_context", "persona_outputs"],
6
+ "outputs": ["arbitration_verdict"],
7
+ "allowed_tools": ["design-reference"],
8
+ "allowed_jobs": [
9
+ "resolve stalemates between personas using the 5 product principles",
10
+ "issue final SHIP / REVISE / BLOCK when personas disagree"
11
+ ],
12
+ "forbidden_jobs": [
13
+ "run when there is no stalemate or BLOCK condition",
14
+ "implement code without explicit build approval"
15
+ ],
16
+ "routing_triggers": ["stalemate", "block", "conflicting_verdicts"],
17
+ "never_route_for": ["routine_single_persona_critique"],
18
+ "chain_position": 6,
19
+ "handoff_from": ["zara", "arjun", "meera", "priya", "noor", "anuj"],
20
+ "handoff_to": [],
21
+ "requires_session_state": true
22
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "id": "ux-story-gate",
3
+ "role": "orchestrator",
4
+ "system_skill": "skills/ux-story-gate/SKILL.md",
5
+ "inputs": ["user_ask", "prd_sources", "figma_context", "knowledge_bank"],
6
+ "outputs": ["task_map", "ds_checklist", "routing_decision", "session_state"],
7
+ "allowed_tools": ["design-reference", "figma_mcp", "browser_verify", "knowledge-bank"],
8
+ "allowed_jobs": [
9
+ "Phase 0: discover PRDs/user stories, build task map",
10
+ "Phase 0.5: DS/Figma discovery, DS token checklist",
11
+ "Phase 1: mental model of user personas",
12
+ "Phase 1.5: MoE routing decision",
13
+ "Phase 4.5: browser verify gate",
14
+ "Phase 5.5: assess-only mode gate"
15
+ ],
16
+ "forbidden_jobs": [
17
+ "skip phases 0-1.5 before handing off to persona chain"
18
+ ],
19
+ "routing_triggers": ["any_screen_or_flow_review"],
20
+ "hands_off_to": "persona-orchestrator",
21
+ "requires_session_state": true,
22
+ "mandatory_first_step": true
23
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "id": "zara",
3
+ "role": "delight",
4
+ "system_skill": "skills/zara/SKILL.md",
5
+ "inputs": ["task_map", "session_context", "priya_output", "ds_checklist"],
6
+ "outputs": ["delight_pass"],
7
+ "allowed_tools": ["design-reference"],
8
+ "allowed_jobs": [
9
+ "identify exactly ONE structural or surface delight moment",
10
+ "add delight on top of an already DS-compliant, hierarchy-correct foundation"
11
+ ],
12
+ "forbidden_jobs": [
13
+ "contrast fixes, token drift correction, or any brand/design-system recovery — these are out of scope for Zara; refuse and route to the DS Gate + Arjun",
14
+ "run before the ds_gate has passed",
15
+ "implement code without explicit build approval"
16
+ ],
17
+ "routing_triggers": ["delight_moment", "onboarding", "empty_state", "first_impression"],
18
+ "never_route_for": ["contrast", "brand_tokens", "design_system_compliance", "accessibility_fix"],
19
+ "requires_ds_gate_pass": true,
20
+ "chain_position": 5,
21
+ "handoff_from": ["priya"],
22
+ "handoff_to": [],
23
+ "requires_session_state": true
24
+ }