Output of scripts/sync-plugin-content.sh --all against this round's .apm/ source edits. No file here is hand-edited. Carries agent-author's scaffolder and its contract doc into the flat mirror. No compiled manifest changed: nothing in this round touched apm.yml, so apm pack and sync-marketplace-mirror.sh both produced byte-identical output. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X7GvKuJfy2WrdBmUttV4DT
3.0 KiB
source_keys
| source_keys |
|---|
Scripts Reference
Conventions for scripts/new-agent.sh and any future scripts in this skill.
Contract
All scripts in this skill must follow these rules:
- No interactive prompts — agents run non-interactive; blocking on TTY input hangs indefinitely. Accept all input via positional arguments, flags, or environment variables.
- Structured output — file paths and status messages to stderr; nothing to stdout unless a downstream tool needs to consume it.
- Idempotent — "create if not exists" per file. The scaffold script skips any file that already exists; agents may safely re-run it.
- Meaningful exit codes —
0success,1invalid arguments or precondition failure. Document in--help. - Self-contained — no external package installs at runtime. The script uses only bash builtins and POSIX tools (
sed,mkdir,cat). - No restated field rosters — no script output, in
--helpor in next-steps guidance, enumerates permitted, forbidden, or required frontmatter fields. Point at theapm-agent-allowlistsection ofagent-audit'sreferences/field-inventory.md, whichagent-audit'svalidate.shreads from there as data. A roster copied into script output goes stale one step further out than the list itself: the next-steps hint(name, description, model, body only)kept printing after ADR-0016's 2026-08-14 amendment addeddisallowedToolsto the permitted set.tests/new-agent.batsenforces this for the plugin/APM branch — naming some allowlisted fields but not all is a failure.
Template variables
The scaffold script uses sed "s/AGENT_NAME/$AGENT_NAME/g" to substitute the agent name into templates. Template files must use AGENT_NAME (all caps, no delimiters) as the substitution token.
Do not add additional substitution tokens unless you update both the template files and the script in the same edit pass.
File placement
The script creates files at paths determined by scope detection (plugin/APM / project / user). Scope is resolved by walking up from the root directory: a type:-bearing apm.yml at or above the root marks the package root (plugin/APM scope, single file); an apm.yml without a type: field is a marketplace-only manifest and is skipped, the walk continues upward. If no such apm.yml is found, the root resolving to exactly $HOME is user scope; anything else is project scope. If scope detection logic changes, update the new-agent.sh usage comment and SKILL.md Step 1 scope detection description in the same pass.
Error messages
On failure, state: what went wrong, what was expected, what to try. Example:
Error: agent-name must use lowercase letters, numbers, and hyphens only.
No leading, trailing, or consecutive hyphens.
Received: 'My_Agent'
Vague errors leave agents unable to self-correct.
--help output
Keep --help concise — it may enter the agent's context window. Include: usage line, argument descriptions with scope detection table, exit codes. Omit prose explanations.