{"id":47791948,"url":"https://github.com/masuidrive/pdh","last_synced_at":"2026-04-03T15:48:38.058Z","repository":{"id":344552656,"uuid":"1182174978","full_name":"masuidrive/pdh","owner":"masuidrive","description":"Product Delivery Hierarchy - Epic/Ticket workflow for coding agents","archived":false,"fork":false,"pushed_at":"2026-04-01T15:25:13.000Z","size":270,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-01T16:09:23.046Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/masuidrive.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-15T06:20:44.000Z","updated_at":"2026-04-01T15:25:16.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/masuidrive/pdh","commit_stats":null,"previous_names":["masuidrive/pdh"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/masuidrive/pdh","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masuidrive%2Fpdh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masuidrive%2Fpdh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masuidrive%2Fpdh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masuidrive%2Fpdh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/masuidrive","download_url":"https://codeload.github.com/masuidrive/pdh/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/masuidrive%2Fpdh/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31360840,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-03T15:19:21.178Z","status":"ssl_error","status_checked_at":"2026-04-03T15:19:20.670Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-03T15:48:37.563Z","updated_at":"2026-04-03T15:48:38.047Z","avatar_url":"https://github.com/masuidrive.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"![PDH flow](pdh-header.png)\n\n# PDH — Product Delivery Hierarchy\n\nProduct Brief / Epic / Ticket の 3 層で、**なぜ作るか**・**何を作るか**・**いま何をやるか** を構造化する仕組み。\n\n人間と coding agent（Claude Code 等）の両方が読み、同じ文脈の中でプロダクトの方向性から日々の実装作業までを追跡する。\n\n## 特徴\n\n- **3 層構造**: Product Brief（why）→ Epic（what）→ Ticket（how）\n- **Coding agent 対応**: Agent が読んで判断・実装できるように設計\n- **Git ベース**: すべて Markdown ファイル。特別なツールは不要\n- **ticket.sh 連携**: [ticket.sh](https://github.com/masuidrive/ticket.sh) でチケットのライフサイクルを管理\n\n## セットアップ\n\nClaude Code にこのリポジトリの内容を読ませて、自分のプロジェクトに PDH を導入できる。\n\n### 方法 1: Claude Code に設定させる\n\nプロジェクトのルートで Claude Code を起動し、以下のように指示する:\n\n```\nhttps://github.com/masuidrive/pdh の README を読んで、このプロジェクトに PDH を導入して。\n```\n\nClaude Code が以下を自動で行う:\n1. ticket.sh のダウンロードと初期化\n2. PDH ドキュメントの配置\n3. スキル・CLAUDE.md・ticket-config の設定\n4. Product Brief の雛形作成\n\n### 方法 2: 手動でセットアップ\n\n#### 0. PDH リポジトリを clone する\n\n```bash\ngit clone https://github.com/masuidrive/pdh.git tmp/pdh\n```\n\n以降のステップでは `tmp/pdh/` のファイルをコピー元として使う。\n\n#### 1. ticket.sh を導入する\n\n```bash\n# プロジェクトのルートで\ngit init  # 既存リポジトリなら不要\n\n# ticket.sh をダウンロード・初期化\ncurl -sL https://raw.githubusercontent.com/masuidrive/ticket.sh/main/ticket.sh -o ticket.sh\nchmod +x ticket.sh\nbash ticket.sh init\n\n# epics ディレクトリを作成\nmkdir -p epics epics/done\n```\n\n#### 2. ファイルを配置する\n\n以下のファイルを `tmp/pdh/` からプロジェクトにコピーする。\n**すでにファイルが存在する場合はコピーせず、ステップ 3 のアップデート手順に従う。**\n\n| コピー元 | コピー先 | 用途 |\n|---|---|---|\n| `tmp/pdh/docs/product-delivery-hierarchy.md` | `docs/product-delivery-hierarchy.md` | PDH 運用ルール・テンプレート |\n| `tmp/pdh/skills/pdh-dev/SKILL.md` | `.claude/skills/pdh-dev/SKILL.md` | PDH ワークフロースキル |\n| `tmp/pdh/skills/epic-creator/SKILL.md` | `.claude/skills/epic-creator/SKILL.md` | Epic 作成スキル |\n| `tmp/pdh/skills/tmux-director/SKILL.md` | `.claude/skills/tmux-director/SKILL.md` | tmux Director スキル |\n| `tmp/pdh/skills/pdh-update/SKILL.md` | `.claude/skills/pdh-update/SKILL.md` | PDH アップデートスキル |\n| `tmp/pdh/templates/CLAUDE.md` | `CLAUDE.md` | Agent 向けルール |\n| `tmp/pdh/templates/.ticket-config.yaml` | `.ticket-config.yaml` | ticket.sh 設定 |\n| `tmp/pdh/templates/test-all.sh` | `scripts/test-all.sh` | テスト一括実行スクリプト |\n| `tmp/pdh/templates/product-brief.md` | `product-brief.md` | Product Brief テンプレート |\n\nコピー時に、各ファイル末尾の `based on` 行の `XXXXXXX` を `tmp/pdh` の HEAD commit ID（7 桁）に置換する。\n\n```bash\nCOMMIT_ID=$(cd tmp/pdh \u0026\u0026 git rev-parse --short=7 HEAD)\n# 例: sed -i '' \"s/XXXXXXX/$COMMIT_ID/g\" CLAUDE.md\n```\n\n#### 2.5. .claude/settings.json を設定する\n\nAgent Teams を使うために、`.claude/settings.json` に以下を追加する:\n\n```json\n{\n  \"teammateMode\": \"in-process\",\n  \"env\": {\n    \"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS\": \"1\"\n  }\n}\n```\n\n設定後、Claude Code を再起動すると有効になる。\n\n#### 3. 既存ファイルのアップデート\n\nすでにファイルが存在し、末尾に `based on` 行がある場合:\n\n1. PDH リポジトリを clone する（なければ）:\n   ```bash\n   git clone https://github.com/masuidrive/pdh.git tmp/pdh\n   ```\n2. `based on` の URL から旧 commit ID を特定する\n3. `tmp/pdh` で旧 commit ID と最新の間のテンプレート差分を取得する:\n   ```bash\n   cd tmp/pdh \u0026\u0026 git diff \u003c旧commit-id\u003e HEAD -- \u003cテンプレートファイルパス\u003e\n   ```\n4. 差分をカスタマイズ済みファイルに反映する（ユーザーの変更を保持しつつ、テンプレートの更新を取り込む）\n5. `based on` 行の commit ID を最新に更新する\n6. 変更点をまとめてユーザに報告する\n7. AskUserQuestion で「既存の Epic や Ticket を新しいフォーマット・ルールに合わせて書き直すか？」を確認する。OK なら `epics/` と `tickets/` のファイルを新テンプレートに従って更新し、commit 前に変更点をユーザに伝えて確認を取る\n8. 後片付け: `rm -rf tmp/pdh`\n\n#### 4. CLAUDE.md をカスタマイズする\n\n- `## ディレクトリ構造` をプロジェクトの実際の構造に書き換える\n- テストコマンド（`uv run pytest`, `npm test` 等）をプロジェクトに合わせる\n- 開発サーバーの起動方法を追記する\n\n#### 5. .ticket-config.yaml をカスタマイズする\n\n設定項目:\n- `default_branch`: メインブランチ名（default: `main`）\n- `branch_prefix`: feature ブランチのプレフィックス（default: `feature/`）\n- `auto_push`: close 時に自動 push するか\n- `default_content`: Ticket テンプレート（Why / What / Acceptance Criteria + 任意: Implementation Notes / Dependencies）\n- `note_content`: 作業メモテンプレート（PD-2〜PD-7 等のセクション）\n\n#### 6. scripts/test-all.sh を作成する\n\n`tmp/pdh/templates/test-all.sh` をコピーし、プロジェクトのテストスイートに合わせてカスタマイズする。\nテンプレート内のコメントアウトされた `run` 行を参考に、プロジェクトの各テストスイートを追加する。\n\n```bash\ncp tmp/pdh/templates/test-all.sh scripts/test-all.sh\nchmod +x scripts/test-all.sh\n# scripts/test-all.sh を編集し、プロジェクトのテストコマンドを追加\n```\n\nこのスクリプトは PD-C-6（実装完了時）と PD-C-9（完了検証）で実行される。\n`--parallel` フラグで並列実行が可能。\n\n#### 7. Product Brief を書く\n\n- **ファイルがない場合**: `tmp/pdh/templates/product-brief.md` をコピーし、`based on` 行の commit ID を置換する。内容を埋めるようユーザに促す\n- **ファイルがある場合**: テンプレートと見比べて、新しいセクションが増えていたら追記するようユーザに促す\n\nPDH の全判断は Product Brief を基準にするため、Background / Who / Problem / Solution / Constraints / Done のセクションが十分に記述されている必要がある。\n\n#### 8. 後片付け\n\n```bash\nrm -rf tmp/pdh\n```\n\n## ワークフロー\n\n```\nProduct Brief を書く\n    ↓\nEpic を作成 → レビュー → 確定\n    ↓\nEpic から Ticket を切り出す\n    ↓\nTicket ごとに:\n    調査 → 計画 → レビュー → 実装 → 品質検証 → 完了\n    ↓\n全 Ticket 完了 → Epic クローズ判定\n```\n\n詳細は `docs/product-delivery-hierarchy.md` と `skills/pdh-dev/SKILL.md` を参照。\n\n## tmux Director\n\ntmux 上で複数の Claude Code セッションを走らせている場合に、別 window の Claude Code を監督・指示するためのスキル。\n\n- **Director（監督）** として振る舞い、自分ではコードを書かず、別 window の Claude Code に指示を出して作業を監視する\n- PDH ワークフロー（PD-1〜PD-8）の遵守を監視し、逸脱（テスト未実行、E2E 省略、AC 未達等）を検知して是正指示を出す\n- 画面監視は Sonnet Agent（Monitor）をバックグラウンドで起動して委任し、Director のコンテキストを節約する\n\nClaude Code で `tmux-director` と入力すると起動する。\n\n## ファイル構成\n\n導入後のプロジェクト構造:\n\n```\nproject-root/\n  product-brief.md          ← プロダクトの why（1 つだけ）\n  CLAUDE.md                 ← Agent 向けルール\n  ticket.sh                 ← チケット管理ツール\n  .ticket-config.yaml       ← ticket.sh 設定\n  docs/\n    product-delivery-hierarchy.md  ← PDH 運用ルール・テンプレート\n  epics/\n    YYMMDD-hhmmss-slug.md   ← Epic ファイル\n    done/                   ← 完了した Epic\n  tickets/\n    YYMMDD-hhmmss-slug.md   ← Ticket ファイル（ticket.sh が管理）\n    done/                   ← 完了した Ticket\n  .claude/\n    skills/\n      pdh-dev/SKILL.md      ← PDH ワークフロースキル\n      epic-creator/SKILL.md  ← Epic 作成スキル\n      tmux-director/SKILL.md ← tmux Director スキル\n      pdh-update/SKILL.md    ← PDH アップデートスキル\n```\n\n## このリポジトリの構成\n\n```\npdh/\n  README.md                          ← このファイル\n  docs/\n    product-delivery-hierarchy.md    ← PDH 本体ドキュメント\n  skills/\n    pdh-dev/SKILL.md                 ← Claude Code 用 PDH スキル\n    tmux-director/SKILL.md           ← tmux Director スキル\n    pdh-update/SKILL.md              ← PDH アップデートスキル\n  templates/\n    product-brief.md                 ← Product Brief テンプレート\n    CLAUDE.md                        ← CLAUDE.md テンプレート\n    test-all.sh                      ← テスト一括実行テンプレート\n    .ticket-config.yaml              ← ticket.sh 設定テンプレート\n```\n\n## 関連ツール\n\n- [ticket.sh](https://github.com/masuidrive/ticket.sh) — Git ベースのチケット管理\n- [Claude Code](https://claude.ai/claude-code) — Anthropic の CLI ツール\n\n## License\n\nApache License 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmasuidrive%2Fpdh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmasuidrive%2Fpdh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmasuidrive%2Fpdh/lists"}