Skip to content

Commit 5f31e22

Browse files
committed
fix: address Copilot review feedback on PR #4
- Fix arg-hint syntax: use list notation for comma-separated --dimensions flags - Add REQUESTED_DIMENSIONS passthrough from start skill to orchestrator - Add trend_modeling to augment dimension mapping table - Fix custom dimensions: store as strings in elicitation.dimensions, metadata in custom_dimensions - Add SKILL_OVERRIDE conditional to orchestrator spawn prompt for custom dimensions - Use schema-conformant methodology plan for custom dimensions in dimension-analyst - Add section→dimension mapping for augment placeholders in report synthesizer - Fix section id mismatch: exec-summary → executive-summary in audience tables - Remove non-existent section ids from audience override tables - Add multiple data points to Risk matrix Mermaid template - Add team_name to retry analyst spawn in Phase 2.75 Resolves review comments on PR #4
1 parent 047f3c4 commit 5f31e22

6 files changed

Lines changed: 41 additions & 25 deletions

File tree

agents/dimension-analyst.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ blackboard_read(scope="{scope}", key="elicitation")
7373
### Step 2: Load Skill Methodology — REQUIRED
7474
Read `skills/{skill-directory}/SKILL.md` for your dimension's research methodology. This is **not optional** — you must load your skill before proceeding.
7575

76-
**Custom dimensions** (when spawn prompt includes `SKILL_OVERRIDE: null`): No SKILL.md exists for this dimension. Skip Steps 2–4. Write a minimal methodology plan with `{"dimension": "{custom}", "frameworks": [], "skill_override": null, "note": "Custom dimension — generic methodology applied"}`. Proceed directly to Step 5 with general web research. Provenance requirements still apply — every finding must have web sources.
76+
**Custom dimensions** (when spawn prompt includes `SKILL_OVERRIDE: null`): No SKILL.md exists for this dimension. Skip Steps 2–4. Write a schema-conformant methodology plan that uses a generic framework entry: `{"dimension": "{custom}", "frameworks": [{"name": "Generic web research", "required": "yes", "condition_met": true}], "expected_sections": [], "reference_files": [], "skill_override": null, "note": "Custom dimension — generic methodology applied"}`. Proceed directly to Step 5 with general web research. Provenance requirements still apply — every finding must have web sources.
7777

7878
### Step 3: Extract Required Frameworks
7979
Extract the "## Required Frameworks" table from the loaded skill. Build a methodology plan object:

