Meeting Notes
outline/outline
Create meeting notes in Outline from a template; use when the user wants an agenda, notes, or a follow-up document for a meeting.
Call a list of pharmacies to find out which one has a specific medication in stock, at what price, and whether they will hold it.
$ npx skills add CALLE-AI/awesome-phone-call-agents --skill pharmacy-stock-check -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install CALLE-AI/awesome-phone-call-agents pharmacy-stock-check --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/CALLE-AI/awesome-phone-call-agents.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/pharmacy-stock-check .claude/skills/pharmacy-stock-check && 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 "pharmacy-stock-check" agent skill from https://github.com/CALLE-AI/awesome-phone-call-agents/tree/main/skills/pharmacy-stock-check into .claude/skills/pharmacy-stock-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pharmacy-stock-check", 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/CALLE-AI/awesome-phone-call-agents/tree/main/skills/pharmacy-stock-checkType 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 CALLE-AI/awesome-phone-call-agents --skill pharmacy-stock-check -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install CALLE-AI/awesome-phone-call-agents pharmacy-stock-check --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CALLE-AI/awesome-phone-call-agents.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/pharmacy-stock-check .agents/skills/pharmacy-stock-check && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "pharmacy-stock-check" agent skill from https://github.com/CALLE-AI/awesome-phone-call-agents/tree/main/skills/pharmacy-stock-check into .agents/skills/pharmacy-stock-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pharmacy-stock-check", 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 CALLE-AI/awesome-phone-call-agents --skill pharmacy-stock-check -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install CALLE-AI/awesome-phone-call-agents pharmacy-stock-check --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CALLE-AI/awesome-phone-call-agents.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/pharmacy-stock-check .cursor/skills/pharmacy-stock-check && 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 "pharmacy-stock-check" agent skill from https://github.com/CALLE-AI/awesome-phone-call-agents/tree/main/skills/pharmacy-stock-check into .cursor/skills/pharmacy-stock-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pharmacy-stock-check", 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/CALLE-AI/awesome-phone-call-agents.git --path skills/pharmacy-stock-check--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 CALLE-AI/awesome-phone-call-agents --skill pharmacy-stock-check -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install CALLE-AI/awesome-phone-call-agents pharmacy-stock-check --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CALLE-AI/awesome-phone-call-agents.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/pharmacy-stock-check .gemini/skills/pharmacy-stock-check && 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 "pharmacy-stock-check" agent skill from https://github.com/CALLE-AI/awesome-phone-call-agents/tree/main/skills/pharmacy-stock-check into .gemini/skills/pharmacy-stock-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pharmacy-stock-check", 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 CALLE-AI/awesome-phone-call-agents pharmacy-stock-checkInstalls 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 CALLE-AI/awesome-phone-call-agents --skill pharmacy-stock-check -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/CALLE-AI/awesome-phone-call-agents.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/pharmacy-stock-check .github/skills/pharmacy-stock-check && 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 "pharmacy-stock-check" agent skill from https://github.com/CALLE-AI/awesome-phone-call-agents/tree/main/skills/pharmacy-stock-check into .github/skills/pharmacy-stock-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pharmacy-stock-check", 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 CALLE-AI/awesome-phone-call-agents --skill pharmacy-stock-check -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install CALLE-AI/awesome-phone-call-agents pharmacy-stock-check --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/CALLE-AI/awesome-phone-call-agents.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/pharmacy-stock-check .opencode/skills/pharmacy-stock-check && 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 "pharmacy-stock-check" agent skill from https://github.com/CALLE-AI/awesome-phone-call-agents/tree/main/skills/pharmacy-stock-check into .opencode/skills/pharmacy-stock-check/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "pharmacy-stock-check", 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.
pharmacy-stock-checkCall a list of pharmacies to find out which one has a specific medication in stock, at what price, and whether they will hold it.
Pharmacy Stock Check is an agent skill from CALLE-AI/awesome-phone-call-agents. Call a list of pharmacies to find out which one has a specific medication in stock, at what price, and whether they will hold it. Use when someone needs to locate a medication nearby and would otherwise ring round manually. Returns one structured record per pharmacy with a confidence score and the call transcript as evidence.
Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including scripts and reference files (for example `references/calle-mcp-integration.md`, `references/examples.md` and `references/safety.md`).
It sits in Productivity & Automation, covering Meeting notes and agendas. The repository describes itself as: Portable phone-call Agent Skills, apps, examples, adapters, and scheduler recipes for AI agents. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 38d4118. 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.
Ships 4 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From 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.
Pharmacy Stock Check loads about 4.2k tokens when it runs, and up to ~12k if it reads all its reference files. Until then it costs about 87 tokens; SKILL.md has 2,175 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); the scripts in this folder are not scanned.
The full file from CALLE-AI/awesome-phone-call-agents at commit 38d4118, republished under its MIT licence (© CALLE-AI). 2,175 words, ~4,236 tokens.
.claude/skills/pharmacy-stock-check/SKILL.md (or your agent's skills folder). This skill also uses 8 other files; get the full folder from GitHub.Finding a medication that is actually in stock means calling pharmacies one at a time and asking the same four questions. This skill does the calling and returns a ranked answer.
It is a good fit for CALL-E's design: low-frequency, personal, high-stakes phone work that was never worth automating with a traditional call platform.
This skill places real phone calls to real businesses. Confirm with the user:
Never infer a phone number. Never call a number the user did not supply or approve.
This skill gathers availability and pricing information only.
Required: medication name, dosage, quantity, recipient region, and the list of pharmacy phone numbers in E.164 format.
Validate every number before anything else happens. E.164 is a plus, a
non-zero country code digit, then 7–14 more digits — ^\+[1-9]\d{7,14}$.
Reject anything else and ask the user; never guess a country code. A local
number silently reaching the planner is how the wrong person gets called.
CALL-E's MCP surface has no result_schema parameter, so the fields you want
must be named in the goal text. CALL-E honours them reliably and emits them in
result.summary.
You are calling a pharmacy on behalf of a patient looking for a medication.
Identify yourself as an automated assistant immediately, and keep the call
brief and polite.
Find out whether they currently have {drug} {dosage} in stock. The patient
needs {quantity}.
Capture these fields in the structured result, using exactly these key names:
- in_stock: yes, no, partial, or unknown. Use partial if they have some but
fewer than the patient needs.
- form_available: brand, generic, both, or unknown
- quantity_available: integer units they have
- unit_price: number, price per unit
- currency: three-letter currency code
- requires_prescription: yes, no, or unknown
- can_hold: yes, no, or unknown
- hold_duration_hours: number of hours they will hold it
- alternative_suggested: any alternative or other branch they mention
- pharmacist_notes: anything else useful, one short sentence
If they do not have it, still ask about alternatives or another branch. Do not
place an order or commit to anything on the patient's behalf. Thank them and
end the call. If nobody answers, report that the pharmacy could not be reached;
do not treat that as a successful stock check.Identifying as an automated assistant in the first line is not optional. It is the difference between a pharmacist answering and a pharmacist hanging up.
to_phones accepts an array, but batching returns an aggregated summary for
the whole batch. This workflow needs per-pharmacy attribution — which pharmacy
has 10 units at £5 — so place one run per pharmacy and run them concurrently.
The call cost is identical.
plan_call → ready_to_run + confirm_token (free, places no call)
run_call → run_id (spends len(to_phones))
get_call_run → poll until terminal, following next_step.actionplan_call is free. Iterate on the goal text as much as you like before
spending anything.
Check result.outcome.task_completed and the run status first. A call that
failed, went to voicemail or was cut off can still carry a partially filled
summary. Treating that as a stock check is how a patient gets sent somewhere on
the strength of a sentence nobody finished.
If the run did not reach COMPLETED with task_completed: true, report "could
not be reached" and emit no stock fields at all. Do not scrape what's there.
Only when the call completed, parse the extracted fields from result.summary
as key=value pairs — not from result.extracted, see
references/calle-mcp-integration.md. Values contain commas and the separator
is not stable (both , and ; observed), so split on key= boundaries.
result.outcome also gives a confidence score and specific evidence strings.
Verification outranks stock status. Rank verified results first — those that completed with confidence at or above 0.6 — then by stock, then price, then hold. A low-confidence "yes" must never outrank a high-confidence "no". Someone may travel while unwell on the strength of this, which makes an unreliable positive worse than a reliable negative.
Mark anything unverified as such, visibly.
Mask phone numbers in summaries — show the pharmacy name and the last four digits.
Masking covers derived text too, not just the number you dialled. The
provider's activity feed quotes the call as it happens, and fields like
pharmacist_notes and alternative_suggested are lifted straight out of the
conversation. A pharmacist reading out a branch number ends up in both. Printing
either verbatim puts a third party's words into terminal scrollback, CI logs and
screen recordings.
So: scrub anything number-shaped from free text before it is logged or printed, and withhold realtime speech events entirely unless the operator explicitly asks for them. Prices, quantities and hold durations must survive — redact runs of eight or more digits, not every number.
The stored record keeps the original. It is the evidence, and it is protected by being 0600 and out of the working directory.
Offer the transcript. Every claim should be checkable against what was said.
Count phones, not calls. to_phones is an array, so one plan can spend N
calls. Charge len(to_phones) against any budget before dialling.
Reserve atomically, under the same lock as the ledger read. A
check-then-write budget is not a ceiling: two processes read the same
spent, both pass the check, and both dial. The up-front whole-batch check
is a convenience so a batch fails before the first call rather than halfway;
the per-call atomic reserve is what actually enforces the limit.
Deduplicate recipients before dispatch. The same number listed twice is a data-entry mistake, not a request to ring someone twice — and rows are dispatched concurrently, so nothing downstream spaces them out. A file lock won't catch this: both rows run in one process and share a pid, so the in-flight set has to be tracked in-process as well.
Store credentials and transcripts owner-only (0600), and ignore them. The
ledger holds confirm_tokens that authorise placing a call; run dumps hold a
third party's recorded voice. Default umask leaves both readable by every
account on the machine, and file permissions are no protection at all against
being committed. Write them to a dedicated directory and add that directory to
.gitignore — this skill ships one covering its own runtime state.
Bind the auth token to the endpoint you are calling, and refuse if you can't. A bearer token is issued for one origin; sending it elsewhere hands a working credential to a party it was never meant for. That's a disclosure, not a routing mistake.
Ask the CLI which endpoint it authenticated against (calle auth status
reports server_url and cache_path) rather than inferring it from the
cache directory hash. Refuse on mismatch.
A single cache with no endpoint recorded is not acceptable either. "Only one exists" is not evidence that it belongs to this provider. If nothing binds the credential, stop and make the operator name it explicitly.
Keep the exclusion claim separate from the reconciliation identity. These are two different questions and they need different granularity.
"Is there an unresolved call to this person about this thing?" must be answered on recipient and purpose alone. Fold endpoint, account or region into that key and changing any of them makes a live call look absent — which permits a second dial to someone already being rung.
"Can I resume this particular plan?" needs the full configuration. So nest
it: a coarse claim keyed on sha256(phone|goal), with the attempt's endpoint,
principal, region, plan_id and run_id recorded underneath.
On a configuration mismatch, do neither. Don't resume — a plan_id from
one endpoint or account is meaningless under another. Don't redial — the
earlier call may still be live. Surface it and let a human resolve it.
Bind unfinished state to a stable principal, or fail closed. Don't namespace on the credential cache directory: CALL-E derives that from the server URL, so re-authenticating as a different account on the same endpoint reuses it — and an account-A run could be resumed with account-B credentials.
Derive the principal from the account itself (an id recorded in the cache, or
the sub claim of a JWT). If it can't be established, new calls may proceed,
but an unresolved call can no longer be confirmed as yours — so refuse to
reconcile it rather than guessing. CALLE_ACCOUNT_ID overrides.
Version the ledger. When claim keys change, old entries won't match anything you compute, so unfinished ones must be refused rather than read as absent.
Persist plan_id and run_id to disk as soon as you receive them.
plan_id is CALL-E's idempotency key, but it only protects you if it survives
a crash. On restart, resume the stored run instead of re-planning.
The ledger is the thing standing between a crash and a second call to a real person, so it has to be written like one:
run_call was sent and
the response was lost, whether the phone rang is unknown. Mark that state
before the call, and require a human decision to clear it — never retry
automatically.Never re-dial to recover data you already paid for.
No recurring schedules. This is a one-shot workflow. If a user wants repeat checks, create them explicitly and tell the user how to cancel.
scripts/pharmacy_search.py is dry-run by default, and the dry run is fully
offline: it reads no credentials, opens no socket, and sends nothing anywhere.
It validates every number and prints the exact payload it would send.
That matters here. A dry run that still transmits the recipient's phone number and the medication being sought — by calling the planning endpoint — is not a dry run. In a medical-adjacent workflow it leaks who is looking for what.
Numbers are masked in the printed payload too. Masking covers anything printed or logged, not just what reaches the user: terminal output ends up in scrollback, CI logs and screen recordings.
python3 scripts/pharmacy_search.py --pharmacies pharmacies.csv # offline
python3 scripts/pharmacy_search.py --pharmacies pharmacies.csv --live # callspython3 scripts/test_pharmacy_search.pyStandard library only. No network, no credentials, no calls placed.
The suite exists because the same invariant has broken twice in ways that were
silent — the code planned and submitted a second call to a real person, and
nothing in the output said so. test_resume_does_not_redial asserts on which
MCP tools were invoked rather than on return values, because whether run_call
was called is the only thing that distinguishes "resumed" from "dialled again".
Use a standards-reserved fictional number to exercise the offline planning path. The example cannot be dialed and must not be used for live verification.
printf 'name,phone,address\nFictional Pharmacy,+14155550132,Reserved offline example\n' \
> pharmacies.hotline.csv
python3 scripts/pharmacy_search.py --pharmacies pharmacies.hotline.csvThis checks planning without network access. Use the offline test suite to verify durable-run and duplicate-call behavior.
Request: amoxicillin 500mg, 21 capsules, three pharmacies in GB.
Result from one pharmacy:
{
"pharmacy": "Test Pharmacy (…0100)",
"in_stock": "partial",
"quantity_available": 10,
"unit_price": 5.0,
"currency": "GBP",
"requires_prescription": "yes",
"can_hold": "yes",
"hold_duration_hours": 48,
"pharmacist_notes": "They have only 10 units available, less than the requested 21 capsules.",
"confidence": 0.82
}Worth noting what CALL-E got right there: the pharmacist said "10 units" against
a request for 21, and the result is partial rather than yes. It also
converted "just two days" into hold_duration_hours: 48.
Stated rather than discovered, because each one is a boundary on a guarantee this skill otherwise makes.
The exclusion lock is single-host. It uses flock on a sidecar file, which
coordinates processes on one machine. It does not coordinate across machines,
and its behaviour on NFS and some network filesystems is unreliable. Two
operators running this against a shared drive get no mutual exclusion, and the
duplicate-dial protection is only as good as the lock. A multi-host deployment
needs a real lease — a database row, or a lock service.
Principal resolution currently returns nothing on CALL-E, so resume needs
CALLE_ACCOUNT_ID. Identity is looked for in an id recorded alongside the
credential, then in the sub claim of a JWT. As of writing, the CALL-E CLI
cache records server_url, auth_base_url, issued_at, expires_at and
token — no account identifier — and the token is opaque rather than a JWT.
So no principal can be established, and unfinished state fails closed rather than risk resuming one account's run under another's credentials. That is the safe behaviour, but it means cross-process resume does not work out of the box:
export CALLE_ACCOUNT_ID=me@example.com # any stable value you controlAny consistent string works — it only has to change when the authenticated
account changes. Endpoint binding is unaffected: server_url is recorded, so
credentials are still bound to the right origin automatically.
This resolves itself if the provider exposes an account identifier in the credential cache or issues a token with a subject claim.
Test coverage is behavioural, not exhaustive. scripts/test_pharmacy_search.py
covers the invariants that have actually regressed — crash-and-resume,
exclusion across configuration changes, budget ceilings, validation — with no
network, no credentials and no calls placed:
python3 scripts/test_pharmacy_search.pyIt does not cover the live provider surface. Reaching the real API still means the hotline path above.
The budget ceiling is local. It counts what this installation has spent. It does not know the provider-side balance, so it protects against a runaway loop, not against a quota consumed elsewhere.
Read references/calle-mcp-integration.md for MCP surface behaviour, including
where extraction actually lands.
Read references/safety.md for boundaries on medical-adjacent phone workflows.
See references/examples.md for worked conversations, including when to decline
to call.
© CALLE-AI, MIT. 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 8 other files (scripts, references) in skills/pharmacy-stock-check of CALLE-AI/awesome-phone-call-agents.
Open the folder on GitHubat commit 38d4118
Pharmacy Stock Check 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 |
|---|---|---|---|---|---|---|
| Pharmacy Stock Check this skillCALLE-AI/awesome-phone-call-agents | 107 | — | ~4.2k | Automated safety check: Pass | MIT | |
| Meeting Notesoutline/outline | 41k | — | ~551 | Automated safety check: Pass | Custom licence | |
| Management Talkthananon/9arm-skills | 3.2k | — | ~3.2k | Automated safety check: Pass | None | |
| Challenge Baseline ModelAgibotTech/genie_sim | 1.4k | — | ~2.4k | Automated safety check: Pass | Custom licence | |
| Handwriting Stand Uplimin112/min-skill | 454 | — | ~2.5k | Automated safety check: Pass | None | |
| Daily Journalravila4/claude-adhd-skills | 158 | — | ~2.5k | Automated safety check: Pass | MIT |
outline/outline
Create meeting notes in Outline from a template; use when the user wants an agenda, notes, or a follow-up document for a meeting.
thananon/9arm-skills
Rewrite engineer-to-engineer content for engineering-org leadership (VPs, directors, PMs, release managers, execs in an engineering-savvy company) and shape it for the channel it is going to — JIRA…
AgibotTech/genie_sim
Provision and launch the Simulation Challenge baseline inference model end to end: clone the inference code from a given git repo/branch, download the checkpoints from ModelScope into the repo's…
limin112/min-skill
Turn a screen recording of handwriting (or a photo of handwritten text) into a single-file HTML "continuation" — the recording plays, the ink lifts off the page as solid 3D letters, a short animated…
ravila4/claude-adhd-skills
Draft, organize, or update development journal entries. An agent skill from ravila4/claude-adhd-skills.
ArtemXTech/claude-code-obsidian-starter
Query and sync Granola meetings to Obsidian vault. An agent skill from ArtemXTech/claude-code-obsidian-starter.
CALLE-AI/awesome-phone-call-agents
Demonstrates advisory accessibility-planning checks with offline fixtures and a proposed bounded CALL-E workflow; use for exploring unknown or qualified venue claims without making calls.
CALLE-AI/awesome-phone-call-agents
A skill your agent uses when an agent holds some evidence for a physical-world claim but the evidence is broader, narrower, or older than the exact question asked, and it must first decide whether a…
CALLE-AI/awesome-phone-call-agents
Call a venue and ask the accessibility questions that matter to one specific person — step-free entry, hearing loop, guide dogs, quiet hours, changing places — then return a per-need verdict backed…
CALLE-AI/awesome-phone-call-agents
Turns a pre-written, building-level location config into a CALL-E outbound phone-call task that guides a delivery driver through the last few hundred metres to a specific building using landmarks…
CALLE-AI/awesome-phone-call-agents
Turn cited business research into a bounded, approval-gated phone-call plan that asks only unresolved factual questions, then reconcile CALL-E-compatible results without treating voicemail, refusal…
CALLE-AI/awesome-phone-call-agents
Place a goal-driven CALL-E call that collects specific structured answers, score those answers against a deterministic rubric you supply, and conditionally trigger a follow-up action — all runnable…
Categories
Call a list of pharmacies to find out which one has a specific medication in stock, at what price, and whether they will hold it. Pharmacy Stock Check is an agent skill from CALLE-AI/awesome-phone-call-agents. Call a list of pharmacies to find out which one has a specific medication in stock, at what price, and whether they will hold it.
Pharmacy Stock Check fits situations like: someone needs to locate a medication nearby and would otherwise ring round manually; tasks that involve Meeting notes and agendas.
Run `npx skills add CALLE-AI/awesome-phone-call-agents --skill pharmacy-stock-check -a claude-code`. Or copy the skill folder (skills/pharmacy-stock-check in CALLE-AI/awesome-phone-call-agents) into .claude/skills/pharmacy-stock-check in your project. Claude Code loads it when a task matches its description.
Run `npx skills add CALLE-AI/awesome-phone-call-agents --skill pharmacy-stock-check -a codex`. Or copy the skill folder (skills/pharmacy-stock-check in CALLE-AI/awesome-phone-call-agents) into .agents/skills/pharmacy-stock-check 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 CALLE-AI/awesome-phone-call-agents --skill pharmacy-stock-check -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pharmacy-stock-check, .gemini/skills/pharmacy-stock-check, .github/skills/pharmacy-stock-check and .opencode/skills/pharmacy-stock-check in your project.
Going by SKILL.md and its folder, Pharmacy Stock Check needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Pharmacy Stock Check is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.2k tokens (SKILL.md is roughly 17k 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 7.9k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Pharmacy Stock Check: Meeting Notes (outline/outline, 41k stars), Management Talk (thananon/9arm-skills, 3.2k stars), Challenge Baseline Model (AgibotTech/genie_sim, 1.4k stars) and Handwriting Stand Up (limin112/min-skill, 454 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
CALLE-AI (a GitHub organization) maintains it in CALLE-AI/awesome-phone-call-agents, which has 107 GitHub stars. The repository holds 101 skills in this directory. The repository was last updated on October 10, 2026.
Source: CALLE-AI/awesome-phone-call-agents on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.