@r1z4x/tezgah 1.9.2 → 1.13.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 (445) hide show
  1. package/CHANGELOG.md +415 -1
  2. package/MANIFEST +404 -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 +5 -4
  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 +255 -44
  15. package/bin/tezgah-review-quote +185 -0
  16. package/bin/tezgah-setup +1365 -55
  17. package/bin/tezgah-skill +1 -1
  18. package/bin/tezgah-status +201 -3
  19. package/bin/tezgah-task +258 -20
  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 +3 -3
  24. package/docs/clarity-baseline.json +11 -5
  25. package/docs/contract.md +91 -43
  26. package/docs/environment.md +5 -2
  27. package/docs/evidence.md +109 -17
  28. package/docs/feature-audit.md +2 -2
  29. package/docs/gate.md +60 -33
  30. package/docs/glossary.md +6 -3
  31. package/docs/hosts.md +313 -17
  32. package/docs/index.json +34 -8
  33. package/docs/judge.md +4 -2
  34. package/docs/layers.md +4 -4
  35. package/docs/models.md +37 -9
  36. package/docs/operations.md +141 -5
  37. package/docs/research.md +815 -8
  38. package/docs/skills.md +137 -13
  39. package/docs/status-line.md +121 -1
  40. package/docs/testing.md +3 -1
  41. package/hooks/hooks.json +2 -2
  42. package/hooks/lang/en.json +21 -0
  43. package/hooks/lang/tr.json +22 -1
  44. package/hooks/projects-stop.py +2 -1
  45. package/hooks/tezgah_agents.py +65 -25
  46. package/hooks/tezgah_apps.py +18 -0
  47. package/hooks/tezgah_attest.py +79 -10
  48. package/hooks/tezgah_components.py +4 -0
  49. package/hooks/tezgah_context.py +207 -55
  50. package/hooks/tezgah_extension.py +337 -0
  51. package/hooks/tezgah_gate.py +267 -79
  52. package/hooks/tezgah_integrity.py +864 -143
  53. package/hooks/tezgah_judge.py +6 -4
  54. package/hooks/tezgah_models.py +59 -19
  55. package/hooks/tezgah_orca.py +1 -1
  56. package/hooks/tezgah_paths.py +145 -8
  57. package/hooks/tezgah_policy.py +128 -57
  58. package/hooks/tezgah_rank.py +9 -6
  59. package/hooks/tezgah_replay.py +12 -6
  60. package/hooks/tezgah_research.py +1414 -76
  61. package/hooks/tezgah_research_capture.py +1544 -0
  62. package/hooks/tezgah_research_evidence.py +842 -0
  63. package/hooks/tezgah_research_stats.py +258 -0
  64. package/hooks/tezgah_skill_pick.py +408 -106
  65. package/hooks/tezgah_stack.py +236 -1
  66. package/hooks/tezgah_stopspec.py +8 -1
  67. package/hooks/tezgah_task.py +14 -5
  68. package/hooks/tezgah_taste_ledger.py +1 -1
  69. package/hosts/amp/hook.py +217 -0
  70. package/hosts/amp/tezgah-plugin.ts.in +386 -0
  71. package/hosts/antigravity/hook.py +255 -0
  72. package/hosts/codex/hook.py +2 -1
  73. package/hosts/commandcode/hook.py +239 -0
  74. package/hosts/copilot/hook.py +284 -0
  75. package/hosts/cursor/hook.py +31 -3
  76. package/hosts/droid/hook.py +259 -0
  77. package/hosts/dsh/hooks.json +1 -1
  78. package/hosts/gemini/hook.py +213 -0
  79. package/hosts/goose/hook.py +145 -0
  80. package/hosts/omp/hook.py +4 -1
  81. package/hosts/omp/tezgah-hook.ts.in +30 -7
  82. package/hosts/opencode/plugins/tezgah.js +309 -48
  83. package/hosts/opencode/tui/cli/tui.tsx +100 -0
  84. package/hosts/opencode/tui/tezgah-tui.tsx +2 -1
  85. package/hosts/qwen/hook.py +206 -0
  86. package/output-styles/tezgah.md +20 -15
  87. package/package.json +1 -1
  88. package/skills/ai-research/SKILL.md +21 -14
  89. package/skills/ai-research/SOURCE +7 -5
  90. package/skills/ai-research/index/1-frame.md +6 -6
  91. package/skills/ai-research/index/2-data.md +9 -9
  92. package/skills/ai-research/index/3-train.md +36 -36
  93. package/skills/ai-research/index/4-measure.md +13 -13
  94. package/skills/ai-research/index/5-run.md +11 -11
  95. package/skills/ai-research/index/6-write.md +23 -23
  96. package/skills/ai-research/library.json +104 -104
  97. package/skills/analyze-app/SKILL.md +17 -12
  98. package/skills/design-contract/SKILL.md +42 -7
  99. package/skills/design-contract/data-views.md +2 -2
  100. package/skills/design-library/EVALS.md +1 -1
  101. package/skills/design-library/INDEX.md +39 -39
  102. package/skills/design-library/SKILL.md +19 -13
  103. package/skills/design-library/SOURCE +45 -43
  104. package/skills/feature-audit/SKILL.md +20 -14
  105. package/skills/hallmark/LICENSE +21 -0
  106. package/skills/hallmark/SKILL.md +154 -0
  107. package/skills/hallmark/SOURCE +207 -0
  108. package/skills/hallmark/agents/openai.yaml +13 -0
  109. package/skills/hallmark/references/anatomy.md +71 -0
  110. package/skills/hallmark/references/brand-truth.md +40 -0
  111. package/skills/hallmark/references/comp.md +104 -0
  112. package/skills/hallmark/references/craft.md +116 -0
  113. package/skills/hallmark/references/dark-mode.md +49 -0
  114. package/skills/hallmark/references/data-viz.md +48 -0
  115. package/skills/hallmark/references/design-md.md +53 -0
  116. package/skills/hallmark/references/direction.md +52 -0
  117. package/skills/hallmark/references/export-formats.md +80 -0
  118. package/skills/hallmark/references/flow.md +131 -0
  119. package/skills/hallmark/references/fonts.md +58 -0
  120. package/skills/hallmark/references/gates.md +243 -0
  121. package/skills/hallmark/references/genres/atmospheric.md +24 -0
  122. package/skills/hallmark/references/genres/editorial.md +24 -0
  123. package/skills/hallmark/references/genres/modern-minimal.md +24 -0
  124. package/skills/hallmark/references/genres/playful.md +24 -0
  125. package/skills/hallmark/references/imagery.md +99 -0
  126. package/skills/hallmark/references/interaction-and-states.md +89 -0
  127. package/skills/hallmark/references/layout.md +104 -0
  128. package/skills/hallmark/references/macrostructures/01-bento-grid.md +21 -0
  129. package/skills/hallmark/references/macrostructures/02-long-document.md +35 -0
  130. package/skills/hallmark/references/macrostructures/03-marquee-hero.md +21 -0
  131. package/skills/hallmark/references/macrostructures/04-stat-led.md +21 -0
  132. package/skills/hallmark/references/macrostructures/05-workbench.md +21 -0
  133. package/skills/hallmark/references/macrostructures/06-conversational-faq.md +28 -0
  134. package/skills/hallmark/references/macrostructures/07-manifesto.md +28 -0
  135. package/skills/hallmark/references/macrostructures/08-photographic.md +21 -0
  136. package/skills/hallmark/references/macrostructures/09-quote-led.md +21 -0
  137. package/skills/hallmark/references/macrostructures/10-specimen.md +21 -0
  138. package/skills/hallmark/references/macrostructures/11-catalogue.md +21 -0
  139. package/skills/hallmark/references/macrostructures/12-letter.md +21 -0
  140. package/skills/hallmark/references/macrostructures/13-index-first.md +21 -0
  141. package/skills/hallmark/references/macrostructures/14-narrative-workflow.md +21 -0
  142. package/skills/hallmark/references/macrostructures/15-split-studio.md +21 -0
  143. package/skills/hallmark/references/macrostructures/16-feature-stack.md +23 -0
  144. package/skills/hallmark/references/macrostructures/17-type-specimen.md +19 -0
  145. package/skills/hallmark/references/macrostructures/18-portfolio-grid.md +21 -0
  146. package/skills/hallmark/references/macrostructures/19-map-diagram.md +21 -0
  147. package/skills/hallmark/references/macrostructures/20-ecosystem-index.md +19 -0
  148. package/skills/hallmark/references/macrostructures/21-component-playground.md +21 -0
  149. package/skills/hallmark/references/macrostructures.md +119 -0
  150. package/skills/hallmark/references/microinteractions.md +80 -0
  151. package/skills/hallmark/references/patterns.md +202 -0
  152. package/skills/hallmark/references/redesign.md +88 -0
  153. package/skills/hallmark/references/responsive.md +46 -0
  154. package/skills/hallmark/references/review-finish.md +19 -0
  155. package/skills/hallmark/references/review-hero.md +20 -0
  156. package/skills/hallmark/references/scroll-choreography.md +110 -0
  157. package/skills/hallmark/references/texture.md +90 -0
  158. package/skills/hallmark/references/themes/README.md +58 -0
  159. package/skills/hallmark/references/themes/almanac.jpg +0 -0
  160. package/skills/hallmark/references/themes/almanac.md +103 -0
  161. package/skills/hallmark/references/themes/arcade.jpg +0 -0
  162. package/skills/hallmark/references/themes/arcade.md +102 -0
  163. package/skills/hallmark/references/themes/atelier.jpg +0 -0
  164. package/skills/hallmark/references/themes/atelier.md +98 -0
  165. package/skills/hallmark/references/themes/bloom.jpg +0 -0
  166. package/skills/hallmark/references/themes/bloom.md +102 -0
  167. package/skills/hallmark/references/themes/blueprint.jpg +0 -0
  168. package/skills/hallmark/references/themes/blueprint.md +103 -0
  169. package/skills/hallmark/references/themes/broadside.jpg +0 -0
  170. package/skills/hallmark/references/themes/broadside.md +108 -0
  171. package/skills/hallmark/references/themes/brutal.jpg +0 -0
  172. package/skills/hallmark/references/themes/brutal.md +95 -0
  173. package/skills/hallmark/references/themes/carnival.jpg +0 -0
  174. package/skills/hallmark/references/themes/carnival.md +104 -0
  175. package/skills/hallmark/references/themes/cobalt.jpg +0 -0
  176. package/skills/hallmark/references/themes/cobalt.md +101 -0
  177. package/skills/hallmark/references/themes/console.jpg +0 -0
  178. package/skills/hallmark/references/themes/console.md +99 -0
  179. package/skills/hallmark/references/themes/coral.jpg +0 -0
  180. package/skills/hallmark/references/themes/coral.md +102 -0
  181. package/skills/hallmark/references/themes/darkroom.jpg +0 -0
  182. package/skills/hallmark/references/themes/darkroom.md +99 -0
  183. package/skills/hallmark/references/themes/dose.jpg +0 -0
  184. package/skills/hallmark/references/themes/dose.md +98 -0
  185. package/skills/hallmark/references/themes/dusk.jpg +0 -0
  186. package/skills/hallmark/references/themes/dusk.md +105 -0
  187. package/skills/hallmark/references/themes/editorial.jpg +0 -0
  188. package/skills/hallmark/references/themes/editorial.md +97 -0
  189. package/skills/hallmark/references/themes/formwork.jpg +0 -0
  190. package/skills/hallmark/references/themes/formwork.md +107 -0
  191. package/skills/hallmark/references/themes/furrow.jpg +0 -0
  192. package/skills/hallmark/references/themes/furrow.md +98 -0
  193. package/skills/hallmark/references/themes/garden.jpg +0 -0
  194. package/skills/hallmark/references/themes/garden.md +97 -0
  195. package/skills/hallmark/references/themes/grid.jpg +0 -0
  196. package/skills/hallmark/references/themes/grid.md +101 -0
  197. package/skills/hallmark/references/themes/halftone.jpg +0 -0
  198. package/skills/hallmark/references/themes/halftone.md +106 -0
  199. package/skills/hallmark/references/themes/hedgerow.jpg +0 -0
  200. package/skills/hallmark/references/themes/hedgerow.md +104 -0
  201. package/skills/hallmark/references/themes/hum.jpg +0 -0
  202. package/skills/hallmark/references/themes/hum.md +99 -0
  203. package/skills/hallmark/references/themes/index.json +2191 -0
  204. package/skills/hallmark/references/themes/ink.jpg +0 -0
  205. package/skills/hallmark/references/themes/ink.md +106 -0
  206. package/skills/hallmark/references/themes/kiln.jpg +0 -0
  207. package/skills/hallmark/references/themes/kiln.md +108 -0
  208. package/skills/hallmark/references/themes/loom.jpg +0 -0
  209. package/skills/hallmark/references/themes/loom.md +106 -0
  210. package/skills/hallmark/references/themes/lumen.jpg +0 -0
  211. package/skills/hallmark/references/themes/lumen.md +103 -0
  212. package/skills/hallmark/references/themes/manifesto.jpg +0 -0
  213. package/skills/hallmark/references/themes/manifesto.md +101 -0
  214. package/skills/hallmark/references/themes/midnight.jpg +0 -0
  215. package/skills/hallmark/references/themes/midnight.md +97 -0
  216. package/skills/hallmark/references/themes/newsprint.jpg +0 -0
  217. package/skills/hallmark/references/themes/newsprint.md +102 -0
  218. package/skills/hallmark/references/themes/overprint.jpg +0 -0
  219. package/skills/hallmark/references/themes/overprint.md +101 -0
  220. package/skills/hallmark/references/themes/pasteup.jpg +0 -0
  221. package/skills/hallmark/references/themes/pasteup.md +100 -0
  222. package/skills/hallmark/references/themes/piste.jpg +0 -0
  223. package/skills/hallmark/references/themes/piste.md +99 -0
  224. package/skills/hallmark/references/themes/ribbon.jpg +0 -0
  225. package/skills/hallmark/references/themes/ribbon.md +106 -0
  226. package/skills/hallmark/references/themes/rim.jpg +0 -0
  227. package/skills/hallmark/references/themes/rim.md +96 -0
  228. package/skills/hallmark/references/themes/riso.jpg +0 -0
  229. package/skills/hallmark/references/themes/riso.md +98 -0
  230. package/skills/hallmark/references/themes/solstice.jpg +0 -0
  231. package/skills/hallmark/references/themes/solstice.md +104 -0
  232. package/skills/hallmark/references/themes/specimen.jpg +0 -0
  233. package/skills/hallmark/references/themes/specimen.md +100 -0
  234. package/skills/hallmark/references/themes/spore.jpg +0 -0
  235. package/skills/hallmark/references/themes/spore.md +104 -0
  236. package/skills/hallmark/references/themes/sport.jpg +0 -0
  237. package/skills/hallmark/references/themes/sport.md +101 -0
  238. package/skills/hallmark/references/themes/squeeze.jpg +0 -0
  239. package/skills/hallmark/references/themes/squeeze.md +99 -0
  240. package/skills/hallmark/references/themes/sticker.jpg +0 -0
  241. package/skills/hallmark/references/themes/sticker.md +106 -0
  242. package/skills/hallmark/references/themes/studio.jpg +0 -0
  243. package/skills/hallmark/references/themes/studio.md +99 -0
  244. package/skills/hallmark/references/themes/terminal.jpg +0 -0
  245. package/skills/hallmark/references/themes/terminal.md +96 -0
  246. package/skills/hallmark/references/themes/terrazzo.jpg +0 -0
  247. package/skills/hallmark/references/themes/terrazzo.md +106 -0
  248. package/skills/hallmark/references/themes/ultraviolet.jpg +0 -0
  249. package/skills/hallmark/references/themes/ultraviolet.md +106 -0
  250. package/skills/hallmark/references/themes/vellum.jpg +0 -0
  251. package/skills/hallmark/references/themes/vellum.md +105 -0
  252. package/skills/hallmark/references/themes/wayfind.jpg +0 -0
  253. package/skills/hallmark/references/themes/wayfind.md +105 -0
  254. package/skills/hallmark/references/themes/werkstatt.jpg +0 -0
  255. package/skills/hallmark/references/themes/werkstatt.md +105 -0
  256. package/skills/hallmark/scripts/capture.mjs +125 -0
  257. package/skills/hallmark/scripts/fixtures/exemplars/atmospheric.html +324 -0
  258. package/skills/hallmark/scripts/fixtures/exemplars/editorial.html +363 -0
  259. package/skills/hallmark/scripts/fixtures/exemplars/modern-minimal.html +527 -0
  260. package/skills/hallmark/scripts/fixtures/exemplars/playful.html +353 -0
  261. package/skills/hallmark/scripts/fixtures/eyebrow-fail/index.html +118 -0
  262. package/skills/hallmark/scripts/fixtures/eyebrow-pass/index.html +137 -0
  263. package/skills/hallmark/scripts/fixtures/kept/after.html +27 -0
  264. package/skills/hallmark/scripts/fixtures/kept/before.html +26 -0
  265. package/skills/hallmark/scripts/fixtures/slopped.html +145 -0
  266. package/skills/hallmark/scripts/fixtures/tailwind-fail/Feature.vue +14 -0
  267. package/skills/hallmark/scripts/fixtures/tailwind-fail/Hero.tsx +33 -0
  268. package/skills/hallmark/scripts/fixtures/tailwind-fail/index.html +74 -0
  269. package/skills/hallmark/scripts/fixtures/tailwind-fail/style.css +6 -0
  270. package/skills/hallmark/scripts/fixtures/tailwind-pass/Hero.tsx +33 -0
  271. package/skills/hallmark/scripts/fixtures/tailwind-pass/index.html +57 -0
  272. package/skills/hallmark/scripts/fixtures/tailwind-pass/style.css +15 -0
  273. package/skills/hallmark/scripts/fixtures/waiver/index.html +54 -0
  274. package/skills/hallmark/scripts/imagegen.mjs +85 -0
  275. package/skills/hallmark/scripts/install-hook.mjs +70 -0
  276. package/skills/hallmark/scripts/install.mjs +141 -0
  277. package/skills/hallmark/scripts/lint-hook.mjs +49 -0
  278. package/skills/hallmark/scripts/photos.json +1 -0
  279. package/skills/hallmark/scripts/picture.mjs +71 -0
  280. package/skills/hallmark/scripts/refcheck.mjs +352 -0
  281. package/skills/hallmark/scripts/sloplint-render.mjs +1252 -0
  282. package/skills/hallmark/scripts/sloplint.mjs +4422 -0
  283. package/skills/hallmark/scripts/theme.mjs +650 -0
  284. package/skills/harness/SKILL.md +17 -8
  285. package/skills/i-have-adhd/SKILL.md +32 -12
  286. package/skills/no-ai-slop/SKILL.md +15 -1
  287. package/skills/plan-add/SKILL.md +38 -27
  288. package/skills/plan-status/SKILL.md +13 -7
  289. package/skills/plan-sync/SKILL.md +18 -12
  290. package/skills/pm-frameworks/SKILL.md +19 -10
  291. package/skills/pm-frameworks/SOURCE +7 -5
  292. package/skills/ponytail/SKILL.md +19 -14
  293. package/skills/product-analysis/SKILL.md +22 -18
  294. package/skills/product-flow/SKILL.md +14 -9
  295. package/skills/research/SKILL.md +97 -48
  296. package/skills/rl-env/SKILL.md +25 -13
  297. package/skills/rl-env/SOURCE +8 -6
  298. package/skills/tezgah-contract/SKILL.md +65 -47
  299. package/statusline.py +20 -9
  300. package/workflows/graph-review.js +14 -2
  301. package/bin/tezgah-skill.py +0 -59
  302. /package/skills/ai-research/0-autoresearch-skill/{SKILL.md → ENTRY.md} +0 -0
  303. /package/skills/ai-research/01-model-architecture/litgpt/{SKILL.md → ENTRY.md} +0 -0
  304. /package/skills/ai-research/01-model-architecture/mamba/{SKILL.md → ENTRY.md} +0 -0
  305. /package/skills/ai-research/01-model-architecture/nanogpt/{SKILL.md → ENTRY.md} +0 -0
  306. /package/skills/ai-research/01-model-architecture/rwkv/{SKILL.md → ENTRY.md} +0 -0
  307. /package/skills/ai-research/01-model-architecture/torchtitan/{SKILL.md → ENTRY.md} +0 -0
  308. /package/skills/ai-research/02-tokenization/huggingface-tokenizers/{SKILL.md → ENTRY.md} +0 -0
  309. /package/skills/ai-research/02-tokenization/sentencepiece/{SKILL.md → ENTRY.md} +0 -0
  310. /package/skills/ai-research/03-fine-tuning/axolotl/{SKILL.md → ENTRY.md} +0 -0
  311. /package/skills/ai-research/03-fine-tuning/llama-factory/{SKILL.md → ENTRY.md} +0 -0
  312. /package/skills/ai-research/03-fine-tuning/peft/{SKILL.md → ENTRY.md} +0 -0
  313. /package/skills/ai-research/03-fine-tuning/unsloth/{SKILL.md → ENTRY.md} +0 -0
  314. /package/skills/ai-research/04-mechanistic-interpretability/nnsight/{SKILL.md → ENTRY.md} +0 -0
  315. /package/skills/ai-research/04-mechanistic-interpretability/pyvene/{SKILL.md → ENTRY.md} +0 -0
  316. /package/skills/ai-research/04-mechanistic-interpretability/saelens/{SKILL.md → ENTRY.md} +0 -0
  317. /package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/{SKILL.md → ENTRY.md} +0 -0
  318. /package/skills/ai-research/05-data-processing/nemo-curator/{SKILL.md → ENTRY.md} +0 -0
  319. /package/skills/ai-research/05-data-processing/ray-data/{SKILL.md → ENTRY.md} +0 -0
  320. /package/skills/ai-research/06-post-training/grpo-rl-training/{SKILL.md → ENTRY.md} +0 -0
  321. /package/skills/ai-research/06-post-training/miles/{SKILL.md → ENTRY.md} +0 -0
  322. /package/skills/ai-research/06-post-training/openrlhf/{SKILL.md → ENTRY.md} +0 -0
  323. /package/skills/ai-research/06-post-training/simpo/{SKILL.md → ENTRY.md} +0 -0
  324. /package/skills/ai-research/06-post-training/slime/{SKILL.md → ENTRY.md} +0 -0
  325. /package/skills/ai-research/06-post-training/torchforge/{SKILL.md → ENTRY.md} +0 -0
  326. /package/skills/ai-research/06-post-training/trl-fine-tuning/{SKILL.md → ENTRY.md} +0 -0
  327. /package/skills/ai-research/06-post-training/verl/{SKILL.md → ENTRY.md} +0 -0
  328. /package/skills/ai-research/07-safety-alignment/constitutional-ai/{SKILL.md → ENTRY.md} +0 -0
  329. /package/skills/ai-research/07-safety-alignment/llamaguard/{SKILL.md → ENTRY.md} +0 -0
  330. /package/skills/ai-research/07-safety-alignment/nemo-guardrails/{SKILL.md → ENTRY.md} +0 -0
  331. /package/skills/ai-research/07-safety-alignment/prompt-guard/{SKILL.md → ENTRY.md} +0 -0
  332. /package/skills/ai-research/08-distributed-training/accelerate/{SKILL.md → ENTRY.md} +0 -0
  333. /package/skills/ai-research/08-distributed-training/deepspeed/{SKILL.md → ENTRY.md} +0 -0
  334. /package/skills/ai-research/08-distributed-training/megatron-core/{SKILL.md → ENTRY.md} +0 -0
  335. /package/skills/ai-research/08-distributed-training/pytorch-fsdp2/{SKILL.md → ENTRY.md} +0 -0
  336. /package/skills/ai-research/08-distributed-training/pytorch-lightning/{SKILL.md → ENTRY.md} +0 -0
  337. /package/skills/ai-research/08-distributed-training/ray-train/{SKILL.md → ENTRY.md} +0 -0
  338. /package/skills/ai-research/09-infrastructure/lambda-labs/{SKILL.md → ENTRY.md} +0 -0
  339. /package/skills/ai-research/09-infrastructure/modal/{SKILL.md → ENTRY.md} +0 -0
  340. /package/skills/ai-research/09-infrastructure/skypilot/{SKILL.md → ENTRY.md} +0 -0
  341. /package/skills/ai-research/10-optimization/awq/{SKILL.md → ENTRY.md} +0 -0
  342. /package/skills/ai-research/10-optimization/bitsandbytes/{SKILL.md → ENTRY.md} +0 -0
  343. /package/skills/ai-research/10-optimization/flash-attention/{SKILL.md → ENTRY.md} +0 -0
  344. /package/skills/ai-research/10-optimization/gguf/{SKILL.md → ENTRY.md} +0 -0
  345. /package/skills/ai-research/10-optimization/gptq/{SKILL.md → ENTRY.md} +0 -0
  346. /package/skills/ai-research/10-optimization/hqq/{SKILL.md → ENTRY.md} +0 -0
  347. /package/skills/ai-research/10-optimization/ml-training-recipes/{SKILL.md → ENTRY.md} +0 -0
  348. /package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/{SKILL.md → ENTRY.md} +0 -0
  349. /package/skills/ai-research/11-evaluation/lm-evaluation-harness/{SKILL.md → ENTRY.md} +0 -0
  350. /package/skills/ai-research/11-evaluation/nemo-evaluator/{SKILL.md → ENTRY.md} +0 -0
  351. /package/skills/ai-research/12-inference-serving/llama-cpp/{SKILL.md → ENTRY.md} +0 -0
  352. /package/skills/ai-research/12-inference-serving/sglang/{SKILL.md → ENTRY.md} +0 -0
  353. /package/skills/ai-research/12-inference-serving/tensorrt-llm/{SKILL.md → ENTRY.md} +0 -0
  354. /package/skills/ai-research/12-inference-serving/vllm/{SKILL.md → ENTRY.md} +0 -0
  355. /package/skills/ai-research/13-mlops/mlflow/{SKILL.md → ENTRY.md} +0 -0
  356. /package/skills/ai-research/13-mlops/swanlab/{SKILL.md → ENTRY.md} +0 -0
  357. /package/skills/ai-research/13-mlops/tensorboard/{SKILL.md → ENTRY.md} +0 -0
  358. /package/skills/ai-research/13-mlops/weights-and-biases/{SKILL.md → ENTRY.md} +0 -0
  359. /package/skills/ai-research/14-agents/a-evolve/{SKILL.md → ENTRY.md} +0 -0
  360. /package/skills/ai-research/14-agents/autogpt/{SKILL.md → ENTRY.md} +0 -0
  361. /package/skills/ai-research/14-agents/crewai/{SKILL.md → ENTRY.md} +0 -0
  362. /package/skills/ai-research/14-agents/langchain/{SKILL.md → ENTRY.md} +0 -0
  363. /package/skills/ai-research/14-agents/llamaindex/{SKILL.md → ENTRY.md} +0 -0
  364. /package/skills/ai-research/15-rag/chroma/{SKILL.md → ENTRY.md} +0 -0
  365. /package/skills/ai-research/15-rag/faiss/{SKILL.md → ENTRY.md} +0 -0
  366. /package/skills/ai-research/15-rag/pinecone/{SKILL.md → ENTRY.md} +0 -0
  367. /package/skills/ai-research/15-rag/qdrant/{SKILL.md → ENTRY.md} +0 -0
  368. /package/skills/ai-research/15-rag/sentence-transformers/{SKILL.md → ENTRY.md} +0 -0
  369. /package/skills/ai-research/16-prompt-engineering/dspy/{SKILL.md → ENTRY.md} +0 -0
  370. /package/skills/ai-research/16-prompt-engineering/guidance/{SKILL.md → ENTRY.md} +0 -0
  371. /package/skills/ai-research/16-prompt-engineering/instructor/{SKILL.md → ENTRY.md} +0 -0
  372. /package/skills/ai-research/16-prompt-engineering/outlines/{SKILL.md → ENTRY.md} +0 -0
  373. /package/skills/ai-research/17-observability/langsmith/{SKILL.md → ENTRY.md} +0 -0
  374. /package/skills/ai-research/17-observability/phoenix/{SKILL.md → ENTRY.md} +0 -0
  375. /package/skills/ai-research/18-multimodal/audiocraft/{SKILL.md → ENTRY.md} +0 -0
  376. /package/skills/ai-research/18-multimodal/blip-2/{SKILL.md → ENTRY.md} +0 -0
  377. /package/skills/ai-research/18-multimodal/clip/{SKILL.md → ENTRY.md} +0 -0
  378. /package/skills/ai-research/18-multimodal/cosmos-policy/{SKILL.md → ENTRY.md} +0 -0
  379. /package/skills/ai-research/18-multimodal/llava/{SKILL.md → ENTRY.md} +0 -0
  380. /package/skills/ai-research/18-multimodal/openpi/{SKILL.md → ENTRY.md} +0 -0
  381. /package/skills/ai-research/18-multimodal/openvla-oft/{SKILL.md → ENTRY.md} +0 -0
  382. /package/skills/ai-research/18-multimodal/segment-anything/{SKILL.md → ENTRY.md} +0 -0
  383. /package/skills/ai-research/18-multimodal/stable-diffusion/{SKILL.md → ENTRY.md} +0 -0
  384. /package/skills/ai-research/18-multimodal/whisper/{SKILL.md → ENTRY.md} +0 -0
  385. /package/skills/ai-research/19-emerging-techniques/knowledge-distillation/{SKILL.md → ENTRY.md} +0 -0
  386. /package/skills/ai-research/19-emerging-techniques/long-context/{SKILL.md → ENTRY.md} +0 -0
  387. /package/skills/ai-research/19-emerging-techniques/model-merging/{SKILL.md → ENTRY.md} +0 -0
  388. /package/skills/ai-research/19-emerging-techniques/model-pruning/{SKILL.md → ENTRY.md} +0 -0
  389. /package/skills/ai-research/19-emerging-techniques/moe-training/{SKILL.md → ENTRY.md} +0 -0
  390. /package/skills/ai-research/19-emerging-techniques/speculative-decoding/{SKILL.md → ENTRY.md} +0 -0
  391. /package/skills/ai-research/20-ml-paper-writing/academic-plotting/{SKILL.md → ENTRY.md} +0 -0
  392. /package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/{SKILL.md → ENTRY.md} +0 -0
  393. /package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/{SKILL.md → ENTRY.md} +0 -0
  394. /package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/{SKILL.md → ENTRY.md} +0 -0
  395. /package/skills/ai-research/21-research-ideation/brainstorming-research-ideas/{SKILL.md → ENTRY.md} +0 -0
  396. /package/skills/ai-research/21-research-ideation/creative-thinking-for-research/{SKILL.md → ENTRY.md} +0 -0
  397. /package/skills/ai-research/22-agent-native-research-artifact/compiler/{SKILL.md → ENTRY.md} +0 -0
  398. /package/skills/ai-research/22-agent-native-research-artifact/research-manager/{SKILL.md → ENTRY.md} +0 -0
  399. /package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/{SKILL.md → ENTRY.md} +0 -0
  400. /package/skills/design-library/adaptive-interfaces/skills/colour-independence/{SKILL.md → ENTRY.md} +0 -0
  401. /package/skills/design-library/adaptive-interfaces/skills/flexible-typography/{SKILL.md → ENTRY.md} +0 -0
  402. /package/skills/design-library/adaptive-interfaces/skills/information-density/{SKILL.md → ENTRY.md} +0 -0
  403. /package/skills/design-library/adaptive-interfaces/skills/preference-audit/{SKILL.md → ENTRY.md} +0 -0
  404. /package/skills/design-library/adaptive-interfaces/skills/responsive-accessibility/{SKILL.md → ENTRY.md} +0 -0
  405. /package/skills/design-library/adaptive-interfaces/skills/responsive-review/{SKILL.md → ENTRY.md} +0 -0
  406. /package/skills/design-library/adaptive-interfaces/skills/simplified-views/{SKILL.md → ENTRY.md} +0 -0
  407. /package/skills/design-library/adaptive-interfaces/skills/specify/{SKILL.md → ENTRY.md} +0 -0
  408. /package/skills/design-library/adaptive-interfaces/skills/user-preference-respect/{SKILL.md → ENTRY.md} +0 -0
  409. /package/skills/design-library/cognitive-accessibility/skills/adaptive-personalisation/{SKILL.md → ENTRY.md} +0 -0
  410. /package/skills/design-library/cognitive-accessibility/skills/assess-load/{SKILL.md → ENTRY.md} +0 -0
  411. /package/skills/design-library/cognitive-accessibility/skills/cognitive-load-assessment/{SKILL.md → ENTRY.md} +0 -0
  412. /package/skills/design-library/cognitive-accessibility/skills/contextual-help-design/{SKILL.md → ENTRY.md} +0 -0
  413. /package/skills/design-library/cognitive-accessibility/skills/error-prevention-recovery/{SKILL.md → ENTRY.md} +0 -0
  414. /package/skills/design-library/cognitive-accessibility/skills/focus-attention-design/{SKILL.md → ENTRY.md} +0 -0
  415. /package/skills/design-library/cognitive-accessibility/skills/memory-load-reduction/{SKILL.md → ENTRY.md} +0 -0
  416. /package/skills/design-library/cognitive-accessibility/skills/plain-language-design/{SKILL.md → ENTRY.md} +0 -0
  417. /package/skills/design-library/cognitive-accessibility/skills/review/{SKILL.md → ENTRY.md} +0 -0
  418. /package/skills/design-library/cognitive-accessibility/skills/simplify/{SKILL.md → ENTRY.md} +0 -0
  419. /package/skills/design-library/cognitive-accessibility/skills/wayfinding-navigation/{SKILL.md → ENTRY.md} +0 -0
  420. /package/skills/design-library/design-research/skills/behavioural-analytics/{SKILL.md → ENTRY.md} +0 -0
  421. /package/skills/design-library/design-research/skills/qual-quant-triangulation/{SKILL.md → ENTRY.md} +0 -0
  422. /package/skills/design-library/inclusive-interaction/skills/audit/{SKILL.md → ENTRY.md} +0 -0
  423. /package/skills/design-library/inclusive-interaction/skills/design-flow/{SKILL.md → ENTRY.md} +0 -0
  424. /package/skills/design-library/inclusive-interaction/skills/feedback-and-status/{SKILL.md → ENTRY.md} +0 -0
  425. /package/skills/design-library/inclusive-interaction/skills/gesture-alternatives/{SKILL.md → ENTRY.md} +0 -0
  426. /package/skills/design-library/inclusive-interaction/skills/keyboard-navigation/{SKILL.md → ENTRY.md} +0 -0
  427. /package/skills/design-library/inclusive-interaction/skills/keyboard-review/{SKILL.md → ENTRY.md} +0 -0
  428. /package/skills/design-library/inclusive-interaction/skills/motion-sensitivity/{SKILL.md → ENTRY.md} +0 -0
  429. /package/skills/design-library/inclusive-interaction/skills/multi-modal-input/{SKILL.md → ENTRY.md} +0 -0
  430. /package/skills/design-library/inclusive-interaction/skills/touch-target-design/{SKILL.md → ENTRY.md} +0 -0
  431. /package/skills/design-library/inclusive-interaction/skills/voice-interaction/{SKILL.md → ENTRY.md} +0 -0
  432. /package/skills/design-library/visual-critique/skills/critique-affordance/{SKILL.md → ENTRY.md} +0 -0
  433. /package/skills/design-library/visual-critique/skills/critique-brand-consistency/{SKILL.md → ENTRY.md} +0 -0
  434. /package/skills/design-library/visual-critique/skills/critique-color/{SKILL.md → ENTRY.md} +0 -0
  435. /package/skills/design-library/visual-critique/skills/critique-composition/{SKILL.md → ENTRY.md} +0 -0
  436. /package/skills/design-library/visual-critique/skills/critique-information-density/{SKILL.md → ENTRY.md} +0 -0
  437. /package/skills/design-library/visual-critique/skills/critique-typography/{SKILL.md → ENTRY.md} +0 -0
  438. /package/skills/design-library/visual-critique/skills/critique-visual-hierarchy/{SKILL.md → ENTRY.md} +0 -0
  439. /package/skills/pm-frameworks/intended-vs-implemented/{SKILL.md → ENTRY.md} +0 -0
  440. /package/skills/pm-frameworks/opportunity-solution-tree/{SKILL.md → ENTRY.md} +0 -0
  441. /package/skills/rl-env/generate-nemo-gym-env/{SKILL.md → ENTRY.md} +0 -0
  442. /package/skills/rl-env/generate-openenv-env/{SKILL.md → ENTRY.md} +0 -0
  443. /package/skills/rl-env/generate-ors-env/{SKILL.md → ENTRY.md} +0 -0
  444. /package/skills/rl-env/generate-verifiers-env/{SKILL.md → ENTRY.md} +0 -0
  445. /package/skills/rl-env/rl-env-from-description/{SKILL.md → ENTRY.md} +0 -0
