Claude Codeで CLAUDE.md + Obsidian を使ったナレッジ管理をしている方も多いと思います。本記事では、その知見を活かしつつ、Kiro の強力な機能(Steering、Hooks、Specs、Powers、カスタムエージェント)を組み合わせたベストプラクティスを紹介します。
本記事で紹介するベストプラクティスは、Kiro Power として公開しています。
| リポジトリ | SuperKiro - GitHub |
|---|---|
| QuickStart? | 5分で始めるガイド |
| FAQ | よくある質問 |
| BestPractices? | 大規模プロジェクト向けTips |
Claude Code の Skills を使ったことがある方なら、この例えが分かりやすいでしょう。
| 観点 | Claude Code Skills | Kiro Powers |
|---|---|---|
| ロード方式 | Eager / 明示的 | Lazy / 動的 |
| 発火条件 | view /mnt/skills/... で手動読み込み | キーワード(「database」「ui」等)で自動発火 |
| コンテキスト消費 | 読み込んだ分だけ消費 | 必要になるまでゼロ |
| 中身 | Markdown手順書 | MCP + Steering + Hooks のパッケージ |
# イメージで言うと...
# Claude Code Skills(eager) import skills.docx # 明示的にインポート
# Kiro Powers(lazy)
if "database" in prompt:
import powers.neon # 自動的にインポート
従来のMCPサーバー設定では、6つのMCPサーバー(合計28ツール)を設定すると、単に「こんにちは!」と入力しただけでもコンテキストの数十%を消費していました。
Kiro Powers はプロンプトに応じて必要なMCPサーバーのみをアクティブ化するため、クレジットとコンテキストの消費を大幅に抑えられます。
project-root/
├── .kiro/ # Kiro設定(Git管理対象)
│ │
│ ├── steering/ # 永続的な知識・ルール
│ │ ├── product.md # プロダクト概要
│ │ ├── structure.md # ディレクトリ構成ルール
│ │ ├── tech.md # 技術スタック
│ │ ├── coding-standards.md # コーディング規約
│ │ ├── review-rules.md # レビュー頻出指摘
│ │ ├── project-structure.md # Phase/Stage/SubStage階層定義
│ │ └── current-stage.md # 現在位置の追跡
│ │
│ ├── specs/ # 仕様書(Kiroが自動生成)
│ │ └── {feature-name}/
│ │ ├── requirements.md # 要件定義(EARS記法)
│ │ ├── design.md # 設計書
│ │ ├── tasks.md # タスクリスト
│ │ └── investigation/ # 調査結果
│ │ ├── as-is-source.md
│ │ ├── as-is-behavior.md
│ │ └── interview-notes.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/ # テンプレート集
│ └── phase/ # Phase/Stage/SubStage用
│ ├── _phase.md
│ ├── _stage.md
│ └── _substage.md
├── project/ # プロジェクト全体管理
│ └── phases/ # フェーズ別進捗
│ └── phase-{N}-{name}/
│ └── stages/
│ └── stage-{N}-{name}/
│ └── substages/
├── troubleshooting/ # エラー解決記録
├── reviews/tags/ # PRレビュー指摘
├── patterns/ # 実装パターン集
├── libraries/ # ライブラリ使用方法
├── features/ # 機能別ドキュメント
├── learning/ # 振り返り・学習記録
└── design/ # 設計ドキュメント
├── artifacts.md # 成果物分類定義
└── ai-readable-docs.md # AI可読ドキュメントガイド
| 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) |
| ─ | Phase/Stage/SubStage? | 大規模プロジェクトの階層的進行管理 |
Claude Codeの CLAUDE.md に相当するのが .kiro/steering/ ディレクトリです。
<!-- .kiro/steering/product.md --> # プロダクト概要
## サービス名 〇〇システム
## 目的 ...
## ターゲットユーザー ...
<!-- .kiro/steering/coding-standards.md --> # コーディング規約
## 命名規則
### Boolean - NG: const open = true - OK: const isOpen = true
### 関数名 - 動詞で始める: getUserById, createOrder
## エラーハンドリング - try-catchは必ずログ出力を含める - ユーザー向けエラーメッセージは日本語化する
既存プロジェクトの場合、Generate Steering Docs をクリックすると、Kiroがコードベースを分析してSteering ドキュメントを自動生成します。
| フック名 | トリガー | 用途 |
|---|---|---|
| troubleshooting-logger | ファイル保存 | エラー解決時に自動記録 |
| auto-test-update | TypeScript?保存 | テストファイル自動更新 |
| security-scan | コミット前 | 機密情報スキャン |
| doc-sync | API変更時 | README自動更新 |
| review-checker | 保存時 | レビュー頻出指摘を事前チェック |
// .kiro/hooks/troubleshooting-logger.json
{
"name": "Troubleshooting Logger",
"description": "エラー解決時に自動でdocs/troubleshooting/に記録を促す",
"version": "1",
"enabled": true,
"when": {
"type": "fileEdited",
"patterns": ["src/**/*.ts", "src/**/*.tsx", "!**/*.test.*"]
},
"then": {
"type": "askAgent",
"prompt": "このファイルの変更内容を確認してください。もしエラー修正であれば、docs/troubleshooting/ に記録を追記することを提案してください。"
}
}
// .kiro/hooks/review-checker.json
{
"name": "Review Checker",
"description": "保存時にレビュー頻出指摘を事前チェック",
"version": "1",
"enabled": true,
"when": {
"type": "fileEdited",
"patterns": ["src/**/*.ts", "src/**/*.tsx"]
},
"then": {
"type": "askAgent",
"prompt": "steering/review-rules.md と docs/reviews/tags/ を参照し、このファイルにレビューで指摘されそうな問題がないかチェックしてください。"
}
}
Kiro CLI を使うと、ターミナルからカスタムエージェントを呼び出せます。
// .kiro/agents/troubleshooter.json
{
"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"
}
// .kiro/agents/code-reviewer.json
{
"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"
}
# トラブルシューターを起動 kiro-cli chat --agent troubleshooter "このエラーの解決方法は?"
# コードレビュアーを起動 kiro-cli chat --agent code-reviewer "src/features/auth/ をレビューして"
# エージェント一覧 kiro-cli agents list
大規模プロジェクト(レガシー移行など)では、階層的な進行管理が有効です。
Phase (大分類: プロジェクトの大きな区切り)
└── Stage (中分類: 目的別の作業単位)
└── SubStage (小分類: 具体的なタスク群)
└── Feature (実装単位: PR単位)
Phase 1: 現状分析
├── Stage 1: 技術スタック調査
│ ├── SubStage 1: フレームワーク依存の洗い出し
│ └── SubStage 2: 外部連携の特定
└── Stage 2: 移行リスク評価
└── SubStage 1: リスク一覧作成
Phase 2: 設計 ├── Stage 1: アーキテクチャ設計 └── Stage 2: データ移行設計
<!-- .kiro/steering/current-stage.md --> # Current Stage
## 現在位置 - **Phase**: 1 - 現状分析 - **Stage**: 1 - 技術スタック調査 - **SubStage**: 2 - 外部連携の特定
## 参照先 → docs/project/phases/phase-1-analysis/stages/stage-1-tech-survey/substages/substage-2-integration/
Kiroがドキュメントを効果的に活用するには、AI可読な形式で書くことが重要です。
| 推奨 | 非推奨 |
|---|---|
| Markdown | Excel |
| YAML/JSON | Word |
| PlantUML/Mermaid | PowerPoint? |
--- type: requirements | design | investigation | interview stage: phase-1/stage-2/substage-3 status: draft | review | approved created: 2025-01-15 updated: 2025-01-20 ---
# ドキュメント本文
SubStage?で生成される成果物を分類して管理します。
| ファイル名 | 内容 | 情報源 |
|---|---|---|
| as-is-source.md | ソースコードから読み取った仕様 | コード解析 |
| as-is-behavior.md | 現行動作テストで判明した実態 | 入出力テスト |
| to-be.md | 確定した要件 | 正式ドキュメント |
| interview-notes.md | ヒアリング議事録・部分的要望 | 顧客MTG |
| constraints.md | 制約・前提条件 | 各種 |
詳細は ai-readable-docs.md を参照。
project-root/
├── .kiro/
│ └── specs/ # Kiro自動生成の仕様書
│ ├── user-auth/
│ └── payment/
│
└── docs/
├── project/ # プロジェクト全体管理
│ └── phases/ # フェーズ別進捗
│ ├── phase-1-analysis/
│ │ ├── _phase.md # フェーズ定義
│ │ ├── goals.md # 目標
│ │ ├── decisions.md # 意思決定ログ
│ │ ├── retrospective.md # 振り返り
│ │ └── stages/
│ │ └── stage-1-tech-survey/
│ │ ├── _stage.md
│ │ └── substages/
│ │ └── substage-1-framework/
│ │ ├── _substage.md
│ │ ├── input.md
│ │ ├── output.md
│ │ └── artifacts/
│ ├── phase-2-design/
│ └── phase-3-implementation/
│
└── features/ # 機能別詳細
├── user-auth/
│ ├── README.md
│ ├── changelog.md
│ └── iterations/
└── payment/
# Phase 1: 意思決定ログ
## 2025-01-05: 認証方式の選定
### 背景 MVP フェーズでの認証実装方式を決める必要がある。
### 選択肢 1. NextAuth.js 2. 自前JWT 3. Auth0
### 決定 **NextAuth.js を採用**
### 理由 - Phase 1 では自前実装のコストを避けたい - Phase 2 でソーシャルログイン追加予定 → NextAuth.js なら容易 - Auth0 は MVP にはオーバースペック
### 影響 - src/lib/auth/ に NextAuth 設定を配置 - docs/features/user-auth/README.md を更新
# Phase 1: 振り返り
## 完了日 2025-03-28
## 達成したこと - [x] ユーザー登録・ログイン → 完了 - [x] 商品一覧・詳細 → 完了 - [x] カート機能 → 完了 - [x] 注文処理 → 完了
## うまくいったこと(Keep) - Kiro Specs で要件が明確化され、手戻りが少なかった - Hooks でトラブルシューティング記録が習慣化
## 改善点(Problem) - 途中で要件変更があり、Specs の更新が追いつかなかった
## 次に試すこと(Try) - 要件変更時は即座に Specs を更新する運用ルール
# v0.2: OAuth認証追加
## 実装期間 2025-02-10 〜 2025-02-15
## 対応する Spec - .kiro/specs/user-auth/requirements.md#REQ-002
## 実装内容 - Google OAuth 追加 - GitHub OAuth 追加 - セッション管理の改善
## スキーマ変更 ALTER TABLE users ADD COLUMN oauth_provider VARCHAR(255); ALTER TABLE users ADD COLUMN oauth_id VARCHAR(255);
## Before / After
### Before(v0.1) - メール + パスワードのみ - 離脱率: 35%
### After(v0.2) - メール + パスワード + Google OAuth + GitHub OAuth - 離脱率: 18%(改善)
## 学び - OAuth 追加で離脱率が大幅改善 - NextAuth.js の設計判断が正しかった
| 種類 | パターン | 例 |
|---|---|---|
| フェーズ | phase-{N}-{name}/ | phase-1-analysis/ |
| ステージ | stage-{N}-{name}/ | stage-1-tech-survey/ |
| サブステージ | substage-{N}-{name}/ | substage-1-framework/ |
| イテレーション | 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: 認証方式の選定 |
# Phase {{N}}: {{name}}
## 目的 <!-- このPhaseで達成すべき大目標 -->
## 期間
{{start-date}} 〜 {{end-date}}
## Stages
1. [Stage 1: {{name}}](./stages/stage-1-xxx/_stage.md)
2. [Stage 2: {{name}}](./stages/stage-2-xxx/_stage.md)
## 完了条件 - [ ] 全Stageが完了 - [ ] retrospective.md が記載済み
## 依存関係
- 前提: Phase {{N-1}} 完了
# Stage {{N}}: {{name}}
## 目的 <!-- このStageで達成すべきこと -->
## SubStages
1. [SubStage 1: {{name}}](./substages/substage-1-xxx/_substage.md)
2. [SubStage 2: {{name}}](./substages/substage-2-xxx/_substage.md)
## 遷移条件 | From | To | 条件 | | SubStage 1 | SubStage 2 | output.md 作成済み |
## 完了条件 - [ ] 全SubStageのoutput.mdが作成済み
# SubStage {{N}}: {{name}}
## 目的 <!-- このSubStageで達成すべきこと -->
## インプット
- 前提条件:
- 参照先: ../substage-{{N-1}}-xxx/output.md
## タスク - [ ] - [ ]
## アウトプット - output.md: 発見事項・次への申し送り - artifacts/: 該当する成果物
## 完了条件 - [ ] output.md が作成されている - [ ] 次SubStageのインプットが明確
# {{date}}: {{title}}
## 症状 <!-- どんなエラーが出たか、どんな挙動だったか -->
## 原因 <!-- なぜ起きたのか -->
## 解決方法
### Before // 問題のコード
### After // 修正後のコード
## 学び <!-- 次から気をつけること、横展開すべきこと -->
## 関連 <!-- 関連するドキュメントへのリンク -->
| タイミング | 書く場所 | 自動化 |
|---|---|---|
| エラーを解決したとき | docs/troubleshooting/ | Hooks対応可 |
| PRで指摘を受けたとき | docs/reviews/tags/ | 手動 |
| 新しいライブラリを導入 | docs/libraries/ | 手動 |
| 再利用可能なパターン発見 | docs/patterns/ | 手動 |
| 機能を実装・変更 | docs/features/ | Hooks対応可 |
| SubStage?完了時 | docs/project/phases/.../output.md | 手動 |
| 週末 | docs/learning/ | 手動 |
最初から完璧なドキュメントを書こうとしない。
## 原因 たぶんキャッシュ関連。あとで調べる。
これでいい。書かないよりマシ。後から修正すればいい。
大規模移行では、各Stage完了時に回帰テストを実施することを推奨します。
Phase 2: 移行 └── Stage 1: 基盤移行 → 回帰テスト実施 ✅ └── Stage 2: 機能移行 → 回帰テスト実施 ✅ └── Stage 3: 統合 → 回帰テスト実施 ✅
問題の早期発見と影響範囲の限定ができます。
毎週金曜日に15分:
# YYYY-Www 振り返り
## 今週学んだこと -
## 今週解決した問題 - docs/troubleshooting/xxx
## ドキュメント更新 - [x] troubleshootingに追記した - [ ] 新しいパターンをpatternsに追記した
git clone https://github.com/khayashi4337/SuperKiro.git cd SuperKiro
# プロジェクトにコピー cp -r steering/* YOUR_PROJECT/.kiro/steering/ cp -r hooks/* YOUR_PROJECT/.kiro/hooks/ cp -r docs/* YOUR_PROJECT/docs/
以下のファイルをプロジェクトに合わせて編集:
| ファイル | 内容 |
|---|---|
| steering/project-profile.md | 言語、フレームワーク、チーム規模 |
| steering/coding-standards.md | コーディング規約 |
| steering/review-rules.md | レビューで指摘されがちなこと |
| やりたいこと | 使う機能 |
|---|---|
| プロジェクトの知識を維持 | Steering ディレクトリ |
| 繰り返し作業を自動化 | Hooks |
| 要件→設計→タスクを構造化 | Specs |
| 外部ツール連携を効率化 | Powers(lazy load) |
| 特定タスクの専門家を呼ぶ | カスタムエージェント(CLI) |
| 大規模プロジェクトの進行管理 | Phase/Stage/SubStage?階層 |
| AI可読なドキュメント作成 | YAML frontmatter + Markdown |
Claude Code の良さを活かしつつ、Kiro の強力な機能を組み合わせることで、「調べ直し」「聞き直し」のない開発体験を実現できます。