spec-researcher

spec-researcher is an agent for Claude Code from Cadasto/openehr-assistant-plugin. It costs 382 tokens per session (1,617 once invoked), scanned A, original, MIT.

An agent for finding answers in openEHR specifications, which define the rules for its healthcare data models, queries, and services.

In plain words
What is it for?
Researching the openEHR Reference Model, Archetype Model, AQL, REST services, terminology, language formats, and other specification components.
Why use it?
It provides specification-based answers when a guide or summary does not cover the detailed rule you need.

Agent for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: model in frontmatter; reads .claude/ paths.

Part of the openehr-assistant plugin — 8 skills, 3 commands, 3 agents, 2 hooks, 1 MCP server shipped together

Good fit Researching the openEHR Reference Model, Archetype Model, AQL, REST services, terminology, language formats, and other specification components.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/cadasto/openehr-assistant-plugin/spec-researcher
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/Cadasto/openehr-assistant-plugin

Made for: Claude Code.

Or install openehr-assistant, the plugin that ships this one along with the rest of its 8 skills, 3 commands, 3 agents, 2 hooks, 1 MCP server.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for spec-researcher

README.md
[![agentmods](https://agentmods.dev/badge/agents/cadasto/openehr-assistant-plugin/spec-researcher/github.svg)](https://agentmods.dev/agents/cadasto/openehr-assistant-plugin/spec-researcher)
Your own site
<a href="https://agentmods.dev/agents/cadasto/openehr-assistant-plugin/spec-researcher"><img src="https://agentmods.dev/badge/agents/cadasto/openehr-assistant-plugin/spec-researcher/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for spec-researcher

Your own site · 80×15
<a href="https://agentmods.dev/agents/cadasto/openehr-assistant-plugin/spec-researcher"><img src="https://agentmods.dev/badge/agents/cadasto/openehr-assistant-plugin/spec-researcher.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 382 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,617 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00382 $0.01617
Opus 5 $0.00191 $0.00809
Sonnet 5 $0.00076 $0.00323
Haiku 4.5 $0.00038 $0.00162

Measured 10d ago against content hash 6f4ff75b2571, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-10, from the pricing page.

Security

Grade A, and why

spec-researcher scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

agents/spec-researcher.md · 126 lines

How it starts

The opening of the file, as written. The whole thing — 126 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Spec Researcher

You research openEHR specifications efficiently using the Spec-Lookup-First methodology defined in the MCP server's howto/spec-lookup guide. Your context is isolated from the main session so you can fetch large spec documents without polluting the dispatcher's context.

Input contract

The dispatcher provides:

  • A spec question (e.g. "what's the full invariant list on COMPOSITION?", "summarise ADL2", "how is the LANG BMM persistence format defined?").
  • Optionally: the target openEHR component (RM, AM, AM2, BASE, QUERY, TERM, LANG, CDS, PROC, CNF, SM, ITS-REST).
  • Optionally: a release tag if the user explicitly asked for a fixed version (otherwise assume development).

Workflow — follow this order

1. Load the methodology

guide_get("openehr://guides/howto/spec-lookup")

Keep its rules in mind: llms.txt resolves component/doc names; .md twins are the cheapest textual source and cover most — not all — spec pages, so a 404 means "fetch the HTML page", never "no such document"; class tables live in HTML or BMM (not Markdown); development branch is the tracking target.

2. Classify the question

  • Spec overview ("what does EHR IM define?", "summarise ADL2") → load the matching digest via guide_get(category="specs", name="<component>-<doc>"). Digests are 250–900 words and often fully answer overview questions. If the digest answers the question, you are done.
  • Class-level detail (attributes, functions, invariants of a type) → type_specification_get("<TYPE_NAME>"). BMM-backed; exhaustive. You are done.
  • Prose / rationale / examples → fetch the .md twin. Example:
    WebFetch("https://specifications.openehr.org/releases/RM/development/ehr.md", prompt="Extract the EHR_STATUS section — include all prose, rationale, and examples.")
    
    Use development URLs unless the user explicitly asks for a fixed release tag. If the .md twin 404s, refetch the same path as .html — twin coverage is high but not universal.

Read the full file on GitHub · 126 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 10d ago First seen · 126 lines · 382 tokens per session scan A 6f4ff75b2571

Subscribe to this mod's changes

spec-researcher is an agent published in the GitHub repository Cadasto/openehr-assistant-plugin (4 stars, last pushed 15d ago), licensed MIT. It adds 382 tokens to every session and 1,617 once invoked, about $0.0019 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.