Good AI-Assisted Development Happens at the Systems Level, Not the Task Level

A Reddit post by u/johns10davenport argues that the real leverage in AI-assisted development comes from changing the system, not improving prompts. The author recounts a common frustration: every time they add a new feature to their Phoenix app, the AI coding agent ships the feature but omits the menu item. The page exists, the functionality works, but there's no way for a user to get there.
The Problem with Task-Level Fixing
The first instinct is to tell the model: "add the button." That works, but the human is still doing the thinking—diagnosing the problem and prescribing the fix. The author calls this "pedaling the Peloton so Anthropic can give me free tokens." Prompt engineering just makes you better at telling the model what to do, but you're still working for the model.
The System-Level Shift
Instead of fixing the missing button, the author asked: how do I make this mistake impossible in the future? Their solution uses BDD specs and Phoenix LiveView test helpers. The test framework's navigate function lets the agent jump directly to any page, passing tests without ever touching the UI. So they wrote a linter rule that prevents the agent from calling navigate. Now there's an allowed fixture that drops the test on a known starting route, and the only way the agent can reach the new feature is by clicking through the UI—which forces it to add the menu item to make the test pass.
The result: the problem will never occur again, not because of a better prompt, but because correct behavior is the only possible behavior.
Key Takeaway
Stop fixing the model's output. Start constraining its environment so the right output is the path of least resistance. Every mistake is a chance to design out the next one.
📖 Read the full source: r/ClaudeAI
👀 See Also

Using ntfy for OpenClaw agent notifications
A developer shares their experience using ntfy.sh's self-hosted version for push notifications from OpenClaw agents, avoiding Discord/Telegram bots by running ntfy serve on the same VPS and using HTTP post requests.

Practical Strategies to Avoid Claude Rate Limits on $200 Max Plan
A developer shares specific techniques that have prevented throttling on Claude's $200 max plan for over a month, including SQLite database queries, context handoff systems, and strategic hardware deployment.

Pre-coding routine with Claude Code: 5 MCP servers before writing a line
A developer shares a 60-90 second routine using 5 MCP servers (memory, codebase graph, Tavily search, Context7 docs) and safety hooks to dramatically reduce hallucinations and wasted edits.

Claude Code's tendency to validate flawed assumptions and prompting workarounds
A developer reports Claude Code will enthusiastically implement flawed architectures without questioning incorrect assumptions, leading to wasted debugging time. The workaround is to explicitly add "assume I might be wrong about the framing" to complex requests.