livefolders init does this automatically — it detects your agent and writes the snippet to the right file:
| Agent | File written |
|---|---|
| Claude Code | CLAUDE.md |
| Cursor / Windsurf / Aider | AGENTS.md |
| GitHub Copilot | .github/copilot-instructions.md |
Or paste it manually into any agent's instruction file:
create_tool.md is mounted at the filesystem root — it contains
the complete folder.yaml reference: file types, input validation, secrets,
state, and pipelines. An LLM reads it and writes a working tool without ever leaving
the mounted filesystem:cat .livefolders/create_tool.md
The agent then follows this sequence on its own:
|
1. Discover tools
cat .livefolders/tools/index.md→ weather — forecast for any city → users — fetch users from API
2. Read usage instructions
cat .livefolders/tools/weather/how_to.md→ endpoint: forecast (write_invoke) → input: string, min_length: 1
3. Invoke the tool
echo "London" > .livefolders/tools/weather/forecastcat .livefolders/tools/weather/forecast→ ☁️ Overcast, 15°C |
4. Handle errors
echo "" > .livefolders/tools/weather/forecast→ [ERROR:INVALID_INPUT] input too short: minimum 1 characters required
5. Check timing & diagnostics
cat .livefolders/tools/weather/forecast.log→ duration_ms: 342 → exit: ok → stderr: (empty) |
|
.livefolders/tools/
├── index.md ← all tools listed here
├── demo/
│ ├── how_to.md ← LLM reads this first
│ ├── schema.json ← machine-readable schemas
│ ├── shout ← write text, read UPPERCASED
│ ├── shout.log ← last run: duration + stderr
│ └── status ← read-only status
└── users/
├── how_to.md
├── schema.json
└── list ← reads from REST API
|
1. Mount the filesystem
livefolders mount — runs in background, returns to prompt immediately.
2. LLM reads or writes a file
cat tools/users/list fetches users.echo "London" > tools/weather/forecast sends a query.
3. Handler runs, result returns
Your shell command, Python script, or curl call executes.
Output is returned as file content.
★ Changes hot-reload in ~1s
|