Instructions, prompts and skills

Load instructions, prompts and skills from trusted roots.

Manual for v0.9.5. Stable release: v0.9.5.

Documentation · Resource discovery · Configuration

Pick a reviewed prompt source and inspect its expansion before sending:

sh
octet --prompt-template ./examples/prompts \
  --prompt local-review --debug-prompt "Review the parser without editing."

This uses the repository's prompt examples. Check the included content before it reaches a provider. The debug output can contain it too.

Repository instructions#

Global and trusted workspace AGENTS.md files are added to octet's base prompt, root to leaf. Project instructions need --workspace-trusted. Each block is labeled with its path. Ordinary repository files, tool results and external content stay data, never instructions. Relative tool paths and bash's default directory resolve from the workspace root, which may not be where you launched octet.

--no-context-files leaves context files out, and /reload recomposes instructions and resources at a safe point. To replace the base prompt and the AGENTS and context composition, set system_prompt, OCTET_SYSTEM_PROMPT or --system-prompt TEXT. That value replaces the AGENTS and context composition, but bootstrap still appends the discovered skill metadata and the file-location catalog. A bare --system-prompt means explicit empty text, not the normal default. See precedence.

Prompt templates#

Markdown and TOML templates take arguments and bounded file inclusions. Global templates live in ~/.octet/prompts/*.{md,toml}, trusted projects in .octet/prompts/*.{md,toml}. Repeatable --prompt-template FILE-OR-DIR sources win. Discovery limits.

To do this Use
List discovered templates /prompt
Expand one interactively /prompt <name> [arguments] or /<name> [arguments]
Select one at startup or in print mode octet --prompt <name> "arguments"
Show the exact expansion and template hash before sending --debug-prompt

Markdown frontmatter is Pi-compatible ($1, $@, defaults, slices). TOML templates and the variables {{prompt}}, {{workspace}}, {{selection}}, {{file:path}} and {{skill:name}} also work. Interactive {{selection}} uses the transcript selection, never the system clipboard, and is empty at startup and in print mode. argument-hint shows in autocomplete, not in the prompt. Reads and expansion are bounded, and path traversal is rejected. The template name and SHA-256 are saved in the session as provenance the model never sees. Template contract.

Skills#

A skill is a package you load on purpose. None is active by default. /skills lists them. In the TUI, /skills search, /skills show, /skills load, /skills off and /skills reload are the human commands. Examples.

The model has no skill-specific search, load or resource tool. When the composed prompt lists a skill, it gives the SKILL.md location and tells the model to use the ordinary read tool. Discovery supplies metadata and a location, not the skill body. Resolve references relative to the skill directory (the parent of SKILL.md). Supporting text is limited to references/ or templates/, the normal sandbox and path policy still applies, and read must be enabled.

Skill activation is not a durable state in the terminal frontends:

  • /skills load NAME resolves the skill and prefills /skill:NAME. Submitting that draft expands the SKILL.md body into an ordinary user message (plus optional arguments); it does not append a durable activation event. /skills off can record deactivation only for an activation already present on the branch.
  • Plain, print, and RPC runs expand explicit /skill:NAME text as ordinary prompt content; they do not gain an activation path.

An inlined body is therefore subject to ordinary history and compaction: it may be summarized away, and resume does not reconstruct a separate active-skill state from it. This is not a promise of durable skill activation.

Skill reads are bounded. Discovery caps YAML frontmatter at 32 KiB and SKILL.md at 256 KiB. A supporting text read is capped at 512 KiB and must stay under references/ or templates/. Skill contract. Where skills are found, and in what order: Skill roots. Resource discovery also covers managed-bundle admission, --skill-dir order and diagnostics.

Extension authoring#

Executable tools in any language belong at the subprocess boundary. Start with extensions, and teach new code from Extension API 0.4. The Python SDK implements the current feature-negotiated process wire. The generated api_v03 bindings and the retained canonical 0.3 example serve a separate wire. Keep exact versions and negotiation, and don't retag an old example. Extensions add tools and bounded, host-shaped integrations, not arbitrary replacement of host policy or UI. Native embedding uses the separate host protocol 1.

For the retained feature-negotiated machinery (API 0.2 and 0.4), see the legacy protocol reference. The coding product doesn't configure approval issuance or secret brokerage, so policy requests stay default-deny and secrets isn't offered. That doesn't promise that every host or frontend offers every protocol service. Discovery, trust, startup and reload rules are in resources and extensions.

Self-documentation#

octet can answer questions about itself. Its default system prompt gives the model the absolute paths of README.md, docs/, examples/ and sdk/, which sit beside the binary's assets, and asks it to read them first. The documentation index is canonical. The public manual is on the octet website: compare its displayed release version with your binary.

Where the docs live for each install type

Shell-installer layouts use share/octet/, and OCTET_PACKAGE_DIR or OCTET_DATA_DIR overrides that root. Cargo-channel layouts embed the text assets and write a versioned copy under the Cargo root's share/octet/, refreshed after a Cargo update. The finite public documentation inventory also includes linked security, licensing, extension-reference and source-text files. Native, npm and container layouts keep the listed non-text assets, and the embedded fallback stays text-only. npm normalizes Git ignore metadata filenames on installation, and the npm packaging contract records that exception. Reference files don't install or enable extensions. These are source layout contracts, not evidence of published channels.

In a source checkout, the prompt points to the checkout's README.md, docs/, examples/, sdk/, crates/ and the octet-coding-agent crate. Website deployment and package publication are verified separately, and neither is needed to read the bundled docs offline. See availability.