Skip to content
Productivity
Skill

/basecamp

Interact with Basecamp through the Basecamp CLI. Use for any Basecamp question or action, including projects, todos, cards, messages, files, schedules, check-ins, people, assignments, notifications, search, and account settings.

From plugin
basecamp-cli
2943 skills4 hooks

Claude Code

$ npx -y skills add basecamp/basecamp-cli --skill basecamp --agent claude-code

SKILL.md

basecamp.SKILL.md
name: basecamp
description: |
  Interact with Basecamp through the Basecamp CLI. Use for any Basecamp question
  or action, including projects, todos, cards, messages, files, schedules,
  check-ins, people, assignments, notifications, search, and account settings.
triggers:
  - basecamp
  - /basecamp
  - basecamp todos
  - basecamp subtasks
  - basecamp project
  - project wallpaper
  - project logo
  - basecamp cards
  - basecamp chat
  - basecamp campfire
  - basecamp ping
  - basecamp pings
  - basecamp messages
  - basecamp file
  - basecamp document
  - basecamp bookmarks
  - basecamp bubble-up
  - basecamp spotlight
  - basecamp drafts
  - basecamp notes
  - basecamp calendars
  - basecamp schedule
  - basecamp checkin
  - basecamp check-in
  - basecamp timeline
  - basecamp timesheet
  - log time
  - basecamp template
  - basecamp webhook
  - external link
  - basecamp gauge
  - basecamp hill chart
  - hill chart progress
  - update the hill chart
  - basecamp assignment
  - basecamp notification
  - basecamp account
  - link to basecamp
  - track in basecamp
  - post to basecamp
  - comment on basecamp
  - complete todo
  - mark done
  - create todo
  - move card
  - move to another project
  - copy to another project
  - copy todo
  - copy card
  - download file
  - search basecamp
  - find in basecamp
  - look up basecamp
  - check basecamp
  - list basecamp
  - show basecamp
  - get from basecamp
  - fetch from basecamp
  - can I basecamp
  - how do I basecamp
  - what's in basecamp
  - what basecamp
  - does basecamp
  - my todos
  - my tasks
  - my schedule
  - my basecamp
  - assigned to me
  - my assignments
  - my notifications
  - overdue todos
  - upcoming events
  - project gauge
  - project progress
  - 3.basecamp.com
  - basecampapi.com
  - https://3.basecamp.com/
invocable: true
argument-hint: "[action] [args...]"

Basecamp CLI

The installed CLI is the command reference. This skill sets the operating rules and does not duplicate its catalog.

Discovery-first workflow

For each task:

1. Infer the deepest plausible leaf command from the user's words. 2. If its exact arguments or flags are not already established by a tool result in this conversation, inspect that leaf directly:

   basecamp <group> <subcommand> --agent --help

3. If the leaf does not exist, inspect its nearest parent group. Use root help only when the top-level group itself is unclear:

   basecamp <group> --agent --help   # fallback
   basecamp --agent --help           # last resort

4. Treat leaf `usage`, `args`, `flags`, and `notes` as the source of truth. Do not guess positional arguments, flags, aliases, scope, or whether a group runs bare. 5. Execute with an explicit output mode, then read structured errors and breadcrumbs before deciding what to do next.

Leaf help is cheap and local; root help returns the full catalog and costs many tokens. Do not load it to confirm global flags this skill documents. For obvious Docs & Files requests, route straight to `files list`, `files download`, or `files uploads create` before trying parent or root help. A subcommand's `inherited_flags` is intentionally short; global flags such as `--agent`, `--jq`, `--profile`, and `--verbose` still apply where supported.

Non-negotiable rules

  • Never read, print, or log OAuth tokens or credential files. In particular, do

not open `~/.config/basecamp/credentials.json`.

  • Never pipe JSON to an external `jq`. Use the CLI's built-in `--jq`.
  • Parse a supplied Basecamp URL before using IDs from it:

`basecamp url parse "<url>" --json`. Only trust URLs from a known Basecamp host. Read-only commands whose leaf help explicitly accepts `<id|url>` may consume the trusted URL directly.

  • Comments are flat. A reply is posted to the parent recording, never to a

comment ID. For a comment URL, use `comments show` or `comments thread` to get `reply_target` when context matters.

  • Respect project context. Before assuming a project, run

`basecamp config show --json`: its `project_id` is the effective value across flags, env and every config layer, with its source. Do not read `.basecamp/config.json` directly; it is only one layer. With no `project_id`, pass `--in <project>` or the scope shown by leaf help.

  • Use non-interactive output for agent work. Do not allow an ambiguous picker to

block execution.

  • When a result reports content or description attachments, download and inspect

them; images often hold the task's context.

  • A move into another container prints the item's new ID; use it afterwards,

since the old ID stops taking writes. A copy prints its own ID. Never repeat a copy: Basecamp files it in the background, so a copy that is still running or lost its answer may already exist. Check with `basecamp filings show <id>` or the hint it printed.

  • Follow the installed command's help over examples remembered from earlier CLI

versions.

  • Before writing to Basecamp, run `basecamp instructions` and follow what it

prints.

Output modes

Choose deliberately:

| Goal | Mode | |---|---| | Extract, count, or transform data | `--jq '<expression>'` | | Consume full structured response | `--json` | | Consume data without an envelope | `--agent` | | Present portable output directly to a person | `--md` |

`--jq` implies JSON and filters the envelope, so data is usually under `.data`. With `--agent --jq`, it filters the data-only payload. Use `--md` for human-facing listings, but remember that `--md` alone does not suppress interactive prompts. Add enough scope to remove ambiguity or set `BASECAMP_NONINTERACTIVE=1`.

Examples of generic transformations, not command discovery:

basecamp <leaf-command> --jq '.data | length'
basecamp <leaf-command> --jq '[.data[] | {id, name}]'

Project, account, and pagination scope

Do not infer project or account scope from a command's noun; inspect leaf help and its notes. Use the user's e

Read more
@basecamp
Ships withbasecamp-cli

basecamp is the official command-line interface for Basecamp. Manage projects, todos, messages, and more from your terminal or through AI agents.

Stars on GitHub

Momentum

stars in total
294
Star history of basecamp/basecamp-cli on GitHub, a chart by star-history.com

Other skills on basecamp-cli.

basecamp-connect

basecamp-connect

Drive your own Claude Code session from Basecamp: run the local connector, acknowledge trusted requests, and delegate work to…

More skills from other plugins.

i-have-adhd

i-have-adhd

Shape output for a reader with ADHD: lead with the next action, number multi-step work, restate state across turns, suppress…

@ayghri@ayghriInstall Skill
ab-test-analysis

ab-test-analysis

Analyze A/B test results with statistical significance, sample size validation, confidence intervals, and ship/extend/stop…

@phuryn@phurynInstall Skill
distilly

distilly

Set up the owner profile so a personal agent knows who it works for (first-run setup, \"get to know me\"), or distill colleague,…

Questions about basecamp.

Which coding agents can use basecamp?
basecamp installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.