claudeers.
// Data & Analytics

factory

A reference software factory for Claude Code and Codex

// Data & Analytics[ cli ][ api ][ desktop ][ web ][ claude ]#claude#agentic-engineering#claude-code#codex#software-factory#dataMIT$open-sourceupdated 2 days ago

Install with your AI

Paste into Claude Code, Cursor, or any agent — it reads the repo and wires the tool into your project.

Install and set up factory (git-clone project) into my current project.
Found on https://claudeers.com/factory
Repo: https://github.com/addyosmani/factory
Homepage/docs: —
Detected install method: git-clone → git clone https://github.com/addyosmani/factory
Category: data. Platforms: cli, api, desktop, web.
Read the repo's README for exact setup and env vars, then install it and wire it into my project.

Claudeers Health Verdict:
unknown; community-verified: false. Confirm the source before running anything.
// or clone
git clone https://github.com/addyosmani/factory

// compatibility

Platformscli, api, desktop, web
Operating systems
AI compatibilityclaude
LicenseMIT
Pricingopen-source
LanguageShell

Factory: a reference software factory

A software factory is a repeatable loop around software delivery. Instead of opening a new agent session for every issue and steering it by hand, you define what work may be attempted, how work starts, what evidence must be produced, and where a human must make the decision.

This repository installs that operating model into an existing GitHub project using stock Claude Code. A thin Codex adapter uses the same policy, queue, gates, and evidence files. There is no custom orchestrator or queue service to run.

In practical terms: GitHub Issues become a work queue. Scheduled agents triage the queue, implement bounded tasks, run your real tests, obtain an independent review, and open draft pull requests. Humans remain responsible for ambiguous requirements, system design, load-bearing changes, and every merge.

What this gives you

Once configured, the factory can:

  • inspect new GitHub issues and route each one to implementation, specification, a named question, or a known blocker
  • pick up small work that your charter explicitly allows, claim it without racing another run, implement it on a branch, and open a draft pull request
  • run deterministic type, lint, test, build, audit, and architecture checks, failing closed when a required check is missing
  • ask a fresh verifier to read the diff cold and prove that the new test fails without the implementation
  • verify pull requests when they open, keep a visible review queue, and stop producing when that queue reaches your limit
  • monitor the default branch and factory health, then feed findings back into GitHub as new issues

The value begins after code generation. This is a version-controlled method for deciding what an agent may pick up unattended, how independent runs hand work to one another, and what proof a human receives before making the final call.

The mental model

There is no background factory process in this repository. The repository supplies the rules and procedures. Claude Code cloud routines provide the default clock and compute. GitHub carries the durable queue and pull requests. Each run starts fresh, handles one stage, records evidence, and stops.

Factory conceptConcrete mechanism
Intent and risk budgetA human-owned docs/factory/CHARTER.md
Work queueGitHub Issues with factory:* labels
Handoff between stagesA structured factory-handoff:v1 issue comment
Standard operating proceduresVersion-controlled Claude and Codex skills
Clock and triggersClaude routines, schedules, GitHub events, or the optional API-trigger Action
WorkerA fresh Claude Code or Codex session
Quality controlYour test commands, gates.sh, and an independent verifier
Control room/factory, backed by live issues, PRs, and run records
Release authorityA human reviewing and merging the pull request

Each loop is short and restartable. Broad goals are decomposed into queue items that one run can claim and finish. GitHub labels and committed files survive when sessions end, making a failed run inspectable and allowing the next run, or a different harness, to continue without relying on conversation history.

How an issue becomes a reviewed pull request

flowchart LR
    I["GitHub issue"] --> T["Scheduled triage"]
    T -->|"small and allowed"| R["ready-to-implement"]
    T -->|"needs decisions"| S["ready-to-spec"]
    T -->|"blocked or unclear"| P["needs-info / wait"]
    S --> H["Human-guided spec"]
    H --> R
    R --> B["Implementation run"]
    B --> G["Gates + fresh verifier"]
    G --> D["Draft pull request"]
    D --> V["PR verification"]
    V --> C["/factory control room"]
    C --> M{"Human decision"}
    M -->|"merge"| X["Ship"]
    M -->|"revise or close"| D
    X --> W["Weekly monitor"]
    W --> I

For example, suppose issue #142 reports that expired tokens return 500 instead of 401:

  1. The scheduled triage routine reads the issue, checks the charter, and decides whether it is small and permitted. It applies one queue label and writes a handoff containing the expected files, completion condition, gate level, and confidence.
  2. If the issue is factory:ready-to-implement, a later implementation run claims the deterministic branch claude/fq-142. Only the first push wins, so two scheduled sessions cannot both own the issue.
  3. The implementation run writes a failing test, makes the scoped change, runs the required gates, and delegates to a fresh verifier. It opens a draft PR only if those checks agree.
  4. Opening the PR can trigger a separate verification routine. That routine reruns the gates, checks scope, and leaves a verdict on the PR.
  5. /factory shows the PR in the human review queue. A person reads the evidence and decides whether to request changes, close it, or merge it. No routine merges.

