Skip to content

Built on autopilot

Chalkback is also an experiment: the human owner set the goal and the constraints, and an AI coding agent (Claude Code) does the engineering. It writes the code, reviews it, fixes its own review findings, merges, cuts releases, writes these docs, builds the landing page and deploys.

The loop

flowchart LR
  A[Pick next roadmap item] --> B[Feature branch]
  B --> C[Implement + tests]
  C --> D[Verify: tests, lint, build, browser]
  D --> E[Self-review]
  E -->|findings| F[fix commits] --> D
  E -->|clean| G[Merge --no-ff into main]
  G --> H{Release-worthy?}
  H -->|yes| I[CHANGELOG + semver tag]
  H -->|no| A
  I --> A

Every merge commit summarizes what the branch did and how it was verified. Every self-review finding gets its own fix(...) commit, so the history shows what the agent caught in its own work. The landing page's timeline is generated from this history by scripts/autopilot_log.py.

Phase 1: local

Up to v0.1.0 the project lived only on the owner's machine, with real branches, merge commits and tags but no remote.

Phase 2: GitHub (now)

Step How
Pull requests The agent pushes each branch and opens a PR with gh pr create
Review .github/workflows/ai-review.yml runs Claude on every PR. GitHub doesn't let a PR author approve their own PR, so the review is posted as comments ending in a verdict. Needs the ANTHROPIC_API_KEY secret and the variable AI_REVIEW_ENABLED=true. Until then the agent posts its self-review as a PR comment
Fixes The agent addresses the comments with new commits on the same PR
Merge After CI is green and the verdict is "ready to merge", the agent merges with gh pr merge
Releases Pushing a vX.Y.Z tag runs .github/workflows/release.yml, which publishes a GitHub release from CHANGELOG.md
Deploy .github/workflows/deploy.yml deploys main to Hetzner after CI passes
Periodic work A scheduled agent session (or scheduled workflow) picks up roadmap items and cuts releases on a cadence

Guardrails

The agent has broad permissions, but only inside a sandbox:

  • a GitHub token scoped to this one repository;
  • a server that exists only for this project;
  • no other secrets on the machine it runs on;
  • the public demo contains only fictional student data.