pi-skill-search 0.1.0 → 0.2.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 (294) hide show
  1. package/CHANGELOG.md +17 -5
  2. package/README.md +35 -30
  3. package/SPEC.md +1083 -0
  4. package/install.mjs +47 -0
  5. package/package.json +48 -46
  6. package/src/categories.ts +3 -24
  7. package/src/indexer.ts +1 -7
  8. package/src/scanner.ts +62 -14
  9. package/src/search.ts +2 -2
  10. package/src/types.ts +4 -1
  11. /package/{skills → data}/adaptyv/SKILL.md +0 -0
  12. /package/{skills → data}/add-community-extension/SKILL.md +0 -0
  13. /package/{skills → data}/aeon/SKILL.md +0 -0
  14. /package/{skills → data}/ai-slop-cleaner/SKILL.md +0 -0
  15. /package/{skills → data}/anndata/SKILL.md +0 -0
  16. /package/{skills → data}/arboreto/SKILL.md +0 -0
  17. /package/{skills → data}/ask/SKILL.md +0 -0
  18. /package/{skills → data}/astropy/SKILL.md +0 -0
  19. /package/{skills → data}/async-worker-recovery/SKILL.md +0 -0
  20. /package/{skills → data}/autopilot/SKILL.md +0 -0
  21. /package/{skills → data}/autoresearch/SKILL.md +0 -0
  22. /package/{skills → data}/autoskill/SKILL.md +0 -0
  23. /package/{skills → data}/babysit/SKILL.md +0 -0
  24. /package/{skills → data}/benchling-integration/SKILL.md +0 -0
  25. /package/{skills → data}/bgpt-paper-search/SKILL.md +0 -0
  26. /package/{skills → data}/biopython/SKILL.md +0 -0
  27. /package/{skills → data}/bioservices/SKILL.md +0 -0
  28. /package/{skills → data}/brainstorming/SKILL.md +0 -0
  29. /package/{skills → data}/cancel/SKILL.md +0 -0
  30. /package/{skills → data}/ccg/SKILL.md +0 -0
  31. /package/{skills → data}/celery-pipeline/SKILL.md +0 -0
  32. /package/{skills → data}/cellxgene-census/SKILL.md +0 -0
  33. /package/{skills → data}/child-pi-spawning/SKILL.md +0 -0
  34. /package/{skills → data}/cirq/SKILL.md +0 -0
  35. /package/{skills → data}/citation-management/SKILL.md +0 -0
  36. /package/{skills → data}/clinical-decision-support/SKILL.md +0 -0
  37. /package/{skills → data}/clinical-reports/SKILL.md +0 -0
  38. /package/{skills → data}/clinical-trial/SKILL.md +0 -0
  39. /package/{skills → data}/cobrapy/SKILL.md +0 -0
  40. /package/{skills → data}/configure-notifications/SKILL.md +0 -0
  41. /package/{skills → data}/consciousness-council/SKILL.md +0 -0
  42. /package/{skills → data}/context-artifact-hygiene/SKILL.md +0 -0
  43. /package/{skills → data}/context-mode-ops/SKILL.md +0 -0
  44. /package/{skills → data}/dask/SKILL.md +0 -0
  45. /package/{skills → data}/database-lookup/SKILL.md +0 -0
  46. /package/{skills → data}/datamol/SKILL.md +0 -0
  47. /package/{skills → data}/debug/SKILL.md +0 -0
  48. /package/{skills → data}/deep-dive/SKILL.md +0 -0
  49. /package/{skills → data}/deep-interview/SKILL.md +0 -0
  50. /package/{skills → data}/deepchem/SKILL.md +0 -0
  51. /package/{skills → data}/deepinit/SKILL.md +0 -0
  52. /package/{skills → data}/deeptools/SKILL.md +0 -0
  53. /package/{skills → data}/delegation-patterns/SKILL.md +0 -0
  54. /package/{skills → data}/depmap/SKILL.md +0 -0
  55. /package/{skills → data}/dhdna-profiler/SKILL.md +0 -0
  56. /package/{skills → data}/diffdock/SKILL.md +0 -0
  57. /package/{skills → data}/dispatching-parallel-agents/SKILL.md +0 -0
  58. /package/{skills → data}/dnanexus-integration/SKILL.md +0 -0
  59. /package/{skills → data}/do/SKILL.md +0 -0
  60. /package/{skills → data}/docker-sandbox/SKILL.md +0 -0
  61. /package/{skills → data}/docx/SKILL.md +0 -0
  62. /package/{skills → data}/esm/SKILL.md +0 -0
  63. /package/{skills → data}/etetoolkit/SKILL.md +0 -0
  64. /package/{skills → data}/event-log-tracing/SKILL.md +0 -0
  65. /package/{skills → data}/exa-search/SKILL.md +0 -0
  66. /package/{skills → data}/executing-plans/SKILL.md +0 -0
  67. /package/{skills → data}/exploratory-data-analysis/SKILL.md +0 -0
  68. /package/{skills → data}/external-context/SKILL.md +0 -0
  69. /package/{skills → data}/fastapi/SKILL.md +0 -0
  70. /package/{skills → data}/finishing-a-development-branch/SKILL.md +0 -0
  71. /package/{skills → data}/flowio/SKILL.md +0 -0
  72. /package/{skills → data}/fluidsim/SKILL.md +0 -0
  73. /package/{skills → data}/generate-image/SKILL.md +0 -0
  74. /package/{skills → data}/geniml/SKILL.md +0 -0
  75. /package/{skills → data}/geomaster/SKILL.md +0 -0
  76. /package/{skills → data}/geopandas/SKILL.md +0 -0
  77. /package/{skills → data}/get-available-resources/SKILL.md +0 -0
  78. /package/{skills → data}/gget/SKILL.md +0 -0
  79. /package/{skills → data}/ginkgo-cloud-lab/SKILL.md +0 -0
  80. /package/{skills → data}/git-master/SKILL.md +0 -0
  81. /package/{skills → data}/glycoengineering/SKILL.md +0 -0
  82. /package/{skills → data}/gtars/SKILL.md +0 -0
  83. /package/{skills → data}/hackernews-frontpage/SKILL.md +0 -0
  84. /package/{skills → data}/histolab/SKILL.md +0 -0
  85. /package/{skills → data}/how-it-works/SKILL.md +0 -0
  86. /package/{skills → data}/hud/SKILL.md +0 -0
  87. /package/{skills → data}/hugging-science/SKILL.md +0 -0
  88. /package/{skills → data}/huggingface/SKILL.md +0 -0
  89. /package/{skills → data}/hypogenic/SKILL.md +0 -0
  90. /package/{skills → data}/hypothesis-generation/SKILL.md +0 -0
  91. /package/{skills → data}/imaging-data-commons/SKILL.md +0 -0
  92. /package/{skills → data}/infographics/SKILL.md +0 -0
  93. /package/{skills → data}/iso-13485-certification/SKILL.md +0 -0
  94. /package/{skills → data}/knowledge-agent/SKILL.md +0 -0
  95. /package/{skills → data}/labarchive-integration/SKILL.md +0 -0
  96. /package/{skills → data}/lamindb/SKILL.md +0 -0
  97. /package/{skills → data}/landsat/SKILL.md +0 -0
  98. /package/{skills → data}/latchbio-integration/SKILL.md +0 -0
  99. /package/{skills → data}/latex-posters/SKILL.md +0 -0
  100. /package/{skills → data}/learn-codebase/SKILL.md +0 -0
  101. /package/{skills → data}/learner/SKILL.md +0 -0
  102. /package/{skills → data}/literature-review/SKILL.md +0 -0
  103. /package/{skills → data}/live-agent-lifecycle/SKILL.md +0 -0
  104. /package/{skills → data}/mailbox-interactive/SKILL.md +0 -0
  105. /package/{skills → data}/make-plan/SKILL.md +0 -0
  106. /package/{skills → data}/markdown-mermaid-writing/SKILL.md +0 -0
  107. /package/{skills → data}/market-research-reports/SKILL.md +0 -0
  108. /package/{skills → data}/markitdown/SKILL.md +0 -0
  109. /package/{skills → data}/markitdown-docs/SKILL.md +0 -0
  110. /package/{skills → data}/matchms/SKILL.md +0 -0
  111. /package/{skills → data}/matlab/SKILL.md +0 -0
  112. /package/{skills → data}/matplotlib/SKILL.md +0 -0
  113. /package/{skills → data}/mcp-setup/SKILL.md +0 -0
  114. /package/{skills → data}/medchem/SKILL.md +0 -0
  115. /package/{skills → data}/mem-search/SKILL.md +0 -0
  116. /package/{skills → data}/modal/SKILL.md +0 -0
  117. /package/{skills → data}/model-routing-context/SKILL.md +0 -0
  118. /package/{skills → data}/molecular-dynamics/SKILL.md +0 -0
  119. /package/{skills → data}/molfeat/SKILL.md +0 -0
  120. /package/{skills → data}/multi-perspective-review/SKILL.md +0 -0
  121. /package/{skills → data}/networkx/SKILL.md +0 -0
  122. /package/{skills → data}/neurokit2/SKILL.md +0 -0
  123. /package/{skills → data}/neuropixels-analysis/SKILL.md +0 -0
  124. /package/{skills → data}/nilearn/SKILL.md +0 -0
  125. /package/{skills → data}/observability-reliability/SKILL.md +0 -0
  126. /package/{skills → data}/omc-doctor/SKILL.md +0 -0
  127. /package/{skills → data}/omc-reference/SKILL.md +0 -0
  128. /package/{skills → data}/omc-setup/SKILL.md +0 -0
  129. /package/{skills → data}/omc-teams/SKILL.md +0 -0
  130. /package/{skills → data}/omero-integration/SKILL.md +0 -0
  131. /package/{skills → data}/open-notebook/SKILL.md +0 -0
  132. /package/{skills → data}/openephys/SKILL.md +0 -0
  133. /package/{skills → data}/opentrons-integration/SKILL.md +0 -0
  134. /package/{skills → data}/optimize-for-gpu/SKILL.md +0 -0
  135. /package/{skills → data}/orchestration/SKILL.md +0 -0
  136. /package/{skills → data}/ownership-session-security/SKILL.md +0 -0
  137. /package/{skills → data}/paper-lookup/SKILL.md +0 -0
  138. /package/{skills → data}/paperzilla/SKILL.md +0 -0
  139. /package/{skills → data}/parallel-web/SKILL.md +0 -0
  140. /package/{skills → data}/pathfinder/SKILL.md +0 -0
  141. /package/{skills → data}/pathml/SKILL.md +0 -0
  142. /package/{skills → data}/pdf/SKILL.md +0 -0
  143. /package/{skills → data}/peer-review/SKILL.md +0 -0
  144. /package/{skills → data}/pennylane/SKILL.md +0 -0
  145. /package/{skills → data}/phylogenetics/SKILL.md +0 -0
  146. /package/{skills → data}/pi-extension-lifecycle/SKILL.md +0 -0
  147. /package/{skills → data}/plan/SKILL.md +0 -0
  148. /package/{skills → data}/polars/SKILL.md +0 -0
  149. /package/{skills → data}/polars-bio/SKILL.md +0 -0
  150. /package/{skills → data}/pptx/SKILL.md +0 -0
  151. /package/{skills → data}/pptx-posters/SKILL.md +0 -0
  152. /package/{skills → data}/primekg/SKILL.md +0 -0
  153. /package/{skills → data}/project-session-manager/SKILL.md +0 -0
  154. /package/{skills → data}/protocolsio-integration/SKILL.md +0 -0
  155. /package/{skills → data}/pubmed-search/SKILL.md +0 -0
  156. /package/{skills → data}/pufferlib/SKILL.md +0 -0
  157. /package/{skills → data}/pydeseq2/SKILL.md +0 -0
  158. /package/{skills → data}/pydicom/SKILL.md +0 -0
  159. /package/{skills → data}/pyhealth/SKILL.md +0 -0
  160. /package/{skills → data}/pylabrobot/SKILL.md +0 -0
  161. /package/{skills → data}/pymatgen/SKILL.md +0 -0
  162. /package/{skills → data}/pymc/SKILL.md +0 -0
  163. /package/{skills → data}/pymoo/SKILL.md +0 -0
  164. /package/{skills → data}/pyopenms/SKILL.md +0 -0
  165. /package/{skills → data}/pysam/SKILL.md +0 -0
  166. /package/{skills → data}/pyspark/SKILL.md +0 -0
  167. /package/{skills → data}/pytdc/SKILL.md +0 -0
  168. /package/{skills → data}/pytorch/SKILL.md +0 -0
  169. /package/{skills → data}/pytorch-lightning/SKILL.md +0 -0
  170. /package/{skills → data}/pyzotero/SKILL.md +0 -0
  171. /package/{skills → data}/qiskit/SKILL.md +0 -0
  172. /package/{skills → data}/qutip/SKILL.md +0 -0
  173. /package/{skills → data}/ralph/SKILL.md +0 -0
  174. /package/{skills → data}/ralplan/SKILL.md +0 -0
  175. /package/{skills → data}/rdflib/SKILL.md +0 -0
  176. /package/{skills → data}/rdkit/SKILL.md +0 -0
  177. /package/{skills → data}/read-only-explorer/SKILL.md +0 -0
  178. /package/{skills → data}/receiving-code-review/SKILL.md +0 -0
  179. /package/{skills → data}/release/SKILL.md +0 -0
  180. /package/{skills → data}/remember/SKILL.md +0 -0
  181. /package/{skills → data}/requesting-code-review/SKILL.md +0 -0
  182. /package/{skills → data}/requirements-to-task-packet/SKILL.md +0 -0
  183. /package/{skills → data}/research-grants/SKILL.md +0 -0
  184. /package/{skills → data}/research-lookup/SKILL.md +0 -0
  185. /package/{skills → data}/research-reproducibility/SKILL.md +0 -0
  186. /package/{skills → data}/resource-discovery-config/SKILL.md +0 -0
  187. /package/{skills → data}/rowan/SKILL.md +0 -0
  188. /package/{skills → data}/runtime-state-reader/SKILL.md +0 -0
  189. /package/{skills → data}/safe-bash/SKILL.md +0 -0
  190. /package/{skills → data}/scanpy/SKILL.md +0 -0
  191. /package/{skills → data}/scholar-evaluation/SKILL.md +0 -0
  192. /package/{skills → data}/scientific-brainstorming/SKILL.md +0 -0
  193. /package/{skills → data}/scientific-critical-thinking/SKILL.md +0 -0
  194. /package/{skills → data}/scientific-schematics/SKILL.md +0 -0
  195. /package/{skills → data}/scientific-slides/SKILL.md +0 -0
  196. /package/{skills → data}/scientific-visualization/SKILL.md +0 -0
  197. /package/{skills → data}/scientific-writing/SKILL.md +0 -0
  198. /package/{skills → data}/scikit-bio/SKILL.md +0 -0
  199. /package/{skills → data}/scikit-learn/SKILL.md +0 -0
  200. /package/{skills → data}/scikit-survival/SKILL.md +0 -0
  201. /package/{skills → data}/sciomc/SKILL.md +0 -0
  202. /package/{skills → data}/scvelo/SKILL.md +0 -0
  203. /package/{skills → data}/scvi-tools/SKILL.md +0 -0
  204. /package/{skills → data}/seaborn/SKILL.md +0 -0
  205. /package/{skills → data}/secure-agent-orchestration-review/SKILL.md +0 -0
  206. /package/{skills → data}/self-improve/SKILL.md +0 -0
  207. /package/{skills → data}/semantic-compression/SKILL.md +0 -0
  208. /package/{skills → data}/setup/SKILL.md +0 -0
  209. /package/{skills → data}/shap/SKILL.md +0 -0
  210. /package/{skills → data}/simpy/SKILL.md +0 -0
  211. /package/{skills → data}/skill/SKILL.md +0 -0
  212. /package/{skills → data}/skill-search/SKILL.md +0 -0
  213. /package/{skills → data}/skillify/SKILL.md +0 -0
  214. /package/{skills → data}/smart-explore/SKILL.md +0 -0
  215. /package/{skills → data}/sqlite-pandas/SKILL.md +0 -0
  216. /package/{skills → data}/stable-baselines3/SKILL.md +0 -0
  217. /package/{skills → data}/state-mutation-locking/SKILL.md +0 -0
  218. /package/{skills → data}/statistical-analysis/SKILL.md +0 -0
  219. /package/{skills → data}/statsmodels/SKILL.md +0 -0
  220. /package/{skills → data}/subagent-driven-development/SKILL.md +0 -0
  221. /package/{skills → data}/sympy/SKILL.md +0 -0
  222. /package/{skills → data}/system-prompts/SKILL.md +0 -0
  223. /package/{skills → data}/systematic-debugging/SKILL.md +0 -0
  224. /package/{skills → data}/team/SKILL.md +0 -0
  225. /package/{skills → data}/test-driven-development/SKILL.md +0 -0
  226. /package/{skills → data}/tiledbvcf/SKILL.md +0 -0
  227. /package/{skills → data}/timeline-report/SKILL.md +0 -0
  228. /package/{skills → data}/timesfm-forecasting/SKILL.md +0 -0
  229. /package/{skills → data}/torch-geometric/SKILL.md +0 -0
  230. /package/{skills → data}/torchdrug/SKILL.md +0 -0
  231. /package/{skills → data}/trace/SKILL.md +0 -0
  232. /package/{skills → data}/transformers/SKILL.md +0 -0
  233. /package/{skills → data}/treatment-plans/SKILL.md +0 -0
  234. /package/{skills → data}/ui-render-performance/SKILL.md +0 -0
  235. /package/{skills → data}/ultragoal/SKILL.md +0 -0
  236. /package/{skills → data}/ultraqa/SKILL.md +0 -0
  237. /package/{skills → data}/ultrawork/SKILL.md +0 -0
  238. /package/{skills → data}/umap-learn/SKILL.md +0 -0
  239. /package/{skills → data}/usfiscaldata/SKILL.md +0 -0
  240. /package/{skills → data}/using-git-worktrees/SKILL.md +0 -0
  241. /package/{skills → data}/using-superpowers/SKILL.md +0 -0
  242. /package/{skills → data}/using-vetc/SKILL.md +0 -0
  243. /package/{skills → data}/vaex/SKILL.md +0 -0
  244. /package/{skills → data}/venue-templates/SKILL.md +0 -0
  245. /package/{skills → data}/verification-before-completion/SKILL.md +0 -0
  246. /package/{skills → data}/verification-before-done/SKILL.md +0 -0
  247. /package/{skills → data}/verify/SKILL.md +0 -0
  248. /package/{skills → data}/version-bump/SKILL.md +0 -0
  249. /package/{skills → data}/vetc-analyze-ba/SKILL.md +0 -0
  250. /package/{skills → data}/vetc-analyze-codebase/SKILL.md +0 -0
  251. /package/{skills → data}/vetc-api-design/SKILL.md +0 -0
  252. /package/{skills → data}/vetc-brainstorming/SKILL.md +0 -0
  253. /package/{skills → data}/vetc-change-proposal/SKILL.md +0 -0
  254. /package/{skills → data}/vetc-cicd/SKILL.md +0 -0
  255. /package/{skills → data}/vetc-continuous-learning/SKILL.md +0 -0
  256. /package/{skills → data}/vetc-deep-interview/SKILL.md +0 -0
  257. /package/{skills → data}/vetc-docgen/SKILL.md +0 -0
  258. /package/{skills → data}/vetc-frontend-patterns/SKILL.md +0 -0
  259. /package/{skills → data}/vetc-iterative-retrieval/SKILL.md +0 -0
  260. /package/{skills → data}/vetc-java-patterns/SKILL.md +0 -0
  261. /package/{skills → data}/vetc-meta-skill-creator/SKILL.md +0 -0
  262. /package/{skills → data}/vetc-oracle-patterns/SKILL.md +0 -0
  263. /package/{skills → data}/vetc-performance-testing/SKILL.md +0 -0
  264. /package/{skills → data}/vetc-pr-response/SKILL.md +0 -0
  265. /package/{skills → data}/vetc-ralph/SKILL.md +0 -0
  266. /package/{skills → data}/vetc-ralplan/SKILL.md +0 -0
  267. /package/{skills → data}/vetc-receiving-review/SKILL.md +0 -0
  268. /package/{skills → data}/vetc-reconcile-patterns/SKILL.md +0 -0
  269. /package/{skills → data}/vetc-refactoring/SKILL.md +0 -0
  270. /package/{skills → data}/vetc-runbook/SKILL.md +0 -0
  271. /package/{skills → data}/vetc-sast/SKILL.md +0 -0
  272. /package/{skills → data}/vetc-sdlc/SKILL.md +0 -0
  273. /package/{skills → data}/vetc-security/SKILL.md +0 -0
  274. /package/{skills → data}/vetc-spec-driven/SKILL.md +0 -0
  275. /package/{skills → data}/vetc-spec-quality/SKILL.md +0 -0
  276. /package/{skills → data}/vetc-systematic-debugging/SKILL.md +0 -0
  277. /package/{skills → data}/vetc-tdd/SKILL.md +0 -0
  278. /package/{skills → data}/vetc-thinking-pm/SKILL.md +0 -0
  279. /package/{skills → data}/vetc-ui-visual-qa/SKILL.md +0 -0
  280. /package/{skills → data}/vetc-verify/SKILL.md +0 -0
  281. /package/{skills → data}/visual-verdict/SKILL.md +0 -0
  282. /package/{skills → data}/what-if-oracle/SKILL.md +0 -0
  283. /package/{skills → data}/widget-rendering/SKILL.md +0 -0
  284. /package/{skills → data}/wiki/SKILL.md +0 -0
  285. /package/{skills → data}/workspace-isolation/SKILL.md +0 -0
  286. /package/{skills → data}/worktree-isolation/SKILL.md +0 -0
  287. /package/{skills → data}/wowerpoint/SKILL.md +0 -0
  288. /package/{skills → data}/writer-memory/SKILL.md +0 -0
  289. /package/{skills → data}/writing-plans/SKILL.md +0 -0
  290. /package/{skills → data}/writing-skills/SKILL.md +0 -0
  291. /package/{skills → data}/xgboost/SKILL.md +0 -0
  292. /package/{skills → data}/xgboost-ts/SKILL.md +0 -0
  293. /package/{skills → data}/xlsx/SKILL.md +0 -0
  294. /package/{skills → data}/zarr-python/SKILL.md +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.0 (2026-05-23)
