Building FrenchExDev with Claude AI
Claude Code is not the author — it's the pair programmer. Every design decision, architecture choice, and API shape comes from me. Claude accelerates the execution.
Why Claude Code?
FrenchExDev is a 57-project monorepo spanning source generators, CLI wrappers, PowerShell modules, and full-stack applications. That's a lot of surface area for one developer. Claude Code acts as a force multiplier — not by replacing thought, but by compressing the distance between an idea and its implementation.
I use Claude Code (Anthropic's CLI agent) as my primary development companion. Not a chatbot I paste snippets into — an agent that reads my codebase, understands my patterns, and works inside my projects directly.
How I Use It
Architecture & Design Conversations
Before writing code, I use Claude to pressure-test design decisions. When I designed the BinaryWrapper three-phase pipeline (scrape → generate → execute), I iterated on the architecture through conversation — exploring trade-offs between runtime reflection vs. source generation, discussing how multi-version merging should work, and refining the IHelpParser abstraction before writing a single line.
Claude doesn't decide the architecture. It helps me think through it faster by challenging assumptions and surfacing edge cases I hadn't considered.
Source Generator Development
Roslyn source generators are notoriously difficult to debug. Claude Code is invaluable here — it can read the generator code, the emitted output, and the consuming project simultaneously, helping me trace why a generated builder is missing a flag or why VersionDiffer.Merge() produces unexpected annotations.
When I built the BuilderClassEmitter, Claude helped me work through the template logic for nested builders (BuilderList<T, TBuilder>), version guard injection, and the SemaphoreSlim-based caching pattern — all while keeping the emitted code clean and readable.
Code Generation at Scale
The Podman wrapper alone has 386 generated files across 58 scraped versions. When refining the CobraHelpParser to handle edge cases in Podman's help output, Claude helps me:
- Identify patterns across failing test cases
- Adjust parser logic without breaking existing version coverage
- Validate that generated command classes match expected signatures
Test Writing & Property-Based Testing
I use Claude extensively for writing tests — not to generate boilerplate, but to help design property-based tests with CsCheck. Defining the right generators and properties for something like VersionDiffer (where the output must be a valid merge of N input trees) requires careful thought about invariants. Claude helps me formulate those invariants precisely.
Documentation
The doc/ARCHITECTURE.md and doc/HOW-TO.md files across the ecosystem are written with Claude's help. I describe the system, Claude helps structure the explanation — mermaid diagrams, clear sections, consistent formatting. The content is mine; the polish is collaborative.
PowerShell Module Development
Claude Code handles PowerShell fluently. When building DevPoSh, the infrastructure modules, and the Claude.PoSh lifecycle management tooling, Claude helps with:
- Advanced parameter validation patterns
- Pipeline-friendly cmdlet design
- Cross-platform compatibility (Windows, Linux, macOS)
- Pester test scaffolding
Refactoring & Code Quality
With 57 projects sharing conventions, consistency matters. Claude helps me apply patterns uniformly — converting a library to use Result<T> instead of exceptions, adding [SinceVersion] annotations to a new wrapper, or restructuring a project to match the ecosystem's documentation standards.
What Claude Doesn't Do
- No architecture decisions. Claude proposes, I decide. Every public API shape, every abstraction boundary, every design trade-off is a human choice.
- No blind code generation. I don't ask Claude to "write me a CLI wrapper." I design the system, then use Claude to accelerate specific implementation tasks within that design.
- No copy-paste from chat. Claude Code works inside my projects — reading files, running tests, editing code in place. The context is the codebase, not a chat window.
The Workflow
My typical workflow with Claude Code:
- Design — I sketch the approach, discuss trade-offs with Claude
- Implement — Claude helps write code within my architectural decisions, following existing patterns in the codebase
- Test — Claude helps write tests, I verify they test the right things
- Refine — Iterate on edge cases, error handling, and API ergonomics
- Document — Claude helps structure documentation, I ensure accuracy
Claude Code Skills
I've built custom Claude Code skills (stored in Skills/) that encode project-specific knowledge:
- Documentation generation following FrenchExDev conventions
- .NET project scaffolding matching ecosystem patterns
- Quality gate configuration templates
- Architecture review checklists
These skills give Claude project-aware context, so it doesn't just know C# — it knows my C#.
My Take
AI-assisted development is not about replacing developers. It's about expanding what a single developer can realistically build and maintain. FrenchExDev — 57 projects, 15+ libraries, 6 CLI wrappers, thousands of generated files — would take significantly longer without Claude Code as a daily tool.
The key is keeping the human in the loop for decisions that matter: architecture, API design, what to build and why. Let the AI handle the throughput. Keep the judgment.
Claude Code is developed by Anthropic. FrenchExDev uses Claude Opus and Sonnet models through the Claude Code CLI agent.