Bible Network Crypto DeFi Onchain RWA AI Agent Stablecoin Chain SAFU CryptoTax DeFAI AGI Claude Me Claude Skill Claude Design Claude Cowork
Independent Media
Not affiliated with any project
Learn Claude Skills. Do Everything Better.
claudeskill-me.com
LATEST
Claude Suddenly Stopped Using Your Skills After /compact? It's Not Broken — It's Designed Not to Restore Them Automatically  ·  Claude Code Now Supports AGENTS.md — But Half the Articles Online Describe the Old Rules, and CLAUDE.local.md Can Silently Break It  ·  Your Hook Says "Blocking Error" But the File Still Changed? PostToolUse and PreToolUse Don't Actually Block the Same Way  ·  Enabled Auto Mode and Thought You Were Safe? Permission Modes and Sandbox Boundaries Are Two Different Layers — Conflating Them Is How Things Break  ·  Messages API Adds On-Demand Compaction in Beta: Developers Decide When to Compact, Not the System  ·  Claude Cowork and Chat Officially Merge, Launching Claude Docs and Claude Slides Alongside It
beginners

Claude Suddenly Stopped Using Your Skills After /compact? It's Not Broken — It's Designed Not to Restore Them Automatically

30-Second Version · For the impatient
The Skill listing itself doesn't get re-injected after compaction — not because it disappeared by accident, but because of a deliberate tradeoff.

Full Explanation +
01 · Why did this happen?

I wrote "please re-read Skills after Compaction" in CLAUDE.md — why doesn't that work either?

This is exactly what issue #13919 reports: even an explicit "re-read after compaction" instruction written into ~/.claude/CLAUDE.md gets ignored post-compaction. The reason is that compaction itself is fundamentally about clearing and rebuilding context — CLAUDE.md-type startup content genuinely does get reloaded, but Claude reading that instruction doesn't guarantee it will actually go perform the extra action of "re-reading a specific Skill file." Unless you separately configure a hook to automate that action, a line in a documentation file alone doesn't guarantee it actually gets carried out.

02 · What is the mechanism?

Why doesn't the official implementation just automatically re-inject the Skill listing on every Compaction, to save everyone from hitting this?

Anthropic engineer @bcherny's stated reason on issue #74990 is cost: re-sending the entire Skill listing costs a few thousand extra tokens on every compaction, and the original assessment was that preserving the content of already-invoked Skills should be enough. That reasoning holds up fine in a scenario where the user keeps using the same Skill throughout — but it doesn't cover the common case of a user wanting to switch to a different Skill they haven't invoked yet in that conversation. That gap is exactly why this behavior keeps getting reported as a bug rather than accepted as a simple design tradeoff.

03 · How does it affect me?

Besides manually running /reload-skills, is there a way to avoid triggering this problem in the first place?

If the task itself isn't going to run too long, simply avoiding letting the conversation approach the auto-Compaction threshold (the case in issue #13919 triggered around roughly 55K tokens in the VS Code extension) is the most direct approach — for instance, proactively running /clear to start a new conversation when you clearly move to a new subtask, rather than letting one conversation stretch indefinitely until it gets auto-compacted.

But if the task genuinely needs to run long and depends on the same Skill across multiple steps, rather than trying to avoid compaction altogether, the more practical approach is still configuring a SessionStart hook with its matcher set to "compact" that returns "reloadSkills": true, binding the reload action to the compaction event itself so it fires automatically without you having to remember it each time.

04 · What should I do?

I'm new to Claude Code and have no idea how to configure a hook. Is there a lower-effort way to handle this?

Yes, and it doesn't require touching any config file at all. Just remember one simple pattern: after you see the line "Conversation compacted" in the terminal, if Claude's behavior afterward feels noticeably off (repeating a mistake that was already clearly fixed earlier, for instance), manually run /reload-skills once and see if the problem goes away.

This command makes no changes to your project — it purely re-tells Claude what Skills are available — so the risk is low, and you can treat it as a habitual check right after Compaction. Once you're more comfortable, you can consider setting up the hook to automate it.

Full Content +

Midway through a session, the terminal prints "Conversation compacted" — that's /compact condensing a long conversation into a summary to free up context window space. But if you'd been using a Skill earlier in that conversation, right after Compaction Claude may suddenly behave as if it never had that Skill installed at all — the same mistakes start reappearing, the bad habits the Skill was supposed to prevent come right back. This isn't a bug. It's a deliberate design tradeoff in how compaction works — one that's rarely explained clearly.

What actually survives compaction, and what gets dropped

The official Context Window documentation is specific about what happens after compaction: content loaded at startup — the System Prompt, CLAUDE.md, memory files, the MCP tool listing — automatically reloads. Claude Code separately re-reads up to the five most recently modified files, and re-injects the content of every Skill you actually invoked before compaction, capped at 5,000 tokens per Skill. The compaction summary itself preserves "your requests and intent, key technical concepts, files examined or modified with important code snippets, errors and how they were fixed, pending tasks, and current work" — what it replaces is the verbatim conversation; full tool outputs and intermediate reasoning are gone.

