docs(dev): document the self-contained per-app tools convention

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Signed-off-by: librelad <librelad@digitalangels.vip>
This commit is contained in:
librelad 2026-05-25 22:33:58 +01:00
parent 49361c3874
commit 2d5fdd5326

View File

@ -170,6 +170,15 @@ is a dev-only escape hatch.
## Conventions
- **Versioning:** semver in `VERSION`. Bump before building; `latest.json` carries it.
- **App tools are self-contained** (preferred): put the declaration in
`containers/<app>/tools/<app>.tools.json` and each function in
`containers/<app>/tools/<app>_<tool_id>.sh` (function `app<App><PascalToolId>`).
Both are picked up automatically — the container scan live-sources the `.sh`, and
`webui_tools.sh` auto-merges the `.tools.json`. No central edits, no array regen →
the app is a true drop-in. (The legacy central style — an entry in the
`webui_tools.sh` heredoc + the function under `scripts/app/containers/<app>/`
still works; both coexist, so apps migrate one at a time. Only *declared tools*
move; shared logic helpers like `<app>_auth.sh` stay in `scripts/app/`.)
- **New runtime script?** Add it under `scripts/<area>/…` and run
`scripts/source/files/generate_arrays.sh run` so it's sourced (build/standalone
tooling under `scripts/release` and `scripts/system` is intentionally excluded).