@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/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`
|