Skip to content
Back to skills

Skill Deprecation Planner

ASecurity

Plan the safe retirement of a library skill — the lifecycle end. Establishes the trigger (superseded with a coverage diff, absorbed as an extension, evidence-backed disuse, defect), runs the reverse-link sweep (every neighbor description, trigger-eval, catalog/README row, or agent definition naming the skill gets a disposition), then stages the exit — mark (successor named), redirect for a grace window, remove (registration rows moved to a retired record, never silently deleted) — each stage ...

  • 4 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 11, 2026
documentationrustgogit

Works with

  • cli

Security analysis

A100/100

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

Scanned October 5, 2026

npx -y skills add ModernNomad-98/Project-Aegis --skill skill-deprecation-planner --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Skill Deprecation Planner?

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

Security grade badge for Skill Deprecation Planner
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/modernnomad-98-skill-deprecation-planner/badge)](https://www.skillsdirectory.com/skills/modernnomad-98-skill-deprecation-planner)

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: skill-deprecation-planner
description: Plan the safe retirement of a library skill — the lifecycle end. Establishes the trigger (superseded with a coverage diff, absorbed as an extension, evidence-backed disuse, defect), runs the reverse-link sweep (every neighbor description, trigger-eval, catalog/README row, or agent definition naming the skill gets a disposition), then stages the exit — mark (successor named), redirect for a grace window, remove (registration rows moved to a retired record, never silently deleted) — each stage with rollback (a squash-merged removal reverts as one ordinary commit). Plan only; stage execution follows applicable human authorization. Use when asked to deprecate, retire, remove, or sunset a skill, prune the library on evidence, or after a reject/make-it-an-extension verdict. Do NOT use for doc lifecycle/retirement (docs-retention-index — now shipped), product-feature sunset messaging, usage-evidence gathering (skill-usage-instrumenter), or reviewing the removal PR (library-diff-reviewer).
---

# Skill Deprecation Planner

**Reading key:** a pull request (PR) proposes a repository change for review;
continuous integration (CI) runs automated checks; PM means product
management; `<squash-sha>` is the commit hash (SHA) of the single squashed
removal commit.

## Purpose

Let the library shrink as deliberately as it grows. Skills are added under a
standard, registered in a catalog, and named by their neighbors' yield
clauses and trigger-evals — which means an unplanned deletion breaks more
than a directory: it leaves dangling "that is X" redirects pointing at
nothing, trigger-evals expecting a skill that no longer exists, and count
arithmetic that silently lies. This skill produces the staged retirement
plan — trigger established, every inbound reference dispositioned, the
mark → redirect → remove path with a rollback per stage — so retiring a
skill is as governed as shipping one. It plans; it never deletes.

## Use When

- Use when: asked to deprecate, retire, remove, sunset, or "clean up" a
  skill — for any stated reason.
- Use when: a skill has been superseded by a newer one and the library
  should route requests to the successor.
- Use when: a `skill-quality-reviewer` verdict was reject or
  make-it-an-extension, and the absorbed/rejected skill needs a governed
  exit.
- Use when: usage evidence (a `skill-usage-instrumenter` evidence package)
  shows sustained zero fires for a non-exempt skill and the owner wants a
  retirement plan.
- Do NOT use when: the retiring artifact is a DOC — retention categories,
  superseded-by chains, and cleanup rules for workflow documents belong to
  `docs-retention-index` (now shipped; it owns doc lifecycle end-to-end —
  this skill must not absorb it).
- Do NOT use when: the sunset is a product FEATURE and the work is customer
  communication and migration messaging — that is a product/PM concern
  (`sunset-deprecation-communicator`, now shipped), not library mechanics.
- Do NOT use when: the question is whether anything still USES the skill —
  that evidence design is `skill-usage-instrumenter`; this skill consumes
  its package.
- Do NOT use when: reviewing the PR that executes a retirement — that is
  `library-diff-reviewer` (it checks the executed diff against this plan).
- Do NOT use when: the "retirement" is really a rename or a scope change —
  that is an ordinary skill modification with its own review, not a
  lifecycle exit.

## Inputs to Inspect

1. The target skill's full directory: frontmatter (its description is what
   currently attracts requests), all sections, `references/*`, and its
   evals — what the library loses if this leaves.
2. The reverse-link surface: every place the skill's name appears outside
   its own directory — other skills' `SKILL.md` yield clauses, every
   `trigger-evals.json` (`expected_skill`, `should_not_trigger`,
   `overlaps_with`), the catalog, the README, agent definitions, CI/config
   references. (Purpose: a full-text search for the skill name across the
   repo; every hit becomes a row in the disposition table.)
