Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 15 additions & 5 deletions docs/doperpowers/specs/2026-07-03-execplan-track-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,15 +5,16 @@
## The track

```
grill (Matt Pocock's grilling, vendored; domain-modeling's interview moves absorbed)
brainstorming's grill (Matt Pocock's grilling, vendored there; domain-modeling's interview moves absorbed)
→ brainstorming's track router (human partner explicitly chooses autonomous)
→ one ExecPlan (skills/execspec/references/PLANS.md followed TO THE LETTER)
→ autonomous execution in a worktree (living updates, milestones, frequent commits)
→ exit gate: final whole-branch review → merge
```

One new skill, `skills/execplan/SKILL.md`, carries the whole track. No hooks into existing skills — the track is an alternative *entry*, not a modification of the default pipeline.
One skill, `skills/execplan/SKILL.md`, carries the authoring/execution/exit contract. Entry is routed from doperpowers:brainstorming: its grill is this track's Step 1, and its track-choice step hands off here on the human partner's explicit choice (revised 2026-07-05; originally the track was a standalone alternative entry with no hooks into existing skills — see Decision Log).

- **Grill step**: MP's grilling text vendored verbatim (10 lines, attributed), plus three interview moves kept from domain-modeling (sharpen fuzzy terms, stress-test with concrete scenarios, cross-reference claims with code). All output lands in the ExecPlan: definitions inline, decisions in its Decision Log. No CONTEXT.md, no ADRs.
- **Grill step**: MP's grilling text vendored verbatim (10 lines, attributed) in doperpowers:brainstorming's clarification step, plus three interview moves kept from domain-modeling (sharpen fuzzy terms, stress-test with concrete scenarios, cross-reference claims with code) — one vendor point serving both tracks. All output lands in the ExecPlan: definitions inline, decisions in its Decision Log. No CONTEXT.md, no ADRs.
- **Authoring step**: the SAME vendored PLANS.md that execspec adapts is here consumed unmodified — including the clauses the execspec adapter supersedes for the controlled track (Progress, milestones, novice-grade self-containment, autonomous ambiguity resolution). One vendor point, two consumption modes. ExecPlans live at `docs/doperpowers/execplans/YYYY-MM-DD-<topic>.md`.
- **Execution step**: PLANS.md's implementing contract as written — no next-step prompts, living sections current at every stopping point, frequent commits — in an isolated worktree. Daemon-compatible by construction (the ExecPlan is exactly what a spawn prompt can carry and survives context death); v1 notes the fit, mandates nothing.
- **Exit gate**: exactly one — the final whole-branch review before merge; finishing's retrospective step writes into the ExecPlan's own `Outcomes & Retrospective` section (the ExecPlan is this track's spec-equivalent).
Expand All @@ -22,13 +23,14 @@ One new skill, `skills/execplan/SKILL.md`, carries the whole track. No hooks int

## What does NOT change

The execspec pipeline and its four hooks; the vendored PLANS.md (still one copy, still never edited); brainstorming (no cross-pointer — each track triggers on its own description).
The execspec pipeline and its four hooks; the vendored PLANS.md (still one copy, still never edited). (Original version also listed "brainstorming no cross-pointer"; reversed 2026-07-05, see Decision Log: brainstorming now carries the grill and the track router.)

## Verification

- `ls skills/execplan/` → `SKILL.md`
- `grep -c "execspec/references/PLANS.md" skills/execplan/SKILL.md` → at least 1 (shared vendor point, no second copy)
- `grep -c "one at a time" skills/execplan/SKILL.md` → 1 (vendored grill text present verbatim)
- `grep -c "one at a time" skills/brainstorming/SKILL.md` → at least 1 (vendored grill text present verbatim; moved from execplan 2026-07-05)
- `grep -c "execplan" skills/brainstorming/SKILL.md` → at least 1 (track router present)
- Behavioral, on first real use: a session pointed at a well-scoped task produces one file under `docs/doperpowers/execplans/` containing PLANS.md's living sections (`Progress`, `Surprises & Discoveries`, `Decision Log`, `Outcomes & Retrospective`) and executes it to a reviewed merge without asking "should I proceed?" mid-flight.

## Decision Log
Expand All @@ -49,6 +51,10 @@ The execspec pipeline and its four hooks; the vendored PLANS.md (still one copy,
Rationale: One vendor point cannot fork; the difference between tracks is consumption mode, not source text. The clauses execspec "rejected" were track-mismatches, not defects — this track is where they run as written.
Date/Author: 2026-07-03

- Decision: Vendor the grill (and the three interview moves) in doperpowers:brainstorming, and route into this track from a thin router there on the human partner's explicit choice — reversing "no cross-pointer; each track triggers on its own description".
Rationale: Two days of real state showed the standalone entry never fires mechanically: brainstorming auto-triggers at every task start and captures every entry, this track's description never triggered on its own (its one real use — ida-solution T13, 2026-07-03 — was deliberately invoked, and `docs/doperpowers/execplans/` never appeared in this repo), and issue-register had independently vendored an adapted grill for its clarify step, confirming the interview protocol belongs at clarification time. One vendor point for the interview text; execplan keeps authoring + execution + exit gate. Router guard: routing is never silent — a delegation phrase ("just handle it") is not a track choice; the human partner names the track. Rejected alternative: folding this track into execspec with routing guidance in a memory note — loses the document-as-machinery mode (Progress/Concrete Steps/self-containment that daemons need across context death) and puts routing where it never mechanically triggers.
Date/Author: 2026-07-05 (human partner proposed the brainstorming router; assessed and adopted)

- Decision: This feature itself ships with a short spec and no implementation plan.
Rationale: Single-file task — a plan would exceed the work (writing-plans is for multi-step tasks). The spec exists because the conversation produced real rejected alternatives that must survive (the fold-in challenge earlier today demonstrated the cost of undocumented rationale); it is deliberately short.
Date/Author: 2026-07-03 (human partner questioned the ceremony; right-sized together)
Expand All @@ -61,6 +67,9 @@ The execspec pipeline and its four hooks; the vendored PLANS.md (still one copy,
- Observation: ExecPlan's most dangerous clause ("do not prompt the user; resolve ambiguities autonomously") becomes safe when the human gate is front-loaded rather than removed — the grill exhausts the ambiguity space while the human is present.
Evidence: The validity gaps identified in the original doperpowers-vs-ExecPlan analysis (no elicitation protocol, no term-definition method, undifferentiated decision lifetimes) map one-to-one onto grilling, domain-modeling's glossary moves, and the ADR three-condition test.

- Observation: The single-vendor-point decision drifted within hours of shipping — commit 1562e6e ("vendor PLANS.md in execplan") duplicated PLANS.md into `skills/execplan/references/` with no recorded rationale, silently breaking this spec's own verification grep. Reverted 2026-07-05.
Evidence: `git show 1562e6e --stat` (150-line copy added same evening); `grep -c "execspec/references/PLANS.md" skills/execplan/SKILL.md` → 0 until the revert.

## Outcomes & Retrospective

**2026-07-03, at finish.** Shipped as designed, same conversation: `skills/execplan/SKILL.md` (grill vendored verbatim with attribution, three domain-modeling moves absorbed, authoring bound to the shared vendored PLANS.md to the letter, worktree execution, single exit gate). All structural verification passed on the first run (`ls`, both greps = 1). Right-sizing held: no plan was written and none was missed — the skill file was a single transcription-grade artifact.
Expand All @@ -71,3 +80,4 @@ The methodology portfolio is now two-track: controlled (execspec pipeline, gates

- 2026-07-03: Initial version — terminal artifact of the grill-shaped design conversation (ExecPlan-only resolution, exit-gate default, right-sizing decision).
- 2026-07-03: Outcomes & Retrospective written at finish; structural verification results recorded.
- 2026-07-05: Grill re-homed to doperpowers:brainstorming (single vendor point, both tracks) and brainstorming gained a thin track router — the human partner's explicit choice hands off to execplan; reverses the no-cross-pointer decision (see Decision Log entry of this date). Duplicate PLANS.md copy from 1562e6e reverted, restoring the shared vendor point. Body sections (The track, What does NOT change, Verification) updated to match.
54 changes: 41 additions & 13 deletions skills/brainstorming/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,23 @@ You MUST create a task for each of these items and complete them in order:

1. **Explore project context** — check files, docs, recent commits
2. **Offer the visual companion just-in-time** — NOT upfront. The first time a question would genuinely be clearer shown than described, offer it then (its own message); on approval its browser tab opens for you. If no visual question ever arises, never offer it. See the Visual Companion section below.
3. **Ask clarifying questions** — one at a time, understand purpose/constraints/success criteria
4. **Propose 2-3 approaches** — with trade-offs and your recommendation
5. **Present design** — in sections scaled to their complexity, get user approval after each section
6. **Write design doc** — in living-spec shape per doperpowers:execspec (purpose-first opening, behavior-phrased acceptance, living tail with the Decision Log seeded from step 4's alternatives); save to `docs/doperpowers/specs/YYYY-MM-DD-<topic>-design.md` and commit
7. **Spec self-review** — quick inline check for placeholders, contradictions, ambiguity, scope (see below)
8. **User reviews written spec** — ask user to review the spec file before proceeding
9. **Transition to implementation** — invoke writing-plans skill to create implementation plan
3. **Grill** — clarifying questions one at a time per The Grill below; understand purpose/constraints/success criteria
4. **Choose the track with your human partner** — controlled (continue below, the default) or autonomous (hand off to doperpowers:execplan); see Choosing the Track below
5. **Propose 2-3 approaches** — with trade-offs and your recommendation
6. **Present design** — in sections scaled to their complexity, get user approval after each section
7. **Write design doc** — in living-spec shape per doperpowers:execspec (purpose-first opening, behavior-phrased acceptance, living tail with the Decision Log seeded from step 5's alternatives); save to `docs/doperpowers/specs/YYYY-MM-DD-<topic>-design.md` and commit
8. **Spec self-review** — quick inline check for placeholders, contradictions, ambiguity, scope (see below)
9. **User reviews written spec** — ask user to review the spec file before proceeding
10. **Transition to implementation** — invoke writing-plans skill to create implementation plan

## Process Flow

```dot
digraph brainstorming {
"Explore project context" [shape=box];
"Ask clarifying questions" [shape=box];
"Grill (clarifying questions)" [shape=box];
"Human partner chooses autonomous track?" [shape=diamond];
"Invoke execplan skill" [shape=doublecircle];
"Propose 2-3 approaches" [shape=box];
"Present design sections" [shape=box];
"User approves design?" [shape=diamond];
Expand All @@ -45,8 +48,10 @@ digraph brainstorming {
"User reviews spec?" [shape=diamond];
"Invoke writing-plans skill" [shape=doublecircle];

"Explore project context" -> "Ask clarifying questions";
"Ask clarifying questions" -> "Propose 2-3 approaches";
"Explore project context" -> "Grill (clarifying questions)";
"Grill (clarifying questions)" -> "Human partner chooses autonomous track?";
"Human partner chooses autonomous track?" -> "Invoke execplan skill" [label="yes, explicitly"];
"Human partner chooses autonomous track?" -> "Propose 2-3 approaches" [label="no (default)"];
"Propose 2-3 approaches" -> "Present design sections";
"Present design sections" -> "User approves design?";
"User approves design?" -> "Present design sections" [label="no, revise"];
Expand All @@ -58,7 +63,7 @@ digraph brainstorming {
}
```

**The terminal state is invoking writing-plans.** Do NOT invoke frontend-design, mcp-builder, or any other implementation skill. The ONLY skill you invoke after brainstorming is writing-plans.
**The terminal state is invoking writing-plans** — or doperpowers:execplan when your human partner explicitly chose the autonomous track. Do NOT invoke frontend-design, mcp-builder, or any other implementation skill. The ONLY skills you invoke after brainstorming are writing-plans (controlled track) and execplan (autonomous track, on your human partner's explicit choice).

## The Process

Expand All @@ -67,11 +72,34 @@ digraph brainstorming {
- Check out the current project state first (files, docs, recent commits)
- Before asking detailed questions, assess scope: if the request describes multiple independent subsystems (e.g., "build a platform with chat, file storage, billing, and analytics"), flag this immediately. Don't spend questions refining details of a project that needs to be decomposed first.
- If the project is too large for a single spec, help the user decompose into sub-projects: what are the independent pieces, how do they relate, what order should they be built? Then brainstorm the first sub-project through the normal design flow. Each sub-project gets its own spec → plan → implementation cycle.
- For appropriately-scoped projects, ask questions one at a time to refine the idea
- For appropriately-scoped projects, run the grill below to refine the idea
- Prefer multiple choice questions when possible, but open-ended is fine too
- Only one question per message - if a topic needs more exploration, break it into multiple questions
- Focus on understanding: purpose, constraints, success criteria

**The Grill** — vendored verbatim from Matt Pocock's `grilling` skill; this is the clarification protocol:

> Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.
>
> Ask the questions one at a time, waiting for feedback on each question before continuing. Asking multiple questions at once is bewildering.
>
> If a question can be answered by exploring the codebase, explore the codebase instead.

Three moves to use throughout (kept from his `domain-modeling` skill; its artifacts are not used here):

- **Sharpen fuzzy terms** — propose a precise canonical term: "You're saying 'account' — do you mean the Customer or the User? Those are different things."
- **Stress-test with concrete scenarios** — invent scenarios that probe edge cases and force precision about the boundaries between concepts.
- **Cross-reference with code** — when your human partner states how something works, check whether the code agrees; surface contradictions.

Triage the grilling: grill what is fuzzy or important; don't grind an already-clear request to death.

**Choosing the Track (after the grill):**

Two tracks leave this skill. The controlled track — the rest of this skill: approaches → design → spec → doperpowers:writing-plans — is the default. The autonomous track hands off to doperpowers:execplan, which authors one self-contained ExecPlan and executes it with no mid-flight human gates.

- Offer the autonomous track only when the work is delegable and the grill has exhausted the ambiguity space. Test during the grill: if taste questions keep hitting "we can't know until we try," stay controlled — feasibility unknowns are fine, they become prototyping milestones in the ExecPlan.
- Routing is your human partner's explicit choice — never route silently, and never treat "just handle it" as a track choice; name the track and get a yes. Their explicit choice to go autonomous is the approval the HARD-GATE requires; doperpowers:execplan's contract governs from there.
- No offer made, or no explicit yes → continue this skill (controlled).

**Exploring approaches:**

- Propose 2-3 different approaches with trade-offs
Expand Down
Loading