Three Sources, One Truth — Validating the byhaushalt Parser Against PDF and STMFH Diagram

Agentic Coding with Claude Code

A series on software development with Claude Code — from raw PDF sources to a deployable web application.

We are building a complete software project with Claude Code — from raw PDF sources to a finished web application. The demo project is a visualization of the Bavarian state budget 2026/27. Each article shows which tool is in play: CLAUDE.md, Plan Mode, Skills, Slash Commands, Subagents, Worktrees, MCP, Hooks, and a full deploy. Code lives openly on Codeberg, with a tag per article to follow along. Ten articles plus the prologue.

  1. 0

    What Agentic Coding Actually Means

    Prologue · Series: Agentic Coding with Claude Code. Anyone reading tech newsletters, conference keynotes, and tool landing pages this year runs into two terms sold with identical promises: Vibe Coding and Agentic Coding. The future of programming, they say.
    9. May 2026
  2. 1

    CLAUDE.md as a Briefing

    Article 1 of the series — we install Claude Code, set up the byhaushalt repo, write the first memory file, and pin down what the agent has to follow in every session. Plus: permissions, source data, the first day.
    10. May 2026
  3. 2

    Explore Before You Build — Plan Mode with Subagents

    Article 2 of the series — before byhaushalt sees its first parser code, Claude Code maps the PDF structure of the Bavarian budget plans. Plan Mode, Explore subagent, and Architecture Decision Records as tools for exploring before implementing.
    10. May 2026
  4. 3

    Writing Custom Skills — PDF Parser Skill with pytest TDD

    Article 3 of the series — the first parser code for byhaushalt takes shape via TDD: a custom skill with trigger description, uv setup, six tests before implementation, and how the sum consistency test catches hallucinations in PDF parsing.
    11. May 2026
  5. 4

    Slash Commands — Automating Repetition Away

    Article 4 of the series — three slash commands make the parser repeatable: /parse-epl for any Einzelplan, /check-totals with built-in pytest, /diff-vs-gesamt for comparison against the full budget. Plus: what xfail reveals about parser gaps.
    12. May 2026
  6. 5

    Subagent-Driven Development — Building a Data Model in Parallel

    Article 5 of the series — v0.4 delivers three JSON files, not a data model. A plan file with three tasks and parallel subagents builds schema, normalization, and property-based tests. Plus: what format inconsistency teaches about parallelization.
    13. May 2026
  7. 6

    Worktrees — Building Three Visualizations in Parallel

    Article 6 of the series — three worktree branches, three visualizations over the same data model. Treemap, sunburst, and Sankey compared side by side rather than guessed at sequentially. Plus: why the decision in the end was not against two losers, but in favor of a switcher.
    16. May 2026
  8. 7

    MCP Servers — Documentation Lookup in the Editor

    Article 7 of the series — two MCP servers, one project configuration: Context7 fetches current library documentation directly into the editor before Claude has to guess. Plus a shadcn/ui migration and a chart-builder skill that calls Context7 deliberately.
    16. May 2026
  9. 8

    End-to-End with Playwright MCP — Tests That Claude Writes Itself

    Article 8 of the series — Markdown spec as E2E test contract: Claude reads the user flow, explores live in the browser via Playwright MCP, finds robust selectors, and writes the Playwright test. Three specs, three tests, three baseline screenshots.
    17. May 2026
  10. 9

    Hooks — Tests as a Gate in the Background

    Article 9 of the series — three hooks for byhaushalt: PostToolUse formats after every edit, PreToolUse blocks commits with debug leftovers, Stop runs fast tests but only for changed layers. Why an overly aggressive Stop hook does more harm than good, and why Playwright belongs in CI, not in a hook.
    18. May 2026
  11. 10

    From Branch to Live URL — Worktree PR Workflow and Codeberg Pages Deploy

    Article 10 of the series — how a Vite SPA in the repo becomes a live site on a custom subdomain. Branch protection for solo projects, a Bash script that fills the pages branch via git worktree, custom domain via DNS CNAME plus .domains file, HTTPS via Let's Encrypt. And why CI deliberately gets its own follow-up article.
    23. May 2026
  12. 11

    Three Sources, One Truth — Validating the byhaushalt Parser Against PDF and STMFH Diagram

    Bonus article of the series — how the byhaushalt demo parser holds up against two independent sources: the official EPL PDFs from the Bavarian finance ministry and the interactive budget diagram at stmfh.bayern.de. Σ revenues and Σ expenses match the PDF Σ to the cent; the residual difference against STMFH is data-vintage-related.
    23. May 2026