Claude Code 2026年最新アップデート総まとめ|1Mコンテキスト・Skill・Hook・Subagent・MCP・Plan modeを実戦投入する | Claude Code 2026 Feature Roundup: Putting 1M Context, Skills, Hooks, Subagents, MCP, and Plan Mode to Real Work

Opus 4.7の1Mコンテキスト、Skill・Hook・Subagent・MCP・Plan modeまで、2026年5月時点のClaude Code主要アップデートを一気に整理。CVC兼エンジニアの私が実際に使い倒した設定例と落とし穴を共有。

21st May 2026
Claude Code 2026年最新アップデート(1Mコンテキスト・Skill・Hook・Subagent・MCP・Plan mode)を実戦投入するためのアーキテクチャ図

Claude Code 2026年最新アップデート総まとめ|1Mコンテキスト・Skill・Hook・Subagent・MCP・Plan modeを実戦投入する

バージョン注記: 2026年5月時点。Claude Code は Opus 4.7(1Mコンテキスト)/ Sonnet 4.6 / Haiku 4.5 を対象に動作確認済み。

settings.json
のパスや CLI フラグは将来変更される可能性があるため、最新は
claude --help
と公式ドキュメントで確認してください。

私は普段、CVC本業のかたわら自社AI開発と個人開発を回しています。机の上に常駐しているCLIは2024年からずっとClaude Codeで、ここ数か月で 6つの大きな機能アップデート が一気に積み上がりました。1Mコンテキスト、Skill、Hook、Subagent、MCP、Plan mode——どれも単独で記事1本書けるくらいの粒度です。ただ、6つが揃って初めて回り出す設計になっていて、片手間で触ると本当の効きが見えません。

この記事は、私が実際に半月使い倒して整理した「現場で効く組み合わせ方」を一気に書きます。元々半導体プロセスのエンジニアで、TCAD・AWS・フロント外注管理まで自分の手で回してきた人間として、Claude Codeを 「人ひとり分のオペレーティングシステム」 として組み上げる方針で書きます。

TL;DR:この記事でわかること

テーマ学べること
1MコンテキストOpus 4.7で何が変わるか・コスト/速度トレードオフ・実戦的な使いどき
Skillsカスタムスキルの作り方・トリガー設計・既存ワークフロー化
Hooks
settings.json
のライフサイクル介入・自動チェック・通知
SubagentsExplore / Plan / code-reviewer 等の使い分け・並列実行
MCP外部サービス連携・自前MCPサーバーの最小実装
Plan mode読み取り専用の計画フェーズ・誤実行ゼロ化
統合運用6機能を組み合わせた1日のリアル開発フロー例

なぜ「6つ全部」が揃わないと意味がないのか

率直に言うと、最初は1つずつ試しました。Skillだけ、Hookだけ、Subagentだけ。これだと どれも便利だが導入コストに見合わない」 くらいの印象に留まります。

ところが6つ揃えてから、明確に世界が変わりました。Plan modeで読み取りだけ走らせ → Subagentで並列に探索 → Skillで定型を呼び出し → Hookで安全網 → MCPで外部状態を引っ張る → 1MコンテキストでDIFFも全部抱える。この流れが組めると、CVCの本業を回しながら、夜と週末で個人開発を半年スパンで前に進められる粒度になります。

機能単独で使った時の印象6つ揃ったときの実効性
1Mコンテキスト「広いだけ」大規模リファクタを1セッションで完了
Skills「テンプレ便利」プロジェクト共通の作法を再現可能に
Hooks「気休めの自動化」危険操作のガード・通知の中枢
Subagents「呼ぶのが面倒」並列で文脈を汚さず仕事を分割
MCP「設定が重い」外部状態を会話に直接持ち込める
Plan mode「冗長」暴走実装ゼロ・差し戻し激減

ここはまだ議論が割れます。私の周囲のエンジニアでも「Hookは要らない」「Plan modeは遅い」という声はあります。ただ私の現時点での見立てでは、「ひとり開発の生産性」を測るときに最後に効くのは安全網と差し戻しの少なさで、Hook + Plan mode はその部分の費用対効果が圧倒的に高いです。


