Merge 7f20e7cae5 into 9debc165aa
This commit is contained in:
commit
c809596796
|
|
@ -69,10 +69,10 @@ Activation is complete. Continue below.
|
||||||
|
|
||||||
## Pre-workflow Setup
|
## Pre-workflow Setup
|
||||||
|
|
||||||
1. **Resume detection:** Check if `{planning_artifacts}/prfaq-{project_name}.md` already exists. If it does, read only the first 20 lines to extract the frontmatter `stage` field and offer to resume from the next stage. Do not read the full document. If the user confirms, route directly to that stage's reference file.
|
1. **Output file resolution:** Set `prfaq_output_file` = `{planning_artifacts}/prfaq.md` by default. For resume detection, check whether `{planning_artifacts}/prfaq.md` exists. If it does not, check the legacy path `{planning_artifacts}/prfaq-{project_name}.md`; if the legacy file exists, set `prfaq_output_file` to that path for the rest of the workflow. If either file exists, read only the first 20 lines to extract the frontmatter `stage` field and offer to resume from the next stage. Do not read the full document. If the user confirms, route directly to that stage's reference file.
|
||||||
|
|
||||||
2. **Mode detection:**
|
2. **Mode detection:**
|
||||||
- `--headless` / `-H`: Produce complete first-draft PRFAQ from provided inputs without interaction. Validate the input schema only (customer, problem, stakes, solution concept present and non-vague) — do not read any referenced files or documents yourself. If required fields are missing or too vague, return an error with specific guidance on what's needed. Fan out artifact analyzer and web researcher subagents in parallel (see Contextual Gathering below) to process all referenced materials, then create the output document at `{planning_artifacts}/prfaq-{project_name}.md` using `./assets/prfaq-template.md` and route to `./references/press-release.md`.
|
- `--headless` / `-H`: Produce complete first-draft PRFAQ from provided inputs without interaction. Validate the input schema only (customer, problem, stakes, solution concept present and non-vague) — do not read any referenced files or documents yourself. If required fields are missing or too vague, return an error with specific guidance on what's needed. Fan out artifact analyzer and web researcher subagents in parallel (see Contextual Gathering below) to process all referenced materials, then create the output document at `{prfaq_output_file}` using `./assets/prfaq-template.md` and route to `./references/press-release.md`.
|
||||||
- Default: Full interactive coaching — the gauntlet.
|
- Default: Full interactive coaching — the gauntlet.
|
||||||
|
|
||||||
**Headless input schema:**
|
**Headless input schema:**
|
||||||
|
|
@ -118,7 +118,7 @@ When the user gets stuck, offer concrete suggestions based on what they've share
|
||||||
3. **Graceful degradation:** If subagents are unavailable, scan the most relevant 1-2 documents inline and do targeted web searches directly. Never block the workflow.
|
3. **Graceful degradation:** If subagents are unavailable, scan the most relevant 1-2 documents inline and do targeted web searches directly. Never block the workflow.
|
||||||
4. **Merge findings** with what the user shared. Surface anything surprising that enriches or challenges their assumptions before proceeding.
|
4. **Merge findings** with what the user shared. Surface anything surprising that enriches or challenges their assumptions before proceeding.
|
||||||
|
|
||||||
**Create the output document** at `{planning_artifacts}/prfaq-{project_name}.md` using `./assets/prfaq-template.md`. Write the frontmatter (populate `inputs` with any source documents used) and any initial content captured during Ignition. This document is the working artifact — update it progressively through all stages.
|
**Create the output document** at `{prfaq_output_file}` using `./assets/prfaq-template.md`. Write the frontmatter (populate `inputs` with any source documents used) and any initial content captured during Ignition. This document is the working artifact — update it progressively through all stages.
|
||||||
|
|
||||||
**Coaching Notes Capture:** Before moving on, append a `<!-- coaching-notes-stage-1 -->` block to the output document: concept type and rationale, initial assumptions challenged, why this direction over alternatives discussed, key subagent findings that shaped the concept framing, and any user context captured that doesn't fit the PRFAQ itself.
|
**Coaching Notes Capture:** Before moving on, append a `<!-- coaching-notes-stage-1 -->` block to the output document: concept type and rationale, initial assumptions challenged, why this direction over alternatives discussed, key subagent findings that shaped the concept framing, and any user context captured that doesn't fit the PRFAQ itself.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,7 +47,7 @@ If running headless: draft the complete press release based on available inputs
|
||||||
|
|
||||||
## Updating the Document
|
## Updating the Document
|
||||||
|
|
||||||
After each section is refined, append it to the output document at `{planning_artifacts}/prfaq-{project_name}.md`. Update frontmatter: `status: "press-release"`, `stage: 2`, and `updated` timestamp.
|
After each section is refined, append it to `{prfaq_output_file}`. Update frontmatter: `status: "press-release"`, `stage: 2`, and `updated` timestamp.
|
||||||
|
|
||||||
## Coaching Notes Capture
|
## Coaching Notes Capture
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -31,13 +31,13 @@ Review the entire PRFAQ — press release, customer FAQ, internal FAQ — and de
|
||||||
|
|
||||||
Throughout the process, you captured context beyond what fits in the PRFAQ. Source material for the distillate includes the `<!-- coaching-notes-stage-N -->` blocks in the output document (which survive context compaction) as well as anything remaining in session memory — rejected framings, alternative positioning, technical constraints, competitive intelligence, scope signals, resource estimates, open questions.
|
Throughout the process, you captured context beyond what fits in the PRFAQ. Source material for the distillate includes the `<!-- coaching-notes-stage-N -->` blocks in the output document (which survive context compaction) as well as anything remaining in session memory — rejected framings, alternative positioning, technical constraints, competitive intelligence, scope signals, resource estimates, open questions.
|
||||||
|
|
||||||
**Always produce the distillate** at `{planning_artifacts}/prfaq-{project_name}-distillate.md`:
|
**Always produce the distillate** at `{planning_artifacts}/prfaq-distillate.md`:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
---
|
---
|
||||||
title: "PRFAQ Distillate: {project_name}"
|
title: "PRFAQ Distillate: {project_name}"
|
||||||
type: llm-distillate
|
type: llm-distillate
|
||||||
source: "prfaq-{project_name}.md"
|
source: "{prfaq_output_file}"
|
||||||
created: "{timestamp}"
|
created: "{timestamp}"
|
||||||
purpose: "Token-efficient context for downstream PRD creation"
|
purpose: "Token-efficient context for downstream PRD creation"
|
||||||
---
|
---
|
||||||
|
|
@ -57,8 +57,8 @@ purpose: "Token-efficient context for downstream PRD creation"
|
||||||
|
|
||||||
"Your PRFAQ for {project_name} has survived the gauntlet.
|
"Your PRFAQ for {project_name} has survived the gauntlet.
|
||||||
|
|
||||||
**PRFAQ:** `{planning_artifacts}/prfaq-{project_name}.md`
|
**PRFAQ:** `{prfaq_output_file}`
|
||||||
**Detail Pack:** `{planning_artifacts}/prfaq-{project_name}-distillate.md`
|
**Detail Pack:** `{planning_artifacts}/prfaq-distillate.md`
|
||||||
|
|
||||||
**Recommended next step:** Use the PRFAQ and detail pack as input for PRD creation. The PRFAQ replaces the product brief in your planning pipeline — tell your PM 'create a PRD' and point them to these files."
|
**Recommended next step:** Use the PRFAQ and detail pack as input for PRD creation. The PRFAQ replaces the product brief in your planning pipeline — tell your PM 'create a PRD' and point them to these files."
|
||||||
|
|
||||||
|
|
@ -66,8 +66,8 @@ purpose: "Token-efficient context for downstream PRD creation"
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"status": "complete",
|
"status": "complete",
|
||||||
"prfaq": "{planning_artifacts}/prfaq-{project_name}.md",
|
"prfaq": "{prfaq_output_file}",
|
||||||
"distillate": "{planning_artifacts}/prfaq-{project_name}-distillate.md",
|
"distillate": "{planning_artifacts}/prfaq-distillate.md",
|
||||||
"verdict": "forged|needs-heat|cracked",
|
"verdict": "forged|needs-heat|cracked",
|
||||||
"key_risks": ["top unresolved items"],
|
"key_risks": ["top unresolved items"],
|
||||||
"open_questions": ["unresolved items from FAQs"]
|
"open_questions": ["unresolved items from FAQs"]
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ Use the template at `{workflow.brief_template}` as a guide — adapt structure t
|
||||||
- **Confident voice** — this is a pitch, not a hedge
|
- **Confident voice** — this is a pitch, not a hedge
|
||||||
- Write in `{document_output_language}`
|
- Write in `{document_output_language}`
|
||||||
|
|
||||||
**Create the output document at:** `{planning_artifacts}/product-brief-{project_name}.md`
|
Resolve `brief_output_file` before drafting: keep the existing value if it is already set; otherwise set `brief_output_file` = `{planning_artifacts}/product-brief.md`. Create the output document at `{brief_output_file}`.
|
||||||
|
|
||||||
Include YAML frontmatter:
|
Include YAML frontmatter:
|
||||||
```yaml
|
```yaml
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
## Step 1: Polish and Save
|
## Step 1: Polish and Save
|
||||||
|
|
||||||
Update the product brief document at `{planning_artifacts}/product-brief-{project_name}.md`:
|
Resolve `brief_output_file` before updating: keep the existing value if it is already set, otherwise use `{planning_artifacts}/product-brief.md`. If this is a legacy in-progress brief created before generic filenames were introduced and `{planning_artifacts}/product-brief.md` does not exist, set `brief_output_file` to `{planning_artifacts}/product-brief-{project_name}.md` instead. Update the active product brief document at `{brief_output_file}`:
|
||||||
- Update frontmatter `status` to `"complete"`
|
- Update frontmatter `status` to `"complete"`
|
||||||
- Update `updated` timestamp
|
- Update `updated` timestamp
|
||||||
- Ensure formatting is clean and consistent
|
- Ensure formatting is clean and consistent
|
||||||
|
|
@ -22,13 +22,13 @@ Throughout the discovery process, you likely captured detail that doesn't belong
|
||||||
**Ask the user:**
|
**Ask the user:**
|
||||||
"Your product brief is complete. During our conversation, I captured additional detail that goes beyond the executive summary — things like [mention 2-3 specific examples of overflow you captured]. Would you like me to create a detail pack for PRD creation? It distills all that extra context into a concise, structured format optimized for the next phase."
|
"Your product brief is complete. During our conversation, I captured additional detail that goes beyond the executive summary — things like [mention 2-3 specific examples of overflow you captured]. Would you like me to create a detail pack for PRD creation? It distills all that extra context into a concise, structured format optimized for the next phase."
|
||||||
|
|
||||||
**If yes, create the distillate** at `{planning_artifacts}/product-brief-{project_name}-distillate.md`:
|
**If yes, create the distillate** at `{planning_artifacts}/product-brief-distillate.md`:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
---
|
---
|
||||||
title: "Product Brief Distillate: {project_name}"
|
title: "Product Brief Distillate: {project_name}"
|
||||||
type: llm-distillate
|
type: llm-distillate
|
||||||
source: "product-brief-{project_name}.md"
|
source: "{brief_output_file}"
|
||||||
created: "{timestamp}"
|
created: "{timestamp}"
|
||||||
purpose: "Token-efficient context for downstream PRD creation"
|
purpose: "Token-efficient context for downstream PRD creation"
|
||||||
---
|
---
|
||||||
|
|
@ -54,8 +54,8 @@ purpose: "Token-efficient context for downstream PRD creation"
|
||||||
|
|
||||||
"Your product brief for {project_name} is complete!
|
"Your product brief for {project_name} is complete!
|
||||||
|
|
||||||
**Executive Brief:** `{planning_artifacts}/product-brief-{project_name}.md`
|
**Executive Brief:** `{brief_output_file}`
|
||||||
[If distillate created:] **Detail Pack:** `{planning_artifacts}/product-brief-{project_name}-distillate.md`
|
[If distillate created:] **Detail Pack:** `{planning_artifacts}/product-brief-distillate.md`
|
||||||
|
|
||||||
**Recommended next step:** Use the product brief (and detail pack) as input for PRD creation — tell your assistant 'create a PRD' and point it to these files."
|
**Recommended next step:** Use the product brief (and detail pack) as input for PRD creation — tell your assistant 'create a PRD' and point it to these files."
|
||||||
[If distillate created:] "The detail pack contains all the overflow context (requirements hints, rejected ideas, technical constraints) specifically structured for the PRD workflow to consume."
|
[If distillate created:] "The detail pack contains all the overflow context (requirements hints, rejected ideas, technical constraints) specifically structured for the PRD workflow to consume."
|
||||||
|
|
@ -64,7 +64,7 @@ purpose: "Token-efficient context for downstream PRD creation"
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"status": "complete",
|
"status": "complete",
|
||||||
"brief": "{planning_artifacts}/product-brief-{project_name}.md",
|
"brief": "{brief_output_file}",
|
||||||
"distillate": "{path or null}",
|
"distillate": "{path or null}",
|
||||||
"confidence": "high|medium|low",
|
"confidence": "high|medium|low",
|
||||||
"open_questions": ["any unresolved items"]
|
"open_questions": ["any unresolved items"]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue