# Bezalel's Devkit — Shared Tools for the Wizard Fleet

This directory contains reusable CLI tools and Python modules for CI, testing, deployment, observability, and Gitea automation. Any wizard can invoke them via `python -m devkit.<tool>`.

## Tools

### `gitea_client` — Gitea API Client
List issues/PRs, post comments, create PRs, update issues.

```bash
python -m devkit.gitea_client issues --state open --limit 20
python -m devkit.gitea_client create-comment --number 142 --body "Update from Bezalel"
python -m devkit.gitea_client prs --state open
```

### `health` — Fleet Health Monitor
Checks system load, disk, memory, running processes, and key package versions.

```bash
python -m devkit.health --threshold-load 1.0 --threshold-disk 90.0 --fail-on-critical
```

### `notebook_runner` — Notebook Execution Wrapper
Parameterizes and executes Jupyter notebooks via Papermill with structured JSON reporting.

```bash
python -m devkit.notebook_runner task.ipynb output.ipynb -p threshold=1.0 -p hostname=forge
```

### `smoke_test` — Fast Smoke Test Runner
Runs core import checks, CLI entrypoint tests, and one bare green-path E2E.

```bash
python -m devkit.smoke_test --verbose
```

### `secret_scan` — Secret Leak Scanner
Scans the repo for API keys, tokens, and private keys.

```bash
python -m devkit.secret_scan --path . --fail-on-find
```

### `wizard_env` — Environment Validator
Checks that a wizard environment has all required binaries, env vars, Python packages, and Hermes config.

```bash
python -m devkit.wizard_env --json --fail-on-incomplete
```

## Philosophy

- **CLI-first** — Every tool is runnable as `python -m devkit.<tool>`
- **JSON output** — Easy to parse from other agents and CI pipelines
- **Zero dependencies beyond stdlib** where possible; optional heavy deps are runtime-checked
- **Fail-fast** — Exit codes are meaningful for CI gating
