softwarefactory.build

A directory and guide library for agent-native software factories.

Build log / Phase 1–2

Phase 1 — empty repo, Workers, and a runner that never started

The site began as an empty GitHub repository. The first factory pass scaffolded Astro, five seed listings, then had to rip out a Cloudflare Pages assumption and land a Worker instead.

This log is about this repository, not a category myth. Dates are 19 August 2026 unless noted.

What was specified

A curated directory for agent-native software factories. Git as the content store. One YAML file per tool. No CMS, no accounts, no newsletter, no pay-to-play, no auto-merge. Cloudflare for hosting. A factory runtime that can validate a listing and open a draft PR from an issue.

The publisher founded Trevize. That conflict had to live on /methodology, not in a footer.

What actually happened

The GitHub repo was empty when the first agent started. There was no existing Astro app to extend. Phase 1 built the scaffold from scratch: Astro 5, Zod collections, five seed tools (Trevize, Cursor, Factory, Warp, Claude Code), core pages, Pagefind, a React filter island, issue forms, and CONTRIBUTING.

The first hosting pass assumed Cloudflare Pages. The product decision was Workers — Static Assets for the prerendered directory, a Durable Object (FactoryRuntime) for jobs. That meant deleting Pages-shaped config, adding @astrojs/cloudflare, wrangler.jsonc without a hardcoded account id, and a Worker entry that routes /factory/jobs* to the Agent. The environment that drafted the Worker could not wrangler deploy (no Cloudflare credentials). The operator deployed softwarefactory-build themselves. This log will not pretend otherwise.

What broke

GitHub Actions on a private repo. The first CI run died in seconds with no steps. That is the failure mode when Actions is not enabled for the repository, not a YAML typo. The workflow still landed. A later pass split content validation from third-party URL checks so a flaky vendor HEAD cannot fail the build.

Empty-repo start. Every path that assumed “add these files to the existing app” was wrong. The agent had to create package.json, the content schemas, and the pages, then keep them consistent.

Pages vs Workers. Shipping a Pages project would have been the faster demo and the wrong artifact. The rewrite cost a full config cycle and a second deploy path (npm run deploy = astro build + pagefind + wrangler deploy).

What agents got wrong

What shipped from that pass

Five listings. Two guides. No case studies. No compare or best pages. A Worker factory with validate, enrich, build-log, and issue-to-pr (draft PR, never merge). CI that was correct as YAML and useless until the repo’s Actions setting is flipped.

The rest of the brief — roughly a hundred listings, more guides, sourced case studies, compare/best, this log — is a later pass on the same rules.