UNPKG

@earendil-works/pi-coding-agent

Version:

Coding agent CLI with read, bash, edit, write tools and session management

60 lines (38 loc) • 2.85 kB
# Prompt Templates Prompt templates turn Markdown files into reusable `/` commands. Use one when you want to reuse the same prompt without adding executable behavior or a larger set of supporting instructions. A template can accept arguments and appear in command completion. Pi can load templates from personal configuration, project configuration, an explicit path, or a Pi package. Project configuration loads only after project trust is granted. ## Create a template Create `~/.pi/agent/prompts/review.md`: ```markdown --- description: Review staged git changes argument-hint: "[focus]" --- Review the staged changes. Focus on ${1:-correctness, security, and error handling}. ``` The filename becomes the command name, so this template is available as `/review`. The `description` appears in command completion. If it is omitted, Pi uses the first non-empty line. `argument-hint` is optional. Use `<angle brackets>` for required arguments and `[square brackets]` for optional arguments. Run `/reload` after adding or changing a template in an active session. <a id="invoke-a-template"></a> ## Use a template Type the template command in the editor: ```text /review /review concurrency ``` Pi expands the template before the resulting text enters the agent. Extensions receive the raw input first through the `input` event unless an extension command with the same name handles it. Templates support these substitutions: | Syntax | Result | |---|---| | `$1`, `$2`, … | One positional argument | | `$@` or `$ARGUMENTS` | All arguments joined with spaces | | `${1:-default}` | First argument, or a default value | | `${@:-default}` | All arguments, or a default value | | `${@:N}` | Arguments starting at position `N` | | `${@:N:L}` | `L` arguments starting at position `N` | Arguments follow shell-like quoting, so `/review "API compatibility"` supplies one argument containing a space. A quote only starts quoting at the beginning of an argument, so apostrophes inside words such as `doesn't` stay as text, and a quote with no closing match is kept as text. Inside a quoted argument, a backslash before the same quote character keeps it as text, so `/review "the \"fast\" path"` supplies `the "fast" path`; other backslashes are kept as typed. <a id="choose-where-it-loads"></a> ## Add it to Pi Place the template in your user or project prompt directory. Conventional prompt directories load direct `.md` children only. Settings and packages can select nested Markdown files; a package manifest can narrow discovery with explicit paths and globs. See [Settings](settings.md#resources) and [Pi Packages](packages.md) for these options. Project templates become commands in the editor after trust is granted. Review their content before trusting an unfamiliar project. See [Security](security.md#understand-project-trust).