Skip to content
Back to skills

Retention

ASecurity

Act on the storage clock — transcripts past their retention date. Use on /retention, when graph-lint reports an overdue file, or during a periodic data review.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 19, 2026
researchpythongobash

Security analysis

A100/100

Scanned September 19, 2026

npx -y skills add Pearl1531/Archetype-talk --skill retention --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Retention?

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

Security grade badge for Retention
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/pearl1531-retention/badge)](https://www.skillsdirectory.com/skills/pearl1531-retention)

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: retention
description: Act on the storage clock — transcripts past their retention date. Use on /retention, when graph-lint reports an overdue file, or during a periodic data review.
---

# retention — the clock, and why it usually ends in a state change

Storage limitation (GDPR Art. 5(1)(e)) says personal data may not be kept longer
than necessary. It does **not** say "delete your research" — and treating the two
as the same is how teams lose their evidence base for no compliance gain.

The insight this skill is built on: **anonymous data is outside the GDPR
entirely.** So the natural end of the clock is not deletion, it is graduation.

```
raw  →  scrubbed  →  key destroyed (anonymous)  →  [only if needed] deleted
        ↑ clock running          ↑ clock stops
```

## Trigger

```
/retention              ← what is due, what is close, what to do
/retention --review     ← walk every transcript, not only overdue ones
```

`graph-lint` surfaces overdue files too and points here.

## Workflow

### 1. What is due

```bash
python3 scripts/graph_lint.py    # [retention] lines: overdue, and due within 30 days
```

A file only has a clock if it has `retention_until:` and is still personal data
(`key_location:` anything but `destroyed`). Files without the field aren't
violations — they're unrecorded. Offer to set a date, don't nag.

### 2. Propose the state change first

For each overdue transcript, in this order:

1. **Finish de-identification** — is the scrub good enough that nobody could
   identify this person from the remaining text? Check the whole thing, not just
   names: unique phrasing, employer, city plus role plus age, an anecdote only
   one person could tell. `anonymization: manual_verified` means a human
   confirmed this; nothing else does.
2. **Destroy the key** — the linking list, the recording, the calendar invite,
   the recruiting-platform record, the incentive payment trail. This happens
   **outside this repo**, in the systems that hold them; the skill can only set
   `key_location: destroyed` to record that it was done. Ask, don't assume.
3. Once both are true, the file is anonymous: set `key_location: destroyed`, drop
   `retention_until` (or leave it as history), and **the clock stops for good**.

### 3. Delete only when the text still identifies

If the material can't be de-identified without gutting it — a small sample where
the story itself names the person, a session about a named product decision —
then deletion is the right answer. Hand off to `/forget-participant <CODE>`,
which does the cascade and the re-grading properly.

### 4. Report

Show: what graduated (clock stopped), what was deleted, what the user deferred
and until when. Then run `graph_lint` to confirm the graph is still consistent.

## Rules

- **Never delete a file on your own.** Propose; the researcher decides. This skill
  edits frontmatter after approval and hands deletion to `/forget-participant`.
- **De-identification before deletion, always.** Deleting a transcript that could
  simply have been anonymised destroys research for nothing.
- **Retention ≠ freshness.** The 3-month freshness rule asks *is this finding
  still true?*; retention asks *may we still hold this?* A stale finding may be
  perfectly lawful to keep; a fresh one may be past its retention date. Never
  merge the two clocks, and never let a UI filter that hides old items be
  described as deletion.
- **The clock comes from your promise, not from a statute.** GDPR sets no number.
  If the consent said "we keep recordings 12 months", that is the date. Read
  `consent_scope` and `consent_ref` before proposing anything.
- **Demo files have no clock** — fictional participants, nothing to expire.

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…