Skip to content
Back to skills

Recursive Spine Digest

ASecurity

Use when sweeping all recursive-spine-conforming repos for tracking health — aging deferrals (oldest first), stalled milestones, in-flight by lane, assigned-but-untouched issues, and debts named in closing comments but never filed, plus seedling pollen that never transplanted (hive repos). Reports honest denominators; includes the recursive-spine repo itself in every sweep.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 6, 2026
developmentapi

Works with

  • api

Security analysis

A100/100

Scanned September 6, 2026

npx -y skills add slopstopper/recursive-spine --skill recursive-spine-digest --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Recursive Spine Digest?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Recursive Spine Digest
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/slopstopper-recursive-spine-digest/badge)](https://www.skillsdirectory.com/skills/slopstopper-recursive-spine-digest)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: recursive-spine-digest
description: Use when sweeping all recursive-spine-conforming repos for tracking health — aging deferrals (oldest first), stalled milestones, in-flight by lane, assigned-but-untouched issues, and debts named in closing comments but never filed, plus seedling pollen that never transplanted (hive repos). Reports honest denominators; includes the recursive-spine repo itself in every sweep.
---

# recursive-spine: digest

The board is the live view; this digest is the push signal.

## Repo set

Read the board owner and number from the invoking context (or the invoking
repo's dialect note — `docs/tracking-dialect.md` or equivalent), then read
the repo list from the Spine board (`gh project item-list <N> --owner
<BOARD_OWNER>`), falling back to the repo set recorded in the dialect note
of the repo you were invoked from; the author's founding set
(recursive-spine, plumb-line, tokenomics) is the documented default for
this installation, with private repos read from the private hive's
dialect note rather than named here. recursive-spine ITSELF is always in the
sweep — a digest that exempts its own repo is lying about its coverage.

## The sweep (per repo, via gh)

- **Aging deferrals:** open issues with the repo's deferral label
  (`deferred` or its alias — read the repo's dialect note / tracking
  section), sorted oldest-first, each with age in days.
- **Stalled milestones:** open milestones with open issues and no issue
  activity in 21+ days.
- **In-flight by lane:** open assigned issues grouped by `lane:*` label
  (omit section if the repo has no lane module).
- **Assigned-but-untouched:** assigned open issues with no events in 14+ days.
- **Unfiled debts (best effort):** recently closed issues whose closing
  comment contains "debt", "deferred", "follow-up", or "left behind" with no
  issue reference (#N) in the same comment. Flag for human eyes; do not
  auto-file.
- **Seedling pollen (hive repos only):** open `pollen`-labeled issues whose
  record still says `stage: seedling`, sorted oldest-first with age in
  days — pollen that never transplanted is a signal, same as an aging
  deferral. Omit the section for repos that are not a configured hive.
- **Stale constraints pins (repos with a constraints file):** docs whose
  `constraints-copy:` provenance line pins a sha older than the current
  head of `docs/constraints.md`, where the doc belongs to a still-open
  issue — aged like deferrals. (Merged/closed docs stay green by design;
  `recursive-spine-handover` pins the constraints sha in each closing
  record, which is what makes staleness measurable.) Omit for repos
  without the connective-tissue part.

## Spine health (repos that carry the scripts)

If the swept repo has `scripts/spine-audit.sh` (convention adherence:
closed units without handover records, merged PRs citing no issue,
branches off the naming convention) and/or `scripts/spine-doctor.sh`
(installation integrity: labels vs the dialect note's record, board
membership staleness, stamped parts still present and wired), run them
from the repo root and fold their WARN/NOTE lines into that repo's
section. Both are report-only and always exit 0 — findings are digest
material, never CI failures. If the scripts are absent, say so:
"installation predates the health scripts" is a line in the report, not
a silent skip.

## Depth (macro/micro parents)

When a swept issue has sub-issues (`parent`/`subIssues` — mechanics in
`${CLAUDE_PLUGIN_ROOT}/reference/sub-issues.md`, Read a tree), **roll it
up and leak by age**:

- A parent reports as one line with progress and head:
  `#249 Phase 1 — 3/6 children closed, head: #242`.
- Healthy children stay folded — they do not appear as separate lines.
- Any child that individually crosses an aging or stall threshold
  **leaks**: it surfaces as its own indented line directly under its
  parent's, so folding never hides rot.
- A child issue encountered in the sweep folds under its parent rather
  than appearing twice.
- If the tree cannot be read, degrade loudly per the reference: report
  the issues flat and say why.

## The report — briefing voice

The report reads like a briefing a colleague wrote: plain language first,
evidence after. The data, formats, and honest denominators are unchanged —
only the framing is specified here.

**Open with "The week at a glance":** two to four declarative sentences,
in this order — deltas first (newly aging since the last digest, resolved
since, crossed a threshold), then the single most attention-worthy item
if any, then end with the swept/failed denominator — name the failures if any. A quiet week
says so plainly ("Quiet week; nothing newly aging.").

**Delta rule:** before writing, read the previous digest comment on the
tracking issue (one read, no other state). If none exists or it cannot be
read as a digest, open with "No previous digest to compare" — never fake
a delta.

**Every repo section leads with a status** from exactly this vocabulary —
`healthy`, `aging`, `needs eyes`, `sweep failed` — in the heading, plus
one sentence saying why. A reader who reads only the leads has an
accurate picture. The full tables follow each lead as evidence, format
unchanged. Then the cross-repo "oldest five deferrals anywhere" table,
and the closing honest denominator: repos swept / repos failed (auth,
missing label, API error) — a failed repo is a line in the report, never
a silent omission. Note that 21/14-day thresholds are defaults, not
doctrine. A child issue rolled up under its parent per the Depth section appears
only there — never duplicated as a standalone line in the raw lists.

**The digest never asks.** Question-shaped sentences are the nudge
skill's monopoly; every briefing sentence is declarative. Informing is
not nudging.

**Worked example — delta week:**

> **The week at a glance:** #38 aged past a week as a deferral, and #57 resolved since the last digest. One thing needs eyes:
> Veska_Index_App's Phase-1 milestone has been silent 21 days. Swept 4/4.
>
> ### plumb-line — healthy
> Nothing aging; v0.8.0 has fresh activity.
> *(full deferral/milestone tables follow)*
>
> ### Veska_Index_App — needs eyes
> Milestone Phase-1 stalled 21d; #242 assigned but untouched 14d.
> *(tables follow)*

**Worked example — first run:**

> **The week at a glance:** No previous digest to compare. The oldest
> deferral anywhere is rs#21 (5d); nothing has crossed a stall threshold.
> Swept 4/4.

## Delivery

Channel is configuration, not doctrine: post as an issue comment on a
designated tracking issue, write to a file, or send to Slack — whatever the
user (or the scheduled runner's config) specifies. Never hardcode.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.