Skip to content

feat: add agent setup prompt at /setup/prompt.md - #122

Merged
mattdjenkinson merged 10 commits into
mainfrom
feat/agent-setup-prompt
Nov 11, 2026
Merged

mattdjenkinson merged 10 commits into
mainfrom
feat/agent-setup-prompt

Conversation

@mattdjenkinson

@mattdjenkinson mattdjenkinson commented Nov 6, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds a Datum version of Cloudflare's "Onboard your agent" flow. The cloud portal dashboard will copy this sentence for the user to paste into their coding agent (datum-cloud/cloud-portal#1797):

Fetch and execute the appropriate instructions to set me up for Datum Cloud from https://agents.datum.net/setup/prompt.md

The portal will also add the user's org and project to the end of the sentence, so the agent switches to the right context.

What the prompt has the agent do

  1. Ask the user once, before installing anything: all datumctl plugins, a chosen few, or none; whether they also use Claude Code (not asked when the agent is Claude Code); and whether to add a line to their global agent instructions. Everything else is automatic.
  2. Download datumctl and datum-mcp from GitHub releases into ~/.local/bin (or %LOCALAPPDATA%\Programs\Datum on Windows) with curl and tar or PowerShell. Nothing needs to be installed first, and there's no sudo. The agent adds the folder to PATH if it isn't there already.
  3. Install the plugins the user chose. For "all", that's datumctl plugin install --all-available.
  4. Connect itself, with one section per agent:
    • Claude Code, whether it's the agent running the prompt or the user said they also use it: adds the Datum plugin marketplace and installs plugins at user scope. datum-cloud (both MCP servers and sign-in) always comes; datum-compute, datum-dns, datum-networking and milo-observe follow the user's datumctl plugin choice. The agent turns on auto-update for the marketplace ("autoUpdate": true on its extraKnownMarketplaces entry in ~/.claude/settings.json), which Claude Code leaves off for third-party marketplaces. The old datum-cloud@datum-cloud plugin is removed if present, so the MCP servers aren't registered twice. milo-activity is left out, as in the marketplace's own one-line install, because it needs the separate activity MCP server and a kubeconfig.
    • Codex, Cursor, Copilot, OpenCode, Windsurf: the same skills via npx skills add for each product repo, or, without Node, from the commit-pinned skill index with each digest checked. Plus the MCP config each one expects. datum-mcp is registered by its full path, because editors started from the Dock or Start menu don't see the shell's PATH.
  5. If the user said yes, add one line to their CLAUDE.md/AGENTS.md.
  6. Sign in. The agent runs datumctl login --project <org>/<project> itself, and the user only approves the sign-in in their browser. With no project named, login signs in and the agent sets the context with datumctl ctx use.
  7. Check the setup with datumctl version, datumctl plugin list, datumctl whoami and datumctl ctx, plus the agent's MCP list.
  8. Print a summary of what was installed and what failed.

Changes

  • app/content/setup/prompt.md: the instructions.

  • /setup/prompt.md: a resource route that serves the instructions as raw markdown, the same pattern as the recipe .md routes.

  • /setup: an HTML page that shows the sentence to paste above the rendered instructions.

  • llms.txt, sitemap.xml and the home page content now link to the setup page.

  • Out-of-date listings fixed:

    • The MCP server card gave npx datum-mcp and brew install datum-cloud/tap/desktop. It now points to the setup prompt, the GitHub releases and the datum-cloud plugin in the new marketplace.
    • llms.txt and the home page described a datumctl ai MCP mode. That command was replaced by the assistant plugin, so they now point to datum-mcp.
  • Dependency bump: @datum-cloud/datum-ui goes from 3.4.0 to 3.8.0. 3.8.0 makes motion a required peer in the range >=13 <14. The site doesn't import motion itself, so it moves from ^14 to ^13.5.1 to fit that range, in line with cloud-portal. The rest of the lockfile diff is datum-ui's own dependencies.

Depends on datum-cloud/datumctl#358

The prompt now uses two flags from that PR: datumctl plugin install --all-available and datumctl login --project. A datumctl release with #358 has to ship before this site goes out. With an older datumctl, the prompt tells the agent to upgrade, and if it can't, to fall back to the user running datumctl login themselves.