agents/report-synthesizer.md

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -155,15 +155,19 @@ FOR section IN SECTIONS:
155155
c. IF Mermaid condition met: generate diagram using template from "## Visualization Templates"
156156
d. IF Mermaid condition not met: omit diagram (do not add placeholder)
157157
3. IF no findings available:
158+
Derive augment command from section→dimension mapping:
159+
market-sizing → sizing, competitive → competitive, trends → trends,
160+
swot → (list missing dimensions), risk → (list missing dimensions),
161+
market-overview → sizing OR competitive
158162
Generate placeholder:
159163
---
160164
## {Section Display Name}
161165
162166
*This dimension was not researched in the current session.*
163167
164-
To add {section name} analysis, run:
168+
To add this analysis, run:
165169
```
166-
/sigint:augment {primary_dimension}
170+
/sigint:augment {mapped_dimension}
167171
```
168172
---
169173
(Never generate fabricated content to fill a section)
@@ -200,6 +204,8 @@ quadrantChart
200204
quadrant-3 Low Priority (Accept)
201205
quadrant-4 Likely (Plan For)
202206
{risk_1}: [{probability_0_to_1}, {impact_0_to_1}]
207+
{risk_2}: [{probability_0_to_1}, {impact_0_to_1}]
208+
... (one line per risk finding)
203209
```
204210

205211
## Report Structure
@@ -361,11 +367,11 @@ Parse `audience` from spawn prompt parameters (default: `all`).
361367

362368
| Audience | Section Order Override | Omit from output |
363369
|----------|----------------------|-----------------|
364-
| `executives` | exec-summary → recommendations → risk → market-overview → competitive (summary only) → appendix | market-sizing arithmetic detail, full methodology notes |
365-
| `pm` | exec-summary → competitive → trends → customer → recommendations → risk | financial formulas, regulatory legal detail |
366-
| `investors` | exec-summary → market-sizing → competitive → financial → risk → recommendations | tech implementation detail |
367-
| `dev` | exec-summary → techcompetitive → recommendations → trends | market-sizing arithmetic, financial unit economics |
368-
| `all` | Standard order (exec-summary → market-overview → market-sizing → competitive → trends → swot → recommendations → risk → appendix) | nothing |
370+
| `executives` | executive-summary → recommendations → risk → market-overview → competitive (summary only) → appendix | market-sizing arithmetic detail, full methodology notes |
371+
| `pm` | executive-summary → competitive → trends → market-overview → recommendations → risk | financial formulas, regulatory legal detail |
372+
| `investors` | executive-summary → market-sizing → competitive → trends → risk → recommendations | tech implementation detail |
373+
| `dev` | executive-summary → competitivetrends → recommendations → risk | market-sizing arithmetic |
374+
| `all` | Standard order (executive-summary → market-overview → market-sizing → competitive → trends → swot → recommendations → risk → appendix) | nothing |
369375

370376
### Content Transforms by Audience
371377

agents/research-orchestrator.md

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -223,19 +223,21 @@ Parse the user's response:
223223
- `confirm` or blank → use pre-selected dimensions as-is
224224
- Dimension names to add → append to selected list (if not already included)
225225
- `remove <dim>` → remove from selected list
226-
- Custom names (not in standard 8) → add with `skill_override: null` flag (generic methodology will be used; analyst skips SKILL.md Step 2 and proceeds with general web research)
226+
- Custom names (not in standard 8) → add the custom name as a string to the dimensions list AND record it separately in `elicitation.custom_dimensions` array (so downstream consumers know which dimensions lack SKILL.md). The analyst for custom dimensions is spawned with `SKILL_OVERRIDE: null`.
227227

228228
Final selected list must not exceed `max_dimensions`.
229229

230230
### Step 1.5.4: Persist Final Dimension Selection
231231

232-
Update elicitation with confirmed dimensions using jq (per Structured Data Protocol):
232+
Update elicitation with confirmed dimensions using jq (per Structured Data Protocol). `elicitation.dimensions` is always an array of strings (to pass schema validation). Custom dimension metadata is stored separately in `elicitation.custom_dimensions`:
233233
```bash
234234
jq --argjson dims "$SELECTED_DIMS_JSON" \
235-
'.elicitation.dimensions = $dims' \
235+
--argjson custom "$CUSTOM_DIMS_JSON" \
236+
'.elicitation.dimensions = $dims | .elicitation.custom_dimensions = $custom' \
236237
"./reports/$TOPIC_SLUG/state.json" > tmp.$$ && mv tmp.$$ "./reports/$TOPIC_SLUG/state.json"
237238
jq -e -f schemas/state.jq "./reports/$TOPIC_SLUG/state.json" > /dev/null
238239
```
240+
Where `$SELECTED_DIMS_JSON` is `["competitive", "sizing", ...]` (string array) and `$CUSTOM_DIMS_JSON` is `["custom_dim_name", ...]` (string array of non-standard dimension names, empty `[]` if none).
239241

240242
Also update `elicitation.json` and blackboard:
241243
```bash
@@ -286,16 +288,21 @@ Agent(
286288
CRITICAL: Use REPORTS_DIR exactly as provided for ALL file writes.
287289
Do NOT derive or re-slugify the output directory from the topic title.
288290
289-
Follow your MANDATORY Methodology Gating Protocol (Steps 1-6) from your agent definition:
290-
- Step 1: Read elicitation from $REPORTS_DIR/state.json (or elicitation.json)
291-
- Step 2: Load skills/{skill-directory}/SKILL.md — REQUIRED before any research
292-
- Step 3: Extract Required Frameworks table from the skill
293-
- Step 4: Write methodology_plan_{dimension}.json before proceeding
294-
- Step 5: Conduct web research following the skill methodology
295-
- Step 6: Self-reflect, write findings, signal completion
296-
297-
Do NOT proceed with research until Step 4 (methodology plan written) succeeds.
298-
Do NOT substitute your own methodology for the skill's Required Frameworks."
291+
{If dimension is in elicitation.custom_dimensions:
292+
SKILL_OVERRIDE: null
293+
This is a custom dimension — no SKILL.md exists. Follow your custom dimension protocol (skip Steps 2-4, use generic methodology, enforce provenance).
294+
Else:
295+
Follow your MANDATORY Methodology Gating Protocol (Steps 1-6) from your agent definition:
296+
- Step 1: Read elicitation from $REPORTS_DIR/state.json (or elicitation.json)
297+
- Step 2: Load skills/{skill-directory}/SKILL.md — REQUIRED before any research
298+
- Step 3: Extract Required Frameworks table from the skill
299+
- Step 4: Write methodology_plan_{dimension}.json before proceeding
300+
- Step 5: Conduct web research following the skill methodology
301+
- Step 6: Self-reflect, write findings, signal completion
302+
303+
Do NOT proceed with research until Step 4 (methodology plan written) succeeds.
304+
Do NOT substitute your own methodology for the skill's Required Frameworks.
305+
}"
299306
)
300307
```
301308

@@ -490,6 +497,7 @@ WHILE gate == "fail" due to methodology gaps AND methodology_retry_count < 2:
490497
2. Spawn gap-fill analyst:
491498
Agent(
492499
subagent_type="sigint:dimension-analyst",
500+
team_name="sigint-{topic_slug}-research",
493501
name="dimension-analyst-{dimension}-retry{methodology_retry_count}",
494502
prompt="Gap-fill retry #{methodology_retry_count} for {dimension} analysis on '{topic}'.
495503

skills/augment/SKILL.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,12 @@ Map `area` to dimension and skill directory:
8080
| technology, tech, feasibility, stack, build vs buy | tech | tech-assessment |
8181
| revenue, economics, pricing, unit economics, SaaS | financial | financial-analysis |
8282
| compliance, regulatory, legal, privacy, GDPR | regulatory | regulatory-review |
83+
| scenario, causal model, three-valued logic, trade-offs | trend_modeling | trend-modeling |
8384

8485
If `--dimension` flag was provided, use that dimension directly.
8586

8687
If the area doesn't map clearly, use `AskUserQuestion`:
87-
> "Which research methodology best fits '{area}'? Options: competitive / sizing / trends / customer / tech / financial / regulatory"
88+
> "Which research methodology best fits '{area}'? Options: competitive / sizing / trends / customer / tech / financial / regulatory / trend_modeling"
8889
8990
Store resolved values as `dimension` and `skill_dir`.
9091

skills/start/SKILL.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: start
33
description: Begin a new market research session. Thin launcher that delegates to the research-orchestrator agent for all phase management.
4-
argument-hint: "[--quick] [--dimensions competitive|sizing|trends|customer|tech|financial|regulatory|trend_modeling] [<topic>]"
4+
argument-hint: "[--quick] [--dimensions <dim,...> (competitive,sizing,trends,customer,tech,financial,regulatory,trend_modeling)] [<topic>]"
55
allowed-tools:
66
- Agent
77
- AskUserQuestion
@@ -37,7 +37,7 @@ This skill initializes a research session and delegates to the `research-orchest
3737
Parse `$ARGUMENTS` before any other processing. **Input sanitization**: truncate `$ARGUMENTS` to 200 characters total, strip backticks and angle brackets.
3838

