@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.
- package/CHANGELOG.md +738 -0
- package/LICENSE +21 -0
- package/MANIFEST +753 -0
- package/README.de.md +169 -0
- package/README.es.md +168 -0
- package/README.fr.md +166 -0
- package/README.md +161 -0
- package/README.tr.md +163 -0
- package/agents/tezgah-reviewer.md +70 -0
- package/bin/codegen +337 -0
- package/bin/consult +797 -0
- package/bin/tezgah-adhd +50 -0
- package/bin/tezgah-agents +45 -0
- package/bin/tezgah-capture +66 -0
- package/bin/tezgah-context +96 -0
- package/bin/tezgah-decisions +213 -0
- package/bin/tezgah-design +953 -0
- package/bin/tezgah-docs +1199 -0
- package/bin/tezgah-doctor +497 -0
- package/bin/tezgah-dsh +37 -0
- package/bin/tezgah-dsh.cmd +70 -0
- package/bin/tezgah-gate +75 -0
- package/bin/tezgah-import-ai-research +439 -0
- package/bin/tezgah-index +32 -0
- package/bin/tezgah-lessons +148 -0
- package/bin/tezgah-mcp +322 -0
- package/bin/tezgah-migrate +324 -0
- package/bin/tezgah-pony +50 -0
- package/bin/tezgah-research +772 -0
- package/bin/tezgah-rollback +93 -0
- package/bin/tezgah-route +124 -0
- package/bin/tezgah-setup +5798 -0
- package/bin/tezgah-status +383 -0
- package/bin/tezgah-task +607 -0
- package/bin/tezgah-taste +423 -0
- package/bin/tezgah-triage +485 -0
- package/bin/tezgah.js +36 -0
- package/commands/adhd.md +21 -0
- package/commands/ponytail.md +21 -0
- package/docs/README.md +112 -0
- package/docs/architecture.md +226 -0
- package/docs/citations-baseline.json +59 -0
- package/docs/clarity-baseline.json +116 -0
- package/docs/contract.md +416 -0
- package/docs/environment.md +141 -0
- package/docs/evidence.md +831 -0
- package/docs/feature-audit.md +139 -0
- package/docs/gate.md +407 -0
- package/docs/glossary.md +201 -0
- package/docs/hosts.md +400 -0
- package/docs/index.json +471 -0
- package/docs/judge.md +193 -0
- package/docs/layers.md +189 -0
- package/docs/models.md +160 -0
- package/docs/operations.md +666 -0
- package/docs/research.md +809 -0
- package/docs/results/paired-outcome-2026-10.jsonl +254 -0
- package/docs/results/paired-outcome-2026-10.md +204 -0
- package/docs/skills.md +236 -0
- package/docs/status-line.md +315 -0
- package/docs/testing.md +287 -0
- package/docs/vision.md +117 -0
- package/hooks/hooks.json +33 -0
- package/hooks/projects-auto-init.py +98 -0
- package/hooks/projects-posttooluse.py +149 -0
- package/hooks/projects-pretooluse.py +40 -0
- package/hooks/projects-stop.py +60 -0
- package/hooks/tezgah_agents.py +817 -0
- package/hooks/tezgah_apps.py +266 -0
- package/hooks/tezgah_attest.py +255 -0
- package/hooks/tezgah_clarity.py +171 -0
- package/hooks/tezgah_components.py +140 -0
- package/hooks/tezgah_context.py +2953 -0
- package/hooks/tezgah_embed.py +765 -0
- package/hooks/tezgah_gate.py +2736 -0
- package/hooks/tezgah_guard.py +177 -0
- package/hooks/tezgah_index.py +124 -0
- package/hooks/tezgah_integrity.py +5141 -0
- package/hooks/tezgah_judge.py +487 -0
- package/hooks/tezgah_lang.py +230 -0
- package/hooks/tezgah_lessons.py +210 -0
- package/hooks/tezgah_models.py +855 -0
- package/hooks/tezgah_paths.py +1132 -0
- package/hooks/tezgah_policy.py +1039 -0
- package/hooks/tezgah_rank.py +77 -0
- package/hooks/tezgah_replay.py +1109 -0
- package/hooks/tezgah_research.py +5176 -0
- package/hooks/tezgah_shapes.py +305 -0
- package/hooks/tezgah_skill_pick.py +227 -0
- package/hooks/tezgah_snapshot.py +490 -0
- package/hooks/tezgah_stopspec.py +320 -0
- package/hooks/tezgah_task.py +458 -0
- package/hooks/tezgah_taste.py +201 -0
- package/hooks/tezgah_untrusted.py +112 -0
- package/hooks/tezgah_update.py +430 -0
- package/hosts/codex/hook.py +268 -0
- package/hosts/codex/hooks.json +26 -0
- package/hosts/cursor/hook.py +461 -0
- package/hosts/cursor/hooks.json +44 -0
- package/hosts/dsh/hooks.json +21 -0
- package/hosts/dsh/statusline/lib/client.js +138 -0
- package/hosts/dsh/statusline/lib/index.js +104 -0
- package/hosts/dsh/statusline/package.json +28 -0
- package/hosts/omp/hook.py +277 -0
- package/hosts/omp/tezgah-hook.ts.in +701 -0
- package/hosts/opencode/plugins/tezgah.js +2742 -0
- package/hosts/opencode/tui/tezgah-tui.tsx +151 -0
- package/output-styles/tezgah.md +142 -0
- package/package.json +32 -0
- package/packaging/build.sh +342 -0
- package/packaging/install.ps1 +166 -0
- package/packaging/install.sh +56 -0
- package/packaging/upgrade.sh +142 -0
- package/skills/ai-research/0-autoresearch-skill/SKILL.md +411 -0
- package/skills/ai-research/0-autoresearch-skill/references/agent-continuity.md +95 -0
- package/skills/ai-research/0-autoresearch-skill/references/progress-reporting.md +166 -0
- package/skills/ai-research/0-autoresearch-skill/references/skill-routing.md +219 -0
- package/skills/ai-research/0-autoresearch-skill/templates/findings.md +44 -0
- package/skills/ai-research/0-autoresearch-skill/templates/research-log.md +41 -0
- package/skills/ai-research/01-model-architecture/litgpt/SKILL.md +469 -0
- package/skills/ai-research/01-model-architecture/litgpt/references/custom-models.md +569 -0
- package/skills/ai-research/01-model-architecture/litgpt/references/distributed-training.md +452 -0
- package/skills/ai-research/01-model-architecture/litgpt/references/supported-models.md +337 -0
- package/skills/ai-research/01-model-architecture/litgpt/references/training-recipes.md +620 -0
- package/skills/ai-research/01-model-architecture/mamba/SKILL.md +260 -0
- package/skills/ai-research/01-model-architecture/mamba/references/architecture-details.md +207 -0
- package/skills/ai-research/01-model-architecture/mamba/references/benchmarks.md +256 -0
- package/skills/ai-research/01-model-architecture/mamba/references/training-guide.md +389 -0
- package/skills/ai-research/01-model-architecture/nanogpt/SKILL.md +290 -0
- package/skills/ai-research/01-model-architecture/nanogpt/references/architecture.md +383 -0
- package/skills/ai-research/01-model-architecture/nanogpt/references/data.md +477 -0
- package/skills/ai-research/01-model-architecture/nanogpt/references/training.md +565 -0
- package/skills/ai-research/01-model-architecture/rwkv/SKILL.md +260 -0
- package/skills/ai-research/01-model-architecture/rwkv/references/architecture-details.md +345 -0
- package/skills/ai-research/01-model-architecture/rwkv/references/rwkv7.md +387 -0
- package/skills/ai-research/01-model-architecture/rwkv/references/state-management.md +370 -0
- package/skills/ai-research/01-model-architecture/torchtitan/SKILL.md +358 -0
- package/skills/ai-research/01-model-architecture/torchtitan/references/checkpoint.md +182 -0
- package/skills/ai-research/01-model-architecture/torchtitan/references/custom-models.md +259 -0
- package/skills/ai-research/01-model-architecture/torchtitan/references/float8.md +134 -0
- package/skills/ai-research/01-model-architecture/torchtitan/references/fsdp.md +127 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/SKILL.md +516 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/algorithms.md +654 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/integration.md +638 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/pipeline.md +724 -0
- package/skills/ai-research/02-tokenization/huggingface-tokenizers/references/training.md +566 -0
- package/skills/ai-research/02-tokenization/sentencepiece/SKILL.md +235 -0
- package/skills/ai-research/02-tokenization/sentencepiece/references/algorithms.md +201 -0
- package/skills/ai-research/02-tokenization/sentencepiece/references/training.md +305 -0
- package/skills/ai-research/03-fine-tuning/axolotl/SKILL.md +158 -0
- package/skills/ai-research/03-fine-tuning/axolotl/references/api.md +5549 -0
- package/skills/ai-research/03-fine-tuning/axolotl/references/dataset-formats.md +1030 -0
- package/skills/ai-research/03-fine-tuning/axolotl/references/index.md +16 -0
- package/skills/ai-research/03-fine-tuning/axolotl/references/other.md +3564 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/SKILL.md +80 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/_images.md +24 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/advanced.md +1056 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/getting_started.md +350 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/index.md +20 -0
- package/skills/ai-research/03-fine-tuning/llama-factory/references/other.md +32 -0
- package/skills/ai-research/03-fine-tuning/peft/SKILL.md +431 -0
- package/skills/ai-research/03-fine-tuning/peft/references/advanced-usage.md +515 -0
- package/skills/ai-research/03-fine-tuning/peft/references/troubleshooting.md +481 -0
- package/skills/ai-research/03-fine-tuning/unsloth/SKILL.md +80 -0
- package/skills/ai-research/03-fine-tuning/unsloth/references/index.md +8 -0
- package/skills/ai-research/03-fine-tuning/unsloth/references/llms.md +83 -0
- package/skills/ai-research/04-mechanistic-interpretability/nnsight/SKILL.md +436 -0
- package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/README.md +79 -0
- package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/api.md +345 -0
- package/skills/ai-research/04-mechanistic-interpretability/nnsight/references/tutorials.md +301 -0
- package/skills/ai-research/04-mechanistic-interpretability/pyvene/SKILL.md +473 -0
- package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/README.md +74 -0
- package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/api.md +384 -0
- package/skills/ai-research/04-mechanistic-interpretability/pyvene/references/tutorials.md +377 -0
- package/skills/ai-research/04-mechanistic-interpretability/saelens/SKILL.md +386 -0
- package/skills/ai-research/04-mechanistic-interpretability/saelens/references/README.md +71 -0
- package/skills/ai-research/04-mechanistic-interpretability/saelens/references/api.md +334 -0
- package/skills/ai-research/04-mechanistic-interpretability/saelens/references/tutorials.md +319 -0
- package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/SKILL.md +346 -0
- package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/README.md +55 -0
- package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/api.md +363 -0
- package/skills/ai-research/04-mechanistic-interpretability/transformer-lens/references/tutorials.md +340 -0
- package/skills/ai-research/05-data-processing/nemo-curator/SKILL.md +383 -0
- package/skills/ai-research/05-data-processing/nemo-curator/references/deduplication.md +88 -0
- package/skills/ai-research/05-data-processing/nemo-curator/references/filtering.md +103 -0
- package/skills/ai-research/05-data-processing/ray-data/SKILL.md +326 -0
- package/skills/ai-research/05-data-processing/ray-data/references/integration.md +83 -0
- package/skills/ai-research/05-data-processing/ray-data/references/transformations.md +84 -0
- package/skills/ai-research/06-post-training/grpo-rl-training/README.md +98 -0
- package/skills/ai-research/06-post-training/grpo-rl-training/SKILL.md +572 -0
- package/skills/ai-research/06-post-training/miles/SKILL.md +315 -0
- package/skills/ai-research/06-post-training/miles/references/api-reference.md +142 -0
- package/skills/ai-research/06-post-training/miles/references/troubleshooting.md +353 -0
- package/skills/ai-research/06-post-training/openrlhf/SKILL.md +249 -0
- package/skills/ai-research/06-post-training/openrlhf/references/algorithm-comparison.md +405 -0
- package/skills/ai-research/06-post-training/openrlhf/references/custom-rewards.md +531 -0
- package/skills/ai-research/06-post-training/openrlhf/references/hybrid-engine.md +288 -0
- package/skills/ai-research/06-post-training/openrlhf/references/multi-node-training.md +455 -0
- package/skills/ai-research/06-post-training/simpo/SKILL.md +219 -0
- package/skills/ai-research/06-post-training/simpo/references/datasets.md +479 -0
- package/skills/ai-research/06-post-training/simpo/references/hyperparameters.md +453 -0
- package/skills/ai-research/06-post-training/simpo/references/loss-functions.md +351 -0
- package/skills/ai-research/06-post-training/slime/SKILL.md +464 -0
- package/skills/ai-research/06-post-training/slime/references/api-reference.md +393 -0
- package/skills/ai-research/06-post-training/slime/references/troubleshooting.md +387 -0
- package/skills/ai-research/06-post-training/torchforge/SKILL.md +433 -0
- package/skills/ai-research/06-post-training/torchforge/references/api-reference.md +328 -0
- package/skills/ai-research/06-post-training/torchforge/references/troubleshooting.md +410 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/SKILL.md +455 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/references/dpo-variants.md +228 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/references/online-rl.md +83 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/references/reward-modeling.md +123 -0
- package/skills/ai-research/06-post-training/trl-fine-tuning/references/sft-training.md +169 -0
- package/skills/ai-research/06-post-training/verl/SKILL.md +391 -0
- package/skills/ai-research/06-post-training/verl/references/api-reference.md +302 -0
- package/skills/ai-research/06-post-training/verl/references/troubleshooting.md +392 -0
- package/skills/ai-research/07-safety-alignment/constitutional-ai/SKILL.md +290 -0
- package/skills/ai-research/07-safety-alignment/llamaguard/SKILL.md +337 -0
- package/skills/ai-research/07-safety-alignment/nemo-guardrails/SKILL.md +297 -0
- package/skills/ai-research/07-safety-alignment/prompt-guard/SKILL.md +312 -0
- package/skills/ai-research/08-distributed-training/accelerate/SKILL.md +332 -0
- package/skills/ai-research/08-distributed-training/accelerate/references/custom-plugins.md +454 -0
- package/skills/ai-research/08-distributed-training/accelerate/references/megatron-integration.md +490 -0
- package/skills/ai-research/08-distributed-training/accelerate/references/performance.md +526 -0
- package/skills/ai-research/08-distributed-training/deepspeed/SKILL.md +141 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/08.md +18 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/09.md +174 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/2020.md +379 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/2023.md +280 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/assets.md +180 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/index.md +36 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/mii.md +119 -0
- package/skills/ai-research/08-distributed-training/deepspeed/references/other.md +1192 -0
- package/skills/ai-research/08-distributed-training/megatron-core/SKILL.md +366 -0
- package/skills/ai-research/08-distributed-training/megatron-core/references/benchmarks.md +250 -0
- package/skills/ai-research/08-distributed-training/megatron-core/references/parallelism-guide.md +405 -0
- package/skills/ai-research/08-distributed-training/megatron-core/references/production-examples.md +474 -0
- package/skills/ai-research/08-distributed-training/megatron-core/references/training-recipes.md +548 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/SKILL.md +231 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_async_recipe.md +14 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_overview.md +19 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_dcp_recipe.md +18 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_ddp_notes.md +10 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_device_mesh_tutorial.md +22 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_examples_fsdp2.md +15 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fsdp1_api.md +9 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fsdp2_tutorial.md +45 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_fully_shard_api.md +49 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/pytorch_tp_tutorial.md +22 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/ray_train_fsdp2_example.md +13 -0
- package/skills/ai-research/08-distributed-training/pytorch-fsdp2/references/torchtitan_fsdp_notes.md +14 -0
- package/skills/ai-research/08-distributed-training/pytorch-lightning/SKILL.md +346 -0
- package/skills/ai-research/08-distributed-training/pytorch-lightning/references/callbacks.md +437 -0
- package/skills/ai-research/08-distributed-training/pytorch-lightning/references/distributed.md +491 -0
- package/skills/ai-research/08-distributed-training/pytorch-lightning/references/hyperparameter-tuning.md +557 -0
- package/skills/ai-research/08-distributed-training/ray-train/SKILL.md +406 -0
- package/skills/ai-research/08-distributed-training/ray-train/references/multi-node.md +629 -0
- package/skills/ai-research/09-infrastructure/lambda-labs/SKILL.md +545 -0
- package/skills/ai-research/09-infrastructure/lambda-labs/references/advanced-usage.md +612 -0
- package/skills/ai-research/09-infrastructure/lambda-labs/references/troubleshooting.md +531 -0
- package/skills/ai-research/09-infrastructure/modal/SKILL.md +341 -0
- package/skills/ai-research/09-infrastructure/modal/references/advanced-usage.md +504 -0
- package/skills/ai-research/09-infrastructure/modal/references/troubleshooting.md +495 -0
- package/skills/ai-research/09-infrastructure/skypilot/SKILL.md +509 -0
- package/skills/ai-research/09-infrastructure/skypilot/references/advanced-usage.md +492 -0
- package/skills/ai-research/09-infrastructure/skypilot/references/troubleshooting.md +571 -0
- package/skills/ai-research/10-optimization/awq/SKILL.md +310 -0
- package/skills/ai-research/10-optimization/awq/references/advanced-usage.md +325 -0
- package/skills/ai-research/10-optimization/awq/references/troubleshooting.md +345 -0
- package/skills/ai-research/10-optimization/bitsandbytes/SKILL.md +411 -0
- package/skills/ai-research/10-optimization/bitsandbytes/references/memory-optimization.md +522 -0
- package/skills/ai-research/10-optimization/bitsandbytes/references/qlora-training.md +522 -0
- package/skills/ai-research/10-optimization/bitsandbytes/references/quantization-formats.md +448 -0
- package/skills/ai-research/10-optimization/flash-attention/SKILL.md +367 -0
- package/skills/ai-research/10-optimization/flash-attention/references/benchmarks.md +216 -0
- package/skills/ai-research/10-optimization/flash-attention/references/transformers-integration.md +294 -0
- package/skills/ai-research/10-optimization/gguf/SKILL.md +427 -0
- package/skills/ai-research/10-optimization/gguf/references/advanced-usage.md +505 -0
- package/skills/ai-research/10-optimization/gguf/references/troubleshooting.md +443 -0
- package/skills/ai-research/10-optimization/gptq/SKILL.md +450 -0
- package/skills/ai-research/10-optimization/gptq/references/calibration.md +338 -0
- package/skills/ai-research/10-optimization/gptq/references/integration.md +130 -0
- package/skills/ai-research/10-optimization/gptq/references/troubleshooting.md +96 -0
- package/skills/ai-research/10-optimization/hqq/SKILL.md +445 -0
- package/skills/ai-research/10-optimization/hqq/references/advanced-usage.md +529 -0
- package/skills/ai-research/10-optimization/hqq/references/troubleshooting.md +504 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/SKILL.md +319 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/architecture.md +320 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/biomedical.md +498 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/domain-specific.md +626 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/experiment-loop.md +129 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/optimizers.md +330 -0
- package/skills/ai-research/10-optimization/ml-training-recipes/references/scaling-and-selection.md +428 -0
- package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/SKILL.md +405 -0
- package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/benchmarks.md +394 -0
- package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/custom-tasks.md +425 -0
- package/skills/ai-research/11-evaluation/bigcode-evaluation-harness/references/issues.md +395 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/SKILL.md +490 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/api-evaluation.md +491 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/benchmark-guide.md +489 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/custom-tasks.md +603 -0
- package/skills/ai-research/11-evaluation/lm-evaluation-harness/references/distributed-eval.md +520 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/SKILL.md +494 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/references/adapter-system.md +341 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/references/configuration.md +448 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/references/custom-benchmarks.md +316 -0
- package/skills/ai-research/11-evaluation/nemo-evaluator/references/execution-backends.md +362 -0
- package/skills/ai-research/12-inference-serving/llama-cpp/SKILL.md +258 -0
- package/skills/ai-research/12-inference-serving/llama-cpp/references/optimization.md +90 -0
- package/skills/ai-research/12-inference-serving/llama-cpp/references/quantization.md +214 -0
- package/skills/ai-research/12-inference-serving/llama-cpp/references/server.md +126 -0
- package/skills/ai-research/12-inference-serving/sglang/SKILL.md +442 -0
- package/skills/ai-research/12-inference-serving/sglang/references/deployment.md +491 -0
- package/skills/ai-research/12-inference-serving/sglang/references/radix-attention.md +414 -0
- package/skills/ai-research/12-inference-serving/sglang/references/structured-generation.md +542 -0
- package/skills/ai-research/12-inference-serving/tensorrt-llm/SKILL.md +187 -0
- package/skills/ai-research/12-inference-serving/tensorrt-llm/references/multi-gpu.md +299 -0
- package/skills/ai-research/12-inference-serving/tensorrt-llm/references/optimization.md +243 -0
- package/skills/ai-research/12-inference-serving/tensorrt-llm/references/serving.md +471 -0
- package/skills/ai-research/12-inference-serving/vllm/SKILL.md +364 -0
- package/skills/ai-research/12-inference-serving/vllm/references/optimization.md +227 -0
- package/skills/ai-research/12-inference-serving/vllm/references/quantization.md +285 -0
- package/skills/ai-research/12-inference-serving/vllm/references/server-deployment.md +256 -0
- package/skills/ai-research/12-inference-serving/vllm/references/troubleshooting.md +448 -0
- package/skills/ai-research/13-mlops/mlflow/SKILL.md +704 -0
- package/skills/ai-research/13-mlops/mlflow/references/deployment.md +745 -0
- package/skills/ai-research/13-mlops/mlflow/references/model-registry.md +771 -0
- package/skills/ai-research/13-mlops/mlflow/references/tracking.md +681 -0
- package/skills/ai-research/13-mlops/swanlab/SKILL.md +406 -0
- package/skills/ai-research/13-mlops/swanlab/references/integrations.md +305 -0
- package/skills/ai-research/13-mlops/swanlab/references/visualization.md +234 -0
- package/skills/ai-research/13-mlops/tensorboard/SKILL.md +629 -0
- package/skills/ai-research/13-mlops/tensorboard/references/integrations.md +639 -0
- package/skills/ai-research/13-mlops/tensorboard/references/profiling.md +546 -0
- package/skills/ai-research/13-mlops/tensorboard/references/visualization.md +621 -0
- package/skills/ai-research/13-mlops/weights-and-biases/SKILL.md +590 -0
- package/skills/ai-research/13-mlops/weights-and-biases/references/artifacts.md +585 -0
- package/skills/ai-research/13-mlops/weights-and-biases/references/integrations.md +701 -0
- package/skills/ai-research/13-mlops/weights-and-biases/references/sweeps.md +848 -0
- package/skills/ai-research/14-agents/a-evolve/SKILL.md +383 -0
- package/skills/ai-research/14-agents/a-evolve/references/README.md +831 -0
- package/skills/ai-research/14-agents/a-evolve/references/api.md +594 -0
- package/skills/ai-research/14-agents/a-evolve/references/architecture.md +417 -0
- package/skills/ai-research/14-agents/a-evolve/references/design-patterns.md +462 -0
- package/skills/ai-research/14-agents/a-evolve/references/examples.md +352 -0
- package/skills/ai-research/14-agents/a-evolve/references/issues.md +591 -0
- package/skills/ai-research/14-agents/a-evolve/references/releases.md +112 -0
- package/skills/ai-research/14-agents/a-evolve/references/tutorials.md +819 -0
- package/skills/ai-research/14-agents/autogpt/SKILL.md +403 -0
- package/skills/ai-research/14-agents/autogpt/references/advanced-usage.md +536 -0
- package/skills/ai-research/14-agents/autogpt/references/troubleshooting.md +421 -0
- package/skills/ai-research/14-agents/crewai/SKILL.md +498 -0
- package/skills/ai-research/14-agents/crewai/references/flows.md +439 -0
- package/skills/ai-research/14-agents/crewai/references/tools.md +430 -0
- package/skills/ai-research/14-agents/crewai/references/troubleshooting.md +481 -0
- package/skills/ai-research/14-agents/langchain/SKILL.md +480 -0
- package/skills/ai-research/14-agents/langchain/references/agents.md +500 -0
- package/skills/ai-research/14-agents/langchain/references/integration.md +563 -0
- package/skills/ai-research/14-agents/langchain/references/rag.md +601 -0
- package/skills/ai-research/14-agents/llamaindex/SKILL.md +569 -0
- package/skills/ai-research/14-agents/llamaindex/references/agents.md +84 -0
- package/skills/ai-research/14-agents/llamaindex/references/data_connectors.md +109 -0
- package/skills/ai-research/14-agents/llamaindex/references/query_engines.md +407 -0
- package/skills/ai-research/15-rag/chroma/SKILL.md +406 -0
- package/skills/ai-research/15-rag/chroma/references/integration.md +39 -0
- package/skills/ai-research/15-rag/faiss/SKILL.md +221 -0
- package/skills/ai-research/15-rag/faiss/references/index_types.md +281 -0
- package/skills/ai-research/15-rag/pinecone/SKILL.md +358 -0
- package/skills/ai-research/15-rag/pinecone/references/deployment.md +182 -0
- package/skills/ai-research/15-rag/qdrant/SKILL.md +493 -0
- package/skills/ai-research/15-rag/qdrant/references/advanced-usage.md +649 -0
- package/skills/ai-research/15-rag/qdrant/references/troubleshooting.md +632 -0
- package/skills/ai-research/15-rag/sentence-transformers/SKILL.md +255 -0
- package/skills/ai-research/15-rag/sentence-transformers/references/models.md +124 -0
- package/skills/ai-research/16-prompt-engineering/dspy/SKILL.md +590 -0
- package/skills/ai-research/16-prompt-engineering/dspy/references/examples.md +664 -0
- package/skills/ai-research/16-prompt-engineering/dspy/references/modules.md +476 -0
- package/skills/ai-research/16-prompt-engineering/dspy/references/optimizers.md +567 -0
- package/skills/ai-research/16-prompt-engineering/guidance/SKILL.md +572 -0
- package/skills/ai-research/16-prompt-engineering/guidance/references/backends.md +555 -0
- package/skills/ai-research/16-prompt-engineering/guidance/references/constraints.md +675 -0
- package/skills/ai-research/16-prompt-engineering/guidance/references/examples.md +768 -0
- package/skills/ai-research/16-prompt-engineering/instructor/SKILL.md +740 -0
- package/skills/ai-research/16-prompt-engineering/instructor/references/examples.md +108 -0
- package/skills/ai-research/16-prompt-engineering/instructor/references/providers.md +71 -0
- package/skills/ai-research/16-prompt-engineering/instructor/references/validation.md +607 -0
- package/skills/ai-research/16-prompt-engineering/outlines/SKILL.md +652 -0
- package/skills/ai-research/16-prompt-engineering/outlines/references/backends.md +616 -0
- package/skills/ai-research/16-prompt-engineering/outlines/references/examples.md +774 -0
- package/skills/ai-research/16-prompt-engineering/outlines/references/json_generation.md +653 -0
- package/skills/ai-research/17-observability/langsmith/SKILL.md +422 -0
- package/skills/ai-research/17-observability/langsmith/references/advanced-usage.md +549 -0
- package/skills/ai-research/17-observability/langsmith/references/troubleshooting.md +538 -0
- package/skills/ai-research/17-observability/phoenix/SKILL.md +475 -0
- package/skills/ai-research/17-observability/phoenix/references/advanced-usage.md +620 -0
- package/skills/ai-research/17-observability/phoenix/references/troubleshooting.md +539 -0
- package/skills/ai-research/18-multimodal/audiocraft/SKILL.md +564 -0
- package/skills/ai-research/18-multimodal/audiocraft/references/advanced-usage.md +667 -0
- package/skills/ai-research/18-multimodal/audiocraft/references/troubleshooting.md +505 -0
- package/skills/ai-research/18-multimodal/blip-2/SKILL.md +564 -0
- package/skills/ai-research/18-multimodal/blip-2/references/advanced-usage.md +681 -0
- package/skills/ai-research/18-multimodal/blip-2/references/troubleshooting.md +527 -0
- package/skills/ai-research/18-multimodal/clip/SKILL.md +253 -0
- package/skills/ai-research/18-multimodal/clip/references/applications.md +208 -0
- package/skills/ai-research/18-multimodal/cosmos-policy/SKILL.md +402 -0
- package/skills/ai-research/18-multimodal/cosmos-policy/references/libero-commands.md +175 -0
- package/skills/ai-research/18-multimodal/cosmos-policy/references/robocasa-commands.md +147 -0
- package/skills/ai-research/18-multimodal/llava/SKILL.md +304 -0
- package/skills/ai-research/18-multimodal/llava/references/training.md +198 -0
- package/skills/ai-research/18-multimodal/openpi/SKILL.md +480 -0
- package/skills/ai-research/18-multimodal/openpi/references/checkpoints-and-env-map.md +86 -0
- package/skills/ai-research/18-multimodal/openpi/references/config-recipes.md +50 -0
- package/skills/ai-research/18-multimodal/openpi/references/pytorch-gotchas.md +49 -0
- package/skills/ai-research/18-multimodal/openpi/references/remote-client-pattern.md +48 -0
- package/skills/ai-research/18-multimodal/openpi/references/training-debugging.md +46 -0
- package/skills/ai-research/18-multimodal/openvla-oft/SKILL.md +441 -0
- package/skills/ai-research/18-multimodal/openvla-oft/references/aloha-workflow.md +141 -0
- package/skills/ai-research/18-multimodal/openvla-oft/references/config-troubleshooting.md +97 -0
- package/skills/ai-research/18-multimodal/openvla-oft/references/libero-workflow.md +115 -0
- package/skills/ai-research/18-multimodal/openvla-oft/references/paper-and-checkpoints.md +84 -0
- package/skills/ai-research/18-multimodal/segment-anything/SKILL.md +500 -0
- package/skills/ai-research/18-multimodal/segment-anything/references/advanced-usage.md +590 -0
- package/skills/ai-research/18-multimodal/segment-anything/references/troubleshooting.md +485 -0
- package/skills/ai-research/18-multimodal/stable-diffusion/SKILL.md +519 -0
- package/skills/ai-research/18-multimodal/stable-diffusion/references/advanced-usage.md +717 -0
- package/skills/ai-research/18-multimodal/stable-diffusion/references/troubleshooting.md +556 -0
- package/skills/ai-research/18-multimodal/whisper/SKILL.md +317 -0
- package/skills/ai-research/18-multimodal/whisper/references/languages.md +190 -0
- package/skills/ai-research/19-emerging-techniques/knowledge-distillation/SKILL.md +458 -0
- package/skills/ai-research/19-emerging-techniques/knowledge-distillation/references/minillm.md +335 -0
- package/skills/ai-research/19-emerging-techniques/long-context/SKILL.md +536 -0
- package/skills/ai-research/19-emerging-techniques/long-context/references/extension_methods.md +469 -0
- package/skills/ai-research/19-emerging-techniques/long-context/references/fine_tuning.md +612 -0
- package/skills/ai-research/19-emerging-techniques/long-context/references/rope.md +403 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/SKILL.md +497 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/references/coefficient-tuning.md +415 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/references/evaluation.md +463 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/references/examples.md +429 -0
- package/skills/ai-research/19-emerging-techniques/model-merging/references/methods.md +353 -0
- package/skills/ai-research/19-emerging-techniques/model-pruning/SKILL.md +495 -0
- package/skills/ai-research/19-emerging-techniques/model-pruning/references/wanda.md +348 -0
- package/skills/ai-research/19-emerging-techniques/moe-training/SKILL.md +526 -0
- package/skills/ai-research/19-emerging-techniques/moe-training/references/architectures.md +433 -0
- package/skills/ai-research/19-emerging-techniques/moe-training/references/inference.md +349 -0
- package/skills/ai-research/19-emerging-techniques/moe-training/references/training.md +426 -0
- package/skills/ai-research/19-emerging-techniques/speculative-decoding/SKILL.md +467 -0
- package/skills/ai-research/19-emerging-techniques/speculative-decoding/references/lookahead.md +310 -0
- package/skills/ai-research/19-emerging-techniques/speculative-decoding/references/medusa.md +351 -0
- package/skills/ai-research/20-ml-paper-writing/academic-plotting/SKILL.md +479 -0
- package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/data-visualization.md +509 -0
- package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/diagram-generation.md +395 -0
- package/skills/ai-research/20-ml-paper-writing/academic-plotting/references/style-guide.md +305 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/SKILL.md +982 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/checklists.md +348 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/citation-workflow.md +563 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/reviewer-guidelines.md +349 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/sources.md +165 -0
- package/skills/ai-research/20-ml-paper-writing/ml-paper-writing/references/writing-guide.md +477 -0
- package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/SKILL.md +298 -0
- package/skills/ai-research/20-ml-paper-writing/presenting-conference-talks/references/slide-templates.md +505 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/SKILL.md +270 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/checklist.md +279 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/reviewer-guidelines.md +116 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/section-blueprints.md +400 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/systems-conferences.md +261 -0
- package/skills/ai-research/20-ml-paper-writing/systems-paper-writing/references/writing-patterns.md +231 -0
- package/skills/ai-research/21-research-ideation/brainstorming-research-ideas/SKILL.md +384 -0
- package/skills/ai-research/21-research-ideation/creative-thinking-for-research/SKILL.md +366 -0
- package/skills/ai-research/22-agent-native-research-artifact/compiler/SKILL.md +245 -0
- package/skills/ai-research/22-agent-native-research-artifact/compiler/references/ara-schema.md +439 -0
- package/skills/ai-research/22-agent-native-research-artifact/compiler/references/exploration-tree-spec.md +125 -0
- package/skills/ai-research/22-agent-native-research-artifact/compiler/references/validation-checklist.md +149 -0
- package/skills/ai-research/22-agent-native-research-artifact/research-manager/SKILL.md +324 -0
- package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/event-taxonomy.md +124 -0
- package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/provenance-tags.md +190 -0
- package/skills/ai-research/22-agent-native-research-artifact/research-manager/references/session-protocol.md +162 -0
- package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/SKILL.md +322 -0
- package/skills/ai-research/22-agent-native-research-artifact/rigor-reviewer/references/review-dimensions.md +182 -0
- package/skills/ai-research/SKILL.md +101 -0
- package/skills/ai-research/SOURCE +38 -0
- package/skills/ai-research/index/1-frame.md +18 -0
- package/skills/ai-research/index/2-data.md +21 -0
- package/skills/ai-research/index/3-train.md +48 -0
- package/skills/ai-research/index/4-measure.md +25 -0
- package/skills/ai-research/index/5-run.md +23 -0
- package/skills/ai-research/index/6-write.md +35 -0
- package/skills/ai-research/library.json +3456 -0
- package/skills/analyze-app/EVALS.md +82 -0
- package/skills/analyze-app/SKILL.md +188 -0
- package/skills/design-contract/EVALS.md +80 -0
- package/skills/design-contract/SKILL.md +171 -0
- package/skills/design-library/EVALS.md +85 -0
- package/skills/design-library/INDEX.md +59 -0
- package/skills/design-library/SKILL.md +58 -0
- package/skills/design-library/SOURCE +131 -0
- package/skills/design-library/adaptive-interfaces/skills/colour-independence/SKILL.md +90 -0
- package/skills/design-library/adaptive-interfaces/skills/flexible-typography/SKILL.md +83 -0
- package/skills/design-library/adaptive-interfaces/skills/information-density/SKILL.md +87 -0
- package/skills/design-library/adaptive-interfaces/skills/preference-audit/SKILL.md +70 -0
- package/skills/design-library/adaptive-interfaces/skills/responsive-accessibility/SKILL.md +86 -0
- package/skills/design-library/adaptive-interfaces/skills/responsive-review/SKILL.md +76 -0
- package/skills/design-library/adaptive-interfaces/skills/simplified-views/SKILL.md +97 -0
- package/skills/design-library/adaptive-interfaces/skills/specify/SKILL.md +63 -0
- package/skills/design-library/adaptive-interfaces/skills/user-preference-respect/SKILL.md +100 -0
- package/skills/design-library/cognitive-accessibility/skills/adaptive-personalisation/SKILL.md +61 -0
- package/skills/design-library/cognitive-accessibility/skills/assess-load/SKILL.md +48 -0
- package/skills/design-library/cognitive-accessibility/skills/cognitive-load-assessment/SKILL.md +60 -0
- package/skills/design-library/cognitive-accessibility/skills/contextual-help-design/SKILL.md +61 -0
- package/skills/design-library/cognitive-accessibility/skills/error-prevention-recovery/SKILL.md +71 -0
- package/skills/design-library/cognitive-accessibility/skills/focus-attention-design/SKILL.md +67 -0
- package/skills/design-library/cognitive-accessibility/skills/memory-load-reduction/SKILL.md +60 -0
- package/skills/design-library/cognitive-accessibility/skills/plain-language-design/SKILL.md +78 -0
- package/skills/design-library/cognitive-accessibility/skills/review/SKILL.md +56 -0
- package/skills/design-library/cognitive-accessibility/skills/simplify/SKILL.md +39 -0
- package/skills/design-library/cognitive-accessibility/skills/wayfinding-navigation/SKILL.md +64 -0
- package/skills/design-library/design-research/skills/behavioural-analytics/SKILL.md +33 -0
- package/skills/design-library/design-research/skills/qual-quant-triangulation/SKILL.md +33 -0
- package/skills/design-library/inclusive-interaction/skills/audit/SKILL.md +50 -0
- package/skills/design-library/inclusive-interaction/skills/design-flow/SKILL.md +58 -0
- package/skills/design-library/inclusive-interaction/skills/feedback-and-status/SKILL.md +76 -0
- package/skills/design-library/inclusive-interaction/skills/gesture-alternatives/SKILL.md +70 -0
- package/skills/design-library/inclusive-interaction/skills/keyboard-navigation/SKILL.md +99 -0
- package/skills/design-library/inclusive-interaction/skills/keyboard-review/SKILL.md +54 -0
- package/skills/design-library/inclusive-interaction/skills/motion-sensitivity/SKILL.md +79 -0
- package/skills/design-library/inclusive-interaction/skills/multi-modal-input/SKILL.md +70 -0
- package/skills/design-library/inclusive-interaction/skills/touch-target-design/SKILL.md +71 -0
- package/skills/design-library/inclusive-interaction/skills/voice-interaction/SKILL.md +68 -0
- package/skills/design-library/visual-critique/skills/critique-affordance/SKILL.md +45 -0
- package/skills/design-library/visual-critique/skills/critique-brand-consistency/SKILL.md +42 -0
- package/skills/design-library/visual-critique/skills/critique-color/SKILL.md +44 -0
- package/skills/design-library/visual-critique/skills/critique-composition/SKILL.md +46 -0
- package/skills/design-library/visual-critique/skills/critique-information-density/SKILL.md +45 -0
- package/skills/design-library/visual-critique/skills/critique-typography/SKILL.md +45 -0
- package/skills/design-library/visual-critique/skills/critique-visual-hierarchy/SKILL.md +40 -0
- package/skills/feature-audit/EVALS.md +83 -0
- package/skills/feature-audit/SKILL.md +326 -0
- package/skills/harness/EVALS.md +81 -0
- package/skills/harness/SKILL.md +88 -0
- package/skills/i-have-adhd/EVALS.md +80 -0
- package/skills/i-have-adhd/SKILL.md +183 -0
- package/skills/no-ai-slop/EVALS.md +89 -0
- package/skills/no-ai-slop/SKILL.md +209 -0
- package/skills/no-ai-slop/eval.md +52 -0
- package/skills/plan-add/EVALS.md +79 -0
- package/skills/plan-add/SKILL.md +179 -0
- package/skills/plan-add/render_table.py +72 -0
- package/skills/plan-status/EVALS.md +78 -0
- package/skills/plan-status/SKILL.md +52 -0
- package/skills/plan-sync/EVALS.md +80 -0
- package/skills/plan-sync/SKILL.md +69 -0
- package/skills/pm-frameworks/SKILL.md +33 -0
- package/skills/pm-frameworks/SOURCE +39 -0
- package/skills/pm-frameworks/intended-vs-implemented/SKILL.md +42 -0
- package/skills/pm-frameworks/opportunity-solution-tree/SKILL.md +64 -0
- package/skills/ponytail/EVALS.md +80 -0
- package/skills/ponytail/SKILL.md +124 -0
- package/skills/product-analysis/EVALS.md +103 -0
- package/skills/product-analysis/SKILL.md +361 -0
- package/skills/research/EVALS.md +104 -0
- package/skills/research/SKILL.md +570 -0
- package/skills/rl-env/SKILL.md +53 -0
- package/skills/rl-env/SOURCE +41 -0
- package/skills/rl-env/generate-nemo-gym-env/SKILL.md +169 -0
- package/skills/rl-env/generate-nemo-gym-env/references/architecture.md +114 -0
- package/skills/rl-env/generate-openenv-env/SKILL.md +183 -0
- package/skills/rl-env/generate-openenv-env/references/architecture.md +82 -0
- package/skills/rl-env/generate-ors-env/SKILL.md +209 -0
- package/skills/rl-env/generate-ors-env/references/architecture.md +113 -0
- package/skills/rl-env/generate-verifiers-env/SKILL.md +188 -0
- package/skills/rl-env/generate-verifiers-env/references/architecture.md +119 -0
- package/skills/rl-env/rl-env-from-description/SKILL.md +124 -0
- package/skills/rl-env/rl-env-from-description/references/interview.md +75 -0
- package/skills/rl-env/rl-env-from-description/references/nemo_gym.md +41 -0
- package/skills/rl-env/rl-env-from-description/references/openenv.md +35 -0
- package/skills/rl-env/rl-env-from-description/references/ors.md +50 -0
- package/skills/rl-env/rl-env-from-description/references/verifiers.md +39 -0
- package/skills/tezgah-contract/EVALS.md +78 -0
- package/skills/tezgah-contract/SKILL.md +792 -0
- package/statusline.py +129 -0
- package/workflows/graph-impact.js +153 -0
- package/workflows/graph-map.js +158 -0
- package/workflows/graph-review.js +170 -0
package/docs/hosts.md
ADDED
|
@@ -0,0 +1,400 @@
|
|
|
1
|
+
# Hosts
|
|
2
|
+
|
|
3
|
+
tezgah is one Python core with six host adapters around it: `claude`, `codex`,
|
|
4
|
+
`cursor`, `opencode`, `dsh`, `omp`. This page is for the maintainer wiring a new
|
|
5
|
+
host, adding a mark, or debugging a status line that claims something a host
|
|
6
|
+
cannot see. Read it when a question starts with "does this host get X?" or "can
|
|
7
|
+
this host observe Y?" - the answer is not uniform, and guessing it produces a
|
|
8
|
+
line that lies. What a rule *does* is [gate.md](gate.md) and
|
|
9
|
+
[evidence.md](evidence.md); how the text is composed is
|
|
10
|
+
[contract.md](contract.md); the marks are [status-line.md](status-line.md).
|
|
11
|
+
|
|
12
|
+
## Capability matrix
|
|
13
|
+
|
|
14
|
+
One row per host. "Measures" is the set of [marks](glossary.md#mark) the host's
|
|
15
|
+
surface can honestly report this session; the two skill-read marks (`pony`,
|
|
16
|
+
`adhd`) are the ones most hosts cannot.
|
|
17
|
+
|
|
18
|
+
| Host | Hook events it fires | Always-on contract | Per-turn reminder | Status surface, how drawn | Measures |
|
|
19
|
+
|---|---|---|---|---|---|
|
|
20
|
+
| claude | SessionStart, SubagentStart, PostCompact, UserPromptSubmit, PreToolUse, PostToolUse, PostToolUseFailure, Stop, SubagentStop (record-only, `subagent_end`) - `hooks/hooks.json:2-32` | the managed block in `~/.claude/CLAUDE.md` (`CLAUDE_RULES`), Claude's global memory file; the SessionStart/PostCompact hook rows declare `TEZGAH_CORE_IN_FILE` (`hooks/hooks.json:4,10`) and the hook drops the core when the block is there, so the contract is paid for once (`hooks/projects-auto-init.py::core_is_in_a_file`; the static `output-styles/tezgah.md` mirror (`output-styles/tezgah.md:1`) is the hookless build's copy) | UserPromptSubmit -> `additionalContext` (`hooks/hooks.json:12-14`, `hooks/projects-auto-init.py::main`) | `statusLine` command in `~/.claude/settings.json` (`bin/tezgah-setup::wire_claude_statusline`), ANSI, forwards Orca first (`statusline.py:47-55`) | all seven: the transcript parse covers the two skill reads, `graph`, `orch` and the three shell kinds - `consult`, `research` and the judgement callers (`statusline.py::claude_used`, `observable=None` at `statusline.py::observable`) |
|
|
21
|
+
| codex | SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, SubagentStart, PostCompact, Stop (`bin/tezgah-setup::CODEX_HOOK_EVENTS`; named in `hosts/codex/hook.py:6-7`) | hook: the normalized events inject `context_for` (`hosts/codex/hook.py::main`) | UserPromptSubmit -> `additionalContext` (`hosts/codex/hook.py::main`) | no custom footer item (`tui.status_line` is a closed enum) - the line rides `systemMessage`, plain, at SessionStart and Stop (`hosts/codex/hook.py:10-12`, `hosts/codex/hook.py::main`) | five tool-use (`TOOL_USE_MEASURES` at `hosts/codex/hook.py::main`) |
|
|
22
|
+
| cursor | 13 events: sessionStart, preToolUse, postToolUse, postToolUseFailure, subagentStart, subagentStop, beforeSubmitPrompt, stop, beforeMCPExecution, afterShellExecution, afterMCPExecution, afterFileEdit, afterAgentResponse (`bin/tezgah-setup::CURSOR_HOOK_EVENTS`) | hook: sessionStart -> `additional_context` (`hosts/cursor/hook.py::dispatch`) | beforeSubmitPrompt -> `additional_context` plus `{"continue": true}` (`hosts/cursor/hook.py::dispatch`) | `statusLine` in `~/.cursor/cli-config.json` -> `tezgah-statusline --cursor` (`bin/tezgah-setup::install_cursor`), ANSI (`statusline.py:122-124`) | five tool-use (`statusline.py::observable`) |
|
|
23
|
+
| opencode | no lifecycle events; plugin hooks: config, permission.ask, tool.execute.before, shell.env, experimental.session.compacting, chat.message, tool.execute.after (`hosts/opencode/plugins/tezgah.js:2328-2681`) - `tool.execute.before` carries the whole gate, `tool.execute.after` the channel on the row, the provenance label on the result and the taint notice on the next effect (`untrustedSource` `hosts/opencode/plugins/tezgah.js:1898`, `labelResult` `:1972`) | static only: generated `instructions` files, because there is no session-start injection point (`hosts/opencode/plugins/tezgah.js:3-6`, `bin/tezgah-setup::opencode_contract_text`) | chat.message pushes a synthetic part (`hosts/opencode/plugins/tezgah.js:2596-2647`) | TUI plugin `tezgah-tui.tsx` declared in `tui.json`, runs `tezgah-status` on the event bus (`hosts/opencode/tui/tezgah-tui.tsx:1-11`; wiring `bin/tezgah-setup::install_opencode`) | all seven: skill reads and kinds are classified in process (`hosts/opencode/plugins/tezgah.js:2183-2219`) |
|
|
24
|
+
| dsh | SessionStart, SubagentStart, UserPromptSubmit, PreToolUse, PostToolUse (`hosts/dsh/hooks.json:2-19`); no Stop rule, because the bridge drops every call's outcome and no check there can show a pass | hook: the same Claude-family scripts, named by `configPath` (`bin/tezgah-setup::dsh_patch_block`) | UserPromptSubmit, through the bridge (`hosts/dsh/hooks.json:9-11`) | web-profile plugin: authenticated `GET /api/tezgah.status` -> `tezgah-status` (`hosts/dsh/statusline/lib/index.js:15,66-104`) | five tool-use: the route passes `--observable=consult,research,graph,orch,judge` (`hosts/dsh/statusline/lib/index.js:16-19,84,96`) |
|
|
25
|
+
| omp | session_start, session_compact, session_switch, turn_end, before_agent_start, tool_call, tool_result, session_stop (`hosts/omp/tezgah-hook.ts.in:541,588,607,612,614,634,653,688`) | both: static `RULES.md` (`bin/tezgah-setup::STATIC_RULES`, `bin/tezgah-setup::rules_block`) and a session payload carrying only what a static file cannot know (`hosts/omp/hook.py::handle`) | before_agent_start returns a hidden message (`hosts/omp/tezgah-hook.ts.in:614-632`) | extension draws `ctx.ui.setWidget` below the editor, `setStatus` as fallback (`hosts/omp/tezgah-hook.ts.in:170-203`); ANSI line from `hosts/omp/hook.py::status_line` | all seven: the embedded runner filters skill reads before asking python (`hosts/omp/tezgah-hook.ts.in:255-262`) and no `observable` is passed (`hosts/omp/hook.py::status_line`) |
|
|
26
|
+
|
|
27
|
+
The middle five marks (`consult`, `research`, `graph`, `orch`, `judge`) are tool-use marks:
|
|
28
|
+
any adapter that sees its host's tool calls can light them by calling
|
|
29
|
+
`record()` (`hooks/tezgah_context.py::record`). CLI-side, `tezgah-status` reads
|
|
30
|
+
the same core and takes the session id as an argument or `TEZGAH_SESSION`
|
|
31
|
+
(`bin/tezgah-status::main`).
|
|
32
|
+
|
|
33
|
+
## Enforcement capability
|
|
34
|
+
|
|
35
|
+
What each host can enforce, in the
|
|
36
|
+
[enforcement capability](glossary.md#enforcement-capability) words. `gate`: the
|
|
37
|
+
hook can refuse. `observe`: it records and never refuses. `partial`: only part
|
|
38
|
+
of the surface fires. `unavailable`: the host has no event for it. A cell gets
|
|
39
|
+
`unverified` when no driver on this machine can probe it. Fixture payloads test
|
|
40
|
+
the code path there, but no run has shown the host obeying it.
|
|
41
|
+
|
|
42
|
+
| Host | Gate (PreToolUse) | Stop | Subagent |
|
|
43
|
+
|---|---|---|---|
|
|
44
|
+
| claude | gate, probed by `--report --live` (`bin/tezgah-setup::live_probe`) | gate, unverified (`hooks/projects-stop.py::main`) | observe, unverified: a brief at SubagentStart, a record-only `subagent_end` row at SubagentStop (ADR 011) |
|
|
45
|
+
| codex | gate, probed by `--report --live`; Codex runs only a trusted group | gate, unverified (`hosts/codex/hook.py::main`) | partial, unverified: a brief at SubagentStart, no subagent-end event |
|
|
46
|
+
| cursor | gate, probed by `--report --live` | gate, unverified (`hosts/cursor/hook.py::dispatch`) | observe, unverified: a brief at subagentStart, a record-only `subagent_end` row at subagentStop |
|
|
47
|
+
| opencode | gate, probed by `--report --live` through a node driver | unavailable: the plugin API has no end-of-turn event | unavailable |
|
|
48
|
+
| dsh | gate, probed by `--report --live` through the bridge | unavailable: ADR 003 removed the Stop entry, because the bridge carries no outcome | partial, unverified: a brief at SubagentStart, no SubagentStop entry |
|
|
49
|
+
| omp | gate, probed by `--report --live` (node 22.6+) | gate, unverified (`hosts/omp/hook.py::handle`) | partial, unverified: a brief at a task session's start; `session_stop` does not fire for task sessions |
|
|
50
|
+
|
|
51
|
+
Every host also attests its own hook entries once per session
|
|
52
|
+
(`hooks/tezgah_attest.py::run`). Claude, dsh, Codex, Cursor and omp do it at
|
|
53
|
+
session start. opencode does it at the first message, through `oncePerSession`.
|
|
54
|
+
The `attest` row and the `drift` mark are
|
|
55
|
+
[evidence](evidence.md#the-kinds-by-what-reads-them), never a block.
|
|
56
|
+
`--report` prints the same comparison per host
|
|
57
|
+
(`bin/tezgah-setup::attestation_rows`).
|
|
58
|
+
|
|
59
|
+
## What each host gets, and where it is written
|
|
60
|
+
|
|
61
|
+
Every host gets the skill symlinks from `SKILLS` (`bin/tezgah-setup::SKILLS`)
|
|
62
|
+
except claude, whose skills arrive with the plugin. `install_common` writes the
|
|
63
|
+
shared config, contract hash and the CLI symlinks every host shell can call
|
|
64
|
+
(`bin/tezgah-setup::install_common`).
|
|
65
|
+
|
|
66
|
+
- **claude** - `install_claude` (`bin/tezgah-setup::install_claude`): `~/.claude/statusline.py`,
|
|
67
|
+
no `~/.claude/workflows` links (the plugin's own `workflows/` serves the graph
|
|
68
|
+
workflows, and install removes tezgah's old links there and any dangling
|
|
69
|
+
`cbm-*.js` one, `sweep_claude_workflows`), the
|
|
70
|
+
`~/.claude/bin/{consult,codegen,tezgah-render-table}` links, two keys in
|
|
71
|
+
`~/.claude/settings.json` - `statusLine` (`bin/tezgah-setup::wire_claude_statusline`) and the attribution
|
|
72
|
+
off-switch (`bin/tezgah-setup::wire_claude_attribution`) - and the always-on block in
|
|
73
|
+
`~/.claude/CLAUDE.md` (`CLAUDE_RULES`), Claude's own user-level memory file.
|
|
74
|
+
Its hook manifest is the plugin's own
|
|
75
|
+
`hooks/hooks.json`; no `hooks.json` is written into `~/.claude`. Claude runs a
|
|
76
|
+
**copy** of the checkout under `~/.claude/plugins/cache`, refreshed by
|
|
77
|
+
`--sync` (`bin/tezgah-setup::sync`). The install makes that copy through
|
|
78
|
+
Claude's own CLI (`register_claude_plugin()`). It renders the untracked
|
|
79
|
+
`.claude-plugin/{plugin,marketplace}.json` pair into the tree it runs from.
|
|
80
|
+
It adds that tree as a directory marketplace and installs
|
|
81
|
+
`tezgah@tezgah-local`. An existing `tezgah@*` row stops both calls. With no
|
|
82
|
+
`claude` CLI, Claude stays unarmed and the run says so.
|
|
83
|
+
- **codex** - `install_codex` (`bin/tezgah-setup::install_codex`): `$CODEX_HOME/hooks.json`
|
|
84
|
+
(one group per event, PreToolUse carrying `CODEX_PRETOOL_MATCHER` at `bin/tezgah-setup::CODEX_PRETOOL_MATCHER`),
|
|
85
|
+
`skills/*` symlinks, `~/.codex/bin/consult`, and `mcp_servers.*` tables in
|
|
86
|
+
`config.toml` (`ensure_toml_mcp`, `bin/tezgah-setup::ensure_toml_mcp`).
|
|
87
|
+
- **cursor** - `install_cursor` (`bin/tezgah-setup::install_cursor`): `~/.cursor/hooks.json`
|
|
88
|
+
(tezgah entries replaced, a user's Orca entries merged), `skills/*` symlinks,
|
|
89
|
+
`mcp.json` servers, and `cli-config.json` `statusLine`.
|
|
90
|
+
- **opencode** - `install_opencode` (`bin/tezgah-setup::install_opencode`): the plugin under
|
|
91
|
+
both `plugins/` and `plugin/` (version drift), `skills/*` symlinks, the
|
|
92
|
+
generated `~/.config/tezgah/opencode-contract.md` (`bin/tezgah-setup::opencode_contract`) and
|
|
93
|
+
`opencode-skills.md` + `.full.md` (`bin/tezgah-setup::skill_router_texts`), then `opencode.json`
|
|
94
|
+
(`instructions`, `mcp`, `permission.skill=deny`, `compaction.prune`,
|
|
95
|
+
`watcher.ignore`, the two `external_directory` grants) and `tui.json` +
|
|
96
|
+
`tui-plugins/tezgah-tui.tsx`.
|
|
97
|
+
- **dsh** - `install_dsh` (`bin/tezgah-setup::install_dsh`): `~/.dsh/skills/*` symlinks,
|
|
98
|
+
a managed block in `~/.dsh/cordis.patch.yml` (`dsh_patch_block`, `bin/tezgah-setup::dsh_patch_block`) that
|
|
99
|
+
mounts the Claude-code hook bridge on `hosts/dsh/hooks.json`, the MCP client
|
|
100
|
+
rows and the three `llm-pi-ai` routes, plus `~/.local/bin/dsh` ->
|
|
101
|
+
`bin/tezgah-dsh`. `install_dsh_statusline` (`bin/tezgah-setup::install_dsh_statusline`) links the statusline
|
|
102
|
+
package into the **web profile** and adds its row to
|
|
103
|
+
`~/.dsh/profiles/web/cordis.patch.yml`.
|
|
104
|
+
- **omp** - `install_omp` (`bin/tezgah-setup::install_omp`): `~/.omp/agent/RULES.md`
|
|
105
|
+
(managed block), `skills/*` symlinks, `agents/tezgah-*.md`, `mcp.json`
|
|
106
|
+
(`$schema`, `mcpServers`), and `hooks/pre/tezgah-hook.ts` rendered from
|
|
107
|
+
`hosts/omp/tezgah-hook.ts.in` with the python path substituted for `@HOOK@`.
|
|
108
|
+
That path is then named in omp's `extensions:` setting through `omp config`
|
|
109
|
+
(`register_omp_hook`, `bin/tezgah-setup::register_omp_hook`): omp 18.2.11 loaded
|
|
110
|
+
nothing from `hooks/pre/` by discovery, the same file named there drew the
|
|
111
|
+
status line, and omp dedupes a path that is both discovered and configured
|
|
112
|
+
(`OMP_EXTENSIONS`, `bin/tezgah-setup::OMP_EXTENSIONS`). omp has no orx target of
|
|
113
|
+
its own: orx's `codex` target writes the shim to `~/.agents/skills/orx`,
|
|
114
|
+
omp's native `agents` skill root, so `install_openresearch` maps omp onto it
|
|
115
|
+
(`ORX_AGENTS`, `bin/tezgah-setup::ORX_AGENTS`).
|
|
116
|
+
|
|
117
|
+
An adapter is responsible for its host's **envelope** and its **surface**: it
|
|
118
|
+
translates the host's event and tool names into the shared vocabulary (one call
|
|
119
|
+
has to hash to one id - `hosts/codex/hook.py::gate_name`, `hosts/cursor/hook.py::gate_name`),
|
|
120
|
+
draws the line, and returns the host's own output shape. The contract text, the
|
|
121
|
+
gate decision, the evidence ledger, the untrusted-content marks and the segment
|
|
122
|
+
builder stay in the shared core under `hooks/` (`hosts/omp/hook.py:1-12`,
|
|
123
|
+
`hosts/cursor/hook.py:1-41`).
|
|
124
|
+
|
|
125
|
+
## Where the always-on core reaches each host
|
|
126
|
+
|
|
127
|
+
One rule for every host: the core ships **globally**, never as an edit to a
|
|
128
|
+
tracked project file, and every host has exactly one delivery path so a session
|
|
129
|
+
pays for it once.
|
|
130
|
+
|
|
131
|
+
| host | how the core arrives |
|
|
132
|
+
|---|---|
|
|
133
|
+
| claude | the managed block in `~/.claude/CLAUDE.md` (`CLAUDE_RULES`), Claude's global memory file, which Claude reads into every session; its `SessionStart`/`PostCompact` hook rows declare `TEZGAH_CORE_IN_FILE` and the hook drops the core, so the contract is paid for once |
|
|
134
|
+
| codex | the managed block in the global instructions file (`codex_rules`, `CODEX_RULES` = `AGENTS.override.md` then `AGENTS.md`); its `SessionStart` hook runs with `with_core=False` because a hook context is one message where this file is the instructions Codex keeps |
|
|
135
|
+
| cursor | `~/.cursor/hooks.json` fires `sessionStart` -> `context_for` (`hosts/cursor/hook.py::dispatch`) |
|
|
136
|
+
| opencode | no stdout-inject hook: `install_opencode` writes the generated `~/.config/tezgah/opencode-contract.md` and references it from `opencode.json` `instructions` |
|
|
137
|
+
| omp | the managed block in `~/.omp/agent/RULES.md` |
|
|
138
|
+
| dsh | the session's own hook context: `hosts/dsh/hooks.json` runs the Claude-family scripts through the bridge, and no dsh file carries the core, so dsh's `SessionStart` row declares nothing and still gets it here (`~/.dsh/cordis.patch.yml` mounts that bridge) |
|
|
139
|
+
|
|
140
|
+
An installed host whose core line is missing is a health check's business
|
|
141
|
+
(`host_checks_<host>`), not a second copy: two delivery paths for one host is the
|
|
142
|
+
same rules paid twice per session.
|
|
143
|
+
|
|
144
|
+
## The model wire
|
|
145
|
+
|
|
146
|
+
The matrix above is about events. This is about the other side of a host: which
|
|
147
|
+
model API it speaks. tezgah's own half of that is already written down, because
|
|
148
|
+
the router has to name a model per host where that host can express it
|
|
149
|
+
(`hooks/tezgah_models.py:10-16`); the host's half never was, and it is the half a
|
|
150
|
+
reader needs to explain a score, since the same model moved 13 points across
|
|
151
|
+
three harness configurations while swapping the model inside one harness moved it
|
|
152
|
+
2.5-5. [layers](layers.md#three-senses-of-one-word) draws the three senses of
|
|
153
|
+
"harness" apart for the same reason.
|
|
154
|
+
|
|
155
|
+
| Host | tezgah names its model by | the model wire it speaks | checked against |
|
|
156
|
+
|---|---|---|---|
|
|
157
|
+
| claude | frontmatter `model:` + `effort:` (`hooks/tezgah_models.py:10`) | the Anthropic API; a managed gateway is reached through `ANTHROPIC_BASE_URL` and `allowedProviders` (Claude Code's gateway and settings docs) | vendor documentation |
|
|
158
|
+
| codex | `model` + `model_reasoning_effort` (`hooks/tezgah_models.py:11`) | OpenAI's Responses API by default and selectable per provider: a `model_providers` entry sets `wire_api = "responses"`, and `openai_base_url` moves the built-in provider's base URL (Codex's own configuration reference, checked 2026-10-01) | vendor documentation |
|
|
159
|
+
| cursor | frontmatter `model:` + `effort:` (`hooks/tezgah_models.py:10`) | `unverified`: the CLI's public documentation names no wire (checked 2026-10-01) | - |
|
|
160
|
+
| opencode | a selector read from `opencode models` (`hooks/tezgah_models.py:12`) | the AI SDK: `@ai-sdk/openai-compatible` for `/v1/chat/completions`, `@ai-sdk/openai` for `/v1/responses`, beside its own Anthropic and Bedrock providers (opencode's provider docs) | vendor documentation |
|
|
161
|
+
| omp | the session default's family, otherwise `task.agentModelOverrides` and `modelRoles.plan` (`hooks/tezgah_models.py:13-16`) | whichever provider the selected model names - Anthropic Messages, OpenAI Responses, OpenAI chat completions, Google, Bedrock - with text-based dialects where a native tool API is unavailable; the OpenRouter route dispatches to Responses unless `PI_OPENROUTER_RESPONSES=0` (omp's own `provider-compat-reference` documentation) | the tool's own documentation |
|
|
162
|
+
| dsh | the Claude-family scripts through the bridge (`hosts/dsh/hooks.json:2-18`); `README.md:27-28` calls it "DeepSeek's dsh harness" | `unverified`: its own `--help` describes it as "an ordered stack of plugin-bundle patch layers" and names no model API, and its profile directory names a provider (DeepSeek) rather than a wire (checked 2026-10-01) | - |
|
|
163
|
+
|
|
164
|
+
`unverified` is the point of the column rather than a gap in it. A wrong dialect
|
|
165
|
+
here is worse than a blank one: a reader would use it to explain a score, and the
|
|
166
|
+
explanation would be invented. Fill a row only from that host's own documentation,
|
|
167
|
+
and say which document it came from.
|
|
168
|
+
|
|
169
|
+
## The observability rule
|
|
170
|
+
|
|
171
|
+
A skill read is observable only where the host gives a channel that does not cost
|
|
172
|
+
a process per read: Claude parses its transcript (`statusline.py::claude_used`),
|
|
173
|
+
opencode classifies in process (`hosts/opencode/plugins/tezgah.js:2183-2219`),
|
|
174
|
+
omp filters in its embedded runner before it asks python
|
|
175
|
+
(`hosts/omp/tezgah-hook.ts.in:255-262`). On codex, cursor and dsh a read is not
|
|
176
|
+
observable at that price, so their surfaces pass the five tool-use measures as
|
|
177
|
+
`observable` and the two skill marks render dim (`info`, no glyph) instead of
|
|
178
|
+
claiming the skill was never opened (`hooks/tezgah_context.py::TOOL_USE_MEASURES`, and the
|
|
179
|
+
`observable` branch at `hooks/tezgah_context.py::health_segments`). Callers that pass `TOOL_USE_MEASURES`:
|
|
180
|
+
`statusline.py::observable`, `hosts/codex/hook.py::main`,
|
|
181
|
+
`hosts/dsh/statusline/lib/index.js:16-19`. A kill switch is observable everywhere
|
|
182
|
+
and still renders `off` (`hooks/tezgah_context.py::health_segments`).
|
|
183
|
+
|
|
184
|
+
## Adding a host
|
|
185
|
+
|
|
186
|
+
In order, each step verified by the one below it:
|
|
187
|
+
|
|
188
|
+
1. `HOST_DIRS` and, when the CLI can exist without a config dir, `HOST_BINS` in
|
|
189
|
+
`hooks/tezgah_paths.py::HOST_DIRS`, `hooks/tezgah_paths.py::HOST_BINS`. These are shared by the installer, the report
|
|
190
|
+
and agent generation, so "is this host installed?" has one answer
|
|
191
|
+
(`hooks/tezgah_paths.py:66-69`). Add the name to `ALL_HOSTS` in the report
|
|
192
|
+
order (`bin/tezgah-setup::ALL_HOSTS`).
|
|
193
|
+
2. The hook adapter(s) under `hosts/<host>/` (an `install_*`-independent
|
|
194
|
+
directory like `hosts/codex/hook.py`, `hosts/cursor/hook.py`) plus, for a
|
|
195
|
+
TS/JS host, the bridge file with a substituted python path
|
|
196
|
+
(`hosts/omp/tezgah-hook.ts.in` rendered at `hooks/tezgah_attest.py::omp_bridge`).
|
|
197
|
+
3. `install_<host>()` writing that host's files, registered in `INSTALLERS`
|
|
198
|
+
(`bin/tezgah-setup::INSTALLERS`), and `uninstall_<host>()` removing only
|
|
199
|
+
tezgah-managed links and blocks (`bin/tezgah-setup:3286-3418`).
|
|
200
|
+
4. `host_checks_<host>()` returning `(label, bool)` rows over what was actually
|
|
201
|
+
written, registered in `HOST_CHECKS` (`bin/tezgah-setup::HOST_CHECKS`); the
|
|
202
|
+
`--report` output is that list (`bin/tezgah-setup::report`). Give the row a home-qualified
|
|
203
|
+
label if the host's dir can be relocated (`host_checks_codex`, `bin/tezgah-setup::host_checks_codex`).
|
|
204
|
+
5. Decide the surface: a `statusLine` command, a TUI/widget plugin, or the
|
|
205
|
+
`systemMessage` fallback (`hosts/codex/hook.py:10-12`). Pass `observable` if
|
|
206
|
+
the host cannot see a skill read, and `idx_override` on any redraw that must
|
|
207
|
+
not fork git for a cosmetic glyph (`hooks/tezgah_context.py::health_segments`).
|
|
208
|
+
6. Tests, in two tiers: a per-host class in `tests/test_setup.py` pinning the
|
|
209
|
+
report rows and the written files (e.g. `OmpHost:960-1030`,
|
|
210
|
+
`CodexHome:657-702`, `CursorMatcher:705-722`, `DshStatusline:872-957`), and an
|
|
211
|
+
opt-in script under `tests/e2e_*.py` for the thing only a real host can prove
|
|
212
|
+
- not collected by `unittest discover`, it exits 0 with `SKIP` when the host
|
|
213
|
+
is absent (`tests/e2e_omp_statusline.py:13-16`).
|
|
214
|
+
|
|
215
|
+
## Host-specific limits worth knowing
|
|
216
|
+
|
|
217
|
+
- **A disarmed gate is shown where the prompt hook can see it** (`gate_inactive`, audit
|
|
218
|
+
Phase 1.3). Detection needs the host to hand its prompt hook a `transcript_path` and to
|
|
219
|
+
run that hook while the tool hooks do not; it costs the last 256 KiB of the transcript and
|
|
220
|
+
one byte scan of the session ledger per prompt.
|
|
221
|
+
- **claude:** observed; the line rides the prompt context and `gate✗` shows on the status line.
|
|
222
|
+
- **codex:** observed (rollout JSONL, `function_call` items); Codex has no status line, so
|
|
223
|
+
`gate✗` appears only in the SessionStart/Stop status message.
|
|
224
|
+
- **cursor, dsh:** observed only if their prompt payload carries `transcript_path`
|
|
225
|
+
(unverified on a live host).
|
|
226
|
+
- **omp, opencode:** not applicable: the prompt hook and the gate live in one extension or
|
|
227
|
+
plugin process, so one cannot run without the other.
|
|
228
|
+
- Everywhere: a disarmed PreToolUse beside a working PostToolUse writes rows and is not
|
|
229
|
+
detected here. `tezgah-setup --report --live` sends each host one PreToolUse it must
|
|
230
|
+
deny. A host whose gate does not answer reads MISS there.
|
|
231
|
+
- **Lessons and open plans are injected only when `.tezgah` came from tezgah.**
|
|
232
|
+
`.tezgah/` is the user's private workspace, ignored by the project. When the
|
|
233
|
+
project's own git index holds `.tezgah` or any path under it (as a file, a
|
|
234
|
+
symlink or a submodule), when `.tezgah`, `lessons.md`, `plans` or
|
|
235
|
+
`plans/open` is a symlink, or when the index cannot be read, the block is
|
|
236
|
+
replaced by a one-line "repository-provided data" notice - the per-turn
|
|
237
|
+
relevant-lessons block too, once per session
|
|
238
|
+
(`workspace_from_repo`, audit L-16). Ceiling: a tree with no `.git` (an
|
|
239
|
+
unpacked archive) carries no record of where `.tezgah` came from, so its
|
|
240
|
+
lessons are injected; do not unpack untrusted archives under a configured root.
|
|
241
|
+
- **After a compaction, the live state comes back on four hosts, not six.**
|
|
242
|
+
The block after a compaction is the same `post_compact` build everywhere:
|
|
243
|
+
resume, plans, lessons and the graph line, without a core the static file
|
|
244
|
+
already holds.
|
|
245
|
+
- **claude, codex**: the host fires SessionStart again (`SessionStart:compact`,
|
|
246
|
+
`source: "compact"`) and the block rides its `additionalContext`;
|
|
247
|
+
PostCompact is observed, builds the block so the compaction row is written,
|
|
248
|
+
and prints nothing, because both hosts reject an envelope on it
|
|
249
|
+
(`hooks/projects-auto-init.py:28-38`, `hosts/codex/hook.py::main`).
|
|
250
|
+
- **opencode**: `experimental.session.compacting` carries the builder's
|
|
251
|
+
post-compact block, so the contract survives the summary
|
|
252
|
+
(`hosts/opencode/plugins/tezgah.js:39-40`). It hands the builder the
|
|
253
|
+
session id. The builder then forgets the lessons and armed paragraphs
|
|
254
|
+
that session saw, and restates its pinned user constraints. The call
|
|
255
|
+
used to send `{}`, which keyed nothing on the session.
|
|
256
|
+
- **omp**: re-injected. The extension subscribes to omp's `session_compact`
|
|
257
|
+
event (payload `{type, compactionEntry, fromExtension}`;
|
|
258
|
+
`compactionEntry.summary` is the post-compaction summary) and asks
|
|
259
|
+
`hosts/omp/hook.py` for `{"event": "post_compact"}`; the block is sent with
|
|
260
|
+
`pi.sendMessage(..., {deliverAs: "nextTurn"})`, and the summary rides as
|
|
261
|
+
`compact_summary` so `remember_compaction` writes the compaction row
|
|
262
|
+
(`hosts/omp/tezgah-hook.ts.in:580-597`, `hosts/omp/hook.py::handle`).
|
|
263
|
+
Subagent sessions are skipped, because the post-compact block starts the
|
|
264
|
+
indexer.
|
|
265
|
+
- **cursor**: not re-injected - a limitation. Cursor's only compaction hook,
|
|
266
|
+
`preCompact`, is documented as observational: it fires before the summary,
|
|
267
|
+
cannot modify it, and its output is `user_message` (shown to the user, not
|
|
268
|
+
the model). No post-compaction event reaches the model, so the live-state
|
|
269
|
+
block from sessionStart is not re-sent after a compaction
|
|
270
|
+
(<https://cursor.com/docs/hooks>, read 2026-10-02).
|
|
271
|
+
- **dsh**: not re-injected - a limitation. The Claude Code hook bridge
|
|
272
|
+
(`@deepseek-ai/dsh-hooks-claude-code` 0.1.5-rc.2, README "Known
|
|
273
|
+
Limitations") lists `PreCompact` and `PostCompact` among the unsupported
|
|
274
|
+
events and ignores config for them, so `hosts/dsh/hooks.json` wires
|
|
275
|
+
neither; the SessionStart context is not re-sent after a compaction.
|
|
276
|
+
- **Codex has no footer item to give.** `tui.status_line` is a closed enum, so
|
|
277
|
+
the segment arrives as `systemMessage` twice per session and never carries
|
|
278
|
+
color (`hosts/codex/hook.py:10-12`); PostToolUse there has no failure event, so
|
|
279
|
+
the exit code is read from `tool_response` and an unread code stays `None`
|
|
280
|
+
(`hosts/codex/hook.py::verify_outcome`).
|
|
281
|
+
- **dsh runs the Claude-family scripts and knows seven events.** Its bridge
|
|
282
|
+
accepts SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, SubagentStart,
|
|
283
|
+
SubagentStop and Stop, and silently drops anything else - which is why
|
|
284
|
+
`configPath` names `hosts/dsh/hooks.json` and not the Claude manifest
|
|
285
|
+
(`bin/tezgah-setup::dsh_patch_block`). Its status route goes through `tezgah-status`
|
|
286
|
+
with the five tool-use measures (`hosts/dsh/statusline/lib/index.js:16-19`), it
|
|
287
|
+
declares `TEZGAH_CALL_OUTCOME=none` because the bridge drops the outcome field
|
|
288
|
+
(`hosts/dsh/hooks.json:16-18`, `hooks/projects-posttooluse.py::main`), and its
|
|
289
|
+
statusline row lives in the web profile because the plugin injects the
|
|
290
|
+
web-only `connection` service (`bin/tezgah-setup::dsh_status_block`). It wires no
|
|
291
|
+
Stop rule. With no outcome on any call, no check there can show a pass, so
|
|
292
|
+
the rule could only refuse honest work. The entry stays out of
|
|
293
|
+
`hosts/dsh/hooks.json` until the bridge carries outcomes.
|
|
294
|
+
- **opencode carries the untrusted-content control in the plugin**, not by
|
|
295
|
+
importing `hooks/tezgah_untrusted.py`, which a plugin cannot do in process: the
|
|
296
|
+
channel is decided in JS (`untrustedSource` `hosts/opencode/plugins/tezgah.js:1898`,
|
|
297
|
+
the tier's argv reader at `:1881-1890`), the label and the taint notice ride the
|
|
298
|
+
result the hook is handed (`labelResult` `:1972`). A shared corpus in
|
|
299
|
+
`tests/test_opencode_plugin.py::OpenCodePlugin.test_the_classifier_agrees_with_the_python_half_on_a_shared_corpus` drives both halves over the same calls and
|
|
300
|
+
fails if their answers differ, so neither can move without the other.
|
|
301
|
+
- **omp carries both untrusted-content marks through the shared core.** Its
|
|
302
|
+
`post_tool_use` calls `marks` (`hooks/tezgah_untrusted.py::marks`), as
|
|
303
|
+
`hooks/projects-posttooluse.py::main` does. The row's `source` carries the
|
|
304
|
+
channel an effect inherits from its turn. The line goes back as `label`: the
|
|
305
|
+
label on a result from outside, or the taint notice on the first effect after
|
|
306
|
+
one. The bridge puts it in front of the result (`hosts/omp/hook.py::handle`,
|
|
307
|
+
`labelled` in `hosts/omp/tezgah-hook.ts.in`). The bridge never sends a
|
|
308
|
+
result's body. `marks` reads a missing result as a subagent call that read
|
|
309
|
+
nothing. So the hook passes an empty stand-in, and a `task` report keeps its
|
|
310
|
+
label. A failed call keeps its own channel and earns no notice. omp writes one
|
|
311
|
+
ledger per subagent, so the hook passes no agent key.
|
|
312
|
+
- **No host gets the taint notice as PreToolUse context.** Checked 2026-10-06
|
|
313
|
+
against each host's own reference, not in a live run:
|
|
314
|
+
- Claude takes `additionalContext` but adds it "alongside the tool result"
|
|
315
|
+
(code.claude.com/docs/en/hooks, PreToolUse decision control).
|
|
316
|
+
- omp 18.6.1 takes a `tool_call` `additionalContext` and adds it after the
|
|
317
|
+
tool ran (read from the installed binary).
|
|
318
|
+
- Codex takes it (`pre-tool-use.command.output.schema.json` in openai/codex,
|
|
319
|
+
and its hooks page). Its timing is not stated.
|
|
320
|
+
- Cursor's `preToolUse` output has no context field, only `agent_message` on
|
|
321
|
+
a deny (cursor.com/docs/hooks).
|
|
322
|
+
- opencode's `tool.execute.before` can change only the arguments.
|
|
323
|
+
- dsh: nobody has checked its bridge.
|
|
324
|
+
|
|
325
|
+
On Claude and omp the line would land where the PostToolUse notice already
|
|
326
|
+
does. Sending it there too would show it twice, with no timing gain.
|
|
327
|
+
- **opencode asks the core for the rules it cannot port, and counts the ask.** The
|
|
328
|
+
task rule's phase and allowlist and the language rule's word list are answered by
|
|
329
|
+
`bin/tezgah-gate decide` (the recording verb; `check` is the dry run) rather than copied into JavaScript (`IDENT_CMD`
|
|
330
|
+
`hosts/opencode/plugins/tezgah.js:585`, the call site `:2459-2462`) - one spawn per write
|
|
331
|
+
and per identifier-creating command. The delegation fails open by design: a missing
|
|
332
|
+
CLI, a non-zero exit, a broken pipe or a 10 s timeout refuses nothing (`collect`
|
|
333
|
+
`hosts/opencode/plugins/tezgah.js:152-178`). One `delegation` row now records the class when the core could not
|
|
334
|
+
answer (`noteDelegation` `:2283-2289`), so a silent fail-open is countable instead
|
|
335
|
+
of invisible.
|
|
336
|
+
- **opencode has no session-start hook**, so its always-on file must carry the
|
|
337
|
+
pointer every hook host appends, and the per-session index, agent and contract
|
|
338
|
+
refreshes ride the first `chat.message` instead (`bin/tezgah-setup::refresh_contract`,
|
|
339
|
+
`hosts/opencode/plugins/tezgah.js:2630-2645`). It denies the native `skill`
|
|
340
|
+
tool - the generated router replaces the injected skill list
|
|
341
|
+
(`bin/tezgah-setup::install_opencode`) - and `permission.ask` may never be emitted by a
|
|
342
|
+
given build, which is why `tool.execute.before` stays the enforcing half
|
|
343
|
+
(`hosts/opencode/plugins/tezgah.js:11-14`).
|
|
344
|
+
- **Cursor only runs a PreToolUse hook for the tool types its matcher names**, so
|
|
345
|
+
the matcher must list the write spellings or the gate's edit branches are
|
|
346
|
+
unreachable there (`hosts/cursor/hook.py:30-39`,
|
|
347
|
+
`bin/tezgah-setup::CURSOR_PRETOOL_MATCHER`).
|
|
348
|
+
- **Claude, dsh, omp, codex and cursor run the gate only for the tool names
|
|
349
|
+
their matcher carries**, so a name the PostToolUse side carries and the
|
|
350
|
+
PreToolUse side does not is recorded in the ledger and never refused.
|
|
351
|
+
`PowerShell` and `pwsh` are both `BASH_TOOLS` members
|
|
352
|
+
(`hooks/tezgah_integrity.py::BASH_TOOLS`), so every PreToolUse matcher names both
|
|
353
|
+
spellings: the Claude-family wire (`hooks/hooks.json:16`,
|
|
354
|
+
`hosts/dsh/hooks.json:13`), codex and cursor
|
|
355
|
+
(`bin/tezgah-setup::CODEX_PRETOOL_MATCHER`, `bin/tezgah-setup::CURSOR_PRETOOL_MATCHER`, mirrored in `hosts/codex/hooks.json:10` and
|
|
356
|
+
`hosts/cursor/hooks.json:8` - neither named them until 2026-09-19, so a
|
|
357
|
+
PowerShell call on those two reached no hook at all while the shared rules
|
|
358
|
+
already knew the spelling), and omp's `GATED` list
|
|
359
|
+
(`hosts/omp/tezgah-hook.ts.in:268-270`). A host this list does not cover is a
|
|
360
|
+
host whose shell the gate cannot see.
|
|
361
|
+
- **An MCP effect reaches the gate on every host that can route it**. Claude
|
|
362
|
+
and dsh run it through a PreToolUse group of its own in `hooks/hooks.json` and
|
|
363
|
+
`hosts/dsh/hooks.json`. That group stays apart from the literal one, because
|
|
364
|
+
one regex character would end its exact-name dialect. Its pattern names the
|
|
365
|
+
effect verbs of `hooks/tezgah_integrity.py::MCP_VERBS`, and omp's `tool_call`
|
|
366
|
+
tests the same pattern (`MCP_EFFECT`, `hosts/omp/tezgah-hook.ts.in`). Both
|
|
367
|
+
hosts read a matcher as an unanchored JavaScript `RegExp`, and the pattern
|
|
368
|
+
uses no lookahead. A read-only MCP call, such as a code-graph query, spawns no
|
|
369
|
+
hook there. Codex's matcher carries `mcp__.*` (`hosts/codex/hooks.json`).
|
|
370
|
+
Cursor's `beforeMCPExecution` asks `decision` under the `mcp__<server>__<tool>`
|
|
371
|
+
name (`hosts/cursor/hook.py::dispatch`). It answers a deny, or `allow` for the
|
|
372
|
+
code graph, or nothing, so a user policy stands. The gate's own page says what
|
|
373
|
+
it reads on such a call ([gate.md](gate.md#mcp-a-servers-effect-tool)).
|
|
374
|
+
- **Claude runs a copy of the checkout, never this tree** (`bin/tezgah-setup::sync`),
|
|
375
|
+
so a change is not live until `--sync` or a refresh
|
|
376
|
+
(`refresh_plugin_copy`, `bin/tezgah-setup::refresh_plugin_copy`).
|
|
377
|
+
- **omp spawns the MCP `command` as one executable** and takes the rest in
|
|
378
|
+
`args`; the whole argv in `command` fails with ENOENT (`bin/tezgah-setup::install_omp`),
|
|
379
|
+
and `setStatus` strips ANSI, so only the widget path keeps the per-mark colors
|
|
380
|
+
(`hosts/omp/tezgah-hook.ts.in:170-173`).
|
|
381
|
+
- **omp drops browser MCP servers while its native browser is on**: a server
|
|
382
|
+
named `playwright`/`puppeteer`/... or running `@playwright/mcp`/... never
|
|
383
|
+
connects there (omp 18.2.11 `/mcp` listed codegraph, mobile-mcp and tezgah
|
|
384
|
+
only). `install_omp` therefore writes no Playwright row and sweeps one an older
|
|
385
|
+
release wrote, and the report calls that absence green
|
|
386
|
+
(`OMP_SUPERSEDED_MCP`, `bin/tezgah-setup::OMP_SUPERSEDED_MCP`); `skills/analyze-app`
|
|
387
|
+
sends omp to the native `browser` instead.
|
|
388
|
+
|
|
389
|
+
## Source of truth
|
|
390
|
+
|
|
391
|
+
- `hooks/tezgah_paths.py` - `HOST_DIRS`, `HOST_BINS`, `host_installed`, `off`, `roots`
|
|
392
|
+
- `bin/tezgah-setup` - `install_<host>`, `host_checks_<host>`, `HOST_CHECKS`, `report`
|
|
393
|
+
- `hooks/hooks.json`, `hooks/projects-auto-init.py`, `hooks/projects-posttooluse.py`
|
|
394
|
+
- `hosts/codex/hook.py`, `hosts/codex/hooks.json`
|
|
395
|
+
- `hosts/cursor/hook.py`, `hosts/cursor/hooks.json`
|
|
396
|
+
- `hosts/dsh/hooks.json`, `hosts/dsh/statusline/lib/index.js`
|
|
397
|
+
- `hosts/omp/hook.py`, `hosts/omp/tezgah-hook.ts.in`
|
|
398
|
+
- `hosts/opencode/plugins/tezgah.js`, `hosts/opencode/tui/tezgah-tui.tsx`
|
|
399
|
+
- `statusline.py`, `bin/tezgah-status`, `hooks/tezgah_context.py`
|
|
400
|
+
- `hooks/tezgah_models.py` - the per-host model surface in `## The model wire`
|