If triage cannot infer product intent, the issue goes to factory:ready-to-spec and the spec workflow pauses at four explicit human approval gates. If it needs a missing fact, the issue is parked with the question rather than converted into speculative code.

Where the human stays in the loop

The factory automates repeated mechanical steering while keeping engineering judgment with a person. That person still:

  • writes the charter that defines risk, scope, protected paths, and the review-queue limit
  • approves product intent, observable behavior, technical design, and implementation slices for work that needs a spec
  • reads changes to load-bearing code and any change to an existing test
  • decides whether every pull request should merge
  • accepts or rejects proposed changes to the factory's own constraints

Agents may classify issues, move queue labels, implement permitted work, run checks, and open draft PRs. They may not quietly widen their scope, rewrite the charter, approve their own work, or merge. GitHub branch protection is the final enforcement boundary.

How work starts from GitHub

One current product limit matters to the first arrow in the diagram: Claude routines have native GitHub triggers for pull requests and releases, but not for newly created issues. This reference uses an hourly scheduled triage routine to poll for untriaged issues. That is the simplest reliable default and means an issue may wait until the next run.

If you need immediate triage, install the optional GitHub Action. It reacts to the issue event and calls the triage routine's API endpoint. Pull-request verification can use the native pull_request.opened trigger. LIMITS.md documents the trigger boundary and the tradeoff in detail.

Where Claude Code and Codex fit

The factory method is shared; the unattended automation is Claude-first in this reference.

CapabilityClaude CodeCodex
Project policyCLAUDE.md plus the shared charter and contractAGENTS.md plus the same charter and contract
Repeatable stagesCanonical skills under .claude/skills/Thin adapters under .agents/skills/
Interactive triage, spec, implementation, and statusYesYes
Deterministic gates and GitHub queueSharedShared
Unattended schedule supplied by this repositoryFive prompts for Claude cloud routinesNot provisioned automatically
Native GitHub trigger used herePull-request verificationNot packaged by this reference

Codex can run the same stages interactively, or you can map them to Codex goals and automation surfaces available to you. The repository does not create those schedules or claim that their lifecycle matches Claude routines. Whichever harness starts a run, GitHub labels remain the queue and the shared contract remains the policy.

Codex reads AGENTS.md, discovers repository skills, and can load the committed repository hook. The adapters point back to the canonical Claude workflows rather than maintaining a second implementation.

Start here

This repository is an installer for another project. Clone it, run install.sh against the repository you want to automate, then open that target repository in your coding agent.

  • Deciding how much machinery you need? Read ADVICE.md for a pragmatic guide to starting with stock Claude Code or Codex, budgeting verification, and knowing when this Factory reference earns its additional structure.
  • Want to see the full loop first? Explore the Reel Good demo, then follow its step-by-step workshop to apply Factory to a small TMDB movie app with Claude Code Desktop or Codex.
  • Starting from a desktop app? Follow GETTING_STARTED.md. It has separate Claude Code Desktop and Codex/ChatGPT Desktop walkthroughs, including the first prompts to paste and the checks to run before enabling writes.
  • Ready for Claude cloud sessions and routines? Follow QUICKSTART.md after the local desktop dry run is predictable.
  • Evaluating the design first? Read ARCHITECTURE.md and the honest product constraints in LIMITS.md.
factory/
├── README.md            <- you are here
├── ADVICE.md            when the harness is enough, and when Factory helps
├── GETTING_STARTED.md   desktop-first local setup
├── QUICKSTART.md        Claude cloud sessions and routines
├── ARCHITECTURE.md      why it is shaped this way
├── ROUTINES.md          the five routine prompts, copy verbatim
├── LIMITS.md            honest constraints + corrections to the common plan
├── CONTRIBUTING.md      change map and validation expectations
├── CLAUDE.md            Claude Code contributor instructions
├── AGENTS.md            Codex contributor instructions
├── install.sh
├── tests/               disposable-repo smoke tests
└── template/            shared contract plus Claude Code and Codex adapters

Install

git clone https://github.com/addyosmani/factory.git
cd /path/to/your/repo
/path/to/factory/install.sh --dry-run .
/path/to/factory/install.sh .

Then read GETTING_STARTED.md. The installer never overwrites an existing file, so re-running it is safe.


What gets installed

PieceFileDoes
Charterdocs/factory/CHARTER.mdHuman-owned tier, load-bearing paths, automatable work, definition of done, and stop conditions
Contractdocs/factory/CONTRACT.mdHarness-neutral queue protocol, policy, and durable-evidence rules
Gates.claude/scripts/gates.shTypes, lint, tests, build, audit, mutation, architecture. Three levels. Emits a verdict line no agent may paraphrase.
Live queueGitHub factory:* labelsVisible state and handoff between independent runs
Concurrency claimdeterministic claude/fq-<n> branchFirst non-forced push wins; later runs stop
Triage.claude/skills/factory-triage/Issues → live labels plus a reviewable queue snapshot
Spec.claude/skills/factory-spec/Four human-approved gates before any code exists
Implement.claude/skills/factory-implement/One item, test first, gates green, independently verified, draft PR
Verifier.claude/agents/factory-verifier.mdReads the diff cold. Reverts the fix to prove the test fails. Rejects when uncertain.
Critic.claude/agents/factory-critic.mdAdversarial second lens on load-bearing changes
Verify.claude/skills/factory-verify/PR-level check, driven by a GitHub-triggered routine
Monitor.claude/skills/factory-monitor/Weekly sweep that closes the loop by filing issues
Control room/factoryWhat needs you, right now, review queue first
Tuning/factory-tuneMonthly constraint review, proposes only
Merge guard.claude/hooks/block-merge.shBlocks common shell merge paths; GitHub rules remain the enforcement boundary
Doctor.factory/scripts/doctor.shFinds placeholders, missing labels, missing remotes, and setup gaps

