Skip to content

v1.8.0 ·

A site that runs the lifecycle, and a doctor for the repo

The AIDLC website was a Vite and React single-page app with a generic indigo Tailwind look. It documented the framework but did not sell it. Nothing about it said this was a serious product. And it lived inside the monorepo as the aidlc-web package, on hosting I did not control.

This release replaced it. It also shipped a second, unrelated change: a command called aidlc doctor.

The site

The new site is a Next.js 16 static export on AWS Amplify, in my own AWS account, at aidlc.rodrigoasensio.com. I weighed three routes. A retheme of the old SPA was the smallest effort, but it kept the single-page architecture, the docs-shaped layout and no static generation, so it could not reach the goal. A standalone repository would have told the cleanest "own product" story, but every content change would need an npm publish round trip, and I would be running two repositories before the idea was proven. I chose a new package in the monorepo, designed from scratch, with the content package as a workspace dependency. Extracting it later stays cheap. The cost is a stretch where the new site is behind the old one.

The home page hero is a lifecycle simulator. It steps a canned full-feature run and a bugfix run through terminal frames, showing the state YAML and gate results at each step. It works without JavaScript, because the server-rendered markup is the first frame with the controls disabled.

The docs read from the source of truth. Pages load the @rasensio/aidlc-content package at build time, so templates, skills and guidance layers come from what ships. The CLI reference is generated by walking the built CLI's --help across all 16 top-level commands. A command that exists but is undocumented now fails the build.

The drift check became a real gate too. It regenerates and compares, and it checks the version number, the Node floor and tokens in page prose. It caught a real error while I built this: a page said Node 18 where engines said 22.13.

The search index is 69 records and gzips to 2.8 KB against a 100 KB budget. With no Google Analytics measurement ID, the build emits no analytics bytes, which I checked against real output. Lighthouse on mobile emulation against the deployed URL gave 97 performance, 96 accessibility, 100 best practices and 100 SEO, on the home page and the CLI reference. The cutover deleted 11 MB of the old site, its Vercel config and the project link, and the suite stayed green at 1486 tests.

The doctor

aidlc update had picked up an installer seam that did repo hygiene as a side effect. It wrote nested .gitignore files, cleared expired ephemera and untracked cost files that should never have been committed. The work was needed. But it was hidden inside a command whose name promised something else, and you could neither preview it nor run it alone.

aidlc doctor is now where it lives. It is a set of check-and-apply migrations, each safe to repeat because it tests state instead of assuming it. Ten shipped.

They come in two tiers. Safe ones apply themselves, since writing an ignore file harms nothing. Anything that touches the git index waits for a confirmation, --yes or a --dry-run preview. In a non-interactive session it declines and prints the exact command. A repair you cannot preview is one you cannot trust.

aidlc update now runs the same pass, so what people relied on still happens, and can now be inspected. One difference is deliberate: doctor exits non-zero when confirmation-tier work is pending, so CI can fail on an unhealthy repo. Update never fails over hygiene.

I ran it on this repository at release time. It wrote two missing .gitignore files and reported 16 committed cost files waiting to be untracked. It left them alone, because the session was non-interactive, and named the command to finish the job.