Help us improve
Share bugs, ideas, or general feedback.
From dpf-platform
Promotes a backlog item triaged as 'build' into the Build Studio pipeline. Handles the handoff so the recursive build substrate takes over development. Use after triage completes.
npx claudepluginhub opendigitalproductfactory/opendigitalproductfactory --plugin dpf-platformHow this skill is triggered — by the user, by Claude, or both
Slash command
/dpf-platform:dpf-promote-to-build-studioThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
DPF has a standing rule: **Build Studio handles all development.** File BI → promote → approve Ideate → let BS run. Claude (the contributor agent) never writes feature code directly when BS is available — that's the recursive substrate point. This skill walks the promotion handoff so BS picks up the work in the shape it expects and the operator's only job is to ratify the Ideate phase output.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Explores codebases via GitNexus: discover repos, query execution flows, trace processes, inspect symbol callers/callees, and review architecture.
Share bugs, ideas, or general feedback.
DPF has a standing rule: Build Studio handles all development. File BI → promote → approve Ideate → let BS run. Claude (the contributor agent) never writes feature code directly when BS is available — that's the recursive substrate point. This skill walks the promotion handoff so BS picks up the work in the shape it expects and the operator's only job is to ratify the Ideate phase output.
outcome=build and effortSize set.triaging status — promote requires outcome=build. Triage first (mcp__dpf__triage_backlog_item).add-skill coworker skill instead) or a kernel-page edit (use draft-kernel-edit-pr).dpf-file-backlog-item first.| Source | Path | What to extract |
|---|---|---|
| BI state | mcp__dpf__get_backlog_item({ itemId }) | Current status, triageOutcome, effortSize, body — promotion preconditions |
| BS runtime health | mcp__dpf__list_build_activity_since or the /build page | Whether the BS runtime is online and has capacity |
| BS pipeline phases | apps/web/lib/integrate/build-orchestrator.ts | The lifecycle gates this BI will traverse (Ideate → Plan → Build → Verify → Ship) |
| Standing rule context | feedback_build_studio_for_all_development memory | Why this skill is the default path, not the exception |
kernel/principles/architecture-over-shortcuts — the recursive build substrate IS the architectural choice; bypassing it for "speed" creates the debt the principle names.kernel/principles/governance-approves-evidence-not-provenance — BS's phase gates approve evidence quality, regardless of who produced it; the promotion is the contract.Verify preconditions. Call mcp__dpf__get_backlog_item({ itemId }). Check:
status is open (post-triage) — not triaging, not done, not deferred.triageOutcome is build.effortSize is set (small/medium/large/xlarge).body is non-empty and includes the acceptance criteria.
If any check fails, do NOT promote — return the user to the upstream skill (dpf-file-backlog-item for missing body; mcp__dpf__triage_backlog_item for missing triage).Check BS runtime health. Call mcp__dpf__list_build_activity_since({ since: <ISO-2h-ago> }) to confirm the orchestrator is processing. If activity is dead for hours, the runtime may be down — surface to operator before promoting (a promoted BI sitting in a dead queue is worse than an unpromoted one).
Call mcp__dpf__promote_to_build_studio({ itemId }). The tool creates a draft FeatureBuild linked to the BI, sets the BI status appropriately, and writes the activity row.
Watch for the Ideate phase output. BS runs Ideate first — produces a refined brief. Use mcp__dpf__get_build_progress_visibility (or watch the /build UI) for the Ideate result. Per feedback_build_studio_design_review_loop, Ideate may fail strict design review on first pass; that's normal.
Approve or refine. When Ideate output is ready:
Surface progress visibility. Don't poll. Use mcp__dpf__get_build_progress_visibility once after promote, then let BS notifications drive the rest. Per feedback_idle_is_not_abandoned and feedback_background_eval_probes, BS work is async by design.
**Promoted to Build Studio.**
- BI: `<BI-XXXXXXXX>` (<title>)
- FeatureBuild: `<FB-XXXXXXXX>` (auto-created by promote)
- Effort: <size>
- Current phase: ideate
- Next operator action: review Ideate output at /build/<FB-id>
If preconditions failed:
**Promotion BLOCKED — preconditions unmet.**
- BI: `<BI-XXXXXXXX>`
- Failed precondition: <which one>
- Resolution: <which upstream skill to invoke>
triageOutcome=build is the contract; promoting a triaging-status BI bypasses governance.proposedOutcome=build and triage flipped to build, surface "promoting <id> to BS" to the operator first if the BI was filed in this same session (PAR — Propose, Acknowledge, Reassign).feedback_build_studio_for_all_development standing rule.This bundle's child BIs (BI-98BDFA75, BI-3C1A6451, BI-AD86EE4E) were originally proposed for promotion to BS. The operator overrode the standing rule because BS was down ("Build studio isn't working right now, we are testing in a separate thread, let's do the development here"). The in-session path proceeded: audit done in-session, semantic-fallback fix done TDD in-session, skill authoring (this BI) done in-session.
The standing rule is the default, not the law. The override happened because:
Without all three conditions, the right call would have been to promote to BS and wait. This skill's guardrail ("never write the feature code yourself when BS is up") explicitly carves out the operator-authorized exception.
dpf-file-backlog-itemapps/web/lib/integrate/build-orchestrator.tsfeedback_build_studio_for_all_development (user memory)project_build_studio_lifecycle_status (user memory)EP-BUILD-64B599 (see live epic list)