Docs menu

pegboard.yaml

The stack file format, key by key.

A stack lives at ./pegboard.yaml for a project and ~/.config/pegboard/pegboard.yaml for your user. It’s validated against a JSON Schema, which also gives you autocompletion in editors that support it.

version: 1
agents: [claude-code, codex, opencode, hermes]
inherit: global

mcps:
  github:
    command: npx
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_TOKEN: "${env:GITHUB_TOKEN}"
  notion:
    url: https://mcp.notion.com/mcp
    agents: [claude-code]

skills:
  - mattpocock/skills@tdd
  - pegboard
  - source: ./skills/review
    agents: [codex, opencode]

context:
  agents_md: true

remove:
  mcps: [notion]

policy:
  allow_mcps: [github, linear]

Keys

Key What it does
version Format version. Use 1
agents Which agents to configure. Defaults to the ones detected. See agent IDs
inherit Project stacks only. global or none
mcps MCP servers, by name
skills Skill sources. To limit one to some agents, write source: … and agents: […]
context.agents_md Project scope only. Guarantees AGENTS.md and the CLAUDE.md bridge
remove Removes an entry that’s declared or inherited, applied last
policy.allow_mcps Fails plan and apply if any other MCP is present
include Planned. Currently ignored with a warning

MCP entries

Key What it does
command, args, env A stdio server
url An HTTP server
agents Limits this MCP to certain agents

context.agents_md

This creates AGENTS.md if it doesn’t exist. From then on the file is yours, and Pegboard never deletes it. It also adds the line @AGENTS.md to CLAUDE.md so Claude Code reads it. If you later remove agents_md, Pegboard removes that line only if it added it.