The detail most easily missed here: the Skill listing itself — the index that originally told Claude "here's what Skills are available right now" — is not re-injected after compaction. The official documentation is direct about this: everything else from startup reloads, but this listing is the one exception — only the content of Skills you actually invoked gets preserved.

What this looks like in a real session

GitHub issue #74990 documents this behavior in full: before compaction, Claude correctly reports 27 to 33 available Skills; after compaction, asking Claude what Skills are currently available gets the answer that there's no "Available skills" system-reminder Block to be found — it's not that fewer Skills exist, the entire listing has vanished. Running /reload-skills immediately restores visibility into all 33 Skills, and the command reports back "33 skills available (no changes)." That "no changes" phrase matters — it confirms the Skills themselves were intact the whole time, never deleted or corrupted. The problem is purely whether that listing gets put back into context, nothing else.

Anthropic engineer @bcherny gave the official explanation directly on that issue: this is a deliberate design decision. Re-sending the entire Skill listing costs a few thousand extra tokens on every compaction, and the original reasoning was that preserving the content of Skills already invoked should be enough. The gap this misses: if the user wants to invoke a different Skill next — one that hasn't been used yet in this conversation — Claude has no way of knowing it even exists, because the listing is no longer in context.

A more severe version: forgetting Skills you've already used, too

Issue #13919 describes a thornier case: in the VS Code extension, once auto-compaction triggers around the ~55K-Token mark, Claude doesn't just forget which Skills are available — it forgets the actual methodology a Skill had taught it, even for Skills already in use. The reporter's example: a Skill that specified "never do ABC (a common mistake)" and required Claude to say "SKILL ACTIVE" at the start of every response. After compaction, Claude stopped saying that line and started making the ABC mistake the Skill explicitly forbade — even when the user had written explicit "re-read the Skill after compaction" instructions into ~/.claude/CLAUDE.md, that instruction itself got ignored post-compaction too. The reporter estimated a task that should have taken about an hour stretched to five or six hours because of this recurring error loop.

The one reliable workaround right now

The fix documented under issue #74990 is direct: manually run /reload-skills after every compaction event, or configure a SessionStart hook with its matcher set to "compact" that returns "reloadSkills": true, automating the step so you don't have to remember to do it manually every time. If your workflow leans heavily on a handful of Skills, setting up that hook costs far less than repeatedly discovering after the fact that Claude has "forgotten" how to do something.

How to tell if you've actually hit this

The clearest signal: Claude's behavior was completely normal before compaction, actively applying whatever a Skill taught, and then right after compaction it suddenly starts making the same category of mistake again — or you directly ask what Skills are currently available and get an answer that's noticeably thinner than before. If that happens, first confirm whether you just went through a /compact or an auto-compaction (you'll see "Conversation compacted" in the terminal), then run /reload-skills once to check whether it restores things. If it does, you've confirmed this is the cause — not a misconfigured Skill.

Sources: [BUG] Claude Skills context completely lost after auto-compaction - Issue #13919, [BUG] /compact and auto-compaction drop entire Available skills system-reminder - Issue #74990, Scoped skills become uninvocable ("Unknown skill") after compaction - Issue #76161, Explore the context window - Claude Code Docs
Diagram
壓縮後保留與丟失的內容對照Skill 清單是刻意的例外,不會在壓縮後重新注入,需要手動或用 hook 補回來What Survives /compact — and What Doesn'tReloads automaticallySystem prompt, CLAUDE.md,memory files, MCP tool listingUp to 5 most-recently-modified filesContent of Skills you actually invoked(capped at 5,000 tokens per Skill)Structured summary of intent, fixes,pending tasksDoes NOT reloadThe Available Skills listing itself(deliberate — costs tokens per compaction)Full verbatim tool outputsIntermediate reasoning stepsSkills NOT invoked before compactionClaude has no way to know they existThe fixRun /reload-skills after compaction, or bind it to aSessionStart hook with matcher "compact" → reloadSkills: trueClaude Skill Me · claudeskill-me.com
Feel free to share. Please credit the source.
Ask a Question
Please enter at least 10 characters
Related Articles
Subagents Aren't Smarter Mini-Claudes — They Solve Isolation, Not Capability
advanced · Aug 31
Why a Single "hi" Can Burn 20,000+ Tokens in Claude Code: Breaking Down the Fixed Startup Overhead
advanced · Sep 05
Why Your Claude Code Skill Silently Stops Triggering: The 15,000-Character Description Budget No One Warns You About
practice · Sep 02
Why Does Claude "Forget" What I Just Said? Understanding the Context Window Explains Everything
beginners · Aug 28
Related News