Skip to main content
ClaudeWave
ES, Spanish
Skill3.2k estrellas del repoactualizado 9d ago

harness-plan-brief

The harness-plan-brief skill generates a single-file HTML summary document for non-technical stakeholders before implementation begins, displaying the project understanding, implementation options, identified risks, acceptance criteria, and confidence level. Use this skill when a user requests a planning preview, asks for a non-engineer-friendly summary before approval, or uses keywords like "plan brief" or "planning preview."

Instalar en Claude Code
Copiar
git clone --depth 1 https://github.com/Chachamaru127/claude-code-harness /tmp/harness-plan-brief && cp -r /tmp/harness-plan-brief/opencode/skills/harness-plan-brief ~/.claude/skills/harness-plan-brief
Después abre una sesión nueva de Claude Code; el skill carga automáticamente.

SKILL.md

# harness-plan-brief

非エンジニアの発注者・プロデューサー職向けに、Claude が着手しようとしている計画を **HTML 1 枚** で提示するスキル。
発注者の認知負荷ピーク (1) 計画理解の段階で使う。

## Quick Reference

- 「**Plan Brief を作って**」 → このスキル
- 「**実装前にざっくり整理**」 → このスキル
- 「**非エンジニア向けに計画を見せて**」 → このスキル

## 責任境界

| 範囲 | このスキルの責務 |
|------|-----------------|
| 検索 | **現プロジェクトのみ** (`project: <current>`, `strict_project: true` を必ず指定) |
| クロスプロジェクト | **やらない** (Phase 65.3 以降で `--cross-project-group <name>` flag で opt-in 解放) |
| 書き込み | やらない (Plan Brief 承認後の memory write は `plan-brief-record-decision.sh` の責務) |
| confidence 算出 | 65.1.3 で実装される `scripts/plan-brief-compile.sh` に委譲 |

## 入力

引数 `[task-description]` にユーザーの request を渡す。
引数なしの場合は対話形式で受け取る。

## 出力

| 出力 | パス | 形式 |
|------|------|------|
| Plan Brief HTML | `.claude/state/views/plan-brief-<timestamp>.html` | 単独で開ける HTML (no server, no JS framework) |
| Plan Brief context JSON | `.claude/state/views/plan-brief-<timestamp>.context.json` | `plan-brief-context.v1` schema |

## Schema: `plan-brief-context.v1`

```json
{
  "schema": "plan-brief-context.v1",
  "user_request": "string (ユーザーの request 原文)",
  "my_understanding": "string (Claude の理解を 1-3 段落で)",
  "options": [
    { "name": "string", "summary": "string", "pros": ["string"], "cons": ["string"] }
  ],
  "risks": [
    { "kind": "string", "severity": "info|warn|critical", "description": "string", "mitigation": "string" }
  ],
  "acceptance_criteria": [
    { "id": "string", "description": "string", "verifiable_by": "string" }
  ],
  "tdd_required": "yes|no|skip:<reason>",
  "confidence": 0,
  "confidence_evidence": ["string"],
  "related_decisions": [
    { "id": "string", "title": "string", "relevance": "string" }
  ],
  "similar_past_plans": [
    { "archive_path": "string", "phase": "string", "outcome": "cc:完了|cc:WIP|cc:TODO|skipped", "relevance": "string" }
  ],
  "project": "string",
  "generated_at": "ISO8601"
}
```

完全 schema は [`schemas/plan-brief-context.v1.schema.json`](${CLAUDE_SKILL_DIR}/schemas/plan-brief-context.v1.schema.json) を参照。

## Execution Flow

スキル起動時、Claude は以下の手順で動作する。

### Step 1: project name を解決

```bash
PROJECT_NAME="$(basename "$(git rev-parse --show-toplevel)")"
```

`PROJECT_NAME` が空 (git 外) の場合は `current` をデフォルトに使う。

### Step 2: harness-mem を **project-only** で検索する (default)

引数に `--cross-project-group <name>` flag が**ない**場合 (default behavior):

`mcp__harness__harness_mem_search` を **必ず** 以下のパラメータで呼び出す:

```
project: <PROJECT_NAME>
strict_project: true
query: <user request>
expand_links: true
limit: 5
```

> **重要**: `project` パラメータは**必須**。空文字列や `null` を渡してはならない。
> `strict_project: true` を指定し、cross-project な検索は**絶対に行わない**。
> 必要なら `tags` filter で `decision` / `pattern` を絞ってもよいが、`project` は固定。

過去 decision (D1-D41) / pattern (P1-P33) / Plans archive 28 件から類似案件を最大 5 件取得する。

### Step 2 (alt): cross-project search (Phase 65.3.5 opt-in)

引数に `--cross-project-group <name>` flag が**ある**場合のみ:

D43 Option α (MCP N-call) に従い、以下の手順で cross-project 検索を行う。

```bash
# (a) group → member projects に解決 (yaml SSOT)
MEMBERS_JSON="$(bash scripts/load-cross-project-groups.sh --group "<name>" 2>/dev/null)" || {
  echo "ERROR: cross-project group not found: <name>" >&2
  exit 1
}
# MEMBERS_JSON は ["proj1","proj2",...] 形式の JSON 配列
```

`MEMBERS_JSON` が `[]` (空配列) の場合は warning を出して default の単一 project search に fallback。