1. 1Mコンテキスト:Opus 4.7 で「読み切れる」ようになった

Opus 4.7 の 1M コンテキストは、「コードベースを1セッションで保持する」 という体感をはっきり変えました。私の自社プロジェクト(Nuxt + Lambda + TCAD向け補助スクリプト群、全部で約32万行)は、Sonnet 4.6 の200kだと3〜4セッションに分割しないと回らなかったのが、Opus 4.7 だと 1セッションで完結します。

CLIフラグはシンプルで、モデル指定だけです。

# 1M context モード
claude --model claude-opus-4-7

# settings.json で常用設定
{
  "model": "claude-opus-4-7",
  "thinking": "auto"
}

実戦的な使い分けの目安:

シーンおすすめモデル理由
単純な編集・スクリプト生成Haiku 4.5速い・安い
通常の機能実装・レビューSonnet 4.6バランス最良
大規模リファクタ・全体俯瞰が要る作業Opus 4.7 (1M)文脈を切らない
緊急の本番トラブル調査Opus 4.7 (1M)過去ログ・コード・dashを一気に抱える

1Mを使うときに私が気を付けているのは 「キャッシュ境界」 です。5分のプロンプトキャッシュTTLを意識して、長時間放置するなら一度コミットして区切る。これだけで再開時のレスポンスが体感で2〜3倍速くなります。


2. Skills:プロジェクト固有の作法を「呼び出し可能」にする

Skill は私の中で 「2026年最大のゲームチェンジャー」 です。何が変わったかというと、

/skill-name
で呼べる 再現可能な作法 を、リポジトリ単位で持てるようになりました。

Skillの最小構成は驚くほど単純です。

---
name: zyl0-blog-writer
description: ZYL0 Blog向けのバイリンガル投資記事を生成する
---

# ZYL0 Blog Writer

## Frontmatter Schema
...(必須フィールド・例・チェックリスト)...

## Article Structure
::lang-block{lang="ja"} と ::lang-block{lang="en"} の2ブロック構成
...

description
をしっかり書くのが一番重要なポイントです。Claudeはユーザの自然言語入力に対し、descriptionを見てSkillを発火させるか判断します。私の場合、ZYL0 Blog記事執筆スキルは「ブログ書いて」「記事書いて」「ZYL0」のいずれかでヒットするように書いています。

リポジトリ配置は次の通り。

.claude/
  skills/
    zyl0-blog-writer/
      SKILL.md          # 上のmarkdown本体
      examples/
      templates/

実戦で効くSkill設計のコツを3つだけ:

設計ポイントなぜ効くか
descriptionに「いつ呼ばれるか」を明確に書く誤発火と未発火が激減
出力フォーマットを末尾にチェックリスト化失敗パターンを自己訂正できる
Skill内に「禁止事項」セクションを置く大半のhallucinationが事前に抑えられる

私は ZYL0 Blog 用に3つのSkill (投資記事用 / 技術記事用 / クリエイター記事用)を運用しています。それぞれ description が違うので、「データセンターの投資領域を書いて」と言えば投資記事用、「Claude Codeの使い方を書いて」と言えば技術記事用がきれいに発火します。Skillは1日かけて作る価値が確実にあります


3. Hooks:
settings.json
で開発体験を縫い込む

Hookは settings.json のライフサイクル介入機能です。私の用途で一番効いたのは 「危険操作の前で必ず停まる」 のと 「停止時に通知を飛ばす」 の2つ。

最小構成のhook設定がこちらです。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "command": "node .claude/hooks/pre-bash-guard.mjs"
      }
    ],
    "Stop": [
      {
        "command": "powershell -File .claude/hooks/notify-done.ps1"
      }
    ],
    "UserPromptSubmit": [
      {
        "command": "node .claude/hooks/log-prompt.mjs"
      }
    ]
  }
}

pre-bash-guard の中身はこんな感じ。

// .claude/hooks/pre-bash-guard.mjs
import { readFileSync } from "node:fs";

const payload = JSON.parse(readFileSync(0, "utf-8"));
const cmd = payload.tool_input?.command ?? "";

