Claude Codeで CLAUDE.md + Obsidian を使ったナレッジ管理をしている方も多いと思います。本記事では、その知見を活かしつつ、Kiro の強力な機能(Steering、Hooks、Specs、Powers、カスタムエージェント)を組み合わせたベストプラクティスを紹介します。
Claude Code の Skills を使ったことがある方なら、この例えが分かりやすいでしょう。
| 観点 | Claude Code Skills | Kiro Powers |
|---|---|---|
| ロード方式 | Eager / 明示的 | Lazy / 動的 |
| 発火条件 | view /mnt/skills/... で手動読み込み | キーワード(「database」「ui」等)で自動発火 |
| コンテキスト消費 | 読み込んだ分だけ消費 | 必要になるまでゼロ |
| 中身 | Markdown手順書 | MCP + Steering + Hooks のパッケージ |
File not found: "python" at page "KIROナレッジ蓄積フォルダ構成";
# イメージで言うと...
# Claude Code Skills(eager) import skills.docx # 明示的にインポート
# Kiro Powers(lazy) if "database" in prompt:
import powers.neon # 自動的にインポート
}}
従来のMCPサーバー設定では、6つのMCPサーバー(合計28ツール)を設定すると、単に「こんにちは!」と入力しただけでもコンテキストの数十%を消費していました。
Kiro Powers はプロンプトに応じて必要なMCPサーバーのみをアクティブ化するため、クレジットとコンテキストの消費を大幅に抑えられます。
#code{{ project-root/ ├── .kiro/ # Kiro設定(Git管理対象) │ │ │ ├── steering/ # 永続的な知識・ルール │ │ ├── product.md # プロダクト概要 │ │ ├── structure.md # ディレクトリ構成ルール │ │ ├── tech.md # 技術スタック │ │ ├── coding-standards.md # コーディング規約 │ │ └── review-rules.md # レビュー頻出指摘 │ │ │ ├── specs/ # 仕様書(Kiroが自動生成) │ │ └── {feature-name}/ │ │ ├── requirements.md # 要件定義(EARS記法) │ │ ├── design.md # 設計書 │ │ └── tasks.md # タスクリスト │ │ │ ├── hooks/ # 自動化フック │ │ ├── auto-test-update.json # テスト自動更新 │ │ ├── security-scan.json # セキュリティスキャン │ │ ├── doc-sync.json # ドキュメント同期 │ │ └── troubleshooting-logger.json # エラー解決記録 │ │ │ ├── agents/ # カスタムエージェント(CLI用) │ │ ├── backend-specialist.json │ │ ├── code-reviewer.json │ │ └── troubleshooter.json │ │ │ └── settings/ │ └── mcp.json # MCP設定 │ └── docs/ # ナレッジ蓄積(手動 + Hooks自動追記)
├── _templates/ # テンプレート集 ├── troubleshooting/ # エラー解決記録 ├── reviews/ # PRレビュー指摘 ├── patterns/ # 実装パターン集 ├── libraries/ # ライブラリ使用方法 ├── features/ # 機能別ドキュメント └── learning/ # 振り返り・学習記録
}}
| Claude Code | Kiro | Kiroの強み |
|---|---|---|
| CLAUDE.md | .kiro/steering/*.md | 複数ファイルに分割可能、Generate Steering Docsで既存コードから自動生成 |
| 手動で docs/ 参照 | Hooks自動化 | ファイル保存時に自動でドキュメント追記・更新 |
| docs/reviews/tags/ | .kiro/steering/review-rules.md + Hooks | 保存時に自動でレビュー指摘チェック |
| 手動でコピペ参照 | Specs自動生成 | 要件→設計→タスクをAIが構造化 |
| Skills(eager) | Powers(lazy) | 必要時のみ動的ロード、コンテキスト節約 |
| ─ | カスタムエージェント | タスク特化型サブエージェント(CLI) |
Claude Codeの CLAUDE.md に相当するのが .kiro/steering/ ディレクトリです。
#code{{
!-- .kiro/steering/product.md -->
# プロダクト概要
## サービス名 〇〇システム
## 目的 ...
## ターゲットユーザー ... }}
#code{{
!-- .kiro/steering/coding-standards.md -->
# コーディング規約
## 命名規則
### Boolean
### 関数名
## エラーハンドリング
既存プロジェクトの場合、Generate Steering Docs をクリックすると、Kiroがコードベースを分析してSteering ドキュメントを自動生成します。
| フック名 | トリガー | 用途 |
|---|---|---|
| troubleshooting-logger | ファイル保存 | エラー解決時に自動記録 |
| auto-test-update | TypeScript?保存 | テストファイル自動更新 |
| security-scan | コミット前 | 機密情報スキャン |
| doc-sync | API変更時 | README自動更新 |
| review-checker | 保存時 | レビュー頻出指摘の事前チェック |
File not found: "json" at page "KIROナレッジ蓄積フォルダ構成";
{
"name": "Troubleshooting Logger",
"description": "エラー解決時に自動でdocs/troubleshooting/に記録",
"version": "1",
"when": {
"type": "fileEdited",
"patterns": ["**/*.ts", "**/*.tsx", "!**/*.test.*"]
},
"then": {
"type": "askAgent",
"prompt": "このファイルの変更がエラー修正である場合、docs/troubleshooting/ に解決記録を追記してください。"
}
} }}
File not found: "json" at page "KIROナレッジ蓄積フォルダ構成";
{
"name": "Review Checker",
"description": "保存時にレビュー頻出指摘をチェック",
"version": "1",
"when": {
"type": "fileEdited",
"patterns": ["src/**/*.ts", "src/**/*.tsx"]
},
"then": {
"type": "askAgent",
"prompt": "docs/reviews/tags/ と .kiro/steering/review-rules.md を参照し、このファイルにレビューで指摘されそうな問題がないかチェックしてください。"
}
} }}
Hooksは .kiro/hooks/ ディレクトリに保存され、Gitにコミットすることでチーム全体で共有できます。一人のメンバーが作成したHooksを全員が利用できます。
Kiro CLI では、タスクに特化したサブエージェントを定義できます。
File not found: "json" at page "KIROナレッジ蓄積フォルダ構成";
{
"name": "troubleshooter", "description": "過去のエラー解決記録を参照して問題を解決", "prompt": "あなたはトラブルシューティングの専門家です。docs/troubleshooting/ の過去事例を必ず検索してから回答してください。", "tools": ["read", "write", "shell"], "allowedTools": ["read"], "resources": [ "file://docs/troubleshooting/**/*.md", "file://docs/patterns/**/*.md", "file://.kiro/steering/**/*.md" ], "model": "claude-sonnet-4"
} }}
File not found: "json" at page "KIROナレッジ蓄積フォルダ構成";
{
"name": "code-reviewer", "description": "PRレビュー観点でコードをチェック", "prompt": "あなたはシニアエンジニアとしてコードレビューを行います。docs/reviews/tags/ の過去指摘パターンを参照し、同じ指摘が発生しないかチェックしてください。", "tools": ["read"], "resources": [ "file://docs/reviews/**/*.md", "file://.kiro/steering/coding-standards.md", "file://.kiro/steering/review-rules.md" ], "model": "claude-sonnet-4"
} }}
File not found: "bash" at page "KIROナレッジ蓄積フォルダ構成";
# トラブルシューターを起動 kiro-cli chat --agent troubleshooter "このエラーの解決方法は?"
# コードレビュアーを起動 kiro-cli chat --agent code-reviewer "src/features/auth/ をレビューして"
# エージェント一覧 kiro-cli agent list
# エージェント切り替え(対話中)
/agent swap }}
Kiro独自の強力な機能です。プロンプトから自動で以下を生成します:
#code{{
!-- .kiro/specs/shopping-cart/requirements.md -->
# 要件定義書
## 要件1: カートへの商品追加
ユーザーとして、商品をカートに追加したい。
### 受け入れ基準 1. WHEN 商品詳細ページで「カートに追加」ボタンをクリック
THEN 商品がカートに追加される
2. WHEN 同じ商品を複数回追加
THEN 数量が増加する(重複追加されない)
}}
プロジェクトを段階的に進める際、成果物をどのように格納するかの見本です。
#code{{ project-root/ ├── .kiro/ │ └── specs/ # Kiro自動生成の仕様書 │ ├── user-auth/ │ │ ├── requirements.md │ │ ├── design.md │ │ └── tasks.md │ └── payment/ │ └── docs/
├── project/ # プロジェクト全体管理
│ ├── README.md # プロジェクト概要
│ ├── roadmap.md # ロードマップ
│ └── phases/ # フェーズ別進捗
│ ├── phase-1-mvp/
│ │ ├── goals.md # フェーズ目標
│ │ ├── scope.md # スコープ定義
│ │ ├── decisions.md # 意思決定ログ
│ │ └── retrospective.md # 振り返り
│ ├── phase-2-beta/
│ └── phase-3-release/
│
└── features/ # 機能別詳細
├── user-auth/
│ ├── README.md # 機能概要
│ ├── changelog.md # 変更履歴
│ ├── iterations/ # イテレーション記録
│ │ ├── v0.1-basic-login.md
│ │ ├── v0.2-oauth-added.md
│ │ └── v0.3-2fa-implemented.md
│ └── tests/
│ └── test-report.md
└── payment/
}}
#code{{
# Phase 1: MVP Goals
## 期間 2025-01-01 〜 2025-03-31
## 目標
## 成功指標
## 対象外(Phase 2以降)
#code{{
# Phase 1: 意思決定ログ
## 2025-01-05: 認証方式の選定
### 背景 ユーザー認証の実装方式を決定する必要がある
### 選択肢 1. 自前実装(JWT) 2. NextAuth?.js 3. Auth0
### 決定
### 理由
### 影響
#code{{
# Phase 1: 振り返り
## 完了日 2025-03-28
## 達成したこと
## うまくいったこと(Keep)
## 改善点(Problem)
- → [[troubleshooting/2025-03-20-stripe-webhook-error]] 参照
## 次に試すこと(Try)
## Phase 2 への申し送り
#code{{
# v0.2: OAuth ログイン追加
## 実装期間 2025-02-01 〜 2025-02-15
## 対応する Spec
## 実装内容
### 変更したファイル
- Google, GitHub プロバイダー追加
### 環境変数追加
GOOGLE_CLIENT_ID=xxx GOOGLE_CLIENT_SECRET=xxx GITHUB_CLIENT_ID=xxx GITHUB_CLIENT_SECRET=xxx
### スキーマ変更
ALTER TABLE users ADD COLUMN provider VARCHAR(50); ALTER TABLE users ADD COLUMN provider_id VARCHAR(255);
## Before / After
### Before(v0.1)
### After(v0.2)
## 学び
#code{{ ┌─────────────────────────────────────────────────────────┐ │ .kiro/specs/user-auth/ │ │ ├── requirements.md ← Kiro生成(EARS記法) │ │ ├── design.md ← Kiro生成(アーキテクチャ) │ │ └── tasks.md ← Kiro生成(実装タスク) │ └─────────────────────────────────────────────────────────┘
│
│ 参照・リンク
▼
┌─────────────────────────────────────────────────────────┐ │ docs/features/user-auth/ │ │ ├── README.md ← 機能概要(人間が補足) │ │ ├── changelog.md ← 変更履歴(人間が記録) │ │ └── iterations/ ← イテレーション記録(人間が記録)│ └─────────────────────────────────────────────────────────┘
│
│ 問題発生時に参照
▼
┌─────────────────────────────────────────────────────────┐ │ docs/troubleshooting/ │ │ └── 2025-01-15-nextauth-session-issue.md │ └─────────────────────────────────────────────────────────┘ }}
| 種類 | 命名パターン | 例 |
|---|---|---|
| フェーズ | phase-{N}-{name}/ | phase-1-mvp/ |
| イテレーション | v{major}.{minor}-{description}.md | v0.2-oauth-added.md |
| トラブルシューティング | YYYY-MM-DD-{issue}.md | 2025-01-15-nextauth-session.md |
| 意思決定 | decisions.md 内に日付セクション | ## 2025-01-05: 認証方式の選定 |
#code{{
# Phase {{N}}: {{name}} Goals
## 期間 {{start-date}} 〜 {{end-date}}
## 目標
## 成功指標
## 対象外(次フェーズ以降)
## 依存関係
#code{{
# Phase {{N}}: 意思決定ログ
## {{date}}: {{title}}
### 背景
!-- なぜこの決定が必要だったか -->
### 選択肢 1. 2. 3.
### 決定
### 理由
### 影響
### 再検討条件
!-- どういう状況になったらこの決定を見直すか --> }}
#code{{
# Phase {{N}}: 振り返り
## 完了日 {{date}}
## 達成したこと
## うまくいったこと(Keep)
## 改善点(Problem)
- → [[troubleshooting/xxx]] 参照
## 次に試すこと(Try)
## Phase {{N+1}} への申し送り
#code{{
# v{{X}}.{{Y}}: {{description}}
## 実装期間 {{start-date}} 〜 {{end-date}}
## 対応する Spec
## 実装内容
### 追加/変更したファイル
### スキーマ変更(あれば)
### 環境変数(あれば) NEW_VAR=xxx
## Before / After
### Before
!-- 変更前の状態、コード、指標など -->
### After
!-- 変更後の状態、コード、指標など -->
## テスト結果
## 発生した問題と解決
## 学び
!-- このイテレーションで得た知見 -->
## 次のイテレーションへの課題
#code{{
# {{date}}: {{title}}
## 症状
!-- どんなエラーが出たか、どんな挙動だったか -->
## 原因
!-- なぜ起きたのか -->
## 解決方法
### Before
### After
## 学び
!-- 次から気をつけること、横展開すべきこと -->
## 関連
!-- 関連するドキュメントへのリンク --> }}
#code{{
# {{library-name}}
## 基本的な使い方
## プロジェクトでの使用例
## 注意点・落とし穴
## よくあるエラーと対処
| エラー | 原因 | 対処 |
|---|---|---|
## Kiroへの指示
このライブラリを使用する際は上記の注意点を必ず確認すること }}
| タイミング | 書く場所 | 自動化 |
|---|---|---|
| エラーを解決したとき | docs/troubleshooting/ | Hooks対応可 |
| PRで指摘を受けたとき | docs/reviews/tags/ | 手動 |
| 新しいライブラリを導入 | docs/libraries/ | 手動 |
| 再利用可能なパターン発見 | docs/patterns/ | 手動 |
| 機能を実装・変更 | docs/features/ | Hooks対応可 |
| 週末 | docs/learning/ | 手動 |
最初から完璧なドキュメントを書こうとしない。
#code{{
## 原因 たぶんキャッシュ関連。あとで調べる。 }}
これでいい。書かないよりマシ。後から修正すればいい。
毎週金曜日に15分だけ振り返りの時間を取る。
#code{{
# 2025-W01 振り返り
## 今週学んだこと
## 今週解決した問題
## ドキュメント更新