Best for
- Use when creating a NEW AI coworker on the DPF platform, from any dev surface (Claude/Codex session, Build Studio, MCP client) — or when a coworker idea is floated and needs the paved road.
OpenDigitalProductFactory/opendigitalproductfactory/packages/dpf-skill-pack/skills/dpf-establish-coworker/SKILL.md
Use when creating a NEW AI coworker on the DPF platform, from any dev surface (Claude/Codex session, Build Studio, MCP client) — or when a coworker idea is floated and needs the paved road. Walks the enforced lifecycle: establish a draft through the establish_coworker factory door, complete the code-side definition checklist the CI conformance gate enforces, earn a behavioral certification from the nightly golden-journey sweep, then promote to production. A coworker created any other way ships i
Decision brief
The lifecycle is draft → defined → certified → active, and it is ENFORCED, not conventional: a draft coworker is not summonable (lifecycle gate at every chat, scheduled, and summon/handoff chokepoint), an incomplete definition fails the required Unit Tests job (coworker-definiti…
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Declared | Source record | Install path and trigger |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/OpenDigitalProductFactory/opendigitalproductfactory --skill "packages/dpf-skill-pack/skills/dpf-establish-coworker"Inspect the Agent Skill "dpf-establish-coworker" from https://github.com/OpenDigitalProductFactory/opendigitalproductfactory/blob/82c0d248d6bdaf0ea83dfdbdd785c771ffa0acaa/packages/dpf-skill-pack/skills/dpf-establish-coworker/SKILL.md at commit 82c0d248d6bdaf0ea83dfdbdd785c771ffa0acaa. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Compose dpf-verify-substrate-first. Check COWORKERAGENTSEEDS (packages/db/src/workforce-seed.ts), agentregistry.json, and the live roster. Many "new coworker" ideas are an existing coworker missing a grant or a route — fix that instead (managecoworkertoolgrant, route binding).
Call the establishcoworker MCP tool with action: "establish":
The checklist returned by the door is authoritative; it covers, in order:
The conformance test is necessary but NOT sufficient — several other required checks fail on a new coworker and the conformance test says nothing about them. Handle these in the same PR or the PR bounces:
After the definition PR merges and deploys, the nightly sweep (ops/coworker-certification-nightly, 04:40) exercises the coworker's golden journeys through the real execution path. To run it immediately, emit the ops/coworker-certification.requested Inngest event. A failed oracle…
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 91/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 13 | Source | Repository attention, not individual Skill quality |
| Compatibility | 1 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
The lifecycle is draft → defined → certified → active, and it is ENFORCED, not
conventional: a draft coworker is not summonable (lifecycle gate at every chat,
scheduled, and summon/handoff chokepoint), an incomplete definition fails the
required Unit Tests job (coworker-definition conformance gate), and promotion is
refused until the nightly certification sweep has passed the coworker through
its golden journeys on the real execution path.
Compose dpf-verify-substrate-first. Check COWORKER_AGENT_SEEDS
(packages/db/src/workforce-seed.ts), agent_registry.json, and the live
roster. Many "new coworker" ideas are an existing coworker missing a grant or a
route — fix that instead (manage_coworker_tool_grant, route binding).
Call the establish_coworker MCP tool with action: "establish":
agentId: kebab-case slug (e.g. field-safety-auditor)name, description: display name + one-sentence rolevalueStream: explore | evaluate | integrate | consume | operate | cross-cuttingsensitivity: internal | confidential | restrictedgrants: keys from the closed grant vocabulary only — unknown keys are
rejected because a grant no tool honors authorizes nothing (the false-refusal
failure class)minimumTier: model floor (default adequate; confidential/regulated work
should be strong) — a missing floor is how weak local models produce
fabricated "Done" repliesThis creates the DB-side draft (Agent row at lifecycleStage: "draft", grants,
model floor, principal link) and returns the definition checklist. The draft is
visible on the workforce roster but NOT summonable.
The checklist returned by the door is authoritative; it covers, in order:
COWORKER_AGENT_SEEDS roster entry (packages/db/src/workforce-seed.ts)HARDCODED_COWORKER_GRANTS in the same file — the DURABLE grant source
(DB grant rows are re-seeded from this map on every boot)ROUTE_AGENT_MAP persona (apps/web/lib/tak/agent-routing.ts)
route-context-map.ts. Prefer an EXISTING page route
that has no persona yet (see Step 2.5) — a new top-level route triggers a
large gate cascade for no benefit; the coworker is summonable everywhere either
way.packages/db/src/agent-model-defaults.tsdocs/professions/registry.json — AND a seeded corpus
page docs/professions/<professionKey>/wiki/<slug>.md (frontmatter: title,
pageKind, status, abstract, professionCompetencyLevel, sources). The coverage
lint (resolve-profession-profile.test.ts) fails a family with an empty wiki
dir. Set contextSlugs to the route slug the persona binds.apps/web/lib/coworker-lifecycle/golden-journeys.ts — otherwise the derived
read-probe certifies it), service-catalog offer, self-task entryThe conformance gate (apps/web/lib/coworker-lifecycle/ coworker-definition-conformance.test.ts) fails CI naming any missing axis. Do
NOT extend the baseline for a new coworker — complete the definition.
The conformance test is necessary but NOT sufficient — several other required checks fail on a new coworker and the conformance test says nothing about them. Handle these in the same PR or the PR bounces:
Route choice is the biggest lever. Binding the persona to a new top-level
route cascades into five more gates (below). Bind instead to an EXISTING page
route that currently has no ROUTE_AGENT_MAP entry (e.g. a CRM sub-page like
/customer/opportunities for a research coworker): longest-prefix match makes
your persona win there, and you touch NONE of the new-route machinery. The
coworker is summonable globally regardless of route. Only create a new
route/page when the coworker genuinely needs its own surface.
Grant-source consistency (packages/db/src/coworker-grant-consistency.test.ts,
a Unit Tests (packages) shard): a seed-defined coworker's
HARDCODED_COWORKER_GRANTS "diverge" from the agent_registry.json mirror
(which has no entry for it). Add the agentId to KNOWN_GRANT_DIVERGENCES in
packages/db/src/coworker-grant-consistency.ts — the sanctioned "seed is the
runtime grant source; the JSON mirror is intentionally not duplicated" record.
This shard usually does NOT run in the local-CI pregate, so it fails only on
GitHub — check it explicitly (pnpm --filter @dpf/db exec vitest run src/coworker-grant-consistency.test.ts) before you push.
Seed Contribution Fit (scripts/check-seed-fit-decision.mjs): adding to
COWORKER_AGENT_SEEDS requires a Seed-Fit-Decision: <value> trailer in the
PR BODY (not a commit trailer) or a seed-fit:<value> label. Values:
global-default | archetype-scoped | vertical-scoped | parameterize-first |
install-local-only | reject-as-seed. A broadly-useful coworker → global-default.
ONLY if you added a new route/page — regenerate + register each, or CI fails:
pnpm --filter web build:route-manifest (Route Manifest Freshness)pnpm --filter web build:route-shells (route-shell registry)pnpm --filter web build:page-purpose — a net-new route also needs a
ratified/quarantined Page Purpose contract in apps/web/lib/ux-budget/purpose-contracts/apps/web/lib/ea/navigation-inventory-gate.test.ts):
the route's top-level segment must be in the nav model or KNOWN_NAV_TOPLEVELdocs/ux-fit/<date>-<slug>.ux-fit.json (propose-n-pick with a
principle_decide interactionId, or a sweep-measurement)UX Route Budget Sweep (GitHub runtime check, not in the local pregate):
adding a coworker adds it to the GLOBAL coworker selector, so every route's
sweep sees "choices in one control: N → N+1" and a few more words — a regression
against the frozen budget baseline on many routes at once. Recovery is a
reviewed baseline re-freeze (BI-26DA1AEB): gh workflow run ux-route-sweep.yml --ref <branch> -f update_baseline=true, download the ux-route-budget-baseline
artifact, splice ONLY the affected routes into
apps/web/lib/ux-budget/route-budget-baseline.json (never wholesale-replace),
and commit. Expect this whenever you add a coworker.
Standard doc gates (same as any PR): Spec/Plan/Doc (a plan under
docs/superpowers/plans/), Docs-Impact (Docs-Impact-Decision: trailer or the
route's user-guide page), design-grounding.
Then finish with dpf-pr-with-dco.
After the definition PR merges and deploys, the nightly sweep
(ops/coworker-certification-nightly, 04:40) exercises the coworker's golden
journeys through the real execution path. To run it immediately, emit the
ops/coworker-certification.requested Inngest event. A failed oracle lands as
an assurance finding (coworker-cert:<agentId>:…) — fix and re-run. The roster
shows certification state honestly (certified / failed / stale / never).
Call establish_coworker with action: "promote". Promotion is refused unless
the coworker is (a) in the canonical roster and (b) holds a passing
certification. On success the coworker is production and summonable
everywhere.
Frequently asked questions
The lifecycle is draft → defined → certified → active, and it is ENFORCED, not conventional: a draft coworker is not summonable (lifecycle gate at every chat, scheduled, and summon/handoff chokepoint), an incomplete definition fails the required Unit Tests job (coworker-definiti…
The source record exposes this install command: npx skills add https://github.com/OpenDigitalProductFactory/opendigitalproductfactory --skill "packages/dpf-skill-pack/skills/dpf-establish-coworker". Inspect the command and pinned source before running it.
The pinned source record declares support for: codex.
Alternatives
vasilyu1983/AI-Agents-public
Configures Claude Code hooks and Codex hooks.json/notify callbacks. Use when adding guardrails, preflight, audit trails, worktree automation, or budget enforcement.
vasilyu1983/AI-Agents-public
Guides iOS testing with XCTest, XCUITest, Swift Testing, simctl, and xcresult. Use when choosing destinations, controlling flakes, or parsing test artifacts for native apps.
samber/cc-skills-golang
Monadic types for Golang using samber/mo — Option, Result, Either, Future, IO, Task, and State types for type-safe nullable values, error handling, and functional composition with pipeline sub-packages. Apply when using or adopting samber/mo, when the codebase imports `github.com/samber/mo`, or when considering functional programming patterns as a safety design for Golang.
xiaolai/nlpm
Universal NL programming conventions — SKILL.md open spec (agentskills.io), AGENTS.md as canonical universal memory file, vague-quantifier list, prompt engineering layers, naming conventions, the override system. Tool-specific schemas live in nlpm:conventions-claude / nlpm:conventions-codex / nlpm:conventions-antigravity.