Skip to content

Add LSP support to all commands and skills - #3

Merged
Chachamaru127 merged 3 commits into
mainfrom
claude/add-lsp-support-NwZ89
Dec 20, 2025
Merged

Chachamaru127 merged 3 commits into
mainfrom
claude/add-lsp-support-NwZ89

Conversation

@Chachamaru127

@Chachamaru127 Chachamaru127 commented Dec 20, 2025 •

Copy link
Copy Markdown
Owner

Add comprehensive LSP (Language Server Protocol) integration:

  • New docs/LSP_INTEGRATION.md with complete LSP usage guide
  • Add LSP sections to 5 core commands (work, harness-review, validate, refactor, ci-setup)
  • Add LSP sections to 4 key skills (impl, review, troubleshoot, verify)
  • Update generate-claude-settings with CCLSP MCP server configuration
  • Add CCLSP to settings.security.json.template

LSP features enabled:

  • Go-to-definition for code navigation
  • Find-references for impact analysis
  • LSP Diagnostics for pre-build error detection
  • LSP Rename for safe refactoring

Summary by CodeRabbit

  • 新機能

    • 全コマンド/スキルで利用できるLSP統合を追加。定義ジャンプ、参照検索、セーフなリネーム、診断、ホバー、補完などでコード理解と編集が向上。
  • ドキュメント

    • 包括的なLSP利用ガイドと各コマンド/スキル向けの活用説明を新規追加。利用手順、出力例、運用設定例、トラブルシュート、VibeCoder向け表現例を含む。
  • その他

    • バージョンを2.5.8へ更新、変更履歴を追加。

✏️ Tip: You can customize this high-level summary in your review settings.

Add comprehensive LSP (Language Server Protocol) integration:

- New docs/LSP_INTEGRATION.md with complete LSP usage guide
- Add LSP sections to 5 core commands (work, harness-review, validate, refactor, ci-setup)
- Add LSP sections to 4 key skills (impl, review, troubleshoot, verify)
- Update generate-claude-settings with CCLSP MCP server configuration
- Add CCLSP to settings.security.json.template

LSP features enabled:
- Go-to-definition for code navigation
- Find-references for impact analysis
- LSP Diagnostics for pre-build error detection
- LSP Rename for safe refactoring
@coderabbitai

coderabbitai Bot commented Dec 20, 2025 •

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

Walkthrough

Claude CodeのLSP統合に関する新規ガイド追加、既存コマンド/スキル文書へ「🔧 LSP 機能の活用」セクション追記、MCP設定テンプレート追加およびバージョンを2.5.7→2.5.8に更新したドキュメント/設定中心の変更です。

Changes

コホート / ファイル(s) 変更概要
チェンジログ・メタ情報
\.claude-plugin/plugin.json, CHANGELOG.md, VERSION, README.md
バージョンを 2.5.7 → 2.5.8 に更新。CHANGELOGに2.5.8エントリを追加しLSP統合の要点を記載。
新規ドキュメント
docs/LSP_INTEGRATION.md
Claude CodeのLSP機能(Go-to-definition、Find-references、Rename、Diagnostics、Hover、Completions)、有効化方法(ENV・MCP)、ワークフロー別使用例、トラブルシュートを追加。
コマンド関連ドキュメント(コア)
コア: commands/core/harness-review.md, commands/core/validate.md, commands/core/work.md
各コマンドに「🔧 LSP 機能の活用」セクションを追加(Diagnostics, Find-references, Go-to-definition 等の利用例、VibeCoder向け表現、CIやワークフローへの組み込み)。一部で同内容の重複挿入あり。
コマンド関連ドキュメント(オプション)
commands/optional/ci-setup.md, commands/optional/refactor.md
CIでの LSP Diagnostics 統合例、リファクタリング時の LSP 活用指針などを追加。
スキル関連ドキュメント
skills/impl/SKILL.md, skills/review/SKILL.md, skills/troubleshoot/SKILL.md, skills/verify/SKILL.md
実装/レビュー/検証/トラブルシュートにおけるLSP活用手順を追加。skills/troubleshoot/SKILL.md に重複挿入あり。
設定テンプレート / 設定生成ドキュメント
skills/setup/generate-claude-settings/doc.md, templates/claude/settings.security.json.template
mcpServers.cclsp のサンプル設定を追加し、mcp__cclsp__* パターンを permissions に許可。MCP起動コマンド例と利用上の注意を記載。

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • 注目箇所:
    • commands/core/harness-review.md、skills/troubleshoot/SKILL.md:同一内容の重複挿入を除去・意図確認する必要あり。
    • templates/claude/settings.security.json.template と skills/setup/generate-claude-settings/doc.md:MCPキー名・許可パターン・説明文の整合性確認。
    • CHANGELOG/README/VERSION/.claude-plugin のバージョン整合性確認。

Possibly related PRs

  • Add LSP support to all commands and skills #3 — 同一ドキュメント群(コマンド/スキル Markdown、テンプレート、プラグインバージョン)を LSP 統合で変更しており、内容が直接関連。

Poem

🐰 LSPの光で跳ねてみる
参照を辿り、定義に寄り添い
診断が囁けばバグは逃げる
ドキュメントに新しい道を描き
兎はぴょんと2.5.8を祝う 🎉

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Pull request title clearly and concisely summarizes the main change: adding LSP support across commands and skills. It is directly related to the changeset content.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

📜 Recent review details

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 80139a2 and 96a07f7.

📒 Files selected for processing (1)
  • docs/LSP_INTEGRATION.md (1 hunks)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🧹 Nitpick comments (4)
skills/troubleshoot/SKILL.md (1)

250-262: コードブロックに言語識別子を追加することを推奨します。

