@r1z4x/tezgah 1.0.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 (582) hide show
  1. package/CHANGELOG.md +738 -0
  2. package/LICENSE +21 -0
  3. package/MANIFEST +753 -0
  4. package/README.de.md +169 -0
  5. package/README.es.md +168 -0
  6. package/README.fr.md +166 -0
  7. package/README.md +161 -0
  8. package/README.tr.md +163 -0
  9. package/agents/tezgah-reviewer.md +70 -0
  10. package/bin/codegen +337 -0
  11. package/bin/consult +797 -0
  12. package/bin/tezgah-adhd +50 -0
  13. package/bin/tezgah-agents +45 -0
  14. package/bin/tezgah-capture +66 -0
  15. package/bin/tezgah-context +96 -0
  16. package/bin/tezgah-decisions +213 -0
  17. package/bin/tezgah-design +953 -0
  18. package/bin/tezgah-docs +1199 -0
  19. package/bin/tezgah-doctor +497 -0
  20. package/bin/tezgah-dsh +37 -0
  21. package/bin/tezgah-dsh.cmd +70 -0
  22. package/bin/tezgah-gate +75 -0
  23. package/bin/tezgah-import-ai-research +439 -0
  24. package/bin/tezgah-index +32 -0
  25. package/bin/tezgah-lessons +148 -0
  26. package/bin/tezgah-mcp +322 -0
  27. package/bin/tezgah-migrate +324 -0
  28. package/bin/tezgah-pony +50 -0
  29. package/bin/tezgah-research +772 -0
  30. package/bin/tezgah-rollback +93 -0
  31. package/bin/tezgah-route +124 -0
  32. package/bin/tezgah-setup +5798 -0
  33. package/bin/tezgah-status +383 -0
  34. package/bin/tezgah-task +607 -0
  35. package/bin/tezgah-taste +423 -0
  36. package/bin/tezgah-triage +485 -0
  37. package/bin/tezgah.js +36 -0
  38. package/commands/adhd.md +21 -0
  39. package/commands/ponytail.md +21 -0
  40. package/docs/README.md +112 -0
  41. package/docs/architecture.md +226 -0
  42. package/docs/citations-baseline.json +59 -0
  43. package/docs/clarity-baseline.json +116 -0
  44. package/docs/contract.md +416 -0
  45. package/docs/environment.md +141 -0
  46. package/docs/evidence.md +831 -0
  47. package/docs/feature-audit.md +139 -0
  48. package/docs/gate.md +407 -0
  49. package/docs/glossary.md +201 -0
  50. package/docs/hosts.md +400 -0
  51. package/docs/index.json +471 -0
  52. package/docs/judge.md +193 -0
  53. package/docs/layers.md +189 -0
  54. package/docs/models.md +160 -0
  55. package/docs/operations.md +666 -0
  56. package/docs/research.md +809 -0
  57. package/docs/results/paired-outcome-2026-10.jsonl +254 -0
  58. package/docs/results/paired-outcome-2026-10.md +204 -0
  59. package/docs/skills.md +236 -0
  60. package/docs/status-line.md +315 -0
  61. package/docs/testing.md +287 -0
  62. package/docs/vision.md +117 -0
  63. package/hooks/hooks.json +33 -0
  64. package/hooks/projects-auto-init.py +98 -0
  65. package/hooks/projects-posttooluse.py +149 -0
  66. package/hooks/projects-pretooluse.py +40 -0
  67. package/hooks/projects-stop.py +60 -0
  68. package/hooks/tezgah_agents.py +817 -0
  69. package/hooks/tezgah_apps.py +266 -0
  70. package/hooks/tezgah_attest.py +255 -0
  71. package/hooks/tezgah_clarity.py +171 -0
  72. package/hooks/tezgah_components.py +140 -0
  73. package/hooks/tezgah_context.py +2953 -0
  74. package/hooks/tezgah_embed.py +765 -0
  75. package/hooks/tezgah_gate.py +2736 -0
  76. package/hooks/tezgah_guard.py +177 -0
  77. package/hooks/tezgah_index.py +124 -0
  78. package/hooks/tezgah_integrity.py +5141 -0
  79. package/hooks/tezgah_judge.py +487 -0
  80. package/hooks/tezgah_lang.py +230 -0
  81. package/hooks/tezgah_lessons.py +210 -0
  82. package/hooks/tezgah_models.py +855 -0
  83. package/hooks/tezgah_paths.py +1132 -0
  84. package/hooks/tezgah_policy.py +1039 -0
  85. package/hooks/tezgah_rank.py +77 -0
  86. package/hooks/tezgah_replay.py +1109 -0
  87. package/hooks/tezgah_research.py +5176 -0
  88. package/hooks/tezgah_shapes.py +305 -0
  89. package/hooks/tezgah_skill_pick.py +227 -0
  90. package/hooks/tezgah_snapshot.py +490 -0
  91. package/hooks/tezgah_stopspec.py +320 -0
  92. package/hooks/tezgah_task.py +458 -0
  93. package/hooks/tezgah_taste.py +201 -0
  94. package/hooks/tezgah_untrusted.py +112 -0
  95. package/hooks/tezgah_update.py +430 -0
  96. package/hosts/codex/hook.py +268 -0
  97. package/hosts/codex/hooks.json +26 -0
  98. package/hosts/cursor/hook.py +461 -0
  99. package/hosts/cursor/hooks.json +44 -0
  100. package/hosts/dsh/hooks.json +21 -0
  101. package/hosts/dsh/statusline/lib/client.js +138 -0
  102. package/hosts/dsh/statusline/lib/index.js +104 -0
  103. package/hosts/dsh/statusline/package.json +28 -0
  104. package/hosts/omp/hook.py +277 -0
  105. package/hosts/omp/tezgah-hook.ts.in +701 -0
  106. package/hosts/opencode/plugins/tezgah.js +2742 -0
  107. package/hosts/opencode/tui/tezgah-tui.tsx +151 -0
  108. package/output-styles/tezgah.md +142 -0
  109. package/package.json +32 -0
  110. package/packaging/build.sh +342 -0
  111. package/packaging/install.ps1 +166 -0
  112. package/packaging/install.sh +56 -0
  113. package/packaging/upgrade.sh +142 -0
  114. package/skills/ai-research/0-autoresearch-skill/SKILL.md +411 -0
  115. package/skills/ai-research/0-autoresearch-skill/references/agent-continuity.md +95 -0
  116. package/skills/ai-research/0-autoresearch-skill/references/progress-reporting.md +166 -0
  117. package/skills/ai-research/0-autoresearch-skill/references/skill-routing.md +219 -0
  118. package/skills/ai-research/0-autoresearch-skill/templates/findings.md +44 -0
  119. package/skills/ai-research/0-autoresearch-skill/templates/research-log.md +41 -0
  120. package/skills/ai-research/01-model-architecture/litgpt/SKILL.md +469 -0
  121. package/skills/ai-research/01-model-architecture/litgpt/references/custom-models.md +569 -0
  122. package/skills/ai-research/01-model-architecture/litgpt/references/distributed-training.md +452 -0
  123. package/skills/ai-research/01-model-architecture/litgpt/references/supported-models.md +337 -0
  124. package/skills/ai-research/01-model-architecture/litgpt/references/training-recipes.md +620 -0
  125. package/skills/ai-research/01-model-architecture/mamba/SKILL.md +260 -0
  126. package/skills/ai-research/01-model-architecture/mamba/references/architecture-details.md +207 -0
  127. package/skills/ai-research/01-model-architecture/mamba/references/benchmarks.md +256 -0
  128. package/skills/ai-research/01-model-architecture/mamba/references/training-guide.md +389 -0
  129. package/skills/ai-research/01-model-architecture/nanogpt/SKILL.md +290 -0
  130. package/skills/ai-research/01-model-architecture/nanogpt/references/architecture.md +383 -0
  131. package/skills/ai-research/01-model-architecture/nanogpt/references/data.md +477 -0
  132. package/skills/ai-research/01-model-architecture/nanogpt/references/training.md +565 -0
  133. package/skills/ai-research/01-model-architecture/rwkv/SKILL.md +260 -0
  134. package/skills/ai-research/01-model-architecture/rwkv/references/architecture-details.md +345 -0
  135. package/skills/ai-research/01-model-architecture/rwkv/references/rwkv7.md +387 -0
  136. package/skills/ai-research/01-model-architecture/rwkv/references/state-management.md +370 -0
  137. package/skills/ai-research/01-model-architecture/torchtitan/SKILL.md +358 -0
  138. package/skills/ai-research/01-model-architecture/torchtitan/references/checkpoint.md +182 -0
  139. package/skills/ai-research/01-model-architecture/torchtitan/references/custom-models.md +259 -0
  140. package/skills/ai-research/01-model-architecture/torchtitan/references/float8.md +134 -0
  141. package/skills/ai-research/01-model-architecture/torchtitan/references/fsdp.md +127 -0
  142. package/skills/ai-research/02-tokenization/huggingface-tokenizers/SKILL.md +516 -0
  143. package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/algorithms.md +654 -0
  144. package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/integration.md +638 -0
  145. package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/pipeline.md +724 -0
  146. package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/training.md +566 -0
  147. package/skills/ai-research/02-tokenization/sentencepiece/SKILL.md +235 -0
  148. package/skills/ai-research/02-tokenization/sentencepiece/references/algorithms.md +201 -0
  149. package/skills/ai-research/02-tokenization/sentencepiece/references/training.md +305 -0
  150. package/skills/ai-research/03-fine-tuning/axolotl/SKILL.md +158 -0
  151. package/skills/ai-research/03-fine-tuning/axolotl/references/api.md +5549 -0
  152. package/skills/ai-research/03-fine-tuning/axolotl/references/dataset-formats.md +1030 -0
  153. package/skills/ai-research/03-fine-tuning/axolotl/references/index.md +16 -0
  154. package/skills/ai-research/03-fine-tuning/axolotl/references/other.md +3564 -0
  155. package/skills/ai-research/03-fine-tuning/llama-factory/SKILL.md +80 -0
  156. package/skills/ai-research/03-fine-tuning/llama-factory/references/_images.md +24 -0
  157. package/skills/ai-research/03-fine-tuning/llama-factory/references/advanced.md +1056 -0
  158. package/skills/ai-research/03-fine-tuning/llama-factory/references/getting_started.md +350 -0
  159. package/skills/ai-research/03-fine-tuning/llama-factory/references/index.md +20 -0
  160. package/skills/ai-research/03-fine-tuning/llama-factory/references/other.md +32 -0
  161. package/skills/ai-research/03-fine-tuning/peft/SKILL.md +431 -0
  162. package/skills/ai-research/03-fine-tuning/peft/references/advanced-usage.md +515 -0
  163. package/skills/ai-research/03-fine-tuning/peft/references/troubleshooting.md +481 -0
  164. package/skills/ai-research/03-fine-tuning/unsloth/SKILL.md +80 -0
  165. package/skills/ai-research/03-fine-tuning/unsloth/references/index.md +8 -0
  166. package/skills/ai-research/03-fine-tuning/unsloth/references/llms.md +83 -0
  167. package/skills/ai-research/04-mechanistic-interpretability/nnsight/SKILL.md +436 -0
  168. package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/README.md +79 -0
  169. package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/api.md +345 -0
  170. package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/tutorials.md +301 -0
  171. package/skills/ai-research/04-mechanistic-interpretability/pyvene/SKILL.md +473 -0
  172. package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/README.md +74 -0
  173. package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/api.md +384 -0
  174. package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/tutorials.md +377 -0
  175. package/skills/ai-research/04-mechanistic-interpretability/saelens/SKILL.md +386 -0
  176. package/skills/ai-research/04-mechanistic-interpretability/saelens/references/README.md +71 -0
  177. package/skills/ai-research/04-mechanistic-interpretability/saelens/references/api.md +334 -0
  178. package/skills/ai-research/04-mechanistic-interpretability/saelens/references/tutorials.md +319 -0
  179. package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/SKILL.md +346 -0
  180. package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/README.md +55 -0
  181. package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/api.md +363 -0
  182. package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/tutorials.md +340 -0
  183. package/skills/ai-research/05-data-processing/nemo-curator/SKILL.md +383 -0
  184. package/skills/ai-research/05-data-processing/nemo-curator/references/deduplication.md +88 -0
  185. package/skills/ai-research/05-data-processing/nemo-curator/references/filtering.md +103 -0
  186. package/skills/ai-research/05-data-processing/ray-data/SKILL.md +326 -0
  187. package/skills/ai-research/05-data-processing/ray-data/references/integration.md +83 -0
  188. package/skills/ai-research/05-data-processing/ray-data/references/transformations.md +84 -0
  189. package/skills/ai-research/06-post-training/grpo-rl-training/README.md +98 -0
  190. package/skills/ai-research/06-post-training/grpo-rl-training/SKILL.md +572 -0
  191. package/skills/ai-research/06-post-training/miles/SKILL.md +315 -0
  192. package/skills/ai-research/06-post-training/miles/references/api-reference.md +142 -0
  193. package/skills/ai-research/06-post-training/miles/references/troubleshooting.md +353 -0
  194. package/skills/ai-research/06-post-training/openrlhf/SKILL.md +249 -0
  195. package/skills/ai-research/06-post-training/openrlhf/references/algorithm-comparison.md +405 -0
  196. package/skills/ai-research/06-post-training/openrlhf/references/custom-rewards.md +531 -0
  197. package/skills/ai-research/06-post-training/openrlhf/references/hybrid-engine.md +288 -0
  198. package/skills/ai-research/06-post-training/openrlhf/references/multi-node-training.md +455 -0
  199. package/skills/ai-research/06-post-training/simpo/SKILL.md +219 -0
  200. package/skills/ai-research/06-post-training/simpo/references/datasets.md +479 -0
  201. package/skills/ai-research/06-post-training/simpo/references/hyperparameters.md +453 -0
  202. package/skills/ai-research/06-post-training/simpo/references/loss-functions.md +351 -0
  203. package/skills/ai-research/06-post-training/slime/SKILL.md +464 -0
  204. package/skills/ai-research/06-post-training/slime/references/api-reference.md +393 -0
  205. package/skills/ai-research/06-post-training/slime/references/troubleshooting.md +387 -0
  206. package/skills/ai-research/06-post-training/torchforge/SKILL.md +433 -0
  207. package/skills/ai-research/06-post-training/torchforge/references/api-reference.md +328 -0
  208. package/skills/ai-research/06-post-training/torchforge/references/troubleshooting.md +410 -0
  209. package/skills/ai-research/06-post-training/trl-fine-tuning/SKILL.md +455 -0
  210. package/skills/ai-research/06-post-training/trl-fine-tuning/references/dpo-variants.md +228 -0
  211. package/skills/ai-research/06-post-training/trl-fine-tuning/references/online-rl.md +83 -0
  212. package/skills/ai-research/06-post-training/trl-fine-tuning/references/reward-modeling.md +123 -0
  213. package/skills/ai-research/06-post-training/trl-fine-tuning/references/sft-training.md +169 -0
  214. package/skills/ai-research/06-post-training/verl/SKILL.md +391 -0
  215. package/skills/ai-research/06-post-training/verl/references/api-reference.md +302 -0
  216. package/skills/ai-research/06-post-training/verl/references/troubleshooting.md +392 -0
  217. package/skills/ai-research/07-safety-alignment/constitutional-ai/SKILL.md +290 -0
  218. package/skills/ai-research/07-safety-alignment/llamaguard/SKILL.md +337 -0
  219. package/skills/ai-research/07-safety-alignment/nemo-guardrails/SKILL.md +297 -0
  220. package/skills/ai-research/07-safety-alignment/prompt-guard/SKILL.md +312 -0
  221. package/skills/ai-research/08-distributed-training/accelerate/SKILL.md +332 -0
  222. package/skills/ai-research/08-distributed-training/accelerate/references/custom-plugins.md +454 -0
  223. package/skills/ai-research/08-distributed-training/accelerate/references/megatron-integration.md +490 -0
  224. package/skills/ai-research/08-distributed-training/accelerate/references/performance.md +526 -0
  225. package/skills/ai-research/08-distributed-training/deepspeed/SKILL.md +141 -0
  226. package/skills/ai-research/08-distributed-training/deepspeed/references/08.md +18 -0
  227. package/skills/ai-research/08-distributed-training/deepspeed/references/09.md +174 -0
  228. package/skills/ai-research/08-distributed-training/deepspeed/references/2020.md +379 -0
  229. package/skills/ai-research/08-distributed-training/deepspeed/references/2023.md +280 -0
  230. package/skills/ai-research/08-distributed-training/deepspeed/references/assets.md +180 -0
  231. package/skills/ai-research/08-distributed-training/deepspeed/references/index.md +36 -0
  232. package/skills/ai-research/08-distributed-training/deepspeed/references/mii.md +119 -0
  233. package/skills/ai-research/08-distributed-training/deepspeed/references/other.md +1192 -0
  234. package/skills/ai-research/08-distributed-training/megatron-core/SKILL.md +366 -0
  235. package/skills/ai-research/08-distributed-training/megatron-core/references/benchmarks.md +250 -0
  236. package/skills/ai-research/08-distributed-training/megatron-core/references/parallelism-guide.md +405 -0
  237. package/skills/ai-research/08-distributed-training/megatron-core/references/production-examples.md +474 -0
  238. package/skills/ai-research/08-distributed-training/megatron-core/references/training-recipes.md +548 -0
  239. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/SKILL.md +231 -0
  240. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_async_recipe.md +14 -0
  241. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_overview.md +19 -0
  242. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_recipe.md +18 -0
  243. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_ddp_notes.md +10 -0
  244. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_device_mesh_tutorial.md +22 -0
  245. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_examples_fsdp2.md +15 -0
  246. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fsdp1_api.md +9 -0
  247. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fsdp2_tutorial.md +45 -0
  248. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fully_shard_api.md +49 -0
  249. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_tp_tutorial.md +22 -0
  250. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/ray_train_fsdp2_example.md +13 -0
  251. package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/torchtitan_fsdp_notes.md +14 -0
  252. package/skills/ai-research/08-distributed-training/pytorch-lightning/SKILL.md +346 -0
  253. package/skills/ai-research/08-distributed-training/pytorch-lightning/references/callbacks.md +437 -0
  254. package/skills/ai-research/08-distributed-training/pytorch-lightning/references/distributed.md +491 -0
  255. package/skills/ai-research/08-distributed-training/pytorch-lightning/references/hyperparameter-tuning.md +557 -0
  256. package/skills/ai-research/08-distributed-training/ray-train/SKILL.md +406 -0
  257. package/skills/ai-research/08-distributed-training/ray-train/references/multi-node.md +629 -0
  258. package/skills/ai-research/09-infrastructure/lambda-labs/SKILL.md +545 -0
  259. package/skills/ai-research/09-infrastructure/lambda-labs/references/advanced-usage.md +612 -0
  260. package/skills/ai-research/09-infrastructure/lambda-labs/references/troubleshooting.md +531 -0
  261. package/skills/ai-research/09-infrastructure/modal/SKILL.md +341 -0
  262. package/skills/ai-research/09-infrastructure/modal/references/advanced-usage.md +504 -0
  263. package/skills/ai-research/09-infrastructure/modal/references/troubleshooting.md +495 -0
  264. package/skills/ai-research/09-infrastructure/skypilot/SKILL.md +509 -0
  265. package/skills/ai-research/09-infrastructure/skypilot/references/advanced-usage.md +492 -0
  266. package/skills/ai-research/09-infrastructure/skypilot/references/troubleshooting.md +571 -0
  267. package/skills/ai-research/10-optimization/awq/SKILL.md +310 -0
  268. package/skills/ai-research/10-optimization/awq/references/advanced-usage.md +325 -0
  269. package/skills/ai-research/10-optimization/awq/references/troubleshooting.md +345 -0
  270. package/skills/ai-research/10-optimization/bitsandbytes/SKILL.md +411 -0
  271. package/skills/ai-research/10-optimization/bitsandbytes/references/memory-optimization.md +522 -0
  272. package/skills/ai-research/10-optimization/bitsandbytes/references/qlora-training.md +522 -0
  273. package/skills/ai-research/10-optimization/bitsandbytes/references/quantization-formats.md +448 -0
  274. package/skills/ai-research/10-optimization/flash-attention/SKILL.md +367 -0
  275. package/skills/ai-research/10-optimization/flash-attention/references/benchmarks.md +216 -0
  276. package/skills/ai-research/10-optimization/flash-attention/references/transformers-integration.md +294 -0
  277. package/skills/ai-research/10-optimization/gguf/SKILL.md +427 -0
  278. package/skills/ai-research/10-optimization/gguf/references/advanced-usage.md +505 -0
  279. package/skills/ai-research/10-optimization/gguf/references/troubleshooting.md +443 -0
  280. package/skills/ai-research/10-optimization/gptq/SKILL.md +450 -0
  281. package/skills/ai-research/10-optimization/gptq/references/calibration.md +338 -0
  282. package/skills/ai-research/10-optimization/gptq/references/integration.md +130 -0
  283. package/skills/ai-research/10-optimization/gptq/references/troubleshooting.md +96 -0
  284. package/skills/ai-research/10-optimization/hqq/SKILL.md +445 -0
  285. package/skills/ai-research/10-optimization/hqq/references/advanced-usage.md +529 -0
  286. package/skills/ai-research/10-optimization/hqq/references/troubleshooting.md +504 -0
  287. package/skills/ai-research/10-optimization/ml-training-recipes/SKILL.md +319 -0
  288. package/skills/ai-research/10-optimization/ml-training-recipes/references/architecture.md +320 -0
  289. package/skills/ai-research/10-optimization/ml-training-recipes/references/biomedical.md +498 -0
  290. package/skills/ai-research/10-optimization/ml-training-recipes/references/domain-specific.md +626 -0
  291. package/skills/ai-research/10-optimization/ml-training-recipes/references/experiment-loop.md +129 -0
  292. package/skills/ai-research/10-optimization/ml-training-recipes/references/optimizers.md +330 -0
  293. package/skills/ai-research/10-optimization/ml-training-recipes/references/scaling-and-selection.md +428 -0
  294. package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/SKILL.md +405 -0
  295. package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/benchmarks.md +394 -0
  296. package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/custom-tasks.md +425 -0
  297. package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/issues.md +395 -0
  298. package/skills/ai-research/11-evaluation/lm-evaluation-harness/SKILL.md +490 -0
  299. package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/api-evaluation.md +491 -0
  300. package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/benchmark-guide.md +489 -0
  301. package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/custom-tasks.md +603 -0
  302. package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/distributed-eval.md +520 -0
  303. package/skills/ai-research/11-evaluation/nemo-evaluator/SKILL.md +494 -0
  304. package/skills/ai-research/11-evaluation/nemo-evaluator/references/adapter-system.md +341 -0
  305. package/skills/ai-research/11-evaluation/nemo-evaluator/references/configuration.md +448 -0
  306. package/skills/ai-research/11-evaluation/nemo-evaluator/references/custom-benchmarks.md +316 -0
  307. package/skills/ai-research/11-evaluation/nemo-evaluator/references/execution-backends.md +362 -0
  308. package/skills/ai-research/12-inference-serving/llama-cpp/SKILL.md +258 -0
  309. package/skills/ai-research/12-inference-serving/llama-cpp/references/optimization.md +90 -0
  310. package/skills/ai-research/12-inference-serving/llama-cpp/references/quantization.md +214 -0
  311. package/skills/ai-research/12-inference-serving/llama-cpp/references/server.md +126 -0
  312. package/skills/ai-research/12-inference-serving/sglang/SKILL.md +442 -0
  313. package/skills/ai-research/12-inference-serving/sglang/references/deployment.md +491 -0
  314. package/skills/ai-research/12-inference-serving/sglang/references/radix-attention.md +414 -0
  315. package/skills/ai-research/12-inference-serving/sglang/references/structured-generation.md +542 -0
  316. package/skills/ai-research/12-inference-serving/tensorrt-llm/SKILL.md +187 -0
  317. package/skills/ai-research/12-inference-serving/tensorrt-llm/references/multi-gpu.md +299 -0
  318. package/skills/ai-research/12-inference-serving/tensorrt-llm/references/optimization.md +243 -0
  319. package/skills/ai-research/12-inference-serving/tensorrt-llm/references/serving.md +471 -0
  320. package/skills/ai-research/12-inference-serving/vllm/SKILL.md +364 -0
  321. package/skills/ai-research/12-inference-serving/vllm/references/optimization.md +227 -0
  322. package/skills/ai-research/12-inference-serving/vllm/references/quantization.md +285 -0
  323. package/skills/ai-research/12-inference-serving/vllm/references/server-deployment.md +256 -0
  324. package/skills/ai-research/12-inference-serving/vllm/references/troubleshooting.md +448 -0
  325. package/skills/ai-research/13-mlops/mlflow/SKILL.md +704 -0
  326. package/skills/ai-research/13-mlops/mlflow/references/deployment.md +745 -0
  327. package/skills/ai-research/13-mlops/mlflow/references/model-registry.md +771 -0
  328. package/skills/ai-research/13-mlops/mlflow/references/tracking.md +681 -0
  329. package/skills/ai-research/13-mlops/swanlab/SKILL.md +406 -0
  330. package/skills/ai-research/13-mlops/swanlab/references/integrations.md +305 -0
  331. package/skills/ai-research/13-mlops/swanlab/references/visualization.md +234 -0
  332. package/skills/ai-research/13-mlops/tensorboard/SKILL.md +629 -0
  333. package/skills/ai-research/13-mlops/tensorboard/references/integrations.md +639 -0
  334. package/skills/ai-research/13-mlops/tensorboard/references/profiling.md +546 -0
  335. package/skills/ai-research/13-mlops/tensorboard/references/visualization.md +621 -0
  336. package/skills/ai-research/13-mlops/weights-and-biases/SKILL.md +590 -0
  337. package/skills/ai-research/13-mlops/weights-and-biases/references/artifacts.md +585 -0
  338. package/skills/ai-research/13-mlops/weights-and-biases/references/integrations.md +701 -0
  339. package/skills/ai-research/13-mlops/weights-and-biases/references/sweeps.md +848 -0
  340. package/skills/ai-research/14-agents/a-evolve/SKILL.md +383 -0
  341. package/skills/ai-research/14-agents/a-evolve/references/README.md +831 -0
  342. package/skills/ai-research/14-agents/a-evolve/references/api.md +594 -0
  343. package/skills/ai-research/14-agents/a-evolve/references/architecture.md +417 -0
  344. package/skills/ai-research/14-agents/a-evolve/references/design-patterns.md +462 -0
  345. package/skills/ai-research/14-agents/a-evolve/references/examples.md +352 -0
  346. package/skills/ai-research/14-agents/a-evolve/references/issues.md +591 -0
  347. package/skills/ai-research/14-agents/a-evolve/references/releases.md +112 -0
  348. package/skills/ai-research/14-agents/a-evolve/references/tutorials.md +819 -0
  349. package/skills/ai-research/14-agents/autogpt/SKILL.md +403 -0
  350. package/skills/ai-research/14-agents/autogpt/references/advanced-usage.md +536 -0
  351. package/skills/ai-research/14-agents/autogpt/references/troubleshooting.md +421 -0
  352. package/skills/ai-research/14-agents/crewai/SKILL.md +498 -0
  353. package/skills/ai-research/14-agents/crewai/references/flows.md +439 -0
  354. package/skills/ai-research/14-agents/crewai/references/tools.md +430 -0
  355. package/skills/ai-research/14-agents/crewai/references/troubleshooting.md +481 -0
  356. package/skills/ai-research/14-agents/langchain/SKILL.md +480 -0
  357. package/skills/ai-research/14-agents/langchain/references/agents.md +500 -0
  358. package/skills/ai-research/14-agents/langchain/references/integration.md +563 -0
  359. package/skills/ai-research/14-agents/langchain/references/rag.md +601 -0
  360. package/skills/ai-research/14-agents/llamaindex/SKILL.md +569 -0
  361. package/skills/ai-research/14-agents/llamaindex/references/agents.md +84 -0
  362. package/skills/ai-research/14-agents/llamaindex/references/data_connectors.md +109 -0
  363. package/skills/ai-research/14-agents/llamaindex/references/query_engines.md +407 -0
  364. package/skills/ai-research/15-rag/chroma/SKILL.md +406 -0
  365. package/skills/ai-research/15-rag/chroma/references/integration.md +39 -0
  366. package/skills/ai-research/15-rag/faiss/SKILL.md +221 -0
  367. package/skills/ai-research/15-rag/faiss/references/index_types.md +281 -0
  368. package/skills/ai-research/15-rag/pinecone/SKILL.md +358 -0
  369. package/skills/ai-research/15-rag/pinecone/references/deployment.md +182 -0
  370. package/skills/ai-research/15-rag/qdrant/SKILL.md +493 -0
  371. package/skills/ai-research/15-rag/qdrant/references/advanced-usage.md +649 -0
  372. package/skills/ai-research/15-rag/qdrant/references/troubleshooting.md +632 -0
  373. package/skills/ai-research/15-rag/sentence-transformers/SKILL.md +255 -0
  374. package/skills/ai-research/15-rag/sentence-transformers/references/models.md +124 -0
  375. package/skills/ai-research/16-prompt-engineering/dspy/SKILL.md +590 -0
  376. package/skills/ai-research/16-prompt-engineering/dspy/references/examples.md +664 -0
  377. package/skills/ai-research/16-prompt-engineering/dspy/references/modules.md +476 -0
  378. package/skills/ai-research/16-prompt-engineering/dspy/references/optimizers.md +567 -0
  379. package/skills/ai-research/16-prompt-engineering/guidance/SKILL.md +572 -0
  380. package/skills/ai-research/16-prompt-engineering/guidance/references/backends.md +555 -0
  381. package/skills/ai-research/16-prompt-engineering/guidance/references/constraints.md +675 -0
  382. package/skills/ai-research/16-prompt-engineering/guidance/references/examples.md +768 -0
  383. package/skills/ai-research/16-prompt-engineering/instructor/SKILL.md +740 -0
  384. package/skills/ai-research/16-prompt-engineering/instructor/references/examples.md +108 -0
  385. package/skills/ai-research/16-prompt-engineering/instructor/references/providers.md +71 -0
  386. package/skills/ai-research/16-prompt-engineering/instructor/references/validation.md +607 -0
  387. package/skills/ai-research/16-prompt-engineering/outlines/SKILL.md +652 -0
  388. package/skills/ai-research/16-prompt-engineering/outlines/references/backends.md +616 -0
  389. package/skills/ai-research/16-prompt-engineering/outlines/references/examples.md +774 -0
  390. package/skills/ai-research/16-prompt-engineering/outlines/references/json_generation.md +653 -0
  391. package/skills/ai-research/17-observability/langsmith/SKILL.md +422 -0
  392. package/skills/ai-research/17-observability/langsmith/references/advanced-usage.md +549 -0
  393. package/skills/ai-research/17-observability/langsmith/references/troubleshooting.md +538 -0
  394. package/skills/ai-research/17-observability/phoenix/SKILL.md +475 -0
  395. package/skills/ai-research/17-observability/phoenix/references/advanced-usage.md +620 -0
  396. package/skills/ai-research/17-observability/phoenix/references/troubleshooting.md +539 -0
  397. package/skills/ai-research/18-multimodal/audiocraft/SKILL.md +564 -0
  398. package/skills/ai-research/18-multimodal/audiocraft/references/advanced-usage.md +667 -0
  399. package/skills/ai-research/18-multimodal/audiocraft/references/troubleshooting.md +505 -0
  400. package/skills/ai-research/18-multimodal/blip-2/SKILL.md +564 -0
  401. package/skills/ai-research/18-multimodal/blip-2/references/advanced-usage.md +681 -0
  402. package/skills/ai-research/18-multimodal/blip-2/references/troubleshooting.md +527 -0
  403. package/skills/ai-research/18-multimodal/clip/SKILL.md +253 -0
  404. package/skills/ai-research/18-multimodal/clip/references/applications.md +208 -0
  405. package/skills/ai-research/18-multimodal/cosmos-policy/SKILL.md +402 -0
  406. package/skills/ai-research/18-multimodal/cosmos-policy/references/libero-commands.md +175 -0
  407. package/skills/ai-research/18-multimodal/cosmos-policy/references/robocasa-commands.md +147 -0
  408. package/skills/ai-research/18-multimodal/llava/SKILL.md +304 -0
  409. package/skills/ai-research/18-multimodal/llava/references/training.md +198 -0
  410. package/skills/ai-research/18-multimodal/openpi/SKILL.md +480 -0
  411. package/skills/ai-research/18-multimodal/openpi/references/checkpoints-and-env-map.md +86 -0
  412. package/skills/ai-research/18-multimodal/openpi/references/config-recipes.md +50 -0
  413. package/skills/ai-research/18-multimodal/openpi/references/pytorch-gotchas.md +49 -0
  414. package/skills/ai-research/18-multimodal/openpi/references/remote-client-pattern.md +48 -0
  415. package/skills/ai-research/18-multimodal/openpi/references/training-debugging.md +46 -0
  416. package/skills/ai-research/18-multimodal/openvla-oft/SKILL.md +441 -0
  417. package/skills/ai-research/18-multimodal/openvla-oft/references/aloha-workflow.md +141 -0
  418. package/skills/ai-research/18-multimodal/openvla-oft/references/config-troubleshooting.md +97 -0
  419. package/skills/ai-research/18-multimodal/openvla-oft/references/libero-workflow.md +115 -0
  420. package/skills/ai-research/18-multimodal/openvla-oft/references/paper-and-checkpoints.md +84 -0
  421. package/skills/ai-research/18-multimodal/segment-anything/SKILL.md +500 -0
  422. package/skills/ai-research/18-multimodal/segment-anything/references/advanced-usage.md +590 -0
  423. package/skills/ai-research/18-multimodal/segment-anything/references/troubleshooting.md +485 -0
  424. package/skills/ai-research/18-multimodal/stable-diffusion/SKILL.md +519 -0
  425. package/skills/ai-research/18-multimodal/stable-diffusion/references/advanced-usage.md +717 -0
  426. package/skills/ai-research/18-multimodal/stable-diffusion/references/troubleshooting.md +556 -0
  427. package/skills/ai-research/18-multimodal/whisper/SKILL.md +317 -0
  428. package/skills/ai-research/18-multimodal/whisper/references/languages.md +190 -0
  429. package/skills/ai-research/19-emerging-techniques/knowledge-distillation/SKILL.md +458 -0
  430. package/skills/ai-research/19-emerging-techniques/knowledge-distillation/references/minillm.md +335 -0
  431. package/skills/ai-research/19-emerging-techniques/long-context/SKILL.md +536 -0
  432. package/skills/ai-research/19-emerging-techniques/long-context/references/extension_methods.md +469 -0
  433. package/skills/ai-research/19-emerging-techniques/long-context/references/fine_tuning.md +612 -0
  434. package/skills/ai-research/19-emerging-techniques/long-context/references/rope.md +403 -0
  435. package/skills/ai-research/19-emerging-techniques/model-merging/SKILL.md +497 -0
  436. package/skills/ai-research/19-emerging-techniques/model-merging/references/coefficient-tuning.md +415 -0
  437. package/skills/ai-research/19-emerging-techniques/model-merging/references/evaluation.md +463 -0
  438. package/skills/ai-research/19-emerging-techniques/model-merging/references/examples.md +429 -0
  439. package/skills/ai-research/19-emerging-techniques/model-merging/references/methods.md +353 -0
  440. package/skills/ai-research/19-emerging-techniques/model-pruning/SKILL.md +495 -0
  441. package/skills/ai-research/19-emerging-techniques/model-pruning/references/wanda.md +348 -0
  442. package/skills/ai-research/19-emerging-techniques/moe-training/SKILL.md +526 -0
  443. package/skills/ai-research/19-emerging-techniques/moe-training/references/architectures.md +433 -0
  444. package/skills/ai-research/19-emerging-techniques/moe-training/references/inference.md +349 -0
  445. package/skills/ai-research/19-emerging-techniques/moe-training/references/training.md +426 -0
  446. package/skills/ai-research/19-emerging-techniques/speculative-decoding/SKILL.md +467 -0
  447. package/skills/ai-research/19-emerging-techniques/speculative-decoding/references/lookahead.md +310 -0
  448. package/skills/ai-research/19-emerging-techniques/speculative-decoding/references/medusa.md +351 -0
  449. package/skills/ai-research/20-ml-paper-writing/academic-plotting/SKILL.md +479 -0
  450. package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/data-visualization.md +509 -0
  451. package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/diagram-generation.md +395 -0
  452. package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/style-guide.md +305 -0
  453. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/SKILL.md +982 -0
  454. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/checklists.md +348 -0
  455. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/citation-workflow.md +563 -0
  456. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/reviewer-guidelines.md +349 -0
  457. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/sources.md +165 -0
  458. package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/writing-guide.md +477 -0
  459. package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/SKILL.md +298 -0
  460. package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/references/slide-templates.md +505 -0
  461. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/SKILL.md +270 -0
  462. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/checklist.md +279 -0
  463. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/reviewer-guidelines.md +116 -0
  464. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/section-blueprints.md +400 -0
  465. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/systems-conferences.md +261 -0
  466. package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/writing-patterns.md +231 -0
  467. package/skills/ai-research/21-research-ideation/brainstorming-research-ideas/SKILL.md +384 -0
  468. package/skills/ai-research/21-research-ideation/creative-thinking-for-research/SKILL.md +366 -0
  469. package/skills/ai-research/22-agent-native-research-artifact/compiler/SKILL.md +245 -0
  470. package/skills/ai-research/22-agent-native-research-artifact/compiler/references/ara-schema.md +439 -0
  471. package/skills/ai-research/22-agent-native-research-artifact/compiler/references/exploration-tree-spec.md +125 -0
  472. package/skills/ai-research/22-agent-native-research-artifact/compiler/references/validation-checklist.md +149 -0
  473. package/skills/ai-research/22-agent-native-research-artifact/research-manager/SKILL.md +324 -0
  474. package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/event-taxonomy.md +124 -0
  475. package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/provenance-tags.md +190 -0
  476. package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/session-protocol.md +162 -0
  477. package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/SKILL.md +322 -0
  478. package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/references/review-dimensions.md +182 -0
  479. package/skills/ai-research/SKILL.md +101 -0
  480. package/skills/ai-research/SOURCE +38 -0
  481. package/skills/ai-research/index/1-frame.md +18 -0
  482. package/skills/ai-research/index/2-data.md +21 -0
  483. package/skills/ai-research/index/3-train.md +48 -0
  484. package/skills/ai-research/index/4-measure.md +25 -0
  485. package/skills/ai-research/index/5-run.md +23 -0
  486. package/skills/ai-research/index/6-write.md +35 -0
  487. package/skills/ai-research/library.json +3456 -0
  488. package/skills/analyze-app/EVALS.md +82 -0
  489. package/skills/analyze-app/SKILL.md +188 -0
  490. package/skills/design-contract/EVALS.md +80 -0
  491. package/skills/design-contract/SKILL.md +171 -0
  492. package/skills/design-library/EVALS.md +85 -0
  493. package/skills/design-library/INDEX.md +59 -0
  494. package/skills/design-library/SKILL.md +58 -0
  495. package/skills/design-library/SOURCE +131 -0
  496. package/skills/design-library/adaptive-interfaces/skills/colour-independence/SKILL.md +90 -0
  497. package/skills/design-library/adaptive-interfaces/skills/flexible-typography/SKILL.md +83 -0
  498. package/skills/design-library/adaptive-interfaces/skills/information-density/SKILL.md +87 -0
  499. package/skills/design-library/adaptive-interfaces/skills/preference-audit/SKILL.md +70 -0
  500. package/skills/design-library/adaptive-interfaces/skills/responsive-accessibility/SKILL.md +86 -0
  501. package/skills/design-library/adaptive-interfaces/skills/responsive-review/SKILL.md +76 -0
  502. package/skills/design-library/adaptive-interfaces/skills/simplified-views/SKILL.md +97 -0
  503. package/skills/design-library/adaptive-interfaces/skills/specify/SKILL.md +63 -0
  504. package/skills/design-library/adaptive-interfaces/skills/user-preference-respect/SKILL.md +100 -0
  505. package/skills/design-library/cognitive-accessibility/skills/adaptive-personalisation/SKILL.md +61 -0
  506. package/skills/design-library/cognitive-accessibility/skills/assess-load/SKILL.md +48 -0
  507. package/skills/design-library/cognitive-accessibility/skills/cognitive-load-assessment/SKILL.md +60 -0
  508. package/skills/design-library/cognitive-accessibility/skills/contextual-help-design/SKILL.md +61 -0
  509. package/skills/design-library/cognitive-accessibility/skills/error-prevention-recovery/SKILL.md +71 -0
  510. package/skills/design-library/cognitive-accessibility/skills/focus-attention-design/SKILL.md +67 -0
  511. package/skills/design-library/cognitive-accessibility/skills/memory-load-reduction/SKILL.md +60 -0
  512. package/skills/design-library/cognitive-accessibility/skills/plain-language-design/SKILL.md +78 -0
  513. package/skills/design-library/cognitive-accessibility/skills/review/SKILL.md +56 -0
  514. package/skills/design-library/cognitive-accessibility/skills/simplify/SKILL.md +39 -0
  515. package/skills/design-library/cognitive-accessibility/skills/wayfinding-navigation/SKILL.md +64 -0
  516. package/skills/design-library/design-research/skills/behavioural-analytics/SKILL.md +33 -0
  517. package/skills/design-library/design-research/skills/qual-quant-triangulation/SKILL.md +33 -0
  518. package/skills/design-library/inclusive-interaction/skills/audit/SKILL.md +50 -0
  519. package/skills/design-library/inclusive-interaction/skills/design-flow/SKILL.md +58 -0
  520. package/skills/design-library/inclusive-interaction/skills/feedback-and-status/SKILL.md +76 -0
  521. package/skills/design-library/inclusive-interaction/skills/gesture-alternatives/SKILL.md +70 -0
  522. package/skills/design-library/inclusive-interaction/skills/keyboard-navigation/SKILL.md +99 -0
  523. package/skills/design-library/inclusive-interaction/skills/keyboard-review/SKILL.md +54 -0
  524. package/skills/design-library/inclusive-interaction/skills/motion-sensitivity/SKILL.md +79 -0
  525. package/skills/design-library/inclusive-interaction/skills/multi-modal-input/SKILL.md +70 -0
  526. package/skills/design-library/inclusive-interaction/skills/touch-target-design/SKILL.md +71 -0
  527. package/skills/design-library/inclusive-interaction/skills/voice-interaction/SKILL.md +68 -0
  528. package/skills/design-library/visual-critique/skills/critique-affordance/SKILL.md +45 -0
  529. package/skills/design-library/visual-critique/skills/critique-brand-consistency/SKILL.md +42 -0
  530. package/skills/design-library/visual-critique/skills/critique-color/SKILL.md +44 -0
  531. package/skills/design-library/visual-critique/skills/critique-composition/SKILL.md +46 -0
  532. package/skills/design-library/visual-critique/skills/critique-information-density/SKILL.md +45 -0
  533. package/skills/design-library/visual-critique/skills/critique-typography/SKILL.md +45 -0
  534. package/skills/design-library/visual-critique/skills/critique-visual-hierarchy/SKILL.md +40 -0
  535. package/skills/feature-audit/EVALS.md +83 -0
  536. package/skills/feature-audit/SKILL.md +326 -0
  537. package/skills/harness/EVALS.md +81 -0
  538. package/skills/harness/SKILL.md +88 -0
  539. package/skills/i-have-adhd/EVALS.md +80 -0
  540. package/skills/i-have-adhd/SKILL.md +183 -0
  541. package/skills/no-ai-slop/EVALS.md +89 -0
  542. package/skills/no-ai-slop/SKILL.md +209 -0
  543. package/skills/no-ai-slop/eval.md +52 -0
  544. package/skills/plan-add/EVALS.md +79 -0
  545. package/skills/plan-add/SKILL.md +179 -0
  546. package/skills/plan-add/render_table.py +72 -0
  547. package/skills/plan-status/EVALS.md +78 -0
  548. package/skills/plan-status/SKILL.md +52 -0
  549. package/skills/plan-sync/EVALS.md +80 -0
  550. package/skills/plan-sync/SKILL.md +69 -0
  551. package/skills/pm-frameworks/SKILL.md +33 -0
  552. package/skills/pm-frameworks/SOURCE +39 -0
  553. package/skills/pm-frameworks/intended-vs-implemented/SKILL.md +42 -0
  554. package/skills/pm-frameworks/opportunity-solution-tree/SKILL.md +64 -0
  555. package/skills/ponytail/EVALS.md +80 -0
  556. package/skills/ponytail/SKILL.md +124 -0
  557. package/skills/product-analysis/EVALS.md +103 -0
  558. package/skills/product-analysis/SKILL.md +361 -0
  559. package/skills/research/EVALS.md +104 -0
  560. package/skills/research/SKILL.md +570 -0
  561. package/skills/rl-env/SKILL.md +53 -0
  562. package/skills/rl-env/SOURCE +41 -0
  563. package/skills/rl-env/generate-nemo-gym-env/SKILL.md +169 -0
  564. package/skills/rl-env/generate-nemo-gym-env/references/architecture.md +114 -0
  565. package/skills/rl-env/generate-openenv-env/SKILL.md +183 -0
  566. package/skills/rl-env/generate-openenv-env/references/architecture.md +82 -0
  567. package/skills/rl-env/generate-ors-env/SKILL.md +209 -0
  568. package/skills/rl-env/generate-ors-env/references/architecture.md +113 -0
  569. package/skills/rl-env/generate-verifiers-env/SKILL.md +188 -0
  570. package/skills/rl-env/generate-verifiers-env/references/architecture.md +119 -0
  571. package/skills/rl-env/rl-env-from-description/SKILL.md +124 -0
  572. package/skills/rl-env/rl-env-from-description/references/interview.md +75 -0
  573. package/skills/rl-env/rl-env-from-description/references/nemo_gym.md +41 -0
  574. package/skills/rl-env/rl-env-from-description/references/openenv.md +35 -0
  575. package/skills/rl-env/rl-env-from-description/references/ors.md +50 -0
  576. package/skills/rl-env/rl-env-from-description/references/verifiers.md +39 -0
  577. package/skills/tezgah-contract/EVALS.md +78 -0
  578. package/skills/tezgah-contract/SKILL.md +792 -0
  579. package/statusline.py +129 -0
  580. package/workflows/graph-impact.js +153 -0
  581. package/workflows/graph-map.js +158 -0
  582. package/workflows/graph-review.js +170 -0
