- Rename skill/ to skills/ for consistency with naming conventions - Rename agent/ to agents/ and command/ to commands/ - Update AGENTS.md with all directory references - Update scripts/test-skill.sh paths - Update prompts/athena.txt documentation This aligns with best practices of using plural directory names and updates all documentation to reflect the new structure.
263 lines
7.8 KiB
Markdown
263 lines
7.8 KiB
Markdown
---
|
|
name: basecamp
|
|
description: "Manage work projects in Basecamp via MCP. Use when: (1) creating or viewing Basecamp projects, (2) managing todos or todo lists, (3) working with card tables (kanban boards), (4) searching Basecamp content, (5) syncing project plans to Basecamp. Triggers: basecamp, create todos, show my projects, card table, move card, basecamp search, sync to basecamp, what's in basecamp."
|
|
compatibility: opencode
|
|
---
|
|
|
|
# Basecamp
|
|
|
|
Manage work projects in Basecamp via MCP server. Provides workflows for project overview, todo management, kanban boards, and syncing from plan-writing skill.
|
|
|
|
## Quick Reference
|
|
|
|
| Action | Command Pattern |
|
|
| --------------- | -------------------------------------- |
|
|
| List projects | "Show my Basecamp projects" |
|
|
| View project | "What's in [project name]?" |
|
|
| Create todos | "Add todos to [project]" |
|
|
| View card table | "Show kanban for [project]" |
|
|
| Move card | "Move [card] to [column]" |
|
|
| Search | "Search Basecamp for [query]" |
|
|
| Sync plan | "Create Basecamp todos from this plan" |
|
|
|
|
## Core Workflows
|
|
|
|
### 1. Project Overview
|
|
|
|
List and explore projects:
|
|
|
|
```
|
|
1. get_projects → list all projects
|
|
2. Present summary: name, last activity
|
|
3. User selects project
|
|
4. get_project(id) → show dock items (todosets, card tables, message boards)
|
|
```
|
|
|
|
**Example output:**
|
|
|
|
```
|
|
Your Basecamp Projects:
|
|
1. Q2 Training Program (last activity: 2 hours ago)
|
|
2. Website Redesign (last activity: yesterday)
|
|
3. Product Launch (last activity: 3 days ago)
|
|
|
|
Which project would you like to explore?
|
|
```
|
|
|
|
### 2. Todo Management
|
|
|
|
**View todos:**
|
|
|
|
```
|
|
1. get_project(id) → find todoset from dock
|
|
2. get_todolists(project_id) → list all todo lists
|
|
3. get_todos(project_id, todolist_id) → show todos with status
|
|
```
|
|
|
|
**Create todos:**
|
|
|
|
```
|
|
1. Identify target project and todo list
|
|
2. For each todo:
|
|
create_todo(
|
|
project_id,
|
|
todolist_id,
|
|
content,
|
|
due_on?, # YYYY-MM-DD format
|
|
assignee_ids?, # array of person IDs
|
|
notify? # boolean
|
|
)
|
|
3. Confirm creation with links
|
|
```
|
|
|
|
**Complete/update todos:**
|
|
|
|
```
|
|
- complete_todo(project_id, todo_id) → mark done
|
|
- uncomplete_todo(project_id, todo_id) → reopen
|
|
- update_todo(project_id, todo_id, content?, due_on?, assignee_ids?)
|
|
- delete_todo(project_id, todo_id) → remove
|
|
```
|
|
|
|
### 3. Card Table (Kanban) Management
|
|
|
|
**View board:**
|
|
|
|
```
|
|
1. get_card_table(project_id) → get card table details
|
|
2. get_columns(project_id, card_table_id) → list columns
|
|
3. For each column: get_cards(project_id, column_id)
|
|
4. Present as kanban view
|
|
```
|
|
|
|
**Example output:**
|
|
|
|
```
|
|
Card Table: Development Pipeline
|
|
|
|
| Backlog (3) | In Progress (2) | Review (1) | Done (5) |
|
|
|-------------|-----------------|------------|----------|
|
|
| Feature A | Feature B | Bug fix | ... |
|
|
| Feature C | Feature D | | |
|
|
| Refactor | | | |
|
|
```
|
|
|
|
**Manage columns:**
|
|
|
|
```
|
|
- create_column(project_id, card_table_id, title)
|
|
- update_column(project_id, column_id, title) → rename
|
|
- move_column(project_id, card_table_id, column_id, position)
|
|
- update_column_color(project_id, column_id, color)
|
|
- put_column_on_hold(project_id, column_id) → freeze work
|
|
- remove_column_hold(project_id, column_id) → unfreeze
|
|
```
|
|
|
|
**Manage cards:**
|
|
|
|
```
|
|
- create_card(project_id, column_id, title, content?, due_on?, notify?)
|
|
- update_card(project_id, card_id, title?, content?, due_on?, assignee_ids?)
|
|
- move_card(project_id, card_id, column_id) → move to different column
|
|
- complete_card(project_id, card_id)
|
|
- uncomplete_card(project_id, card_id)
|
|
```
|
|
|
|
**Card steps (subtasks):**
|
|
|
|
```
|
|
- get_card_steps(project_id, card_id) → list subtasks
|
|
- create_card_step(project_id, card_id, title, due_on?, assignee_ids?)
|
|
- complete_card_step(project_id, step_id)
|
|
- update_card_step(project_id, step_id, title?, due_on?, assignee_ids?)
|
|
- delete_card_step(project_id, step_id)
|
|
```
|
|
|
|
### 4. Search
|
|
|
|
```
|
|
search_basecamp(query, project_id?)
|
|
- Omit project_id → search all projects
|
|
- Include project_id → scope to specific project
|
|
```
|
|
|
|
Results include todos, messages, and other content matching the query.
|
|
|
|
### 5. Sync from Plan-Writing
|
|
|
|
When user has a project plan from plan-writing skill:
|
|
|
|
```
|
|
1. Parse todo-structure.md or tasks.md for task hierarchy
|
|
2. Ask: "Which Basecamp project should I add these to?"
|
|
- List existing projects via get_projects
|
|
- Note: New projects must be created manually in Basecamp
|
|
3. Ask: "Use todo lists or card table?"
|
|
4. If todo lists:
|
|
- Create todo list per phase/milestone if needed
|
|
- Create todos with due dates and assignees
|
|
5. If card table:
|
|
- Create columns for phases/statuses
|
|
- Create cards from tasks
|
|
- Add card steps for subtasks
|
|
6. Confirm: "Created X todos/cards in [project]. View in Basecamp."
|
|
```
|
|
|
|
### 6. Status Check
|
|
|
|
```
|
|
User: "What's the status of [project]?"
|
|
|
|
1. get_project(id)
|
|
2. For each todo list: get_todos, count complete/incomplete
|
|
3. If card table exists: get columns and card counts
|
|
4. Calculate summary:
|
|
- X todos complete, Y incomplete, Z overdue
|
|
- Card distribution across columns
|
|
5. Highlight: overdue items, blocked items
|
|
```
|
|
|
|
**Example output:**
|
|
|
|
```
|
|
Project: Q2 Training Program
|
|
|
|
Todos: 12/20 complete (60%)
|
|
- 3 overdue items
|
|
- 5 due this week
|
|
|
|
Card Table: Development
|
|
| Backlog | In Progress | Review | Done |
|
|
| 3 | 2 | 1 | 8 |
|
|
|
|
Attention needed:
|
|
- "Create training materials" (overdue by 2 days)
|
|
- "Review curriculum" (due tomorrow)
|
|
```
|
|
|
|
## Tool Categories
|
|
|
|
For complete tool reference with parameters, see [references/mcp-tools.md](references/mcp-tools.md).
|
|
|
|
| Category | Key Tools |
|
|
| ---------- | -------------------------------------------------------------- |
|
|
| Projects | get_projects, get_project |
|
|
| Todos | get_todolists, get_todos, create_todo, complete_todo |
|
|
| Cards | get_card_table, get_columns, get_cards, create_card, move_card |
|
|
| Card Steps | get_card_steps, create_card_step, complete_card_step |
|
|
| Search | search_basecamp |
|
|
| Comments | get_comments, create_comment |
|
|
| Documents | get_documents, create_document, update_document |
|
|
|
|
## Limitations
|
|
|
|
- **No create_project tool**: Projects must be created manually in Basecamp UI
|
|
- **Work projects only**: This skill is for professional/team projects
|
|
- **Pagination handled**: MCP server handles pagination transparently
|
|
|
|
## Integration with Other Skills
|
|
|
|
| From Skill | To Basecamp |
|
|
| --------------- | ------------------------------------------------- |
|
|
| brainstorming | Save decision → reference in project docs |
|
|
| plan-writing | todo-structure.md → Basecamp todos or cards |
|
|
| task-management | Anytype tasks ↔ Basecamp todos (manual reference) |
|
|
|
|
## Common Patterns
|
|
|
|
### Create todos from a list
|
|
|
|
```
|
|
User provides list:
|
|
- Task 1 (due Friday)
|
|
- Task 2 (due next week)
|
|
- Task 3
|
|
|
|
1. Identify or confirm project and todo list
|
|
2. Parse due dates (Friday → YYYY-MM-DD)
|
|
3. Create each todo via create_todo
|
|
4. Report: "Created 3 todos in [list name]"
|
|
```
|
|
|
|
### Move cards through workflow
|
|
|
|
```
|
|
User: "Move Feature A to In Progress"
|
|
|
|
1. search_basecamp("Feature A") or get_cards to find card_id
|
|
2. get_columns to find target column_id
|
|
3. move_card(project_id, card_id, column_id)
|
|
4. Confirm: "Moved 'Feature A' to 'In Progress'"
|
|
```
|
|
|
|
### Add subtasks to a card
|
|
|
|
```
|
|
User: "Add subtasks to the Feature B card"
|
|
|
|
1. Find card via search or get_cards
|
|
2. For each subtask:
|
|
create_card_step(project_id, card_id, title)
|
|
3. Report: "Added X steps to 'Feature B'"
|
|
```
|