コードブロックに言語識別子が指定されていません。テキスト出力例の場合でも、一貫性とレンダリングの正確性のため、識別子を追加することをお勧めします。

🔎 提案する修正
-```
+```text
 🔍 LSP 診断実行中...
 
 📊 診断結果:
-```
+```text
 🔍 原因追跡
 
 エラー: Cannot read property 'name' of undefined

静的解析ツールからの指摘: markdownlint MD040 (fenced-code-language)

Also applies to: 266-277

skills/impl/SKILL.md (1)

62-67: コードブロックに言語識別子を追加することを推奨します。

チェックリスト形式のテキストブロックに言語識別子が指定されていません。一貫性のため、text または markdown の識別子を追加することをお勧めします。

🔎 提案する修正
-```
+```text
 実装完了時チェック:
 1. LSP Diagnostics を実行
 2. エラー: 0件を確認
 3. 警告: 必要に応じて対応

</details>

静的解析ツールからの指摘: markdownlint MD040 (fenced-code-language)

</blockquote></details>
<details>
<summary>skills/verify/SKILL.md (1)</summary><blockquote>

`46-52`: **コードブロックに言語識別子を追加することを推奨します。**

ワークフローテキストを含むコードブロックに言語識別子が指定されていません。マークダウンレンダリングの一貫性のため、識別子を追加することをお勧めします。



<details>
<summary>🔎 提案する修正</summary>

```diff
-```
+```text
 ビルド前チェック:
 
 1. LSP Diagnostics を実行
 2. エラー: 0件を確認 → ビルド実行
 3. エラーあり → 先にエラーを修正

```diff
-```
+```text
 📊 LSP 検証結果
 
 Step 1: Diagnostics
   ├── エラー: 0件 ✅
   └── 警告: 2件 ⚠️
 
 Step 2: ビルド
   └── 成功 ✅
 
 Step 3: テスト
   └── 15/15 通過 ✅
 
 → 検証完了

</details>

静的解析ツールからの指摘: markdownlint MD040 (fenced-code-language)


Also applies to: 64-78

</blockquote></details>
<details>
<summary>commands/core/work.md (1)</summary><blockquote>

`104-141`: **実装ワークフローにおけるLSP活用ガイドが分かりやすいです!**

実装の各段階(実装前・実装中・実装後)でのLSP機能の活用方法が明確に整理されています。特に、各LSP機能の具体的な効果(「意図しない破壊的変更を防止」「ビルド前に問題を発見」など)が記載されており、実装者にとって有用な情報となっています。




一貫性のため、Lines 125-130のコードブロックに言語識別子(`text`)を追加することを検討してください:

<details>
<summary>🔎 提案する修正</summary>

```diff
-```
+```text
 実装完了後に LSP Diagnostics を実行:
 → 型エラーがないことを確認
 → 未使用変数・import を検出
 → 潜在的な問題を早期発見

</details>

</blockquote></details>

</blockquote></details>

<details>
<summary>📜 Review details</summary>

**Configuration used**: Organization UI

**Review profile**: CHILL

**Plan**: Pro

<details>
<summary>📥 Commits</summary>

Reviewing files that changed from the base of the PR and between cd91f47dc37376502340134a251828baf281f911 and 237ba1f866b087ff4352088892bdca962996aaa2.

</details>

<details>
<summary>📒 Files selected for processing (13)</summary>

* `CHANGELOG.md` (1 hunks)
* `commands/core/harness-review.md` (1 hunks)
* `commands/core/validate.md` (1 hunks)
* `commands/core/work.md` (1 hunks)
* `commands/optional/ci-setup.md` (1 hunks)
* `commands/optional/refactor.md` (1 hunks)
* `docs/LSP_INTEGRATION.md` (1 hunks)
* `skills/impl/SKILL.md` (1 hunks)
* `skills/review/SKILL.md` (1 hunks)
* `skills/setup/generate-claude-settings/doc.md` (1 hunks)
* `skills/troubleshoot/SKILL.md` (1 hunks)
* `skills/verify/SKILL.md` (1 hunks)
* `templates/claude/settings.security.json.template` (2 hunks)

</details>

<details>
<summary>🧰 Additional context used</summary>

<details>
<summary>🪛 markdownlint-cli2 (0.18.1)</summary>

<details>
<summary>skills/impl/SKILL.md</summary>

62-62: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>
<details>
<summary>skills/troubleshoot/SKILL.md</summary>

250-250: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

266-266: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>
<details>
<summary>commands/core/validate.md</summary>

38-38: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

56-56: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>
<details>
<summary>skills/verify/SKILL.md</summary>

46-46: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

64-64: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>
<details>
<summary>commands/optional/refactor.md</summary>

47-47: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

68-68: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

86-86: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>
<details>
<summary>commands/core/harness-review.md</summary>

44-44: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

62-62: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>
<details>
<summary>docs/LSP_INTEGRATION.md</summary>

85-85: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

94-94: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

103-103: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

112-112: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

121-121: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

132-132: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

152-152: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

161-161: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

---

170-170: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

</details>

</details>

</details>

<details>
<summary>🔇 Additional comments (4)</summary><blockquote>

<details>
<summary>CHANGELOG.md (1)</summary><blockquote>

`13-66`: **変更履歴の記載が充実しています!**

LSP統合に関する変更履歴が非常に分かりやすく記載されています。Before/After形式での説明、VibeCoder向けの具体的な使い方、変更内容の詳細なリストなど、ユーザー目線で必要な情報が網羅されています。

</blockquote></details>
<details>
<summary>skills/setup/generate-claude-settings/doc.md (1)</summary><blockquote>

`66-94`: **LSP設定ドキュメントが充実しています!**

CCLSP の設定方法と利用可能なLSP機能(`lookup_symbol_definition`、`find_symbol_references`、`rename_symbol`、`get_diagnostics`)が明確に文書化されています。JSON設定例も正しく、実装者にとって分かりやすい内容です。

</blockquote></details>
<details>
<summary>commands/optional/ci-setup.md (1)</summary><blockquote>

`89-89`: 参照ドキュメント `docs/LSP_INTEGRATION.md` は存在し、LSP統合機能について詳細に記載されています。ファイルは198行で構成され、LSP機能の概要、対応言語、および活用シーンなどの内容を含んでいます。相対パスの参照も正しく設定されています。

</blockquote></details>
<details>
<summary>docs/LSP_INTEGRATION.md (1)</summary><blockquote>

`38-63`: **マークダウンリント:フェンスコードブロックに言語指定を追加してください**

複数のコードブロックで言語指定がありません。マークダウンリント(MD040)を解決するために、各コードブロックに言語タイプを指定してください。

<details>
<summary>🔎 修正提案</summary>

```diff
## LSP の有効化

