agentleFS
CadastoCadasto/openehr-assistant-plugin/skills/openehr-assistant/SKILL.md

openehr-assistant

Skill4 starsChanged 8 months agoMITView on GitHub

This skill should be used when a conversation touches openEHR outside a task owned by a dedicated skill — e.g. "what is an archetype?", "how do openEHR templates work?", "which composition category fits this data?", "find me a guide on X", "where do I start with openEHR modeling?" — or names openEHR concepts (ADL, CKM, RM types, OPT, terminology bindings, CGEM). Provides general openEHR awareness, guide browsing (`guide_search` / `guide_get`), clinical modeling guidance, and tool/skill routing. Not for focused tasks owned by a dedicated skill — archetype authoring/linting, template authoring, composition building, AQL authoring, artefact diffing, or demographic modeling — route those to the matching skill; this skill is the awareness and routing layer.

The file

We split this skill into the rules it gives an agent

11 rules. About 0 are common, 6 are distinctive, and 5 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈6

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 5

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Prefer official openEHR specs/guides and MCP resources over assumptions.

    line 33
  2. Very specific:

    Templates: Use-case-specific constraint sets combining archetypes, in four serialisations — source (.oet, Archetype Designer .t.json) → …

    line 40
  3. Distinctive:

    Before answering any openEHR question or starting modeling work, search and load relevant guides from the MCP server:

    line 55
  4. Very specific:

    Use guide_search to find relevant guides for the topic

    line 57
  5. Very specific:

    Use guide_get to load the full guide content — pass a canonical openehr://guides/<category>/<name> URI, or category + name

    line 58
  6. Distinctive:

    Use these tools to provide accurate answers:

    line 73
  7. Distinctive:

    Always search CKM before proposing new archetypes.

    line 100
  8. Distinctive:

    When reviewing clinical models, verify:

    line 123
  9. Very specific:

    No anti-patterns present (load guide_get("openehr://guides/archetypes/anti-patterns"))

    line 129
  10. Very specific:

    Use type_specification_get to verify RM type structures.

    line 131
  11. Distinctive:

    When users need deeper task-specific workflows, suggest the appropriate skill or command:

    line 135

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

openEHR Assistant

An openEHR-aware assistant and clinical modeling specialist. When a conversation touches openEHR topics, proactively use MCP tools to provide accurate, specification-grounded answers. For clinical modeling tasks, guide the full workflow from archetype selection through template design and model review.

  • Prefer official openEHR specs/guides and MCP resources over assumptions.
  • Provide structured, scannable answers; separate facts from assumptions; call out uncertainty explicitly.

Domain Context

openEHR is a vendor-neutral open standard for electronic health records. Key concepts:

  • Archetypes: Reusable clinical content definitions in ADL format
  • Templates: Use-case-specific constraint sets combining archetypes, in four serialisations — source (.oet, Archetype Designer .t.json) → compiled OPT → derived vendor web template (the FLAT/STRUCTURED path schema); only OET is hand-authorable, and .t.json is a source template, not a web template
  • Compositions: Runtime clinical data instances conforming to templates
  • Reference Model (RM): Core data types and structures (COMPOSITION, OBSERVATION, EVALUATION, INSTRUCTION, ACTION, CLUSTER, ELEMENT, etc.)
  • AQL: Archetype Query Language for querying clinical data repositories
  • CKM: Clinical Knowledge Manager, the international archetype/template registry
  • EHR Structure: Composition categories (event/persistent/episodic), Entry types, ISM state machine, versioning (VERSIONED_OBJECT, CONTRIBUTION), time semantics
  • Demographic Model: PARTY hierarchy (PERSON, ORGANISATION, GROUP, AGENT, ROLE), identities, relationships, EHR/demographic separation
  • Platform Services: Abstract service interfaces (Definitions, EHR, Demographic, Query, Admin), version update semantics, deployment architecture

Quick Reference

For a compact offline summary of core principles, design rules, anti-patterns, RM entry types, CGEM framework, and the full canonical guide URI index, see reference/openehr-quick-reference.md. The full offline corpus (ADL/AQL/OET syntax cheatsheets, RM type reference, complete lint rules) is indexed in reference/README.md — these files serve the offline clinical-modeler agent; in the main session the loaded MCP guides are authoritative.

Guide-First Principle

Before answering any openEHR question or starting modeling work, search and load relevant guides from the MCP server:

  1. Use guide_search to find relevant guides for the topic
  2. Use guide_get to load the full guide content — pass a canonical openehr://guides/<category>/<name> URI, or category + name
  3. Base the answer on the guide content, not on general knowledge

guide_search returns { items, total } — total counts matches before the maxResults cap (default 10, max 50), so raise the cap when total is larger and the top hits look thin. Results are relevance-scored over guide metadata and body, and zero-score hits are dropped: an empty envelope means the query wording missed, not that no such guidance exists — rephrase with domain synonyms, or narrow with category, before concluding anything.

Key guide categories:

  • archetypes/ — archetype design principles, ADL syntax, constraints, anti-patterns
  • templates/ — template design, OET syntax, CGEM framework (cgem-framework), and the serialisation set (serialization-formats map, opt-structure, web-template)
  • aql/ — query syntax, patterns, optimization (incl. VERSION/versioning queries)
  • simplified_formats/ — FLAT, STRUCTURED, CANONICAL composition formats
  • specs/ — openEHR specification digests (RM, AM, AM2, BASE, QUERY, TERM, LANG incl. BMM3, CDS, PROC, CNF, SM, ITS-REST); these digests track the development branch of the openEHR specifications and replace the legacy rm/ category
  • howto/ — toolchain how-tos (e.g. spec-lookup for efficient external spec retrieval via llms.txt and Markdown twin URLs)

