den-refresh
Use when an already-scaffolded project is behind the framework — a drift notice appeared, a new ai-badger version shipped, or the user asks to…
Skill by Arasz
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/arasz-den-refresh
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md and code. Checked Oct 26, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 2
codeload.github.com· found in install commandgithub.com· found in code
Files it touches
~/.claude/skills/den-refresh- Your home directory (~)
~/.ai-badger/framework
What's inside
- Skill name
den-refresh- Description
- Use when an already-scaffolded project is behind the framework — a drift notice appeared, a new ai-badger version shipped, or the user asks to "refresh"/"update ai-badger". Reports what changed, backs up .ai-badger/, and re-scaffolds from the project's existing config.
- License
- MIT
- Instructions
- 277 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Files (4)
- SKILL.md
- error-recovery.md · references/
- refresh.py · scripts/
- skill_usage.py · scripts/
SKILL.md (first lines)
# den-refresh
Pulls framework updates from the ai-badger catalog into a project that was
already scaffolded. **The script does all mechanical work; you (the agent)
present the report and help the user review the diff.**
This is the update direction of the framework: framework → project (update).
For initial setup use `welcome-ai-badger`; to contribute back use `feed-badger`.
## Responsibility split
- **Script (mechanical):** `refresh.py` validates prerequisites (config.json,
manifest.json), runs drift detection, re-scaffolds with the existing config,
and emits a JSON report. Skills with extensions (e.g., `task` with
`github`/`hermes` extensions) are re-scaffolded and their extensions
re-embedded automatically.
- **You (creative only):** present the report, help the user review what
changed, and offer to commit or discard. There is no config authoring, no
stack detection, no plugin scope prompt — those belong to `welcome-ai-badger`.
## Prerequisites
- Project has `.ai-badger/config.json` and `.ai-badger/manifest.json` (it was
scaffolded by `welcome-ai-badger`)
- An ai-badger framework checkout is accessible (`$AI_BADGER`)
## Flow
1. **Run refresh.** From the target repo root:
```bash
python3 "$AI_BADGER/features/common/skills/den-refresh/scripts/refresh.py" --target . --root "$AI_BADGER"
```
Add `--prune-cache` or `--prune-namespaces` only when the user has asked for it (steps 3
and 3c) — both delete from the user's home directory. Add `--force` only
as recovery (see Error Recovery) — it re-scaffolds unconditionally, bypassing every drift
signal.
This:
- Validates that config.json and manifest.json exist
- Reads the manifest to extract scaffolded skill names
- Runs drift detection against the framework's current content
- If drift is found, re-scaffolds using the existing config.json
- Outputs a JSON report with drift details and scaffold notes
Exit codes: 0 = success (up to date or changes applied), 2 = error (missing
config/manifest, invalid config).
2. **Review the report.** The JSON output includes:
- `frameworkVersion` — the version in config.json vs. the framework's, plus the version
that actually wrote `manifest.json`. config.json advances only when a re-scaffold ran
- `drift.changed` — framework sources that have moved ahead of what this project holds
- `drift.removed` — scaffolded files whose framework source no longer exists
- `drift.orphaned` — entries whose stack this project no longer lists in `config.stacks`.
The framework still ships them; this project stopped asking. The re-scaffold prunes them,
leaving anything edited in place with a note
- `drift.versionChanged` — the version alone moved; it is stamped into manifest.json and
every generated agent file, so those are stale even when no content changed
- `drift.locallyModified` — skills this project edited in place. Not framework drift, but
a re-scaffold overwrites them; move anything worth keeping into `project-local.md`
- `drift.skipped` — directory entries from a manifest written before source hashing
existed. Nothing records what the framework looked like, so they cannot be compared;
a re-scaffold makes them comparable
- `drift.newItems` — catalog items the project has never scaffolded, including ones
added to the framework's always-on `common` stack after this project was set up
- `drift.configChanged` — `null` unless config.json itself no longer matches what the
last scaffold was built from (an `exclude`, `commands`, `stacks`, `agents` or
`personaRouting` edit). Present as `{"recorded": ..., "current": ...}`; `recorded: null`
means this manifest predates the field and self-heals on this one re-scaffold
- `drift.proseReview` — the config's free-form prose (`project.summary`, `project.domain`),
re-rendered verbatim into the managed agent files on every scaffold and checked by no
fingerprint, so it goes stale silently. Each entry names the `configKey`, the template
`slot` it fills, the `value` as written, and carries the note "human-written — review
for staleness". Present them to the operator for review; never treat them as drift —
a re-scaffold cannot freshen prose, only re-render it, and config.json is project-owned
- `newStacks` — stacks detectable in the target but missing from config. Advisory only:
it never triggers a re-scaffold, so non-empty `newStacks` alongside `reScaffolded: false`
is the expected shape, not a contradiction
- `reScaffolded` — whether a re-scaffold was performed
- `projectIdWarning` — present only when the project-id step warned: ai-raccoon's id lookup
or registration failed, several bank projects share this repo's name, or the reply was
unusable. The id file is still minted or kept; the warning names the command to rerun
after a human resolves it (ai-raccoon 1.57.0's `project id` verbs; ADR-0036)
- `note` — present only when config.json and the framework disagree on the version and no
re-scaffold ran; the generated files were not rewritten, so say so rather than reporting green
- `scaffold` — if re-scaffolded: entry count, refreshed skill names, notes
- `frameworkCopies` — present only when more than one tree on the machine claims to be
ai-badger, or when `~/.ai-badger/framework` exists. `competing` names the path, version
and owner of each; `cache` reports what happened to `~/.ai-badger/framework`
(`reported` by default, `removed` with `--prune-cache`, `refused` with the reason)
- `skillUsage` — which delivered skills this project was observed using, so unused ones can
be pruned from the listing budget (see step 3b). `used` / `unused` / `cannotTell`, plus the
`window` the claim rests on, the `channels` that answered, and the `limits` of both
- `hermesNamespaces` — present only when every ai-badger symlink in a
`~/.hermes/skills/<project>/` directory is dangling: that project's `.ai-badger/skills/`
tree is gone. Every project's namespace is swept, not just this one (see step 3c). Each
entry carries `path`, `links` (dead links ai-badger placed), `kept` (entries it did not —
a non-zero `kept` means the directory itself survives the prune), the `target` that no
longer exists, and `status` (`reported` by default, `removed` with `--prune-namespaces`,
`failed` with the reason)
3. **Surface competing copies.** When the report carries `frameworkCopies`, tell the user which
trees exist and at what versions — a drift notice fires once per tree, so two contradictory
notices mean two installs, not a framework bug. `~/.ai-badger/framework` is ai-badger's own
fallback clone and nothing updates it in place; offer to re-run with `--prune-cache` to
remove it. **Never offer to delete `~/.claude/plugins/cache/`** — Claude Code owns that path
and ai-badger only reads it.
3b. **Offer the prune candidates — never prune them.** `skillUsage.unused` names skills this
project holds and nobody invoked over `skillUsage.window`. The payoff is the listing budget:
a host allots a fixed slice of context to skill descriptions and drops the least-invoked ones
first, so an unused skill crowds one somebody does use. Tell the user the candidates and how
to decline them — `exclude.skills` in `config.json`, which is self-executing on the next
refresh (`drift.configChanged`) — and stop there. **`config.json` is project-owned; never
edit it as part of a refresh.**
Report the rest of the section with the candidates, not instead of them:
- `used` carries `evidence` — `invocation` (someone ran it) or `hook` (nobody ran it, but a
hook it ships fired, so it is doing work every session). Both mean leave it alone
- `cannotTell` is the honest bucket, and it is not a weaker `unused`: a skill listed there
was never observable. Never propose pruning oneFrom Arasz/ai-badger, MIT.
More from Arasz/ai-badger
- 0.609score
commit-reminder
Arasz
Use when a project has accumulated uncommitted changes and nobody has said so out loud — several edits in a row with no commit in between — or when a subagent…
SkillAFreshness: A★ 3Claude Code +9 - 0.609score
decision-record
Arasz
Use when a change adds a feature or meaningfully changes how something works and the decision behind it has to be written down before implementation — "record…
SkillAFreshness: A★ 3Claude Code +9 - 0.609score
code-review-evidence
Arasz
Use when reviewing code that wraps external libs/extensions/SDKs/CLIs, or QA-reviewing a test harness: verify wrapped-library semantics from the upstream…
SkillAFreshness: A★ 3Claude Code +9 - 0.609score
ai-raccoon-memory
Arasz
Use when a project needs a memory server — search project and shared memory first, write durable facts with source paths, watch a docs directory, or promote…
SkillAFreshness: A★ 3Claude Code +9 - 0.609score
auto-wm
Arasz
Use when the user wants Claude to auto-approve tool calls — "enable autonomic/autonomous work mode", "/auto-wm", "partner mode", "work by yourself for N…
SkillAFreshness: A★ 3Claude Code +9 - 0.609score
complete-project-scope-code-review
Arasz
Use when the whole project — not a diff — is the review target and the result must survive being acted on: "review the entire codebase", "full quality…
SkillAFreshness: A★ 3Claude Code +9 - 0.609score
call-behaviorist
Arasz
Use when ai-badger's own machinery needs to be observed — "did that hook even run?", "enable debug logging", "why is the drift notice silent?", "turn on the…
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
change
Arasz
Use when making an ad-hoc change with no issue or task behind it — fix a failing unit test, refactor a method, rename something, tweak a config value, adjust…
SkillAFreshness: A★ 3Claude Code +9 - 0.569score
differential-feature-refactor
Arasz
Use when a feature already exists in code but has drifted from — or was never reconciled with — its intended design, and someone must decide what changes…
SkillBFreshness: B★ 3Claude Code +9 - 0.569score
artifact-verification
Arasz
Use when verifying changed artifacts that lack a canonical test gate — specs, docs, manifests, generated files, published packages: use the workflow-defined…
SkillBFreshness: B★ 3Claude Code +9 - 0.569score
code-review-checklist
Arasz
Use when reviewing code — a PR, a diff, or freshly written changes — and you want concrete pass/fail checks rather than impressions.
SkillBFreshness: B★ 3Claude Code +9 - 0.569score
create-task-spec
Arasz
Use when a feature idea needs to become an exact, agreed specification before anyone builds it — "spec this out", "create a task spec", "turn this idea into…
SkillBFreshness: B★ 3Claude Code +9
Signals
- Stars
- 3
- Forks
- 0
- Open issues
- 9
- Last commit (this folder)
- Oct 19, 2026 (9 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/Arasz/ai-badger
- Website
- github.com/Arasz/ai-badger
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from Arasz
- 0.609score
ai-raccoon-memory
Arasz
Use when a project needs a memory server — search project and shared memory first, write durable facts with source paths, watch a docs directory, or promote…
SkillAFreshness: A★ 3Claude Code +9 - 0.609score
auto-wm
Arasz
Use when the user wants Claude to auto-approve tool calls — "enable autonomic/autonomous work mode", "/auto-wm", "partner mode", "work by yourself for N…
SkillAFreshness: A★ 3Claude Code +9 - 0.609score
call-behaviorist
Arasz
Use when ai-badger's own machinery needs to be observed — "did that hook even run?", "enable debug logging", "why is the drift notice silent?", "turn on the…
SkillAFreshness: A★ 3Claude Code +9 - 0.609score
code-review-evidence
Arasz
Use when reviewing code that wraps external libs/extensions/SDKs/CLIs, or QA-reviewing a test harness: verify wrapped-library semantics from the upstream…
SkillAFreshness: A★ 3Claude Code +9 - 0.609score
commit-reminder
Arasz
Use when a project has accumulated uncommitted changes and nobody has said so out loud — several edits in a row with no commit in between — or when a subagent…
SkillAFreshness: A★ 3Claude Code +9 - 0.609score
complete-project-scope-code-review
Arasz
Use when the whole project — not a diff — is the review target and the result must survive being acted on: "review the entire codebase", "full quality…
SkillAFreshness: A★ 3Claude Code +9
Cite this page
den-refresh skill. Agent Mart. https://agentmart.dev/skills/arasz-den-refresh (last updated 2026-10-24)