@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
package/docs/skills.md ADDED
@@ -0,0 +1,236 @@
1
+ # Skills: what ships, and how one reaches a host
2
+
3
+ Read this when you are asking what a skill is in tezgah, how one reaches a [host](glossary.md#host),
4
+ or how to add one without breaking the router or the install report. It owns the
5
+ skill layer: the files under `skills/`, the router that lists them, and the
6
+ install step that links them. The always-on rule text a session is told is
7
+ [contract](contract.md)'s subject; each host's surfaces are [hosts](hosts.md)'s.
8
+
9
+ ## What a skill is
10
+
11
+ A skill is `skills/<name>/SKILL.md`: YAML frontmatter carrying `name` and
12
+ `description`, then a markdown body. The body is instructions for the model - the
13
+ read tool opens it, nothing executes it. `plan-add` and `ponytail` also declare
14
+ `argument-hint` in that frontmatter (`skills/plan-add/SKILL.md:11`,
15
+ `skills/ponytail/SKILL.md:16`), and Claude exposes each skill as
16
+ `/tezgah:<name>` - a bare `/plan-add` is a command that does not exist
17
+ (`tests/test_skills.py::SkillStandards.test_slash_commands_carry_the_prefix_the_plugin_registers`).
18
+
19
+ Two neighbours are not skills. A **slash command** is a file under `commands/`
20
+ wired only through the Claude plugin channel - `commands/ponytail.md` and
21
+ `commands/adhd.md` are shells over `tezgah-pony` and `tezgah-adhd`, and no other
22
+ host installs them (`commands/` appears nowhere in `bin/tezgah-setup`). Its name
23
+ is prefixed with the plugin's, so the command is `/tezgah:plan-sync` and a bare
24
+ `/plan-sync` does not exist (`tests/test_skills.py::SkillStandards.test_slash_commands_carry_the_prefix_the_plugin_registers`). An **always-on
25
+ rule** is text injected into every turn by the client hooks, defined in
26
+ `hooks/tezgah_policy.py::CORE`; the model cannot choose not to load it,
27
+ and only the on-demand tail of it points at a skill, `tezgah-contract`
28
+ (`hooks/tezgah_policy.py::POINTERS`). A rule is disarmed with a [kill switch](glossary.md#kill-switch); a
29
+ skill is simply not read.
30
+
31
+ ## The router
32
+
33
+ opencode's plugin does inject prompt-time text - the builder's per-turn block,
34
+ the conditional rules included
35
+ (`hosts/opencode/plugins/tezgah.js:2596-2625`) - but that text names at most one
36
+ skill (the hint), never the roster, so the installer writes one:
37
+ `~/.config/tezgah/opencode-skills.md` always-on and
38
+ `opencode-skills.full.md` on demand (`bin/tezgah-setup::SKILL_ROUTER`, `bin/tezgah-setup::SKILL_ROUTER_FULL`), the first
39
+ listed in opencode's `instructions` (`bin/tezgah-setup::install_opencode`). Its native
40
+ skill list and `skill` tool are switched off in the same pass -
41
+ `permission.skill = "deny"` (`bin/tezgah-setup::install_opencode`) - so the generated file is
42
+ the only list that host has.
43
+
44
+ The router is generated, not written: `skill_groups()` walks the installed skill
45
+ directories in precedence order - this checkout's `skills/`, then opencode's,
46
+ Claude's and `~/.agents/skills` - takes the first directory that defines a name,
47
+ buckets each by `skill_category()` and returns the groups
48
+ (`bin/tezgah-setup::skill_groups`). Buckets are `tezgah core`, `code & host tooling`,
49
+ `research & papers`, `AI research & engineering`, `marketing & growth`; the first
50
+ two are listed always-on and the rest collapse to a count line pointing at the
51
+ full file (`bin/tezgah-setup::ROUTER_ALWAYS`, `bin/tezgah-setup::skill_router_texts`). `ai-research` is the one
52
+ exception: it stays named in the always-on file under `research (tezgah's own)`
53
+ because a library a session is never told about is one it answers from memory -
54
+ measured on a live opencode turn that read nothing and answered anyway
55
+ (`bin/tezgah-setup::skill_router_texts`).
56
+
57
+ Each line is `name - trigger - path`, and the trigger is one sentence pulled from
58
+ the frontmatter `description` by `skill_description()` (`bin/tezgah-setup::skill_description`,
59
+ `bin/tezgah-setup::_router_section`). **The sentence carrying the `Use when ...` trigger wins over the
60
+ opening one.** A line built from the first sentence is what shipped, and it
61
+ stripped `tezgah-contract` and `ponytail` of every word a session matches on -
62
+ `tezgah-contract`'s description opens with "The full tezgah working contract." -
63
+ leaving both unroutable. The rule is pinned on a synthetic `SKILL.md`, not only on
64
+ the two shipped ones (`tests/test_setup.py::SkillTriggerLine`), and the live router's own
65
+ lines are asserted to carry their trigger words (`tests/test_setup.py::SkillRouterTriggers.test_core_skill_lines_carry_their_trigger`).
66
+ A line is cut at 140 characters with a trailing `...`; a description with no
67
+ trigger sentence keeps its first sentence.
68
+
69
+ The on-demand file also carries a **collision table**: the pairs among tezgah's
70
+ own skills whose descriptions share three or more subject words, computed from
71
+ the router lines themselves (`skill_collisions()`, `bin/tezgah-setup::skill_collisions`).
72
+ It rides `opencode-skills.full.md` and never the always-on file, because it is
73
+ read when a session is about to choose, not every turn. It is a view, not a
74
+ rename: it names `plan-add` / `plan-status` / `plan-sync` and
75
+ `design-contract` / `design-library` side by side, and leaves the choice to the
76
+ session. `tests/routing-fixtures.md` is the other half - situation to skill, with
77
+ the word the router line has to keep - and
78
+ `tests/test_setup.py::RoutingFixtures` fails when a reworded description drops
79
+ one, or when a shipped skill has no fixture at all.
80
+
81
+ Every other host gets the same idea natively: the skills are linked into the
82
+ directory that host reads, and the host lists `name` + `description` itself -
83
+ which is why the installer counts that metadata as an always-on cost
84
+ (`bin/tezgah-setup::context_budget`).
85
+
86
+ ## How a skill reaches a host
87
+
88
+ `SKILLS` in `bin/tezgah-setup::SKILLS` is the shipped list, and it is the single
89
+ definition of "a tezgah skill": the router, the per-host linking, the uninstall
90
+ and the context budget all read it. Each install function links those
91
+ directories into the host's own skill directory - Codex
92
+ (`bin/tezgah-setup::install_codex`), opencode (`bin/tezgah-setup::install_opencode`), Cursor (`bin/tezgah-setup::install_cursor`), dsh
93
+ (`bin/tezgah-setup::install_dsh`), omp (`bin/tezgah-setup::install_omp`). Claude is the exception: it installs from a
94
+ plugin, so the skills arrive in the COPY at
95
+ `~/.claude/plugins/cache/<marketplace>/tezgah/<version>/` that `--sync` refreshes
96
+ and `--install` re-refreshes when it is stale (`bin/tezgah-setup:26-29`,
97
+ `bin/tezgah-setup::sync`, `bin/tezgah-setup::refresh_plugin_copy`). On Claude the plugin name prefixes the skill name -
98
+ `Skill(tezgah:ponytail)` (`hooks/tezgah_policy.py::PONYTAIL`).
99
+
100
+ The install report checks the file, not the link. `skills_linked()` requires
101
+ every name in `SKILLS` to resolve to a readable `SKILL.md` under the host
102
+ directory (`skills_linked()`, `bin/tezgah-setup::skills_linked`), and it is used for every host row
103
+ (`bin/tezgah-setup::host_checks_codex`, `bin/tezgah-setup::host_checks_opencode`, `bin/tezgah-setup::host_checks_cursor`, `bin/tezgah-setup::host_checks_dsh`, `bin/tezgah-setup::host_checks_omp`). It was
104
+ `islink()` once, and a link to nothing is a link: a name whose `SKILL.md` was
105
+ never written reported as linked on every host at once while no host could read
106
+ it (`tests/test_skills.py::SkillStandards`).
107
+
108
+ ## The shipped skills
109
+
110
+ | Skill | What it is for, and when it fires |
111
+ |---|---|
112
+ | `harness` | Picks and runs the right multi-agent harness on top of the code graph; fires on an audit, "every call site", "what breaks if", or a task too wide for one context window. |
113
+ | `tezgah-contract` | The full contract behind the always-on core - graph rule, harnesses, orchestration, codegen, consult, kill switches; loads when the core points here or a task needs that detail. |
114
+ | `ponytail` | Forces the laziest solution that works, in levels lite/full/ultra; fires on any coding task, or "be lazy", "yagni", "shortest path". |
115
+ | `i-have-adhd` | Shapes output for a reader who acts on it - action first, numbered steps, errors as location/cause/fix; fires on any answer the reader must act on, not on code, commits or docs. |
116
+ | `no-ai-slop` | Edits a draft sharper and more human without losing the voice, or flags slop; fires on a draft review, on a draft in a language other than English, on text that must keep terms, identifiers or unit symbols verbatim, and before publishing English prose tezgah writes itself. |
117
+ | `analyze-app` | Inspects and drives a running web or mobile app from its accessibility / DOM / view tree, its rendered screen (screenshots, blur and grayscale tests, breakpoints) and measurements taken in the page; fires when a task must verify behaviour or read the UI, not just read source. |
118
+ | `plan-add` | Creates a plan under `.tezgah/plans/open/` with its own `allowed_paths:` scope, bootstraps the `.tezgah/plans/` layer if missing, commits it in the private `.tezgah` repository (`git -C .tezgah`, never the project's git); fires on `/tezgah:plan-add`, "track this as a plan". |
119
+ | `plan-status` | Reads every open plan, enriches rows with live PR state from `gh`, rewrites the README table (committed in the private `.tezgah` repository) and recommends the next plan; fires on `/tezgah:plan-status` or "what plans are open". |
120
+ | `plan-sync` | Closes finished plans whose PR merged or closed through `tezgah-task close`, which moves a plan to `.tezgah/plans/done/` as done only when it records an approving `review:`; commits one message per plan in the private `.tezgah` repository; fires on `/tezgah:plan-sync`, "sync plans". |
121
+ | `research` | Runs an auditable research line - two loops, protocol before run, six-dimension review, provenance; fires when the deliverable is evidence: a lit review, a hypothesis, a benchmark or ablation. |
122
+ | `product-analysis` | Runs a product analysis across five axes - value (HEART), usability (heuristics, the cognitive walkthrough, WCAG 2.2, axe-core, the running app read through `analyze-app` down to component x state, tree and image both), feasibility (a cited `path:line`), competition (a dated teardown) and triage (keep/fix/cut/bet) - with one named evidence class per finding, executed as a research line; fires on a product, feature, retention or roadmap question rather than a code change. |
123
+ | `pm-frameworks` | The two vendored product methods the analysis skill defers to - intended-vs-implemented and the Opportunity Solution Tree - kept offline so an offline session reads the method instead of citing its name. |
124
+ | `feature-audit` | Audits ONE feature across every layer it is spread over - the surfaces a person uses (a control, a list or table, a detail view, a filter, a picker, a step flow, a notification), the route, the authorization, the service and the data - by filling the capability, field-contract, flow/step and interaction-dependency matrices, where a disagreement between layers is a finding and a fix needing an absent capability becomes a capability-change proposal; fires on an admin screen, CRUD, form, wizard, data table, filter or permission question about an existing feature. |
125
+ | `design-contract` | The artifact shape of the per-repo `.tezgah/design-contract.md` - colour roles, type scale, spacing unit and rhythm, the component inventory, the state set every interactive control and data view owes - the derivation rule that reads it out of the repository's own tokens, and the rules `bin/tezgah-design check` fails on; fires on a UI or component turn that needs a floor, a token, a state set, or the design check itself. |
126
+ | `design-library` | The vendored MC Dean design/UX subset - 39 skills in the `cognitive-accessibility`, `adaptive-interfaces`, `inclusive-interaction`, `visual-critique` and `design-research` plugins - read one entry at a time through its own `INDEX.md`, never the tree; fires when a UI or product turn needs a cognitive-load, inclusive-interaction or visual-critique method tezgah has no counterpart for. |
127
+ | `ai-research` | The vendored 98-skill library for AI/ML machinery - training and serving a model, benchmarks, interpretability, retrieval pipelines; read one entry, never the tree. |
128
+ | `rl-env` | The vendored FineEnvs skill set for authoring an RL environment from a description - OpenEnv, OpenReward/ORS, Verifiers and NeMo Gym, plus the orchestrator that ports one description across all four; read one entry, never the tree. |
129
+
130
+ ## Vendored material
131
+
132
+ `NOTICE` records every third-party skill and its terms: it opens by saying the
133
+ root MIT LICENSE covers tezgah's own files while these copies keep their
134
+ original terms ([NOTICE:1-2]), and an adapted entry adds what the adaptation
135
+ changed. A test fails if the adapted upstream or its licence stops being named
136
+ (`tests/test_skills.py::SkillStandards.test_notice_records_the_adapted_upstream_and_its_licence`). `skills/no-ai-slop`, `skills/ponytail`,
137
+ `skills/i-have-adhd`, `skills/research`, `skills/product-analysis`,
138
+ `skills/pm-frameworks` and `skills/ai-research` are MIT; `skills/rl-env` is
139
+ Apache-2.0 and keeps that repository's terms.
140
+ `i-have-adhd` is adapted (the ten rules kept, two rewritten, the user-invocation
141
+ frontmatter dropped so the router can reach it); `research` adapts the
142
+ orchestration layer of Orchestra Research's AI-research-SKILLs library and copies
143
+ nothing verbatim; `ponytail`'s origin was not recorded at vendoring time. In
144
+ every case the entry names the upstream, and an adapted entry says what the
145
+ adaptation changed - the same record an added adaptation is expected to carry.
146
+
147
+ `skills/ai-research` is the large vendored tree: 98 upstream skills in 23
148
+ categories, bodies byte-for-byte upstream including frontmatter and `author`
149
+ lines, at revision `773a52944ba4747a18bd4ae9ade53fff041adcbc`
150
+ ([skills/ai-research/SOURCE:1-20]). No machine-scraped reference dumps and no
151
+ LaTeX template trees were copied, and every drop is named in that file.
152
+ `bin/tezgah-import-ai-research --check` verifies the tree against its manifest.
153
+
154
+ `skills/rl-env` is the Apache-2.0 one: the five FineEnvs environment-authoring
155
+ skills - `rl-env-from-description` plus the four framework ports - and every
156
+ reference file they ship, 14 bodies byte-for-byte from
157
+ `adithya-s-k/FineEnvs` at revision `26ab9c6` ([skills/rl-env/SOURCE:1-6]),
158
+ under `skills/rl-env/<skill>/` at their upstream path. Nothing is adapted.
159
+ Upstream's own install route is not used here: `npx skills add
160
+ adithya-s-k/FineEnvs` writes into a host's skill directory, which the router
161
+ does not read, the install report does not list and `SOURCE` cannot vouch for -
162
+ the vendored copy is what the router reaches. The entry point
163
+ `skills/rl-env/SKILL.md` is tezgah's own and is not in the manifest, and it is
164
+ the file that says what the vendored bodies cannot: this repository runs no
165
+ trainer, so an environment they build needs a machine that does.
166
+
167
+ `skills/pm-frameworks` is the small one: two product-management methods -
168
+ `intended-vs-implemented` and `opportunity-solution-tree` - byte-for-byte from
169
+ `phuryn/pm-skills` at revision `8607e3b077817f89bf4a9b623246219734ac3be0`
170
+ ([skills/pm-frameworks/SOURCE:1-5]). Its manifest is the table in `SOURCE`, and
171
+ `tests/test_skills.py` hashes each listed body and fails on an unlisted directory
172
+ beside them; the entry point `SKILL.md` is tezgah's own and is not in it.
173
+
174
+ `skills/design-library` is the adapted one: 39 skills from two Owl-Listener
175
+ repositories - `inclusive-design-skills` at `6e0740f` (the whole
176
+ cognitive-accessibility, adaptive-interfaces and inclusive-interaction plugins)
177
+ and `designer-skills` at `9a6930c` (visual-critique, and two design-research
178
+ skills) - both MIT, vendored at the upstream path under those five plugin
179
+ directories, with `INDEX.md` as the routing surface and `EVALS.md` as the three
180
+ trap cases the library is scored against. Two bodies depart from upstream, and
181
+ `skills/design-library/SOURCE` and `NOTICE` name both: the touch-target entry
182
+ paired `44x44 CSS pixels` with `WCAG 2.2 Level AA`, where SC 2.5.8 is Level AA at
183
+ 24x24 and SC 2.5.5 is Level AAA at 44x44 - 24 is the floor `bin/tezgah-design`
184
+ enforces - and `adaptive-personalisation/SKILL.md` carried the sibling
185
+ `contextual-help-design` skill's `name`, which a host that loads a skill from its
186
+ directory skips. `tests/test_skills.py` hashes every listed body, fails on an
187
+ unlisted directory, and fails on a body that pairs 44x44 with Level AA again.
188
+
189
+ ## Adding a skill
190
+
191
+ 1. Write `skills/<name>/SKILL.md` with frontmatter carrying `name` and a
192
+ `description` whose **later** sentence begins `Use when ...` - that sentence
193
+ is the router line, and it must carry the words a session would match on
194
+ (`bin/tezgah-setup::skill_description`).
195
+ 2. Add the name to `SKILLS` (`bin/tezgah-setup::SKILLS`). `SKILLS` drives the
196
+ router, the linking, the uninstall and the budget; a name without a
197
+ `SKILL.md`, or a directory without a `SKILLS` entry, is not a shipped skill.
198
+ 3. Expect `tests/test_skills.py::SkillStandards` to fail if the two disagree, and
199
+ `tests/test_setup.py::SkillRouterTriggers.test_core_skill_lines_carry_their_trigger` to fail if the generated router line lost its
200
+ trigger words. Re-run `--install` (or opencode's `--refresh`,
201
+ `bin/tezgah-setup::refresh_contract`) so the written routers pick the skill up.
202
+ 4. Add a row to `tests/routing-fixtures.md`: situation, the skill, and the word
203
+ the router line has to keep. `RoutingFixtures` fails on a shipped skill with
204
+ no row, and on a row whose word a reworded description dropped. The
205
+ frontmatter lint in `tests/test_skills.py::Frontmatter` then holds the entry
206
+ point itself: name equals directory, kebab-case, a `Use when` sentence, a
207
+ description under the metadata cap, every backticked cross-reference
208
+ resolving. Vendored trees are exempt there - their frontmatter is upstream's
209
+ bytes, pinned by that library's own hash test.
210
+ 5. Quote examples in a form the tests accept: no floating `@latest` package tag
211
+ and any pinned package spec must match the one tezgah wires
212
+ (`tests/test_skills.py::SkillStandards`); slash commands carry the `tezgah:` prefix
213
+ (`tests/test_skills.py::SkillStandards.test_slash_commands_carry_the_prefix_the_plugin_registers`); no unrendered placeholder such as
214
+ `<repo slug>` (`tests/test_skills.py::SkillStandards.test_no_unrendered_placeholder_reaches_the_injected_text`); every kill switch named in
215
+ `CORE` appears in `tezgah-contract` (`tests/test_skills.py::SkillStandards`); a rule
216
+ added to the contract must also reach the skill
217
+ (`tests/test_setup.py::ContractParity.test_every_rule_and_heading_in_the_contract_reaches_the_skill`).
218
+
219
+ ## Source of truth
220
+
221
+ - `bin/tezgah-setup` - `SKILLS`, `skills_linked()`, `skill_description()`,
222
+ `skill_category()`, `skill_groups()`, `skill_router_texts()`, the collision
223
+ table (`skill_collisions()`), the per-host `install_*` linking, `--sync`, the
224
+ report rows
225
+ - `skills/*/SKILL.md` - the shipped skills and their frontmatter
226
+ - `commands/ponytail.md`, `commands/adhd.md` - the Claude-only slash commands
227
+ - `NOTICE`, `skills/ai-research/SOURCE`, `bin/tezgah-import-ai-research`
228
+ - `skills/design-library/SOURCE`, `INDEX.md`, `EVALS.md` - the adapted library,
229
+ its index and its three trap cases
230
+ - `skills/rl-env/SOURCE` - the vendored FineEnvs environment-authoring set, its
231
+ upstream revision and the per-file sha256
232
+ - `hooks/tezgah_policy.py` - the always-on rule text and the Claude skill name
233
+ - `tests/test_setup.py`, `tests/test_skills.py` - the router-line, name
234
+ resolution, frontmatter, collision and skill-standard tests
235
+ - `tests/routing-fixtures.md` - situation to skill, with the word the router line
236
+ has to keep
@@ -0,0 +1,315 @@
1
+ # Status line: what each mark means and how it is drawn
2
+
3
+ Every [host](hosts.md) shows one line: what tezgah has armed, what this session
4
+ has used, and what this repo adds. Read it when you add a
5
+ [mark](glossary.md#mark), when no line is drawn, or when a mark shows a state you
6
+ cannot explain. As this repository prints it:
7
+
8
+ tezgah v1.0.0 · pony○ exec✓ adhd○ · consult○ research○ graph○ orch○ judge○ · idx✓ · plans 1
9
+
10
+ ## Shape: segments, groups, separator
11
+
12
+ One mark is one segment — `{"key", "state", "glyph", "text", "group"}` — built
13
+ host-neutrally by `health_segments()` (`hooks/tezgah_context.py::health_segments`).
14
+ `render_line()` joins segments with one space inside a group and ` · ` between
15
+ groups (`hooks/tezgah_context.py::render_line`). The group is *data on each segment*: a renderer building its
16
+ own line from `--json` separates on `seg.group` and matches `render_line()`
17
+ without a second copy of the partition (`hooks/tezgah_context.py::health_segments`) — opencode and dsh do exactly
18
+ that (hosts/opencode/tui/tezgah-tui.tsx:108-111,
19
+ hosts/dsh/statusline/lib/client.js:86-90).
20
+
21
+ | group | members | why together |
22
+ |---|---|---|
23
+ | -1 | the version prefix | the product itself, before any mark |
24
+ | 0 | `pony`, `exec`, `adhd` | the always-on switches |
25
+ | 1 | `consult`, `research`, `graph`, `orch`, `judge` | the on-demand capabilities |
26
+ | 2 | `idx` | a per-repo fact: code-graph readiness |
27
+ | 3 | `plans` | a per-repo fact, its own group |
28
+
29
+ Groups 0 and 1 come from `_GROUP` (`hooks/tezgah_context.py::_GROUP`); the prefix
30
+ carries -1 and `idx` and `plans` carry 2 and 3 where they are appended (`hooks/tezgah_context.py::version_segment`, `hooks/tezgah_context.py::health_segments`). Outside every
31
+ [root](glossary.md#root) the checklist still prints — tezgah loads globally on
32
+ opencode, so the indicator must not go silent — and only the per-repo extras are
33
+ omitted (`hooks/tezgah_context.py::health_segments`, `tests/test_statusline.py::test_outside_roots_still_shows_segment`).
34
+
35
+ ### The version prefix
36
+
37
+ The line opens with `tezgah v1.0.0` (`version_segment()`, `hooks/tezgah_context.py::version_segment`): not a [mark](glossary.md#mark) — no glyph, and `info`, the state that reports none — with a group of its own, so the marks separate from it the way the groups separate from each other; its segment carries the number as `version` for a program reading `--json`.
38
+ The number is the one reader `bin/tezgah-setup --version` also calls (`version()`, `hooks/tezgah_context.py::version`, `bin/tezgah-setup::plugin_version`): the local plugin manifest, else the newest `CHANGELOG.md` release, read bounded and never raising; unreadable, the prefix keeps the bare name rather than a placeholder.
39
+
40
+ When a newer release is out, a `↑X.Y.Z` chip follows the version in the same group. So it stays beside the logo at every width tier (`with_update_notice()`, `notice_segments()` in `hooks/tezgah_update.py`). It is drawn in the `ready` color and its segment carries the number as `version`. A redraw reads a cached answer and never the network. A detached check refreshes that answer at most once a day. `tezgah update` takes the release, and `update-check-off` turns the chip and the check off.
41
+
42
+ ## States
43
+
44
+ `LEGEND` (`hooks/tezgah_context.py::LEGEND`) is the source for this table; run
45
+ `tezgah-status --legend` to print it verbatim.
46
+
47
+ | state | glyph | color | asserts |
48
+ |---|---|---|---|
49
+ | `on` | `✓` | green | armed and in force this session (or always-on) |
50
+ | `ready` | `○` | yellow | armed, on demand — not used yet this session |
51
+ | `off` | `✗` | red | turned off by a [kill switch](glossary.md#kill-switch) or a per-repo `.no-*` mark |
52
+ | `info` | none | dim | no state: `idx` n/a or uncomparable, no blocked plan, or a measure this surface cannot report |
53
+
54
+ Glyphs are `GLYPHS`, colors `COLORS` (green 32, yellow 33, red 31, dim 2; `hooks/tezgah_context.py::GLYPHS`, `hooks/tezgah_context.py::COLORS`).
55
+ The whole `text`+`glyph` chip is colored, and the glyph is drawn in every state:
56
+ color is additive, never the only carrier of the state — the accessibility rule
57
+ (`_seg_text()`, `hooks/tezgah_context.py::_seg_text`). `idx` is the one exception: its glyph *is* the index's
58
+ state, mapped back by `IDX_STATE` (`hooks/tezgah_context.py::IDX_STATE`).
59
+
60
+ On a colored surface the line opens with the logo (`LOGO`): three upper half
61
+ blocks draw the amber worktop of `assets/logo/tezgah-logo.svg` (#FFC55C) and the
62
+ middle one's background is its single support in the logo's teal accent
63
+ (#17A18C - its slate faces, #2A4657, are a dark terminal's own background), so it
64
+ reads as the logo's `t`. The logo names the product, so a colored head carries
65
+ only the version, dim; the plain line keeps `tezgah vX.Y.Z`. The same half-block mark heads the line on every
66
+ terminal; an inline-image logo is not drawn. On a light background the bright
67
+ pair washes out, so the logo takes its darker faces (#B8761C worktop, #0E7C6B
68
+ support) and the version drops the dim: omp's widget reads the theme's
69
+ `isLight`, the other surfaces read `COLORFGBG` (a background index of 8 or more
70
+ is light, the rule omp uses). While the omp agent works the T itself is the
71
+ motion - a sheen sweeps its worktop left to right and runs down the support -
72
+ with the running tool and its seconds right after it; a line without colors
73
+ keeps the braille spinner. Each other chip leads with its icon
74
+ (`ICONS`): `✂` pony, `▶` exec, `◎` adhd, `⚖` consult, `⚗` research, `⌬` graph, `⎇` orch,
75
+ `⚑` judge, `⌕` idx, `⋮` plans. Every icon is a text-presentation symbol of East
76
+ Asian width Neutral or Ambiguous (`▶`, `◎`), never Wide and never an emoji, so a
77
+ terminal draws it one cell wide and the line does not overflow (a CJK terminal
78
+ that draws Ambiguous two cells wide is the exception). `☰` was the plans icon
79
+ until Unicode 16 (Python 3.14) made it Wide. The plain line
80
+ (pipes, `--status`, Codex's `systemMessage`, omp's `setStatus` fallback) carries
81
+ no icons and keeps its exact shape.
82
+
83
+ ## Per mark
84
+
85
+ Flips come from the flag table and the resolution after it, both in
86
+ `health_segments()` (`hooks/tezgah_context.py::health_segments`): `off` is decided first and always wins, then a
87
+ measure the surface cannot see, then armed-and-used or armed-not-used.
88
+
89
+ | mark | goes `on` when | goes `off` when |
90
+ |---|---|---|
91
+ | `pony` | the full ponytail skill text was read this session | `ponytail-auto.off`, or `.no-ponytail` |
92
+ | `exec` | never used-gated: `on` as soon as armed | `exec-mode.off` |
93
+ | `adhd` | `skills/i-have-adhd/SKILL.md` was read this session | `adhd-off`, or `.no-adhd` |
94
+ | `consult` | a shell command really ran `consult` | `consult-off`, or no consult option: no agent CLI it can ask (omp, claude, codex, opencode, cursor-agent) and no OpenRouter/DeepSeek/Inception key |
95
+ | `research` | a command really ran the research CLI | `research-off`, or `orx` not installed |
96
+ | `graph` | a code-graph tool call (an `mcp__…codegraph…` tool) | `.no-graph` — a missing binary is `idx`'s report, not this mark's |
97
+ | `orch` | a delegate call (`Task`/`Agent`/`spawn_agent`) or a subagent start | `orchestrate-off` |
98
+ | `judge` | a shell command really ran `tezgah-triage` or `tezgah-docs` | `judge-off`, or no credential: no `TYPESAFE_API_KEY` and no non-empty `~/.config/typesafe/key`, and neither the fallback's `OPENROUTER_API_KEY` nor its `~/.config/openrouter/key` |
99
+ | `gate` | never `on`: shown only as `gate✗`, right after the version, in two cases. One: the prompt hook found at least 3 gated calls in this session's transcript since its first turn: write and shell calls, every one of which the gate answers with a `began` or a `deny` row (Bash/PowerShell/Edit/Write/MultiEdit/NotebookEdit on Claude, `exec_command`/`shell`/`apply_patch` on Codex). Over the same span the ledger holds no row from the gate. A PostToolUse row is no proof: that hook keeps writing while a broken PreToolUse lets every call through. The same prompt carries the line "tezgah gate inactive on this host: ...". Two: a kill switch appeared after the session's first prompt; the prompt hook writes one `disarm` row naming it (`disarmed`, baseline `<cache>/switches/<session>.json`). Mark file `<cache>/gate-inactive/<session>` (`gate_inactive`, audit Phase 1.3) | a row from the gate appears and no switch armed mid-session is still armed |
100
+ | `drift` | never `on`: shown as `drift✗` when a session start found tezgah's own hook entries changed since install (`hooks/tezgah_attest.py::run`). One mark per session and host, `<cache>/harness-drift/<session hash>.<host>`; the session's `attest` row names what drifted | the next clean start of that host in that session |
101
+ | `crash` | never `on`: shown as `crash✗` when a hook of this session could not import its core and ran without tezgah (`hooks/tezgah_guard.py::import_failed`, mark `~/.cache/tezgah/import-crash/<session hash>`). When `tezgah_context` itself is the module that failed, `statusline.py` prints `tezgah ✗ core import failed` instead of the line | never by itself: the mark stays for the session |
102
+
103
+ Read `on` for `consult`/`research`/`judge` as "installed and usable", not "you
104
+ must use it": a missing key or binary reads the same red as a kill switch
105
+ (`consult_options()`, `orx_bin()`, `have_judge_key()`: `hooks/tezgah_paths.py::consult_options`,
106
+ `hooks/tezgah_paths.py::orx_bin`, `hooks/tezgah_paths.py::have_judge_key`). `judge` is the seam
107
+ behind `bin/tezgah-triage`, `bin/tezgah-docs` and the skill picker
108
+ ([judge](judge.md)), and its credential is the seam's own two channels, never
109
+ omp's login store. `graph` and `orch` are the two switch-only marks: nothing at
110
+ arming time asks whether their toolchain is on the machine, because neither rule
111
+ leaves the text when it is missing - the graph-first rule ships whether or not
112
+ codegraph is installed, and the graph's own absence is `idx`'s report
113
+ (`–` from the same check, `_index_mark()`, `hooks/tezgah_context.py::_index_mark`) beside the
114
+ note that names the missing MCP (`hooks/tezgah_context.py::context_for`). Their `○` says
115
+ the rule is armed, never that a graph or a delegate surface answers.
116
+ `exec` has no used channel — its `meas` is `None` — so it can never be `ready`
117
+ (`hooks/tezgah_context.py::health_segments`). The per-repo `idx`: ✓ indexed, ↻ indexed but HEAD moved since the
118
+ stamp, ✗ not indexed yet, ? the index cannot be compared to HEAD (no stamp, or
119
+ an unreadable HEAD), – n/a (outside a root, codegraph absent, or
120
+ `.no-graph`); its probe forks git twice, so it is memoised per `(cwd, base)`
121
+ (`index_mark()`, `hooks/tezgah_context.py::index_mark`) and `idx_override` lets a redraw send the glyph back
122
+ instead of forking (`hooks/tezgah_context.py::health_segments`). `plans` is `plans N` plus `(M blk)` when M open
123
+ plan files carry `status: blocked` in their first 400 bytes — `ready` with a
124
+ blocked plan, else `info` (`plan_mark()`, `hooks/tezgah_context.py::plan_mark`).
125
+
126
+ ### The two skill-read marks, and `--observable=`
127
+
128
+ `pony` and `adhd` mean "the full skill text reached the session" — the only signal
129
+ separating a real rule read from the always-on summary. They are earned by a read
130
+ of `skills/<name>/SKILL.md`, matched on the path suffix, so any other read costs
131
+ nothing (`SKILL_MARKS`, `skill_read_kind()`, `hooks/tezgah_context.py::SKILL_MARKS`, `hooks/tezgah_context.py::skill_read_kind`).
132
+
133
+ A read is not observable at an acceptable price everywhere: it needs Claude's
134
+ transcript, opencode's in-process classification, or omp's extension filter before
135
+ python is asked (`hooks/tezgah_context.py::skill_read_kind`). A surface that cannot see one must not say "the skill
136
+ was never opened", so it declares what it can see and those marks render `info`
137
+ (dim, no glyph) instead of `ready` (`observable`, `hooks/tezgah_context.py::health_segments`; the set constant
138
+ `TOOL_USE_MEASURES`, `hooks/tezgah_context.py::TOOL_USE_MEASURES`). The `--observable=` flag carries it on the CLI
139
+ (`bin/tezgah-status::main`). Two callers pass the tool-use set: Cursor's
140
+ status line (statusline.py:117-121) and Codex, which renders the line plain into
141
+ `systemMessage` (`hosts/codex/hook.py::main`); dsh passes the literal flag
142
+ string (hosts/dsh/statusline/lib/index.js:16-19,84,96), which names the five marks its
143
+ own hook can record - `judge` included, since dsh wires the same PostToolUse hook
144
+ every other host does. The set is what a host can write, not what it happens to
145
+ have written: a mark the literal omits reads `info` there rather than a claim.
146
+
147
+ ## The used-kinds channel
148
+
149
+ A used measure is one append to the session store,
150
+ `<cache_dir>/sessions/<slug(session_id)>.jsonl`, one `{"kind": …}` per line
151
+ (`record()`, `hooks/tezgah_context.py::record`; `used()` reads it back, `hooks/tezgah_context.py::used`).
152
+ `cache_dir()` is `~/.cache/tezgah` with a temp fallback for sandboxed hosts
153
+ (`hooks/tezgah_paths.py::CACHE`, `hooks/tezgah_paths.py::fallback_cache`, `hooks/tezgah_paths.py::cache_dir`); a missing kind is not an event, so only
154
+ the five kinds are ever written (`hooks/tezgah_context.py::record`).
155
+
156
+ Writers: the shared PostToolUse hook `hooks/projects-posttooluse.py` — `graph` from
157
+ an MCP tool name, else the shell tokenizer's answer, which counts a tool only when
158
+ the command really ran it (34-38,84) and is the one writer that can earn `judge`
159
+ (a run of `bin/tezgah-triage` or `bin/tezgah-docs`, `shell_kind`, `hooks/tezgah_context.py::shell_kind`)
160
+ — plus `hooks/projects-auto-init.py::main`
161
+ (`orch` on subagent start), `hosts/codex/hook.py::main`,
162
+ `hosts/cursor/hook.py::dispatch`, hosts/opencode/plugins/tezgah.js:2123-2130,
163
+ hosts/opencode/plugins/tezgah.js:2669, `hosts/omp/hook.py::handle`. Both Claude (hooks/hooks.json) and dsh
164
+ (hosts/dsh/hooks.json) wire PostToolUse to that one shared hook, which is how dsh
165
+ gets any used mark at all: with no local transcript, the store is the only channel
166
+ its line has (hooks/projects-posttooluse.py:33-37).
167
+
168
+ Claude's line never reads the store: it parses `tool_use` blocks out of
169
+ `payload["transcript_path"]` plus the subagent transcripts under it, which is how
170
+ it sees the skill reads the store cannot carry (`statusline.py::claude_used`).
171
+ Every other surface reads the store.
172
+
173
+ ## Surfaces
174
+
175
+ - **Claude / Cursor** — `statusline.py` reads the host's session JSON on stdin,
176
+ picks the host from `--cursor` or `TEZGAH_STATUS_HOST`, renders
177
+ `render_line(segs, color=color_default())`, and joins Orca's own status line to
178
+ the tezgah segment with ` | `; `TEZGAH_STATUS_LEGEND=1` appends the legend
179
+ (31-34,40-48,116-122). ANSI is dropped under `NO_COLOR` or
180
+ `TEZGAH_STATUS_COLOR=0` (`color_default()`, `hooks/tezgah_context.py::color_default`).
181
+ - **omp** — hosts/omp/tezgah-hook.ts.in: `draw()` prefers
182
+ `ctx.ui.setWidget("tezgah", [line], {placement: "belowEditor"})`, which renders
183
+ the colored string as-is; `setStatus` is the fallback for a build without
184
+ `setWidget`, and it is plain because omp strips ANSI (12-29). `status_line()`
185
+ builds the line and carries `idx_override`, so a per-tool redraw forks no git
186
+ (`hosts/omp/hook.py::status_line`); it redraws on session start, session switch, turn end
187
+ and each watched tool result (hosts/omp/tezgah-hook.ts.in:541-569,607-612,653-678).
188
+ **Motion:** while the agent runs (`agent_start` until an `agent_end` whose
189
+ `isTerminal` is not `false`) the widget leads with a braille spinner, the tool
190
+ in flight (`tool_execution_start`/`_end`, "thinking" between tools) and the
191
+ run's seconds, then the marks. The frames (`FRAME_MS` = 100 ms) run on omp's
192
+ isolated `ctx.setInterval`, repaint the line the extension already holds and
193
+ never ask the hook; they stop at the terminal end, a session switch and
194
+ `session_shutdown`. No widget (the `setStatus` fallback) means no motion, and
195
+ `TEZGAH_STATUS_ANIMATE=0` keeps the colors and drops the motion.
196
+ **Width:** the hook answers every width tier (`render_tiers`: the full line;
197
+ no version; icons standing for names; the logo alone at the head, groups
198
+ split by a space) with the cells each takes, and the widget is a component
199
+ whose `render(width)` draws the widest tier that fits beside the busy prefix -
200
+ which shrinks to the spinner alone when it would leave the marks under 24
201
+ cells - and cuts the narrowest with `…` when nothing fits. A narrow terminal
202
+ gets a shorter line, never a second row.
203
+ - **opencode** — hosts/opencode/tui/tezgah-tui.tsx: a local TUI plugin
204
+ (`tui.json`'s `plugin` array, not the server plugin) registering an `app_bottom`
205
+ slot, shelling out to `tezgah-status <dir> --json <sessionID>`, coloring each
206
+ segment from the active theme and rebuilding the separator from `seg.group`
207
+ (56-88,hosts/opencode/tui/tezgah-tui.tsx:108-111). Its `tezgah: status legend` command opens a dialog running
208
+ `--legend` (141-147).
209
+ - **dsh** — hosts/dsh/statusline/lib/index.js serves `GET /api/tezgah.status`
210
+ behind the Web UI's own authenticated fetch fence, so the browser fetches it
211
+ same-origin with no extra token handling (14,34-38); it always passes
212
+ `--observable=consult,research,graph,orch,judge` (18,47-48) and returns `{segments,
213
+ legend}` for `?format=json`, plain text otherwise (49-56,63). Its client half
214
+ (hosts/dsh/statusline/lib/client.js) renders the marks in the session header in
215
+ fixed light/dark colors, polls every 10 s while the tab is visible, and shows the
216
+ legend on hover, pins it on click (16-19,35,47-52,63-64).
217
+ - **Codex** — hosts/codex/hook.py puts the plain line in `systemMessage`
218
+ (182-184,195-198).
219
+
220
+ ## Seeing and debugging the line
221
+
222
+ `bin/tezgah-status` is the CLI every surface above shells out to, and the way to
223
+ see a line by hand:
224
+
225
+ ```sh
226
+ tezgah-status /path/to/repo <session-id> # the line for one repo and session
227
+ tezgah-status /path/to/repo <id> --json # segments: key/state/glyph/text/group
228
+ tezgah-status /path/to/repo <id> --counters # the evidence ledger's counters
229
+ tezgah-status --legend # what each mark means
230
+ tezgah-status --rule-yield # live gate rules that stopped firing
231
+ tezgah-status --enforcers # what enforces each always-on rule
232
+ ```
233
+
234
+ The session id is the second positional argument or `TEZGAH_SESSION`; without it
235
+ the used marks cannot light up (`bin/tezgah-status::main`). `--color`/`--no-color` force ANSI or plain,
236
+ `--observable=` narrows the measures as above, and an unknown flag exits 2 (`bin/tezgah-status::main`).
237
+
238
+ `--counters` is not the marks: it prints `tezgah_integrity.counters(session)` —
239
+ `steps`, `tool_error_rate`, `claims`, `false_completion`, `shape_blocked`,
240
+ `denies`, `nudges`, `fanout`, `consult`, `codegen`, `codegen_failed`, `judge`,
241
+ `replies`, `shape` and the `kinds` seen (`bin/tezgah-status::main`); with `--json`
242
+ as JSON. `replies` counts the `shape` rows, one per reply the Stop rule judged,
243
+ and `shape` those that carried a report-only flag - `table-open`,
244
+ `preamble-open`, `recap-close` (`shape_flags`, `hooks/tezgah_integrity.py::shape_flags`)
245
+ - so a flag's rate has its denominator; the row also carries the reply's
246
+ `longest_list` and `tr_share`, the two numbers the list-cap and language blocks
247
+ read. `shape_blocked` counts the claim rows refused for their shape rather than
248
+ their evidence, which `false_completion` leaves out. `judge` is the seam's spend,
249
+ counted on the row's **kind** and never on a `detail` substring like `consult` and
250
+ `codegen` are, because a judgement's detail carries the caller and the model and a
251
+ substring would also count a commit message that says "judge"
252
+ (`hooks/tezgah_integrity.py::_counts`). It is in neither `STEP_KINDS` nor the check
253
+ set: a judgement is a cost, and a model answer must never license a "done" claim
254
+ (`STEP_KINDS`, `hooks/tezgah_integrity.py::STEP_KINDS`). `tezgah-setup --status <path>` prints the plain line for a
255
+ repo (`bin/tezgah-setup::main`). A wrong or missing line usually ends in one of
256
+ three places: no session id (used marks stay `○`), a surface that passed
257
+ `--observable=` and so renders dim where you expected a state, or a store a
258
+ sandboxed host could not write (`hooks/tezgah_paths.py::cache_dir`).
259
+
260
+ `--rule-yield` is a corpus report, not a mark: every live gate rule - the labels
261
+ `hooks/tezgah_gate.py` passes to `_deny`, read from the code with `ast`, so a
262
+ removed rule drops out on its own - with its fires over the real ledgers written
263
+ since it shipped, the exposure window (`rule_yield`, hooks/tezgah_shapes.py).
264
+ The ship date is the commit time from which the rule has been in the gate without
265
+ a gap, read from git history, because no ledger row names the harness revision
266
+ that wrote it and a rule that never fired has no row to date it by. A rule older
267
+ than the checkout's first commit dates from that commit, which only shrinks its
268
+ window - the direction that keeps a rule; without git every date is unknown and
269
+ no rule is marked. Fixture ledgers are left out by
270
+ `fixture_ledger`, the same exclusion `--counters --all` applies. A rule with 0
271
+ fires over at least `MIN_EXPOSURE` (300) real ledgers is marked
272
+ `retire-candidate`, one with 0 fires over fewer `low-exposure`, so a rule a day
273
+ old is not read as dead. It always exits 0 and prints the corpus it read;
274
+ `--json` prints the whole fold.
275
+
276
+ `--enforcers` reports on the rule layer, not on a session. It prints one row
277
+ per always-on CORE rule. The row names the gate rules and Stop classes that
278
+ refuse on the rule, each with its guards. It also names the shape flags that
279
+ only record it. The row's status
280
+ is `enforced`, `partial`, `records` or `prose-only`, with the record that says
281
+ why ([contract.md](contract.md#which-mechanism-enforces-each-always-on-rule)).
282
+ It always exits 0, and `--json` prints the rows, the enforcers tied to no rule
283
+ and the failures.
284
+
285
+ ## A mark must not claim what it cannot see
286
+
287
+ A mark asserting a state the surface cannot observe is a bug in this layer, so the
288
+ honest answer is dim, never a guess. `idx` has the same rule inside its own glyph
289
+ set: `?` means the comparison could not be made - no stamp file, or a HEAD that
290
+ could not be read - so the mark refuses to say either fresh or stale, and
291
+ `index_notice()` says on the turn that the graph's age is unknown. On a host that
292
+ sandboxes hook writes (dsh) the stamp is never written, and before that state
293
+ existed the mark read green there for good. That is why `observable` exists (`hooks/tezgah_context.py::health_segments`),
294
+ why the skill-read check is documented as unavailable on Codex, Cursor and dsh
295
+ (`hooks/tezgah_context.py::skill_read_kind`), why omp ignores any `idx` value that is not one of
296
+ its five glyphs (`hosts/omp/hook.py::status_line`) - a value outside that set re-probes
297
+ instead of being reused, one fork and never a wrong mark - and
298
+ why `off` is decided before the visibility one - a
299
+ kill switch is observable everywhere (`hooks/tezgah_context.py::health_segments`). Cursor's pinned plain
300
+ line is the regression for it (`tests/test_statusline.py::CURSOR_SEGMENT`, `tests/test_statusline.py::test_cursor_mode_segment`). `judge` is
301
+ the live case of both halves: its used-kind is written by the hosts' own hooks, so
302
+ where that store cannot be written the mark states nothing instead of claiming
303
+ "armed, not used yet" forever, and where the kill switch is armed `off` wins over
304
+ that carve-out (`tests/test_statusline.py::JudgeMark`).
305
+
306
+ ## Source of truth
307
+
308
+ - `hooks/tezgah_context.py`, `hooks/tezgah_paths.py`, `bin/tezgah-status`
309
+ - `statusline.py`, `hooks/projects-posttooluse.py`, `hooks/projects-auto-init.py`
310
+ - `hooks/hooks.json`, `hosts/dsh/hooks.json`
311
+ - `hosts/omp/tezgah-hook.ts.in`, `hosts/omp/hook.py`, `hosts/codex/hook.py`,
312
+ `hosts/cursor/hook.py`
313
+ - `hosts/opencode/tui/tezgah-tui.tsx`, `hosts/opencode/plugins/tezgah.js`
314
+ - `hosts/dsh/statusline/lib/index.js`, `hosts/dsh/statusline/lib/client.js`
315
+ - `tests/test_statusline.py`