const DENY = [
  /\bgit\s+push\b/,           // 明示許可なしのpushを禁止
  /\brm\s+-rf\s+\//,          // ルート削除を禁止
  /\bnpm\s+publish\b/,        // 誤publish防止
];

for (const re of DENY) {
  if (re.test(cmd)) {
    console.log(JSON.stringify({
      decision: "block",
      reason: `Blocked by pre-bash-guard: ${re}`
    }));
    process.exit(0);
  }
}

このhookだけで、私の本番事故が体感で激減しました。特に 「git pushを明示許可なしで叩かない」 を強制できると、複数プロジェクトを並走しているときに精神的に楽になります。

実戦的に組んで使うHookライフサイクル一覧:

Hook何ができるか私の用途
PreToolUse
ツール実行前に検査・ブロック危険コマンドのガード
PostToolUse
ツール実行後の処理編集後の自動lint・format
UserPromptSubmit
プロンプト送信前コンテキスト追加・ログ
Stop
セッション停止時通知・サマリ送信
SubagentStop
サブエージェント停止時結果の集計・記録

私の体感で一番費用対効果が高いのは

PreToolUse
のBashガードです。慣れると30分で書けます。


4. Subagents:文脈を汚さず並列で走る

Subagent は 「メインの会話を汚さずに探索・調査を切り出せる」 機構です。標準で

Explore
,
Plan
,
general-purpose
,
code-reviewer
などが用意され、自前で
.claude/agents/
配下に追加できます。

私のリポジトリでは、最低限3つの自前Subagentを置いています。

---
name: zyl0-investment-dd
description: スタートアップ投資のDD用調査エージェント。技術・市場・財務を分けて並列調査
tools: WebFetch, WebSearch, Read, Grep
model: opus
---

# Investment DD Agent

スタートアップ1社について、以下を並列でDDし、最後に1ページのサマリを返す:
- 技術DD: 公開特許・GitHub・公開コード
- 市場DD: TAM/SAM・競合・規制
- 財務DD: 直近ラウンド・主要投資家・バーンレート推定

出力フォーマット:
1. ワンライナー結論(投資妙味/様子見/見送り)
2. 強気材料3点
3. 弱気材料3点
4. 追加質問リスト5問

呼び方は、メインのClaude Codeセッションから「DDして」と言うだけ。並列で3つ走らせて結果だけ受け取る ような使い方ができるので、CVCの一次調査が本当に高速化しました。

並列実行のコツは、独立した作業かどうかを最初に切り分けること。

シーン推奨
同じファイルの異なる視点(実装/レビュー)順次実行
異なるディレクトリの独立調査並列実行
同じ調査対象の異なる切り口並列実行(DD/競合/規制)
結果が次の判断に必要順次実行

体感としては、Subagentは「外注ジュニア」と思って渡す感覚に近いです。私は前職で投資チームの DD品質基準を統一して、3か月でメンバーが単独でDDを完結できるレベルまで育てた経験がありますが、Subagent運用はその縮小版でした。プロンプトを「指示書」として整える練習をすると、リアルな後輩マネジメントの筋肉もつきます。


5. MCP:外部状態をClaude Codeに「直接持ち込む」

MCP(Model Context Protocol)は 「外部システムに対する標準コネクタ」 です。Gmail、Google Drive、Linear、Notion、社内API、何でも繋げます。

.mcp.json
をリポジトリに置くと、チームで共有できます。

{
  "mcpServers": {
    "linear": {
      "command": "npx",
      "args": ["-y", "@linear/mcp-server"],
      "env": { "LINEAR_API_KEY": "${LINEAR_API_KEY}" }
    },
    "notion": {
      "command": "npx",
      "args": ["-y", "@notionhq/notion-mcp-server"]
    }
  }
}

自前MCPサーバーも30分で書けます。最小例(Python):

# mcp_server_zyl0_portfolio.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("zyl0-portfolio")

@mcp.tool()
def get_portfolio_company(ticker: str) -> dict:
    """ポートフォリオ企業のスナップショットを返す"""
    return {
        "ticker": ticker,
        "stage": "Series B",
        "last_round": "2025-11",
        "thesis": "...",
    }