4
+
5
+ ### Fixed
6
+ - **Packaging conflict**: Renamed `skills/` to `data/` to prevent Pi from discovering and inject-all-ing 284 skills
7
+ - **Install script**: Created `install.mjs` to copy `skill-search` skill to `~/.pi/agent/skills/` (where Pi discovers skills)
8
+ - **Scoring weights**: Changed from +5/+2 to +3/+1 per SPEC §5.1 for better relevance scoring
9
+ - **Unused nameIndex**: Removed from SkillIndex interface and buildIndex() function
10
+ - **EOF newline**: Added missing newline in categories.ts
11
+ - **SPEC §7.4**: Updated documentation to always return `{ systemPrompt }`, never undefined
12
+
13
+ ### Changed
14
+ - Scanner now scans `data/` directory instead of `skills/`
15
+ - Extension registers `skill-search` tool via `before_agent_start` event
16
+ - 284 skills corpus in `data/` (Pi does not discover this directory)
17
+
3
18
  ## 0.1.0 (2026-05-17)
4
19
 
5
20
  ### Added
@@ -11,10 +26,7 @@
11
26
  - Strip regex to remove Pi's `<available_skills>` block from system prompt
12
27
  - Category summary injection via `before_agent_start` event
13
28
  - Proactive suggestion hook for Python package detection (opt-in)
