From d05b58965157c3d83ab18ab9abcd57ccf2dab46a Mon Sep 17 00:00:00 2001 From: PeninsulaInd Date: Tue, 17 Feb 2026 10:04:54 -0600 Subject: [PATCH] 2.5: Update CLAUDE.md with skills.py and skill format docs - Add cheddahbot/skills.py to Key Files table - Update skills/ description to mention YAML frontmatter - Add skills format to Conventions section - Fix ctx type annotation in docs (dict -> dict | None) Co-Authored-By: Claude Opus 4.6 --- CLAUDE.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 3f159ed..29f830d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -77,18 +77,20 @@ uv add --group test | `cheddahbot/memory.py` | 4-layer memory with semantic search | | `cheddahbot/router.py` | System prompt builder | | `cheddahbot/ui.py` | Gradio web interface | +| `cheddahbot/skills.py` | Markdown skill registry (discovers skills/*.md) | | `cheddahbot/tools/` | Tool modules (auto-discovered) | | `config.yaml` | Runtime configuration | | `identity/SOUL.md` | Agent personality | | `identity/USER.md` | User profile | -| `skills/` | Prompt templates for tools (press releases, etc.) | +| `skills/` | Markdown skill files with YAML frontmatter | ## Conventions - **Config precedence**: env vars > config.yaml > dataclass defaults - **ClickUp env vars**: `CLICKUP_API_TOKEN`, `CLICKUP_WORKSPACE_ID`, `CLICKUP_SPACE_ID` - **Tool registration**: Use the `@tool("name", "description", category="cat")` decorator in any file under `cheddahbot/tools/` — auto-discovered on startup -- **Tool context**: Tools can accept `ctx: dict = None` to get `config`, `db`, `agent`, `memory` injected +- **Tool context**: Tools can accept `ctx: dict | None = None` to get `config`, `db`, `agent`, `memory` injected +- **Skills**: `.md` files in `skills/` with YAML frontmatter (`name`, `description`, `tools`, `agents`). Files without frontmatter are data files (skipped by registry) - **Database**: SQLite with WAL mode, thread-local connections via `threading.local()` - **KV store**: Task state stored as JSON at `clickup:task:{id}:state` keys - **ClickUp field mapping**: `Work Category` field (not `Task Type`) identifies task types like "Press Release", "Link Building". The `Client` field (not `Company`) holds the client name.