@@ -89,9 +89,11 @@ EMPTY_IS_NOT_PROOF = (
89
89
  # The task class each generated specialist is for, in the order the steering
90
90
  # line names them. The orchestrator is not here: it is a primary agent, not one
91
91
  # the main thread delegates to.
92
- STEER = (("mechanical edit (tier from `tezgah-route`)", "tezgah-cheap"),
92
+ STEER = (("mechanical edit (tier from `~/.config/tezgah/bin/tezgah-route`)", "tezgah-cheap"),
93
93
  ("bounded code or tests", "tezgah-standard"),
94
- ("design, invariants, unknown-cause debugging", "tezgah-frontier"),
94
+ ("software design, invariants, unknown-cause debugging", "tezgah-frontier"),
95
+ ("UI/screen/component build or redesign (brief loads design-contract)",
96
+ "tezgah-standard"),
95
97
  ("review of a diff", "tezgah-reviewer"),
96
98
  ("running the impacted checks", "tezgah-tester"),
97
99
  ("docs and path:line citations", "tezgah-docs"),
@@ -231,13 +233,27 @@ def _reviewer_body(host):
231
233
  "security, tests and performance) or per file group: when your brief\n"
232
234
  "names a dimension or files, review only those - a sibling owns the rest.\n"
233
235
  "Round two reads only the delta since the sha round one recorded\n"
234
- "(`tezgah-task review` prints it), plus the round-one hunks and direct\n"
235
- "callers of the symbols that delta touches, and marks every round-one\n"
236
+ "(`~/.config/tezgah/bin/tezgah-task review` prints it), plus the\n"
237
+ "round-one hunks and direct callers of the symbols that delta touches,\n"
238
+ "and marks every round-one\n"
236
239
  "finding closed or open: re-reading the whole diff re-reports what was\n"
237
240
  "already triaged. Test results are input, not a task - read the author's\n"
238
241
  "output file; do not run the suite, and run at most one `-k` test when a\n"
239
242
  "specific accusation needs it. The same defect family confirmed in both\n"
240
243
  "rounds is a sign the design needs a pivot, not another patch.\n\n"
244
+ "When the brief carries an OCR rule group, its rule text is the checklist\n"
245
+ "for those files: account for every listed file as reviewed or skipped\n"
246
+ "with a reason, and still apply everything above - OCR output is input,\n"
247
+ "never a verdict.\n\n"
248
+ "Plan readiness. When the target is a plan file\n"
249
+ "(`.tezgah/plans/open/NNN-*.md`) rather than a diff, review whether it\n"
250
+ "can be built without a question. First restate each section's intent\n"
251
+ "in one sentence of your own; a section you cannot restate lacks\n"
252
+ "context, which is a major finding. Then check that every choice the\n"
253
+ "build needs is made in the plan - schema, API path, dependency,\n"
254
+ "edge-case handling, the files to change; a choice left to the\n"
255
+ "implementer is a major finding. A file the plan will create is not a\n"
256
+ "missing reference. Classify and report exactly as for a diff.\n\n"
241
257
  "%s" % (_graph_howto(host), _blast_radius(host), EMPTY_IS_NOT_PROOF,
242
258
  decision, decision, _may_use(host)))
243
259
 
@@ -258,11 +274,26 @@ def _worker_body(tier):
258
274
  "report what changed and what each check printed, verbatim. Report\n"
259
275
  "progress, but never redefine the work. Never widen or narrow the brief's\n"
260
276
  "scope, budget or question. If the brief cannot be met as written, say\n"
261
- "so and stop rather than answering a different question.\n%s\n"
262
- "Never spawn subagents.\n%s" % (tier, tier, scope, WORKER_OUTPUT))
277
+ "so and stop rather than answering a different question.\n%s\n%s"
278
+ "A brief that builds or changes UI: read the `design-contract` skill\n"
279
+ "(and `design-library` for critique) and derive/check with\n"
280
+ "`~/.config/tezgah/bin/tezgah-design` before editing.\n"
281
+ "Never spawn subagents.\n%s" % (tier, tier, scope, OWNER_ESCALATE,
282
+ WORKER_OUTPUT))
263
283
  return body
