@unlaxer/dde-toolkit 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/flows/quick.yaml CHANGED
@@ -5,39 +5,45 @@ trigger_keywords: ["DDE して", "DDE", "ドキュメントレビュー", "用
5
5
 
6
6
  defaults:
7
7
  exclude_dirs: ["dde", "dge", "node_modules", ".git", ".claude"]
8
- article_length: medium # short / medium / long / custom
8
+ article_intent: educational # educational / reference / deep-dive
9
9
 
10
10
  workflow:
11
11
  steps:
12
+ - id: resume_check
13
+ display_name: "前回セッションの確認"
14
+ note: "dde/sessions/ の最新ファイルを読んで未完了の作業を検出。新規なら skip"
15
+ - id: scan_glossary
16
+ display_name: "既存 glossary をスキャン"
17
+ note: "docs/glossary/ の既存記事一覧を収集。相互リンク候補 + 抽出除外リストに使う"
12
18
  - id: select_docs
13
19
  display_name: "対象ドキュメント群を選択"
14
20
  mode: confirm
15
- note: "md 一覧(多い場合はフォルダ一覧)を出してユーザーが除外指定"
16
21
  - id: reader_context
17
22
  display_name: "読者コンテキスト設定"
18
23
  mode: confirm
19
24
  note: "誰が読むか(記事のトーンに使用。抽出フィルターには使わない)"
20
- - id: article_length
21
- display_name: "記事の分量設定"
25
+ - id: lang
26
+ display_name: "言語設定"
22
27
  mode: confirm
23
- note: "short(〜200字)/ medium(〜500字)/ long(〜1000字)/ 文字数直指定"
28
+ note: "en / ja / both。both の場合は <slug>.md + <slug>.ja.md を生成"
29
+ - id: article_intent
30
+ display_name: "記事のインテント設定"
31
+ mode: confirm
32
+ note: "educational / reference / deep-dive、または自由記述"
24
33
  - id: extract
25
34
  display_name: "用語抽出(LLM)— 全レベル対象"
26
35
  actor: llm
27
- note: "レベルで絞らず、誰かが分からない可能性がある用語を全て抽出"
28
36
  - id: confirm_terms
29
37
  display_name: "用語一覧を確認"
30
38
  mode: confirm
31
39
  - id: articleize
32
- display_name: "記事生成(LLM)— 3セクション構成"
40
+ display_name: "記事生成(LLM)— educational narrative"
33
41
  actor: llm
34
- note: "1用語1ファイル。expert / beginner / grandma の3セクションを1ファイルに"
35
42
  - id: save
36
43
  display_name: "単語帳保存"
37
44
  - id: link
38
45
  display_name: "dde-link 実行(CLI)"
39
46
  actor: cli
40
- note: "対象ドキュメント群と同じファイルセットに適用"
41
47
 
42
48
  must_rules:
43
49
  - id: save
@@ -46,6 +52,10 @@ must_rules:
46
52
  text: "抽出した用語を一覧テーブルで出力してからユーザーに確認"
47
53
  - id: choices
48
54
  text: "記事生成後に番号付き選択肢を提示(省略しない)"
55
+ - id: crosslink_existing_only
56
+ text: "「さらに学ぶために」は docs/glossary/ に実在するファイル + 同一バッチ生成記事のみリンク可。存在しないファイルへのリンク禁止"
57
+ - id: scan_glossary_first
58
+ text: "セッション開始時に docs/glossary/ をスキャンして既存記事リストを作る(抽出除外 + 相互リンク候補に使用)"
49
59
 
50
60
  extract:
51
61
  actor: llm
@@ -56,22 +66,17 @@ extract:
56
66
  articleize:
57
67
  actor: llm
58
68
  per: term
59
- format: single_file_multi_level
69
+ format: educational_narrative
60
70
  output_dir: docs/glossary/
61
- filename_rule: "<slug>.md(英語), <slug>.ja.md(日本語)"
62
- sections:
63
- - id: summary
64
- display_name: "1行サマリー(冒頭 blockquote)"
65
- - id: expert
66
- display_name: "詳細(開発者向け)"
67
- - id: beginner
68
- display_name: "かんたん説明(初学者向け)"
69
- - id: grandma
70
- display_name: "ひとことで(技術ゼロ向け)"
71
- length:
72
- short: "〜200字。サマリー + 各セクション1-2文"
73
- medium: "〜500字。サマリー + 各セクション3-5文。デフォルト"
74
- long: "〜1000字。サマリー + 各セクション充実 + コード例 + 関連用語"
71
+ filename_rule: "en → <slug>.md / ja → <slug>.ja.md / both → 両方生成"
72
+ multilang:
73
+ en: "<slug>.md"
74
+ ja: "<slug>.ja.md"
75
+ both: "両ファイル生成。dictionary.yaml に en/ja キーで用語マッピングを追加"
76
+ intents:
77
+ educational: "読んだ人が背景・動機・仕組みごと理解できる記事。例え話・図・なぜ?を含む。分量は目的に従って自然に決める"
78
+ reference: "定義・使い方・例を簡潔に。調べたい人向けのクイックリファレンス"
79
+ deep-dive: "実装詳細・コード例・エッジケース・トレードオフまで網羅"
75
80
 
76
81
  output_dir: dde/sessions/
77
82
 
package/method.md CHANGED
@@ -5,20 +5,21 @@
5
5
  - **必要なもの**: LLM(Claude, GPT-4, Gemini 等)へのアクセス
6
6
  - **推奨**: Claude Code(skills/ で自動発動)
7
7
  - **入力**: レビュー対象のドキュメント群
8
- - **出力**: 用語集記事(3セクション構成)+ 単語帳 + クリッカブルリンク
8
+ - **出力**: educational narrative 形式の用語集記事 + クリッカブルリンク
9
9
 
10
10
  ---
11
11
 
12
12
  ## 最低限これだけ読め(3分版)
13
13
 
14
- **DDE とは**: ドキュメントを読む人全員に対して用語を抜き出して、誰でも分かる記事を作り、リンクにする。
14
+ **DDE とは**: ドキュメントを読む人全員に対して用語を抜き出して、背景ごと理解できる記事にして、リンクにする。
15
15
 
16
16
  **フロー**:
17
- 1. **Select** — 対象ドキュメント群を選ぶ(除外フォルダを確認)
17
+ 1. **Select** — 対象ドキュメント群を選ぶ
18
18
  2. **Context** — 誰が読むかを把握する(記事トーンの調整に使う)
19
- 3. **Extract** — 全用語を一括抽出(レベルで絞らない)
20
- 4. **Articleize** — 1用語1ファイル・3セクション記事を生成
21
- 5. **Link** — dde-link でリンクを埋め込む
19
+ 3. **Intent** — 記事の目的を決める(「教育用」「リファレンス」など)
20
+ 4. **Extract** — 全用語を一括抽出(レベルで絞らない)
21
+ 5. **Articleize** — educational narrative 形式で記事を生成
22
+ 6. **Link** — dde-link でリンクを埋め込む
22
23
 
23
24
  ---
24
25
 
@@ -26,37 +27,49 @@
26
27
 
27
28
  同じドキュメントをエンジニアも業務担当者も読む。
28
29
  「このレベルの人には不要」を抽出段階で判断するより、
29
- **記事の中に全レベルのセクションを書いてしまう**方がシンプルで漏れがない。
30
+ **誰が読んでも背景ごと理解できる記事を1つ書く**方がシンプルで漏れがない。
30
31
 
31
- ```
32
- 抽出: レベルで絞らない(誰かが分からなければ抽出する)
33
- 記事: 1ファイルに3セクション(誰が読んでも分かる)
34
- リンク: 常に同じファイルを指す(レベル分岐なし)
35
- ```
32
+ 文字数より**インテント**で指定する:
33
+ - `educational` — 読んだ人が背景・動機・仕組みごと理解できる。分量は自然に決まる
34
+ - `reference` — 定義と使い方を簡潔に
35
+ - `deep-dive` — 実装・エッジケースまで網羅
36
+ - 自由記述 — 「新入社員が業務背景ごと理解できるように」など
36
37
 
37
38
  ---
38
39
 
39
- ## 記事フォーマット(1用語1ファイル・3セクション)
40
+ ## 記事フォーマット(educational)
40
41
 
41
42
  ```markdown
42
- # JWT
43
+ # <用語>
43
44
 
44
- > 認証に使うトークン形式(1行サマリー)
45
+ ## 一言で言うと?
46
+ <専門知識なしで分かる1-2文>
45
47
 
46
- ## 詳細(開発者向け)
47
- JSON Web Token(RFC 7519)は...
48
+ ---
48
49
 
49
- ## かんたん説明(初学者向け)
50
- JWTはログイン状態を安全に...
50
+ ## <身近な例え>
51
+ <日常のアナロジー。対応表「○○ = △△」を使う>
51
52
 
52
- ## ひとことで(技術ゼロ向け)
53
- 銀行のキャッシュカードみたいなもの。
54
- ```
53
+ ---
54
+
55
+ ## なぜ必要なの?
56
+ <「自前でやったら?」との対比。ASCIIダイアグラム・比較表>
57
+
58
+ ---
55
59
 
56
- 読者コンテキストは**セクションの厚み**を調整するためだけに使う:
57
- - エンジニアが主な読者 → 「詳細」を充実させる
58
- - 業務担当者が主な読者 → 「かんたん説明」「ひとことで」を充実させる
59
- - 混在 → バランスよく
60
+ ## <このプロジェクト文脈での説明>
61
+ <抽象論ではなく、このプロジェクト固有の実装・設計を参照>
62
+
63
+ ---
64
+
65
+ ## 具体的な例
66
+ <ステップバイステップのフロー>
67
+
68
+ ---
69
+
70
+ ## さらに学ぶために
71
+ - [関連用語](path.md) — この文脈での関連理由
72
+ ```
60
73
 
61
74
  ---
62
75
 
@@ -65,8 +78,7 @@ JWTはログイン状態を安全に...
65
78
  ```
66
79
  1. docs/glossary/ の .md ファイル名から用語を自動推定
67
80
  2. dictionary.yaml があれば上書き(日本語用語・別名対応)
68
- 3. 最長一致、段落ごとに 1 回 → [用語](docs/glossary/xxx.md) に置換
69
- (リンク先は常に単一ファイル。レベル指定なし)
81
+ 3. 最長一致、段落ごとに 1 回 → [用語](相対パス) に置換
70
82
  スキップ: コードブロック / インラインコード / 見出し / 既存リンク
71
83
  ```
72
84
 
@@ -76,4 +88,4 @@ JWTはログイン状態を安全に...
76
88
 
77
89
  - 241 の用語集記事(120 EN + 121 JA)
78
90
  - README に 334 のクリッカブルリンク
79
- - 3 段階の読者レベル対応
91
+ - educational narrative 形式(背景・動機・具体例・相互リンク)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unlaxer/dde-toolkit",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Document Deficit Extraction — find what's not understood in your docs",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -16,29 +16,29 @@
16
16
  テーマなしで「DDE」「DDE って何」と呼ばれたとき:
17
17
 
18
18
  ```
19
- DDE toolkit v0.1.2 — Document Deficit Extraction
19
+ DDE toolkit v0.1.3 — Document Deficit Extraction
20
20
 
21
- 読者コンテキストを把握して → 用語を全抽出して → 3レベル記事を生成 → クリッカブルなドキュメント
21
+ 用語を全部抜き出して、誰でも理解できる記事にして、リンクにする。
22
22
 
23
23
  📖 フロー:
24
- 1. ドキュメント群を選択(除外フォルダを確認)
25
- 2. 読者コンテキストを設定(記事のトーンに使用)
26
- 3. 記事の分量を設定(short / medium / long)
27
- 4. 全用語を一括抽出(レベルで絞らない)→ 一覧確認
28
- 5. 1用語1ファイル・3セクション記事を生成 → docs/glossary/
29
- 6. dde-link が対象ドキュメント群にリンクを埋め込む
30
-
31
- 📄 記事フォーマット(1ファイル・3セクション):
32
- # JWT
33
- > 認証に使うトークン形式
34
- ## 詳細(開発者向け)...
35
- ## かんたん説明(初学者向け)...
36
- ## ひとことで(技術ゼロ向け)...
24
+ 1. ドキュメント群を選択
25
+ 2. 読者コンテキストを把握
26
+ 3. 記事のインテントを設定(「教育用」「リファレンス」など)
27
+ 4. 全用語を一括抽出 一覧確認
28
+ 5. educational narrative 形式で記事を生成 → docs/glossary/
29
+ 6. dde-link でリンクを埋め込む
30
+
31
+ 📄 記事フォーマット(educational narrative):
32
+ # <用語>
33
+ ## 一言で言うと?
34
+ ## <身近な例え>
35
+ ## なぜ必要なの?(動機・背景)
36
+ ## <このプロジェクト文脈での説明>
37
+ ## 具体的な例
38
+ ## さらに学ぶために(相互リンク)
37
39
 
38
40
  🔗 dde-link(LLM 不要):
39
- npx dde-link README.md # 自動リンク実行
40
- npx dde-link README.md --check # リンク漏れチェック(CI 用)
41
- npx dde-link README.md --dry-run # プレビュー
41
+ npx dde-link README.md
42
42
 
43
43
  詳しくは: dde/method.md
44
44
  ```
@@ -47,67 +47,120 @@ DDE toolkit v0.1.2 — Document Deficit Extraction
47
47
 
48
48
  ## 手順
49
49
 
50
- ### Step 0: flow 読み込み
50
+ ### Step 0: 前回セッション確認 + 既存 glossary スキャン
51
+
52
+ **0-A: flow 読み込み**
51
53
  `dde/flows/` の YAML、なければ `kit/flows/` の YAML を読む。
52
- `defaults.exclude_dirs` を確認(デフォルト: `dde/`, `dge/`, `node_modules/`, `.git/`, `.claude/`)。
54
+
55
+ **0-B: 前回セッション確認**
56
+ `dde/sessions/` の最新ファイルを読む。未完了の作業(未生成の用語リスト等)があれば:
57
+
58
+ ```
59
+ 前回セッションが見つかりました(dde/sessions/2024-01-15_session.md)。
60
+ 未生成の用語: OAuth 2.0, リフレッシュトークン
61
+
62
+ 前回の続きから再開しますか?
63
+ 1. はい(前回の続きから)
64
+ 2. いいえ(最初から)
65
+ ```
66
+
67
+ 新規セッションの場合は skip。
68
+
69
+ **0-C: 既存 glossary スキャン(MUST)**
70
+ `docs/glossary/` の `.md` ファイル一覧を収集する。これを 2 つの目的に使う:
71
+
72
+ 1. **抽出除外リスト** — 既存記事がある用語は抽出対象から除外(Step 6)
73
+ 2. **相互リンク候補リスト** — 「さらに学ぶために」で使えるリンク一覧(Step 7)
74
+
75
+ ```
76
+ 既存 glossary: 12 記事
77
+ jwt.md, oauth2.md, session-management.md, ...
78
+ → これらの用語は抽出対象から除外
79
+ → 「さらに学ぶために」のリンク候補として使用
80
+ ```
81
+
82
+ ファイルが存在しない場合は空リストで OK(新規プロジェクト)。
83
+
84
+ **CRITICAL RULE — 相互リンク**:
85
+ 「さらに学ぶために」に書くリンクは、**記事生成時点で `docs/glossary/` に実在するファイルのみ**。
86
+ 存在しないファイルへのリンクは絶対に書かない。同一バッチで新規生成する記事同士は相互リンク可。
53
87
 
54
88
  ### Step 1: 対象ドキュメント群の選択(MUST: ユーザーに確認)
55
89
 
56
90
  プロジェクト内の `.md` ファイルを列挙する。
57
91
  - **50 ファイル未満**: ファイル一覧を表示
58
92
  - **50 ファイル以上**: フォルダ一覧を表示
93
+ - デフォルト除外: `dde/`, `dge/`, `node_modules/`, `.git/`, `.claude/`
59
94
 
60
95
  ```
61
96
  対象ドキュメントを選択してください。
62
- (dde/, dge/, node_modules/ は除外済み)
63
97
 
64
98
  ✅ docs/ (12 ファイル)
65
99
  ✅ README.md
66
100
  ✅ CONTRIBUTING.md
67
101
 
68
102
  除外したいファイル・フォルダがあれば指定してください。
69
- なければそのまま進みます。
70
103
  ```
71
104
 
72
105
  確定したファイルセットが「抽出元 = リンク適用先」になる。
73
106
 
74
107
  ### Step 2: 読者コンテキストの設定(MUST: ユーザーに確認)
75
108
 
76
- **ここで聞くのは「誰が読むか」であり、抽出フィルターには使わない。**
77
- 記事の各セクションのトーン・深さを調整するためだけに使う。
109
+ **抽出フィルターには使わない。記事のトーン・文脈に使う。**
78
110
 
79
111
  ```
80
- このドキュメントを読む人を教えてください(複数可):
112
+ このドキュメントを読む人は?(複数可)
81
113
 
82
114
  [ ] プログラマー・エンジニア
83
115
  [ ] 業務ドメインの担当者(非エンジニア)
84
116
  [ ] 初学者・新人
85
117
  [ ] その他: ___
118
+ ```
119
+
120
+ ### Step 3: 言語設定(MUST: ユーザーに確認)
121
+
122
+ 対象ドキュメントの言語を検出し、記事の生成言語を確認する。
86
123
 
87
- → 各読者が「詳細」「かんたん説明」「ひとことで」のどのセクションを
88
- 主に使うかを想定して記事の厚みを調整します。
89
124
  ```
125
+ ドキュメントの言語を検出しました: 日本語
90
126
 
91
- ### Step 3: 記事の分量設定
127
+ 記事を生成する言語を選んでください:
128
+ 1. ja のみ — <slug>.ja.md を生成
129
+ 2. en のみ — <slug>.md を生成
130
+ 3. both — <slug>.md + <slug>.ja.md の両方を生成
131
+ (dictionary.yaml に en/ja の用語マッピングを追加)
92
132
 
133
+ デフォルト: ドキュメントが日本語 → ja、英語 → en
93
134
  ```
94
- 記事の分量を選んでください:
95
- 1. short — 〜200字(各セクション1-2文)
96
- 2. medium — 〜500字(各セクション3-5文)← デフォルト
97
- 3. long — 〜1000字(各セクション充実 + コード例 + 関連用語)
98
- 4. カスタム — 文字数を直接指定
99
135
 
100
- このまま medium で進めますか?
136
+ **both の場合:**
137
+ - 英語記事を先に生成し、日本語記事は [English version](<slug>.md) リンクを冒頭に追加
138
+ - `dictionary.yaml` に `ja:` キーで日本語用語を登録
139
+ - dde-link は `.ja.md` ファイルに対して日本語用語でマッチング
140
+
141
+ ### Step 5: 記事のインテント設定(MUST: ユーザーに確認)
142
+
143
+ **文字数ではなく「読んだ人にどうなってほしいか」で指定する。**
144
+
145
+ ```
146
+ 記事のインテントを選んでください:
147
+ 1. educational — 背景・動機・仕組みごと理解できる記事
148
+ 例え話・図・なぜ?を含む。分量は目的に従って自然に決まる
149
+ 2. reference — 定義と使い方を簡潔に。調べたい人向け
150
+ 3. deep-dive — 実装詳細・コード例・エッジケースまで網羅
151
+ 4. 自由記述 — 例: 「新入社員が読んで業務背景ごと理解できるように」
152
+
153
+ デフォルト: educational
101
154
  ```
102
155
 
103
- ### Step 4: 用語抽出(LLM)
156
+ ### Step 6: 用語抽出(LLM)
104
157
 
105
158
  **レベルで絞らず、誰かが分からない可能性がある用語を全て抽出する。**
106
159
 
107
- 理由: 同じドキュメントをエンジニアも業務担当者も読む。「このレベルには不要」の判断を抽出段階でするより、記事に全レベルのセクションを書いてしまう方がシンプル。
160
+ 対象ドキュメント群を読んで用語を一括抽出する。
108
161
 
109
162
  **抽出ルール:**
110
- - `docs/glossary/` に既存記事があるものは除外
163
+ - `docs/glossary/` に既存記事があるものは除外(Step 0-C で収集したリストを使う)
111
164
  - 固有名詞(プロダクト名・企業名)は除外
112
165
  - コードブロック内の識別子は除外
113
166
  - 重要度: その用語なしでは内容が理解できない → 🔴 High / 補足があると助かる → 🟡 Medium
@@ -127,64 +180,105 @@ N 件抽出しました。記事を生成しますか?
127
180
  除外したい用語があれば番号で指定してください(例: 3,5)。
128
181
  ```
129
182
 
130
- ### Step 5: 記事生成(LLM)— 1用語1ファイル・3セクション
183
+ ### Step 7: 記事生成(LLM)— educational narrative
131
184
 
132
185
  確認後、用語ごとに `docs/glossary/<slug>.md` を生成して保存する。
133
186
 
134
- **スラッグ規則:** 小文字、スペース → ハイフン(`json-web-token.md`)
187
+ **記事フォーマット(educational intent の場合):**
135
188
 
136
- **テンプレート:**
137
189
  ```markdown
138
- # <Term>
190
+ # <用語>
139
191
 
140
- > <1行サマリー — 誰が読んでも分かる核心を1文で>
192
+ ## 一言で言うと?
193
+ <1-2文でコアを定義。専門知識がない人でも分かる言葉で。>
141
194
 
142
- ## 詳細(開発者向け)
143
- <技術的な定義・仕様・実装の詳細。コード例があれば添付。>
195
+ ---
144
196
 
145
- ## かんたん説明(初学者向け)
146
- <例えを交えた3-5文。前提知識を仮定しない。>
197
+ ## <読者が直感的に分かる例え・タイトル>
198
+ <日常の具体的なアナロジー。箇条書きや対応表で「○○ = △△」を示す。>
147
199
 
148
- ## ひとことで(技術ゼロ向け)
149
- <日常の身近な例え1-2文。>
200
+ ---
201
+
202
+ ## なぜ<この用語 / このアプローチ>が必要なの?
203
+ <「自前でやったらどうなるか」との比較で動機を説明。
204
+ ASCIIダイアグラムや対比表を使って直感的に。>
205
+
206
+ ---
207
+
208
+ ## <このプロジェクト / この文脈での説明>
209
+ <抽象的な説明ではなく、このドキュメントが属するプロジェクトの文脈で具体的に説明する。
210
+ このプロジェクト固有の実装・設計を参照する。>
211
+
212
+ ---
213
+
214
+ ## 具体的な例
215
+ <ステップバイステップのフロー。コードブロックや番号付きリストで。
216
+ 読者が「なるほど、こう動くのか」と分かるレベルまで具体的に。>
217
+
218
+ ---
219
+
220
+ ## さらに学ぶために
221
+ - [関連用語A](<相対パス>) — この文脈でなぜ関連するか1行で
222
+ - [関連用語B](<相対パス>) — この文脈でなぜ関連するか1行で
223
+ ```
224
+
225
+ **「さらに学ぶために」のリンクルール(CRITICAL):**
226
+ - Step 0-C で収集した既存 glossary ファイル一覧のみを使う
227
+ - 同一バッチで今回新たに生成する記事同士も相互リンク可(生成後に存在するため)
228
+ - 存在しないファイルへのリンクは絶対に書かない(dead link 防止)
229
+ - 候補がない場合はセクションを省略するか「(現在リンク先なし)」と明記する
230
+
231
+ **reference intent の場合:**
232
+ ```markdown
233
+ # <用語>
234
+
235
+ <1文定義>
236
+
237
+ ## 使い方
238
+ <コード例または手順>
150
239
 
151
240
  ## 関連用語
152
- - [<関連用語>](<相対パス>)
241
+ - [<term>](<path>)
153
242
  ```
154
243
 
155
- **読者コンテキストの使い方:**
156
- - エンジニアが主な読者 → 「詳細」セクションを厚く
157
- - 業務担当者が主な読者 → 「かんたん説明」「ひとことで」を厚く
158
- - 混在 → バランスよく(デフォルト)
244
+ **deep-dive intent の場合:**
245
+ ```markdown
246
+ # <用語>
247
+
248
+ ## 定義
249
+ ## 内部動作
250
+ ## コード例
251
+ ## エッジケース・注意点
252
+ ## トレードオフ
253
+ ## 関連用語
254
+ ```
255
+
256
+ **インテントが自由記述の場合:**
257
+ ユーザーの言葉(例: 「新入社員が業務背景ごと理解できるように」)をそのまま
258
+ 記事の生成方針として使う。
159
259
 
160
260
  `dde-tool save docs/glossary/<slug>.md` で保存。
161
261
 
162
- ### Step 6: 単語帳(dictionary.yaml)更新
262
+ ### Step 8: 単語帳(dictionary.yaml)更新
163
263
 
164
- 日本語ドキュメントが対象の場合、`docs/glossary/dictionary.yaml` を生成・更新する。
264
+ 日本語記事が必要な場合、`docs/glossary/dictionary.yaml` を生成・更新する。
165
265
 
166
266
  ```yaml
167
- # docs/glossary/dictionary.yaml
168
267
  jwt.md:
169
268
  en: ["JWT", "JSON Web Token"]
170
269
  ja: ["JWT"]
171
-
172
- oauth.md:
173
- en: ["OAuth", "OAuth 2.0"]
174
- ja: ["OAuth"]
175
270
  ```
176
271
 
177
- ### Step 7: dde-link 実行(CLI)
272
+ ### Step 9: dde-link 実行(CLI)
178
273
 
179
- **適用先は Step 1 で選択したドキュメント群と同じ。**
180
- リンクは常に `<slug>.md`(レベル指定なし)を指す。
274
+ Step 1 で選択したドキュメント群と同じファイルセットに適用。
181
275
 
182
276
  ```bash
183
277
  npx dde-link README.md --dry-run # 確認
184
278
  npx dde-link README.md # 実行
185
279
  ```
186
280
 
187
- ### Step 8: 次アクション提示(MUST: 省略しない)
281
+ ### Step 10: 次アクション提示(MUST: 省略しない)
188
282
 
189
283
  ```
190
284
  1. 別のドキュメント群も処理する
@@ -196,7 +290,7 @@ npx dde-link README.md # 実行
196
290
  ---
197
291
 
198
292
  ## 注意
199
- - 抽出は「レベルで絞らない」— 記事の中で全レベルをカバーする
200
- - `docs/glossary/` に既存記事がある場合は上書きしない(差分のみ提案)
293
+ - 記事の分量は文字数ではなくインテントに従って自然に決める
294
+ - `docs/glossary/` に既存記事がある場合は上書きしない
201
295
  - dde-link の `--fix` は上書き。事前に `--dry-run` を推奨
202
296
  - 将来フェーズ: HTML からの用語抽出 + ホバー表示(v0.2.0 予定)
package/version.txt CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.1.4