@knowledgine/cli 0.4.1 → 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.
Files changed (157) hide show
  1. package/dist/commands/ingest.d.ts +10 -0
  2. package/dist/commands/ingest.d.ts.map +1 -1
  3. package/dist/commands/ingest.js +118 -19
  4. package/dist/commands/ingest.js.map +1 -1
  5. package/dist/commands/init.d.ts +1 -0
  6. package/dist/commands/init.d.ts.map +1 -1
  7. package/dist/commands/init.js +140 -33
  8. package/dist/commands/init.js.map +1 -1
  9. package/dist/commands/search.d.ts +1 -0
  10. package/dist/commands/search.d.ts.map +1 -1
  11. package/dist/commands/search.js +60 -9
  12. package/dist/commands/search.js.map +1 -1
  13. package/dist/commands/serve.d.ts.map +1 -1
  14. package/dist/commands/serve.js +39 -4
  15. package/dist/commands/serve.js.map +1 -1
  16. package/dist/commands/setup-skills.d.ts +3 -1
  17. package/dist/commands/setup-skills.d.ts.map +1 -1
  18. package/dist/commands/setup-skills.js +24 -7
  19. package/dist/commands/setup-skills.js.map +1 -1
  20. package/dist/commands/setup.d.ts +2 -0
  21. package/dist/commands/setup.d.ts.map +1 -1
  22. package/dist/commands/setup.js +23 -3
  23. package/dist/commands/setup.js.map +1 -1
  24. package/dist/commands/start.d.ts +1 -0
  25. package/dist/commands/start.d.ts.map +1 -1
  26. package/dist/commands/start.js +100 -66
  27. package/dist/commands/start.js.map +1 -1
  28. package/dist/commands/status.d.ts.map +1 -1
  29. package/dist/commands/status.js +15 -15
  30. package/dist/commands/status.js.map +1 -1
  31. package/dist/commands/upgrade.d.ts.map +1 -1
  32. package/dist/commands/upgrade.js +22 -15
  33. package/dist/commands/upgrade.js.map +1 -1
  34. package/dist/index.js +35 -2
  35. package/dist/index.js.map +1 -1
  36. package/dist/templates/skills/index.d.ts +8 -5
  37. package/dist/templates/skills/index.d.ts.map +1 -1
  38. package/dist/templates/skills/index.js +56 -41
  39. package/dist/templates/skills/index.js.map +1 -1
  40. package/dist/templates/skills/knowledgine-capture/references.ja.d.ts +2 -0
  41. package/dist/templates/skills/knowledgine-capture/references.ja.d.ts.map +1 -0
  42. package/dist/templates/skills/knowledgine-capture/references.ja.js +414 -0
  43. package/dist/templates/skills/knowledgine-capture/references.ja.js.map +1 -0
  44. package/dist/templates/skills/knowledgine-capture/skill-md.d.ts +1 -1
  45. package/dist/templates/skills/knowledgine-capture/skill-md.d.ts.map +1 -1
  46. package/dist/templates/skills/knowledgine-capture/skill-md.ja.d.ts +2 -0
  47. package/dist/templates/skills/knowledgine-capture/skill-md.ja.d.ts.map +1 -0
  48. package/dist/templates/skills/knowledgine-capture/skill-md.ja.js +98 -0
  49. package/dist/templates/skills/knowledgine-capture/skill-md.ja.js.map +1 -0
  50. package/dist/templates/skills/knowledgine-capture/skill-md.js +4 -2
  51. package/dist/templates/skills/knowledgine-capture/skill-md.js.map +1 -1
  52. package/dist/templates/skills/knowledgine-debrief/references.ja.d.ts +2 -0
  53. package/dist/templates/skills/knowledgine-debrief/references.ja.d.ts.map +1 -0
  54. package/dist/templates/skills/knowledgine-debrief/references.ja.js +141 -0
  55. package/dist/templates/skills/knowledgine-debrief/references.ja.js.map +1 -0
  56. package/dist/templates/skills/knowledgine-debrief/skill-md.d.ts +1 -1
  57. package/dist/templates/skills/knowledgine-debrief/skill-md.d.ts.map +1 -1
  58. package/dist/templates/skills/knowledgine-debrief/skill-md.ja.d.ts +2 -0
  59. package/dist/templates/skills/knowledgine-debrief/skill-md.ja.d.ts.map +1 -0
  60. package/dist/templates/skills/knowledgine-debrief/skill-md.ja.js +82 -0
  61. package/dist/templates/skills/knowledgine-debrief/skill-md.ja.js.map +1 -0
  62. package/dist/templates/skills/knowledgine-debrief/skill-md.js +10 -2
  63. package/dist/templates/skills/knowledgine-debrief/skill-md.js.map +1 -1
  64. package/dist/templates/skills/{knowledgine-explain → knowledgine-explore}/references.d.ts.map +1 -1
  65. package/dist/templates/skills/knowledgine-explore/references.ja.d.ts +2 -0
  66. package/dist/templates/skills/knowledgine-explore/references.ja.d.ts.map +1 -0
  67. package/dist/templates/skills/knowledgine-explore/references.ja.js +182 -0
  68. package/dist/templates/skills/knowledgine-explore/references.ja.js.map +1 -0
  69. package/dist/templates/skills/{knowledgine-explain → knowledgine-explore}/references.js +15 -15
  70. package/dist/templates/skills/{knowledgine-explain → knowledgine-explore}/references.js.map +1 -1
  71. package/dist/templates/skills/knowledgine-explore/skill-md.d.ts +2 -0
  72. package/dist/templates/skills/knowledgine-explore/skill-md.d.ts.map +1 -0
  73. package/dist/templates/skills/knowledgine-explore/skill-md.ja.d.ts +2 -0
  74. package/dist/templates/skills/knowledgine-explore/skill-md.ja.d.ts.map +1 -0
  75. package/dist/templates/skills/knowledgine-explore/skill-md.ja.js +98 -0
  76. package/dist/templates/skills/knowledgine-explore/skill-md.ja.js.map +1 -0
  77. package/dist/templates/skills/{knowledgine-explain → knowledgine-explore}/skill-md.js +19 -12
  78. package/dist/templates/skills/{knowledgine-suggest → knowledgine-explore}/skill-md.js.map +1 -1
  79. package/dist/templates/skills/knowledgine-feedback/references.ja.d.ts +2 -0
  80. package/dist/templates/skills/knowledgine-feedback/references.ja.d.ts.map +1 -0
  81. package/dist/templates/skills/knowledgine-feedback/references.ja.js +214 -0
  82. package/dist/templates/skills/knowledgine-feedback/references.ja.js.map +1 -0
  83. package/dist/templates/skills/knowledgine-feedback/skill-md.d.ts +1 -1
  84. package/dist/templates/skills/knowledgine-feedback/skill-md.d.ts.map +1 -1
  85. package/dist/templates/skills/knowledgine-feedback/skill-md.ja.d.ts +2 -0
  86. package/dist/templates/skills/knowledgine-feedback/skill-md.ja.d.ts.map +1 -0
  87. package/dist/templates/skills/knowledgine-feedback/skill-md.ja.js +108 -0
  88. package/dist/templates/skills/knowledgine-feedback/skill-md.ja.js.map +1 -0
  89. package/dist/templates/skills/knowledgine-feedback/skill-md.js +4 -2
  90. package/dist/templates/skills/knowledgine-feedback/skill-md.js.map +1 -1
  91. package/dist/templates/skills/knowledgine-ingest/references.ja.d.ts +2 -0
  92. package/dist/templates/skills/knowledgine-ingest/references.ja.d.ts.map +1 -0
  93. package/dist/templates/skills/knowledgine-ingest/references.ja.js +244 -0
  94. package/dist/templates/skills/knowledgine-ingest/references.ja.js.map +1 -0
  95. package/dist/templates/skills/knowledgine-ingest/skill-md.d.ts +1 -1
  96. package/dist/templates/skills/knowledgine-ingest/skill-md.d.ts.map +1 -1
  97. package/dist/templates/skills/knowledgine-ingest/skill-md.ja.d.ts +2 -0
  98. package/dist/templates/skills/knowledgine-ingest/skill-md.ja.d.ts.map +1 -0
  99. package/dist/templates/skills/knowledgine-ingest/skill-md.ja.js +81 -0
  100. package/dist/templates/skills/knowledgine-ingest/skill-md.ja.js.map +1 -0
  101. package/dist/templates/skills/knowledgine-ingest/skill-md.js +2 -0
  102. package/dist/templates/skills/knowledgine-ingest/skill-md.js.map +1 -1
  103. package/dist/templates/skills/{knowledgine-recall → knowledgine-memory}/references.d.ts.map +1 -1
  104. package/dist/templates/skills/knowledgine-memory/references.ja.d.ts +2 -0
  105. package/dist/templates/skills/knowledgine-memory/references.ja.d.ts.map +1 -0
  106. package/dist/templates/skills/knowledgine-memory/references.ja.js +188 -0
  107. package/dist/templates/skills/knowledgine-memory/references.ja.js.map +1 -0
  108. package/dist/templates/skills/knowledgine-memory/references.js +188 -0
  109. package/dist/templates/skills/knowledgine-memory/references.js.map +1 -0
  110. package/dist/templates/skills/knowledgine-memory/skill-md.d.ts +2 -0
  111. package/dist/templates/skills/knowledgine-memory/skill-md.d.ts.map +1 -0
  112. package/dist/templates/skills/knowledgine-memory/skill-md.ja.d.ts +2 -0
  113. package/dist/templates/skills/knowledgine-memory/skill-md.ja.d.ts.map +1 -0
  114. package/dist/templates/skills/knowledgine-memory/skill-md.ja.js +169 -0
  115. package/dist/templates/skills/knowledgine-memory/skill-md.ja.js.map +1 -0
  116. package/dist/templates/skills/knowledgine-memory/skill-md.js +169 -0
  117. package/dist/templates/skills/{knowledgine-recall → knowledgine-memory}/skill-md.js.map +1 -1
  118. package/dist/templates/skills/knowledgine-search/references.d.ts.map +1 -0
  119. package/dist/templates/skills/knowledgine-search/references.ja.d.ts +2 -0
  120. package/dist/templates/skills/knowledgine-search/references.ja.d.ts.map +1 -0
  121. package/dist/templates/skills/knowledgine-search/references.ja.js +313 -0
  122. package/dist/templates/skills/knowledgine-search/references.ja.js.map +1 -0
  123. package/dist/templates/skills/{knowledgine-recall → knowledgine-search}/references.js +124 -19
  124. package/dist/templates/skills/knowledgine-search/references.js.map +1 -0
  125. package/dist/templates/skills/knowledgine-search/skill-md.d.ts +2 -0
  126. package/dist/templates/skills/knowledgine-search/skill-md.d.ts.map +1 -0
  127. package/dist/templates/skills/knowledgine-search/skill-md.ja.d.ts +2 -0
  128. package/dist/templates/skills/knowledgine-search/skill-md.ja.d.ts.map +1 -0
  129. package/dist/templates/skills/knowledgine-search/skill-md.ja.js +175 -0
  130. package/dist/templates/skills/knowledgine-search/skill-md.ja.js.map +1 -0
  131. package/dist/templates/skills/knowledgine-search/skill-md.js +174 -0
  132. package/dist/templates/skills/knowledgine-search/skill-md.js.map +1 -0
  133. package/dist/templates/skills/types.d.ts +4 -0
  134. package/dist/templates/skills/types.d.ts.map +1 -0
  135. package/dist/templates/skills/types.js +3 -0
  136. package/dist/templates/skills/types.js.map +1 -0
  137. package/package.json +4 -4
  138. package/dist/lib/entity-extractor.d.ts +0 -17
  139. package/dist/lib/entity-extractor.d.ts.map +0 -1
  140. package/dist/lib/entity-extractor.js +0 -23
  141. package/dist/lib/entity-extractor.js.map +0 -1
  142. package/dist/templates/skills/knowledgine-explain/skill-md.d.ts +0 -2
  143. package/dist/templates/skills/knowledgine-explain/skill-md.d.ts.map +0 -1
  144. package/dist/templates/skills/knowledgine-explain/skill-md.js.map +0 -1
  145. package/dist/templates/skills/knowledgine-recall/references.js.map +0 -1
  146. package/dist/templates/skills/knowledgine-recall/skill-md.d.ts +0 -2
  147. package/dist/templates/skills/knowledgine-recall/skill-md.d.ts.map +0 -1
  148. package/dist/templates/skills/knowledgine-recall/skill-md.js +0 -86
  149. package/dist/templates/skills/knowledgine-suggest/references.d.ts.map +0 -1
  150. package/dist/templates/skills/knowledgine-suggest/references.js +0 -121
  151. package/dist/templates/skills/knowledgine-suggest/references.js.map +0 -1
  152. package/dist/templates/skills/knowledgine-suggest/skill-md.d.ts +0 -2
  153. package/dist/templates/skills/knowledgine-suggest/skill-md.d.ts.map +0 -1
  154. package/dist/templates/skills/knowledgine-suggest/skill-md.js +0 -94
  155. /package/dist/templates/skills/{knowledgine-explain → knowledgine-explore}/references.d.ts +0 -0
  156. /package/dist/templates/skills/{knowledgine-recall → knowledgine-memory}/references.d.ts +0 -0
  157. /package/dist/templates/skills/{knowledgine-suggest → knowledgine-search}/references.d.ts +0 -0
