docs/apps/software-factory.md

Software Factory

Software Factory turns a request — a bug, a review comment, an email, an incident, an ask in chat — into a release, with a person deciding at the two points that matter: the product owner approves the build, the engineering owner merges.

Turn it on with plugins: [software-factory] (add production-watch for incidents), or Add app → Software Factory.

Pages

PageThe question it answers
ProductsHow is each product doing: stage, health, last release, open work
WorkWhat is running, proposed, just landed — and what waits on me
ReleasesWhat reached people, what the post-deploy check said, who was told

Opening a row on Work opens the work item: the ask in the asker's words, the decision, the plan, the mockup, the contract, every run with its checks and cost, the pull request, QA's verdict and the release.

The loop

asked → decided → planned → building → QA → released (or answered: it won't be built, and the asker is told why).

SeatAgentOwnsNever
PM (lead)product-managertriage, the plan, the task contract, telling the askermerges, writes code
Designdesignerthe mockup before a decision, the after-shot at closebuilds, decides
Engtask-engineer (runsOn: external-worker)the change, its checks, the pull requestmerges, deploys
QAchange-reviewerthe verdict against the contract and the evidencemerges; never sees Eng's conversation
Releaserelease-engineerwhy CI or a deploy is red and the move that fixes itwrites product code

What it needs

  • A code host connection (GitHub today), plus product and repo records. The PM's set-up-the-factory skill walks you through it.
  • Optional: an issue tracker (Jira) and chat (Slack). Seats read and write through families (repo, tracker, chat), not vendors.
  • A runner for the Eng seat's builds: VOCION_EXTERNAL_WORKERS=1 and the engineering runner. Builds run Claude Code, so the repository is sent to Anthropic. See Runners.

Every write (opening a PR, commenting, re-running checks) is an action with Undo at the rung trust.yaml gives it. See Trust and learning.

Production Watch

The production-watch plugin turns Sentry errors into incidents: opened when an issue is new and busy or spiking, each with its likely cause (a deploy, the code, or unknown). An on-call engineer agent reads the stack and says what to do; a person hears once per incident. With the factory on, a deploy-caused incident wakes the Release engineer, and a code bug can be filed as a factory request.