@@ -0,0 +1,287 @@
1
+ # Testing: the checks, the probes, the e2e scripts
2
+
3
+ This page is for a maintainer adding or changing a test, or who has just changed
4
+ a hook, a CLI or a status line and wants to know what will notice. It records the
5
+ checks that gate a commit, the shape of the suite, the helpers to reach for, and
6
+ the rules a new test must satisfy.
7
+
8
+ ## The three checks
9
+
10
+ ```sh
11
+ python3 -m compileall -q hooks hosts bin statusline.py # byte-compile every script
12
+ python3 -m unittest discover -s tests # stdlib test suite
13
+ ruff check . # lint; config in pyproject.toml
14
+ ```
15
+
16
+ [`AGENTS.md`](../AGENTS.md) gives them in that order (`AGENTS.md:20-35`), and
17
+ [`CONTRIBUTING.md`](../CONTRIBUTING.md) repeats the same three before a pull
18
+ request (`CONTRIBUTING.md:15-20`).
19
+
20
+ | Check | What it catches that the other two do not |
21
+ |---|---|
22
+ | `compileall` | A syntax error in any `.py` under `hooks/` and `hosts/`, plus `statusline.py`, without running a line of it and with no environment set up. The `bin/` CLIs are Python sources with no `.py` suffix, so only running one compiles it (`test_setup.py::SetupBase.setup`). |
23
+ | `unittest` | Behaviour: what a hook answers, what the [gate](glossary.md#gate) denies, what reaches the [ledger](glossary.md#ledger), what a status line renders. |
24
+ | `ruff` | Lint only, with the rule set pinned in `pyproject.toml:12-14` (`E4`, `E7`, `E9`, `F`; `E501` ignored). The pin exists because newer ruff releases ship a broader default and would otherwise change `ruff check .` in CI (`pyproject.toml:10-11`). One pre-existing script is exempted per-file in `pyproject.toml:19-20`. |
25
+
26
+ `ruff` is not vendored: install it as a uv tool, run `uvx ruff check .` without
27
+ installing it, or use the version CI installs from `requirements-dev.txt:3`
28
+ (`ruff==0.16.7`). There is no other linter and no type checker
29
+ (`AGENTS.md:44-45`).
30
+
31
+ The clarity ratchet, `bin/tezgah-docs --clarity`, counts four prose rules per
32
+ file in `docs/*.md` and `CHANGELOG.md`. The rules are sentences over 25 words,
33
+ semicolons, a short list of words with a plainer form, and passive voice. It
34
+ skips code fences, code spans, tables, headings and Turkish lines. Each count is held to
35
+ `docs/clarity-baseline.json`. A file over its baseline in any rule exits 1, and
36
+ a file the baseline does not list is held to 0. A count that drops lowers the
37
+ baseline on the next run. Only `--clarity --update` raises it.
38
+
39
+ ## What the pins do not cover
40
+
41
+ A pin is a claim about what ran, not a guarantee about what will. This repository
42
+ has two, and both are about the language rather than about dependencies: the
43
+ floor `py310` (`pyproject.toml:5`) and the CI matrix that proves it
44
+ (`.github/workflows/ci.yml:24`). There is no dependency lockfile to pin
45
+ because there is no package: tezgah is a set of scripts run in place, and no
46
+ `[project]` or build system is declared (`pyproject.toml:1-2`). The only
47
+ third-party tool the checks name is ruff, at a version in
48
+ `requirements-dev.txt:3`.
49
+
50
+ The FineEnvs multi-harness RL tutorial carries far more machinery and says the
51
+ same thing out loud: its validation record installs TRL and OpenEnv from upstream
52
+ main, records the commit each run resolved to, states that this "is not a
53
+ dependency lockfile", and lists its own unchecked GPU items as pending rather
54
+ than implying the matrix is done. That is the shape to copy - say what is pinned,
55
+ say what was resolved at the time, and say what a reader should therefore not
56
+ conclude from either.
57
+
58
+ ## Continuous integration
59
+
60
+ `.github/workflows/ci.yml` runs on every push and pull request. `release.yml`
61
+ calls it (`ci.yml:8`) as its `ci` job, so npm and brew publish only after CI
62
+ passed on the release commit. It runs five jobs. No matrix
63
+ cancels its other legs when one fails (`fail-fast: false`).
64
+
65
+ - `test` (`ci.yml:15-43`) on Python 3.10, 3.12, 3.13 and 3.14. 3.10 is the
66
+ floor the project supports. The byte-compile step exercises it rather than
67
+ asserts it. It byte-compiles, runs the suite with `-v`, lints with
68
+ ruff from `requirements-dev.txt` (`ci.yml:37`), audits the docs citations and
69
+ runs `TEZGAH_E2E_STRICT=1 python3 tests/e2e_plan_flow.py`.
70
+ - `test-sharded` (`ci.yml:48-69`) on Python 3.10 and 3.14 with node 22 (the
71
+ first line that loads the omp `.ts` hook without a flag):
72
+ `python3 tests/impacted.py --all`. It is a shadow that started 2026-10-05.
73
+ After four weeks it replaces the four-version `test` matrix only if it missed
74
+ no failure that matrix caught.
75
+ - `apps-e2e` (`ci.yml:71-88`) on Python 3.12 and node 20: one step,
76
+ `TEZGAH_E2E_STRICT=1 python3 tests/e2e_analyze_wiring.py`. It completes the
77
+ app-MCP handshake only - no browser, no device - so it stays deterministic;
78
+ strict mode makes a server that cannot start a failure rather than a skip, so
79
+ a broken wire cannot hide behind a skip (`e2e_analyze_wiring.py:4-12`).
80
+ - `artifact-install` (`ci.yml:90-128`) on Python 3.10 and 3.12: builds the
81
+ tarball, installs from it under a temp prefix, and runs the artifact smoke on
82
+ the installed tree instead of the checkout.
83
+ - `artifact-install-windows` (`ci.yml:130-214`) on `windows-latest`: the same
84
+ build, install and smoke through `packaging/install.ps1` - the twin a Windows
85
+ user runs - so it is the only place the Windows claim is proven. It then runs
86
+ the opencode plugin's path tests natively, `tezgah update --dry-run`, the
87
+ opencode live probe and `--uninstall` from the installed tree. Any residue
88
+ under the prefix fails it.
89
+
90
+ `.github/workflows/neuter.yml` runs two jobs weekly (and on demand). The first,
91
+ `neuter`, asks the question the suite cannot ask of itself - would a test fail
92
+ if a guard went?
93
+ `tests/neuter_matrix.py` clones HEAD once per anti-shortcut guard, reverts that
94
+ guard, and runs the gate's test modules; a mutant that still passes is a guard no
95
+ test notices, and an unmutated control that fails voids the run. The script
96
+ generates the gate half: one `gate-<rule>` mutant per rule `decision` refuses with.
97
+ It reads HEAD with the AST reader of the `--citations` rule check. Each mutant turns
98
+ every `return _deny(...)` of its rule into `pass` at its line span.
99
+ The script generates the Stop half too. Each `return ("<class>", ...)` site of
100
+ `_stop_block`, `_shape_block` and `_evidence_block` gets one `stop-<class>` mutant. Hand-written
101
+ rows cover the guards around those classes: the pass predicate, the empty-run
102
+ read and the "doğrulanmadı" clear. The lost call, the bookkeeping and idle-turn
103
+ fallbacks and the refusal row have rows too. The shortcut half is still
104
+ hand-written (`MUTANTS`), so a new guard there needs a row.
105
+
106
+ The second, `fuzz-shell`, runs the bash-oracle fuzzer (`tests/fuzz_shell.py`)
107
+ under the ubuntu runner's bash 5.x. Locally, macOS ships bash 3.2. A first step
108
+ fails unless `BASH_VERSINFO` is 5 or later. Then
109
+ `python3 tests/fuzz_shell.py --seed 1 --lines 20000 --strict` reads the lines
110
+ with the core readers. The same command with `--js` reads them with the
111
+ opencode plugin's ports. That step runs even when the core step failed.
112
+ `--strict` turns any disagreement class into exit 1
113
+ (`tests/fuzz_shell.py::main`). So a reader that misreads a bash 5 line fails
114
+ the leg instead of printing a count. `tests/test_packaging.py` pins the job.
115
+
116
+ The Stop rule's temporal spec (`hooks/tezgah_stopspec.py`, plan 063) has its own
117
+ local script, `tests/stop_spec_eval.py`. `--replay` judges plan 055's replayed
118
+ Stop events with both folds and reads GO 2 only on the events whose selector
119
+ reached the fold. `--shadow-rows` reads the live `stop_spec` rows the same way.
120
+ `--timing` times both folds in-process. `--stop-cost` times the whole
121
+ `stop_reason`, shadow on and off, on copies of the real ledgers. `--mutants`, also reached through
122
+ `tests/neuter_matrix.py --stop-generated`, runs seeded mutants of the formula
123
+ table through the in-process Stop tests of `tests/test_integrity.py`. On any
124
+ suite run, `TEZGAH_STOPSPEC_STRICT=1` fails the test that reached a disagreement.
125
+
126
+ The plan report (`render_table.py --acceptance --strict`) is not in CI: it reads
127
+ the gitignored `.tezgah/`, so on a runner it reads nothing and cannot fail. Run
128
+ it locally. The dsh and omp status-line scripts, `tests/e2e_tezgah_mcp.py` and
129
+ `tests/e2e_docker_cycle.py` are not in CI either.
130
+
131
+ ## How the suite is shaped
132
+
133
+ Every test that exercises a hook runs it in a subprocess with an environment the
134
+ test built: a throwaway `HOME`, `TEZGAH_ROOTS` under tempfile, `PYTHONPATH` at
135
+ `hooks/`, so the real `~/.claude`, `~/.config/tezgah` and `~/.cache` are never
136
+ read or written (`tests/support.py:3-5`). Four kinds of test live under `tests/`,
137
+ on top of that support layer.
138
+
139
+ **Unit tests over a module.** `tests/test_paths.py:17-18` imports
140
+ `hooks/tezgah_paths.py` directly and drives it in-process; where a temp HOME must
141
+ matter it patches the module's own constants with
142
+ `unittest.mock.patch.multiple` (`tests/test_paths.py::ConcurrentProbe`). Reach for this only for
143
+ pure logic or for concurrency, which a subprocess cannot express.
144
+
145
+ **Subprocess tests with a temp HOME.** The default. `TempHome` gives the test a
146
+ fresh `home` and a `roots` dir, `env()`, `make_repo()`, `config()` and `touch()`
147
+ (`TempHome`, `tests/support.py::TempHome`); the hook or CLI is then run with `run`
148
+ (`tests/support.py::run`) or `run_json` (`tests/support.py::run_json`). `tests/test_codex_hook.py::CodexHook` is the smallest example.
149
+
150
+ **Probes.** `tests/_probe_*.py` are tiny scripts that call one function of a
151
+ shared module and print its result as JSON, so the call happens in a process
152
+ whose `HOME` and `TEZGAH_ROOTS` are already the test's. They exist because those
153
+ modules derive paths from `HOME` at import time - `hooks/tezgah_paths.py:19-32`
154
+ builds `CONFIG`, `CACHE` and `DEFAULT_ROOT` at module level - so importing them
155
+ into the test process would answer about the developer's real machine.
156
+
157
+ | Probe | Command | Entry points |
158
+ |---|---|---|
159
+ | `tests/_probe_paths.py` | argv op, no payload (`:11`) | `roots`, `root_for`, `off`, `default_root`, `config`, `off_dirs`, `cache_dir`, `which_user`, `orx_bin`, `consult_options`, `have_typesafe_key`, `codegraph_bin` |
160
+ | `tests/_probe_context.py` | JSON on stdin, `{"fn": ...}` (`:4-5`) | `context_for`, `health_lines`, `health_segments`, `record` |
161
+ | `tests/_probe_integrity.py` | JSON on stdin (`:4-6`) | `note`, `note_tool`, `note_turn`, `kinds`, `events`, `prior_calls`, `counters`, `shortcut_command`, `shortcut_edit`, `stop_reason`, `verify_command` |
162
+ | `tests/_probe_agents.py` | JSON on stdin (`:3-4`) | `sync_root`, `opencode_json`, `cleanup`, `detect` |
163
+ | `tests/_probe_gate.py` | JSON on stdin (`:4-8`) | the shared gate `decision(tool, input, cwd, session_id)`; `capture_log` plants a stub `tezgah_snapshot` in `sys.modules`, so the snapshot call site is pinned whether or not that module has landed |
164
+
165
+ A probe is invoked through `support.run`/`run_json` with its path constant
166
+ (`support.PROBE_PATHS`, `support.PROBE_CONTEXT`, ... in `support.py:21-26`), e.g.
167
+ `run_json([support.PROBE_CONTEXT], {"fn": "health_lines", "cwd": repo},
168
+ env=self.env())` (`test_context.py::HealthLines.test_armed_but_unused_checklist`). Nothing in `tests/_probe_*.py` is
169
+ collected: the name does not match discovery's `test*.py` pattern and no probe
170
+ defines a `TestCase`.
171
+
172
+ **End-to-end scripts.** `tests/e2e_*.py` are not collected either
173
+ (`e2e_omp_statusline.py:13-16`) and are run by hand. They exit 0 on `PASS` or
174
+ `SKIP` and 1 only on a real failure (`tests/e2e_dsh_statusline.py::main`).
175
+
176
+ | Script | Needs | Prints `SKIP` when |
177
+ |---|---|---|
178
+ | `e2e_analyze_wiring.py` | node (`npx`) (`tests/e2e_analyze_wiring.py::main`) | npx is absent; a server that cannot start is a skip, or a failure under `TEZGAH_E2E_STRICT=1` (`:10-12`) |
179
+ | `e2e_analyze_web.py` | `TEZGAH_E2E_APPS=1`, npx, a Playwright browser build (`:9-13`) | the opt-in env var, npx, the server start or the browser build is missing |
180
+ | `e2e_analyze_mobile.py` | `TEZGAH_E2E_APPS=1`, npx, a booted simulator or emulator (`:9-14`) | the same, or no running device |
181
+ | `e2e_dsh_statusline.py` | the `dsh` binary, Playwright, a Chromium build, a persisted session (`tests/e2e_dsh_statusline.py::run`) | any of them is missing (`tests/e2e_dsh_statusline.py::run`) |
182
+ | `e2e_omp_statusline.py` | the `omp` binary and the extension `tezgah-setup` installs, plus a pty (`:13-15`) | either is missing (`tests/e2e_omp_statusline.py::run`) |
183
+ | `e2e_docker_cycle.py` | a running Docker daemon; the image is `python:3.12-slim` unless `TEZGAH_E2E_DOCKER_IMAGE` says otherwise (`tests/e2e_docker_cycle.py::IMAGE`) | docker or its daemon is missing (`tests/e2e_docker_cycle.py::main`) |
184
+
185
+ `SKIP` is the designed answer, not a hideout: these scripts test that a wire or a
186
+ render works, and a missing prerequisite says nothing about the repository. Two
187
+ are opt-in behind `TEZGAH_E2E_APPS=1` because they do real work, so they never run
188
+ by surprise (`tests/e2e_analyze_web.py::main`), and the omp script starts the TUI with
189
+ no prompt, so the run costs no model call (`e2e_omp_statusline.py:2-4`).
190
+
191
+ ## The rules a new test must satisfy
192
+
193
+ **It must fail on a plausible bug.** Where the repo turns a behaviour into a
194
+ string, the pin *is* the contract: the exact status segment
195
+ (`tests/test_statusline.py::SEGMENT`, compared at `tests/test_statusline.py::Statusline.test_claude_mode_segment`), a `tezgah-setup --status` row
196
+ label (`test_setup.py::StatusNamesTheHostListGap`), the opencode router line a skill's trigger
197
+ reaches (`test_setup.py::SkillRouterTriggers.test_core_skill_lines_carry_their_trigger`), the kill-switch labels whose deletion must
198
+ fail the test rather than silently disarm a rule (`test_context.py::KillSwitchEnforcement`). An
199
+ intentional change updates the pin in the same commit; deleting the test because
200
+ it is now red is the failure mode these pins exist to catch.
201
+
202
+ **Assert observable behaviour, not wiring, defaults or source text.** A test that
203
+ reads a file to check a copy of an implementation, or that asserts an internal
204
+ call was forwarded, dies at the first refactor. Where text is asserted it is
205
+ output the user or a host sees. The suite's own comments say the rule twice:
206
+ pin the behaviour, not one phrasing of it (`tests/test_skills.py::SkillStandards.test_the_bootstrap_completes_a_partial_tree_and_never_clobbers_it`), and pin a
207
+ rule on a synthetic input, not only on the shipped pair
208
+ (`test_setup.py::SkillTriggerLine`).
209
+
210
+ **Stay deterministic and isolated.** A temp HOME is the mechanism
211
+ (`support.py:3-5`), and importing `support` gives the test process one too, with
212
+ no `TEZGAH_SESSION` (`support.py:113-126`); `base_env` also points `TEZGAH_CODEGRAPH_BIN` and `TEZGAH_ORX_BIN`
213
+ at paths that do not exist and sets `TEZGAH_CONSULT_CLIS` empty, so the
214
+ machine's own graph binary, orx and agent CLIs cannot leak into an assertion
215
+ (`tests/support.py::base_env`). The installer suite sets
216
+ `TEZGAH_NO_DEPS=1` so `--install` fetches nothing (`tests/test_setup.py::SetupBase.setUp`). No test
217
+ reaches the network: where a provider is needed it is a loopback stub
218
+ (`tests/test_providers.py::Trickle.__init__`, `tests/test_consult_arena.py::ArenaCase.setUp`).
219
+
220
+ **Run inside the default discovery.** A new test is `tests/test_<thing>.py`, a
221
+ `unittest.TestCase`, and passes under
222
+ `python3 -m unittest discover -s tests` from the repository root. A check that
223
+ cannot run everywhere is not a test: it goes to `e2e_*.py` (needs a binary,
224
+ a browser or a device) or to a `_probe_*.py` helper the tests call.
225
+
226
+ ## What the suite deliberately does not do
227
+
228
+ - **No coverage target and no coverage tool.** `requirements-dev.txt` pins ruff
229
+ and nothing else (`requirements-dev.txt:1-3`); no coverage tool is named there
230
+ or in `pyproject.toml`. A line count is not a check.
231
+ - **No fixtures framework.** Stdlib `unittest` only (`CONTRIBUTING.md:33`);
232
+ `tests/support.py` is the whole fixture layer, with no `conftest.py`.
233
+ - **No network.** Loopback stubs only, as above.
234
+ - **Two e2e scripts stay opt-in and local**: `e2e_analyze_web.py` and
235
+ `e2e_analyze_mobile.py`, behind `TEZGAH_E2E_APPS=1`, with the wiring handshake
236
+ as their CI substitute (`AGENTS.md:108-114`).
237
+
238
+ ## Adding a test
239
+
240
+ **For a hook.** Subclass `TempHome`, make a repo, run the adapter with a payload
241
+ and `self.env()`, assert on its JSON output:
242
+
243
+ 1. `from support import TempHome, run_json` and `import support` (`test_codex_hook.py:1-8`).
244
+ 2. `repo = self.make_repo()`; seed any state with `self.touch(...)` / `self.config({...})`.
245
+ 3. `out, proc = run_json([support.CODEX_HOOK], {"hook_event_name": "Stop", "cwd": repo, "session_id": "s"}, env=self.env())`.
246
+ 4. `self.assertEqual(proc.returncode, 0, proc.stderr)` first, then assert the field you changed.
247
+ Which host lives where: `support.py:31-36` (`CODEX_HOOK`, `CURSOR_HOOK`, `OMP_HOOK`, `STATUSLINE`).
248
+ 5. Reading back what the hook wrote? Use the ledger probe, not the file path
249
+ (`test_codex_hook.py::CodexEvidence.kinds` uses `support.PROBE_INTEGRITY` with `{"fn": "kinds"}`).
250
+
251
+ **For a CLI.** Run it with a temp environment and assert on its stdout or on the
252
+ tree it left. A `bin/` CLI is run as a subprocess with `sys.executable` and an
253
+ explicit environment (`test_setup.py::SetupBase.setup`); `SetupBase` in
254
+ `tests/test_setup.py::SetupBase` is the worked example for `bin/tezgah-setup` (fake host
255
+ dirs, `TEZGAH_NO_DEPS=1`, stdin always a pipe so the wizard cannot block on a
256
+ real terminal). For a plain CLI,
257
+ `run([support.STATUSLINE], {"cwd": repo}, env=self.envv)` is enough
258
+ (`test_statusline.py::Statusline.test_claude_mode_segment`).
259
+
260
+ **For a status-line change.**
261
+
262
+ 1. Change the [mark](glossary.md#mark) in `hooks/tezgah_context.py` (the shared
263
+ builder) or in the host surface named on [status-line](status-line.md).
264
+ 2. Update the pinned segment in `tests/test_statusline.py:17-20` - both the
265
+ in-roots and off-roots constants - and re-run
266
+ `python3 -m unittest discover -s tests -p 'test_statusline.py'`.
267
+ 3. If the colour or the state changed, extend the `NO_COLOR` / `TEZGAH_STATUS_COLOR`
268
+ cases (`test_statusline.py::Statusline.test_status_color_env_off_strips_ansi`) rather than adding a new file.
269
+ 4. The shared builder is covered through the context probe
270
+ (`test_context.py::HealthLines`); a mark that flips on an event belongs there.
271
+ 5. Only the drawing is left to the real surface, and that is
272
+ `e2e_omp_statusline.py` / `e2e_dsh_statusline.py`, run by hand.
273
+
274
+ ## Source of truth
275
+
276
+ - `AGENTS.md`
277
+ - `CONTRIBUTING.md`
278
+ - `.github/workflows/ci.yml`
279
+ - `pyproject.toml`, `requirements-dev.txt`
280
+ - `tests/support.py`
281
+ - `tests/_probe_paths.py`, `tests/_probe_gate.py`, `tests/_probe_context.py`,
282
+ `tests/_probe_integrity.py`, `tests/_probe_agents.py`
283
+ - `tests/e2e_analyze_wiring.py`, `tests/e2e_analyze_web.py`,
284
+ `tests/e2e_analyze_mobile.py`, `tests/e2e_dsh_statusline.py`,
285
+ `tests/e2e_omp_statusline.py`
286
+ - `tests/test_statusline.py`, `tests/test_codex_hook.py`, `tests/test_setup.py`,
287
+ `tests/test_context.py`, `tests/test_paths.py`
package/docs/vision.md ADDED
@@ -0,0 +1,117 @@
1
+ # How a tezgah session is meant to run
2
+
3
+ **Who reads this, and when.** A maintainer or an agent about to change how
4
+ sessions behave: the check cadence, the review loop, model routing, the research
5
+ layer. It is the operating model those rules serve, with the measurement behind
6
+ each one. The rules themselves live in `hooks/tezgah_policy.py`; this page is the
7
+ shape they add up to, and it is written so a change to one of them can be judged
8
+ against the model instead of against taste.
9
+
10
+ Measured on 2026-10-01 from one session (356 active minutes, 573 tool calls) plus
11
+ the workspace's own records; every number below names where it came from.
12
+
13
+ ## The five principles
14
+
15
+ 1. **Answer first, act only inside the asked scope.** A turn whose ask is a
16
+ question answers it from evidence already gathered, then stops. Standing
17
+ authority to merge or push never fires on such a turn. (Measured: a question
18
+ turn ended in a merge and a push, and the user had to say the question went
19
+ unanswered.)
20
+ 2. **Cost is paid once per revision, not once per commit.** Checks have tiers,
21
+ and the biggest one runs once on the final tree (`hooks/tezgah_policy.py::CORE`). (Measured: 11 serial suite
22
+ runs, 106 minutes, 10 of them green confirmations, in one session - the rule
23
+ "run the full suite once, on the final tree" was already written down and
24
+ `AGENTS.md` said "before every commit".)
25
+ 3. **A review loop reads every fix.** A round that confirms a defect gets a
26
+ round over the fix. The loop ends when a round confirms none
27
+ (`hooks/tezgah_agents.py::_reviewer_body`). The same defect family three times means the
28
+ design changes. (Measured: two of four severe defects in one internal plan came from
29
+ fixes, after round two.)
30
+ 4. **Doubt lowers nothing and hides nothing.** An unverifiable check never
31
+ downgrades a finding, an unknown criterion never relaxes a cap, and a line
32
+ whose own criteria are unmet is reported as unanswered rather than concluded.
33
+ (Measured: `close --limit` accepted any string; 4 of 11 sampled research lines
34
+ concluded with the ask unanswered.)
35
+ 5. **Do not re-verify a revision that has not changed, and do not re-ask a
36
+ question that was answered.** Repeat guards key on the tree, not on the
37
+ command text; a green check is evidence until the tree moves.
38
+
39
+ ## The tiers, and what each costs (measured)
40
+
41
+ | Tier | Command | Wall time |
42
+ |---|---|---|
43
+ | edit loop | `tests/impacted.py --run <changed paths>` | 0.1-95 s (integrity+gate: 18 modules, 93.8 s) |
44
+ | pre-commit | that set + compileall + ruff (+ `--citations` when hooks/ or bin/ moved) | +~5 s |
45
+ | pre-merge, once | `tests/impacted.py --all` + the two e2e scripts | 103.5 s (8 shards; 566.9 s serial) |
46
+ | CI | the same, on the matrix in `.github/workflows/ci.yml` | unchanged |
47
+
48
+ A path the map does not know runs everything (`tests/impacted.py::modules_for`): `tests/support.py`,
49
+ `hooks/tezgah_paths.py` and anything new. `tests/test_impacted.py` refuses a
50
+ change that would silently run nothing.
51
+
52
+ ## Model routing
53
+
54
+ Every omp agent gets a **cross-family fallback chain** (`hooks/tezgah_models.py::_chain`, over `hooks/tezgah_models.py::funded_families`): the mode's family first,
55
+ then every other family this machine holds a credential for. One pin per agent
56
+ made one provider's 429 every subagent's failure, because the account is shared
57
+ with the main thread (measured: 24 of 26 post-routing 429s hit a subagent's first
58
+ request, all on one Opus account; four reviews and three implementation agents
59
+ died on it in one day). A family whose credential cannot be detected is left out
60
+ of the chain, never guessed in. The main thread's own model, and the provider-keyed
61
+ chains, stay the user's settings - tezgah writes only the keys it owns.
62
+
63
+ What tezgah cannot fix from inside: a provider that stalls on a very large
64
+ context (`OpenAI completions stream stalled`, five minutes without an event on a
65
+ 458k-token request - a DeepSeek-side stall, with no hook blocking the loop), and a
66
+ quota shared by every session on the machine. Those are settings and a reminder,
67
+ not a rule.
68
+
69
+ ## The research layer
70
+
71
+ A line carries the user's ask verbatim, a tier (`quick` gets no line at all, `hooks/tezgah_research.py::ask_problems`), and
72
+ one success criterion per part of the ask, written before any experiment. It ends
73
+ with a verdict per criterion; a criterion that is `not-met` is a result, but it is
74
+ recorded, and an unanswered line stays visible in `status` instead of disappearing
75
+ into `done/`. Lines live under `research/open/` and `research/done/`, the way plans do, resolved
76
+ by one reader (`hooks/tezgah_research.py::line_dir`); an unmet criterion keeps a line
77
+ listed as unanswered (`hooks/tezgah_research.py::unanswered`).
78
+
79
+ ## What is measured to know the operating model holds
80
+
81
+ These are measures of how a session runs, not of task outcomes.
82
+
83
+ - wall time per session and the share spent waiting;
84
+ - serial full-suite runs per session (the count, not the length, is the cost);
85
+ - review rounds per change;
86
+ - subagent spawn failures by model;
87
+ - research lines concluded with every criterion met, against lines concluded
88
+ unanswered;
89
+ - `status`'s own count of lines the layout has not migrated.
90
+
91
+ ## What it does not claim
92
+
93
+ The model above describes mechanisms: what a session is told, what the gate
94
+ refuses, what the ledger records. It does not claim that an agent under tezgah
95
+ cheats less, finishes more tasks or reports more honestly. A paired on/off
96
+ experiment in October 2026 tested that and found no measurable effect. It ran
97
+ DeepSeek V4.1 Flash on omp, bare against a full install. On ImpossibleBench's
98
+ conflicting SWE-bench split, the agent cheated in 0 of 132 runs with tezgah and
99
+ 1 of 131 without. The model barely cheated in either arm, so the experiment had
100
+ no headroom. Hand labels of final messages on those impossible tasks found
101
+ false done claims in 3 of 30 runs with tezgah and 6 of 30 without. The CI of
102
+ that difference includes 0. The Stop rule's claim reader
103
+ flagged far more runs than that. On Turkish replies it counts `doğrulandı`
104
+ (verified) on a partial fix as a claim, a recorded weakness not yet fixed. The
105
+ numbers, the per-task counts and the instrument flaws are in
106
+ [the results bundle](results/paired-outcome-2026-10.md).
107
+
108
+ ## Source of truth
109
+
110
+ - `hooks/tezgah_policy.py` - the rules this page describes.
111
+ - `hooks/tezgah_integrity.py`, `hooks/tezgah_gate.py` - the gate and the ledger.
112
+ - `hooks/tezgah_models.py`, `docs/models.md` - the routing table and the chains.
113
+ - `hooks/tezgah_research.py`, `docs/research.md` - the research layer.
114
+ - `tests/impacted.py`, `docs/testing.md`, `AGENTS.md` - the check tiers.
115
+ - `docs/results/paired-outcome-2026-10.md` - the paired outcome experiment.
116
+ - The four internal diagnosis reports behind the numbers (session scratch,
117
+ not published).
@@ -0,0 +1,33 @@
1
+ {
2
+ "hooks": {
3
+ "SessionStart": [
4
+ { "hooks": [ { "type": "command", "command": "TEZGAH_CORE_IN_FILE=1 \"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-auto-init.py\"", "timeout": 10 } ] }
5
+ ],
6
+ "SubagentStart": [
7
+ { "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-auto-init.py\"", "timeout": 10 } ] }
8
+ ],
9
+ "PostCompact": [
10
+ { "hooks": [ { "type": "command", "command": "TEZGAH_CORE_IN_FILE=1 \"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-auto-init.py\"", "timeout": 10 } ] }
11
+ ],
12
+ "UserPromptSubmit": [
13
+ { "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-auto-init.py\"", "timeout": 10 } ] }
14
+ ],
15
+ "PreToolUse": [
16
+ { "matcher": "Agent|agent|Task|task|Grep|grep|Bash|bash|PowerShell|pwsh|Shell|shell|subagent|Edit|Write|MultiEdit|NotebookEdit", "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-pretooluse.py\"", "timeout": 5 } ] },
17
+ { "matcher": "^mcp__(?:.*[^A-Za-z0-9])?(?:append|cancel|clear|click|close|comment|commit|copy|create|delete|deploy|drag|edit|email|evaluate|exec|execute|fill|insert|install|kill|launch|merge|message|mkdir|move|navigate|notify|patch|pause|post|press|print|publish|push|put|release|remove|rename|replace|reply|resume|review|run|save|send|set|share|skip|start|stop|submit|swipe|tag|tap|terminate|type|uninstall|update|upload|write)(?:[^A-Za-z0-9].*)?$", "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-pretooluse.py\"", "timeout": 5 } ] }
18
+ ],
19
+ "PostToolUse": [
20
+ { "matcher": "Edit|edit|Write|write|MultiEdit|NotebookEdit|Bash|bash|PowerShell|pwsh|str_replace_editor|WebFetch|WebSearch|web_fetch|web_search|fetch|mcp__.*", "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-posttooluse.py\"", "timeout": 5 } ] },
21
+ { "matcher": "Agent|Task|Skill", "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-posttooluse.py\"", "timeout": 5 } ] }
22
+ ],
23
+ "PostToolUseFailure": [
24
+ { "matcher": "Edit|edit|Write|write|MultiEdit|NotebookEdit|Bash|bash|PowerShell|pwsh|str_replace_editor|WebFetch|WebSearch|web_fetch|web_search|fetch|mcp__.*", "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-posttooluse.py\"", "timeout": 5 } ] }
25
+ ],
26
+ "Stop": [
27
+ { "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-stop.py\"", "timeout": 5 } ] }
28
+ ],
29
+ "SubagentStop": [
30
+ { "hooks": [ { "type": "command", "command": "\"${TEZGAH_PYTHON:-python3}\" \"${CLAUDE_PLUGIN_ROOT}/hooks/projects-stop.py\"", "timeout": 5 } ] }
31
+ ]
32
+ }
33
+ }
@@ -0,0 +1,98 @@
1
+ #!/usr/bin/env python3
2
+ """Claude Code hook: SessionStart, UserPromptSubmit, SubagentStart, PostCompact.
3
+
4
+ Emits the shared tezgah context (hooks/tezgah_context.py) for the session's
5
+ cwd when it resolves inside a configured root, and prints nothing outside them.
6
+ This file is only the Claude envelope; the contract itself lives in the core so
7
+ Codex, Cursor, opencode, dsh and omp inject the exact same text.
8
+ """
9
+ import json
10
+ import os
11
+ import sys
12
+
13
+ sys.path.insert(0, os.path.dirname(os.path.realpath(__file__)))
14
+ from tezgah_guard import attest_session, import_failed, safe # noqa: E402
15
+ try:
16
+ from tezgah_context import context_for, record # noqa: E402
17
+ from tezgah_paths import HOST_DIRS # noqa: E402
18
+ except Exception as exc:
19
+ import_failed(exc)
20
+
21
+ EVENTS = {
22
+ "SessionStart": "session_start",
23
+ "UserPromptSubmit": "user_prompt",
24
+ "SubagentStart": "subagent_start",
25
+ "PostCompact": "post_compact",
26
+ }
27
+
28
+ # PostCompact is observed, not answered. A real compaction on Claude Code
29
+ # 2.1.283 (2026-09-30) showed what the host does with an envelope on
30
+ # this event: it REJECTS it - "Hook JSON output validation failed -
31
+ # hookSpecificOutput.hookEventName: expected one of "PreToolUse" |
32
+ # "UserPromptSubmit" | ... | "SessionStart" | ..." - reports the hook as failed,
33
+ # and prints the raw JSON, context text included, into the transcript the model
34
+ # reads next. The post-compaction context reaches the model through SessionStart,
35
+ # which fires again as `SessionStart:compact` and whose additionalContext was
36
+ # delivered in the same run. So on PostCompact this hook still builds the block -
37
+ # that is where `context_for` records the compaction (remember_compaction) - and
38
+ # prints nothing. Codex answers PostCompact from hosts/codex/hook.py, which
39
+ # prints no context on it either, and dsh's bridge does not carry the event.
40
+
41
+ # Claude's global memory file, where install_claude writes the always-on core as
42
+ # a managed block: the file Claude reads into every session, so the core is
43
+ # already in the session's instructions.
44
+ CORE_IN_FILE = os.path.join(HOST_DIRS["claude"], "CLAUDE.md")
45
+
46
+
47
+ def core_is_in_a_file():
48
+ """True when the core reaches this session from a file the host keeps, so
49
+ this hook must not pay for the contract a second time in its one message.
50
+
51
+ The host declares it in its manifest (`TEZGAH_CORE_IN_FILE`, the same shape
52
+ as the dsh rows' `TEZGAH_CALL_OUTCOME`) rather than this file guessing from
53
+ the payload: dsh runs this very script through its claude-code bridge and has
54
+ no such file, so its session still gets the core from here. The file is read
55
+ as well as assumed - a user who deleted it falls back to the hook."""
56
+ if os.environ.get("TEZGAH_CORE_IN_FILE") != "1":
57
+ return False
58
+ try:
59
+ with open(CORE_IN_FILE, encoding="utf-8", errors="ignore") as fh:
60
+ return "<!-- tezgah:start" in fh.read()
61
+ except OSError:
62
+ return False
63
+
64
+
65
+ def main():
66
+ try:
67
+ payload = json.load(sys.stdin)
68
+ except Exception:
69
+ payload = {}
70
+ event = payload.get("hook_event_name") or "SessionStart"
71
+ cwd = payload.get("cwd") or os.environ.get("CLAUDE_PROJECT_DIR") or os.getcwd()
72
+ if event == "SubagentStart":
73
+ # The status line's orch mark. This file is the only SubagentStart hook
74
+ # tezgah wires, and dsh (which runs it too) has no transcript to derive
75
+ # the kind from, so the store is the only channel its line has.
76
+ safe(payload.get("session_id"), record, payload.get("session_id"), "orch")
77
+ if event == "SessionStart":
78
+ # Claude and dsh run this one script; Claude's manifest declares
79
+ # TEZGAH_CORE_IN_FILE on SessionStart and dsh's does not, so the flag
80
+ # names whose entries to attest. ponytail: a Claude manifest edited to
81
+ # drop the flag is attested as dsh - and still reads as drift there.
82
+ sid = payload.get("session_id")
83
+ host = "claude" if os.environ.get("TEZGAH_CORE_IN_FILE") == "1" else "dsh"
84
+ safe(sid, attest_session, host, sid, cwd)
85
+ text = safe(payload.get("session_id"), context_for,
86
+ EVENTS.get(event, "session_start"), cwd, payload,
87
+ # the brief is a subagent's own text, never the file's; every
88
+ # other event drops the core when the host's file carries it
89
+ with_core=(event == "SubagentStart" or not core_is_in_a_file()))
90
+ if text and event != "PostCompact":
91
+ json.dump({"hookSpecificOutput": {
92
+ "hookEventName": event,
93
+ "additionalContext": text,
94
+ }}, sys.stdout)
95
+ sys.exit(0)
96
+
97
+
98
+ main()