Skip to content

docs+test: supported install/config paths for the plugin (ENG-8351)#106

Merged
GuyMoses merged 5 commits into
mainfrom
docs/fleet-install-fix
Jun 2, 2026
Merged

docs+test: supported install/config paths for the plugin (ENG-8351)#106
GuyMoses merged 5 commits into
mainfrom
docs/fleet-install-fix

Conversation

@GuyMoses

@GuyMoses GuyMoses commented Jun 2, 2026

Copy link
Copy Markdown
Contributor

Summary

A customer's fleet rollout silently failed to enable the plugin: the Fleet docs implied hand-writing ~/.claude/settings.json installs it (it doesn't). This PR fixes the docs and adds contract tests so the install/credential behavior the docs depend on can't silently regress.

Docs

  • Fix fictional endpoint: ingress.us1.dash0.com didn't resolve. Replaced with the real placeholder https://ingress.<region>.aws.dash0.com (verified via DNS: real ingress is ingress.<aws-region>.aws.dash0.com, e.g. eu-west-1, us-west-2), plus "copy your exact endpoint from Dash0 org settings".
  • Fleet section: lead with claude plugin install (the supported path), explicit "settings.json alone won't install" callout, SSH→HTTPS note. De-duplicated: Fleet references Headless/CI for the install commands and the config-file format instead of repeating them.

Tests — install-config-contract CI job (no API key needed), mapped to documented paths

  • A~/.claude/settings.json alone does not install (the "not enough" callout).
  • Bclaude plugin install --config K=V: installs; non-sensitive → settings.json pluginConfigs; AUTH_TOKEN → secrets store, not settings.json.
  • C — credential delivery end-to-end through on-event.sh to a real OTLP request (mock), for both a config file and DASH0_*/CLAUDE_PLUGIN_OPTION_* env vars.

Marketplace installs (official / Dash0 / local PR-code) are covered by the existing build-and-test steps; the binary reading CLAUDE_PLUGIN_OPTION_* by Go unit tests.

Tracks ENG-8351.

🤖 Generated with Claude Code

GuyMoses and others added 3 commits June 2, 2026 14:09
The Fleet / global deployment section presented hand-writing
~/.claude/settings.json (extraKnownMarketplaces + enabledPlugins) as enough to
install the plugin. Verified in CI that it is NOT: enabledPlugins only enables
an already-installed plugin and extraKnownMarketplaces only registers the
marketplace — neither downloads anything (`claude plugin list` shows nothing
installed, no plugins dir created). This is what caused a customer's fleet
rollout to silently not enable the plugin.

Rewrite the section around the proven one-step CLI installer:

  claude plugin install dash0-agent-plugin@dash0 --scope user \
    --config OTLP_URL=... --config AUTH_TOKEN=... --config DATASET=...

which installs, enables, AND configures non-interactively. Non-sensitive
values land in settings.json pluginConfigs; AUTH_TOKEN goes to the OS keychain
(.credentials.json fallback on Linux) — verified in CI. Keep the config-file
and env-var approaches as documented alternatives, and call out the SSH→HTTPS
marketplace-clone gotcha that the bare-file path silently hit.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contract tests (ci.yml, no API key needed) pinning the install + config
behavior the docs depend on:
- A: hand-written ~/.claude/settings.json alone does NOT install the plugin
- B: `claude plugin install --config` installs and persists non-sensitive
  values to settings.json pluginConfigs, AUTH_TOKEN to the secrets store
  (never settings.json)
- C: a ~/.claude/dash0-agent-plugin.local.md config file feeds creds through
  on-event.sh to a real OTLP request (mock server)

These complement the existing marketplace-install steps (official / Dash0 /
local-workspace) and the Go unit tests (binary reads CLAUDE_PLUGIN_OPTION_*).

README Fleet section reworked to lead with `claude plugin install` + a config
file (the supported, customer-validated path), with --config and env vars as
documented alternatives, and the "settings.json alone won't install" callout.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contract B asserted on ~/.claude/plugins/cache, but a local/directory
marketplace serves the plugin in place and never populates the cache. Switch B
to the published marketplace (--config persistence is marketplace-agnostic;
PR-code install is covered by the workspace step). Contract C now runs from a
clean cwd so the repo's .env/.claude can't override the values under test.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@GuyMoses GuyMoses changed the title docs: fix Fleet section — settings.json alone doesn't install the plugin docs+test: supported install/config paths for the plugin (ENG-8351) Jun 2, 2026
GuyMoses and others added 2 commits June 2, 2026 14:52
README:
- Replace the non-resolving `ingress.us1.dash0.com` examples with the real
  placeholder form `https://ingress.<region>.aws.dash0.com`, and tell users to
  copy their exact endpoint from Dash0 org settings (us1 didn't exist; real
  ingress is ingress.<aws-region>.aws.dash0.com — verified via DNS)
- De-dup: Fleet step 1 references Headless/CI instead of repeating the install
  commands; Fleet credential bullet points to the config-file format instead of
  re-showing frontmatter; tighten the "config files don't merge" wording
- Headless/CI now points to First-time setup for credentials

Tests: Contract C now covers BOTH documented credential mechanisms — a config
file and DASH0_*/CLAUDE_PLUGIN_OPTION_* env vars — each verified end-to-end
through on-event.sh to a real OTLP request. Job comment maps contracts A/B/C to
the documented install/credential options.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ions

- Add the two missing userConfig options (OMIT_IO, OMIT_USER_INFO) to the
  Configuration table so it lists all 6 declared in plugin.json (they were
  documented only under Privacy defaults, making the table look incomplete and
  inconsistent with the env-var/config-file tables).
- Add a consistency-checks step asserting every plugin.json userConfig option
  appears as a README table row, so this can't regress.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@GuyMoses GuyMoses merged commit 0300130 into main Jun 2, 2026
4 checks passed
@GuyMoses GuyMoses deleted the docs/fleet-install-fix branch June 2, 2026 12:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant