basecamp-connect
Drive your own Claude Code session from Basecamp: run the local connector, acknowledge trusted requests, and delegate work to…
Diagnose Basecamp CLI, authentication, and agent-plugin health.
Claude Code
$ npx -y skills add basecamp/basecamp-cli --skill basecamp-doctor --agent claude-code
Codex
$ npx skills add basecamp/basecamp-cli --skill basecamp-doctor -a codex -y
Cursor
$ npx skills add basecamp/basecamp-cli --skill basecamp-doctor -a cursor -y
Gemini CLI
$ npx skills add basecamp/basecamp-cli --skill basecamp-doctor -a gemini-cli -y
GitHub Copilot
$ npx skills add basecamp/basecamp-cli --skill basecamp-doctor -a github-copilot -y
OpenCode
$ npx skills add basecamp/basecamp-cli --skill basecamp-doctor -a opencode -y
Windsurf
$ npx skills add basecamp/basecamp-cli --skill basecamp-doctor -a windsurf -y
name: basecamp-doctor description: Diagnose Basecamp CLI, authentication, and agent-plugin health.
Run the structured diagnostic:
basecamp doctor --json
Interpret every check by status:
Report failures and warnings with their `hint` fields. Also inspect the top-level `breadcrumbs` array and preserve its structured `cmd` next steps, because a breadcrumb can provide a more specific action than a check hint. Use these common remediations when relevant:
with `--expect-identity <id>` so a browser signed in as someone else cannot become the profile. A bot or CI profile that must never sign in interactively imports a personal access token instead: `op read "op://<vault>/<item>/credential" | basecamp auth login --with-token -P <profile> --account <id> --expect-identity <id>`
**Check `oauth_type` before suggesting either.** `basecamp auth status --json` reports it, and `agent` means the profile is a Basecamp agent: a principal with no person behind it, which authenticates with its OAuth client rather than a sign-in. Both commands above would store a PERSON's credential under that profile and silently replace the agent. Its remediation is its own login, with the client secret piped in: `op read "op://<vault>/<item>/credential" | basecamp auth login --with-client-credentials --client-id <id> -P <profile> --account <id>` The CLI's own `hint` on an agent credential already names this command with the client id filled in — prefer it verbatim over reconstructing one, and follow it rather than choosing for yourself whenever `oauth_type` is absent.
Every remediation above runs without a terminal. Bare `basecamp setup` is the human first-time flow and is **not** one of them: it opens browser OAuth and refuses with a usage error in machine-output modes or unless stdin, stdout, and stderr are all terminals. `basecamp setup --customize` additionally asks the user to choose each default. Suggest either to a human at a terminal if useful, but never run them yourself — use the subcommands above.
Do not read, print, or request credential files. If every check passes, say that Basecamp and its agent integration are ready.
basecamp is the official command-line interface for Basecamp. Manage projects, todos, messages, and more from your terminal or through AI agents.
Drive your own Claude Code session from Basecamp: run the local connector, acknowledge trusted requests, and delegate work to…
Shape output for a reader with ADHD: lead with the next action, number multi-step work, restate state across turns, suppress…
Set up the owner profile so a personal agent knows who it works for (first-run setup, \"get to know me\"), or distill colleague,…