Reproducible Pi configuration. Clone, install, and run anywhere with the same extensions, skills, and rules.
# Clone into ~/.pi/agent/ or any project
git clone git@github.com:docg1701/pi-dev-config.git ~/dev/pi-dev-config
# Install extensions
pi install npm:pi-subagents
pi install npm:pi-annotate
pi install npm:pi-interview
pi install npm:pi-prompt-template-model
pi install npm:pi-subagents
pi install npm:pi-agent-browser-native
pi install npm:pi-extension-manager
pi install npm:pi-mcp-adapter
pi install npm:pi-mermaid
pi install npm:pi-smart-fetch
pi install npm:pi-glance
pi install npm:@eko24ive/pi-ask
pi install npm:@leonardorick/pi-web-search
pi install npm:pi-ollama-cloud
pi install npm:pi-alert
pi install npm:pi-rtk-optimizer
# Install skills
npx skills add https://github.com/upstash/context7 --skill find-docs
npx skills add https://github.com/199-biotechnologies/claude-deep-research-skill --skill deep-research
npx skills add https://github.com/vercel-labs/skills --skill find-skills
npx skills add https://github.com/streamlit/agent-skills --skill developing-with-streamlit
npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill ansible-automation
npx skills add https://github.com/coreyhaines31/marketingskills --skill product-marketing
npx skills add https://github.com/obra/superpowers --skill systematic-debugging
# Copy APPEND_SYSTEM.md to extend the agent's system prompt
cp ~/dev/pi-dev-config/APPEND_SYSTEM.md ~/.pi/agent/APPEND_SYSTEM.md
# Copy settings
cp ~/dev/pi-dev-config/settings.json ~/.pi/agent/settings.json| Name | Description | Install |
|---|---|---|
find-docs |
Library docs via Context7 CLI. Prefer over web search. | npx skills add https://github.com/upstash/context7 --skill find-docs |
deep-research |
8-phase citation-backed research. Quick/standard/deep/ultradeep. | npx skills add https://github.com/199-biotechnologies/claude-deep-research-skill --skill deep-research |
find-skills |
Discover and install skills from the open skills ecosystem. | npx skills add https://github.com/vercel-labs/skills --skill find-skills |
developing-with-streamlit |
Routing skill oficial do Streamlit: criação, edição, debug, estilização, performance, temas, deploy e componentes customizados. | npx skills add https://github.com/streamlit/agent-skills --skill developing-with-streamlit |
ansible-automation |
Infrastructure automation with Ansible playbooks, roles, and inventory. Deploy apps, patch/configure servers. | npx skills add https://github.com/aj-geddes/useful-ai-prompts --skill ansible-automation |
product-marketing |
Create/update product marketing context document (.agents/product-marketing.md). Foundation for all other marketing skills. |
npx skills add https://github.com/coreyhaines31/marketingskills --skill product-marketing |
systematic-debugging |
4-phase root cause debugging. Find root cause before attempting fixes. Includes root-cause-tracing, defense-in-depth, condition-based-waiting. | npx skills add https://github.com/obra/superpowers --skill systematic-debugging |
ask-user |
Reinforces when to use ask_user for structured clarification instead of guessing. |
Bundled with @eko24ive/pi-ask |
All from coreyhaines31/marketingskills. Install the full suite with npx skills add https://github.com/coreyhaines31/marketingskills --skill product-marketing.
| Name | Description |
|---|---|
product-marketing |
Create .agents/product-marketing.md for foundational positioning and messaging context. Use first before other marketing skills. |
marketing-ideas |
139 proven marketing ideas for SaaS. Inspiration and growth tactics. |
content-strategy |
Plan content strategy, topic clusters, editorial calendar, and content pillars. |
copywriting |
Write or improve marketing copy for homepages, landing pages, pricing, and product pages. |
copy-editing |
Edit, review, and tighten existing marketing copy. |
seo-audit |
Technical and on-page SEO audits. diagnose ranking issues. |
programmatic-seo |
Create SEO-driven pages at scale using templates and data. |
ai-seo |
Optimize content for AI search engines and LLM citations. |
schema |
Add, fix, or optimize schema markup and structured data. |
site-architecture |
Plan and restructure page hierarchy, navigation, URL structure, and internal linking. |
analytics |
Set up, improve, or audit analytics tracking and measurement (GA4, GTM, Mixpanel, Segment). |
ab-testing |
Plan, design, and implement A/B tests and growth experimentation programs. |
cro |
Conversion rate optimization for landing pages, forms, and marketing pages. |
signup |
Optimize signup, registration, and trial activation flows. |
onboarding |
Optimize post-signup onboarding, user activation, and time-to-value. |
paywalls |
Create and optimize in-app paywalls, upgrade screens, and upsell modals. |
churn-prevention |
Build cancellation flows, save offers, dunning, and retention strategies. |
pricing |
Pricing decisions, packaging, and monetization strategy. |
ads |
Paid advertising campaigns (Google Ads, Meta, LinkedIn, Twitter/X). |
ad-creative |
Generate and iterate ad copy, headlines, and creative variations at scale. |
social |
Social media content creation, scheduling, and optimization (LinkedIn, Twitter/X, Instagram, TikTok). |
video |
Create and produce video content with AI tools and programmatic frameworks. |
image |
Create, generate, edit, or optimize marketing images and brand assets. |
emails |
Email sequences, drip campaigns, lifecycle email programs, and nurture flows. |
cold-email |
B2B cold emails and follow-up sequences that get replies. |
sms |
SMS/MMS marketing flows, abandoned cart texts, and promotional sends. |
popups |
Popups, modals, overlays, slide-ins, and banners for conversion. |
lead-magnets |
Create and optimize lead magnets for email capture and lead generation. |
free-tools |
Plan and build free tools for lead generation, SEO value, and brand awareness. |
launch |
Product launch, feature announcement, and go-to-market strategy. |
directory-submissions |
Submit product to startup/SaaS/AI directories for backlinks and discovery. |
referrals |
Create and optimize referral, affiliate, and word-of-mouth programs. |
co-marketing |
Find co-marketing partners and plan joint campaigns. |
community-marketing |
Build and leverage online communities for product growth and brand loyalty. |
competitor-profiling |
Research, profile, and analyze competitors from their URLs. |
competitors |
Create competitor comparison and alternative pages for SEO and sales enablement. |
prospecting |
Find, qualify, and build lists of B2B prospects. |
sales-enablement |
Create sales collateral, pitch decks, one-pagers, objection handling, and demo scripts. |
revops |
Revenue operations, lead lifecycle management, and marketing-to-sales handoff. |
customer-research |
Conduct, analyze, and synthesize customer research, interviews, and surveys. |
aso |
Audit and optimize App Store and Google Play listings. |
marketing-psychology |
Apply psychological principles and behavioral science to marketing. |
launch |
Product launch, feature announcement, and release strategy. |
| Name | Description | Install |
|---|---|---|
pi-subagents |
Delegate tasks to subagents with chains, parallel execution, TUI clarification, and async support. | pi install npm:pi-subagents |
- Anthropic Skills — Document processing, web dev.
- Pi Skills — Web search, browser automation, Google APIs, transcription.
Prerequisite for pi-rtk-optimizer: Install the rtk CLI first:
cargo install --git https://github.com/rtk-ai/rtk --locked
| Name | Description | Install |
|---|---|---|
pi-subagents |
Delegate tasks to subagents with chains, parallel execution, and async support. | pi install npm:pi-subagents |
pi-prompt-template-model |
Prompt templates with model/skill frontmatter and slash commands. | pi install npm:pi-prompt-template-model |
pi-agent-browser-native |
agent-browser as a native tool. Snapshots, screenshots, sessions. |
pi install npm:pi-agent-browser-native |
pi-extension-manager |
/extensions command for local and community package management. Includes auto-update checker (off by default — enable with /extensions auto-update daily). |
pi install npm:pi-extension-manager |
pi-mcp-adapter |
Token-efficient MCP proxy. Lazy servers, cached metadata. | pi install npm:pi-mcp-adapter |
pi-mermaid |
Mermaid diagrams as ASCII art in TUI. | pi install npm:pi-mermaid |
pi-smart-fetch |
Smarter web_fetch with TLS fingerprinting and Defuddle extraction. |
pi install npm:pi-smart-fetch |
pi-glance |
Calm input surface with rounded multiline editor and inline status (model · context · tokens · cost · git). 10 built-in themes. | pi install npm:pi-glance |
@eko24ive/pi-ask |
Ask tool that cares about your answers. Structured questions, single/multi/preview mode, option notes, elaboration flow, and native @ file references. |
pi install npm:@eko24ive/pi-ask |
@leonardorick/pi-web-search |
Real DuckDuckGo web search as a native web_search tool. Essential companion to pi-smart-fetch for retrieving current information beyond the model's knowledge cutoff. |
pi install npm:@leonardorick/pi-web-search |
pi-ollama-cloud |
Ollama Cloud provider with dynamic model discovery, persistent cache, and built-in ollama_web_search/ollama_web_fetch tools. No local Ollama server required. |
pi install npm:pi-ollama-cloud |
pi-alert |
System notification when the agent finishes its turn. Terminal-native (Ghostty, iTerm2, WezTerm, Kitty, rxvt-unicode) with OS fallback (osascript, notify-send, PowerShell balloon, terminal bell). Shows activity summary with elapsed time. |
pi install npm:pi-alert |
pi-rtk-optimizer |
Token-optimized command rewriting and output compaction. Rewrites bash commands to rtk equivalents, compacts noisy tool output (ANSI stripping, test/build aggregation, git/grep grouping, smart truncation). Requires the rtk CLI. |
pi install npm:pi-rtk-optimizer |
pi-rtk-optimizer automatically rewrites bash commands through the rtk CLI proxy and compacts tool output to save context tokens.
# 1. Install the rtk CLI (Rust)
cargo install --git https://github.com/rtk-ai/rtk --locked
# 2. Install the pi extension
pi install npm:pi-rtk-optimizer
# 3. Copy the RTK exclusion config (prevents known bugs with ls, grep, rg rewrites)
mkdir -p ~/.config/rtk
cp ~/dev/pi-dev-config/rtk/config.toml ~/.config/rtk/config.toml
# 4. Reload pi
# /reload| Command | Description |
|---|---|
/rtk |
Open interactive settings modal |
/rtk show |
Display current configuration and runtime status |
/rtk verify |
Check if rtk binary is available to pi |
/rtk stats |
Show output compaction metrics for current session |
/rtk reset |
Reset all settings to defaults |
Settings are stored at ~/.pi/agent/extensions/pi-rtk-optimizer/config.json. Defaults:
{
"enabled": true,
"mode": "rewrite",
"guardWhenRtkMissing": true,
"showRewriteNotifications": true,
"outputCompaction": {
"enabled": true,
"truncate": { "enabled": true, "maxChars": 12000 },
"aggregateTestOutput": true,
"filterBuildOutput": true,
"compactGitOutput": true,
"aggregateLinterOutput": true,
"groupSearchOutput": true
}
}Use /rtk in the pi TUI to change settings interactively.
Problema: Bug conhecido do rtk (issue #1418) — rtk ls sempre retorna (empty) independente do conteúdo do diretório. Quando o pi-rtk-optimizer reescreve ls → rtk ls, o modelo recebe saída vazia e conclui que o diretório está vazio.
Solução: Excluir ls da reescrita automática via configuração do rtk:
# ~/.config/rtk/config.toml
[hooks]
exclude_commands = ["ls"]Isso faz rtk rewrite "ls ..." retornar exit code 1, e o pi-rtk-optimizer mantém o comando original sem reescrever. O git status e demais comandos continuam otimizados normalmente.
Alternativas:
- Mudar para modo
suggest(/rtk→mode: suggest) — só notifica, não reescreve - Usar
rtk proxy lsem vez dertk lspara bypass da compactação - Prefixar com
RTK_DISABLED=1para bypass pontual
Problema: Bug do rtk v0.38.0 — rtk grep mostra o número da linha e coluna mas omite o texto da linha após os :. Exemplo:
# grep nativo:
4:class TestSomething:
# rtk grep (quebrado):
4:0:
Sem o conteúdo da linha, o modelo perde contexto essencial (nomes de classes, funções, valores).
Solução: Excluir grep e rg junto com ls no exclude_commands do RTK:
# ~/.config/rtk/config.toml
[hooks]
exclude_commands = ["ls", "grep", "rg"]O arquivo rtk/config.toml neste repositório já contém essa configuração pronta para copiar.
| Name | Description | Install |
|---|---|---|
@victor-software-house/pi-curated-themes |
65 curated dark terminal themes adapted from iTerm2-Color-Schemes to pi's 51-token model. Semantic variants with guaranteed hue separation. | pi install npm:@victor-software-house/pi-curated-themes |
Select a theme in /settings, or set it in ~/.pi/agent/settings.json:
{
"theme": "catppuccin-mocha"
}Available themes include: catppuccin-mocha, dracula, gruvbox-dark, kanagawa-wave, everforest-dark-hard, lovelace, mellow, vesper, and 57 others. See the full curated list.
This repo includes four pre-generated vibe themes:
| Theme | File | Phrases | Sabor |
|---|---|---|---|
startrek |
vibes/startrek.txt |
99 | Engaging warp drive, scanning for lifeforms… |
klingon |
vibes/klingon.txt |
26 | Qapla'! bortaS bIr jablu'DI'… (com tradução) |
standup |
vibes/standup.txt |
32 | Testing the mic… tough crowd today… |
tiozao |
vibes/tiozao.txt |
43 | Aperta o play Juvenal… é pavê ou pacumê… |
bbs |
vibes/bbs.txt |
52 | NO CARRIER… l33t skillz… RTFM… |
To switch themes:
/vibe klingon
/vibe standup
/vibe tiozao
When active, the "Working…" loading message is replaced with themed phrases like "Engaging warp drive…", "Scanning for lifeforms…", or "Reversing polarity…".
The settings.json is pre-configured with vibes:
{
"workingVibe": "startrek",
"workingVibeMode": "file",
"workingVibeModel": "deepseek-v4-flash"
}After copying settings.json to ~/.pi/agent/, reload pi (/reload). To verify:
/vibe
Should show: Vibe: startrek | Mode: file | Model: ollama-cloud/deepseek-v4-flash | File: 99 vibes
| Mode | How it works | Latency | Cost |
|---|---|---|---|
file |
Reads from vibes/startrek.txt (99 pre-generated phrases) |
Instant | Zero |
generate |
Calls the LLM on-demand for each message | ~1-3s | Per API call |
This repo uses file mode — vibes are loaded once at startup and cycled through with seeded shuffle, avoiding repetition.
The /vibe generate "star trek" command (with spaces) fails due to whitespace-split argument parsing in the extension. Single-word themes like startrek avoid this. Workarounds:
- Use single-word slugs: Rename the theme to a single word (e.g.
startrekinstead ofstar trek), then/vibe generate startrek 200works normally. - Manual file: Write vibe phrases to
~/.pi/agent/vibes/<theme-slug>.txt(one per line, ending in...), then switch to file mode. - Generate from templates: Use
/vibe generate <theme> [count](without"characters in the theme) to produce the file, then rename it to match your multi-word theme slug.
This repo includes a pre-generated vibes/startrek.txt so you don't need to work around the bug.
/vibe klingon # Qapla'! — Klingon with translations
/vibe standup # Tough crowd today…
/vibe tiozao # Aperta o play, Juvenal…
/vibe bbs # NO CARRIER…
/vibe startrek # Back to Starfleet
/vibe off # Disable vibes
All four themes use file mode — instant, zero cost, no API calls.
Pi looks for a single file at ~/.pi/agent/settings.json. This repository provides a pre-configured settings.json using the Ollama Cloud provider.
cp ~/dev/pi-dev-config/settings.json ~/.pi/agent/settings.jsonAfter copying, reload pi (/reload).
Important: The destination file must always be named
settings.json. Pi does not read any other filename directly.
| Subagent | Model | Thinking |
|---|---|---|
| scout | deepseek-v4-flash ⚡ |
xhigh |
| planner | deepseek-v4-pro |
xhigh |
| worker | deepseek-v4-pro |
xhigh |
| reviewer | kimi-k2.6 |
high |
| oracle | deepseek-v4-pro |
xhigh |
| delegate | deepseek-v4-pro |
xhigh |
| context-builder | deepseek-v4-pro |
xhigh |
| researcher | deepseek-v4-pro |
xhigh |
Thinking rule:
deepseekmodels →xhigh;kimimodels →high.
pi-ollama-cloud registers Ollama Cloud as a model provider with dynamically fetched models and built-in web search/fetch tools.
Setup:
# 1. Get an API key at ollama.com and set it
export OLLAMA_API_KEY="your-ollama-cloud-api-key"
# Or add it to ~/.pi/agent/auth.json:
# { "ollama-cloud": { "type": "api_key", "key": "your-key" } }
# 2. Fetch the full model list (run after install and whenever models change)
/ollama-cloud-refreshOn first launch (before /ollama-cloud-refresh), a small set of fallback models is used. After refresh, all tool-capable Ollama Cloud models become available under the ollama-cloud provider — switch with /model or Ctrl+L.
Models are cached at ~/.pi/agent/cache/ollama-cloud-models.json (never expires; refresh manually).
Tools added:
| Tool | Description |
|---|---|
ollama_web_search |
Web search via Ollama Cloud's search API |
ollama_web_fetch |
Web page fetch and extraction via Ollama Cloud |
Both use the same API key configured for the provider — no local Ollama server needed. These coexist with web_search (DuckDuckGo via pi-web-search) and web_fetch (via pi-smart-fetch).
Recomendação: Dê
/ollama-webtools offpara desligar oollama_web_searche oollama_web_fetch. Eles são inferiores aoweb_searchdo DuckDuckGo (@leonardorick/pi-web-search) e aoweb_fetchcom TLS fingerprinting (pi-smart-fetch) — o Ollama tende a preferir as próprias tools quando estão disponíveis, mesmo que os resultados sejam piores. Com/ollama-webtools off, o modelo usa automaticamente as tools superiores.
pi-alert sends a system notification when the agent finishes its turn. Notifications fire automatically after every prompt — no configuration needed.
Notification body shows an activity summary with elapsed time, prioritizing the most useful signal from the completed run:
- Updated files
- Other tool calls
- Read files
- Generic completion fallback
Title uses the project root directory name (e.g. pi — pi-dev-config).
Terminal-native notifications when running in a supported terminal:
| Terminal | Protocol |
|---|---|
| Ghostty | OSC 777 |
| iTerm2 | OSC 9 |
| WezTerm | OSC 777 |
| Kitty | OSC 99 |
| rxvt-unicode | OSC 777 |
| tmux | Passthrough to outer terminal |
When no terminal-native transport is available, pi-alert falls back to the OS:
| OS | Fallback |
|---|---|
| macOS | osascript with native notification + Glass sound |
| Linux | notify-send (install libnotify-bin if missing) |
| Windows | PowerShell NotifyIcon balloon notification |
| Final resort | Terminal bell (BEL) |
Configuração do terminal Ghostty para desenvolvimento com pi.
| Arquivo | Descrição |
|---|---|
ghostty/config.ghostty |
Tema GitHub Dark, JetBrains Mono 12px, cursor barra piscante, padding 8x4, shell integration |
ghostty/SSH_NERD_FONT.md |
Guia para ícones Nerd Font funcionarem via SSH (Ghostty → VPS) |
Para o status line mostrar ícones corretamente ao conectar em VPS via SSH:
- Local — a config já inclui
ssh-envnoshell-integration-features - VPS — adicionar
TERM_PROGRAM TERM_PROGRAM_VERSIONnoAcceptEnvdo sshd (verghostty/SSH_NERD_FONT.md)
cp ~/dev/pi-dev-config/ghostty/config.ghostty ~/.config/ghostty/config.ghosttyReinicie o Ghostty completamente após copiar.
Pi loads two kinds of instruction files at startup:
| File | Scope | Purpose |
|---|---|---|
APPEND_SYSTEM.md |
Global (~/.pi/agent/) |
Extends the system prompt — behavioral rules and conventions that apply to every agent session (code style, testing discipline, logging, etc.). Appended without replacing the native prompt. |
AGENTS.md |
Per-project | Project-level context — stack, conventions, build commands, and local rules. Pi concatenates all AGENTS.md found from cwd up through parent directories plus ~/.pi/agent/. |
This repo ships a reusable APPEND_SYSTEM.md with language-agnostic coding rules. Copy it once to your global config. For project-specific instructions, create AGENTS.md at the project root — no example is included here because it should be customized per project (tech stack, build commands, team conventions, etc.).
See docs/research/AGENTS.md-analysis-20260529.md for a comprehensive research report (14 sources, 6 core areas). Key takeaways:
- 6 core areas every AGENTS.md should cover: Commands, Testing, Project Structure, Code Style, Git Workflow, Boundaries
- Commands at the top with exact flags, copy-pasteable — highest-ROI section
- Boundaries with 3 levels (✅ Always /
⚠️ Ask first / 🚫 Never) — single most effective constraint pattern - Code examples over descriptions — one real snippet beats three paragraphs
- ≤150-180 linhas é o sweet spot — cada linha extra consome tokens do context window
- Sem changelog ou documentação humana — AGENTS.md é runtime instruction set, README.md é pra humanos
pi-dev-config/
├── APPEND_SYSTEM.md # Global system-prompt rules and conventions
├── settings.json # Pre-configured pi settings (Ollama Cloud provider)
├── assets/ # Static assets (images, etc.)
├── docs/
│ ├── DESIGN.md # Cal.com design system analysis (Dembrandt)
│ ├── PI_DEV_CHEATSHEET.md # Practical workflow guide (PT)
│ ├── PI_DEV_CHEATSHEET_EN.md # Practical workflow guide (EN)
│ ├── screenshot-pi-dev.png # Screenshot for README
│ ├── streamlit_pro_tips.md # 25+ Streamlit PRO tips from official video
│ ├── streamlit_extras_guide.md # streamlit-extras complete reference guide
│ └── research/
│ └── AGENTS.md-analysis-20260529.md # AGENTS.md industry standard research (14 sources)
├── rtk/
│ └── config.toml # RTK exclude list: ls, grep, rg (bypass known bugs)
├── ghostty/
│ ├── config.ghostty # Tema GitHub Dark, JetBrains Mono, shell integration
│ └── SSH_NERD_FONT.md # Guia de Nerd Fonts via SSH
├── vibes/
│ ├── startrek.txt # Startrek: 99 phrases
│ ├── klingon.txt # Klingon + translations: 26 phrases
│ ├── standup.txt # Standup comedy: 32 phrases
│ ├── tiozao.txt # Tiozão jokes: 43 phrases
│ └── bbs.txt # BBS taglines 90s: 52 phrases
├── README.md # This file
É o status do pi-extension-manager. Significa que a verificação automática de atualizações de pacotes está desligada. Para ativar:
/extensions auto-update daily
Outros intervalos: weekly, 1h, 6h, 3d, 2w, 1mo, ou /extensions auto-update para o wizard interativo.
MIT
