PM エージェント作ってみた

目次

はじめに

目的と背景

最近「AI秘書」という言葉を耳にしました。スケジュール管理やメールの要約、返信などの身の回りの雑務を代替してくれるAIエージェントです。自分自身もそういった記事に感化され「AI秘書を作ってみよう!」とは思ったものの、自分が現時点で本当に必要としているのかと考えると少し違和感を感じました。現状私の課題は複数のプロジェクトやタスクが同時に進行している時、それぞれの進捗や課題を十分に把握しきれず、効率的な開発や課題解決ができていないことにありました。そこで今回は、「AI秘書」という概念だけを取り入れ、機能としては複数プロジェクトの進捗・詰まり・次アクションを整理するといった 個人PMエージェント を作ることにしました。

試したことの概要

Privateなプロジェクト統括リポジトリを中心に複数のプロジェクトの進捗・ボトルネック・次アクションを管理し、タスク着手前にそれらをまとめたレポートを生成するPMエージェントの開発を試みた。

動作の概要は以下である。

  • 各プロジェクトの目標や現状、作業ログ、タスク、コラボレーター情報をMarkdownで管理し、PMエージェントはそれらを読み取って、日次のPMレポートを生成する。
  • 関連する作業リポジトリのGit情報も収集し、実際にどのプロジェクトで作業が進んでいるのかを把握できるようにする。

今回のMVPでは、外部サービス連携は行わない。Slack、Google Calendar、GitHub Issues、Notionなどとの連携は将来的な拡張とし、まずはMarkdown、Git、LLM、JSON Schemaを使って、再現しやすい最小構成で試行する。

最終的には、以下の2種類の出力を生成することを目指す。

  • 自分用のPMレポート
  • 作業レポジトリのIssue案

環境設定

使用したツールとバージョン

ツール用途バージョン目安
Node.jsCLI実行環境v24 LTS 系
TypeScript実装言語v6 系
npmパッケージ管理Node.js同梱
Gitリポジトリ状態の収集任意の安定版
commanderCLIコマンド定義v14 or v15 系
zodOutput Contract / Validationv4 系
gray-matterMarkdown frontmatterの読み取り任意の安定版
Codex / Claude / Gemini APIPMレポート生成任意

初期設定と準備

通常のNode.jsプロジェクトとしてcloneするだけで動作します。

git clone <repo-url>
cd personal-pm-agent
npm install
npm run build
npm run pm-agent -- --help

pm-agentコマンドを直接使いたい場合はnpm linkでパスを通します。GitHub Issue作成まで使う場合はgh auth loginで認証しておく必要があります。


3. 実装手順

understand — リポジトリを理解させる

まずpm-agentに対象リポジトリを読み込ませます。understandはリポジトリ構造・Git履歴・ファイル内容を解析し、Project Brief・Area Map・Capability Map・Dependency Graph・File Summaries・Safety Reportを.pm-agent/に生成します。

npm run pm-agent -- understand ../your-project-repo

一度生成した理解結果はキャッシュされるため、次回以降のmorningbreakdownは再実行コストなしでこれを参照します。リポジトリ構造が大きく変わったときは--refreshで再生成できます。

breakdown — 大きなIssueを分割する

実装エージェントにそのまま投げるには大きすぎるIssueに対してbreakdownを実行します。分割方針・Done When・依存関係・likely filesを含むsubissue案がoutputs/YYYY-MM-DD/breakdowns/に生成されます。

npm run pm-agent -- breakdown personal-pm-agent#1

内容を確認したあと、applyでGitHub Issueとして発行します。

npm run pm-agent -- breakdown apply personal-pm-agent#1

morning / adjust — 作業計画を生成する

morningはフォーム入力なしでその日の作業計画を生成します。Project Brief・Issue Map・前回plan・前回reflection・成果物ログを読んで判断します。

npm run pm-agent -- morning ../progress-ledger

計画が重すぎると感じた場合はadjustで補正できます。補正後はplan.v2.mdのように履歴として残るため、元の計画と比較することもできます。

npm run pm-agent -- adjust --fewer
npm run pm-agent -- adjust --prefer personal-pm-agent

prepare — Task Briefを作る

morningで選ばれたIssueを実装エージェントに渡せるTask Briefに変換します。Goal・Related Files・Reverse Dependencies・Scope・Out of Scope・First Step・Done When・Suggested Testsが含まれます。

npm run pm-agent -- prepare personal-pm-agent#12

出力されたMarkdownをそのままCodexやClaude Codeのプロンプトとして利用します。

log / reflect / issue — 一日の終わりの流れ

log draftでgit diff・最近のcommit・当日のTask Briefからログの下書きを生成し、内容を$EDITORで編集します。整えたログを元にreflectで進捗・未決事項・次の方向性を抽出し、issue proposeでGitHub Issue案まで展開します。承認後はissue applyで発行します。

npm run pm-agent -- log draft personal-pm-agent
npm run pm-agent -- log edit personal-pm-agent
npm run pm-agent -- reflect personal-pm-agent
npm run pm-agent -- issue propose personal-pm-agent
npm run pm-agent -- issue apply personal-pm-agent

4. 結果

実行結果

breakdown apply — GitHub Issueの生成結果

personal-pm-agent#1「VOL2: page menuの操作性を改善する」を親Issueとして作成し、breakdown applyを実行しました。背景・やりたいこと・Done When・Notesが自動で記述されたIssueが作成され、下部には参照subissueとして#2〜#6が紐づいています。

morning — 生成されたPMレポート

morningを実行すると、前日のreflection・Issue状態・Project Briefを読み込み、当日分のPMレポートがoutputs/YYYY-MM-DD/に生成されます。Executive SummaryでIssue全体の状況を要約し、Today’s Focusでその日に着手するIssueと推奨アクションが列挙されます。

成功例と失敗例

動いたこと

breakdown applyでGitHub上のIssue#2〜#6が発行でき、各Issueに背景・Done When・subissueへの参照が自動で含まれることを確認しました。morningについても、前日のreflection・Issue状態・Project Briefを読んでその日の作業計画が生成されることを確認できました。log → reflect → issue proposeの流れも一通り動き、一日の終わりにログを整えることで翌日のmorningが参照する材料が用意されることを確認しました。

制約となったこと

understandの出力品質は対象リポジトリの構造やコメント量に左右されることもわかりました。コメントが少ないリポジトリでは理解結果が粗くなりやすく、morningbreakdownの判断品質に影響が出ます。また、CLI内に自作エディタを実装しようと試みましたが、日本語入力やCommandキーの扱いを中途半端に実装すると機能性の低いエディタになると判断し、vimemacsを用いる方針に切り替えました。


5. まとめ

得られた知見と反省点

PM作業をコマンドの型として固定することで、毎回会話でお願いする必要がなくなるという設計の方向性は確かめられたと感じています。一日の終わりにログを整えるだけで翌日のmorningの入力が用意される導線は、個人開発で継続しやすい運用形態を作るうえで必要な要素だったと考えています。

一方で、単発のIssue分解や計画生成は会話ベースのAIツールでも代替できる部分が少なくありません。pm-agentの価値はそこの単発の賢さではなく、文脈を日をまたいでローカルに残しておく導線を作れたことにあると考えています。

今後の改善点

VOL2ではpage menuの操作性改善を進め、CLI上でより素早く状態を切り替えられるようにする予定です。その他、GitHubネイティブsubissue API対応、実装エージェントへの自動dispatch、HTML dashboardやCLI内エディタの整理も今後の改善タスクとしています。


6. 付録

参考リンク

CTA
  • URLをコピーしました!
  • URLをコピーしました!
この記事を書いた人
目次