14
- - **258 bundled skills** from 10 source repos:
15
- - scientific-agent-skills (137), oh-my-claudecode (29), vetc-dev-kit (33)
16
- - pi-crew (27), superpowers (14), oh-my-pi (2), claude-mem (12)
17
- - gstack (1), context-mode (1), spec-kit (1)
29
+ - **284 bundled skills** from 10 source repos
18
30
  - 14/14 categories, 0 Other
19
31
  - 123 tests across 14 test files including search quality benchmarks
20
- - Biome lint + TypeScript strict mode clean
32
+ - Biome lint + TypeScript strict mode clean
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## Problem
6
6
 
7
- Pi injects **all** skill `<available_skills>` descriptions into every agent's system prompt. With 258 skills across 14 categories, that's ~40,000+ tokens wasted per turn — even when the agent never uses any skill.
7
+ Pi injects **all** skill `<available_skills>` descriptions into every agent's system prompt. With 258+ skills across 14 categories, that's ~40,000+ tokens wasted per turn — even when the agent never uses any skill.
8
8
 
9
9
  ## Solution
10
10
 
@@ -14,12 +14,21 @@ Pi injects **all** skill `<available_skills>` descriptions into every agent's sy
14
14
 
15
15
  Result: **~97% token reduction** in skill-related system prompt content.
