indexer-cli 0.2.1

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 (139) hide show
  1. package/README.md +156 -0
  2. package/bin/indexer-cli.js +97 -0
  3. package/dist/_temp_test.d.ts +1 -0
  4. package/dist/_temp_test.js +4 -0
  5. package/dist/_temp_test.js.map +1 -0
  6. package/dist/chunking/adaptive.d.ts +15 -0
  7. package/dist/chunking/adaptive.js +43 -0
  8. package/dist/chunking/adaptive.js.map +1 -0
  9. package/dist/chunking/function.d.ts +6 -0
  10. package/dist/chunking/function.js +96 -0
  11. package/dist/chunking/function.js.map +1 -0
  12. package/dist/chunking/index.d.ts +5 -0
  13. package/dist/chunking/index.js +22 -0
  14. package/dist/chunking/index.js.map +1 -0
  15. package/dist/chunking/module.d.ts +6 -0
  16. package/dist/chunking/module.js +33 -0
  17. package/dist/chunking/module.js.map +1 -0
  18. package/dist/chunking/single.d.ts +4 -0
  19. package/dist/chunking/single.js +19 -0
  20. package/dist/chunking/single.js.map +1 -0
  21. package/dist/chunking/types.d.ts +17 -0
  22. package/dist/chunking/types.js +3 -0
  23. package/dist/chunking/types.js.map +1 -0
  24. package/dist/cli/commands/architecture.d.ts +2 -0
  25. package/dist/cli/commands/architecture.js +162 -0
  26. package/dist/cli/commands/architecture.js.map +1 -0
  27. package/dist/cli/commands/context.d.ts +2 -0
  28. package/dist/cli/commands/context.js +241 -0
  29. package/dist/cli/commands/context.js.map +1 -0
  30. package/dist/cli/commands/deps.d.ts +2 -0
  31. package/dist/cli/commands/deps.js +129 -0
  32. package/dist/cli/commands/deps.js.map +1 -0
  33. package/dist/cli/commands/enrich.d.ts +2 -0
  34. package/dist/cli/commands/ensure-indexed.d.ts +4 -0
  35. package/dist/cli/commands/ensure-indexed.js +168 -0
  36. package/dist/cli/commands/ensure-indexed.js.map +1 -0
  37. package/dist/cli/commands/explain.d.ts +2 -0
  38. package/dist/cli/commands/explain.js +165 -0
  39. package/dist/cli/commands/explain.js.map +1 -0
  40. package/dist/cli/commands/index.d.ts +2 -0
  41. package/dist/cli/commands/index.js +271 -0
  42. package/dist/cli/commands/index.js.map +1 -0
  43. package/dist/cli/commands/init.d.ts +2 -0
  44. package/dist/cli/commands/init.js +132 -0
  45. package/dist/cli/commands/init.js.map +1 -0
  46. package/dist/cli/commands/search.d.ts +2 -0
  47. package/dist/cli/commands/search.js +206 -0
  48. package/dist/cli/commands/search.js.map +1 -0
  49. package/dist/cli/commands/setup.d.ts +2 -0
  50. package/dist/cli/commands/setup.js +425 -0
  51. package/dist/cli/commands/setup.js.map +1 -0
  52. package/dist/cli/commands/skill-template.d.ts +6 -0
  53. package/dist/cli/commands/skill-template.js +72 -0
  54. package/dist/cli/commands/skill-template.js.map +1 -0
  55. package/dist/cli/commands/structure.d.ts +2 -0
  56. package/dist/cli/commands/structure.js +243 -0
  57. package/dist/cli/commands/structure.js.map +1 -0
  58. package/dist/cli/commands/uninstall.d.ts +2 -0
  59. package/dist/cli/commands/uninstall.js +138 -0
  60. package/dist/cli/commands/uninstall.js.map +1 -0
  61. package/dist/cli/entry.d.ts +1 -0
  62. package/dist/cli/entry.js +55 -0
  63. package/dist/cli/entry.js.map +1 -0
  64. package/dist/cli/help-text.d.ts +2 -0
  65. package/dist/cli/help-text.js +9 -0
  66. package/dist/cli/help-text.js.map +1 -0
  67. package/dist/cli/version.d.ts +1 -0
  68. package/dist/cli/version.js +9 -0
  69. package/dist/cli/version.js.map +1 -0
  70. package/dist/core/config.d.ts +21 -0
  71. package/dist/core/config.js +77 -0
  72. package/dist/core/config.js.map +1 -0
  73. package/dist/core/logger.d.ts +19 -0
  74. package/dist/core/logger.js +116 -0
  75. package/dist/core/logger.js.map +1 -0
  76. package/dist/core/types.d.ts +194 -0
  77. package/dist/core/types.js +5 -0
  78. package/dist/core/types.js.map +1 -0
  79. package/dist/core/update-check.d.ts +1 -0
  80. package/dist/core/update-check.js +61 -0
  81. package/dist/core/update-check.js.map +1 -0
  82. package/dist/embedding/ollama.d.ts +29 -0
  83. package/dist/embedding/ollama.js +264 -0
  84. package/dist/embedding/ollama.js.map +1 -0
  85. package/dist/engine/architecture.d.ts +55 -0
  86. package/dist/engine/architecture.js +359 -0
  87. package/dist/engine/architecture.js.map +1 -0
  88. package/dist/engine/dependency-resolver.d.ts +4 -0
  89. package/dist/engine/dependency-resolver.js +69 -0
  90. package/dist/engine/dependency-resolver.js.map +1 -0
  91. package/dist/engine/git.d.ts +11 -0
  92. package/dist/engine/git.js +246 -0
  93. package/dist/engine/git.js.map +1 -0
  94. package/dist/engine/indexer.d.ts +86 -0
  95. package/dist/engine/indexer.js +933 -0
  96. package/dist/engine/indexer.js.map +1 -0
  97. package/dist/engine/scanner.d.ts +1 -0
  98. package/dist/engine/scanner.js +42 -0
  99. package/dist/engine/scanner.js.map +1 -0
  100. package/dist/engine/searcher.d.ts +26 -0
  101. package/dist/engine/searcher.js +70 -0
  102. package/dist/engine/searcher.js.map +1 -0
  103. package/dist/index.d.ts +1 -0
  104. package/dist/index.js +4 -0
  105. package/dist/index.js.map +1 -0
  106. package/dist/languages/csharp.d.ts +25 -0
  107. package/dist/languages/csharp.js +311 -0
  108. package/dist/languages/csharp.js.map +1 -0
  109. package/dist/languages/gdscript.d.ts +25 -0
  110. package/dist/languages/gdscript.js +382 -0
  111. package/dist/languages/gdscript.js.map +1 -0
  112. package/dist/languages/plugin.d.ts +73 -0
  113. package/dist/languages/plugin.js +35 -0
  114. package/dist/languages/plugin.js.map +1 -0
  115. package/dist/languages/python.d.ts +24 -0
  116. package/dist/languages/python.js +292 -0
  117. package/dist/languages/python.js.map +1 -0
  118. package/dist/languages/ruby.d.ts +25 -0
  119. package/dist/languages/ruby.js +328 -0
  120. package/dist/languages/ruby.js.map +1 -0
  121. package/dist/languages/typescript.d.ts +21 -0
  122. package/dist/languages/typescript.js +439 -0
  123. package/dist/languages/typescript.js.map +1 -0
  124. package/dist/storage/sqlite.d.ts +51 -0
  125. package/dist/storage/sqlite.js +726 -0
  126. package/dist/storage/sqlite.js.map +1 -0
  127. package/dist/storage/vectors.d.ts +39 -0
  128. package/dist/storage/vectors.js +450 -0
  129. package/dist/storage/vectors.js.map +1 -0
  130. package/dist/utils/gitignore.d.ts +4 -0
  131. package/dist/utils/gitignore.js +85 -0
  132. package/dist/utils/gitignore.js.map +1 -0
  133. package/dist/utils/hash.d.ts +1 -0
  134. package/dist/utils/hash.js +12 -0
  135. package/dist/utils/hash.js.map +1 -0
  136. package/dist/utils/token-estimator.d.ts +3 -0
  137. package/dist/utils/token-estimator.js +13 -0
  138. package/dist/utils/token-estimator.js.map +1 -0
  139. package/package.json +54 -0
