@r1z4x/tezgah 1.9.2 → 1.11.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 (426) hide show
  1. package/CHANGELOG.md +83 -1
  2. package/MANIFEST +382 -144
  3. package/README.de.md +1 -1
  4. package/README.es.md +1 -1
  5. package/README.fr.md +1 -1
  6. package/README.md +1 -1
  7. package/README.tr.md +1 -1
  8. package/bin/codegen +5 -2
  9. package/bin/tezgah-design +288 -1
  10. package/bin/tezgah-docs +1 -1
  11. package/bin/tezgah-doctor +39 -2
  12. package/bin/tezgah-import-ai-research +26 -12
  13. package/bin/tezgah-ocr-review +296 -0
  14. package/bin/tezgah-research +216 -40
  15. package/bin/tezgah-review-quote +185 -0
  16. package/bin/tezgah-setup +136 -33
  17. package/bin/tezgah-skill +1 -1
  18. package/bin/tezgah-status +201 -3
  19. package/bin/tezgah-task +203 -3
  20. package/commands/adhd.md +2 -2
  21. package/commands/ponytail.md +4 -4
  22. package/docs/architecture.md +2 -2
  23. package/docs/citations-baseline.json +2 -2
  24. package/docs/clarity-baseline.json +2 -2
  25. package/docs/contract.md +87 -42
  26. package/docs/environment.md +2 -0
  27. package/docs/evidence.md +28 -9
  28. package/docs/feature-audit.md +2 -2
  29. package/docs/gate.md +54 -31
  30. package/docs/glossary.md +5 -2
  31. package/docs/hosts.md +17 -3
  32. package/docs/index.json +34 -8
  33. package/docs/judge.md +4 -2
  34. package/docs/layers.md +3 -3
  35. package/docs/models.md +31 -9
  36. package/docs/operations.md +126 -1
  37. package/docs/research.md +786 -5
  38. package/docs/skills.md +137 -13
  39. package/docs/status-line.md +115 -1
  40. package/hooks/hooks.json +1 -1
  41. package/hooks/lang/en.json +10 -0
  42. package/hooks/lang/tr.json +11 -1
  43. package/hooks/tezgah_agents.py +38 -22
  44. package/hooks/tezgah_apps.py +18 -0
  45. package/hooks/tezgah_components.py +4 -0
  46. package/hooks/tezgah_context.py +189 -50
  47. package/hooks/tezgah_extension.py +337 -0
  48. package/hooks/tezgah_gate.py +188 -56
  49. package/hooks/tezgah_integrity.py +652 -105
  50. package/hooks/tezgah_judge.py +6 -4
  51. package/hooks/tezgah_models.py +59 -19
  52. package/hooks/tezgah_orca.py +1 -1
  53. package/hooks/tezgah_paths.py +102 -6
  54. package/hooks/tezgah_policy.py +94 -45
  55. package/hooks/tezgah_rank.py +9 -6
  56. package/hooks/tezgah_replay.py +4 -4
  57. package/hooks/tezgah_research.py +1260 -65
  58. package/hooks/tezgah_research_capture.py +1544 -0
  59. package/hooks/tezgah_research_evidence.py +842 -0
  60. package/hooks/tezgah_research_stats.py +258 -0
  61. package/hooks/tezgah_skill_pick.py +408 -106
  62. package/hooks/tezgah_stopspec.py +8 -1
  63. package/hooks/tezgah_task.py +12 -4
  64. package/hooks/tezgah_taste_ledger.py +1 -1
  65. package/hosts/cursor/hook.py +29 -2
  66. package/hosts/opencode/plugins/tezgah.js +307 -46
  67. package/hosts/opencode/tui/cli/tui.tsx +100 -0
  68. package/hosts/opencode/tui/tezgah-tui.tsx +2 -1
  69. package/output-styles/tezgah.md +10 -10
  70. package/package.json +1 -1
  71. package/skills/ai-research/SKILL.md +21 -14
  72. package/skills/ai-research/SOURCE +7 -5
  73. package/skills/ai-research/index/1-frame.md +6 -6
  74. package/skills/ai-research/index/2-data.md +9 -9
  75. package/skills/ai-research/index/3-train.md +36 -36
  76. package/skills/ai-research/index/4-measure.md +13 -13
  77. package/skills/ai-research/index/5-run.md +11 -11
  78. package/skills/ai-research/index/6-write.md +23 -23
  79. package/skills/ai-research/library.json +104 -104
  80. package/skills/analyze-app/SKILL.md +17 -12
  81. package/skills/design-contract/SKILL.md +42 -7
  82. package/skills/design-contract/data-views.md +2 -2
  83. package/skills/design-library/EVALS.md +1 -1
  84. package/skills/design-library/INDEX.md +39 -39
  85. package/skills/design-library/SKILL.md +19 -13
  86. package/skills/design-library/SOURCE +45 -43
  87. package/skills/feature-audit/SKILL.md +20 -14
  88. package/skills/hallmark/LICENSE +21 -0
  89. package/skills/hallmark/SKILL.md +154 -0
  90. package/skills/hallmark/SOURCE +207 -0
  91. package/skills/hallmark/agents/openai.yaml +13 -0
  92. package/skills/hallmark/references/anatomy.md +71 -0
  93. package/skills/hallmark/references/brand-truth.md +40 -0
  94. package/skills/hallmark/references/comp.md +104 -0
  95. package/skills/hallmark/references/craft.md +116 -0
  96. package/skills/hallmark/references/dark-mode.md +49 -0
  97. package/skills/hallmark/references/data-viz.md +48 -0
  98. package/skills/hallmark/references/design-md.md +53 -0
  99. package/skills/hallmark/references/direction.md +52 -0
  100. package/skills/hallmark/references/export-formats.md +80 -0
  101. package/skills/hallmark/references/flow.md +131 -0
  102. package/skills/hallmark/references/fonts.md +58 -0
  103. package/skills/hallmark/references/gates.md +243 -0
  104. package/skills/hallmark/references/genres/atmospheric.md +24 -0
  105. package/skills/hallmark/references/genres/editorial.md +24 -0
  106. package/skills/hallmark/references/genres/modern-minimal.md +24 -0
  107. package/skills/hallmark/references/genres/playful.md +24 -0
  108. package/skills/hallmark/references/imagery.md +99 -0
  109. package/skills/hallmark/references/interaction-and-states.md +89 -0
  110. package/skills/hallmark/references/layout.md +104 -0
  111. package/skills/hallmark/references/macrostructures/01-bento-grid.md +21 -0
  112. package/skills/hallmark/references/macrostructures/02-long-document.md +35 -0
  113. package/skills/hallmark/references/macrostructures/03-marquee-hero.md +21 -0
  114. package/skills/hallmark/references/macrostructures/04-stat-led.md +21 -0
  115. package/skills/hallmark/references/macrostructures/05-workbench.md +21 -0
  116. package/skills/hallmark/references/macrostructures/06-conversational-faq.md +28 -0
  117. package/skills/hallmark/references/macrostructures/07-manifesto.md +28 -0
  118. package/skills/hallmark/references/macrostructures/08-photographic.md +21 -0
  119. package/skills/hallmark/references/macrostructures/09-quote-led.md +21 -0
  120. package/skills/hallmark/references/macrostructures/10-specimen.md +21 -0
  121. package/skills/hallmark/references/macrostructures/11-catalogue.md +21 -0
  122. package/skills/hallmark/references/macrostructures/12-letter.md +21 -0
  123. package/skills/hallmark/references/macrostructures/13-index-first.md +21 -0
  124. package/skills/hallmark/references/macrostructures/14-narrative-workflow.md +21 -0
  125. package/skills/hallmark/references/macrostructures/15-split-studio.md +21 -0
  126. package/skills/hallmark/references/macrostructures/16-feature-stack.md +23 -0
  127. package/skills/hallmark/references/macrostructures/17-type-specimen.md +19 -0
  128. package/skills/hallmark/references/macrostructures/18-portfolio-grid.md +21 -0
  129. package/skills/hallmark/references/macrostructures/19-map-diagram.md +21 -0
  130. package/skills/hallmark/references/macrostructures/20-ecosystem-index.md +19 -0
  131. package/skills/hallmark/references/macrostructures/21-component-playground.md +21 -0
  132. package/skills/hallmark/references/macrostructures.md +119 -0
  133. package/skills/hallmark/references/microinteractions.md +80 -0
  134. package/skills/hallmark/references/patterns.md +202 -0
  135. package/skills/hallmark/references/redesign.md +88 -0
  136. package/skills/hallmark/references/responsive.md +46 -0
  137. package/skills/hallmark/references/review-finish.md +19 -0
  138. package/skills/hallmark/references/review-hero.md +20 -0
  139. package/skills/hallmark/references/scroll-choreography.md +110 -0
  140. package/skills/hallmark/references/texture.md +90 -0
  141. package/skills/hallmark/references/themes/README.md +58 -0
  142. package/skills/hallmark/references/themes/almanac.jpg +0 -0
  143. package/skills/hallmark/references/themes/almanac.md +103 -0
  144. package/skills/hallmark/references/themes/arcade.jpg +0 -0
  145. package/skills/hallmark/references/themes/arcade.md +102 -0
  146. package/skills/hallmark/references/themes/atelier.jpg +0 -0
  147. package/skills/hallmark/references/themes/atelier.md +98 -0
  148. package/skills/hallmark/references/themes/bloom.jpg +0 -0
  149. package/skills/hallmark/references/themes/bloom.md +102 -0
  150. package/skills/hallmark/references/themes/blueprint.jpg +0 -0
  151. package/skills/hallmark/references/themes/blueprint.md +103 -0
  152. package/skills/hallmark/references/themes/broadside.jpg +0 -0
  153. package/skills/hallmark/references/themes/broadside.md +108 -0
  154. package/skills/hallmark/references/themes/brutal.jpg +0 -0
  155. package/skills/hallmark/references/themes/brutal.md +95 -0
  156. package/skills/hallmark/references/themes/carnival.jpg +0 -0
  157. package/skills/hallmark/references/themes/carnival.md +104 -0
  158. package/skills/hallmark/references/themes/cobalt.jpg +0 -0
  159. package/skills/hallmark/references/themes/cobalt.md +101 -0
  160. package/skills/hallmark/references/themes/console.jpg +0 -0
  161. package/skills/hallmark/references/themes/console.md +99 -0
  162. package/skills/hallmark/references/themes/coral.jpg +0 -0
  163. package/skills/hallmark/references/themes/coral.md +102 -0
  164. package/skills/hallmark/references/themes/darkroom.jpg +0 -0
  165. package/skills/hallmark/references/themes/darkroom.md +99 -0
  166. package/skills/hallmark/references/themes/dose.jpg +0 -0
  167. package/skills/hallmark/references/themes/dose.md +98 -0
  168. package/skills/hallmark/references/themes/dusk.jpg +0 -0
  169. package/skills/hallmark/references/themes/dusk.md +105 -0
  170. package/skills/hallmark/references/themes/editorial.jpg +0 -0
  171. package/skills/hallmark/references/themes/editorial.md +97 -0
  172. package/skills/hallmark/references/themes/formwork.jpg +0 -0
  173. package/skills/hallmark/references/themes/formwork.md +107 -0
  174. package/skills/hallmark/references/themes/furrow.jpg +0 -0
  175. package/skills/hallmark/references/themes/furrow.md +98 -0
  176. package/skills/hallmark/references/themes/garden.jpg +0 -0
  177. package/skills/hallmark/references/themes/garden.md +97 -0
  178. package/skills/hallmark/references/themes/grid.jpg +0 -0
  179. package/skills/hallmark/references/themes/grid.md +101 -0
  180. package/skills/hallmark/references/themes/halftone.jpg +0 -0
  181. package/skills/hallmark/references/themes/halftone.md +106 -0
  182. package/skills/hallmark/references/themes/hedgerow.jpg +0 -0
  183. package/skills/hallmark/references/themes/hedgerow.md +104 -0
  184. package/skills/hallmark/references/themes/hum.jpg +0 -0
  185. package/skills/hallmark/references/themes/hum.md +99 -0
  186. package/skills/hallmark/references/themes/index.json +2191 -0
  187. package/skills/hallmark/references/themes/ink.jpg +0 -0
  188. package/skills/hallmark/references/themes/ink.md +106 -0
  189. package/skills/hallmark/references/themes/kiln.jpg +0 -0
  190. package/skills/hallmark/references/themes/kiln.md +108 -0
  191. package/skills/hallmark/references/themes/loom.jpg +0 -0
  192. package/skills/hallmark/references/themes/loom.md +106 -0
  193. package/skills/hallmark/references/themes/lumen.jpg +0 -0
  194. package/skills/hallmark/references/themes/lumen.md +103 -0
  195. package/skills/hallmark/references/themes/manifesto.jpg +0 -0
  196. package/skills/hallmark/references/themes/manifesto.md +101 -0
  197. package/skills/hallmark/references/themes/midnight.jpg +0 -0
  198. package/skills/hallmark/references/themes/midnight.md +97 -0
  199. package/skills/hallmark/references/themes/newsprint.jpg +0 -0
  200. package/skills/hallmark/references/themes/newsprint.md +102 -0
  201. package/skills/hallmark/references/themes/overprint.jpg +0 -0
  202. package/skills/hallmark/references/themes/overprint.md +101 -0
  203. package/skills/hallmark/references/themes/pasteup.jpg +0 -0
  204. package/skills/hallmark/references/themes/pasteup.md +100 -0
  205. package/skills/hallmark/references/themes/piste.jpg +0 -0
  206. package/skills/hallmark/references/themes/piste.md +99 -0
  207. package/skills/hallmark/references/themes/ribbon.jpg +0 -0
  208. package/skills/hallmark/references/themes/ribbon.md +106 -0
  209. package/skills/hallmark/references/themes/rim.jpg +0 -0
  210. package/skills/hallmark/references/themes/rim.md +96 -0
  211. package/skills/hallmark/references/themes/riso.jpg +0 -0
  212. package/skills/hallmark/references/themes/riso.md +98 -0
  213. package/skills/hallmark/references/themes/solstice.jpg +0 -0
  214. package/skills/hallmark/references/themes/solstice.md +104 -0
  215. package/skills/hallmark/references/themes/specimen.jpg +0 -0
  216. package/skills/hallmark/references/themes/specimen.md +100 -0
  217. package/skills/hallmark/references/themes/spore.jpg +0 -0
  218. package/skills/hallmark/references/themes/spore.md +104 -0
  219. package/skills/hallmark/references/themes/sport.jpg +0 -0
  220. package/skills/hallmark/references/themes/sport.md +101 -0
  221. package/skills/hallmark/references/themes/squeeze.jpg +0 -0
  222. package/skills/hallmark/references/themes/squeeze.md +99 -0
  223. package/skills/hallmark/references/themes/sticker.jpg +0 -0
  224. package/skills/hallmark/references/themes/sticker.md +106 -0
  225. package/skills/hallmark/references/themes/studio.jpg +0 -0
  226. package/skills/hallmark/references/themes/studio.md +99 -0
  227. package/skills/hallmark/references/themes/terminal.jpg +0 -0
  228. package/skills/hallmark/references/themes/terminal.md +96 -0
  229. package/skills/hallmark/references/themes/terrazzo.jpg +0 -0
  230. package/skills/hallmark/references/themes/terrazzo.md +106 -0
  231. package/skills/hallmark/references/themes/ultraviolet.jpg +0 -0
  232. package/skills/hallmark/references/themes/ultraviolet.md +106 -0
  233. package/skills/hallmark/references/themes/vellum.jpg +0 -0
  234. package/skills/hallmark/references/themes/vellum.md +105 -0
  235. package/skills/hallmark/references/themes/wayfind.jpg +0 -0
  236. package/skills/hallmark/references/themes/wayfind.md +105 -0
  237. package/skills/hallmark/references/themes/werkstatt.jpg +0 -0
  238. package/skills/hallmark/references/themes/werkstatt.md +105 -0
  239. package/skills/hallmark/scripts/capture.mjs +125 -0
  240. package/skills/hallmark/scripts/fixtures/exemplars/atmospheric.html +324 -0
  241. package/skills/hallmark/scripts/fixtures/exemplars/editorial.html +363 -0
  242. package/skills/hallmark/scripts/fixtures/exemplars/modern-minimal.html +527 -0
  243. package/skills/hallmark/scripts/fixtures/exemplars/playful.html +353 -0
  244. package/skills/hallmark/scripts/fixtures/eyebrow-fail/index.html +118 -0
  245. package/skills/hallmark/scripts/fixtures/eyebrow-pass/index.html +137 -0
  246. package/skills/hallmark/scripts/fixtures/kept/after.html +27 -0
  247. package/skills/hallmark/scripts/fixtures/kept/before.html +26 -0
  248. package/skills/hallmark/scripts/fixtures/slopped.html +145 -0
  249. package/skills/hallmark/scripts/fixtures/tailwind-fail/Feature.vue +14 -0
  250. package/skills/hallmark/scripts/fixtures/tailwind-fail/Hero.tsx +33 -0
  251. package/skills/hallmark/scripts/fixtures/tailwind-fail/index.html +74 -0
  252. package/skills/hallmark/scripts/fixtures/tailwind-fail/style.css +6 -0
  253. package/skills/hallmark/scripts/fixtures/tailwind-pass/Hero.tsx +33 -0
  254. package/skills/hallmark/scripts/fixtures/tailwind-pass/index.html +57 -0
  255. package/skills/hallmark/scripts/fixtures/tailwind-pass/style.css +15 -0
  256. package/skills/hallmark/scripts/fixtures/waiver/index.html +54 -0
  257. package/skills/hallmark/scripts/imagegen.mjs +85 -0
  258. package/skills/hallmark/scripts/install-hook.mjs +70 -0
  259. package/skills/hallmark/scripts/install.mjs +141 -0
  260. package/skills/hallmark/scripts/lint-hook.mjs +49 -0
  261. package/skills/hallmark/scripts/photos.json +1 -0
  262. package/skills/hallmark/scripts/picture.mjs +71 -0
  263. package/skills/hallmark/scripts/refcheck.mjs +352 -0
  264. package/skills/hallmark/scripts/sloplint-render.mjs +1252 -0
  265. package/skills/hallmark/scripts/sloplint.mjs +4422 -0
  266. package/skills/hallmark/scripts/theme.mjs +650 -0
  267. package/skills/harness/SKILL.md +15 -8
  268. package/skills/i-have-adhd/SKILL.md +22 -11
  269. package/skills/no-ai-slop/SKILL.md +15 -1
  270. package/skills/plan-add/SKILL.md +33 -26
  271. package/skills/plan-status/SKILL.md +13 -7
  272. package/skills/plan-sync/SKILL.md +18 -12
  273. package/skills/pm-frameworks/SKILL.md +19 -10
  274. package/skills/pm-frameworks/SOURCE +7 -5
  275. package/skills/ponytail/SKILL.md +19 -14
  276. package/skills/product-analysis/SKILL.md +22 -18
  277. package/skills/product-flow/SKILL.md +14 -9
  278. package/skills/research/SKILL.md +75 -39
  279. package/skills/rl-env/SKILL.md +25 -13
  280. package/skills/rl-env/SOURCE +8 -6
  281. package/skills/tezgah-contract/SKILL.md +47 -42
  282. package/bin/tezgah-skill.py +0 -59
  283. /package/skills/ai-research/0-autoresearch-skill/{SKILL.md → ENTRY.md} +0 -0
  284. /package/skills/ai-research/01-model-architecture/litgpt/{SKILL.md → ENTRY.md} +0 -0
  285. /package/skills/ai-research/01-model-architecture/mamba/{SKILL.md → ENTRY.md} +0 -0
  286. /package/skills/ai-research/01-model-architecture/nanogpt/{SKILL.md → ENTRY.md} +0 -0
  287. /package/skills/ai-research/01-model-architecture/rwkv/{SKILL.md → ENTRY.md} +0 -0
  288. /package/skills/ai-research/01-model-architecture/torchtitan/{SKILL.md → ENTRY.md} +0 -0
  289. /package/skills/ai-research/02-tokenization/huggingface-tokenizers/{SKILL.md → ENTRY.md} +0 -0
  290. /package/skills/ai-research/02-tokenization/sentencepiece/{SKILL.md → ENTRY.md} +0 -0
  291. /package/skills/ai-research/03-fine-tuning/axolotl/{SKILL.md → ENTRY.md} +0 -0
  292. /package/skills/ai-research/03-fine-tuning/llama-factory/{SKILL.md → ENTRY.md} +0 -0
  293. /package/skills/ai-research/03-fine-tuning/peft/{SKILL.md → ENTRY.md} +0 -0
  294. /package/skills/ai-research/03-fine-tuning/unsloth/{SKILL.md → ENTRY.md} +0 -0
  295. /package/skills/ai-research/04-mechanistic-interpretability/nnsight/{SKILL.md → ENTRY.md} +0 -0
  296. /package/skills/ai-research/04-mechanistic-interpretability/pyvene/{SKILL.md → ENTRY.md} +0 -0
  297. /package/skills/ai-research/04-mechanistic-interpretability/saelens/{SKILL.md → ENTRY.md} +0 -0
  298. /package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/{SKILL.md → ENTRY.md} +0 -0
  299. /package/skills/ai-research/05-data-processing/nemo-curator/{SKILL.md → ENTRY.md} +0 -0
  300. /package/skills/ai-research/05-data-processing/ray-data/{SKILL.md → ENTRY.md} +0 -0
  301. /package/skills/ai-research/06-post-training/grpo-rl-training/{SKILL.md → ENTRY.md} +0 -0
  302. /package/skills/ai-research/06-post-training/miles/{SKILL.md → ENTRY.md} +0 -0
  303. /package/skills/ai-research/06-post-training/openrlhf/{SKILL.md → ENTRY.md} +0 -0
  304. /package/skills/ai-research/06-post-training/simpo/{SKILL.md → ENTRY.md} +0 -0
  305. /package/skills/ai-research/06-post-training/slime/{SKILL.md → ENTRY.md} +0 -0
  306. /package/skills/ai-research/06-post-training/torchforge/{SKILL.md → ENTRY.md} +0 -0
  307. /package/skills/ai-research/06-post-training/trl-fine-tuning/{SKILL.md → ENTRY.md} +0 -0
  308. /package/skills/ai-research/06-post-training/verl/{SKILL.md → ENTRY.md} +0 -0
  309. /package/skills/ai-research/07-safety-alignment/constitutional-ai/{SKILL.md → ENTRY.md} +0 -0
  310. /package/skills/ai-research/07-safety-alignment/llamaguard/{SKILL.md → ENTRY.md} +0 -0
  311. /package/skills/ai-research/07-safety-alignment/nemo-guardrails/{SKILL.md → ENTRY.md} +0 -0
  312. /package/skills/ai-research/07-safety-alignment/prompt-guard/{SKILL.md → ENTRY.md} +0 -0
  313. /package/skills/ai-research/08-distributed-training/accelerate/{SKILL.md → ENTRY.md} +0 -0
  314. /package/skills/ai-research/08-distributed-training/deepspeed/{SKILL.md → ENTRY.md} +0 -0
  315. /package/skills/ai-research/08-distributed-training/megatron-core/{SKILL.md → ENTRY.md} +0 -0
  316. /package/skills/ai-research/08-distributed-training/pytorch-fsdp2/{SKILL.md → ENTRY.md} +0 -0
  317. /package/skills/ai-research/08-distributed-training/pytorch-lightning/{SKILL.md → ENTRY.md} +0 -0
  318. /package/skills/ai-research/08-distributed-training/ray-train/{SKILL.md → ENTRY.md} +0 -0
  319. /package/skills/ai-research/09-infrastructure/lambda-labs/{SKILL.md → ENTRY.md} +0 -0
  320. /package/skills/ai-research/09-infrastructure/modal/{SKILL.md → ENTRY.md} +0 -0
  321. /package/skills/ai-research/09-infrastructure/skypilot/{SKILL.md → ENTRY.md} +0 -0
  322. /package/skills/ai-research/10-optimization/awq/{SKILL.md → ENTRY.md} +0 -0
  323. /package/skills/ai-research/10-optimization/bitsandbytes/{SKILL.md → ENTRY.md} +0 -0
  324. /package/skills/ai-research/10-optimization/flash-attention/{SKILL.md → ENTRY.md} +0 -0
  325. /package/skills/ai-research/10-optimization/gguf/{SKILL.md → ENTRY.md} +0 -0
  326. /package/skills/ai-research/10-optimization/gptq/{SKILL.md → ENTRY.md} +0 -0
  327. /package/skills/ai-research/10-optimization/hqq/{SKILL.md → ENTRY.md} +0 -0
  328. /package/skills/ai-research/10-optimization/ml-training-recipes/{SKILL.md → ENTRY.md} +0 -0
  329. /package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/{SKILL.md → ENTRY.md} +0 -0
  330. /package/skills/ai-research/11-evaluation/lm-evaluation-harness/{SKILL.md → ENTRY.md} +0 -0
  331. /package/skills/ai-research/11-evaluation/nemo-evaluator/{SKILL.md → ENTRY.md} +0 -0
  332. /package/skills/ai-research/12-inference-serving/llama-cpp/{SKILL.md → ENTRY.md} +0 -0
  333. /package/skills/ai-research/12-inference-serving/sglang/{SKILL.md → ENTRY.md} +0 -0
  334. /package/skills/ai-research/12-inference-serving/tensorrt-llm/{SKILL.md → ENTRY.md} +0 -0
  335. /package/skills/ai-research/12-inference-serving/vllm/{SKILL.md → ENTRY.md} +0 -0
  336. /package/skills/ai-research/13-mlops/mlflow/{SKILL.md → ENTRY.md} +0 -0
  337. /package/skills/ai-research/13-mlops/swanlab/{SKILL.md → ENTRY.md} +0 -0
  338. /package/skills/ai-research/13-mlops/tensorboard/{SKILL.md → ENTRY.md} +0 -0
  339. /package/skills/ai-research/13-mlops/weights-and-biases/{SKILL.md → ENTRY.md} +0 -0
  340. /package/skills/ai-research/14-agents/a-evolve/{SKILL.md → ENTRY.md} +0 -0
  341. /package/skills/ai-research/14-agents/autogpt/{SKILL.md → ENTRY.md} +0 -0
  342. /package/skills/ai-research/14-agents/crewai/{SKILL.md → ENTRY.md} +0 -0
  343. /package/skills/ai-research/14-agents/langchain/{SKILL.md → ENTRY.md} +0 -0
  344. /package/skills/ai-research/14-agents/llamaindex/{SKILL.md → ENTRY.md} +0 -0
  345. /package/skills/ai-research/15-rag/chroma/{SKILL.md → ENTRY.md} +0 -0
  346. /package/skills/ai-research/15-rag/faiss/{SKILL.md → ENTRY.md} +0 -0
  347. /package/skills/ai-research/15-rag/pinecone/{SKILL.md → ENTRY.md} +0 -0
  348. /package/skills/ai-research/15-rag/qdrant/{SKILL.md → ENTRY.md} +0 -0
  349. /package/skills/ai-research/15-rag/sentence-transformers/{SKILL.md → ENTRY.md} +0 -0
  350. /package/skills/ai-research/16-prompt-engineering/dspy/{SKILL.md → ENTRY.md} +0 -0
  351. /package/skills/ai-research/16-prompt-engineering/guidance/{SKILL.md → ENTRY.md} +0 -0
  352. /package/skills/ai-research/16-prompt-engineering/instructor/{SKILL.md → ENTRY.md} +0 -0
  353. /package/skills/ai-research/16-prompt-engineering/outlines/{SKILL.md → ENTRY.md} +0 -0
  354. /package/skills/ai-research/17-observability/langsmith/{SKILL.md → ENTRY.md} +0 -0
  355. /package/skills/ai-research/17-observability/phoenix/{SKILL.md → ENTRY.md} +0 -0
  356. /package/skills/ai-research/18-multimodal/audiocraft/{SKILL.md → ENTRY.md} +0 -0
  357. /package/skills/ai-research/18-multimodal/blip-2/{SKILL.md → ENTRY.md} +0 -0
  358. /package/skills/ai-research/18-multimodal/clip/{SKILL.md → ENTRY.md} +0 -0
  359. /package/skills/ai-research/18-multimodal/cosmos-policy/{SKILL.md → ENTRY.md} +0 -0
  360. /package/skills/ai-research/18-multimodal/llava/{SKILL.md → ENTRY.md} +0 -0
  361. /package/skills/ai-research/18-multimodal/openpi/{SKILL.md → ENTRY.md} +0 -0
  362. /package/skills/ai-research/18-multimodal/openvla-oft/{SKILL.md → ENTRY.md} +0 -0
  363. /package/skills/ai-research/18-multimodal/segment-anything/{SKILL.md → ENTRY.md} +0 -0
  364. /package/skills/ai-research/18-multimodal/stable-diffusion/{SKILL.md → ENTRY.md} +0 -0
  365. /package/skills/ai-research/18-multimodal/whisper/{SKILL.md → ENTRY.md} +0 -0
  366. /package/skills/ai-research/19-emerging-techniques/knowledge-distillation/{SKILL.md → ENTRY.md} +0 -0
  367. /package/skills/ai-research/19-emerging-techniques/long-context/{SKILL.md → ENTRY.md} +0 -0
  368. /package/skills/ai-research/19-emerging-techniques/model-merging/{SKILL.md → ENTRY.md} +0 -0
  369. /package/skills/ai-research/19-emerging-techniques/model-pruning/{SKILL.md → ENTRY.md} +0 -0
  370. /package/skills/ai-research/19-emerging-techniques/moe-training/{SKILL.md → ENTRY.md} +0 -0
  371. /package/skills/ai-research/19-emerging-techniques/speculative-decoding/{SKILL.md → ENTRY.md} +0 -0
  372. /package/skills/ai-research/20-ml-paper-writing/academic-plotting/{SKILL.md → ENTRY.md} +0 -0
  373. /package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/{SKILL.md → ENTRY.md} +0 -0
  374. /package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/{SKILL.md → ENTRY.md} +0 -0
  375. /package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/{SKILL.md → ENTRY.md} +0 -0
  376. /package/skills/ai-research/21-research-ideation/brainstorming-research-ideas/{SKILL.md → ENTRY.md} +0 -0
  377. /package/skills/ai-research/21-research-ideation/creative-thinking-for-research/{SKILL.md → ENTRY.md} +0 -0
  378. /package/skills/ai-research/22-agent-native-research-artifact/compiler/{SKILL.md → ENTRY.md} +0 -0
  379. /package/skills/ai-research/22-agent-native-research-artifact/research-manager/{SKILL.md → ENTRY.md} +0 -0
  380. /package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/{SKILL.md → ENTRY.md} +0 -0
  381. /package/skills/design-library/adaptive-interfaces/skills/colour-independence/{SKILL.md → ENTRY.md} +0 -0
  382. /package/skills/design-library/adaptive-interfaces/skills/flexible-typography/{SKILL.md → ENTRY.md} +0 -0
  383. /package/skills/design-library/adaptive-interfaces/skills/information-density/{SKILL.md → ENTRY.md} +0 -0
  384. /package/skills/design-library/adaptive-interfaces/skills/preference-audit/{SKILL.md → ENTRY.md} +0 -0
  385. /package/skills/design-library/adaptive-interfaces/skills/responsive-accessibility/{SKILL.md → ENTRY.md} +0 -0
  386. /package/skills/design-library/adaptive-interfaces/skills/responsive-review/{SKILL.md → ENTRY.md} +0 -0
  387. /package/skills/design-library/adaptive-interfaces/skills/simplified-views/{SKILL.md → ENTRY.md} +0 -0
  388. /package/skills/design-library/adaptive-interfaces/skills/specify/{SKILL.md → ENTRY.md} +0 -0
  389. /package/skills/design-library/adaptive-interfaces/skills/user-preference-respect/{SKILL.md → ENTRY.md} +0 -0
  390. /package/skills/design-library/cognitive-accessibility/skills/adaptive-personalisation/{SKILL.md → ENTRY.md} +0 -0
  391. /package/skills/design-library/cognitive-accessibility/skills/assess-load/{SKILL.md → ENTRY.md} +0 -0
  392. /package/skills/design-library/cognitive-accessibility/skills/cognitive-load-assessment/{SKILL.md → ENTRY.md} +0 -0
  393. /package/skills/design-library/cognitive-accessibility/skills/contextual-help-design/{SKILL.md → ENTRY.md} +0 -0
  394. /package/skills/design-library/cognitive-accessibility/skills/error-prevention-recovery/{SKILL.md → ENTRY.md} +0 -0
  395. /package/skills/design-library/cognitive-accessibility/skills/focus-attention-design/{SKILL.md → ENTRY.md} +0 -0
  396. /package/skills/design-library/cognitive-accessibility/skills/memory-load-reduction/{SKILL.md → ENTRY.md} +0 -0
  397. /package/skills/design-library/cognitive-accessibility/skills/plain-language-design/{SKILL.md → ENTRY.md} +0 -0
  398. /package/skills/design-library/cognitive-accessibility/skills/review/{SKILL.md → ENTRY.md} +0 -0
  399. /package/skills/design-library/cognitive-accessibility/skills/simplify/{SKILL.md → ENTRY.md} +0 -0
  400. /package/skills/design-library/cognitive-accessibility/skills/wayfinding-navigation/{SKILL.md → ENTRY.md} +0 -0
  401. /package/skills/design-library/design-research/skills/behavioural-analytics/{SKILL.md → ENTRY.md} +0 -0
  402. /package/skills/design-library/design-research/skills/qual-quant-triangulation/{SKILL.md → ENTRY.md} +0 -0
  403. /package/skills/design-library/inclusive-interaction/skills/audit/{SKILL.md → ENTRY.md} +0 -0
  404. /package/skills/design-library/inclusive-interaction/skills/design-flow/{SKILL.md → ENTRY.md} +0 -0
  405. /package/skills/design-library/inclusive-interaction/skills/feedback-and-status/{SKILL.md → ENTRY.md} +0 -0
  406. /package/skills/design-library/inclusive-interaction/skills/gesture-alternatives/{SKILL.md → ENTRY.md} +0 -0
  407. /package/skills/design-library/inclusive-interaction/skills/keyboard-navigation/{SKILL.md → ENTRY.md} +0 -0
  408. /package/skills/design-library/inclusive-interaction/skills/keyboard-review/{SKILL.md → ENTRY.md} +0 -0
  409. /package/skills/design-library/inclusive-interaction/skills/motion-sensitivity/{SKILL.md → ENTRY.md} +0 -0
  410. /package/skills/design-library/inclusive-interaction/skills/multi-modal-input/{SKILL.md → ENTRY.md} +0 -0
  411. /package/skills/design-library/inclusive-interaction/skills/touch-target-design/{SKILL.md → ENTRY.md} +0 -0
  412. /package/skills/design-library/inclusive-interaction/skills/voice-interaction/{SKILL.md → ENTRY.md} +0 -0
  413. /package/skills/design-library/visual-critique/skills/critique-affordance/{SKILL.md → ENTRY.md} +0 -0
  414. /package/skills/design-library/visual-critique/skills/critique-brand-consistency/{SKILL.md → ENTRY.md} +0 -0
  415. /package/skills/design-library/visual-critique/skills/critique-color/{SKILL.md → ENTRY.md} +0 -0
  416. /package/skills/design-library/visual-critique/skills/critique-composition/{SKILL.md → ENTRY.md} +0 -0
  417. /package/skills/design-library/visual-critique/skills/critique-information-density/{SKILL.md → ENTRY.md} +0 -0
  418. /package/skills/design-library/visual-critique/skills/critique-typography/{SKILL.md → ENTRY.md} +0 -0
  419. /package/skills/design-library/visual-critique/skills/critique-visual-hierarchy/{SKILL.md → ENTRY.md} +0 -0
  420. /package/skills/pm-frameworks/intended-vs-implemented/{SKILL.md → ENTRY.md} +0 -0
  421. /package/skills/pm-frameworks/opportunity-solution-tree/{SKILL.md → ENTRY.md} +0 -0
  422. /package/skills/rl-env/generate-nemo-gym-env/{SKILL.md → ENTRY.md} +0 -0
  423. /package/skills/rl-env/generate-openenv-env/{SKILL.md → ENTRY.md} +0 -0
  424. /package/skills/rl-env/generate-ors-env/{SKILL.md → ENTRY.md} +0 -0
  425. /package/skills/rl-env/generate-verifiers-env/{SKILL.md → ENTRY.md} +0 -0
  426. /package/skills/rl-env/rl-env-from-description/{SKILL.md → ENTRY.md} +0 -0
