mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-19 04:04:58 +00:00
docs(coding-agent): update README intro, add packages/prompt-templates/themes docs
- Rewrote README intro to emphasize extensibility and pi packages - Added Pi Packages section to README - Created docs/packages.md covering install, sources, manifest, filtering - Created docs/prompt-templates.md covering format and arguments - Created docs/themes.md with overview linking to theme.md
This commit is contained in:
parent
27b27d9441
commit
94952bd6c0
4 changed files with 272 additions and 2 deletions
158
packages/coding-agent/docs/packages.md
Normal file
158
packages/coding-agent/docs/packages.md
Normal file
|
|
@ -0,0 +1,158 @@
|
|||
> pi can help you create pi packages. Ask it to bundle your extensions, skills, prompt templates, or themes.
|
||||
|
||||
# Pi Packages
|
||||
|
||||
Pi packages bundle extensions, skills, prompt templates, and themes so you can share them through npm or git. A package can declare resources in `package.json` under the `pi` key, or use conventional directories.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
- [Install and Manage](#install-and-manage)
|
||||
- [Package Sources](#package-sources)
|
||||
- [Creating a Pi Package](#creating-a-pi-package)
|
||||
- [Package Structure](#package-structure)
|
||||
- [Package Filtering](#package-filtering)
|
||||
- [Enable and Disable Resources](#enable-and-disable-resources)
|
||||
- [Scope and Deduplication](#scope-and-deduplication)
|
||||
|
||||
## Install and Manage
|
||||
|
||||
```bash
|
||||
pi install npm:@foo/bar@1.0.0
|
||||
pi install git:github.com/user/repo@v1
|
||||
pi install https://github.com/user/repo # raw URLs work too
|
||||
|
||||
pi remove npm:@foo/bar
|
||||
pi list # show installed packages from settings
|
||||
pi update # update all non-pinned packages
|
||||
```
|
||||
|
||||
By default, `install` and `remove` write to global settings (`~/.pi/agent/settings.json`). Use `-l` to write to project settings (`.pi/settings.json`) instead. Project settings can be shared with your team, and pi installs any missing packages automatically on startup.
|
||||
|
||||
To try a package without installing it, use `--extension` or `-e`. This installs to a temporary directory for the current run only:
|
||||
|
||||
```bash
|
||||
pi -e npm:@foo/bar
|
||||
pi -e git:github.com/user/repo
|
||||
```
|
||||
|
||||
## Package Sources
|
||||
|
||||
Pi accepts three source types in settings and `pi install`.
|
||||
|
||||
### npm
|
||||
|
||||
```
|
||||
npm:@scope/pkg@1.2.3
|
||||
npm:pkg
|
||||
```
|
||||
|
||||
- Versioned specs are pinned and skipped by `pi update`.
|
||||
- Global installs use `npm install -g`.
|
||||
- Project installs go under `.pi/npm/`.
|
||||
|
||||
### git
|
||||
|
||||
```
|
||||
git:github.com/user/repo@v1
|
||||
https://github.com/user/repo@v1
|
||||
```
|
||||
|
||||
- Raw `https://` URLs work without the `git:` prefix.
|
||||
- Refs pin the package and skip `pi update`.
|
||||
- Cloned to `~/.pi/agent/git/<host>/<path>` (global) or `.pi/git/<host>/<path>` (project).
|
||||
- Runs `npm install` after clone or pull if `package.json` exists.
|
||||
|
||||
### Local Paths
|
||||
|
||||
```
|
||||
/absolute/path/to/package
|
||||
./relative/path/to/package
|
||||
```
|
||||
|
||||
Local paths work in settings but not with `pi install`. If the path is a file, it loads as a single extension. If it is a directory, pi loads resources using package rules.
|
||||
|
||||
## Creating a Pi Package
|
||||
|
||||
Add a `pi` manifest to `package.json` or use conventional directories. Include the `pi-package` keyword for discoverability.
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "my-package",
|
||||
"keywords": ["pi-package"],
|
||||
"pi": {
|
||||
"extensions": ["./extensions"],
|
||||
"skills": ["./skills"],
|
||||
"prompts": ["./prompts"],
|
||||
"themes": ["./themes"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Paths are relative to the package root. Arrays support glob patterns and `!exclusions`.
|
||||
|
||||
## Package Structure
|
||||
|
||||
### Convention Directories
|
||||
|
||||
If no `pi` manifest is present, pi auto-discovers resources from these directories:
|
||||
|
||||
- `extensions/` loads `.ts` and `.js` files
|
||||
- `skills/` recursively finds `SKILL.md` folders and loads top-level `.md` files as skills
|
||||
- `prompts/` loads `.md` files
|
||||
- `themes/` loads `.json` files
|
||||
|
||||
### Bundling Other Pi Packages
|
||||
|
||||
Bundle other pi packages by adding them as dependencies and listing them in `bundledDependencies`. Reference their resources via `node_modules/` paths.
|
||||
|
||||
```json
|
||||
{
|
||||
"dependencies": {
|
||||
"shitty-extensions": "^1.0.1"
|
||||
},
|
||||
"bundledDependencies": ["shitty-extensions"],
|
||||
"pi": {
|
||||
"extensions": ["extensions", "node_modules/shitty-extensions/extensions"],
|
||||
"skills": ["skills", "node_modules/shitty-extensions/skills"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
`bundledDependencies` embeds the package in the published tarball, keeping paths stable. See `pi-package-test` for a working example.
|
||||
|
||||
## Package Filtering
|
||||
|
||||
Filter what a package loads using the object form in settings:
|
||||
|
||||
```json
|
||||
{
|
||||
"packages": [
|
||||
"npm:simple-pkg",
|
||||
{
|
||||
"source": "npm:my-package",
|
||||
"extensions": ["extensions/*.ts", "!extensions/legacy.ts"],
|
||||
"skills": [],
|
||||
"prompts": ["prompts/review.md"],
|
||||
"themes": ["+themes/legacy.json"]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
- Omit a key to load all of that type.
|
||||
- Use `[]` to load none of that type.
|
||||
- `!pattern` excludes matches.
|
||||
- `+pattern` force-includes, even if excluded by manifest.
|
||||
- Filters layer on top of the manifest. They narrow down what is already allowed.
|
||||
|
||||
## Enable and Disable Resources
|
||||
|
||||
Use `pi config` to enable or disable extensions, skills, prompt templates, and themes from installed packages and local directories. Works for both global (`~/.pi/agent`) and project (`.pi/`) scopes.
|
||||
|
||||
## Scope and Deduplication
|
||||
|
||||
Packages can appear in both global and project settings. If the same package appears in both, the project entry wins. Identity is determined by:
|
||||
|
||||
- npm: package name
|
||||
- git: repository URL without ref
|
||||
- local: resolved absolute path
|
||||
Loading…
Add table
Add a link
Reference in a new issue