feat(quick-dev): add epic context compilation to step-01 (#2218)
* feat(quick-dev): add epic context compilation to step-01
Fork step-01 context loading: epic stories get a sub-agent that
compiles planning docs into a cached epic-{N}-context.md, while
freeform intents keep the lightweight directory-listing path.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix(quick-dev): tighten epic context loading per PR review
- Validate cached epic-<N>-context.md is non-empty and starts with the
expected header before loading; treat invalid cache as missing.
- Replace inline {N} placeholders with <N> so the skill validator does
not flag them as unresolved workflow variables.
- Replace ambiguous "fall back to path B" with an explicit instruction
to scan/load planning artifacts using path B's procedure, with a note
not to re-evaluate path B's gating clause.
Addresses CodeRabbit and Augment review comments on PR #2218.
* refactor(quick-dev): tighten compile-epic-context prompt
- Restructure with Task/Steps opening and Exact Output Format section.
- Switch Stories template to bullet form for clarity.
- Add "no hallucination" and explicit "omit empty sections except Goal
and Stories" rules.
- Use <N> instead of {N} in the filename for consistency with step-01.
* refactor(quick-dev): restructure epic-story context loading
Reshape path A of step-01 into five explicit numbered steps and add an
inline-compilation fallback for runtimes that cannot spawn sub-agents
(Copilot, Codex, local Ollama, older Claude).
- Pull cache validity, compilation, verification, and continuity into
separate numbered steps instead of nested paragraphs.
- Define "valid cached context" upfront: non-empty and starts with
`# Epic <N> Context:`.
- Add inline-compilation fallback: runtimes without sub-agent support
read compile-epic-context.md and follow it directly.
- Make previous-story continuity run regardless of which context source
succeeded (cache hit, fresh compilation, or path-B raw fallback).
* fix(quick-dev): address review findings on epic context compilation
- Add freshness check to cached epic-N-context.md (invalidate when any
planning artifact is newer)
- Remove the silent fall-back-to-raw-planning-docs path on compile
failure; HALT and report instead
- Add explicit "ambiguous → freeform" tiebreakers for both the path A
header and the epic-number identification step
- Drop "verbatim" from compile-epic-context.md format header to resolve
the verbatim-vs-omit-empty contradiction
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
59b07c33e2
commit
3ba51e1bac
|
|
@ -0,0 +1,62 @@
|
||||||
|
# Compile Epic Context
|
||||||
|
|
||||||
|
**Task**
|
||||||
|
Given an epic number, the epics file, the planning artifacts directory, and a desired output path, compile a clean, focused, developer-ready context file (`epic-<N>-context.md`).
|
||||||
|
|
||||||
|
**Steps**
|
||||||
|
|
||||||
|
1. Read the epics file and extract the target epic's title, goal, and list of stories.
|
||||||
|
2. Scan the planning artifacts directory for the standard files (PRD, architecture, UX/design, product brief).
|
||||||
|
3. Pull only the information relevant to this epic.
|
||||||
|
4. Write the compiled context to the exact output path using the format below.
|
||||||
|
|
||||||
|
## Exact Output Format
|
||||||
|
|
||||||
|
Use these headings:
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Epic {N} Context: {Epic Title}
|
||||||
|
|
||||||
|
<!-- Compiled from planning artifacts. Edit freely. Regenerate with compile-epic-context if planning docs change. -->
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
|
||||||
|
{One clear paragraph: what this epic achieves and why it matters.}
|
||||||
|
|
||||||
|
## Stories
|
||||||
|
|
||||||
|
- Story X.Y: Brief title only
|
||||||
|
- ...
|
||||||
|
|
||||||
|
## Requirements & Constraints
|
||||||
|
|
||||||
|
{Relevant functional/non-functional requirements and success criteria for this epic (describe by purpose, not source).}
|
||||||
|
|
||||||
|
## Technical Decisions
|
||||||
|
|
||||||
|
{Key architecture decisions, constraints, patterns, data models, and conventions relevant to this epic.}
|
||||||
|
|
||||||
|
## UX & Interaction Patterns
|
||||||
|
|
||||||
|
{Relevant UX flows, interaction patterns, and design constraints (omit section entirely if nothing relevant).}
|
||||||
|
|
||||||
|
## Cross-Story Dependencies
|
||||||
|
|
||||||
|
{Dependencies between stories in this epic or with other epics/systems (omit if none).}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Rules
|
||||||
|
|
||||||
|
- **Scope aggressively.** Include only what a developer working on any story in this epic actually needs. When in doubt, leave it out — the developer can always read the full planning doc.
|
||||||
|
- **Describe by purpose, not by source.** Write "API responses must include pagination metadata" not "Per PRD section 3.2.1, pagination is required." Planning doc internals will change; the constraint won't.
|
||||||
|
- **No full copies.** Never quote source documents, section numbers, or paste large blocks verbatim. Always distill.
|
||||||
|
- **No story-level details.** The story list is for orientation only. Individual story specs handle the details.
|
||||||
|
- **Nothing derivable from the codebase.** Don't document what a developer can learn by reading the code.
|
||||||
|
- **Be concise and actionable.** Target 800–1500 tokens total. This file loads into quick-dev's context alongside other material.
|
||||||
|
- **Never hallucinate content.** If source material doesn't say something, don't invent it.
|
||||||
|
- **Omit empty sections entirely**, except Goal and Stories, which are always required.
|
||||||
|
|
||||||
|
## Error handling
|
||||||
|
|
||||||
|
- **If the epics file is missing or the target epic is not found:** write nothing and report the problem to the calling agent. Goal and Stories cannot be populated without a usable epics file.
|
||||||
|
- **If planning artifacts are missing or empty:** still produce the file with Goal and Stories populated from the epics file, and note the gap in the Goal section. Never hallucinate content to fill missing sections.
|
||||||
|
|
@ -41,19 +41,32 @@ Never ask extra questions if you already understand what the user intends.
|
||||||
1. Load context.
|
1. Load context.
|
||||||
- List files in `{planning_artifacts}` and `{implementation_artifacts}`.
|
- List files in `{planning_artifacts}` and `{implementation_artifacts}`.
|
||||||
- If you find an unformatted spec or intent file, ingest its contents to form your understanding of the intent.
|
- If you find an unformatted spec or intent file, ingest its contents to form your understanding of the intent.
|
||||||
- Planning artifacts are the output of BMAD phases 1-3. Typical files include:
|
- **Determine context strategy.** Using the intent and the artifact listing, infer whether the current work is a story from an epic. Do not rely on filename patterns or regex — reason about the intent, the listing, and any epics file content together.
|
||||||
- **PRD** (`*prd*`) — product requirements and success criteria
|
|
||||||
- **Architecture** (`*architecture*`) — technical design decisions and constraints
|
**A) Epic story path** — if the intent is clearly an epic story:
|
||||||
- **UX/Design** (`*ux*`) — user experience and interaction design
|
|
||||||
- **Epics** (`*epic*`) — feature breakdown into implementable stories
|
1. Identify the epic number and (if present) the story number. If you can't identify an epic number, use path B.
|
||||||
- **Product Brief** (`*brief*`) — project vision and scope
|
|
||||||
- Scan the listing for files matching these patterns. If any look relevant to the current intent, load them selectively — you don't need all of them, but you need the right constraints and requirements rather than guessing from code alone.
|
2. **Check for a valid cached epic context.** Look for `{implementation_artifacts}/epic-<N>-context.md` (where `<N>` is the epic number). A file is **valid** when it exists, is non-empty, starts with `# Epic <N> Context:` (with the correct epic number), and no file in `{planning_artifacts}` is newer.
|
||||||
- **Previous story continuity.** Using the intent and loaded context (especially any epics file), infer whether the current work is a story from an epic. Do not rely on filename patterns or regex — reason about the intent, the artifact listing, and epics content together. If the intent is an epic story:
|
- **If valid:** load it as the primary planning context. Do not load raw planning docs (PRD, architecture, UX, etc.). Skip to step 5.
|
||||||
1. Identify the epic and story number.
|
- **If missing, empty, or invalid:** continue to step 3.
|
||||||
2. Scan `{implementation_artifacts}` for specs from the same epic with `status: done` and a lower story number.
|
|
||||||
3. Load the most recent one (highest story number below current).
|
3. **Compile epic context.** Produce `{implementation_artifacts}/epic-<N>-context.md` by following `./compile-epic-context.md`, in order of preference:
|
||||||
4. Extract its **Code Map**, **Design Notes**, **Spec Change Log**, and **task list** as continuity context for step-02 planning.
|
- **Preferred — sub-agent:** spawn a sub-agent with `./compile-epic-context.md` as its prompt. Pass it the epic number, the epics file path, the `{planning_artifacts}` directory, and the output path `{implementation_artifacts}/epic-<N>-context.md`.
|
||||||
If no `done` spec is found but an `in-review` spec exists for the same epic with a lower story number, note it to the user and ask whether to load it. If the intent is not an epic story, or no previous spec exists, skip this silently.
|
- **Fallback — inline** (for runtimes without sub-agent support, e.g. Copilot, Codex, local Ollama, older Claude): if your runtime cannot spawn sub-agents, or the spawn fails/times out, read `./compile-epic-context.md` yourself and follow its instructions to produce the same output file.
|
||||||
|
|
||||||
|
4. **Verify.** After compilation, verify the output file exists, is non-empty, and starts with `# Epic <N> Context:`. If valid, load it. If verification fails, HALT and report the failure.
|
||||||
|
|
||||||
|
5. **Previous story continuity.** Regardless of which context source succeeded above, scan `{implementation_artifacts}` for specs from the same epic with `status: done` and a lower story number. Load the most recent one (highest story number below current). Extract its **Code Map**, **Design Notes**, **Spec Change Log**, and **task list** as continuity context for step-02 planning. If no `done` spec is found but an `in-review` spec exists for the same epic with a lower story number, note it to the user and ask whether to load it.
|
||||||
|
|
||||||
|
**B) Freeform path** — if the intent is not an epic story:
|
||||||
|
- Planning artifacts are the output of BMAD phases 1-3. Typical files include:
|
||||||
|
- **PRD** (`*prd*`) — product requirements and success criteria
|
||||||
|
- **Architecture** (`*architecture*`) — technical design decisions and constraints
|
||||||
|
- **UX/Design** (`*ux*`) — user experience and interaction design
|
||||||
|
- **Epics** (`*epic*`) — feature breakdown into implementable stories
|
||||||
|
- **Product Brief** (`*brief*`) — project vision and scope
|
||||||
|
- Scan the listing for files matching these patterns. If any look relevant to the current intent, load them selectively — you don't need all of them, but you need the right constraints and requirements rather than guessing from code alone.
|
||||||
2. Clarify intent. Do not fantasize, do not leave open questions. If you must ask questions, ask them as a numbered list. When the human replies, verify that every single numbered question was answered. If any were ignored, HALT and re-ask only the missing questions before proceeding. Keep looping until intent is clear enough to implement.
|
2. Clarify intent. Do not fantasize, do not leave open questions. If you must ask questions, ask them as a numbered list. When the human replies, verify that every single numbered question was answered. If any were ignored, HALT and re-ask only the missing questions before proceeding. Keep looping until intent is clear enough to implement.
|
||||||
3. Version control sanity check. Is the working tree clean? Does the current branch make sense for this intent — considering its name and recent history? If the tree is dirty or the branch is an obvious mismatch, HALT and ask the human before proceeding. If version control is unavailable, skip this check.
|
3. Version control sanity check. Is the working tree clean? Does the current branch make sense for this intent — considering its name and recent history? If the tree is dirty or the branch is an obvious mismatch, HALT and ask the human before proceeding. If version control is unavailable, skip this check.
|
||||||
4. Multi-goal check (see SCOPE STANDARD). If the intent fails the single-goal criteria:
|
4. Multi-goal check (see SCOPE STANDARD). If the intent fails the single-goal criteria:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue