| name | github-issue-manager |
| description | GitHub Issueを`gh` CLIで管理し、タスク仕様書との双方向連携・ローカル同期・スコアリング選択を実現するスキル。
Anchors:
• task-specification-creator / 適用: メタ情報・Issue構造 / 目的: フォーマット互換性確保
• gh CLI (GitHub CLI) / 適用: Issue操作 / 目的: create/list/edit/close
• Progressive Disclosure / 適用: 必要時のみリソース読み込み / 目的: コンテキスト効率化
• Idempotent Scheduled Automation / 適用: monthly branch + open PR title prefix / 目的: cron 重複起票防止
Trigger:
GitHub Issue管理, Issue作成, Issue選択, 最適タスク選定, タスク仕様書→Issue化,
reminder Issue 自動起票, post-release observation, scheduled issue automation,
D+7 / D+30 reminder, idempotent issue creation,
monthly idempotent PR, [auto-summary] prefix, auto/post-release-30day-summary,
closed issue reference, Refs-only pattern,
governance drift, branch protection drift, enforce_admins drift, lock_branch drift,
required_status_checks drift, separate-PR remediation, O-2 同 PR 修正禁止
Use when managing GitHub issues, creating issues from task specs, or selecting optimal next task.
|
| tags | ["github","issue","task-management","gh-cli"] |
| allowed-tools | ["Read","Write","Edit","Bash","Glob","Grep","Task"] |
GitHub Issue Manager
概要
GitHub Issueをgh CLIで操作し、タスク仕様書との双方向連携を実現するスキル。
ローカル同期(docs/30-workflows/issues/)により高速検索が可能。
モード一覧
| モード | 用途 | スクリプト |
|---|
| sync | GitHub↔ローカル同期 | sync_issues.js |
| sync-new | 未同期仕様書→Issue一括作成 | sync_new_issues.js |
| create | 仕様書→Issue作成 | create_issue.js |
| select | 最適Issue選択 | select_issue.js |
| list | Issue一覧(フィルタ対応) | list_issues.js |
| update | Issue更新 | update_issue.js |
| close | Issueクローズ | close_issue.js |
| relink | Issue↔仕様書再リンク | relink_issues.js |
| label | 全Issueにラベル一括付与 | label_all_issues.js |
Part 1: クイックスタート
初期セットアップ(初回のみ)
node .claude/skills/github-issue-manager/scripts/init_labels.js
node .claude/skills/github-issue-manager/scripts/sync_issues.js
基本ワークフロー
1. /task-specification-creator で仕様書作成
→ docs/30-workflows/unassigned-task/task-xxx.md
↓
2. 【自動】Claude Code Hookにより自動Issue作成/更新
→ GitHub Issue作成 + ラベル自動付与
→ issue_number が仕様書に自動書き戻し
↓
3. 仕様書編集 → 自動でGitHub Issue更新
↓
4. 最適Issue選択: node scripts/select_issue.js
→ スコア上位5件を表示、推奨理由付き
↓
5. 選択後、実装開始
双方向同期
タスク仕様書(docs/30-workflows/unassigned-task/task-*.md)とGitHub Issueが双方向に連動。
仕様書 → GitHub(自動)
仕様書作成/編集
↓ Claude Code Hook
GitHub Issue 作成/更新
↓
issue_number を仕様書に書き戻し
GitHub → 仕様書(手動)
node .claude/skills/github-issue-manager/scripts/sync_issues.js
自動Issue同期(Claude Code Hook)
docs/30-workflows/unassigned-task/task-*.md へのWrite/Edit操作時に自動でIssue作成/更新。
- フックファイル:
.claude/hooks/auto-create-issue.sh
- 設定場所:
.claude/settings.local.json の PostToolUse
- 動作:
issue_number なし → Issue新規作成、番号を書き戻し
issue_number あり → 既存Issue更新
自動Issueクローズ(削除時)
仕様書ファイルが削除されると、対応するIssueが自動でクローズされる。
- フックファイル:
.claude/hooks/pre-delete-spec.sh (PreToolUse)
.claude/hooks/post-delete-spec.sh (PostToolUse)
- 動作:
- 削除前:
issue_numberをキャッシュ
- 削除後: Issueをクローズ、
status:completedラベル付与
Part 2: コマンドリファレンス
sync: GitHub↔ローカル同期
node .claude/skills/github-issue-manager/scripts/sync_issues.js
node .claude/skills/github-issue-manager/scripts/sync_issues.js --all
node .claude/skills/github-issue-manager/scripts/sync_issues.js --push
sync-new: 未同期仕様書→Issue一括作成
issue_numberを持たないタスク仕様書を検出し、GitHub Issueを一括作成。
PR作成前やgit merge/stash後に実行推奨(Claude Code Hookが発火しないケース対応)。
node .claude/skills/github-issue-manager/scripts/sync_new_issues.js
node .claude/skills/github-issue-manager/scripts/sync_new_issues.js --dry-run
node .claude/skills/github-issue-manager/scripts/sync_new_issues.js --check
ユースケース:
git merge main 後に新規仕様書が含まれていた場合
git stash pop で仕様書ファイルが復元された場合
- PR作成前のIssue同期確認
create: Issue作成
node .claude/skills/github-issue-manager/scripts/create_issue.js --spec <path>
node .claude/skills/github-issue-manager/scripts/create_issue.js --all
select: 最適Issue選択
node .claude/skills/github-issue-manager/scripts/select_issue.js
node .claude/skills/github-issue-manager/scripts/select_issue.js --priority high
node .claude/skills/github-issue-manager/scripts/select_issue.js --category bugfix
node .claude/skills/github-issue-manager/scripts/select_issue.js --remote
list: Issue一覧
node .claude/skills/github-issue-manager/scripts/list_issues.js
node .claude/skills/github-issue-manager/scripts/list_issues.js --priority high --status unassigned
node .claude/skills/github-issue-manager/scripts/list_issues.js --json
update: Issue更新
node .claude/skills/github-issue-manager/scripts/update_issue.js -n 123 --status in-progress
node .claude/skills/github-issue-manager/scripts/update_issue.js -n 123 --priority high
node .claude/skills/github-issue-manager/scripts/update_issue.js -n 123 --close
close: Issueクローズ
node .claude/skills/github-issue-manager/scripts/close_issue.js --number 123
node .claude/skills/github-issue-manager/scripts/close_issue.js --spec docs/30-workflows/unassigned-task/task-xxx.md
node .claude/skills/github-issue-manager/scripts/close_issue.js --number 123 --reason "完了しました"
relink: Issue↔仕様書再リンク
既存のIssueと仕様書ファイルをタスクIDでマッチングし、issue_numberを書き戻す。
node .claude/skills/github-issue-manager/scripts/relink_issues.js
node .claude/skills/github-issue-manager/scripts/relink_issues.js --dry-run
cleanup: 孤立Issue検出・クローズ
仕様書ファイルが削除されたが、Issueが残っている「孤立Issue」を検出し、クローズする。
手動削除時など、Claude Code Hook が発火しない場合に使用。
node .claude/skills/github-issue-manager/scripts/cleanup_orphaned.js
node .claude/skills/github-issue-manager/scripts/cleanup_orphaned.js --close
node .claude/skills/github-issue-manager/scripts/cleanup_orphaned.js --dry-run
label: 全Issueにラベル一括付与
オープン中の全Issueにメタ情報(優先度・規模・分類・ステータス)からラベルを付与。
node .claude/skills/github-issue-manager/scripts/label_all_issues.js
node .claude/skills/github-issue-manager/scripts/label_all_issues.js --dry-run
node .claude/skills/github-issue-manager/scripts/label_all_issues.js --force
注意: Issue作成時(create_issue.js)は自動でラベル付与されます。このコマンドは既存Issueの一括ラベル付与に使用。
spec_created: CLOSED Issue → 仕様書化フロー
実装を伴わない設計・仕様策定タスクが CLOSED になった後、正式な仕様書として記録する手順。
フロー
1. CLOSED Issue を確認
gh issue view <issue_number> # Issue の内容・AC を参照
gh issue view <issue_number> --json # JSON形式で全フィールド取得
2. タスク仕様書を作成(task-specification-creator スキル)
docs/30-workflows/<task-name>/index.md # インデックス
docs/30-workflows/<task-name>/artifacts.json # status: spec_created
3. artifacts.json の status を spec_created にする
artifacts.json の "metadata.taskType": "docs-only", "visualEvidence": "NON_VISUAL"
4. Issue 本文に仕様書パスを追記する
gh issue comment <issue_number> --body "仕様書: docs/30-workflows/<task-name>/index.md"
5. 仕様書の YAML に issue_number を記録する
issue_number: <issue_number>
status: spec_created # completed ではない(実装未着手)
下流タスクからの upstream 参照
下流タスクが上流の spec_created Issue を dependencies.upstream で参照する際の標準手順:
gh issue view <upstream_issue_number>
gh issue view <upstream_issue_number> --json body | jq '.body'
cat docs/30-workflows/<upstream-task-name>/artifacts.json | jq '.task_path'
ls docs/30-workflows/<upstream-task-name>/outputs/
依存関係記述例(下流タスクの index.md):
dependencies:
upstream:
- issue_number: 15
task_name: ut-12-cloudflare-r2-storage
status: spec_created
artifacts_path: docs/30-workflows/ut-12-cloudflare-r2-storage/artifacts.json
Execution Follow-up Issue パターン(runtime evidence 実行)
親タスクの outputs / artifacts に NOT_EXECUTED placeholder / pending_user_approval /
runtime evidence pending が残存したまま CLOSED された場合、execution-only 子 Issue を
OPEN で別途発行 する(親が CLOSED でも独立ライフサイクル)。
子 Issue 規約(要約)
| 項目 | 値 |
|---|
| タイトル | [exec] <parent-task-id>: runtime evidence execution |
| Body 必須 | 親 Issue 番号 / placeholder 具体 list / 実行コマンド / user approval gate / 完了時の親 body 更新手順 |
| クローズ条件 | placeholder 0 件 + 親 outputs/artifacts に実 evidence が反映済み |
Blocker 行双方向更新
親タスクが下流(例: 09c)をブロックする場合、下流の dependencies.upstream[].blocker: true
は 実測完了時にのみ削除(仕様書 CLOSED / Issue CLOSED では削除しない)。
削除後は gh issue comment で親・下流両方に双方向リンクを残す。
D1 schema parity 差分時の自動派生
staging vs production の D1 schema diff 検出時、
docs/30-workflows/unassigned-task/task-d1-prod-parity-followup-<NNN>.md を自動生成する。
既存の Claude Code Hook(.claude/hooks/auto-create-issue.sh)が Write を検知して
GitHub Issue を自動発行するため、追加 hook 実装は不要。
詳細手順
判定条件・テンプレ・コマンド一式は references/d1-parity-followup.md を参照。
Part 3: スコアリング&ラベル
スコアリング計算
| 要素 | 値 | スコア |
|---|
| 優先度 | 高/中/低 | +100/+50/+25 |
| 規模 | 小/中/大 | +30/+20/+10 |
| 依存関係 | 満足/未満足 | +50/-100 |
| 経過日数 | 1日あたり | +1 (max 30) |
自動付与ラベル
| カテゴリ | ラベル例 |
|---|
| 優先度 | priority:high, priority:medium, priority:low |
| 規模 | scale:large, scale:medium, scale:small |
| 分類 | type:requirements, type:improvement, type:bugfix, type:refactoring, type:security, type:performance |
| ステータス | status:unassigned, status:in-progress, status:completed |
Part 4: リソースマップ
scripts/
| Script | 用途 |
|---|
sync_issues.js | GitHub↔ローカル同期 |
sync_new_issues.js | 未同期仕様書→Issue一括作成 |
create_issue.js | 仕様書→Issue作成 |
select_issue.js | 最適Issue選択+スコアリング |
list_issues.js | Issue一覧(ローカル優先) |
update_issue.js | Issue更新(ローカル+GitHub) |
close_issue.js | Issueクローズ |
relink_issues.js | Issue↔仕様書再リンク |
cleanup_orphaned.js | 孤立Issue検出・クローズ |
label_all_issues.js | 全Issueラベル一括付与 |
init_labels.js | ラベル初期化 |
utils.js | 共通ユーティリティ |
log_usage.js | 使用ログ記録 |
agents/
| Agent | 用途 |
|---|
select-optimal-issue.md | 最適Issue推奨・理由説明 |
assets/
| Asset | 用途 |
|---|
issue-template.md | Issueボディテンプレート |
references/
| Reference | 用途 |
|---|
patterns.md | 成功・失敗パターン集 |
d1-parity-followup.md | Execution follow-up Issue / D1 parity 連携 / blocker 双方向更新の正本 |
scheduled-reminder-issue-pattern.md | GitHub Actions schedule + gh CLI による idempotent reminder Issue 自動起票パターン |
scheduled-pr-idempotency.md | 月次冪等 scheduled PR 自動化(branch 命名 + title prefix + open PR 検知 silent skip) |
closed-issue-reference-pattern.md | CLOSED Issue を Refs #XXX のみで後続 PR から参照する正本パターン(Closes / Fixes 禁止、再オープン禁止) |
governance-drift-issue-template.md | branch protection drift(enforce_admins / lock_branch / required_status_checks.contexts 等)検出時の別 Issue 起票テンプレ(同 PR 修正禁止 / O-2 運用ルール正本・stage-3-impl 3c 由来) |
メタ情報構造(YAML形式)
task_id: FR-011
task_name: ファイルタイプアイコン表示
category: 改善
target_feature: FileSelectorPanel
priority: 高
scale: 中規模
status: 未実施
source_phase: Phase 11
created_date: 2026-01-21
dependencies: []
解析: YAML優先、Markdownテーブルはフォールバック