@@ -1,7 +1,8 @@
1
1
  export const REFERENCES = {
2
2
  "search-strategy.md": `# Search Strategy
3
3
 
4
- How to choose the right search mode and build an effective recall workflow.
4
+ How to choose the right search mode, extract context signals, and build an effective
5
+ search workflow combining query search, context-based suggestions, and graph traversal.
5
6
 
6
7
  ---
7
8
 
@@ -51,7 +52,8 @@ search_knowledge(query: "user authentication token expiry", mode: "semantic")
51
52
  Combines keyword and semantic scores. Returns the best of both modes.
52
53
 
53
54
  **Best for**:
54
- - Most general-purpose searches
55
+ - Context-based queries derived from file paths, task descriptions, or feature areas
56
+ - Most general-purpose exploration
55
57
  - When you are unsure which mode is better
56
58
  - Complex queries mixing exact terms and concepts
57
59
 
@@ -62,11 +64,64 @@ search_knowledge(query: "TypeScript null safety database repository", mode: "hyb
62
64
 
63
65
  ---
64
66
 
67
+ ## Context Signal Extraction
68
+
69
+ When you do not have a specific search query, extract signals from the current work context.
70
+
71
+ ### Signal Types
72
+
73
+ | Signal Type | Example Input | Extracted Query |
74
+ |-------------|---------------|-----------------|
75
+ | File path | \`src/commands/setup.ts\` | \`"setup command configuration"\` |
76
+ | File path | \`packages/core/src/config/config-loader.ts\` | \`"config loader configuration"\` |
77
+ | File path | \`packages/ingest/src/plugins/github.ts\` | \`"github ingest plugin"\` |
78
+ | Component name | \`SetupCommand\`, \`KnowledgeRepository\` | Use directly as keyword query |
79
+ | Task description | "Add support for TOML config files in the setup command" | \`"TOML configuration setup"\` |
80
+ | Task description | "Fix entity extraction pipeline for empty documents" | \`"entity extraction empty document"\` |
81
+ | Error message | "SQLITE_ERROR: table entities has no column 'confidence'" | \`"SQLITE_ERROR entities column"\` |
82
+ | Feature area | MCP configuration | \`"MCP server configuration"\` |
83
+ | Feature area | Search | \`"search_knowledge FTS5 semantic"\` |
84
+
85
+ ### Multi-Signal Queries
86
+
87
+ Combine 2–3 signals for more targeted results:
88
+
89
+ \`\`\`
90
+ // File + task
91
+ query: "config-loader TOML parsing"
92
+
93
+ // Component + problem type
94
+ query: "KnowledgeRepository null safety"
95
+
96
+ // Technology + pattern
97
+ query: "sqlite migration schema change"
98
+ \`\`\`
99
+
100
+ ---
101
+
65
102
  ## Workflow Patterns
66
103
 
67
- ### Pattern 1: Error-first Search
104
+ ### Pattern 1: Session Start
105
+
106
+ When beginning work on a known area:
107
+
108
+ 1. Extract context from the primary file or feature area
109
+ 2. Run hybrid search with the combined context query
110
+ 3. Review top 3–5 results and note any warnings or past decisions
111
+ 4. Use \`find_related\` with the current file path to discover connected notes
112
+ 5. Proceed with targeted keyword queries as specific issues arise
113
+
114
+ \`\`\`
115
+ // Step 1: Context-based search
116
+ search_knowledge(query: "setup command MCP configuration", mode: "hybrid", limit: 10)
117
+
118
+ // Step 2: Graph traversal
119
+ find_related(filePath: "src/commands/setup.ts", limit: 5)
120
+ \`\`\`
68
121
 
69
- When encountering an error:
122
+ ### Pattern 2: Error Encountered
123
+
124
+ When an error or exception occurs:
70
125
 
71
126
  1. Copy the exact error message
72
127
  2. Run keyword search with the error message
@@ -80,26 +135,34 @@ Error: "Cannot find module '@knowledgine/core'"
80
135
  → semantic: "TypeScript module not found build error"
81
136
  \`\`\`
82
137
 
83
- ### Pattern 2: Context Discovery
138
+ ### Pattern 3: Exploring Unfamiliar Code
84
139
 
85
- When starting work on an unfamiliar area:
140
+ When approaching an unfamiliar component or module:
86
141
 
87
142
  1. Search by file path: \`keyword: "src/commands/setup.ts"\`
88
143
  2. Search by component name: \`keyword: "setupCommand"\`
89
144
  3. Search by topic: \`semantic: "MCP configuration setup"\`
145
+ 4. Traverse the graph from any relevant result: \`find_related(noteId: <id>, maxHops: 2)\`
90
146
 
91
- ### Pattern 3: Decision Lookup
147
+ ### Pattern 4: Before Making a Change
92
148
 
93
- Before making an architectural choice:
149
+ Before an architectural decision or significant change:
94
150
 
95
151
  1. Search for past decisions: \`keyword: "design-decision <topic>"\`
96
152
  2. Search for related patterns: \`semantic: "<concept> pattern implementation"\`
97
- 3. Check entity connections: use \`get_entity_graph\` for related components
153
+ 3. Use \`find_related\` with a relevant noteId to find connected decisions
98
154
 
99
155
  ---
100
156
 
101
157
  ## Result Interpretation
102
158
 
159
+ ### Keyword Mode (BM25 Score)
160
+
161
+ Results are ranked by BM25 relevance score. Higher is better; no fixed scale.
162
+ Focus on the top 3–5 results unless you are building comprehensive context.
163
+
164
+ ### Semantic Mode (Cosine Similarity)
165
+
103
166
  | Score | Meaning |
104
167
  |-------|---------|
105
168
  | > 0.9 | Very strong match — highly likely relevant |
@@ -107,12 +170,40 @@ Before making an architectural choice:
107
170
  | 0.5–0.7 | Weak match — may or may not be relevant |
108
171
  | < 0.5 | Marginal — usually skip unless no better results |
109
172
 
110
- For keyword mode, results are ranked by BM25 relevance score (FTS5).
111
- For semantic mode, results are ranked by cosine similarity of embeddings.
173
+ ### Hybrid Mode
174
+
175
+ Scores combine BM25 and cosine similarity. Treat the ranking as a combined signal;
176
+ the absolute values are less meaningful than the relative order.
177
+
178
+ ---
179
+
180
+ ## Graph Traversal with find_related
181
+
182
+ After finding an initial relevant note, use \`find_related\` to discover connected notes:
183
+
184
+ \`\`\`
185
+ // Use the numeric note ID from a search result
186
+ find_related(noteId: 42, limit: 5, maxHops: 1)
187
+
188
+ // Or search by the current file path directly
189
+ find_related(filePath: "packages/core/src/config/config-loader.ts", limit: 5)
190
+ \`\`\`
191
+
192
+ **IMPORTANT**: \`noteId\` must be a number (integer), not a string. Use the \`id\` field
193
+ from \`search_knowledge\` results directly.
194
+
195
+ **maxHops guidance**:
196
+
197
+ | maxHops | Effect |
198
+ |---------|--------|
199
+ | 1 | Direct references only — fast, focused (default) |
200
+ | 2 | One degree of separation — good for exploration |
201
+ | 3 | Broader graph — use for open-ended discovery |
112
202
  `,
113
203
  "query-tips.md": `# Query Tips
114
204
 
115
- How to formulate effective search queries for different situations.
205
+ How to formulate effective search queries for different situations, with templates,
206
+ fallback strategies, and limit guidance.
116
207
 
117
208
  ---
118
209
 
@@ -168,6 +259,15 @@ keyword: "pattern <concept>"
168
259
  semantic: "reusable pattern for <problem type>"
169
260
  \`\`\`
170
261
 
262
+ ### Context-Based (Session Start or File Open)
263
+ \`\`\`
264
+ // Combine file area + task
265
+ hybrid: "<module-name> <task-noun>"
266
+
267
+ // Feature area
268
+ hybrid: "<feature area> <technology>"
269
+ \`\`\`
270
+
171
271
  ---
172
272
 
173
273
  ## When First Query Returns Nothing
@@ -178,7 +278,8 @@ Try these fallback strategies in order:
178
278
  - \`"SQLITE_ERROR: table notes has no column 'embedding'"\`
179
279
  - → \`"sqlite migration column"\`
180
280
 
181
- 2. **Switch modes** — If keyword failed, try semantic and vice versa
281
+ 2. **Switch modes** — If keyword failed, try semantic or hybrid; if semantic failed,
282
+ try keyword
182
283
 
183
284
  3. **Synonym query** — Use related terms
184
285
  - \`"authentication"\` → \`"auth session token login"\`
@@ -187,8 +288,8 @@ Try these fallback strategies in order:
187
288
  - \`"bug-fix typescript"\`
188
289
  - \`"design-decision database"\`
189
290
 
190
- 5. **Accept no results** — Not every problem has been captured before.
191
- After solving it, use knowledgine-capture to record the solution.
291
+ 5. **Accept no results** — Not every problem has been captured before. After solving
292
+ it, use knowledgine-capture to record the solution.
192
293
 
193
294
  ---
194
295
 
@@ -197,11 +298,15 @@ Try these fallback strategies in order:
197
298
  | Situation | Recommended limit |
198
299
  |-----------|-------------------|
199
300
  | Quick lookup (known topic) | 3–5 |
200
- | General exploration | 10 (default) |
201
- | Building full context | 15–20 |
202
- | Finding rare entries | 20+ |
301
+ | General exploration | 10 |
302
+ | Building full context at session start | 15–20 |
303
+ | Finding rare entries | 20 (default) |
304
+
305
+ The default limit for \`search_knowledge\` is **20**. Use lower limits when your query
306
+ is precise to avoid noise. The default limit for \`find_related\` is **5** — this is
307
+ appropriate for most graph traversal operations.
203
308
 
204
- Higher limits slow down search marginally; prefer lower limits when query is precise.
309
+ Higher limits slow down search marginally; prefer lower limits when the query is precise.
205
310
  `,
206
311
  };
