From cfa0f8f942545434a825fedf0a49061d26fff73d Mon Sep 17 00:00:00 2001
From: m3tm3re
Date: Tue, 13 Jan 2026 14:50:04 +0100
Subject: [PATCH] Add 3 new skills (basecamp, brainstorming, plan-writing) and
update agent model
- basecamp: Basecamp project management via MCP (todos, kanban, projects)
- brainstorming: General-purpose ideation with Anytype save
- plan-writing: Project planning with templates (kickoff, stakeholders, tasks, risks)
- Update agent model from GPT-4o to minimax-m2.1-free
- Update README with new skills
---
README.md | 17 +-
agent/agents.json | 4 +-
skill/basecamp/SKILL.md | 262 ++++++++++++++++++
skill/basecamp/references/mcp-tools.md | 198 +++++++++++++
skill/brainstorming/SKILL.md | 188 +++++++++++++
.../references/anytype-workflow.md | 132 +++++++++
.../references/thinking-frameworks.md | 151 ++++++++++
skill/plan-writing/SKILL.md | 165 +++++++++++
.../assets/templates/progress-update.md | 89 ++++++
.../assets/templates/project-brief.md | 48 ++++
.../assets/templates/project-kickoff.md | 106 +++++++
.../assets/templates/risk-register.md | 104 +++++++
.../assets/templates/stakeholder-map.md | 72 +++++
.../assets/templates/todo-structure.md | 94 +++++++
.../references/component-guide.md | 117 ++++++++
15 files changed, 1741 insertions(+), 6 deletions(-)
create mode 100644 skill/basecamp/SKILL.md
create mode 100644 skill/basecamp/references/mcp-tools.md
create mode 100644 skill/brainstorming/SKILL.md
create mode 100644 skill/brainstorming/references/anytype-workflow.md
create mode 100644 skill/brainstorming/references/thinking-frameworks.md
create mode 100644 skill/plan-writing/SKILL.md
create mode 100644 skill/plan-writing/assets/templates/progress-update.md
create mode 100644 skill/plan-writing/assets/templates/project-brief.md
create mode 100644 skill/plan-writing/assets/templates/project-kickoff.md
create mode 100644 skill/plan-writing/assets/templates/risk-register.md
create mode 100644 skill/plan-writing/assets/templates/stakeholder-map.md
create mode 100644 skill/plan-writing/assets/templates/todo-structure.md
create mode 100644 skill/plan-writing/references/component-guide.md
diff --git a/README.md b/README.md
index 338ca4c..fc5ae99 100644
--- a/README.md
+++ b/README.md
@@ -23,7 +23,7 @@ This repository serves as a **personal AI operating system** - a collection of s
│ └── profile.md # Work style, PARA areas, preferences
├── command/ # Custom command definitions
│ └── reflection.md
-├── skill/ # Opencode Agent Skills (8+ skills)
+├── skill/ # Opencode Agent Skills (11+ skills)
│ ├── task-management/ # PARA-based productivity
│ ├── skill-creator/ # Meta-skill for creating skills
│ ├── reflection/ # Conversation analysis
@@ -31,7 +31,10 @@ This repository serves as a **personal AI operating system** - a collection of s
│ ├── calendar-scheduling/ # Time management
│ ├── mem0-memory/ # Persistent memory
│ ├── research/ # Investigation workflows
-│ └── knowledge-management/ # Note capture & organization
+│ ├── knowledge-management/ # Note capture & organization
+│ ├── basecamp/ # Basecamp project management
+│ ├── brainstorming/ # Ideation & strategic thinking
+│ └── plan-writing/ # Project planning templates
├── scripts/ # Repository utility scripts
│ └── test-skill.sh # Test skills without deploying
├── .beads/ # Issue tracking database
@@ -165,8 +168,11 @@ The test script creates a temporary config directory with symlinks to this repo'
| **communications** | Email drafts, follow-ups, message management | ✅ Active |
| **calendar-scheduling** | Time blocking, meeting management | ✅ Active |
| **mem0-memory** | Persistent memory storage and retrieval | ✅ Active |
-| **research** | Investigation workflows, source management | 🚧 Stub |
-| **knowledge-management** | Note capture, knowledge organization | 🚧 Stub |
+| **research** | Investigation workflows, source management | ✅ Active |
+| **knowledge-management** | Note capture, knowledge organization | ✅ Active |
+| **basecamp** | Basecamp project & todo management via MCP | ✅ Active |
+| **brainstorming** | General-purpose ideation with Anytype save | ✅ Active |
+| **plan-writing** | Project plans with templates (kickoff, tasks, risks) | ✅ Active |
## 🤖 AI Agents
@@ -248,6 +254,9 @@ See `AGENTS.md` for complete developer documentation.
- **task-management/** - Full implementation with Anytype integration
- **skill-creator/** - Meta-skill with bundled resources
- **reflection/** - Conversation analysis with rating system
+- **basecamp/** - MCP server integration with multiple tool categories
+- **brainstorming/** - Framework-based ideation with Anytype object creation
+- **plan-writing/** - Template-driven document generation
## 🔧 Customization
diff --git a/agent/agents.json b/agent/agents.json
index e84b4fa..ec850e2 100644
--- a/agent/agents.json
+++ b/agent/agents.json
@@ -2,7 +2,7 @@
"chiron": {
"description": "Personal AI assistant (Plan Mode). Read-only analysis, planning, and guidance.",
"mode": "primary",
- "model": "anthropic/claude-sonnet-4-5",
+ "model": "opencode/minimax-m2.1-free",
"prompt": "{file:./prompts/chiron.txt}",
"permission": {
"read": {
@@ -28,7 +28,7 @@
"chiron-forge": {
"description": "Personal AI assistant (Worker Mode). Full write access with safety prompts.",
"mode": "primary",
- "model": "anthropic/claude-sonnet-4-5",
+ "model": "opencode/minimax-m2.1-free",
"prompt": "{file:./prompts/chiron-forge.txt}",
"permission": {
"read": {
diff --git a/skill/basecamp/SKILL.md b/skill/basecamp/SKILL.md
new file mode 100644
index 0000000..527a2c5
--- /dev/null
+++ b/skill/basecamp/SKILL.md
@@ -0,0 +1,262 @@
+---
+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'"
+```
diff --git a/skill/basecamp/references/mcp-tools.md b/skill/basecamp/references/mcp-tools.md
new file mode 100644
index 0000000..620fa3b
--- /dev/null
+++ b/skill/basecamp/references/mcp-tools.md
@@ -0,0 +1,198 @@
+# Basecamp MCP Tools Reference
+
+Complete reference for all 46 available Basecamp MCP tools.
+
+## Projects
+
+| Tool | Parameters | Returns |
+|------|------------|---------|
+| `get_projects` | none | List of all projects with id, name, description |
+| `get_project` | project_id | Project details including dock (todosets, card tables, etc.) |
+
+## Todo Lists
+
+| Tool | Parameters | Returns |
+|------|------------|---------|
+| `get_todolists` | project_id | All todo lists in project |
+
+## Todos
+
+| Tool | Parameters | Returns |
+|------|------------|---------|
+| `get_todos` | project_id, todolist_id | All todos (pagination handled) |
+| `create_todo` | project_id, todolist_id, content, due_on?, assignee_ids?, notify? | Created todo |
+| `update_todo` | project_id, todo_id, content?, due_on?, assignee_ids? | Updated todo |
+| `delete_todo` | project_id, todo_id | Success confirmation |
+| `complete_todo` | project_id, todo_id | Completed todo |
+| `uncomplete_todo` | project_id, todo_id | Reopened todo |
+
+### Todo Parameters
+
+- `content`: String - The todo text
+- `due_on`: String - Date in YYYY-MM-DD format
+- `assignee_ids`: Array of integers - Person IDs to assign
+- `notify`: Boolean - Whether to notify assignees
+
+## Card Tables
+
+| Tool | Parameters | Returns |
+|------|------------|---------|
+| `get_card_tables` | project_id | All card tables in project |
+| `get_card_table` | project_id | Primary card table details |
+
+## Columns
+
+| Tool | Parameters | Returns |
+|------|------------|---------|
+| `get_columns` | project_id, card_table_id | All columns in card table |
+| `get_column` | project_id, column_id | Column details |
+| `create_column` | project_id, card_table_id, title | New column |
+| `update_column` | project_id, column_id, title | Updated column |
+| `move_column` | project_id, card_table_id, column_id, position | Moved column |
+| `update_column_color` | project_id, column_id, color | Updated color |
+| `put_column_on_hold` | project_id, column_id | Column frozen |
+| `remove_column_hold` | project_id, column_id | Column unfrozen |
+| `watch_column` | project_id, column_id | Subscribed to notifications |
+| `unwatch_column` | project_id, column_id | Unsubscribed |
+
+### Column Colors
+
+Available colors for `update_column_color`:
+- white, grey, pink, red, orange, yellow, green, teal, blue, purple
+
+## Cards
+
+| Tool | Parameters | Returns |
+|------|------------|---------|
+| `get_cards` | project_id, column_id | All cards in column |
+| `get_card` | project_id, card_id | Card details |
+| `create_card` | project_id, column_id, title, content?, due_on?, notify? | New card |
+| `update_card` | project_id, card_id, title?, content?, due_on?, assignee_ids? | Updated card |
+| `move_card` | project_id, card_id, column_id | Card moved to column |
+| `complete_card` | project_id, card_id | Card marked complete |
+| `uncomplete_card` | project_id, card_id | Card reopened |
+
+### Card Parameters
+
+- `title`: String - Card title
+- `content`: String - Card description/body (supports HTML)
+- `due_on`: String - Date in YYYY-MM-DD format
+- `assignee_ids`: Array of integers - Person IDs
+- `notify`: Boolean - Notify assignees on creation
+
+## Card Steps (Subtasks)
+
+| Tool | Parameters | Returns |
+|------|------------|---------|
+| `get_card_steps` | project_id, card_id | All steps on card |
+| `create_card_step` | project_id, card_id, title, due_on?, assignee_ids? | New step |
+| `get_card_step` | project_id, step_id | Step details |
+| `update_card_step` | project_id, step_id, title?, due_on?, assignee_ids? | Updated step |
+| `delete_card_step` | project_id, step_id | Step deleted |
+| `complete_card_step` | project_id, step_id | Step completed |
+| `uncomplete_card_step` | project_id, step_id | Step reopened |
+
+## Search
+
+| Tool | Parameters | Returns |
+|------|------------|---------|
+| `search_basecamp` | query, project_id? | Matching todos, messages, etc. |
+
+- Omit `project_id` for global search across all projects
+- Include `project_id` to scope search to specific project
+
+## Communication
+
+| Tool | Parameters | Returns |
+|------|------------|---------|
+| `get_campfire_lines` | project_id, campfire_id | Recent chat messages |
+| `get_comments` | project_id, recording_id | Comments on any item |
+| `create_comment` | project_id, recording_id, content | New comment |
+
+### Comment Parameters
+
+- `recording_id`: The ID of the item (todo, card, document, etc.)
+- `content`: String - Comment text (supports HTML)
+
+## Daily Check-ins
+
+| Tool | Parameters | Returns |
+|------|------------|---------|
+| `get_daily_check_ins` | project_id, page? | Check-in questions |
+| `get_question_answers` | project_id, question_id, page? | Answers to question |
+
+## Documents
+
+| Tool | Parameters | Returns |
+|------|------------|---------|
+| `get_documents` | project_id, vault_id | Documents in vault |
+| `get_document` | project_id, document_id | Document content |
+| `create_document` | project_id, vault_id, title, content, status? | New document |
+| `update_document` | project_id, document_id, title?, content? | Updated document |
+| `trash_document` | project_id, document_id | Document trashed |
+
+### Document Parameters
+
+- `vault_id`: Found in project dock as the docs/files container
+- `content`: String - Document body (supports HTML)
+- `status`: "active" or "archived"
+
+## Attachments
+
+| Tool | Parameters | Returns |
+|------|------------|---------|
+| `create_attachment` | file_path, name, content_type? | Uploaded attachment |
+
+## Events
+
+| Tool | Parameters | Returns |
+|------|------------|---------|
+| `get_events` | project_id, recording_id | Activity events on item |
+
+## Webhooks
+
+| Tool | Parameters | Returns |
+|------|------------|---------|
+| `get_webhooks` | project_id | Project webhooks |
+| `create_webhook` | project_id, payload_url, types? | New webhook |
+| `delete_webhook` | project_id, webhook_id | Webhook deleted |
+
+### Webhook Types
+
+Available types for `create_webhook`:
+- Comment, Document, GoogleDocument, Message, Question::Answer
+- Schedule::Entry, Todo, Todolist, Upload, Vault, Card, CardTable::Column
+
+## Common Patterns
+
+### Find project by name
+
+```
+1. get_projects → list all
+2. Match name (case-insensitive partial match)
+3. Return project_id
+```
+
+### Find todoset ID for a project
+
+```
+1. get_project(project_id)
+2. Look in dock array for item with name "todoset"
+3. Extract id from dock item URL
+```
+
+### Find card table ID
+
+```
+1. get_project(project_id)
+2. Look in dock for "kanban_board" or use get_card_tables
+3. Extract card_table_id
+```
+
+### Get all todos across all lists
+
+```
+1. get_todolists(project_id)
+2. For each todolist: get_todos(project_id, todolist_id)
+3. Aggregate results
+```
diff --git a/skill/brainstorming/SKILL.md b/skill/brainstorming/SKILL.md
new file mode 100644
index 0000000..4fc20ac
--- /dev/null
+++ b/skill/brainstorming/SKILL.md
@@ -0,0 +1,188 @@
+---
+name: brainstorming
+description: "General-purpose ideation and strategic thinking. Use when: (1) clarifying thoughts on any topic, (2) exploring options and trade-offs, (3) building strategies or plans, (4) making decisions with multiple factors, (5) thinking through problems. Triggers: brainstorm, think through, explore options, clarify, what are my options, help me decide, strategy for, how should I approach."
+compatibility: opencode
+---
+
+# Brainstorming
+
+General-purpose ideation for any domain: business decisions, personal projects, creative work, strategic planning, problem-solving. Not tied to software development.
+
+## Process
+
+### 1. Understand Context
+
+Start by understanding the situation:
+- What's the situation? What triggered this thinking?
+- What's the current state vs desired state?
+
+**Ask one question at a time.** Prefer multiple choice when options are clear.
+
+### 2. Clarify the Outcome
+
+Before exploring solutions, clarify what success looks like:
+- What would a good outcome enable?
+- What would you be able to do that you can't now?
+- Are there constraints on what "good" means?
+
+### 3. Explore Constraints
+
+Map the boundaries before generating options:
+- **Time**: Deadlines, urgency, available hours
+- **Resources**: Budget, people, skills, tools
+- **External**: Dependencies, stakeholders, regulations
+- **Preferences**: Non-negotiables vs nice-to-haves
+
+### 4. Generate Options
+
+Present 2-3 distinct approaches with trade-offs:
+
+```
+**Option A: [Name]**
+- Approach: [Brief description]
+- Pros: [Key advantages]
+- Cons: [Key disadvantages]
+- Best if: [When this option makes sense]
+
+**Option B: [Name]**
+...
+
+**My recommendation**: Option [X] because [reasoning].
+```
+
+Lead with your recommendation but present alternatives fairly.
+
+### 5. Validate Incrementally
+
+Present thinking in 200-300 word sections. After each section, check:
+- "Does this capture it correctly?"
+- "Anything I'm missing?"
+- "Should we go deeper on any aspect?"
+
+Be ready to backtrack and clarify. Brainstorming is non-linear.
+
+### 6. Capture Decision (Optional)
+
+After reaching clarity, offer:
+
+> "Would you like me to save this as an Anytype Brainstorm object for reference?"
+
+If yes, use the Anytype MCP to create a Brainstorm object:
+
+```
+Anytype_API-create-object
+ space_id: CHIRON_SPACE_ID
+ type_key: "brainstorm_v_2"
+ name: ""
+ body: ""
+ icon: { format: "emoji", emoji: "💭" }
+ properties: [
+ { key: "topic", text: "" },
+ { key: "context", text: "" },
+ { key: "outcome", text: "" },
+ { key: "constraints", text: "