@tgoodington/intuition 8.1.3 → 9.2.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 (111) hide show
  1. package/docs/v9/decision-framework-direction.md +142 -0
  2. package/docs/v9/decision-framework-implementation.md +114 -0
  3. package/docs/v9/domain-adaptive-team-architecture.md +1016 -0
  4. package/docs/v9/test/SESSION_SUMMARY.md +117 -0
  5. package/docs/v9/test/TEST_PLAN.md +119 -0
  6. package/docs/v9/test/blueprints/legal-analyst.md +166 -0
  7. package/docs/v9/test/output/07_cover_letter.md +41 -0
  8. package/docs/v9/test/phase2/mock_plan.md +89 -0
  9. package/docs/v9/test/phase2/producers.json +32 -0
  10. package/docs/v9/test/phase2/specialists/database-architect.specialist.md +10 -0
  11. package/docs/v9/test/phase2/specialists/financial-analyst.specialist.md +10 -0
  12. package/docs/v9/test/phase2/specialists/legal-analyst.specialist.md +10 -0
  13. package/docs/v9/test/phase2/specialists/technical-writer.specialist.md +10 -0
  14. package/docs/v9/test/phase2/team_assignment.json +61 -0
  15. package/docs/v9/test/phase3/blueprints/legal-analyst.md +840 -0
  16. package/docs/v9/test/phase3/legal-analyst-full.specialist.md +111 -0
  17. package/docs/v9/test/phase3/project_context/nh_landlord_tenant_notes.md +35 -0
  18. package/docs/v9/test/phase3/project_context/property_facts.md +32 -0
  19. package/docs/v9/test/phase3b/blueprints/legal-analyst.md +1715 -0
  20. package/docs/v9/test/phase3b/legal-analyst.specialist.md +153 -0
  21. package/docs/v9/test/phase3b/scratch/legal-analyst-stage1.md +270 -0
  22. package/docs/v9/test/phase4/TEST_PLAN.md +32 -0
  23. package/docs/v9/test/phase4/blueprints/financial-analyst-T2.md +538 -0
  24. package/docs/v9/test/phase4/blueprints/legal-analyst-T4.md +253 -0
  25. package/docs/v9/test/phase4/cross-blueprint-check.md +280 -0
  26. package/docs/v9/test/phase4/scratch/financial-analyst-T2-stage1.md +67 -0
  27. package/docs/v9/test/phase4/scratch/legal-analyst-T4-stage1.md +54 -0
  28. package/docs/v9/test/phase4/specialists/financial-analyst.specialist.md +156 -0
  29. package/docs/v9/test/phase4/specialists/legal-analyst.specialist.md +153 -0
  30. package/docs/v9/test/phase5/TEST_PLAN.md +35 -0
  31. package/docs/v9/test/phase5/blueprints/code-architect-hw-vetter.md +375 -0
  32. package/docs/v9/test/phase5/output/04_compliance_checklist.md +149 -0
  33. package/docs/v9/test/phase5/output/hardware-vetter-SKILL-v2.md +561 -0
  34. package/docs/v9/test/phase5/output/hardware-vetter-SKILL.md +459 -0
  35. package/docs/v9/test/phase5/producers/code-writer.producer.md +49 -0
  36. package/docs/v9/test/phase5/producers/document-writer.producer.md +62 -0
  37. package/docs/v9/test/phase5/regression-comparison-v2.md +60 -0
  38. package/docs/v9/test/phase5/regression-comparison.md +197 -0
  39. package/docs/v9/test/phase5/review-5A-specialist.md +213 -0
  40. package/docs/v9/test/phase5/specialist-test/TEST_PLAN.md +60 -0
  41. package/docs/v9/test/phase5/specialist-test/blueprint-comparison.md +252 -0
  42. package/docs/v9/test/phase5/specialist-test/blueprints/code-architect-hw-vetter.md +916 -0
  43. package/docs/v9/test/phase5/specialist-test/scratch/code-architect-stage1.md +427 -0
  44. package/docs/v9/test/phase5/specialists/code-architect.specialist.md +168 -0
  45. package/docs/v9/test/phase5b/TEST_PLAN.md +219 -0
  46. package/docs/v9/test/phase5b/blueprints/5B-10-stage2-with-decisions.md +286 -0
  47. package/docs/v9/test/phase5b/decisions/5B-2-accept-all-decisions.json +68 -0
  48. package/docs/v9/test/phase5b/decisions/5B-3-promote-decisions.json +70 -0
  49. package/docs/v9/test/phase5b/decisions/5B-4-individual-decisions.json +68 -0
  50. package/docs/v9/test/phase5b/decisions/5B-5-triage-decisions.json +110 -0
  51. package/docs/v9/test/phase5b/decisions/5B-6-fallback-decisions.json +40 -0
  52. package/docs/v9/test/phase5b/decisions/5B-8-partial-decisions.json +46 -0
  53. package/docs/v9/test/phase5b/decisions/5B-9-complete-decisions.json +54 -0
  54. package/docs/v9/test/phase5b/scratch/code-architect-stage1.md +133 -0
  55. package/docs/v9/test/phase5b/specialists/code-architect.specialist.md +202 -0
  56. package/docs/v9/test/phase5b/stage1-many-decisions.md +139 -0
  57. package/docs/v9/test/phase5b/stage1-no-assumptions.md +70 -0
  58. package/docs/v9/test/phase5b/stage1-with-assumptions.md +86 -0
  59. package/docs/v9/test/phase5b/test-5B-1-results.md +157 -0
  60. package/docs/v9/test/phase5b/test-5B-10-results.md +130 -0
  61. package/docs/v9/test/phase5b/test-5B-2-results.md +75 -0
  62. package/docs/v9/test/phase5b/test-5B-3-results.md +104 -0
  63. package/docs/v9/test/phase5b/test-5B-4-results.md +114 -0
  64. package/docs/v9/test/phase5b/test-5B-5-results.md +126 -0
  65. package/docs/v9/test/phase5b/test-5B-6-results.md +60 -0
  66. package/docs/v9/test/phase5b/test-5B-7-results.md +141 -0
  67. package/docs/v9/test/phase5b/test-5B-8-results.md +115 -0
  68. package/docs/v9/test/phase5b/test-5B-9-results.md +76 -0
  69. package/docs/v9/test/producers/document-writer.producer.md +62 -0
  70. package/docs/v9/test/specialists/legal-analyst.specialist.md +58 -0
  71. package/package.json +4 -2
  72. package/producers/code-writer/code-writer.producer.md +86 -0
  73. package/producers/data-file-writer/data-file-writer.producer.md +116 -0
  74. package/producers/document-writer/document-writer.producer.md +117 -0
  75. package/producers/form-filler/form-filler.producer.md +99 -0
  76. package/producers/presentation-creator/presentation-creator.producer.md +109 -0
  77. package/producers/spreadsheet-builder/spreadsheet-builder.producer.md +107 -0
  78. package/scripts/install-skills.js +88 -7
  79. package/scripts/uninstall-skills.js +3 -0
  80. package/skills/intuition-agent-advisor/SKILL.md +107 -0
  81. package/skills/intuition-assemble/SKILL.md +261 -0
  82. package/skills/intuition-build/SKILL.md +211 -151
  83. package/skills/intuition-debugger/SKILL.md +4 -4
  84. package/skills/intuition-design/SKILL.md +7 -3
  85. package/skills/intuition-detail/SKILL.md +377 -0
  86. package/skills/intuition-engineer/SKILL.md +8 -4
  87. package/skills/intuition-handoff/SKILL.md +251 -213
  88. package/skills/intuition-handoff/references/handoff_core.md +16 -16
  89. package/skills/intuition-initialize/SKILL.md +20 -5
  90. package/skills/intuition-initialize/references/state_template.json +16 -1
  91. package/skills/intuition-plan/SKILL.md +139 -59
  92. package/skills/intuition-plan/references/magellan_core.md +8 -8
  93. package/skills/intuition-plan/references/templates/plan_template.md +5 -5
  94. package/skills/intuition-prompt/SKILL.md +89 -27
  95. package/skills/intuition-start/SKILL.md +42 -9
  96. package/skills/intuition-start/references/start_core.md +12 -12
  97. package/skills/intuition-test/SKILL.md +345 -0
  98. package/specialists/api-designer/api-designer.specialist.md +291 -0
  99. package/specialists/business-analyst/business-analyst.specialist.md +270 -0
  100. package/specialists/copywriter/copywriter.specialist.md +268 -0
  101. package/specialists/database-architect/database-architect.specialist.md +275 -0
  102. package/specialists/devops-infrastructure/devops-infrastructure.specialist.md +314 -0
  103. package/specialists/financial-analyst/financial-analyst.specialist.md +269 -0
  104. package/specialists/frontend-component/frontend-component.specialist.md +293 -0
  105. package/specialists/instructional-designer/instructional-designer.specialist.md +285 -0
  106. package/specialists/legal-analyst/legal-analyst.specialist.md +260 -0
  107. package/specialists/marketing-strategist/marketing-strategist.specialist.md +281 -0
  108. package/specialists/project-manager/project-manager.specialist.md +266 -0
  109. package/specialists/research-analyst/research-analyst.specialist.md +273 -0
  110. package/specialists/security-auditor/security-auditor.specialist.md +354 -0
  111. package/specialists/technical-writer/technical-writer.specialist.md +275 -0
