mit einem Klick
four-keys
DORA Four Keys メトリクスを GitHub CLI で取得・表示
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Menü
DORA Four Keys メトリクスを GitHub CLI で取得・表示
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Basierend auf der SOC-Berufsklassifikation
| name | four-keys |
| description | DORA Four Keys メトリクスを GitHub CLI で取得・表示 |
| allowed-tools | Bash(gh release list:*), Bash(gh pr list:*), Bash(gh api:*), Bash(date:*), Bash(jq:*), Bash(awk:*) |
現在のリポジトリの DORA Four Keys メトリクスを GitHub CLI で取得し、レポートを出力する。
$ARGUMENTS をパースして以下のオプションを認識する。
| 引数 | 説明 | 例 |
|---|---|---|
| 数値のみ | 計測期間(日数) | /four-keys 90 |
--by-user | ユーザーごとの内訳を表示 | /four-keys --by-user |
| 組み合わせ | 両方指定可能 | /four-keys 90 --by-user |
--by-user 指定時は、リポジトリ全体のメトリクスに加えて、ユーザーごとの Lead Time と Review Speed の内訳テーブルを追加表示する以下の手順を順番に実行し、最後にレポートを出力すること。
$ARGUMENTS から数値(日数)と --by-user フラグを抽出するdate コマンドで算出する(ISO 8601 形式)以下の gh コマンドを実行してデータを取得する。
gh release list --json tagName,publishedAt,isPrerelease --limit 100
publishedAt が計測期間内のリリースのみを対象とするisPrerelease: true のものは除外するgh pr list --state merged --json number,title,createdAt,mergedAt,headRefName,labels,author --limit 300 --search "merged:>={開始日}"
mergedAt が計測期間内の PR のみを対象とするgh pr list --state merged --json number,createdAt,mergedAt --limit 300 --search "merged:>={開始日} review:approved"
各 PR のレビュー詳細を取得する(期間内の PR から最大50件サンプリング):
gh api graphql -f query='
query($owner: String!, $repo: String!, $number: Int!) {
repository(owner: $owner, name: $repo) {
pullRequest(number: $number) {
createdAt
reviews(first: 10, states: [APPROVED, CHANGES_REQUESTED, COMMENTED]) {
nodes {
submittedAt
author {
login
... on Bot { id }
}
}
}
}
}
}' -f owner='{owner}' -f repo='{repo}' -F number={number}
レビューの bot 除外: 以下の条件に該当するレビューは除外し、残ったレビューの中で最も早い submittedAt を「最初の人間レビュー」とする:
author が Bot 型である(GraphQL の ... on Bot でマッチ)
author.login が以下のいずれかに該当する(大文字小文字不問、部分一致):
bot, [bot]devin-ai, devingreptilecodexcopilotgithub-actionsdependabotrenovatecodecovsonarcloud, sonarqubelinearvercelnetlifychangeset人間のレビューが 0 件の PR はレビュー速度の集計から除外する
createdAt から最初の人間レビューの submittedAt までの時間差を「レビュー待ち時間」とする
取得データから以下の 4 指標を計算する。
mergedAt - createdAt の時間差を算出以下の条件に一つでも該当するリリースを「失敗起因の変更」とカウントする:
tagName に hotfix を含む(大文字小文字不問)revert で始まる(大文字小文字不問)hotfix を含む(大文字小文字不問)headRefName が hotfix/ で始まる計算式: 失敗起因リリース数 / 全リリース数 * 100(%)
最初のレビュー submittedAt - createdAt の時間差を算出mergedAt - 最初のレビュー submittedAt の中央値を「レビュー後マージ時間」とするpublishedAt から、次のリリースの publishedAt までの時間差を算出各指標を以下の基準でレベル判定する。
| 指標 | Elite | High | Medium | Low |
|---|---|---|---|---|
| Deployment Frequency | 1日1回以上(7回/週〜) | 週1〜日1(1〜7回/週) | 月1〜週1(0.25〜1回/週) | 月1未満(< 0.25回/週) |
| Lead Time for Changes | < 1時間 | < 24時間 | < 168時間(1週間) | >= 168時間 |
| Change Failure Rate | < 5% | < 10% | < 15% | >= 15% |
| Time to Restore Service | < 1時間 | < 24時間 | < 168時間(1週間) | >= 168時間 |
| Review Speed (Time to First Review) | < 1時間 | < 4時間 | < 24時間 | >= 24時間 |
総合レベルは Four Keys の 4 指標(Review Speed を除く)の中で最も多いレベルとする(同数の場合は低い方を採用)。 Review Speed は補助指標として別途表示する。
以下のフォーマットで結果を出力すること。時間の表示は人間が読みやすい単位に変換する(例: 1.5時間、3.2日)。
## Four Keys Metrics(過去 {N} 日間)
| 指標 | 値 | レベル |
|------|-----|--------|
| Deployment Frequency | {X}回/週 | {level} |
| Lead Time for Changes | {X}時間 | {level} |
| Change Failure Rate | {X}% | {level} |
| Time to Restore Service | {X}時間 | {level} |
**総合レベル: {level}**
### Review Metrics(補助指標)
| 指標 | 値 | レベル |
|------|-----|--------|
| Time to First Review | {X}時間 | {level} |
| Review to Merge Time | {X}時間 | - |
### 詳細データ
- 計測期間: {開始日} 〜 {終了日}
- リリース数: {N}(うち失敗起因: {N})
- マージ済みPR数: {N}
- レビューサンプル数: {N}
--by-user 指定時の追加出力リポジトリ全体のレポートの後に、以下のユーザー別内訳テーブルを追加する。
PR の author.login でグルーピングし、PR数が多い順にソートして表示する。
### User Breakdown
| ユーザー | PR数 | Lead Time (中央値) | Time to First Review (中央値) | Review to Merge (中央値) |
|----------|------|-------------------|------------------------------|--------------------------|
| @user-a | 15 | 3.2時間 | 1.1時間 | 0.8時間 |
| @user-b | 12 | 8.5時間 | 2.3時間 | 4.2時間 |
| @user-c | 8 | 22.1時間 | 5.7時間 | 12.0時間 |
[bot] を含む、または dependabot, renovate など)は除外するgh コマンドがエラーを返した場合は、リポジトリが GitHub にホストされているか確認を促すメッセージを表示するherdr で管理されている他の agent pane(別 worktree / 別タブで動く Claude Code や Codex 等)にメッセージを送り応答を確認する手順。「他の agent に FB して」「herdr 経由で伝えて」「並行作業中の agent に連絡して」等で使う。
ブラウザ操作に関する要件
Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me" / 「詰めて」「設計を grill して」.
既存または新規のコメントを SoT 規約 (CLAUDE.md / code-comments rule) に照らして audit し、削除・短縮候補を抽出する手順。「他に削れるコメントある?」「コメント減らしたい」「AI-workslop ないか?」のような問い、または PR/diff のレビュー段階で使う。
GitHub CLI を使った PR 作成
セッションで得た学びを dotfiles ハーネス(Skill / Rule / Subagent)に恒久反映する方法論。「学んだことを焼き込みたい」「/learn」のときに使う。手順は Skill、原則は Rule、専門役割は Subagent に振り分け、共有レイヤー(dot_agents / .chezmoitemplates)優先で chezmoi ソースを編集し apply する。