`MEMBERS_JSON` が非空の場合、**各 member project に対して MCP search を 1 回ずつ発行** する:

```
for each project in MEMBERS_JSON:
  mcp__harness__harness_mem_search(
    project: <member>,
    strict_project: true,
    query: <user request>,
    expand_links: true,
    limit: 5
  )
```

各 search 結果を **client 側でマージ・dedupe (id 単位)・relevance_score 降順 sort** し、最大 5 件に絞る。
合計呼び出し数が多くなる (group が 5 project なら 5 回) ため、レイテンシは増える点に注意。

> **D43 判断 1 の根拠**: MCP tool schema には `projects: [array]` も `strict_project: false` も
> exposed されていないため、横断検索は client 側 N-call が唯一の選択肢。
> 詳細は `.claude/rules/cross-repo-handoff.md` の「Phase 65.3 実装決定事項 (D43)」参照。

cross-project 結果には Layer 2/3 (Phase 65.3.2-65.3.4) の redaction を必ず通すこと:
- HTML レンダリング時に `bash scripts/render-html.sh ... --with-redaction` を使用
- これにより辞書 + NER + final scan の 3 段で固有名詞が漏れない

### Step 3: context JSON を組み立てる

`scripts/plan-brief-compile.sh` (Phase 65.1.3 で実装) を使って、
mem search 結果から `plan-brief-context.v1` schema 準拠の JSON を構築する。

65.1.3 が未実装の段階では、Claude が直接 jq で以下を組み立てる:

```bash
jq -n \
  --arg req "$USER_REQUEST" \
  --arg proj "$PROJECT_NAME" \
  --arg ts "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
  '{
    schema: "plan-brief-context.v1",
    user_request: $req,
    my_understanding: "(まだ未着手)",
    options: [],
    risks: [],
    acceptance_criteria: [],
    confidence: 0,
    confidence_evidence: ["(stub) 65.1.3 で算出ロジック実装"],
    tdd_required: "no",
    related_decisions: [],
    similar_past_plans: [],
    project: $proj,
    generated_at: $ts
  }' > "$CONTEXT_JSON"
```

### Step 4: HTML を生成する

`scripts/render-html.sh` (Phase 65.1.1) を `templates/html/plan-brief.html.template` で呼ぶ:

HTML には TDD 判定を 1 行で表示する。
形式は `tdd_required: yes`、`tdd_required: no`、または `tdd_required: skip:<reason>` のいずれかにする。

```bash
bash scripts/render-html.sh \
  --template plan-brief \
  --data "$CONTEXT_JSON" \
  --out "$HTML_OUT"
```

### Step 5: ブラウザで自動 open する

`scripts/plan-brief-open.sh` で OS 別 dispatch:

```bash
bash scripts/plan-brief-open.sh "$HTML_OUT"
```

`BROWSER=true` の env が設定されている場合 (CI 環境)、open は **skip** され `printf` で path だけ出力する。

### Step 6: ユーザー承認待ち

「この理解で実装に進んでよいか」を確認する。
承認後の memory write は別スキル (Phase 65.1.4 の `plan-brief-record-decision.sh`) の責務。

## 失敗時の挙動

| 失敗 | 挙動 |
|------|------|
| `mcp__harness__harness_mem_search` 不達 | 警告を表示し、`related_decisions` / `similar_past_plans` を空配列で続行 |
| `git rev-parse --show-toplevel` 失敗 | `PROJECT_NAME=current` で続行 |
| `render-html.sh` 失敗 | エラーを stderr に出力し exit 1 |
| `plan-brief-open.sh` 失敗 | HTML path を stdout に出力するだけで exit 0 (browser open は best-effort) |

## Related

- `scripts/render-html.sh` (Phase 65.1.1) — HTML テンプレートエンジン
- `scripts/plan-brief-compile.sh` (Phase 65.1.3) — context
advisorSubagent

executor が返した advisor-request.v1 に対して方針だけ返す非実行 advisor

agent-browserSkill

Browser automation through the repo agent-browser CLI. Explicit helper for navigation, forms, screenshots, scraping, and web-app checks. Prefer Browser Use or Playwright when available. Do NOT load for: sharing URLs, embedding links, or editing screenshot files.

authSkill

Explicit helper for authentication and payment implementation with Clerk, Supabase Auth, or Stripe. Do NOT load for: general UI work, database design, or non-auth features.

breezingSkill

Team execution mode — backward-compatible alias for harness-work with team orchestration. Composer/composer 2.5 maps to the cursor backend.

cc-cursor-ccSkill

Validates brainstormed ideas with Cursor PM, updates Plans.md, then handoff back. Cursor ↔ Claude Code 2-Agent workflow support. Use when user mentions Cursor PM handoff, 2-agent plan validation, CC-Cursor round trip, or brainstorm review. Do NOT load for: implementation work, single-agent tasks, or direct coding.

cc-update-reviewSkill

Quality guardrail for Claude/Codex update integration. Detects doc-only Feature Table additions and requires implementation or explicit planning. Internal use only.

ciSkill

CI red? Call us. Pipeline fire brigade deploys. Use when user mentions CI failures, build errors, test failures, or pipeline issues. Do NOT load for: local builds, standard implementation work, reviews, or setup.

crudSkill

Explicit helper for CRUD scaffolding and API endpoint generation. Do NOT load for: UI components, form design, database schema discussion, or general implementation.