noschmarrn.dev
EN DE

$ ./how --explain

How I Build

Agentic coding with Claude Code and GSD. Not “hey AI, make me an app” — more like running a kitchen: I write the menu and taste every plate. The brigade does the chopping. Ridiculously fast, and very, very literal.

michael@passau:~

$ cat how.txt

I decide what gets built. The agent writes most of the code.

A spec-driven loop keeps us both honest: discuss → plan → execute → verify → ship.

Nothing ships until it ran on my own installs first.

// 01 — the words

Vibe Coding vs. Agentic Coding

The homepage says vibe coder. That's where I started, and the name stuck. Here's the honest fine print — because the two get thrown together a lot, and they're not the same thing.

vibe coding

You describe what you want, the AI spits out code, you paste the error back in. Repeat until it sort of works.

  • prompt → hope → copy error → repeat
  • nobody really knows what's in the codebase
  • no plan, no tests, no memory between sessions
  • great for a weekend toy, bad for anything someone depends on

agentic coding ← this is me

The AI works as an agent inside the project: it reads the codebase, runs commands and tests, writes commits. I'm not the typist anymore — I set direction, make decisions and check the work.

  • agent works directly in repo & terminal
  • decisions and plans written down before any code
  • every step verified — by tests and by me
  • the human owns the what and the why
// 02 — the loop

The Loop

My setup: Claude Code as the agent, and GSD on top — originally “Get Shit Done”, today GSD Core. GSD forces structure: every phase of a project goes through the same loop, decisions and plans live as files in the repo, and the heavy lifting runs in fresh sub-agents so the AI doesn't slowly get dumber as its memory fills up.

  1. 00
    Ideame

    Every project starts with a real problem — mine, or someone's I know. No AI involved. A truck cab, 6am, coffee, and a “wouldn't it be nice if…”.

  2. 01
    Discuss/gsd-discuss-phaseme + agent

    Before a single line of code: what exactly are we building, what's out of scope, which decisions are mine to make. The agent asks the annoying questions, I answer them. Result: a written context file the whole phase builds on.

  3. 02
    Plan/gsd-plan-phaseagentme: approve

    The agent researches and breaks the phase into small plans, each one sized to fit a fresh context. I read them and push back where they're wrong. No plan, no code.

  4. 03
    Execute/gsd-execute-phaseagent

    Now the agent codes — in parallel waves, clean context per plan, one atomic git commit per task. This is the part people picture when they hear “AI coding”. It's maybe a third of the actual work.

  5. 04
    Verify/gsd-verify-workme

    I walk through what was built, click through it, try to break it. Whatever fails becomes a fix plan. Nothing is “done” just because the agent says so.

  6. 05
    Ship/gsd-shipme + agent

    Pull request, review, merge, release through Jenni. Then it runs on my own installs first — for weeks, not days. Then the next phase. Ships when done.

// 03 — a session

What It Looks Like

A condensed replay of how one feature comes together — the weather log in Schneespur. Real workflow, shortened and simplified output. green is me, grey is the agent.

michael@passau:~/schneespur — claude

> /gsd-discuss-phase 7

● Phase 7 — weather at the time of service

? Providers disagree. Which one is authoritative?

michael › BrightSky in Germany, Open-Meteo as fallback. Store the raw values too.

? One snapshot per run, or one per stop?

michael › Per stop. That's exactly what gets disputed later.

✓ CONTEXT.md written — 6 decisions locked, 2 deferred

> /gsd-plan-phase 7

● researching providers · reading codebase …

✓ 3 plans · each fits a fresh context · plan check passed

michael › Plan 2 caches forever. Weather goes stale — cap it at 10 minutes.

✓ plan 07-02 revised

> /gsd-execute-phase 7

● wave 1 · 07-01 provider interface + BrightSky / Open-Meteo clients

● wave 1 · 07-02 per-stop snapshot job + cache

● wave 2 · 07-03 weather block in the PDF proof-of-service

✓ 11 atomic commits · all tests passing

> /gsd-verify-work 7

michael › PDF says 3.0 °C, the app says 2.9. Rounding?

● diagnosing … PDF rounds, app truncates → fix plan 07-04

✓ fixed · re-verified by michael

> /gsd-ship 7

✓ PR opened. Next stop: my own installs. Ships when done.

// 04 — who does what

Who Does What

me

  • the idea, and the why behind it
  • every decision about scope and behaviour
  • reading plans — and saying no
  • testing on real installs, in real conditions
  • deciding what ships, and when

the agent

  • knowing the whole codebase at once
  • research and first drafts of every plan
  • writing most of the code and the tests
  • commits, refactors, the boring bits
  • catching things I'd have missed

Where it goes wrong

The AI is sometimes confidently wrong. It overbuilds. It forgets what we decided yesterday. That's not a reason to avoid it — it's the reason for the loop: decisions on disk, fresh context for every task, a human who verifies, and a long testing phase on my own installs.

I'm not a trained programmer. So I don't trust code because it looks right. I trust it because it ran.

// 05 — your turn

Got an Idea?

Here's the thing: you don't have to learn any of this. If you've got an idea for a tool — something that bugs you at work, in your trade, your club, your town — and you don't feel like wrestling with an AI yourself: let's talk.

This isn't a services page. There's no package and no hourly rate here. I do this because it's fun, and a good idea is the best fuel there is.

$ my favourite version

We build it as open source. Your problem gets solved — and everybody else with the same problem gets the solution too.

That's exactly how Schneespur happened: one colleague's problem, today anyone can install it for free.

What happens after you write

  1. You describe the problem. Three sentences, no spec needed. I reply within a few days — evenings, remember.
  2. I tell you honestly what I think. Can this be built with AI, roughly how big is it, and can it be open source? If the answer is "not with me", I'll say so and point you somewhere better.
  3. We build something you can touch. A prototype, running on a real URL, usually within a few weeks. Then we decide together whether to go on.

Other ways this can go

Good fit / not a fit

michael@passau:~

$ mail michael

Three sentences are enough:

1. What's the problem? 2. Who has it? 3. What exists already?

→ info@noschmarrn.dev

// replies come evenings & weekends — daytime I'm moving 40 tonnes.