Basecamp

basecamp/skills/skills/basecamp

作者 basecamp65fd071b41eb無授權條款79 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫昨天更新

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.

AI 產生的概覽

透過 Basecamp CLI 操作 Basecamp 的專案、待辦事項、卡片、訊息、檔案與排程。

功能
此技能定義了使用已安裝的 Basecamp CLI 讀取與修改 Basecamp 資料(例如專案、待辦事項、卡片、訊息、檔案、排程、簽到、人員、指派與通知)的操作規則。它要求先探索再執行:代理需先查看葉節點指令的說明,再選擇 --jq、--json、--agent 或 --md 等輸出模式,並解析 Basecamp 網址以取得帳戶、專案、記錄與留言 ID。內容也涵蓋分頁與設定檔範圍、標準輸入內容、結構化錯誤復原以及安全變更流程。其產出是 CLI 指令及其結構化結果,而非檔案或程式碼。
適用情境
當任務需要查詢或操作 Basecamp 內容時使用,例如列出待辦事項、發布訊息、移動卡片、下載檔案或查看指派。適用於提到 Basecamp、Basecamp 網址,或使用者自己的待辦事項、排程與通知的要求。
執行需求
需要安裝並已完成身分驗證的 Basecamp CLI,憑證儲存在本機(技能禁止讀取憑證檔案)。需要連線至 Basecamp 的網路存取,可透過 --profile 或 BASECAMP_PROFILE 選擇設定檔。此技能不含指令碼,僅為說明文件。

Basecamp CLI

Use the installed CLI as the command reference. This skill defines the operating rules; it intentionally does not duplicate the CLI's command 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:

    bash
    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:

    bash
    basecamp <group> --agent --help   # fallbackbasecamp --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.

Targeted leaf help is cheap and local; root help returns the full command catalog and is not token-cheap. Do not load root help merely to confirm global flags already documented by this skill. 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. Check .basecamp/config.json before assuming a project; otherwise 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 contain the essential task context.
  • Follow the installed command's help over examples remembered from earlier CLI versions.

Output modes

Choose deliberately:

GoalMode
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. It normally filters the JSON envelope, so data is commonly 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:

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

Project, account, and pagination scope

Do not infer that a command is project-scoped or account-wide from its noun. Inspect the leaf help and its notes. Use the user's explicit project/account when provided; otherwise honor trusted local configuration.

For paginated commands, inspect help before combining pagination flags. In general, --limit N caps an auto-paginated result, --all walks every page, and --page N requests one page, but individual endpoints can differ and mutually exclusive combinations are rejected.

Named identities use profiles. Select one with global --profile <name> or BASECAMP_PROFILE=<name>; do not silently switch profiles or default accounts.

URLs and replies

A parsed URL can supply account_id, project_id, recording_id, and, when a fragment points at a comment, comment_id.

bash
basecamp url parse "https://3.basecamp.com/123/buckets/456/todos/789" --json

For replies, fetch reply-ready context rather than posting to the fragment ID:

bash
basecamp comments thread "<comment-url>" --json# Post to .data.reply_target.recording_id

Use comments show when only the cheap reply target and mention atoms are needed; use comments thread when surrounding discussion matters.

Content and stdin

Command help declares content arguments and stdin support. Titles are generally plain text; rich-text fields generally accept Markdown and can opt into HTML with --format html where documented. Do not guess a --title, --body, or --content flag when help shows a positional argument.

For multiline, non-ASCII, or shell-sensitive content, pass - in the documented content position and pipe stdin:

bash
printf '%s\n' 'First line' '' 'Second line' |  basecamp <leaf-command> <other-args> - --json

A pipe is never consumed implicitly. Only one input may read stdin in an invocation. Do not use shell-specific ANSI-C quoting such as $'line 1\nline 2' in portable commands.

For deterministic mentions, prefer the machine-provided mention syntax from people or comment results, for example [@Name](mention:SGID). Mention support varies by field; leaf help is authoritative.

Errors and recovery

Structured failures include error, code, retryable, and often hint.

  • Retry only when retryable is true, with bounded backoff.
  • retryable: false means there is no positive retry signal; it covers both known verdicts and unclassified failures. Inspect code, error, and hint before choosing recovery, and do not blindly repeat the same call.
  • For usage errors, inspect leaf help and supply the named positional argument.
  • For ambiguous names, use an ID or add the missing project/container scope.
  • For auth or connectivity diagnosis, use basecamp doctor --json and basecamp auth status --json before changing credentials.
  • Before any login recovery, inspect oauth_type. An agent profile must be recovered with the agent/client-credentials flow named by the CLI hint; a normal person login can replace the agent identity.

Do not improvise raw API calls merely because a command failed. First inspect the relevant help and error hint. Use basecamp api only when the CLI has no native operation and the API path and payload are known.

Mutations

Before changing Basecamp:

  1. Resolve the account, project, container, and item unambiguously.
  2. Inspect leaf help for required positional arguments and visibility or notification behavior.
  3. Make the smallest requested change.
  4. Return the resulting ID/URL and summarize what changed.

For destructive or broad operations, preview when the command offers a dry-run and do not expand the user's requested scope.

來源與署名

來源:basecamp/skills位於skills/basecamp提交65fd071

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架