Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
e689d39
Docs: #2065 の要求の写しを更新し、Marp と python-pptx を外す決定 12・13 を足す
takemi-ohama Oct 17, 2026
c113a4e
Add: スライドの汎用テンプレート(ページの枠組み・トーン&マナーの差し替え・台本からのノート・尺の計算)(#2065)
takemi-ohama Oct 17, 2026
c4b1581
Test: スライドの汎用テンプレートの生成・枠組みの座標・トーン&マナーの差し替え・台本と尺を検査する (#2065)
takemi-ohama Oct 17, 2026
409affe
Add: Google Slides の全ページのサムネイルを取るスクリプトと、pptx の変換・差し替えの gws のコマンドを対応表へ…
takemi-ohama Oct 17, 2026
fe855df
Add: 発表資料「独自スキルプラグイン開発の薦め」(台本・構成メモ・生成スクリプト)と、資料の生成を検査するテスト (#2065)
takemi-ohama Oct 17, 2026
d88a5b5
Docs: スライドの生成の経路を生成スクリプトの 1 つにし、汎用テンプレート・構成メモと台本・変換とサムネイルの確認を規約から辿れるよ…
takemi-ohama Oct 17, 2026
2e2ae13
Docs: docs/presentations の Marp の手順と build.sh を外し、生成スクリプトの方式へ書き換える (#…
takemi-ohama Oct 17, 2026
ed81ee2
Docs: form-slide.md の比較の語を外す (#2065)
takemi-ohama Oct 17, 2026
c734621
Refactor: gws のスクリプトの出力の末尾と stopped の結果を共有の部品へ寄せ、サムネイルの画像は curl で取る (…
takemi-ohama Oct 17, 2026
4747d5b
Fix: 発表資料のサムネイルの体裁レビューで見つけた流れ図の矢印・箱の文字の余白・1 文字だけの行・下の空白の偏りを直す (#2065)
takemi-ohama Oct 17, 2026
6fc928d
Docs: pptx で差し替えた Google スライドの書体が Arial になる失敗と確かめ方を既知の失敗へ足す (#2065)
takemi-ohama Oct 17, 2026
2188a4c
Refactor: サムネイルのスクリプトとスライドのテストに ruff format を掛ける (#2065)
takemi-ohama Oct 17, 2026
7f94bda
Docs: 確定仕様のスライドの生成の経路と google-workspace の扱う範囲を、生成スクリプトとサムネイルの取得に合わせる …
takemi-ohama Oct 17, 2026
39cbc96
Merge pull request #2069 from devbasex/feat/issue-2065-s2065
takemi-ohama Oct 17, 2026
de22dcd
Test: 現状固定テストを足す — plugins/ndf/skills/release/assets/slides/lib/deck-…
takemi-ohama Oct 18, 2026
d957e66
Refactor: extract_method — plugins/ndf/skills/release/assets/slides/l…
takemi-ohama Oct 18, 2026
16cb49e
Refactor: consolidate_duplication — plugins/ndf/skills/google-workspa…
takemi-ohama Oct 18, 2026
c44baf7
Revert: cross-refactoring の改善を着手前の木へ戻す(確かめの開始の締め切りまでに入らない)
takemi-ohama Oct 18, 2026
bce04a3
fix(#2065): PR 2070 のレビュー指摘 4 件を直す
takemi-ohama Oct 18, 2026
836d04b
Fix: pptx の変換の 1 手目を ignoreDefaultVisibility 付きの files create にし、syst…
takemi-ohama Oct 18, 2026
5a20c8c
Update: スライドの枠組みの章扉をノートを持たず台本の番号を進めないページにし、ページ数の照合から外す
takemi-ohama Oct 18, 2026
59e6508
Update: 発表資料の全ページの文言をスライドの言葉遣いへ直し、章扉 6 つを入れる
takemi-ohama Oct 18, 2026
ff880ce
Docs: #2065 の設計に章扉の扱いを決定 14 として足し、I5 とテスト設計を合わせる
takemi-ohama Oct 18, 2026
d4944bf
Docs: スライドの規約にページの文言の書き方と章扉の扱いを足す
takemi-ohama Oct 18, 2026
b478e00
Update: 発表資料のページの文言をさらに削り、余白の偏りと折り返しを直す
takemi-ohama Oct 18, 2026
be237ca
Update: 発表資料の cross-review のページから再現率の数値を外す
takemi-ohama Oct 18, 2026
23246cb
Update: 発表資料のスキルプラグインのページに Anthropic の公式ドキュメントへのリンクを足す (#2065)
takemi-ohama Oct 18, 2026
83453e4
Update: 発表資料の「スキルプラグイン」を公式の「スキル」と「プラグイン」へ揃える (#2065)
takemi-ohama Oct 18, 2026
508e8a7
Update: 発表資料の似たページを 2 組まとめ、27 ページにする (#2065)
takemi-ohama Oct 18, 2026
b11ba3c
Update: 発表資料の「段」「段階」を業界の語へ直す (#2065)
takemi-ohama Oct 18, 2026
8db8a89
Merge pull request #2072 from devbasex/fix/issue-2065-slide-wording
takemi-ohama Oct 18, 2026
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
5 changes: 5 additions & 0 deletions .github/workflows/pytest.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,11 @@ jobs:
- uses: actions/setup-python@v7
with:
python-version: "3.x"
# スライドの生成スクリプトのテストが node で pptxgenjs を動かす。依存の `npm ci` はテストが
# 自分で打つ(前提のコマンドの確認は根の conftest.py が行う。#2065)
- uses: actions/setup-node@v7
with:
node-version: "22"
- name: Install uv
run: python3 -m pip install --upgrade uv
# 起点はリポジトリの根に置く。環境は根の pyproject.toml と uv.lock が固定する(#1142 の決定 22)。
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -68,3 +68,7 @@ reports/

# cross-review が起動したレビュワーの PID(実行時にだけ作られる)
*-review-pr*.pid

# スライドの生成スクリプトの依存と生成物(#2065)
node_modules/
*.pptx
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ ai-plugins/
| [docs/ndf-plugin-reference.md](docs/ndf-plugin-reference.md) | NDFプラグイン詳細リファレンス |
| [docs/ndf-experiments.md](docs/ndf-experiments.md) | NDF の実験版の台帳(試している仕組み・使った結果・行き先) |
| [docs/specifications/](docs/specifications/) | 完了済みplan/issue由来の確定仕様 |
| [docs/presentations/](docs/presentations/) | 勉強会などで使うスライド資料(Marp形式)とビルド手順。**発表日時点の記録で、以後の構成変更には追随しない** |
| [docs/presentations/](docs/presentations/) | 勉強会などで使うスライド資料。生成スクリプト(pptxgenjs)・台本・構成メモを資料ごとのディレクトリに置く(作り方は `release` の `form-slide.md`)。**発表日時点の記録で、以後の構成変更には追随しない** |
| [docs/articles/](docs/articles/README.md) | 社外ブログへ載せる記事の正本。**書いた日時点の記録で、以後の構成変更には追随しない** |
| [docs/claude-code-skills-survey/](docs/claude-code-skills-survey/01-findings.md) | Claude Code Skills調査レポート(3 本) |
| [docs/development-history/](docs/development-history/) | 2026-09-02 までの開発履歴と知見。**以降の振り返りは、起点の issue か Pull Request のコメントに残す**(`/ndf:retrospective`) |
Expand Down
3 changes: 3 additions & 0 deletions conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,9 @@
"plugins/ndf/skills/cross-review/tests": ("bash", "jq", "git"),
# `assert-characterization.sh` を bash で起動し、チェックの本体が `jq` と `python3` を呼ぶ。
"tests/runtime-smoke": ("bash", "jq", "python3"),
# スライドの生成スクリプト(pptxgenjs)を node で実行し、依存が無ければ `npm ci` で入れる(#2065)
"plugins/ndf/skills/release/tests/test_slide_template.py": ("node", "npm"),
"tests/test_presentation_decks.py": ("node", "npm"),
}

# 読み飛ばしを選ぶ指定。**既定は失敗**である。読み飛ばしたい実行環境のために残すが、
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# 独自プラグイン開発の薦め

社外の勉強会・登壇で話すスライド(台本の 21 ページと章扉 6 つの 27 ページ)。NDF の機能を例に、自分用のスキルを作り、プラグインにして配り、育てることを薦める。
`release` の `form-slide.md` の生成スクリプトの経路で作った。

| ファイル | 中身 |
| --- | --- |
| [script.md](script.md) | 台本(第 7 稿の写し)。ページごとの見出しと読み上げ。スピーカーノートの正本 |
| [notes.md](notes.md) | 構成メモ。ページごとの見出し・役割・根拠の表と、章立て・尺 |
| [slides/build-deck.js](slides/build-deck.js) | 生成スクリプト。スライドの正本 |
| [slides/theme.json](slides/theme.json) | トーン&マナーのファイル |
| `slides/lib/` | NDF の汎用テンプレートの枠組み(`release` の `assets/slides/lib/`)の写し。書き換えない |

## 成果物

Google Slides を成果物にする。pptx は生成スクリプトから作り直せるため、コミットしない。Google Slides の URL は
リポジトリに書かず、作った Pull Request の記録に残す。

## トーン&マナー

汎用テンプレートの既定値(書体 Noto Sans JP、強調の色 `2B6CB0`)を使い、`theme.json` では著作権表示の文言だけを
足した。ロゴは置かない。

| 項目 | 値 |
| --- | --- |
| 版面 | 16:9(10 × 5.625 インチ) |
| 書体 | 既定値 |
| 色 | 既定値 |
| 著作権表示 | `NDF — github.com/devbasex/ai-plugins` |
| ロゴ | なし |
| 写した時点の `lib/` の内容のハッシュ | `e1fbac1642aef0fe49a57b00d7a2575eaf363bbfd5c55b324d53aa778f632800`(`cat slides/lib/*.js \| sha256sum`) |

## 生成と確認の手順

```bash
cd docs/presentations/2026-10-17-skill-plugin-development
(cd slides && npm ci)
node slides/lib/script-time.js script.md --limit 35 # 尺(出力は notes.md の「尺」)
node slides/build-deck.js /tmp/skill-plugin-development.pptx
```

Google Slides への変換と、ページごとのサムネイルでの確認は `release` の `form-slide.md` の「変換と確認」の順に行う。

## 発表日時点の記録

発表日時点の記録で、以後の NDF の変更に追随しない([../README.md](../README.md) の「この資料の位置づけ」)。
数値は 2026-10-17 時点の実測。
90 changes: 90 additions & 0 deletions docs/presentations/2026-10-17-skill-plugin-development/notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
# 構成メモ: 独自プラグイン開発の薦め

台本([script.md](script.md)。第 7 稿の写し)を、社外の勉強会・登壇で話すスライド(台本の 21 ページと章扉 6 つ)にした構成。
各ページの読み上げはスピーカーノートに入り、生成スクリプト([slides/build-deck.js](slides/build-deck.js))が台本から読み込む。

## 構成

キーメッセージ「AI に自分のやり方を教えるのは 1 回でよい。プラグインにして、フォークして育てる」から逆算し、
課題(1〜4)→ NDF の機能(5〜16)→ 事例(17〜18)→ 転換と実践(19〜20)→ まとめ(21)の順に並べた。
台本はページに載せる要素を持たないため、各ページの図・表・箇条書きは読み上げから起こした。読み上げの文をそのまま
ページに写さず、縮めても載せない。ページには 1 つのメッセージと、それを支える短い句(体言止め)・表・流れ・数値だけを置く。
聞き手は NDF を知らないため、内部の語(ゲート・フェーズ・conductor など)は聞き手に通じる語へ言い換えるか、ページの中で
一言で説明する。Skill 名(`/ndf:xxx`)はリードか箱の見出しに置き、何をするものかを必ず添える。事例のプロジェクトは種類で
呼び、名前は出さない。

表の番号は台本の番号で、章扉(「章立て」の節)は数えない。

| # | ページの見出し | 役割 | 根拠 |
| ---: | --- | --- | --- |
| 1 | 表紙 | — | — |
| 2 | 同じ指摘を、何度もしていませんか | 繰り返す 3 つの指摘を吹き出しで並べ、「セッションが切れると忘れる」を注意の地で示す | 台本 2 |
| 3 | CLAUDE.md への追記では足りない | 4 つの壁(コンテキスト・強制力・手順・ポータビリティ)を 2 × 2 の区画で示す | 台本 3 |
| 4 | スキルとプラグイン | スキル(作る単位・手順書)とプラグイン(配る単位・スキル・スクリプト・hook・サブエージェントをまとめる)の 2 区画、公式ドキュメント(Anthropic・OpenAI・Agent Skills の規格)へのリンク、4 つのランタイムの並び | 台本 4、Claude Code と Codex の公式ドキュメント |
| 5 | NDF: 自分のやり方をプラグインに | リリース 102 回・Skill 48 個・ランタイム 4 つ・導入 10 リポジトリの数値と、リポジトリの URL | 台本 5(2026-10-17 の実測) |
| 6 | Issue の束を渡せば、並列に進む | マイルストーン → グループ → スプリント(グループごとに並列)→ リリースの図と、2 回の承認(設計・本番リリース)。直前のリリースの例は注 | 台本 6 |
| 7 | 変更の大きさで、踏む工程を変える | `/ndf:development-workflow` が変更を分ける 5 つのモードの表と、light と standard の工程の違い | 台本 7、`development-workflow` の `references/workflow-modes.md` |
| 8 | 機能追加は、この流れで 1 周 | standard モードの工程を設計・実装・リリースの 3 行に並べ、承認 1・2 を注意の地で示す | 台本 8 |
| 9 | 実績のある開発技法を組み込む | DDD・テストファースト・アジャイルの 3 列。用語集 580 語と WSJF を載せる | 台本 9 |
| 10 | コードの前に、読める文書を | `/ndf:requirements-design`(完了の条件)と `/ndf:design`(作り方)の 2 区画、`/ndf:document-restructuring` の書いた順と読み手の順の対比(内容は足さない)、設計 PR と承認 1 の区画 | 台本 10 |
| 11 | 複数の AI で、見て直す | `/ndf:cross-review`(2 つの AI を入れ替えて指摘が尽きるまで)と `/ndf:cross-refactoring`(全員が提案し 1 つが既定 30 分で実施、壊れたら取り消す)の 2 列の流れと要点(数値は載せない) | 台本 11 |
| 12 | 3 層のエージェントで止めない | conductor(指揮役)・supervisor(監督役)・worker(作業役)を斜めに下げて並べた図と、再開とセッションの切り替えの 2 区画 | 台本 12 |
| 13 | 迷ったら MVV で判断する | Mission・Vision・Value の 3 区画と Value の例 2 つ、必ず人が承認する操作 | 台本 13、`.ndf/` のプロジェクト MVV |
| 14 | 「完了」も「無い」も証拠で | AI の言葉 2 つと、それぞれを受け止める `/ndf:quality-gates`・`/ndf:investigation-rules` の対応 | 台本 14 |
| 15 | やるべきことを整理し続ける | 導入したプロジェクトの Issue の一覧を現状に保つ 3 つの Skill の流れと、何の数かを添えた棚卸しの数値 2 つ(56%・49 件) | 台本 15(棚卸しの記録と 2026-10-17 の調査) |
| 16 | そのほかの特徴的な機能 | estimate・release・hook の、何をするかと要点の表 | 台本 16 |
| 17 | 事例: ほかのプロジェクトでも動く | 4 つのプロジェクトの種類と結果の表。インフラの注記(社内ツールの移行と重なる)を表の中に残す | 台本 17、事例の材料(インフラ・業務システム・機械学習と価格推定) |
| 18 | 事例から分かった 2 つのこと | 詰まりが次の版で直る例(17 件の Issue と 3 つの前提の違い)と、プロジェクトごとに足したルールの表 | 台本 18、事例の材料 |
| 19 | だから、フォークして自分用に | NDF のルールの例と、そのまま使う仕組みの対比、メリット 3 つ | 台本 19 |
| 20 | 始め方と育て方 | フォークする・削る・育てるの 3 列と、気をつける点 | 台本 20 |
| 21 | まとめ: 明日からの 3 ステップ | 3 つの手順とリポジトリの URL | 台本 21 |

## 章立て

章扉(生成スクリプトの `d.section`)で構成を見せる。章扉はスピーカーノートを持たず、台本の番号を進めない。
資料は台本の 21 ページと章扉 6 つの 27 ページになる(ページ番号は章扉も数える)。

| 章 | 章扉の一言 | 台本のページ |
| --- | --- | --- |
| 1. なぜプラグインか | CLAUDE.md に書くだけでは届かない | 2〜4 |
| 2. NDF の全体像 | Issue の束を渡すと、リリースまで進む | 5〜8 |
| 3. 組み込んだ開発技法 | 実績のある技法を、AI が守れる手順に | 9〜11 |
| 4. AI に任せ切る仕組み | 止まらない・迷わない・ごまかさない | 12〜16 |
| 5. 事例 | ほかのプロジェクトでも動くか | 17〜18 |
| 6. 始め方 | フォークして、自分用に育てる | 19〜21 |

## 尺

`node slides/lib/script-time.js script.md --limit 35` の出力(350 字/分)。合計 4,957 字・14 分 10 秒で、
持ち時間(30〜35 分)に収まる。似たページを 2 組まとめた(まとめる前の台本の 10・11 ページと 12・13 ページ)。

| # | 見出し | 字数 | 尺(秒) | 配分(秒) |
| ---: | --- | ---: | ---: | ---: |
| 1 | タイトル | 111 | 19.0 | — |
| 2 | AI に同じことを何度も言っていませんか | 142 | 24.3 | — |
| 3 | CLAUDE.md への追記だけでは足りない理由 | 160 | 27.4 | — |
| 4 | スキルとプラグイン | 261 | 44.7 | — |
| 5 | NDF: 1 人の開発スタイルをプラグインにした | 130 | 22.3 | — |
| 6 | NDF の全体像: マイルストーンを渡せば、スプリントとして並列に進む | 316 | 54.2 | — |
| 7 | /ndf:development-workflow — 変更の種類でワークフローを切り替える | 283 | 48.5 | — |
| 8 | standard モードの全体の流れ | 277 | 47.5 | — |
| 9 | 実績のある開発技法を、AI が守れる形で組み込む — DDD・テストファースト・アジャイル | 381 | 65.3 | — |
| 10 | /ndf:requirements-design・/ndf:design・/ndf:document-restructuring — コードより先に文書を書き、読み手の順に並べる | 222 | 38.1 | — |
| 11 | /ndf:cross-review と /ndf:cross-refactoring — 複数の AI で、見落としを拾い、時間内に直す | 220 | 37.7 | — |
| 12 | 3 層のエージェント — 長いタスクを止めずに、止まっても再開できる | 249 | 42.7 | — |
| 13 | 判断基準: MVV と 2 つの承認ゲート | 193 | 33.1 | — |
| 14 | /ndf:quality-gates と /ndf:investigation-rules — 完了も「無い」も証拠で | 182 | 31.2 | — |
| 15 | 自分を直すループ — /ndf:out-of-scope・/ndf:retrospective・/ndf:backlog-refinement | 299 | 51.3 | — |
| 16 | その他の特徴的な機能 | 243 | 41.7 | — |
| 17 | 事例: 他のプロジェクトでも動く | 328 | 56.2 | — |
| 18 | 事例から分かったこと: 詰まったところが次のバージョンに、ルールはプロジェクトごとに違う | 244 | 41.8 | — |
| 19 | だから「フォークして自分用に」 | 225 | 38.6 | — |
| 20 | 始め方と育て方 | 314 | 53.8 | — |
| 21 | まとめ: 明日からの 3 ステップ | 177 | 30.3 | — |
| 合計 | 21 ページ(350 字/分) | 4957 | 849.7(14分10秒) | — |

## ページに収まらない読み上げの扱い

読み上げはスピーカーノートに全文が入る。ページには読み上げの要点だけを置き、例(6 ページの直前のリリース、
15 ページの「放っておくと…」)は注へ回した。ページの見出しは台本の見出しと別に、そのページの結論を短く書いた
(目安 20 字以内)。Skill を紹介するページ(7・10・11・14・15)は、Skill 名と何をするものかをリードか箱の見出しに置いた。
Loading
Loading