# badlogic/pi-skills: a skill bundle for pi-coding-agent that also runs in Claude Code and Codex CLI

> pi-skills is a small collection of agent skills (Brave search, browser automation, Google Calendar, Drive, Gmail, transcription, VS Code diffs, YouTube transcripts) that installs by cloning a git repository into each agent's skills directory. The catch is per-tool install paths and, for Claude Code, one symlink per skill.

**badlogic/pi-skills** — Skills for pi coding agent (compatible with Claude Code and Codex CLI)

- Repository: https://github.com/badlogic/pi-skills
- Stars: 2,574 · Forks: 222
- Language: JavaScript
- License: MIT
- Published: 2026-09-28 · Updated: 2026-09-28 · Language: en
- Canonical page: https://hysenlabs.com/projects/badlogic-pi-skills

## What pi-skills is, and who the clone-and-symlink layout is for

pi-skills is a collection of skills for pi-coding-agent, and the README states the same folders are compatible with Claude Code, Codex CLI, Amp and Droid. A skill here is a directory containing a SKILL.md file plus whatever helper files the skill needs. The repository ships eight of them: brave-search, browser-tools, gccli, gdcli, gmcli, transcribe, vscode and youtube-transcript.

The audience is narrow and specific. You are already running one of those agents, you want it to reach outside the repository (web search, a browser, Google Calendar, Drive, Gmail, a speech-to-text API, YouTube captions, VS Code diffs), and you would rather clone a working set than author SKILL.md files yourself. The repository is not a framework, not a plugin runtime, and not a package you import. It is content that an agent reads.

That shapes everything about it. There is no build step, no version pinning mechanism described in the README, and no release history. Updating means pulling the clone again. If you need a dependency-locked distribution with a changelog, this is the wrong shape of project.

## How a skill reaches the agent: SKILL.md, front matter and {baseDir}

The mechanism is file discovery, not an API. Each skill directory holds a SKILL.md whose front matter carries a name and a description, and the README shows the exact shape:

```markdown
---
name: skill-name
description: Short description shown to agent
---

# Instructions

Detailed instructions here...
Helper files available at: {baseDir}/
```

The description is what the agent sees when deciding whether the skill is relevant. The body below the front matter is the instruction text the agent loads once it picks the skill. The {baseDir} placeholder is replaced at runtime with the skill's own directory path, which is how a SKILL.md can point at helper scripts without hardcoding an absolute path. That single substitution is the whole runtime contract described in the README.

The practical consequence is that the quality of a skill lives in its description line and its instructions, not in code the project controls. If an agent ignores a skill, the first thing to inspect is the description in that SKILL.md. Because the format is shared with Claude Code, the same folder can be dropped into several agents, which is the main reason a bundle like this is worth cloning instead of writing from scratch.

## Installing pi-skills into pi-coding-agent, Codex CLI, Amp and Droid

Installation is a git clone into a directory the agent scans. For pi-coding-agent, the README gives a user-level path and a project-level path, and the difference matters: the user-level clone is visible in every project, the project-level clone is scoped to one repository.

```bash
# User-level (available in all projects)
git clone https://github.com/badlogic/pi-skills ~/.pi/agent/skills/pi-skills

# Or project-level
git clone https://github.com/badlogic/pi-skills .pi/skills/pi-skills
```

Codex CLI takes a single clone into its own skills directory, and the README notes that Amp finds skills recursively inside toolboxes, so one clone is enough there too.

```bash
git clone https://github.com/badlogic/pi-skills ~/.codex/skills/pi-skills
git clone https://github.com/badlogic/pi-skills ~/.config/amp/tools/pi-skills
```

Droid (Factory) follows the same user-level or project-level pattern as pi-coding-agent, against .factory/skills. After cloning, the next step is per-skill dependencies rather than a global install: brave-search, browser-tools and youtube-transcript want npm install run inside their own skill directory, and the three Google CLIs are global npm packages.

```bash
npm install -g @mariozechner/gccli
npm install -g @mariozechner/gdcli
npm install -g @mariozechner/gmcli
```

