Agentic Project Management入門——Claude Code・Cursor・Copilotを束ねるOSSフレームワーク
LLMのコンテキスト制限を克服するOSSフレームワーク「Agentic Project Management(APM)」を使い、複数のAIコーディングツールをプロジェクトメンバーとして統合管理する方法をハンズオンで解説します。

はじめに
Claude Code、Cursor、GitHub Copilot——いまやAIコーディングツールを1つだけ使っているエンジニアのほうが少数派かもしれません。しかし、複数ツールを併用すると新たな課題が生まれます。
| 課題 | 具体例 |
|---|---|
| コンテキストの分断 | Cursorで議論した設計方針を、Claude Codeが知らない |
| セッションの寿命 | 長い実装でコンテキストウィンドウが溢れ、途中から精度が落ちる |
| 進捗の散逸 | どのツールでどこまで終わったのか把握できない |
「AIエージェントを"チーム"として管理する仕組みがほしい」——その答えが Agentic Project Management(APM) です。
GitHub上で2,000スター超を獲得しているOSSフレームワークで、Claude Code・Cursor・GitHub Copilotなど10以上のAIツールをプロジェクトメンバーとして束ねます。本記事では、架空の業務システム「KanriPro」を題材に、APMの導入から実際のタスク実行までをハンズオンで体験します。
この記事を読むとできるようになること:
- APMをプロジェクトに導入し、複数のAIツールを統合管理できる
- セットアップフェーズでプロジェクトの全体像をAIに正しく伝えられる
- タスク実行フェーズでエージェントに役割を分担させて並列開発できる
APMとは何か
APMは「LLMのコンテキストウィンドウ制限」という根本的な課題を解決するために生まれたフレームワークです。
核心的な設計思想
APMの核心は「コンテキストをLLMのメモリではなく、プロジェクトのファイルに保存する」というアプローチです。
| 要素 | 従来 | APM |
|---|---|---|
| プロジェクト状態 | LLMのコンテキストウィンドウ内 | .apm/ ディレクトリのMarkdownファイル |
| タスク管理 | チャット内の口頭指示 | 構造化されたタスクリスト |
| エージェントの記憶 | セッション終了で消失 | ファイルに永続化・次セッションで復元 |
| マルチツール連携 | ツールごとに独立 | 共通のプロジェクトファイルを参照 |
4つのエージェントロール
APMでは4種類の専門化されたエージェントがプロジェクトを進めます。
対応AIツール
APMは各ツールのネイティブなコマンド構造に統合されます。
| AIツール | ディレクトリ | 形式 |
|---|---|---|
| Claude Code | .claude/commands | Markdown |
| Cursor | .cursor/commands | Markdown |
| GitHub Copilot | .github/prompts | Markdown |
| Windsurf | .windsurf/workflows | Markdown |
| Roo Code | .roo/commands | Markdown |
つまり、どのツールからでも同じAPMコマンドを呼び出せるのがポイントです。
事前準備
APM CLIのインストール
# グローバルインストール
npm install -g agentic-pm
# またはプロジェクトローカル
yarn add -D agentic-pm
動作確認
apm --version
# v0.5.4
ハンズオン 1: APMをプロジェクトに導入する
架空の業務システム「KanriPro」にAPMを導入します。KanriProはNext.js + Firestore + TypeScriptで構築された営業・経理管理システムです。
プロジェクトの初期化
cd kanri-pro
apm init
対話形式でAIアシスタントの選択を求められます。
? Select your AI assistant:
❯ Claude Code
Cursor
GitHub Copilot
Windsurf
Roo Code
(more...)
ここでは Claude Code を選択します。すると、以下のファイルが自動生成されます。
kanri-pro/
├── .apm/ # APMのガイドとアセット
│ ├── guides/
│ │ ├── 01-introduction.md
│ │ ├── 02-getting-started.md
│ │ ├── 03-agent-types.md
│ │ ├── 04-workflow-overview.md
│ │ └── ...
│ └── assets/
├── .claude/
│ └── commands/ # Claude Code用のスラッシュコマンド
│ ├── apm-1-initiate-setup.md
│ ├── apm-2-execute-task.md
│ └── ...
└── (既存のプロジェクトファイル)
複数ツールを使う場合は、初期化時に複数選択するか、あとから追加できます。
# Cursorのコマンドも追加
apm init --assistant cursor
これで .cursor/commands/ にも同じAPMコマンドが生成されます。どのツールからも同じワークフローで作業できるようになりました。
ハンズオン 2: セットアップフェーズ——プロジェクトの全体像をAIに伝える
APMのワークフローは「セットアップフェーズ」と「タスク実行フェーズ」の2段階で構成されます。まずはセットアップフェーズから始めます。
セットアップの開始
Claude Codeを起動し、スラッシュコマンドを実行します。
/apm-1-initiate-setup
APMのプロジェクトマネージャーエージェントが起動し、プロジェクトの調査を開始します。
プロジェクト情報の入力
PMエージェントが質問してくるので、プロジェクトの情報を伝えます。
PMエージェント: プロジェクトの概要を教えてください。
あなた: KanriProは中小企業向けの営業・経理管理システムです。
技術スタック:
- Next.js 15 App Router + TypeScript
- Firestore(データベース)
- Tailwind CSS(スタイリング)
- GitHub Issues(タスク管理)
現在のモジュール構成:
- 営業管理: 顧客管理、案件管理、見積作成
- 経理: 請求書管理、入金管理
- 帳票: PDF出力
次のスプリントで追加する機能:
- 営業管理: FAX送信、地図マッピング、承認ワークフロー
- 経理: インボイス対応、小口現金、自動仕訳
- 在庫管理: CTI連携(新規モジュール)
PMエージェントはこの情報をもとに .apm/ ディレクトリにプロジェクト定義ファイルを生成します。
生成されるファイル
.apm/
├── project-definition.md # プロジェクト概要、技術スタック
├── task-list.md # 構造化されたタスクリスト
├── architecture.md # アーキテクチャの理解
└── context/
├── current-sprint.md # 現在のスプリント情報
└── decisions.md # 技術的な意思決定の記録
ここがAPMの真価です。これらのファイルは、コンテキストウィンドウが溢れて新しいセッションを開始しても、次のセッションでファイルを読み込むだけでプロジェクトの全文脈を復元できます。
ハンズオン 3: タスク実行フェーズ——エージェントにタスクを委譲する
セットアップが完了したら、タスク実行フェーズに進みます。
タスクの実行
/apm-2-execute-task
PMエージェントがタスクリストから次のタスクを選び、適切なエージェントに委譲します。
具体例: 経理モジュールのインボイス対応
PMエージェント: 次のタスクは「KP-101: インボイス対応(仕入先マスタ拡張)」です。
デベロッパーエージェントに委譲します。
デベロッパーエージェント:
.apm/project-definition.md と .apm/architecture.md を確認しました。
Next.js App Router + Firestore + TypeScript で実装します。
以下のファイルを作成・修正します:
- src/types/supplier.ts(型定義の拡張)
- src/app/accounting/suppliers/page.tsx(一覧画面)
- src/app/accounting/suppliers/actions.ts(Server Actions)
デベロッパーエージェントは .apm/ のファイルを参照するため、セットアップフェーズで共有した「Firestoreを使う」「Server Actionsで書き込む」といったプロジェクトルールを正確に守ります。
コンテキストが溢れたときの引き継ぎ
長時間の開発でコンテキストウィンドウが限界に近づいたら、新しいセッションを開始します。
# 新しいClaude Codeセッション
claude
# タスク実行を再開
/apm-2-execute-task
PMエージェントは .apm/task-list.md を読んで「どこまで終わったか」を把握し、次のタスクから再開します。チャット履歴が消えても、プロジェクトの文脈は完全に保持されています。
ハンズオン 4: マルチツール運用——Claude CodeとCursorを同時に使う
APMの最大の強みは、異なるAIツールが同じプロジェクト状態を共有できることです。
使い分けの戦略
実践例: 経理モジュールの並列開発
# ターミナル1: Claude Codeでバックエンド
claude
> /apm-2-execute-task
> KP-105(自動仕訳生成ロジック)のServer Actionsと
> Firestoreクエリを実装して
# ターミナル2: CursorでUI
# Cursorのコマンドパレットから
> /apm-2-execute-task
> KP-103(支払一覧画面)のUIコンポーネントを実装して
両方のツールが .apm/task-list.md を更新するため、Claude Codeで完了したタスクをCursor側でも把握でき、その逆も同様です。
APMとClaude Codeエージェントチームの使い分け
既存記事で紹介したClaude Codeのエージェントチーム機能とAPMは、競合ではなく補完関係にあります。
| 比較項目 | Claude Code エージェントチーム | APM |
|---|---|---|
| スコープ | Claude Code単体 | 複数ツール横断 |
| コンテキスト管理 | セッション内で完結 | ファイルに永続化 |
| 適した場面 | 1セッションで完結する並列実装 | 複数日にまたがるプロジェクト |
| セットアップ | 環境変数1つ | apm init + セットアップフェーズ |
| 学習コスト | 低い | 中程度 |
おすすめの組み合わせ:
APMで全体の進行管理を行い、個別バッチの並列実装にはエージェントチームを使う——このハイブリッド構成が現時点での最適解です。
Tips・注意点
トークン消費を抑えるコツ
| コツ | 説明 |
|---|---|
| セットアップフェーズを丁寧に | 最初にプロジェクト情報を正確に伝えるほど、タスク実行時の手戻りが減る |
| タスクの粒度を適切に | 「経理モジュール全体を作って」ではなく、機能単位に分解する |
.apm/ ファイルを手動で補足 | AIが生成したファイルに、人間の知見(設計判断の理由など)を追記する |
注意点
- APMはフレームワークであり、AIモデルではない。あくまでプロジェクト管理の構造を提供するものです
.apm/ディレクトリはGitにコミットすることを推奨。チームメンバーもAIの文脈を共有できます- セットアップフェーズを飛ばさない。ここを省略すると、タスク実行フェーズの精度が大幅に低下します
- ライセンスはMPL-2.0です。商用利用可能ですが、APMのコアファイルを改変した場合はその部分の公開が必要です
まとめ
| ポイント | 内容 |
|---|---|
| APMの核心 | コンテキストをLLMのメモリではなくファイルに永続化する |
| 2つのフェーズ | セットアップ(プロジェクト理解)→ タスク実行(エージェント委譲) |
| マルチツール対応 | Claude Code・Cursor・Copilotなど10以上のツールで同じ状態を共有 |
| エージェントチームとの併用 | APMで全体管理、エージェントチームで並列実装が最適解 |
「コンテキストが溢れて最初からやり直し」を繰り返しているなら、APMの導入を検討してみてください。apm init ひとつで、AIとの開発体験が大きく変わります。
# まずはここから
npm install -g agentic-pm
cd your-project
apm init
参考リンク: