| Josh Bleecher Snyder | 6d4c7ea | 2025-05-12 12:14:24 -0700 | [diff] [blame] | 1 | Sketch is an agentic coding tool with a two-layer architecture: |
| 2 | |
| 3 | 1. Outer sketch: CLI command running on user's machine |
| 4 | 2. Inner sketch: Binary running inside Docker containers for isolated work |
| 5 | |
| 6 | 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. |
| 7 | |
| 8 | ## Core Packages |
| 9 | |
| 10 | - termui, webui: Both interfaces operate at all times |
| 11 | - loop: Central state machine that manages agent conversation flow |
| 12 | - claudetools: Tool calls available to LLMs |
| 13 | - llm: Common LLM interface and conversation management, with provider-specific integrations |
| 14 | |
| 15 | ## Development Guidelines |
| 16 | |
| 17 | - Do NOT git add or modify .gitignore, makefiles, or executable binaries unless requested |
| 18 | - When changing tool schemas, update both termui and webui |
| 19 | - For unsafe/recursive development, use `-unsafe` flag |
| 20 | - Unless explicitly requested, do not add backwards compatibility shims |
| Josh Bleecher Snyder | 385da54 | 2025-05-12 19:18:10 -0700 | [diff] [blame] | 21 | |
| 22 | ## Meta |
| 23 | |
| 24 | 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. |