diff --git a/CLAUDE.md b/CLAUDE.md index 4cc0797..91fcfc5 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -22,7 +22,8 @@ AgentRegistry (agent_registry.py) ├── default agent ← AgentConfig (config.py) ├── writer agent ├── researcher agent - └── ops agent + ├── ops agent + └── linkbuilder agent ↓ Agent (agent.py) ← Memory (memory.py, 4-layer, per-agent scoping) ↓ ← Skills (skills.py, markdown skills with frontmatter) @@ -48,7 +49,7 @@ NotificationBus (notifications.py) → Gradio / future Discord / Slack # Run the app uv run python -m cheddahbot -# Run tests (124 tests) +# Run tests (187 tests) uv run pytest # Run tests verbose @@ -86,6 +87,7 @@ uv add --group test | `cheddahbot/memory.py` | 4-layer memory with semantic search + scoping | | `cheddahbot/router.py` | System prompt builder | | `cheddahbot/skills.py` | Markdown skill registry (discovers skills/*.md) | +| `cheddahbot/tools/linkbuilding.py` | Link building content pipeline (guest articles, directory listings, social posts) | | `cheddahbot/ui.py` | Gradio web interface | | `cheddahbot/tools/` | Tool modules (auto-discovered) | | `cheddahbot/tools/delegate.py` | delegate_task + delegate_to_agent tools | @@ -176,6 +178,14 @@ skill_map: field_mapping: topic: "task_name" # uses ClickUp task name company_name: "Client" # looks up "Client" custom field + "Link Building": + tool: "build_links" + auto_execute: true + field_mapping: + keyword: "task_name" # "LINKS - keyword" → keyword extracted + company_name: "Client" + target_url: "IMSURL" + branded_url: "SocialURL" ``` Task lifecycle: `to do` → discovered → approved/awaiting_approval → executing → completed/failed (+ attachments uploaded) @@ -192,6 +202,7 @@ Tests live in `tests/` and use pytest. All tests run offline with mocked APIs. - `test_docx_export.py` — Plain text → .docx formatting and file creation - `test_press_advantage.py` — Press Advantage API client, company parsing, link building, submit tool - `test_scheduler_helpers.py` — `_extract_docx_paths` regex extraction from tool output +- `test_linkbuilding.py` — Link building pipeline: keyword extraction, company lookup, content generation, file output, ClickUp sync Fixtures in `conftest.py`: `tmp_db` (fresh SQLite), `sample_clickup_task_data` (realistic API response).