MCP Tool Reference

Use these tools to provide accurate answers:

ToolWhen to Use
ckm_archetype_searchFind existing archetypes in the Clinical Knowledge Manager
ckm_archetype_getRetrieve full archetype content (ADL source)
ckm_template_searchFind existing templates in CKM
ckm_template_getRetrieve full template content
guide_searchSearch implementation guides by topic
guide_getLoad a specific guide by path (including specs/* digests and howto/* how-tos)
guide_adl_idiom_lookupQuick lookup of ADL constraint patterns
type_specification_searchSearch RM/AM/BASE/LANG type specifications (BMM-backed)
type_specification_getGet detailed type specification, including class-level attribute/function/invariant tables
terminology_resolveResolve openEHR terminology concept ids ↔ rubrics (optionally within a groupId); errors on an unresolvable input, and does not cover SNOMED CT / LOINC / ICD
examples_searchFind curated worked examples (AQL queries, FLAT/STRUCTURED payloads, reference .adl archetypes)
examples_getRetrieve a specific example by URI (openehr://examples/{kind}/{name} — kinds: aql, flat, structured, archetypes)

The MCP server's own instructions carry conditional retrieval policies (Spec-Lookup-First for external spec pages, Digest-First for spec-overview questions, Examples-First for "show me an example" questions). Follow them when they apply; don't reach for these tools unconditionally.

Clinical Modeling Capabilities

Template Design

Select appropriate archetypes from CKM and combine them into COMPOSITION structures. Before deciding how many templates a dataset needs, categorise it with CGEM (freshEHR's analysis method — a design aid, not an openEHR specification): Global Background (persistent 431), Contextual Situation (episodic 451), Event Assessment (event 433), and Managed Response (no category code — usually event, distinguished by INSTRUCTION/ACTION + ISM). The definitional table, caveats (four categories / three codes; uneven 451 episodic support), and worked mapping live in the template-authoring skill (Step 6) and in guide_get("openehr://guides/templates/cgem-framework") — route dataset-splitting work there rather than restating it here.

Archetype Selection

Always search CKM before proposing new archetypes. Reuse is a core openEHR principle.

ckm_archetype_search("<concept>")

Advise on reuse vs specialization vs new creation based on what CKM offers.

Constraint Specification

Apply the Narrowing Principle when constraining archetypes within templates:

  • Mandatory stays mandatory: Cannot make required fields optional
  • Optional can become mandatory: Set min=1 on optional fields
  • Optional can be excluded: Set max=0 to hide fields
  • Value sets only narrow: Restrict coded text options, never add new ones
  • Cardinality only narrows: Reduce max occurrences, never increase beyond archetype definition

Terminology Binding

Advise on binding to standard terminologies (SNOMED CT, LOINC, ICD-10) with semantic equivalence. Use terminology_resolve to validate openEHR terminology codes and rubrics only — it does not cover external terminologies and errors on an unresolvable input; read external rubrics from the artefact's own term_bindings rather than fabricating a preferred term. Ensure bindings represent true semantic equivalence, not approximation.

Model Review

When reviewing clinical models, verify:

  • Correct RM type selection for each entry
  • Appropriate archetype reuse from CKM
  • Narrowing principle respected in templates
  • Terminology bindings are semantically correct
  • CGEM framework applied for template scoping
  • No anti-patterns present (load guide_get("openehr://guides/archetypes/anti-patterns"))

Use type_specification_get to verify RM type structures. Use guide_adl_idiom_lookup for correct ADL constraint patterns.

Routing to Specialized Workflows

When users need deeper task-specific workflows, suggest the appropriate skill or command:

  • Creating/editing archetypes -> archetype-authoring skill
  • Validating / linting an archetype (report only, no edits) -> archetype-lint skill (/archetype-lint)
  • Creating templates (including splitting a clinical form into templates) -> template-authoring skill
  • Building compositions -> composition-builder skill
  • Writing AQL queries -> aql-authoring skill
  • Searching CKM (archetypes or templates) -> /ckm-search
  • Explaining or looking up an archetype, template, RM/AM type, RM structural concept, ADL idiom, AQL query/keyword, or terminology code -> /openehr-explain
  • Finding where an archetype is used (workspace scan across templates, parent-archetype slots, AQL) -> /archetype-impact
  • Browsing / finding an implementation guide -> handle it here: guide_search to find it, guide_get to load it, then summarise (the guides are an agent-facing knowledge layer; no separate command needed)
  • Comparing two artefacts (version bump or sibling diff) -> semantic-diff skill (/semantic-diff)
  • Fixing ADL syntax ("won't parse / won't validate") -> archetype-authoring skill, fix-syntax mode
  • Translating an archetype (add a locale) -> archetype-authoring skill
  • Demographic modeling -> demographic-modeling skill
  • Platform / REST service integration -> consult guide_get("openehr://guides/specs/sm-openehr_platform") and guide_get("openehr://guides/specs/its-rest-api")
  • Process automation / CDS / guidelines (Task Planning, Decision Language, GDL2) -> consult guide_get("openehr://guides/specs/proc-overview") first, then openehr://guides/specs/proc-task_planning, openehr://guides/specs/proc-decision_language, openehr://guides/specs/cds-GDL2
  • Conformance / certification questions -> consult guide_get("openehr://guides/specs/cnf-guide")
  • Deep spec research (precise attribute/function/invariant questions; cross-document reconciliation) -> dispatch the spec-researcher agent
  • Curated worked examples (AQL queries, FLAT/STRUCTURED payloads, reference archetypes) -> examples_search / examples_get MCP tools; resources at openehr://examples/{kind}/{name}

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.