Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
13 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
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
47 changes: 47 additions & 0 deletions docs/presentations/2026-10-17-skill-plugin-development/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# 独自スキルプラグイン開発の薦め

社外の勉強会・登壇で話す 23 ページのスライド。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/` の内容のハッシュ | `86c3acf6f8b74c80bb92ffa3a1dfe17cde6ee17d199e6f76d029744f7d6a9133`(`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 時点の実測。
75 changes: 75 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,75 @@
# 構成メモ: 独自スキルプラグイン開発の薦め

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

## 構成

キーメッセージ「AI に自分のやり方を教えるのは 1 回でよい。スキルプラグインにして、フォークして育てる」から逆算し、
課題(1〜4)→ NDF の機能(5〜18)→ 事例(19〜20)→ 転換と実践(21〜22)→ まとめ(23)の順に並べた。
台本はページに載せる要素を持たないため、各ページの図・表・箇条書きは読み上げから起こした。読み上げの文をそのまま
ページに写さず、ページには構造(表・流れ・数値)だけを置く。事例のプロジェクトは種類で呼び、名前は出さない。

| # | 見出し | 役割 | 根拠 |
| ---: | --- | --- | --- |
| 1 | 表紙 | — | — |
| 2 | AI に同じことを何度も言っていませんか | 繰り返す 3 つの指摘を吹き出しで並べ、「セッションが切れると忘れる」を注意の地で示す | 台本 2 |
| 3 | CLAUDE.md への追記だけでは足りない理由 | 4 つの壁(コンテキスト・強制力・手順・ポータビリティ)を 2 × 2 の区画で示す | 台本 3 |
| 4 | スキルプラグインとは | 構成要素 4 つと役割の表と、4 つのランタイムの並び | 台本 4 |
| 5 | NDF: 1 人の開発スタイルをプラグインにした | リリース 102 回・Skill 48 個・ランタイム 4 つ・導入 10 リポジトリの数値と、リポジトリの URL | 台本 5(2026-10-17 の実測) |
| 6 | NDF の全体像 | マイルストーン → グループ → スプリント(グループごとに並列)→ リリースの図と、2 つの承認ゲート。直前のリリースの例は注 | 台本 6 |
| 7 | /ndf:development-workflow | 5 つのモードと対象の表。モードごとに通る Skill が違うことを下の区画で示す | 台本 7、`development-workflow` の `references/workflow-modes.md` |
| 8 | standard モードの全体の流れ | 設計・実装・リリースの 3 行に工程を並べ、ゲート 1・2 を注意の地で示す | 台本 8 |
| 9 | 実績のある開発技法を、AI が守れる形で組み込む | DDD・テストファースト・アジャイルの 3 列。用語集 580 語と WSJF を載せる | 台本 9 |
| 10 | /ndf:requirements-design と /ndf:design | 「何を満たせば完了か」と「どう作るか」の 2 列。設計 PR とゲート 1 を下の区画で示す | 台本 10 |
| 11 | /ndf:document-restructuring | 書いた順と読み手の順の対比、内容を足さない 5 つの手順 | 台本 11 |
| 12 | /ndf:cross-review | 繰り返しの流れと、指摘の再現率(1 つの AI 0.21〜0.49、2 つで 0.91)の棒 | 台本 12(手元の実測) |
| 13 | /ndf:cross-refactoring | 提案 → 選ぶ → 時間内に実施 → 取り消しの流れと、逆算と内訳の 2 区画 | 台本 13 |
| 14 | 3 層のエージェント | conductor・supervisor・worker の階段の図と、再開とセッションの切り替えの 2 区画 | 台本 14 |
| 15 | 判断基準: MVV と 2 つの承認ゲート | Mission・Vision・Value の 3 区画(Value の例 2 つ)と、必ず人の承認が要る操作 | 台本 15、`.ndf/` のプロジェクト MVV |
| 16 | /ndf:quality-gates と /ndf:investigation-rules | AI の言葉 2 つと、それぞれを受け止める Skill の対応 | 台本 16 |
| 17 | 自分を直すループ | 3 つの Skill の流れと、棚卸しの数値 2 つ(56%・49 件) | 台本 17(棚卸しの記録と 2026-10-17 の調査) |
| 18 | その他の特徴的な機能 | estimate・release・hook の表 | 台本 18 |
| 19 | 事例: 他のプロジェクトでも動く | 4 つのプロジェクトの種類と結果の表。インフラの注記(社内ツールの移行と重なる)を表の中に残す | 台本 19、事例の材料(インフラ・業務システム・機械学習と価格推定) |
| 20 | 事例から分かったこと | 詰まりが次の版で直る例(17 件の Issue と 3 つの前提の違い)と、プロジェクトごとに足したルールの表 | 台本 20、事例の材料 |
| 21 | だから「フォークして自分用に」 | NDF のルールの例と、そのまま使う仕組みの対比、メリット 3 つ | 台本 21 |
| 22 | 始め方と育て方 | フォークする・削る・育てるの 3 列と、気をつける点 | 台本 22 |
| 23 | まとめ: 明日からの 3 ステップ | 3 つの手順とリポジトリの URL | 台本 23 |

