一键导入
four-keys
DORA Four Keys メトリクスを GitHub CLI で取得・表示
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
DORA Four Keys メトリクスを GitHub CLI で取得・表示
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| 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 する。