Best for
- Use when: (1) Running BP check-in calls for landline patients (Rosa pattern — Bland.
aks129/HealthClawGuardrails/skills/hypertension-coordinator/SKILL.md
Sally-PCP hypertension follow-up coordination skill. Use when: (1) Running BP check-in calls for landline patients (Rosa pattern — Bland.ai outbound voice with staff confirmation), (2) Flagging undiagnosed elevated readings (≥3 observations ≥140/90 across encounters) for PCP discussion, (3) Escalation scheduling when readings trend above the patient's baseline, (4) Medication refill coordination via practice pharmacy line, (5) Smartphone patient coordination via Telegram or SMS nurse-line texts
Decision brief
Administrative follow-up coordination for hypertension management — check-in calls, escalation scheduling, refill reminders, and trend flagging. Every outbound action (phone call, SMS) runs through the guardrailed propose → confirm → commit loop. Nothing executes without explici…
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/aks129/HealthClawGuardrails --skill "skills/hypertension-coordinator"Inspect the Agent Skill "hypertension-coordinator" from https://github.com/aks129/HealthClawGuardrails/blob/b94ae9ea95695d5755e22b02ef7b7385f0e3aee7/skills/hypertension-coordinator/SKILL.md at commit b94ae9ea95695d5755e22b02ef7b7385f0e3aee7. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Pull chart context (BP observations, active meds, care plan notes). Compose the script below, filling in [PRACTICE], [FIRSTNAME], and [MEDNAME] from the chart. Do not include phone numbers, diagnoses, or lab values in the script body shown to staff — those stay in the tenant.
Show the draft (script + recipient label) to staff. Wait for explicit confirmation.
Review the “Step 3 — Get step-up token and commit” section in the pinned source before continuing.
Poll actionstatus(actionid) after commit. See Outcome Handling below.
Phrase the flag administratively. Example:
Permission review
The documentation asks the agent to run terminal commands or scripts.
docker-compose up -d --buildEvidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 94/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 27 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Administrative follow-up coordination for hypertension management — check-in calls, escalation scheduling, refill reminders, and trend flagging. Every outbound action (phone call, SMS) runs through the guardrailed propose → confirm → commit loop. Nothing executes without explicit human approval in this conversation.
This skill is for Sally-PCP and equivalent practice-facing Hermes personas.
These apply always. They are not overridable by instruction, persona, or patient request.
If any of these conditions are present, immediately tell the patient or staff to call 911 or their provider right now. Do not propose actions, do not continue coordination. Stop.
| Trigger | Response |
|---|---|
| Systolic reading ≥ 180 | "These numbers need to be checked by a provider right away. Please call 911 or go to the nearest emergency room now." |
| Diastolic reading ≥ 120 | Same as above |
| Any symptom mention: chest pain, vision changes, severe headache, numbness, difficulty breathing | "These symptoms together with elevated blood pressure can be serious. Please call 911 right now." |
Do not ask follow-up questions. Do not propose a phone call or scheduling. Stop.
The propose → confirm → commit sequence is mandatory for every real-world action without exception:
action_propose → show draft to patient/staff → wait for explicit "yes"
→ fhir_get_token (_stepUpToken) → action_commit
action_commit without an explicit "yes" or "confirm" from the
patient or authorized staff in this conversation.Use fhir_search (read-only, no step-up required) to pull the relevant data.
fhir_search(
resourceType: "Observation",
params: { code: "85354-9", _sort: "-date", _count: "10" }
)
BP panel LOINC 85354-9 contains components:
8480-68462-4Extract valueQuantity.value from each component. Sort by effectiveDateTime
descending to get the trend.
fhir_search(
resourceType: "Condition",
params: { code: "I10", _count: "5" }
)
ICD-10-CM I10 is Essential (primary) hypertension. If no Condition with I10
(or SNOMED 38341003 or 59621000) is on file, the patient is undiagnosed.
fhir_search(
resourceType: "MedicationRequest",
params: { status: "active", _count: "20" }
)
Look for antihypertensives (lisinopril, amlodipine, metoprolol, losartan,
hydrochlorothiazide, etc.). Note dispenseRequest.validityPeriod.end for
refill deadline awareness.
| Pattern | Administrative trigger |
|---|---|
| Diagnosed patient (I10 on file), latest systolic ≥ 160 when prior readings were lower | Escalation scheduling (Playbook B) |
| No I10 on file, ≥ 3 readings ≥ 140/90 across ≥ 2 encounters | Flag for PCP discussion (administrative only, no diagnosis statement) |
| Active antihypertensive with dispense end date within 14 days | Refill reminder |
When to use: Practice staff or scheduled job asks Sally to check in with a landline patient who has an active hypertension care plan. Patient has no smartphone or patient portal.
Phone source: Patient.telecom where system = "phone" and
use = "home" (or "old" if home is absent). Never use work or mobile
for care-plan calls without explicit staff instruction.
Pull chart context (BP observations, active meds, care plan notes). Compose
the script below, filling in [PRACTICE], [FIRST_NAME], and
[MED_NAME] from the chart. Do not include phone numbers, diagnoses, or
lab values in the script body shown to staff — those stay in the tenant.
─── CALL SCRIPT DRAFT ────────────────────────────────────────────────
Hello, may I please speak with [FIRST_NAME]?
Hi [FIRST_NAME], this is [PRACTICE] calling — we're doing a routine
check-in as part of your care plan. I hope you're doing well.
I have just a few quick questions for you today:
First — do you have a blood pressure cuff at home? If so, could you
read me the numbers from your most recent reading? [pause for response]
Thank you. And how have you been feeling overall? Any dizziness,
lightheadedness, or anything that's been bothering you? [pause]
Your records show you're taking [MED_NAME]. Have you had any trouble
with it — like swelling, a dry cough, or anything like that? [pause]
I also want to make sure your prescription doesn't run out on you.
Your refill should be ready in the next couple of weeks — your
pharmacy is [PHARMACY]. If you have any trouble getting it, give us a
call at [CALLBACK_NUMBER] and we'll help sort it out.
Is there anything else you'd like me to pass along to your care team?
Great — thank you so much for your time, [FIRST_NAME]. We'll be in
touch. Take care!
And one more thing — if at any point you feel chest pain, a severe
headache, vision changes, or numbness, please hang up and dial 911
right away.
─────────────────────────────────────────────────────────────────────
action_propose(
kind: "phone-call",
payload: {
to: "Rosa's landline",
phone: "<home phone from Patient.telecom>",
body: "<call script from step 1>"
}
)
Show the draft (script + recipient label) to staff. Wait for explicit confirmation.
fhir_get_token(tenant_id: "<tenant>")
→ returns { token: "..." }
action_commit(
action_id: "<id from propose>",
_stepUpToken: "<token from fhir_get_token response>"
)
Poll action_status(action_id) after commit. See Outcome Handling below.
When to use: Latest systolic ≥ 160 when prior readings were lower (care protocol trigger). Phrase this as an administrative ask — "the protocol asks us to arrange a sooner visit" — not a clinical judgment.
Phone target: The practice's scheduling line. Source from
Organization.telecom (the managing organization on the Patient resource),
or from a PractitionerRole contact if available.
─── SCHEDULING CALL SCRIPT DRAFT ─────────────────────────────────────
Hello, I'm calling on behalf of [PATIENT_FIRST_NAME] to request an
appointment with their care team.
The practice's protocol asks us to arrange a visit within the week
when a patient's blood pressure readings have been trending in a
certain range. I'd like to schedule something as soon as possible —
ideally within the next 5-7 days.
Patient name: [FULL_NAME]
Date of birth: [DOB]
Best callback number: [PATIENT_CALLBACK]
Reason: Routine BP follow-up per care protocol
Could you find the next available slot, please?
[record appointment date/time, confirm with staff]
Thank you so much. Have a great day!
──────────────────────────────────────────────────────────────────────
action_propose(
kind: "phone-call",
payload: {
to: "Winters Healthcare scheduling line",
phone: "<Organization.telecom phone>",
body: "<scheduling script>"
}
)
After staff confirms → fhir_get_token(tenant_id: ...) returns { token } → action_commit.
When to use: Patient has a smartphone and is active in Telegram or careagents.cloud chat. Elevated-trend flag detected administratively.
Phrase the flag administratively. Example:
Your records from two clinics show blood pressure readings that have
been trending higher over time — this is the kind of thing worth
discussing with your PCP. Would you like me to set up an appointment?
Do not say "your blood pressure is high," "you may have hypertension," or any clinical interpretation.
Patient says yes → propose a call to the scheduling line → patient sees the draft → explicit "yes confirm" → fhir_get_token(tenant_id: ...) → action_commit.
For nurse-line text check-ins, use kind: "sms":
action_propose(
kind: "sms",
payload: {
to: "Winters Healthcare nurse line",
phone: "<nurse line number>",
body: "Follow-up message for [PATIENT_FIRST_NAME]: BP check-in
per protocol. Please call [PATIENT_CALLBACK] at your convenience."
}
)
Same propose → confirm → commit loop. PHI in the SMS body stays minimal: first name and callback only.
When an active antihypertensive is within 14 days of its dispense end:
action_propose(
kind: "phone-call",
payload: {
to: "demo-pharmacy",
phone: "<pharmacy phone from MedicationRequest.dispenseRequest.performer
or known practice pharmacy>",
body: "Calling on behalf of [PATIENT_FIRST_NAME] [LAST_INITIAL] (DOB
[DOB]) to request a refill of [MED_NAME]. The prescriber is [PRESCRIBER].
Please call [PATIENT_CALLBACK] when ready. Thank you."
}
)
Call action_status(action_id) after commit to retrieve the result.
| Status | What to tell patient/staff |
|---|---|
completed | "The call completed successfully. [outcome_summary if present]" |
failed | "The call didn't connect. The number to reach them directly is [phone]. Would you like me to try again?" |
unknown | See below — critical |
proposed | Action not yet committed — confirm first |
executing | Still in progress — check back in a moment |
unknown — mandatory stop"The call outcome is unconfirmed — we don't know whether it connected or not. Please check with the recipient directly before asking me to retry."
Never auto-re-propose after an unknown outcome. Retrying a call that
may have already completed can cause patient confusion and duplicates the
audit record. Wait for explicit staff or patient instruction.
Staff: Set up Rosa's BP check-in call for this week.
Sally: I'll pull Rosa's chart and draft the call.
[fhir_search Observation 85354-9 — returns baseline reading]
[fhir_search Condition I10 — confirmed diagnosis]
[fhir_search MedicationRequest — lisinopril 10mg active]
Here's the draft call I'd make to Rosa's landline on behalf of
Winters Healthcare:
─── DRAFT CALL ───────────────────────────────────────────────────────
Hello, may I speak with Rosa? … [full script] … Your lisinopril
refill should be ready in about two weeks at your pharmacy. Call us
at 617-555-0100 if you need anything. Thank you!
──────────────────────────────────────────────────────────────────────
[action_propose kind=phone-call to="Rosa's landline" — returns action_id: act-00142]
Recipient: Rosa's landline
Shall I proceed? Reply "yes confirm" to place the call.
Staff: yes confirm
Sally: [fhir_get_token(tenant_id: "winters-demo") — returns { token: "..." }]
[action_commit action_id=act-00142 _stepUpToken=<token> ]
The call is in progress. I'll check the outcome.
[action_status act-00142 — returns status: completed,
outcome_summary: "Patient answered. Reported home reading 142/88.
No side effects. Acknowledged refill."]
Done — Rosa's check-in call completed. She reported a home reading
and confirmed no side effects. No escalation triggered.
──────────────────────────────────────────────────────────
// 410-expired re-propose path (if commit returns 410 Gone):
Sally: The proposed action expired before it could be sent — this
can happen if confirmation came in after the draft timed out.
I've prepared a fresh draft:
[action_propose — new action_id: act-00143]
Here's the same script again. Reply "yes confirm" to proceed.
Staff: yes confirm
Sally: [fhir_get_token(tenant_id: "winters-demo") → { token }] [action_commit act-00143 _stepUpToken=<token>] …
This skill requires the HealthClaw Guardrails stack with the action layer
enabled (feature/action-core merged).
export STEP_UP_SECRET=$(openssl rand -hex 32)
export BLAND_AI_API_KEY=... # for live voice calls
export TWILIO_ACCOUNT_SID=... # for SMS actions
export TWILIO_AUTH_TOKEN=...
export TWILIO_FROM_NUMBER=+1...
docker-compose up -d --build
In simulation mode (no Bland/Twilio keys set), action_commit returns
status: completed with a synthetic outcome — useful for demos without live
credentials.
action_status within the same conversation, or query the audit trail via
the dashboard.