## 尺

`node slides/lib/script-time.js script.md --limit 35` の出力(350 字/分)。合計 5,317 字・15 分 12 秒で、
持ち時間(30〜35 分)に収まる。削るページは無い。

| # | 見出し | 字数 | 尺(秒) | 配分(秒) |
| ---: | --- | ---: | ---: | ---: |
| 1 | タイトル | 108 | 18.5 | — |
| 2 | AI に同じことを何度も言っていませんか | 142 | 24.3 | — |
| 3 | CLAUDE.md への追記だけでは足りない理由 | 160 | 27.4 | — |
| 4 | スキルプラグインとは | 216 | 37.0 | — |
| 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 — コードより先に「何を」「どう」を決める | 230 | 39.4 | — |
| 11 | /ndf:document-restructuring — 書いた順ではなく、読み手が知りたい順へ | 190 | 32.6 | — |
| 12 | /ndf:cross-review — 2 つの AI で、新しい指摘が出なくなるまで | 223 | 38.2 | — |
| 13 | /ndf:cross-refactoring — 全員で提案し、1 人が時間内に実施する | 206 | 35.3 | — |
| 14 | 3 層のエージェント — 長いタスクを止めずに、止まっても再開できる | 249 | 42.7 | — |
| 15 | 判断基準: MVV と 2 つの承認ゲート | 193 | 33.1 | — |
| 16 | /ndf:quality-gates と /ndf:investigation-rules — 完了も「無い」も証拠で | 182 | 31.2 | — |
| 17 | 自分を直すループ — /ndf:out-of-scope・/ndf:retrospective・/ndf:backlog-refinement | 299 | 51.3 | — |
| 18 | その他の特徴的な機能 | 243 | 41.7 | — |
| 19 | 事例: 他のプロジェクトでも動く | 328 | 56.2 | — |
| 20 | 事例から分かったこと: 詰まったところが次のバージョンに、ルールはプロジェクトごとに違う | 244 | 41.8 | — |
| 21 | だから「フォークして自分用に」 | 225 | 38.6 | — |
| 22 | 始め方と育て方 | 312 | 53.5 | — |
| 23 | まとめ: 明日からの 3 ステップ | 180 | 30.9 | — |
| 合計 | 23 ページ(350 字/分) | 5317 | 911.5(15分12秒) | — |

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

読み上げはスピーカーノートに全文が入る。ページには読み上げの要点だけを置き、例(6 ページの直前のリリース、
17 ページの「放っておくと…」)は注へ回した。見出しが 1 行に収まらないページ(6・7・9〜14・16・17・20)は、
ページの見出しを短くし、台本の見出しの後半をリードの文へ回した。
Loading
Loading