Plugins are optional, plug-and-play integrations with specific companies or tools (GitLab, Notion, Testmo, …). They live OUTSIDE the barebone harness so the default install stays lean and GitHub-native — but they're one flag away when you need them.
Each plugin is a self-contained directory:
plugins/<plugin-name>/
├── plugin.json # manifest — what the plugin is and what it adds
├── skills/<skill>/SKILL.md # (optional) skills the plugin contributes
├── rules/*.md # (optional) rules the plugin contributes
└── hooks/*.sh # (optional) hooks the plugin contributes
{
"name": "gitlab",
"description": "GitLab MR creation via the glab CLI or a GitLab MCP server.",
"requires": ["glab CLI"],
"adds": {
"skills": ["gitlab-pr"],
"rules": [],
"hooks": []
}
}| Field | Meaning |
|---|---|
name |
Plugin id — matches the directory name. |
description |
One sentence: what the plugin integrates. |
requires |
External prerequisites the user must have (a CLI, an MCP server, an API token). The plugin is inert without them. |
adds.skills |
Skill directories copied into the project's .claude/skills/. |
adds.rules |
Rule files copied into the project's .claude/rules/. |
adds.hooks |
Hook scripts copied into the project's .claude/hooks/ (and merged into settings). |
At install time, opt in with --with <plugin>:
./setup/install.sh --with gitlab
./setup/install.sh --with notion-prd
./setup/install.sh --with gitlab --with notion-prdinstall.sh reads each plugin's plugin.json and copies the listed skills,
rules, and hooks into the target project's .claude/ directory, merging any
hooks into settings.json. Plugins you don't ask for are never installed.
| Plugin | Adds | Requires |
|---|---|---|
gitlab |
/gitlab-pr skill (GitLab MR creation) |
glab CLI or a GitLab MCP server |
notion-prd |
/prd-authoring skill (write PRDs in Notion) |
Notion MCP server + integration token |
- Create
plugins/<name>/plugin.jsonwith the manifest shape above. - Add the skill / rule / hook files the manifest references.
- List them under
adds, and list external prerequisites underrequires. - Test:
./setup/install.sh --with <name>into a scratch project and confirm the files land in.claude/.
Keep plugins generic and self-describing — anyone using the same tool should be able to enable yours without internal knowledge.