- What this is
- Quick start
- Plugin catalog
- Repository layout
- Conventions
- Scripts and validation
- Adding a plugin
- Where it fits
- Contributing and governance
- Status and open items
A Claude Code plugin marketplace for ACT Data. It holds capability that is true across ACT's software teams, packaged so an agent working in an ACT repository behaves the way a well-oriented ACT colleague would.
Right now it holds one thing: the toolkit for building the rest of it.
# inside Claude Code
/plugin marketplace add patterson-agents/actdata-plugins
/plugin install act-plugin-dev@actdata-pluginsFrom a local checkout:
cd actdata-plugins
claude
/plugin marketplace add .
/plugin install act-plugin-dev@actdata-pluginsThen:
"create a plugin for managing our deploy runbooks" ← /act-plugin-dev:create-plugin
"validate this plugin before I open a PR" ← delegates to plugin-validator
"how do I write a PreToolUse hook?" ← hook-development skill fires
Warning
Marketplace names occupy one flat global namespace. Registering a second marketplace under
the name actdata-plugins replaces this one rather than merging with it.
| Plugin | What it is | Components |
|---|---|---|
act-plugin-devDevelopment |
Everything needed to build a plugin for this marketplace, and the conventions that keep one from breaking at install time. A fork of Claude Code's plugin-dev, adapted to ACT's layout, Bun, and marketplace registration. |
7 skills · 3 agents · 1 command |
act-platform-engineeringOperations |
Assessment and operations for PostgreSQL, ZFS, Linux hosts and Proxmox VE. Diagnostic commands with green/red criteria, role-based reasoning agents, and incident practice. Reads its host inventory from a site-local settings file and ships no environment identifiers. | 7 skills · 7 agents · 9 commands |
act-work-trackingWorkflow |
Zoho Projects work tracking and operations reporting: the task-versus-issue distinction, the API's quirks, bulk creation with a credential-free dry run, and the writing conventions that keep issues and reports actionable. | 2 skills · 1 agent · 3 commands |
act-gitlab-ciEngineering |
GitLab CI/CD and GitLab tooling: Claude Code as a CI job across three providers, the GitLab MCP server, the glab CLI, and pipeline standards translated to GitLab. Ships an MCP server and a zero-dependency pipeline checker. |
6 skills · 1 agent · 3 commands · 1 MCP |
These directories exist under plugins/ but are not registered in marketplace.json, and are
therefore not installable. That is deliberate — an unfinished plugin should not be discoverable.
| Directory | State |
|---|---|
code-review |
Empty shell. |
standards |
Empty shell. |
git-workflows |
Empty shell. |
scripts/verify-all.sh recognises a scaffold by its TODO markers and reports it as a draft rather
than failing the build. Once a draft has real content, registering it becomes mandatory.
actdata-plugins/
├── .claude-plugin/
│ └── marketplace.json # the catalog agents read -- a plugin is invisible without an entry here
├── plugins/
│ └── act-plugin-dev/
│ ├── .claude-plugin/plugin.json
│ ├── README.md
│ ├── skills/<name>/ # SKILL.md · references/ · examples/ · scripts/
│ ├── agents/
│ └── commands/
├── scripts/
│ ├── check-size.ts # 2 MiB tracked-byte budget validator
│ ├── check-no-binaries.ts # fonts / office / archive / oversized-raster validator
│ ├── verify-all.sh # the gate battery -- CI and pre-commit both call this
│ └── tests/run-tests.sh # TDD fixtures for the two validators
├── docs/
│ ├── assets/ # placeholder wordmark -- see docs/assets/README.md
│ └── decisions/ # ADRs
├── .github/ # issue + PR templates, ci.yml
├── .githooks/ # pre-commit (opt in: git config core.hooksPath .githooks)
├── CONTRIBUTING.md · CODE_OF_CONDUCT.md · SECURITY.md · CODEOWNERS
└── README.md # you are here
Load-bearing, not stylistic. scripts/verify-all.sh enforces the mechanical ones.
| Rule | What it means |
|---|---|
| kebab-case everywhere | Plugin names, skill directory names, command and agent filenames. |
| Skill name equals directory name | skills/foo/SKILL.md must carry name: foo. Title Case fails the gate. The most common defect when importing a skill from elsewhere. |
Plugins live at plugins/<name>/ |
marketplace.json declares metadata.pluginRoot: "./plugins". |
| Register, or it does not exist | Every shipped plugin needs a marketplace.json entry with a relevance block. |
| Version in two places | plugin.json and the marketplace entry must agree. Bump both together; the gate checks it. |
${CLAUDE_PLUGIN_ROOT} stays literal |
Never an absolute path a tool happened to resolve. The gate greps for expanded forms. |
| Bun only | bun install, bun run, bunx, bun test. bun.lock is the only lockfile; an npm/yarn/pnpm lockfile here is a bug. |
No /tmp |
Scratch goes in the repository's gitignored .tmp/. |
| No binaries | No fonts, PDFs, Office documents, archives, or raster images over 50 KiB. SVG is exempt at any size. |
| 2 MiB tracked-byte budget | Measured with git ls-files, not du. |
| No emoji on ACT-authored surfaces | READMEs, manifests, commands, agents. Use GFM alerts and tables. Vendored upstream reference content is exempt -- see the divergence note. |
| Conventional commits | <type>(<scope>): <summary>, e.g. feat(act-plugin-dev): add skill-reviewer agent. |
The two validators are TypeScript importing only node:* builtins — no build step and no
dependency on this repository's package.json. They run under Bun.
bun scripts/check-size.ts .
bun scripts/check-no-binaries.ts .| Contract | Value |
|---|---|
| Argument | a path to check |
Exit 0 |
pass |
Exit 1 |
violations found |
Exit 2 |
could not evaluate |
| Output | LEVEL|file|line|rule|message |
Run everything — the validator suites, the skill-name invariant, manifest parsing, marketplace registration and version consistency, the two validators repository-wide, and the expanded-path grep:
sh scripts/verify-all.shThis is the single gate battery. .github/workflows/ci.yml and .githooks/pre-commit both call
it; it is the one place the repository's invariants are defined.
Important
check-size.ts and check-no-binaries.ts read tracked files via git ls-files. Until work
is staged or committed, they have almost nothing to measure and will pass trivially. Stage your
changes before trusting a green run.
Use the guided workflow — it creates the directory, writes the manifest, registers the marketplace entry, and runs the gate:
/act-plugin-dev:create-plugin
Doing it by hand means, at minimum: plugins/<name>/.claude-plugin/plugin.json, a README.md, a
marketplace.json entry with a matching version and a relevance block, a row in the catalog
table above, and a green sh scripts/verify-all.sh.
actdata-plugins is one of several sibling marketplaces in the
patterson-agents organization. Each is an independent
repository with its own catalog.
| Marketplace | Role |
|---|---|
patterson-corp |
Enterprise — capability true for all of Patterson (engineering standards, brand) |
actdata-plugins |
ACT Data — this repository |
patterson-labs |
Incubating — work that has not yet earned durable status |
patterson-dental, patterson-vet |
Sub-org — segment-particular capability |
The repository furniture here — the gate battery, the validators, the README shape, the governance
files — follows patterson-corp, so someone moving between them finds the same structure.
| File | Purpose |
|---|---|
CONTRIBUTING.md |
Repository conventions, the gate, and how to add a plugin |
CODE_OF_CONDUCT.md |
Contributor Covenant, adapted for a B2B engineering context |
SECURITY.md |
Private vulnerability reporting |
CODEOWNERS |
A reviewing team for every top-level path |
.github/ISSUE_TEMPLATE/ |
Bug, feature, and new-plugin proposal forms |
.github/workflows/ci.yml |
Runs scripts/verify-all.sh on every push and pull request |
.githooks/pre-commit |
The fast local gate (opt in with git config core.hooksPath .githooks) |
docs/decisions/ |
ADRs |
Note
This repository is new. The items below are known gaps, recorded rather than papered over.
- Brand assets are placeholders. No ACT Data logo, wordmark, or palette exists.
docs/assets/ships an invented mark using the inherited Patterson palette. Seedocs/assets/README.md. - Three empty plugin shells are unregistered, as described above.
act-gitlab-ci's pipeline standards are derived, not authoritative. They are translated from a standard written for Azure DevOps and GitHub, which does not permit GitLab and whose approved-tools list excludes GitLab's built-in scanners. The conflict is recorded rather than resolved; see_SOURCES.md.- The license identifier
LicenseRef-ACT-Internalis provisional. ACT Data's licensing posture for internal agent tooling has not been confirmed. act-plugin-devis a fork, not a dependency. It does not track upstreamplugin-dev. Re-syncing is manual; the divergence is recorded in its README.