agent-anatomylisted
Install: claude install-skill bowtiefunnel/bowtie-funnel-Labs
# agent-anatomy
Organize any AI agent's project into a **filesystem-first** layout: one agent =
one folder, every capability = a file in a conventionally-named subfolder.
Language-agnostic — tools can be Python, TypeScript, anything.
**Core principle: names come from file paths, not config.** `tools/issue_refund.py`
*is* the tool `issue_refund`. Never add a `name:` field to restate the path.
## The convention
`instructions.md` (the always-on system prompt) is the one **required** file.
Everything else is an optional, canonically-named subfolder. Classify each file:
| A file that… | goes in | notes |
|---|---|---|
| is the system prompt / persona / instructions | **`instructions.md`** | rename `prompt.txt`, `system.md`, etc. to this |
| does a discrete action the agent invokes | `tools/` | filename = tool name |
| is a markdown procedure followed on demand | `skills/` | e.g. `how-to-escalate.md` |
| runs on a timer / cron / "every morning" | `schedules/` | |
| receives inbound messages (webhook, bot) | `channels/` | Slack, HTTP, Discord |
| calls an outbound third-party API / service | `connections/` | external APIs, MCP servers |
| is a nested agent | `subagents/<name>/` | recurse — same convention |
| is durable state the agent reads back | `memory/` | |
| is shared code imported by tools/jobs | `lib/` | utils/formatters — not a capability |
| is dev scratch / TODOs / personal notes | leave in place | flag it, don't move |
## Two modes — detect first
**Empty or missin