207
312
  //# sourceMappingURL=references.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"references.js","sourceRoot":"","sources":["../../../../src/templates/skills/knowledgine-search/references.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAA2B;IAChD,oBAAoB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwMvB;IAEC,eAAe,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2GlB;CACA,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const SKILL_MD = "---\nname: knowledgine-search\nversion: \"1.0.0\"\nlang: en\ndescription: >\n Search the local knowledge base for past solutions, design decisions, and patterns.\n Invoke when facing an error, approaching unfamiliar code, starting a session, opening\n a new file, or considering implementation approaches. Supports three modes: direct\n query search, context-based suggestions, and graph-based related note discovery.\n---\n# knowledgine-search\n\n## Purpose\n\nSearch accumulated project knowledge before solving problems from scratch. The knowledge\nbase contains past bug fixes, design decisions, troubleshooting records, and patterns\ngathered across all previous sessions. This skill unifies direct query search and\ncontext-based discovery into a single workflow, preventing duplicate work and surfacing\nrelevant context proactively.\n\n## When to Use\n\n- **Error or exception encountered** \u2014 Search for the exact error message or key terms\n- **Unfamiliar code area** \u2014 Search for context about the component or module\n- **Implementation choice** \u2014 Search for past decisions on the same topic\n- **Considering a library or approach** \u2014 Search for known gotchas or prior art\n- **Starting a session** \u2014 Get context about the area you will work in\n- **Opening a new file** \u2014 Discover past knowledge about that component\n- **Beginning a feature** \u2014 Find related patterns and past decisions\n- **Starting work on a file** \u2014 Search for related notes about that file path\n\n## When NOT to Use\n\n- Purely mechanical tasks with no ambiguity (renaming a variable, formatting)\n- When you have already searched and found no relevant results within this session\n- After already running context-based search for the same file in the same session\n- Do not call search on every single action \u2014 use judgment\n\n## Search Approaches\n\n### Approach 1: Query Search\n\nYou have specific terms \u2014 an error message, a function name, or a known topic.\n\nUse `search_knowledge` with the specific terms. Start with `keyword` mode for exact\nmatches; switch to `semantic` or `hybrid` when the exact wording is uncertain.\n\n### Approach 2: Context-Based Search\n\nYou are starting work on a file or task without a specific query in mind.\n\nExtract signals from the current file path, component name, task description, or error\nmessage. Combine 2\u20133 signals into a query and use `hybrid` mode for best results. See\n`search-strategy.md` for how to extract context signals.\n\n### Approach 3: Related Note Discovery\n\nYou have found a relevant note and want to discover connected notes in the knowledge graph.\n\nCall `find_related` with the `noteId` (as a number) from the relevant result, or with\nthe current `filePath`. This traverses the knowledge graph to surface notes linked by\nentity relationships, problem-solution pairs, and file associations.\n\n## Choosing Search Mode\n\n| Situation | Mode |\n|-----------|------|\n| You have an exact error message | `keyword` |\n| You remember specific function or variable names | `keyword` |\n| You know the concept but not the exact wording | `semantic` |\n| Starting work with context signals (file, task, feature) | `hybrid` |\n| General exploration of a topic | `hybrid` |\n| Embeddings not available (FTS5-only setup) | `keyword` (only option) |\n\n## How to Search (MCP Tools)\n\n### search_knowledge\n\n```\nsearch_knowledge(\n query: string, // Search query\n mode?: \"keyword\" // \"keyword\" | \"semantic\" | \"hybrid\"\n | \"semantic\" // keyword: exact text match via FTS5 (default)\n | \"hybrid\", // semantic: meaning-based, requires embeddings\n // hybrid: combines both\n limit?: number, // Max results (default: 20)\n agentic?: boolean, // Include deprecated notes (default: false)\n includeDeprecated?: boolean // Include deprecated notes (default: false)\n)\n```\n\n### find_related\n\n```\nfind_related(\n noteId?: number, // ID of a note \u2014 must be a NUMBER (integer), not a string\n filePath?: string, // File path to find related notes for\n limit?: number, // Max results (default: 5)\n maxHops?: number // Graph traversal depth (default: 1, max: 3)\n)\n```\n\nProvide at least one of `noteId` or `filePath`. `noteId` values come from\n`search_knowledge` results \u2014 use the numeric `id` field directly.\n\n## How to Search (CLI Alternative)\n\n```bash\nknowledgine search \"<query>\" # keyword search\nknowledgine search \"<query>\" --mode semantic # semantic search\nknowledgine search \"<query>\" --mode hybrid # hybrid search\nknowledgine suggest --file src/commands/setup.ts # context-based by file path (suggest command)\n```\n\n## Step-by-Step Instructions\n\n1. **Choose your approach** \u2014 Do you have a specific query (Approach 1), or are you\n starting from context like a file path or task description (Approach 2)?\n\n2. **Extract your query**\n - For Approach 1: Use the error message, function name, or known topic directly\n - For Approach 2: Extract signals from file path, component name, task, or error;\n combine 2\u20133 signals into a query (see `search-strategy.md`)\n\n3. **Choose the mode**\n - Exact terms \u2192 `keyword`\n - Context signals or conceptual search \u2192 `hybrid`\n - Known concept, uncertain wording \u2192 `semantic`\n\n4. **Call search_knowledge** \u2014 Pass query, mode, and limit (5\u201310 is usually sufficient;\n default is 20)\n\n5. **Evaluate results** \u2014 Read the returned notes for relevance; note any IDs of\n highly relevant results\n\n6. **Traverse related notes (optional)** \u2014 If a result looks highly relevant, call\n `find_related` with its numeric `noteId` or the current `filePath` to discover\n connected notes via the knowledge graph\n\n7. **Apply findings** \u2014 Use relevant past solutions or decisions to inform your work\n\n8. **Capture if new** \u2014 If you discover a new solution, use knowledgine-capture to\n save it\n\n## Best Practices\n\n- Search before proposing a solution, not after\n- Use the actual error message text as a query \u2014 it is the most targeted search\n- Try multiple queries if the first returns no results\n- At session start, run a context-based search (Approach 2) for the primary work area,\n then use targeted queries (Approach 1) as specific issues arise\n- Prioritize notes tagged with `bug-fix` or `troubleshooting` \u2014 they contain warnings\n- Notes tagged `design-decision` are especially valuable before making changes\n- The `noteId` parameter of `find_related` is a number \u2014 pass the integer id field\n from search results, not a string\n\n## Edge Cases\n\n- **Knowledge base is empty** \u2014 If `search_knowledge` returns no results at all,\n the knowledge base may not have been populated yet. Suggest using knowledgine-ingest\n to index the codebase or knowledgine-capture to start recording knowledge.\n- **Semantic or hybrid mode returns an error** \u2014 Embeddings may not be configured.\n Fall back to `keyword` mode, which relies only on SQLite FTS5 and always works.\n- **find_related returns an error for a noteId** \u2014 Confirm the value is a positive\n integer from a `search_knowledge` result, not a string representation.\n\n## Reference Files\n\n- See `search-strategy.md` for mode selection, context signal extraction, workflow\n patterns, and result interpretation\n- See `query-tips.md` for query formulation templates, fallback strategies, and\n limit guidance\n";