### 方法1: 環境変数(推奨)

-```bash
+```
export ENABLE_LSP_TOOL=1
claude
-```
+```

### 方法2: MCP サーバー経由(より安定)

`.claude/settings.json`:

-```json
+```
{
  "mcpServers": {
    "cclsp": {
      "command": "npx",
      "args": ["@ktnyt/cclsp"]
    }
  },
  "permissions": {
    "allow": [
      "mcp__cclsp__*"
    ]
  }
}
-```
+```

Likely an incorrect or invalid review comment.

Comment on lines +44 to +75
```
📊 LSP 診断結果

ファイル: src/components/UserForm.tsx

| 行 | 重要度 | メッセージ |
|----|--------|-----------|
| 15 | Error | 型 'string' を型 'number' に割り当てることはできません |
| 23 | Warning | 'tempData' は宣言されていますが、使用されていません |
| 42 | Info | この async 関数には await がありません |

→ 型エラー・未使用変数を自動検出
```

### LSP Find-references による影響範囲分析

変更されたコードがどこで使われているかを LSP で分析:

```
🔍 変更の影響範囲

変更: src/utils/formatDate.ts

参照箇所:
├── src/components/DateDisplay.tsx:12
├── src/components/EventCard.tsx:45
├── src/pages/Dashboard.tsx:78
└── tests/utils/formatDate.test.ts:5

→ 4ファイルに影響
→ テストでカバーされていることを確認 ✅
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

マークダウンリント(MD040):フェンスコードブロックに言語指定を追加

セクション内のコードブロック(行 44-56、62-75)に言語指定がありません。出力テーブル形式なので text を指定してください。

🔎 修正提案
### LSP Diagnostics によるコード品質チェック

-```
+```text
📊 LSP 診断結果
...
-```
+```

### LSP Find-references による影響範囲分析

-```
+```text
🔍 変更の影響範囲
...
-```
+```
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

44-44: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


62-62: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In commands/core/harness-review.md around lines 44 to 75, the fenced code blocks
lack a language specifier causing MD040; add the language tag "text" to both
code block openings (the block containing the LSP 診断結果 at ~44-56 and the block
for LSP Find-references at ~62-75) so they read ```text, and ensure their
corresponding closing fences remain unchanged.

Comment thread commands/core/validate.md
Comment on lines +38 to +67
```
📊 LSP 診断結果(プロジェクト全体)

ファイル数: 42
エラー: 0件 ✅
警告: 3件 ⚠️
情報: 5件

⚠️ 警告:
├── src/components/Header.tsx:15 - 未使用の変数 'debug'
├── src/utils/helpers.ts:23 - 非推奨の API 使用
└── src/pages/Settings.tsx:45 - any 型の使用

→ ビルドは通るが、品質改善の余地あり
```

### 検証フローへの統合

```
/validate full 実行時の流れ:

1. 環境変数チェック
2. 依存関係チェック
3. LSP Diagnostics ← NEW
4. Lint
5. 型チェック
6. ビルド
7. テスト
8. セキュリティ監査
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

マークダウンリント(MD040):フェンスコードブロックに言語を指定してください

セクション内のコードブロック(行 38-52、56-67)に言語指定がありません。出力例のテキスト形式なので text を指定してください。

🔎 修正提案
### LSP Diagnostics による事前検証

-```
+```text
📊 LSP 診断結果(プロジェクト全体)
...
-```
+```

### 検証フローへの統合

-```
+```text
/validate full 実行時の流れ:
...
-```
+```
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

38-38: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


56-56: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In commands/core/validate.md around lines 38-67, the fenced code blocks used for
the LSP diagnostics and the validation flow examples lack a language tag which
triggers MD040; add the language identifier "text" to both code fences (the
block spanning lines 38-52 and the block spanning lines 56-67) so they become
```text ... ``` to satisfy Markdown linting.

Comment on lines +47 to +106
```
🔄 LSP Rename 実行

対象: formatDate → formatDateToJapanese

変更箇所:
├── src/utils/date.ts:15 (定義)
├── src/components/DateDisplay.tsx:5 (import)
├── src/components/DateDisplay.tsx:12 (使用)
├── src/components/EventCard.tsx:8 (import)
├── src/components/EventCard.tsx:23 (使用)
└── tests/utils/date.test.ts:3 (import)

合計: 6箇所を一括変更
→ 漏れなく安全にリネーム完了 ✅
```

### LSP Find-references による影響分析

リファクタリング前に必ず実行:

```
🔍 参照分析

対象: validateEmail 関数

参照箇所:
├── src/components/SignupForm.tsx:45
├── src/components/SettingsForm.tsx:23
├── src/api/auth/register.ts:12
└── tests/utils/validate.test.ts:8