Test plan

  • npm run typecheck, npm run lint, npm run format:check and npm run build pass.
  • /setup/prompt.md returns 200 as text/markdown.
  • /setup, /index.md, /llms.txt, /sitemap.xml and /.well-known/agent-skills/index.json return 200.
  • /setup renders: the sentence wraps, the table renders and there's no horizontal scroll. Its two console errors also appear on /recipes, so they come from existing code.
  • Each SKILL.md URL in the skills manifest returns 200.
  • npx skills add <repo> --list finds the same skills as the generated index for all six repos (3, 7, 10, 10, 22, 3), and npm run skills:check passes on the merged branch.
  • The macOS/Linux install snippet installs working datumctl and datum-mcp binaries on macOS (arm64) and in a Debian container. The skills curl-and-tar fallback extracts all three skills.
  • The Claude Code commands (marketplace add twice, marketplace update, plugin install --scope user) work against an empty config folder. add writes the extraKnownMarketplaces entry, and the plugins stay enabled with autoUpdate added to it. claude plugin marketplace list doesn't show the flag, so auto-update itself is checked against the docs only.
  • The Windows PowerShell install hasn't been run.
  • Paste the sentence into Claude Code on a clean machine and run the whole setup.
  • The Codex, VS Code (code --add-mcp) and Windsurf commands haven't been run. Their formats come from those tools' docs.

A user pastes one sentence into their coding agent, pointing it at
/setup/prompt.md. The agent then installs datumctl with every plugin from
the official catalog, installs datum-mcp, connects both MCP servers and
the Datum skills for its own agent type, signs in, checks the result
and reports back. /setup shows the same content to people.

Also correct the skills manifest, MCP server card, llms.txt and home
page, which listed skills that no longer exist and a datumctl ai command
that was replaced by the assistant plugin.
3.8.0 makes motion a required peer dependency in the range >=13 <14.
The site's own code doesn't import motion, and the datum-ui entries it
uses (utils, theme, styles) don't either, so motion moves from ^14 to
^13.5.1 to satisfy datum-ui's range, in line with cloud-portal.
Rely on datum-cloud/datumctl#358:

- Install plugins with `datumctl plugin install --all-available` instead
  of parsing `plugin search` output and installing one at a time.
- Run `datumctl login --project <org>/<project>` from the agent, so the
  user only approves the sign-in in their browser. Without a project,
  login signs in and the agent picks the context with `ctx use`.
- Always upgrade an existing datumctl, and fall back to the old flow
  when a flag is missing.
@mattdjenkinson
mattdjenkinson marked this pull request as draft November 6, 2026 17:15
- Ask the user once, before anything is installed, whether they want
  all datumctl plugins, a chosen few or none, and whether to add the
  line to their global agent instructions. datumctl, datum-mcp, the
  MCP config and the skills stay automatic.
- Install datumctl and datum-mcp straight from GitHub releases into
  ~/.local/bin (or %LOCALAPPDATA%\Programs\Datum) with curl and tar or
  PowerShell, so nothing needs to be installed first and no sudo is
  needed. The agent adds the folder to PATH and registers datum-mcp by
  its full path, since editors started from the Dock or Start menu
  don't see the shell's PATH.
- Fall back to curl and tar for the skills when npx isn't available.
- Drop the Homebrew install from the MCP server card.
@mattdjenkinson
mattdjenkinson marked this pull request as ready for review November 6, 2026 17:24
# Conflicts:
#	app/lib/page-content.ts
#	public/.well-known/agent-skills/index.json
The Datum skills moved to the datum-claude-code-plugins marketplace
(datum-cloud/claude-code-plugins): datum-cloud for sign-in and the MCP
servers, plus one plugin per product. The setup prompt now installs
datum-cloud and milo-activity always, and the compute, DNS, networking
and observe plugins to match the datumctl plugins the user chose.
Claude Code installs them from the marketplace and drops the old
datum-cloud@datum-cloud plugin so the MCP servers aren't registered
twice. Other agents run npx skills add per product repository, or
fall back to the commit-pinned skill index and check each digest.

Point the MCP server card, llms.txt and the home page at the new
marketplace too.
Ask in step 0 whether the user also uses Claude Code, so an agent like
Cursor or Codex sets up Datum's marketplace and plugins there too. Install
at user scope, refresh the marketplace first, and turn on auto-update in
settings.json, since Claude Code leaves it off for third-party marketplaces.

Drop milo-activity: it needs the separate activity MCP server and a
kubeconfig, and the marketplace leaves it out of its own one-line install.
@mattdjenkinson
mattdjenkinson merged commit 1266e94 into main Nov 11, 2026
8 checks passed
@mattdjenkinson
mattdjenkinson deleted the feat/agent-setup-prompt branch November 11, 2026 14:30
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.

2 participants