The four ideas doing the work

1. Everything lives in the repo. Cloud sessions start from a fresh clone. Committed .claude/ reaches them; your ~/.claude/ does not. So one set of files drives terminal, Desktop, cloud, and routines with no config to keep in sync.

2. Autonomy tracks consequence, not difficulty. The charter's TIER sets how much freedom every routine gets. A ten-thousand-line migration on an unlaunched project is a safer bet than a fifty-line change to a client's auth path, and the config should say so.

3. The gate script is the verdict. gates.sh ends with a line skills must quote verbatim. A missing required gate is MISCONFIGURED with exit 2, so an absent test command cannot quietly become a green run.

4. The writer never grades the work. Implementation delegates to a separate verifier that reads the diff cold and is told to ignore any account of what was done. Its best check is one no gate can make: revert the fix and confirm the test actually fails.

The two constraints most people delete

Back-pressure is a number. STOP_IF in the charter caps how many items may sit awaiting review. When the queue is full, the implement routine refuses to start. The binding constraint on a factory is not how many agents can run, it is how many decisions are pending your judgment.

Merge is never automated, on any tier. Enforce this with a GitHub ruleset or branch protection. The committed Claude and Codex hooks catch common shell routes, but hooks are a guardrail rather than a complete security boundary.


Before you build on this

Read LIMITS.md. The headline:

  • There is no GitHub issues trigger. Routine GitHub triggers cover pull_request and release only. The canonical new issue → triage arrow cannot be built with a stock routine. The template polls on a schedule by default and ships an optional Action that fires the routine's API endpoint if you need it instant.
  • Cloud environment config cannot be committed. Network, env vars, and setup scripts are account-level UI state. Document yours in a CLOUD-ENVIRONMENT.md.
  • A green run status does not mean the task succeeded. It means the session exited without an infrastructure error.
  • Environment variables are not secrets. Leave GH_TOKEN unset; the GitHub proxy handles auth and keeps the credential out of the VM.

LIMITS.md §7 also corrects the widely circulated build plan point by point. The load-bearing error in that plan is the issue trigger, because it is the first stage of the pipeline.

Validate the reference

The local suite creates disposable Git repositories and exercises installation, idempotency, fail-closed gates, deterministic claim races, merge guards, setup diagnosis, and negative-test restoration:

bash tests/run.sh

License

MIT © 2026 Addy Osmani.

Further reading

Start with Dex Horthy's software-factory playbook, "Harness Engineering Is Not Enough: Why Software Factories Fail". It makes the most important constraint concrete: generation scales more easily than human judgment, verification, and long-term comprehension.

This reference is intentionally smaller than the organization-scale designs above. In a personal portfolio, developer variability is not the binding constraint. One person's review attention is the entire quality apparatus, which argues for fewer moving parts, state owned by the repository, and a hard cap on pending decisions.

// faq

What is factory?

A reference software factory for Claude Code and Codex. It is open-source on GitHub.

Is factory free to use?

factory is open-source under the MIT license, so it is free to use.

What category does factory belong to?

factory is listed under data in the Claudeers registry of Claude-compatible tools.

1 views
49 stars
unclaimed
updated 2 days ago

// embed badge

factory on Claudeers
[![Claudeers](https://claudeers.com/api/badge/factory.svg)](https://claudeers.com/factory)

// retro hit counter

factory hit counter
[![Hits](https://claudeers.com/api/counter/factory.svg)](https://claudeers.com/factory)

// reviews

// guestbook

0/500

// related in Data & Analytics

🔓

Wrap Antigravity, ChatGPT Codex, Claude Code, Grok Build as an OpenAI/Gemini/Claude/Codex compatible API service, allowing you to enjoy the free Gemini 3.1 P…

// datarouter-for-me/Go48,367MIT[ claude ]
🔓

Apache Airflow - A platform to programmatically author, schedule, and monitor workflows

// dataapache/Python46,515Apache-2.0[ claude ]
🔓

Marketing skills for Claude Code and AI agents. CRO, copywriting, SEO, analytics, and growth engineering.

// datacoreyhaines31/JavaScript44,798MIT[ claude ]
🔓

CLI tool for configuring and monitoring Claude Code

// datadavila7/Python30,319MIT[ claude ]
→ see how factory connects across the ecosystem