→ 4箇所で使用中
→ テストあり ✅
→ リファクタリング可能
```

### LSP Diagnostics による変更後検証

```
リファクタリング後:

📊 LSP 診断結果

エラー: 0件 ✅
警告: 0件 ✅

→ 変更による問題なし
→ ビルド・テスト実行へ進む
```

### VibeCoder 向けの言い方

| やりたいこと | 言い方 |
|-------------|--------|
| 名前を変えたい | 「`getData` を `fetchUserData` にリネームして」 |
| 使用箇所を調べたい | 「この関数はどこで使われてる?」 |
| 変更後のエラーをチェック | 「リファクタリング後に診断して」 |

詳細: [docs/LSP_INTEGRATION.md](../../docs/LSP_INTEGRATION.md)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

マークダウンリント(MD040):コードブロックに言語指定を追加

複数のコードブロック(行 47-62、68-82、86-96)に言語指定がありません。出力例やテキスト形式なので text を指定してください。

🔎 修正パターン
### LSP Rename による安全なリネーム

-```
+```text
🔄 LSP Rename 実行
...
-```
+```

### LSP Find-references による影響分析

-```
+```text
🔍 参照分析
...
-```
+```

### LSP Diagnostics による変更後検証

-```
+```text
リファクタリング後:
...
-```
+```
🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

47-47: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


68-68: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


86-86: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
commands/optional/refactor.md lines 47-106: Several fenced code blocks (lines
47-62, 68-82, 86-96) lack a language identifier which triggers MD040; update
each opening fence to use ```text and ensure matching closing fences remain ```
so the blocks are explicitly marked as plain text, i.e., replace each ``` with
```text for the three code block ranges and keep the corresponding closing ```
intact.

Comment thread docs/LSP_INTEGRATION.md
Comment on lines +85 to +126
```
LSP 活用ポイント:
- 定義ジャンプで既存コードの理解を高速化
- 参照検索で影響範囲を事前把握
- 診断で実装中のエラーを即座に検出
```

### `/harness-review` - レビュー時

```
LSP 活用ポイント:
- Diagnostics で型エラー・未使用変数を自動検出
- Find-references で変更の影響範囲を確認
- 静的解析結果をレビュー観点に追加
```

### `/refactor` - リファクタリング時

```
LSP 活用ポイント:
- Rename でシンボルを安全に一括変更
- Find-references で漏れのない変更を保証
- Diagnostics で変更後の問題を即座に検出
```

### `/troubleshoot` - 問題解決時

```
LSP 活用ポイント:
- Diagnostics でエラー箇所を正確に特定
- Go-to-definition で問題のあるコードの原因を追跡
- 型情報で期待値と実際の不一致を発見
```

### `/validate` - 検証時

```
LSP 活用ポイント:
- プロジェクト全体の Diagnostics を実行
- 型エラー・警告の一覧を生成
- ビルド前に問題を検出
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

マークダウンリント:VibeCoder向けセクションのコードブロックに言語指定を追加

セクション内の複数のコードブロック(行 85, 94, 103, 112, 121)に言語指定がありません。すべて同じパターンで修正可能です:

🔎 修正パターン
-```
+```text
LSP 活用ポイント:
- 定義ジャンプで既存コードの理解を高速化
- 参照検索で影響範囲を事前把握
- 診断で実装中のエラーを即座に検出
-```
+```

各コードブロックに text または plaintext を言語タイプとして指定してください。

🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

85-85: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


94-94: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


103-103: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


112-112: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


121-121: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
docs/LSP_INTEGRATION.md around lines 85 to 126: several code fences used for
"LSP 活用ポイント" blocks are missing a language specifier; update each opening fence
at lines ~85, 94, 103, 112, and 121 from ``` to ```text (or ```plaintext) so
they become fenced as ```text and keep the corresponding closing ``` unchanged,
ensuring consistent markdown linting.

Comment thread docs/LSP_INTEGRATION.md
Comment on lines +130 to +175
## LSP 診断の出力形式

```
📊 LSP 診断結果

ファイル: src/components/UserForm.tsx

| 行 | 重要度 | メッセージ |
|----|--------|-----------|
| 15 | Error | 型 'string' を型 'number' に割り当てることはできません |
| 23 | Warning | 'tempData' は宣言されていますが、使用されていません |
| 42 | Info | この条件は常に true です |

合計: エラー 1件 / 警告 1件 / 情報 1件
```

---

## LSP 活用のベストプラクティス

### 1. 実装前に定義を確認

```
実装前:
1. 関連するシンボルの定義を LSP で確認
2. 既存のパターンを把握
3. 影響範囲を Find-references で調査
```

### 2. 変更後に診断を実行

```
変更後:
1. LSP Diagnostics を実行
2. エラー・警告を確認
3. 問題があれば即座に修正
```

### 3. リファクタリングは LSP Rename を使用

```
リファクタリング:
1. 変更対象を Find-references で確認
2. LSP Rename で一括変更
3. Diagnostics で問題がないことを確認
```

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

マークダウンリント:診断出力形式とベストプラクティスセクションのコードブロック言語指定

行 132-144、152-157、161-166、170-175 のコードブロックに言語指定がありません。出力例やリスト形式なので text または plaintext を指定してください。

🔎 修正例(行 132)
## LSP 診断の出力形式

-```
+```text
📊 LSP 診断結果

ファイル: src/components/UserForm.tsx
...
-```
+```

他の同様のコードブロックも同じパターンで修正してください。

Committable suggestion skipped: line range outside the PR's diff.

🧰 Tools
🪛 markdownlint-cli2 (0.18.1)

132-132: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


