bundlewrap/bundles/AGENTS.template.md
CroneKorkN 04558a9189
docs: scaffold agent-friendly entry points (Phase 1)
introduces a balanced set of agent + human docs:

- root AGENTS.md (with CLAUDE.md symlink) — 5-rule quickstart,
  layout map, mental model, use-case keyed example pointers.
- docs/agents/conventions.md — vault/demagify, eval-loader
  constraints, group inheritance, naming, do-not-touch list,
  suspension idioms, working-style notes.
- docs/agents/commands.md — repo-specific deltas to the fork's
  bw runbook (apt-key offline-verify, *.py_ suspended-node
  visibility, vault-echo rule).
- per-area AGENTS.md for bundles/, nodes/, groups/, libs/,
  hooks/, data/, items/, bin/ — mechanism-focused, no enumeration.
- bundles/AGENTS.template.md — per-bundle doc template with
  optional `## Writes into` section for cross-namespace reactors.

bundlewrap-language reference (item types, dep keywords, reactors,
runbook, three-tier safety envelope) is not duplicated here; we
link out to the fork's AGENTS.md instead.

bw test still green. all internal links resolve. Phase 0 invariants
preserved (libs/hooks docstrings, bin/* # purpose: headers).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-10 15:44:45 +02:00

61 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# <bundle-name>
<!--
Per-bundle doc template. Copy to `bundles/<name>/AGENTS.md` and fill in.
For a brand-new bundle without consumers yet, leave `Depends on` and
`Produces` empty or marked TBD; fill them in after the first verify run.
Skip the `## Gotchas` section if there are no real gotchas — empty
"Gotchas: none" sections are noise.
Skip the `## Writes into` section unless this bundle's `defaults` or
reactors write into other bundles' metadata namespaces. Most don't.
-->
<13 sentences: what this bundle does and when you'd use it.>
## Usage
<How to apply: which group(s) typically include it, or how a node opts
in. Minimal example of node metadata if any keys are required.>
## Metadata
Keys read from `node.metadata`:
```python
{
'<bundle>': {
'key': 'value', # str, required — short note
'flag': True, # bool, default True
'list': [], # list[str], default [] — short note
'nested': {
'subkey': 0, # int, default 0
},
},
}
```
## Produces
<Items created: files, services, packages, users, etc. One line each.
Skip if trivially obvious from items.py.>
## Depends on
<Other bundles required, or "none". Note ordering quirks if any.>
## Writes into
<!-- Optional. Most bundles don't write cross-namespace; skip the
section if this bundle doesn't either. List the foreign metadata
namespaces this bundle's `defaults` or reactors populate (e.g.
`apt.packages`, `archive.paths`). Cross-namespace writes are the
single most surprising blast-radius source in this repo — call them
out explicitly. -->
## Gotchas
<Non-obvious behavior, manual one-time steps, known pitfalls. Omit
the section if there are none.>