@@ -3,8 +3,10 @@
3
3
 
4
4
  Placeholders are filled by tezgah_context.render():
5
5
  {ROOT} - the configured tezgah root the session is in
6
- {CONSULT_BIN} - the stable path to bin/consult
7
- {CODEGEN_BIN} - the stable path to bin/codegen; {ROUTE_BIN} to bin/tezgah-route
6
+ {CONSULT_BIN}, {CODEGEN_BIN}, {RESEARCH_BIN}, {ROUTE_BIN}, {SKILL_BIN}... -
7
+ the stable path to the tezgah CLI BIN_TOOLS names: no host but
8
+ Claude puts ~/.config/tezgah/bin on PATH, so a bare name in
9
+ the text is a `command not found`
8
10
  {ORX_BIN} - the stable path to the OpenResearch `orx` CLI, else bare `orx`
9
11
  {OPEN_LINES} - the research lines already open, filled by
10
12
  tezgah_context.context_for: that fact is about the repo the
@@ -25,6 +27,16 @@ sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)))
25
27
  import tezgah_research as tr # noqa: E402 (the layer's own line resolver)
26
28
  from tezgah_paths import say # noqa: E402 (the language packs' contract words)
27
29
 
30
+ # The tezgah CLIs the injected text names, by placeholder. `render` fills each
31
+ # with `tezgah_paths.tool(<name>)`; the hookless copies (REPLY_LANG_HOOKLESS)
32
+ # with the installed path spelled from `~`.
33
+ BIN_TOOLS = {"{CONSULT_BIN}": "consult", "{CODEGEN_BIN}": "codegen",
34
+ "{RESEARCH_BIN}": "tezgah-research", "{ROUTE_BIN}": "tezgah-route",
35
+ "{SKILL_BIN}": "tezgah-skill", "{DESIGN_BIN}": "tezgah-design",
36
+ "{TASK_BIN}": "tezgah-task", "{PONY_BIN}": "tezgah-pony",
37
+ "{ADHD_BIN}": "tezgah-adhd", "{LESSONS_BIN}": "tezgah-lessons",
38
+ "{STATUS_BIN}": "tezgah-status"}
39
+
28
40
  PONYTAIL = """
29
41
  ## Code style: ponytail (auto-armed, tezgah roots only)
30
42
 
@@ -45,7 +57,7 @@ On the FIRST non-trivial coding task of the session, load the full skill with
45
57
  Skill(tezgah:ponytail) on Claude, or the installed `ponytail` skill on every
46
58
  other host - the plugin name is part of the skill name on Claude, and this
47
59
  summary is not the whole contract.
48
- Level: `tezgah-pony lite|full|ultra` (bare call shows it; stored in
60
+ Level: `{PONY_BIN} lite|full|ultra` (bare call shows it; stored in
49
61
  ~/.config/tezgah/ponytail.level, machine-wide until changed). The default `full`
50
62
  adds nothing to this reminder; a non-default level is named in it every turn.
51
63
  Off: user says "stop ponytail".
@@ -88,7 +100,7 @@ no closer), or when a rule would delete the answer itself (an options question
88
100
  gets 2-4 ranked options with one line of trade-off each, recommendation first).
89
101
  On the FIRST non-trivial answer of the session, read the full `i-have-adhd`
90
102
  skill from the router - this summary is not the whole contract.
91
- Off: `tezgah-adhd off` (the kill switch file), or a repo's `.no-adhd`.
103
+ Off: `{ADHD_BIN} off` (the kill switch file), or a repo's `.no-adhd`.
92
104
  """
