Documentation

Guides and references for configuring and extending Pi.

Prompt Templates

pi can create prompt templates. Ask it to build one for your workflow.

Prompt templates are Markdown snippets that expand into full prompts. Type /name in the editor to invoke a template, where name is the filename without .md.

Locations

Copied

Pi loads prompt templates from:

  • Global: ~/.pi/agent/prompts/*.md
  • Project: .pi/prompts/*.md (only after the project is trusted)
  • Packages: prompts/ directories or pi.prompts entries in package.json
  • Settings: prompts array with files or directories
  • CLI: --prompt-template <path> (repeatable)

Disable discovery with --no-prompt-templates.

Format

Copied
---
description: Review staged git changes
---
Review the staged changes (`git diff --cached`). Focus on:
- Bugs and logic errors
- Security issues
- Error handling gaps
  • The filename becomes the command name. review.md becomes /review.
  • description is optional. If missing, the first non-empty line is used.
  • argument-hint is optional. When set, the hint is displayed before the description in the autocomplete dropdown.

Argument Hints

Copied

Use argument-hint in frontmatter to show expected arguments in autocomplete. Use <angle brackets> for required arguments and [square brackets] for optional ones:

---
description: Review PRs from URLs with structured issue and code analysis
argument-hint: "<PR-URL>"
---

This renders in the autocomplete dropdown as:

→ pr   <PR-URL>       — Review PRs from URLs with structured issue and code analysis
  is   <issue>        — Analyze GitHub issues (bugs or feature requests)
  wr   [instructions] — Finish the current task end-to-end
  cl   — Audit changelog entries before release

Usage

Copied

Type / followed by the template name in the editor. Autocomplete shows available templates with descriptions.

/review                           # Expands review.md
/component Button                 # Expands with argument
/component Button "click handler" # Multiple arguments

Arguments

Copied

Templates support positional arguments, defaults, and simple slicing:

  • $1, $2, ... positional args
  • $@ or $ARGUMENTS for all args joined
  • ${1:-default} uses arg 1 when present/non-empty, otherwise default
  • ${@:N} for args from the Nth position (1-indexed)
  • ${@:N:L} for L args starting at N

Example:

---
description: Create a component
---
Create a React component named $1 with features: $@

Default values are useful for optional arguments:

Summarize the current state in ${1:-7} bullet points.

Usage: /component Button "onClick handler" "disabled support"

Loading Rules

Copied
  • Template discovery in prompts/ is non-recursive.
  • If you want templates in subdirectories, add them explicitly via prompts settings or a package manifest.