3. The deprecation trigger's evidence: the successor skill (for
   supersession), the quality-review verdict (for absorption/rejection),
   the usage evidence package (for disuse), or the defect record.
4. The library's registration conventions: how the catalog and decision log
   record status changes, and where a retired record belongs.
5. The decision log itself — retirement lands as a NEW dated entry; older
   entries stating old counts stay untouched (they were true when written).

## Workflow

1. **Establish the trigger — or stop.** Exactly one of:
   - *Superseded:* name the successor AND write the coverage diff — what
     the successor covers, and what dies with the retiree. Residue is
     declared intentionally-dropped (with owner sign-off) or blocks the
     retirement; it never disappears silently.
   - *Absorbed:* a make-it-an-extension verdict; name the base skill and
     the extension diff that carries the surviving content.
   - *Disuse:* a usage evidence package (tier and window stated) for a
     non-exempt skill — anecdote and "seems old" do not qualify.
   - *Defect:* the skill is wrong/harmful as written; note whether a fix
     was considered and why retirement wins.
   No qualifying trigger → no plan; say so.
   For uncovered successor residue, explain the owner's choices before
   seeking a disposition: *carry* it into the successor (preserves behavior,
   adds authoring/eval upkeep); *repair* the retiring skill or another named
   owner (keeps the capability but delays retirement); *drop* it deliberately
   (less maintenance, lost coverage, requires owner acknowledgment); or
   *defer* retirement (no immediate coverage loss, continued duplicate or
   defective-skill upkeep). Compare fit, money, setup time and ongoing care
   from the actual residue and mark unknowns. Recommend carrying critical
   uncovered behavior; recommend repair or deferral when safe coverage is
   not ready. Ask one disposition question per independent residue decision.
   No choice alone authorizes editing or executing a retirement stage.
