Imaging Data Commons
K-Dense-AI/scientific-agent-skills
Queries and downloads public cancer imaging data from NCI Imaging Data Commons.
Expert guidance for implementing SQL on FHIR v2 ViewDefinitions and operations to create portable, tabular projections of FHIR data.
$ npx skills add aehrc/pathling --skill sql-on-fhir -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install aehrc/pathling sql-on-fhir --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/aehrc/pathling.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/sql-on-fhir .claude/skills/sql-on-fhir && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "sql-on-fhir" agent skill from https://github.com/aehrc/pathling/tree/main/.claude/skills/sql-on-fhir into .claude/skills/sql-on-fhir/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sql-on-fhir", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/aehrc/pathling/tree/main/.claude/skills/sql-on-fhirType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add aehrc/pathling --skill sql-on-fhir -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install aehrc/pathling sql-on-fhir --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aehrc/pathling.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/sql-on-fhir .agents/skills/sql-on-fhir && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "sql-on-fhir" agent skill from https://github.com/aehrc/pathling/tree/main/.claude/skills/sql-on-fhir into .agents/skills/sql-on-fhir/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sql-on-fhir", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add aehrc/pathling --skill sql-on-fhir -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install aehrc/pathling sql-on-fhir --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aehrc/pathling.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/sql-on-fhir .cursor/skills/sql-on-fhir && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "sql-on-fhir" agent skill from https://github.com/aehrc/pathling/tree/main/.claude/skills/sql-on-fhir into .cursor/skills/sql-on-fhir/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sql-on-fhir", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/aehrc/pathling.git --path .claude/skills/sql-on-fhir--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add aehrc/pathling --skill sql-on-fhir -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install aehrc/pathling sql-on-fhir --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aehrc/pathling.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/sql-on-fhir .gemini/skills/sql-on-fhir && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "sql-on-fhir" agent skill from https://github.com/aehrc/pathling/tree/main/.claude/skills/sql-on-fhir into .gemini/skills/sql-on-fhir/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sql-on-fhir", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install aehrc/pathling sql-on-fhirInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add aehrc/pathling --skill sql-on-fhir -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/aehrc/pathling.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/sql-on-fhir .github/skills/sql-on-fhir && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "sql-on-fhir" agent skill from https://github.com/aehrc/pathling/tree/main/.claude/skills/sql-on-fhir into .github/skills/sql-on-fhir/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sql-on-fhir", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add aehrc/pathling --skill sql-on-fhir -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install aehrc/pathling sql-on-fhir --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/aehrc/pathling.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/sql-on-fhir .opencode/skills/sql-on-fhir && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "sql-on-fhir" agent skill from https://github.com/aehrc/pathling/tree/main/.claude/skills/sql-on-fhir into .opencode/skills/sql-on-fhir/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "sql-on-fhir", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
sql-on-fhirExpert guidance for implementing SQL on FHIR v2 ViewDefinitions and operations to create portable, tabular projections of FHIR data.
SQL On Fhir is an agent skill from aehrc/pathling. Expert guidance for implementing SQL on FHIR v2 ViewDefinitions and operations to create portable, tabular projections of FHIR data. Use this skill when the user asks to create ViewDefinitions, flatten FHIR resources into tables, write FHIRPath expressions for data extraction, implement forEach/forEachOrNull/repeat patterns for unnesting, create where clauses for filtering, use constants in view definitions, combine data with unionAll, execute ViewDefinitions with $run or $export operations, or implement SQL on…
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `references/examples.md`, `references/fhirpath-subset.md` and `references/operations.md`).
It sits in Research & Science, covering Clinical and healthcare research and SQL. It works with SQL. The repository describes itself as: Tools that make it easier to use FHIR and clinical terminology within data analytics, built on Apache Spark. The licence is Apache-2.0.
5 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 56a3b4a. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are json).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
hl7.orgFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
SQL On Fhir loads about 2.3k tokens when it runs, and up to ~12k if it reads all its reference files. Until then it costs about 202 tokens; SKILL.md has 568 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from aehrc/pathling at commit 56a3b4a, republished under its Apache-2.0 licence (© aehrc). 568 words, ~2,338 tokens.
.claude/skills/sql-on-fhir/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.SQL on FHIR v2 defines portable, tabular projections of FHIR resources using FHIRPath expressions. ViewDefinitions transform hierarchical FHIR data into flat tables for analytics.
A ViewDefinition projects exactly one FHIR resource type into rows and columns. It contains:
resource: The FHIR resource type (Patient, Observation, etc.)select: Column definitions and row iteration logicwhere: Optional filtering criteriaconstant: Reusable values for expressionsBasic structure:
{
"resourceType": "ViewDefinition",
"resource": "Patient",
"status": "active",
"select": [
{
"column": [
{ "name": "id", "path": "id" },
{ "name": "gender", "path": "gender" },
{ "name": "birth_date", "path": "birthDate" }
]
}
]
}For complete element reference, see references/view-definition-structure.md.
Each column has:
name: Database-friendly identifier (pattern: ^[A-Za-z][A-Za-z0-9_]*$)path: FHIRPath expression extracting the valuetype (optional): FHIR primitive type URIcollection (optional): Set true if column may contain arraysdescription (optional): Human-readable explanation{
"column": [
{
"name": "family_name",
"path": "name.first().family",
"type": "string",
"description": "Patient's primary family name"
}
]
}Use forEach to create one row per element in a collection. Without forEach, one row per resource is created.
Example: One row per patient name:
{
"resource": "Patient",
"select": [
{ "column": [{ "name": "id", "path": "id" }] },
{
"forEach": "name",
"column": [
{ "name": "family", "path": "family" },
{ "name": "given", "path": "given.first()" }
]
}
]
}forEachOrNull: Same as forEach but keeps a row with nulls when the collection is empty.
Nested forEach: Create cross-products by nesting:
{
"forEach": "contact",
"select": [
{
"column": [
{
"name": "contact_phone",
"path": "telecom.where(system='phone').value"
}
]
},
{
"forEach": "name.given",
"column": [{ "name": "given_name", "path": "$this" }]
}
]
}Use repeat to recursively traverse nested structures to any depth. This is essential for resources with arbitrary nesting like QuestionnaireResponse items.
Constraint: Only one of forEach, forEachOrNull, or repeat may be specified per select.
{
"resource": "QuestionnaireResponse",
"select": [
{ "column": [{ "name": "response_id", "path": "id" }] },
{
"repeat": ["item", "answer.item"],
"column": [
{ "name": "link_id", "path": "linkId" },
{
"name": "answer_text",
"path": "answer.value.ofType(string).first()"
}
]
}
]
}The view runner:
repeat arrayThis produces a flat table with all items regardless of nesting depth.
Filter resources using FHIRPath expressions that must evaluate to true:
{
"resource": "Patient",
"where": [
{"path": "active = true"},
{"path": "name.exists()"}
],
"select": [...]
}Multiple where clauses are ANDed together.
Define reusable values referenced via %name syntax:
{
"constant": [{ "name": "use_type", "valueString": "official" }],
"select": [
{
"forEach": "name.where(use = %use_type)",
"column": [{ "name": "official_name", "path": "family" }]
}
]
}Supported constant types: valueString, valueInteger, valueBoolean, valueDecimal, valueDate, valueDateTime, valueCode.
Combine multiple selection paths with matching column schemas:
{
"select": [
{ "column": [{ "name": "id", "path": "id" }] },
{
"unionAll": [
{
"forEach": "telecom",
"column": [
{ "name": "contact", "path": "value" },
{ "name": "system", "path": "system" }
]
},
{
"forEach": "contact.telecom",
"column": [
{ "name": "contact", "path": "value" },
{ "name": "system", "path": "system" }
]
}
]
}
]
}ViewDefinitions use a minimal FHIRPath subset. Key functions:
| Function | Description |
|---|---|
first() | First element of collection |
exists() | True if collection has elements |
empty() | True if collection is empty |
where(expr) | Filter collection by condition |
ofType(type) | Filter to specific FHIR type |
extension(url) | Get extension by URL |
join(sep) | Join collection into string |
getResourceKey() | Resource ID (indirect access) |
getReferenceKey(type?) | Extract ID from reference |
Path navigation:
name.familyname[0].family$this: Current context elementFor complete FHIRPath reference, see references/fhirpath-subset.md.
Extract extension values using the extension() function:
{
"column": [
{
"name": "birth_sex",
"path": "extension('http://hl7.org/fhir/us/core/StructureDefinition/us-core-birthsex').value.ofType(code).first()"
}
]
}Nested extensions:
{
"path": "extension('http://hl7.org/fhir/us/core/StructureDefinition/us-core-race').extension('ombCategory').value.ofType(Coding).code.first()"
}ShareableViewDefinition: For portable definitions. Requires:
url: Canonical identifiername: Database-safe identifierfhirVersion: Target FHIR version(s)type: Explicit types on all columnsTabularViewDefinition: For scalar/CSV output. Enforces:
collection: true columnsViewDefinitions intentionally exclude:
SQL on FHIR defines two operations for executing ViewDefinitions:
Synchronous execution returning results immediately.
GET [base]/ViewDefinition/[id]/$run?_format=csv
POST [base]/ViewDefinition/$runKey parameters:
viewReference or viewResource: The ViewDefinition to execute_format: Output format (json, ndjson, csv, parquet)patient, group: Filter by patient/group_limit: Maximum rowsAsynchronous bulk export for large datasets.
POST [base]/ViewDefinition/$exportUses async pattern:
Prefer: respond-async → 202 Accepted + status URLKey parameters:
view: One or more ViewDefinitions to export_format: Output formatpatient, group, _since: Filtering optionsFor complete operation details, parameters, and examples, see references/operations.md.
For comprehensive examples including Patient demographics, Condition flattening, blood pressure extraction, and complex unnesting patterns, see references/examples.md.
© aehrc, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (references) in .claude/skills/sql-on-fhir of aehrc/pathling.
Open the folder on GitHubat commit 56a3b4a
SQL On Fhir next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| SQL On Fhir this skillaehrc/pathling | 137 | — | ~2.3k | Automated safety check: Pass | Apache-2.0 | |
| Imaging Data CommonsK-Dense-AI/scientific-agent-skills | 48k | 1 repos | ~7.8k | Automated safety check: Pass | MIT | |
| SQL PortabilityHL7/sql-on-fhir | 151 | — | ~512 | Automated safety check: Pass | Custom licence | |
| Biomarker Database Analysisaws-samples/amazon-bedrock-agents-healthcare-lifesciences | 274 | — | ~1.1k | Automated safety check: Pass | MIT-0 | |
| PaperclipK-Dense-AI/scientific-agent-skills | 48k | 1 repos | ~3.2k | Automated safety check: Notes | MIT | |
| Bioconductor MsbackendmassbankbioMate-AI/biomate-bioconductor-kb | 804 | — | ~1k | Automated safety check: Pass | Custom licence |
K-Dense-AI/scientific-agent-skills
Queries and downloads public cancer imaging data from NCI Imaging Data Commons.
HL7/sql-on-fhir
Analyse whether a SQL query is portable across database implementations using sqlglot transpilation.
aws-samples/amazon-bedrock-agents-healthcare-lifesciences
A skill your agent uses when a researcher needs to query biomedical databases for biomarker discovery, build target profiles from UniProt/Open Targets/STRING, rank biomarker candidates by evidence…
K-Dense-AI/scientific-agent-skills
Searches and reads biomedical papers, FDA/PMDA/EMA documents, clinical trials, and protein records with the GXL Paperclip CLI and Python SDK.
bioMate-AI/biomate-bioconductor-kb
Mass spectrometry (MS) data backend supporting import and export of MS/MS library spectra from MassBank record files.
supabase/supabase
Execute runnable docs snippets and examples inside a disposable Docker Compose sandbox (runner container + local Supabase stack via supabase start).
aehrc/pathling
Expert guidance for using the Databricks CLI to manage Databricks workspaces, clusters, jobs, pipelines, Unity Catalog, SQL warehouses, serving endpoints, secrets, bundles, and all other Databricks…
aehrc/pathling
Expert guidance for implementing FHIR RESTful API servers and clients following the HL7 FHIR specification.
aehrc/pathling
Expert guidance for implementing FHIR Bulk Data Access (Flat FHIR) following the HL7 specification.
aehrc/pathling
FHIR RESTful search specification expert with access to the official HL7 search specification text and the formal SearchParameter registry.
aehrc/pathling
Design and generate comprehensive FHIRPath test suites using input domain partitioning and Pathling's DSL test framework.
aehrc/pathling
Expert guidance for implementing FHIR servers using HAPI FHIR Plain Server framework.
Works with
Categories
Expert guidance for implementing SQL on FHIR v2 ViewDefinitions and operations to create portable, tabular projections of FHIR data. SQL On Fhir is an agent skill from aehrc/pathling. Expert guidance for implementing SQL on FHIR v2 ViewDefinitions and operations to create portable, tabular projections of FHIR data.
SQL On Fhir fits situations like: the user asks to create ViewDefinitions; flatten FHIR resources into tables; write FHIRPath expressions for data extraction; implement forEach/forEachOrNull/repeat patterns for unnesting.
Run `npx skills add aehrc/pathling --skill sql-on-fhir -a claude-code`. Or copy the skill folder (.claude/skills/sql-on-fhir in aehrc/pathling) into .claude/skills/sql-on-fhir in your project. Claude Code loads it when a task matches its description.
Run `npx skills add aehrc/pathling --skill sql-on-fhir -a codex`. Or copy the skill folder (.claude/skills/sql-on-fhir in aehrc/pathling) into .agents/skills/sql-on-fhir in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add aehrc/pathling --skill sql-on-fhir -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sql-on-fhir, .gemini/skills/sql-on-fhir, .github/skills/sql-on-fhir and .opencode/skills/sql-on-fhir in your project.
SKILL.md names no scripts, command-line tools or credentials: SQL On Fhir is instructions for the agent only.
SKILL.md names 1 domain. In commands or code: hl7.org; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
SQL On Fhir is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 10k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with SQL On Fhir: Imaging Data Commons (K-Dense-AI/scientific-agent-skills, 48k stars), SQL Portability (HL7/sql-on-fhir, 151 stars), Biomarker Database Analysis (aws-samples/amazon-bedrock-agents-healthcare-lifesciences, 274 stars) and Paperclip (K-Dense-AI/scientific-agent-skills, 48k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
aehrc (a GitHub organization) maintains it in aehrc/pathling, which has 137 GitHub stars. The repository holds 25 skills in this directory. The repository was last updated on October 8, 2026.
Source: aehrc/pathling on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.