Imported from mukundzha/hazzel (
AGENTS.md). Install upstream withnpx skills add mukundzha/hazzel. Copyright stays with the author.
Hazzel (Hazzel context, 2026-09-14)
Stack
Python (pyproject)
Commands
install: pip install -e . --no-deps build: python -m build test: pytest lint: ruff check . typecheck: none configured (no mypy)
Conventions
src-layout under src/hazzel/; flat modules plus agent/, tools/, providers/ subpackages.
Ruff, line-length 100, target py310. Tests in tests/ (pytest, test_*.py), all offline/mockable.
Changelog: Keep-a-Changelog format in CHANGELOG.md; every release gets a version heading.
README/ROADMAP updated alongside features; core rule: small and inspectable over framework.
Layout
assets/ site/ src/ tests/ AGENTS.md CHANGELOG.md LICENSE pyproject.toml README.md ROADMAP.md
Gotchas
__init__.py only holds __version__; most API surface re-exported through hazzel.agent.
Undo snapshots live in ~/.config/hazzel/undo/ (200 events, 20/file, 2MB persist cap).
Tool results are size-capped (MAX_TOOL_RESULT_CHARS); history compacted to a token budget.
ui.py (~2.5k lines) and formatter.py own all terminal rendering/colors; config dir ~/.config/hazzel/.
Non-obvious reads: tool_cache.py (tool-result caching), fastpath.py (zero-LLM shortcuts).
Stale PyPI install in site-packages can shadow src/ — if imports look old, reinstall editable.
Don't
no new deps without asking no public API changes without changelog no reformatting untouched files
Regenerate with /init. Edit freely — Hazzel reads this file for context.