264
284
 
265
285
 
286
+ # A question only the owner can answer climbs past every tier to the user: a
287
+ # worker that settles it itself, frontier included, decided for the owner
288
+ # (plan 136: a line ran under a hidden dir and wrote `chosen:` with no owner
289
+ # choice). One text on every tier.
290
+ OWNER_ESCALATE = ("A question only the owner can answer - choosing a variant or option a\n"
291
+ "research, analysis or review recommends; a way around a tezgah\n"
292
+ "refusal; deciding about another session's work (its line, plan or\n"
293
+ "branch) - is never yours to decide, on any tier: stop and answer\n"
294
+ "`ESCALATE: owner` with the options and a recommended default.\n")
295
+
296
+
266
297
  # The report a consumer reads: the orchestrator re-briefs a report missing one
267
298
  # of these fields (_orch_body), so only a role with a reader gets them. One
268
299
  # text on every host, since a worker body ignores its host.
@@ -272,7 +303,8 @@ WORKER_OUTPUT = ("End the report, after any other shape asked for, with `Output
272
303
  "- commit: the sha\n"
273
304
  "- checks: each command, its exit code and the last lines of its\n"
274
305
  " output file, verbatim\n"
275
- "- escalate: the `ESCALATE:` reason (always `none` on tezgah-frontier)")
306
+ "- escalate: the `ESCALATE:` reason (on tezgah-frontier only\n"
307
+ " `ESCALATE: owner`, else `none`)")
276
308
 