if __name__ == "__main__":
    mcp.run()
{
  "mcpServers": {
    "zyl0-portfolio": {
      "command": "python",
      "args": ["mcp_server_zyl0_portfolio.py"]
    }
  }
}

私が「これは便利だ」と素直に感じたのは、社内ナレッジ(過去のDDメモやポートフォリオサマリ)をMCPで会話に持ち込めるようになったことです。前職で蓄えたDDテンプレや投資テーマのシナジーマップを、ClaudeのセッションからRead経由で参照できると、机の上の作業時間が体感で半分になります。


6. Plan mode:実装前に「読み取りだけ」で走る

Plan modeは、「書き込み系ツールを禁止して、計画ファイルだけ書ける」モードです。最初は「冗長そう」と思っていました。実際に使ってみると、差し戻しと暴走実装の確率が桁で下がるので、もう外せません。

起動方法はシンプルで、CLI内で

/plan
か、
Shift+Tab
で切り替え。挙動は以下の通り。

状態許可されるツール禁止されるツール
Plan mode ONRead, Grep, Glob, WebFetch, WebSearch, Explore SubagentEdit, Write, Bash(非readonly), Commit
Plan mode OFF全てなし

私の運用ルールは1つだけ:「100行以上を触る変更は必ずPlan modeで開始」。小さい変更だと過剰だが、ある程度の規模になると、最初にPlan agentに設計を書かせて、Read系で関連ファイルを抑えて、

ExitPlanMode
で本番実装に移る——この流れに統一すると差し戻しが激減します。

Plan modeを更に効かせるには、Plan modeから抜けた瞬間にHookで通知を組み合わせます。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "ExitPlanMode",
        "command": "powershell -File .claude/hooks/plan-exit-notify.ps1"
      }
    ]
  }
}

私は半導体プロセス開発時代、TCADでプロセスシミュレーションを回してから装置で試作する習慣がついていました。Plan modeはまさにそのTCAD相当のレイヤーで、思考の事前検証が本実装の歩留まりを上げます。


7. 6機能を組み合わせた、私の1日の開発フロー

ここまでの6機能を、CVC兼エンジニアの私が実際にどう組み合わせて使っているかを最後に書きます。1日のうちで開発に充てられるのは約2〜3時間。この中でブログ記事1本、自社AI開発で機能1〜2個、を回す前提です。

08:00  本業の始業前、自社開発の1スプリント
       ├── claude --model claude-opus-4-7 を起動
       ├── /plan で Plan mode に入る
       ├── Explore Subagent を3つ並列で起動(仕様/関連コード/テスト)
       ├── Plan agent に設計案を書かせる
       └── ExitPlanMode → 実装フェーズへ

12:00  CVC本業:MCP経由でLinear・Notion・社内DBを参照しつつ
       ├── zyl0-investment-dd Subagent で並列DD
       └── 結果をNotionに書き出し

19:00  個人開発・ブログ
       ├── /zyl0-blog-writer Skill 発火
       ├── 1MコンテキストでDIFF全体を渡しつつ執筆
       └── Stop hook で完成通知

21:00  仕上げ
       └── code-reviewer Subagent で全体レビュー

このループが回り始めると、本業30時間 + 自社AI開発15時間 + 個人開発15時間の月60時間体制が、無理なく維持できます。6機能の組み合わせが「人ひとり分のオペレーションをスケールさせる」最小単位だ、というのが半月走って出した結論です。


落とし穴・ハマったポイント

最後にハマった点を正直に書きます。

ハマった点原因対処
Skillが発火しないdescriptionが抽象的すぎるトリガー語を具体的に書き直す
Hookが沈黙するmatcher正規表現の取りこぼしclaudeを
--debug
で起動して確認
Subagentが文脈を持たないプロンプトに前提条件を書き忘れ「外注ジュニア」前提で指示書を書く
MCPサーバーがロードされない
.mcp.json
のパス誤り
claude mcp list
で接続状況を確認
Plan modeから出られない
ExitPlanMode
を呼ばずに編集試行
必ず
ExitPlanMode
を経由
1Mコンテキストでコストが膨らむ不要なファイルを抱え込み続けた定期的にコミットして文脈を区切る

