This is a good quick article about using Claude Code 'Skills':

https://www.kdnuggets.com/anthropics-complete-guide-to-claude-skills-building

I'm not using Claude Code lately, but the general methodology above is useful to understand, because all agents enable some similar capability. More and more, the standard is converging on using the connected LLM's built-in intelligence to figure out how to solve a problem, but steering it with .md files.

Pi gives you even deeper control by combining 'Agent Skills' (.md files) and TypeScript extensions. Pi can completely modify its own codebase & behavior with those controls. Here's Gemini's explanation of how that works:

Pi employs a highly unique philosophy: it ships completely minimal, but can rewrite its own terminal harness on the fly.

Pi provides granular control using the following primary mechanisms:

Dedicated Agent Skills

What it is: Much like Claude Code skills, Pi loads self-contained capability packages on demand.

How it works: Pi reads prompt templates and markdown files from directories like

~/.pi/agent/skills/

The Control: These files provide specialized workflows, setup instructions, and helper scripts. However, Pi is famously lenient compared to other frameworks, allowing skill names to differ from their parent directory for easier cross-agent sharing.

Full-Scale TypeScript Extensions & Hooks

What it is: Instead of relying strictly on structured prompt configuration files, Pi treats its own harness as an open software application written in TypeScript.

How it works: Extensions live in ~/.pi/extensions/. Pi exposes over 20+ precise lifecycle hooks.

The Control: You can write code to intercept, transform, or override every single command, model completion, and tool result.

Self-Modification (Meta-Coding)

What it is: Pi's most distinct control feature is that the agent is the primary tool for customizing itself.

How it works: You can tell Pi in natural language: "Build a sub-agent extension that behaves like this" or "Add a test-runner panel to my terminal UI".

The Control: Because its system prompt is incredibly small (under 1,000 tokens compared to Claude Code's massive prompt), Pi has full context clarity to find its own extension files, write new code features into itself, handle errors, and reload live via a /reload command.