277
309
 
278
310
  # The specialists beside the tier workers: name -> (what it does, the skills it
@@ -330,19 +362,22 @@ SPECIALISTS = {
330
362
  "shell and browser/device tools; no source edits",
331
363
  "Read the running app, never only its source: a UI claim inferred from\n"
332
364
  "code is not evidence. Measure against `.tezgah/design-contract.md` when\n"
333
- "it exists (`tezgah-design check`). Every finding names the screen,\n"
334
- "breakpoint and state it came from and a 0-4 severity. Report findings;\n"
335
- "do not edit source files."),
365
+ "it exists (`~/.config/tezgah/bin/tezgah-design check`). Every finding\n"
366
+ "names the screen, breakpoint and state it came from and a 0-4 severity.\n"
367
+ "Report findings; do not edit source files."),
336
368
  "tezgah-researcher": (
337
369
  "Runs one research line through OpenResearch: hypotheses, experiments, "
338
370
  "literature, a report - the protocol frozen before the run.",
339
371
  ("research", "ai-research"),
340
- "shell for `orx` and `tezgah-research`; writes only under .tezgah/research",
372
+ "shell for `orx` and `~/.config/tezgah/bin/tezgah-research`; writes only "
373
+ "under .tezgah/research",
341
374
  "Load the OpenResearch manual first (`orx skill`) and follow its\n"
342
375
  "experiment-tree rules. Work inside the one line the brief names; never\n"
343
- "open a second line while one is open (`tezgah-research status`). Freeze\n"
376
+ "open a second line while one is open\n"
377
+ "(`~/.config/tezgah/bin/tezgah-research status`). Freeze\n"
344
378
  "the protocol and the criteria before any run; a correction after a run\n"
345
- "goes in `amendments.md`. Run `tezgah-research check` before reporting.\n"
379
+ "goes in `amendments.md`. Run `~/.config/tezgah/bin/tezgah-research check`\n"
380
+ "before reporting.\n"
346
381
  "If `orx` is not installed, say so and stop."),