特にSkillのdescriptionは何度も書き直しました。最初は「ブログ記事を書く」とだけ書いていたら全く発火せず、「ZYL0 Blog向けバイリンガル投資記事を、

content/blogs/
配下に出力するMarkdownファイルとして生成する」まで具体化したところで安定発火するようになりました。


まとめ:今すぐ取り掛かるなら、この順番

導入順は迷うところですが、私の現時点での推奨は以下:

  1. Plan mode (即日効く・コストゼロ)
  2. Hooks (PreToolUseのBashガードだけ) (30分で書ける・事故激減)
  3. Skill 1本だけ自作 (プロジェクト共通の作法をひとつ作法化)
  4. Subagent 1〜2本 (並列調査の感覚を掴む)
  5. 1Mコンテキスト (大規模リファクタの時だけ)
  6. MCP (社内API・既存ツールと繋がるとき)

5・6は必要に応じて。1〜4は2日もあれば全部入るので、今日から始める価値は十分にあります。


Next Issue Ideas(次回予告)

  • Claude Code Skill 設計パターン10選|descriptionで誤発火を防ぐ書き方:Skillトリガー精度を上げる具体的なフレーズパターンを実例で整理。
  • MCPサーバーで社内ナレッジを繋ぐ|DDメモ・ポートフォリオデータの最短連携:自前MCPサーバーを30分で組み、CVCのDD会話に持ち込む完全ガイド。
  • Hookで作る「事故ゼロ」開発環境|PreToolUse・Stop・UserPromptSubmitの実戦設定:危険操作ガードから通知まで、Hookライフサイクル別の実戦テンプレ集。

本記事は技術情報の共有を目的としたものであり、特定の銘柄・サービスの推奨ではありません。執筆者は記載企業・ツールの一部を業務で利用しています。記事中の調査・コード例の整理には生成AIアシスタントの支援を活用しています。詳しい免責事項は/disclaimerをご確認ください。


Claude Code 2026 Feature Roundup: Putting 1M Context, Skills, Hooks, Subagents, MCP, and Plan Mode to Real Work

Version note: As of May 2026. Verified against Claude Code with Opus 4.7 (1M context), Sonnet 4.6, and Haiku 4.5.

settings.json
paths and CLI flags may shift over time — always confirm with
claude --help
and the official docs.

Outside of my CVC day job, I run an internal AI build and a personal side project. My CLI driver since 2024 has been Claude Code, and the last few months have stacked six major feature drops: 1M context, Skills, Hooks, Subagents, MCP, and Plan mode. Each is worthy of its own article, but the design only really clicks once all six are wired together — using them in isolation badly understates the leverage.

This piece distills what I've learned over a half-month of running them seriously. Coming from a semiconductor process engineering background where I wrote TCAD scripts, designed AWS backends, and managed outsourced frontends, my framing is to treat Claude Code as a single-person operating system rather than "an editor with AI on top."

TL;DR: What You'll Learn

TopicWhat you'll learn
1M contextWhat Opus 4.7 changes, cost/speed trade-offs, when to use it
SkillsHow to write custom skills, design triggers, and operationalize team conventions
HooksLifecycle interception in
settings.json
, safety guards, notifications
SubagentsWhen to use Explore / Plan / code-reviewer; parallel execution
MCPWiring external services; the smallest possible MCP server
Plan modeRead-only planning phase that eliminates runaway implementations
IntegrationA real daily loop combining all six features

Why Stitching All Six Together Matters

Honestly, I tried each feature in isolation first — Skills only, Hooks only, Subagents only. Each one came out as "nice but not worth the friction."

The picture changed sharply once I wired all six together. Enter Plan mode → fan out Subagents → invoke a Skill → let Hooks guard the dangerous edges → pull external state via MCP → carry the whole DIFF in 1M context. Once that loop is in place, I can keep my CVC day job intact and still push a personal project forward on a six-month timeline using nights and weekends.

