Skip to content
Back to skills

Recursive Spine Nudge

ASecurity

Use after a recursive-spine-digest sweep to select and deliver system-initiated nudges — 0–3 conversation-starters pushed to the owner about what is unblocked, aging, stalled, or newly connected. Every nudge ends in a question; the skill proposes conversations, never executes work.

  • 2 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 6, 2026
development

Works with

  • claude code
  • cli

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 6, 2026

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

Installs into .claude/skills of the current project.

Are you the author of Recursive Spine Nudge?

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

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

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-nudge
description: Use after a recursive-spine-digest sweep to select and deliver system-initiated nudges — 0–3 conversation-starters pushed to the owner about what is unblocked, aging, stalled, or newly connected. Every nudge ends in a question; the skill proposes conversations, never executes work.
---

# recursive-spine: nudge

The digest reports; the nudge starts a conversation. This skill is the
initiative organ of the collaborative loop (#47): it may only propose,
shaped so that autonomy is structurally impossible — a nudge that cannot
end in a question to a human is dropped, whatever its rank.

## Configuration (read, never assume)

From the invoking context or the private hive's `nudges/config.md`:
delivery destination (Slack DM, issue comment, or file), tracking issue,
ledger location, age thresholds. From the dialect note of the invoking
repo: board owner, repo set. Never hardcode any of these. Nudge state is
private-scope: ledger and config live in the private hive, never in a
public repo.

## Inputs

1. **The sweep** — run or receive a recursive-spine-digest sweep
   (aging deferrals, stalled milestones, in-flight by lane,
   assigned-but-untouched, honest denominators).
2. **Dependency reading** (new sensing) — per repo, find items that became
   unblocked, by two readings:
   - **Query (preferred):** for issues with sub-issues (mechanics in
     `${CLAUDE_PLUGIN_ROOT}/reference/sub-issues.md`, Read a tree), the
     sequence head is the first open child in sub-issue order whose
     earlier siblings are all closed. Verifiable structure.
   - **Prose (fallback):** issues whose recorded sequencing ("sequenced
     after…", "blocked by…", milestone ordering, lane position) names
     predecessors that are now all closed — for sequences not yet
     converted to sub-issues.
   Cite the predecessor state in the nudge, and say which reading
   produced the candidate.
3. **Pollen reading** (new sensing) — pollen records that plausibly relate
   to an open deferral. Every pair must cite *why* (shared mechanism,
   named skill, same moment). No citation, no candidate.
4. **The ledger** — `nudges/ledger.md` in the private hive: every prior
   nudge, its trigger, and its outcome.

## Candidate shape — the safety gate

Every candidate is *observation → why now → question*:

> #68 is next in the flagship lane (obs); the watches-itself milestone
> opened and its roadmap predecessors closed this week (why now); want to
> brainstorm it this week? (question)

Drop any candidate that cannot honestly take this shape.

## Discipline rules (ledger-enforced)

- **Never re-send an unanswered nudge** unless its underlying state
  changed since (issue edited, commented, relabeled, or a predecessor
  closed after the nudge date).
- **Declined stays declined** unless the issue changed after the decline.
- **Max 3 nudges per delivery.** When candidates exceed 3, say so
  ("3 of N candidates").
- **Empty week is stated, not padded:** "no nudges this week — nothing
  newly unblocked, nothing aged past threshold." The heartbeat stays
  visible even when the content is empty.

## Ranking

1. Unblocked-and-next (concrete, actionable now; within this trigger,
   query-derived heads outrank prose-derived ones — verifiable beats
   inferred)
2. Aging deferrals (oldest first)
3. Stalled milestones
4. Pollen↔deferral connections (fuzziest; earns rank as it proves precision)

Within a trigger, older first.

## Delivery

Send the selected nudges to the configured destination. Footer always
carries the honest denominator ("swept N/M; X failed: reason") when any
repo failed. If the primary channel send fails, post the nudges as a
comment on the tracking issue prefixed `nudge-delivery-failed:` — the
heartbeat must stay observable when the channel isn't.

Delivery is two-part. A channel send made as the owner's own identity
notifies no one — Slack never alerts you to your own posts — so the
channel message is the record half and an **attention ping** is the push
half: one line, under 200 characters, no markdown, leading with count and
top nudge headline (e.g. "spine: 3 nudges — top: plumb-line v0.8.0 next;
see the delivery channel"). The ping mechanism is whatever the invoking runner provides
(push notification, routine completion notice) — never hardcode one. If
the runner has no ping mechanism, say so in the delivery footer rather
than failing. Empty weeks send no ping: the heartbeat stays visible in
the thread and ledger, but an empty week is not worth an interruption.

## Ledger append (always, even on empty weeks)

Append to `nudges/ledger.md`: run timestamp, swept N/M, one line per nudge
sent (`date | repo#issue | trigger | outcome: pending`). If the previous
run's timestamp is more than one interval old, open the delivery with
"missed N scheduled runs."

## Never

- Never execute, file, close, or edit work a nudge proposes — the owner's
  reply starts that conversation elsewhere.
- Never auto-file pollen matches as issues in target repos (that is #38,
  deliberately deferred).
- Never write nudge state to a public repo.
- Never depend on a Claude Code hook having fired (#71 is an adapter,
  never the method).

Files in this skill

  • SKILL.md5.1 KB
  • evals/scenarios.md3.3 KB

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.