Thanks for helping improve the monorepo. This guide covers skills (Markdown playbooks). For MCP tools, CLI commands, and SDK work, follow AGENTS.md and the Development section in the root README (TDD, parity with docs/parity.md, ruff, pytest).
Skills are Markdown-only — no Python, no uv, no test infrastructure required. If you can write a numbered list and a YAML header, you can contribute a skill.
-
Fork and clone the repo.
-
Choose or create a domain folder under
skills/. -
Create
skills/<domain>/<skill-name>/SKILL.mdusing the template inskills/AGENTS.md. -
Run the reference linter locally (optional; CI runs the same check):
uv run python .github/workflows/scripts/lint_skill_refs.py
-
Open a PR. CI validates frontmatter, MCP tool names, and
pipefyCLI subcommands referenced in eachSKILL.md.
Every SKILL.md must have valid YAML frontmatter with:
---
name: pipefy-<domain>-<action> # must match the directory name
description: >
One sentence that agents use to choose this skill.
tags: [pipefy, ...]
---Missing or mismatched name fails CI.
- Skill folder names: kebab-case, prefixed with
pipefy-(e.g.,pipefy-process-design). - Domain folders: match the existing domains in
skills/. Open an issue before creating a new domain. - Stable IDs: once merged, renames need a CHANGELOG note and skill-lint allowlist update.
- Action-first headlines: "Create a card" not "Card creation process".
- Show MCP tool names in tables; add the CLI equivalent when it is shipped in
docs/parity.md, or mark deferred CLI as— (deferred). - Prefer explicit IDs over names (Pipefy IDs are stable; labels change).
- Keep the skill under 500 lines. Split by sub-domain if it grows larger.
- Link to related skills with
See also:rather than copying content.
Every MCP tool name and top-level pipefy CLI token referenced in a SKILL.md table
or example is checked in CI (skills-lint.yml runs .github/workflows/scripts/lint_skill_refs.py):
- MCP tool names in the first column of tool tables must exist in
PIPEFY_TOOL_NAMES. - Invocations of the form
pipefy <subcommand>must use a subcommand registered on the root CLI (seepackages/cli/src/pipefy_cli/main.py).
If you reference a tool or CLI surface that does not exist yet, CI will fail. Either wait for the capability to ship, or open the PR as a draft and link the implementation PR.
If a PR renames a CLI command or MCP tool and your skill references that command, update the skill in the same PR. The coupling rule is enforced by CI.
PRs are reviewed for:
- Frontmatter valid and
namematches directory. - Content is accurate against the current MCP/CLI surface.
- Examples are runnable (checked manually by reviewer against a real Pipefy org for high-impact skills).
- Style matches guide above.
- No persona-specific content (skills are generic, not tailored to a specific agent identity).
Open an issue or reach out at dev@pipefy.com.