--- 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** — `0` success, `1` invalid 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`). ## 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.