FeatureSolo impressionEffective once all six are wired together
1M context"Just bigger"Large refactors land in one session
Skills"Convenient templates"Project conventions become repeatable
Hooks"Marginal automation"Center of gravity for safety and signaling
Subagents"Hassle to invoke"Parallel work without polluting the main thread
MCP"Heavy setup"Pulls external state directly into the conversation
Plan mode"Verbose"Zero runaways, far fewer rollbacks

The debate isn't settled here. People around me still argue "Hooks are overkill" or "Plan mode is slow." My current read is that the single biggest determinant of solo-developer productivity is how rarely you have to back work out — and Hooks plus Plan mode dominate on that axis.


1. 1M Context: Opus 4.7 Reads the Whole Codebase

Opus 4.7's 1M context tangibly changes whether you can hold an entire repo in one session. My internal project (Nuxt + Lambda + TCAD-adjacent helper scripts, roughly 320K LOC) used to require 3–4 sessions on Sonnet 4.6's 200K context. Opus 4.7 lets me close that in one.

Flag-wise it's just model selection.

# 1M context mode
claude --model claude-opus-4-7

# Or pin it in settings.json
{
  "model": "claude-opus-4-7",
  "thinking": "auto"
}

How I actually pick a model:

ScenarioPickWhy
Simple edits, scriptsHaiku 4.5Fast, cheap
Standard feature work, reviewSonnet 4.6Best balance
Large refactor, whole-repo reasoningOpus 4.7 (1M)Don't break context
Urgent production debuggingOpus 4.7 (1M)Logs, code, dashboards together

The thing I watch most carefully with 1M is the cache boundary. The 5-minute prompt cache TTL matters: if I'm stepping away, I commit and start a fresh session. That alone restores 2–3x perceived response speed.


2. Skills: Making Project-Specific Conventions Callable

Skills are, in my view, the single largest 2026 change. They let you declare callable, repeatable conventions scoped to a repository, invokable by

/skill-name
.

The minimum viable skill is almost embarrassingly small.

---
name: zyl0-blog-writer
description: Generate bilingual investment posts for ZYL0 Blog
---

# ZYL0 Blog Writer

## Frontmatter Schema
... (required fields, example, checklist) ...

## Article Structure
Two ::lang-block sections (ja + en)
...

The single most important field is

description
. Claude decides whether to fire your skill based on the natural-language user input matching that description. My blog skill triggers reliably on the words "ブログ書いて", "blog post", or "ZYL0" because the description names those explicitly.

Repository layout:

.claude/
  skills/
    zyl0-blog-writer/
      SKILL.md          # the markdown body above
      examples/
      templates/

Three design tips that consistently pay off:

Design tipWhy it helps
Spell out exactly when the skill should fire in
description
Eliminates both false fires and silent misses
End with an output-format checklistThe model self-corrects against it
Include a "must not" sectionHeads off most hallucinated outputs

I currently run three skills for ZYL0 Blog (investment posts / technical posts / creator posts), each with a distinct description. "Write about data center investing" routes to the investment one; "Write about Claude Code" routes to the technical one. A skill is worth a full day to design.


3. Hooks: Stitching
settings.json
Into the Editing Loop

Hooks are lifecycle interception via

settings.json
. The two highest-impact ones for me have been "always pause before dangerous operations" and "notify me when a session ends."

A minimal configuration:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "command": "node .claude/hooks/pre-bash-guard.mjs"
      }
    ],
    "Stop": [
      {
        "command": "powershell -File .claude/hooks/notify-done.ps1"
      }
    ],
    "UserPromptSubmit": [
      {
        "command": "node .claude/hooks/log-prompt.mjs"
      }
    ]
  }
}

And the guard itself:

// .claude/hooks/pre-bash-guard.mjs
import { readFileSync } from "node:fs";

const payload = JSON.parse(readFileSync(0, "utf-8"));
const cmd = payload.tool_input?.command ?? "";

const DENY = [
  /\bgit\s+push\b/,           // No push without explicit approval
  /\brm\s+-rf\s+\//,          // No root deletion
  /\bnpm\s+publish\b/,        // No accidental publish
];