347
382
  }
348
383
 
@@ -351,7 +386,7 @@ def _specialist_desc(name):
351
386
  what, skills, tools, _role = SPECIALISTS[name]
352
387
  named = ", ".join(s + (" (host-installed)" if s in HOST_SKILLS else "")
353
388
  for s in skills)
354
- return "%s Skills: %s. Tier: %s (tezgah-route). Tools: %s." % (
389
+ return "%s Skills: %s. Tier: %s (~/.config/tezgah/bin/tezgah-route). Tools: %s." % (
355
390
  what, named or "none", tm.AGENT_SLOT[name], tools)
356
391
 
357
392
 
@@ -386,12 +421,13 @@ ROLES = (
386
421
  ("tezgah-cheap",
387
422
  "Mechanical, fully specified edits on the cheapest model tier: renames, "
388
423
  "fixtures, formatting, version bumps, commit messages, a listed migration. "
389
- "Chosen by `tezgah-route`; answers ESCALATE when the work needs judgement.",
424
+ "Chosen by `~/.config/tezgah/bin/tezgah-route`; answers ESCALATE when the "
425
+ "work needs judgement.",
390
426
  lambda infra: True, _worker_body("cheap"), False),
391
427
  ("tezgah-standard",
392
428
  "Bounded code, tests, search-and-summarise or a small review on the standard "
393
- "model tier. Chosen by `tezgah-route`; answers ESCALATE when the work needs "
394
- "judgement above it.",
429
+ "model tier. Chosen by `~/.config/tezgah/bin/tezgah-route`; answers ESCALATE "
430
+ "when the work needs judgement above it.",
395
431
  lambda infra: True, _worker_body("standard"), False),
396
432
  ("tezgah-frontier",
397
433
  "Design, stored-data or ordering invariants, security-sensitive code, "
@@ -447,26 +483,30 @@ def _orch_body(names):
447
483
  "on its slice id. Never `wait` while a ready step exists. Once every\n"
448
484
  "open item is blocked on a running slice, `wait` or end the turn - the\n"
449
485
  "host wakes you on the result. You integrate the branches in the order\n"
450
- "`tezgah-task slice merge-plan` prints, and own CHANGELOG.md, MANIFEST\n"
451
- "and the citation baseline. The per-turn\n"
486
+ "`~/.config/tezgah/bin/tezgah-task slice merge-plan` prints, and own\n"
487
+ "CHANGELOG.md, MANIFEST and the citation baseline. The per-turn\n"
452
488
  "checks of what changed still run in the turn, in the background; only\n"
453
489
  "the heavy tier (full suite, neuter, e2e) is joined at merge.\n"
454
490
  "A slice commits `wip: <step>` after each step. A stopped slice is\n"
455
- "resumed (`tezgah-task slice resume <id>`) or re-dispatched, never\n"
456
- "silently absorbed inline; run `tezgah-task slice reconcile --prune`\n"
491
+ "resumed (`~/.config/tezgah/bin/tezgah-task slice resume <id>`) or\n"
492
+ "re-dispatched, never silently absorbed inline; run\n"
493
+ "`~/.config/tezgah/bin/tezgah-task slice reconcile --prune`\n"
457
494
  "before the turn that merged slices ends.\n\n"
458
495
  "Route reviews to tezgah-reviewer, with the changed files and symbols in\n"
459
496
  "the brief: where it has no shell it cannot run `git diff` itself. Checks\n"
460
497
  "go to tezgah-tester, docs and citations to tezgah-docs, a security review\n"
461
498
  "to tezgah-security, a running app to tezgah-ui, a research line to\n"
462
499
  "tezgah-researcher. Brief a code-discovery task to a tier worker with the\n"
463
- "codegraph tools; a second opinion (`consult`) stays with the main\n"
464
- "thread. Other work goes to the tier worker\n"
465
- "`tezgah-route \"<brief>\"` names (tezgah-cheap, tezgah-standard,\n"
466
- "tezgah-frontier). A report missing an `Output to orchestrator` field,\n"
500
+ "codegraph tools; a second opinion (`~/.config/tezgah/bin/consult`) stays\n"
501
+ "with the main thread. Other work goes to the tier worker\n"
502
+ "`~/.config/tezgah/bin/tezgah-route \"<brief>\"` names (tezgah-cheap,\n"
503
+ "tezgah-standard, tezgah-frontier). A report missing an\n"
504
+ "`Output to orchestrator` field,\n"
467
505
  "or an ESCALATE, gets one narrower re-brief of the same role naming the\n"
468
506
  "missing field or the escalated judgement; only a second miss is\n"
469
507
  "restarted on tezgah-frontier with the original brief, never continued.\n"
508
+ "An `ESCALATE: owner` is neither: its options and default go to the user\n"
509
+ "in the approval batch, and the orchestrator never answers it itself.\n"
470
510
  "Never delegate a task a specialist is not\n"
471
511
  "listed for, and never let a subagent spawn its own subagents. Verify each\n"
472
512
  "returned claim against the code before acting." % (listed, say()["blocker_tokens"]))
@@ -127,6 +127,10 @@ def _probe_orx():
127
127
  return _tp("orx_bin")()
128
128
 
129
129
 
130
+ def _probe_ocr():
131
+ return _tp("ocr_bin")()
132
+
133
+
130
134
  # The fetch-and-convert step of an embedding row, run by the installer as its
131
135
  # `cmd`, and the probe that answers whether the pinned file is in place.
132
136
  _EMBED = os.path.join(os.path.dirname(os.path.abspath(__file__)), "tezgah_embed.py")
@@ -209,6 +213,20 @@ REGISTRY = (
209
213
  "cmd": ["sh", "-c",
210
214
  "curl -LsSf https://openresearch.sh/install.sh | sh"],
211
215
  "why": "research routing (OpenResearch)"}},
216
+ # Opt-in, not a server: open-code-review's deterministic review spec
217
+ # (`ocr delegate preview|rule`, no model call) for the reviewer brief, and
218
+ # on omp its own loop on omp's model (bin/tezgah-ocr-review). Plan 125.
219
+ {"id": "ocr",
220
+ "name": "ocr",
221
+ "why": "review spec: file selection and per-file rules (open-code-review)",
222
+ "command": None,
223
+ "env": None,
224
+ "default": False,
225
+ "dep": {"name": "ocr", "probe": _probe_ocr, "needs": ("npm",),
226
+ # 1.13.2 is the release under 375f64c (the vendored prompts' commit);
227
+ # its prompts, delegate and rules are identical to 375f64c's
228
+ "cmd": ["npm", "install", "-g", "@alibaba-group/open-code-review@1.13.2"],
229
+ "why": "the review spec in the reviewer brief"}},
212
230
  # Opt-in, not servers: a static embedding model fused with BM25 for the
213
231
  # per-turn lessons and the docs fallback (hooks/tezgah_embed.py). Enabling
214
232
  # one fetches and converts its pinned file; the first selected one is used.
@@ -11,8 +11,9 @@ One store, not two: the install record is the per-artifact sha file the contract
11
11
  artifacts already use (`contract.sha256`, `bin/tezgah-setup::record_contract`),
12
12
  one line per entry under a `hook:<host>:<entry>` key. An entry is one hook event's
13
13
  tezgah-owned groups (Claude, dsh, Codex, Cursor - so a removed PreToolUse is named
14
- while PostToolUse stays), opencode's plugin links, and nothing for omp: its bridge
15
- is compared to a fresh render, the way `rules_current` compares a rules file. The
14
+ while PostToolUse stays), opencode's plugin links, and nothing for omp and Amp:
15
+ their bridge or plugin is compared to a fresh render, the way `rules_current`
16
+ compares a rules file. The
16
17
  code an entry runs is hashed only on a packaged install (a tree with no `.git`):
