Read a completed spike's artifacts and synthesize learnings into proposed updates for project docs and downstream designs.
-
Run first-run preflight per skills/_shared/first-run.md.
-
Validate {spike-name} per skills/_shared/validate-name.md.
-
Read the full spike directory: design.md, plan.md, spike-results.md, and any code or demo artifacts referenced.
-
Read project docs per skills/_shared/read-project-docs.md.
-
Update Design Inventory in product_roadmap.md: If the roadmap has a Design Inventory table, find the row for {spike-name} and propose updating its status to a short label + link per skills/_shared/living-doc-format.md (e.g., Done — GO (PR #NN) — [results](completed-tp-designs/…/spike-results.md) or Done — PARTIAL or Done — NO-GO). If the spike is NOT in the table (was created before roadmap registration existed), propose adding a row. Keep What and Status cells short — narrative belongs in the linked spike-results or seed. Show the proposed change and get user confirmation.
-
Update Current Focus in product_roadmap.md: If the roadmap has a ## Current Focus table, propose changes based on the spike verdict:
- GO/PARTIAL: Remove or update the spike's row. Update "Blocked By" on any row that listed this spike as a blocker — clear the blocker and update "Next Action" to the now-unblocked step (e.g., "Blocked on S9" → "
/tp-design-detail — ready to proceed").
- NO-GO: Update the spike's row to reflect the verdict. Mark any dependent rows as blocked with an explanation.
- Promote new items to Current Focus if the verdict unblocks work that wasn't previously listed.
Show the proposed Current Focus table and get user confirmation.
-
Propose updates for each doc that needs changes, following the pattern in skills/_shared/propose-doc-edits.md. Explain why the spike findings motivate each change. For each living doc edited, follow skills/_shared/living-doc-format.md:
- Update the
*Last updated: YYYY-MM-DD* date on line 2–3.
- Append one dated line at the top of the
## History section (newest-first): - YYYY-MM-DD — one-sentence summary. Keep it under 800 non-ws chars.
-
Learn-verification (advisory): run python3 "$TP_ROOT"/skills/_shared/verify_learn.py --range {default}...tp/{spike-name} --json (where {default} is the base branch — usually master). It reports three-pillars-docs/** lines (living and completed-tp-designs/) that still name a symbol or file this spike retired (deleted/renamed in the diff) — the "learn ran ≠ docs match as-built" gap. Treat any hit as a propagation miss: fold the scrub into the step-6 doc updates. Advisory only — the helper always exits 0 and fails open; never block on it. Surface remaining hits in the step-12 report (and, in --auto, append them to decisions.md). Range note: {default}...tp/{spike-name} (three-dot) diffs merge-base→tp/{spike-name}, surfacing this spike's deletions — not the reverse.
-
Scan for affected downstream designs: Read all design.md files under three-pillars-docs/tp-designs/ (excluding the current spike). Match architecture decision keywords from spike-results.md against each design's Scope and Entities sections. For each affected design, also check whether its declared dependencies or parent references include the current spike — if so, note whether the spike verdict changes the dependency status.
-
Propagate NO-GO to dependent rows: If the verdict is NO-GO and step 6 found designs that declare this spike as a dependency (via Dependencies section or Parent field), propose updating those designs' rows in the Design Inventory table. Set their status to include a blocked annotation (e.g., "Designed" → "Blocked — {spike-name} NO-GO"). Show each proposed row change and get user confirmation. This ensures that /tp-plan will see the blocked status when it checks upstream dependencies, closing the feedback loop.
-
Vision drift check (do not auto-propose vision edits): Compare spike-results.md against three-pillars-docs/vision.md. A spike can legitimately surface that a vision assumption was wrong — for example, a "GO" that reveals the problem is bigger than the vision framed it, or a "NO-GO" that invalidates a principle the vision depends on. If you find a genuine tension, flag it to the user with a specific citation (which finding, which vision bullet) and recommend /tp-docs-update vision as an explicit follow-up. Do not propose vision edits directly from this skill. Spike verdicts feed the vision via a deliberate human gate, not automatically.
-
Commit the doc updates per skills/_shared/commit-after-work.md. Artifact paths to stage (include only those actually modified in steps 4–9):
three-pillars-docs/product_roadmap.md
three-pillars-docs/architecture.md
three-pillars-docs/known_issues.md
three-pillars-docs/known_issues_resolved.md (when this learn resolves an issue, move its entry verbatim from known_issues.md to this archive — never mark it resolved in place)
- Any downstream
three-pillars-docs/tp-designs/{other}/design.md files whose Design Inventory row was updated with a blocked annotation per step 9
Do NOT stage three-pillars-docs/vision.md — this skill never auto-edits vision. Commit message: Learn: {spike-name} spike.
-
Report: Summarize what was updated, what designs are affected, any vision tensions flagged, and suggest /tp-design-complete {spike-name} as the next step.