There is no build step, no test suite, and no linter configured.
## Architecture
The base tool is a zero-dependency Python CLI (stdlib only). The `--ai` flag requires optional pip packages installed in a venv. The entry point `luminos.py` defines `scan()` which orchestrates all analysis modules and returns a report dict, and `main()` which handles argument parsing and output routing.
Each analysis capability lives in its own module under `luminos_lib/`:
| Module | Purpose | External commands used |
|---|---|---|
| `tree.py` | Recursive directory tree with file sizes | None (uses `os`) |
Check current status with `python3 luminos.py --install-extras`.
Always activate the venv before using `--ai`:
```bash
source ~/luminos-env/bin/activate
python3 luminos.py --ai <target_directory>
```
## Key Constraints
- **Base tool: no pip dependencies.** The base scan (tree, file types, code, disk, recency, report, watch) uses only stdlib and GNU coreutils. It must always work on a bare Python 3 install.
- **AI deps are gated.** The `anthropic`, `tree-sitter`, and `python-magic` packages are imported lazily, only when `--ai` is used. Missing packages produce a clear error with the install command.
- **Subprocess for OS tools.** Line counting, file detection, disk usage, and recency all shell out to GNU coreutils. Do not reimplement these in pure Python.
- **AI is opt-in.** The `--ai` flag gates all Claude API calls. Without it (or without `ANTHROPIC_API_KEY`), the tool must produce a complete report with no errors.
- **Graceful degradation everywhere.** Permission denied, subprocess timeouts, missing API key — all handled without crashing.