3939
- `--quick` — Abbreviated elicitation (3 questions instead of 8)
40-
- `--dimensions <dim1,dim2,...>` — Optional: pre-select specific dimensions (comma-separated). Valid values: `competitive`, `sizing`, `trends`, `customer`, `tech`, `financial`, `regulatory`, `trend_modeling`. Bypasses the interactive dimension selection in Phase 1.5.
40+
- `--dimensions <dim1,dim2,...>` — Optional: pre-select specific dimensions (comma-separated). Valid values: `competitive`, `sizing`, `trends`, `customer`, `tech`, `financial`, `regulatory`, `trend_modeling`. Passed to the orchestrator as `REQUESTED_DIMENSIONS` Phase 1.5 skips interactive selection when this is set.
4141
- Remaining text after flag extraction is the initial topic hint (may be empty)
4242

4343
---
@@ -116,6 +116,7 @@ Agent(
116116
MAX_DIMENSIONS: {max_dimensions}
117117
CONTEXT_FILE_CONTENT: {context_content if non-null, else ""}
118118
QUICK_MODE: {true if --quick flag}
119+
REQUESTED_DIMENSIONS: {comma-separated dimension list from --dimensions flag, or "interactive" if omitted}
119120
{If resuming: PRIOR_ELICITATION: {prior elicitation JSON}}
120121
121122
Execute the full research orchestration:

skills/update/SKILL.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
name: update
33
description: Refresh existing research with latest data using swarm orchestration and delta detection. Delegates to the research-orchestrator agent in update mode.
4-
argument-hint: "[--topic <slug>] [--area <area>] [--since <date>] [--no-delta] [--dimensions competitive|sizing|trends|customer|tech|financial|regulatory|trend_modeling]"
4+
argument-hint: "[--topic <slug>] [--area <area>] [--since <date>] [--no-delta] [--dimensions <dim,...> (competitive,sizing,trends,customer,tech,financial,regulatory,trend_modeling)]"
55
allowed-tools:
66
- Agent
77
- AskUserQuestion

0 commit comments

Comments
 (0)