152-152: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


161-161: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


170-170: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
In docs/LSP_INTEGRATION.md around lines 130 to 175, several fenced code blocks
(the LSP diagnostic example and the best-practices snippets) lack a language
specifier; update each triple-backtick fence at lines ~132-144, ~152-157,
~161-166, and ~170-175 to include a language token such as text or plaintext
(e.g., ```text) so the blocks are treated as plain text and rendered/linted
correctly; make the change consistently for all four blocks.

Comment on lines +4 to +6
"allow": [
"mcp__cclsp__*"
],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

cat -n templates/claude/settings.security.json.template

Repository: Chachamaru127/claude-code-harness

Length of output: 1189


npm パッケージ名が間違っています。修正が必要です。

npm パッケージは @ktnyt/cclsp ではなく cclsp として公開されており、バージョン 0.6.2 が最新版です。33行目の args を "@ktnyt/cclsp" から "cclsp" に修正してください。公式ドキュメントでは npx cclsp@latest setup を推奨しています。

🤖 Prompt for AI Agents
In templates/claude/settings.security.json.template around line 33, the npm
package arg is incorrect; change the args value from "@ktnyt/cclsp" to "cclsp"
(keeping any existing quoting/formatting), and if there's a hardcoded version
reference update it to the current 0.6.2 or remove the pinned version so callers
can use npx cclsp@latest as recommended.

Chachamaru127 and others added 2 commits December 20, 2025 23:24
- Bump version to 2.5.8 (VERSION, plugin.json, README badge)
- Fix Claude Code version in LSP_INTEGRATION.md (v2.0.30+ → v2.0.74+)
- Update CHANGELOG references to use official source URLs

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add clear guidelines for when to use LSP vs Grep:
- Usage comparison table (symbols → LSP, text search → Grep)
- Concrete examples with user questions
- VibeCoder-friendly decision criteria

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@Chachamaru127
Chachamaru127 merged commit 2053b34 into main Dec 20, 2025
1 of 2 checks passed
@Chachamaru127
Chachamaru127 deleted the claude/add-lsp-support-NwZ89 branch December 20, 2025 14:38
Chachamaru127 pushed a commit that referenced this pull request Apr 10, 2026
When /HAR:review is invoked bare (no arguments) and many commits
have accumulated since the last release tag, the Step 0.1 auto-
detection used the tag as BASE_REF, producing an oversized review
scope. Yesterday's session had 17+ commits since v4.0.0, and the
reviewer had to manually narrow to HEAD~6 to produce a usable review.

Fix: add an upper-bound fallback in Step 0.1:
- Lower bound (existing): 0 commits → HEAD~5 fallback
- Upper bound (new):      >10 commits → HEAD~10 fallback

Result: bare review scope is clamped to [1, 10] commits, which fits
Claude's working memory for detailed 5-perspective review. Users who
want the full range can still specify `code` explicitly or pass an
older ref as argument.

Scope:
- skills/harness-review/SKILL.md (main)
- codex/.codex/skills/harness-review/SKILL.md (mirror)
- opencode/skills/harness-review/SKILL.md (mirror)

All 3 files kept in sync; check-consistency.sh passes.

Closes review finding #3 (Claude Sonnet 4.6 review, Apr 11 2026).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Chachamaru127 pushed a commit that referenced this pull request Apr 10, 2026
Previous Japanese/summary-first output still carried 3 barriers for
non-expert readers:

1. Technical identifiers (validTargets, HookEventName, etc.) inlined
   in issue descriptions blocked comprehension
2. JSON output occupied visual center, forcing non-experts to scroll
   past 100+ lines of machine-readable data
3. Severity used English words (critical/major/minor/recommendation)
   mixed with Japanese body

Redesign the Step 3 result summary template with explicit UX axes:
  Information density: MID (not LOW, not HIGH)
  Cognitive load: MIN

## New template structure (top to bottom)

1. Verdict headline: one-line Japanese conclusion with bilingual
   verdict (✅ 合格 (APPROVE) / ❌ 要修正 (REQUEST_CHANGES))
2. ✨ 良かったところ: 2-3 positive findings in plain Japanese — new
   required section, acts as reassurance anchor for non-experts
   (technical reviews usually skip positive feedback)
3. ⚠️ 気になったところ: each finding uses strict 4-layer structure
   - Japanese title (no jargon)
   - 問題 (plain-language description)
   - 対応 (actionable next step, verb-led)
   - 重要度 (Japanese + emoji: 🔴 致命的 / 🟠 重要 / 🟡 軽微 / 🟢 推奨)
   - 技術的位置 (開発者向け) — isolated pocket for file:line + jargon
4. 🎬 次のアクション: 1-3 items in Japanese
5. 📊 自動検証の結果: checklist in Japanese
6. 📦 詳細データ: demoted section for JSON + detail tables, marked
   "非専門家は読み飛ばし可"

## New prohibitions (UX guards)

- No English severity words in body text
- No jargon in 問題/対応 — isolate to 技術的位置 only
- No JSON-first output
- 良かったところ mandatory even for APPROVE (reassurance)

## Base ref transparency (fixes review finding #3 from last session)

When Step 0.1 upper-bound cap fires (>10 commits → HEAD~10), the
対象 line MUST show both original candidate ref and scoped range:
  対象: HEAD~10..HEAD (v4.0.0 から 21 commits のうち直近 10 を対象)

Prevents silent omission when commits get truncated.

## Verification

- ./tests/validate-plugin.sh: 42 pass / 0 fail
- ./scripts/ci/check-consistency.sh: all pass
- 3-way mirror sync verified with diff -q

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Chachamaru127 pushed a commit that referenced this pull request Apr 18, 2026
旧テストは初回 sync 後に checksum を取っていたため、checked-in plugin.json
が古い場合でも sync が黙って書き換えて 2nd/3rd run と一致してしまい drift
を masked していた。

修正: pre-sync (checked-in) の checksum を取り、初回 sync 後と比較。
drift 検出時は明示的な FAIL メッセージで再生成手順を案内。
Chachamaru127 pushed a commit that referenced this pull request Apr 19, 2026
Two semantic/security fixes surfaced by CodeRabbit review. Kept scope to the
critical items; cosmetic findings (deleted-concepts.yaml allowlist, CHANGELOG
markdownlint, scanner ring buffer optimization, jq null-safe mapping) are
deferred to a 4.3.2 follow-up issue.

Fix #3 — mem health subcommand now probes the daemon (DoD alignment):
- previously runMemHealthCheck() only inspected ~/.claude-mem/ files, so a
  dead daemon would still report healthy if settings.json existed
- added probeHarnessMemDaemon(): TCP connect to HARNESS_MEM_HOST:HARNESS_MEM_PORT
  (default 127.0.0.1:37888) with 500ms timeout
- probe runs after file integrity check; failure returns
  {healthy:false, reason:"daemon-unreachable"} and exit 1
- package-level daemonProbe variable enables test injection; existing 3 tests
  stub it (healthy→nil, not-initialized/corrupted→early-exit), new
  TestRunMemHealth_DaemonUnreachable verifies the TCP-failure path

Fix #4 — defaultMemHealthCheck no longer executes projectRoot/bin/harness:
- previous resolution (projectRoot/bin/harness → PATH fallback) exposed a
  guardrail-bypass risk if a malicious binary was committed to the repo
- new resolveHarnessBinary() uses os.Executable() → CLAUDE_PLUGIN_ROOT/bin/harness
  → exec.LookPath("harness"), never touching the repo path
- projectRoot arg retained in signature for backward compatibility, marked
  unused with _ prefix and documented

CHANGELOG [4.3.1] — Phase 48.1.1 description updated to reflect the 2-stage
health check (file integrity + daemon TCP probe) and trusted binary
resolution.

Deferred to 4.3.2 follow-up:
- .claude/rules/deleted-concepts.yaml:180  bin/ prefix too broad
- CHANGELOG MD040 fenced code language tag
- monitor.go scanner → ring buffer for last 200 lines
- test-memory-hook-wiring.sh jq map(.command) null-safe

verify:
- go vet ./... → no warnings
- go test ./internal/session/... ./cmd/harness/... → all PASS (incl. new
  TestRunMemHealth_DaemonUnreachable)
- tests/validate-plugin.sh → 41 pass / 0 fail

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Chachamaru127 added a commit that referenced this pull request Apr 19, 2026
…ng (#93)

* feat(session-monitor): Phase 48 — harness-mem health / advisor drift / Plans.md 閾値の 3 能動監視を追加

- 48.1.1: `bin/harness mem health` サブコマンドを新設。~/.claude-mem/ の存在・設定ファイルチェックを行い
  JSON で healthy/reason を返す。MonitorHandler.MemHealthCommand テスト注入フィールドを追加し、
  session.json に harness_mem フィールドを記録。unhealthy 時は `⚠️ harness-mem unhealthy: {reason}` を出力。
- 48.1.2: session.events.jsonl を末尾 200 行スキャンし TTL 超過の未応答 advisor-request.v1 を
  `⚠️ advisor drift: request_id={id}, waiting {elapsed}s` で報告。orchestration.advisor_ttl_seconds
  (default 600) で上書き可能。reviewer drift(review-result.v1 未応答)も同ロジック。
- 48.1.3: Plans.md の WIP>=wip_threshold(5) または stale_for>=stale_hours(24)h で
  `⚠️ plans drift: WIP={n}, stale_for={hours}h` を出力。monitor.plans_drift config で上書き可能。
- config.yaml に Phase 48 のデフォルト閾値セクションを追加。
- deleted-concepts.yaml の claude-mem allowlist に mem.go / mem_test.go / go/harness バイナリを追加。

全テスト pass: go test ./... (TestDoctor_Residue 含む)
パフォーマンス: time go run session-monitor → 1.5s (< 3s 要件)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* docs(plans): mark Phase 48 cc:完了 [888b195] and log in CHANGELOG

Phase 48 の 3 能動監視(harness-mem health / advisor drift / Plans.md 閾値)は
commit 888b195 で実装済み。Plans.md に Phase 48 entries を cc:完了 [888b195]
で反映し、CHANGELOG [Unreleased] に「今まで / 今後」形式で記録。
Reviewer minor 3 件は「既知の non-blocker」として CHANGELOG に明記。
併せて別セッションが起票した Phase 49 (XR-003 resume_pack 注入) の entries も
working tree 上で共存していたため同一 commit で取り込む。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* docs(plans): file Phase 48.2.1 for Reviewer minor follow-up (3 findings)

Phase 48 Reviewer APPROVE 時の minor 3 件を次 minor にまとめて潰すタスクとして起票。
- monitor.go:751-754 checkPlansDrift の dead-code 分岐統合
- monitor.go:691/763 config reader に filepath.Clean 適用
- monitor_test.go に TestMonitorHandler_ReviewerDrift_* 3 ケース追加
DoD はいずれも機械検証可能(go vet / go test / validate-plugin.sh)な形に揃えた。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(session-monitor): address Phase 48 Reviewer minor findings (#48.2.1)

- checkPlansDrift の staleHit 分岐で同一 sprintf を 2 回書いていた
  dead code を削除し単一 return に統合 (monitor.go:747-752)
- readAdvisorTTL / readPlansDriftConfig の configPath を
  filepath.Clean で正規化してパス構築の定石を揃えた
- reviewer drift の TTL ロジックは advisor と共有しているが
  テストが欠落していたため TestMonitorHandler_ReviewerDrift_Hit /
  _Miss / _ConfigOverride の 3 ケースを追加

verify:
- go test ./internal/session/... -run TestMonitorHandler_ReviewerDrift → 3/3 PASS
- go test ./internal/session/... ./cmd/harness/... → 全 PASS (無回帰)
- go vet ./... → warning 0
- tests/validate-plugin.sh → 41 pass / 0 fail

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* docs(plans): mark Phase 48.2.1 cc:完了 [bdbcb70] and close CHANGELOG non-blocker

- Plans.md: 48.2.1 を cc:完了 [bdbcb70] に更新
- CHANGELOG [Unreleased]: 「既知の non-blocker」節をクローズ記述に差し替え、
  3 件の finding がそれぞれどう解消されたかを具体的に明記

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(hooks): wire memory-session-start + userprompt-inject-policy scripts (XR-003 / Phase 49)

harness-mem の記憶注入 shell scripts は plugin に bundle 済だったが
.claude-plugin/hooks.json から一度も呼ばれていなかった。結果として
新 session で直前 session の summary が additionalContext に注入されず、
このマシンでは memory-resume-pack.json が 12 日前のまま固まっていた。

- SessionStart の hooks 配列末尾に bash memory-session-start.sh を追加
  (timeout 30, once=true)。既存の Go 実装 (harness hook session-start /
  memory-bridge) は並走。
- UserPromptSubmit の hooks 配列に bash userprompt-inject-policy.sh を
  memory-bridge と inject-policy の間に挿入 (timeout 15)。既存 Go 実装の
  harness hook inject-policy は additionalContext を返さない stub なので
  shell 版が記憶本体を載せる。
- CHANGELOG Unreleased に XR-003 / Phase 49 を追加。
- Plans.md Phase 49 を新設計 (hooks.json wiring) に書き換え。

Refs: XR-003, harness-mem Plans.md §90 / S90-001

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore(release): v4.3.1 — Session Monitor active watching + XR-003 hooks wiring

Bundled patch release covering Phase 48, 48.2.1, and 49.

Phase 48 (session-monitor active watching):
- harness-mem health probe + ⚠️ output
- advisor/reviewer drift detection via session.events.jsonl TTL scan
- Plans.md drift thresholds (WIP >= 5 / stale >= 24h)

Phase 48.2.1 (Reviewer minor findings):
- checkPlansDrift dead-code merged into single return
- filepath.Clean applied in config readers
- TestMonitorHandler_ReviewerDrift_* (hit/miss/config-override) added

Phase 49 (XR-003 resume-pack injection wiring):
- cherry-picked 2c60972 (hooks.json wiring of memory-session-start.sh
  and userprompt-inject-policy.sh)
- dual sync fix: hooks/hooks.json now carries the same Phase 49 entries
  (PR #92 left hooks/hooks.json stale — this would have been silently
  clobbered by sync-plugin-cache.sh)
- test-memory-hook-wiring.sh extended with:
    * presence checks for memory-session-start.sh / userprompt-inject-policy.sh
      in BOTH hooks.json files (DoD a)
    * hook order assertion: memory-bridge → userprompt-inject-policy →
      inject-policy in UserPromptSubmit (DoD d)
    * silent-skip verification when harness-mem daemon unreachable (DoD c)

Version triple sync: 4.3.0 → 4.3.1 (VERSION / plugin.json / harness.toml)
CHANGELOG: [Unreleased] → [4.3.1] - 2026-04-19

Supersedes PR #92 (single-hooks-file defective change).

verify:
- tests/test-memory-hook-wiring.sh → OK
- tests/validate-plugin.sh → 41 pass / 0 fail
- go test ./internal/session/... ./cmd/harness/... → all PASS

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(mem-health,monitor): address CodeRabbit critical findings on PR #93

Two semantic/security fixes surfaced by CodeRabbit review. Kept scope to the
critical items; cosmetic findings (deleted-concepts.yaml allowlist, CHANGELOG
markdownlint, scanner ring buffer optimization, jq null-safe mapping) are
deferred to a 4.3.2 follow-up issue.

Fix #3 — mem health subcommand now probes the daemon (DoD alignment):
- previously runMemHealthCheck() only inspected ~/.claude-mem/ files, so a
  dead daemon would still report healthy if settings.json existed
- added probeHarnessMemDaemon(): TCP connect to HARNESS_MEM_HOST:HARNESS_MEM_PORT
  (default 127.0.0.1:37888) with 500ms timeout
- probe runs after file integrity check; failure returns
  {healthy:false, reason:"daemon-unreachable"} and exit 1
- package-level daemonProbe variable enables test injection; existing 3 tests
  stub it (healthy→nil, not-initialized/corrupted→early-exit), new
  TestRunMemHealth_DaemonUnreachable verifies the TCP-failure path

Fix #4 — defaultMemHealthCheck no longer executes projectRoot/bin/harness:
- previous resolution (projectRoot/bin/harness → PATH fallback) exposed a
  guardrail-bypass risk if a malicious binary was committed to the repo
- new resolveHarnessBinary() uses os.Executable() → CLAUDE_PLUGIN_ROOT/bin/harness
  → exec.LookPath("harness"), never touching the repo path
- projectRoot arg retained in signature for backward compatibility, marked
  unused with _ prefix and documented

CHANGELOG [4.3.1] — Phase 48.1.1 description updated to reflect the 2-stage
health check (file integrity + daemon TCP probe) and trusted binary
resolution.

Deferred to 4.3.2 follow-up:
- .claude/rules/deleted-concepts.yaml:180  bin/ prefix too broad
- CHANGELOG MD040 fenced code language tag
- monitor.go scanner → ring buffer for last 200 lines
- test-memory-hook-wiring.sh jq map(.command) null-safe

verify:
- go vet ./... → no warnings
- go test ./internal/session/... ./cmd/harness/... → all PASS (incl. new
  TestRunMemHealth_DaemonUnreachable)
- tests/validate-plugin.sh → 41 pass / 0 fail

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

---------

Co-authored-by: CJ2 <tachibanashuuta@CJs-MacBook-Pro.local>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
kimseunghyun-kr added a commit to kimseunghyun-kr/claude_team_harness that referenced this pull request May 15, 2026
kimseunghyun-kr added a commit to kimseunghyun-kr/claude_team_harness that referenced this pull request May 15, 2026
…irty-tree filter + --only pathspec + post-Ratified test

Fix Chachamaru127#2 (UX blocker): git_dirty() now filters out untracked files (?? prefix).
Untracked files don't risk commit-bleed since orchestrator commits use --only
pathspec, and a leftover sample file or IDE swap file should not block init.

Fix Chachamaru127#2 (related): all three orchestrator commit sites (init, commit-or-forfeit,
ratify) now use 'git commit --only <pathspec>' so foreign staged work doesn't
silently ride along with epoch commits.

Fix Chachamaru127#3: new test TestParser_PostcheckRejectsAppendAfterRatified pins the
boundary edge case where a persona appends content below the final top-level
section. The new section-boundary parsing in lib/sketchboard already rejects
this (additions land in the wrong epoch range); this commit ensures it stays
covered.
kimseunghyun-kr added a commit to kimseunghyun-kr/claude_team_harness that referenced this pull request May 15, 2026
…+ gc + persona prompt rewrites

Wires the per-persona reasoning branch model end-to-end. Personas now reason
freely on their own worktree-isolated branches and a separate extraction call
(temperature=0, general-purpose) reformats the free-form reasoning into the
canonical BID JSON or WRITE block schema. This eliminates the prose-around-JSON
contract violations the v0.1.1 user smoke surfaced — the LLM is no longer asked
to reason and format simultaneously.

spawn_winner.py:
  - reasoning-manifest: BID-REASONING or WRITE-REASONING manifest with
    worktree_path, reasoning_branch, expected_commit_msg sidecars. Bid memory
    + eavesdrop excerpts injected by collect-bids upstream.
  - extraction-manifest: reads reasoning branch HEAD, emits fixed extraction
    prompt with model_config.temperature from harness.toml (default 0.0).
    For BID: emits JSON-only instructions. For WRITE: instructs the extractor
    to Edit Sketchboard.md directly with the canonical block format.
  - manifest / postcheck / bid-postcheck / validate-bids preserved for
    sequential mode fallback + existing test fixtures.

collect_bids.py:
  - Loads per-persona bid history from epoch-N-bids.jsonl, injects into
    reasoning prompt as 'Your prior bids this epoch:' block (audit fix Chachamaru127#3 —
    inter-spawn bid memory was missing).
  - Eavesdrop infrastructure: when eavesdrop_enabled=true (off by default),
    probabilistically samples other personas' latest reasoning branches and
    injects 300-char excerpts. v0.1.2 limit: naive first-N-chars excerpt;
    v0.1.3 upgrades to structured-extract.
  - Manifest now sidecars reasoning_branch + worktree_path + bid_history +
    eavesdrop_excerpts so SKILL.md can drive worktree_create / two-turn flow.
  - Lazy orphan-worktree audit on every call (crash recovery).
  - Reports spawn_mode from config.

orchestrate_epoch.py:
  - New cmd_gc with --dry-run and --keep-last <N>. Removes worktrees + branches
    older than gc_keep_epochs (default 3). Logs to gc.log.
  - cmd_begin now runs orphan-worktree audit before initializing epoch state.

agents/{scaling-optimist,architecture-skeptic,bias-auditor}.md:
  - Rewritten initialPrompt to describe both two-turn (default) and
    single-turn (sequential fallback) modes. Drops the rigid 'output JSON
    line' instruction — that's now extraction's job.
  - bias-auditor includes a v0.1.2 ACCESS CONSTRAINT block explicitly stating
    the auditor reads main Sketchboard.md only, never other personas'
    reasoning branches. Per plan decision: auditor audits committed
    deliberation record, not reasoning process.

skills/harness-deliberate/SKILL.md:
  - Procedure step 3 rewritten for two-turn flow with explicit worktree
    creation, reasoning spawn, branch isolation check, extraction spawn, and
    worktree cleanup per slot. Legacy single-turn flow preserved as sequential
    fallback.

tests/test-deliberation-two-turn.sh (new, 8 assertions):
  - BID reasoning manifest structure (worktree_path, branch, commit msg)
  - BID extraction manifest structure (temperature=0.0, JSON instructions)
  - WRITE reasoning manifest --bid/--reason validation
  - Bid history injection per persona
  - collect-bids sidecars (reasoning_branch, worktree_path, eavesdrop_excerpts)
  - Eavesdrop disabled by default
  - gc subcommand dry-run
  - Persona prompts rewritten for reasoning mode

Test gate (31/32 deliberation assertions):
  test-deliberation-worktrees:        7/7
  test-deliberation-two-turn:         8/8  (new)
  test-sketchboard-parser:            5/5
  test-deliberation-bidding:          4/4
  test-sketchboard-conflict-detection: 5/5
  test-deliberation-personas:         2/3  (1 leftover enabled=true from user smoke)

validate-plugin.sh: 46/1/1 (same as baseline, no regressions)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants