S3.2.1 Task 3.2

CLAUDE.md Is Always-On. Skills Are On-Demand. Do Not Mix Them Up.

A team added 5 detailed workflow procedures to CLAUDE.md. It grew from 300 to 1200 lines. Each workflow is used at most once per week. Claude’s response quality degraded — less focused, sometimes ignoring recent instructions.

The problem: 900 lines of rarely-used workflow content loaded into every session, diluting Claude’s attention on the 300 lines of actually relevant coding standards.

The fix: move the 5 workflows to Skills. CLAUDE.md dropped back to 300 lines. Config context usage fell from 12% to 4%. Task completion accuracy improved from 88% to 93%.

The Decision Criterion: Usage Frequency

Usage patternMechanismWhy
Every interactionCLAUDE.mdAlways loaded, no invocation needed
Occasionally (30% of cases)SkillLoaded only when invoked
Rarely (weekly/monthly)SkillSaves context in the 95%+ of sessions that don’t need it

A customer support team has: response tone guidelines (every interaction, 80 lines), data privacy rules (every interaction, 60 lines), escalation workflow (30% of cases, 200 lines), report generation (weekly, 150 lines), training simulation (monthly, 180 lines).

Put tone and privacy in CLAUDE.md (140 lines, always loaded). Make escalation, reports, and training into Skills (530 lines, loaded on demand). Most sessions load 140 lines instead of 670.

The Anti-Patterns

Everything in CLAUDE.md. Loading 400+ lines of task-specific workflows into every session wastes tokens on instructions the developer does not need for most interactions. Claude cannot selectively ignore sections — loaded content consumes context regardless of relevance markers.

Everything as Skills. Converting universal coding standards to Skills means developers must remember to invoke /coding-standards every session. Junior developers on a 12-person team will forget. Standards need automatic enforcement, not opt-in invocation.

Section headers as scope control. “Claude, ignore the deployment section when reviewing code” does not work. All CLAUDE.md content loads and consumes context. The only way to not load content is to not put it in CLAUDE.md.

What Does Not Exist

  • always-active: true frontmatter for Skills — Skills are inherently on-demand
  • auto-invoke directive in CLAUDE.md — there is no mechanism to auto-invoke Skills
  • Priority hierarchy between CLAUDE.md and Skills — they serve different purposes, not different priorities

The Decision Process

For each instruction set, ask: “Does this need to apply to every interaction without the developer remembering to invoke it?”

  • Yes → CLAUDE.md (coding standards, privacy rules, response guidelines)
  • No → Skill (migration workflows, report generators, specialized analysis tools)

Do not start by putting everything in CLAUDE.md and optimizing later. Context bloat degrades quality from the start. Classify by usage frequency before placement.


One-liner: Always-needed instructions go in CLAUDE.md (auto-loaded); occasional workflows go in Skills (on-demand) — mixing them bloats context and degrades quality from 88% to 93% just by correcting the placement.