Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line numberDiff line numberDiff line change
Expand Up@@ -9,7 +9,7 @@
{
"name": "ndf",
"source": "./plugins/ndf-claude",
"description": "Claude Code plugin (v8.5.4): 8 specialized agents and 27 focused NDF skills for PR/review workflows, cross-review, implementation planning, plan-to-spec, Docker container access, statusline, external AI delegation (Codex/Gemini), transcript retention guard, and optional Slack notifications."
"description": "Claude Code plugin (v8.6.0): 8 specialized agents and 27 focused NDF skills for PR/review workflows, cross-review, implementation planning, plan-to-spec, Docker container access, statusline, external AI delegation (Codex/Gemini), transcript retention guard, and optional Slack notifications."
},
{
"name": "playwright-kit",
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -77,7 +77,7 @@ ai-plugins/

## NDFプラグインについて

**NDFプラグイン**は、このマーケットプレイスの主要プラグインです(v8.5.4)。plugin 名は全ランタイムで `ndf` を維持し、配布物は `plugins/ndf-claude` / `plugins/ndf-codex` / `plugins/ndf-kiro` に分離しています。
**NDFプラグイン**は、このマーケットプレイスの主要プラグインです(v8.6.0)。plugin 名は全ランタイムで `ndf` を維持し、配布物は `plugins/ndf-claude` / `plugins/ndf-codex` / `plugins/ndf-kiro` に分離しています。
- 共通編集元は `plugins/ndf-shared/`
- Claude Code版は 8個の専門サブエージェント、公開Skills、SessionStart/Stopフックを提供
- Codex版は Codex向け公開Skillsと任意Slack通知hookを提供
Expand Down
6 changes: 5 additions & 1 deletion CLAUDE.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -29,7 +29,7 @@ skills/ → 実行可能なワークフロー

詳細は `docs/specifications/ndf-knowledge-and-kiro.md` を参照。

## NDF v8.5.4 の Skill 構成
## NDF v8.6.0 の Skill 構成

Skill は 31 個で、配布は `plugins/ndf-shared/manifests/` が唯一の基準(Claude Code 27 / Codex 25 / Kiro 26)。ブラウザ自動テストの 4 個は `playwright-kit` プラグインへ分離した(`plugins/playwright-kit-shared/`)。frontmatter の書き方は `plugins/ndf-shared/skills/README.md` の規約に従い、`python3 scripts/check-skill-frontmatter.py` で検査する。利用実績と維持・統合・削除の判定は `docs/specifications/ndf-skill-inventory.md` に記録する。

Expand DownExpand Up@@ -57,6 +57,8 @@ v8.5.3 で `cross-refactoring` の投稿の確認を入れた。投稿は AI 自

v8.5.4 で `cross-refactoring` の差分予算を手法別にした。新しい定義を作って呼び出し側を書き換える手法は、抽出した本体に加えて呼び出し側の書き換え・import の追加・引数の受け渡しが固定費として乗る。実測で予算超過として落ちた 4 件はいずれも `long_method` の抽出で、見積の 2.03〜2.31 倍だった。範囲の逸脱ではなく、倍率 2 の予算をわずかに超えただけである。抽出系の 7 手法だけ倍率を 3 にした(範囲外を触った実測例は見積の 4 倍なので取り逃がさない)。あわせて提案プロンプトの見積の指示へ固定費と現状固定テストを数えることを明記し、`init` が kiro の既定 `auto` を検知して「集計から分離される」ことを着手前に知らせるようにした。詳細は `plugins/ndf-shared/skills/cross-refactoring/docs/02-apply-and-review.md`。

v8.6.0 で `cross-refactoring` のコミット粒度を 1 改善項目 = 1 コミットに変えた。手順を 1 手ずつ進めることと、その途中経過を履歴に残すことは別である。手ごとにテストを回すのは変わらないが、残すのは項目単位の 1 コミットだけにする(現状固定テストが要る項目のみ 2 コミット)。適用と修正の両方で検証するのは、適用側だけ揃えても指摘への対応という名目で刻んだ履歴が戻ってくるためである。テストの回数も項目の単位に合わせた。進行側が申告されたコミットごとに実行するため、実装担当にも手ごとの実行を義務づけると同じテストが手数の 2 倍だけ走る(実測 44 手で 88 回)。あわせて改修計画(なぜ直すのか・どう直すのか)を `--plan-file`(既定 `issues/refactoring-plan-rf<PR>.md`)へ書き出すようにした。理由と手順は提案の時点でしか残らず、状態ファイルは差分から除外されるため Pull Request からは読めなかった。公開は生成物の同期と同じコミットに乗せる。詳細は `plugins/ndf-shared/skills/cross-refactoring/docs/02-apply-and-review.md`。

v6.0.0 の対応表(`review` → `pr-review`)は予告どおり削除済み。v6.0.0 以前から移行する場合は v6.1.0 の `ndf-policies` を参照する。

## cross-refactoring
Expand All@@ -74,6 +76,8 @@ v6.0.0 の対応表(`review` → `pr-review`)は予告どおり削除済み
- 収束しない改善項目は **項目単位で取り消す**。合意済みの項目は PR に残る。ただし同一ファイルの隣接行を触る項目どうしは git だけでは分離できないため、そのラウンドは全件取り消しへ退避する
- 生成物・配布物の同期は **進行側の責務**。実装担当にはさせない(範囲外の変更になる)。同期の手順は `--sync-command "bash scripts/build-runtime-plugins.sh"` のように渡す
- 公開するのは **進行側だけ**。実装担当は push しない。進行側が検証を通した後に push するので、未検証の変更が公開されない
- 履歴に残るのは **1 改善項目 = 1 コミット**。現状固定テストが要る項目だけ 2 コミット。テストも項目の単位で 1 回だけ求める
- 改修計画は `--plan-file`(既定 `issues/refactoring-plan-rf<PR>.md`)へ書き出され、生成物の同期と同じコミットで公開される
- `init` が参加 CLI の認証状態を確認する。誤検知するときは `NDF_SKIP_AUTH_CHECK=1`

## cross-review
Expand Down
10 changes: 8 additions & 2 deletions README.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -6,7 +6,7 @@ Claude Code / Codex / Kiro CLI向けのスキル・MCP設定を共有するた

このマーケットプレイスは、チーム全体でAI開発ツール(Claude Code / Codex / Kiro CLI)の導入を加速するための事前設定されたプラグインを提供します。

**NDFプラグイン v8.5.4** は、同じ `ndf@ai-plugins` という名前で Claude Code / Codex / Kiro CLI へ配布されるランタイム別プラグインです。共通ソースは `plugins/ndf-shared/` に集約し、利用者が install する配布物は `plugins/ndf-claude/` / `plugins/ndf-codex/` / `plugins/ndf-kiro/` に分かれています。
**NDFプラグイン v8.6.0** は、同じ `ndf@ai-plugins` という名前で Claude Code / Codex / Kiro CLI へ配布されるランタイム別プラグインです。共通ソースは `plugins/ndf-shared/` に集約し、利用者が install する配布物は `plugins/ndf-claude/` / `plugins/ndf-codex/` / `plugins/ndf-kiro/` に分かれています。

- **公開Skills**: Claude Code向け core 27個、Kiro向け core 26個、Codex向け core 25個に分離。
- **元Skills(30個)**:
Expand DownExpand Up@@ -102,9 +102,15 @@ kiro-cli chat --agent ndf

| プラグイン名 | バージョン | 説明 | 詳細 |
|------------|----------|------|------|
| **ndf** | 8.5.4 | Claude Code / Codex / Kiro CLI 向けに runtime 別配布物を提供する NDF プラグイン。8個の専門エージェント(Claude版)、公開Skills(Claude Code向け core 27個、Kiro向け core 26個、Codex向け core 25個)、Claude SessionStart/Stopフック、Codex/Kiro向け通知・実行補助を提供。v4.0.0 で Codex MCP サーバを廃止し、`/ndf:external-ai` skill + `corder` エージェント経由の CLI 直接実行に一本化。 | [Claude](./plugins/ndf-claude/README.md) / [Codex](./plugins/ndf-codex/README.md) / [Kiro](./plugins/ndf-kiro/README.md) |
| **ndf** | 8.6.0 | Claude Code / Codex / Kiro CLI 向けに runtime 別配布物を提供する NDF プラグイン。8個の専門エージェント(Claude版)、公開Skills(Claude Code向け core 27個、Kiro向け core 26個、Codex向け core 25個)、Claude SessionStart/Stopフック、Codex/Kiro向け通知・実行補助を提供。v4.0.0 で Codex MCP サーバを廃止し、`/ndf:external-ai` skill + `corder` エージェント経由の CLI 直接実行に一本化。 | [Claude](./plugins/ndf-claude/README.md) / [Codex](./plugins/ndf-codex/README.md) / [Kiro](./plugins/ndf-kiro/README.md) |
| **playwright-kit** | 1.0.0 | Playwright による E2E テストの計画・実装・証跡管理を提供するプラグイン。ページ役割からのテスト計画、動画 / trace 付きスクリプト実装、レポート生成と Drive 保管、playwright_kit ランタイム(init、a11y / CWV スキャン)の 4 Skill。NDF v7.0.0 で分離。 | [Claude](./plugins/playwright-kit-claude/README.md) |

### NDF v8.6.0 の主な変更

- **1 改善項目 = 1 コミットにする**: 手順を 1 手ずつ進めることと、その途中経過を履歴に残すことは別である。残すのは項目単位の 1 コミットだけにした(現状固定テストが要る項目のみ 2 コミット)。適用と修正の両方で検証する
- **テストの回数を項目の単位に合わせる**: 進行側が申告されたコミットごとに実行するため、実装担当にも手ごとの実行を義務づけると同じテストが手数の 2 倍だけ走る(実測 44 手で 88 回、約 38 分)。求めるのはコミットの前に通っていることだけにした
- **改修計画を差分の中へ残す**: なぜ直すのか・どう直すのかは提案の時点でしか残らず、状態ファイルは差分から除外されるため Pull Request からは読めなかった。`--plan-file`(既定 `issues/refactoring-plan-rf<PR>.md`)へ書き出し、生成物の同期と同じコミットで公開する

### NDF v8.5.4 の主な変更

- **抽出系の手法で差分予算を超える不具合を修正**: 新しい定義を作って呼び出し側を書き換える手法は、呼び出し側の書き換え・import の追加・引数の受け渡しが固定費として乗る。実測で落ちた 4 件はいずれも見積の 2.03〜2.31 倍で、範囲の逸脱ではなかった。抽出系だけ差分予算の倍率を 3 にし、提案プロンプトの見積の指示にも固定費を数えることを明記した
Expand Down
4 changes: 2 additions & 2 deletions plugins/ndf-claude/.claude-plugin/plugin.json
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
{
"name": "ndf",
"version": "8.5.4",
"description": "Claude Code plugin (v8.5.4): 8 specialized agents and 27 focused NDF skills for PR/review workflows, cross-review, implementation planning, plan-to-spec, Docker container access, statusline, external AI delegation (Codex/Gemini), transcript retention guard, and optional Slack notifications.",
"version": "8.6.0",
"description": "Claude Code plugin (v8.6.0): 8 specialized agents and 27 focused NDF skills for PR/review workflows, cross-review, implementation planning, plan-to-spec, Docker container access, statusline, external AI delegation (Codex/Gemini), transcript retention guard, and optional Slack notifications.",
"author": {
"name": "takemi-ohama",
"url": "https://github.com/takemi-ohama"
Expand Down
8 changes: 7 additions & 1 deletion plugins/ndf-claude/skills/cross-refactoring/SKILL.md
Original file line numberDiff line numberDiff line change
Expand Up@@ -37,6 +37,8 @@ allowed-tools:
| 役割の分離 | 提案・レビューは**ホストを除く 3 者**、適用は**gemini を除く 3 者**。両者は重なるが一致しない |
| レビューの単位 | **提案ラウンドの差分全体**に対して 1 回。項目ごとに回すと CLI 起動回数が採用件数に比例して膨らむ |
| 収束しない項目 | **捨てる。** リファクタリングは任意の作業なので、揉める提案を Pull Request に残さない |
| コミットの単位 | **1 改善項目 = 1 コミット。** テストも項目の単位で 1 回だけ求める(現状固定テストが要る項目のみ 2 コミット) |
| 改修計画 | **差分の中へ残す。** 理由と手順は提案の時点でしか残らない。公開の直前に進行側が書き出し、生成物の同期と同じコミットへ入れる |
| 取り消しの単位 | **改善項目ごと(独立している範囲で)。** 範囲を新しい順に全て戻し、残す項目を積み直す。同一ファイルの隣接行を触る項目どうしは git だけでは分離できないため、そのときは**ラウンド全件へ退避する** |
| 範囲の扱い | `--scope` は**検証にも効く**。範囲外を触ったコミットを含む項目は失敗になる |
| 公開の責務 | **進行側だけが、検証を通した後に push する。** 実装担当は push しない。生成物の同期は `--sync-command` として push の直前に進行側が実行する |
Expand All@@ -61,6 +63,7 @@ allowed-tools:
| `--severity-threshold LEVEL` | この重要度未満は採用しない | `minor` |
| `--test-timeout SEC` | テスト 1 回あたりの上限秒数。超えたら失敗として扱う | `900` |
| `--sync-command CMD` | 生成物を同期するコマンド。**push の直前**に進行側が実行し、差分があれば進行側のコミットとして積む | なし |
| `--plan-file PATH` | 改修計画の書き出し先(**対象リポジトリからの相対パス**)。空文字を渡すと記録しない | `issues/refactoring-plan-rf<PR>.md` |

```text
/ndf:cross-refactoring 130 --scope src/services tests/services --baseline-test "pytest -q"
Expand DownExpand Up@@ -128,7 +131,7 @@ flowchart TD
Merge --> Empty{"採用件数 = 0 ?"}
Empty -->|はい| Final([提案ラウンドの繰り返しを終了]):::ok
Empty -->|いいえ| Apply
Apply["Step 4: 適用(実装担当 1 CLI)<br/>項目ごとに 1 手 1 コミット"]
Apply["Step 4: 適用(実装担当 1 CLI)<br/>1 改善項目 = 1 コミット"]
Apply --> Review["Step 5: レビュー(2 CLI 並列)<br/>ラウンドの差分をまとめて 1 回"]
Review --> Judge{"2 者とも承認 ?"}
Judge -->|いいえ| Fix["Step 6: 指摘修正(実装担当)"]
Expand DownExpand Up@@ -275,6 +278,9 @@ done
| 取り消しの失敗を「全件失敗」として次のラウンドへ進む | 検証を通っていない変更が Pull Request に残る。終了コード 4 は必ず進行ごと止める |
| `--dry-run` の出力を実行結果と混同する | 確認用なので git も状態ファイルも触らない。進行は 1 歩も進まない |
| 複数の改善項目を 1 コミットにまとめる | 取り消し範囲が項目単位で決まらなくなる。適用結果の検証で失敗になる |
| 1 項目を複数のコミットへ刻む | 改善項目と履歴が 1 対 1 で辿れなくなり、取り消しと積み直しのコミットも件数に比例して増える |
| 実装担当に手ごとのテストを義務づける | 進行側もコミットごとに回すため、テストの実行回数が手数の 2 倍になる(実測 44 手で 88 回) |
| 改修計画を状態ファイルにだけ残す | 状態ファイルは差分から除外される。Pull Request を読む側からは、なぜ直したのかも、どう直す計画だったのかも見えない |
| 結果ファイルの申告を検証の材料にする | 実装担当は報告する側。JSON を書き換えるだけで通る検査は機械検証ではない |
| 投稿に失敗したまま結果ファイルを書かずに終了する | 進行側からは「レビュー担当が動かなかった」と区別が付かない。失敗したときほど `post_error` 付きの結果ファイルが要る |
| レビューの指摘に項目 ID を付けない | 同上。差し戻して再レビューになる |
Expand Down
Original file line numberDiff line numberDiff line change
Expand Up@@ -46,10 +46,14 @@ export CROSS_REFACTORING_TMP_DIR="$TMP_DIR"
6. **語彙の受け渡し** — 検証側が持つスメル・手法・重要度の集合を状態ファイルの
`vocabulary` へ書く。提案プロンプトはここから**許容値をそのまま列挙する**。
定義を 1 箇所に保ったまま、読ませ方の不確実性を減らすためである
7. **生成物の同期コマンドの記録** — `--sync-command` を状態ファイルへ保存する。
7. **改修計画の書き出し先の記録** — `--plan-file` を状態ファイルへ保存する。
既定は `issues/refactoring-plan-rf<PR>.md` で、空文字を渡すと記録しない。
**既定で残す**のは、指定できるだけでは誰も指定しないためである。書き出しは
初期化時ではなく、生成物の同期と同じく**push の直前**に行う
8. **生成物の同期コマンドの記録** — `--sync-command` を状態ファイルへ保存する。
実行は初期化時ではなく、**push の直前**に進行側が行う。同期を実装担当の責務に
すると範囲外の変更になり、範囲の検査で全件失敗する(実測 0/5)
8. **着手前のテスト** — `--baseline-test` を実行する。**失敗していたら開始しない**。
9. **着手前のテスト** — `--baseline-test` を実行する。**失敗していたら開始しない**。
壊れた状態から始めると、壊したのか元から壊れていたのか区別できない。
この引数は**必須**である。振る舞いが変わっていないことを示す手段が無い書き換えは、
`refactoring` Skill の定義からして構造改善ではない
Expand DownExpand Up@@ -105,7 +109,7 @@ gemini は NDF の配布先ではないため「標準の配置先」を持た
| `quality-gates` | 「直し終わった」と言える条件の判定 |

`ndf-policies` は**配置しない**。git 運用やコミット規約といったリポジトリ運用の方針で
あり、対象リポジトリの運用と食い違う可能性が高い。必要な規約(1 1 コミット、
あり、対象リポジトリの運用と食い違う可能性が高い。必要な規約(1 改善項目 = 1 コミット、
コミットトレーラー、`--force` 禁止など)はプロンプト側で明示する。

### 守ること
Expand Down
Loading
Loading