for (const re of DENY) {
  if (re.test(cmd)) {
    console.log(JSON.stringify({
      decision: "block",
      reason: `Blocked by pre-bash-guard: ${re}`
    }));
    process.exit(0);
  }
}

This single hook alone dramatically cut my production-impacting mistakes. Especially being able to enforce "no git push without explicit approval" removes a lot of cognitive load when I'm running multiple projects in parallel.

Full hook lifecycle as I use it in practice:

HookWhat it doesMy use
PreToolUse
Inspect/block before tool executionGuard dangerous commands
PostToolUse
After tool executionAuto-lint / format after edits
UserPromptSubmit
Before prompt submissionAdd context, log prompts
Stop
Session endsPush notifications, summaries
SubagentStop
Subagent endsAggregate results

By a wide margin, my best ROI has been the

PreToolUse
Bash guard. Once you're used to writing them, a new hook takes about 30 minutes.


4. Subagents: Parallel Work Without Polluting Context

Subagents let you split off investigation or coding work without polluting the main conversation. Out of the box you get

Explore
,
Plan
,
general-purpose
,
code-reviewer
, and you can drop your own under
.claude/agents/
.

In my repo I keep three custom subagents as a baseline.

---
name: zyl0-investment-dd
description: DD agent for startup investments. Splits tech / market / financial DD in parallel.
tools: WebFetch, WebSearch, Read, Grep
model: opus
---

# Investment DD Agent

For a single startup, run the following DD streams in parallel and return a one-page summary:
- Tech DD: public patents, GitHub, public code
- Market DD: TAM/SAM, competitors, regulation
- Financial DD: recent rounds, lead investors, burn-rate estimates

Output format:
1. One-line verdict (invest / wait / pass)
2. Three bull points
3. Three bear points
4. Five follow-up questions

Invocation is just "do DD" in the main session — three parallel streams run, results come back to one window. My CVC first-pass diligence got materially faster.

A simple rule for whether to parallelize:

ScenarioChoice
Different lenses on the same file (impl / review)Sequential
Independent investigations across directoriesParallel
Different angles on the same targetParallel (DD / competitor / regulation)
One output feeds the next decisionSequential

The mental model that works best for me: treat a subagent like a junior contractor. At my prior CVC I standardized DD quality criteria across the investment team, and within three months teammates could close DD independently. Running subagents is the miniature of that — drafting prompts as "instruction sheets" sharpens the management muscle you'd use on a real human report.


5. MCP: Bringing External State Directly Into the Session

MCP (Model Context Protocol) is a standard connector to external systems — Gmail, Google Drive, Linear, Notion, your internal API, anything.

A

.mcp.json
in the repo makes the wiring team-shareable.

{
  "mcpServers": {
    "linear": {
      "command": "npx",
      "args": ["-y", "@linear/mcp-server"],
      "env": { "LINEAR_API_KEY": "${LINEAR_API_KEY}" }
    },
    "notion": {
      "command": "npx",
      "args": ["-y", "@notionhq/notion-mcp-server"]
    }
  }
}

A custom MCP server takes about 30 minutes. Smallest Python example:

# mcp_server_zyl0_portfolio.py
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("zyl0-portfolio")

@mcp.tool()
def get_portfolio_company(ticker: str) -> dict:
    """Return a snapshot of a portfolio company."""
    return {
        "ticker": ticker,
        "stage": "Series B",
        "last_round": "2025-11",
        "thesis": "...",
    }

if __name__ == "__main__":
    mcp.run()
{
  "mcpServers": {
    "zyl0-portfolio": {
      "command": "python",
      "args": ["mcp_server_zyl0_portfolio.py"]
    }
  }
}

The "ah-ha" moment for me was being able to bring internal knowledge — old DD memos, portfolio summaries — directly into the conversation via MCP. Pulling the DD templates and investment-thesis synergy map I built at my previous CVC into a Claude session through Read effectively halved my desk-time.


6. Plan Mode: Run "Read Only" Before You Write

Plan mode is a session state that forbids write tools while allowing the plan file to be edited. I dismissed it as verbose at first. Once I actually used it, the runaway-implementation rate dropped by an order of magnitude — it's now permanent in my workflow.

Activation is

