Autonomous technical-documentation generator. Scans a codebase, extracts symbols, structures a doc skeleton, drafts sections, verifies consistency, and publishes Markdown — offline by default, smarter with a BYO-LLM CLI.
Overview
This pack provides an operational autonomous agent for generating and maintaining the technical documentation of a software project.
It includes an OODA loop dedicated to the docgen domain, versioned prompts,
configuration templates and a set of installation, test
and execution scripts.
The pack is designed to be self-hosted (BYO-LLM): no API key is included,
no third-party dependency (Python stdlib only). The LLM adapter automatically
detects your own CLI (claude-code, kimi, codex; override via
PACK_LLM) and calls it as a subprocess. Without an LLM, the agent runs in
deterministic mode and produces a basic documentation structure.
Target audience
- Teams that want up-to-date technical documentation without manual effort.
- Solo developers who want a README/API doc generated on every commit.
- LLM operators who want an autonomous, auditable documentation pipeline.
Architecture
┌─────────────────────────────────────────────────────────────────────┐
│ Source code / repo / files │
└──────────────────────────────────┬──────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────┐
│ IDLE → DISCOVER → EXTRACT → STRUCTURE → DRAFT → VERIFY → PUBLISH │
│ OODA State Machine │
└──────────────────────────────────┬──────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────┐
│ Named prompts → Deterministic handler → BYO-LLM Adapter │
│ scripts/test_prompt.py scripts/run_agent.py │
└──────────────────────────────────┬──────────────────────────────────┘
▼
┌─────────────────────────────────────────────────────────────────────┐
│ SQLite queue → templates/*.yaml → docs/output/*.md │
└─────────────────────────────────────────────────────────────────────┘
Pack contents
| File | Role |
|---|---|
README.md |
This file — overview and quick-start |
SOUL.md |
Mission, values and docgen-specific OODA states |
PROMPTS.md |
6 named, versioned system prompts |
CHECKLIST.md |
30+ operational steps with commands |
SPEC.md |
Technical spec, configurable parameters, interfaces |
CUSTOMIZE.md |
5-min guide: where to plug in your own sources/rules |
OPERATING_COST_ESTIMATE.md |
Provider-agnostic LLM cost estimate |
CHANGELOG.md |
Version history |
agent-docgen-v1.json |
Pack manifest with stats and files |
agent.py |
Runnable agent — SQLite queue, retry, dead-letter, OODA |
llm_adapter.py |
BYO-LLM adapter (claude/kimi/codex) without an API key |
install.sh |
One-shot Debian installer: deps + venv + systemd service |
agent-docgen-v1.service |
Reference systemd unit |
scripts/install.sh |
Automated installation script (copy + systemd) |
scripts/config.yaml |
Default runtime configuration |
scripts/test_prompt.py |
Named-prompt tester |
scripts/run_agent.py |
Convenience runner that delegates to agent.py via the venv |
templates/source_schema.yaml |
Source codebase schema template |
templates/doc_outline.yaml |
Documentation outline template |
templates/verification_policy.yaml |
Verification policy template |
Quick installation
cd /opt/agents/agent-docgen-v1
bash install.sh
The installer checks for Python 3.10+, creates a venv, installs the dependencies, detects a local LLM provider and configures a systemd unit.
Immediate test
# Test the main prompt
python3 scripts/test_prompt.py --prompt codebase_scanner --input templates/source_schema.yaml
# Run the agent in dry-run mode
python3 scripts/run_agent.py --config scripts/config.yaml --dry-run
# Offline test suite
bash smoke_test.sh
Customization
- Copy
scripts/config.yamltoconfig.local.yaml. - Adapt the templates in
templates/. - Plug your own code sources into
run_agent.pyor viaagent.py enqueue.
See CUSTOMIZE.md for details.
Costs and limits
This pack favors deterministic logic for critical decisions.
The LLM is used for semantic extraction, drafting and verification.
See OPERATING_COST_ESTIMATE.md for the operating cost estimate.
License
Personal use per purchase. Resale prohibited.