93
105
 
94
106
  SPEC = """
@@ -179,7 +191,8 @@ REPLY_LANG_HOOKLESS = dict(
179
191
  "{GRANT_EXAMPLES}": "%s, %s" % (_EN["grant_examples"], _TR["grant_examples"]),
180
192
  "{OPENER_SHORT}": _TR["opener_short"]},
181
193
  **{"{%s_GLOSS}" % k.upper(): "tr: %s; " % _TR[k]
182
- for k in ("decision", "access", "irreversible", "env")})
194
+ for k in ("decision", "access", "irreversible", "env")},
195
+ **{ph: "~/.config/tezgah/bin/" + name for ph, name in BIN_TOOLS.items()})
183
196
 
184
197
  EXEC = """
185
198
  ## Reporting contract: executive mode (auto-armed, tezgah roots only)
@@ -260,11 +273,11 @@ rewrite it plainly.
260
273
  **Merge authority: standing, not per-PR.** The user is not the approval step
261
274
  on a merge. Review first with a FRESH reviewer (never my own read of my own
262
275
  code), run the full suite, and if the review is clean and every test passes,
263
- merge and close the plan yourself (`tezgah-task close NNN done`, which also
276
+ merge and close the plan yourself (`{TASK_BIN} close NNN done`, which also
264
277
  deactivates it and removes every merged worktree), then report the outcome. Nothing
265
278
  goes back to the user: a failing test you fix, and a critical or major finding
266
279
  left after round two you fix yourself, prove with a test and close with
267
- `tezgah-task close NNN done --resolved "<fix and test>"`. One review per plan, over its whole diff in the verification
280
+ `{TASK_BIN} close NNN done --resolved "<fix and test>"`. One review per plan, over its whole diff in the verification
268
281
  phase; at most two rounds - only a confirmed critical or major finding opens
269
282
  round two; a minor or suggestion one is fixed in the session without a new
270
283
  round, or recorded fix-later only when it waits on a user decision ({DECISION});
@@ -273,10 +286,10 @@ after round two what is left is fixed by the session and closed with
273
286
  A round spawns its reviewers in ONE message, one per dimension (correctness
274
287
  and contract, security, tests and performance) or file group; a diff under 300
275
288
  changed lines gets one reviewer. Per-task work gets tests, not a reviewer, and
276
- `tezgah-task review` refuses a third round.
289
+ `{TASK_BIN} review` refuses a third round.
277
290
 
278
291
  **The process is yours: never hand a step back.** The orchestrator runs the
279
- plan lifecycle itself - `tezgah-task start`, every `phase` move, `review`,
292
+ plan lifecycle itself - `{TASK_BIN} start`, every `phase` move, `review`,
280
293
  `close`, the merge, and removing a slice's worktree once its branch is merged -
281
294
  and never ends a reply with "run this command" or "shall I close it?" for a
282
295
  step it can take. A process parameter the user did not set (a sample size, a
@@ -378,9 +391,9 @@ that slice writes - and declares its checkout on a `Worktree: <abs path>` line;
378
391
  the gate refuses a sibling's write into those globs and a slice's write into
379
392
  the main checkout when its brief declares a worktree. The integrator
380
393
  owns the shared append points (CHANGELOG.md, MANIFEST, the citation baseline)
381
- and merges in the order `tezgah-task slice merge-plan` prints. Siblings message
394
+ and merges in the order `{TASK_BIN} slice merge-plan` prints. Siblings message
382
395
  each other (omp `write agent://<id>`, Claude `SendMessage`) only on an interface
383
- or ownership change; status goes to the parent, and `tezgah-task slice board`
396
+ or ownership change; status goes to the parent, and `{TASK_BIN} slice board`
384
397
  shows every sibling's lease. Only a single item - one file, one
385
398
  bounded change, a strictly serial chain - is done directly; a list of
386
399
  independent items is never worked one by one on the main thread, however small
@@ -388,13 +401,13 @@ each item is, and that holds at every phase: a plan's tasks, its acceptance
388
401
  commands and the sources of a survey fan out the same way.
389
402
  A slice that needs its own checkout: inside Orca (the session-start `Orca:`
390
403
  line) create it with `orca worktree create --name <slug> --parent-worktree
391
- active --json` and track it with `orca worktree ps --json` or `tezgah-status
404
+ active --json` and track it with `orca worktree ps --json` or `{STATUS_BIN}
392
405
  --orca` - a raw `git worktree add` gets no card, terminal tracking or agent
393
406
  status in Orca; outside Orca, `git worktree add`. Either way the brief names
394
407
  absolute paths under that checkout. A writing slice commits `wip: <step>`
395
408
  after each step, so a crash leaves it resumable. A stopped slice (quota, abort,
396
- cut off) is resumed - `tezgah-task slice resume <id>` - or re-dispatched, never
397
- silently absorbed inline; run `tezgah-task slice reconcile --prune` before the
409
+ cut off) is resumed - `{TASK_BIN} slice resume <id>` - or re-dispatched, never
410
+ silently absorbed inline; run `{TASK_BIN} slice reconcile --prune` before the
398
411
  turn that merged slices ends.
399
412
  Routing: `{ROUTE_BIN} "<brief>"` names the worker - tezgah-cheap, -standard or
400
413
  -frontier, or the specialist whose whole job the brief is (tezgah-tester,
@@ -552,9 +565,9 @@ When the task is research and the OpenResearch CLI (`{ORX_BIN}`) is installed,
552
565
  drive it through that CLI instead of ad-hoc local scripting. Load the operating
553
566
  manual first: the `orx` skill if the host has it, otherwise run
554
567
  `{ORX_BIN} skill` from the shell; then the module the method needs -
555
- `{ORX_BIN} skill lit-review` for sources, `{ORX_BIN} skill experiment-tree` and
556
- `{ORX_BIN} skill evidence` for a measured line. On a measured line its cardinal
557
- rules are not style preferences - they
568
+ `{ORX_BIN} skill lit-review` for sources, `{ORX_BIN} skill experiment-tree`,
569
+ `{ORX_BIN} skill orx-results` and `{ORX_BIN} skill orx-logs` for a measured
570
+ line. On a measured line its cardinal rules are not style preferences - they
558
571
  are what keeps results comparable, and breaking one silently invalidates the run:
559
572
  never edit a node once a run has answered it (branch a child instead); the run
560
573
  command and environment are a fixed contract identical on every node; vary the
@@ -569,6 +582,12 @@ table computed from other rows. The producer declares it - nothing can recover i
569
582
  afterwards - and `{RESEARCH_BIN} check` refuses a claim that claims a wider scope
570
583
  than the rows it rests on.
571
584
 
585
+ Narrowing a claim to what its evidence reaches, ending a hypothesis
586
+ `inconclusive`, and `{RESEARCH_BIN} close <slug> --limit "<what is left>"` are
587
+ normal outcomes of a line, never failures to avoid: a claim's certainty is
588
+ reported as `check` computes it, an exploratory one says so, and `check` warns on
589
+ universal or causal wording its evidence does not carry.
590
+
572
591
  If the CLI is not installed, say the research tooling is unavailable and do not
573
592
  improvise its protocol; fall back to a host subagent and say so, briefed with the
574
593
  question verbatim, its in- and out-of-scope items and its method. Kill switch:
@@ -809,7 +828,7 @@ one small test); a one-liner needs none. A complex ask ships the lazy version
809
828
  and names the fuller one in the same reply instead of stalling. Reply: code
810
829
  first; write what was cut only when you consciously cut something the user asked
811
830
  for, in at most three lines. In force from the first turn; levels
812
- lite|full|ultra are set with `tezgah-pony` and ride the per-turn reminder when
831
+ lite|full|ultra are set with `{PONY_BIN}` and ride the per-turn reminder when
813
832
  not `full`; read the full `ponytail` skill from the router for the level table
814
833
  and examples. Off: "stop ponytail".
815
834
 
@@ -835,7 +854,7 @@ assumption and ask one diagnostic question. Before sending, delete an opening
835
854
  sentence that announces, a closing one that recaps or asks "anything else?", any
836
855
  by-the-way sidebar and any hedge that carries no real uncertainty. In force from
837
856
  the first answer; read the full `i-have-adhd` skill from the router for the
838
- examples. Off: `tezgah-adhd off`, or the repo's `.no-adhd`.
857
+ examples. Off: `{ADHD_BIN} off`, or the repo's `.no-adhd`.
839
858
 
840
859
  **Deliver the whole ask; never the shortcut.** The request defines the
841
860
  deliverable: every named item is in scope until the user says otherwise, and the
@@ -988,7 +1007,10 @@ If the CLI is not installed, say the research tooling is unavailable and fall
988
1007
  back to a host subagent briefed with the question verbatim, its in/out scope and
989
1008
  its method. Off: `research-off`.
990
1009
 
991
- **Product analysis: five axes, one evidence class per finding.** A product
1010
+ **Product analysis: five axes, one evidence class per finding.** Read the
1011
+ `product-analysis` skill for this ask (artifact shape, scorecard), `pm-frameworks`
1012
+ for an intended-vs-implemented gap or an Opportunity Solution Tree, and
1013
+ `feature-audit` when the ask is one feature. A product
992
1014
  question - "analyse this product", "why is retention falling", "which feature
993
1015
  next" - is analysis, not advice, and it covers every axis the product has, not
994
1016
  only the code. Value: HEART's Goals -> Signals -> Metrics (a metric with no goal
@@ -1017,12 +1039,22 @@ would decide it. Establish first whether the behaviour is observable at all - "w
1017
1039
  cannot see this yet" is the first finding, not a footnote. Every finding names one
1018
1040
  evidence class - `user-verbatim`, `behaviour`, `ui-observed`, `code`, `external` -
1019
1041
  and a finding without one is a question, not a finding. Run it as a research line
1020
- (`{RESEARCH_BIN}`), say what it did not look at, and read the `product-analysis`
1021
- skill for the artifact shape and the scorecard, and `feature-audit` for the
1022
- layer-coherence matrices when the ask is one feature. A new capability built from
1042
+ (`{RESEARCH_BIN}`) and say what it did not look at. A new capability built from
1023
1043
  data or an ask runs the `product-flow` skill: `{RESEARCH_BIN} next --topic <t>` is
1024
1044
  the step source, and its first missing or due step is the next one. Off: `research-off`.
1025
1045
 
1046
+ **Design: UI work reads the design skills.** A UI ask - build, restyle, critique
1047
+ or audit a screen, form, dashboard or design system - reads the `design-contract`
1048
+ skill first: `{DESIGN_BIN} derive` writes `.tezgah/design-contract.md` from the
1049
+ repo's own tokens and `{DESIGN_BIN} check` measures the change against it.
1050
+ `design-library` holds the critique methods (cognitive load, visual hierarchy,
1051
+ accessibility); `analyze-app` reads the running UI, the only evidence for a UI
1052
+ claim; `feature-audit` covers a form, CRUD or admin flow across its layers; the
1053
+ `hallmark` skill builds a new page or restyles one (its own gate list plus
1054
+ `{DESIGN_BIN} slop --render` for the machine-made tells). The contract's
1055
+ `precedence` block decides which floor owns each key, and ours owns the facts.
1056
+ UI build work goes to a worker whose brief loads `design-contract`. Off: `design-off`.
1057
+
1026
1058
  **No AI attribution, ever, on any host.** Nothing persisted or published may
1027
1059
  name the assistant, model, vendor or "AI" as author/co-author/generator/helper:
1028
1060
  commit/merge/tag messages, PR/issue/review comments, `git notes`, release
@@ -1047,14 +1079,14 @@ issue for one of its tools mid-session. Name a missing capability in one line,
1047
1079
  use the documented fallback (grep/find, or the second opinion skipped), and carry
1048
1080
  on with the task in hand. Tezgah maintenance is in scope when the user asks for
1049
1081
  it, or when the repo IS the tezgah checkout. Before working a topic an
1050
- installed skill covers, run `tezgah-skill <words>` and read only the range it
1082
+ installed skill covers, run `{SKILL_BIN} <words>` and read only the range it
1051
1083
  returns.
1052
1084
 
1053
1085
  **Workspace: `.tezgah/` only.** Every per-project tezgah artifact - plans,
1054
- research lines, analysis, lessons - lives under `<repo>/.tezgah/`, which the
1055
- project's `.gitignore` excludes and which keeps its own private git repository
1056
- (`git -C .tezgah ...`). Never create `plans/`, `research/` or `analysis/` at the
1057
- project root and never `git add -f` anything under `.tezgah/`. Off:
1086
+ research lines, analysis, lessons - lives under `<repo>/.tezgah/`, ignored by
1087
+ the project, committed with `git -C .tezgah ...` - or, if the project tracks
1088
+ it, plain `git add`/`git commit`. Never create `plans/`, `research/` or
1089
+ `analysis/` at the project root and never `git add -f` under `.tezgah/`. Off:
1058
1090
  `workspace-off`.
1059
1091
 
1060
1092
  **Parallel by default: fan out independent items.** A request with two or
@@ -1076,7 +1108,7 @@ not grow. Every writing brief names its `Owns:` globs and declares its
1076
1108
  checkout on a `Worktree: <abs path>` line, and siblings message
1077
1109
  each other only on an interface or ownership change. Read-only slices need no
1078
1110
  worktree. Once a slice's branch is merged,
1079
- its worktree goes in the same turn - `tezgah-task close` removes every merged
1111
+ its worktree goes in the same turn - `{TASK_BIN} close` removes every merged
1080
1112
  one, and outside a plan `orca worktree rm --worktree path:<p>` (else `git
1081
1113
  worktree remove <p>`) does it; never leave one for the user to find. Pick each agent by task class from
1082
1114
  the specialists line; `{ROUTE_BIN}` names the tier for code work. Serialize
@@ -1089,7 +1121,7 @@ never fans out again. Off: `orchestrate-off`.
1089
1121
 
1090
1122
  **Kill switches:** each one removes its own rule from this text, not just the
1091
1123
  status mark. `~/.config/tezgah/`: `exec-mode.off`, `orchestrate-off`,
1092
- `consult-off`, `research-off`, `ponytail-auto.off`, `adhd-off`, `spec-off`,
1124
+ `consult-off`, `research-off`, `ponytail-auto.off`, `adhd-off`, `spec-off`, `design-off`,
1093
1125
  `reminder-off`, `verify-off` (the integrity rule: its prompt text, the shortcut
1094
1126
  denials and the Stop gate), `task-off` (the task rule), `judge-off` (the
1095
1127
  judgement seam: the triage, the docs fallback and the skill hint), `triage-off`,
@@ -1097,32 +1129,49 @@ judgement seam: the triage, the docs fallback and the skill hint), `triage-off`,
1097
1129
  rule), `workspace-off` (the root plans/research/analysis refusal),
