Containuity — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Containuity (Plugin) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
Aggregate score unchanged between these scans.
The primary manifest — the file an agent reads to learn what this artifact does.
Stylized contAInuity; the package and command name are kebab-casecontainuity(install ascontainuity, invoke as/containuity:checkpoint).
A Claude Code plugin that codifies a checkpoint workflow — the discipline a Claude working a long-running project runs at clean breakpoints to hold continuity across sessions and compactions.
Invoke it on demand with /containuity:checkpoint, or let Claude run it automatically at a natural breakpoint (a finished unit of work, before a compaction, the end of a thread). It performs a four-step checklist — it doesn't just print it:
style, co-author policy — inferred from git log, not imposed). Offers rather than auto-commits unless you've authorized commits for the repo.
Never left stale.
on current state.
The two disciplines that are the actual point — people skip these, so the skill bakes them in:
against the real code, not memory. Mark intent as intent, never as fact. (A stale docstring once said a feature was "not wired" while the code wired it — and misled a whole debugging session. Verification is the fix.)
containuity/
├── .claude-plugin/plugin.json # manifest
├── skills/checkpoint/SKILL.md # the checklist + the two disciplines (the core)
├── hooks/
│ ├── hooks.json # PreCompact + SessionStart wiring
│ ├── precompact-nudge.sh # nudges a checkpoint before auto-compaction (once/session)
│ └── session-rehydrate.sh # after compaction/resume, reminds you to rehydrate
├── checkpoint.config.example # per-seat config template
├── EXAMPLE.md # one worked run of all four steps
└── README.mdThe skill is the core and works standalone. The hooks are optional polish.
This is a local/marketplace-style plugin directory. Two common ways to load it:
A) As a plugin (gives `/containuity:checkpoint` + the hooks). Point Claude Code at the directory as a plugin source (via your plugin marketplace config or /plugin install flow), then enable containuity. After enabling, /reload-plugins picks up the hooks. Verify with /plugin (should list containuity) and by typing /containuity: — the checkpoint skill should autocomplete.
B) As a bare personal skill (gives `/checkpoint`, no hooks). If you'd rather have the un-namespaced command and skip the hooks, copy just the skill:
cp -r containuity/skills/checkpoint ~/.claude/skills/checkpointThen restart Claude Code (a brand-new top-level skills dir needs a restart to be watched) and use /checkpoint.
Plugin skills are always namespaced as/<plugin>:<skill>, so the plugin command is/containuity:checkpoint. Option B is the way to get a plain/checkpoint.
Configure once per project ("seat"). Copy the template to your repo root and edit:
cp containuity/checkpoint.config.example .checkpoint.config| Key | Default | What it controls |
|---|---|---|
LIVING_DOC | docs/DESIGN.md | Which "how" doc is yours to keep non-stale. |
MEMORY_DIR | .claude/memory | Where durable memories are written (one fact/file + MEMORY.md index). |
COMMIT_MODE | offer | offer waits for your OK; auto commits using the inferred convention. |
COMMIT_CONVENTION | infer | infer from git log, or a freeform override note. |
No config file is required — without one the skill uses these defaults and tells you so. The skill reads .checkpoint.config, falling back to .claude/checkpoint.config.
once per session and tells Claude to run /containuity:checkpoint first. A per-session sentinel guarantees it fires at most once, so a session can never get wedged unable to compact. Manual /compact is never blocked.
reminder to read the Rehydrate go-block and to checkpoint at the next breakpoint.
Both hooks are plain bash and need no dependencies (no jq). If you don't want them, delete hooks/ — the skill is unaffected.
# hooks emit valid JSON and the nudge fires once:
printf '{"session_id":"demo","trigger":"auto"}' | hooks/precompact-nudge.sh # -> block JSON
printf '{"session_id":"demo","trigger":"auto"}' | hooks/precompact-nudge.sh # -> empty (allow)
printf '{"source":"compact"}' | hooks/session-rehydrate.sh # -> additionalContext JSON
rm -f "${TMPDIR:-/tmp}/containuity-nudged-demo"See EXAMPLE.md for a worked run of all four steps.
This plugin was designed and written collaboratively with Claude (Anthropic's Claude Code), and that's reflected honestly in the history: commits carry a Co-Authored-By: Claude trailer. A human (the author above) directed the work, made the decisions, and is responsible for what ships here. The plugin format was verified against the live Claude Code docs, and the source-verification discipline at its core was validated with adversarial subagent pressure tests rather than asserted. If you build on it, that provenance carries forward — please keep it accurate.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.