/plan
from inside the CLI, or
Shift+Tab
to toggle.

StateAllowedForbidden
Plan mode ONRead, Grep, Glob, WebFetch, WebSearch, Explore subagentEdit, Write, non-readonly Bash, commit
Plan mode OFFAllNone

My single operating rule: anything touching more than 100 LOC starts in Plan mode. Small changes don't justify the overhead, but past a certain size, having a Plan agent draft the design, Read-class tools nail down the surrounding files, and then

ExitPlanMode
start the real implementation collapses the rollback rate.

To make Plan mode even sharper, pair it with a Hook on exit:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "ExitPlanMode",
        "command": "powershell -File .claude/hooks/plan-exit-notify.ps1"
      }
    ]
  }
}

Back in my semiconductor process days, the discipline was always to simulate in TCAD before running real wafers. Plan mode is the TCAD layer for code — front-loading the thinking raises the "yield" of the implementation step.


7. A Real Day, All Six Wired Together

Here is how I actually combine the six features in a typical day. I have about 2–3 hours of usable build time, in which I aim to ship one blog post, plus 1–2 features on the internal AI project.

08:00  Before the CVC day starts — internal AI sprint
       ├── Launch claude --model claude-opus-4-7
       ├── /plan to enter Plan mode
       ├── Three Explore subagents in parallel (spec / related code / tests)
       ├── Plan agent drafts the design
       └── ExitPlanMode → implementation

12:00  CVC day job — pull Linear/Notion/internal DB via MCP
       ├── Run zyl0-investment-dd subagents in parallel
       └── Write back to Notion

19:00  Personal / blog
       ├── Trigger /zyl0-blog-writer
       ├── Carry the full DIFF in 1M context while drafting
       └── Stop hook fires when the draft is done

21:00  Polishing
       └── code-reviewer subagent for whole-doc review

Once this loop is humming, a monthly cadence of ~30 hours day job + 15 hours internal AI build + 15 hours personal work is sustainable. The conclusion I'm landing on after two weeks: the six features together are the minimum unit that "scales one person's operations."


Gotchas and What Tripped Me Up

Being honest about what bit me:

ProblemCauseFix
Skill never fired
description
too abstract
Rewrite with explicit trigger phrases
Hook silently no-op'dMatcher regex didn't catchRun with
--debug
Subagent lost contextForgot to repeat preconditionsTreat the prompt as a contractor's brief
MCP server not loadingWrong path in
.mcp.json
claude mcp list
to confirm
Couldn't exit Plan modeAttempted to edit before
ExitPlanMode
Always call
ExitPlanMode
explicitly
1M context cost ballooningHeld onto files I didn't needCommit and start fresh sessions

Skill descriptions were the biggest source of pain. My first iteration said "writes a blog post" and never fired. Rewriting to "generate a bilingual investment post for ZYL0 Blog, output as a Markdown file under

content/blogs/
" was the version that started firing reliably.


If I were starting from zero today:

  1. Plan mode (instant payoff, zero cost)
  2. Hooks — only the PreToolUse Bash guard at first (30 minutes, massive accident reduction)
  3. One custom Skill (codify one team convention)
  4. One or two Subagents (get a feel for parallel investigation)
  5. 1M context (only when you're doing whole-repo work)
  6. MCP (once you need to wire internal tools)

Items 5 and 6 are situational. The first four can all be installed inside two days, which is more than enough reason to start today.


Next Issue Ideas

  • Ten Skill design patterns for Claude Code — how to write descriptions that fire reliably: concrete trigger-phrase templates with examples of what does and doesn't work.
  • Connecting internal knowledge over MCP — the shortest path to DD memos and portfolio data: a 30-minute build of a custom MCP server hooked into a CVC's diligence flow.
  • A zero-accident dev environment built on Hooks — real-world PreToolUse / Stop / UserPromptSubmit templates: lifecycle-by-lifecycle hook templates you can copy in.

This article is intended as technical knowledge sharing and is not a recommendation of any specific security or service. The author uses some of the products and tools mentioned. Generative AI assistants were used to support research and code-example organization. Full disclaimer: /disclaimer.