Follow-up Status Check
The read-only front door onto this project's backlog. follow-up-triage's flow is the action step once you
already know a follow-up needs promoting or closing; this skill runs first to find out whether one does, and --
because the follow-up list itself is often empty once things have been promoted -- to say what to work on next
even when it is. See Backlog Triage and Ranking for the full,
self-contained decision logic this skill applies.
Mindset
A follow-up sitting ACTIVE is a weak signal by design: someone flagged it and moved on, which is not the same as
it still being the right thing to do next. TYPICALLY the useful answer to "what's open" spans three sources at
once (the follow-up list, the register, the tech-debt list), not just the one the command name suggests. PREFER
checking all three and saying which source the recommendation came from, over answering only the literal
follow-up list and calling it done -- an empty follow-up list is a completely normal outcome (every follow-up
promoted and closed) and never grounds for stopping the check early.
Rules
- This skill never mutates the register, the tech-debt list, or a follow-up's status. Report and recommend
only. Apply follow-up-triage's flow directly to promote or close a follow-up (it's an instructions doc, not a
separate Skill), or hand off to the
risk-register / tech-debt skills to file or resolve a row, or
plan-create to scaffold work on the recommended item -- and only after the user says to proceed.
- Zero
ACTIVE follow-ups is not "nothing to do." It usually means the funnel is empty because everything in
it was already promoted or closed -- the real backlog then lives in the register/tech-debt Open rows and the
context index's DRAFT/ACTIVE PLAN/FINDING/KNOWN_ISSUE entries. Always fall through to those sources
rather than reporting an empty follow-up list as the whole answer.
- Ground the "next best item" pick in the value-rubric's read protocol wherever it applies (
PLAN/FINDING/
KNOWN_ISSUE entries carry a value grade and a defined sort). For a pick sourced from the register or the
tech-debt list instead, say explicitly that it's a qualitative judgment call -- those rows carry no value
field, so there is no rubric-sorted answer to defer to.
- If the context index looks stale, regenerate it (
context-index skill) before trusting it. A quick sanity
check: its header entry count should roughly match the actual file count under the context directory (see
Prerequisites for the exact path). A mismatch means new or removed files haven't been indexed yet, and the
candidate-pool step of the Workflow would be working from stale data.
- An
ACTIVE follow-up outranks a silently-pending backlog row. If the follow-up sweep finds any ACTIVE
entry, lead the recommendation with it rather than the value-rubric or register/tech-debt pools -- a follow-up
is something a person already flagged as worth acting on, which is a stronger signal than an unflagged row
sitting in a list.
Prerequisites
.context/follow-ups/*.md the follow-up list
.context/index.yaml the context index (value-rubric candidates)
docs/RISK_REGISTER.md the register
docs/TECH_DEBT.md the tech-debt list
.claude/instructions/follow-up-triage.md follow-up-triage's flow (canonical source; summarized in references/)
.claude/instructions/value-rubric.md the value-rubric protocol (canonical source; summarized in references/)
When to Use
- The user types
/follow-up, or asks "what's open", "what should I work on next", "check the follow-up backlog",
"anything still outstanding", "next best item to work on".
- At the start of a session, as a cheap alternative/complement to reading the tech-debt list's Progress-section
prompt by hand.
When NOT to Use
- To actually promote or close a follow-up -- that's follow-up-triage's flow, applied directly (this skill
only tells you which follow-ups need it).
- To file a new follow-up, finding, or plan -- that's
context-file / plan-create.
- To add or resolve a register or tech-debt row -- that's
risk-register / tech-debt directly, once this
skill (or anything else) has told you which row.
Workflow
Freshness check (Rule 4). Compare the context index's header entry count against the actual file count
under the context directory:
find .context -name '*.md' | wc -l
If the result diverges meaningfully from the index's own header comment, run context-index first.
Follow-up sweep. Filter the follow-up list to status: ACTIVE:
grep -l 'status: ACTIVE' .context/follow-ups/*.md
DONE entries are closed; ignore them here. For each ACTIVE entry, read its Context + Outstanding Work,
check whether its topic already has a matching Open row on the register or the tech-debt list, and classify
per the disposal logic in Backlog Triage and Ranking -- ready to
close-as-superseded, needs promotion to the register, needs promotion to the tech-debt list, or still genuinely
open. File nothing; that's the handoff, not this skill's job. If none are ACTIVE, say so explicitly and
continue anyway (Rule 2).
Build the wider candidate pool. Count the committed-backlog side directly:
grep -c '| Open ' docs/RISK_REGISTER.md docs/TECH_DEBT.md
Apply the value-rubric read protocol (same reference doc) over the context
index's PLAN/FINDING/KNOWN_ISSUE entries; separately collect Open rows from the register and the
tech-debt list.
Synthesize one recommendation (Rule 5 ordering): any ACTIVE follow-up first; otherwise the value-rubric
pool's top tier-1 item; otherwise a qualitative judgment call across the register/tech-debt pool (Rule 3).
Always state why the pick beats the runner-up, not just that it won.
Report using the format in Worked Example, then stop -- offer the relevant
handoff rather than acting on it.
Anti-Patterns
NEVER report "no open follow-ups" as the complete answer to /follow-up.
WHY: A follow-up funnel emptying out because everything in it was promoted or closed is the expected steady
state once a project matures past its early weeks -- exactly the case in this repo, where all 15 filed follow-ups
are currently DONE. Stopping there answers the literal words of the command while ignoring the actual open
backlog sitting in the register and the tech-debt list.
BAD: "No ACTIVE follow-ups. Nothing to report."
GOOD: "No ACTIVE follow-ups (all 15 filed ones are DONE). Falling through to the committed backlog: 38 open
register rows, 7 open tech-debt rows -- recommended next item is register row 5 (CI runner allowlist opacity,
recurring friction)."
Consequence: A genuinely large, actionable backlog goes completely unreported, and the person who ran
/follow-up walks away believing there is nothing to do when there are dozens of open items one directory over.
NEVER invent a value ranking for a register or tech-debt row.
WHY: Those rows have no value field and were never graded against the value-rubric protocol -- presenting a
pick from them with the same confidence as a rubric-sorted PLAN/FINDING/KNOWN_ISSUE pick overstates how
principled the ordering is.
BAD: "Value: HIGH -- row 6 (collector failure logging)." (no such field exists on that row)
GOOD: "Judgment call, not rubric-sorted: row 6 touches the RUNBOOK's symptom index directly, which is why it
ranks above rows 7-11's mechanical single-export-per-file cleanups."
Consequence: The reader trusts an ordering that was never actually graded against a standard, and a
differently-reasonable ranking (another person's judgment call) looks like a disagreement with the rubric instead
of what it actually is -- two informal opinions.
NEVER promote, close, or edit a row or follow-up from inside this skill.
WHY: This skill's entire value is being safe to run at any time with no side effects -- the moment it starts
writing to a committed doc, running it "just to check" carries the same risk as applying follow-up-triage's own
promotion/close step itself.
BAD: Silently flipping a follow-up's status to DONE because its topic was found already covered by an
existing register row.
GOOD: "This follow-up is ACTIVE but its topic is already covered by register row 16 -- recommend closing it as
superseded per follow-up-triage's flow. Want me to do that now?"
Consequence: A user who ran this skill expecting a safe, side-effect-free check instead finds a doc already
mutated without a chance to review the change first -- exactly the trust /follow-up is supposed to earn by never
needing that caution in the first place.
NEVER skip the freshness check and trust a possibly-stale context index.
WHY: A newly filed follow-up, or one just closed in a separate change, may not be reflected yet -- the sweep
and the candidate pool are both built directly from the index's current contents.
BAD: Reading the index once at the start of a long session and reusing it for every later /follow-up call
without re-checking.
GOOD: Compare the index's header entry count against the actual file count before every sweep; regenerate via
context-index on a mismatch, per Rule 4.
Consequence: The skill can recommend an item someone already closed in a separate change, or miss a brand-new
ACTIVE follow-up entirely -- silently, since a stale-but-present index never errors the way a missing file would.
NEVER present a register/tech-debt-sourced pick with the same confidence as a value-rubric-sorted pick.
WHY: Only PLAN/FINDING/KNOWN_ISSUE entries carry a value grade and a defined sort; a register or
tech-debt row has neither, so any ordering among them is this skill's own judgment call applying the rubric's
grading questions informally, not the project's own rubric output.
BAD: Reporting a register-sourced recommendation in the exact same sentence structure as a rubric-sorted one,
with no signal that one is graded and the other isn't.
GOOD: "Judgment call, not rubric-sorted: register row 5 outranks tech-debt row 7 because it retires a
recurring cost (every future CI job risks the same rediscovery), where row 7 only ever saves the one file it
touches."
Consequence: Two different people (or the same person on two different days) can reasonably rank the same
register/tech-debt pool differently, and presenting one ordering as if it were rubric output hides that
disagreement instead of surfacing it.
References
| Topic |
Reference |
When to Use |
| Full follow-up disposal logic and the value-rubric's ranked-candidate read protocol, self-contained |
Backlog Triage and Ranking |
Workflow steps 2-4, or when Rule 3's qualitative-judgment call needs justifying |
| A fully filled-in sample report against this project's real state, plus the blank output template |
Worked Example |
Workflow step 5, or when drafting the first report of a session |
1---2name: follow-up3description: Read-only status check across the follow-up backlog: lists every ACTIVE follow-up entry, assesses whether it's still genuinely open, and recommends the single best next item to work on -- pulling in open RISK_REGISTER and TECH_DEBT rows and the value-rubric's ranked PLAN/FINDING/KNOWN_ISSUE candidates when the follow-up list itself is empty, since that's where promoted follow-up work actually ends up living. Triggers: '/follow-up', 'check follow-ups', 'what's open', 'what should I work on next', 'follow-up status check', 'next best item', 'what's still open'. Does NOT promote, close, or otherwise edit anything -- it reports and recommends, then applies follow-up-triage's own flow directly or hands off to the risk-register / tech-debt / plan-create skills for the actual write.4---56# Follow-up Status Check78The read-only front door onto this project's backlog. follow-up-triage's flow is the *action* step once you9already know a follow-up needs promoting or closing; this skill runs first to find out whether one does, and --10because the follow-up list itself is often empty once things have been promoted -- to say what to work on next11even when it is. See [Backlog Triage and Ranking](references/backlog-triage-and-ranking.md) for the full,12self-contained decision logic this skill applies.1314## Mindset1516A follow-up sitting `ACTIVE` is a weak signal by design: someone flagged it and moved on, which is not the same as17it still being the right thing to do next. TYPICALLY the useful answer to "what's open" spans three sources at18once (the follow-up list, the register, the tech-debt list), not just the one the command name suggests. PREFER19checking all three and saying which source the recommendation came from, over answering only the literal20follow-up list and calling it done -- an empty follow-up list is a completely normal outcome (every follow-up21promoted and closed) and never grounds for stopping the check early.2223## Rules24251. **This skill never mutates the register, the tech-debt list, or a follow-up's status.** Report and recommend26 only. Apply follow-up-triage's flow directly to promote or close a follow-up (it's an instructions doc, not a27 separate Skill), or hand off to the `risk-register` / `tech-debt` skills to file or resolve a row, or28 `plan-create` to scaffold work on the recommended item -- and only after the user says to proceed.292. **Zero `ACTIVE` follow-ups is not "nothing to do."** It usually means the funnel is empty because everything in30 it was already promoted or closed -- the real backlog then lives in the register/tech-debt `Open` rows and the31 context index's `DRAFT`/`ACTIVE` `PLAN`/`FINDING`/`KNOWN_ISSUE` entries. Always fall through to those sources32 rather than reporting an empty follow-up list as the whole answer.333. **Ground the "next best item" pick in the value-rubric's read protocol wherever it applies** (`PLAN`/`FINDING`/34 `KNOWN_ISSUE` entries carry a `value` grade and a defined sort). For a pick sourced from the register or the35 tech-debt list instead, say explicitly that it's a qualitative judgment call -- those rows carry no `value`36 field, so there is no rubric-sorted answer to defer to.374. **If the context index looks stale, regenerate it (`context-index` skill) before trusting it.** A quick sanity38 check: its header entry count should roughly match the actual file count under the context directory (see39 Prerequisites for the exact path). A mismatch means new or removed files haven't been indexed yet, and the40 candidate-pool step of the Workflow would be working from stale data.415. **An `ACTIVE` follow-up outranks a silently-pending backlog row.** If the follow-up sweep finds any `ACTIVE`42 entry, lead the recommendation with it rather than the value-rubric or register/tech-debt pools -- a follow-up43 is something a person already flagged as worth acting on, which is a stronger signal than an unflagged row44 sitting in a list.4546## Prerequisites4748```text49.context/follow-ups/*.md the follow-up list50.context/index.yaml the context index (value-rubric candidates)51docs/RISK_REGISTER.md the register52docs/TECH_DEBT.md the tech-debt list53.claude/instructions/follow-up-triage.md follow-up-triage's flow (canonical source; summarized in references/)54.claude/instructions/value-rubric.md the value-rubric protocol (canonical source; summarized in references/)55```5657## When to Use5859- The user types `/follow-up`, or asks "what's open", "what should I work on next", "check the follow-up backlog",60 "anything still outstanding", "next best item to work on".61- At the start of a session, as a cheap alternative/complement to reading the tech-debt list's Progress-section62 prompt by hand.6364## When NOT to Use6566- **To actually promote or close a follow-up** -- that's follow-up-triage's flow, applied directly (this skill67 only tells you which follow-ups need it).68- **To file a new follow-up, finding, or plan** -- that's `context-file` / `plan-create`.69- **To add or resolve a register or tech-debt row** -- that's `risk-register` / `tech-debt` directly, once this70 skill (or anything else) has told you which row.7172## Workflow73741. **Freshness check (Rule 4).** Compare the context index's header entry count against the actual file count75 under the context directory:7677 ```bash78 find .context -name '*.md' | wc -l79 ```8081 If the result diverges meaningfully from the index's own header comment, run `context-index` first.822. **Follow-up sweep.** Filter the follow-up list to `status: ACTIVE`:8384 ```bash85 grep -l 'status: ACTIVE' .context/follow-ups/*.md86 ```8788 `DONE` entries are closed; ignore them here. For each `ACTIVE` entry, read its `Context` + `Outstanding Work`,89 check whether its topic already has a matching `Open` row on the register or the tech-debt list, and classify90 per the disposal logic in [Backlog Triage and Ranking](references/backlog-triage-and-ranking.md) -- ready to91 close-as-superseded, needs promotion to the register, needs promotion to the tech-debt list, or still genuinely92 open. File nothing; that's the handoff, not this skill's job. If none are `ACTIVE`, say so explicitly and93 continue anyway (Rule 2).943. **Build the wider candidate pool.** Count the committed-backlog side directly:9596 ```bash97 grep -c '| Open ' docs/RISK_REGISTER.md docs/TECH_DEBT.md98 ```99100 Apply the value-rubric read protocol (same reference doc) over the context101 index's `PLAN`/`FINDING`/`KNOWN_ISSUE` entries; separately collect `Open` rows from the register and the102 tech-debt list.1034. **Synthesize one recommendation** (Rule 5 ordering): any `ACTIVE` follow-up first; otherwise the value-rubric104 pool's top tier-1 item; otherwise a qualitative judgment call across the register/tech-debt pool (Rule 3).105 Always state why the pick beats the runner-up, not just that it won.1065. **Report** using the format in [Worked Example](references/worked-example.md), then stop -- offer the relevant107 handoff rather than acting on it.108109## Anti-Patterns110111**NEVER** report "no open follow-ups" as the complete answer to `/follow-up`.112**WHY:** A follow-up funnel emptying out because everything in it was promoted or closed is the *expected* steady113state once a project matures past its early weeks -- exactly the case in this repo, where all 15 filed follow-ups114are currently `DONE`. Stopping there answers the literal words of the command while ignoring the actual open115backlog sitting in the register and the tech-debt list.116**BAD:** "No ACTIVE follow-ups. Nothing to report."117**GOOD:** "No ACTIVE follow-ups (all 15 filed ones are DONE). Falling through to the committed backlog: 38 open118register rows, 7 open tech-debt rows -- recommended next item is register row 5 (CI runner allowlist opacity,119recurring friction)."120**Consequence:** A genuinely large, actionable backlog goes completely unreported, and the person who ran121`/follow-up` walks away believing there is nothing to do when there are dozens of open items one directory over.122123**NEVER** invent a `value` ranking for a register or tech-debt row.124**WHY:** Those rows have no `value` field and were never graded against the value-rubric protocol -- presenting a125pick from them with the same confidence as a rubric-sorted `PLAN`/`FINDING`/`KNOWN_ISSUE` pick overstates how126principled the ordering is.127**BAD:** "Value: HIGH -- row 6 (collector failure logging)." (no such field exists on that row)128**GOOD:** "Judgment call, not rubric-sorted: row 6 touches the RUNBOOK's symptom index directly, which is why it129ranks above rows 7-11's mechanical single-export-per-file cleanups."130**Consequence:** The reader trusts an ordering that was never actually graded against a standard, and a131differently-reasonable ranking (another person's judgment call) looks like a disagreement with the rubric instead132of what it actually is -- two informal opinions.133134**NEVER** promote, close, or edit a row or follow-up from inside this skill.135**WHY:** This skill's entire value is being safe to run at any time with no side effects -- the moment it starts136writing to a committed doc, running it "just to check" carries the same risk as applying follow-up-triage's own137promotion/close step itself.138**BAD:** Silently flipping a follow-up's `status` to `DONE` because its topic was found already covered by an139existing register row.140**GOOD:** "This follow-up is ACTIVE but its topic is already covered by register row 16 -- recommend closing it as141superseded per follow-up-triage's flow. Want me to do that now?"142**Consequence:** A user who ran this skill expecting a safe, side-effect-free check instead finds a doc already143mutated without a chance to review the change first -- exactly the trust `/follow-up` is supposed to earn by never144needing that caution in the first place.145146**NEVER** skip the freshness check and trust a possibly-stale context index.147**WHY:** A newly filed follow-up, or one just closed in a separate change, may not be reflected yet -- the sweep148and the candidate pool are both built directly from the index's current contents.149**BAD:** Reading the index once at the start of a long session and reusing it for every later `/follow-up` call150without re-checking.151**GOOD:** Compare the index's header entry count against the actual file count before every sweep; regenerate via152`context-index` on a mismatch, per Rule 4.153**Consequence:** The skill can recommend an item someone already closed in a separate change, or miss a brand-new154`ACTIVE` follow-up entirely -- silently, since a stale-but-present index never errors the way a missing file would.155156**NEVER** present a register/tech-debt-sourced pick with the same confidence as a value-rubric-sorted pick.157**WHY:** Only `PLAN`/`FINDING`/`KNOWN_ISSUE` entries carry a `value` grade and a defined sort; a register or158tech-debt row has neither, so any ordering among them is this skill's own judgment call applying the rubric's159grading questions informally, not the project's own rubric output.160**BAD:** Reporting a register-sourced recommendation in the exact same sentence structure as a rubric-sorted one,161with no signal that one is graded and the other isn't.162**GOOD:** "Judgment call, not rubric-sorted: register row 5 outranks tech-debt row 7 because it retires a163*recurring* cost (every future CI job risks the same rediscovery), where row 7 only ever saves the one file it164touches."165**Consequence:** Two different people (or the same person on two different days) can reasonably rank the same166register/tech-debt pool differently, and presenting one ordering as if it were rubric output hides that167disagreement instead of surfacing it.168169## References170171| Topic | Reference | When to Use |172| --- | --- | --- |173| Full follow-up disposal logic and the value-rubric's ranked-candidate read protocol, self-contained | [Backlog Triage and Ranking](references/backlog-triage-and-ranking.md) | Workflow steps 2-4, or when Rule 3's qualitative-judgment call needs justifying |174| A fully filled-in sample report against this project's real state, plus the blank output template | [Worked Example](references/worked-example.md) | Workflow step 5, or when drafting the first report of a session |