Custom extensions and skills for pi coding agent
npm install shitty-extensionsCustom extensions and skills for pi coding agent.
Requires pi 0.50.0+ | npm | GitHub
- Installation
- Available Extensions
- clipboard.ts - Copy text to system clipboard
- oracle.ts - Get second opinions from other AI models
- memory-mode.ts - Save instructions to AGENTS.md
- plan-mode.ts - Read-only exploration mode
- handoff.ts - Transfer context to new sessions
- usage-bar.ts - AI provider usage statistics
- ultrathink.ts - Rainbow animated "ultrathink" effect
- status-widget.ts - Provider status in footer
- cost-tracker.ts - Session spending analysis
- funny-working-message.ts - Randomized spinner "Working..." text
- speedreading.ts - RSVP speed reader (Spritz-style)
- loop.ts - Conditional loops by mitsuhiko
- flicker-corp.ts - Authentic fullscreen flicker experience
- resistance.ts - Mysterious resistance transmission
- Available Skills
- a-nach-b - Austrian public transport (VOR AnachB)
- License
---
Install from npm:
``bash`
pi install npm:shitty-extensions
Or install from git:
`bash`
pi install git:github.com/hjanuschka/shitty-extensions
That's it! Pi automatically discovers all extensions and skills from the package.
Load for a single session without permanent installation:
`bash`
pi -e npm:shitty-extensions
Install to .pi/ for team sharing (auto-installs for teammates on startup):
`bash`
pi install -l npm:shitty-extensions
Clone the repo and reference directly:
`bash`
git clone https://github.com/hjanuschka/shitty-extensions.git ~/shitty-extensions
pi -e ~/shitty-extensions
---
Extensions are located in the extensions/ directory.
š Copy text to the system clipboard via OSC52 escape sequences.
#### Tool
| Tool | Description |
|------|-------------|
| copy_to_clipboard | Copy text to clipboard (available to the LLM) |
#### Features
- OSC52 support: Works across SSH sessions and most modern terminal emulators
- LLM-accessible: The AI can copy generated content directly to your clipboard
- Wide compatibility: iTerm2, Kitty, Alacritty, WezTerm, foot, Windows Terminal, tmux
#### Example Usage
Just ask:
- "Write me a draft reply and put it in my clipboard"
- "Generate a UUID and copy it to clipboard"
- "Put that code snippet in my clipboard"
---
š® Get a second opinion from another AI model without switching contexts.
#### Commands
| Command | Description |
|---------|-------------|
| /oracle | Ask for a second opinion with model picker |/oracle -m gpt-4o
| | Direct query to specific model |/oracle -f file.ts
| | Include file(s) in context |
#### Features
- Inherits conversation context: Oracle sees your full conversation with the primary AI
- Model picker UI: Choose from available models (only shows authenticated ones)
- Quick keys: Press 1-9 to quickly select a model
- Add to context option: After response, choose whether to add Oracle's answer to your conversation
- Excludes current model: Only shows alternative models for true second opinions
#### Supported Models
| Provider | Models |
|----------|--------|
| OpenAI | gpt-4o, gpt-4o-mini, gpt-4.1, gpt-4.1-mini, o1, o1-mini, o3-mini |
| OpenAI Codex | gpt-5.2-codex, codex-mini |
| Google | gemini-2.0-flash, gemini-2.5-flash, gemini-2.5-pro |
| Anthropic | claude-sonnet-4-5, claude-opus-4, claude-haiku-3-5 |
#### Example Flow
`
/oracle Is this the right approach for the API design?
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā®
ā š® Oracle - Second Opinion ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā Prompt: Is this the right approach for the API design? ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā āā/jk navigate ⢠1-9 quick select ⢠Enter send ā
ā ā
ā ⯠1. GPT-4o (openai) ā
ā 2. Gemini 2.5 Pro (google) ā
ā 3. Claude Sonnet 4.5 (anthropic) ā
ā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā Esc cancel ā
ā°āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāÆ
[After response...]
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā®
ā š® Oracle Response (GPT-4o) ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā Q: Is this the right approach for the API design? ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā Based on the conversation, I see you're building a REST ā
ā API with nested resources. A few thoughts: ā
ā ā
ā 1. The approach looks solid for simple cases... ā
ā ... ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā Add to current conversation context? ā
ā ā
ā [ YES ] NO ā
ā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā āā/Tab switch Enter confirm Y/N quick ā
ā°āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāÆ
`
---
Save instructions to AGENTS.md files with AI-assisted integration.
#### Commands
| Command | Description |
|---------|-------------|
| /mem | Save an instruction to AGENTS.md |/remember
| | Alias for /mem |
#### Features
- Location selector: Choose where to save:
| Location | File | Use Case |
|----------|------|----------|
| Project Local | ./AGENTS.local.md | Personal preferences, auto-added to .gitignore |./AGENTS.md
| Project | | Shared with team |~/.pi/agent/AGENTS.md
| Global | | All your projects |
- AI-assisted integration: The current model intelligently integrates instructions
- Preview before save: Review proposed changes before committing
---
Claude Code-style "plan mode" for safe code exploration.
#### Commands
| Command | Description |
|---------|-------------|
| /plan | Toggle plan mode on/off |/todos
| | Show current plan todo list |
#### Keyboard Shortcuts
| Shortcut | Action |
|----------|--------|
| Shift+P | Toggle plan mode |
#### CLI Flags
| Flag | Description |
|------|-------------|
| --plan | Start session in plan mode |
---
Transfer context to a new focused session.
#### Commands
| Command | Description |
|---------|-------------|
| /handoff | Generate a context-aware prompt for a new session |
---
Display AI provider usage statistics with status polling and reset countdowns.
#### Commands
| Command | Description |
|---------|-------------|
| /usage | Show usage statistics popup |
#### Supported Providers
| Provider | Metrics Shown | Auth Source |
|----------|---------------|-------------|
| Claude | 5h window, Week, Sonnet/Opus | pi auth, macOS Keychain |
| Copilot | Premium, Chat | pi auth, gh auth token |google-gemini-cli
| Gemini | Pro quota, Flash quota | pi auth () |openai-codex
| Codex | 5h window, Day, Credits | pi auth () |kiro-cli
| Kiro | Credits, Bonus credits | |Z_AI_API_KEY
| z.ai | Token limits, Monthly | env or pi auth |
#### Features
- Provider status polling: Shows outage/incident status
- Reset countdowns: Shows when limits reset
- Visual progress bars: Color-coded remaining quota
---
Rainbow animated "ultrathink" text effect with Knight Rider shimmer.
#### Commands
| Command | Description |
|---------|-------------|
| /ultrathink | Trigger the rainbow animation |
#### Keyboard Shortcuts
| Shortcut | Action |
|----------|--------|
| Ctrl+U | Trigger ultrathink |
---
Persistent provider status indicator in the footer.
#### Commands
| Command | Description |
|---------|-------------|
| /status | Toggle status widget on/off |/status-refresh
| | Force refresh status now |
---
Analyze spending from pi session logs.
#### Commands
| Command | Description |
|---------|-------------|
| /cost | Show spending for last 30 days |/cost
| | Show spending for last N days |
---
RSVP (Rapid Serial Visual Presentation) speed reader using Spritz-style technique. Displays words one at a time with the ORP (Optimal Recognition Point) highlighted for faster reading.
#### Commands
| Command | Description |
|---------|-------------|
| /speedread | Speed read the last AI response (default) |/speedread
| | Speed read provided text |/speedread -c
| | Speed read from clipboard |/speedread -l
| | Speed read last AI response (explicit) |/speedread -wpm 500
| | Set words per minute (default: 400) |
#### Keyboard Shortcuts
| Shortcut | Action |
|----------|--------|
| Ctrl+R | Speed read last AI response |
#### Controls (in reader)
| Key | Action |
|-----|--------|
| SPACE | Play/pause |ā
| / ā | Seek ±1 word |[
| / ] | Jump ±10 words |ā
| / ā | Adjust speed (±25 WPM) |B
| | Toggle big ASCII art font |R
| | Restart |Q
| / ESC | Quit |
#### Features
- ORP highlighting: The optimal recognition point (roughly 1/3 into each word) is highlighted in red
- Adaptive timing: Longer words and punctuation get extra display time
- Big font mode: Toggle ASCII art block letters for larger display
- Progress tracking: Shows word count, actual WPM, and ETA
#### Example
`
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā®
ā ā
ā ā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā reading ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¼āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā ā ā
ā ā
ā āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā400 wpm ā
ā°āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāÆ
ā¶ 42/128
SPACE play/pause āā ±1 [] ±10 āā speed B big font R restart Q quit
`
The a in "reading" would be highlighted in red as the ORP.
---
Author: mitsuhiko (@mitsuhiko) | Origin: agent-stuff
Start a follow-up loop until a breakout condition is met.
#### Commands
| Command | Description |
|---------|-------------|
| /loop | Open loop mode selector |/loop tests
| | Loop until tests pass |/loop custom
| | Loop until custom condition met |/loop self
| | Agent decides when to stop |
#### Features
- Breakout conditions: Define when the loop should stop (tests pass, custom condition, etc.)
- Status widget: Shows active loop state and turn count
- Compaction: Preserves loop state during context compaction
- Auto-continue: Automatically triggers follow-up prompts until done
---
Authentic FULLSCREEN FLICKER experience.
Randomly glitches your screen with intense colors and noise to keep you on your toes. "Just be annoying!"
#### Commands
| Command | Description |
|---------|-------------|
| /flicker-corp | Toggle the flicker experience |/signature-flicker
| | Alias for flicker-corp |
---
š” Mysterious resistance transmission in the footer.
A cryptic message types out character by character with a retro green terminal aesthetic. Features radio signal indicators, random glitch effects, and a blinking cursor.
#### Commands
| Command | Description |
|---------|-------------|
| /resistance | Toggle the resistance transmission |
#### Features
- Auto-starts on session start
- Typewriter effect - message reveals one character at a time
- Signal strength indicator - animated [āāā
ā] pulsing like a radio
- Random glitch effects - occasional static interference
- Green terminal aesthetic - like an old military/hacker terminal
- Blinking cursor - pulses after full message is revealed
#### The Message
> "If you're listening to this, you are the resistance. Listen carefully, if we attack tonight, our humanity is lost."
---
Skills are located in the skills/ directory. They provide domain-specific knowledge that agents automatically load when relevant tasks are detected.
š Austrian public transport (VOR AnachB) for all of Austria.
Query real-time departures, search stations/stops, plan routes between locations, and check service disruptions for Austrian trains, buses, trams, and metro (U-Bahn).
#### What it does
- Real-time departures at any stop
- Route planning between any two locations
- Service disruptions and alerts
- Station search by name to find station IDs
#### Example queries
- "How do I get from Vienna to Salzburg?"
- "When is the next U1 from Stephansplatz?"
- "Are there any train disruptions today?"
- "Find stop ID for Karlsplatz"
#### Included scripts
| Script | Description |
|--------|-------------|
| search.sh | Find stations/stops by name |departures.sh
| | Get real-time departures |route.sh
| | Plan a trip between locations |disruptions.sh
| | List service disruptions |
See skills/a-nach-b/SKILL.md for full API documentation.
---
This package follows the pi package conventions:
```
shitty-extensions/
āāā package.json # Declares extensions in "pi" field + "pi-package" keyword
āāā extensions/ # Auto-discovered extensions (.ts files)
ā āāā clipboard.ts
ā āāā cost-tracker.ts
ā āāā flicker-corp.ts
ā āāā funny-working-message.ts
ā āāā handoff.ts
ā āāā loop.ts
ā āāā memory-mode.ts
ā āāā oracle.ts
ā āāā plan-mode.ts
ā āāā resistance.ts
ā āāā speedreading.ts
ā āāā status-widget.ts
ā āāā ultrathink.ts
ā āāā usage-bar.ts
āāā skills/ # Auto-discovered skills (SKILL.md folders)
ā āāā a-nach-b/
ā āāā SKILL.md # Skill definition & API docs
ā āāā search.sh
ā āāā departures.sh
ā āāā route.sh
ā āāā disruptions.sh
āāā README.md
---
MIT