17
18
  a checkout install points into a tree its owner edits on purpose. A hook file
18
19
  any user can write (0666) is drift too; group write is left alone, because a
@@ -43,10 +44,22 @@ CODE_TARGETS = {
43
44
  "cursor": (os.path.join("hosts", "cursor", "hook.py"),),
44
45
  "opencode": (os.path.join("hosts", "opencode", "plugins", "tezgah.js"),),
45
46
  "omp": (os.path.join("hosts", "omp", "hook.py"),),
47
+ "qwen": (os.path.join("hosts", "qwen", "hook.py"),),
48
+ "droid": (os.path.join("hosts", "droid", "hook.py"),),
49
+ "commandcode": (os.path.join("hosts", "commandcode", "hook.py"),),
50
+ "copilot": (os.path.join("hosts", "copilot", "hook.py"),),
51
+ "gemini": (os.path.join("hosts", "gemini", "hook.py"),),
52
+ "antigravity": (os.path.join("hosts", "antigravity", "hook.py"),),
53
+ "goose": (os.path.join("hosts", "goose", "hook.py"),),
54
+ "amp": (os.path.join("hosts", "amp", "hook.py"),
55
+ os.path.join("hosts", "amp", "tezgah-plugin.ts.in")),
46
56
  }
47
57
  OPENCODE_DIRS = ("plugins", "plugin")
