Communityコーディング&開発github.com

komilovsg/f-mode

トークン経済を重視したコーディングエージェント向け動作モード — 生データはコンテキストに入れず、結果のみを渡します。テスト実行、ログ読み取り、データベースクエリ、大規模ファイルやJSONの検査、多数の類似チェック、ブラウザ確認時、またはユーザーが「f-mode」「filter first」「save tokens」「context is filling up」「too much output」と指示した場合に使用します。フィルタリング(ただし障害を見逃さない)、コンパクトなサマリー、サマリーの検証、サブエージェントへの委任について網羅しています。

f-mode とは?

このスキルは、AIエージェント(Claude Code、Cursor、Codexなど)向けに設計された「フィルタ優先モード(F-mode)」を提供します。中心となる原則は、「生データをコンテキストに入れず、処理結果のみを渡す」ことです。大量のログやJSON、データベース結果をそのまま読む代わりに、シェルパイプラインやスクリプト、サブエージェントを使ってデータ側で集約・フィルタリングし、コンパクトなサマリーだけをエージェントに渡します。これにより、推論に使えるトークンを節約し、ノイズの多い長いコンテキストによる推論精度低下を防ぎます。 具体的には、(1) catやSELECT *の代わりにgrep/jq/集約クエリを使う、 (2) フィルタリング時にexitコードやエラーカウントを見逃さない(pipefailやエラーgrepの併用)、 (3) 多数の類似チェックは1つのループスクリプトとテーブル出力にまとめる、 (4) サマリーは形状だけでなく意味(カウントの整合性、既知の行の有無など)を検証する、 (5) テストはquietモード+短いトレースバック+失敗セクションのtailで、 (6) ブラウザチェックはJSONサマリーを返すスクリプトでDOMスナップショットを避ける、 (7) 広範な調査はサブエージェントに委任し結論と参照を得る、 (8) シークレットはマスクまたは件数のみ表示、 (9) ファイルはgrep -nで範囲指定して読む(ただし編集対象のコードは全文読む)、 (10) 同じ修正が2回失敗したら停止(3回目のブラインドリトライ禁止)、 (11) コンテキストクリーンと不要なプラグイン/Skillの無効化でプロンプトトークンを節約する、というルールで構成されています。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/komilovsg/f-mode/tree/HEAD/skills/f-mode

Installed? Explore more コーディング&開発 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Fモード — フィルタ優先モード

原則: 生データはコンテキストに入れず、結果のみを渡す。 ロジックをデータ側(シェルパイプライン、短いスクリプト、サブエージェント)に移し、コンパクトなサマリーだけを持ち帰る。ログダンプをそのまま読むトークンはすべて、推論に使えなくなるトークンであり、ノイズの多い長いコンテキストは推論を悪化させる(単にコストが高くなるだけでない)。

1. 読む前にフィルタリングと集約を行う

代わりにこれを使うこうする
cat app.log`grep -c ERROR app.log; grep -E 'ERROR
5 MBのJSONを読むjq '.items | length', jq -r '.items[] | [.id,.status] | @tsv' | sort | uniq -c
SELECT * FROM ordersSELECT status, count(*) FROM orders GROUP BY 1
git loggit log --oneline -20, git log --format=%s origin/main..HEAD
ファイルをスクロールするgrep -n 'def handle' file.py で探し、offset/limit付きで読む

2. フィルタリングは決して障害を隠してはならない

切り詰めたビューが「正常」に見えるのは、ビューがないよりも悪い。

  • 終了コードを保持する: set -o pipefail、または cmd > out.txt 2>&1; echo "exit=$?"; tail -20 out.txt。tailに直接パイプするとコマンドの終了コードが失われる。
  • tailに加えてエラーマーカーもgrepする: grep -cE 'FAIL|ERROR|Traceback|panic' out.txt。
  • 分母付きでカウントを表示する: passed 41/42、「OK」だけではダメ。
pytest -q --tb=short > /tmp/t.out 2>&1; echo "exit=$?"
grep -cE 'FAILED|ERROR' /tmp/t.out; tail -15 /tmp/t.out

3. 多数の類似チェック → 1つのスクリプト、1つのテーブル

10個のエンドポイント、20個のファイル、30行の検証: ループしてコンパクトなテーブル(名前 | ステータス | 詳細)と合計を出力する1つのスクリプトを書く。10回のツール呼び出しと10個の完全な出力を避ける。

for u in / /api/health /api/items; do
  printf "%-14s %s\n" "$u" "$(curl -s -o /dev/null -w '%{http_code}' "localhost:8000$u")"
done

4. サマリーを意味でチェックする(形だけではない)

一見正しそうな出力でも間違っていることがある。期待値や妥当性の合計と比較する: カウントが入力サイズと一致する、既知の行が存在する、ファイル数が ls | wc -l と合う。サマリーをクロスチェックできない場合は、その旨を明記する。

5. テスト

Quietモード、短いトレースバック、失敗セクションのtail:

  • pytest -q --tb=short
  • vitest run --reporter=dot, jest --silent
  • go test ./... 2>&1 | grep -E '^(FAIL|ok|---)'
  • cargo test -q

6. ブラウザチェック

完全なDOMスナップショットの代わりに、コンパクトなJSON({title, errors: n, buttons: n, overflowX: bool})を返すスクリプトを評価する。DOM構造そのものが問題である場合にのみスナップショットを取得する。スクリーンショットは視覚的なチェック用であり、テキストを読むためではない。

7. 広範囲の調査 → サブエージェント

大規模な検索、ログフォレンジック、データベースダンプ: file:line参照付きの結論を返すサブエージェントに委任する。その結果もあくまで主張であるため、実行に移す前に重要なポイントを検証する。

8. 機密情報と個人データ

サマリーや診断情報にシークレットや実際のPII(個人識別情報)を決して出力しない。マスクする(postgres://***)か、件数のみ表示する(emails found: 12)。キャッチした例外メッセージ内の接続文字列やキーもマスクする。

9. ファイルの読み取り

  • まず grep -n で検索し、関連範囲だけをoffset/limit付きで読む。
  • 編集しようとしているソースコードは全文読む — 部分読み込みは編集ミスの原因になる。
  • 編集直後にファイルを「確認のために」再読み込みしない。編集ツールは失敗時に既にエラーを返す。

10. 停止ルール

同じ修正が2回失敗したら停止する。正確なエラー行から根本原因を特定するか、質問する。3回目のブラインドリトライは禁止。

11. コンテキストの衛生管理

  • 無関係なタスクの間はコンテキストをクリアし、長時間のセッションはコンパクトにする。
  • このプロジェクトで使用しないプラグイン、スキル、MCPサーバーは無効にする。それぞれがすべてのリクエストでプロンプトトークンを消費する。
  • 節約量は主張されたパーセンテージではなく、実際の使用数値(例: /cost)で判断する。

関連スキル