setup

A setup command for the never-stale plugin that adds project-specific instruction and documentation-sync rules. It also writes a marker showing that the current project has opted in.

In plain words
What is it for?
Use it once to enable never-stale for the current project. It prepares the project's CLAUDE.md and opt-in marker; related commands can later pause, resume, remove, list, check, or update the setup.
Why use it?
It lets the plugin remind the assistant about the project's conventions after sessions or automatic context compression, while leaving other projects unchanged.

Command

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/biznuts/never-stale/setup
Clone the repo
git clone --depth 1 https://github.com/biznuts/never-stale
Per session 51 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 4,235 The whole file, excluding the scripts and references it only reads on demand.
Security scan B 1 finding. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00051 $0.04235
Opus 5 $0.00026 $0.02117
Sonnet 5 $0.00010 $0.00847
Haiku 4.5 $0.00005 $0.00424

Measured 2d ago against content hash 94d311a6e5be, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade B, and why

setup scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Reads agent configuration directoriesmediumAgent snooping

.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.

`<ROOT>/.claude/hooks/never-stale-reminder.js` and, in `<ROOT>/.claude/settings.json`
never-stale/commands/setup.md · 312 lines

How it starts

The opening of the file, as written. The whole thing — 312 lines — stays where its author put it; the contents beside it link to each section on GitHub.

never-stale — set up this project

Goal: stop the assistant from "forgetting" project conventions mid-session — keep docs in sync, keep language consistent, and re-confirm the rules after every auto-compact.

This is the setup verb. Related verbs (each its own command): /never-stale:off (pause) · /never-stale:on (resume) · /never-stale:remove (full teardown) · /never-stale:list · /never-stale:status · /never-stale:update (reconcile versions / language codes after a plugin upgrade).

How it works (read this before doing anything)

The hooks ship inside the plugin (hooks/hooks.json + hooks/never-stale-gate.js, resolved via ${CLAUDE_PLUGIN_ROOT}). Once the plugin is installed they are registered machine-wide, so the gate script runs in every session — but it only acts in a project that carries an opt-in marker file. Running is not acting:

  • plugin enabled → the gate script runs in every session;
  • marker present (<ROOT>/.claude/never-stale.json or never-stale.local.json with enabled: true) → the gate acts (emits a reminder) in that project only;
  • no marker, or enabled: false → the gate exits silently. Other projects are untouched.

To find the marker the gate walks up from the launch dir (CLAUDE_PROJECT_DIR, falling back to the stdin cwd) to the nearest ancestor that carries one — so launching from a subdirectory still works — bounded by the git repo root so a marker outside the repo never governs it. A marker therefore covers its directory and everything below it; a subtree can opt out with its own "enabled": false marker.

Therefore setup does not write any hook into the project and does not drop a script into the project. It only writes two project-owned things: the marker (the opt-in switch) and the CLAUDE.md rules block. This is what makes uninstall clean: /plugin uninstall removes the plugin's hooks machine-wide, and the only per-project leftover is inert data (the marker + your own CLAUDE.md prose), never orphaned executable code.

Read the full file on GitHub · 312 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 312 lines · 51 tokens per session scan B 94d311a6e5be

Subscribe to this mod's changes

setup is a command published in the GitHub repository biznuts/never-stale (2 stars, last pushed 1mo ago), licensed MIT. It adds 51 tokens to every session and 4,235 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it B with 1 finding (reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.