[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CS9AD3AYX3YPTBYR9N5JYN":3,"skill-same:01M6CS9AD3AYX3YPTBYR9N5JYN":68},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":50,"ownerHtmlUrl":51,"ownerBlogUrl":6,"ownerDescription":52,"updatedAt":53,"install":54,"resources":67},"01M6CS9AD3AYX3YPTBYR9N5JYN","basecamp-automation",null,"Automate Basecamp project management, to-dos, messages, people, and to-do list organization via Rube MCP (Composio). Always search tools first for current schemas.","Sam-06060\u002Fjarvis-assistant","Sam-06060","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F208600848?v=4","01M6CRKT7C7FXD21V6HXF293S0","Samson Frank Ganta","01M6CRKTBEKYFD8YX5Z1GT99EE",6,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fbasecamp-automation\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"automation","basecamp automation","MCP","project management","search","messages","Tools","first","automate","list","management","community","do","composio","organization","2026-11-10 10:12:30",false,"---\nname: basecamp-automation\ndescription: \"Automate Basecamp project management, to-dos, messages, people, and to-do list organization via Rube MCP (Composio). Always search tools first for current schemas.\"\nrisk: critical\nsource: community\ndate_added: \"2026-02-27\"\n---\n\n# Basecamp Automation via Rube MCP\n\nAutomate Basecamp operations including project management, to-do list creation, task management, message board posting, people management, and to-do group organization through Composio's Basecamp toolkit.\n\n## Prerequisites\n\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active Basecamp connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `basecamp`\n- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas\n\n## Setup\n\n**Get Rube MCP**: Add `https:\u002F\u002Frube.app\u002Fmcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `basecamp`\n3. If connection is not ACTIVE, follow the returned auth link to complete Basecamp OAuth\n4. Confirm connection status shows ACTIVE before running any workflows\n\n## Core Workflows\n\n### 1. Manage To-Do Lists and Tasks\n\n**When to use**: User wants to create to-do lists, add tasks, or organize work within a Basecamp project\n\n**Tool sequence**:\n1. `BASECAMP_GET_PROJECTS` - List projects to find the target bucket_id [Prerequisite]\n2. `BASECAMP_GET_BUCKETS_TODOSETS` - Get the to-do set within a project [Prerequisite]\n3. `BASECAMP_GET_BUCKETS_TODOSETS_TODOLISTS` - List existing to-do lists to avoid duplicates [Optional]\n4. `BASECAMP_POST_BUCKETS_TODOSETS_TODOLISTS` - Create a new to-do list in a to-do set [Required for list creation]\n5. `BASECAMP_GET_BUCKETS_TODOLISTS` - Get details of a specific to-do list [Optional]\n6. `BASECAMP_POST_BUCKETS_TODOLISTS_TODOS` - Create a to-do item in a to-do list [Required for task creation]\n7. `BASECAMP_CREATE_TODO` - Alternative tool for creating individual to-dos [Alternative]\n8. `BASECAMP_GET_BUCKETS_TODOLISTS_TODOS` - List to-dos within a to-do list [Optional]\n\n**Key parameters for creating to-do lists**:\n- `bucket_id`: Integer project\u002Fbucket ID (from GET_PROJECTS)\n- `todoset_id`: Integer to-do set ID (from GET_BUCKETS_TODOSETS)\n- `name`: Title of the to-do list (required)\n- `description`: HTML-formatted description (supports Rich text)\n\n**Key parameters for creating to-dos**:\n- `bucket_id`: Integer project\u002Fbucket ID\n- `todolist_id`: Integer to-do list ID\n- `content`: What the to-do is for (required)\n- `description`: HTML details about the to-do\n- `assignee_ids`: Array of integer person IDs\n- `due_on`: Due date in `YYYY-MM-DD` format\n- `starts_on`: Start date in `YYYY-MM-DD` format\n- `notify`: Boolean to notify assignees (defaults to false)\n- `completion_subscriber_ids`: Person IDs notified upon completion\n\n**Pitfalls**:\n- A project (bucket) can contain multiple to-do sets; selecting the wrong `todoset_id` creates lists in the wrong section\n- Always check existing to-do lists before creating to avoid near-duplicate names\n- Success payloads include user-facing URLs (`app_url`, `app_todos_url`); prefer returning these over raw IDs\n- All IDs (`bucket_id`, `todoset_id`, `todolist_id`) are integers, not strings\n- Descriptions support HTML formatting only, not Markdown\n\n### 2. Post and Manage Messages\n\n**When to use**: User wants to post messages to a project message board or update existing messages\n\n**Tool sequence**:\n1. `BASECAMP_GET_PROJECTS` - Find the target project and bucket_id [Prerequisite]\n2. `BASECAMP_GET_MESSAGE_BOARD` - Get the message board ID for the project [Prerequisite]\n3. `BASECAMP_CREATE_MESSAGE` - Create a new message on the board [Required]\n4. `BASECAMP_POST_BUCKETS_MESSAGE_BOARDS_MESSAGES` - Alternative message creation tool [Fallback]\n5. `BASECAMP_GET_MESSAGE` - Read a specific message by ID [Optional]\n6. `BASECAMP_PUT_BUCKETS_MESSAGES` - Update an existing message [Optional]\n\n**Key parameters**:\n- `bucket_id`: Integer project\u002Fbucket ID\n- `message_board_id`: Integer message board ID (from GET_MESSAGE_BOARD)\n- `subject`: Message title (required)\n- `content`: HTML body of the message\n- `status`: Set to `\"active\"` to publish immediately\n- `category_id`: Message type classification (optional)\n- `subscriptions`: Array of person IDs to notify; omit to notify all project members\n\n**Pitfalls**:\n- `status=\"draft\"` can produce HTTP 400; use `status=\"active\"` as the reliable option\n- `bucket_id` and `message_board_id` must belong to the same project; mismatches fail or misroute\n- Message content supports HTML tags only; not Markdown\n- Updates via `PUT_BUCKETS_MESSAGES` replace the entire body -- include the full corrected content, not just a diff\n- Prefer `app_url` from the response for user-facing confirmation links\n- Both `CREATE_MESSAGE` and `POST_BUCKETS_MESSAGE_BOARDS_MESSAGES` do the same thing; use CREATE_MESSAGE first and fall back to POST if it fails\n\n### 3. Manage People and Access\n\n**When to use**: User wants to list people, manage project access, or add new users\n\n**Tool sequence**:\n1. `BASECAMP_GET_PEOPLE` - List all people visible to the current user [Required]\n2. `BASECAMP_GET_PROJECTS` - Find the target project [Prerequisite]\n3. `BASECAMP_LIST_PROJECT_PEOPLE` - List people on a specific project [Required]\n4. `BASECAMP_GET_PROJECTS_PEOPLE` - Alternative to list project members [Alternative]\n5. `BASECAMP_PUT_PROJECTS_PEOPLE_USERS` - Grant or revoke project access [Required for access changes]\n\n**Key parameters for PUT_PROJECTS_PEOPLE_USERS**:\n- `project_id`: Integer project ID\n- `grant`: Array of integer person IDs to add to the project\n- `revoke`: Array of integer person IDs to remove from the project\n- `create`: Array of objects with `name`, `email_address`, and optional `company_name`, `title` for new users\n- At least one of `grant`, `revoke`, or `create` must be provided\n\n**Pitfalls**:\n- Person IDs are integers; always resolve names to IDs via GET_PEOPLE first\n- `project_id` for people management is the same as `bucket_id` for other operations\n- `LIST_PROJECT_PEOPLE` and `GET_PROJECTS_PEOPLE` are near-identical; use either\n- Creating users via `create` also grants them project access in one step\n\n### 4. Organize To-Dos with Groups\n\n**When to use**: User wants to organize to-dos within a list into color-coded groups\n\n**Tool sequence**:\n1. `BASECAMP_GET_PROJECTS` - Find the target project [Prerequisite]\n2. `BASECAMP_GET_BUCKETS_TODOLISTS` - Get the to-do list details [Prerequisite]\n3. `BASECAMP_GET_TODOLIST_GROUPS` - List existing groups in a to-do list [Optional]\n4. `BASECAMP_GET_BUCKETS_TODOLISTS_GROUPS` - Alternative group listing [Alternative]\n5. `BASECAMP_POST_BUCKETS_TODOLISTS_GROUPS` - Create a new group in a to-do list [Required]\n6. `BASECAMP_CREATE_TODOLIST_GROUP` - Alternative group creation tool [Alternative]\n\n**Key parameters**:\n- `bucket_id`: Integer project\u002Fbucket ID\n- `todolist_id`: Integer to-do list ID\n- `name`: Group title (required)\n- `color`: Visual color identifier -- one of: `white`, `red`, `orange`, `yellow`, `green`, `blue`, `aqua`, `purple`, `gray`, `pink`, `brown`\n- `status`: Filter for listing -- `\"archived\"` or `\"trashed\"` (omit for active groups)\n\n**Pitfalls**:\n- `POST_BUCKETS_TODOLISTS_GROUPS` and `CREATE_TODOLIST_GROUP` are near-identical; use either\n- Color values must be from the fixed palette; arbitrary hex\u002Frgb values are not supported\n- Groups are sub-sections within a to-do list, not standalone entities\n\n### 5. Browse and Inspect Projects\n\n**When to use**: User wants to list projects, get project details, or explore project structure\n\n**Tool sequence**:\n1. `BASECAMP_GET_PROJECTS` - List all active projects [Required]\n2. `BASECAMP_GET_PROJECT` - Get comprehensive details for a specific project [Optional]\n3. `BASECAMP_GET_PROJECTS_BY_PROJECT_ID` - Alternative project detail retrieval [Alternative]\n\n**Key parameters**:\n- `status`: Filter by `\"archived\"` or `\"trashed\"`; omit for active projects\n- `project_id`: Integer project ID for detailed retrieval\n\n**Pitfalls**:\n- Projects are sorted by most recently created first\n- The response includes a `dock` array with tools (todoset, message_board, etc.) and their IDs\n- Use the dock tool IDs to find `todoset_id`, `message_board_id`, etc. for downstream operations\n\n## Common Patterns\n\n### ID Resolution\nBasecamp uses a hierarchical ID structure. Always resolve top-down:\n- **Project (bucket_id)**: `BASECAMP_GET_PROJECTS` -- find by name, capture the `id`\n- **To-do set (todoset_id)**: Found in project dock or via `BASECAMP_GET_BUCKETS_TODOSETS`\n- **Message board (message_board_id)**: Found in project dock or via `BASECAMP_GET_MESSAGE_BOARD`\n- **To-do list (todolist_id)**: `BASECAMP_GET_BUCKETS_TODOSETS_TODOLISTS`\n- **People (person_id)**: `BASECAMP_GET_PEOPLE` or `BASECAMP_LIST_PROJECT_PEOPLE`\n- Note: `bucket_id` and `project_id` refer to the same entity in different contexts\n\n### Pagination\nBasecamp uses page-based pagination on list endpoints:\n- Response headers or body may indicate more pages available\n- `GET_PROJECTS`, `GET_BUCKETS_TODOSETS_TODOLISTS`, and list endpoints return paginated results\n- Continue fetching until no more results are returned\n\n### Content Formatting\n- All rich text fields use HTML, not Markdown\n- Wrap content in `\u003Cdiv>` tags; use `\u003Cstrong>`, `\u003Cem>`, `\u003Cul>`, `\u003Col>`, `\u003Cli>`, `\u003Ca>` etc.\n- Example: `\u003Cdiv>\u003Cstrong>Important:\u003C\u002Fstrong> Complete by Friday\u003C\u002Fdiv>`\n\n## Known Pitfalls\n\n### ID Formats\n- All Basecamp IDs are integers, not strings or UUIDs\n- `bucket_id` = `project_id` (same entity, different parameter names across tools)\n- To-do set IDs, to-do list IDs, and message board IDs are found in the project's `dock` array\n- Person IDs are integers; resolve names via `GET_PEOPLE` before operations\n\n### Status Field\n- `status=\"draft\"` for messages can cause HTTP 400; always use `status=\"active\"`\n- Project\u002Fto-do list status filters: `\"archived\"`, `\"trashed\"`, or omit for active\n\n### Content Format\n- HTML only, never Markdown\n- Updates replace the entire body, not a partial diff\n- Invalid HTML tags may be silently stripped\n\n### Rate Limits\n- Basecamp API has rate limits; space out rapid sequential requests\n- Large projects with many to-dos should be paginated carefully\n\n### URL Handling\n- Prefer `app_url` from API responses for user-facing links\n- Do not reconstruct Basecamp URLs manually from IDs\n\n## Quick Reference\n\n| Task | Tool Slug | Key Params |\n|------|-----------|------------|\n| List projects | `BASECAMP_GET_PROJECTS` | `status` |\n| Get project | `BASECAMP_GET_PROJECT` | `project_id` |\n| Get project detail | `BASECAMP_GET_PROJECTS_BY_PROJECT_ID` | `project_id` |\n| Get to-do set | `BASECAMP_GET_BUCKETS_TODOSETS` | `bucket_id`, `todoset_id` |\n| List to-do lists | `BASECAMP_GET_BUCKETS_TODOSETS_TODOLISTS` | `bucket_id`, `todoset_id` |\n| Get to-do list | `BASECAMP_GET_BUCKETS_TODOLISTS` | `bucket_id`, `todolist_id` |\n| Create to-do list | `BASECAMP_POST_BUCKETS_TODOSETS_TODOLISTS` | `bucket_id`, `todoset_id`, `name` |\n| Create to-do | `BASECAMP_POST_BUCKETS_TODOLISTS_TODOS` | `bucket_id`, `todolist_id`, `content` |\n| Create to-do (alt) | `BASECAMP_CREATE_TODO` | `bucket_id`, `todolist_id`, `content` |\n| List to-dos | `BASECAMP_GET_BUCKETS_TODOLISTS_TODOS` | `bucket_id`, `todolist_id` |\n| List to-do groups | `BASECAMP_GET_TODOLIST_GROUPS` | `bucket_id`, `todolist_id` |\n| Create to-do group | `BASECAMP_POST_BUCKETS_TODOLISTS_GROUPS` | `bucket_id`, `todolist_id`, `name`, `color` |\n| Create to-do group (alt) | `BASECAMP_CREATE_TODOLIST_GROUP` | `bucket_id`, `todolist_id`, `name` |\n| Get message board | `BASECAMP_GET_MESSAGE_BOARD` | `bucket_id`, `message_board_id` |\n| Create message | `BASECAMP_CREATE_MESSAGE` | `bucket_id`, `message_board_id`, `subject`, `status` |\n| Create message (alt) | `BASECAMP_POST_BUCKETS_MESSAGE_BOARDS_MESSAGES` | `bucket_id`, `message_board_id`, `subject` |\n| Get message | `BASECAMP_GET_MESSAGE` | `bucket_id`, `message_id` |\n| Update message | `BASECAMP_PUT_BUCKETS_MESSAGES` | `bucket_id`, `message_id` |\n| List all people | `BASECAMP_GET_PEOPLE` | (none) |\n| List project people | `BASECAMP_LIST_PROJECT_PEOPLE` | `project_id` |\n| Manage access | `BASECAMP_PUT_PROJECTS_PEOPLE_USERS` | `project_id`, `grant`, `revoke`, `create` |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n","# Basecamp Automation via Rube MCP\n\nAutomate Basecamp operations including project management, to-do list creation, task management, message board posting, people management, and to-do group organization through Composio's Basecamp toolkit.\n\n## Prerequisites\n\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active Basecamp connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `basecamp`\n- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas\n\n## Setup\n\n**Get Rube MCP**: Add `https:\u002F\u002Frube.app\u002Fmcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `basecamp`\n3. If connection is not ACTIVE, follow the returned auth link to complete Basecamp OAuth\n4. Confirm connection status shows ACTIVE before running any workflows\n\n## Core Workflows\n\n### 1. Manage To-Do Lists and Tasks\n\n**When to use**: User wants to create to-do lists, add tasks, or organize work within a Basecamp project\n\n**Tool sequence**:\n1. `BASECAMP_GET_PROJECTS` - List projects to find the target bucket_id [Prerequisite]\n2. `BASECAMP_GET_BUCKETS_TODOSETS` - Get the to-do set within a project [Prerequisite]\n3. `BASECAMP_GET_BUCKETS_TODOSETS_TODOLISTS` - List existing to-do lists to avoid duplicates [Optional]\n4. `BASECAMP_POST_BUCKETS_TODOSETS_TODOLISTS` - Create a new to-do list in a to-do set [Required for list creation]\n5. `BASECAMP_GET_BUCKETS_TODOLISTS` - Get details of a specific to-do list [Optional]\n6. `BASECAMP_POST_BUCKETS_TODOLISTS_TODOS` - Create a to-do item in a to-do list [Required for task creation]\n7. `BASECAMP_CREATE_TODO` - Alternative tool for creating individual to-dos [Alternative]\n8. `BASECAMP_GET_BUCKETS_TODOLISTS_TODOS` - List to-dos within a to-do list [Optional]\n\n**Key parameters for creating to-do lists**:\n- `bucket_id`: Integer project\u002Fbucket ID (from GET_PROJECTS)\n- `todoset_id`: Integer to-do set ID (from GET_BUCKETS_TODOSETS)\n- `name`: Title of the to-do list (required)\n- `description`: HTML-formatted description (supports Rich text)\n\n**Key parameters for creating to-dos**:\n- `bucket_id`: Integer project\u002Fbucket ID\n- `todolist_id`: Integer to-do list ID\n- `content`: What the to-do is for (required)\n- `description`: HTML details about the to-do\n- `assignee_ids`: Array of integer person IDs\n- `due_on`: Due date in `YYYY-MM-DD` format\n- `starts_on`: Start date in `YYYY-MM-DD` format\n- `notify`: Boolean to notify assignees (defaults to false)\n- `completion_subscriber_ids`: Person IDs notified upon completion\n\n**Pitfalls**:\n- A project (bucket) can contain multiple to-do sets; selecting the wrong `todoset_id` creates lists in the wrong section\n- Always check existing to-do lists before creating to avoid near-duplicate names\n- Success payloads include user-facing URLs (`app_url`, `app_todos_url`); prefer returning these over raw IDs\n- All IDs (`bucket_id`, `todoset_id`, `todolist_id`) are integers, not strings\n- Descriptions support HTML formatting only, not Markdown\n\n### 2. Post and Manage Messages\n\n**When to use**: User wants to post messages to a project message board or update existing messages\n\n**Tool sequence**:\n1. `BASECAMP_GET_PROJECTS` - Find the target project and bucket_id [Prerequisite]\n2. `BASECAMP_GET_MESSAGE_BOARD` - Get the message board ID for the project [Prerequisite]\n3. `BASECAMP_CREATE_MESSAGE` - Create a new message on the board [Required]\n4. `BASECAMP_POST_BUCKETS_MESSAGE_BOARDS_MESSAGES` - Alternative message creation tool [Fallback]\n5. `BASECAMP_GET_MESSAGE` - Read a specific message by ID [Optional]\n6. `BASECAMP_PUT_BUCKETS_MESSAGES` - Update an existing message [Optional]\n\n**Key parameters**:\n- `bucket_id`: Integer project\u002Fbucket ID\n- `message_board_id`: Integer message board ID (from GET_MESSAGE_BOARD)\n- `subject`: Message title (required)\n- `content`: HTML body of the message\n- `status`: Set to `\"active\"` to publish immediately\n- `category_id`: Message type classification (optional)\n- `subscriptions`: Array of person IDs to notify; omit to notify all project members\n\n**Pitfalls**:\n- `status=\"draft\"` can produce HTTP 400; use `status=\"active\"` as the reliable option\n- `bucket_id` and `message_board_id` must belong to the same project; mismatches fail or misroute\n- Message content supports HTML tags only; not Markdown\n- Updates via `PUT_BUCKETS_MESSAGES` replace the entire body -- include the full corrected content, not just a diff\n- Prefer `app_url` from the response for user-facing confirmation links\n- Both `CREATE_MESSAGE` and `POST_BUCKETS_MESSAGE_BOARDS_MESSAGES` do the same thing; use CREATE_MESSAGE first and fall back to POST if it fails\n\n### 3. Manage People and Access\n\n**When to use**: User wants to list people, manage project access, or add new users\n\n**Tool sequence**:\n1. `BASECAMP_GET_PEOPLE` - List all people visible to the current user [Required]\n2. `BASECAMP_GET_PROJECTS` - Find the target project [Prerequisite]\n3. `BASECAMP_LIST_PROJECT_PEOPLE` - List people on a specific project [Required]\n4. `BASECAMP_GET_PROJECTS_PEOPLE` - Alternative to list project members [Alternative]\n5. `BASECAMP_PUT_PROJECTS_PEOPLE_USERS` - Grant or revoke project access [Required for access changes]\n\n**Key parameters for PUT_PROJECTS_PEOPLE_USERS**:\n- `project_id`: Integer project ID\n- `grant`: Array of integer person IDs to add to the project\n- `revoke`: Array of integer person IDs to remove from the project\n- `create`: Array of objects with `name`, `email_address`, and optional `company_name`, `title` for new users\n- At least one of `grant`, `revoke`, or `create` must be provided\n\n**Pitfalls**:\n- Person IDs are integers; always resolve names to IDs via GET_PEOPLE first\n- `project_id` for people management is the same as `bucket_id` for other operations\n- `LIST_PROJECT_PEOPLE` and `GET_PROJECTS_PEOPLE` are near-identical; use either\n- Creating users via `create` also grants them project access in one step\n\n### 4. Organize To-Dos with Groups\n\n**When to use**: User wants to organize to-dos within a list into color-coded groups\n\n**Tool sequence**:\n1. `BASECAMP_GET_PROJECTS` - Find the target project [Prerequisite]\n2. `BASECAMP_GET_BUCKETS_TODOLISTS` - Get the to-do list details [Prerequisite]\n3. `BASECAMP_GET_TODOLIST_GROUPS` - List existing groups in a to-do list [Optional]\n4. `BASECAMP_GET_BUCKETS_TODOLISTS_GROUPS` - Alternative group listing [Alternative]\n5. `BASECAMP_POST_BUCKETS_TODOLISTS_GROUPS` - Create a new group in a to-do list [Required]\n6. `BASECAMP_CREATE_TODOLIST_GROUP` - Alternative group creation tool [Alternative]\n\n**Key parameters**:\n- `bucket_id`: Integer project\u002Fbucket ID\n- `todolist_id`: Integer to-do list ID\n- `name`: Group title (required)\n- `color`: Visual color identifier -- one of: `white`, `red`, `orange`, `yellow`, `green`, `blue`, `aqua`, `purple`, `gray`, `pink`, `brown`\n- `status`: Filter for listing -- `\"archived\"` or `\"trashed\"` (omit for active groups)\n\n**Pitfalls**:\n- `POST_BUCKETS_TODOLISTS_GROUPS` and `CREATE_TODOLIST_GROUP` are near-identical; use either\n- Color values must be from the fixed palette; arbitrary hex\u002Frgb values are not supported\n- Groups are sub-sections within a to-do list, not standalone entities\n\n### 5. Browse and Inspect Projects\n\n**When to use**: User wants to list projects, get project details, or explore project structure\n\n**Tool sequence**:\n1. `BASECAMP_GET_PROJECTS` - List all active projects [Required]\n2. `BASECAMP_GET_PROJECT` - Get comprehensive details for a specific project [Optional]\n3. `BASECAMP_GET_PROJECTS_BY_PROJECT_ID` - Alternative project detail retrieval [Alternative]\n\n**Key parameters**:\n- `status`: Filter by `\"archived\"` or `\"trashed\"`; omit for active projects\n- `project_id`: Integer project ID for detailed retrieval\n\n**Pitfalls**:\n- Projects are sorted by most recently created first\n- The response includes a `dock` array with tools (todoset, message_board, etc.) and their IDs\n- Use the dock tool IDs to find `todoset_id`, `message_board_id`, etc. for downstream operations\n\n## Common Patterns\n\n### ID Resolution\nBasecamp uses a hierarchical ID structure. Always resolve top-down:\n- **Project (bucket_id)**: `BASECAMP_GET_PROJECTS` -- find by name, capture the `id`\n- **To-do set (todoset_id)**: Found in project dock or via `BASECAMP_GET_BUCKETS_TODOSETS`\n- **Message board (message_board_id)**: Found in project dock or via `BASECAMP_GET_MESSAGE_BOARD`\n- **To-do list (todolist_id)**: `BASECAMP_GET_BUCKETS_TODOSETS_TODOLISTS`\n- **People (person_id)**: `BASECAMP_GET_PEOPLE` or `BASECAMP_LIST_PROJECT_PEOPLE`\n- Note: `bucket_id` and `project_id` refer to the same entity in different contexts\n\n### Pagination\nBasecamp uses page-based pagination on list endpoints:\n- Response headers or body may indicate more pages available\n- `GET_PROJECTS`, `GET_BUCKETS_TODOSETS_TODOLISTS`, and list endpoints return paginated results\n- Continue fetching until no more results are returned\n\n### Content Formatting\n- All rich text fields use HTML, not Markdown\n- Wrap content in `\u003Cdiv>` tags; use `\u003Cstrong>`, `\u003Cem>`, `\u003Cul>`, `\u003Col>`, `\u003Cli>`, `\u003Ca>` etc.\n- Example: `\u003Cdiv>\u003Cstrong>Important:\u003C\u002Fstrong> Complete by Friday\u003C\u002Fdiv>`\n\n## Known Pitfalls\n\n### ID Formats\n- All Basecamp IDs are integers, not strings or UUIDs\n- `bucket_id` = `project_id` (same entity, different parameter names across tools)\n- To-do set IDs, to-do list IDs, and message board IDs are found in the project's `dock` array\n- Person IDs are integers; resolve names via `GET_PEOPLE` before operations\n\n### Status Field\n- `status=\"draft\"` for messages can cause HTTP 400; always use `status=\"active\"`\n- Project\u002Fto-do list status filters: `\"archived\"`, `\"trashed\"`, or omit for active\n\n### Content Format\n- HTML only, never Markdown\n- Updates replace the entire body, not a partial diff\n- Invalid HTML tags may be silently stripped\n\n### Rate Limits\n- Basecamp API has rate limits; space out rapid sequential requests\n- Large projects with many to-dos should be paginated carefully\n\n### URL Handling\n- Prefer `app_url` from API responses for user-facing links\n- Do not reconstruct Basecamp URLs manually from IDs\n\n## Quick Reference\n\n| Task | Tool Slug | Key Params |\n|------|-----------|------------|\n| List projects | `BASECAMP_GET_PROJECTS` | `status` |\n| Get project | `BASECAMP_GET_PROJECT` | `project_id` |\n| Get project detail | `BASECAMP_GET_PROJECTS_BY_PROJECT_ID` | `project_id` |\n| Get to-do set | `BASECAMP_GET_BUCKETS_TODOSETS` | `bucket_id`, `todoset_id` |\n| List to-do lists | `BASECAMP_GET_BUCKETS_TODOSETS_TODOLISTS` | `bucket_id`, `todoset_id` |\n| Get to-do list | `BASECAMP_GET_BUCKETS_TODOLISTS` | `bucket_id`, `todolist_id` |\n| Create to-do list | `BASECAMP_POST_BUCKETS_TODOSETS_TODOLISTS` | `bucket_id`, `todoset_id`, `name` |\n| Create to-do | `BASECAMP_POST_BUCKETS_TODOLISTS_TODOS` | `bucket_id`, `todolist_id`, `content` |\n| Create to-do (alt) | `BASECAMP_CREATE_TODO` | `bucket_id`, `todolist_id`, `content` |\n| List to-dos | `BASECAMP_GET_BUCKETS_TODOLISTS_TODOS` | `bucket_id`, `todolist_id` |\n| List to-do groups | `BASECAMP_GET_TODOLIST_GROUPS` | `bucket_id`, `todolist_id` |\n| Create to-do group | `BASECAMP_POST_BUCKETS_TODOLISTS_GROUPS` | `bucket_id`, `todolist_id`, `name`, `color` |\n| Create to-do group (alt) | `BASECAMP_CREATE_TODOLIST_GROUP` | `bucket_id`, `todolist_id`, `name` |\n| Get message board | `BASECAMP_GET_MESSAGE_BOARD` | `bucket_id`, `message_board_id` |\n| Create message | `BASECAMP_CREATE_MESSAGE` | `bucket_id`, `message_board_id`, `subject`, `status` |\n| Create message (alt) | `BASECAMP_POST_BUCKETS_MESSAGE_BOARDS_MESSAGES` | `bucket_id`, `message_board_id`, `subject` |\n| Get message | `BASECAMP_GET_MESSAGE` | `bucket_id`, `message_id` |\n| Update message | `BASECAMP_PUT_BUCKETS_MESSAGES` | `bucket_id`, `message_id` |\n| List all people | `BASECAMP_GET_PEOPLE` | (none) |\n| List project people | `BASECAMP_LIST_PROJECT_PEOPLE` | `project_id` |\n| Manage access | `BASECAMP_PUT_PROJECTS_PEOPLE_USERS` | `project_id`, `grant`, `revoke`, `create` |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n",{"name":5,"risk":44,"source":35,"date_added":45,"description":7},"critical","2026-02-27","main","a50a3aa6b39fb0e1b7db88bef1bfc9c93606e126","modules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fbasecamp-automation",0,"https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant","https:\u002F\u002Fgithub.com\u002FSam-06060","Mobile Application Developer | Kotlin | Flutter, KMP, Swfit, Android,Swift UI | Building at Saar It Resources | Creator of Jarvis (AI Assistant)","2026-06-23 05:13:38",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add Sam-06060\u002Fjarvis-assistant --skill basecamp-automation",{"tool":60,"command":61},"bunx","bunx skills add Sam-06060\u002Fjarvis-assistant --skill basecamp-automation",{"tool":63,"command":64},"pnpm","pnpm dlx skills add Sam-06060\u002Fjarvis-assistant --skill basecamp-automation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fbasecamp-automation\u002FSKILL.md",true,[],[69,80,96,112,131,158],{"skillNo":70,"name":71,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":77,"publishedAt":39},"01M6GDRVS6FXX3ESH0C9DW01C0","test_skill","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fscratch\u002Ftest_skill\u002FSKILL.md",[74],{"categoryNo":75,"categoryName":76,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[78,79],"Test Skill","test",{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":39},"01M6GDRQ40HX22MA6XWC31RHHK","zustand-store-ts","Create Zustand stores following established patterns with proper TypeScript types and middleware.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzustand-store-ts\u002FSKILL.md",[],[87,88,89,90,91,92,93,35,94,95],"zustand store ts","zustand","store","with","types","middleware","patterns","create","typescript",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":103,"publishedAt":39},"01M6GDRKEA0WE670SPFWX5GKCN","zoom-automation","Automate Zoom meeting creation, management, recordings, webinars, and participant tracking via Rube MCP (Composio). Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzoom-automation\u002FSKILL.md",[102],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[24,104,105,31,30,28,26,106,107,32,44,108,109,37,35,110,34,111],"zoom automation","zoom","via","meeting","creation","webinars","recordings","tracking",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":119,"publishedAt":39},"01M6GDRFS1452PC71JQ38S24HR","zoho-crm-automation","Automate Zoho CRM tasks via Rube MCP (Composio): create\u002Fupdate records, search contacts, manage leads, and convert leads. Always search tools first for current schemas.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzoho-crm-automation\u002FSKILL.md",[118],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[120,24,121,122,123,124,125,35,28,126,37,127,44,32,30,128,94,129,26,130],"crm automation","zoho crm","crm","zoho crm automation","zoho","leads","contacts","records","update","tasks","manage",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":140,"publishedAt":39},"01M6GDRCKQBAVTGHX5XBH26KPZ","zod-validation-expert","Expert in Zod — TypeScript-first schema validation. Covers parsing, custom errors, refinements, type inference, and integration with React Hook Form, Next.js, and tRPC.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzod-validation-expert\u002FSKILL.md",[137],{"categoryNo":138,"categoryName":139,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[141,142,143,144,145,95,146,147,148,149,150,151,90,152,153,154,155,35,156,157],"expert","zod","zod validation expert","validation","react","safe","parsing","errors","schema validation","react hook form","hook","trpc","form","type","next","schema","Next.js",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":165,"publishedAt":39},"01M6GDR658B08K4MY0RWD4A6EH","zeroize-audit","Detects missing zeroization of sensitive data in source code and identifies zeroization removed by compiler optimizations, with assembly-level analysis, and control-flow verification. Use for auditing C\u002FC++\u002FRust code handling secrets, keys, passwords, or other sensitive data.","https:\u002F\u002Fgithub.com\u002FSam-06060\u002Fjarvis-assistant\u002Fblob\u002Fmain\u002Fmodules\u002Fagent_skills\u002Fawesome-skills\u002Fplaybooks\u002Fzeroize-audit\u002FSKILL.md",[164],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[166,167,168,169,170,171,172,173,35,174,175,176,177,178,179,180,181,182,183,26],"zeroize audit","audit","write","passwords","get","project","c++","activate","assembly","read","Bash","secrets","analysis","data","flow","verification","code","rust"]