Local Code by Draw Things

What a project keeps on disk

A project is a folder. Put instructions and skills in it for the agent, and Local Code keeps the project's memory, threads and packages there too.

Updated

Projects and the workspace

The workspace is the folder Local Code can read and write. Each project is a folder inside it, and each thread belongs to one project. The agent starts in the project folder and can work anywhere in the workspace, so keep sensitive work in a workspace of its own.

A project can hold these files besides your own:

Finance/
├── AGENTS.md                               instructions for the agent
├── .agents/
│   └── skills/
│       └── weekly-report/
│           └── SKILL.md                    a skill for this project
└── .localc/                                kept by Local Code
    ├── metadata.sqlite3                    threads and their history
    ├── context_cache.sqlite3               the model's saved context
    ├── templated_system_prompt_<model>.md  the system prompt, editable
    ├── USER.md                             memory about you
    ├── MEMORY.md                           memory about this project
    └── python/                             packages the agent installed

You write AGENTS.md and skills. Local Code creates and manages .localc. You can edit the text files in it too, including the system prompt each model uses.

AGENTS.md

Put instructions for the agent in an AGENTS.md file at the top of the project folder: how the project is laid out, which commands to run, what to leave alone. Local Code adds it to every conversation in the project.

# Finance

- Source data is in data/. Never change it; write results to outputs/.
- Use pandas and Matplotlib. Chart colors are in brand/colors.md.
- Round currency to whole dollars in reports, not in calculations.
  • Only the top of the project folder counts. Instruction files in subfolders or in the folders above are not read.
  • If a project has more than one instruction file, Local Code uses the first it finds of AGENTS.override.md, AGENTS.md and CLAUDE.md. A project already set up for another coding agent works as it is.
  • The file is guidance. What you ask for in a conversation comes first.
  • Local Code reads the file when you open a thread. After editing it, start a new thread or open the thread again.

Skills

A skill is a folder with a SKILL.md file that teaches the agent how to do one kind of task: your report format, a deploy procedure, an internal tool. Local Code comes with built-in skills for documents, charts, videos, images, the browser, MCP servers and more. Add your own in a .agents/skills folder.

---
name: weekly-report
description: Builds the weekly sales report. Use when asked for the weekly report.
---

# Weekly report

1. Read data/orders.csv and keep refunds as their own line.
2. Chart revenue by day with scripts/chart.py.
3. Save the report as outputs/weekly-report.docx.
  • description is required, up to 1,024 characters. The agent sees every skill's name and description, and reads the whole file when a task matches, so say what the skill does and when to use it.
  • name is optional, up to 64 characters. Without it, the skill is named after its folder.
  • Keep scripts, templates and examples next to SKILL.md and refer to them by relative path. The agent finds them from the skill's folder.
  • Local Code looks for .agents/skills in the project folder and in each folder above it, up to the workspace. A skill in the workspace's .agents/skills works in every project.
  • To use a skill on purpose, write its name after a dollar sign in your message, such as $weekly-report. The skill's text is sent with the message.
  • The list of skills the agent sees is capped at about 8,000 characters. With many skills, their descriptions get shortened, so keep them brief.

To make a skill from work you've just done, ask the agent to turn it into one. The built-in skill-creator skill handles the format and checks the result.

Memory: USER.md and MEMORY.md

When Memory is on in Settings, which it is by default, the agent keeps two short notes files for each project:

The project's memory files
FileHoldsLimit
.localc/USER.mdAbout you: your background, preferences and how you like to work1,375 characters
.localc/MEMORY.mdAbout the project: its environment, conventions and tool quirks2,200 characters

Both files go into every conversation in the project. The agent saves an entry when you ask it to remember or forget something, or when it notices something worth keeping. Every 10 turns in a thread, it also looks back over the conversation for things to save, and the thread shows “Reviewing Memory...” while it does.

  • Memory belongs to its project. A new project starts with none.
  • A conversation keeps the memory it started with. Entries saved during it reach the next thread you open.
  • You can edit the files yourself. Entries are separated by a line holding only §.
  • Turning Memory off in Settings stops the agent from reading or saving memory in every project. The files stay where they are.
Prefers charts with a white background and no gridlines.
§
Reports in euros; convert other currencies at the month-end rate.

Starter prompts and a demo video

These two files are for a project you'll hand to someone else, such as a template. Both are optional.

  • .localc/first_time_prompts.txt holds suggestions for a first message. When someone starts a new thread and the message box is empty, Local Code fills it with one of these, picked at random. Separate prompts with a line holding only §.
  • .localc/project_demo.mp4 is a video that a new thread shows in place of the welcome banner, on Mac and iPad. It can play in place or full screen, and people can close it.

Everything else in .localc

Other files Local Code keeps in .localc
File or folderWhat it holds
metadata.sqlite3The project's threads and their history. Deleting it deletes the threads.
context_cache.sqlite3An on-device model's processed context for the project's threads, so continuing a long conversation doesn't read it all again. It also lets an interrupted reply pick up where it stopped. See below.
python/Python packages the agent installs with pip, for this project only.
node/cache/npm's download cache for this project. Node packages go in node_modules in the project, as usual.
.ssh/, .curlrc, .netrcSSH keys, known hosts and config, and curl settings. Each project has its own.
tool_responses/The full text of long command output. The conversation keeps a shortened copy, and the agent reads the rest from here when it needs it.
templated_system_prompt_<model>.mdThe system prompt for each model used in the project. See below.

The context cache is usually the largest file here. It has no size limit, and a project you use a lot can reach several gigabytes. To free the space, close Local Code and delete context_cache.sqlite3, with its -wal and -shm files if they're there. Your threads stay. The next message in a long thread takes longer while the model reads the conversation again, and a reply that was interrupted can't resume.

If the project is a git repository, consider adding .localc/ to .gitignore. It holds conversation history and installed packages, and it can hold SSH keys.

Changing the system prompt

The first time a model runs in a project, Local Code saves the system prompt it uses as .localc/templated_system_prompt_<model>.md. Edit the text below the front matter, and that model uses your version in this project. Most changes belong in AGENTS.md; edit the system prompt only to change how the agent works at its base.

  • Keep the placeholders in double braces, such as {{SKILLS_INSTRUCTIONS}}. Local Code fills them in with the skill list, project instructions and other context. A local model's prompt also contains its special tokens; keep those too.
  • While the file is unedited, app updates replace it with the new default. Once you edit it, it stays as you left it, and you won't get later improvements to the prompt.
  • Delete the file to go back to the default. Changes apply the next time you open a thread.