mcpField
H
hrt-backlog-reconcile

hrt-backlog-reconcile

github.com/hash-idDevelopment241 installsUpdated 5d ago
Repository

About hrt-backlog-reconcile

hrt-backlog-reconcile is a user-invoked skill for checking deferred backlog slices against shipped OpenSpec requirements. It identifies covered and partly covered entries, then removes only deletions the user confirms.

Key features

  1. 01Compare backlog slices with OpenSpec specs
  2. 02Identify covered and partly covered entries
  3. 03Request confirmation before deleting entries
  4. 04Preserve the backlog file and header

Use cases

  1. 01Reconcile deferred work after archiving an OpenSpec change
  2. 02Find backlog entries whose behavior is already specified as shipped
  3. 03Review partial coverage before deciding what remains

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/hash-id/openspec-schema --skill hrt-backlog-reconcile

After installing, type/hrt-backlog-reconcilein Claude Code to confirm it loaded.

Details

From the project README

hrt-backlog-reconcile

openspec/BACKLOG.md holds slices deferred while planning other changes (written by hrt-change-size-gate). Entries are removed only when someone does it by hand, so shipped work covers some but they linger, and discovery keeps reading them as stale interview context. This skill reconciles the backlog against what has actually shipped.

No schema.yaml instruction invokes this — it is user-invoked only (/hrt-backlog-reconcile). Best run right after openspec archive <change>, when openspec/specs/ has just absorbed a change's delta specs, but it works any time.

Procedure

  1. Read openspec/BACKLOG.md. If it is missing or has no entries, say so and stop.
  2. For each entry, take its Slice: line and judge it against the requirements in openspec/specs/**/*.md:
    • Covered — shipped requirements now deliver that demoable behavior. Propose deleting the entry.
    • Partially covered — report which part remains; do not propose deletion.
    • Not covered — leave it, say nothing. Semantic judgment, not a string match. A shared capability name is not proof.
  3. Show every proposed deletion and partial-coverage note one entry at a time: name the entry, quote its Slice: line, name the covering requirement(s), ask the user to confirm. Follow the plain-language-writing skill's COMMS rules.
  4. Apply only confirmed deletions. Remove the entry's full block (## <slug> heading through its last - line). Keep the # Deferred Slices header even if the file empties. MUST NOT delete the file.
  5. Report what was removed and what was kept.

Entry format (kept in sync with hrt-change-size-gate)

## <slug-kebab>
- Raised by: <change-id> (<YYYY-MM-DD>)
- Slice: <1–2 sentences: what a user can demo when this slice is done>
- Deferred because: <blocking dependency / scope / capacity>

File header, when the file exists:

# Deferred Slices

> Slices raised while planning another change, deliberately deferred. Not proposals - just enough to start a `discovery` session. Delete an entry when it becomes a change.

hrt-change-size-gate owns writes to this file during proposal (adding on a split, deleting entries its own change covers); this skill owns hand-run reconciliation. Both follow the format above.

Limits

  • Specs-based only. An entry whose Raised by change was abandoned, with no trace in openspec/specs/, is not detected here — prune those by hand.
  • Needs an interactive user for step 3. In a non-interactive run, report the proposed deletions and stop without editing.

Comments

Markdown supported