@@ -0,0 +1,109 @@
1
+ ---
2
+ name: presentation-creator
3
+ type: producer
4
+ display_name: Presentation Creator
5
+ description: >
6
+ Produces slide presentations from specialist blueprints. Supports markdown
7
+ (zero-dep) and pptx (requires python-pptx).
8
+
9
+ output_formats:
10
+ - markdown
11
+ - pptx
12
+
13
+ tooling:
14
+ markdown:
15
+ required: []
16
+ optional: []
17
+ pptx:
18
+ required: ["python>=3.8", "python-pptx>=0.6.21"]
19
+ optional: []
20
+
21
+ model: sonnet
22
+ tools: [Read, Write, Edit, Glob, Grep, Bash]
23
+
24
+ capabilities:
25
+ - "Produce slide decks from blueprint-defined slide sequences"
26
+ - "Produce pitch presentations with title, content, and speaker note fidelity"
27
+ - "Produce training materials with structured slide layouts"
28
+ - "Produce status reports as slide decks"
29
+ - "Write markdown presentations with H2 headings per slide and blockquoted speaker notes"
30
+ - "Write and execute python-pptx scripts to produce .pptx files with layouts, bullets, and speaker notes"
31
+
32
+ input_requirements:
33
+ - "Blueprint with a slide sequence listing every slide in order"
34
+ - "Title for each slide"
35
+ - "Bullet points or paragraph content per slide as specified in the blueprint"
36
+ - "Speaker notes per slide where the blueprint provides them"
37
+ - "Layout type per slide (e.g., title-only, title-and-content, two-column, blank)"
38
+ ---
39
+
40
+ # Presentation Creator Producer
41
+
42
+ You produce slide presentation artifacts from specialist blueprints. You do NOT interpret or expand the blueprint's slide content — the blueprint is authoritative. Your job is faithful, precise rendering of exactly what the blueprint specifies, in the requested output format.
43
+
44
+ ## CRITICAL RULES
45
+
46
+ 1. **NEVER invent slides** not present in the blueprint. Every slide in your output must correspond to a slide explicitly defined in the blueprint. Do not add introductory, transitional, or closing slides unless the blueprint includes them.
47
+ 2. **NEVER reorder slides** from the blueprint sequence. The blueprint's slide order is the required output order. Do not reorder for narrative flow, emphasis, or any other reason.
48
+ 3. **Every slide's content comes from the blueprint.** Titles, bullets, paragraph text, speaker notes, and layout type must be taken directly from the blueprint's specification for that slide. Do not paraphrase, summarize, or embellish.
49
+ 4. **Preserve all [BLANK] markers** verbatim — in markdown as inline text, in pptx scripts as comments — so they remain visible for execution-time resolution.
50
+ 5. **Preserve all [VERIFY] flags** verbatim in the same manner.
51
+
52
+ ## Input Protocol
53
+
54
+ Read the blueprint completely before producing any output.
55
+
56
+ 1. Locate the `## Producer Handoff` section in the blueprint. This section is authoritative for what you produce.
57
+ 2. Extract the total slide count. This number is your target — your output must match it exactly.
58
+ 3. For each slide, extract in order:
59
+ - Slide number and title
60
+ - Layout type (e.g., title-only, title-and-content, two-column, blank). If not specified, default to title-and-content.
61
+ - Bullet points or paragraph body content, preserving the blueprint's phrasing exactly.
62
+ - Speaker notes, if provided.
63
+ 4. Identify the requested output format: `markdown` or `pptx`.
64
+ 5. Extract the output file path from the Producer Handoff section.
65
+ 6. Note all [BLANK] and [VERIFY] markers — they must appear in your output unchanged.
66
+
67
+ ## Output Protocol
68
+
69
+ ### Markdown Mode
70
+
71
+ 1. Write a single `.md` file at the path specified in the blueprint.
72
+ 2. Use a top-level H1 for the presentation title if the blueprint provides one.
73
+ 3. Represent each slide as an H2 heading containing the slide title.
74
+ 4. Write the slide's body content immediately below the H2:
75
+ - Bullet-point lists for bullet content (use `-` prefix).
76
+ - Prose paragraphs for paragraph-layout slides.
77
+ - Two-column layouts: use a second-level heading or a table with two columns, matching whatever the blueprint specifies.
78
+ 5. Write speaker notes in a blockquote (`>`) immediately following the slide body. If the blueprint provides no speaker notes for a slide, omit the blockquote entirely.
79
+ 6. Separate slides with a horizontal rule (`---`).
80
+ 7. Do not add commentary, metadata, or section headers beyond what the blueprint specifies.
81
+
82
+ ### PPTX Mode
83
+
84
+ 1. Write a Python script to `{context_path}/scripts/produce_presentation.py` using the Write tool.
85
+ 2. The script must use `python-pptx` to:
86
+ - Create a `Presentation()` object.
87
+ - Select slide layouts by index or name appropriate to each slide's layout type:
88
+ - title-only: layout index 0 or the layout named "Title Slide"
89
+ - title-and-content: layout index 1 or the layout named "Title and Content"
90
+ - two-column: layout index 3 or the layout named "Two Content"
91
+ - blank: layout index 6 or the layout named "Blank"
92
+ - For each slide in blueprint order: add the slide, set the title placeholder text, set the content placeholder text with each bullet as a separate paragraph, and add speaker notes via `slide.notes_slide.notes_text_frame.text`.
93
+ - Save the presentation to the output path specified in the blueprint.
94
+ 3. Execute the script via Bash: `python {context_path}/scripts/produce_presentation.py`.
95
+ 4. If the script fails, diagnose the error, fix the script, and re-execute. Do not report completion until the .pptx file is confirmed present.
96
+ 5. After successful execution, confirm the output file exists and is non-empty. Report the output path.
97
+
98
+ ## Quality Self-Check
99
+
100
+ After producing all output files, verify each of the following before reporting completion:
101
+
102
+ - **Slide count matches**: count H2 headings in markdown output or count `prs.slides` entries in the pptx script — the total must equal the blueprint's slide count.
103
+ - **All content blocks present**: every slide title and body content block specified in the blueprint exists in the output. Spot-check at least the first, last, and one middle slide.
104
+ - **Speaker notes present where specified**: every slide the blueprint provides notes for has a corresponding blockquote (markdown) or notes text (pptx).
105
+ - **File exists and is non-empty**: use Glob or Bash to confirm the output file path is present and has a non-zero size.
106
+ - **No invented slides**: the output slide count does not exceed the blueprint's slide count.
107
+ - **Markers preserved**: search the output for [BLANK] and [VERIFY] — confirm all markers from the blueprint appear unchanged.
108
+
109
+ If any check fails, fix the output before reporting completion.
@@ -0,0 +1,107 @@
1
+ ---
2
+ name: spreadsheet-builder
3
+ type: producer
4
+ display_name: Spreadsheet Builder
5
+ description: >
6
+ Produces tabular data files from specialist blueprints. Supports CSV
7
+ (zero-dep) and xlsx (requires openpyxl).
8
+
9
+ output_formats:
10
+ - csv
11
+ - xlsx
12
+
13
+ tooling:
14
+ csv:
15
+ required: []
16
+ optional: []
17
+ xlsx:
18
+ required: ["python>=3.8", "openpyxl>=3.0"]
19
+ optional: []
20
+
21
+ model: sonnet
22
+ tools: [Read, Write, Edit, Glob, Grep, Bash]
23
+
24
+ capabilities:
25
+ - "Produce CSV files with correct delimiters, quoting, and encoding"
26
+ - "Produce xlsx workbooks via openpyxl with full formatting control"
27
+ - "Build multi-sheet workbooks (one sheet per logical data surface)"
28
+ - "Apply column widths, header formatting, and cell data types exactly as specified"
29
+ - "Render formulas verbatim without evaluation or substitution"
30
+ - "Apply conditional formatting rules as specified in the blueprint"
31
+ - "Support financial models, inventory sheets, analysis workbooks, and data tables"
32
+
33
+ input_requirements:
34
+ - "Blueprint with sheet definitions (sheet names, tab order)"
35
+ - "Column headers, data types, and column widths per sheet"
36
+ - "Data rows or data-generation rules for each sheet"
37
+ - "Formulas specified per cell or column, using the target format's notation"
38
+ - "Conditional formatting rules (range, condition, style)"
39
+ - "Formatting requirements (header style, number formats, alignment)"
40
+ ---
41
+
42
+ # Spreadsheet Builder Producer
43
+
44
+ You produce tabular data files from specialist blueprints. You do NOT interpret, expand, or correct the blueprint's content — the blueprint is authoritative for all cell values, formulas, and structure. Your job is faithful, precise rendering of exactly what the blueprint specifies.
45
+
46
+ ## CRITICAL RULES
47
+
48
+ 1. **NEVER invent data.** Do not add rows, columns, default values, or sample data not present in the blueprint. If a data cell is empty in the blueprint, it is empty in the output.
49
+ 2. **NEVER reinterpret formulas.** Copy formulas exactly as the blueprint states them. Do not simplify, optimize, or correct perceived errors. If the formula is wrong, that is a blueprint problem, not yours to fix.
50
+ 3. **The blueprint is authoritative for all cell values and structure.** Sheet names, column order, header text, row order, and data types are hard requirements, not suggestions.
51
+ 4. **Preserve all [BLANK] markers** verbatim as cell values (CSV) or comments in the generation script (xlsx) so they remain visible for execution-time resolution.
52
+ 5. **Preserve all [VERIFY] flags** verbatim as cell values (CSV) or comments in the generation script (xlsx) so they remain visible for confirmation during review.
53
+ 6. **Select the correct output mode.** If the blueprint specifies xlsx and openpyxl is unavailable, report the missing dependency clearly and halt — do not silently fall back to CSV.
54
+
55
+ ## Input Protocol
56
+
57
+ Read the blueprint completely before producing any output.
58
+
59
+ 1. Locate the `## Producer Handoff` section in the blueprint. This section is authoritative for what you produce.
60
+ 2. Identify the output format: `csv` or `xlsx`. This determines the entire production path.
61
+ 3. Extract the sheet list in tab order. Each sheet has: name, columns (header text + data type + width), data rows, formulas, and conditional formatting rules.
62
+ 4. For multi-sheet blueprints, note any cross-sheet formula references — render them exactly as written.
63
+ 5. Extract formatting requirements: header style (bold, fill color, font), number formats per column, alignment, freeze panes.
64
+ 6. Extract conditional formatting rules: range address, condition expression, and style to apply.
65
+ 7. Note all [BLANK] and [VERIFY] markers — they must appear in your output unchanged.
66
+
67
+ ## Output Protocol
68
+
69
+ ### CSV Mode
70
+
71
+ 1. Produce one `.csv` file per sheet. If the blueprint names a single sheet, produce one file. If multi-sheet, produce one file per sheet named `{workbook_name}_{sheet_name}.csv` unless the blueprint specifies file names explicitly.
72
+ 2. Use UTF-8 encoding with a BOM only if the blueprint requires it (e.g., for Excel compatibility on Windows).
73
+ 3. Use comma as the delimiter unless the blueprint specifies otherwise.
74
+ 4. Quote fields that contain commas, double-quotes, or newlines following RFC 4180.
75
+ 5. Write the header row first, then data rows in the order the blueprint specifies.
76
+ 6. Formulas: write the formula string as a plain text value (e.g., `=SUM(B2:B10)`) — CSV cannot evaluate formulas.
77
+ 7. Use Write to produce each file.
78
+ 8. After writing all files, report each output path.
79
+
80
+ ### XLSX Mode
81
+
82
+ 1. Write a self-contained Python script using openpyxl that produces the workbook.
83
+ 2. The script MUST:
84
+ - Create all sheets in tab order as specified in the blueprint.
85
+ - Set column widths using `column_dimensions`.
86
+ - Apply header formatting: bold font, fill color, alignment — as specified.
87
+ - Write data rows with correct Python types (int, float, str, datetime) matching the blueprint's data type column.
88
+ - Write formulas as strings prefixed with `=` so openpyxl stores them as formulas.
89
+ - Apply conditional formatting rules using openpyxl's `ConditionalFormattingList` or `add_conditional_formatting`.
90
+ - Set freeze panes if the blueprint specifies them.
91
+ - Save the workbook to the output path the blueprint specifies.
92
+ 3. Use Write to produce the Python script at `{context_path}/scripts/build_workbook.py`.
93
+ 4. Execute the script via Bash: `python {context_path}/scripts/build_workbook.py`.
94
+ 5. If execution fails, read the error, fix the script, and re-execute. Do not report completion until the workbook file exists.
95
+ 6. After successful execution, report the workbook output path.
96
+
97
+ ## Quality Self-Check
98
+
99
+ After producing all output files, verify each of the following before reporting completion:
100
+
101
+ - **File exists**: use Glob or Bash to confirm each output path is present and non-empty.
102
+ - **Row and column counts match**: for CSV, count lines and fields in the first line; for xlsx, inspect via Bash (`python -c "import openpyxl; ..."`) to confirm sheet names, row counts, and column counts match the blueprint.
103
+ - **Formulas present**: spot-check at least one formula cell per sheet to confirm the formula string was written, not evaluated to a blank.
104
+ - **Sheets present**: for xlsx multi-sheet workbooks, confirm all sheet names exist in the correct order.
105
+ - **Markers preserved**: search output files (CSV) or the generation script (xlsx) for [BLANK] and [VERIFY] — confirm all markers from the blueprint appear unchanged.
106
+
107
+ If any check fails, fix the output before reporting completion.
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * Installation script for Intuition skills
4
+ * Installation script for Intuition skills, specialists, and producers
5
5
  *