1098
1130
  `pretooluse-off` (the whole gate);
1099
1131
  per-repo `.no-ponytail`, `.no-adhd`, `.no-graph`, `.no-lessons`.
1100
- The ponytail intensity level is not a switch: `tezgah-pony lite|full|ultra`.
1132
+ The ponytail intensity level is not a switch: `{PONY_BIN} lite|full|ultra`.
1101
1133
  """
1102
1134
 
1103
1135
  # Rules that are NOT paid every session. They are armed by task class at prompt
1104
1136
  # time (hooks/tezgah_context.classify_prompt), because a session that never asks
1105
1137
  # a structural or research question should not carry their text. Keys match the
1106
1138
  # CORE_RULES labels in hooks/tezgah_context.py.
1107
- CONDITIONAL_KEYS = ("spec", "consult", "research", "product", "graph", "fanout")
1108
-
1109
- # The fan-out rule's action, which the one-line repeat of an armed paragraph
1110
- # (hooks/tezgah_context.armed_again) carries: a bare "Armed again" named a rule
1111
- # the session had to recall, and the second list of a session was worked one
1112
- # item at a time. It is the paragraph's own clause, cut to one sentence.
1113
- FANOUT_ACTION = ("count the independent items, spawn one subagent per item in "
1114
- "ONE message, each the agent `tezgah-route` names - a specialist "
1115
- "by name, never the generic task agent - (each writing slice in "
1116
- "its own worktree, absolute paths), and keep the main thread for "
1117
- "integrating and verifying; the todo list is the step queue, so "
1118
- "dispatch every ready step before any `wait`; a subagent does "
1119
- "its own slice and never fans out again.")
1139
+ CONDITIONAL_KEYS = ("spec", "consult", "research", "product", "design", "graph",
1140
+ "fanout")
1141
+
1142
+ # The action the one-line repeat of an armed paragraph
1143
+ # (hooks/tezgah_context.armed_again) carries instead of a bare "Armed again":
1144
+ # that named a rule the session had to recall, so the second list of a session
1145
+ # was worked one item at a time, and the product skills were named on 3 turns of
1146
+ # a 40-turn session against 20 in fresh ones (plan 126). Each is the paragraph's
1147
+ # own clause, cut to one sentence; the product and design lines keep the
1148
+ # paragraph's condition, because the hint that armed them is a word match and a
1149
+ # misfire must not become an order to read a skill the ask has no use for.
1150
+ ARMED_ACTIONS = {
1151
+ "fanout": "count the independent items, spawn one subagent per item in "
1152
+ "ONE message, each the agent `{ROUTE_BIN}` names - a specialist "
1153
+ "by name, never the generic task agent - (each writing slice in "
1154
+ "its own worktree, absolute paths), and keep the main thread for "
1155
+ "integrating and verifying; the todo list is the step queue, so "
1156
+ "dispatch every ready step before any `wait`; a subagent does "
1157
+ "its own slice and never fans out again. The full rule is in the "
1158
+ "`tezgah-contract` skill.",
1159
+ "product": "if this ask is a product question, read the "
1160
+ "`product-analysis` skill now - `pm-frameworks` for an "
1161
+ "intended-vs-implemented gap or an Opportunity Solution Tree, "
1162
+ "`feature-audit` for one feature, `analyze-app` for the running "
1163
+ "app, `product-flow` for a new capability.",
1164
+ "design": "if this ask is UI work, read the `design-contract` skill now - "
1165
+ "`design-library` for critique methods, `analyze-app` for the "
1166
+ "running UI, `feature-audit` for a form or admin flow; UI build "
1167
+ "work goes to a worker whose brief loads `design-contract`.",
1168
+ }
1120
1169
 
1121
1170
  # The always-on replacement for the conditional paragraphs: one line each so a
1122
1171
  # host without a per-turn hook still knows the rule exists and where the full
1123
1172
  # text lives.
1124
1173
  POINTERS = """
