People + agents / one engineering practice
The team behind the work.
One human. A team of agents. A software factory built around clear specifications, independent review, and evidence.

The human in the loop
Muhammad Sabir
Engineer, architect & platform builder
I set the direction, decide the scope, and own the outcome. My agents bring implementation and review capacity; the engineering decisions remain mine.
More about my backgroundThe agent team
Different models. Shared standards.These are the names in my working team. Assignments can change with the task; the specification and review standards travel with the role.
Fable
ClaudePlanning & orchestration
The default conductor in my factory roster: keeping the specification, questions, and next steps connected.
Opus
ClaudeImplementation
One of the implementers assigned a bounded brief, an isolated worktree, and a clear verification contract.
Sonnet
ClaudeTask-based collaboration
Part of my agent roster, with the role and scope chosen for the work at hand.
Astra
CodexReview & integration
The default reviewer and lander in the factory roster: examining specifications and checking implementations against their briefs.
Sol
CodexImplementation
Works from the same briefs and acceptance criteria, returning code and a handback for independent review.
GLM
OpenCodeImplementation
A member of the configurable implementation roster, using the same worktree and handback conventions.
Kimi
AI teammateReview & development
Works with me on reviews and development. I’m now bringing Kimi into the Software Factory workflow as well.
DeepSeek
OpenCodeImplementation
Another implementation option in the roster, held to the same brief, checks, and review process.
These agents are my team. We work through requirements, challenge specifications, write implementations, and examine the results together. I bring the product direction, engineering judgment, and responsibility for what ships.
“Built with AI assistance” only tells a small part of that story. The interesting part is how we organize the work.
My Software Factory #
I built Software Factory to give that collaboration a repeatable structure. It is a collection of role-specific skills, a small runner called Baton, and conventions for files and Git. It coordinates Claude Code, Codex, and OpenCode without requiring its own application server or database.
I think of this as an agent-driven development lifecycle—ADLC—with agents participating in planning, review, implementation, and verification. It fits the broader AI-driven development lifecycle, or AI-DLC, which puts AI execution and human oversight throughout the lifecycle. My factory turns that approach into two concrete loops: review the specification, then develop against it.
Roles and models are separate. Rondo, Refrain, Maestro, Virtuoso, and Cadence describe responsibilities. Fable, Astra, Opus, Sol, and the others are the agents that can fill them. A configurable roster determines who takes each job.
Two loops. Clear handoffs.
Specification → evidence01 / SPEC REVIEW
Make the specification hold up.
Rondo coordinates the review. Refrain is the reviewer that keeps its context across rounds.
Write the intent
A requirement, specification, design record, or brief gets a template and a version in Git.
Review against the contract
The reviewer checks completeness, contradictions, feasibility, and testable acceptance criteria. Findings get stable identifiers.
Resolve with the owner
I see the findings at the default checkpoint. The writing agent resolves what it can; decisions about scope and behavior come back to me.
Return to the same reviewer
The next round revisits earlier findings before adding new ones. The review does not start from scratch.
Record the verdict
Approval names the reviewed document revision. The loop also has a round cap and can stop for a decision.
Findings → corrections → review again
02 / SPEC DEVELOPMENT
Turn the specification into evidence.
Maestro coordinates the work. Virtuoso implements each brief. Cadence reviews and integrates the result.
Prepare bounded briefs
Issues and reviewed briefs define scope, dependencies, acceptance criteria, security, and the checks each implementation must pass.
Dispatch ready work
Each implementer gets an isolated worktree and a fresh context. Dependencies determine which briefs can run concurrently.
Hand back code and evidence
A handback identifies the branch, commit, checks, and remaining questions. An unresolved product decision is returned instead of guessed.
Review, then integrate
Cadence checks the source against the brief. Accepted work lands on the spec branch; refused work gets a correction round.
Gate the combined result
The final pass syncs main, reviews security, and runs the full gate. Maestro stops at a passing spec branch; landing on main and publishing are separate steps.
Refusal or failed gate → correction → verify
What keeps it grounded
The work leaves a trail.
- Context where it matters
- The document reviewer stays with the conversation. Implementers start with focused briefs and fresh contexts.
- Evidence before acceptance
- A successful agent exit is not proof of a finished feature. Source review, acceptance checks, and the full gate each answer a different question.
- Records that survive a session
- Review files, handbacks, and a manifest preserve decisions and progress. Baton records each run and can resume the appropriate vendor session.
- Lessons become checks
- A recurring mistake should lead to a stronger convention or a guard that can fail, so the next agent does not have to rediscover it.
A factory still evolving. Both the spec-review loop and Maestro’s development cycle have now run end to end. I keep refining the skills, runner, and verification rules as the team works.