A course that keeps itself current — and tells you exactly how.
Tool features change weekly; training data doesn't keep up. So this course re-checks its tool-specific content against the official docs on a schedule, health-checks its links, gates every change behind quality checks — and is honest about how automated that really is.
How this repo got here
A few representative moments from the build — drag the slider, use the arrow keys, or let it play. Each is drawn from the changelog below and the shipped git history.
The build-with-me workbench
Bring a real idea and generate its brief, system map, tasks, and QA plan — then install the whole method as agent skills you can reuse.
Moment 1 of 7: The build-with-me workbench. Bring a real idea and generate its brief, system map, tasks, and QA plan — then install the whole method as agent skills you can reuse.
On the path to self-improvement
Manual
A person updates everything by hand. Drifts the moment they stop.
Assisted
Agents do the work — re-sourcing docs, running checks, drafting changes. A human reviews and merges. A narrow safe class is cleared to auto-merge once CI passes, but until one ships, every change is still human-merged.
Autonomous
Scheduled agents ship low-risk, self-verified changes on their own — gated by CI and the deterministic safe-class check. We move here one proven mechanism at a time.
No magic — just mechanisms
Doc-sourced, never from memory
Every HubSpot and tool specific lives in a sourced block (“In HubSpot”, “In Claude Code”) that cites a live docs URL and a “verified” month. Platform facts come from the official docs, not recall.
Weekly content refresh
A scheduled agent re-checks each doc block against its source, refreshes the “field notes”, runs the build + lint, and opens a branch for review — it never auto-merges.
Weekly link-health check
A scheduled agent scans every documentation URL the course cites — including the HubSpot developer docs — and reports anything that rotted, so links and claims don’t silently go stale.
Quality gates on every change
pnpm verify (types + lint + a doc-link health check) and pnpm eval (an LLM judge that scores generated output against a rubric) guard changes before they ship.
CI gate on every push & PR
GitHub Actions runs the full verify suite (types + lint + course-integrity) and a production build on every push and pull request. main is branch-protected to require it before merge — the prerequisite that makes safe auto-merge possible.
Safe-class auto-merge
scripts/classify-change.mjs deterministically decides whether a scheduled agent's diff is in a narrow safe class (date/URL-only edits). If it is — and CI is green — the PR merges itself and lands as an Automated entry. Anything else fails closed to human review.
The honest version
Today this is mostly assisted self-improvement. Scheduled agents re-source the docs, health-check the links, and draft changes on their own — and a human reviews and merges them. The one exception is wired and live: a narrow safe class (re-checked dates, fixed links) is cleared to auto-merge once CI passes. Nothing has tripped it yet, so the auto-shipped count below is still 0 — honestly.
As each scheduled mechanism proves itself, more lands without a human in the loop — and those entries get tagged Automated below. So far that count is 0. Watch the line move.
Everything that's shipped
Each entry is tagged by how it was made: Automated (a scheduled agent shipped this with no human in the loop — ci passed and the safe-class check cleared it) · AI-assisted (an ai agent built it in a session; a human reviewed and merged) · Hand-built (a human wrote it directly).
- AnimationsAI-assisted
The agentic loop's ship beat lands harder
Restaged the “it ships” moment so it reads as a launch, not a blink-out — the token snaps to gold and holds while it detaches, then eases outward and fades in order.
- ProductAI-assisted
Relaunched as Agentic HubSpot CMS
The HubSpot course became the only public product — a one-time purchase with free ongoing updates. The homepage now lands on the course, and the general agentic-coding course was de-listed (kept authorable, not deleted).
- MarketingAI-assisted
Archived the build-along experiment
The “marketing team of AI agents” series had no HubSpot grounding, so it couldn’t be honestly repurposed: its routes now redirect to the course, and its always-on API endpoints were removed.
- ProductAI-assisted
Public sales page + true standalone gating
A public sales page at /courses/hubspot, and the course fully separated from the old subscription — buying it is the only thing that unlocks it, and a refund revokes it.
- ProductAI-assisted
HubSpot as a standalone product
Positioning with an honest throughline, its own entitlements, and a one-time Stripe SKU — pulled out of the main course into a contained product.
- ContentAI-assisted
Bespoke interactives + lesson visuals
Two hand-built interactives — Islands (server-first vs. whole-page client) and the global-module fan-out — plus diagrams and visual explanations across the lessons.
- ContentAI-assisted
The course shipped: Orientation + CMS
Ten lessons across HubSpot Orientation (map before you touch) and HubSpot CMS (content and code, entangled) — every HubSpot fact inside a sourced “In HubSpot” block checked against the official docs.
- ContentAI-assisted
Foundations: the sourced-fact block + quirks KB
The “In HubSpot” sourced-fact block, a blast-radius skill, and a knowledge base of verified HubSpot gotchas — the accuracy machinery the lessons are built on.
- ToolingAI-assisted
CI gate + the auto-merge path
GitHub Actions now runs verify + build on every push and PR; main requires it to pass before merge and auto-merge is enabled — the first real rung toward letting the weekly agents merge safe changes themselves.
- ToolingAI-assisted
Self-maintenance system
A doc-link health check (pnpm verify) plus two weekly scheduled agents that re-source content and report rot — the backbone of this page.
- ToolingAI-assisted
Behavioral eval for generated work
pnpm eval scores generated course artifacts with an LLM judge, hardened so a flaky verdict can’t masquerade as a quality failure.