본문으로 건너뛰기
cccskills
무료GitHub에 공개

harness-diet

Measure and shrink the always-loaded context of a Claude Code harness (CLAUDE.md + rules without paths frontmatter) back under budget — migrate narrative to reference files, convert rules to path-scoped or skill-triggered loading, and verify zero governance loss with deterministic preservation checks. Use on "harness diet", "context diet", "rules diet", "CLAUDE.md too long", "always-load budget", "trim my rules", "context bloat", "하네스 다이어트", "룰 다이어트", "컨텍스트 다이어트", "always-load 줄여줘". Not for one-off prose editing or project docs cleanup.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(5)

  • SKILL.md7.6 KB
  • hooks/rules-budget-guard.sh2.0 KB
  • references/methodology.md5.7 KB
  • scripts/harness_diet_audit.py5.4 KB
  • scripts/preservation_check.py3.2 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

harness-diet — put your always-loaded context back under budget

A harness gains weight automatically (every incident note, every boss directive, every fix lands as another paragraph in an always-loaded rule) but only loses weight when someone runs a diet. Field measurement on a mature harness: growth-to-reduction commit ratio of ~60:1, natural growth of ~70KB/month, and adherence degrading as the pile grows. Anthropic's guidance is blunt: "target under 200 lines per CLAUDE.md file. Longer files consume more context and reduce adherence", and rules without paths frontmatter load "with the same priority as CLAUDE.md" — every session, every token (memory docs).

Result you should expect: one field run took a harness from 146KB always-loaded (143% of budget) to 100.6KB (98%) with zero governance loss — every killswitch, decision table, trigger keyword, and canonical command verified present after the diet.

Budgets (defaults — override via flags)

MetricBudgetWhy
CLAUDE.md< 200 linesAnthropic official guidance
Per always-loaded rule file8,192 BKeeps any single rule scannable; forces narrative out
Total always-loaded rules102,400 BAttention-budget ceiling; beyond this, adherence drops

Bundled script paths: commands below use $HOME/.claude/skills/harness-diet/… (the install.sh layout). For marketplace (/plugin install) installs, resolve under ${CLAUDE_PLUGIN_ROOT}/skills/harness-diet/… instead. The scripts are stdlib-only Python; if unavailable, perform the step manually from the described contract.

Phase 0 — Measure

DIET="$HOME/.claude/skills/harness-diet"   # or "${CLAUDE_PLUGIN_ROOT}/skills/harness-diet"
python3 "$DIET/scripts/harness_diet_audit.py"            # human summary
python3 "$DIET/scripts/harness_diet_audit.py" --json     # machine output
python3 "$DIET/scripts/harness_diet_audit.py" --strict   # exit 2 if over budget (CI/ratchet)

Auto-discovers ./.claude/rules, ~/.claude/rules, and CLAUDE.md files at project/user level. A rule is always-loaded iff its YAML frontmatter has no paths: key.

Phase 1 — Classify every always-loaded rule

Walk the list from largest to smallest and pick one bucket per file:

  1. Keep always-loaded — cross-cutting behavior needed in every session (tone, security boundaries, routing indexes). Diet the body (Phase 2) but keep the load class.
  2. Path-scope — the rule only matters when specific files are touched. Add paths: globs. ⚠ Path scoping fires on file access, never on spoken keywords. A rule triggered by what the user says cannot be path-scoped. ⚠ No literal brackets in globs ([locale] parses as a character class and silently never matches).
  3. Convert to skill / hook-injected — task-specific procedure? Official guidance: "use skills instead". Best case: the rule's real trigger is already a deterministic hook — have the hook inject "Read <rule> first" into context and drop the always-load.
  4. Migrate narrative to reference — the default for oversized keepers (Phase 2).

Phase 2 — Migrate (block-level, never prose compression)