For a first real use, pick brave-search, run npm install in its directory, restart the agent, and ask it to search the web. The README does not show a sample prompt or expected output, so what you should look for is the agent naming the skill in its plan before it calls out. If it never mentions the skill, the description line is the thing to read first.

## The Claude Code case: one level deep means one symlink per skill

Claude Code is the awkward install. The README states plainly that Claude Code only looks one level deep for SKILL.md files, so each skill folder must sit directly under the skills directory. Cloning the whole repository there would bury the SKILL.md files one level too deep, so the README instructs you to clone somewhere convenient and symlink each skill individually.

```bash
git clone https://github.com/badlogic/pi-skills ~/pi-skills
mkdir -p ~/.claude/skills
ln -s ~/pi-skills/brave-search ~/.claude/skills/brave-search
ln -s ~/pi-skills/browser-tools ~/.claude/skills/browser-tools
ln -s ~/pi-skills/gccli ~/.claude/skills/gccli
ln -s ~/pi-skills/gdcli ~/.claude/skills/gdcli
ln -s ~/pi-skills/gmcli ~/.claude/skills/gmcli
ln -s ~/pi-skills/transcribe ~/.claude/skills/transcribe
ln -s ~/pi-skills/vscode ~/.claude/skills/vscode
ln -s ~/pi-skills/youtube-transcript ~/.claude/skills/youtube-transcript
```

The same block is repeated for project-level installs under .claude/skills. This is the clearest trade-off in the repository: eight symlinks instead of one clone, and eight more lines to maintain when the skill list changes. A new skill added upstream will not appear in Claude Code until you create another link. There is no script in the README that generates these links, so it is manual work on every machine you set up.

## Per-skill requirements are where a pi-skills install actually breaks

The README is explicit that requirements differ per skill and that the agent will generally walk you through setup, with the directory-by-directory list as a fallback. Read that list before cloning, because several entries are external accounts or binaries rather than npm packages.

brave-search, browser-tools and youtube-transcript need Node.js and an npm install inside the skill directory. browser-tools additionally needs Chrome, since it drives the browser over the Chrome DevTools Protocol. The three Google skills (gccli, gdcli, gmcli) are global npm installs of separate packages, which means three more things to keep current outside this repository. transcribe needs curl and a Groq API key, so it fails without a credential you have to obtain yourself. vscode needs the code CLI on PATH, which is a real constraint on headless machines and remote servers. The README also lists a subagent skill requiring pi-coding-agent, but no subagent directory appears in the repository's top-level entries, so that row describes something not present in this checkout.

None of these failures are detected by the clone. You find out when the agent tries to use the skill and the underlying tool is missing or unauthenticated. If you are setting this up on a server, expect vscode and browser-tools to be the two that do not work without extra provisioning.

## Where pi-skills is the wrong tool, and what to use instead

pi-skills is the wrong choice when you want one install command that works identically across agents. The repository does not provide one. Claude Code needs per-skill symlinks, pi-coding-agent and Droid each have their own skills directory, Codex CLI and Amp use yet another path. If your team mixes agents, you are maintaining four layouts from one repository.

It is also the wrong choice if you need pinned dependencies or a support contract. The README describes cloning the default branch, and the repository's last push was on 2026-06-06. There are no releases, so there is no tag to pin to. The Google CLI packages are installed globally by name, which means npm resolves whatever is current at install time.

The alternative depends on what you actually need. If the goal is browser automation specifically, Playwright's own MCP server exposes browser control to agents through a maintained, versioned package rather than a SKILL.md that shells out to a local Chrome. The difference in approach is that pi-skills keeps the agent-facing contract in markdown and delegates to a script, while an MCP server exposes typed tools over a protocol the agent connects to. The MCP route gives you version pinning and a single transport for every compatible client; the pi-skills route gives you plain files you can read, edit and commit next to your project. If you only need web search, a hosted search MCP server avoids the local npm install and the Chrome dependency entirely.