1125
- **On-demand rules (armed when the task class matches; full text in the `tezgah-contract` skill).** Spec-first for an underspecified or quality-only ask. A second opinion before a call that is hard to reverse or that one model would answer with unearned confidence. OpenResearch routing for research. Product analysis is a five-axis evidence task - value, usability (the running app, not the source), feasibility (a cited `path:line`), competition, and keep/fix/cut/bet triage - with one named evidence class per finding. The code graph for "who calls X" and "what breaks if Z changes". Two or more independent items fan out to parallel subagents in one message, one git worktree per writing slice. The design floor a UI turn is judged against is `.tezgah/design-contract.md`: `tezgah-design derive` writes it from the repository's own tokens, `tezgah-design check` measures a change against it, and the `design-contract` skill owns its shape.
1174
+ **On-demand rules (armed when the task class matches; full text in the `tezgah-contract` skill).** Spec-first for an underspecified or quality-only ask. A second opinion before a call that is hard to reverse or that one model would answer with unearned confidence. OpenResearch routing for research. Product analysis is a five-axis evidence task - value, usability (the running app, not the source), feasibility (a cited `path:line`), competition, and keep/fix/cut/bet triage - with one named evidence class per finding (`product-analysis`, `pm-frameworks`). The code graph for "who calls X" and "what breaks if Z changes". Two or more independent items fan out to parallel subagents in one message, one git worktree per writing slice. A UI turn reads the `design-contract` skill (`design-library`, `analyze-app`) and is judged against `.tezgah/design-contract.md`: `{DESIGN_BIN} derive` writes it from the repository's own tokens and its `check` measures a change against it.
1126
1175
  """
1127
1176
 
1128
1177
  # The compact per-turn form, inside the <harness-reminder> envelope the hosts
@@ -44,12 +44,14 @@ STOPWORDS = frozenset(w for p in packs().values() for w in p["rank_stopwords"])
44
44
  MIN_CAP_TEXTS = 10
45
45
 
46
46
 
47
- def scores(query, texts, max_df=None):
47
+ def scores(query, texts, max_df=None, tokens=None):
48
48
  """Every text's BM25 score for `query`, in input order; 0.0 for a text that
