Interact with Basecamp via the Basecamp CLI. Full API coverage: projects, todos, cards, messages, files, schedule, check-ins, timeline, recordings, templates, webhooks, subscriptions, lineup, chat, gauges, assignments, notifications, and accounts. Use for ANY Basecamp question or action.
The basecamp skill lets an agent interact with Basecamp through the Basecamp CLI, offering full API coverage across projects, todos, cards, messages, files, schedule, check-ins, timeline, recordings, templates, webhooks, subscriptions, lineup, chat, gauges, assignments, notifications, and accounts. It exposes 155 endpoints and is intended for any Basecamp question or action, from creating and completing todos to moving cards, posting messages, and browsing project activity. It solves the problem of programmatically managing Basecamp work items and content without hand-rolling API calls or authentication.
The skill defines agent invariants for reliable operation: choosing the right output mode (--jq to filter or extract data, --json for full JSON envelopes, --md for human-readable GFM tables, and --agent for headless scripting), parsing URLs first with basecamp url parse to extract IDs, and scoping most commands to a project via --in <project> or a .basecamp/config.json file. Cross-project exceptions include basecamp reports assigned, basecamp assignments, basecamp reports overdue, basecamp reports schedule, basecamp recordings <type>, basecamp notifications, and basecamp gauges list. It supports rich content with Markdown and four @mention syntaxes (the deterministic [@Name](mention:SGID) form is preferred for agents), CLI introspection via --agent --help that returns structured JSON with subcommands, flags, and domain notes, pagination via --limit, --all, and --page, and smart defaults like --assignee me and natural-language dates such as --due tomorrow. A quick-reference table maps common tasks to concrete commands like basecamp done <id>, basecamp card, and basecamp cards move.
The skill targets agents and users who manage projects, tasks, and team communication in Basecamp. A stated best practice is to never pipe to external jq (use the built-in --jq instead) and to always pass --json or --md explicitly rather than relying on auto-detection. Comments are flat, so replies target the parent recording rather than another comment, and --all and --limit are mutually exclusive while --page cannot combine with either.
Use --jq '<expr>' to filter or extract JSON data with the built-in jq filter, --json for the full JSON envelope, --md (or -m) for human-readable GFM tables and task lists, and --agent for headless automation that returns raw JSON data. The skill recommends always passing --json or --md explicitly rather than relying on auto-detection.
Most commands require project scope via --in <project> or a .basecamp/config.json file. Certain commands are cross-project, including basecamp reports assigned, basecamp assignments, basecamp reports overdue, basecamp reports schedule, basecamp recordings <type>, basecamp notifications, and basecamp gauges list.
Message bodies and comments accept Markdown and four mention syntaxes. The deterministic [@Name](mention:SGID) form embeds the SGID with zero API calls and is preferred for agents; other forms include [@Name](person:ID), @sgid:VALUE, and fuzzy @Name / @First.Last resolution.
Use CLI introspection by adding --agent --help to any command, which returns structured JSON describing the command, its subcommands, flags, inherited flags, and domain-specific notes. Start at basecamp --agent --help and drill into subcommands.
Use --limit N to cap results, --all to fetch everything (which may be slow for large datasets), or --page N for a single page without auto-pagination. --all and --limit are mutually exclusive, and --page cannot be combined with either.
Quick Setup:
.claude/skills/Repository
basecamp/skills