.claude/skills/smart-app-launch/SKILL.md
Expert guidance for implementing SMART App Launch (HL7 FHIR specification for OAuth 2.0-based authorization). Use this skill when implementing FHIR app authorization, EHR launch sequences, standalone app launch, backend services authentication, SMART scopes, token handling, or capability discovery. Trigger keywords include "SMART", "SMART on FHIR", "EHR launch", "standalone launch", "FHIR authorization", "FHIR OAuth", "backend services", "system scopes", "patient scopes", "fhirUser", ".well-known/smart-configuration", "PKCE", "client_credentials", "launch context".
npx skillsauth add aehrc/pathling smart-app-launchInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
SMART App Launch provides a standardised OAuth 2.0-based authorization framework for FHIR applications. It enables apps to securely access healthcare data with appropriate user consent and context.
Select the appropriate pattern based on your use case:
| Pattern | Use when | Grant type |
| --------------------- | ---------------------------------- | -------------------- |
| EHR Launch | App launched from within EHR UI | authorization_code |
| Standalone Launch | App launched independently by user | authorization_code |
| Backend Services | Server-to-server, no user present | client_credentials |
Fetch {fhir-base}/.well-known/smart-configuration to discover:
authorization_endpoint and token_endpointcapabilities array (launch modes, client types, permission models)code_challenge_methods_supported (must include S256)See references/capability-discovery.md for full field reference.
| Client type | Method | Registration |
| ------------------------- | -------------------- | ----------------------------- |
| Public | PKCE only, no secret | client_id only |
| Confidential (symmetric) | Client secret | Secret shared at registration |
| Confidential (asymmetric) | Private key JWT | JWKS URL or keys registered |
Backend services require asymmetric authentication. See references/client-authentication.md.
EHR Launch: App receives iss and launch parameters, echoes launch in authorization request.
Standalone Launch: App initiates flow, may request launch/patient or launch/encounter to establish context.
Required authorization parameters:
response_type=codeclient_id, redirect_uri, scope, state (122+ bits entropy)aud (FHIR server base URL)code_challenge + code_challenge_method=S256See references/app-launch.md for complete flow details.
POST to token endpoint with:
grant_type=authorization_codecode, redirect_uri, code_verifierToken response includes:
access_token, token_type, scope, expires_inrefresh_token, id_token, launch context (patient, encounter)GET {fhir-base}/Patient/123
Authorization: Bearer {access_token}
patient/Observation.rs # Read + search patient observations
user/Appointment.cruds # Full access to user's appointments
system/Patient.rs # Backend service read/search all patients
launch/patient # Request patient context at launch
openid fhirUser # Get user identity via OIDC
offline_access # Request refresh token
Scope syntax: {context}/{resource}.{permissions}[?{constraints}]
See references/scopes.md for complete scope grammar and examples.
For server-to-server access without user interaction:
iss, sub, aud, exp, jti)grant_type=client_credentials and client_assertionsystem/ scopes onlySee references/backend-services.md for JWT structure and examples.
state parameter to prevent CSRFaud matches your FHIR endpointSee references/security.md for comprehensive security guidance.
tools
Expert guidance for using WireMock in Java applications for HTTP API mocking and testing. Use this skill when the user asks to mock HTTP APIs, create API stubs, test REST clients, simulate network faults, verify HTTP requests, or integrate WireMock with Spring Boot. Trigger keywords include "wiremock", "mock http", "stub api", "http mock", "api testing", "rest mock", "simulate fault", "verify request", "spring boot wiremock".
documentation
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 FHIR server capabilities. Trigger keywords include "ViewDefinition", "SQL on FHIR", "flatten FHIR", "tabular FHIR", "FHIR to SQL", "FHIR analytics", "FHIRPath columns", "unnest FHIR", "$viewdefinition-run", "$export", "view runner", "repeat", "recursive", "QuestionnaireResponse".
development
Expert guidance for working with the Apache Spark Catalyst query optimisation framework. Use this skill when working with Spark SQL internals, creating custom expressions, implementing query optimisations, working with logical/physical plans, or extending Catalyst. Trigger keywords include "catalyst", "spark sql", "expression", "logical plan", "physical plan", "tree node", "query optimisation", "rule executor", "analyzer", "optimizer", "code generation".
development
Expert guidance for using the SonarCloud API to interact with code quality analysis, projects, issues, quality gates, and metrics. Use this skill when making API calls to SonarCloud, automating code quality workflows, retrieving analysis results, managing projects programmatically, or integrating SonarCloud with CI/CD pipelines. Trigger keywords include "SonarCloud", "SonarCloud API", "code quality API", "SonarQube Cloud", "quality gate", "code analysis API", "SonarCloud measures", "SonarCloud issues".