pi-output-styles
v0.3.4
Published
Named, swappable system-prompt styles for Oh My Pi (OMP) and Pi — live /style switcher that replaces the personality slot.
Maintainers
Readme
pi-output-styles
Named, swappable system-prompt styles for Oh My Pi (OMP) and Pi — with a live /style switcher. Unlike Claude Code's output styles (which need /clear to switch), styles here apply and switch live, mid-session.
An active style replaces everything from # Personality through the next § heading (including nested # Tone / # Reasoning). Tools, skills, Role, Engineering, Runtime, and later project/safety blocks stay. Applied every turn. Custom SYSTEM.md with no personality heading: inject before § Runtime, else before the first other §, else at the end of block 0.

Install
# Oh My Pi
omp plugin install npm:pi-output-styles
# or from source:
omp plugin install github:LoneExile/pi-output-styles
# Pi
pi install npm:pi-output-styles
# or from source:
pi install git:github.com/LoneExile/pi-output-stylesThen start a new session. Extensions do not hot-reload.
Upgrading from 0.2.x
0.2.x appended a footnote. 0.3+ replaces the personality slot. Lens styles (concise, reviewer, ste, diagrams-first, explanatory) now stand alone. Pin 0.2.1 if you need append. Uninstall first — install alone is a no-op on an existing OMP plugin:
omp plugin uninstall pi-output-styles && omp plugin install npm:pi-output-styles
pi uninstall npm:pi-output-styles && pi install npm:pi-output-stylesThen a new session.
Use
/style— show the active style and list available ones./style <name>— activate a style for this session./style <name> --save— also save it as your personal (user) default./style <name> --project— save it as the project default (committed with the repo)./style off— clear the active style for this session (overrides any saved default).noneis an alias;off --save/off --projectalso clears the saved default.- While composing
/style, a hint line below the input shows the available flags (--save/--project).
The style is applied every turn. The status line shows style: eli5 by default. /style off restores OMP’s default personality on the next turn.
Bundled styles
omp-default · omp-friendly · omp-pragmatic · concise · explanatory · teacher · reviewer · diagrams-first · ste · eli5.
omp-default / omp-friendly / omp-pragmatic are Oh My Pi's own built-in personality presets (default is the voice active when no style is selected). Useful to pin one explicitly, or as a base for Pi users (who have no native personality picker).
ste writes in ASD-STE100 Simplified Technical English. It also uses the v2.0 action-first reply shape for person-addressed replies, tasks, issues, pull request descriptions, and commit messages. The style adapts Ege Chelebi's ste-writing skill.
eli5 is Lydia Hallie's ELI5 style.
Custom styles
Drop a Markdown file in either location (filename = style name unless overridden):
- Project:
<repo>/.omp/output-styles/<name>.md - Personal:
~/.omp/agent/output-styles/<name>.md
---
name: teacher
description: Teach as you go
---
Act as a patient teacher. Explain the concept before applying it.The body becomes the personality slot. Precedence — definitions: project > user > bundled; which style is active: session /style > user default > project default.
Config
PI_OUTPUT_STYLES_HOME— override the user config base (default~/.omp/agent).- User state (written by
--save):~/.omp/agent/pi-output-styles.json(base overridable viaPI_OUTPUT_STYLES_HOME). - Project state (written by
--project, git-tracked):<repo>/.omp/pi-output-styles.json.
Hide the status indicator
The indicator is visible by default. To hide it without disabling the active output style:
- Choose the scope:
- all projects: edit
~/.omp/agent/pi-output-styles.json - current project: edit
<repo>/.omp/pi-output-styles.json
- all projects: edit
- Add
"showStatus": falseto the JSON object. Create the file if it does not exist.showStatusmust be a JSON boolean (false, not"false"); other values are ignored. - Send the next prompt or run
/style <name>to refresh the footer. A restart is not required.
A status-only user setting is valid:
{
"showStatus": false
}It can also live alongside a saved style:
{
"active": "explanatory",
"showStatus": false
}Set showStatus to true to restore the indicator. Removing it falls back to the project value, then to the visible default. The user value takes precedence over the project value, so check the user state file if a project setting appears to have no effect. Changing styles with --save or --project preserves every other key in the file, including ones this version does not recognise.
If a state file cannot be read
A state file that is not a JSON object — invalid JSON, or valid JSON such as [] or null — is ignored in full: the saved style stops applying and showStatus stops being honoured. Because that looks exactly like having saved nothing, the extension tells you instead of failing quietly:
- a warning naming the offending file is shown once per session at startup;
--save,--projectandoffrefuse to write to it rather than replacing your file with a fresh one, and report that the save failed. The session-scoped part of the command still takes effect (/style teacher --savestill switches this session toteacher;/style off --savestill turns styling off for this session) — only the persisted default is left as it was.
Fix the file — a trailing comma is the usual culprit — and the saved settings take effect again on the next prompt. A UTF-8 byte-order mark is tolerated.
Develop
bun install
bun test
bun x tsc --noEmit