cd /news/ai-agents/show-hn-lights-on-software-factory-b… Β· home β€Ί topics β€Ί ai-agents β€Ί article
[ARTICLE Β· art-153399] src=github.com β†— pub= topic=ai-agents verified=true sentiment=↑ positive

Show HN: Lights-on software factory boilerplate for Claude Code

Gojko Adzic published a boilerplate repository, lights-on-software-factory, for running a "lights-on software factory" with Claude Code, based on the setup developed for Votito, where the orchestrator cut token spend by around 80% compared with bare-bones Claude workflow execution. The repository bundles a sandboxed container that shares only the workspace directory with the host, a deterministic bash command regulator that auto-approves or denies commands with instructions on what to do instead, a PostToolUse linter hook that runs on every JavaScript file Claude edits, a basic planning/implementation workflow, and a deterministic multi-agent workflow script generator that moves mechanical orchestration from inference to command-line tools. The project is positioned both as a starting template for new projects and as an educational demonstration of software factory concepts, with setup instructions in GETTING-STARTED.md.

read4 min views9 publishedOct 20, 2026
Show HN: Lights-on software factory boilerplate for Claude Code
Image: Michielbdejong (auto-discovered)

A starting point for running a lights-on software factory with Claude Code. Based on the setup developed for Votito, where the orchestrator reduced token spend compared to bare-bones Claude workflow execution by around 80%.

See gojko.net/slides/202609-gotocph.pdf for a quick overview.

The purpose of this repository is to act both as a simple boilerplate setup for new projects, and as an educational demonstration of the core concepts of software factories:

This repository provides setup for:

  1. A sandbox/container for running Claude Code in a secure environment, sharing only the workspace directory with the host. See CONTAINER.md for more information.
  2. A deterministic bash command regulator, to reduce approval fatigue and ensure agents execute the commands allowed by project-specific rules. The regulator performs a deep-inspection of bash commands and provides automated approve/deny with instructions on what to do instead if blocked. See REGULATOR.md for more information. Ask Claude to add more custom rules each time it asks you for approval.
  3. A deterministic linter-based feedback system for enforcing custom domain-specific rules, to help reduce human involvement in code review. A PostToolUse hook runs the linter on every JavaScript file Claude edits, and guides the agents to avoid common mistakes with helpful error messages. Ask Claude to write more custom rules each time you find yourself providing repetitive design/code feedback. Ask Claude to implement custom eslint language parsers for HTML/CSS/other file types. SeeLINTER-HOOK.md for more information.
  4. A basic planning/implementation workflow. This is a trivial example intentionally kept simple to demonstrate the format and serve as a foundation for the orchestrator. You should probably replace it with your own commands or more complex rules. See WORKFLOW.md for more information.
  5. A deterministic multi-agent Claude workflow script generator. Based on the plan produced by the implementation workflow, it creates Claude workflow scripts, structures testing and gates and avoids wasting inference tokens on the mechanical part of workflow orchestration. It speeds up workflow creation and moves many common workflow orchestration tasks from inference (LLM) to deterministic tools (command-line) speeding them up and significantly reducing token spend. See ORCHESTRATOR.md for more information.

The workspace directory contains Claude code setup and a trivial example project.

To set up the container and run a first change, start with GETTING-STARTED.md.

.
β”œβ”€β”€ README.md                    this file
β”œβ”€β”€ GETTING-STARTED.md           first setup and a first change
β”œβ”€β”€ SETTINGS.md                  what settings.local.json wires up
β”œβ”€β”€ LINTER-HOOK.md               the lint hook and custom lint rules
β”œβ”€β”€ REGULATOR.md                 the Bash-command regulator
β”œβ”€β”€ ORCHESTRATOR.md              how the orchestrator works inside
β”œβ”€β”€ WORKFLOW.md                  the user flow, from an idea to a finished run
β”œβ”€β”€ CONTAINER.md                 the container image and the root goals
β”œβ”€β”€ LICENSE
β”œβ”€β”€ makefile                     container goals: docker-image, init, claude, shell, test, lint, root
β”œβ”€β”€ vm/Dockerfile                the container image (Alpine, Node.js, make, git, ...)
β”œβ”€β”€ .gitignore
β”œβ”€β”€ .claude-home/                git-ignored; Claude Code login and history of the container
└── workspace/                   the project; `make claude` starts Claude Code here
    β”œβ”€β”€ CLAUDE.md                includes CONTRIBUTING.md for Claude Code
    β”œβ”€β”€ CONTRIBUTING.md          workspace layout, commands and rules
    β”œβ”€β”€ .claude/
    β”‚   β”œβ”€β”€ settings.local.json  hooks, env, permissions, preferences
    β”‚   β”œβ”€β”€ agents/              workflow-worker, workflow-gate, workflow-check
    β”‚   β”œβ”€β”€ commands/            impact-analysis, plan-execution, execute, regulator
    β”‚   └── workflow/
    β”‚       β”œβ”€β”€ README.md        plan notation and generator reference
    β”‚       β”œβ”€β”€ package.json     {"type": "module"} for the tooling
    β”‚       β”œβ”€β”€ bin/             hook entries and command-line tools
    β”‚       β”œβ”€β”€ src/
    β”‚       β”‚   β”œβ”€β”€ regulator/   regulator engine, rules.js, rules/
    β”‚       β”‚   β”œβ”€β”€ generator/   plan validator and workflow generator
    β”‚       β”‚   β”œβ”€β”€ lint/        eslint plugin, two rules, lint hook logic
    β”‚       β”‚   └── transient-dir.js
    β”‚       └── tests/           tests for all of the tooling
    β”œβ”€β”€ plans/                   plans, sidecars and progress records
    β”œβ”€β”€ src/format-greeting.js   sample module (replace it)
    β”œβ”€β”€ tests/format-greeting.test.js
    β”œβ”€β”€ eslint.config.js
    β”œβ”€β”€ makefile                 init, test, lint and the two workflow gate goals
    β”œβ”€β”€ package.json
    β”œβ”€β”€ package-lock.json
    └── .gitignore
  • GETTING-STARTED.md β€” start here: set up the container, start Claude Code and run a first change.
  • SETTINGS.md β€” the hooks, environment, permissions and preferences inworkspace/.claude/settings.local.json .
  • LINTER-HOOK.md β€” the lint-on-edit hook, the two example rules and how to write a rule.
  • REGULATOR.md β€” how the regulator decides, the roles, the notable rules, diagnosing a decision, configuring it and adding a rule.
  • WORKFLOW.md β€” the user flow:/impact-analysis ,/plan-execution ,/execute , watching and resuming a run,/regulator , and a worked example.
  • ORCHESTRATOR.md β€” how the orchestrator works inside: the pieces, the bins, the agents, the gate goals, progress and resume.
  • CONTAINER.md β€” the container image, the root goals, mounts, overrides, keepingnode_modules in the container, troubleshooting.
  • workspace/.claude/workflow/README.md β€” the plan notation, the run shape, the answer schemas and the fault list.

MIT. See LICENSE.

── more in #ai-agents 4 stories Β· sorted by recency
── more on @gojko adzic 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain β€” perfect for shipping the agent you just read about.

$git push zahid main
β†’ Live at https://your-agent.zahid.host βœ“
Get free account β†’ Pricing
from €0/mo Β· no card required
LIVE [news/show-hn-lights-on-so…] indexed:0 read:4min 2026-10-20 Β· β€”