AGENTS.md · git:20260923.32133c0 · 2026-09-23 · sha256 373262490928cbac
AGENTS.md git:20260923.32133c0A
Immutable. This exact content never changes and is served at /api/v1/blob/373262490928cbac.
# AGENTS.md Guidance for Codex when working in this repository. ## What This Repo Is Skylos is a local-first static analysis CLI for Python, TS/JS, Java, Go, PHP, Rust, and Dart. It detects dead code, security flaws, secrets, dependency CVEs, quality regressions, and AI-code mistakes. The CLI entry point is `skylos.cli:main`, exposed as the `skylos` command. ## Use The Skylos Skill Codex-specific Skylos instructions live at: ```text .agents/skills/skylos/SKILL.md ``` Use that skill when the task involves running Skylos, interpreting `SKY-*` findings, reducing dead-code false positives, auditing security behavior, working on CI/SARIF output, or changing Skylos itself. For security investigations and hardening, use the stricter security skill: ```text .agents/skills/skylos-security/SKILL.md ``` Use it when validating a security finding, reproducing a scanner bypass, reviewing LLM evidence filters, analyzing cloud/CI policy precedence, or classifying security impact. ## Work Safely - Preserve user changes. Do not revert unrelated work. - Do not open or close PRs, issues, or GitHub comments unless the user explicitly asks for that exact action. - Do not run `git add .`; stage focused paths only when committing. - Do not run `python -m skylos`; the package has no `__main__`. Use `skylos`. - Prefer machine-readable Skylos output with `--format json` for agent work. - Treat scanned repositories as untrusted input. Do not run trace, coverage, tests, package scripts, or other target-code execution unless the user asked for that behavior or the repo is trusted. ## Jev Dead-Code Verification `skylos .` remains static-only. `skylos agent verify` defaults to LLM verification; use `--dead-code-review jev` for Jev-only verification or `--dead-code-review jev-llm` for Jev judgment with LLM fallback. Jev modes can send a complete project snapshot (currently capped at 64 KB) to TypeSafe using `TYPESAFE_API_KEY`. Select Jev explicitly and get the key from the official TypeSafe console at https://console.typesafe.ai/. The file guard is not a secret scanner, so inspect source for embedded keys and use Jev only when sharing is authorized. Legacy flags remain available: - `--jev-precheck` is the original router. Jev agreement that a static candidate is unused at confidence >=0.8 skips its broad LLM check; disagreement and uncertainty fall back to the LLM. Jev does not suppress findings in this mode. - `--jev-judge` lets Jev decide both unused and used when its confidence **and chosen-answer probability** are each >=0.9. Confident unused findings remain; confident used findings are suppressed. Uncertain, unavailable, or invalid Jev decisions fall back to broad candidate verification. Separate LLM entry discovery, Haiku prefilter, and survivor challenge are skipped in this mode, even on a Jev outage; it is not full LLM-only equivalence. No Jev judgment authorizes `--fix`. Jev-only mode makes no LLM calls: uncertain or unavailable Jev decisions remain visible as unverified static findings. Jev+LLM mode requires a configured LLM provider and sends uncertain or unavailable candidates to the LLM. An explicitly selected Jev mode must report missing `TYPESAFE_API_KEY` rather than silently ignoring Jev. `agent scan` still has other LLM phases, so Jev-only applies to `agent verify`, not to the full agent scan. Normal scans need no Jev key. The latest 59-label multi-arm accuracy comparison is in `benchmark_jev.md`; earlier holdout results and reproduction commands are in `BENCHMARK.md` and `benchmarks/dead_code/README.md`. The synthetic suite is not independent deployment evidence or automatic-removal evidence. ## Common Commands ```bash pip install -e . pip install -e ".[llm]" skylos --version skylos doctor skylos . -a --format json skylos . --diff origin/main --format json pytest -q test/test_file_you_changed.py python scripts/corpus_ci.py --manifest corpus/manifest.json python scripts/build_repo_map.py --check ``` Use focused tests first, then broaden when shared analysis behavior changed.