0063. One prompt sets up a coding agent, and the skill goes where each agent reads it
Status: accepted (agent-setup-prompt change, 28 October 2026).
Context
Section titled “Context”The owner asked on 27 October 2026 for what ngrok does for agents: one prompt a person pastes into
Claude Code, Codex or another coding agent, which has the agent install the meltemi-diagrams
skill and prove it draws, with the installation and the use of the skill documented on the web.
Each part stopped one step short. skill install (decision 0056) wrote .claude/skills and
.codex/skills only, and Codex no longer reads .codex/skills. The documentation was on GitHub
only, and nothing on diagrams.meltemi.dev said how to give an agent the skill. There was no address
an agent could be told to read and follow, which is the whole of the ngrok pattern
(ngrok.com/agent-setup/prompt.md: the agent reads a hosted text that checks the prerequisites,
installs, proves the result and lists what it must never do). The skill’s description was 1,117
characters, over the Agent Skills specification’s 1,024, and listed every construct before saying
when to use the skill; its token rule was its last paragraph, which a compacted session loses.
The vendors’ pages, read again on the day this was applied (28 October 2026):
- Claude Code (
code.claude.com/docs/en/skills):.claude/skills/in the project, nested folders and--add-dirfolders,~/.claude/skills/, plugins; no.agents/skills. The listing truncates a description at 1,536 characters (“put the key use case first”),SKILL.mdshould stay under 500 lines, and compaction keeps the first 5,000 tokens of an invoked skill. - Codex (
developers.openai.com/codex/skills, redirected tolearn.chatgpt.com/docs/build-skills): “Codex scans.agents/skillsin every directory from your current working directory up to the repository root”,$HOME/.agents/skills,/etc/codex/skills; no.codex/skills. - Cursor (
cursor.com/docs/context/skills):.agents/skills/,.cursor/skills/and their home twins, and for compatibility.claude/skills/and.codex/skills/. - GitHub Copilot (
docs.github.com/en/copilot/concepts/agents/about-agent-skills):.github/skills,.claude/skillsor.agents/skillsin the repository;~/.copilot/skillsor~/.agents/skills; locations depend on the surface. - Gemini CLI (
geminicli.com/docs/cli/skills/):.gemini/skills/or the.agents/skills/alias, and their home twins. - Windsurf, now Devin Desktop (
docs.windsurf.com/windsurf/cascade/skills, redirected todocs.devin.ai/desktop/cascade/skills):.devin/skills/, the legacy.windsurf/skills/, and.agents/skills/and~/.agents/skills/“for cross-agent compatibility”;.claude/skills/only when reading Claude Code’s configuration is enabled.
Every agent of the owner’s list but Claude Code reads .agents/skills.
Decision
Section titled “Decision”- A hosted prompt an agent reads and follows.
packages/cli/agent-setup/prompt.mdis the canonical text: English, addressed to the agent, 500 to 1,000 words, with seven sections in a fixed order (what Meltemi Diagrams is, before you start, install the skill, prove it, never, next). The package ships it,meltemi-diagrams skill promptprints it byte for byte for an agent without web access, and the playground build copies it todist/agent-setup/prompt.md, served athttps://diagrams.meltemi.dev/agent-setup/prompt.mdwith every push tomain. A test pins its headings, its required sentences, each never-rule and its length. - Two cadences, one precondition. The page and the prompt deploy with
main; the command line reaches npm on a release tag. The prompt says it needs the command line 1.10.0 or later, and an agent that finds an older one tells the person and stops, rather than a fallback text kept forever in a product file. - The one-line prompt is English and one text, written on the page in both languages and in
docs/agents.mdand its Spanish copy; the page’s test and the documentation’s parity test fail when a copy differs. The Spanish page and documentation explain it in Spanish. skill installwrites the folders each agent reads.SKILL_AGENTSmapsclaudeto.claude/skillsandcodex,cursor,copilot,gemini,windsurf,devinand the genericagentsto.agents/skills, as the pages above say.--agenttakes a name,all(the default) or a comma-separated list and may be repeated; each folder is written once, in the table’s order;--userwrites~/.claude/skillsand~/.agents/skills; an unknown or empty name is a usage error listing the names. The command writes skill folders only, never an instruction file. This repository’s sync follows:.agents/skillsreplaces.codex/skills, whose copy is gone, while the OpenSpec skills that tool writes there stay.- An agent setup page on the product’s origin.
agent-setup/andes/agent-setup/are static twins with no script, their own stylesheet and their own policy (default-src 'none'; style-src 'self'; img-src 'self'; base-uri 'none'; form-action 'none'), served by the assets platform with the build’s_headers. Every code block of the page is a fenced block ofdocs/agents.md, and the agents table equalsSKILL_AGENTS. The playground’s About dialog links it in the interface’s language (the Spanish interface opens the Spanish twin), and Continue locally listsmeltemi-diagrams skill install. - The skill fit to travel. The description is under 1,024 characters and starts with when to
use the skill;
license: MITandmetadata.version, whichpnpm release:versionwrites throughVERSION_MENTIONS(a second, possibly empty capture keeps the script’s$1<version>$2replacement, CRLF files included) and the skills test checks againstCLI_VERSION. The workflow opens with how to check the command line, where new sheets go and the token rule, within the first 40 lines; the validation step namesChecked 1 file: 0 errors, 0 warnings.; the review step sayspnpm previewstarts a server; the cloud commands move toreference/cloud.md.
Alternatives considered
Section titled “Alternatives considered”- The family site hosts the page and the prompt: a copy of a text whose truth is here, with no test across repositories, on another cadence.
- The raw file on GitHub: a branch-dependent address on a third party’s host, and nothing on the product’s web.
- A command-only flow (
--agent autodetecting folders, askill checkwriting a sample): deterministic, but the folders exist only after an agent ran, and the asking and the never-rules belong to a text the agent reads first. - Each agent’s own folder as well (
.cursor/skills,.github/skills,.gemini/skills,.devin/skills): every one reads.agents/skillstoo, and each extra copy is one more to drift. - Keeping
.codex/skillsforcodex: a skill in a folder Codex does not read. - A Spanish one-liner: a second text to keep true for a prompt whose target is English anyway.
- A fallback sentence for 1.9.0 in the prompt: compatibility text kept forever for a window of days, naming a retired folder.
Consequences
Section titled “Consequences”- Until the 1.10.0 tag,
npx @meltemi/diagrams-cli@latestis 1.9.0, which knows--agent claude|codex|allonly: an agent following the hosted prompt reports the older version and stops. Releasing 1.10.0 close to the merge closes the gap. The real proof, pasting the one-liner into Claude Code and into Codex in an empty folder against the published package, is the owner’s step after the tag. - On 28 October 2026, after the tag, Codex (
codex exec, itsworkspace-writesandbox with the network) ran the one-liner in an empty folder: it read the hosted prompt, checked Node and 1.10.0, asked which agents since the folder had none, installed.claude/skillsand.agents/skills, drewinit’s sign-in, validated it toChecked 1 file: 0 errors, 0 warnings.and exported the SVG, with no cloud command, token or commit. It found two faults, fixed the same day: the prompt was served astext/markdownwith no charset, which PowerShell read as Latin-1, so_headersnamescharset=utf-8; and its sandbox could not run the machine’s Node, so it downloaded one, which the prompt now forbids (it tells the person and stops). - The same day, Claude Code (
claude -p, allowednpx,node, file reads and writes and a fetch of diagrams.meltemi.dev) ran the one-liner in another empty folder: its fetch tool returned the prompt paraphrased, which was enough; it checked Node and 1.10.0, counted itself as the project’s only agent and installed.claude/skillswithout asking, saying so in its report and offering the other folders; with no code to read it drew the setup flow itself rather thaninit’s sign-in, validated it toChecked 1 file: 0 errors, 0 warnings.on the first run and exported the SVG, with no cloud command, token or commit. - A project installed by 1.9.0 keeps
.codex/skills/meltemi-diagrams; runningskill installagain writes.agents/skills, and the old folder is the person’s to delete. - The family site’s Diagrams page linking
https://diagrams.meltemi.dev/agent-setup/belongs to Meltemi Web. - New public surface:
skill prompt, the agents’ names,SKILL_AGENTSas a table of folders, the package’sagent-setup/folder, the page and its address.