49
49
  shares no term with it. `rank` orders these; the research dedup reads them as
50
- numbers (`tezgah_research.similarity_matrix`)."""
51
- docs = [Counter(words(t)) for t in texts]
52
- terms = set(words(query))
50
+ numbers (`tezgah_research.similarity_matrix`). `tokens` replaces `words` on
51
+ both sides (the skill search folds and stems its terms)."""
52
+ tokens = tokens or words
53
+ docs = [Counter(tokens(t)) for t in texts]
54
+ terms = set(tokens(query))
53
55
  if not docs or not terms:
54
56
  return [0.0] * len(docs)
55
57
  avg = sum(sum(d.values()) for d in docs) / len(docs) or 1.0
@@ -68,12 +70,13 @@ def scores(query, texts, max_df=None):
68
70
  return out
69
71
 
70
72
 
71
- def rank(query, texts, k, max_df=None):
73
+ def rank(query, texts, k, max_df=None, tokens=None):
72
74
  """Indices of the `k` texts that score highest for `query`, best first.
73
75
 
74
76
  Only a text sharing at least one term with the query is returned (score > 0),
75
77
  so an unrelated query gets [] rather than an arbitrary order. `max_df` (a
76
78
  fraction) drops STOPWORDS and, on MIN_CAP_TEXTS or more texts, every query
77
79
  term found in more than that share of them."""