2
+ //# sourceMappingURL=skill-md.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-md.d.ts","sourceRoot":"","sources":["../../../../src/templates/skills/knowledgine-search/skill-md.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,2+OA4KpB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const SKILL_MD = "---\nname: knowledgine-search\nversion: \"1.0.0\"\nlang: ja\ndescription: >\n \u904E\u53BB\u306E\u89E3\u6C7A\u7B56\u3001\u8A2D\u8A08\u4E0A\u306E\u6C7A\u5B9A\u3001\u30D1\u30BF\u30FC\u30F3\u3092\u30ED\u30FC\u30AB\u30EB\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9\u304B\u3089\u691C\u7D22\u3057\u307E\u3059\u3002\n \u30A8\u30E9\u30FC\u306B\u76F4\u9762\u3057\u305F\u3068\u304D\u3001\u6163\u308C\u306A\u3044\u30B3\u30FC\u30C9\u306B\u53D6\u308A\u7D44\u3080\u3068\u304D\u3001\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u958B\u59CB\u3059\u308B\u3068\u304D\u3001\n \u65B0\u3057\u3044\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u3068\u304D\u3001\u5B9F\u88C5\u30A2\u30D7\u30ED\u30FC\u30C1\u3092\u691C\u8A0E\u3059\u308B\u3068\u304D\u306B\u547C\u3073\u51FA\u3057\u307E\u3059\u3002\n \u30AF\u30A8\u30EA\u76F4\u63A5\u691C\u7D22\u30FB\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30D9\u30FC\u30B9\u306E\u30B5\u30B8\u30A7\u30B9\u30C8\u30FB\u30B0\u30E9\u30D5\u306B\u3088\u308B\u95A2\u9023\u30CE\u30FC\u30C8\u63A2\u7D22\u306E\n 3\u3064\u306E\u30E2\u30FC\u30C9\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u3059\u3002\n---\n# knowledgine-search\n\n## \u76EE\u7684\n\n\u554F\u984C\u3092\u30BC\u30ED\u304B\u3089\u89E3\u6C7A\u3057\u3088\u3046\u3068\u3059\u308B\u524D\u306B\u3001\u84C4\u7A4D\u3055\u308C\u305F\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u77E5\u8B58\u3092\u691C\u7D22\u3057\u307E\u3059\u3002\n\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9\u306B\u306F\u3001\u904E\u53BB\u306E\u30D0\u30B0\u4FEE\u6B63\u3001\u8A2D\u8A08\u4E0A\u306E\u6C7A\u5B9A\u3001\u30C8\u30E9\u30D6\u30EB\u30B7\u30E5\u30FC\u30C6\u30A3\u30F3\u30B0\u306E\u8A18\u9332\u3001\n\u305D\u3057\u3066\u5168\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u901A\u3058\u3066\u53CE\u96C6\u3055\u308C\u305F\u30D1\u30BF\u30FC\u30F3\u304C\u542B\u307E\u308C\u3066\u3044\u307E\u3059\u3002\u3053\u306E\u30B9\u30AD\u30EB\u306F\n\u30AF\u30A8\u30EA\u76F4\u63A5\u691C\u7D22\u3068\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30D9\u30FC\u30B9\u306E\u63A2\u7D22\u3092\u5358\u4E00\u306E\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306B\u7D71\u5408\u3057\u3001\n\u91CD\u8907\u4F5C\u696D\u3092\u9632\u3044\u3067\u95A2\u9023\u3059\u308B\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u5148\u56DE\u308A\u3057\u3066\u63D0\u793A\u3057\u307E\u3059\u3002\n\n## \u4F7F\u7528\u3059\u308B\u30BF\u30A4\u30DF\u30F3\u30B0\n\n- **\u30A8\u30E9\u30FC\u3084\u4F8B\u5916\u304C\u767A\u751F\u3057\u305F\u3068\u304D** \u2014 \u6B63\u78BA\u306A\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u3084\u30AD\u30FC\u30EF\u30FC\u30C9\u3092\u691C\u7D22\u3059\u308B\n- **\u6163\u308C\u306A\u3044\u30B3\u30FC\u30C9\u9818\u57DF\u306B\u53D6\u308A\u7D44\u3080\u3068\u304D** \u2014 \u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u3084\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\u95A2\u3059\u308B\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u691C\u7D22\u3059\u308B\n- **\u5B9F\u88C5\u306E\u9078\u629E\u3092\u3059\u308B\u3068\u304D** \u2014 \u540C\u3058\u30C8\u30D4\u30C3\u30AF\u306B\u95A2\u3059\u308B\u904E\u53BB\u306E\u6C7A\u5B9A\u3092\u691C\u7D22\u3059\u308B\n- **\u30E9\u30A4\u30D6\u30E9\u30EA\u3084\u30A2\u30D7\u30ED\u30FC\u30C1\u3092\u691C\u8A0E\u3059\u308B\u3068\u304D** \u2014 \u65E2\u77E5\u306E\u843D\u3068\u3057\u7A74\u3084\u5148\u884C\u4E8B\u4F8B\u3092\u691C\u7D22\u3059\u308B\n- **\u30BB\u30C3\u30B7\u30E7\u30F3\u3092\u958B\u59CB\u3059\u308B\u3068\u304D** \u2014 \u4F5C\u696D\u3059\u308B\u9818\u57DF\u306B\u95A2\u3059\u308B\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u3092\u53D6\u5F97\u3059\u308B\n- **\u65B0\u3057\u3044\u30D5\u30A1\u30A4\u30EB\u3092\u958B\u304F\u3068\u304D** \u2014 \u305D\u306E\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u306B\u95A2\u3059\u308B\u904E\u53BB\u306E\u77E5\u8B58\u3092\u767A\u898B\u3059\u308B\n- **\u6A5F\u80FD\u306E\u5B9F\u88C5\u3092\u59CB\u3081\u308B\u3068\u304D** \u2014 \u95A2\u9023\u3059\u308B\u30D1\u30BF\u30FC\u30F3\u3084\u904E\u53BB\u306E\u6C7A\u5B9A\u3092\u898B\u3064\u3051\u308B\n- **\u30D5\u30A1\u30A4\u30EB\u306E\u4F5C\u696D\u3092\u958B\u59CB\u3059\u308B\u3068\u304D** \u2014 \u305D\u306E\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\u306B\u95A2\u9023\u3059\u308B\u30CE\u30FC\u30C8\u3092\u691C\u7D22\u3059\u308B\n\n## \u4F7F\u7528\u3057\u306A\u3044\u30BF\u30A4\u30DF\u30F3\u30B0\n\n- \u66D6\u6627\u3055\u306E\u306A\u3044\u7D14\u7C8B\u306B\u6A5F\u68B0\u7684\u306A\u30BF\u30B9\u30AF\uFF08\u5909\u6570\u306E\u30EA\u30CD\u30FC\u30E0\u3001\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306A\u3069\uFF09\n- \u3053\u306E\u30BB\u30C3\u30B7\u30E7\u30F3\u5185\u3067\u3059\u3067\u306B\u691C\u7D22\u3057\u3066\u95A2\u9023\u3059\u308B\u7D50\u679C\u304C\u898B\u3064\u304B\u3089\u306A\u304B\u3063\u305F\u3068\u304D\n- \u540C\u3058\u30D5\u30A1\u30A4\u30EB\u306B\u5BFE\u3057\u3066\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30D9\u30FC\u30B9\u306E\u691C\u7D22\u3092\u3059\u3067\u306B\u5B9F\u884C\u6E08\u307F\u306E\u3068\u304D\n- \u3059\u3079\u3066\u306E\u64CD\u4F5C\u3067\u691C\u7D22\u3092\u547C\u3073\u51FA\u3059\u3053\u3068\u306F\u907F\u3051\u308B \u2014 \u5224\u65AD\u3057\u3066\u4F7F\u7528\u3059\u308B\n\n## \u691C\u7D22\u30A2\u30D7\u30ED\u30FC\u30C1\n\n### \u30A2\u30D7\u30ED\u30FC\u30C1 1: \u30AF\u30A8\u30EA\u691C\u7D22\n\n\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u3001\u95A2\u6570\u540D\u3001\u307E\u305F\u306F\u65E2\u77E5\u306E\u30C8\u30D4\u30C3\u30AF\u306A\u3069\u3001\u5177\u4F53\u7684\u306A\u8A9E\u53E5\u304C\u3042\u308B\u5834\u5408\u3002\n\n\u7279\u5B9A\u306E\u8A9E\u53E5\u3067 `search_knowledge` \u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\u5B8C\u5168\u4E00\u81F4\u306B\u306F `keyword` \u30E2\u30FC\u30C9\u304B\u3089\u59CB\u3081\u3001\n\u6B63\u78BA\u306A\u8868\u73FE\u304C\u4E0D\u78BA\u304B\u306A\u5834\u5408\u306F `semantic` \u307E\u305F\u306F `hybrid` \u306B\u5207\u308A\u66FF\u3048\u307E\u3059\u3002\n\n### \u30A2\u30D7\u30ED\u30FC\u30C1 2: \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30D9\u30FC\u30B9\u306E\u691C\u7D22\n\n\u7279\u5B9A\u306E\u30AF\u30A8\u30EA\u306A\u3057\u306B\u3001\u30D5\u30A1\u30A4\u30EB\u3084\u30BF\u30B9\u30AF\u306E\u4F5C\u696D\u3092\u958B\u59CB\u3059\u308B\u5834\u5408\u3002\n\n\u73FE\u5728\u306E\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\u3001\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u540D\u3001\u30BF\u30B9\u30AF\u306E\u8AAC\u660E\u3001\u307E\u305F\u306F\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u304B\u3089\n\u30B7\u30B0\u30CA\u30EB\u3092\u62BD\u51FA\u3057\u307E\u3059\u30022\u301C3\u500B\u306E\u30B7\u30B0\u30CA\u30EB\u3092\u7D44\u307F\u5408\u308F\u305B\u3066\u30AF\u30A8\u30EA\u3092\u4F5C\u6210\u3057\u3001\n\u6700\u826F\u306E\u7D50\u679C\u3092\u5F97\u308B\u306B\u306F `hybrid` \u30E2\u30FC\u30C9\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30B7\u30B0\u30CA\u30EB\u306E\n\u62BD\u51FA\u65B9\u6CD5\u306B\u3064\u3044\u3066\u306F `search-strategy.md` \u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n\n### \u30A2\u30D7\u30ED\u30FC\u30C1 3: \u95A2\u9023\u30CE\u30FC\u30C8\u306E\u63A2\u7D22\n\n\u95A2\u9023\u3059\u308B\u30CE\u30FC\u30C8\u3092\u898B\u3064\u3051\u3066\u3001\u30CA\u30EC\u30C3\u30B8\u30B0\u30E9\u30D5\u5185\u306E\u63A5\u7D9A\u3055\u308C\u305F\u30CE\u30FC\u30C8\u3092\u767A\u898B\u3057\u305F\u3044\u5834\u5408\u3002\n\n\u95A2\u9023\u3059\u308B\u7D50\u679C\u306E `noteId`\uFF08\u6570\u5024\u3068\u3057\u3066\uFF09\u307E\u305F\u306F\u73FE\u5728\u306E `filePath` \u3092\u4F7F\u3063\u3066\n`find_related` \u3092\u547C\u3073\u51FA\u3057\u307E\u3059\u3002\u3053\u308C\u306F\u30CA\u30EC\u30C3\u30B8\u30B0\u30E9\u30D5\u3092\u8D70\u67FB\u3057\u3066\u3001\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u306E\n\u95A2\u4FC2\u6027\u3001\u554F\u984C\u3068\u89E3\u6C7A\u7B56\u306E\u30DA\u30A2\u3001\u30D5\u30A1\u30A4\u30EB\u306E\u95A2\u9023\u6027\u306B\u3088\u3063\u3066\u30EA\u30F3\u30AF\u3055\u308C\u305F\u30CE\u30FC\u30C8\u3092\n\u63D0\u793A\u3057\u307E\u3059\u3002\n\n## \u691C\u7D22\u30E2\u30FC\u30C9\u306E\u9078\u629E\n\n| \u72B6\u6CC1 | \u30E2\u30FC\u30C9 |\n|------|--------|\n| \u6B63\u78BA\u306A\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u3042\u308B | `keyword` |\n| \u7279\u5B9A\u306E\u95A2\u6570\u540D\u3084\u5909\u6570\u540D\u3092\u899A\u3048\u3066\u3044\u308B | `keyword` |\n| \u6982\u5FF5\u306F\u308F\u304B\u308B\u304C\u6B63\u78BA\u306A\u8868\u73FE\u304C\u4E0D\u78BA\u304B | `semantic` |\n| \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30B7\u30B0\u30CA\u30EB\uFF08\u30D5\u30A1\u30A4\u30EB\u3001\u30BF\u30B9\u30AF\u3001\u6A5F\u80FD\uFF09\u304B\u3089\u4F5C\u696D\u3092\u958B\u59CB\u3059\u308B | `hybrid` |\n| \u30C8\u30D4\u30C3\u30AF\u306E\u4E00\u822C\u7684\u306A\u63A2\u7D22 | `hybrid` |\n| \u57CB\u3081\u8FBC\u307F\u304C\u5229\u7528\u3067\u304D\u306A\u3044\uFF08FTS5\u306E\u307F\u306E\u69CB\u6210\uFF09 | `keyword`\uFF08\u552F\u4E00\u306E\u9078\u629E\u80A2\uFF09 |\n\n## \u691C\u7D22\u65B9\u6CD5 (MCP \u30C4\u30FC\u30EB)\n\n### search_knowledge\n\n```\nsearch_knowledge(\n query: string, // \u691C\u7D22\u30AF\u30A8\u30EA\n mode?: \"keyword\" // \"keyword\" | \"semantic\" | \"hybrid\"\n | \"semantic\" // keyword: FTS5 \u306B\u3088\u308B\u5B8C\u5168\u4E00\u81F4\u30C6\u30AD\u30B9\u30C8\u691C\u7D22\uFF08\u30C7\u30D5\u30A9\u30EB\u30C8\uFF09\n | \"hybrid\", // semantic: \u610F\u5473\u30D9\u30FC\u30B9\u3001\u57CB\u3081\u8FBC\u307F\u304C\u5FC5\u8981\n // hybrid: \u4E21\u8005\u3092\u7D44\u307F\u5408\u308F\u305B\n limit?: number, // \u6700\u5927\u7D50\u679C\u6570\uFF08\u30C7\u30D5\u30A9\u30EB\u30C8: 20\uFF09\n agentic?: boolean, // \u5EC3\u6B62\u6E08\u307F\u30CE\u30FC\u30C8\u3092\u542B\u3080\uFF08\u30C7\u30D5\u30A9\u30EB\u30C8: false\uFF09\n includeDeprecated?: boolean // \u5EC3\u6B62\u6E08\u307F\u30CE\u30FC\u30C8\u3092\u542B\u3080\uFF08\u30C7\u30D5\u30A9\u30EB\u30C8: false\uFF09\n)\n```\n\n### find_related\n\n```\nfind_related(\n noteId?: number, // \u30CE\u30FC\u30C8\u306E ID \u2014 \u6587\u5B57\u5217\u3067\u306F\u306A\u304F\u6570\u5024\uFF08\u6574\u6570\uFF09\u3067\u3042\u308B\u3053\u3068\n filePath?: string, // \u95A2\u9023\u30CE\u30FC\u30C8\u3092\u691C\u7D22\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\n limit?: number, // \u6700\u5927\u7D50\u679C\u6570\uFF08\u30C7\u30D5\u30A9\u30EB\u30C8: 5\uFF09\n maxHops?: number // \u30B0\u30E9\u30D5\u306E\u8D70\u67FB\u6DF1\u5EA6\uFF08\u30C7\u30D5\u30A9\u30EB\u30C8: 1\u3001\u6700\u5927: 3\uFF09\n)\n```\n\n`noteId` \u307E\u305F\u306F `filePath` \u306E\u3044\u305A\u308C\u304B\u4E00\u65B9\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002`noteId` \u306E\u5024\u306F\n`search_knowledge` \u306E\u7D50\u679C\u304B\u3089\u53D6\u5F97\u3057\u307E\u3059 \u2014 \u6570\u5024\u306E `id` \u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u305D\u306E\u307E\u307E\u4F7F\u7528\u3057\u307E\u3059\u3002\n\n## \u691C\u7D22\u65B9\u6CD5 (CLI \u306E\u4EE3\u66FF\u624B\u6BB5)\n\n```bash\nknowledgine search \"<query>\" # \u30AD\u30FC\u30EF\u30FC\u30C9\u691C\u7D22\nknowledgine search \"<query>\" --mode semantic # \u30BB\u30DE\u30F3\u30C6\u30A3\u30C3\u30AF\u691C\u7D22\nknowledgine search \"<query>\" --mode hybrid # \u30CF\u30A4\u30D6\u30EA\u30C3\u30C9\u691C\u7D22\nknowledgine suggest --file src/commands/setup.ts # \u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\u306B\u3088\u308B\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30D9\u30FC\u30B9\u691C\u7D22\uFF08suggest \u30B3\u30DE\u30F3\u30C9\uFF09\n```\n\n## \u624B\u9806\n\n1. **\u30A2\u30D7\u30ED\u30FC\u30C1\u3092\u9078\u629E** \u2014 \u7279\u5B9A\u306E\u30AF\u30A8\u30EA\u304C\u3042\u308B\u5834\u5408\uFF08\u30A2\u30D7\u30ED\u30FC\u30C1 1\uFF09\u304B\u3001\u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\u3084\n \u30BF\u30B9\u30AF\u306E\u8AAC\u660E\u306A\u3069\u306E\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304B\u3089\u59CB\u3081\u308B\u5834\u5408\uFF08\u30A2\u30D7\u30ED\u30FC\u30C1 2\uFF09\u304B\uFF1F\n\n2. **\u30AF\u30A8\u30EA\u3092\u4F5C\u6210**\n - \u30A2\u30D7\u30ED\u30FC\u30C1 1: \u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u3001\u95A2\u6570\u540D\u3001\u307E\u305F\u306F\u65E2\u77E5\u306E\u30C8\u30D4\u30C3\u30AF\u3092\u305D\u306E\u307E\u307E\u4F7F\u7528\n - \u30A2\u30D7\u30ED\u30FC\u30C1 2: \u30D5\u30A1\u30A4\u30EB\u30D1\u30B9\u3001\u30B3\u30F3\u30DD\u30FC\u30CD\u30F3\u30C8\u540D\u3001\u30BF\u30B9\u30AF\u3001\u307E\u305F\u306F\u30A8\u30E9\u30FC\u304B\u3089\u30B7\u30B0\u30CA\u30EB\u3092\n \u62BD\u51FA\u3057\u30012\u301C3\u500B\u306E\u30B7\u30B0\u30CA\u30EB\u3092\u7D44\u307F\u5408\u308F\u305B\u3066\u30AF\u30A8\u30EA\u3092\u4F5C\u6210\uFF08`search-strategy.md` \u53C2\u7167\uFF09\n\n3. **\u30E2\u30FC\u30C9\u3092\u9078\u629E**\n - \u6B63\u78BA\u306A\u8A9E\u53E5 \u2192 `keyword`\n - \u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30B7\u30B0\u30CA\u30EB\u3084\u6982\u5FF5\u7684\u306A\u691C\u7D22 \u2192 `hybrid`\n - \u6982\u5FF5\u306F\u308F\u304B\u308B\u304C\u8868\u73FE\u304C\u4E0D\u78BA\u304B \u2192 `semantic`\n\n4. **search_knowledge \u3092\u547C\u3073\u51FA\u3059** \u2014 \u30AF\u30A8\u30EA\u3001\u30E2\u30FC\u30C9\u3001\u4E0A\u9650\u3092\u6307\u5B9A\uFF085\u301C10 \u4EF6\u3067\u901A\u5E38\u5341\u5206;\n \u30C7\u30D5\u30A9\u30EB\u30C8\u306F 20\uFF09\n\n5. **\u7D50\u679C\u3092\u8A55\u4FA1** \u2014 \u8FD4\u3055\u308C\u305F\u30CE\u30FC\u30C8\u306E\u95A2\u9023\u6027\u3092\u8AAD\u3093\u3067\u78BA\u8A8D\u3057\u3001\u9AD8\u5EA6\u306B\u95A2\u9023\u3059\u308B\u7D50\u679C\u306E\n ID \u3092\u30E1\u30E2\u3059\u308B\n\n6. **\u95A2\u9023\u30CE\u30FC\u30C8\u3092\u8D70\u67FB\uFF08\u4EFB\u610F\uFF09** \u2014 \u7D50\u679C\u304C\u9AD8\u5EA6\u306B\u95A2\u9023\u3057\u3066\u3044\u308B\u5834\u5408\u3001\u305D\u306E\u6570\u5024 `noteId` \u307E\u305F\u306F\n \u73FE\u5728\u306E `filePath` \u3092\u4F7F\u3063\u3066 `find_related` \u3092\u547C\u3073\u51FA\u3057\u3001\u30CA\u30EC\u30C3\u30B8\u30B0\u30E9\u30D5\u7D4C\u7531\u3067\n \u63A5\u7D9A\u3055\u308C\u305F\u30CE\u30FC\u30C8\u3092\u767A\u898B\u3059\u308B\n\n7. **\u767A\u898B\u5185\u5BB9\u3092\u9069\u7528** \u2014 \u95A2\u9023\u3059\u308B\u904E\u53BB\u306E\u89E3\u6C7A\u7B56\u3084\u6C7A\u5B9A\u3092\u3001\u4F5C\u696D\u306B\u6D3B\u304B\u3059\n\n8. **\u65B0\u3057\u3044\u77E5\u8B58\u3092\u8A18\u9332** \u2014 \u65B0\u3057\u3044\u89E3\u6C7A\u7B56\u3092\u767A\u898B\u3057\u305F\u5834\u5408\u3001knowledgine-capture \u3092\u4F7F\u3063\u3066\u4FDD\u5B58\u3059\u308B\n\n## \u30D9\u30B9\u30C8\u30D7\u30E9\u30AF\u30C6\u30A3\u30B9\n\n- \u89E3\u6C7A\u7B56\u3092\u63D0\u6848\u3059\u308B\u524D\u306B\u691C\u7D22\u3059\u308B\uFF08\u5F8C\u3067\u306F\u306A\u304F\uFF09\n- \u5B9F\u969B\u306E\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u30C6\u30AD\u30B9\u30C8\u3092\u30AF\u30A8\u30EA\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B \u2014 \u6700\u3082\u30BF\u30FC\u30B2\u30C3\u30C8\u3092\u7D5E\u3063\u305F\u691C\u7D22\u304C\u3067\u304D\u308B\n- \u6700\u521D\u306E\u691C\u7D22\u3067\u7D50\u679C\u304C\u5F97\u3089\u308C\u306A\u3044\u5834\u5408\u306F\u3001\u8907\u6570\u306E\u30AF\u30A8\u30EA\u3092\u8A66\u307F\u308B\n- \u30BB\u30C3\u30B7\u30E7\u30F3\u958B\u59CB\u6642\u306B\u3001\u4E3B\u306A\u4F5C\u696D\u9818\u57DF\u306B\u5BFE\u3057\u3066\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30D9\u30FC\u30B9\u306E\u691C\u7D22\uFF08\u30A2\u30D7\u30ED\u30FC\u30C1 2\uFF09\u3092\u5B9F\u884C\u3057\u3001\n \u305D\u306E\u5F8C\u3001\u7279\u5B9A\u306E\u554F\u984C\u304C\u767A\u751F\u3057\u305F\u3089\u5BFE\u8C61\u3092\u7D5E\u3063\u305F\u30AF\u30A8\u30EA\uFF08\u30A2\u30D7\u30ED\u30FC\u30C1 1\uFF09\u3092\u4F7F\u7528\u3059\u308B\n- `bug-fix` \u307E\u305F\u306F `troubleshooting` \u30BF\u30B0\u304C\u4ED8\u3044\u305F\u30CE\u30FC\u30C8\u3092\u512A\u5148\u3059\u308B \u2014 \u8B66\u544A\u304C\u542B\u307E\u308C\u3066\u3044\u308B\n- `design-decision` \u30BF\u30B0\u306E\u30CE\u30FC\u30C8\u306F\u5909\u66F4\u3092\u52A0\u3048\u308B\u524D\u306B\u7279\u306B\u4FA1\u5024\u304C\u3042\u308B\n- `find_related` \u306E `noteId` \u30D1\u30E9\u30E1\u30FC\u30BF\u306F\u6570\u5024 \u2014 \u6587\u5B57\u5217\u3067\u306F\u306A\u304F\u3001\u691C\u7D22\u7D50\u679C\u306E\u6574\u6570 id \u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u6E21\u3059\n\n## \u30A8\u30C3\u30B8\u30B1\u30FC\u30B9\n\n- **\u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9\u304C\u7A7A\u306E\u5834\u5408** \u2014 `search_knowledge` \u304C\u307E\u3063\u305F\u304F\u7D50\u679C\u3092\u8FD4\u3055\u306A\u3044\u5834\u5408\u3001\n \u30CA\u30EC\u30C3\u30B8\u30D9\u30FC\u30B9\u306F\u307E\u3060\u5165\u529B\u3055\u308C\u3066\u3044\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u30B3\u30FC\u30C9\u30D9\u30FC\u30B9\u3092\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u5316\u3059\u308B\u305F\u3081\u306B\n knowledgine-ingest \u3092\u4F7F\u7528\u3059\u308B\u304B\u3001knowledgine-capture \u3067\u77E5\u8B58\u306E\u8A18\u9332\u3092\u958B\u59CB\u3059\u308B\u3053\u3068\u3092\u63D0\u6848\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n- **\u30BB\u30DE\u30F3\u30C6\u30A3\u30C3\u30AF\u307E\u305F\u306F\u30CF\u30A4\u30D6\u30EA\u30C3\u30C9\u30E2\u30FC\u30C9\u304C\u30A8\u30E9\u30FC\u3092\u8FD4\u3059\u5834\u5408** \u2014 \u57CB\u3081\u8FBC\u307F\u304C\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\n SQLite FTS5 \u306E\u307F\u306B\u4F9D\u5B58\u3057\u3066\u5E38\u306B\u52D5\u4F5C\u3059\u308B `keyword` \u30E2\u30FC\u30C9\u306B\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n- **find_related \u304C noteId \u3067\u30A8\u30E9\u30FC\u3092\u8FD4\u3059\u5834\u5408** \u2014 \u5024\u304C `search_knowledge` \u306E\u7D50\u679C\u304B\u3089\n \u5F97\u305F\u6B63\u306E\u6574\u6570\u3067\u3042\u308B\u3053\u3068\u3092\u78BA\u8A8D\u3057\u3001\u6587\u5B57\u5217\u8868\u73FE\u3067\u306A\u3044\u3053\u3068\u3092\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\u3002\n\n## \u53C2\u7167\u30D5\u30A1\u30A4\u30EB\n\n- \u30E2\u30FC\u30C9\u9078\u629E\u3001\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u30B7\u30B0\u30CA\u30EB\u306E\u62BD\u51FA\u3001\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u30D1\u30BF\u30FC\u30F3\u3001\u7D50\u679C\u306E\u89E3\u91C8\u306B\u3064\u3044\u3066\u306F\n `search-strategy.md` \u3092\u53C2\u7167\n- \u30AF\u30A8\u30EA\u306E\u4F5C\u6210\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3001\u30D5\u30A9\u30FC\u30EB\u30D0\u30C3\u30AF\u6226\u7565\u3001\u4E0A\u9650\u306E\u30AC\u30A4\u30C0\u30F3\u30B9\u306B\u3064\u3044\u3066\u306F\n `query-tips.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-search/skill-md.ja.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ,qpjBA6KpB,CAAC"}
@@ -0,0 +1,175 @@
1
+ export const SKILL_MD = `---
2
+ name: knowledgine-search
3
+ version: "1.0.0"
4
+ lang: ja
5
+ description: >
6
+ 過去の解決策、設計上の決定、パターンをローカルナレッジベースから検索します。
7
+ エラーに直面したとき、慣れないコードに取り組むとき、セッションを開始するとき、
8
+ 新しいファイルを開くとき、実装アプローチを検討するときに呼び出します。
9
+ クエリ直接検索・コンテキストベースのサジェスト・グラフによる関連ノート探索の
10
+ 3つのモードをサポートします。
11
+ ---
12
+ # knowledgine-search
13
+
14
+ ## 目的
15
+
16
+ 問題をゼロから解決しようとする前に、蓄積されたプロジェクトの知識を検索します。
17
+ ナレッジベースには、過去のバグ修正、設計上の決定、トラブルシューティングの記録、
18
+ そして全セッションを通じて収集されたパターンが含まれています。このスキルは
19
+ クエリ直接検索とコンテキストベースの探索を単一のワークフローに統合し、
20
+ 重複作業を防いで関連するコンテキストを先回りして提示します。
21
+
22
+ ## 使用するタイミング
23
+
24
+ - **エラーや例外が発生したとき** — 正確なエラーメッセージやキーワードを検索する
25
+ - **慣れないコード領域に取り組むとき** — コンポーネントやモジュールに関するコンテキストを検索する
26
+ - **実装の選択をするとき** — 同じトピックに関する過去の決定を検索する
27
+ - **ライブラリやアプローチを検討するとき** — 既知の落とし穴や先行事例を検索する
28
+ - **セッションを開始するとき** — 作業する領域に関するコンテキストを取得する
29
+ - **新しいファイルを開くとき** — そのコンポーネントに関する過去の知識を発見する
30
+ - **機能の実装を始めるとき** — 関連するパターンや過去の決定を見つける
31
+ - **ファイルの作業を開始するとき** — そのファイルパスに関連するノートを検索する
32
+
33
+ ## 使用しないタイミング
34
+
35
+ - 曖昧さのない純粋に機械的なタスク(変数のリネーム、フォーマットなど)
36
+ - このセッション内ですでに検索して関連する結果が見つからなかったとき
37
+ - 同じファイルに対してコンテキストベースの検索をすでに実行済みのとき
38
+ - すべての操作で検索を呼び出すことは避ける — 判断して使用する
39
+
40
+ ## 検索アプローチ
41
+
42
+ ### アプローチ 1: クエリ検索
43
+
44
+ エラーメッセージ、関数名、または既知のトピックなど、具体的な語句がある場合。
45
+
46
+ 特定の語句で \`search_knowledge\` を使用します。完全一致には \`keyword\` モードから始め、
47
+ 正確な表現が不確かな場合は \`semantic\` または \`hybrid\` に切り替えます。
48
+
49
+ ### アプローチ 2: コンテキストベースの検索
50
+
51
+ 特定のクエリなしに、ファイルやタスクの作業を開始する場合。
52
+
53
+ 現在のファイルパス、コンポーネント名、タスクの説明、またはエラーメッセージから
54
+ シグナルを抽出します。2〜3個のシグナルを組み合わせてクエリを作成し、
55
+ 最良の結果を得るには \`hybrid\` モードを使用します。コンテキストシグナルの
56
+ 抽出方法については \`search-strategy.md\` を参照してください。
57
+
58
+ ### アプローチ 3: 関連ノートの探索
59
+
60
+ 関連するノートを見つけて、ナレッジグラフ内の接続されたノートを発見したい場合。
61
+
62
+ 関連する結果の \`noteId\`(数値として)または現在の \`filePath\` を使って
63
+ \`find_related\` を呼び出します。これはナレッジグラフを走査して、エンティティの
64
+ 関係性、問題と解決策のペア、ファイルの関連性によってリンクされたノートを
65
+ 提示します。
66
+
67
+ ## 検索モードの選択
68
+
69
+ | 状況 | モード |
70
+ |------|--------|
71
+ | 正確なエラーメッセージがある | \`keyword\` |
72
+ | 特定の関数名や変数名を覚えている | \`keyword\` |
73
+ | 概念はわかるが正確な表現が不確か | \`semantic\` |
74
+ | コンテキストシグナル(ファイル、タスク、機能)から作業を開始する | \`hybrid\` |
75
+ | トピックの一般的な探索 | \`hybrid\` |
76
+ | 埋め込みが利用できない(FTS5のみの構成) | \`keyword\`(唯一の選択肢) |
77
+
78
+ ## 検索方法 (MCP ツール)
79
+
80
+ ### search_knowledge
81
+
82
+ \`\`\`
83
+ search_knowledge(
84
+ query: string, // 検索クエリ
85
+ mode?: "keyword" // "keyword" | "semantic" | "hybrid"
86
+ | "semantic" // keyword: FTS5 による完全一致テキスト検索(デフォルト)
87
+ | "hybrid", // semantic: 意味ベース、埋め込みが必要
88
+ // hybrid: 両者を組み合わせ
89
+ limit?: number, // 最大結果数(デフォルト: 20)
90
+ agentic?: boolean, // 廃止済みノートを含む(デフォルト: false)
91
+ includeDeprecated?: boolean // 廃止済みノートを含む(デフォルト: false)
92
+ )
93
+ \`\`\`
94
+
95
+ ### find_related
96
+
97
+ \`\`\`
98
+ find_related(
99
+ noteId?: number, // ノートの ID — 文字列ではなく数値(整数)であること
100
+ filePath?: string, // 関連ノートを検索するファイルパス
101
+ limit?: number, // 最大結果数(デフォルト: 5)
102
+ maxHops?: number // グラフの走査深度(デフォルト: 1、最大: 3)
103
+ )
104
+ \`\`\`
105
+
106
+ \`noteId\` または \`filePath\` のいずれか一方を指定してください。\`noteId\` の値は
107
+ \`search_knowledge\` の結果から取得します — 数値の \`id\` フィールドをそのまま使用します。
108
+
109
+ ## 検索方法 (CLI の代替手段)
110
+
111
+ \`\`\`bash
112
+ knowledgine search "<query>" # キーワード検索
113
+ knowledgine search "<query>" --mode semantic # セマンティック検索
114
+ knowledgine search "<query>" --mode hybrid # ハイブリッド検索
115
+ knowledgine suggest --file src/commands/setup.ts # ファイルパスによるコンテキストベース検索(suggest コマンド)
116
+ \`\`\`
117
+
118
+ ## 手順
119
+
120
+ 1. **アプローチを選択** — 特定のクエリがある場合(アプローチ 1)か、ファイルパスや
121
+ タスクの説明などのコンテキストから始める場合(アプローチ 2)か?
122
+
123
+ 2. **クエリを作成**
124
+ - アプローチ 1: エラーメッセージ、関数名、または既知のトピックをそのまま使用
125
+ - アプローチ 2: ファイルパス、コンポーネント名、タスク、またはエラーからシグナルを
126
+ 抽出し、2〜3個のシグナルを組み合わせてクエリを作成(\`search-strategy.md\` 参照)
127
+
128
+ 3. **モードを選択**
129
+ - 正確な語句 → \`keyword\`
130
+ - コンテキストシグナルや概念的な検索 → \`hybrid\`
131
+ - 概念はわかるが表現が不確か → \`semantic\`
132
+
133
+ 4. **search_knowledge を呼び出す** — クエリ、モード、上限を指定(5〜10 件で通常十分;
134
+ デフォルトは 20)
135
+
136
+ 5. **結果を評価** — 返されたノートの関連性を読んで確認し、高度に関連する結果の
137
+ ID をメモする
138
+
139
+ 6. **関連ノートを走査(任意)** — 結果が高度に関連している場合、その数値 \`noteId\` または
140
+ 現在の \`filePath\` を使って \`find_related\` を呼び出し、ナレッジグラフ経由で
141
+ 接続されたノートを発見する
142
+
143
+ 7. **発見内容を適用** — 関連する過去の解決策や決定を、作業に活かす
144
+
145
+ 8. **新しい知識を記録** — 新しい解決策を発見した場合、knowledgine-capture を使って保存する
146
+
147
+ ## ベストプラクティス
148
+
149
+ - 解決策を提案する前に検索する(後ではなく)
150
+ - 実際のエラーメッセージテキストをクエリとして使用する — 最もターゲットを絞った検索ができる
151
+ - 最初の検索で結果が得られない場合は、複数のクエリを試みる
152
+ - セッション開始時に、主な作業領域に対してコンテキストベースの検索(アプローチ 2)を実行し、
153
+ その後、特定の問題が発生したら対象を絞ったクエリ(アプローチ 1)を使用する
154
+ - \`bug-fix\` または \`troubleshooting\` タグが付いたノートを優先する — 警告が含まれている
155
+ - \`design-decision\` タグのノートは変更を加える前に特に価値がある
156
+ - \`find_related\` の \`noteId\` パラメータは数値 — 文字列ではなく、検索結果の整数 id フィールドを渡す
157
+
158
+ ## エッジケース
159
+
160
+ - **ナレッジベースが空の場合** — \`search_knowledge\` がまったく結果を返さない場合、
161
+ ナレッジベースはまだ入力されていない可能性があります。コードベースをインデックス化するために
162
+ knowledgine-ingest を使用するか、knowledgine-capture で知識の記録を開始することを提案してください。
163
+ - **セマンティックまたはハイブリッドモードがエラーを返す場合** — 埋め込みが設定されていない可能性があります。
164
+ SQLite FTS5 のみに依存して常に動作する \`keyword\` モードにフォールバックしてください。
165
+ - **find_related が noteId でエラーを返す場合** — 値が \`search_knowledge\` の結果から
166
+ 得た正の整数であることを確認し、文字列表現でないことを確かめてください。
167
+
168
+ ## 参照ファイル
169
+
170
+ - モード選択、コンテキストシグナルの抽出、ワークフローパターン、結果の解釈については
171
+ \`search-strategy.md\` を参照
172
+ - クエリの作成テンプレート、フォールバック戦略、上限のガイダンスについては
173
+ \`query-tips.md\` を参照
174
+ `;
175
+ //# sourceMappingURL=skill-md.ja.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-md.ja.js","sourceRoot":"","sources":["../../../../src/templates/skills/knowledgine-search/skill-md.ja.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6KvB,CAAC"}
@@ -0,0 +1,174 @@
1
+ export const SKILL_MD = `---
2
+ name: knowledgine-search
3
+ version: "1.0.0"
4
+ lang: en
5
+ description: >
6
+ Search the local knowledge base for past solutions, design decisions, and patterns.
7
+ Invoke when facing an error, approaching unfamiliar code, starting a session, opening
8
+ a new file, or considering implementation approaches. Supports three modes: direct
9
+ query search, context-based suggestions, and graph-based related note discovery.
10
+ ---
11
+ # knowledgine-search
12
+
13
+ ## Purpose
14
+
15
+ Search accumulated project knowledge before solving problems from scratch. The knowledge
16
+ base contains past bug fixes, design decisions, troubleshooting records, and patterns
17
+ gathered across all previous sessions. This skill unifies direct query search and
18
+ context-based discovery into a single workflow, preventing duplicate work and surfacing
19
+ relevant context proactively.
20
+
21
+ ## When to Use
22
+
23
+ - **Error or exception encountered** — Search for the exact error message or key terms
24
+ - **Unfamiliar code area** — Search for context about the component or module
25
+ - **Implementation choice** — Search for past decisions on the same topic
26
+ - **Considering a library or approach** — Search for known gotchas or prior art
27
+ - **Starting a session** — Get context about the area you will work in
28
+ - **Opening a new file** — Discover past knowledge about that component
29
+ - **Beginning a feature** — Find related patterns and past decisions
30
+ - **Starting work on a file** — Search for related notes about that file path
31
+
32
+ ## When NOT to Use
33
+
34
+ - Purely mechanical tasks with no ambiguity (renaming a variable, formatting)
35
+ - When you have already searched and found no relevant results within this session
36
+ - After already running context-based search for the same file in the same session
37
+ - Do not call search on every single action — use judgment
38
+
39
+ ## Search Approaches
40
+
41
+ ### Approach 1: Query Search
42
+
43
+ You have specific terms — an error message, a function name, or a known topic.
44
+
45
+ Use \`search_knowledge\` with the specific terms. Start with \`keyword\` mode for exact
46
+ matches; switch to \`semantic\` or \`hybrid\` when the exact wording is uncertain.
47
+
48
+ ### Approach 2: Context-Based Search
49
+
50
+ You are starting work on a file or task without a specific query in mind.
51
+
52
+ Extract signals from the current file path, component name, task description, or error
53
+ message. Combine 2–3 signals into a query and use \`hybrid\` mode for best results. See
54
+ \`search-strategy.md\` for how to extract context signals.
55
+
56
+ ### Approach 3: Related Note Discovery
57
+
58
+ You have found a relevant note and want to discover connected notes in the knowledge graph.
59
+
60
+ Call \`find_related\` with the \`noteId\` (as a number) from the relevant result, or with
61
+ the current \`filePath\`. This traverses the knowledge graph to surface notes linked by
62
+ entity relationships, problem-solution pairs, and file associations.
63
+
64
+ ## Choosing Search Mode
65
+
66
+ | Situation | Mode |
67
+ |-----------|------|
68
+ | You have an exact error message | \`keyword\` |
69
+ | You remember specific function or variable names | \`keyword\` |
70
+ | You know the concept but not the exact wording | \`semantic\` |
71
+ | Starting work with context signals (file, task, feature) | \`hybrid\` |
72
+ | General exploration of a topic | \`hybrid\` |
73
+ | Embeddings not available (FTS5-only setup) | \`keyword\` (only option) |
74
+
75
+ ## How to Search (MCP Tools)
76
+
77
+ ### search_knowledge
78
+
79
+ \`\`\`
80
+ search_knowledge(
81
+ query: string, // Search query
82
+ mode?: "keyword" // "keyword" | "semantic" | "hybrid"
83
+ | "semantic" // keyword: exact text match via FTS5 (default)
84
+ | "hybrid", // semantic: meaning-based, requires embeddings
85
+ // hybrid: combines both
86
+ limit?: number, // Max results (default: 20)
87
+ agentic?: boolean, // Include deprecated notes (default: false)
88
+ includeDeprecated?: boolean // Include deprecated notes (default: false)
89
+ )
90
+ \`\`\`
91
+
92
+ ### find_related
93
+
94
+ \`\`\`
95
+ find_related(
96
+ noteId?: number, // ID of a note — must be a NUMBER (integer), not a string
97
+ filePath?: string, // File path to find related notes for
98
+ limit?: number, // Max results (default: 5)
99
+ maxHops?: number // Graph traversal depth (default: 1, max: 3)
100
+ )
101
+ \`\`\`
102
+
103
+ Provide at least one of \`noteId\` or \`filePath\`. \`noteId\` values come from
104
+ \`search_knowledge\` results — use the numeric \`id\` field directly.
105
+
106
+ ## How to Search (CLI Alternative)
107
+
108
+ \`\`\`bash
109
+ knowledgine search "<query>" # keyword search
110
+ knowledgine search "<query>" --mode semantic # semantic search
111
+ knowledgine search "<query>" --mode hybrid # hybrid search
112
+ knowledgine suggest --file src/commands/setup.ts # context-based by file path (suggest command)
113
+ \`\`\`
114
+
115
+ ## Step-by-Step Instructions
116
+
117
+ 1. **Choose your approach** — Do you have a specific query (Approach 1), or are you
118
+ starting from context like a file path or task description (Approach 2)?
119
+
120
+ 2. **Extract your query**
121
+ - For Approach 1: Use the error message, function name, or known topic directly
122
+ - For Approach 2: Extract signals from file path, component name, task, or error;
123
+ combine 2–3 signals into a query (see \`search-strategy.md\`)
124
+
125
+ 3. **Choose the mode**
126
+ - Exact terms → \`keyword\`
127
+ - Context signals or conceptual search → \`hybrid\`
128
+ - Known concept, uncertain wording → \`semantic\`
129
+
130
+ 4. **Call search_knowledge** — Pass query, mode, and limit (5–10 is usually sufficient;
131
+ default is 20)
132
+
133
+ 5. **Evaluate results** — Read the returned notes for relevance; note any IDs of
134
+ highly relevant results
135
+
136
+ 6. **Traverse related notes (optional)** — If a result looks highly relevant, call
137
+ \`find_related\` with its numeric \`noteId\` or the current \`filePath\` to discover
138
+ connected notes via the knowledge graph
139
+
140
+ 7. **Apply findings** — Use relevant past solutions or decisions to inform your work
141
+
142
+ 8. **Capture if new** — If you discover a new solution, use knowledgine-capture to
143
+ save it
144
+
145
+ ## Best Practices
146
+
147
+ - Search before proposing a solution, not after
148
+ - Use the actual error message text as a query — it is the most targeted search
149
+ - Try multiple queries if the first returns no results
150
+ - At session start, run a context-based search (Approach 2) for the primary work area,
151
+ then use targeted queries (Approach 1) as specific issues arise
152
+ - Prioritize notes tagged with \`bug-fix\` or \`troubleshooting\` — they contain warnings
153
+ - Notes tagged \`design-decision\` are especially valuable before making changes
154
+ - The \`noteId\` parameter of \`find_related\` is a number — pass the integer id field
155
+ from search results, not a string
156
+
157
+ ## Edge Cases
158
+
159
+ - **Knowledge base is empty** — If \`search_knowledge\` returns no results at all,
160
+ the knowledge base may not have been populated yet. Suggest using knowledgine-ingest
161
+ to index the codebase or knowledgine-capture to start recording knowledge.
162
+ - **Semantic or hybrid mode returns an error** — Embeddings may not be configured.
163
+ Fall back to \`keyword\` mode, which relies only on SQLite FTS5 and always works.
164
+ - **find_related returns an error for a noteId** — Confirm the value is a positive
165
+ integer from a \`search_knowledge\` result, not a string representation.
166
+
167
+ ## Reference Files
168
+
169
+ - See \`search-strategy.md\` for mode selection, context signal extraction, workflow
170
+ patterns, and result interpretation
171
+ - See \`query-tips.md\` for query formulation templates, fallback strategies, and
172
+ limit guidance
173
+ `;
174
+ //# sourceMappingURL=skill-md.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-md.js","sourceRoot":"","sources":["../../../../src/templates/skills/knowledgine-search/skill-md.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4KvB,CAAC"}