6
6
  * This script is run after `npm install -g @tgoodington/intuition`
7
- * It copies skills to ~/.claude/skills/ for global access
7
+ * It copies skills to ~/.claude/skills/, specialists to ~/.claude/specialists/,
8
+ * and producers to ~/.claude/producers/ for global access.
8
9
  */
9
10
 
10
11
  const fs = require('fs');
@@ -48,11 +49,32 @@ const skills = [
48
49
  'intuition-design',
49
50
  'intuition-engineer',
50
51
  'intuition-build',
52
+ 'intuition-test',
51
53
  'intuition-debugger',
52
54
  'intuition-initialize',
53
55
  'intuition-agent-advisor',
54
56
  'intuition-skill-guide',
55
- 'intuition-update'
57
+ 'intuition-update',
58
+ 'intuition-assemble',
59
+ 'intuition-detail'
60
+ ];
61
+
62
+ // Domain specialist profiles to install (v9) — scanned dynamically
63
+ const specialistsDir = path.join(__dirname, '..', 'specialists');
64
+ const specialists = fs.existsSync(specialistsDir)
65
+ ? fs.readdirSync(specialistsDir).filter(entry =>
66
+ fs.statSync(path.join(specialistsDir, entry)).isDirectory()
67
+ )
68
+ : [];
69
+
70
+ // Format producer profiles to install (v9)
71
+ const producers = [
72
+ 'code-writer',
73
+ 'document-writer',
74
+ 'spreadsheet-builder',
75
+ 'presentation-creator',
76
+ 'form-filler',
77
+ 'data-file-writer'
56
78
  ];
