analyzthis_design 1.20.0 → 2.0.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.
Files changed (176) hide show
  1. package/README.md +167 -31
  2. package/agents/cards/anuj.md +1 -1
  3. package/agents/cards/arjun.md +1 -1
  4. package/agents/cards/chunk-planner.md +5 -0
  5. package/agents/cards/meera.md +1 -1
  6. package/agents/cards/mood-board.md +13 -0
  7. package/agents/cards/noor.md +1 -1
  8. package/agents/cards/priya.md +1 -1
  9. package/agents/cards/query-expander.md +17 -0
  10. package/agents/cards/raj.md +1 -1
  11. package/agents/cards/ranker.md +16 -0
  12. package/agents/cards/run-unchunked.md +7 -0
  13. package/agents/cards/zara.md +1 -1
  14. package/agents/chain.json +15 -0
  15. package/agents/manifests/anuj.json +1 -0
  16. package/agents/manifests/arjun.json +1 -0
  17. package/agents/manifests/chunk-planner.json +18 -0
  18. package/agents/manifests/kavi.json +1 -0
  19. package/agents/manifests/meera.json +1 -0
  20. package/agents/manifests/mood-board.json +23 -0
  21. package/agents/manifests/noor.json +1 -0
  22. package/agents/manifests/priya.json +1 -0
  23. package/agents/manifests/query-expander.json +13 -0
  24. package/agents/manifests/raj.json +1 -0
  25. package/agents/manifests/ranker.json +13 -0
  26. package/agents/manifests/run-unchunked.json +19 -0
  27. package/agents/manifests/zara.json +1 -0
  28. package/agents/router.json +14 -0
  29. package/agents/session-schema.json +27 -0
  30. package/dist/.github/ISSUE_TEMPLATE/persona-feedback.yml +75 -0
  31. package/dist/HOW-TO-USE.md +424 -0
  32. package/dist/README.md +858 -0
  33. package/dist/agents/cards/anuj.md +28 -0
  34. package/dist/agents/cards/arjun.md +29 -0
  35. package/dist/agents/cards/chunk-planner.md +5 -0
  36. package/dist/agents/cards/design-director.md +19 -0
  37. package/dist/agents/cards/devi.md +15 -0
  38. package/dist/agents/cards/kavi.md +26 -0
  39. package/dist/agents/cards/meera.md +27 -0
  40. package/dist/agents/cards/mood-board.md +13 -0
  41. package/dist/agents/cards/noor.md +28 -0
  42. package/dist/agents/cards/priya.md +27 -0
  43. package/dist/agents/cards/query-expander.md +17 -0
  44. package/dist/agents/cards/raj.md +29 -0
  45. package/dist/agents/cards/ranker.md +16 -0
  46. package/dist/agents/cards/run-unchunked.md +7 -0
  47. package/dist/agents/cards/zara.md +30 -0
  48. package/dist/agents/chain.json +76 -0
  49. package/dist/agents/deliberation-schema.json +44 -0
  50. package/dist/agents/design-spec-schema.json +111 -0
  51. package/dist/agents/manifests/anuj.json +32 -0
  52. package/dist/agents/manifests/arjun.json +47 -0
  53. package/dist/agents/manifests/chunk-planner.json +18 -0
  54. package/dist/agents/manifests/design-critic.json +21 -0
  55. package/dist/agents/manifests/design-director.json +26 -0
  56. package/dist/agents/manifests/devi.json +31 -0
  57. package/dist/agents/manifests/kavi.json +34 -0
  58. package/dist/agents/manifests/meera.json +32 -0
  59. package/dist/agents/manifests/mood-board.json +23 -0
  60. package/dist/agents/manifests/noor.json +33 -0
  61. package/dist/agents/manifests/persona-orchestrator.json +17 -0
  62. package/dist/agents/manifests/priya.json +32 -0
  63. package/dist/agents/manifests/query-expander.json +13 -0
  64. package/dist/agents/manifests/raj.json +31 -0
  65. package/dist/agents/manifests/ranker.json +13 -0
  66. package/dist/agents/manifests/run-unchunked.json +19 -0
  67. package/dist/agents/manifests/ux-story-gate.json +23 -0
  68. package/dist/agents/manifests/zara.json +33 -0
  69. package/dist/agents/router.json +99 -0
  70. package/dist/agents/session-schema.json +152 -0
  71. package/dist/bin/cli.js +1 -1
  72. package/dist/lib/cache.js +1 -1
  73. package/dist/lib/chunk-executor.js +1 -0
  74. package/dist/lib/chunk-models.js +1 -0
  75. package/dist/lib/chunk-planner.js +1 -0
  76. package/dist/lib/chunk-router.js +1 -0
  77. package/dist/lib/chunk-run.js +1 -0
  78. package/dist/lib/chunk-synthesis.js +1 -0
  79. package/dist/lib/chunk-telemetry.js +1 -0
  80. package/dist/lib/collect.js +1 -1
  81. package/dist/lib/cost.js +1 -1
  82. package/dist/lib/dedup.js +1 -0
  83. package/dist/lib/deliberation.js +1 -1
  84. package/dist/lib/design-spec.js +1 -1
  85. package/dist/lib/evolve.js +1 -0
  86. package/dist/lib/export.js +1 -1
  87. package/dist/lib/feedback-submit.js +1 -1
  88. package/dist/lib/feedback.js +1 -1
  89. package/dist/lib/host-llm.js +1 -1
  90. package/dist/lib/install.js +1 -1
  91. package/dist/lib/knowledge.js +1 -1
  92. package/dist/lib/lessons.js +1 -0
  93. package/dist/lib/moodboard.js +1 -0
  94. package/dist/lib/orchestrator/run.js +1 -1
  95. package/dist/lib/outcome.js +1 -0
  96. package/dist/lib/platforms.js +1 -1
  97. package/dist/lib/provider.js +1 -1
  98. package/dist/lib/query-expander.js +1 -0
  99. package/dist/lib/ranker.js +1 -0
  100. package/dist/lib/research.js +1 -1
  101. package/dist/lib/retrieve.js +1 -1
  102. package/dist/lib/session.js +1 -1
  103. package/dist/lib/source-discovery.js +1 -1
  104. package/dist/lib/synthesis.js +1 -1
  105. package/dist/lib/token-gate.js +1 -1
  106. package/dist/skills/anuj/SKILL.md +92 -0
  107. package/dist/skills/arjun/SKILL.md +291 -0
  108. package/dist/skills/chunk-planner/SKILL.md +45 -0
  109. package/dist/skills/collect-knowledge/SKILL.md +20 -0
  110. package/dist/skills/deliberation-protocol/SKILL.md +131 -0
  111. package/dist/skills/design-critic/SKILL.md +191 -0
  112. package/dist/skills/design-director/SKILL.md +181 -0
  113. package/dist/skills/design-personas/SKILL.md +100 -0
  114. package/dist/skills/design-reference/SKILL.md +83 -0
  115. package/dist/skills/design-reference/app-interface.csv +31 -0
  116. package/dist/skills/design-reference/charts.csv +26 -0
  117. package/dist/skills/design-reference/colors.csv +162 -0
  118. package/dist/skills/design-reference/google-fonts.csv +1924 -0
  119. package/dist/skills/design-reference/icons.csv +106 -0
  120. package/dist/skills/design-reference/landing.csv +35 -0
  121. package/dist/skills/design-reference/products.csv +162 -0
  122. package/dist/skills/design-reference/react-performance.csv +45 -0
  123. package/dist/skills/design-reference/stacks/angular.csv +51 -0
  124. package/dist/skills/design-reference/stacks/astro.csv +54 -0
  125. package/dist/skills/design-reference/stacks/flutter.csv +53 -0
  126. package/dist/skills/design-reference/stacks/html-tailwind.csv +56 -0
  127. package/dist/skills/design-reference/stacks/jetpack-compose.csv +53 -0
  128. package/dist/skills/design-reference/stacks/laravel.csv +51 -0
  129. package/dist/skills/design-reference/stacks/nextjs.csv +53 -0
  130. package/dist/skills/design-reference/stacks/nuxt-ui.csv +51 -0
  131. package/dist/skills/design-reference/stacks/nuxtjs.csv +59 -0
  132. package/dist/skills/design-reference/stacks/react-native.csv +52 -0
  133. package/dist/skills/design-reference/stacks/react.csv +54 -0
  134. package/dist/skills/design-reference/stacks/shadcn.csv +61 -0
  135. package/dist/skills/design-reference/stacks/svelte.csv +54 -0
  136. package/dist/skills/design-reference/stacks/swiftui.csv +51 -0
  137. package/dist/skills/design-reference/stacks/threejs.csv +54 -0
  138. package/dist/skills/design-reference/stacks/vue.csv +50 -0
  139. package/dist/skills/design-reference/styles.csv +85 -0
  140. package/dist/skills/design-reference/typography.csv +74 -0
  141. package/dist/skills/design-reference/ui-reasoning.csv +162 -0
  142. package/dist/skills/design-reference/ux-guidelines.csv +100 -0
  143. package/dist/skills/design-spec/SKILL.md +106 -0
  144. package/dist/skills/devi/SKILL.md +114 -0
  145. package/dist/skills/getting-started/SKILL.md +144 -0
  146. package/dist/skills/kavi/SKILL.md +118 -0
  147. package/dist/skills/knowledge-bank/SKILL.md +43 -0
  148. package/dist/skills/meera/SKILL.md +76 -0
  149. package/dist/skills/mood-board/SKILL.md +113 -0
  150. package/dist/skills/noor/SKILL.md +96 -0
  151. package/dist/skills/persona-orchestrator/SKILL.md +220 -0
  152. package/dist/skills/priya/SKILL.md +75 -0
  153. package/dist/skills/raj/SKILL.md +77 -0
  154. package/dist/skills/run-unchunked/SKILL.md +49 -0
  155. package/dist/skills/ux-ideator/SKILL.md +187 -0
  156. package/dist/skills/ux-story-gate/SKILL.md +353 -0
  157. package/dist/skills/zara/SKILL.md +85 -0
  158. package/dist/supabase/deliberation-config.example.json +15 -0
  159. package/dist/supabase/feedback-config.example.json +7 -0
  160. package/dist/supabase/migrations/001_persona_feedback.sql +54 -0
  161. package/package.json +2 -2
  162. package/skills/anuj/SKILL.md +1 -1
  163. package/skills/arjun/SKILL.md +1 -1
  164. package/skills/chunk-planner/SKILL.md +45 -0
  165. package/skills/design-critic/SKILL.md +2 -2
  166. package/skills/design-director/SKILL.md +1 -1
  167. package/skills/devi/SKILL.md +1 -1
  168. package/skills/getting-started/SKILL.md +12 -0
  169. package/skills/meera/SKILL.md +1 -1
  170. package/skills/mood-board/SKILL.md +113 -0
  171. package/skills/noor/SKILL.md +1 -1
  172. package/skills/persona-orchestrator/SKILL.md +37 -3
  173. package/skills/priya/SKILL.md +1 -1
  174. package/skills/run-unchunked/SKILL.md +49 -0
  175. package/skills/ux-ideator/SKILL.md +1 -1
  176. package/skills/zara/SKILL.md +1 -1
