Skills
For a first installation and an example agent task, follow Install agent skills. This reference lists the bundled skills, installation options, and status behavior.
Pidgen ships agent skills: instructions that teach a coding agent (Claude Code, Codex, pi) how to
file, plan, and recover Pidgen work with the pidgen CLI. They live in skills/ and are
bundled in the npm package, so every CLI release carries the skills written for its commands.
The skills
Section titled “The skills”Every skill's name starts with pidgen-, so it does not collide with another tool's skill in a
shared skills directory such as ~/.claude/skills.
| Skill | Use it to |
|---|---|
pidgen-file-ticket |
Submit a prose intent and answer its clarification questions, or file one structured ticket as a manifest with no children; or file a request instead when someone outside the team asked, the work is not yet judged worth doing, or its target is unclear |
pidgen-manage-epics |
Create an Epic (an epic-kind ticket), set its branch and merge policy, place tickets in it by parent_ticket_id, and wire dependency edges; file a Domain Epic in a domain for work across projects and place each project's work under it |
pidgen-decompose-plan |
Turn related work into parent/child delivery cohorts and file each new cohort as one ticket manifest; for work across projects, file one cohort per project under one Domain Epic and link each root to the contract it implements or builds against |
pidgen-manage-contracts |
Put an interface between projects into Pidgen as files: choose publish, propose, attach or link; publish a spec file with pidgen contract publish after --check, stopping for a breaking change; propose a fragment file with pidgen contract propose; set up CI (publish on the default branch, --check on pull requests, the token a secret); read landed and pending operations; never write a schema into a command, a body or a ticket |
pidgen-triage-requests |
Work the request queue: list new requests, read each with its timeline, acknowledge it or ask the requester, accept it (with a bug's details or the missing ones unknown), close it with a reason, or promote it to a ticket in a Project |
pidgen-query-tickets |
Find and read tickets, Epics, runs, and their state |
pidgen-retry-run |
Decide whether a failed or stalled run should get a fresh attempt, and start it |
pidgen-replay-node |
Re-run one workflow node as a new attempt, including reopening a completed ticket |
pidgen-unstick-ticket |
Choose between answering a clarification, retrying, or filing new work |
pidgen-setup-worker |
Take a machine from nothing to a running, verified worker without a terminal, then configure it: pool sizes, session caps per coding agent, fallback provider logins and the primary one |
Installing
Section titled “Installing”$ pidgen skills install # every supported agent, user scope$ pidgen skills install --agent claude --scope project$ pidgen skills status| Flag | Values | Default |
|---|---|---|
--agent |
claude, codex, pi, all |
all agents found on the machine |
--scope |
user (your home directory), project (the current repository) |
user |
--force |
Overwrite skills you have edited | off |
Where each agent reads skills, under your home directory (--scope user) or the current directory
(--scope project). An agent counts as found when its directory exists in your home directory.
| Agent | Found by | Skills directory |
|---|---|---|
| Claude Code | ~/.claude |
.claude/skills |
| Codex | ~/.codex |
.agents/skills |
| pi | ~/.pi |
.agents/skills |
Codex and pi share .agents/skills, so the skills are written there once.
In human mode, installation reports distinct skills, destinations, agent coverage, and total
skill-destination records separately. Each destination lists its agents and each skill's outcome:
installed, updated, unchanged, or skipped edited. Skipped locally edited copies are preserved;
--force overwrites them. For example, 10 skills copied to two destinations serving three agents
produce 20 records, not 20 distinct skills. JSON mode retains the original installation records
(including the skipped_edited action).
Skills are copied, not linked, because a link into an npx cache breaks when the cache is
cleaned. Each installed SKILL.md gets two frontmatter fields:
pidgen-cli-version: 0.1.0-alpha.1pidgen-skill-hash: sha256:…pidgen skills status compares installed copies with the running CLI's bundled skills and reports each
one in data.skills as current, stale (its bundled content has changed), edited (its content no
longer matches its hash), or missing. The skills call pidgen commands built against the CLI's
committed API contract, so data.contract also says whether that contract matches the configured
server's published one (GET /api/v1/openapi.json, read without a credential): state is same
or different (comparing info.version and a sha256: digest of each document with its keys
sorted, in cli and server), with the operations only the CLI's (only_in_cli) or only the
server's (only_on_server) contract has. With no server configured it reads the hosted server's,
https://api.pidgen.ai. When the server's cannot be read, state is unchecked and reason
says why (NETWORK, the server's refusal code);
the command still exits 0. pidgen skills install updates stale copies and skips edited ones unless
--force is given.
In human output, skills status shows each skill's destination, agents and state in labeled
sections. It also says Contract differs or Contract unchecked when applicable, retaining
the differing operations or the supplied failure code and reason alongside the skill results.
These qualifications still exit 0; they do not imply the contract was verified. Use
pidgen skills status --format json to read the complete structured report.
The bundled skills pass --format json on every command whose output they read, in a terminal too:
terminal stdout otherwise defaults to human-readable output. They call only pidgen commands,
preview before they apply, and never name an Account, profile or server; the profile decides.
What each skill uses
Section titled “What each skill uses”| Skill | Commands |
|---|---|
pidgen-file-ticket |
project list|show, intent submit|respond, manifest template|apply, ticket edit|show|types, request submit |
pidgen-manage-epics |
project list, domain list|epics|project add, ticket create|list|show|edit --kind epic, ticket create --kind epic --domain, ticket move|dep add|dep rm|dep list|show|actions|act, epic create|dag show|edge add (and epic create --domain) |
pidgen-decompose-plan |
manifest template|apply, plan show|apply|promote|template|cohorts, project show, ticket dep add|edit|show|types, domain epics, contract list|show|accept, ticket contract implements|builds-against |
pidgen-manage-contracts |
contract list|show|publish|propose|revise|accept, ticket contract implements|builds-against |
pidgen-triage-requests |
request list|show|reply|acknowledge|accept|close|promote, project list, ticket show|types |
pidgen-query-tickets |
ticket list|show|dep list|actions (with --kind epic), project list|show, epic list|show|dag show, run list|show|node-output, review list|attention |
pidgen-retry-run |
ticket show|actions|act|retry|edit, run list|show|node-output, review attention, worker status |
pidgen-replay-node |
ticket show|actions|act|replay|reopen, run list|show|node-output, review attention, worker status |
pidgen-unstick-ticket |
review list|attention, ticket clarify|actions|act|template|create|cancel, run list|show, worker status, api get |
pidgen-setup-worker |
doctor, auth login, account use, worker install|verify|enroll|start|stop|status|doctor|update|uninstall|subscriptions, skills install; and the installed worker's pidgen-worker capacity show|set|reload and pidgen-worker subscriptions show|use |
The recovery skills (pidgen-retry-run, pidgen-replay-node, pidgen-unstick-ticket) recover only with
pidgen ticket actions and pidgen ticket act (or pidgen ticket retry and pidgen ticket replay, which
use the same routes), and cover choosing restart_refinement (the refinement re-dispatch, for a
ticket at research_needed, specification or planning) versus replay_from_node, and
resolve_target_conflict.
pidgen-manage-epics and pidgen-decompose-plan file work that spans projects under a Domain Epic, an Epic
filed in a domain with pidgen ticket create --kind epic --domain that owns no branch, and place
each project's work under it by parent_ticket_id (a manifest's epic_id). pidgen-decompose-plan files
one cohort per project, finds the interface with pidgen contract list and pidgen contract show,
and after each commit links the provider's root with pidgen ticket contract implements and each
consumer's root with pidgen ticket contract builds-against, naming the operations it uses.
A contract is never required for work that spans projects. pidgen-decompose-plan and pidgen-file-ticket
carry the provider's interface into the consumer ticket one of three ways: attach the spec file to
the ticket, state the interface in its scope, or link a contract, reusing one or creating one with
pidgen-manage-contracts when the interface is shared by several pieces of work or will change.
pidgen-manage-contracts finds an existing contract first, then puts the interface in as files:
it publishes a spec file that describes existing code with pidgen contract publish, running
--check first and stopping to ask the person before a breaking change, and proposes an interface
that does not exist yet from a fragment file holding only the operations needed with
pidgen contract propose. It never writes a schema into a command, a body or a ticket. With the
person's agreement it sets up CI (.github/workflows/, .gitlab-ci.yml, or the repository's own
CI workflow directory): publish on pushes to the default branch and --check on pull requests,
with PIDGEN_TOKEN a secret. It reads each operation's state with pidgen contract show, covers
every refusal code of the publishing routes, keeps pidgen contract revise for prose revisions, and links work to the
contract. pidgen-decompose-plan adds the pending rule: a root that builds against a
pending operation builds against a mock of it in its own workspace. No skill asks a person to approve a
contract: linked work waits only when the Account's Contract approval setting asks for a person
(contract).
pidgen-file-ticket files a request with pidgen request submit rather than a ticket when
someone outside the team asked for the work, it is not yet judged worth doing, or its target is
unclear; for a bug it gives the steps, expected and actual results (--steps, --expected,
--actual) and attaches evidence files with --evidence. pidgen-triage-requests works the queue:
pidgen request list --state new, pidgen request show, then acknowledge or reply --ask,
accept (with --unknown for a bug's missing details), close --reason (with --duplicate-of
or --note) or promote into the Project the request targets. Triage acts directly, with no preview
(request).
Every skill is written for the commands of the CLI release it ships with. After upgrading the CLI,
run pidgen skills install again so the installed copies match (Installing).