78
- scored = [(-s, i) for i, s in enumerate(scores(query, texts, max_df)) if s > 0]
80
+ scored = [(-s, i) for i, s in enumerate(scores(query, texts, max_df, tokens))
81
+ if s > 0]
79
82
  return [i for _s, i in sorted(scored)[:k]]
@@ -598,10 +598,10 @@ def _replay_one(it, prefix, tg, seen, live_events):
598
598
  reason = tg.decision(it["tool"], inp, it["cwd"], it["sid"], record=False)
599
599
  rule = (rule_of("%s: %s" % (seen[-1], reason)) if seen else "unobserved") \
600
600
  if reason else None
601
- writers = sorted({w for p in tg.write_paths(inp)
602
- for w in ti.writers_elsewhere(p, it["sid"],
603
- tg.RACE_WINDOW_MIN,
604
- cwd=it["cwd"])})
601
+ # the writers the live race rule refuses on (`race_writers`), as the
602
+ # ledger ids the page has always shown (plan 117)
603
+ writers = sorted({w[0] for _path, others in tg.race_writers(
604
+ inp, it["sid"], it["cwd"]) for w in others})
605
605
  out.update(replay="deny" if reason else "allow", rule=rule,
606
606
  writers=writers)
607
607
  except Exception as exc: # a crash is a result, never a silent allow