package/README.md CHANGED
@@ -4,33 +4,45 @@ A set of AI design personas and a task-first evaluation framework that plugs int
4
4
 
5
5
  Install once. Run structured UX critiques, multi-phase ideation, and task-grounded screen reviews — directly inside your AI chat. **No external LLM API keys required** for CLI orchestrator runs: **`/devi`** voices each persona from your host IDE (Cursor, Claude, etc.).
6
6
 
7
- **npm:** [analyzthis_design](https://www.npmjs.com/package/analyzthis_design) · **Current version:** 1.20.0
7
+ ## v2.0 chunked execution by default
8
+
9
+ `npx analyzthis_design run --task "..."` now uses a **frontier planner + cheap chunk models**:
10
+
11
+ 1. Frontier/strong model plans the task into small chunks.
12
+ 2. Each chunk runs on the cheapest capable model: local Ollama, free cloud APIs (Groq, Gemini, OpenRouter), or cheap cloud APIs with your keys.
13
+ 3. Outputs are merged into a final verdict.
14
+ 4. Telemetry learns which models work best for each chunk type.
15
+
16
+ Use `npx analyzthis_design run-unchunked` for the legacy single-pass orchestrator.
17
+
18
+ **npm:** [analyzthis_design](https://www.npmjs.com/package/analyzthis_design) · **Current version:** 2.0.0 · **Step-by-step guide:** [HOW-TO-USE.md](./HOW-TO-USE.md)
8
19
 
9
20
  ---
10
21
 
11
- ## Install
22
+ ## Quick start
12
23
 
13
24
  ```bash
14
- # Cursor (default) + cross-agent path on postinstall
25
+ # 1. Install slash commands (Cursor/Claude/Codex/Grok/Windsurf)
15
26
  npx analyzthis_design
16
27
 
17
- # Claude Code (skills dir + legacy commands)
18
- npx analyzthis_design --target claude
28
+ # 2. Run a task in v2.0 chunked mode (free/cheap models)
29
+ npx analyzthis_design run --task "Review invoice approval screen"
19
30
 
20
- # Codex CLI
21
- npx analyzthis_design --target codex
31
+ # 3. Or use legacy single-pass orchestrator
32
+ npx analyzthis_design run-unchunked --task "Review invoice approval screen" --provider host
33
+ ```
22
34
 
23
- # Grok Build (xAI)
24
- npx analyzthis_design --target grok
35
+ ### Install by target IDE
25
36
 
26
- # Windsurf Cascade
37
+ ```bash
38
+ npx analyzthis_design --target claude
39
+ npx analyzthis_design --target codex
40
+ npx analyzthis_design --target grok
27
41
  npx analyzthis_design --target windsurf
28
-
29
- # All supported hosts at once
30
42
  npx analyzthis_design --target all --force
31
43
  ```
32
44
 
33
- **After install:** type `/getting-started` in Cursor or Claude Code (or `@getting-started` in Windsurf). Re-print CLI help anytime with `npx analyzthis_design welcome`.
45
+ **After install:** type `/getting-started` in Cursor or Claude Code (or `@getting-started` in Windsurf). For a complete walkthrough, see [HOW-TO-USE.md](./HOW-TO-USE.md). Re-print CLI help anytime with `npx analyzthis_design welcome`.
34
46
 
35
47
  | Tool | Skills installed to | Invoke |
36
48
  |---|---|---|
@@ -205,9 +217,14 @@ Key fields after a run:
205
217
  | Field | Contents |
206
218
  |---|---|
207
219
  | `persona_outputs` | Each persona's text + parsed deliberation JSON |
220
+ | `full_prompts` | Exact `{ system, user }` prompts sent to the LLM (for training / auditing) |
221
+ | `structured_outputs` | Parsed grades, score, top fixes per persona |
222
+ | `covered_points` | Deduplicated findings across personas (redundancy suppression) |
223
+ | `task_type` | Canonical problem type from the router |
208
224
  | `deliberation` | `round_log`, `open_objections`, `consensus_reached`, `raj_escalated` |
209
225
  | `synthesis` | Composite scores, verdict, top 3, hierarchy gate |
210
226
  | `synthesis_markdown` | Phase 5 block for display / export |
227
+ | `outcome` | `inferred` + `confirmed` outcome per persona (for the evolution loop) |
211
228
  | `host_run` | Host-mode checkpoint when paused for Devi (`run_dir`, `checkpoint`) |
212
229
  | `metrics` | `llm_calls`, `deliberation_rounds`, `objections_raised`, token estimates |
213
230
 
@@ -227,31 +244,36 @@ agents/
227
244
  session-schema.json
228
245
  ```
229
246
 
230
- **Standalone runtime (v2):**
247
+ **v2.0 chunked runtime (default for `run`):**
231
248
 
232
249
  ```bash
233
- # Print routing + deliberation groups (no LLM calls)
234
- npx analyzthis_design run --task "Fix contrast on landing page" --dry-run
250
+ # Default: frontier planner + sequential chunk execution on free/cheap models
251
+ npx analyzthis_design run --task "Review invoice approval screen"
235
252
 
236
- # Host mode (default when no API keys) — Devi voices personas
237
- npx analyzthis_design run --task "Review invoice screen" --full
238
- npx analyzthis_design devi status
239
- npx analyzthis_design run --continue --task "Review invoice screen" --full
253
+ # Auto-detect local Ollama, otherwise use free cloud models
254
+ npx analyzthis_design run --task "Review invoice approval screen" --budget free
240
255
 
241
- # External API providers (optional)
242
- export ANTHROPIC_API_KEY=sk-...
243
- npx analyzthis_design run --task "Review this screen" --figma https://figma.com/... --provider anthropic
256
+ # Use your paid keys for cheap cloud models
257
+ npx analyzthis_design run --task "..." --budget cheap --provider together
258
+
259
+ # Limit parallelism / chunk count (sequential is default)
260
+ npx analyzthis_design run --task "..." --sequential --max-chunks 4
261
+ npx analyzthis_design run --task "..." --parallel --max-chunks 6
244
262
 
245
- # Force full chain, bypass router, tune deliberation
246
- npx analyzthis_design run --task "Full critique of onboarding" --full
247
- npx analyzthis_design run --task "Just check spacing" --experts arjun
248
- npx analyzthis_design run --task "..." --max-rounds 2 --satisfaction 0.5
249
- npx analyzthis_design run --task "..." --no-deliberate # legacy sequential handoff
263
+ # Legacy single-pass orchestrator (unchunked)
264
+ npx analyzthis_design run-unchunked --task "Review invoice approval screen" --full
265
+
266
+ # Host mode (no API keys) Devi voices personas via prompt queue
267
+ npx analyzthis_design run-unchunked --task "Review invoice screen" --full
268
+ npx analyzthis_design devi status
269
+ npx analyzthis_design run-unchunked --continue --task "Review invoice screen" --full
250
270
  ```
251
271
 
252
- **Provider resolution order:** explicit `--provider`configfirst available API key **`host`** (Devi).
272
+ **Chunk model selection:** Ollama auto-discoveredfree cloud (Groq/Gemini/OpenRouter free endpoints) cheap cloud with user keys. The **planner always runs on a frontier/strong model** and never on a cheap model; if no frontier provider is available, it falls back to the host model with a warning.
253
273
 
254
- Supported providers: `host` | `anthropic` | `openai` | `google` | `zai`
274
+ **Provider resolution order:** explicit `--provider` → config → first available API key → **`host`** (Devi) for unchunked; chunked mode also considers Ollama and free endpoints before paid.
275
+
276
+ Supported providers: `host` | `anthropic` | `openai` | `google` | `zai` | `ollama` | `groq` | `together` | `openrouter` | `deepseek`
255
277
 
256
278
  Provider defaults live in `~/.analyzthis_design/config.json`:
257
279
 
@@ -412,7 +434,7 @@ npx analyzthis_design feedback list
412
434
  npx analyzthis_design feedback export --persona arjun --all
413
435
  ```
414
436
 
415
- Writes `{ system_card, digest, user, assistant }` JSONL pairs to `~/.analyzthis_design/training/<persona>.jsonl` from every session where that persona's output was explicitly accepted.
437
+ `export-training` now emits richer training pairs: `{ system_card, system_prompt_full, user_prompt_full, digest, user, assistant, structured_output, outcome, task_type }`. The full prompts are captured automatically on every `run`, so fine-tuning datasets include the exact context the persona saw.
416
438
 
417
439
  **Correction export** writes `{ assistant_rejected, assistant_preferred, user_comment, tags }` to `~/.analyzthis_design/feedback/<persona>-corrections.jsonl` — useful when users were unhappy or had to rewrite persona output. Every entry is also appended to a global `corrections.jsonl` across projects.
418
440
 
@@ -420,6 +442,62 @@ Once a persona accumulates ~100–300 accepted pairs (and optionally correction
420
442
 
421
443
  ---
422
444
 
445
+ ## Self-evolving persona team (v1.21)
446
+
447
+ The system now captures every run, learns from accepted outputs + confirmed outcomes, and proposes improvements to its own prompts, reference data, and routing — **dry-run by default**, human review before any apply.
448
+
449
+ ```
450
+ Run → full prompts + structured output + outcome captured
451
+
452
+ Lessons extracted (accepted outputs) → ~/.analyzthis_design/lessons/<persona>.jsonl
453
+
454
+ Outcome confirmed (shipped / revised / blocked / missed)
455
+
456
+ evolve --extract → proposes:
457
+ - prompt patches (new canonical failure patterns per persona)
458
+ - reference-data rows (new product-type patterns)
459
+ - router patches (task_type → best-performing expert)
460
+
461
+ evolve --apply <patchId> (human review) → skill/CSV/router updated
462
+
463
+ Next run retrieves:
464
+ - per-persona knowledge slices (priority + fallback)
465
+ - past lessons for similar tasks
466
+ - query-expanded + ranked reference rows
467
+ ```
468
+
469
+ ### Retrieval stack
470
+
471
+ | Layer | What it does | Files |
472
+ |---|---|---|
473
+ | **Query expansion** | One cheap LLM call per run expands the task into search terms (product type, design domain, component, persona lens) | `lib/query-expander.js`, `agents/cards/query-expander.md` |
474
+ | **Per-persona ranking** | A second cheap LLM call per persona ranks the top 5 reference rows + knowledge notes for that persona's lens | `lib/ranker.js`, `agents/cards/ranker.md` |
475
+ | **Lessons retrieval** | Top-3 lessons from past accepted sessions, keyword-matched to the current task | `lib/lessons.js` |
476
+ | **Redundancy suppression** | Before each persona produces, it sees what prior personas already covered and is told to only add NEW insights | `lib/dedup.js`, `lib/deliberation.js` |
477
+ | **Per-persona KB slices** | `sync` now builds a filtered slice per persona (priority categories first, small fallback context at the end) | `lib/knowledge.js` |
478
+
479
+ ### Commands
480
+
481
+ ```bash
482
+ # Extract lessons + infer outcomes + propose patches (dry-run by default)
483
+ npx analyzthis_design evolve --extract [--window N] [--dry-run]
484
+
485
+ # Review a patch before applying
486
+ npx analyzthis_design evolve --apply <patchId> --dry-run
487
+
488
+ # Apply a patch after review (prompt / reference rows only; router patches need manual edit)
489
+ npx analyzthis_design evolve --apply <patchId>
490
+
491
+ # Outcome tracking
492
+ npx analyzthis_design outcome --infer [--window N] # auto-infer from next session
493
+ npx analyzthis_design outcome --pending # list inferred outcomes awaiting confirmation
494
+ npx analyzthis_design outcome --confirm --persona arjun --result shipped
495
+ ```
496
+
497
+ Config in `agents/chain.json` → `evolution` block: `extraction_window_days`, `min_lessons_for_patch`, `min_outcomes_for_router_patch`.
498
+
499
+ ---
500
+
423
501
  ## Persona feedback — corrections & unhappiness (v1.16)
424
502
 
425
503
  When a persona gets it wrong, you can record **what was wrong** and **how you fixed it**. This feeds future fine-tuning (negative / DPO pairs) alongside the existing positive `export-training` path.
@@ -637,6 +715,19 @@ npx analyzthis_design run --task "..." [--lite | --full] [--experts a,b]
637
715
  npx analyzthis_design run --task "..." [--deliberate | --no-deliberate] [--max-rounds N] [--satisfaction 0.4]
638
716
  npx analyzthis_design run --continue --task "..." # resume host-mode run after /devi
639
717
 
718
+ # Self-evolving team (v1.21)
719
+ npx analyzthis_design evolve --extract [--window N] [--dry-run]
720
+ npx analyzthis_design evolve --apply <patchId> [--dry-run]
721
+ npx analyzthis_design outcome --infer [--window N]
722
+ npx analyzthis_design outcome --pending
723
+ npx analyzthis_design outcome --confirm --persona <id> --result shipped|revised|blocked|missed
724
+
725
+ # Mood board (v1.22)
726
+ npx analyzthis_design moodboard create --task "..." [--auto] [--url <url> ...]
727
+ npx analyzthis_design moodboard critique --board <id>
728
+ npx analyzthis_design moodboard add --board <id> --url <url> --title "..." --tags a,b
729
+ npx analyzthis_design moodboard list
730
+
640
731
  # Devi — host LLM queue (v1.20)
641
732
  npx analyzthis_design devi status [--run path]
642
733
  npx analyzthis_design devi respond --run <run-dir> --step 001-arjun --file response.md
@@ -666,6 +757,20 @@ lib/
666
757
  research.js URL / query → web-context.md
667
758
  retrieve.js Filtered, citation-ready CSV row retrieval
668
759
  cache.js On-disk cache for retrieve/kb slices
760
+ chunk-models.js Curated free/cheap model pool + Ollama auto-discovery
761
+ chunk-planner.js Frontier/strong model chunk planner
762
+ chunk-router.js Cheapest capable model per chunk
763
+ chunk-executor.js Chunk execution with retry + fallback
764
+ chunk-synthesis.js Merge chunk outputs into final verdict
765
+ chunk-telemetry.js Per-chunk model quality tracking
766
+ chunk-run.js Top-level chunked execution coordinator
767
+ moodboard.js Mood-board engine: collect web/DS references, tag, deliberate
768
+ dedup.js Cross-persona redundancy detection
769
+ lessons.js Self-evolving lessons store (extract/retrieve/inject)
770
+ outcome.js Infer + confirm persona outcome labels
771
+ query-expander.js LLM task → search terms for retrieval
772
+ ranker.js LLM per-persona ranking of reference/knowledge candidates
773
+ evolve.js Evolution engine: prompt/reference/router patch proposals
669
774
  export.js LoRA training-pair export hook
670
775
  feedback.js Persona unhappiness + correction logging (session + global JSONL)
671
776
  feedback-submit.js Opt-in anonymized submit to Supabase (community feedback)
@@ -704,6 +809,37 @@ skills/
704
809
 
705
810
  ---
706
811
 
812
+ ## What's new in v2.0
813
+
814
+ | Feature | Description |
815
+ |---------|-------------|
816
+ | **Chunked execution by default** | Frontier planner → cheap chunk models (Ollama, free/cheap cloud) → synthesis |
817
+ | **Model router** | Auto-discovers Ollama + uses curated free/cheap cloud model pool |
818
+ | **Chunk telemetry** | Tracks per-model success rate so router improves over time |
819
+ | **Legacy mode preserved** | `npx analyzthis_design run-unchunked` for the original single-pass orchestrator |
820
+ | **Planner never cheap** | Planner always uses frontier/host; chunk models are cost-optimized |
821
+
822
+ ## What's new in v1.22
823
+
824
+ | Feature | Description |
825
+ |---------|-------------|
826
+ | **Mood boards** | `/mood-board` collects web references + design-system patterns, tags them, and runs team deliberation |
827
+ | **User-contributed references** | User can add URLs/notes to a board and rerun the critique loop |
828
+ | **Visual direction setting** | Arjun, Meera, Priya, Zara, Noor score references via the UX Honeycomb rigor matrix |
829
+ | **Workspace artifacts** | `moodboard/{boardId}.json` is written into the project for the user to inspect |
830
+
831
+ ## What's new in v1.21
832
+
833
+ | Feature | Description |
834
+ |---------|-------------|
835
+ | **Self-evolving team** | `evolve --extract` harvests lessons + outcomes; proposes prompt/CSV/router patches |
836
+ | **Per-persona knowledge slices** | `sync` builds filtered context per persona (priority categories + fallback) |
837
+ | **Query expansion + ranking** | Cheap LLM calls broaden retrieval and rank references per persona lens |
838
+ | **Lessons store** | Past accepted fixes are retrieved for similar future tasks |
839
+ | **Outcome tracking** | `outcome --confirm` / `--infer` labels whether a persona's output actually shipped |
840
+ | **Full-prompt training export** | `export-training` now emits the exact `{ system, user }` prompts + structured output |
841
+ | **Redundancy suppression** | Personas see what prior personas already covered and add only new insights |
842
+
707
843
  ## What's new in v1.20
708
844
 
709
845
  | Feature | Description |
@@ -25,4 +25,4 @@ Full Concept B text wireframe (hierarchy check, primary action, nav level, visib
25
25
 
26
26
  **Review mode (rounds 0–N-1):** Critique prior output with grounded objections. Default `accepts_prior: false`. Include deliberation JSON block.
27
27
 
28
- **Produce mode (final round):** Full output schema after consensus or Raj. See `skills/deliberation-protocol/SKILL.md`.
28
+ **Produce mode (final round):** Full output schema after consensus or Raj. See `deliberation-protocol` in your host skills dir (e.g. `~/.claude/skills/deliberation-protocol/SKILL.md` or `~/.claude/commands/deliberation-protocol.md`).
@@ -26,4 +26,4 @@ Full UX Critique + Visual Design Audit blocks with per-dimension reasons — see
26
26
 
27
27
  **Review mode (rounds 0–N-1):** Critique prior output with grounded objections. Default `accepts_prior: false`. Include deliberation JSON block.
28
28
 
29
- **Produce mode (final round):** Full output schema after consensus or Raj. See `skills/deliberation-protocol/SKILL.md`.
29
+ **Produce mode (final round):** Full output schema after consensus or Raj. See `deliberation-protocol` in your host skills dir (e.g. `~/.claude/skills/deliberation-protocol/SKILL.md` or `~/.claude/commands/deliberation-protocol.md`).
@@ -0,0 +1,5 @@
1
+ You are the `/chunk-planner` explainer. You describe how the v2.0 chunked execution planner works.
2
+
3
+ You do not execute chunks or replace routing decisions. You help the user inspect and understand chunk plans.
4
+
5
+ When asked about a specific plan, read `session-state.json` and look under `chunk_run.plan`.
@@ -24,4 +24,4 @@ Full Business Impact block (metric impact, hierarchy check, segment, GTM lever,
24
24
 
25
25
  **Review mode (rounds 0–N-1):** Critique prior output with grounded objections. Default `accepts_prior: false`. Include deliberation JSON block.
26
26
 
27
- **Produce mode (final round):** Full output schema after consensus or Raj. See `skills/deliberation-protocol/SKILL.md`.
27
+ **Produce mode (final round):** Full output schema after consensus or Raj. See `deliberation-protocol` in your host skills dir (e.g. `~/.claude/skills/deliberation-protocol/SKILL.md` or `~/.claude/commands/deliberation-protocol.md`).
@@ -0,0 +1,13 @@
1
+ You are the Mood Board conductor. You do not have a design opinion of your own.
2
+
3
+ Your job is to:
4
+ 1. Collect visual/textual references for a design direction.
5
+ 2. Tag references with style, mood, surface, and relevant keywords.
6
+ 3. Pull matching design-system tokens, styles, and patterns from the reference CSVs.
7
+ 4. Run Arjun, Meera, Priya, Zara, and Noor through adversarial deliberation over the board.
8
+ 5. Write `board.json` to the session and a workspace copy the user can open.
9
+ 6. Accept user-contributed references and rerun the loop.
10
+
11
+ Always assess-only: never write code or final wireframes. Produce the structured board artifact and a synthesis of the team's direction.
12
+
13
+ Cite design-system rows using the format: `[filename, row N: "exact quoted value"]`.
@@ -25,4 +25,4 @@ Full Concept A text wireframe (hierarchy, primary action, nav level, visible-on-
25
25
 
26
26
  **Review mode (rounds 0–N-1):** Critique prior output with grounded objections. Default `accepts_prior: false`. Include deliberation JSON block.
27
27
 
28
- **Produce mode (final round):** Full output schema after consensus or Raj. See `skills/deliberation-protocol/SKILL.md`.
28
+ **Produce mode (final round):** Full output schema after consensus or Raj. See `deliberation-protocol` in your host skills dir (e.g. `~/.claude/skills/deliberation-protocol/SKILL.md` or `~/.claude/commands/deliberation-protocol.md`).
@@ -24,4 +24,4 @@ Full Feasibility Analysis block (score, blockers, ranked risks, effort, simpler
24
24
 
25
25
  **Review mode (rounds 0–N-1):** Critique prior output with grounded objections. Default `accepts_prior: false`. Include deliberation JSON block.
26
26
 
27
- **Produce mode (final round):** Full output schema after consensus or Raj. See `skills/deliberation-protocol/SKILL.md`.
27
+ **Produce mode (final round):** Full output schema after consensus or Raj. See `deliberation-protocol` in your host skills dir (e.g. `~/.claude/skills/deliberation-protocol/SKILL.md` or `~/.claude/commands/deliberation-protocol.md`).
@@ -0,0 +1,17 @@
1
+ # Query Expander (card)
2
+
3
+ You expand a design task into search terms for reference-data retrieval.
4
+
5
+ **Allowed:** Read the task + persona lens; output a JSON array of 5-10 search terms.
6
+ **Forbidden:** Output anything other than the JSON array. No prose, no explanation.
7
+
8
+ **Output format:**
9
+ ```json
10
+ ["term1", "term2", "term3", "term4", "term5"]
11
+ ```
12
+
13
+ Terms should be:
14
+ - Product-type keywords (saas, fintech, e-commerce, dashboard, etc.)
15
+ - Design-domain keywords (contrast, hierarchy, spacing, accessibility, etc.)
16
+ - Component/pattern keywords (modal, table, onboarding, empty state, etc.)
17
+ - Persona-specific lens keywords (e.g. for Arjun: color, typography, gestalt; for Priya: state, API, performance)
@@ -26,4 +26,4 @@ What [losing agent] gives up: [named]
26
26
 
27
27
  **Review mode (rounds 0–N-1):** Critique prior output with grounded objections. Default `accepts_prior: false`. Include deliberation JSON block.
28
28
 
29
- **Produce mode (final round):** Full output schema after consensus or Raj. See `skills/deliberation-protocol/SKILL.md`.
29
+ **Produce mode (final round):** Full output schema after consensus or Raj. See `deliberation-protocol` in your host skills dir (e.g. `~/.claude/skills/deliberation-protocol/SKILL.md` or `~/.claude/commands/deliberation-protocol.md`).
@@ -0,0 +1,16 @@
1
+ # Ranker (card)
2
+
3
+ You rank reference candidates for a specific design persona's lens.
4
+
5
+ **Allowed:** Read the task, persona lens, and candidate list; output a JSON array of candidate numbers in priority order (most relevant first).
6
+ **Forbidden:** Output anything other than the JSON array. No prose.
7
+
8
+ **Output format:**
9
+ ```json
10
+ [3, 7, 1, 5, 2]
11
+ ```
12
+
13
+ Rank by:
14
+ - Relevance to the persona's lens (UX, business, feasibility, delight, IA, etc.)
15
+ - Relevance to the specific task
16
+ - Specificity (more specific = higher rank than generic)
@@ -0,0 +1,7 @@
1
+ You are the `/run-unchunked` skill. You invoke the legacy non-chunked orchestrator.
2
+
3
+ Use this only when the user explicitly asks for unchunked mode or a quick single-expert run.
4
+
5
+ Do not replace the default chunked orchestrator. Do not run the chunk planner.
6
+
7
+ Assess-only: do not implement code unless mode is build_approved.
@@ -27,4 +27,4 @@ Full Delight Pass block (surface, moment, type, specific addition, why-this-one,
27
27
 
28
28
  **Review mode (rounds 0–N-1):** Critique prior output with grounded objections. Default `accepts_prior: false`. Include deliberation JSON block.
29
29
 
30
- **Produce mode (final round):** Full output schema after consensus or Raj. See `skills/deliberation-protocol/SKILL.md`.
30
+ **Produce mode (final round):** Full output schema after consensus or Raj. See `deliberation-protocol` in your host skills dir (e.g. `~/.claude/skills/deliberation-protocol/SKILL.md` or `~/.claude/commands/deliberation-protocol.md`).
package/agents/chain.json CHANGED
@@ -57,5 +57,20 @@
57
57
  "re_evaluation": {
58
58
  "mode": "delta_only",
59
59
  "description": "On any follow-up after REVISE, re-run only the persona(s) assigned to the prior Top 3 actionable changes — never the full chain. See design-critic Re-evaluation Protocol."
60
+ },
61
+ "evolution": {
62
+ "lessons_dir": "~/.analyzthis_design/lessons",
63
+ "extraction_window_days": 7,
64
+ "min_lessons_for_patch": 5,
65
+ "min_outcomes_for_router_patch": 10,
66
+ "dry_run_default": true
67
+ },
68
+ "chunk_models": {
69
+ "description": "v2.0 chunked execution model pool. Planner is always frontier/strong; chunk models are auto-discovered (Ollama) plus curated cloud free/cheap models.",
70
+ "planner": { "provider": "anthropic", "model": "claude-sonnet-4-20250514" },
71
+ "max_chunks": 6,
72
+ "default_budget": "auto",
73
+ "default_mode": "sequential",
74
+ "allow_cheap_paid": true
60
75
  }
61
76
  }
@@ -24,6 +24,7 @@
24
24
  "handoff_from": [],
25
25
  "handoff_to": ["arjun"],
26
26
  "requires_session_state": true,
27
+ "knowledge_categories": ["design", "tech"],
27
28
  "effort_overrides": {
28
29
  "trivial": { "when": "shortcuts-only audit", "max_output_tokens": 700 },
29
30
  "hard": { "when": "bulk-action state design", "max_output_tokens": 1500 }
@@ -25,6 +25,7 @@
25
25
  "handoff_from": ["noor"],
26
26
  "handoff_to": ["meera"],
27
27
  "requires_session_state": true,
28
+ "knowledge_categories": ["brand", "design", "research"],
28
29
  "hard_gates": ["ds_gate", "information_hierarchy_gate"],
29
30
  "scoped_modes": {
30
31
  "arjun_color_system_only": {
@@ -0,0 +1,18 @@
1
+ {
2
+ "id": "chunk-planner",
3
+ "name": "Chunk Planner",
4
+ "tier": "router",
5
+ "max_output_tokens": 2500,
6
+ "system_card": "agents/cards/chunk-planner.md",
7
+ "system_skill": "skills/chunk-planner/SKILL.md",
8
+ "allowed_jobs": [
9
+ "Explain the chunked execution planner",
10
+ "Inspect chunk plans from session state"
11
+ ],
12
+ "forbidden_jobs": [
13
+ "Replace the router or chain",
14
+ "Execute chunks directly"
15
+ ],
16
+ "hard_gates": [],
17
+ "parallel_safe_with": []
18
+ }
@@ -26,6 +26,7 @@
26
26
  "handoff_from": [],
27
27
  "handoff_to": [],
28
28
  "requires_session_state": true,
29
+ "knowledge_categories": ["prd", "brand", "product", "design", "research", "tech", "web"],
29
30
  "effort_overrides": {
30
31
  "standard": { "when": "enrichment batch (default)", "max_output_tokens": 4000 },
31
32
  "trivial": { "when": "draft-only / --no-enrich (no LLM)", "max_output_tokens": 500 }
@@ -24,6 +24,7 @@
24
24
  "handoff_from": ["arjun"],
25
25
  "handoff_to": ["priya"],
26
26
  "requires_session_state": true,
27
+ "knowledge_categories": ["product", "research"],
27
28
  "effort_overrides": {
28
29
  "trivial": { "when": "single GTM lever / retention check", "max_output_tokens": 500 },
29
30
  "hard": { "when": "north-star tradeoff or cross-metric conflict", "max_output_tokens": 1200 }
@@ -0,0 +1,23 @@
1
+ {
2
+ "id": "mood-board",
3
+ "name": "Mood Board",
4
+ "tier": "structured",
5
+ "max_output_tokens": 1800,
6
+ "system_card": "agents/cards/mood-board.md",
7
+ "system_skill": "skills/mood-board/SKILL.md",
8
+ "allowed_jobs": [
9
+ "collect web references for visual direction",
10
+ "tag references with style, mood, surface",
11
+ "retrieve design-system patterns for the task",
12
+ "orchestrate team deliberation over references",
13
+ "write board.json artifacts",
14
+ "accept user-contributed references and rerun"
15
+ ],
16
+ "forbidden_jobs": [
17
+ "produce final wireframes or code",
18
+ "replace the design-critic chain for screen review",
19
+ "auto-apply design system changes"
20
+ ],
21
+ "hard_gates": [],
22
+ "parallel_safe_with": []
23
+ }
@@ -25,6 +25,7 @@
25
25
  "handoff_from": [],
26
26
  "handoff_to": ["arjun", "anuj"],
27
27
  "requires_session_state": true,
28
+ "knowledge_categories": ["design", "product"],
28
29
  "effort_overrides": {
29
30
  "trivial": { "when": "hierarchy-only declaration", "max_output_tokens": 700 },
30
31
  "hard": { "when": "multi-screen IA", "max_output_tokens": 1500 }
@@ -24,6 +24,7 @@
24
24
  "handoff_from": ["meera"],
25
25
  "handoff_to": ["zara"],
26
26
  "requires_session_state": true,
27
+ "knowledge_categories": ["tech"],
27
28
  "effort_overrides": {
28
29
  "trivial": { "when": "single feature T-shirt sizing (structured extract)", "max_output_tokens": 500 },
29
30
  "hard": { "when": "architecture / state-machine risk", "max_output_tokens": 900 }
@@ -0,0 +1,13 @@
1
+ {
2
+ "id": "query-expander",
3
+ "role": "retrieval_assistant",
4
+ "system_card": "agents/cards/query-expander.md",
5
+ "tier": "structured",
6
+ "max_output_tokens": 200,
7
+ "parallel_safe_with": [],
8
+ "allowed_jobs": ["query expansion for reference retrieval"],
9
+ "forbidden_jobs": ["critique", "wireframe", "design generation"],
10
+ "effort_overrides": {
11
+ "trivial": { "when": "always", "max_output_tokens": 200 }
12
+ }
13
+ }
@@ -23,6 +23,7 @@
23
23
  "handoff_from": ["zara", "arjun", "meera", "priya", "noor", "anuj"],
24
24
  "handoff_to": [],
25
25
  "requires_session_state": true,
26
+ "knowledge_categories": ["prd", "product", "design"],
26
27
  "effort_overrides": {
27
28
  "standard": { "when": "principle ranking (one verdict, never first)", "max_output_tokens": 1200 },
28
29
  "hard": { "when": "cross-persona stalemate", "max_output_tokens": 1200 }
@@ -0,0 +1,13 @@
1
+ {
2
+ "id": "ranker",
3
+ "role": "retrieval_assistant",
4
+ "system_card": "agents/cards/ranker.md",
5
+ "tier": "structured",
6
+ "max_output_tokens": 200,
7
+ "parallel_safe_with": [],
8
+ "allowed_jobs": ["rank reference candidates for persona relevance"],
9
+ "forbidden_jobs": ["critique", "wireframe", "design generation"],
10
+ "effort_overrides": {
11
+ "trivial": { "when": "always", "max_output_tokens": 200 }
12
+ }
13
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "id": "run-unchunked",
3
+ "name": "Run Unchunked",
4
+ "tier": "structured",
5
+ "max_output_tokens": 900,
6
+ "system_card": "agents/cards/run-unchunked.md",
7
+ "system_skill": "skills/run-unchunked/SKILL.md",
8
+ "allowed_jobs": [
9
+ "Run the legacy non-chunked orchestrator",
10
+ "Execute a single-pass persona chain",
11
+ "Compare against chunked output"
12
+ ],
13
+ "forbidden_jobs": [
14
+ "Replace the default chunked orchestrator",
15
+ "Run the chunk planner"
16
+ ],
17
+ "hard_gates": [],
18
+ "parallel_safe_with": []
19
+ }
@@ -25,6 +25,7 @@
25
25
  "handoff_from": ["priya"],
26
26
  "handoff_to": [],
27
27
  "requires_session_state": true,
28
+ "knowledge_categories": ["brand", "design"],
28
29
  "effort_overrides": {
29
30
  "standard": { "when": "delight pass (one peak moment)", "max_output_tokens": 1200 },
30
31
  "hard": { "when": "novel interaction design", "max_output_tokens": 1200 }
@@ -67,6 +67,13 @@
67
67
  "route_to": ["raj"],
68
68
  "never_route_to": []
69
69
  },
70
+ {
71
+ "problem_type": "chunked_run",
72
+ "signals": ["chunked", "chunk planner", "run-chunked", "cheap models", "free models", "ollama"],
73
+ "route_to": ["chunk-planner"],
74
+ "never_route_to": ["design-critic_chain"],
75
+ "notes": "Explain or inspect the v2.0 chunked execution planner."
76
+ },
70
77
  {
71
78
  "problem_type": "full_screen_review",
72
79
  "signals": ["full screen review", "critique this screen", "review this page"],
@@ -80,6 +87,13 @@
80
87
  "route_to": ["kavi"],
81
88
  "never_route_to": ["design-critic_chain", "zara", "arjun", "meera", "priya"],
82
89
  "notes": "Producer only — run /kavi or `npx analyzthis_design collect`. Never part of a critique chain."
90
+ },
91
+ {
92
+ "problem_type": "mood_board",
93
+ "signals": ["mood board", "mood-board", "/mood-board", "visual direction", "references", "inspiration", "style direction", "design direction"],
94
+ "route_to": ["mood-board"],
95
+ "never_route_to": ["design-critic_chain", "zara", "noor_alone"],
96
+ "notes": "Visual direction setting — collect references, tag them, pull DS patterns, run team deliberation. Not a screen critique."
83
97
  }
84
98
  ]
85
99
  }