2. **Run the reverse-link sweep.** Enumerate every inbound reference and
   assign each a disposition: *repoint* (to the successor), *rewrite* (the
   neighbor's yield clause or trigger-eval case no longer needs the seam),
   or *annotate historical* (decision-log and provenance text stays as
   written). An inbound reference with no disposition blocks the plan.
3. **Stage 1 — mark.** The skill stays present and functional; its
   description gains a deprecation notice naming the successor and yielding
   its triggers ("DEPRECATED — superseded by <successor>; new requests go
   there"); catalog/README rows annotated; a dated decision-log entry
   records the decision and the planned window.
4. **Stage 2 — redirect window.** A stated grace period in which the
   deprecated skill redirects rather than serves. Monitor for stragglers:
   anything still firing or referencing it (instrumented signal if
   available, else the tier-2 self-reported usage path). New references to a deprecated skill
   are review findings from this point.
5. **Stage 3 — remove.** Directory deleted; registration rows MOVE to a
   retired record (catalog retired section + decision-log entry) rather
   than vanishing; count arithmetic decremented at every site a count
   appears; trigger-evals of neighbors updated per the disposition table;
   the removal PR reviewed by `library-diff-reviewer` against this plan.
6. **Design the rollback per stage.** Stage 1/2: revert the marking
   commit(s). Stage 3: on a squash-merge platform the removal PR merged as
   ONE ordinary commit — rollback is `git revert <squash-sha>`, restoring
   the directory and its registration rows in one step. State where the
   point of no return actually is (external consumers who copied the skill
   are outside this plan's reach — say so).
7. **Deliver the plan** in the Output Format: trigger + evidence,
   disposition table, per-stage checklists with dates/windows, rollback per
   stage, and the explicit statement that execution — every stage of it —
   requires applicable human authorization, including any active grant;
   this planning skill does not perform it.

Stage checklists, the disposition-table format, the reverse-link sweep
procedure, and retired-record conventions:
[references/deprecation-stage-playbook.md](references/deprecation-stage-playbook.md).

## Output Format

```
SKILL DEPRECATION PLAN — <skill-name>
Trigger:      superseded (successor: <name>) | absorbed (base: <name>) | disuse (evidence: tier/window) | defect
Coverage diff: <what the successor covers | per residue: carry, repair,
               owner-acknowledged drop, or defer retirement | "n/a">
Residue choice: <if needed: terms, fit, pros/cons, money/setup/upkeep,
                 recommendation and why, one question>
Reverse links: <N inbound references → disposition table: repoint | rewrite | annotate-historical>
Stage 1 MARK:      <description notice + successor; registration annotations; decision-log entry> — rollback: <revert marking commit>
Stage 2 REDIRECT:  <grace window + dates; straggler monitoring source> — rollback: <un-mark; window closes>
Stage 3 REMOVE:    <directory deletion; rows moved to retired record; count sites decremented; neighbor evals updated; removal PR → library-diff-reviewer> — rollback: <git revert of the single (squash) removal commit>
Point of no return: <external copies/consumers outside plan reach — stated honestly>
Execution:    NOT performed by this plan — each stage requires applicable authorization
Not planned:  <what this plan deliberately leaves out, and why>
```

## Validation Checklist

- [ ] Exactly one qualifying trigger is established with its evidence; no
      plan rests on "seems unused" or "feels old".
- [ ] For supersession: the coverage diff exists and every residue item is
      carried, assigned a verified repair before removal, or intentionally
      dropped with owner acknowledgment; deferral pauses retirement.
- [ ] Any residue choice explains all viable dispositions, costs and a
      recommendation tied to the uncovered behavior.
- [ ] The reverse-link sweep enumerated ALL inbound references (skills,
      trigger-evals, catalog, README, agents, config) and every row has a
      disposition.
- [ ] All three stages have checklists, dates/windows, and a rollback; the
      squash-revert mechanic is stated for the removal stage.
- [ ] Registration rows move to a retired record — nothing is deleted from
      the catalog/decision log without a destination.
- [ ] Historical decision-log entries are untouched; retirement is a NEW
      dated entry.
- [ ] The plan states it executes nothing and names the human approval each
      stage requires.

## Gotchas

- Dangling yield clauses: neighbors saying "that is X" for a removed X
  send requests into a void — the single most common breakage. The
  disposition table exists because of it.
- Trigger-evals rot: a removed skill lingering in `expected_skill` or
  `should_not_trigger` lists makes the eval corpus assert the impossible.
  Neighbor evals are part of the removal diff, not a follow-up.
- Partial supersession sold as full: the successor covers 80% and the
  other 20% dies silently. The coverage diff is the defense — residue is
  carried, or dropped OUT LOUD, never elided.
- Deprecation-by-neglect: a skill marked deprecated with no removal date
  becomes permanent clutter with a warning label. Stage 2 has an end date
  or stage 1 shouldn't start.
- Count-site misses: removal decrements the skill count in fewer places
  than it appears (catalog status, README narrative, tables). Reuse the
  same site list additions use — arithmetic drift reads as sloppiness and
  breeds distrust of the record.
- Editing history to match the present: "fixing" old decision-log entries
  that state the old count rewrites the record. Entries are append-only;
  the new entry explains the new total.
- Retiring the seam instead of the skill: when a retiring skill is one
  side of a pinned discrimination seam, the surviving side's trigger-evals
  and description must be rewritten to absorb or re-route the seam — not
  left referencing a ghost.
- Rare-but-critical skills condemned by usage: low fire counts on
  incident/recovery/refusal skills are success, not disuse. The evidence
  package's exemption check is a blocking input, not advice.

## Stop Conditions

- Asked to delete the skill NOW, plan later ("just remove the directory,
  we'll tidy references after") → refuse; unstaged deletion is exactly the
  dangling-reference incident this skill exists to prevent. The plan comes
  first; execution follows the applicable human authorization or active grant.
- No qualifying trigger — the reason offered is taste, age, or an
  unevidenced hunch → stop and route: usage questions to
  `skill-usage-instrumenter`, quality questions to
  `skill-quality-reviewer`, or get an explicit owner decision recorded as
  the trigger.
- Asked to edit historical decision-log entries to reflect the removal →
  refuse; the log is append-only. New entry, old entries untouched.
- The supersession coverage diff leaves residue nobody will own → halt the
  plan before stage 1 (mark) and surface the residue; a retirement that silently
  drops covered ground is a scope decision for a human, not a planner
  default.
- An inbound reference cannot be dispositioned (a neighbor's whole
  workflow depends on the retiring skill) → stop; that is not a
  deprecation problem but a design problem — hand it to
  `skill-quality-reviewer` / the library owners before any staging.
- Asked to also plan a DOC's retirement in the same pass → decline that
  slice; doc lifecycle is `docs-retention-index` scope (now shipped) —
  hand it off.

## Supporting Files

- [references/deprecation-stage-playbook.md](references/deprecation-stage-playbook.md)
  — per-stage checklists, the disposition-table format, the reverse-link
  sweep procedure, retired-record conventions, and rollback mechanics
  including the squash-revert note.
- `evals/evals.json` — behavior cases including the rare-but-critical
  pushback edge and the delete-now refusal.
- `evals/trigger-evals.json` — discrimination against `docs-retention-index`
  (the doc-lifecycle seam), `skill-usage-instrumenter`,
  `library-diff-reviewer`, and `skill-quality-reviewer`.

Files in this skill

  • SKILL.md12.8 KB
  • evals/evals.json5.5 KB
  • evals/trigger-evals.json3.9 KB
  • references/deprecation-stage-playbook.md4.9 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…