16
16
 
17
- ## Quick Start
17
+ ## Installation
18
18
 
19
19
  ```bash
20
- # Install
21
- npm install
20
+ # Install from local source
21
+ npx pi install .
22
+
23
+ # Or from npm (when published)
24
+ npm install pi-skill-search
25
+ ```
26
+
27
+ The `install.mjs` script automatically sets up the `skill-search` skill in `~/.pi/agent/skills/` so Pi can discover it.
28
+
29
+ ## Quick Start
22
30
 
31
+ ```bash
23
32
  # Run tests
24
33
  npm test
25
34
 
@@ -31,7 +40,9 @@ npx tsx scripts/build-skills-fixture.ts
31
40
 
32
41
  ```
33
42
  index.ts ← Extension entry (before_agent_start + skill-search tool)
43
+ install.mjs ← Post-install: copy skill-search to ~/.pi/agent/skills/
34
44
  src/
45
+ scanner.ts ← findCorpusPath() + scanSkillDirectory()
35
46
  types.ts ← PiSkill, SkillEntry, SearchResult, SkillIndex
36
47
  text.ts ← Tokenizer (SPEC §5.3)
37
48
  synonyms.ts ← Synonym dictionary + expandQuery
@@ -41,19 +52,22 @@ src/
41
52
  strip.ts ← Regex strip <available_skills>