48
58
  OMP_BRIDGE = os.path.join(tp.HOST_DIRS["omp"], "agent", "hooks", "pre",
49
59
  "tezgah-hook.ts")
60
+ # The first line of every Amp plugin tezgah renders: an uninstall removes a
61
+ # file at AMP_PLUGIN only when it equals a fresh render or starts with this.
62
+ AMP_HEADER = "// tezgah: Amp plugin rendered by tezgah-setup"
50
63
 
51
64
 
52
65
  def sha(text):
@@ -82,10 +95,15 @@ def own_groups(data, own=False):
82
95
  return out
83
96
 
84
97
 
85
- def _manifest(path, own):
98
+ def _manifest(path, own, bare=False, key=None):
99
+ """`bare`: the file is keyed by event at the top, as Droid's hooks.json is;
100
+ `key`: the events sit under that top-level name, as Antigravity's do."""
86
101
  try:
87
102
  with open(path, encoding="utf-8") as fh:
88
- return own_groups(json.load(fh), own)
103
+ data = json.load(fh)
104
+ if key:
105
+ data, bare = (data.get(key) if isinstance(data, dict) else None) or {}, True
106
+ return own_groups({"hooks": data} if bare else data, own)
89
107
  except (OSError, ValueError):
90
108
  return None
91
109
 
