# pi-amplike [Pi](https://github.com/badlogic/pi-mono) skills and extensions that give Pi similar capabilities to [Amp Code](https://ampcode.com/) out of the box.

Pi subagents and /btw in action

## Features ### Session Management - **Handoff** - Create a new focused session with AI-generated context transfer: - **`/handoff `** command - Manually create a handoff session (potentially with `-mode ` / `-model ` parameter to switch models for the new session) - **`handoff` tool** - The agent can invoke this (with optional `mode`/`model` parameters) when you explicitly request a handoff - **`session_query`** tool - The agent in handed-off sessions automatically gets the ability to query the parent session for context, decisions, or code changes; analysis uses the queried session's own model - Use `/resume` to switch between and navigate handed-off sessions ### Subagents and BTW - **`subagent`** tool - The agent can create one or multiple parallel task-focused, non-interactive subagents to save context and speed up work - **`/btw `** command - Same semantics as in Claude Code, basically a user-triggered subagent running and finishing asynchronously and independently on the main agent ### Permissions - **`/permissions`** command toggles bash command allow/deny permissions, directly read from AmpCode's configuration files. ### Prompt Modes - **`/mode`** command with interactive mode selector/configuration UI (a mode is a model + thinking + color preset, active mode is shown in prompt editor border) - **Shortcuts**: - **`Ctrl+Shift+S`** - mode selector - **`Ctrl+Space`** - cycle modes ### Web Access - **web-search** - Search the web via Jina Search API - **visit-webpage** - Extract webpage content as markdown (using Jina API), or download images ### Amp Skill Compatibility - Auto-loads Amp skill directories when present: - `~/.config/agents/skills` - `~/.config/amp/skills` - `.agents/skills` (project-local) ## Installation ### Option A: Install from npm (recommended) ```bash pi install npm:pi-amplike ``` ### Option B: Install from git ```bash pi install https://github.com/pasky/pi-amplike ``` ### Option C: Local development ```bash git clone https://github.com/pasky/pi-amplike ~/.pi/packages/pi-amplike cd ~/.pi/packages/pi-amplike npm install ``` Then add `"packages/pi-amplike"` to the `"packages"` array in `~/.pi/agent/settings.json`. ## Setup Get a Jina API key for web skills (optional, works with rate limits without it): ```bash export JINA_API_KEY="your-key" # Add to ~/.profile or ~/.zprofile ``` Get an API key at [jina.ai](https://jina.ai/). Even if you charge only the minimum credit, it's going to last approximately forever. ## Usage ### Session Handoff When your conversation gets long or you want to branch off to a focused task, you can use handoff in two ways: **Manual handoff via command:** ``` /handoff now implement this for teams as well /handoff -mode rush execute phase one of the plan /handoff -model anthropic/claude-haiku-4-5 check other places that need this fix ``` Optional flags (can be combined): - `-mode ` — start the new session in a named mode (e.g. `rush`, `smart`, `deep`) - `-model ` — start the new session with a specific model (e.g. `anthropic/claude-haiku-4-5`) Without these flags, `/handoff` keeps the current model and thinking level in the new session. The handoff summary is always generated with the *current* session's model before switching. **Agent-invoked handoff:** The agent can also initiate a handoff when you explicitly ask for it: ``` "Please hand this off to a new session to implement the fix" "Create a handoff session to execute phase one" ``` The `handoff` tool also accepts optional `mode` and `model` parameters. Both methods create a new session with: - AI-generated summary of relevant context from the current conversation - List of relevant files that were discussed or modified - Clear task description based on your goal - Reference to parent session (accessible via `session_query` tool) #### Session Navigation Use Pi's built-in `/resume` command to switch between sessions, including handed-off sessions. The handoff creates sessions with descriptive names that make them easy to find. #### Querying Past Sessions The `session_query` tool lets the model look up information from previous sessions. It's automatically used when a handoff includes parent session reference, but can also be invoked directly. The analysis call uses the queried session's own model (falling back to the current model if unavailable): ``` session_query("/path/to/session.jsonl", "What files were modified?") session_query("/path/to/session.jsonl", "What approach was chosen?") ``` ### Subagents Ask your agent to "use subagents to ..." whenever you know you have a context-hungry task ahead that you would like to run isolated from the main context window. When your agent is working on something and you suddenly got a question, use `/btw` to ask it. Of course, you can even ask multiple questions in parallel. The `/btw` subagent is ephemeral like tool subagents, but unlike tool subagents it sees the full contxt of your session (besides the fact that it can also use tools to read files). ### Permissions The permissions extension enforces Amp-style bash command permissions automatically. Use the `/permissions` command to toggle modes: ``` /permissions # toggles between enabled and yolo ``` - **enabled** (default): Amp permission rules from `~/.config/amp/settings.json` are enforced - **yolo**: All bash commands are allowed without any checks; `YOLO mode` shown in status bar The selected mode is persisted in `~/.pi/agent/amplike.json` and restored on the next pi invocation. ### Prompt Modes ```text /mode # mode picker /mode configure # open mode configuration UI /mode # switch directly /mode store # store current model+thinking into a mode ``` Notes: - The extension bootstraps with default modes are `rush`, `smart`, and `deep`; they somewhat mirror Amp defaults. - Modes config is loaded from `.pi/modes.json` (project), falling back to `~/.pi/agent/modes.json` (global). - Deleting all modes or setting `"modes": {}` in your modes file disables mode overlay behavior (shortcuts + editor mode border), while keeping `/mode` config UI available. ### Web Search ```bash ~/.pi/packages/pi-amplike/skills/web-search/search.py "python async tutorial" ``` ### Visit Webpage ```bash ~/.pi/packages/pi-amplike/skills/visit-webpage/visit.py https://docs.example.com/api ``` ## Components | Component | Type | Description | |-----------|------|-------------| | [amp-skills](extensions/amp-skills.ts) | Extension | Adds Amp-compatible skill discovery paths (`~/.config/agents/skills`, `~/.config/amp/skills`, `.agents/skills`) | | [permissions](extensions/permissions.ts) | Extension | Reads `amp.commands.allowlist` and `amp.permissions` from `~/.config/amp/settings.json` (and `.agents/settings.json`) and intercepts bash tool calls accordingly; `/permissions` toggles between `enabled` and `yolo` (all commands allowed, status bar indicator, persisted in `~/.pi/agent/amplike.json`) | | [handoff](extensions/handoff.ts) | Extension | `/handoff [-mode ] [-model ] ` command + `handoff` tool (with `mode`/`model` params) for AI-powered context transfer | | [modes](extensions/modes.ts) | Extension | Prompt mode manager with model/thinking/color presets, editor border overlay, and shortcuts | | [session-query](extensions/session-query.ts) | Extension | `session_query` tool for querying parent sessions; uses the queried session's own model for analysis | | [session-query](skills/session-query/) | Skill | Instructions for using the session_query tool | | [web-search](skills/web-search/) | Skill | Web search via Jina API | | [visit-webpage](skills/visit-webpage/) | Skill | Webpage content extraction | ## Why "AmpCode-like"? Amp Code has excellent session management built-in - you can branch conversations, reference parent context, and navigate session history. This package brings similar workflows to Pi: - **Context handoff** → Amp's conversation branching - **Session querying** → Amp's ability to reference parent context ## Web Skills Origin The web-search and visit-webpage skills were extracted from [pasky/muaddib](https://github.com/pasky/muaddib). The original implementations have additional features (rate limiting, multiple backends, async execution) that aren't needed for Pi's skill system. ## License MIT