42
53
  format.ts ← Category summary + result formatting
43
54
  proactive.ts ← Python package detection (Phase 10, opt-in)
55
+ data/ ← 284 skills corpus for search (not discovered by Pi)
44
56
  test/
45
57
  text.test.ts ← 12 tests
46
58
  synonyms.test.ts ← 8 tests
47
59
  classify.test.ts ← 8 tests
48
60
  indexer.test.ts ← 12 tests
49
61
  search.test.ts ← 11 tests
50
- format.test.ts ← 12 tests
62
+ format.test.ts ← 12 tests
51
63
  strip.test.ts ← 6 tests
52
64
  lifecycle.test.ts ← 15 tests
53
- integration.test.ts ← 8 tests (258-skill corpus)
65
+ integration.test.ts ← 8 tests (284-skill corpus)
54
66
  failure-isolation.test.ts ← 3 tests
55
67
  coverage.test.ts ← 3 tests (classifier coverage)
56
68
  proactive.test.ts ← 9 tests
69
+ scanner.test.ts ← 7 tests
70
+ search-quality.test.ts ← 10 tests
57
71
  ```
58
72
 
59
73
  ## Tool: `skill-search`
@@ -61,37 +75,28 @@ test/
61
75
  | Parameter | Type | Required | Description |
62
76
  |-----------|------|----------|-------------|
63
77
  | `query` | string | ✅ | Search query (1–500 chars) |
64
- | `limit` | number | ❌ | Max results (120, default 5) |
78
+ | `limit` | number | ❌ | Max results (1-20, default 5) |
65
79
 
66
80
  Returns formatted skill descriptions with name, description, category, and file path.
67
81
 
68
- ## Configuration
82
+ ## How It Works
69
83
 
70
- No configuration needed the extension auto-indexes skills from Pi's `systemPromptOptions.skills` on the first `before_agent_start` event.
84
+ 1. **At session start**: Extension scans `data/` (284 skills) and builds a search index
85
+ 2. **On `before_agent_start`**: Strips `<available_skills>` block, injects category summary, registers `skill-search` tool
86
+ 3. **On `skill-search` call**: Returns top matching skills with path for `read` tool
71
87
 
72
- ## Bundled Skills (`skills/`)
88
+ ## Configuration
73
89
 
74
- The extension ships with **25 bundled skills** covering 14 scientific domains. These live in `skills/` and are scanned by the extension directly — Pi does **not** discover them at startup.
90
+ No configuration needed the extension auto-indexes skills from `data/` on startup.
75
91
 
76
- | Category | Skills |
77
- |---|---|
78
- | Cheminformatics & Drug Discovery | rdkit |
79
- | Bioinformatics & Genomics | scanpy, biopython, huggingface, openephys, rdkit |
80
- | Machine Learning & AI | pytorch, huggingface, xgboost, xgboost-ts |
81
- | Clinical & Medical | clinical-trial, pubmed-search |
82
- | Physics & Quantum | astropy |
83
- | Databases & Data Sources | sqlite-pandas, fastapi, pyspark, pubmed-search |
84
- | Data Analysis & Visualization | matplotlib, statsmodels, xgboost-ts, nilearn, pyspark |
85
- | Scientific Writing & Communication | matplotlib, pubmed-search, research-reproducibility |
86
- | Geospatial & Remote Sensing | landsat, astropy, matplotlib |
87
- | Lab Automation & Integration | docker-sandbox, celery-pipeline |
88
- | Time Series & Forecasting | statsmodels, xgboost-ts, openephys |
89
- | Materials Science & Engineering | pymatgen |
90
- | Research Methodology | research-reproducibility, statsmodels |
91
- | Integration Platforms | rdflib, markitdown-docs, sqlite-pandas |
92
- | Meta | skill-search (this tool usage guide) |
92
+ ## Design Decisions
93
93
 
94
- To add new skills: create `skills/<name>/SKILL.md` with YAML frontmatter (`name`, `description`). The extension picks them up automatically.
94
+ | Decision | Rationale |
95
+ |----------|-----------|
96
+ | Skills in `data/` not `skills/` | Pi would discover them and inject-all again |
97
+ | skill-search in `~/.pi/agent/skills/` | Pi discovers skills here, not in extension dirs |
98
+ | install.mjs for skill setup | pi install doesn't auto-discover extension skills |
95
99
 
96
100
  ## License
97
- MIT
101
+
102
+ MIT