"The declaration carrier and display identity for the develop flow's `integrate` node — the INTEGRATE band (spec §5 item 4). The band is an orchestrator verb: it derives the demo bundle and the PR body from the acceptance criteria, the merge gate's own evidence and the diff, then renders and captures. No model is spawned on any path — see 'What this is, honestly' below."
Install
npx skillscat add parsofish/forge-studio/demo-agent Install via the SkillsCat registry.
demo-agent skill
What this is, honestly
This SKILL.md is not a running agent. It is the declaration carrier and
display identity the integrate-band guard needs to exist as a first-class citizen
of the platform (a composition.guards entry, a studio/catalog.yaml display
row, a real roster member forge studio lint can validate) — nothing more. It
is the same shape `skills/contract-check/SKILL.md`
already has for the onboard-preflight band.
The develop flow's integrate node carries agent: "demo-agent" (ADR-039 declared
dispatch); at runtime execAgent
(`packages/factory/phases/executor-table.ts`)
resolves the declared integrate-band guard and routes the node to execIntegrate, which
runs the band directly, orchestrator-side. No agent is spawned, no prompt is
assembled, and no budget is drawn.
What the band does instead
The band is spec §5 item 4's integrate step. In order:
- boundary commit — commit stragglers so the gate and the bundle see the
real branch tip; - sync invariant — push/sync the integrated branch;
- empty-branch guard — a dev loop that produced nothing opens no PR;
- merge-boundary gate — the full suite on the integrated tip, failing LOUD
on a project-config error (no agent can fix a config it cannot see); - derive (`derive-demo-model.ts`,
`derive-pr-body.ts`) — thedemo.json, theDEMO.mdand.forge/pr-description.mdare built from the
work items' acceptance criteria, the gate evidence those gates just produced,
and the diff; - capture where the class says so — the class → gate-profile table's
capturecolumn selects checkpoint capture, plan output, or neither.
Why the author was deleted
The demo used to be authored by a model here, validated afterwards, and retried
with the errors pasted back into the prompt. Everything it wrote was already
known to the orchestrator, so the authoring bought nothing and cost a spawn, two
retries, a token-overlap coverage heuristic and a fix-proposal loop. Deriving the
same artifacts is reproducible and cannot fail validation, so all of that went
with it.
One thing is deliberately NOT derived: the per-criterion verdict. An
orchestrator that scored the criteria it also built the evidence for would be
grading its own work. That verdict belongs to the read-only review agent.
The name
The band's spec word is integrate, and as of forge-8vfn.6.10.18 (operator
item 85) the STATION identity matches it: the flow node id, the band guard,resume_from, the requeue API field and the --resume-from CLI flag are allintegrate now. Two things deliberately did NOT move: this skill's own slug
(demo-agent — a name, not the station) and the demo ARTIFACT concept
(demo.json, DEMO.md, demo capture) the band still produces — those are
about the demo, not the station that runs it.