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 +120 -113
- package/agents/chain.json +27 -0
- package/agents/manifests/anuj.json +23 -0
- package/agents/manifests/arjun.json +25 -0
- package/agents/manifests/design-critic.json +21 -0
- package/agents/manifests/meera.json +23 -0
- package/agents/manifests/noor.json +24 -0
- package/agents/manifests/persona-orchestrator.json +17 -0
- package/agents/manifests/priya.json +23 -0
- package/agents/manifests/raj.json +22 -0
- package/agents/manifests/ux-story-gate.json +23 -0
- package/agents/manifests/zara.json +24 -0
- package/agents/router.json +64 -0
- package/agents/session-schema.json +42 -0
- package/dist/bin/cli.js +1 -1
- package/dist/lib/install.js +1 -1
- package/dist/lib/knowledge.js +1 -1
- package/dist/lib/orchestrator/run.js +2 -0
- package/dist/lib/research.js +2 -0
- package/dist/lib/session.js +2 -0
- package/package.json +6 -3
- package/skills/anuj/SKILL.md +15 -0
- package/skills/arjun/SKILL.md +18 -8
- package/skills/design-critic/SKILL.md +33 -4
- package/skills/meera/SKILL.md +17 -4
- package/skills/noor/SKILL.md +21 -0
- package/skills/persona-orchestrator/SKILL.md +117 -0
- package/skills/priya/SKILL.md +10 -0
- package/skills/raj/SKILL.md +10 -0
- package/skills/ux-story-gate/SKILL.md +111 -3
- package/skills/zara/SKILL.md +10 -0
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
|
-
| `/
|
|
42
|
-
| `/
|
|
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
|
|
52
|
-
| `/meera` | Business Agent | Retention, ARR, GTM lever, adoption risk
|
|
53
|
-
| `/priya` | Feasibility Agent | Engineering effort (T-shirt sizing, 2-axis model), state machine traps
|
|
54
|
-
| `/zara` | Delight Agent |
|
|
55
|
-
| `/noor` | IA Architect | Minimalist
|
|
56
|
-
| `/anuj` | Power-User Advocate | Dense
|
|
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
|
|
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
|
-
##
|
|
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
|
-
|
|
94
|
+
**Portable agent graph** (same manifests for Cursor / Claude / Codex / CLI):
|
|
71
95
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
-
|
|
104
|
+
**Standalone runtime (v2):**
|
|
78
105
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
-
|
|
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
|
-
|
|
97
|
-
|
|
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
|
-
**
|
|
100
|
-
|
|
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
|
-
##
|
|
135
|
+
## UX Story Gate — How it works
|
|
136
|
+
|
|
137
|
+
`/ux-story-gate` is the task-first gate for any screen evaluation:
|
|
105
138
|
|
|
106
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
#
|
|
143
|
-
npx analyzthis_design
|
|
144
|
-
npx analyzthis_design --target
|
|
145
|
-
npx analyzthis_design --
|
|
146
|
-
npx analyzthis_design --target all
|
|
147
|
-
npx analyzthis_design --
|
|
148
|
-
|
|
149
|
-
#
|
|
150
|
-
npx analyzthis_design
|
|
151
|
-
npx analyzthis_design
|
|
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
|
-
|
|
191
|
+
# Research
|
|
192
|
+
npx analyzthis_design research --url <url>
|
|
193
|
+
npx analyzthis_design research --query <text>
|
|
170
194
|
|
|
171
|
-
|
|
172
|
-
|
|
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
|
-
|
|
193
|
-
|
|
204
|
+
agents/ Portable MoE graph (manifests, router, chain, session schema)
|
|
205
|
+
bin/cli.js CLI entry point
|
|
194
206
|
lib/
|
|
195
|
-
install.js
|
|
196
|
-
knowledge.js
|
|
197
|
-
|
|
198
|
-
|
|
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
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
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
|
+
}
|