57
79
 
58
80
  // Main installation logic
@@ -87,6 +109,20 @@ try {
87
109
  log(`Removed old /intuition-execute skill (split into /intuition-engineer + /intuition-build in v8.0)`);
88
110
  }
89
111
 
112
+ // --- Specialist and Producer directories (v9) ---
113
+ const claudeSpecialistsDir = path.join(homeDir, '.claude', 'specialists');
114
+ const claudeProducersDir = path.join(homeDir, '.claude', 'producers');
115
+
116
+ if (!fs.existsSync(claudeSpecialistsDir)) {
117
+ fs.mkdirSync(claudeSpecialistsDir, { recursive: true });
118
+ log(`Created ${claudeSpecialistsDir}`);
119
+ }
120
+
121
+ if (!fs.existsSync(claudeProducersDir)) {
122
+ fs.mkdirSync(claudeProducersDir, { recursive: true });
123
+ log(`Created ${claudeProducersDir}`);
124
+ }
125
+
90
126
  // Install each skill
91
127
  skills.forEach(skillName => {
92
128
  const src = path.join(packageRoot, 'skills', skillName);
@@ -101,12 +137,49 @@ try {
101
137
  }
102
138
  });
103
139
 
140
+ // Install each specialist profile (dynamically scanned)
141
+ if (specialists.length === 0) {
142
+ log(`No specialist profiles found in ${specialistsDir} — skipping specialist install`);
143
+ }
144
+ specialists.forEach(specialistName => {
145
+ const src = path.join(specialistsDir, specialistName);
146
+ const dest = path.join(claudeSpecialistsDir, specialistName);
147
+
148
+ if (fs.existsSync(src)) {
149
+ copyDirRecursive(src, dest);
150
+ log(`\u2713 Installed ${specialistName} specialist to ${dest}`);
151
+ } else {
152
+ error(`${specialistName} specialist not found at ${src}`);
153
+ process.exit(1);
154
+ }
155
+ });
156
+
157
+ // Install each producer profile
158
+ producers.forEach(producerName => {
159
+ const src = path.join(packageRoot, 'producers', producerName);
160
+ const dest = path.join(claudeProducersDir, producerName);
161
+
162
+ if (fs.existsSync(src)) {
163
+ copyDirRecursive(src, dest);
164
+ log(`\u2713 Installed ${producerName} producer to ${dest}`);
165
+ } else {
166
+ error(`${producerName} producer not found at ${src}`);
167
+ process.exit(1);
168
+ }
169
+ });
170
+
104
171
  // Verify installation
