@knowledgine/cli 0.5.0 → 0.6.0
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/dist/commands/ingest.d.ts +4 -0
- package/dist/commands/ingest.d.ts.map +1 -1
- package/dist/commands/ingest.js +55 -13
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +15 -8
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/search.d.ts +1 -0
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +45 -1
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +13 -2
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/setup-skills.d.ts +3 -1
- package/dist/commands/setup-skills.d.ts.map +1 -1
- package/dist/commands/setup-skills.js +24 -7
- package/dist/commands/setup-skills.js.map +1 -1
- package/dist/commands/setup.d.ts +2 -0
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +23 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/index.js +18 -1
- package/dist/index.js.map +1 -1
- package/dist/templates/skills/index.d.ts +8 -5
- package/dist/templates/skills/index.d.ts.map +1 -1
- package/dist/templates/skills/index.js +56 -41
- package/dist/templates/skills/index.js.map +1 -1
- package/dist/templates/skills/knowledgine-capture/references.ja.d.ts +2 -0
- package/dist/templates/skills/knowledgine-capture/references.ja.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-capture/references.ja.js +414 -0
- package/dist/templates/skills/knowledgine-capture/references.ja.js.map +1 -0
- package/dist/templates/skills/knowledgine-capture/skill-md.d.ts +1 -1
- package/dist/templates/skills/knowledgine-capture/skill-md.d.ts.map +1 -1
- package/dist/templates/skills/knowledgine-capture/skill-md.ja.d.ts +2 -0
- package/dist/templates/skills/knowledgine-capture/skill-md.ja.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-capture/skill-md.ja.js +98 -0
- package/dist/templates/skills/knowledgine-capture/skill-md.ja.js.map +1 -0
- package/dist/templates/skills/knowledgine-capture/skill-md.js +4 -2
- package/dist/templates/skills/knowledgine-capture/skill-md.js.map +1 -1
- package/dist/templates/skills/knowledgine-debrief/references.ja.d.ts +2 -0
- package/dist/templates/skills/knowledgine-debrief/references.ja.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-debrief/references.ja.js +141 -0
- package/dist/templates/skills/knowledgine-debrief/references.ja.js.map +1 -0
- package/dist/templates/skills/knowledgine-debrief/skill-md.d.ts +1 -1
- package/dist/templates/skills/knowledgine-debrief/skill-md.d.ts.map +1 -1
- package/dist/templates/skills/knowledgine-debrief/skill-md.ja.d.ts +2 -0
- package/dist/templates/skills/knowledgine-debrief/skill-md.ja.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-debrief/skill-md.ja.js +82 -0
- package/dist/templates/skills/knowledgine-debrief/skill-md.ja.js.map +1 -0
- package/dist/templates/skills/knowledgine-debrief/skill-md.js +10 -2
- package/dist/templates/skills/knowledgine-debrief/skill-md.js.map +1 -1
- package/dist/templates/skills/{knowledgine-explain → knowledgine-explore}/references.d.ts.map +1 -1
- package/dist/templates/skills/knowledgine-explore/references.ja.d.ts +2 -0
- package/dist/templates/skills/knowledgine-explore/references.ja.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-explore/references.ja.js +182 -0
- package/dist/templates/skills/knowledgine-explore/references.ja.js.map +1 -0
- package/dist/templates/skills/{knowledgine-explain → knowledgine-explore}/references.js +15 -15
- package/dist/templates/skills/{knowledgine-explain → knowledgine-explore}/references.js.map +1 -1
- package/dist/templates/skills/knowledgine-explore/skill-md.d.ts +2 -0
- package/dist/templates/skills/knowledgine-explore/skill-md.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-explore/skill-md.ja.d.ts +2 -0
- package/dist/templates/skills/knowledgine-explore/skill-md.ja.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-explore/skill-md.ja.js +98 -0
- package/dist/templates/skills/knowledgine-explore/skill-md.ja.js.map +1 -0
- package/dist/templates/skills/{knowledgine-explain → knowledgine-explore}/skill-md.js +19 -12
- package/dist/templates/skills/{knowledgine-suggest → knowledgine-explore}/skill-md.js.map +1 -1
- package/dist/templates/skills/knowledgine-feedback/references.ja.d.ts +2 -0
- package/dist/templates/skills/knowledgine-feedback/references.ja.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-feedback/references.ja.js +214 -0
- package/dist/templates/skills/knowledgine-feedback/references.ja.js.map +1 -0
- package/dist/templates/skills/knowledgine-feedback/skill-md.d.ts +1 -1
- package/dist/templates/skills/knowledgine-feedback/skill-md.d.ts.map +1 -1
- package/dist/templates/skills/knowledgine-feedback/skill-md.ja.d.ts +2 -0
- package/dist/templates/skills/knowledgine-feedback/skill-md.ja.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-feedback/skill-md.ja.js +108 -0
- package/dist/templates/skills/knowledgine-feedback/skill-md.ja.js.map +1 -0
- package/dist/templates/skills/knowledgine-feedback/skill-md.js +4 -2
- package/dist/templates/skills/knowledgine-feedback/skill-md.js.map +1 -1
- package/dist/templates/skills/knowledgine-ingest/references.ja.d.ts +2 -0
- package/dist/templates/skills/knowledgine-ingest/references.ja.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-ingest/references.ja.js +244 -0
- package/dist/templates/skills/knowledgine-ingest/references.ja.js.map +1 -0
- package/dist/templates/skills/knowledgine-ingest/skill-md.d.ts +1 -1
- package/dist/templates/skills/knowledgine-ingest/skill-md.d.ts.map +1 -1
- package/dist/templates/skills/knowledgine-ingest/skill-md.ja.d.ts +2 -0
- package/dist/templates/skills/knowledgine-ingest/skill-md.ja.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-ingest/skill-md.ja.js +81 -0
- package/dist/templates/skills/knowledgine-ingest/skill-md.ja.js.map +1 -0
- package/dist/templates/skills/knowledgine-ingest/skill-md.js +2 -0
- package/dist/templates/skills/knowledgine-ingest/skill-md.js.map +1 -1
- package/dist/templates/skills/{knowledgine-recall → knowledgine-memory}/references.d.ts.map +1 -1
- package/dist/templates/skills/knowledgine-memory/references.ja.d.ts +2 -0
- package/dist/templates/skills/knowledgine-memory/references.ja.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-memory/references.ja.js +188 -0
- package/dist/templates/skills/knowledgine-memory/references.ja.js.map +1 -0
- package/dist/templates/skills/knowledgine-memory/references.js +188 -0
- package/dist/templates/skills/knowledgine-memory/references.js.map +1 -0
- package/dist/templates/skills/knowledgine-memory/skill-md.d.ts +2 -0
- package/dist/templates/skills/knowledgine-memory/skill-md.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-memory/skill-md.ja.d.ts +2 -0
- package/dist/templates/skills/knowledgine-memory/skill-md.ja.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-memory/skill-md.ja.js +169 -0
- package/dist/templates/skills/knowledgine-memory/skill-md.ja.js.map +1 -0
- package/dist/templates/skills/knowledgine-memory/skill-md.js +169 -0
- package/dist/templates/skills/{knowledgine-recall → knowledgine-memory}/skill-md.js.map +1 -1
- package/dist/templates/skills/knowledgine-search/references.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-search/references.ja.d.ts +2 -0
- package/dist/templates/skills/knowledgine-search/references.ja.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-search/references.ja.js +313 -0
- package/dist/templates/skills/knowledgine-search/references.ja.js.map +1 -0
- package/dist/templates/skills/{knowledgine-recall → knowledgine-search}/references.js +124 -19
- package/dist/templates/skills/knowledgine-search/references.js.map +1 -0
- package/dist/templates/skills/knowledgine-search/skill-md.d.ts +2 -0
- package/dist/templates/skills/knowledgine-search/skill-md.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-search/skill-md.ja.d.ts +2 -0
- package/dist/templates/skills/knowledgine-search/skill-md.ja.d.ts.map +1 -0
- package/dist/templates/skills/knowledgine-search/skill-md.ja.js +175 -0
- package/dist/templates/skills/knowledgine-search/skill-md.ja.js.map +1 -0
- package/dist/templates/skills/knowledgine-search/skill-md.js +174 -0
- package/dist/templates/skills/knowledgine-search/skill-md.js.map +1 -0
- package/dist/templates/skills/types.d.ts +4 -0
- package/dist/templates/skills/types.d.ts.map +1 -0
- package/dist/templates/skills/types.js +3 -0
- package/dist/templates/skills/types.js.map +1 -0
- package/package.json +4 -4
- package/dist/lib/entity-extractor.d.ts +0 -17
- package/dist/lib/entity-extractor.d.ts.map +0 -1
- package/dist/lib/entity-extractor.js +0 -22
- package/dist/lib/entity-extractor.js.map +0 -1
- package/dist/templates/skills/knowledgine-explain/skill-md.d.ts +0 -2
- package/dist/templates/skills/knowledgine-explain/skill-md.d.ts.map +0 -1
- package/dist/templates/skills/knowledgine-explain/skill-md.js.map +0 -1
- package/dist/templates/skills/knowledgine-recall/references.js.map +0 -1
- package/dist/templates/skills/knowledgine-recall/skill-md.d.ts +0 -2
- package/dist/templates/skills/knowledgine-recall/skill-md.d.ts.map +0 -1
- package/dist/templates/skills/knowledgine-recall/skill-md.js +0 -86
- package/dist/templates/skills/knowledgine-suggest/references.d.ts.map +0 -1
- package/dist/templates/skills/knowledgine-suggest/references.js +0 -121
- package/dist/templates/skills/knowledgine-suggest/references.js.map +0 -1
- package/dist/templates/skills/knowledgine-suggest/skill-md.d.ts +0 -2
- package/dist/templates/skills/knowledgine-suggest/skill-md.d.ts.map +0 -1
- package/dist/templates/skills/knowledgine-suggest/skill-md.js +0 -94
- /package/dist/templates/skills/{knowledgine-explain → knowledgine-explore}/references.d.ts +0 -0
- /package/dist/templates/skills/{knowledgine-recall → knowledgine-memory}/references.d.ts +0 -0
- /package/dist/templates/skills/{knowledgine-suggest → knowledgine-search}/references.d.ts +0 -0
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
export const REFERENCES = {
|
|
2
|
+
"capture-guide.md": `# キャプチャガイド
|
|
3
|
+
|
|
4
|
+
6つのキャプチャトリガータイプそれぞれの詳細ガイドです。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. バグ修正
|
|
9
|
+
|
|
10
|
+
**タイミング**:欠陥を診断して解決したとき。
|
|
11
|
+
|
|
12
|
+
**含めるべき内容**:
|
|
13
|
+
- 正確なエラーメッセージまたは症状
|
|
14
|
+
- 根本原因(「壊れていた」だけでなく)
|
|
15
|
+
- 適用した修正
|
|
16
|
+
- 将来このバグを避ける方法
|
|
17
|
+
|
|
18
|
+
**例**:
|
|
19
|
+
\`\`\`
|
|
20
|
+
Problem: "Cannot read properties of undefined (reading 'id')" at user.ts:42.
|
|
21
|
+
|
|
22
|
+
Root cause: getUser() returned undefined when the database row did not exist, but the
|
|
23
|
+
caller assumed a non-null return value.
|
|
24
|
+
|
|
25
|
+
Fix: Added null check in getUser() and updated the return type to User | undefined.
|
|
26
|
+
Updated all callers to handle the undefined case.
|
|
27
|
+
|
|
28
|
+
Prevention: Avoid non-null assertions (!). Return undefined explicitly and propagate the
|
|
29
|
+
type to callers.
|
|
30
|
+
\`\`\`
|
|
31
|
+
|
|
32
|
+
タグ:\`bug-fix\`, \`typescript\`, \`null-safety\`
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 2. 設計判断
|
|
37
|
+
|
|
38
|
+
**タイミング**:代替案の中から一つのアーキテクチャまたは実装アプローチを選んだとき。
|
|
39
|
+
|
|
40
|
+
**含めるべき内容**:
|
|
41
|
+
- 行った判断(タイトルに簡潔にまとめる)
|
|
42
|
+
- 検討した選択肢
|
|
43
|
+
- 選択したアプローチ
|
|
44
|
+
- 理由とトレードオフ
|
|
45
|
+
- 判断を導いた制約
|
|
46
|
+
|
|
47
|
+
**例**:
|
|
48
|
+
\`\`\`
|
|
49
|
+
Decision: Use Zod for runtime API response validation instead of manual type guards.
|
|
50
|
+
|
|
51
|
+
Options considered:
|
|
52
|
+
A) Manual type guards — verbose, error-prone to maintain
|
|
53
|
+
B) Zod schema validation — declarative, generates TypeScript types automatically
|
|
54
|
+
C) io-ts — functional style, steep learning curve for the team
|
|
55
|
+
|
|
56
|
+
Chosen: Zod (option B). The automatic type inference reduces duplication between
|
|
57
|
+
runtime validation and TypeScript types. Team is already familiar with Zod from
|
|
58
|
+
form validation.
|
|
59
|
+
\`\`\`
|
|
60
|
+
|
|
61
|
+
タグ:\`design-decision\`, \`typescript\`, \`validation\`
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 3. パターン発見
|
|
66
|
+
|
|
67
|
+
**タイミング**:現在のファイルを超えて適用できる再利用可能なコードパターンを発見したとき。
|
|
68
|
+
|
|
69
|
+
**含めるべき内容**:
|
|
70
|
+
- パターン名(ある場合)
|
|
71
|
+
- パターンが解決する問題
|
|
72
|
+
- テンプレート/スケルトンコード
|
|
73
|
+
- どこで適用するか
|
|
74
|
+
- 注意事項や制限
|
|
75
|
+
|
|
76
|
+
**例**:
|
|
77
|
+
\`\`\`
|
|
78
|
+
Pattern: Repository layer with in-memory cache for read-heavy entities.
|
|
79
|
+
|
|
80
|
+
When to use: Entity reads are >10x more frequent than writes and data fits in memory.
|
|
81
|
+
|
|
82
|
+
Template:
|
|
83
|
+
class CachedRepository<T> {
|
|
84
|
+
private cache = new Map<string, T>();
|
|
85
|
+
find(id: string): T | undefined { return this.cache.get(id); }
|
|
86
|
+
store(id: string, entity: T): void { this.cache.set(id, entity); }
|
|
87
|
+
invalidate(id: string): void { this.cache.delete(id); }
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
Caveat: Cache must be invalidated on writes; not suitable for distributed deployments
|
|
91
|
+
without a shared cache layer.
|
|
92
|
+
\`\`\`
|
|
93
|
+
|
|
94
|
+
タグ:\`pattern\`, \`caching\`, \`architecture\`
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 4. トラブルシューティング
|
|
99
|
+
|
|
100
|
+
**タイミング**:問題を解決するために複数ステップの診断プロセスを経たとき。
|
|
101
|
+
|
|
102
|
+
**含めるべき内容**:
|
|
103
|
+
- 最初の症状
|
|
104
|
+
- 検証した仮説と結果
|
|
105
|
+
- 誤った方向性(他の人が繰り返さないように)
|
|
106
|
+
- 最終的な診断
|
|
107
|
+
- 解決手順
|
|
108
|
+
|
|
109
|
+
**例**:
|
|
110
|
+
\`\`\`
|
|
111
|
+
Symptom: knowledgine start fails with "SQLITE_ERROR: no such module: vec0" after
|
|
112
|
+
upgrading Node.js from 18 to 20.
|
|
113
|
+
|
|
114
|
+
Hypotheses tested:
|
|
115
|
+
- Reinstalled sqlite-vec package — no change
|
|
116
|
+
- Cleared node_modules and reinstalled — no change
|
|
117
|
+
- Downgraded back to Node 18 — resolved the issue
|
|
118
|
+
|
|
119
|
+
Diagnosis: Native module compiled for Node 18 ABI. Node 20 uses a different ABI
|
|
120
|
+
(NODE_MODULE_VERSION 115 vs 108).
|
|
121
|
+
|
|
122
|
+
Resolution: Run "npm rebuild" after upgrading Node.js to recompile native modules.
|
|
123
|
+
\`\`\`
|
|
124
|
+
|
|
125
|
+
タグ:\`troubleshooting\`, \`sqlite\`, \`native-modules\`, \`nodejs\`
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 5. 外部知識
|
|
130
|
+
|
|
131
|
+
**タイミング**:ドキュメント、記事、ブログ投稿、Stack Overflowからの知見を適用したとき。
|
|
132
|
+
|
|
133
|
+
**含めるべき内容**:
|
|
134
|
+
- ソースURLまたは参照
|
|
135
|
+
- 抽出した重要な知見
|
|
136
|
+
- このプロジェクトにどう適用したか
|
|
137
|
+
- このコードベース固有の注意事項
|
|
138
|
+
|
|
139
|
+
**例**:
|
|
140
|
+
\`\`\`
|
|
141
|
+
Source: https://nodejs.org/api/esm.html#esm_mandatory_file_extensions
|
|
142
|
+
|
|
143
|
+
Insight: In ESM (type: "module" in package.json), import paths MUST include the .js
|
|
144
|
+
extension even for TypeScript files. The TypeScript compiler emits .js extensions in
|
|
145
|
+
output but the source .ts files must reference .js for tsc to resolve them correctly.
|
|
146
|
+
|
|
147
|
+
Applied: Updated all internal imports in packages/cli/src to use .js extension.
|
|
148
|
+
\`\`\`
|
|
149
|
+
|
|
150
|
+
タグ:\`external-knowledge\`, \`esm\`, \`typescript\`
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## 6. リファクタリング
|
|
155
|
+
|
|
156
|
+
**タイミング**:既存コードの構造や品質を改善したとき。
|
|
157
|
+
|
|
158
|
+
**含めるべき内容**:
|
|
159
|
+
- 修正前の問題点
|
|
160
|
+
- 変更した内容
|
|
161
|
+
- 達成した改善(可読性、パフォーマンス、保守性)
|
|
162
|
+
- リスクやトレードオフ
|
|
163
|
+
|
|
164
|
+
**例**:
|
|
165
|
+
\`\`\`
|
|
166
|
+
Before: Single 400-line setupCommand() function with nested conditionals handling all
|
|
167
|
+
target types inline.
|
|
168
|
+
|
|
169
|
+
After: Extracted per-target config builders into a TARGET_HANDLERS map. Each handler
|
|
170
|
+
is a pure function returning McpConfig. The main command orchestrates selection and
|
|
171
|
+
writing only.
|
|
172
|
+
|
|
173
|
+
Improvement: Adding a new target now requires only adding one entry to TARGET_HANDLERS
|
|
174
|
+
rather than editing the main function. Test coverage became straightforward.
|
|
175
|
+
\`\`\`
|
|
176
|
+
|
|
177
|
+
タグ:\`refactoring\`, \`architecture\`
|
|
178
|
+
`,
|
|
179
|
+
"tag-taxonomy.md": `# タグタクソノミー
|
|
180
|
+
|
|
181
|
+
knowledgineの知識キャプチャ用標準タグ。1件のキャプチャにつき2〜5個のタグを使用します。
|
|
182
|
+
最も具体的なタグを選んでください。「code」や「misc」のような汎用的なタグは避けてください。
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## 主要カテゴリタグ(1つ選択)
|
|
187
|
+
|
|
188
|
+
| タグ | 用途 |
|
|
189
|
+
|-----|---------|
|
|
190
|
+
| \`bug-fix\` | 根本原因分析を伴う欠陥の解決 |
|
|
191
|
+
| \`design-decision\` | 理由を持つアーキテクチャまたは実装の選択 |
|
|
192
|
+
| \`pattern\` | 再利用可能なコードまたは設計パターン |
|
|
193
|
+
| \`troubleshooting\` | 複数ステップの診断プロセス |
|
|
194
|
+
| \`external-knowledge\` | 外部ソース(ドキュメント、記事、SO)からの知見 |
|
|
195
|
+
| \`refactoring\` | コード品質の改善 |
|
|
196
|
+
|
|
197
|
+
## ドメインタグ(0〜3個選択)
|
|
198
|
+
|
|
199
|
+
### 言語 & ランタイム
|
|
200
|
+
| タグ | 用途 |
|
|
201
|
+
|-----|---------|
|
|
202
|
+
| \`typescript\` | TypeScript固有のパターン、型システム |
|
|
203
|
+
| \`javascript\` | JavaScript固有のパターン |
|
|
204
|
+
| \`nodejs\` | Node.jsランタイム、ネイティブモジュール、ESM |
|
|
205
|
+
| \`sql\` | SQLクエリ、スキーマ設計 |
|
|
206
|
+
| \`bash\` | シェルスクリプト、CLIツール |
|
|
207
|
+
|
|
208
|
+
### 品質 & 安全性
|
|
209
|
+
| タグ | 用途 |
|
|
210
|
+
|-----|---------|
|
|
211
|
+
| \`null-safety\` | null/undefinedの処理、オプショナルチェーン |
|
|
212
|
+
| \`type-safety\` | TypeScriptのstrictモード、型ガード |
|
|
213
|
+
| \`error-handling\` | エラー伝播、try/catchパターン |
|
|
214
|
+
| \`validation\` | 入力検証、スキーマ検証 |
|
|
215
|
+
| \`security\` | 認証、インジェクション防止、シークレット管理 |
|
|
216
|
+
| \`testing\` | テストパターン、テストユーティリティ、カバレッジ |
|
|
217
|
+
|
|
218
|
+
### アーキテクチャ
|
|
219
|
+
| タグ | 用途 |
|
|
220
|
+
|-----|---------|
|
|
221
|
+
| \`architecture\` | 高レベルの構造的判断 |
|
|
222
|
+
| \`api-design\` | REST、RPC、GraphQLインターフェース設計 |
|
|
223
|
+
| \`database\` | データベーススキーマ、マイグレーション、クエリ |
|
|
224
|
+
| \`caching\` | インメモリまたは分散キャッシュ |
|
|
225
|
+
| \`async\` | async/awaitパターン、並行処理 |
|
|
226
|
+
|
|
227
|
+
### インフラ & ツール
|
|
228
|
+
| タグ | 用途 |
|
|
229
|
+
|-----|---------|
|
|
230
|
+
| \`build\` | ビルドシステム、バンドラー設定 |
|
|
231
|
+
| \`ci-cd\` | CI/CDパイプライン、GitHub Actions |
|
|
232
|
+
| \`devops\` | デプロイ、インフラストラクチャーアズコード |
|
|
233
|
+
| \`dependencies\` | パッケージ管理、バージョンアップグレード |
|
|
234
|
+
| \`native-modules\` | Node.jsネイティブアドオン、ABI互換性 |
|
|
235
|
+
| \`esm\` | ESモジュール、import/export |
|
|
236
|
+
| \`performance\` | 最適化、プロファイリング、ベンチマーク |
|
|
237
|
+
| \`memory\` | メモリ管理、リーク検出 |
|
|
238
|
+
|
|
239
|
+
### プロジェクト固有
|
|
240
|
+
| タグ | 用途 |
|
|
241
|
+
|-----|---------|
|
|
242
|
+
| \`sqlite\` | SQLite、sqlite-vec、FTS5 |
|
|
243
|
+
| \`mcp\` | Model Context Protocolの統合 |
|
|
244
|
+
| \`embedding\` | ベクトル埋め込み、セマンティック検索 |
|
|
245
|
+
| \`entity-extraction\` | 固有表現認識、グラフ |
|
|
246
|
+
| \`ingest\` | 知識インジェストパイプライン |
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## タグ付けの例
|
|
251
|
+
|
|
252
|
+
| シナリオ | タグ |
|
|
253
|
+
|----------|------|
|
|
254
|
+
| TypeScriptのnull参照エラーを修正 | \`bug-fix\`, \`typescript\`, \`null-safety\` |
|
|
255
|
+
| バリデーションにZodを使用することを決定 | \`design-decision\`, \`validation\`, \`typescript\` |
|
|
256
|
+
| ESMインポート拡張子パターンを発見 | \`external-knowledge\`, \`esm\`, \`nodejs\` |
|
|
257
|
+
| SQLite FTS5クエリを最適化 | \`performance\`, \`sqlite\`, \`database\` |
|
|
258
|
+
| コマンドハンドラ構造をリファクタリング | \`refactoring\`, \`architecture\` |
|
|
259
|
+
`,
|
|
260
|
+
"format-examples.md": `# フォーマット例
|
|
261
|
+
|
|
262
|
+
適切にフォーマットされた知識キャプチャの具体的な例。
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## 例1:バグ修正(TypeScript)
|
|
267
|
+
|
|
268
|
+
**タイトル**:Fix "object is possibly undefined" in KnowledgeRepository.getById
|
|
269
|
+
|
|
270
|
+
**タグ**:\`bug-fix\`, \`typescript\`, \`null-safety\`
|
|
271
|
+
|
|
272
|
+
**内容**:
|
|
273
|
+
\`\`\`
|
|
274
|
+
Problem: TypeScript error "object is possibly 'undefined'" when accessing note.id after
|
|
275
|
+
calling repository.getById(). The method signature returned Note | undefined but all
|
|
276
|
+
call sites assumed Note.
|
|
277
|
+
|
|
278
|
+
Root cause: The method was added when the codebase was less strict. The return type
|
|
279
|
+
correctly reflects that a record might not exist, but call sites were not updated.
|
|
280
|
+
|
|
281
|
+
Fix:
|
|
282
|
+
1. Updated all call sites to handle the undefined case explicitly:
|
|
283
|
+
const note = repository.getById(id);
|
|
284
|
+
if (!note) { throw new Error(\`Note \${id} not found\`); }
|
|
285
|
+
2. Added a getByIdOrThrow() helper for cases where undefined is a programming error.
|
|
286
|
+
|
|
287
|
+
Prevention: Avoid non-null assertions (!). Add repository methods with explicit error
|
|
288
|
+
semantics (OrThrow suffix) so callers choose their error handling strategy.
|
|
289
|
+
\`\`\`
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## 例2:設計判断(アーキテクチャ)
|
|
294
|
+
|
|
295
|
+
**タイトル**:Use append-only markers in CLAUDE.md for knowledgine rules section
|
|
296
|
+
|
|
297
|
+
**タグ**:\`design-decision\`, \`architecture\`
|
|
298
|
+
|
|
299
|
+
**内容**:
|
|
300
|
+
\`\`\`
|
|
301
|
+
Decision: Wrap the injected rules section in HTML comment markers
|
|
302
|
+
<!-- knowledgine:rules:start --> and <!-- knowledgine:rules:end --> rather than
|
|
303
|
+
replacing the entire file or using a separate file.
|
|
304
|
+
|
|
305
|
+
Options considered:
|
|
306
|
+
A) Separate .knowledgine/RULES.md file — requires agent to know about the extra file
|
|
307
|
+
B) Replace entire CLAUDE.md — destroys user customizations on re-run
|
|
308
|
+
C) Append-only (no markers) — cannot update or remove without leaving duplicates
|
|
309
|
+
D) Marked section (chosen) — idempotent updates, preserves surrounding content
|
|
310
|
+
|
|
311
|
+
Chosen: Option D. The markers allow the CLI to find and replace exactly the
|
|
312
|
+
knowledgine section on subsequent runs while leaving user-written content intact.
|
|
313
|
+
This makes setup re-runnable and upgrade-safe.
|
|
314
|
+
|
|
315
|
+
Trade-off: If the user manually removes one marker, the update logic will break.
|
|
316
|
+
Documented in the README as a known limitation.
|
|
317
|
+
\`\`\`
|
|
318
|
+
|
|
319
|
+
---
|
|
320
|
+
|
|
321
|
+
## 例3:トラブルシューティング(ネイティブモジュール)
|
|
322
|
+
|
|
323
|
+
**タイトル**:sqlite-vec fails after Node.js major version upgrade — run npm rebuild
|
|
324
|
+
|
|
325
|
+
**タグ**:\`troubleshooting\`, \`sqlite\`, \`native-modules\`, \`nodejs\`
|
|
326
|
+
|
|
327
|
+
**内容**:
|
|
328
|
+
\`\`\`
|
|
329
|
+
Symptom: "Error: The specified module could not be found" (Windows) or
|
|
330
|
+
"invalid ELF header" (Linux) when loading sqlite-vec after upgrading Node.js.
|
|
331
|
+
|
|
332
|
+
Root cause: Native addons (.node files) are compiled against a specific Node.js ABI
|
|
333
|
+
version (NODE_MODULE_VERSION). Upgrading Node.js changes the ABI, making pre-compiled
|
|
334
|
+
binaries incompatible.
|
|
335
|
+
|
|
336
|
+
Diagnosis steps:
|
|
337
|
+
1. Confirmed error occurs only after Node upgrade, not on fresh install
|
|
338
|
+
2. Checked node-gyp output: "gyp info using node@20.x.x | ABI 115"
|
|
339
|
+
3. Found existing .node file compiled for ABI 108 (Node 18)
|
|
340
|
+
|
|
341
|
+
Resolution: Run \`npm rebuild\` (or \`pnpm rebuild\`) after every Node.js major version
|
|
342
|
+
upgrade. This recompiles all native modules for the current ABI.
|
|
343
|
+
|
|
344
|
+
For CI: Pin NODE_MODULE_VERSION in cache keys to avoid stale compiled artifacts.
|
|
345
|
+
\`\`\`
|
|
346
|
+
|
|
347
|
+
---
|
|
348
|
+
|
|
349
|
+
## 例4:パターン発見
|
|
350
|
+
|
|
351
|
+
**タイトル**:Pattern: early-return guard clauses to eliminate deep nesting
|
|
352
|
+
|
|
353
|
+
**タグ**:\`pattern\`, \`refactoring\`
|
|
354
|
+
|
|
355
|
+
**内容**:
|
|
356
|
+
\`\`\`
|
|
357
|
+
Problem: Functions with multiple validation steps produce deeply nested if/else blocks
|
|
358
|
+
that are hard to read and test independently.
|
|
359
|
+
|
|
360
|
+
Pattern: Use guard clauses (early returns) to validate preconditions at the top of the
|
|
361
|
+
function, keeping the happy path at the minimum indent level.
|
|
362
|
+
|
|
363
|
+
Before:
|
|
364
|
+
function processNote(note: Note | undefined) {
|
|
365
|
+
if (note) {
|
|
366
|
+
if (note.content) {
|
|
367
|
+
if (note.content.length > 0) {
|
|
368
|
+
// actual logic here — 3 levels deep
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
After:
|
|
375
|
+
function processNote(note: Note | undefined) {
|
|
376
|
+
if (!note) return;
|
|
377
|
+
if (!note.content) return;
|
|
378
|
+
if (note.content.length === 0) return;
|
|
379
|
+
// actual logic here — top level
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
Applies to: Any function with multiple nullable inputs or precondition checks.
|
|
383
|
+
Caveat: When early returns have side effects (logging, metrics), make that explicit.
|
|
384
|
+
\`\`\`
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## 例5:外部知識
|
|
389
|
+
|
|
390
|
+
**タイトル**:ESM requires .js extension in TypeScript import paths even for .ts source files
|
|
391
|
+
|
|
392
|
+
**タグ**:\`external-knowledge\`, \`esm\`, \`typescript\`, \`nodejs\`
|
|
393
|
+
|
|
394
|
+
**内容**:
|
|
395
|
+
\`\`\`
|
|
396
|
+
Source: https://www.typescriptlang.org/docs/handbook/esm-node.html
|
|
397
|
+
|
|
398
|
+
Insight: When compiling TypeScript to ESM (module: "NodeNext" or "ESNext" + type:
|
|
399
|
+
"module" in package.json), import paths MUST end in .js — not .ts — even when the
|
|
400
|
+
source file is .ts.
|
|
401
|
+
|
|
402
|
+
Reason: TypeScript does not rename import extensions at compile time. The runtime
|
|
403
|
+
(Node.js ESM loader) looks for .js files. TypeScript resolves .ts source files when
|
|
404
|
+
you write \`import foo from "./foo.js"\` — it knows that .js refers to the compiled .ts.
|
|
405
|
+
|
|
406
|
+
Applied to this project: All internal imports in packages/cli/src/ use .js extensions.
|
|
407
|
+
Forgetting this causes "Cannot find module" at runtime despite TypeScript compiling
|
|
408
|
+
successfully (because tsc resolves the type but Node.js cannot find the file).
|
|
409
|
+
|
|
410
|
+
Gotcha: \`import type\` paths also need .js extensions in strict ESM mode.
|
|
411
|
+
\`\`\`
|
|
412
|
+
`,
|
|
413
|
+
};
|
|
414
|
+
//# sourceMappingURL=references.ja.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"references.ja.js","sourceRoot":"","sources":["../../../../src/templates/skills/knowledgine-capture/references.ja.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAA2B;IAChD,kBAAkB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgLrB;IAEC,iBAAiB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgFpB;IAEC,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwJvB;CACA,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const SKILL_MD = "---\nname: knowledgine-capture\ndescription: >\n Record knowledge to the local knowledge base after solving problems, making design\n decisions, or discovering reusable patterns. Invoke whenever you have just fixed a bug,\n made an architectural choice, found a reusable pattern, learned something from external\n sources, or completed a refactoring. Capturing while context is fresh prevents knowledge\n loss across sessions.\n---\n# knowledgine-capture\n\n## Purpose\n\nPersist valuable learnings from the current session into the local knowledge base so they\nare available for future sessions and team members. The knowledge base is only as useful\nas what is recorded into it.\n\n## When to Use\n\nCapture knowledge when **any** of the following events occur in the session:\n\n1. **Bug fix** \u2014 You identified a root cause and applied a solution\n2. **Design decision** \u2014 You chose one approach over alternatives with reasoning\n3. **Pattern discovery** \u2014 You found a reusable pattern worth applying elsewhere\n4. **Troubleshooting** \u2014 You worked through a non-obvious diagnosis process\n5. **External knowledge** \u2014 You applied insights from documentation, articles, or Stack Overflow\n6. **Refactoring** \u2014 You improved existing code with a clear before/after\n\n## When NOT to Use\n\n- Trivial edits (typo fixes, formatting changes) that contain no transferable insight\n- Highly project-specific one-off changes with no reuse value\n- Duplicate entries: first search with `search_knowledge` to check if the knowledge already exists\n\n## How to Capture (MCP Tool)\n\nUse the `capture_knowledge` MCP tool:\n\n```\ncapture_knowledge(\n content: string, // Full explanation: problem + solution + context\n title
|
|
1
|
+
export declare const SKILL_MD = "---\nname: knowledgine-capture\nversion: \"1.0.0\"\nlang: en\ndescription: >\n Record knowledge to the local knowledge base after solving problems, making design\n decisions, or discovering reusable patterns. Invoke whenever you have just fixed a bug,\n made an architectural choice, found a reusable pattern, learned something from external\n sources, or completed a refactoring. Capturing while context is fresh prevents knowledge\n loss across sessions.\n---\n# knowledgine-capture\n\n## Purpose\n\nPersist valuable learnings from the current session into the local knowledge base so they\nare available for future sessions and team members. The knowledge base is only as useful\nas what is recorded into it.\n\n## When to Use\n\nCapture knowledge when **any** of the following events occur in the session:\n\n1. **Bug fix** \u2014 You identified a root cause and applied a solution\n2. **Design decision** \u2014 You chose one approach over alternatives with reasoning\n3. **Pattern discovery** \u2014 You found a reusable pattern worth applying elsewhere\n4. **Troubleshooting** \u2014 You worked through a non-obvious diagnosis process\n5. **External knowledge** \u2014 You applied insights from documentation, articles, or Stack Overflow\n6. **Refactoring** \u2014 You improved existing code with a clear before/after\n\n## When NOT to Use\n\n- Trivial edits (typo fixes, formatting changes) that contain no transferable insight\n- Highly project-specific one-off changes with no reuse value\n- Duplicate entries: first search with `search_knowledge` to check if the knowledge already exists\n\n## How to Capture (MCP Tool)\n\nUse the `capture_knowledge` MCP tool:\n\n```\ncapture_knowledge(\n content: string, // Full explanation: problem + solution + context\n title?: string, // Short descriptive title (max ~80 chars)\n tags?: string[], // 2\u20135 tags from the standard taxonomy\n source?: string // Optional: URL, filename, or reference source\n)\n```\n\n## How to Capture (CLI Alternative)\n\n```bash\nknowledgine capture add \"<content>\" --title \"<title>\" --tags \"<tag1>,<tag2>\"\n```\n\n## Content Format\n\nStructure each capture as three parts:\n\n1. **Problem / Context** \u2014 What situation triggered this learning?\n2. **Solution / Decision** \u2014 What was done and how?\n3. **Rationale / Notes** \u2014 Why this approach? What alternatives were considered?\n\nExample:\n```\n**Problem**: TypeScript threw \"Type 'unknown' is not assignable to type 'User'\" when\nparsing API response.\n\n**Solution**: Added a type guard function isUser(val: unknown): val is User that checks\nfor required fields before narrowing the type.\n\n**Rationale**: Using 'as User' cast was unsafe because the API response structure could\nchange. The type guard provides runtime validation and compile-time safety.\n```\n\n## Step-by-Step Instructions\n\n1. **Identify the trigger** \u2014 Which of the 6 capture events occurred?\n2. **Draft the content** \u2014 Write problem + solution + rationale in plain prose\n3. **Choose a title** \u2014 Concise, searchable (start with verb or noun phrase)\n4. **Select 2\u20135 tags** \u2014 Use the standard taxonomy (see capture-guide.md)\n5. **Call capture_knowledge** \u2014 Pass content, title, tags, and optional source\n6. **Verify** \u2014 Confirm the tool returned a success response\n\n## Best Practices\n\n- Capture immediately after the event while details are fresh\n- Write for a future reader who has no context from this session\n- Prefer one focused capture per insight over large omnibus entries\n- Include error messages verbatim \u2014 they are the most effective search terms\n- Tag precisely: broad tags like \"misc\" reduce discoverability\n\n## Reference Files\n\n- See `capture-guide.md` for detailed guidance on each trigger type with examples\n- See `tag-taxonomy.md` for the standard tag categories\n- See `format-examples.md` for 3\u20135 concrete capture examples\n";
|
|
2
2
|
//# sourceMappingURL=skill-md.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-md.d.ts","sourceRoot":"","sources":["../../../../src/templates/skills/knowledgine-capture/skill-md.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"file":"skill-md.d.ts","sourceRoot":"","sources":["../../../../src/templates/skills/knowledgine-capture/skill-md.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,i4HAiGpB,CAAC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const SKILL_MD = "---\nname: knowledgine-capture\nversion: \"1.0.0\"\nlang: ja\ndescription: >\n \u554F\u984C\u3092\u89E3\u6C7A\u3057\u305F\u308A\u3001\u8A2D\u8A08\u4E0A\u306E\u5224\u65AD\u3092\u884C\u3063\u305F\u308A\u3001\u518D\u5229\u7528\u53EF\u80FD\u306A\u30D1\u30BF\u30FC\u30F3\u3092\u767A\u898B\u3057\u305F\u5F8C\u306B\u3001\n \u30ED\u30FC\u30AB\u30EB\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9\u3078\u77E5\u8B58\u3092\u8A18\u9332\u3057\u307E\u3059\u3002\u30D0\u30B0\u3092\u4FEE\u6B63\u3057\u305F\u76F4\u5F8C\u3001\u30A2\u30FC\u30AD\u30C6\u30AF\u30C1\u30E3\u306E\u9078\u629E\u3092\u3057\u305F\u5F8C\u3001\n \u518D\u5229\u7528\u53EF\u80FD\u306A\u30D1\u30BF\u30FC\u30F3\u3092\u767A\u898B\u3057\u305F\u5F8C\u3001\u5916\u90E8\u30BD\u30FC\u30B9\u304B\u3089\u5B66\u3093\u3060\u5F8C\u3001\u307E\u305F\u306F\u30EA\u30D5\u30A1\u30AF\u30BF\u30EA\u30F3\u30B0\u3092\u5B8C\u4E86\u3057\u305F\u5F8C\u306B\n \u547C\u3073\u51FA\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304C\u65B0\u9BAE\u306A\u3046\u3061\u306B\u8A18\u9332\u3059\u308B\u3053\u3068\u3067\u3001\u30BB\u30C3\u30B7\u30E7\u30F3\u9593\u306E\u77E5\u8B58\u55AA\u5931\u3092\u9632\u304E\u307E\u3059\u3002\n---\n# knowledgine-capture\n\n## \u76EE\u7684\n\n\u73FE\u5728\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u3067\u5F97\u305F\u8CB4\u91CD\u306A\u5B66\u3073\u3092\u30ED\u30FC\u30AB\u30EB\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9\u306B\u4FDD\u5B58\u3057\u3001\n\u5C06\u6765\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u3084\u30C1\u30FC\u30E0\u30E1\u30F3\u30D0\u30FC\u304C\u53C2\u7167\u3067\u304D\u308B\u3088\u3046\u306B\u3057\u307E\u3059\u3002\n\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9\u306F\u8A18\u9332\u3055\u308C\u305F\u5185\u5BB9\u3060\u3051\u304C\u4FA1\u5024\u3092\u6301\u3061\u307E\u3059\u3002\n\n## \u4F7F\u7528\u3059\u308B\u30BF\u30A4\u30DF\u30F3\u30B0\n\n\u30BB\u30C3\u30B7\u30E7\u30F3\u4E2D\u306B\u4EE5\u4E0B\u306E**\u3044\u305A\u308C\u304B\u306E**\u30A4\u30D9\u30F3\u30C8\u304C\u767A\u751F\u3057\u305F\u3068\u304D\u306B\u77E5\u8B58\u3092\u30AD\u30E3\u30D7\u30C1\u30E3\u3057\u307E\u3059\uFF1A\n\n1. **\u30D0\u30B0\u4FEE\u6B63** \u2014 \u6839\u672C\u539F\u56E0\u3092\u7279\u5B9A\u3057\u3001\u89E3\u6C7A\u7B56\u3092\u9069\u7528\u3057\u305F\n2. **\u8A2D\u8A08\u5224\u65AD** \u2014 \u7406\u7531\u3092\u6301\u3063\u3066\u8907\u6570\u306E\u9078\u629E\u80A2\u304B\u3089\u4E00\u3064\u306E\u30A2\u30D7\u30ED\u30FC\u30C1\u3092\u9078\u3093\u3060\n3. **\u30D1\u30BF\u30FC\u30F3\u767A\u898B** \u2014 \u4ED6\u306E\u5834\u6240\u3067\u3082\u9069\u7528\u3067\u304D\u308B\u518D\u5229\u7528\u53EF\u80FD\u306A\u30D1\u30BF\u30FC\u30F3\u3092\u898B\u3064\u3051\u305F\n4. **\u30C8\u30E9\u30D6\u30EB\u30B7\u30E5\u30FC\u30C6\u30A3\u30F3\u30B0** \u2014 \u975E\u81EA\u660E\u306A\u8A3A\u65AD\u30D7\u30ED\u30BB\u30B9\u3092\u7D4C\u3066\u554F\u984C\u3092\u89E3\u6C7A\u3057\u305F\n5. **\u5916\u90E8\u77E5\u8B58** \u2014 \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3001\u8A18\u4E8B\u3001Stack Overflow\u306A\u3069\u304B\u3089\u5F97\u305F\u77E5\u898B\u3092\u9069\u7528\u3057\u305F\n6. **\u30EA\u30D5\u30A1\u30AF\u30BF\u30EA\u30F3\u30B0** \u2014 \u660E\u78BA\u306A\u30D3\u30D5\u30A9\u30FC\u30FB\u30A2\u30D5\u30BF\u30FC\u3092\u6301\u3064\u5F62\u3067\u65E2\u5B58\u30B3\u30FC\u30C9\u3092\u6539\u5584\u3057\u305F\n\n## \u4F7F\u7528\u3057\u306A\u3044\u30BF\u30A4\u30DF\u30F3\u30B0\n\n- \u79FB\u8EE2\u53EF\u80FD\u306A\u77E5\u898B\u3092\u542B\u307E\u306A\u3044\u4E9B\u7D30\u306A\u7DE8\u96C6\uFF08\u8AA4\u5B57\u4FEE\u6B63\u3001\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u5909\u66F4\u306A\u3069\uFF09\n- \u518D\u5229\u7528\u4FA1\u5024\u306E\u306A\u3044\u3001\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u56FA\u6709\u306E\u4E00\u56DE\u9650\u308A\u306E\u5909\u66F4\n- \u91CD\u8907\u30A8\u30F3\u30C8\u30EA\uFF1A\u307E\u305A `search_knowledge` \u3067\u65E2\u5B58\u306E\u77E5\u8B58\u3092\u691C\u7D22\u3057\u3066\u304F\u3060\u3055\u3044\n\n## \u30AD\u30E3\u30D7\u30C1\u30E3\u65B9\u6CD5\uFF08MCP\u30C4\u30FC\u30EB\uFF09\n\n`capture_knowledge` MCP\u30C4\u30FC\u30EB\u3092\u4F7F\u7528\u3057\u307E\u3059\uFF1A\n\n```\ncapture_knowledge(\n content: string, // \u5B8C\u5168\u306A\u8AAC\u660E\uFF1A\u554F\u984C + \u89E3\u6C7A\u7B56 + \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\n title?: string, // \u77ED\u3044\u8AAC\u660E\u7684\u306A\u30BF\u30A4\u30C8\u30EB\uFF08\u6700\u5927\u7D0480\u6587\u5B57\uFF09\n tags?: string[], // \u6A19\u6E96\u30BF\u30AF\u30BD\u30CE\u30DF\u30FC\u304B\u30892\u301C5\u500B\u306E\u30BF\u30B0\n source?: string // \u4EFB\u610F\uFF1AURL\u3001\u30D5\u30A1\u30A4\u30EB\u540D\u3001\u307E\u305F\u306F\u53C2\u7167\u5143\n)\n```\n\n## \u30AD\u30E3\u30D7\u30C1\u30E3\u65B9\u6CD5\uFF08CLI\u306E\u4EE3\u66FF\u624B\u6BB5\uFF09\n\n```bash\nknowledgine capture add \"<content>\" --title \"<title>\" --tags \"<tag1>,<tag2>\"\n```\n\n## \u30B3\u30F3\u30C6\u30F3\u30C4\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\n\n\u5404\u30AD\u30E3\u30D7\u30C1\u30E3\u306F3\u3064\u306E\u30D1\u30FC\u30C8\u3067\u69CB\u6210\u3057\u307E\u3059\uFF1A\n\n1. **\u554F\u984C / \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8** \u2014 \u3053\u306E\u5B66\u3073\u306E\u304D\u3063\u304B\u3051\u3068\u306A\u3063\u305F\u72B6\u6CC1\u306F\u4F55\u304B\uFF1F\n2. **\u89E3\u6C7A\u7B56 / \u5224\u65AD** \u2014 \u4F55\u3092\u3069\u306E\u3088\u3046\u306B\u884C\u3063\u305F\u304B\uFF1F\n3. **\u7406\u7531 / \u5099\u8003** \u2014 \u306A\u305C\u3053\u306E\u30A2\u30D7\u30ED\u30FC\u30C1\u3092\u9078\u3093\u3060\u304B\uFF1F\u3069\u3093\u306A\u4EE3\u66FF\u6848\u3092\u691C\u8A0E\u3057\u305F\u304B\uFF1F\n\n\u4F8B\uFF1A\n```\n**Problem**: TypeScript threw \"Type 'unknown' is not assignable to type 'User'\" when\nparsing API response.\n\n**Solution**: Added a type guard function isUser(val: unknown): val is User that checks\nfor required fields before narrowing the type.\n\n**Rationale**: Using 'as User' cast was unsafe because the API response structure could\nchange. The type guard provides runtime validation and compile-time safety.\n```\n\n## \u30B9\u30C6\u30C3\u30D7\u30D0\u30A4\u30B9\u30C6\u30C3\u30D7\u306E\u624B\u9806\n\n1. **\u30C8\u30EA\u30AC\u30FC\u3092\u7279\u5B9A\u3059\u308B** \u2014 6\u3064\u306E\u30AD\u30E3\u30D7\u30C1\u30E3\u30A4\u30D9\u30F3\u30C8\u306E\u3069\u308C\u304C\u767A\u751F\u3057\u305F\u304B\uFF1F\n2. **\u5185\u5BB9\u3092\u4E0B\u66F8\u304D\u3059\u308B** \u2014 \u554F\u984C + \u89E3\u6C7A\u7B56 + \u7406\u7531\u3092\u5E73\u6587\u3067\u66F8\u304F\n3. **\u30BF\u30A4\u30C8\u30EB\u3092\u9078\u3076** \u2014 \u7C21\u6F54\u3067\u691C\u7D22\u3057\u3084\u3059\u3044\u3082\u306E\uFF08\u52D5\u8A5E\u304B\u540D\u8A5E\u53E5\u3067\u59CB\u3081\u308B\uFF09\n4. **2\u301C5\u500B\u306E\u30BF\u30B0\u3092\u9078\u3076** \u2014 \u6A19\u6E96\u30BF\u30AF\u30BD\u30CE\u30DF\u30FC\u3092\u4F7F\u7528\u3059\u308B\uFF08capture-guide.md\u53C2\u7167\uFF09\n5. **capture_knowledge\u3092\u547C\u3073\u51FA\u3059** \u2014 content\u3001title\u3001tags\u3001\u4EFB\u610F\u306Esource\u3092\u6E21\u3059\n6. **\u78BA\u8A8D\u3059\u308B** \u2014 \u30C4\u30FC\u30EB\u304C\u6210\u529F\u30EC\u30B9\u30DD\u30F3\u30B9\u3092\u8FD4\u3057\u305F\u3053\u3068\u3092\u78BA\u8A8D\u3059\u308B\n\n## \u30D9\u30B9\u30C8\u30D7\u30E9\u30AF\u30C6\u30A3\u30B9\n\n- \u30A4\u30D9\u30F3\u30C8\u76F4\u5F8C\u306B\u8A18\u9332\u3059\u308B\u2014\u2014\u8A73\u7D30\u304C\u65B0\u9BAE\u306A\u3046\u3061\u306B\n- \u3053\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u306E\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u6301\u305F\u306A\u3044\u5C06\u6765\u306E\u8AAD\u8005\u3092\u60F3\u5B9A\u3057\u3066\u66F8\u304F\n- \u5927\u304D\u306A\u307E\u3068\u3081\u30A8\u30F3\u30C8\u30EA\u3088\u308A\u3001\u4E00\u3064\u306E\u77E5\u898B\u306B\u96C6\u4E2D\u3057\u305F\u8A18\u9332\u3092\u512A\u5148\u3059\u308B\n- \u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u305D\u306E\u307E\u307E\u542B\u3081\u308B\u2014\u2014\u6700\u3082\u52B9\u679C\u7684\u306A\u691C\u7D22\u30EF\u30FC\u30C9\u306B\u306A\u308B\n- \u30BF\u30B0\u306F\u6B63\u78BA\u306B\u9078\u3076\uFF1A\u300Cmisc\u300D\u306E\u3088\u3046\u306A\u5E83\u3044\u30BF\u30B0\u306F\u767A\u898B\u6027\u3092\u4E0B\u3052\u308B\n\n## \u53C2\u7167\u30D5\u30A1\u30A4\u30EB\n\n- \u5404\u30C8\u30EA\u30AC\u30FC\u30BF\u30A4\u30D7\u306E\u8A73\u7D30\u30AC\u30A4\u30C9\u3068\u4F8B\u306F `capture-guide.md` \u3092\u53C2\u7167\n- \u6A19\u6E96\u30BF\u30B0\u30AB\u30C6\u30B4\u30EA\u306F `tag-taxonomy.md` \u3092\u53C2\u7167\n- \u5177\u4F53\u7684\u306A\u30AD\u30E3\u30D7\u30C1\u30E3\u4F8B\u306F `format-examples.md` \u3092\u53C2\u7167\n";
|
|
2
|
+
//# sourceMappingURL=skill-md.ja.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-md.ja.d.ts","sourceRoot":"","sources":["../../../../src/templates/skills/knowledgine-capture/skill-md.ja.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,uqQAgGpB,CAAC"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
export const SKILL_MD = `---
|
|
2
|
+
name: knowledgine-capture
|
|
3
|
+
version: "1.0.0"
|
|
4
|
+
lang: ja
|
|
5
|
+
description: >
|
|
6
|
+
問題を解決したり、設計上の判断を行ったり、再利用可能なパターンを発見した後に、
|
|
7
|
+
ローカルナレッジベースへ知識を記録します。バグを修正した直後、アーキテクチャの選択をした後、
|
|
8
|
+
再利用可能なパターンを発見した後、外部ソースから学んだ後、またはリファクタリングを完了した後に
|
|
9
|
+
呼び出してください。コンテキストが新鮮なうちに記録することで、セッション間の知識喪失を防ぎます。
|
|
10
|
+
---
|
|
11
|
+
# knowledgine-capture
|
|
12
|
+
|
|
13
|
+
## 目的
|
|
14
|
+
|
|
15
|
+
現在のセッションで得た貴重な学びをローカルナレッジベースに保存し、
|
|
16
|
+
将来のセッションやチームメンバーが参照できるようにします。
|
|
17
|
+
ナレッジベースは記録された内容だけが価値を持ちます。
|
|
18
|
+
|
|
19
|
+
## 使用するタイミング
|
|
20
|
+
|
|
21
|
+
セッション中に以下の**いずれかの**イベントが発生したときに知識をキャプチャします:
|
|
22
|
+
|
|
23
|
+
1. **バグ修正** — 根本原因を特定し、解決策を適用した
|
|
24
|
+
2. **設計判断** — 理由を持って複数の選択肢から一つのアプローチを選んだ
|
|
25
|
+
3. **パターン発見** — 他の場所でも適用できる再利用可能なパターンを見つけた
|
|
26
|
+
4. **トラブルシューティング** — 非自明な診断プロセスを経て問題を解決した
|
|
27
|
+
5. **外部知識** — ドキュメント、記事、Stack Overflowなどから得た知見を適用した
|
|
28
|
+
6. **リファクタリング** — 明確なビフォー・アフターを持つ形で既存コードを改善した
|
|
29
|
+
|
|
30
|
+
## 使用しないタイミング
|
|
31
|
+
|
|
32
|
+
- 移転可能な知見を含まない些細な編集(誤字修正、フォーマット変更など)
|
|
33
|
+
- 再利用価値のない、プロジェクト固有の一回限りの変更
|
|
34
|
+
- 重複エントリ:まず \`search_knowledge\` で既存の知識を検索してください
|
|
35
|
+
|
|
36
|
+
## キャプチャ方法(MCPツール)
|
|
37
|
+
|
|
38
|
+
\`capture_knowledge\` MCPツールを使用します:
|
|
39
|
+
|
|
40
|
+
\`\`\`
|
|
41
|
+
capture_knowledge(
|
|
42
|
+
content: string, // 完全な説明:問題 + 解決策 + コンテキスト
|
|
43
|
+
title?: string, // 短い説明的なタイトル(最大約80文字)
|
|
44
|
+
tags?: string[], // 標準タクソノミーから2〜5個のタグ
|
|
45
|
+
source?: string // 任意:URL、ファイル名、または参照元
|
|
46
|
+
)
|
|
47
|
+
\`\`\`
|
|
48
|
+
|
|
49
|
+
## キャプチャ方法(CLIの代替手段)
|
|
50
|
+
|
|
51
|
+
\`\`\`bash
|
|
52
|
+
knowledgine capture add "<content>" --title "<title>" --tags "<tag1>,<tag2>"
|
|
53
|
+
\`\`\`
|
|
54
|
+
|
|
55
|
+
## コンテンツフォーマット
|
|
56
|
+
|
|
57
|
+
各キャプチャは3つのパートで構成します:
|
|
58
|
+
|
|
59
|
+
1. **問題 / コンテキスト** — この学びのきっかけとなった状況は何か?
|
|
60
|
+
2. **解決策 / 判断** — 何をどのように行ったか?
|
|
61
|
+
3. **理由 / 備考** — なぜこのアプローチを選んだか?どんな代替案を検討したか?
|
|
62
|
+
|
|
63
|
+
例:
|
|
64
|
+
\`\`\`
|
|
65
|
+
**Problem**: TypeScript threw "Type 'unknown' is not assignable to type 'User'" when
|
|
66
|
+
parsing API response.
|
|
67
|
+
|
|
68
|
+
**Solution**: Added a type guard function isUser(val: unknown): val is User that checks
|
|
69
|
+
for required fields before narrowing the type.
|
|
70
|
+
|
|
71
|
+
**Rationale**: Using 'as User' cast was unsafe because the API response structure could
|
|
72
|
+
change. The type guard provides runtime validation and compile-time safety.
|
|
73
|
+
\`\`\`
|
|
74
|
+
|
|
75
|
+
## ステップバイステップの手順
|
|
76
|
+
|
|
77
|
+
1. **トリガーを特定する** — 6つのキャプチャイベントのどれが発生したか?
|
|
78
|
+
2. **内容を下書きする** — 問題 + 解決策 + 理由を平文で書く
|
|
79
|
+
3. **タイトルを選ぶ** — 簡潔で検索しやすいもの(動詞か名詞句で始める)
|
|
80
|
+
4. **2〜5個のタグを選ぶ** — 標準タクソノミーを使用する(capture-guide.md参照)
|
|
81
|
+
5. **capture_knowledgeを呼び出す** — content、title、tags、任意のsourceを渡す
|
|
82
|
+
6. **確認する** — ツールが成功レスポンスを返したことを確認する
|
|
83
|
+
|
|
84
|
+
## ベストプラクティス
|
|
85
|
+
|
|
86
|
+
- イベント直後に記録する——詳細が新鮮なうちに
|
|
87
|
+
- このセッションのコンテキストを持たない将来の読者を想定して書く
|
|
88
|
+
- 大きなまとめエントリより、一つの知見に集中した記録を優先する
|
|
89
|
+
- エラーメッセージはそのまま含める——最も効果的な検索ワードになる
|
|
90
|
+
- タグは正確に選ぶ:「misc」のような広いタグは発見性を下げる
|
|
91
|
+
|
|
92
|
+
## 参照ファイル
|
|
93
|
+
|
|
94
|
+
- 各トリガータイプの詳細ガイドと例は \`capture-guide.md\` を参照
|
|
95
|
+
- 標準タグカテゴリは \`tag-taxonomy.md\` を参照
|
|
96
|
+
- 具体的なキャプチャ例は \`format-examples.md\` を参照
|
|
97
|
+
`;
|
|
98
|
+
//# sourceMappingURL=skill-md.ja.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-md.ja.js","sourceRoot":"","sources":["../../../../src/templates/skills/knowledgine-capture/skill-md.ja.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgGvB,CAAC"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export const SKILL_MD = `---
|
|
2
2
|
name: knowledgine-capture
|
|
3
|
+
version: "1.0.0"
|
|
4
|
+
lang: en
|
|
3
5
|
description: >
|
|
4
6
|
Record knowledge to the local knowledge base after solving problems, making design
|
|
5
7
|
decisions, or discovering reusable patterns. Invoke whenever you have just fixed a bug,
|
|
@@ -39,8 +41,8 @@ Use the \`capture_knowledge\` MCP tool:
|
|
|
39
41
|
\`\`\`
|
|
40
42
|
capture_knowledge(
|
|
41
43
|
content: string, // Full explanation: problem + solution + context
|
|
42
|
-
title
|
|
43
|
-
tags
|
|
44
|
+
title?: string, // Short descriptive title (max ~80 chars)
|
|
45
|
+
tags?: string[], // 2–5 tags from the standard taxonomy
|
|
44
46
|
source?: string // Optional: URL, filename, or reference source
|
|
45
47
|
)
|
|
46
48
|
\`\`\`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skill-md.js","sourceRoot":"","sources":["../../../../src/templates/skills/knowledgine-capture/skill-md.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG
|
|
1
|
+
{"version":3,"file":"skill-md.js","sourceRoot":"","sources":["../../../../src/templates/skills/knowledgine-capture/skill-md.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiGvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"references.ja.d.ts","sourceRoot":"","sources":["../../../../src/templates/skills/knowledgine-debrief/references.ja.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA4I7C,CAAC"}
|