From cardinal
Connect Claude Code to Cardinal — write the OpenTelemetry env block into ~/.claude/settings.json so sessions stream to the Cardinal Outcomes Dashboard.
How this skill is triggered — by the user, by Claude, or both
Slash command
/cardinal:connectThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill wires Claude Code's OpenTelemetry up to a Cardinal workspace. It writes
This skill wires Claude Code's OpenTelemetry up to a Cardinal workspace. It writes
the right keys into the env block of ~/.claude/settings.json (preserving any
unrelated keys), and records non-secret metadata in ~/.claude/cardinal.json so
/cardinal:status and /cardinal:disconnect know what was wired.
The plugin ships an executable cardinal-connect on the Bash tool's PATH. Invoke
it via the Bash tool with the user's arguments:
cardinal-connect [flags]
--key <ingest-key> — the Cardinal ingest API key (begins with hex bytes).--org <slug> — the org slug, e.g. cardinal-hq.--ingest-endpoint <url> — the OTLP/HTTP endpoint, e.g.
https://otelhttp.intake.us-east-2.aws.cardinalhq.io.--user-email <email> — the user's email for resource attribution.--host <url> — Cardinal app host. Defaults to https://app.cardinalhq.io.--deployment-env <name> — derived from host when omitted (prod /
dogfood / cardinal / customer / unknown).--no-tool-details — opt out of capturing bash commands and file paths.
On by default — required for per-repo and per-team attribution in the
Outcomes Dashboard. See the warning below.--rotate — skip the "already connected" confirmation when re-connecting.--dry-run — print the env block that would be written, don't touch files.--no-color — disable color output (for non-TTY)./cardinal:connect with no argsWalk them through the values:
https://app.cardinalhq.io/settings/connect-claude-code. That page
renders a complete env block with a freshly-minted key already inlined.OTEL_EXPORTER_OTLP_HEADERS), the endpoint
(from OTEL_EXPORTER_OTLP_ENDPOINT), and their org slug + email (from
OTEL_RESOURCE_ATTRIBUTES).--no-tool-detailsTool-details capture is on by default because without it, the Outcomes
Dashboard cannot derive repo or service from per-step events — every
session would show as repo=unknown and service=unknown. The trade-off is
that bash command lines and file paths may contain PII, which some orgs'
privacy policies forbid. If the user's org has such a policy, pass
--no-tool-details.
Tell the user:
~/.claude/settings.json env./cardinal:status to verify.If cardinal-connect exits non-zero, surface the error message and don't
claim success. Common cases:
settings.json is malformed JSON — tell the user to fix or back up
~/.claude/settings.json; this command refuses to write into an
unparseable file.missing required flag — re-prompt with the specific flag name.endpoint unreachable — the verify-reachability sanity check failed;
the values may be wrong or the user is offline.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub cardinalhq/cardinal-claude-plugin --plugin cardinal