harness-progress
Generate a Progress Tracker HTML for non-engineer vibecoders to glance at session progress (cc:WIP / cc:TODO / cc:完了 counts, percentage, elapsed/estimated minutes, cost so far/estimate, drift alerts). Uses Plans.md as source of truth, renders a single-file HTML with auto-regeneration support. Use when user asks for progress overview, session status snapshot, dashboard, or says: progress tracker, 進捗確認, 進捗ボード, dashboard. Do NOT load for: actual implementation, code review, release work.
- License 许可
- MIT
- 最近更新
- 2026-11-10
- Stars
- ★ 3.2k
- Forks
- 304
01 前言 Front Matter
- name
- harness-progress
- description
- Generate a Progress Tracker HTML for non-engineer vibecoders to glance at session progress (cc:WIP / cc:TODO / cc:完了 counts, percentage, elapsed/estimated minutes, cost so far/estimate, drift alerts). Uses Plans.md as source of truth, renders a single-file HTML with auto-regeneration support. Use when user asks for progress overview, session status snapshot, dashboard, or says: progress tracker, 進捗確認, 進捗ボード, dashboard. Do NOT load for: actual implementation, code review, release work.
- allowed-tools
- [ "Read", "Write", "Bash" ]
- argument-hint
- [--out <path>] [--no-open]
- description-en
- Generate a Progress Tracker HTML for non-engineer vibecoders to glance at session progress (cc:WIP / cc:TODO / cc:完了 counts, percentage, elapsed/estimated minutes, cost so far/estimate, drift alerts). Uses Plans.md as source of truth, renders a single-file HTML with auto-regeneration support. Use when user asks for progress overview, session status snapshot, dashboard, or says: progress tracker, 進捗確認, 進捗ボード, dashboard. Do NOT load for: actual implementation, code review, release work.
- description-ja
- 進捗 Tracker HTML を生成する。Plans.md を SoT として cc:WIP / cc:TODO / cc:完了 件数・%、経過分数・コスト・drift alert を 1 枚 HTML で表示。PostToolUse hook で 60 秒に 1 回自動再生成。Use when: 進捗確認, 進捗ボード, dashboard。Do NOT load for: 実装作業, code review, release。
- user-invocable
- true
02 资源文件 6
- 参考文档manifest.json109 B
- 参考文档references/dotnet-skills-marketplace.md6.1 KB
- 参考文档schemas/orchestration-ledger.v1.schema.json2.1 KB
- 参考文档schemas/orchestration-scorecard.v1.schema.json3.1 KB
- 参考文档schemas/orchestration-totals.v1.schema.json2.5 KB
- 参考文档schemas/progress-snapshot.v1.schema.json5.9 KB
03 SKILL.md 正文
Harness Progress Tracker
Phase 65.4 (Progress Tracker) — 3rd surface of the cognitive-load HTML triplet. Plan Brief / Acceptance Demo に続く 3 つ目の HTML surface で、進行中セッションの全体像を 1 枚の紙で把握 できるようにする。
Quick Reference
| 入力 | 動作 |
|---|---|
/harness-progress |
現プロジェクトの進捗 snapshot HTML を生成し開く |
/harness-progress --no-open |
生成のみ (browser 開かない、PostToolUse hook 用) |
/harness-progress --out <path> |
出力先指定 (default: out/progress-snapshot.html) |
Mission
"今のセッションは何件のタスクをどこまで終わらせて、いつ終わる見込みで、いくら使ったか" を、 エンジニアじゃない vibecoder が 3 秒でブラウザで把握 できる HTML 1 枚を生成する。
やる:
- Plans.md の cc:TODO / cc:WIP / cc:完了 件数を集計
- progress_pct (完了率) を計算 (cc:完了 ÷ 総タスク × 100)
- 経過分数 / 推定総分数 / コスト so-far / コスト estimate を表示
- drift alert を表示 (Phase 65.4.3 以降で populate)
完了率は Plans.md のマーカーから算出した値であり、受け入れ検証の合格率ではない。説明では計測値と推定値を分ける。 state 欠損時の表示用既定値を実測の 0 と主張せず、元の計測が未取得ならその限界を報告する。ボード生成だけでタスクを完了にしない。
やらない (本 cycle):
- WebSocket / SSE による live update (静的 HTML、再生成で更新)
- 過去 session の history 比較 (Phase 65.4.4 で別軸)
- 他 project の cross-project view (Phase 65.3 と独立)
Schema: progress-snapshot.v1
詳細仕様: schemas/progress-snapshot.v1.schema.json
schema: progress-snapshot.v1
project: <basename of git repo>
current_task: <cc:WIP の最初の項目 1 行サマリ、なければ空文字>
progress_pct: <0-100 の整数、cc:完了 ÷ 総タスク × 100 の四捨五入>
todo_tasks: [{number, title}] ← cc:TODO のみ
wip_tasks: [{number, title}] ← cc:WIP のみ
done_tasks: [{number, title, commit}] ← cc:完了 [hash] のみ、hash は 7 chars
elapsed_minutes: <int, state file から>
estimated_total_minutes: <int, state file から>
cost_so_far_usd: <float, state file から>
cost_estimate_usd: <float, state file から>
alerts: [] ← Phase 65.4.3 以降で populate
generated_at: <ISO8601 UTC>
writing_lint_pending: [{id, pattern, approve_command, pending_count}] ← optional/additive (Phase 136.2)
deferred_ops_pending: [{id, command, approve_command, pending_count}] ← optional/additive (Phase 140.2)
writing_lint_pending (Phase 136.2)
scripts/writing-rule-list.sh --status pending --json の出力をそのまま snapshot に
組み込む optional フィールド。pending proposal が 0 件のときは配列が空になり、
progress.html.template の該当セクションは何も展開せず非表示になる (render-html.sh
の {{#section}} は配列が空だと block を 0 回展開するため)。
表示するのは コピペ用のコマンド文字列 (scripts/writing-rule-approve.sh --id <id>)
であって押せるボタンではない。承認は人間が CLI で writing-rule-approve.sh を実行する
一択の経路のまま (Phase 135.4。自動昇格経路は無い)。
Execution Flow
Step 0: PROJECT_NAME を取得
PROJECT_NAME="$(basename "$(git rev-parse --show-toplevel)" 2>/dev/null || echo "current")"
Step 1: snapshot を組み立て
SNAPSHOT_JSON="$(mktemp /tmp/progress-snapshot-XXXX.json)"
bash scripts/progress-snapshot.sh \
--plans Plans.md \
--project "$PROJECT_NAME" \
> "$SNAPSHOT_JSON"
scripts/progress-snapshot.sh (Phase 65.4.1 で実装) は Plans.md を parse し
progress-snapshot.v1 schema 準拠の JSON を出力する。内部で
scripts/writing-rule-list.sh --status pending --json も呼び、writing_lint_pending
を additive に組み込む (Phase 136.2。writing-rule-list.sh が無い/失敗する場合は空配列)。
同様に .claude/state/deferred-ops.jsonl の status: pending 行を deferred_ops_pending
として組み込む (Phase 140.2。ファイルが無い/壊れた行は読み飛ばして空配列)。表示するのは
コピペ用の bin/harness deferred approve <id> 文字列で、押せるボタンではない。
Step 2: HTML をレンダリング
OUT_PATH="${OUT_PATH:-out/progress-snapshot.html}"
mkdir -p "$(dirname "$OUT_PATH")"
bash scripts/render-html.sh \
--template progress \
--data "$SNAPSHOT_JSON" \
--out "$OUT_PATH"
Step 3: ブラウザで開く
--no-open flag がない場合のみ実行 (PostToolUse hook からの背景再生成では skip):
bash scripts/plan-brief-open.sh --path "$OUT_PATH"
Cross-project search (default OFF)
Phase 65.4.4 で --cross-project-group <name> flag が追加される。本 cycle (65.4.1) では default OFF、現プロジェクトのみ集計する。
Failure modes
| 状態 | 動作 |
|---|---|
| Plans.md が無い | progress-snapshot.sh が exit 1 (clear error message) |
| Plans.md にタスクが 1 件もない | progress_pct: 0, 空配列 で snapshot 生成 (HTML は「タスクなし」表示) |
| state file (経過分数等) が無い | elapsed_minutes: 0, cost_so_far_usd: 0 で fallback (warning なし) |
git 不在 / git repo 外 |
project: "current" で fallback |
Related
harness-plan-brief(Phase 65.1.x) — 1st surface (実装前の説明会)harness-accept(Phase 65.2.x) — 2nd surface (検収判断)harness-progress(本 skill, Phase 65.4.x) — 3rd surface (進捗ダッシュボード)- 65.4.2 (PostToolUse auto-regen)、65.4.3 (drift alert 5 種)、65.4.4 (過去判断 lookup) で機能拡張
04 同仓库更多 Skills
escape-skill
暂无简介
zz-review-empty
暂无简介
session-send
This skill should be used when the user asks to notify other session, requests a session handoff, says tell other agent, or needs a cross-session message.
memory
Manage SSOT, memory, and cross-tool memory search. Guardian of decisions.md and patterns.md. Use when user mentions memory, SSOT, decisions.md, patterns.md, merging, migration, SSOT promotion, sync memory, save learnings, memory search, harness-mem, past decisions, or record this. Do NOT load for: implementation work, reviews, ad-hoc notes, or in-session logging.
maintenance
File cleanup and archiving. Tidies up bloated Plans.md, session-log.md, old logs, and state files. Trigger: /maintenance, cleanup, archive, organize, split session-log. Do NOT load for: implementation, review, release, new feature development.
japanese-writing-drafter
Detect when the operator corrects the agent's Japanese phrasing mid-conversation (rewrites a sentence, calls out a style problem, says 'this wording is bad, say it like X instead') and draft a pending writing-rule proposal into ~/.claude/writing-lint/proposals.jsonl for later human review. This skill is the ONLY writer of proposals.jsonl — it never edits rules.jsonl and never sets status to anything but pending. Promotion to rules.jsonl only happens via the human-run scripts/writing-rule-approve.sh. Use when user mentions writing-rule proposal, 表現を直して, 文体を直して, その言い方はNG, writing lint 提案, 指摘をルール化して. Do NOT load for: approving or rejecting proposals (use scripts/writing-rule-approve.sh), listing pending proposals (use scripts/writing-rule-list.sh), or scanning text against the existing dictionary (the writinglint engine / PostToolUse hook does that).