This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
api2cli is a Rust binary that exposes a generic REST endpoint and proxies incoming HTTP requests to CLI apps or downstream API apps. It translates HTTP request parameters/body into CLI arguments or forwarded API calls, and streams the response back to the caller.
It is currently at the initial scaffold stage.
cargo build # compile
cargo run # build and run
cargo test # run all tests
cargo test <name> # run a single test by name
cargo clippy # lint
cargo fmt # format- Binary crate: entry point at
src/main.rs - Rust edition 2024
- No dependencies added yet; expected additions:
clap(CLI parsing),axumoractix-web(HTTP server),reqwestorhyper(HTTP client/proxy),serde/serde_json(serialization),tokio(async runtime)
- Enter plan mode for ANY non-trivial task (3+ steps or architectural decisions)
- If something goes sideways, STOP and re-plan immediately - don't keep pushing
- Use plan mode for verification steps, not just building
- Write detailed specs upfront to reduce ambiguity
- Use subagents liberally to keep the main context window clean
- Offload research, exploration, and parallel analysis to subagents
- For complex problems, throw more compute at it via subagents
- One tack per subagent for focused execution
- After ANY correction from the user: update
tasks/lessons.mdwith the pattern - Write rules for yourself that prevent the same mistake
- Ruthlessly iterate on these lessons until mistake rate drops
- Review lessons at session start for relevant project
- Never mark a task complete without proving it works
- Diff behaviour between main and your changes when relevant
- Ask yourself: "Would a staff engineer approve this?"
- Write tests that provide real demonstration of working code, no mock tests, no always true tests
- Run tests, check logs, demonstrate correctness
- For non-trivial changes: pause and ask "Is there a more elegant way?"
- If a fix feels hacky: "Knowing everything I know now, implement the elegant solution"
- Skip this for simple, obvious fixes - don't over engineer
- Challenge your work before presenting it
- When given a bug report: just fix it. Don't ask for hand holding
- Point at logs, errors, failing tests - then resolve them
- Zero context switching required from the user
- Go fix failing CI tests without being told how
- Plan First: Write plan to
tasks/todo.mdwith checkable items - Verify Plan: Check in before starting implementation
- Track Progress: Mark items complete as you go
- Explain Changes: High-level summary at each step
- Document Results: Add review section to
tasks/todo.md - Capture Lessons: Update
tasks/lessons.mdafter corrections
- Simplicity First: Make every change as simple as possible. Impact minimal code.
- No laziness: Find root causes. No temporary fixes. Senior developer standards.
- Minimal Impact: Changes should only touch what's necessary. Avoid introducing bugs.