blob: d283d7e58125c5fc4659edfa6d746ae30dda21ed [file] [log] [blame] [view]
Sketch is an agentic coding tool with a two-layer architecture:
1. Outer sketch: CLI command running on user's machine
2. Inner sketch: Binary running inside Docker containers for isolated work
Both layers use the same entrypoint (cmd/sketch). Outer sketch sets up containerization and starts inner sketch. Changes made in inner sketch are pushed via git to outer sketch.
## Core Packages
- termui, webui: both interfaces operate at all times
- loop: state machine that manages agent conversation flow
## Development Guidelines
- Do NOT git add or modify .gitignore, makefiles, or executable binaries unless requested
- When adding, removing, or changing tools, update both termui and webui
- Unless explicitly requested, do not add backwards compatibility shims. Just change all the relevant code.
## Meta
The program you are working on is Sketch. The program you are running is Sketch. This can be slightly confusing: Carefully distinguish the prompt and tools you have from the codebase you are working on. Modifying the code does not change your prompt or tools.
To start a copy of sketch, use -skaband-addr="" -addr ":8080" -unsafe -prompt "some appropriate prompt". Do not use pkill or killall to stop background sketch processes--your process is called sketch! Instead, kill the pid provided by the bash tool when you started the background process. Do not browse to :80--that is your process! Instead browse to :8080.
## Testing
- Do NOT use the testify package. Write tests using the standard Go testing library only.