zai-org/ZCode
Professional PDF toolkit covering four production workflows: reports, creative visuals, academic LaTeX, and existing PDF processing.
A skill your agent uses when a business workflow is blocked waiting on a person to answer a question by phone — a stale purchase order, an unconfirmed delivery window, a job a technician has not…
$ npx skills add CALLE-AI/awesome-phone-call-agents --skill exception-resolution-calls -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install CALLE-AI/awesome-phone-call-agents exception-resolution-calls --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/exception-resolution-calls .claude/skills/exception-resolution-calls && 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 "exception-resolution-calls" agent skill from https://github.com/CALLE-AI/awesome-phone-call-agents/tree/main/skills/exception-resolution-calls into .claude/skills/exception-resolution-calls/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "exception-resolution-calls", 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/exception-resolution-callsType 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 exception-resolution-calls -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install CALLE-AI/awesome-phone-call-agents exception-resolution-calls --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/exception-resolution-calls .agents/skills/exception-resolution-calls && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "exception-resolution-calls" agent skill from https://github.com/CALLE-AI/awesome-phone-call-agents/tree/main/skills/exception-resolution-calls into .agents/skills/exception-resolution-calls/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "exception-resolution-calls", 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 exception-resolution-calls -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install CALLE-AI/awesome-phone-call-agents exception-resolution-calls --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/exception-resolution-calls .cursor/skills/exception-resolution-calls && 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 "exception-resolution-calls" agent skill from https://github.com/CALLE-AI/awesome-phone-call-agents/tree/main/skills/exception-resolution-calls into .cursor/skills/exception-resolution-calls/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "exception-resolution-calls", 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/exception-resolution-calls--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 exception-resolution-calls -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install CALLE-AI/awesome-phone-call-agents exception-resolution-calls --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/exception-resolution-calls .gemini/skills/exception-resolution-calls && 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 "exception-resolution-calls" agent skill from https://github.com/CALLE-AI/awesome-phone-call-agents/tree/main/skills/exception-resolution-calls into .gemini/skills/exception-resolution-calls/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "exception-resolution-calls", 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 exception-resolution-callsInstalls 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 exception-resolution-calls -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/exception-resolution-calls .github/skills/exception-resolution-calls && 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 "exception-resolution-calls" agent skill from https://github.com/CALLE-AI/awesome-phone-call-agents/tree/main/skills/exception-resolution-calls into .github/skills/exception-resolution-calls/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "exception-resolution-calls", 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 exception-resolution-calls -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 exception-resolution-calls --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/exception-resolution-calls .opencode/skills/exception-resolution-calls && 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 "exception-resolution-calls" agent skill from https://github.com/CALLE-AI/awesome-phone-call-agents/tree/main/skills/exception-resolution-calls into .opencode/skills/exception-resolution-calls/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "exception-resolution-calls", 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.
exception-resolution-callsA skill your agent uses when a business workflow is blocked waiting on a person to answer a question by phone — a stale purchase order, an unconfirmed delivery window, a job a technician has not…
Exception Resolution Calls is an agent skill from CALLE-AI/awesome-phone-call-agents. Use when a business workflow is blocked waiting on a person to answer a question by phone — a stale purchase order, an unconfirmed delivery window, a job a technician has not accepted — and the answer must update system state. Turns one CALL-E call task into per-recipient structured evidence, then advances the workflow with deterministic policy instead of letting a model decide.
Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts and reference files (for example `references/decision-table.md`, `references/examples.md` and `references/result-schema.json`).
It sits in Documents & Office, covering Forms and invoices. The repository describes itself as: Portable phone-call Agent Skills, apps, examples, adapters, and scheduler recipes for AI agents. The licence is MIT.
7 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 1 file in scripts/ (Python), which the agent can run.
From 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.
Exception Resolution Calls loads about 3.3k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 102 tokens; SKILL.md has 1,371 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). 1,371 words, ~3,340 tokens.
.claude/skills/exception-resolution-calls/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.Use it when three things are true at once:
Do not use it for open-ended conversations, for anything where the caller must negotiate or commit the business to something, or where no bounded set of questions exists. Those are not exception resolution; they are sales, and they need a human.
The tempting design is: call, ask the model what happened, update the record. That design fails in production for a reason worth stating plainly.
Extraction and authority are different jobs. A model is good at turning a messy conversation into structured fields. It is not the right thing to decide whether a purchase order may be closed, because when the evidence is thin it will still return something, and that something becomes a business fact nobody chose.
So split them:
CALL-E Your policy code
────── ────────────────
holds the conversation decides what the answer means
extracts strict JSON re-validates the JSON
reports confidence can refuse to act on low confidence
never touches state owns every state transitionWrite the result schema first, and give every judgment field an unknown
value. This is the single highest-leverage decision in the whole design.
{
"type": "object",
"additionalProperties": false,
"required": ["received", "po_status", "needs_human"],
"properties": {
"received": {
"type": "string",
"enum": ["yes", "no", "unknown"],
"description": "Use yes ONLY when they clearly confirm receipt. Use unknown when the answer was hedged, second-hand or unclear — for example 'I think someone in logistics has it'."
},
"po_status": {
"type": "string",
"enum": ["on_time", "delayed", "blocked", "unknown"],
"description": "Never infer a status from tone or from a polite acknowledgement."
},
"needs_human": {
"type": "string",
"enum": ["yes", "no", "unknown"],
"description": "Use yes when they ask for a person, dispute the record, or raise pricing, payment terms or contract changes."
}
}
}Three rules that are easy to get wrong:
additionalProperties: false, and no $ref, oneOf, anyOf, allOf
or recursion — CALL-E does not support them. A generated schema from a typed
model will emit $ref and silently return null results forever.status, summary, transcript or
call_id. Those are reserved on recipient results. The collision does not
error; it just returns null. Rename yours (po_status, customer_summary).The task text is a contract with the person who answers. State what may be disclosed, what may be asked, and what ends the call.
YOU MAY DISCLOSE ONLY
- the supplier company name;
- the purchase order number.
TRUTHFULNESS
- Never guess a date, quantity, status or commitment.
- If unclear, ask one clarification question, then report unknown.
- Do not convert a polite acknowledgement into a business commitment.
SCOPE
- Do not negotiate price, discounts, payment terms or contract terms.
- Do not collect passwords, card data or bank credentials.
- If the recipient asks for a human, stop and report needs_human = yes.Scan the operator-supplied values, not the rendered task. This bites everyone once: the task above contains the words "password", "credentials", "negotiate" and "price", so a scanner pointed at the rendered text flags the task's own safety rules and blocks every call you try to make. Scan the untrusted surface — the interpolated names, ids and numbers — and leave the template alone.
recipients[] plus recipient_result_schema means one call task can cover
many people, each with an independent result. It is cheaper and it demos far
better than a loop of single calls.
call = client.calls.create(
task=task_text, # says "ask each about THEIR order only"
recipients=[{"phones": [p], "region": "US"} for p in phones],
recipient_result_schema=RECIPIENT_SCHEMA, # per person
result_schema=ROLLUP_SCHEMA, # whole batch
metadata={"workflow_run_id": run_id},
idempotency_key=batch_key, # header
)Two things to get right:
recipients[i].id. If you cannot match a result to
a workflow, record it as unattributed and decide nothing — guessing which
record a phone answer belongs to is worse than leaving it.A create that times out may already have started a phone call. Retrying with a fresh key calls a real person twice.
key = "wf:batch:" + sha256("|".join(sorted(f"{run}:{attempt}" for ...))).hexdigest()[:32]Same logical batch → byte-identical key → CALL-E returns the original call. Persist the key before you dispatch, so a crash mid-flight is recoverable.
def decide(workflow, call, recipient, settings) -> Decision:
if workflow.is_terminal: return NOOP # late results never overwrite
if call.status != "completed": return RECONCILE # stop ambiguous/in-flight dispatch
if recipient.status != "completed": return RECONCILE # never infer no call occurred
if recipient.structured_result is None:
return RECONCILE # null is never success
ev = revalidate(recipient.structured_result) # check enums again yourself
if ev.escalation_reason == "asked_not_to_be_called":
suppress(recipient); return HUMAN_REVIEW
if ev.escalation_reason in ("disputes_po", "commercial_change", "wants_human"):
return HUMAN_REVIEW # distinct reasons, not one flag
if ev.needs_human == "yes": return HUMAN_REVIEW # outranks any positive answer
could_close = ev.received == "yes" and ev.po_status in ("on_time", "delayed")
if could_close and ev.spoke_with not in ("intended_contact", "authorized_representative"):
return HUMAN_REVIEW # right number, wrong/unknown person
if could_close and not confident_enough(call, settings):
return HUMAN_REVIEW # dampener, see below
if ev.received == "yes" and ev.po_status == "on_time":
return RESOLVE
return HUMAN_REVIEW # ambiguity is never resolvedRecord who you actually reached, and why a human is needed, as fields -- not as one flag and a hope. Two gaps bite in roughly this order:
spoke_with field (self-reported, not authenticated) and gate any
outcome that would close the workflow on it. See references/decision-table.md for the full precedence.needs_human boolean cannot tell an operator whether the
recipient asked for a person, disputed the record, tried to
renegotiate, or asked never to be called again. The last one has a
consequence beyond this call: it must suppress future attempts to this
contact, not just get logged. Differentiate the reason
(escalation_reason), and act on the ones that need acting on.Use confidence as a dampener, in one direction only. task_completed and
completion_confidence are reported for the whole call task, not per recipient.
Low confidence may withhold an automatic resolution; high confidence must
never rescue a recipient whose own result is missing or ambiguous. Getting
this backwards is how a confident-sounding batch closes an order nobody
confirmed.
Never branch on failure_code. The API documents it as having no published
enum. Store it, show it to a human, and drive retry from status instead.
The recipient did not opt into this call. Before discussing the order:
Refuse to dispatch a live call if you cannot fill in a truthful company name. A placeholder would be spoken aloud to a real person.
POST /webhooks/...
→ validate shape
→ dedupe on the event id (a UNIQUE column, not a SELECT)
→ enqueue reconciliation
→ return 200Then fetch the call and decide there. Three properties fall out for free: a duplicate delivery is a no-op; a lost delivery is only a delay, because a sweep reconciles anything that has been running too long; and you can develop with no public URL at all.
| Failure | Correct behaviour |
|---|---|
| Create times out | Stop automatic dispatch; reconcile the original call, then ask a human if still unknown. Any explicitly supported manual replay retains the same payload/key |
| Webhook delivered twice | Second is a no-op |
| Webhook never arrives | Reconciliation sweep finishes the call |
structured_result: null | Reconcile, then escalate — never resolve or automatically redial |
| Recipient never answered | No evidence exists, whatever the result object says |
| Right number, wrong person answers | Escalate even on a clean "yes" -- identity was never established |
| Someone resolved it by hand mid-call | Keep the result as history; do not overwrite |
| Attempts exhausted | Escalate to a person, do not keep dialling |
| Caller asks to renegotiate | Escalate; the agent has no authority |
| Caller asks not to be called again | Escalate and suppress this workflow record; decide deliberately whether that should also cover other open records for the same number, or it silently won't |
A call is a side effect you cannot take back — someone's phone rings. So:
references/safety.md for the boundaries this pattern assumes:
phone-number handling, consent, credentials, cancellation, and the
conversations that must escalate rather than continue.references/examples.md for runnable request and response
shapes, including batch calls and the terminal webhook.references/decision-table.md for the full branch precedence
and the retry-versus-escalate rule.references/result-schema.json as a starting point for your own
strict result schema.scripts/idempotency_key.py to see the content-derived key, and
to confirm it is stable under reordering.Resolve-E implements all of the above for supplier purchase-order acknowledgements: one CALL-E call task resolves eight purchase orders into their distinct outcomes -- including the identity-gate and escalation-differentiation cases this file just described -- each with its own policy decision and audit trail, and the failure table above is a test suite rather than a promise.
© 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 5 other files (scripts, references) in skills/exception-resolution-calls of CALLE-AI/awesome-phone-call-agents.
Open the folder on GitHubat commit 38d4118
Exception Resolution Calls 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 |
|---|---|---|---|---|---|---|
| Exception Resolution Calls this skillCALLE-AI/awesome-phone-call-agents | 107 | — | ~3.3k | Automated safety check: Pass | MIT | |
| PDFzai-org/ZCode | 7.7k | — | ~18k | Automated safety check: Notes | Proprietary | |
| Form Fillingplatonai/Browser4 | 1.2k | — | ~1.1k | Automated safety check: Pass | Apache-2.0 | |
| Code2mediatsingliuwin/autoclaw | 283 | — | ~985 | Automated safety check: Pass | MIT | |
| Token ReceiptHchen1218/token-receipt | 126 | — | ~2.1k | Automated safety check: Pass | None | |
| Invoice Makertsingliuwin/autoclaw | 283 | — | ~619 | Automated safety check: Pass | MIT |
zai-org/ZCode
Professional PDF toolkit covering four production workflows: reports, creative visuals, academic LaTeX, and existing PDF processing.
platonai/Browser4
Automatically fills web forms using provided field data and can optionally submit the form.
tsingliuwin/autoclaw
Universal media renderer with no fixed template — any custom layout, size or style becomes pixel-perfect images (PNG/JPEG/WebP), vector SVG, paged PDFs or animations (WebP/GIF).
Hchen1218/token-receipt
A skill your agent uses when the user wants to view AI conversation token usage as a receipt, invoice, checkout slip, token bill, usage receipt, cost snapshot, or creative monospace thermal-paper…
tsingliuwin/autoclaw
开发票/生成发票/报价单/收据/采购单/对账单/账单/付款通知 — formal business documents as paged PDFs with proper tables, right-aligned amounts, tax lines, repeating headers and page-number footers.
luzhenqian/ai-coding-lab
从 Excel 时间表或手动输入生成专业发票。当用户提到生成发票、创建账单、invoice、billing、开发票、时间表转发票、账单生成时使用此技能。
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
A skill your agent uses when a business workflow is blocked waiting on a person to answer a question by phone — a stale purchase order, an unconfirmed delivery window, a job a technician has not…. Exception Resolution Calls is an agent skill from CALLE-AI/awesome-phone-call-agents. Use when a business workflow is blocked waiting on a person to answer a question by phone — a stale purchase order, an unconfirmed delivery window, a job a technician has not accepted — and the answer must update system state.
Exception Resolution Calls fits situations like: A business workflow is blocked waiting on a person to answer a question by phone — a stale purchase order; an unconfirmed delivery window; A job a technician has not accepted — and the answer must update system state.
Run `npx skills add CALLE-AI/awesome-phone-call-agents --skill exception-resolution-calls -a claude-code`. Or copy the skill folder (skills/exception-resolution-calls in CALLE-AI/awesome-phone-call-agents) into .claude/skills/exception-resolution-calls in your project. Claude Code loads it when a task matches its description.
Run `npx skills add CALLE-AI/awesome-phone-call-agents --skill exception-resolution-calls -a codex`. Or copy the skill folder (skills/exception-resolution-calls in CALLE-AI/awesome-phone-call-agents) into .agents/skills/exception-resolution-calls 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 exception-resolution-calls -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/exception-resolution-calls, .gemini/skills/exception-resolution-calls, .github/skills/exception-resolution-calls and .opencode/skills/exception-resolution-calls in your project.
Going by SKILL.md and its folder, Exception Resolution Calls needs Python for the scripts in its folder. 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.
Exception Resolution Calls is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.3k tokens (SKILL.md is roughly 13k 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.2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Exception Resolution Calls: PDF (zai-org/ZCode, 7.7k stars), Form Filling (platonai/Browser4, 1.2k stars), Code2media (tsingliuwin/autoclaw, 283 stars) and Token Receipt (Hchen1218/token-receipt, 126 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.