Repository navigation
chore(claude): rules/skills のコンテキスト整理と context-diet スキル追加 - #210
Merged
Merged
Conversation
context engineering 記事の観点で rules 18 本と skills 21 本を点検し、 重複と指示の衝突を解消した。 - サブエージェントの委譲方針を workflow.md に一本化し、global CLAUDE.md の「非自明なタスクでは毎回 codex」という絶対命令を落とす - chezmoi init の罠が root CLAUDE.md / .claude/rules / メモリの 3 箇所に 重複していたのを root CLAUDE.md へ集約 - skill description 6 本を圧縮(合計 3,325 → 1,961 文字) - empirical-prompt-tuning 302→169 行、pentest-parallel-prs 290→230 行を references/ へ分割。分割中に見つかった heredoc と gh-pr-body ルールの 矛盾もあわせて修正 - pr-size.md を personal 機にも配る(孤児化した旧版が居座っていた) - settings に switchModelsOnFlag: false を追加 - context-diet スキルを新設(計測スクリプトとテスト 8 件つき) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
削減手順に品質の制約を後置していたため、削りすぎを止める仕組みがなかった。 - 「削る前に、それが防いでいた失敗を言語化する」を独立した工程にする。 言語化できなければ cargo cult なので削り、できたならその一文を回帰 テストのケースとして残す - progressive disclosure 固有のサイレント劣化を明記する。誰も読まない references は、計測上は削減として記録される削除にあたる。あわせて 逃がし方を決定的な機構(paths / hook 注入)とモデル判断の機構 (references / skill 化)に分け、前者を優先する基準を書く - 検証を generator-evaluator 分離に是正する。旧版は削った本人が挙動の 不変を判定する構図で harness-engineering.md に違反していた - 停止条件を追加する。残る always-on の全行に名前のついた失敗が紐づいた 時点が床 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
Anthropic の context engineering 記事(Claude 5 世代向けに Claude Code のシステムプロンプトを 80% 削減した話)の観点で
dot_claude/rules/18 本とdot_claude/skills/21 本を点検し、重複と衝突を解消した。あわせて、同じ点検を次回から計測ベースで回せるようにcontext-dietスキルを新設する。監査の全記録は
.ai/rules-skills-context-audit.md(git 管理外)にある。何を直したか
指示の衝突
サブエージェントの委譲方針が 4 系統で食い違っていた。global
CLAUDE.md「非自明なタスクでは毎回 codex-subagent」、workflow.md「subagent を積極的に」、ハーネス既定「要求がない限り AgentTool を呼ぶな」、メモリ「spawn は 1 万トークンの固定費」。記事が指摘する「同一リクエスト内で矛盾が衝突する」典型で、実行のたびに黙って解決する必要があった。判断基準を
workflow.mdの Subagent Strategy に集約し、globalCLAUDE.mdの絶対命令を落とした。委譲するかどうかは起動固定費と inline の履歴増分を比較して決める、という書き方に変えている。重複
chezmoi init --dry-runの罠が rootCLAUDE.md/.claude/rules/chezmoi-templates.md/ 永続メモリの 3 箇所に別文面で存在し、3 つとも同時にコンテキストへ載っていた。rootCLAUDE.mdに一本化し、chezmoi execute-templateの記述だけ救出したうえで残り 2 つを削除した。skill のコンテキスト効率
skill の本文は invoke 時のみ課金され、
descriptionは常にスキル一覧に載る。つまり常時コストは description 側にある。上位 6 本を圧縮し、手順の説明を本文へ移した。本文が長く
references/を持たなかった 2 本を分割した。empirical-prompt-tuning302→169 行、pentest-parallel-prs290→230 行。分割中に、pentest の PR 作成手順が heredoc を指示していて
gh-pr-body.mdルール(--body-fileを使え)と矛盾していたので合わせて修正した。pr-size.mdが personal 機に届いていなかった.chezmoiignoreの除外は{{ if not .business_use }}の中にあり、PR size ルールは business 機だけに配る設計だった。ところが personal 機の~/.claude/rules/pr-size.mdには 4/26 時点のファイルが残っていた。chezmoi は ignore 対象になったファイルを削除せず管理から外すだけなので、22 行の旧版が孤児として残り、alwaysApply: true(Claude Code のスキーマには存在しない Cursor のキー)ごと毎セッション読み込まれ続けていた。#171「always-loaded pruning」で 6 行に圧縮したのに自分のマシンでは一度もロードされない状態だったので、除外を解いて personal にも配ることにした。孤児は削除済みなので、次の
chezmoi applyで圧縮版が入る。常時ロードは約 700 文字から 358 文字になる。settings
switchModelsOnFlag: falseを追加。safeguards がメッセージをフラグしたとき、黙って別モデルへ切り替える代わりにセッションを停止する。workflow.mdのモデル tier 規律が気づかないうちに崩れるのを防ぐため。effortLevelは検討のうえ不採用とした。バイナリのモデルカタログでは Opus 5 / Sonnet 5 / Fable 5 / Opus 4.8 のdefault_effortがいずれもhigh、フォールバックも?? "high"なので、"high"を書いても現行モデルでは何も変わらない。唯一効くのはdefault_effortがxhighの Opus 4.7 で、そこでは格下げとして作用する。未設定=モデル既定追従が最適と判断した。新設:
context-dietスキルコストは目標、挙動は制約。コンテキストコストを「いつ支払うか」で 3 分類し、計測してから削る。削減と同時に品質を守るため、行を触る前に「これはどの失敗を防いでいたのか」を言語化する工程を置いた。言語化できなければ cargo cult なので削ってよく、できたならその一文が回帰テストのケースになる。
最大の落とし穴は progressive disclosure 自身にある。誰も読まない
references/は、計測上は削減として記録される削除で、数字の上では改善に見える。そのため 4 つの逃がし方を「ハーネスが決める決定的な機構(paths:/ hook 注入)」と「モデルが決める機構(references// skill 化)」に分け、トリガーが glob かツール呼び出しで書けるなら前者を選べとしている。検証は generator-evaluator 分離に従う。削った本人は判定者として不適格なので、差分ではなく挙動をテストし、評価者は別に立てる。
scripts/measure.pyが 3 クラスの文字数を出す。テストはtests/skills/context-diet/run-tests.shに 8 アサーション、just test-skill-scriptsへ配線済み。folded YAML(>-)の description を正しく畳めるかが要点で、この repo の skill は全部この記法を使っている。レビューの観点
dot_claude/rules/workflow.md— 委譲の判断基準が「常に委譲せよ」にも「常に inline」にも読めないかdot_claude/skills/context-diet/scripts/measure.py— frontmatter パーサが|/>-/ プレーンスカラーを取り違えていないかCLAUDE.md— chezmoi 罠の記述が、削除した 2 箇所の情報を落とさず吸収できているか計測結果
always-on がほぼ横ばいなのは、description で 1,364 減らした一方、委譲方針の集約で
workflow.mdが 980 増え、新設スキルの description が 274 増えたため。差引 −110 で計算は合う。積み残し
計測で判明した最大の常時コストは
workflow.md単独の 7,154 文字で、always-on 全体の 22% を占める。skill の description 21 本の合計とほぼ同量。中身の大半は実装フェーズに入ってから読めば足りる手順なので、skill 化かpaths:付与で 2 割落とせる見込みだが、今回は逆に 980 文字増やしているため次回にまとめる。検証
just test全通過(lint / zsh header lint / fmt-check / hook テスト 6 件 / skill script テスト 17 件)chezmoi execute-template < dot_claude/settings.json.tmplが valid JSON を出力することを確認context-dietは TDD で作成。RED(スクリプト未作成で 8 件失敗)→ 実装 → GREEN を確認済み🤖 Generated with Claude Code