pi-skill-search 0.1.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 (299) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/LICENSE +21 -0
  3. package/README.md +97 -0
  4. package/index.ts +163 -0
  5. package/package.json +48 -0
  6. package/skills/adaptyv/SKILL.md +92 -0
  7. package/skills/add-community-extension/SKILL.md +85 -0
  8. package/skills/aeon/SKILL.md +111 -0
  9. package/skills/ai-slop-cleaner/SKILL.md +118 -0
  10. package/skills/anndata/SKILL.md +83 -0
  11. package/skills/arboreto/SKILL.md +107 -0
  12. package/skills/ask/SKILL.md +55 -0
  13. package/skills/astropy/SKILL.md +30 -0
  14. package/skills/async-worker-recovery/SKILL.md +44 -0
  15. package/skills/autopilot/SKILL.md +63 -0
  16. package/skills/autoresearch/SKILL.md +64 -0
  17. package/skills/autoskill/SKILL.md +116 -0
  18. package/skills/babysit/SKILL.md +43 -0
  19. package/skills/benchling-integration/SKILL.md +106 -0
  20. package/skills/bgpt-paper-search/SKILL.md +67 -0
  21. package/skills/biopython/SKILL.md +29 -0
  22. package/skills/bioservices/SKILL.md +96 -0
  23. package/skills/brainstorming/SKILL.md +104 -0
  24. package/skills/cancel/SKILL.md +85 -0
  25. package/skills/ccg/SKILL.md +87 -0
  26. package/skills/celery-pipeline/SKILL.md +30 -0
  27. package/skills/cellxgene-census/SKILL.md +104 -0
  28. package/skills/child-pi-spawning/SKILL.md +85 -0
  29. package/skills/cirq/SKILL.md +113 -0
  30. package/skills/citation-management/SKILL.md +91 -0
  31. package/skills/clinical-decision-support/SKILL.md +117 -0
  32. package/skills/clinical-reports/SKILL.md +118 -0
  33. package/skills/clinical-trial/SKILL.md +28 -0
  34. package/skills/cobrapy/SKILL.md +116 -0
  35. package/skills/configure-notifications/SKILL.md +85 -0
  36. package/skills/consciousness-council/SKILL.md +120 -0
  37. package/skills/context-artifact-hygiene/SKILL.md +85 -0
  38. package/skills/context-mode-ops/SKILL.md +87 -0
  39. package/skills/dask/SKILL.md +85 -0
  40. package/skills/database-lookup/SKILL.md +118 -0
  41. package/skills/datamol/SKILL.md +108 -0
  42. package/skills/debug/SKILL.md +32 -0
  43. package/skills/deep-dive/SKILL.md +114 -0
  44. package/skills/deep-interview/SKILL.md +90 -0
  45. package/skills/deepchem/SKILL.md +117 -0
  46. package/skills/deepinit/SKILL.md +100 -0
  47. package/skills/deeptools/SKILL.md +118 -0
  48. package/skills/delegation-patterns/SKILL.md +56 -0
  49. package/skills/depmap/SKILL.md +94 -0
  50. package/skills/dhdna-profiler/SKILL.md +86 -0
  51. package/skills/diffdock/SKILL.md +101 -0
  52. package/skills/dispatching-parallel-agents/SKILL.md +119 -0
  53. package/skills/dnanexus-integration/SKILL.md +118 -0
  54. package/skills/do/SKILL.md +48 -0
  55. package/skills/docker-sandbox/SKILL.md +29 -0
  56. package/skills/docx/SKILL.md +119 -0
  57. package/skills/esm/SKILL.md +116 -0
  58. package/skills/etetoolkit/SKILL.md +103 -0
  59. package/skills/event-log-tracing/SKILL.md +85 -0
  60. package/skills/exa-search/SKILL.md +72 -0
  61. package/skills/executing-plans/SKILL.md +69 -0
  62. package/skills/exploratory-data-analysis/SKILL.md +118 -0
  63. package/skills/external-context/SKILL.md +80 -0
  64. package/skills/fastapi/SKILL.md +30 -0
  65. package/skills/finishing-a-development-branch/SKILL.md +106 -0
  66. package/skills/flowio/SKILL.md +114 -0
  67. package/skills/fluidsim/SKILL.md +108 -0
  68. package/skills/generate-image/SKILL.md +108 -0
  69. package/skills/geniml/SKILL.md +117 -0
  70. package/skills/geomaster/SKILL.md +109 -0
  71. package/skills/geopandas/SKILL.md +114 -0
  72. package/skills/get-available-resources/SKILL.md +100 -0
  73. package/skills/gget/SKILL.md +111 -0
  74. package/skills/ginkgo-cloud-lab/SKILL.md +52 -0
  75. package/skills/git-master/SKILL.md +85 -0
  76. package/skills/glycoengineering/SKILL.md +104 -0
  77. package/skills/gtars/SKILL.md +104 -0
  78. package/skills/hackernews-frontpage/SKILL.md +46 -0
  79. package/skills/histolab/SKILL.md +98 -0
  80. package/skills/how-it-works/SKILL.md +25 -0
  81. package/skills/hud/SKILL.md +86 -0
  82. package/skills/hugging-science/SKILL.md +93 -0
  83. package/skills/huggingface/SKILL.md +30 -0
  84. package/skills/hypogenic/SKILL.md +107 -0
  85. package/skills/hypothesis-generation/SKILL.md +118 -0
  86. package/skills/imaging-data-commons/SKILL.md +119 -0
  87. package/skills/infographics/SKILL.md +102 -0
  88. package/skills/iso-13485-certification/SKILL.md +114 -0
  89. package/skills/knowledge-agent/SKILL.md +83 -0
  90. package/skills/labarchive-integration/SKILL.md +98 -0
  91. package/skills/lamindb/SKILL.md +119 -0
  92. package/skills/landsat/SKILL.md +29 -0
  93. package/skills/latchbio-integration/SKILL.md +118 -0
  94. package/skills/latex-posters/SKILL.md +112 -0
  95. package/skills/learn-codebase/SKILL.md +24 -0
  96. package/skills/learner/SKILL.md +118 -0
  97. package/skills/literature-review/SKILL.md +118 -0
  98. package/skills/live-agent-lifecycle/SKILL.md +85 -0
  99. package/skills/mailbox-interactive/SKILL.md +85 -0
  100. package/skills/make-plan/SKILL.md +59 -0
  101. package/skills/markdown-mermaid-writing/SKILL.md +118 -0
  102. package/skills/market-research-reports/SKILL.md +119 -0
  103. package/skills/markitdown/SKILL.md +111 -0
  104. package/skills/markitdown-docs/SKILL.md +28 -0
  105. package/skills/matchms/SKILL.md +91 -0
  106. package/skills/matlab/SKILL.md +118 -0
  107. package/skills/matplotlib/SKILL.md +30 -0
  108. package/skills/mcp-setup/SKILL.md +84 -0
  109. package/skills/medchem/SKILL.md +109 -0
  110. package/skills/mem-search/SKILL.md +96 -0
  111. package/skills/modal/SKILL.md +104 -0
  112. package/skills/model-routing-context/SKILL.md +85 -0
  113. package/skills/molecular-dynamics/SKILL.md +116 -0
  114. package/skills/molfeat/SKILL.md +110 -0
  115. package/skills/multi-perspective-review/SKILL.md +85 -0
  116. package/skills/networkx/SKILL.md +111 -0
  117. package/skills/neurokit2/SKILL.md +114 -0
  118. package/skills/neuropixels-analysis/SKILL.md +112 -0
  119. package/skills/nilearn/SKILL.md +29 -0
  120. package/skills/observability-reliability/SKILL.md +43 -0
  121. package/skills/omc-doctor/SKILL.md +86 -0
  122. package/skills/omc-reference/SKILL.md +119 -0
  123. package/skills/omc-setup/SKILL.md +82 -0
  124. package/skills/omc-teams/SKILL.md +81 -0
  125. package/skills/omero-integration/SKILL.md +111 -0
  126. package/skills/open-notebook/SKILL.md +100 -0
  127. package/skills/openephys/SKILL.md +28 -0
  128. package/skills/opentrons-integration/SKILL.md +110 -0
  129. package/skills/optimize-for-gpu/SKILL.md +119 -0
  130. package/skills/orchestration/SKILL.md +85 -0
  131. package/skills/ownership-session-security/SKILL.md +43 -0
  132. package/skills/paper-lookup/SKILL.md +119 -0
  133. package/skills/paperzilla/SKILL.md +114 -0
  134. package/skills/parallel-web/SKILL.md +64 -0
  135. package/skills/pathfinder/SKILL.md +114 -0
  136. package/skills/pathml/SKILL.md +98 -0
  137. package/skills/pdf/SKILL.md +113 -0
  138. package/skills/peer-review/SKILL.md +119 -0
  139. package/skills/pennylane/SKILL.md +119 -0
  140. package/skills/phylogenetics/SKILL.md +102 -0
  141. package/skills/pi-extension-lifecycle/SKILL.md +41 -0
  142. package/skills/plan/SKILL.md +66 -0
  143. package/skills/polars/SKILL.md +114 -0
  144. package/skills/polars-bio/SKILL.md +84 -0
  145. package/skills/pptx/SKILL.md +118 -0
  146. package/skills/pptx-posters/SKILL.md +112 -0
  147. package/skills/primekg/SKILL.md +97 -0
  148. package/skills/project-session-manager/SKILL.md +85 -0
  149. package/skills/protocolsio-integration/SKILL.md +119 -0
  150. package/skills/pubmed-search/SKILL.md +29 -0
  151. package/skills/pufferlib/SKILL.md +103 -0
  152. package/skills/pydeseq2/SKILL.md +106 -0
  153. package/skills/pydicom/SKILL.md +115 -0
  154. package/skills/pyhealth/SKILL.md +117 -0
  155. package/skills/pylabrobot/SKILL.md +100 -0
  156. package/skills/pymatgen/SKILL.md +28 -0
  157. package/skills/pymc/SKILL.md +108 -0
  158. package/skills/pymoo/SKILL.md +90 -0
  159. package/skills/pyopenms/SKILL.md +119 -0
  160. package/skills/pysam/SKILL.md +118 -0
  161. package/skills/pyspark/SKILL.md +30 -0
  162. package/skills/pytdc/SKILL.md +102 -0
  163. package/skills/pytorch/SKILL.md +31 -0
  164. package/skills/pytorch-lightning/SKILL.md +119 -0
  165. package/skills/pyzotero/SKILL.md +104 -0
  166. package/skills/qiskit/SKILL.md +119 -0
  167. package/skills/qutip/SKILL.md +111 -0
  168. package/skills/ralph/SKILL.md +23 -0
  169. package/skills/ralplan/SKILL.md +105 -0
  170. package/skills/rdflib/SKILL.md +29 -0
  171. package/skills/rdkit/SKILL.md +30 -0
  172. package/skills/read-only-explorer/SKILL.md +85 -0
  173. package/skills/receiving-code-review/SKILL.md +103 -0
  174. package/skills/release/SKILL.md +117 -0
  175. package/skills/remember/SKILL.md +39 -0
  176. package/skills/requesting-code-review/SKILL.md +85 -0
  177. package/skills/requirements-to-task-packet/SKILL.md +65 -0
  178. package/skills/research-grants/SKILL.md +118 -0
  179. package/skills/research-lookup/SKILL.md +117 -0
  180. package/skills/research-reproducibility/SKILL.md +28 -0
  181. package/skills/resource-discovery-config/SKILL.md +43 -0
  182. package/skills/rowan/SKILL.md +100 -0
  183. package/skills/runtime-state-reader/SKILL.md +46 -0
  184. package/skills/safe-bash/SKILL.md +85 -0
  185. package/skills/scanpy/SKILL.md +32 -0
  186. package/skills/scholar-evaluation/SKILL.md +115 -0
  187. package/skills/scientific-brainstorming/SKILL.md +118 -0
  188. package/skills/scientific-critical-thinking/SKILL.md +119 -0
  189. package/skills/scientific-schematics/SKILL.md +116 -0
  190. package/skills/scientific-slides/SKILL.md +117 -0
  191. package/skills/scientific-visualization/SKILL.md +109 -0
  192. package/skills/scientific-writing/SKILL.md +119 -0
  193. package/skills/scikit-bio/SKILL.md +92 -0
  194. package/skills/scikit-learn/SKILL.md +99 -0
  195. package/skills/scikit-survival/SKILL.md +110 -0
  196. package/skills/sciomc/SKILL.md +86 -0
  197. package/skills/scvelo/SKILL.md +106 -0
  198. package/skills/scvi-tools/SKILL.md +114 -0
  199. package/skills/seaborn/SKILL.md +97 -0
  200. package/skills/secure-agent-orchestration-review/SKILL.md +47 -0
  201. package/skills/self-improve/SKILL.md +119 -0
  202. package/skills/semantic-compression/SKILL.md +62 -0
  203. package/skills/setup/SKILL.md +42 -0
  204. package/skills/shap/SKILL.md +103 -0
  205. package/skills/simpy/SKILL.md +116 -0
  206. package/skills/skill/SKILL.md +117 -0
  207. package/skills/skill-search/SKILL.md +67 -0
  208. package/skills/skillify/SKILL.md +46 -0
  209. package/skills/smart-explore/SKILL.md +94 -0
  210. package/skills/sqlite-pandas/SKILL.md +30 -0
  211. package/skills/stable-baselines3/SKILL.md +86 -0
  212. package/skills/state-mutation-locking/SKILL.md +44 -0
  213. package/skills/statistical-analysis/SKILL.md +108 -0
  214. package/skills/statsmodels/SKILL.md +29 -0
  215. package/skills/subagent-driven-development/SKILL.md +89 -0
  216. package/skills/sympy/SKILL.md +115 -0
  217. package/skills/system-prompts/SKILL.md +116 -0
  218. package/skills/systematic-debugging/SKILL.md +119 -0
  219. package/skills/team/SKILL.md +85 -0
  220. package/skills/test-driven-development/SKILL.md +84 -0
  221. package/skills/tiledbvcf/SKILL.md +119 -0
  222. package/skills/timeline-report/SKILL.md +85 -0
  223. package/skills/timesfm-forecasting/SKILL.md +112 -0
  224. package/skills/torch-geometric/SKILL.md +118 -0
  225. package/skills/torchdrug/SKILL.md +118 -0
  226. package/skills/trace/SKILL.md +118 -0
  227. package/skills/transformers/SKILL.md +110 -0
  228. package/skills/treatment-plans/SKILL.md +119 -0
  229. package/skills/ui-render-performance/SKILL.md +41 -0
  230. package/skills/ultragoal/SKILL.md +63 -0
  231. package/skills/ultraqa/SKILL.md +85 -0
  232. package/skills/ultrawork/SKILL.md +20 -0
  233. package/skills/umap-learn/SKILL.md +119 -0
  234. package/skills/usfiscaldata/SKILL.md +118 -0
  235. package/skills/using-git-worktrees/SKILL.md +112 -0
  236. package/skills/using-superpowers/SKILL.md +85 -0
  237. package/skills/using-vetc/SKILL.md +92 -0
  238. package/skills/vaex/SKILL.md +111 -0
  239. package/skills/venue-templates/SKILL.md +113 -0
  240. package/skills/verification-before-completion/SKILL.md +88 -0
  241. package/skills/verification-before-done/SKILL.md +68 -0
  242. package/skills/verify/SKILL.md +33 -0
  243. package/skills/version-bump/SKILL.md +54 -0
  244. package/skills/vetc-analyze-ba/SKILL.md +117 -0
  245. package/skills/vetc-analyze-codebase/SKILL.md +118 -0
  246. package/skills/vetc-api-design/SKILL.md +103 -0
  247. package/skills/vetc-brainstorming/SKILL.md +116 -0
  248. package/skills/vetc-change-proposal/SKILL.md +111 -0
  249. package/skills/vetc-cicd/SKILL.md +113 -0
  250. package/skills/vetc-continuous-learning/SKILL.md +115 -0
  251. package/skills/vetc-deep-interview/SKILL.md +103 -0
  252. package/skills/vetc-docgen/SKILL.md +108 -0
  253. package/skills/vetc-frontend-patterns/SKILL.md +99 -0
  254. package/skills/vetc-iterative-retrieval/SKILL.md +110 -0
  255. package/skills/vetc-java-patterns/SKILL.md +113 -0
  256. package/skills/vetc-meta-skill-creator/SKILL.md +99 -0
  257. package/skills/vetc-oracle-patterns/SKILL.md +109 -0
  258. package/skills/vetc-performance-testing/SKILL.md +104 -0
  259. package/skills/vetc-pr-response/SKILL.md +106 -0
  260. package/skills/vetc-ralph/SKILL.md +108 -0
  261. package/skills/vetc-ralplan/SKILL.md +116 -0
  262. package/skills/vetc-receiving-review/SKILL.md +106 -0
  263. package/skills/vetc-reconcile-patterns/SKILL.md +117 -0
  264. package/skills/vetc-refactoring/SKILL.md +96 -0
  265. package/skills/vetc-runbook/SKILL.md +118 -0
  266. package/skills/vetc-sast/SKILL.md +118 -0
  267. package/skills/vetc-sdlc/SKILL.md +97 -0
  268. package/skills/vetc-security/SKILL.md +117 -0
  269. package/skills/vetc-spec-driven/SKILL.md +111 -0
  270. package/skills/vetc-spec-quality/SKILL.md +117 -0
  271. package/skills/vetc-systematic-debugging/SKILL.md +74 -0
  272. package/skills/vetc-tdd/SKILL.md +96 -0
  273. package/skills/vetc-thinking-pm/SKILL.md +110 -0
  274. package/skills/vetc-ui-visual-qa/SKILL.md +117 -0
  275. package/skills/vetc-verify/SKILL.md +101 -0
  276. package/skills/visual-verdict/SKILL.md +59 -0
  277. package/skills/what-if-oracle/SKILL.md +87 -0
  278. package/skills/widget-rendering/SKILL.md +85 -0
  279. package/skills/wiki/SKILL.md +69 -0
  280. package/skills/workspace-isolation/SKILL.md +85 -0
  281. package/skills/worktree-isolation/SKILL.md +85 -0
  282. package/skills/wowerpoint/SKILL.md +101 -0
  283. package/skills/writer-memory/SKILL.md +82 -0
  284. package/skills/writing-plans/SKILL.md +115 -0
  285. package/skills/writing-skills/SKILL.md +115 -0
  286. package/skills/xgboost/SKILL.md +29 -0
  287. package/skills/xgboost-ts/SKILL.md +28 -0
  288. package/skills/xlsx/SKILL.md +111 -0
  289. package/skills/zarr-python/SKILL.md +101 -0
  290. package/src/categories.ts +383 -0
  291. package/src/format.ts +104 -0
  292. package/src/indexer.ts +101 -0
  293. package/src/proactive.ts +51 -0
  294. package/src/scanner.ts +85 -0
  295. package/src/search.ts +89 -0
  296. package/src/strip.ts +29 -0
  297. package/src/synonyms.ts +83 -0
  298. package/src/text.ts +118 -0
  299. package/src/types.ts +64 -0
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: vetc-verify
3
+ description: PROACTIVELY verify feature hoàn thành — build, test, coverage, security, API contract. Dùng sau vetc-ralph hoặc sau khi implement xong, trước khi ship.
4
+ ---
5
+
6
+ # VETC Verify — End-to-End Verification
7
+
8
+ Verify toàn diện sau khi implement. Không edit code — chỉ report pass/fail.
9
+
10
+
11
+
12
+ ## When to Activate
13
+
14
+ - Sau khi implement xong (manual hoặc vetc-ralph)
15
+ - Trước khi mở PR hoặc merge
16
+ - Sau deslop pass, cần final check
17
+ - User nói: "verify", "kiểm tra", "chạy full check"
18
+
19
+ ## Do NOT Activate When
20
+
21
+ - Đang implement code (chưa đến phase verify) → dùng implementation skills
22
+ - Build đang fail → fix build trước với `vetc-build-resolver`
23
+ - Chỉ cần code review, không cần full verification pipeline → dùng `vetc-review`
24
+ - Đang debug lỗi cụ thể → dùng `vetc-systematic-debugging`
25
+
26
+ ## Rationalization Prevention
27
+
28
+ | Thought | Reality |
29
+ |---------|---------|
30
+ | "The build was fine yesterday" | Yesterday is not now. Run it again. |
31
+ | "I only changed a comment, no need to verify" | Verify is cheap. Regressions are expensive. |
32
+ | "Coverage is probably still above 80%" | "Probably" is not evidence. Run the coverage report. |
33
+ | "The CI will catch it" | CI catches it AFTER merge. You catch it BEFORE. |
34
+ | "I ran the tests locally already" | Were they ALL the tests? Was it a clean build? |
35
+ | "Security scan takes too long" | A vulnerability in production takes longer. |
36
+ | "The API contract hasn't changed" | Prove it. Compare the actual response with the spec. |
37
+
38
+ ## Common Verification Failures
39
+
40
+ | Failure Pattern | Root Cause | Prevention |
41
+ |----------------|------------|------------|
42
+ | Tests pass locally, fail in CI | Dirty build, missing `mvn clean` | Always verify with clean build |
43
+ | Coverage drops silently | New code without tests | Check coverage after every change |
44
+ | Security scan finds what you missed | You didn't scan yourself | Run security quick scan before PR |
45
+ | API contract drift | Spec not updated with code changes | Compare actual response with spec |
46
+ | Debug statements left in code | Forgot to clean up | Gate 6 catches these |
47
+
48
+ ## Verification Pipeline
49
+
50
+ ### Gate 0 — Cross-Artifact Consistency (Optional)
51
+
52
+ Chỉ chạy khi có spec files trong `specs/{NNN}-{slug}/`. READ-ONLY analysis — không edit.
53
+
54
+ **6 Detection Passes:**
55
+
56
+ | Pass | What It Detects | Severity Range |
57
+ |------|-----------------|----------------|
58
+ | Duplication | Same requirement stated in multiple places | MEDIUM |
59
+ | Ambiguity | Vague or unclear requirements | HIGH |
60
+ | Underspecification | Missing details, incomplete requirements | HIGH |
61
+ | Principle Alignment | Violations of core principles (security-first, spec-first) | CRITICAL |
62
+ | Coverage Gaps | Requirements without tasks, tasks without requirements | CRITICAL |
63
+ | Inconsistency | Contradictions between spec, plan, tasks | CRITICAL |
64
+
65
+
66
+ ## Artifact Consistency
67
+ | Pass | Findings | Max Severity |
68
+ |------|----------|--------------|
69
+ | Duplication | 0 | — |
70
+ | Ambiguity | 1 | HIGH |
71
+ | Underspecification | 2 | HIGH |
72
+ | Principle Alignment | 0 | — |
73
+ | Coverage Gaps | 1 | CRITICAL |
74
+ | Inconsistency | 0 | — |
75
+ | **Total** | **4** | **CRITICAL** |
76
+ ```
77
+
78
+ ### Gate 1 — Build
79
+
80
+ ```bash
81
+ # Backend
82
+ mvn clean compile -q
83
+
84
+ # Frontend
85
+ npm run build
86
+ ```
87
+
88
+ **Result**: PASS (0 errors) / FAIL (list errors)
89
+
90
+ ### Gate 2 — Tests
91
+
92
+ ```bash
93
+ # Backend — targeted
94
+ mvn test -Dtest=XxxServiceImplTest -q
95
+
96
+ # Backend — full module
97
+ mvn test -pl <module> -q
98
+
99
+ # Frontend
100
+
101
+
@@ -0,0 +1,59 @@
1
+ ---
2
+ name: visual-verdict
3
+ description: Structured visual QA verdict for screenshot-to-reference comparisons
4
+ ---
5
+
6
+ - `reference_images[]` (one or more image paths)
7
+ - `generated_screenshot` (current output image)
8
+ - Optional: `category_hint` (e.g., `hackernews`, `sns-feed`, `dashboard`)
9
+
10
+ Return **JSON only** with this exact shape:
11
+
12
+ ```json
13
+ {
14
+ "score": 0,
15
+ "verdict": "revise",
16
+ "category_match": false,
17
+ "differences": ["..."],
18
+ "suggestions": ["..."],
19
+ "reasoning": "short explanation"
20
+ }
21
+ ```
22
+
23
+ Rules:
24
+ - `score`: integer 0-100
25
+ - `verdict`: short status (`pass`, `revise`, or `fail`)
26
+ - `category_match`: `true` when the generated screenshot matches the intended UI category/style
27
+ - `differences[]`: concrete visual mismatches (layout, spacing, typography, colors, hierarchy)
28
+ - `suggestions[]`: actionable next edits tied to the differences
29
+ - `reasoning`: 1-2 sentence summary
30
+
31
+ - Target pass threshold is **90+**.
32
+ - If `score < 90`, continue editing and rerun `visual-verdict` before any further visual review pass.
33
+ - Do **not** treat the visual task as complete until the next screenshot clears the threshold.
34
+
35
+ When mismatch diagnosis is hard:
36
+ 1. Keep `$visual-verdict` as the authoritative decision.
37
+ 2. Use pixel-level diff tooling (pixel diff / pixelmatch overlay) as a **secondary debug aid** to localize hotspots.
38
+ 3. Convert pixel diff hotspots into concrete `differences[]` and `suggestions[]` updates.
39
+
40
+ ```json
41
+ {
42
+ "score": 87,
43
+ "verdict": "revise",
44
+ "category_match": true,
45
+ "differences": [
46
+ "Top nav spacing is tighter than reference",
47
+ "Primary button uses smaller font weight"
48
+ ],
49
+ "suggestions": [
50
+ "Increase nav item horizontal padding by 4px",
51
+ "Set primary button font-weight to 600"
52
+ ],
53
+ "reasoning": "Core layout matches, but style details still diverge."
54
+ }
55
+ ```
56
+
57
+ Task: {{ARGUMENTS}}
58
+
59
+
@@ -0,0 +1,87 @@
1
+ ---
2
+ name: what-if-oracle
3
+ description: Run structured What-If scenario analysis with multi-branch possibility exploration. Use this skill when the user asks speculative questions like "what if...", "what would happen if...", "what are the possibilities", "explore scenarios", "scenario analysis", "possibility space", "what could go wrong", "best case / worst case", "risk analysis", "contingency planning", "strategic options", or any question about uncertain futures. Also trigger when the user faces a fork-in-the-road decision, wants to stress-test an idea, or needs to think through consequences before committing.
4
+ ---
5
+
6
+ # What-If Oracle — Possibility Space Explorer
7
+
8
+ A structured system for exploring uncertain futures through rigorous multi-branch scenario analysis. Instead of one prediction, the Oracle maps the full **possibility space** — branching timelines where each path has its own logic, probability, and consequences.
9
+
10
+ Based on the What-If Statement paradigm: the idea that speculative questions ("What if X?") are not idle daydreaming but a **fundamental computing operation** — the mind's way of simulating futures before committing resources to one.
11
+
12
+ Published research: [The What-If Statement (DOI: 10.5281/zenodo.18736841)](https://doi.org/10.5281/zenodo.18736841) | [IDNA Consolidation v2 (DOI: 10.5281/zenodo.18807387)](https://doi.org/10.5281/zenodo.18807387)
13
+
14
+ ## Core Principle: 0·IF·1
15
+
16
+ Every scenario analysis has three elements:
17
+
18
+ - **0** — The unexpressed state (what hasn't happened yet, the potential)
19
+ - **1** — The expressed state (what IS, the current reality)
20
+ - **IF** — The conditional bond (the decision, event, or change that transforms 0 into 1)
21
+
22
+ The quality of the analysis depends on the precision of the IF. A vague "what if things go wrong?" produces vague results. A precise "what if our primary supplier raises prices 30% in Q3?" produces actionable intelligence.
23
+
24
+ ## How to Run the Oracle
25
+
26
+ ### Phase 1 — Frame the Question
27
+
28
+ Take the user's What-If question and sharpen it:
29
+
30
+ **Decompose into components:**
31
+
32
+ - **The Variable:** What specific thing changes? (one variable per analysis)
33
+ - **The Magnitude:** By how much? (quantify if possible)
34
+ - **The Timeframe:** Over what period?
35
+ - **The Context:** What's the current state before the change?
36
+
37
+ **If the question is vague, sharpen it:**
38
+
39
+ - "What if AI takes over?" → "What if 40% of current knowledge-work tasks are automated by AI within 3 years in [specific industry]?"
40
+ - "What if we fail?" → "What if monthly revenue stays below $5K for 6 consecutive months starting now?"
41
+
42
+ Present the sharpened question to the user for confirmation before proceeding.
43
+
44
+ ### Phase 2 — Map the Possibility Space
45
+
46
+ Generate **4-6 scenario branches** using this framework:
47
+
48
+ | Branch | Definition | Purpose |
49
+ | ------------------ | ---------------------------------------------------------------------------- | -------------------------------------------------- |
50
+ | **Ω Best Case** | Everything goes right. Key assumptions all validate. Lucky breaks occur. | Define the ceiling — what's the maximum upside? |
51
+ | **α Likely Case** | Most probable path given current evidence. No major surprises. | Anchor expectations in reality |
52
+ | **Δ Worst Case** | Key assumptions fail. Two things go wrong simultaneously. | Define the floor — what's the maximum downside? |
53
+ | **Ψ Wild Card** | An unexpected variable enters that nobody is tracking. Black swan territory. | Stress-test for the unimaginable |
54
+ | **Φ Contrarian** | The opposite of the consensus view turns out to be true. | Challenge groupthink and reveal hidden assumptions |
55
+ | **∞ Second Order** | The first-order effects trigger cascading consequences nobody predicted. | Map the ripple effects |
56
+
57
+ ### Phase 3 — Analyze Each Branch
58
+
59
+ For each scenario branch, provide:
60
+
61
+ ```
62
+ ╔══════════════════════════════════════════════╗
63
+ ║ BRANCH: [Ω/α/Δ/Ψ/Φ/∞] — [Branch Name] ║
64
+ ╠══════════════════════════════════════════════╣
65
+ ║ Probability: [X%] ║
66
+ ║ Timeframe: [When this could materialize] ║
67
+ ║ Confidence: [HIGH/MEDIUM/LOW] ║
68
+ ╠══════════════════════════════════════════════╣
69
+ ║ NARRATIVE: ║
70
+ ║ [2-3 sentences describing how this ║
71
+ ║ scenario unfolds step by step] ║
72
+
73
+ ### Phase 4 — Synthesis
74
+
75
+ After analyzing all branches, provide:
76
+
77
+ **Probability Distribution:**
78
+
79
+ ```
80
+ Ω Best Case ····· [██████░░░░] 15%
81
+ α Likely Case ··· [████████░░] 45%
82
+ Δ Worst Case ···· [██████░░░░] 20%
83
+ Ψ Wild Card ····· [███░░░░░░░] 8%
84
+ Φ Contrarian ···· [████░░░░░░] 7%
85
+ ∞ Second Order ·· [███░░░░░░░] 5%
86
+
87
+
@@ -0,0 +1,85 @@
1
+ ---
2
+ name: widget-rendering
3
+ description: Pi TUI crew widget data sources, display priority, and rendering performance. Use when debugging empty agents, ghost runs, or widget timing issues.
4
+ ---
5
+
6
+
7
+ # widget-rendering
8
+
9
+ The crew widget (`src/ui/crew-widget.ts`) displays active runs and their agents in the Pi TUI. It must render synchronously at TTY refresh rate without blocking. Understanding the data sources and timing rules is essential for debugging display issues.
10
+
11
+ ## Three Data Sources
12
+
13
+ The widget has three sources, used in priority order:
14
+
15
+ ### 1. `liveAgents` Map (real-time, highest priority)
16
+
17
+ In-memory map from `live-agent-manager.ts`. Provides:
18
+ - Real-time tool names: `activeTools` Map (toolName → description)
19
+ - Turn count, response text, compaction count
20
+ - Session stats: context %, token usage
21
+ - Status from the handle
22
+
23
+ **When used:** Agents with `liveHandle && liveHandle.status === "running"` get the live activity description (tool labels, response text, turn counter).
24
+
25
+ **When NOT used:** After `evictStaleLiveAgentHandles()` removes a handle, widget falls back to agent records on disk.
26
+
27
+ ### 2. Snapshot cache (500ms TTL)
28
+
29
+ `RunSnapshotCache` from `run-snapshot-cache.ts` caches parsed manifests and agents for 500ms. Reduces disk reads during rapid refresh.
30
+
31
+ **When used:** As the fallback when no live handle exists. Prevents excessive disk reads on every render tick.
32
+
33
+ **Invalidation:** Cache is invalidated when:
34
+ - `invalidate()` is called on a specific run
35
+ - An empty result is returned (forces refresh on next tick)
36
+ - TTL expires (500ms)
37
+
38
+ ### 3. `agents.json` on disk (durables, lowest priority)
39
+
40
+ `readCrewAgents(run)` reads `artifactsRoot/agents.json`. Provides:
41
+ - Final agent status (completed/failed/cancelled)
42
+ - Tool count, token usage from final record
43
+ - Error messages
44
+ - Timestamps (startedAt, completedAt)
45
+
46
+ **When used:** For completed agents, or when snapshot cache misses.
47
+
48
+ ---
49
+
50
+ ## Display Priority
51
+
52
+ ```
53
+ for each active run:
54
+ for each agent in run:
55
+ if liveAgents has this agent (by agentId or taskId):
56
+ → use live activity description (tool labels, response text)
57
+ → use live status (running/queued/waiting)
58
+ → use live session stats (context %, turns, tokens)
59
+ else if snapshot cache has fresh data:
60
+ → use cached agent status
61
+ → use cached tool count, tokens, progress
62
+ else:
63
+ → read agents.json from disk
64
+ → use disk agent status
65
+
66
+ if status is completed/failed/cancelled:
67
+ → apply linger rules (finishedAgents: 1min, errors: 2min)
68
+ ```
69
+
70
+ ---
71
+
72
+ ## Active Runs Filtering
73
+
74
+ `activeWidgetRuns()` determines which runs to show. Key filter: `isDisplayActiveRun(manifest, tasks)` from `process-status.ts`.
75
+
76
+ **Rule: `hasStaleAsyncProcess()`**
77
+
78
+ A run with an async PID is considered stale (hidden) if:
79
+ 1. PID is recorded but process is dead, AND
80
+ 2. The run is more than 30 minutes old (`STALE_ACTIVE_RUN_MS = 30 * 60 * 1000`)
81
+
82
+ **Rule: `isDisplayActiveRun()`**
83
+
84
+ ```typescript
85
+ export function isDisplayActiveRun(manifest: TeamRunManifest, tasks: TeamTaskState[]): boolean {
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: wiki
3
+ description: LLM Wiki — persistent markdown knowledge base that compounds across sessions (Karpathy model)
4
+ ---
5
+
6
+ # Wiki
7
+
8
+ Persistent, self-maintained markdown knowledge base for project and session knowledge. Inspired by Karpathy's LLM Wiki concept.
9
+
10
+ ## Operations
11
+
12
+ ### Ingest
13
+ Process knowledge into wiki pages. A single ingest can touch multiple pages.
14
+
15
+ ```
16
+ wiki_ingest({ title: "Auth Architecture", content: "...", tags: ["auth", "architecture"], category: "architecture" })
17
+ ```
18
+
19
+ ### Query
20
+ Search across all wiki pages by keywords and tags. Returns matching pages with snippets — YOU (the LLM) synthesize answers with citations from the results.
21
+
22
+ ```
23
+ wiki_query({ query: "authentication", tags: ["auth"], category: "architecture" })
24
+ ```
25
+
26
+ ### Lint
27
+ Run health checks on the wiki. Detects orphan pages, stale content, broken cross-references, oversized pages, and structural contradictions.
28
+
29
+ ```
30
+ wiki_lint()
31
+ ```
32
+
33
+ ### Quick Add
34
+ Add a single page quickly (simpler than ingest).
35
+
36
+ ```
37
+ wiki_add({ title: "Page Title", content: "...", tags: ["tag1"], category: "decision" })
38
+ ```
39
+
40
+ ### List / Read / Delete
41
+ ```
42
+ wiki_list() # Show all pages (reads index.md)
43
+ wiki_read({ page: "auth-architecture" }) # Read specific page
44
+ wiki_delete({ page: "outdated-page" }) # Delete a page
45
+ ```
46
+
47
+ ### Log
48
+ View wiki operation history by reading `.omc/wiki/log.md`.
49
+
50
+ ## Categories
51
+ Pages are organized by category: `architecture`, `decision`, `pattern`, `debugging`, `environment`, `session-log`
52
+
53
+ ## Storage
54
+ - Pages: `.omc/wiki/*.md` (markdown with YAML frontmatter)
55
+ - Index: `.omc/wiki/index.md` (auto-maintained catalog)
56
+ - Log: `.omc/wiki/log.md` (append-only operation chronicle)
57
+
58
+ ## Cross-References
59
+ Use `[[page-name]]` wiki-link syntax to create cross-references between pages.
60
+
61
+ ## Auto-Capture
62
+ At session end, significant discoveries are automatically captured as session-log pages. Configure via `wiki.autoCapture` in `.omc-config.json` (default: enabled).
63
+
64
+ ## Hard Constraints
65
+ - NO vector embeddings — query uses keyword + tag matching only
66
+ - Wiki pages are git-ignored by default (`.omc/wiki/` is project-local)
67
+
68
+
69
+
@@ -0,0 +1,85 @@
1
+ ---
2
+ name: workspace-isolation
3
+ description: Workspace isolation boundaries in pi-crew. Use when ensuring agents from workspace A cannot access workspace B, or when implementing worktree-based parallel execution.
4
+ ---
5
+
6
+
7
+ # workspace-isolation
8
+
9
+ pi-crew enforces workspace isolation so that agents, runs, and live sessions from one project folder cannot be accessed from another. The workspace boundary is `manifest.cwd` — the directory where a run was initiated.
10
+
11
+ ## Workspace Boundary Definition
12
+
13
+ **`manifest.cwd`** is the canonical workspace root. Every run record carries the directory where it was created.
14
+
15
+ **Why it matters:** Pi can have multiple workspace folders open simultaneously. Without isolation, an agent from workspace A could be steered/controlled from workspace B.
16
+
17
+ **Rules:**
18
+ - Every run's `manifest.cwd` is set at creation time
19
+ - Every live agent handle carries `workspaceId = manifest.cwd`
20
+ - Widget queries filter by `manifest.cwd`
21
+ - API operations reject cross-workspace access
22
+
23
+ ## Live Agent Workspace Check
24
+
25
+ `LiveAgentHandle.workspaceId` field (added to prevent cross-workspace access):
26
+
27
+ ```typescript
28
+ interface LiveAgentHandle {
29
+ // ... other fields
30
+ /** Workspace where this agent was spawned — used for session-scoped visibility. */
31
+ workspaceId: string;
32
+ }
33
+ ```
34
+
35
+ **Enforcement in `api.ts`** (team-tool operations):
36
+
37
+ ```typescript
38
+ // list-active-live-agents: filter by workspace
39
+ listActiveLiveAgentsByWorkspace(manifest.cwd);
40
+
41
+ // steer-agent, follow-up-agent, stop-agent, resume-agent:
42
+ const live = getLiveAgent(agentId);
43
+ if (live && live.workspaceId !== manifest.cwd)
44
+ return result(`Live agent '${agentId}' does not belong to workspace ${manifest.cwd}.`, { status: "error" }, true);
45
+ ```
46
+
47
+ **Enforcement in `live-agent-manager.ts`**:
48
+
49
+ ```typescript
50
+ // listLiveAgentsByWorkspace(workspaceId): filter by workspaceId
51
+ export function listLiveAgentsByWorkspace(workspaceId: string): LiveAgentHandle[] {
52
+ return listLiveAgents().filter((a) => a.workspaceId === workspaceId);
53
+ }
54
+ ```
55
+
56
+ ## Team Workspace Modes
57
+
58
+ ### `single` (default)
59
+
60
+ - All agents run in the project root (`manifest.cwd`)
61
+ - No worktree creation
62
+ - Simpler, but all workers share the same git state
63
+
64
+ ### `worktree` (parallel isolation)
65
+
66
+ - Each task (or phase) gets its own git worktree
67
+ - Worktree path: `<repo-root>/.worktrees/<runId>/<taskId>/`
68
+ - Branch name: `crew/<runId>-<taskId>` (sanitized)
69
+ - Allows parallel code-changing tasks without git conflicts
70
+
71
+ **Entry point in `team-runner.ts`:**
72
+ ```typescript
73
+ const worktree = workspaceMode === "worktree" && task.worktree !== undefined
74
+ ? { path: task.worktree.path, branch: task.worktree.branch, reused: task.worktree.reused }
75
+ : undefined;
76
+ ```
77
+
78
+ **Worktree lifecycle:**
79
+
80
+ 1. **Creation** (`prepareTaskWorkspace` in `worktree-manager.ts`):
81
+ - Check leader repo is clean (`assertCleanLeader`)
82
+ - `git worktree add <path> <branch>`
83
+ - Link `node_modules` if present
84
+ - Mark reused if already exists
85
+
@@ -0,0 +1,85 @@
1
+ ---
2
+ name: worktree-isolation
3
+ description: Conflict-safe git worktree workflow. Use when running parallel implementation workers, isolating risky edits, or cleaning up task worktrees.
4
+ ---
5
+
6
+
7
+ # worktree-isolation
8
+
9
+ Use this skill for worktree-based execution or cleanup. Git worktrees create isolated working directories that allow parallel code-changing tasks without git conflicts.
10
+
11
+ ## How Worktrees Work
12
+
13
+ A git worktree is a separate working directory linked to the same repository. It has its own:
14
+ - Working directory (different path)
15
+ - HEAD (can be on a different branch)
16
+ - Staged/unstaged changes
17
+
18
+ But it shares:
19
+ - Object database (`.git/objects`)
20
+ - Refs (branches, tags)
21
+
22
+ This means creating a worktree is cheap (no clone needed) and fast.
23
+
24
+ ## When to Use Worktrees
25
+
26
+ **Use worktree mode when:**
27
+ - Running parallel implementation workers that modify the same repo
28
+ - Isolating risky changes that might need to be discarded
29
+ - Running multiple agents on the same codebase simultaneously
30
+ - Running a long task that would block other work
31
+
32
+ **Don't use worktree mode when:**
33
+ - The task is read-only (use scaffold mode instead)
34
+ - Only one agent needs to work at a time
35
+ - The repository has uncommitted changes (must be clean)
36
+
37
+ ## Worktree Lifecycle
38
+
39
+ ### 1. Creation
40
+
41
+ **Prerequisites:**
42
+ - Leader repository must be clean (`git status` empty)
43
+ - Sufficient disk space for worktree directory
44
+
45
+ **Creation flow:**
46
+ ```
47
+ team-runner.ts (workspaceMode: "worktree")
48
+ → prepareTaskWorkspace(manifest, task)
49
+ → assertCleanLeader(repoRoot)
50
+ → git worktree add <path> <branch>
51
+ → linkNodeModulesIfPresent(repoRoot, worktreePath)
52
+ → return { cwd: worktreePath, worktreePath, branch }
53
+ ```
54
+
55
+ **Naming convention:**
56
+ - Branch: `crew/<sanitized-runId>-<sanitized-taskId>`
57
+ - Path: `.worktrees/<runId>/<taskId>/`
58
+ - Deterministic from run/task IDs — no user-controlled fragments
59
+
60
+ **Example:**
61
+ ```
62
+ Run: team_20260514092752_218fe358085d7115
63
+ Task: 01_explore
64
+
65
+ Branch: crew/team-20260514092752-218fe358085d7115/01-explore
66
+ Path: .worktrees/team-20260514092752-218fe358085d7115/01-explore/
67
+ ```
68
+
69
+ ### 2. Reuse
70
+
71
+ If a worktree with the same branch already exists, it is reused instead of recreated:
72
+
73
+ ```typescript
74
+ // Check if worktree already exists
75
+ const existing = git(cwd, ["worktree", "list", "--porcelain"]);
76
+ if (existing.includes(branch)) {
77
+ return { reused: true, worktreePath: parsePath(existing) };
78
+ }
79
+ ```
80
+
81
+ Reuse is safe when the worktree's base branch hasn't diverged (checked via `branch-freshness.ts`).
82
+
83
+ ### 3. Work in worktree
84
+
85
+ Each task works in its own worktree directory:
@@ -0,0 +1,101 @@
1
+ ---
2
+ name: wowerpoint
3
+ description: Turn one document into a kawaii NotebookLM slide-deck PDF. Use for "wowerpoint this", "make a deck about <file>", "turn this report into slides", or any request to render a single document as shareable narrative slides.
4
+ ---
5
+
6
+ # Wowerpoint
7
+
8
+ One doc in, one PDF out. Slide-deck only — videos and podcasts from the same engine are noticeably worse and out of scope; refer the user to the `notebooklm` CLI directly if they want those.
9
+
10
+ ## Triggers
11
+
12
+ - "Wowerpoint <file>"
13
+ - "Make a slide deck about <file>"
14
+ - "Turn this report into slides"
15
+ - "Kawaii-deck this"
16
+
17
+ ## Setup (one-time per machine)
18
+
19
+ If `notebooklm auth check` returns 0 and `command -v jq` resolves, skip.
20
+
21
+ ```bash
22
+ uv tool install --with playwright --force notebooklm-py
23
+ $(uv tool dir)/notebooklm-py/bin/playwright install chromium
24
+ ```
25
+
26
+ `jq` is required by the workflow's JSON parsing; install if missing (`brew install jq` on macOS, or your distro's package manager).
27
+
28
+ Then the user authenticates interactively — do not script. Tell them to type `! notebooklm login` so the OAuth ENTER lands in their terminal.
29
+
30
+ ## Workflow
31
+
32
+ ### 1. The source doc
33
+
34
+ You need exactly one source doc. If it doesn't exist or is too thin to carry a deck, **write it first** — use mem-search and sequential thinking to make it comprehensive (long-form, narrative, several thousand words is normal). Do not paper over a weak source by adding more sources.
35
+
36
+ ### 2. Auth pre-flight
37
+
38
+ ```bash
39
+ notebooklm auth check 2>&1 | tail -5
40
+ ```
41
+
42
+ Exit 1 with `Run 'notebooklm login' to authenticate.` = halt and tell the user.
43
+
44
+ ### 3. Create notebook, add the source
45
+
46
+ ```bash
47
+ NOTEBOOK_ID=$(notebooklm create "<title>" --json | jq -r .notebook.id)
48
+ SOURCE_ID=$(notebooklm source add "<doc-path>" --notebook "$NOTEBOOK_ID" --json | jq -r .source.id)
49
+ ```
50
+
51
+ Title: H1 of the source doc, or its filename stem; append a date for dated work.
52
+
53
+ JSON envelope keys differ — `create` → `.notebook.id`, `source add` → `.source.id`, `generate` → `.task_id`. Wrong key = empty string = silent downstream failure.
54
+
55
+ ### 4. Spawn the subagent
56
+
57
+ Generation takes ~10 minutes; never block on it. Use the template below with `run_in_background: true`.
58
+
59
+ ### 5. End your turn
60
+
61
+ Print the notebook URL so the user can watch live:
62
+
63
+ ```text
64
+ https://notebooklm.google.com/notebook/
65
+ ```
66
+
67
+ The subagent's completion notification fires when the file is on disk.
68
+
69
+ ## Output path
70
+
71
+ Adjacent to the source, parallel filename:
72
+
73
+ ```text
74
+ <source-dir>/<source-stem>-slides.pdf
75
+ ```
76
+
77
+ If the source isn't somewhere that makes sense as an output location, default to `reports/<stem>-slides.pdf`.
78
+
79
+ ## Share link (WOWerpoint Server)
80
+
81
+ After the PDF lands on disk, the subagent also POSTs it to the WOWerpoint Server, which converts the 16:9 deck into a 9:16 mobile twin and returns a share URL. The share URL is the primary deliverable to the user; the PDF on disk is the backup.
82
+
83
+ Required env (exported in the user's shell — the subagent inherits the parent's environment, so plain `export` is enough; no dotenv loader runs):
84
+
85
+ ```bash
86
+ WOWERPOINT_API_BASE=https://wowerpoint-api.<subdomain>.workers.dev
87
+ WOWERPOINT_VIEWER_BASE=https://wowerpoint-viewer.<subdomain>.workers.dev
88
+ WOWERPOINT_UPLOAD_TOKEN=<token>
89
+ ```
90
+
91
+ If any var is missing, skip the share-link step and just hand the PDF over.
92
+
93
+ Upload pattern (run AFTER the subagent confirms the PDF exists on disk). Capture the full response so empty `id` and `error` payloads are handled — `jq -r '.id'` returns the literal string `null` on a missing key, so always pipe through `.id // empty`:
94
+
95
+ ## The prompt
96
+
97
+ One sentence. Default:
98
+
99
+ ```text
100
+ Use kawaii characters to tell the story of <subject>. Keep it warm and clear.
101
+ ```