For each oversized file:

  1. Extract a preservation manifest first (before touching anything):
    python3 "$DIET/scripts/preservation_check.py" extract rules/big-rule.md > /tmp/big-rule.manifest.json
    
  2. Append the outgoing blocks to references/<name>-ref.md (or your repo's reference dir), verbatim under a dated section header. Append before rewriting the rule body, and commit both together — a slimmed body pushed without its reference content is a content hole for every mirror that pulls in between.
  3. Rewrite the rule body: keep the verdict skeleton (what to do / never do), leave a one-line pointer to the reference for the "why" and the war stories.

Must stay in the body (never migrate): CRITICAL/IMPORTANT banners and their verdicts, decision tables, trigger keywords and agent names (they are a routing index, not prose), killswitch env vars, canonical command lines, IDs and threshold values.

Migrate aggressively: incident narratives, measurement history, duplicated explanations of the same point, long example blocks, anything already present in the reference file.

Phase 3 — Verify (two lenses, fresh checker)

  1. Loss lens (deterministic):
    python3 "$DIET/scripts/preservation_check.py" verify rules/big-rule.md /tmp/big-rule.manifest.json
    
    Exit 2 = something load-bearing got migrated. Restore it before proceeding. Review the manifest by hand first — prune entries that were intended to move.
  2. Efficacy lens: re-run the audit; recompute the total; confirm the savings are real (reference files are lazily Read, not @-imported — check the rule bodies contain no @path imports of the reference, or the "savings" still load at launch).
  3. Fresh checker: hand the diff to an independent reviewer that didn't write it (pairs with the review-loop skill). Diets fail quietly: a plausible-looking slim body missing one qualifier is exactly what the maker cannot see.

Phase 4 — Guard (keep it off)

A diet without a guard regrows. Ship-with options in $DIET/hooks/:

  • rules-budget-guard.sh — PostToolUse (Edit|Write) advisory: the moment a rule edit pushes a file past budget, the editing session gets a context note telling it to migrate, not append. Non-blocking by design — a blocking pre-commit gate silently stalls auto-commit pipelines.
  • Re-run --strict weekly (cron, session-start dispatcher, or CI) and surface the report only when over budget.

Anti-patterns (each one cost a real harness a failed round)

Anti-patternWhy it fails
Prose compression ("tighten the wording")Trigger keywords, guru names, stage names are the routing index. A compression pass that saved 12% destroyed 70% of routing signals and was fully reverted. Move blocks; don't rewrite sentences.
Dedup toward a private fileIf rules are distributed to a team but ~/.claude/CLAUDE.md is one person's, "delete from rules, it's already in CLAUDE.md" deletes it from every teammate's context. Dedup toward the shared surface.
Slim body committed, reference append notMirrors pull a body full of dangling pointers. Commit both in one change.
Trusting the maker's "everything preserved" claimExtract the manifest before the edit and verify after. Field run: the maker claimed "6 bullets kept verbatim"; the deterministic check found two qualifiers gone.
Treating one diet as the fixGrowth is automatic; reduction is manual. Without the guard, one measured harness regrew from 145KB toward its 220KB peak within weeks.

References

  • references/methodology.md — budget rationale, growth mechanics, byte-accounting worksheet, verification lens design, worked field results.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Use *before* starting work in a domain you don't know well, to surface the "unknown unknowns" — the things you don't even know to ask about — and learn just enough to prompt and decide well. Implements the "blind spot pass" pattern from Anthropic's Fable "finding your unknowns" field guide. Triggers when you say "I'm new to this", "I don't know what to ask", "teach me before we start", "blind spot pass", "unknown unknowns", "find my unknowns", or the Korean "내가 뭘 모르는지 알려줘" / "이 분야 처음인데" / "먼저 가르쳐줘" / "블라인드 스팟", or when you hand off a task while admitting you're a non-expert in that field (color grading, video editing, legal, tax, finance, design, an unfamiliar codebase, etc.). Do NOT use for simple factual questions, domains you already know, or directly-actionable work — answer those directly or route to planner / architect.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

sangrokjung/claude-forge8622026년 9월 3일 업데이트

Use when detecting and running project build systems automatically. Supports npm/yarn/pnpm/pip/poetry/gradle/maven/cargo/go/make. Triggers on build, test run, project setup, package manager detection.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

sangrokjung/claude-forge8622026년 9월 3일 업데이트

Expert guidance for Next.js Cache Components and Partial Prerendering (PPR). **PROACTIVE ACTIVATION**: Use this skill automatically when working in Next.js projects that have `cacheComponents: true` in their next.config.ts/next.config.js. When this config is detected, proactively apply Cache Components patterns and best practices to all React Server Component implementations. **DETECTION**: At the start of a session in a Next.js project, check for `cacheComponents: true` in next.config. If enabled, this skill's patterns should guide all component authoring, data fetching, and caching decisions. **USE CASES**: Implementing 'use cache' directive, configuring cache lifetimes with cacheLife(), tagging cached data with cacheTag(), invalidating caches with updateTag()/revalidateTag(), optimizing static vs dynamic content boundaries, debugging cache issues, and reviewing Cache Component implementations.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

sangrokjung/claude-forge8622026년 9월 3일 업데이트

Use when starting Claude Code projects, writing CLAUDE.md/spec.md, dispatching subagents, or requesting Agent Teams parallel development. Covers Spec-Driven Development, Context Engineering, and post-dev workflow.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

sangrokjung/claude-forge8622026년 9월 3일 업데이트

Instinct-based learning system that observes sessions via hooks, creates atomic instincts with confidence scoring, and evolves them into skills/commands/agents.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

sangrokjung/claude-forge8622026년 9월 3일 업데이트

Master systematic debugging techniques, profiling tools, and root cause analysis to efficiently track down bugs across any codebase or technology stack. Use when investigating bugs, performance issues, or unexpected behavior.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

sangrokjung/claude-forge8622026년 9월 3일 업데이트

sangrokjung의 스킬 모두 보기

이 스킬의 문제 신고