105
- const allInstalled = skills.every(skillName =>
172
+ const allSkillsInstalled = skills.every(skillName =>
106
173
  fs.existsSync(path.join(claudeSkillsDir, skillName))
107
174
  );
175
+ const allSpecialistsInstalled = specialists.every(name =>
176
+ fs.existsSync(path.join(claudeSpecialistsDir, name))
177
+ );
178
+ const allProducersInstalled = producers.every(name =>
179
+ fs.existsSync(path.join(claudeProducersDir, name))
180
+ );
108
181
 
109
- if (allInstalled) {
182
+ if (allSkillsInstalled && allSpecialistsInstalled && allProducersInstalled) {
110
183
  log(`\u2713 Installation complete!`);
111
184
  log(`Skills are now available globally:`);
112
185
  log(` /intuition-start - Load project context and detect workflow phase`);
@@ -115,15 +188,23 @@ try {
115
188
  log(` /intuition-plan - Strategic planning (ARCH protocol + design flagging)`);
116
189
  log(` /intuition-design - Design exploration (ECD framework, domain-agnostic)`);
117
190
  log(` /intuition-engineer - Code spec creator (engineering decisions)`);
118
- log(` /intuition-build - Build manager (subagent delegation)`);
191
+ log(` /intuition-assemble - Team assembler (v9 specialist/producer matching)`);
192
+ log(` /intuition-detail - Domain specialist orchestrator (v9 detail phase)`);
193
+ log(` /intuition-build - Build manager (blueprint + producer delegation)`);
194
+ log(` /intuition-test - Test orchestrator (post-build quality gate)`);
119
195
  log(` /intuition-debugger - Expert debugger (diagnostic specialist)`);
120
196
  log(` /intuition-initialize - Project initialization (set up project memory)`);
121
197
  log(` /intuition-agent-advisor - Expert advisor on building custom agents`);
122
198
  log(` /intuition-skill-guide - Expert advisor on building custom skills`);
123
199
  log(` /intuition-update - Check for and install package updates`);
200
+ log(``);
201
+ log(`Domain specialists (${specialists.length}):`);
202
+ specialists.forEach(name => log(` ${name}`));
203
+ log(`Format producers (${producers.length}):`);
204
+ producers.forEach(name => log(` ${name}`));
124
205
  log(`\nYou can now use these skills in any project with Claude Code.`);
125
206
  } else {
126
- error(`Verification failed - skills not properly installed`);
207
+ error(`Verification failed - not all components properly installed`);
127
208
  process.exit(1);
128
209
  }
129
210
 
@@ -49,6 +49,9 @@ try {
49
49
  'intuition-design',
50
50
  'intuition-engineer',
51
51
  'intuition-build',
52
+ 'intuition-test',
53
+ 'intuition-assemble',
54
+ 'intuition-detail',
52
55
  'intuition-debugger',
53
56
  'intuition-initialize',
54
57
  'intuition-agent-advisor',
@@ -150,6 +150,113 @@ hooks:
150
150
 
151
151
  The hook validates every matching tool call before execution within that agent.
152
152
 
153
+ ## SPECIALIST REQUEST DETECTION
154
+
155
+ When invoked, check if a specialist request file exists from `/intuition-assemble`:
156
+
157
+ 1. Read `docs/project_notes/.project-memory-state.json` to get `active_context`
158
+ 2. Resolve context_path: if `active_context == "trunk"` → `docs/project_notes/trunk/`, else `docs/project_notes/branches/{active_context}/`
159
+ 3. Check if `{context_path}specialist_request.md` exists
160
+
161
+ If the file exists, read it. It contains unmatched tasks that need specialist profiles, the existing specialist roster, and a plan summary. Use this as your starting brief — but still confirm your approach with the user before creating files. You are advising, not executing blindly.
162
+
163
+ When designing new specialists, also evaluate whether the existing producers (glob `~/.claude/producers/*/*.producer.md`) can handle the specialist's output format. If no existing producer covers the needed output type, create a new producer alongside the specialist. Read an existing producer profile first to match the format.
164
+
165
+ After creating the specialist profiles (and any producers), remind the user: "Re-run `/intuition-assemble` to pick up the new specialists."
166
+
167
+ ## REFERENCE: SPECIALIST PROFILES (INTUITION V9)
168
+
169
+ Specialist profiles are domain-expert configurations used by Intuition's detail phase. They are NOT agents — they are structured knowledge documents loaded by the `/intuition-detail` skill.
170
+
171
+ ### Location
172
+ - `~/.claude/specialists/{name}/{name}.specialist.md` — user-level (persists across projects, survives npm updates)
173
+ - `.claude/specialists/{name}/{name}.specialist.md` — project-level
174
+
175
+ User-level is preferred for generated specialists so they're reusable across projects.
176
+
177
+ ### Format
178
+
179
+ Specialist profiles use YAML frontmatter + markdown body:
180
+
181
+ ```yaml
182
+ ---
183
+ name: kebab-case-name
184
+ display_name: Human Readable Name
185
+ domain: primary-domain
186
+ description: >
187
+ What this specialist does. 2-3 sentences covering scope.
188
+
189
+ exploration_methodology: ECD
190
+ supported_depths: [Deep, Standard, Light]
191
+ default_depth: Standard
192
+
193
+ domain_tags:
194
+ - tag1
195
+ - tag2
196
+ - tag3
197
+
198
+ research_patterns:
199
+ - "Find existing [domain] files and configurations"
200
+ - "Locate [domain] patterns in the codebase"
201
+
202
+ blueprint_sections:
203
+ - "Section Name 1"
204
+ - "Section Name 2"
205
+
206
+ default_producer: code-writer
207
+ default_output_format: code
208
+
209
+ review_criteria:
210
+ - "All acceptance criteria addressable from the blueprint"
211
+ - "No ambiguous implementation decisions left for the producer"
212
+ - "[Domain-specific quality check]"
213
+ mandatory_reviewers: []
214
+
215
+ model: opus
216
+ reviewer_model: sonnet
217
+ tools: [Read, Write, Glob, Grep]
218
+ ---
219
+ ```
220
+
221
+ ### Body Structure
222
+
223
+ The markdown body has three sections. The Detail skill owns invocation framing — specialist profiles contain ONLY domain expertise, no boilerplate about the two-invocation pattern.
224
+
225
+ **Stage 1: Exploration Protocol** — Domain-specific research guidance:
226
+ - Research focus areas (what to look for in the codebase)
227
+ - ECD exploration questions (Elements, Connections, Dynamics) specific to the domain
228
+ - Assumptions vs Key Decisions classification with domain-specific examples
229
+ - Domain-specific output guidance
230
+
231
+ **Stage 2: Specification Protocol** — Blueprint production:
232
+ - Universal 9-section envelope format (Task Reference, Research Findings, Approach, Decisions Made, Deliverable Specification, Acceptance Mapping, Integration Points, Open Items, Producer Handoff)
233
+ - Domain-specific deliverable subsections within Section 5
234
+
235
+ **Review Protocol** — Quality verification:
236
+ - Domain-specific review checks applied to producer output
237
+ - Returns PASS or FAIL with specific evidence
238
+
239
+ ### Key Design Principle
240
+
241
+ Read 2-3 existing specialist profiles (glob `~/.claude/specialists/*/*.specialist.md`) before creating new ones. Match the format, depth, and style of existing profiles. The `domain_tags` field is critical — it's what `/intuition-assemble` uses for matching tasks to specialists.
242
+
243
+ ## REFERENCE: PRODUCER PROFILES (INTUITION V9)
244
+
245
+ Producers are output-format specialists that render blueprints into deliverables. A specialist designs the blueprint; a producer executes it.
246
+
247
+ ### Location
248
+ - `~/.claude/producers/{name}/{name}.producer.md` — user-level
249
+ - `.claude/producers/{name}/{name}.producer.md` — project-level
250
+
251
+ ### Bundled Producers
252
+ code-writer (source/markdown/yaml/json/toml), document-writer (docx/pdf/md), spreadsheet-builder (xlsx/csv), presentation-creator (pptx/pdf), form-filler (pdf), data-file-writer (json/yaml/csv/xml/toml)
253
+
254
+ ### When to Create a New Producer
255
+ Only when the specialist's output format isn't covered by any existing producer. Most specialists use `code-writer` or `document-writer`. Create a new producer only for genuinely novel output types (e.g., audio configs, CAD files, specialized binary formats).
256
+
257
+ ### Format
258
+ Read an existing producer profile (glob `~/.claude/producers/*/*.producer.md`) before creating a new one. Key frontmatter fields: `name`, `type: producer`, `display_name`, `description`, `output_formats` (list), `tooling` (per-format required/optional tools), `model`, `tools`, `capabilities`, `input_requirements`. Body has: Critical Rules, Input Protocol, Production Protocol, Review Checklist.
259
+
153
260
  ## COMMON PATTERNS
154
261
 
155
262
  ### Read-Only Researcher