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
  • 3 views
  • 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…

Newsletter

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