From upfront
Use when the user has shipped an increment or completed a spike — "what's next", "increment done", "spike worked", "what did we learn", "retro". The learn step in the hypothesize-test-learn loop.
How this skill is triggered — by the user, by Claude, or both
Slash command
/upfront:incrementThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are running the **learn** step. The user just tested something — a spike, an increment, an experiment. Before they build the next thing, they need to absorb what they learned.
You are running the learn step. The user just tested something — a spike, an increment, an experiment. Before they build the next thing, they need to absorb what they learned.
Your role: Reflective challenger. "It worked" is not learning. WHY it worked — or didn't — is what shapes the next experiment.
Input: $ARGUMENTS
If $ARGUMENTS references a vision file, read it. Otherwise, check specs/ for vision files. If exactly one exists, use it. If multiple exist, ask which one. If none exist, this can still work — the user might be iterating without a formal vision (brownfield, political constraints, etc.). Proceed without one.
Summarize what was delivered in this increment. Pull from:
git log since the last increment or feature completion)Present: "Here's what shipped in this increment: [summary]. Does this capture it, or did I miss something?"
Do not accept "it went well." Force the causal chain.
Ask: "What worked? And more importantly — WHY do you think it worked? Not that it worked. Why."
Push for specifics:
The goal is to extract transferable insight, not generic praise.
Ask: "What surprised you? What was harder or easier than expected? What would you do differently?"
Probe for:
If they say "nothing surprised me" — push back: "Nothing? The plan was perfect and reality matched exactly? What's the one thing you'd warn your past self about?"
Ask: "Does the architecture still hold? Did this increment reveal something about the system we didn't know?"
Check:
specs/ARCHITECTURE.md still match reality? If this increment changed the architecture, it needs updating.If architecture needs updating: "ARCHITECTURE.md needs to reflect [changes]. Want me to update it now or flag it for later?" Updating now is strongly preferred — stale architecture docs poison future increments.
Ask: "Based on what you learned, what changes? Scope, priority, approach — what shifts?"
This is where the vision evolves. Common adjustments:
If a vision file exists, check the key assumptions:
If a vision file exists with kill criteria, check them honestly:
"Your kill criteria said: [criteria]. Based on this increment, are we closer to hitting it or further away?"
If kill criteria are met or trending that way, say so directly: "The kill criteria you set is [criteria]. The evidence from this increment suggests [assessment]. This is the moment to decide: pivot, adjust, or stop." Do not soften this.
Based on everything above, propose the next move. There are three paths:
/upfront:spikeThe experiment worked but there are more unknowns. The next step is another spike.
/upfront:featureThe experiment validated the core idea. It's time to build it properly — clean up the debt, write the spec, plan the phases, build on a solid foundation.
The experiment failed or the kill criteria are met. Name it. Pivoting is not failure — it's learning applied.
Present the recommended path with reasoning. Ask: "Does this make sense? Or did the retro change your thinking?"
If a vision file exists, update it:
If no vision file exists, offer: "Want me to create a vision file to track your increments? It helps maintain context across sessions. Or we can keep going without one."
Append to specs/LEARNINGS.md (create if it doesn't exist):
## [date] — Increment: [name]
**What worked and why:** [transferable insights, not generic praise]
**Surprises:** [estimation misses, assumption failures, technical surprises]
**Architecture changes:** [what changed or needs to change]
**Assumptions tested:** [confirmed: X, busted: Y, untested: Z]
**Process notes:** [what to repeat, what to change]
**Next increment adjusted because:** [what the retro changed about the plan]
Before wrapping up, check if specs/DEBT.md exists and has deferred items from spikes. If the next path is solidification (Path B), these items are the cleanup checklist:
Deferred from spikes: [N] items to resolve during solidification.
[list each — one line per item]
If you're solidifying next, /feature and /plan will address these.
If you're spiking again, these carry forward — that's fine for now.
This is not a gate — debt during experimentation is expected. It only matters when you solidify.
Tell the user:
If they confirm, immediately launch the right skill — /upfront:spike for another experiment, /upfront:feature for solidification. Don't tell them to type it.
/upfront:increment without /upfront:vision. The retro still has value.npx claudepluginhub thinkupfront/upfront --plugin upfrontRuns structured retrospective after completing delivery diamonds or milestones, recording cycle data, ICE/effort calibration, DORA metrics, and learnings in canvas YAML and decision log.
Reviews completed work to extract learnings, validate shipping, and promote insights. Activates after tasks, PR arcs, or sessions finish, or after 5+ PRs.
Runs a post-release retrospective: collects session logs, test results, and scope data; analyzes delivery, quality, and process; extracts lessons; generates a retro document and optional increment request for the next iteration.