marketplaces/siblings Specification
Purpose
Section titled “Purpose”Defines the structural baseline that every Patterson sibling marketplace repository satisfies –
labs, dental, and vet – and the incubation-to-canonical promotion path that governs when work
graduates from patterson-labs into patterson-corp.
Requirements
Section titled “Requirements”Requirement: Sibling repositories are structurally complete
Section titled “Requirement: Sibling repositories are structurally complete”Each of patterson-labs, patterson-dental, and patterson-vet SHALL contain
.claude-plugin/marketplace.json, README.md, .gitignore,
.devcontainer/devcontainer.json, .github/workflows/ci.yml, a run-tests.sh suite, and a
managed-settings.d/ placeholder.
Scenario: A sibling repository is inspected
Section titled “Scenario: A sibling repository is inspected”- WHEN any of the three sibling repositories is checked for the baseline files
- THEN every listed file is present
- AND the repository is no longer an empty directory shell
Scenario: Devcontainer runtime
Section titled “Scenario: Devcontainer runtime”- WHEN a sibling repository’s
.devcontainer/devcontainer.jsonis read - THEN its image tag is from the
node:24family and is pinned - AND no
node:20reference appears in the repository
Requirement: Distinct marketplace names
Section titled “Requirement: Distinct marketplace names”Each sibling marketplace.json SHALL declare a marketplace name distinct from every other
Patterson marketplace, because marketplace names occupy a flat global namespace in which a duplicate
name replaces the existing entry rather than coexisting with it.
Scenario: Comparing marketplace names across the org
Section titled “Scenario: Comparing marketplace names across the org”- WHEN the marketplace
namevalues ofpatterson-corp,patterson-labs,patterson-dental,patterson-vet,patterson-marketplace, andpatterson-skillsare collected - THEN every value is unique
- AND no sibling reuses a name already published by another repository
Scenario: Plugin source paths
Section titled “Scenario: Plugin source paths”- WHEN a sibling manifest declares a plugin
source - THEN the value begins with
./, as Claude Code requires
Requirement: Sibling test suites
Section titled “Requirement: Sibling test suites”Each sibling repository SHALL ship a zero-dependency run-tests.sh suite validating its manifest,
asserting every skill’s frontmatter name equals its directory name, and asserting the absence of
forbidden content. The tests SHALL be written before the files they validate.
Scenario: Running a sibling suite
Section titled “Scenario: Running a sibling suite”- WHEN
sh run-tests.shis executed in a sibling repository - THEN it validates the marketplace manifest
- AND it checks skill name-equals-directory for every
SKILL.mdpresent - AND it checks for forbidden strings and binaries
- AND it exits
0with a passing summary
Scenario: A skill name does not match its directory
Section titled “Scenario: A skill name does not match its directory”- WHEN a
SKILL.mdfrontmatternamediffers from its parent directory name - THEN the suite reports the mismatched path and exits non-zero
Requirement: Documented promotion path
Section titled “Requirement: Documented promotion path”patterson-labs SHALL provide docs/promotion-path.md describing how an incubating artifact
graduates to patterson-corp.
Scenario: An incubating plugin is considered for graduation
Section titled “Scenario: An incubating plugin is considered for graduation”- WHEN a maintainer consults
docs/promotion-path.md - THEN it states the criteria an artifact meets before graduating
- AND it names
patterson-corpas the canonical destination - AND it records
[TBD: not specified in HANDOFF.md 1F]for any graduation criterion the source does not define
Requirement: Harvest destination for the workflow-designer skill
Section titled “Requirement: Harvest destination for the workflow-designer skill”patterson-labs SHALL provide the destination directory and structure for the
agentic-workflow-designer skill harvested from patterson-skills, such that the harvested skill
satisfies the name-equals-directory rule at its new path.
Scenario: The harvested skill lands
Section titled “Scenario: The harvested skill lands”- WHEN
agentic-workflow-designeris copied intopatterson-labs - THEN its
SKILL.mdfrontmatternameequals its new directory name in plain kebab-case - AND the labs test suite passes with the skill in place
Requirement: Agentic workflow adoption is documented
Section titled “Requirement: Agentic workflow adoption is documented”patterson-labs SHALL provide docs/gh-aw-adoption.md recording the org’s agentic-workflow
position, citing .tmp/staging/reuse/agentics-and-gh-aw.md and the three workflows already running
in the design-plugins repository.
Scenario: Reading the adoption document
Section titled “Scenario: Reading the adoption document”- WHEN a reader opens
docs/gh-aw-adoption.md - THEN it cites
.tmp/staging/reuse/agentics-and-gh-aw.md - AND it names the three existing workflows (ci-doctor, repo-ask, repo-chronicle) and the gh-aw version they were compiled with
- AND it records that adopting
githubnext/agenticsas a GitHub template requires a remote operation and is therefore documented rather than executed
Source of truth: openspec/specs/marketplaces/siblings/spec.md in the patterson-corp repository.