feat(end-session): wire RCA document write-back into planning-store step
Adds Step 2.4: when a session root-causes a real incident and the project's planning store supports an incident type + rca-<date>-<slug>.md convention, write the postmortem there via cp-cli and link affected items via impacted/impacted_by. Skips cleanly for projects without that convention. Adds a scoped cp_cli Bash allowlist entry.
This commit is contained in:
@@ -4,7 +4,7 @@ description: >
|
|||||||
End-of-session wrap-up. Captures a session log, updates CONTEXT.md for seamless
|
End-of-session wrap-up. Captures a session log, updates CONTEXT.md for seamless
|
||||||
resumption, and refreshes project docs (README, CLAUDE.md, FUTURE.md) with anything
|
resumption, and refreshes project docs (README, CLAUDE.md, FUTURE.md) with anything
|
||||||
that changed this session. Just run /end-session when you're done working.
|
that changed this session. Just run /end-session when you're done working.
|
||||||
allowed-tools: Read, Edit, Write, Grep, Glob, Bash(git log *), Bash(git diff *), Bash(date *), Bash(ls *), Bash(cat *), Bash(find *), Bash(rm *), Bash(mkdir *), Bash(sed *)
|
allowed-tools: Read, Edit, Write, Grep, Glob, Bash(git log *), Bash(git diff *), Bash(date *), Bash(ls *), Bash(cat *), Bash(find *), Bash(rm *), Bash(mkdir *), Bash(sed *), Bash(python3 -m lib.cp_cli *)
|
||||||
---
|
---
|
||||||
|
|
||||||
# End-of-Session Skill
|
# End-of-Session Skill
|
||||||
@@ -169,6 +169,32 @@ stores mislead every future session and agent that treats them as canonical.
|
|||||||
|
|
||||||
Skip this step entirely only when the project has no external planning store.
|
Skip this step entirely only when the project has no external planning store.
|
||||||
|
|
||||||
|
### Step 2.4: RCA document write-back
|
||||||
|
|
||||||
|
If this session root-caused a real incident — a bug, outage, or regression with a clear
|
||||||
|
symptom, root cause, and fix, not just routine debugging — and the project's planning store
|
||||||
|
supports an `incident` item type (check the store's `DATA_VALUES.md`/`CLAUDE.md` for an
|
||||||
|
`incident` type and an `rca-<date>-<slug>.md` naming convention; most projects will not have
|
||||||
|
this, in which case skip this step entirely):
|
||||||
|
|
||||||
|
1. **Find or create the `incident` item.** Search the planning store for an existing
|
||||||
|
`type: incident` item covering this incident before creating a new one.
|
||||||
|
2. **Write the full postmortem** as `rca-<date>-<slug>.md`, where `<date>` is the date the
|
||||||
|
incident *occurred* (not today, if determinable from git history/logs) and `<slug>` is a
|
||||||
|
short kebab-case description. Cover symptom, root cause, fix, and impact — this is the
|
||||||
|
durable narrative; the item's `CONTEXT.md` body stays a short summary.
|
||||||
|
3. **Upload it to the `incident` item**:
|
||||||
|
- CP reachable: `python3 -m lib.cp_cli planner items documents put <incident-item-uuid> rca-<date>-<slug>.md --file <path>`
|
||||||
|
- CP unreachable but the store has a local git checkout: write the file directly under
|
||||||
|
`by-uuid/<incident-item-uuid>/rca-<date>-<slug>.md` there and note in CONTEXT.md that it
|
||||||
|
needs a commit/push.
|
||||||
|
- Neither: stage it in the project's offline staging dir (e.g. `local-planning/`) and
|
||||||
|
record the pending upload in CONTEXT.md.
|
||||||
|
4. **Link every affected item** to the incident via the `impacted`/`impacted_by`
|
||||||
|
relationship verb (or whatever the store's `DATA_VALUES.md` names it) — one document on
|
||||||
|
the `incident` item, one relationship edge per affected item, not copies of the document.
|
||||||
|
5. If nothing this session rises to postmortem-worthy, skip this step and say so.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Phase 3: Update Project Documentation
|
## Phase 3: Update Project Documentation
|
||||||
|
|||||||
Reference in New Issue
Block a user