@@ -97,11 +115,31 @@ def omp_bridge(root=ROOT):
97
115
  with open(os.path.join(root, "hosts", "omp", "tezgah-hook.ts.in"),
98
116
  encoding="utf-8") as fh:
99
117
  return fh.read().replace(
100
- "@HOOK@", os.path.join(root, "hosts", "omp", "hook.py"))
118
+ "@HOOK@", js_string(os.path.join(root, "hosts", "omp", "hook.py")))
101
119
  except OSError:
102
120
  return ""
103
121
 
104
122
 
123
+ def amp_plugin(root=ROOT):
124
+ """The Amp plugin as an install writes it: the template with this tree's
125
+ hook path, or "" when the template is unreadable. The install, the report
126
+ row, the live probe and the attestation all compare against this."""
127
+ try:
128
+ with open(os.path.join(root, "hosts", "amp", "tezgah-plugin.ts.in"),
129
+ encoding="utf-8") as fh:
130
+ return fh.read().replace(
131
+ "@HOOK@", js_string(os.path.join(root, "hosts", "amp", "hook.py")))
132
+ except OSError:
133
+ return ""
134
+
135
+
136
+ def js_string(path):
137
+ """`path` as the inside of a JS double-quoted string: a Windows checkout's
138
+ `\\t`, `\\u` or `\\x` would otherwise become a control character or a
139
+ SyntaxError, and the bridge would not load (review of plan 140)."""
140
+ return json.dumps(path)[1:-1]
141
+
142
+
105
143
  def registration(host, root=ROOT):
106
144
  """({entry: text}, [files]) for the tezgah-owned hook entries this host has
107
145
  on disk; the dict is None when the host's file cannot be read."""
@@ -109,9 +147,30 @@ def registration(host, root=ROOT):
109
147
  path = os.path.join(root, *(("hooks",) if host == "claude"
110
148
  else ("hosts", "dsh")), "hooks.json")
111
149
  return _manifest(path, own=True), [path]
112
- if host in ("codex", "cursor"):
113
- path = os.path.join(tp.HOST_DIRS[host], "hooks.json")
114
- return _manifest(path, own=False), [path]
150
+ if host in ("codex", "cursor", "qwen", "droid", "commandcode"):
151
+ # Qwen's and Command Code's hooks live in a shared settings.json
152
+ path = os.path.join(tp.HOST_DIRS[host], "settings.json"
153
+ if host in ("qwen", "commandcode") else "hooks.json")
154
+ return _manifest(path, own=False, bare=host == "droid"), [path]
155
+ if host == "copilot":
156
+ # tezgah's own file in Copilot's user hooks dir: every entry is ours
157
+ path = os.path.join(tp.HOST_DIRS["copilot"], "hooks", "tezgah.json")
158
+ return _manifest(path, own=True), [path]
159
+ if host == "gemini":
160
+ # tezgah's own extension: every entry in its hooks.json is ours
161
+ path = os.path.join(tp.HOST_DIRS["gemini"], "extensions", "tezgah", "hooks",
162
+ "hooks.json")
163
+ return _manifest(path, own=True), [path]
164
+ if host == "antigravity":
165
+ # the shared ~/.gemini/config/hooks.json: every entry under its
166
+ # top-level `tezgah` name is ours
167
+ path = os.path.join(os.path.dirname(tp.HOST_DIRS["antigravity"]), "config",
168
+ "hooks.json")
169
+ return _manifest(path, own=True, key="tezgah"), [path]
170
+ if host == "goose":
171
+ # tezgah's own plugin: every entry in its hooks.json is ours
172
+ path = os.path.join(tp.GOOSE_PLUGIN, "hooks", "hooks.json")
173
+ return _manifest(path, own=True), [path]
115
174
  if host == "opencode":
116
175
  links = (os.path.join(tp.HOST_DIRS["opencode"], d, "tezgah.js")
117
176
  for d in OPENCODE_DIRS)
@@ -124,6 +183,12 @@ def registration(host, root=ROOT):
124
183
  return {"bridge": fh.read()}, [OMP_BRIDGE]
125
184
  except OSError:
126
185
  return None, [OMP_BRIDGE]
186
+ if host == "amp":
187
+ try:
188
+ with open(tp.AMP_PLUGIN, encoding="utf-8") as fh:
189
+ return {"plugin": fh.read()}, [tp.AMP_PLUGIN]
190
+ except OSError:
191
+ return None, [tp.AMP_PLUGIN]
127
192
  return None, []
128
193
 
129
194
 
@@ -148,7 +213,7 @@ def record_texts(host, root=ROOT):
148
213
  """{key: text} an install records for one host (`bin/tezgah-setup::record_hooks`)."""
149
214
  entries, _files = registration(host, root)
150
215
  out = {}
151
- if host != "omp":
216
+ if host not in ("omp", "amp"):
152
217
  out.update((KEY % (host, name), text)
153
218
  for name, text in (entries or {}).items())
154
219
  code = code_text(host, root) if packaged(root) else None
@@ -173,10 +238,14 @@ def drift(host, root=ROOT, shas=None):
173
238
  if mode & 0o002:
174
239
  found.append("%s mode %04o" % (path, mode))
175
240
  if entries is None:
176
- found.append("%s unreadable or missing" % files[0])
241
+ # a host `registration` does not know names no file: say so, never IndexError
242
+ found.append("%s unreadable or missing" % (files[0] if files else host))
177
243
  elif host == "omp":
178
244
  if entries["bridge"] != omp_bridge(root):
179
245
  found.append("omp bridge %s differs from a fresh render" % OMP_BRIDGE)
246
+ elif host == "amp":
247
+ if entries["plugin"] != amp_plugin(root):
248
+ found.append("amp plugin %s differs from a fresh render" % tp.AMP_PLUGIN)
180
249
  else:
181
250
  names = set(recorded) - {"code"}
182
251
  if not names:
@@ -106,6 +106,10 @@ COMPONENTS = [
106
106
  "skills/feature-audit/SKILL.md", "skills/product-flow/SKILL.md",
107
107
  "hooks/tezgah_product.py"],
108
108
  "switch": "research-off", "editable": True, "revert": "git"},
109
+ {"key": "design", "label": "design",
110
+ "files": ["hooks/tezgah_policy.py", "skills/design-contract/SKILL.md",
111
+ "skills/design-library/SKILL.md", "bin/tezgah-design"],
112
+ "switch": "design-off", "editable": True, "revert": "git"},
109
113
  {"key": "attribution", "label": "attribution",
110
114
  "files": ["hooks/tezgah_policy.py", "hooks/tezgah_gate.py"],
111
115
  "switch": "none", "editable": False, "revert": "git"},