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 number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
{
"name": "ndf",
"source": "./plugins/ndf",
"description": "Claude Code plugin (v10.17.3): 8 specialized agents (plus 1 worker agent for the 3-layer workflow) and 45 focused NDF skills for PR/review workflows, cross-review, implementation planning, plan-to-spec, Docker container access, statusline, external AI delegation (Codex/agy), transcript retention guard, and optional Slack notifications.",
"description": "Claude Code plugin (v10.17.4-dev.1): 8 specialized agents (plus 1 worker agent for the 3-layer workflow) and 45 focused NDF skills for PR/review workflows, cross-review, implementation planning, plan-to-spec, Docker container access, statusline, external AI delegation (Codex/agy), transcript retention guard, and optional Slack notifications.",
"policy": {
"installation": "AVAILABLE",
"authentication": "ON_INSTALL"
Expand Down
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ ai-plugins/

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

**NDFプラグイン**は、このマーケットプレイスの主要プラグインです(v10.17.3)。plugin 名は全ランタイムで `ndf` を維持し、配布物は `plugins/ndf/` の1ディレクトリにまとまっています。
**NDFプラグイン**は、このマーケットプレイスの主要プラグインです(v10.17.4-dev.1)。plugin 名は全ランタイムで `ndf` を維持し、配布物は `plugins/ndf/` の1ディレクトリにまとまっています。
- Skill の実体は `plugins/ndf/skills/` の1箇所。配布先は `plugins/ndf/manifests/*-skills.txt` が決める
- Claude Code版は 8個の専門サブエージェントと 3 層の worker の定義 1 個、公開Skills、PreToolUse/SessionStart/Stopフックを提供
- Codex版は Codex向け公開Skillsと任意Slack通知hookを提供
Expand Down
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,27 @@
**開発版(接尾辞の付いた版)は載せない。** `9.8.0` は `9.8.0-dev.1` までしか出ておらず、
その内容は `10.0.0` で届いている。

## [ndf 10.17.4] - 2026-09-23

### 追加

- **区間の切れ目の再起動と次のコマンドの入力を、前景の中継で自動にした**(#895。Claude Code だけ)。
`scripts/relay.py` を足した。副命令は `run`(中継を始める)/ `stop`(停止の印を置く)/ `mark`
(Stop hook から最後の応答の `ndf-next` のブロックを印へ写す)/ `install`(SessionStart hook から
中継を `${XDG_DATA_HOME:-~/.local/share}/ndf/relay.py` へ置き直し、bash / zsh の設定へ
`alias claude=...` を印のついた囲みで 1 度だけ足す)。中継は印を受けると `/exit` を入力し、
プラグインを更新し、同じ端末でブロックの中身を渡して claude を起動し直す。非対話の起動・副命令・
パイプ・中継の下の `claude -p`・`NDF_RELAY=0` は中継を挟まずに素通しする。上限は 1 日の起動回数
(`NDF_RELAY_MAX_STARTS`、既定 20)・空回り(3 区間続けて起動から 120 秒未満)・静まり
(`NDF_RELAY_QUIET`、既定 15 秒)。`NDF_RELAY_AUTO=0` で `install` が何もしなくなる
(`development-workflow/references/relay.md`)

### 変更

- **中継の直接の子の conductor では、文脈量の hook が上限を超えた起動を 1 度の通しなしに止め続ける**(#895)。
新しい会話で打つコマンドは `ndf-next` の囲みのブロック 1 つで出す
(`development-workflow/references/context-window.md` の「新しい会話で戻す」)

## [ndf 10.17.3] - 2026-09-23

### 変更
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Claude Code / Codex / Kiro CLI / agy 向けのスキル・MCP設定を共有す

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

**NDFプラグイン v10.17.3** は、同じ `ndf@ai-plugins` という名前で Claude Code / Codex / Kiro CLI / agy へ配布されるプラグインです。配布物は `plugins/ndf/` の1ディレクトリにまとまっており、Skill の実体は `plugins/ndf/skills/` の1箇所だけです。どのランタイムへ配るかは `plugins/ndf/manifests/*-skills.txt` が決めます。
**NDFプラグイン v10.17.4-dev.1** は、同じ `ndf@ai-plugins` という名前で Claude Code / Codex / Kiro CLI / agy へ配布されるプラグインです。配布物は `plugins/ndf/` の1ディレクトリにまとまっており、Skill の実体は `plugins/ndf/skills/` の1箇所だけです。どのランタイムへ配るかは `plugins/ndf/manifests/*-skills.txt` が決めます。

- **公開Skills**: Claude Code向け core 45個、Kiro向け core 44個、Codex向け core 43個、agy向け core 43個に分離。
- **元Skills(45個)**:
Expand Down Expand Up @@ -111,7 +111,7 @@ hook を効かせる手順と、新しい版へ入れ替える手順は

| プラグイン名 | バージョン | 説明 | 詳細 |
|------------|----------|------|------|
| **ndf** | 10.17.3 | Claude Code / Codex / Kiro CLI / agy へ 1 ディレクトリから配布する NDF プラグイン。8個の専門エージェントと 3 層の worker の定義 1 個(Claude版)、公開Skills(Claude Code向け core 45個、Kiro向け core 44個、Codex向け core 43個、agy向け core 43個)、4ランタイム共通の作業ツリー運用フック(PreToolUse / SessionStart / userPromptSubmit / agentSpawn / PreInvocation)、Claude Stopフック、Codex/Kiro向け通知・実行補助を提供。v4.0.0 で Codex MCP サーバを廃止し、`/ndf:external-ai` skill + `corder` エージェント経由の CLI 直接実行に一本化。 | [README](./plugins/ndf/README.md) |
| **ndf** | 10.17.4-dev.1 | Claude Code / Codex / Kiro CLI / agy へ 1 ディレクトリから配布する NDF プラグイン。8個の専門エージェントと 3 層の worker の定義 1 個(Claude版)、公開Skills(Claude Code向け core 45個、Kiro向け core 44個、Codex向け core 43個、agy向け core 43個)、4ランタイム共通の作業ツリー運用フック(PreToolUse / SessionStart / userPromptSubmit / agentSpawn / PreInvocation)、Claude Stopフック、Codex/Kiro向け通知・実行補助を提供。v4.0.0 で Codex MCP サーバを廃止し、`/ndf:external-ai` skill + `corder` エージェント経由の CLI 直接実行に一本化。 | [README](./plugins/ndf/README.md) |
| **playwright-kit** | 2.0.3 | Playwright による E2E テストの計画・実装・証跡管理を提供するプラグイン。ページ役割からのテスト計画、動画 / trace 付きスクリプト実装、レポート生成と Drive 保管、playwright_kit ランタイム(init、a11y / CWV スキャン)の 4 Skill。NDF v7.0.0 で分離。 | [README](./plugins/playwright-kit/README.md) |

### 変更履歴
Expand Down
15 changes: 14 additions & 1 deletion docs/ndf-version-decisions.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# NDF の版ごとの決定と理由(v10.12.0〜v10.17.3
# NDF の版ごとの決定と理由(v10.12.0〜v10.17.4

`CLAUDE.md` から移した、出た版の記録である。**その版で何を決め、なぜそう決めたか**を残す。
変更点の列挙は `CHANGELOG.md` にあり、こちらは判断の理由を持つ。**`CLAUDE.md` へ書くのは
Expand Down Expand Up @@ -314,3 +314,16 @@ CLI プロセスとして起動するため、ホストと同じランタイム
supervisor の背景の子に数えられず、応答を終えた supervisor は worker が終わっても起こされない。待つのを
`置き場所` の中身ではなく別ファイルの目印にしたのは、書きかけの写しや長い出力に反応しないためで、
起動の前に目印を消すのは前の worker の目印で即座に終わらないためである。

v10.17.4 で区間の切れ目の再起動と次のコマンドの入力を前景の中継に任せた(マイルストーン 26「17 トークン
消費の削減」、#895)。確定仕様は
[ndf-relay-segment-restart.md](specifications/ndf-relay-segment-restart.md) にある。

**中継は端末の前景に常駐し、claude を擬似端末の子として起動する形だけにする** ── 前提が端末と
Python 3 だけになり、tmux の有無を確かめる処理が要らない。2 つの形を持つと使われない側が古くなる。
**区間の終わりは最後の応答の `ndf-next` のブロック 1 つで決め、関門は区間の中で `AskUserQuestion` の
まま受ける** ── 画面の文言から関門を読むと、Claude Code の版で文言が変わったときに関門の前で切る。
**始められない・止まると決めたときは今までどおりの手動の運用へ落ちる** ── 止めると、前提をそろえる
まで claude を起動できない。**alias はシェルの設定へ印のついた囲みで 1 度だけ足し、消されたら足し
直さない** ── 利用者が明示に自動を求めた。囲みの外は書き換えず、消したのは利用者の判断である。
**背景の処理が動いている Stop では印を書かない** ── 切ると supervisor が子の claude と一緒に終わる。
4 changes: 2 additions & 2 deletions docs/versioning-and-distribution.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,11 @@ semver の順序で除外されるのは、プラグイン間の依存解決(`

| 版 | 形 | 意味 |
| --- | --- | --- |
| 正式版 | `10.17.3` | 利用者が常用してよい |
| 正式版 | `10.17.4` | 利用者が常用してよい |
| 開発版 | `10.18.0-dev.1` | 検証中。入れたくない利用者は取得を控えられる |
| 公開前の確認版 | `10.18.0-rc.1` | 正式版の候補。残るのは確認だけ |

- 接尾辞は**次に出す正式版の版数へ付ける**。`10.17.3` の次を開発するなら `10.18.0-dev.1`
- 接尾辞は**次に出す正式版の版数へ付ける**。`10.17.4` の次を開発するなら `10.18.0-dev.1`
- 連番は開発版を出すたびに増やす。**同じ版数で中身を差し替えない**。差し替えると、利用者の
手元にある版と `main` の版が同じ番号で別物になり、何を確かめたのかが分からなくなる
- **正式版を出すときは接尾辞を外す。** `10.18.0-dev.3` の次は `10.18.0`
Expand Down
4 changes: 2 additions & 2 deletions plugins/ndf/.claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "ndf",
"version": "10.17.3",
"description": "Claude Code plugin (v10.17.3): 8 specialized agents (plus 1 worker agent for the 3-layer workflow) and 45 focused NDF skills for PR/review workflows, cross-review, implementation planning, plan-to-spec, Docker container access, statusline, external AI delegation (Codex/agy), transcript retention guard, and optional Slack notifications.",
"version": "10.17.4-dev.1",
"description": "Claude Code plugin (v10.17.4-dev.1): 8 specialized agents (plus 1 worker agent for the 3-layer workflow) and 45 focused NDF skills for PR/review workflows, cross-review, implementation planning, plan-to-spec, Docker container access, statusline, external AI delegation (Codex/agy), transcript retention guard, and optional Slack notifications.",
"author": {
"name": "takemi-ohama",
"url": "https://github.com/takemi-ohama"
Expand Down
4 changes: 2 additions & 2 deletions plugins/ndf/.codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "ndf",
"version": "10.17.3",
"description": "Codex plugin (v10.17.3): 43 focused NDF skills for PR/review workflows, cross-review, implementation planning, plan-to-spec, Docker container access, external AI delegation (Codex/agy), and optional Slack completion notifications.",
"version": "10.17.4-dev.1",
"description": "Codex plugin (v10.17.4-dev.1): 43 focused NDF skills for PR/review workflows, cross-review, implementation planning, plan-to-spec, Docker container access, external AI delegation (Codex/agy), and optional Slack completion notifications.",
"skills": [
"./skills/cherry-pick-pr",
"./skills/cross-refactoring",
Expand Down
41 changes: 22 additions & 19 deletions plugins/ndf/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ bash plugins/ndf/dev.kiro/install.sh --dry-run

```bash
python3 -c "import json;print(json.load(open('.kiro/agents/ndf.json'))['description'])"
# => NDF統合開発エージェント(Kiro CLI用 / v10.17.3
# => NDF統合開発エージェント(Kiro CLI用 / v10.17.4-dev.1
```

### agy
Expand Down Expand Up @@ -119,25 +119,28 @@ agy plugin list
# => {"imports":[{"name":"ndf","source":"antigravity","components":["skills","agents","hooks"]}]}
```

## v10.17.3 へ更新するとき
## v10.17.4-dev.1 へ更新するとき

**cross-review の席の埋め方と、supervisor の待ち方を直しました**(マイルストーン 26「17 トークン
消費の削減」、#892 #901)。cross-review はホストのランタイムもレビューの輪番に入れ、supervisor は
worker の途中の通知を受けても止まらなくなります。Skill の数は変わりません。引数・Skill・
スクリプトの削除や改名は無く、状態ファイルの移行も要りません。
**区間の切れ目の再起動と、次のコマンドの入力を自動にしました**(マイルストーン 26「17 トークン
消費の削減」、#895。Claude Code だけ)。`/goal /ndf:development-workflow` の区間の切れ目で人が行っていた
`/exit`・起動し直し・次のコマンドの貼り付けを、前景の中継(`scripts/relay.py`)が行います。
Skill の数は変わりません。引数・Skill・スクリプトの削除や改名は無く、状態ファイルの移行も要りません。
変更点の一覧は [CHANGELOG.md](../../CHANGELOG.md) にあります。

**正式版です。** `main` に載ります。中身は開発版 `10.17.3-dev.1` と同じで、版数の接尾辞だけを
外しました
**開発版です。** `develop` にだけ載ります。取得元へ `#develop` を足す手順は
[docs/versioning-and-distribution.md の「開発版を試す」](../../docs/versioning-and-distribution.md#開発版を試す)にあります

| 変わったこと | 中身 |
| --- | --- |
| **cross-review の母集合にホストを入れました**(#892) | 母集合はホストを含む全ランタイムの 4 者になり、使える者から毎ラウンド 2 席を選びます。レビュー担当は CLI プロセスとして起動するため、ホストの会話の作業文脈は持ち込まれません。使える者が 1 者なら、その者と同じランタイムの 2 つ目(`claude-2` など)で席を埋めます。ホストを外すなら `--exclude` で名指しします。この版より前に始めた実行を再開したときは、保存された担当のまま進みます |
| **supervisor が worker の途中の通知で止まらなくなりました**(#901) | worker は最後の応答の前に報告の写しを起動指示の `置き場所` へ書き、完了の目印 `<置き場所>.done` を作ります。supervisor は途中の通知を受けたら、目印の出現を待つ until ループ(上限 3600 秒)を自分の背景の処理として起動してから応答を終えます。手順は `development-workflow/references/waiting.md` の「途中の通知を受けたとき」にあります |
| **SessionStart hook がシェルの設定へ `claude` の alias を 1 度だけ足します**(#895) | `relay.py install` が中継を `${XDG_DATA_HOME:-~/.local/share}/ndf/relay.py` へ置き、bash なら `~/.bashrc`、zsh なら `${ZDOTDIR:-~}/.zshrc` の末尾へ印のついた囲み(`# >>> ndf relay >>>` 〜 `# <<< ndf relay <<<`)で alias を足します。書く前に `<設定>.ndf-bak-<UTC の時刻>` へ写しを取ります。既に `claude` の alias か関数があれば足しません。戻すには囲みを消します(足し直しません)。`NDF_RELAY_AUTO=0` で何もしなくなります |
| **区間の切れ目で中継が次の区間を起動します**(#895) | conductor が最後の応答に `ndf-next` のブロックを出すと、中継が `/exit` を入力し、プラグインを更新し、同じ端末でブロックの中身を渡して `claude` を起動し直します。止めるのは `python3 ~/.local/share/ndf/relay.py stop` か `NDF_RELAY=0 claude` です。`claude -p`・副命令・パイプなど非対話の起動は中継を挟みません。1 日の起動は 20 回まで(`NDF_RELAY_MAX_STARTS`)です |
| **中継の下では文脈量の上限で止め続けます**(#895) | 中継の直接の子の conductor では、文脈量の hook が工程へ入る起動を 1 度の通しなしに止め、新しい区間で打つコマンドを `ndf-next` のブロックで示させます |

手順と止め方・上限・記録の読み方は `skills/development-workflow/references/relay.md` にあります。

正式版のチャネル(ref を指定せずに登録した取得元)なら、次で入れ替わります。**動いているセッションには
反映されない**ため、更新したあとは起動し直してください。開発版を試すために `develop` を登録した
場合は、[docs/versioning-and-distribution.md の「ランタイムごとの取得と導入」](../../docs/versioning-and-distribution.md#ランタイムごとの取得と導入)
開発版のチャネル(`develop` を登録した取得元)なら、次で入れ替わります。**動いているセッションには
反映されない**ため、更新したあとは起動し直してください。alias は次に開いたシェルから効きます。正式版へ戻すときは
[docs/versioning-and-distribution.md の「ランタイムごとの取得と導入」](../../docs/versioning-and-distribution.md#ランタイムごとの取得と導入)
の手順で ref を指定せずに登録し直してから導入します。

```bash
Expand All @@ -156,9 +159,9 @@ codex plugin add ndf@ai-plugins
にあります。

```bash
grep -q '"version": "10.17.3"' "$SCRIPTS/../.claude-plugin/plugin.json"; echo "exit=$?" # 0 なら この版が入っている
python3 -c 'import sys; sys.path.insert(0, sys.argv[1]); from lib import assignment; sys.exit(0 if "claude" in assignment.review_pool("claude") else 1)' "$SCRIPTS"; echo "exit=$?" # 0 なら cross-review の母集合にホストが入る
grep -qsF '<置き場所>.done' "$SCRIPTS/../skills/development-workflow/references/waiting.md"; echo "exit=$?" # 0 なら 完了の目印を待つ手順が入っている
grep -q '"version": "10.17.4-dev.1"' "$SCRIPTS/../.claude-plugin/plugin.json"; echo "exit=$?" # 0 なら この版が入っている
test -f "$SCRIPTS/relay.py"; echo "exit=$?" # 0 なら 中継が入っている
grep -qF 'relay.py install' "$SCRIPTS/../hooks/claude.json"; echo "exit=$?" # 0 なら SessionStart hook が中継を置き alias を足す
```

## Playwright テストについて
Expand Down Expand Up @@ -327,7 +330,7 @@ agy models # 認証の確認

```text
# 動く: 実体パスを示して読ませる
~/.codex/plugins/cache/ai-plugins/ndf/10.17.3/skills/deploy/SKILL.md を読んで、その手順どおりに qa/staging へ deploy PR を作成してください。
~/.codex/plugins/cache/ai-plugins/ndf/10.17.4-dev.1/skills/deploy/SKILL.md を読んで、その手順どおりに qa/staging へ deploy PR を作成してください。

# 動かない: 明示起動 ($ は展開されない)
$deploy qa/staging
Expand All @@ -349,14 +352,14 @@ marketplace 経由でインストールした場合、Skill の実体は **ワ
```text
$CODEX_HOME/plugins/cache/<marketplace>/<plugin>/<version>/skills/<skill>/SKILL.md
# 既定 ($CODEX_HOME=~/.codex) の例:
# ~/.codex/plugins/cache/ai-plugins/ndf/10.17.3/skills/deploy/SKILL.md
# ~/.codex/plugins/cache/ai-plugins/ndf/10.17.4-dev.1/skills/deploy/SKILL.md
```

そのため「`deploy` の SKILL.md を探して読んで」のような曖昧な依頼は、Codex のファイル探索がワークスペース内に限られる状況では失敗しえます。**抑止した Skill は `$<skill 名>` が展開されない**ので、`codex plugin list` で実体パスを確認し、絶対パスを渡してください。

```bash
codex plugin list | grep 'ndf@ai-plugins'
# => ndf@ai-plugins installed, enabled 10.17.3 <path>
# => ndf@ai-plugins installed, enabled 10.17.4-dev.1 <path>
```

抑止していない Skill(`markdown-writing` など)はキャッシュ配下でも `$<skill 名>` で解決するため、そちらは `$` 起動が使えます。
Expand Down
Loading
Loading