## Licence, maintenance and the cost of upgrading a clone

The repository is MIT licensed, and the README's final line confirms it. MIT is permissive: you can copy the SKILL.md files into your own repository, modify them, and ship them inside a commercial product, provided you keep the copyright notice and licence text. The LICENSE file sits at the top level alongside README.md and .gitignore. This is a general description of the licence, not legal advice; read LICENSE yourself if the terms matter to your organisation.

Maintenance is the part to weigh honestly. The last push to the default branch was on 2026-06-06. There is no changelog to read before pulling. Upgrading is a git pull inside your clone, and for Claude Code that pull is enough because the symlinks point at the clone rather than at copies. For the Google skills, upgrading is separate: npm install -g of @mariozechner/gccli, @mariozechner/gdcli and @mariozechner/gmcli resolves to whatever version is current, so a working setup can change without you touching this repository. The brave-search, browser-tools and youtube-transcript skills each have their own node_modules inside the skill directory, so a pull can leave stale dependencies behind until you run npm install in each of those directories again. Budget for that, not for a versioned upgrade path.

## Conclusion

Adopt pi-skills if you already run pi-coding-agent, Codex CLI, Amp or Droid and want search, browser automation, Google Calendar/Drive/Gmail, transcription, VS Code diffs and YouTube transcripts available to the agent without writing SKILL.md files yourself. Do not adopt it if you want a single cross-tool installer: Claude Code needs one symlink per skill because it only looks one level deep for SKILL.md, and each of gccli, gdcli and gmcli pulls a separate global npm package. Verify first that the agent you use actually reads the directory you clone into, that Node.js is present for brave-search, browser-tools, youtube-transcript and the three Google CLIs, that Chrome is installed for browser-tools, and that you have a Groq API key before relying on transcribe. The repository's last push was on 2026-06-06, so treat the Google CLI packages and the Groq endpoint as the parts most likely to need attention.

## FAQ

### What is a pi skill in pi-skills?

A skill is a directory containing a SKILL.md file with front matter (name and description) plus instruction text, and optionally helper files referenced through the {baseDir} placeholder. The agent reads the description to decide whether the skill is relevant and then loads the instructions.

### What are Pi agent skills?

They are the same SKILL.md-based folders used by pi-coding-agent, and the README states the format is compatible with Claude Code, Codex CLI, Amp and Droid. pi-skills ships eight of them: brave-search, browser-tools, gccli, gdcli, gmcli, transcribe, vscode and youtube-transcript.

### How do I install pi-skills?

Clone the repository into the skills directory your agent scans: ~/.pi/agent/skills/pi-skills or .pi/skills/pi-skills for pi-coding-agent, ~/.codex/skills/pi-skills for Codex CLI, ~/.config/amp/tools/pi-skills for Amp, and ~/.factory/skills/pi-skills or .factory/skills/pi-skills for Droid. Claude Code only looks one level deep for SKILL.md files, so there you clone elsewhere and symlink each skill folder into ~/.claude/skills or .claude/skills.

### Why does pi-skills not show up in Claude Code after cloning?

Because Claude Code only looks one level deep for SKILL.md files, a full clone puts each SKILL.md one directory too deep to be found. The README's fix is to clone to a convenient location and create one symlink per skill directly under ~/.claude/skills or .claude/skills.

### What does pi-skills need before the skills work?

Requirements are per skill: brave-search, browser-tools and youtube-transcript need Node.js and an npm install inside the skill directory; browser-tools also needs Chrome; gccli, gdcli and gmcli are installed globally as @mariozechner packages; transcribe needs curl and a Groq API key; and vscode needs the code CLI on PATH.

## Sources

- [badlogic/pi-skills on GitHub](https://github.com/badlogic/pi-skills)
- [Issues](https://github.com/badlogic/pi-skills/issues)
- [License: MIT](https://github.com/badlogic/pi-skills/blob/main/LICENSE)
- [README](https://github.com/badlogic/pi-skills/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/badlogic-pi-skills
