FAQ

Home > FAQs > vs SKILL.md

OpenCues vs Anthropic's SKILL.md: what is the difference?

Both are open, folder-of-markdown formats for extending an AI system, and the resemblance is deliberate. The difference is what they extend and when they run: a SKILL.md extends an agent and is invoked after you press Enter; OpenCues' files extend the text field itself and act on your draft while you type.

What a SKILL.md is

An Agent Skill (the SKILL.md standard Anthropic originated, since adopted across coding agents) is a folder containing a SKILL.md: frontmatter with a name and a description, instructions in the body, and optionally bundled scripts and resources. It teaches an agent how to do something. The model reads each installed skill's description: and decides, per task, whether to load the skill and follow it. Its output is agent behaviour: tool calls, file edits, generated documents, inside the agent's turn.

What OpenCues' files are

An OpenCues source is a folder containing a CUE.md or BLANK.md: frontmatter with a trigger, a prompt or data in the body, optionally a sibling script. It teaches your input surface how to help you. The runtime watches the text you're composing, in any supported host, and its output is text in your unsent draft: word alternatives, filled blanks, inline rewrites. Nothing executes an action; you review everything before submitting.

Where each one runs

They sit on opposite sides of the Enter key. A skill fires after submission, inside the agent's context window, as part of the model working on your request. OpenCues fires before submission, inside the input box, while the request is still being written. That makes them complementary rather than competing: you can use OpenCues to sharpen the very prompt that will invoke a skill (improve prompt _ in Claude Code's own prompt box).

How each one is invoked

This is the deepest design difference. A skill is LLM-routed by default: the model reads the description and judges relevance, so whether it auto-fires depends on model behaviour (hosts also let you invoke one explicitly as a slash command). OpenCues triggers are deterministic: a cue fires when its match: regex or keywords: list literally hits a word you typed; a blank fires when its keyword or shape leads the sentence your _ ends. No LLM sits in the routing path.

Three things follow from that:

  • Predictability. The same text always triggers the same source. There is no "the model didn't feel like invoking it today".
  • Latency. Routing costs a regex, not an LLM call, which is what makes per-keystroke operation viable at all.
  • Containment. A config file can't talk its way into firing, and each word is dispatched to exactly one source, so a malicious or badly written source can't reach text it doesn't claim. See the security model.

Side by side

SKILL.md OpenCues (CUE.md / BLANK.md)
ExtendsAn AI agentAny text input
RunsAfter you press Enter, in the agent's turnBefore you press Enter, in your draft
Invoked byThe model, reading the skill's description: (or an explicit user command)Deterministic triggers: regex, keywords, blank shapes
OutputAgent behaviour: tool calls, edits, documentsDraft text: alternatives, fills, rewrites
Blast radiusWhatever the agent's tools allowYour unsent draft, which you review
Shared shapeA folder of markdown with frontmatter, drop-in installable, openly specified

What they share

The family resemblance is real: one folder per capability, markdown with frontmatter as the unit of distribution, hand-editable, and an open format with a written spec of its own. OpenCues additionally hot-reloads edits within a couple of seconds while you type, and backs its versioned spec with an executable conformance suite.

Related: What is a cue? · What is a blank? · Security model · OpenCues vs MCP · GitHub repo