Lathe
Initialize an application
Prefer explicit flags so agent runs never wait for prompts:
lathe init ./my-app \
--language node \
--app-name "My App" \
--cli-name my-appctl \
--go-module example.com/my-app \
--license mit \
--license-holder "My App contributors" \
--json
Supported languages are node, go, python, and rust.
The default template is the selected language's latest main. Override it with --template '<git-url>#<ref>'; the optional ref may be a branch or tag.
After initialization, inspect the JSON result, enter the new repository, and read its AGENTS.md. The repository intentionally has no commit, staged files, or Git remote.
Application development loop
For every API-facing behavior change:
- Update the application implementation.
- Update
openapi/openapi.yamlin the same change. - Run the check command returned by
lathe init. - Run
<cli-name> __lathe verify --jsonbefore broader command acceptance. - When a commit is requested, include the regenerated
internal/generated/,skills/<cli-name>/, andcmd/<cli-name>/cli.yamloutputs with the feature.
Do not hand-edit generated files. Use the generated CLI as the main acceptance surface. Before guessing commands or flags, run <cli-name> search "<intent>" --json, then <cli-name> commands show <path...> --json.