@@ -0,0 +1,425 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.registerSetupCommand = registerSetupCommand;
7
+ const node_child_process_1 = require("node:child_process");
8
+ const node_os_1 = __importDefault(require("node:os"));
9
+ const PLATFORM = node_os_1.default.platform();
10
+ const IS_MAC = PLATFORM === "darwin";
11
+ const IS_LINUX = PLATFORM === "linux";
12
+ if (!IS_MAC && !IS_LINUX) {
13
+ console.error(`Unsupported platform: ${PLATFORM}. Only macOS and Linux are supported.`);
14
+ process.exit(1);
15
+ }
16
+ function run(cmd, opts) {
17
+ const output = (0, node_child_process_1.execSync)(cmd, {
18
+ stdio: opts?.stdio ?? "pipe",
19
+ encoding: "utf8",
20
+ });
21
+ return normalizeCommandOutput(output);
22
+ }
23
+ function normalizeCommandOutput(output) {
24
+ if (typeof output === "string") {
25
+ return output.trim();
26
+ }
27
+ if (Buffer.isBuffer(output)) {
28
+ return output.toString("utf8").trim();
29
+ }
30
+ return "";
31
+ }
32
+ function cmdExists(cmd) {
33
+ try {
34
+ (0, node_child_process_1.execSync)(`command -v ${cmd}`, { stdio: "pipe" });
35
+ return true;
36
+ }
37
+ catch {
38
+ return false;
39
+ }
40
+ }
41
+ function bold(text) {
42
+ return `\x1b[1m${text}\x1b[0m`;
43
+ }
44
+ function green(text) {
45
+ return `\x1b[32m${text}\x1b[0m`;
46
+ }
47
+ function yellow(text) {
48
+ return `\x1b[33m${text}\x1b[0m`;
49
+ }
50
+ function red(text) {
51
+ return `\x1b[31m${text}\x1b[0m`;
52
+ }
53
+ function createSkippedResult(name, detail) {
54
+ return { name, status: "skipped", detail };
55
+ }
56
+ const results = [];
57
+ // ── Node.js ─────────────────────────────────────────────────────────────
58
+ function checkNode() {
59
+ if (!cmdExists("node")) {
60
+ console.log(` ${yellow("⨯")} Node.js not found. Installing...`);
61
+ try {
62
+ if (IS_MAC && cmdExists("brew")) {
63
+ run("brew install node", { stdio: "inherit" });
64
+ }
65
+ else if (IS_LINUX && cmdExists("apt-get")) {
66
+ run("sudo apt-get update -qq", { stdio: "inherit" });
67
+ run("sudo apt-get install -y -qq nodejs", { stdio: "inherit" });
68
+ }
69
+ else {
70
+ return {
71
+ name: "Node.js",
72
+ status: "failed",
73
+ detail: "Install manually: https://nodejs.org/en/download",
74
+ };
75
+ }
76
+ }
77
+ catch (e) {
78
+ return {
79
+ name: "Node.js",
80
+ status: "failed",
81
+ detail: `Install failed: ${e instanceof Error ? e.message : String(e)}`,
82
+ };
83
+ }
84
+ }
85
+ try {
86
+ const version = run("node --version");
87
+ const major = parseInt(version.replace(/^v/, "").split(".")[0], 10);
88
+ if (major >= 18) {
89
+ return { name: "Node.js", status: "ok", detail: version };
90
+ }
91
+ return {
92
+ name: "Node.js",
93
+ status: "failed",
94
+ detail: `${version} found, but 18+ required`,
95
+ };
96
+ }
97
+ catch {
98
+ return {
99
+ name: "Node.js",
100
+ status: "failed",
101
+ detail: "Failed to detect version",
102
+ };
103
+ }
104
+ }
105
+ // ── Git ─────────────────────────────────────────────────────────────────
106
+ function checkGit() {
107
+ if (!cmdExists("git")) {
108
+ console.log(` ${yellow("⨯")} git not found. Installing...`);
109
+ try {
110
+ if (IS_MAC && cmdExists("brew")) {
111
+ run("brew install git", { stdio: "inherit" });
112
+ }
113
+ else if (IS_LINUX && cmdExists("apt-get")) {
114
+ run("sudo apt-get install -y -qq git", { stdio: "inherit" });
115
+ }
116
+ else {
117
+ return {
118
+ name: "Git",
119
+ status: "failed",
120
+ detail: "Install manually: https://git-scm.com",
121
+ };
122
+ }
123
+ }
124
+ catch (e) {
125
+ return {
126
+ name: "Git",
127
+ status: "failed",
128
+ detail: `Install failed: ${e instanceof Error ? e.message : String(e)}`,
129
+ };
130
+ }
131
+ }
132
+ try {
133
+ const version = run("git --version");
134
+ return { name: "Git", status: "ok", detail: version };
135
+ }
136
+ catch {
137
+ return {
138
+ name: "Git",
139
+ status: "failed",
140
+ detail: "Failed to detect version",
141
+ };
142
+ }
143
+ }
144
+ // ── Build tools ─────────────────────────────────────────────────────────
145
+ function checkBuildTools() {
146
+ if (IS_MAC) {
147
+ try {
148
+ const path = run("xcode-select -p");
149
+ if (path) {
150
+ return { name: "Build tools (Xcode CLT)", status: "ok", detail: path };
151
+ }
152
+ }
153
+ catch {
154
+ // xcode-select -p throws when CLT not installed
155
+ }
156
+ console.log(` ${yellow("⨯")} Xcode CLT not found. Installing...`);
157
+ try {
158
+ run("xcode-select --install", { stdio: "inherit" });
159
+ return {
160
+ name: "Build tools (Xcode CLT)",
161
+ status: "installed",
162
+ detail: "Follow the prompt to complete installation",
163
+ };
164
+ }
165
+ catch {
166
+ return {
167
+ name: "Build tools (Xcode CLT)",
168
+ status: "failed",
169
+ detail: "Run manually: xcode-select --install",
170
+ };
171
+ }
172
+ }
173
+ if (!(cmdExists("gcc") || cmdExists("cc")) || !cmdExists("make")) {
174
+ console.log(` ${yellow("⨯")} Build tools not found. Installing...`);
175
+ try {
176
+ if (cmdExists("apt-get")) {
177
+ run("sudo apt-get update -qq", { stdio: "inherit" });
178
+ run("sudo apt-get install -y -qq build-essential", {
179
+ stdio: "inherit",
180
+ });
181
+ return { name: "Build tools (gcc/make)", status: "installed" };
182
+ }
183
+ return {
184
+ name: "Build tools (gcc/make)",
185
+ status: "failed",
186
+ detail: "Install build-essential or equivalent manually",
187
+ };
188
+ }
189
+ catch (e) {
190
+ return {
191
+ name: "Build tools",
192
+ status: "failed",
193
+ detail: `Install failed: ${e instanceof Error ? e.message : String(e)}`,
194
+ };
195
+ }
196
+ }
197
+ try {
198
+ const gccVersion = run("gcc --version | head -1");
199
+ return { name: "Build tools (gcc/make)", status: "ok", detail: gccVersion };
200
+ }
201
+ catch {
202
+ return { name: "Build tools", status: "ok" };
203
+ }
204
+ }
205
+ // ── Python (needed by node-gyp for native modules) ──────────────────────
206
+ function checkPython() {
207
+ const pythonCmd = cmdExists("python3")
208
+ ? "python3"
209
+ : cmdExists("python")
210
+ ? "python"
211
+ : null;
212
+ if (pythonCmd) {
213
+ try {
214
+ const version = run(`${pythonCmd} --version`);
215
+ return { name: "Python (for node-gyp)", status: "ok", detail: version };
216
+ }
217
+ catch {
218
+ // python exists but --version failed, skip
219
+ }
220
+ }
221
+ console.log(` ${yellow("⨯")} Python not found. Installing...`);
222
+ try {
223
+ if (IS_MAC && cmdExists("brew")) {
224
+ run("brew install python3", { stdio: "inherit" });
225
+ }
226
+ else if (IS_LINUX && cmdExists("apt-get")) {
227
+ run("sudo apt-get install -y -qq python3", { stdio: "inherit" });
228
+ }
229
+ else {
230
+ return {
231
+ name: "Python (for node-gyp)",
232
+ status: "failed",
233
+ detail: "Install Python 3 manually",
234
+ };
235
+ }
236
+ return { name: "Python (for node-gyp)", status: "installed" };
237
+ }
238
+ catch (e) {
239
+ return {
240
+ name: "Python (for node-gyp)",
241
+ status: "failed",
242
+ detail: `Install failed: ${e instanceof Error ? e.message : String(e)}`,
243
+ };
244
+ }
245
+ }
246
+ // ── Ollama ──────────────────────────────────────────────────────────────
247
+ function checkOllama() {
248
+ if (!cmdExists("ollama")) {
249
+ return {
250
+ name: "Ollama",
251
+ status: "failed",
252
+ detail: "Install Ollama manually from https://ollama.com/download and re-run `indexer-cli setup`.",
253
+ };
254
+ }
255
+ try {
256
+ const version = run("ollama --version");
257
+ return { name: "Ollama", status: "ok", detail: version };
258
+ }
259
+ catch {
260
+ return { name: "Ollama", status: "ok", detail: "installed" };
261
+ }
262
+ }
263
+ function ensureOllamaRunning() {
264
+ if (!cmdExists("ollama")) {
265
+ return createSkippedResult("Ollama daemon", "Skipped until Ollama is installed manually.");
266
+ }
267
+ try {
268
+ const result = run("ollama ps");
269
+ void result;
270
+ return { name: "Ollama daemon", status: "ok", detail: "running" };
271
+ }
272
+ catch {
273
+ // ollama ps throws when daemon not running
274
+ }
275
+ console.log(` Starting Ollama daemon...`);
276
+ try {
277
+ run("ollama serve > /dev/null 2>&1 &");
278
+ let attempts = 0;
279
+ while (attempts < 30) {
280
+ try {
281
+ run("ollama ps");
282
+ return {
283
+ name: "Ollama daemon",
284
+ status: "installed",
285
+ detail: "started",
286
+ };
287
+ }
288
+ catch {
289
+ attempts++;
290
+ (0, node_child_process_1.execSync)("sleep 1", { stdio: "pipe" });
291
+ }
292
+ }
293
+ return {
294
+ name: "Ollama daemon",
295
+ status: "failed",
296
+ detail: "Timed out waiting for Ollama to start. Run `ollama serve` manually.",
297
+ };
298
+ }
299
+ catch (e) {
300
+ return {
301
+ name: "Ollama daemon",
302
+ status: "failed",
303
+ detail: `Failed to start: ${e instanceof Error ? e.message : String(e)}`,
304
+ };
305
+ }
306
+ }
307
+ // ── jina-8k model ───────────────────────────────────────────────────────
308
+ const BASE_MODEL = "unclemusclez/jina-embeddings-v2-base-code:q5";
309
+ const CUSTOM_MODEL = "jina-8k";
310
+ function checkJinaModel() {
311
+ if (!cmdExists("ollama")) {
312
+ return createSkippedResult(`Model ${CUSTOM_MODEL}`, "Skipped until Ollama is installed manually.");
313
+ }
314
+ try {
315
+ const models = run("ollama list");
316
+ if (models.includes(CUSTOM_MODEL)) {
317
+ return { name: `Model ${CUSTOM_MODEL}`, status: "ok", detail: "pulled" };
318
+ }
319
+ }
320
+ catch {
321
+ // ollama list failed or model not present
322
+ }
323
+ console.log(` Pulling base model ${BASE_MODEL} (≈119MB)...`);
324
+ try {
325
+ run(`ollama pull ${BASE_MODEL}`, { stdio: "inherit" });
326
+ }
327
+ catch (e) {
328
+ return {
329
+ name: `Model ${CUSTOM_MODEL}`,
330
+ status: "failed",
331
+ detail: `Pull failed: ${e instanceof Error ? e.message : String(e)}`,
332
+ };
333
+ }
334
+ console.log(` Creating ${CUSTOM_MODEL} with num_ctx 8192...`);
335
+ try {
336
+ const tmpdir = run("mktemp -d");
337
+ const modelfile = `${tmpdir}/Modelfile.jina-8k`;
338
+ const content = `FROM ${BASE_MODEL}\nPARAMETER num_ctx 8192\n`;
339
+ (0, node_child_process_1.execSync)(`cat > ${modelfile} << 'MODELEOF'\n${content}MODELEOF`, {
340
+ stdio: "pipe",
341
+ shell: "/bin/bash",
342
+ });
343
+ run(`ollama create ${CUSTOM_MODEL} -f ${modelfile}`, { stdio: "inherit" });
344
+ (0, node_child_process_1.execSync)(`rm -rf ${tmpdir}`, { stdio: "pipe" });
345
+ return { name: `Model ${CUSTOM_MODEL}`, status: "installed" };
346
+ }
347
+ catch (e) {
348
+ return {
349
+ name: `Model ${CUSTOM_MODEL}`,
350
+ status: "failed",
351
+ detail: `Create failed: ${e instanceof Error ? e.message : String(e)}`,
352
+ };
353
+ }
354
+ }
355
+ function collectOllamaResults(deps) {
356
+ const ollamaResult = deps.checkOllama();
357
+ if (ollamaResult.status === "failed") {
358
+ return [
359
+ ollamaResult,
360
+ createSkippedResult("Ollama daemon", "Skipped until Ollama is installed manually."),
361
+ createSkippedResult(`Model ${CUSTOM_MODEL}`, "Skipped until Ollama is installed manually."),
362
+ ];
363
+ }
364
+ const daemonResult = deps.ensureOllamaRunning();
365
+ if (daemonResult.status === "failed") {
366
+ return [
367
+ ollamaResult,
368
+ daemonResult,
369
+ createSkippedResult(`Model ${CUSTOM_MODEL}`, "Skipped until the Ollama daemon is running."),
370
+ ];
371
+ }
372
+ return [ollamaResult, daemonResult, deps.checkJinaModel()];
373
+ }
374
+ // ── Summary ─────────────────────────────────────────────────────────────
375
+ function printSummary() {
376
+ console.log("");
377
+ console.log(bold(" Setup Summary"));
378
+ console.log(" ─────────────────────────────────────────");
379
+ let allOk = true;
380
+ for (const r of results) {
381
+ const icon = r.status === "ok"
382
+ ? green("✓")
383
+ : r.status === "installed"
384
+ ? green("✓")
385
+ : r.status === "skipped"
386
+ ? yellow("○")
387
+ : red("✗");
388
+ const suffix = r.detail ? ` (${r.detail})` : "";
389
+ const label = r.status === "installed" ? `${r.name} — installed` : r.name;
390
+ console.log(` ${icon} ${label}${suffix}`);
391
+ if (r.status === "failed")
392
+ allOk = false;
393
+ }
394
+ console.log("");
395
+ if (!allOk) {
396
+ console.log(red(" Some dependencies failed. Resolve the issues above and re-run `indexer-cli setup`."));
397
+ process.exitCode = 1;
398
+ }
399
+ else {
400
+ console.log(green(" All dependencies ready. Run `indexer-cli init` in your project to start."));
401
+ }
402
+ }
403
+ // ── Main ────────────────────────────────────────────────────────────────
404
+ function registerSetupCommand(program) {
405
+ program
406
+ .command("setup")
407
+ .description("Check system prerequisites and prepare Ollama for indexer-cli")
408
+ .action(() => {
409
+ console.log(bold("\n indexer-cli dependency setup\n"));
410
+ console.log(` Platform: ${node_os_1.default.type()} ${node_os_1.default.release()} (${node_os_1.default.arch()})\n`);
411
+ console.log(bold(" Checking system prerequisites..."));
412
+ results.push(checkNode());
413
+ results.push(checkGit());
414
+ results.push(checkBuildTools());
415
+ results.push(checkPython());
416
+ console.log(bold("\n Checking Ollama & embedding model..."));
417
+ results.push(...collectOllamaResults({
418
+ checkOllama,
419
+ ensureOllamaRunning,
420
+ checkJinaModel,
421
+ }));
422
+ printSummary();
423
+ });
424
+ }
425
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * SKILL.md template for Claude Code integration.
3
+ *
4
+ * Written to `.claude/skills/repo-discovery/SKILL.md` during `indexer-cli init`.
5
+ */
6
+ export declare const SKILL_MD = "---\nname: repo-discovery\ndescription: Mandatory for repository discovery. Before grep/glob/find, first use indexer-cli whenever the task involves finding implementations, tracing behavior, locating symbols, identifying entry points, inspecting module structure, or understanding an unfamiliar area of this repo.\nallowed-tools: Bash(indexer-cli:*)\n---\n\n# Repository discovery with indexer-cli\n\nUse this skill for discovery tasks inside this repository.\n\n## Required behavior\n\nAlways start with indexer-cli for repository discovery.\nDo not use grep, glob, or find until indexer-cli was insufficient, or you need an exact literal text match after narrowing the area.\n\n## Load this skill when\n\n- You need to find where something is implemented\n- You need to trace a symbol, handler, feature, or behavior\n- You are entering an unfamiliar module or directory\n- You need structure, entry points, or dependency context\n- The task is exploratory and you do not yet know the right file\n\n## Skip this skill when\n\n- The exact file is already known and the task stays inside it\n- You only need an exact literal text match\n- The task is outside this repository\n\n## First command\n\nRun one of these first:\n\n```bash\nindexer-cli search \"<query>\" --json\nindexer-cli search \"<query>\" --json --path-prefix src/<area>\nindexer-cli search \"<query>\" --json --chunk-types impl,types\nindexer-cli structure --json --path-prefix src/<area>\nindexer-cli structure --json --kind class\nindexer-cli architecture --json\nindexer-cli index --status --json\n```\n\n## Reading search results\n\n`indexer-cli search --json` returns ranked code chunks, not whole files.\nEach result includes `filePath`, `startLine`, `endLine`, `score`, `primarySymbol`, and `content`.\n\n- Use `score` to prefer the most relevant chunks first and filter obvious low-relevance noise.\n- Use `primarySymbol` to see which function/class/type the chunk belongs to before opening the file.\n- Treat `content` as supporting context, but rank and filter with `score` + `primarySymbol` instead of raw text alone.\n\n## Reference\n\n### Chunk types (--chunk-types)\n\n`full_file`, `imports`, `preamble`, `declaration`, `module_section`, `impl`, `types`\n\n### Symbol kinds (--kind)\n\n`function`, `class`, `method`, `interface`, `type`, `variable`, `module`, `signal`\n";
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SKILL_MD = void 0;
4
+ /**
5
+ * SKILL.md template for Claude Code integration.
6
+ *
7
+ * Written to `.claude/skills/repo-discovery/SKILL.md` during `indexer-cli init`.
8
+ */
9
+ exports.SKILL_MD = `\
10
+ ---
11
+ name: repo-discovery
12
+ description: Mandatory for repository discovery. Before grep/glob/find, first use indexer-cli whenever the task involves finding implementations, tracing behavior, locating symbols, identifying entry points, inspecting module structure, or understanding an unfamiliar area of this repo.
13
+ allowed-tools: Bash(indexer-cli:*)
14
+ ---
15
+
16
+ # Repository discovery with indexer-cli
17
+
18
+ Use this skill for discovery tasks inside this repository.
19
+
20
+ ## Required behavior
21
+
22
+ Always start with indexer-cli for repository discovery.
23
+ Do not use grep, glob, or find until indexer-cli was insufficient, or you need an exact literal text match after narrowing the area.
24
+
25
+ ## Load this skill when
26
+
27
+ - You need to find where something is implemented
28
+ - You need to trace a symbol, handler, feature, or behavior
29
+ - You are entering an unfamiliar module or directory
30
+ - You need structure, entry points, or dependency context
31
+ - The task is exploratory and you do not yet know the right file
32
+
33
+ ## Skip this skill when
34
+
35
+ - The exact file is already known and the task stays inside it
36
+ - You only need an exact literal text match
37
+ - The task is outside this repository
38
+
39
+ ## First command
40
+
41
+ Run one of these first:
42
+
43
+ \`\`\`bash
44
+ indexer-cli search "<query>" --json
45
+ indexer-cli search "<query>" --json --path-prefix src/<area>
46
+ indexer-cli search "<query>" --json --chunk-types impl,types
47
+ indexer-cli structure --json --path-prefix src/<area>
48
+ indexer-cli structure --json --kind class
49
+ indexer-cli architecture --json
50
+ indexer-cli index --status --json
51
+ \`\`\`
52
+
53
+ ## Reading search results
54
+
55
+ \`indexer-cli search --json\` returns ranked code chunks, not whole files.
56
+ Each result includes \`filePath\`, \`startLine\`, \`endLine\`, \`score\`, \`primarySymbol\`, and \`content\`.
57
+
58
+ - Use \`score\` to prefer the most relevant chunks first and filter obvious low-relevance noise.
59
+ - Use \`primarySymbol\` to see which function/class/type the chunk belongs to before opening the file.
60
+ - Treat \`content\` as supporting context, but rank and filter with \`score\` + \`primarySymbol\` instead of raw text alone.
61
+
62
+ ## Reference
63
+
64
+ ### Chunk types (--chunk-types)
65
+
66
+ \`full_file\`, \`imports\`, \`preamble\`, \`declaration\`, \`module_section\`, \`impl\`, \`types\`
67
+
68
+ ### Symbol kinds (--kind)
69
+
70
+ \`function\`, \`class\`, \`method\`, \`interface\`, \`type\`, \`variable\`, \`module\`, \`signal\`
71
+ `;
72
+ //# sourceMappingURL=skill-template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-template.js","sourceRoot":"","sources":["../../../src/cli/commands/skill-template.ts"],"names":[],"mappings":";;;AAAA;;;;GAIG;AACU,QAAA,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DvB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerStructureCommand(program: Command): void;