Not in the top 1,000 by GitHub stars

radres/call-me

Let your AI agents call and text your actual phone (iPhone or Android) — Claude Code plugin + agent skill

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

claude-code/skills/call-me/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 236ad5d21e4a

No earlier version was observed for comparison.

Compare on GitHub

grok/skills/call-me/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 236ad5d21e4a

No earlier version was observed for comparison.

Compare on GitHub

plugin/skills/call-me/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 236ad5d21e4a

No earlier version was observed for comparison.

Compare on GitHub

skill/SKILL.md

Week of Nov 2, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 236ad5d21e4a

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 236ad5d21e4af5f3ebddb6e53f90cfd047248346

git clone --filter=blob:none --no-checkout https://github.com/radres/call-me.git .hotskills/radres-call-me && git -C .hotskills/radres-call-me checkout --detach 236ad5d21e4af5f3ebddb6e53f90cfd047248346 # Copy each selected skill directory from .hotskills/radres-call-me into .claude/skills/<skill-name>/
git clone --filter=blob:none --no-checkout https://github.com/radres/call-me.git .hotskills/radres-call-me && git -C .hotskills/radres-call-me checkout --detach 236ad5d21e4af5f3ebddb6e53f90cfd047248346 # Copy each selected skill directory from .hotskills/radres-call-me into .gemini/skills/<skill-name>/
35GitHub stars
Not availablestars in 7 days
4skills in this repository
21commits in 30 days

Heat

Insufficient history

Not enough history yet to measure heat. It appears after a few days of data.

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Nov 2, 2026Nov 6, 202635

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

call-me

When your agent uses it

Call or text your human's actual phone (iPhone or Android) and handle replies from the /call-me app. Use when the user says "call me", "ring me", "phone me if something comes up", "text my phone", asks the agent to stay reachable, wants something read out loud (an update, a summary of the day ahead), or sends an inbound /call-me message or voicemail. The phone rings through CallKit, spoken answers return as transcripts, and channel-enabled hosts deliver later messages directly into the active agent session.

What it loads into context

Frontmatter

118 tokens

Always available to the agent

SKILL.md

4,592 tokens

When the skill is activated

Reference documents

0 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. First setup and saved pairing
  2. Is the human set up yet?
  3. Inbound messages
  4. CLI setup (when no channel is present)
  5. Ask for input — text first, call if no answer (THE main move)
  6. Read something out — not every call is a question
  7. Conversations — keep the line open
  8. Text — non-blocking notification
  9. Title the thread
  10. Manual listen fallback
  11. Etiquette (important)

Scripts executed separately

  • ../../dist/channel.mjs
  • aiphone
  • callme

Files

  • ../../../.claude-plugin/marketplace.jsonasset459 bytes
  • ../../.claude-plugin/icon.pngasset162,818 bytes
  • ../../.claude-plugin/plugin.jsonasset1,537 bytes
  • ../../.mcp.jsonasset231 bytes
  • ../../dist/channel.mjsruns271,848 bytes
  • ../../hooks/hooks.jsonasset850 bytes
  • ../../hooks/hooks.jsonasset850 bytes
  • ../../hooks/hooks.jsonasset850 bytes
  • ../../hooks/hooks.jsonasset850 bytes
  • ../../monitors/monitors.jsonasset502 bytes
  • ../../monitors/monitors.jsonasset502 bytes
  • ../../monitors/monitors.jsonasset502 bytes
  • SKILL.mdcore18,814 bytes
  • SKILL.mdcore18,814 bytes
  • SKILL.mdcore18,814 bytes
  • SKILL.mdcore18,814 bytes
  • SKILL.mdcore18,814 bytes
  • agents/openai.yamlasset184 bytes
  • aiphoneruns23,535 bytes
  • callmeruns23,535 bytes
Read SKILL.md

# /call-me — call your human

Use english always, test to speech always expects english

Your human's iPhone or Android phone runs the /call-me app. It gave them a **user number**
(10 digits, e.g. `584-158-6160`) — that's all you need to ring their actual
phone and get a spoken answer.

## First setup and saved pairing

When pairing is missing, always show a clickable link:
[Download Call Me from the App Store](https://apps.apple.com/app/call-me/id6789575165)
on an iPhone, or [get it on Google Play](https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai) on Android.
Tell the user to open **My Number** in the app. Never show only the app name or
View the complete source on GitHub

Skills included

  • call-me
  • call-me
  • call-me
  • call-me

Repository facts

License
MIT
Created
Jul 10, 2026
Last pushed
Nov 5, 2026
Forks
7
Open issues
1
Project activity
Active

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 6, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 31 notes
  • claude-code/dist/channel.mjs:2 Analysis incomplete: physical or joined line exceeds character limit
  • claude-code/dist/channel.mjs:1 Analysis incomplete: physical or joined line exceeds character limit
  • claude-code/dist/channel.mjs:3 Analysis incomplete: physical or joined line exceeds character limit
  • claude-code/dist/channel.mjs:6 Analysis incomplete: physical or joined line exceeds character limit
  • claude-code/dist/channel.mjs:4 Analysis incomplete: physical or joined line exceeds character limit
  • claude-code/dist/channel.mjs:5 Analysis incomplete: physical or joined line exceeds character limit
  • claude-code/dist/channel.mjs:9 [Credential-related source omitted]
  • claude-code/dist/channel.mjs:7 Analysis incomplete: physical or joined line exceeds character limit
  • claude-code/dist/channel.mjs:8 Analysis incomplete: physical or joined line exceeds character limit
  • claude-code/dist/channel.mjs:11 Analysis incomplete: physical or joined line exceeds character limit
  • claude-code/dist/channel.mjs:10 Analysis incomplete: physical or joined line exceeds character limit
  • claude-code/dist/channel.mjs:70 Analysis incomplete: physical or joined line exceeds character limit
  • claude-code/dist/channel.mjs:72 [Credential-related source omitted]
  • claude-code/dist/channel.mjs:76 [Credential-related source omitted]
  • claude-code/dist/channel.mjs:74 Analysis incomplete: physical or joined line exceeds character limit
  • claude-code/dist/channel.mjs:75 Analysis incomplete: physical or joined line exceeds character limit
  • claude-code/hooks/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • claude-code/hooks/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • claude-code/hooks/hooks.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • claude-code/monitors/monitors.json:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 195 signals by file

.claude-plugin/marketplace.json

  • Network accessline 1
    {   "$schema": "https://json.schemastore.org/claude-code-marketplace.json",
  • Network accessline 2
    "$schema": "https://json.schemastore.org/claude-code-marketplace.json",

claude-code/.claude-plugin/plugin.json

  • Network accessline 1
    {   "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
  • Network accessline 2
    "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
  • Network accessline 9
    "email": "info@callmemcp.com"   },   "homepage": "https://callmemcp.com/",
  • Network accessline 10
    },   "homepage": "https://callmemcp.com/",   "repository": "https://github.com/radres/call-me",
  • Network accessline 11
    "homepage": "https://callmemcp.com/",
  • Network accessline 12
    "repository": "https://github.com/radres/call-me",
  • Network accessline 13
    "icon": "./.claude-plugin/icon.png",   "documentationUrl": "https://github.com/radres/call-me#readme",   "supportUrl": "https://github.com/radres/call-me/issues",
  • Network accessline 14
    "documentationUrl": "https://github.com/radres/call-me#readme",
  • Network accessline 15
    "supportUrl": "https://github.com/radres/call-me/issues",
  • Network accessline 16
    "privacyPolicyUrl": "https://callmemcp.com/privacy",
  • Network accessline 17
    "termsOfServiceUrl": "https://callmemcp.com/terms",

claude-code/dist/channel.mjs

  • Executable scriptline 1
    #!/usr/bin/env node
  • Possible obfuscationline 2
    var vg=Object.create;var os=Object.defineProperty;var bg=Object.getOwnPropertyDescriptor;var $g=Object.getOwnPropertyNames;var wg=Object.getPrototypeOf,xg=Object.prototype.hasOwnProperty;var b=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.
  • Possible obfuscationline 3
    `:""},this._extScope=t,this._scope=new Me.Scope({parent:t}),this._nodes=[new ki]}toString(){return this._root.render(this.opts)}name(t){return this._scope.name(t)}scopeName(t){return this._extScope.name(t)}scopeValue(t,r){let o=this._extSco
  • Possible obfuscationline 6
    || ${i} === "boolean" || ${n} === null`).assign(a,(0,I._)`[${n}]`)}}}function Fv({gen:e,parentData:t,parentDataProperty:r},o){e.if((0,I._)`${t} !== undefined`,()=>e.assign((0,I._)`${t}[${r}]`,o))}function qi(e,t,r,o=tr.Correct){let n=o===tr
  • Possible obfuscationline 9
    [Credential-related source omitted]
  • Possible obfuscationline 10
    `).filter(i=>i),n=Math.min(...o.map(i=>i.length-i.trimStart().length)),s=o.map(i=>i.slice(n)).map(i=>" ".repeat(this.indent*2)+i);for(let i of s)this.content.push(i)}compile(){let t=Function,r=this?.args,n=[...(this?.content??[""]).map(s=>`
  • Network accessline 11
    `))}};var Nu={major:4,minor:4,patch:3};var K=g("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Nu;let o=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&o.unshift(e);for(let n of o)for(let 
  • Possible obfuscationline 11
    `))}};var Nu={major:4,minor:4,patch:3};var K=g("$ZodType",(e,t)=>{var r;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=Nu;let o=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&o.unshift(e);for(let n of o)for(let 
  • Possible obfuscationline 70
    `)}f.write("payload.value = newResult;"),f.write("return payload;");let P=f.compile();return(x,k)=>P(p,x,k)},s,i=xt,a=!Lt.jitless,u=a&&cs.value,l=t.catchall,d;e._zod.parse=(p,f)=>{d??(d=o.value);let m=p.value;return i(m)?a&&u&&f?.async===!1
  • Network accessline 72
    [Credential-related source omitted]
  • Possible obfuscationline 72
    [Credential-related source omitted]
  • Possible obfuscationline 73
    `);if(t===-1)return null;let r=this._buffer.toString("utf8",0,t).replace(/\r$/,"");return this._buffer=this._buffer.subarray(t+1),Gz(r)}clear(){this._buffer=void 0}};function Gz(e){return Op.parse(JSON.parse(e))}function Ah(e){return JSON.s
  • Possible obfuscationline 74
    `}var Gn=class{constructor(t=Ch.stdin,r=Ch.stdout){this._stdin=t,this._stdout=r,this._readBuffer=new Bn,this._started=!1,this._ondata=o=>{this._readBuffer.append(o),this.processReadBuffer()},this._onerror=o=>{this.onerror?.(o)}}async start(
  • Network accessline 75
    `,{mode:384}),!0}catch{return!1}}function fc(){return process.env.CALLME_CHANNEL_PUSH==="0"?!1:process.env.CALLME_CHANNEL_PUSH==="1"?!0:Yn()?.channel_push===!0}function Gh(e){return Je(Se(),`claude-chanclaim-${e}.json`)}function mc(e){retur
  • Network accessline 76
    [Credential-related source omitted]
  • Possible obfuscationline 76
    [Credential-related source omitted]
  • Network accessline 80
    [Credential-related source omitted]
  • Possible obfuscationline 80
    [Credential-related source omitted]

claude-code/skills/call-me/SKILL.md

  • Network accessline 16
    When pairing is missing, always show a clickable link: [Download Call Me from the App Store](https://apps.apple.com/app/call-me/id6789575165)
  • Network accessline 17
    [Download Call Me from the App Store](https://apps.apple.com/app/call-me/id6789575165)
  • Network accessline 18
    on an iPhone, or [get it on Google Play](https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai) on Android.
  • Network accessline 43
    CALLME_TO=$(jq -r .user_number ~/.aiphone/config.json) curl -sS https://callmemcp.com/ring \
  • Network accessline 44
    curl -sS https://callmemcp.com/ring \
  • Network accessline 46
    -d "$(jq -nc --arg to "$CALLME_TO" --arg text "Should I deploy to prod?" \
  • Network accessline 122
    1. They install [Call Me from the App Store](https://apps.apple.com/app/call-me/id6789575165)
  • Network accessline 123
    (iPhone) or [Google Play](https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai) (Android).

claude-code/skills/call-me/aiphone

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Network accessline 2
    # callme — call/text your human's phone from an AI session. bash + curl only.
  • Network accessline 6
    API="${AIPHONE_API:-https://callmemcp.com/aiphone}"
  • Network accessline 42
    need_jq() { command -v jq >/dev/null || { echo "callme needs jq (https://jqlang.github.io/jq/download/)" >&2; exit 2; }; }
  • Network accessline 73
    Download Call Me from the App Store: https://apps.apple.com/app/call-me/id6789575165
  • Network accessline 74
    On Android, get it on Google Play: https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai
  • Dangerous shell operationline 137
    rm -f "$USER_CONF"
  • Network accessline 251
    APPSTORE_URL='https://apps.apple.com/app/id6789575165'
  • Network accessline 317
    }     }' <<< "$QR_MATRIX"   echo "$APPSTORE_URL"
  • Network accessline 318
    }' <<< "$QR_MATRIX"   echo "$APPSTORE_URL" }
  • Network accessline 319
    echo "$APPSTORE_URL"
  • Network accessline 356
    1. Download Call Me from the App Store:    https://apps.apple.com/app/call-me/id6789575165
  • Network accessline 357
    https://apps.apple.com/app/call-me/id6789575165
  • Network accessline 364
    On Android, get it on Google Play instead:    https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai
  • Network accessline 365
    https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai
  • Network accessline 436
    local label="${1:-AI session}"   local resp   resp=$(curl -sfS -X POST "$API/sessions" -H 'content-type: application/json' \
  • Network accessline 437
    local resp   resp=$(curl -sfS -X POST "$API/sessions" -H 'content-type: application/json' \     -d "$(jq -cn --arg l "$label" '{label:$l}')")
  • Network accessline 438
    resp=$(curl -sfS -X POST "$API/sessions" -H 'content-type: application/json' \
  • Network accessline 439
    -d "$(jq -cn --arg l "$label" '{label:$l}')")   echo "$resp" | jq --arg api "$API" '. + {api:$api, cursor:0}' > "$CONF"   chmod 600 "$CONF"
  • Network accessline 440
    echo "$resp" | jq --arg api "$API" '. + {api:$api, cursor:0}' > "$CONF"
  • Network accessline 457
    # +30s curl budget over the server-side timeout
  • Network accessline 458
    local resp   resp=$(curl -sS --max-time "$((timeout + 30))" -X POST "$API/calls" \
  • Network accessline 459
    resp=$(curl -sS --max-time "$((timeout + 30))" -X POST "$API/calls" \
  • Network accessline 479
    ensure_session   local resp   resp=$(curl -sfS -X POST "$API/messages" -H 'content-type: application/json' \
  • Network accessline 480
    local resp   resp=$(curl -sfS -X POST "$API/messages" -H 'content-type: application/json' \     -d "$(jq -cn --arg t "$(conf session_token)" --arg to "$to" --arg b "$text" \
  • Network accessline 481
    resp=$(curl -sfS -X POST "$API/messages" -H 'content-type: application/json' \
  • Network accessline 495
    local cursor resp   cursor=$(conf cursor)   resp=$(curl -sfS --max-time "$(( $1 + 10 ))" -G "$API/sessions/events" \
  • Network accessline 496
    [Credential-related source omitted]
  • Network accessline 497
    resp=$(curl -sfS --max-time "$(( $1 + 10 ))" -G "$API/sessions/events" \
  • Network accessline 507
    do_title() {   need_jq; ensure_session   curl -sfS -X POST "$API/sessions/label" -H 'content-type: application/json' \
  • Network accessline 508
    need_jq; ensure_session   curl -sfS -X POST "$API/sessions/label" -H 'content-type: application/json' \     -d "$(jq -cn --arg t "$(conf session_token)" --arg l "$1" \
  • Network accessline 509
    curl -sfS -X POST "$API/sessions/label" -H 'content-type: application/json' \
  • Dangerous shell operationline 538
    if [ -z "$(find "$f" -mtime -30 2>/dev/null)" ]; then rm -f "$f"; n=$((n+1)); fi
  • Network accessline 560
    title)    [ $# -ge 1 ] || usage; do_title "$1";;   whoami)   need_jq; ensure_session; jq '{session_number, display, api}' "$CONF";;   status)   curl -sfS "$API/healthz"; echo;;
  • Network accessline 561
    whoami)   need_jq; ensure_session; jq '{session_number, display, api}' "$CONF";;   status)   curl -sfS "$API/healthz"; echo;;   prune)    do_prune;;
  • Network accessline 562
    status)   curl -sfS "$API/healthz"; echo;;

claude-code/skills/call-me/callme

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Network accessline 2
    # callme — call/text your human's phone from an AI session. bash + curl only.
  • Network accessline 6
    API="${AIPHONE_API:-https://callmemcp.com/aiphone}"
  • Network accessline 42
    need_jq() { command -v jq >/dev/null || { echo "callme needs jq (https://jqlang.github.io/jq/download/)" >&2; exit 2; }; }
  • Network accessline 73
    Download Call Me from the App Store: https://apps.apple.com/app/call-me/id6789575165
  • Network accessline 74
    On Android, get it on Google Play: https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai
  • Dangerous shell operationline 137
    rm -f "$USER_CONF"
  • Network accessline 251
    APPSTORE_URL='https://apps.apple.com/app/id6789575165'
  • Network accessline 317
    }     }' <<< "$QR_MATRIX"   echo "$APPSTORE_URL"
  • Network accessline 318
    }' <<< "$QR_MATRIX"   echo "$APPSTORE_URL" }
  • Network accessline 319
    echo "$APPSTORE_URL"
  • Network accessline 356
    1. Download Call Me from the App Store:    https://apps.apple.com/app/call-me/id6789575165
  • Network accessline 357
    https://apps.apple.com/app/call-me/id6789575165
  • Network accessline 364
    On Android, get it on Google Play instead:    https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai
  • Network accessline 365
    https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai
  • Network accessline 436
    local label="${1:-AI session}"   local resp   resp=$(curl -sfS -X POST "$API/sessions" -H 'content-type: application/json' \
  • Network accessline 437
    local resp   resp=$(curl -sfS -X POST "$API/sessions" -H 'content-type: application/json' \     -d "$(jq -cn --arg l "$label" '{label:$l}')")
  • Network accessline 438
    resp=$(curl -sfS -X POST "$API/sessions" -H 'content-type: application/json' \
  • Network accessline 439
    -d "$(jq -cn --arg l "$label" '{label:$l}')")   echo "$resp" | jq --arg api "$API" '. + {api:$api, cursor:0}' > "$CONF"   chmod 600 "$CONF"
  • Network accessline 440
    echo "$resp" | jq --arg api "$API" '. + {api:$api, cursor:0}' > "$CONF"
  • Network accessline 457
    # +30s curl budget over the server-side timeout
  • Network accessline 458
    local resp   resp=$(curl -sS --max-time "$((timeout + 30))" -X POST "$API/calls" \
  • Network accessline 459
    resp=$(curl -sS --max-time "$((timeout + 30))" -X POST "$API/calls" \
  • Network accessline 479
    ensure_session   local resp   resp=$(curl -sfS -X POST "$API/messages" -H 'content-type: application/json' \
  • Network accessline 480
    local resp   resp=$(curl -sfS -X POST "$API/messages" -H 'content-type: application/json' \     -d "$(jq -cn --arg t "$(conf session_token)" --arg to "$to" --arg b "$text" \
  • Network accessline 481
    resp=$(curl -sfS -X POST "$API/messages" -H 'content-type: application/json' \
  • Network accessline 495
    local cursor resp   cursor=$(conf cursor)   resp=$(curl -sfS --max-time "$(( $1 + 10 ))" -G "$API/sessions/events" \
  • Network accessline 496
    [Credential-related source omitted]
  • Network accessline 497
    resp=$(curl -sfS --max-time "$(( $1 + 10 ))" -G "$API/sessions/events" \
  • Network accessline 507
    do_title() {   need_jq; ensure_session   curl -sfS -X POST "$API/sessions/label" -H 'content-type: application/json' \
  • Network accessline 508
    need_jq; ensure_session   curl -sfS -X POST "$API/sessions/label" -H 'content-type: application/json' \     -d "$(jq -cn --arg t "$(conf session_token)" --arg l "$1" \
  • Network accessline 509
    curl -sfS -X POST "$API/sessions/label" -H 'content-type: application/json' \
  • Dangerous shell operationline 538
    if [ -z "$(find "$f" -mtime -30 2>/dev/null)" ]; then rm -f "$f"; n=$((n+1)); fi
  • Network accessline 560
    title)    [ $# -ge 1 ] || usage; do_title "$1";;   whoami)   need_jq; ensure_session; jq '{session_number, display, api}' "$CONF";;   status)   curl -sfS "$API/healthz"; echo;;
  • Network accessline 561
    whoami)   need_jq; ensure_session; jq '{session_number, display, api}' "$CONF";;   status)   curl -sfS "$API/healthz"; echo;;   prune)    do_prune;;
  • Network accessline 562
    status)   curl -sfS "$API/healthz"; echo;;

plugin/skills/call-me/SKILL.md

  • Network accessline 24
    1. If `~/.aiphone/config.json` exists, use its `user_number`. 2. Otherwise ask the user for the number. If they do not have the app yet, call    `setup` and show these links: [Download Call Me from the App Store](https://callmemcp.com/go/ag
  • Network accessline 25
    2. Otherwise ask the user for the number. If they do not have the app yet, call    `setup` and show these links: [Download Call Me from the App Store](https://callmemcp.com/go/agent-plugin)    or [get it on Google Play](https://callmemcp.co
  • Network accessline 26
    `setup` and show these links: [Download Call Me from the App Store](https://callmemcp.com/go/agent-plugin)
  • Network accessline 27
    or [get it on Google Play](https://callmemcp.com/go/play-agent-plugin).

skill/SKILL.md

  • Network accessline 16
    When pairing is missing, always show a clickable link: [Download Call Me from the App Store](https://apps.apple.com/app/call-me/id6789575165)
  • Network accessline 17
    [Download Call Me from the App Store](https://apps.apple.com/app/call-me/id6789575165)
  • Network accessline 18
    on an iPhone, or [get it on Google Play](https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai) on Android.
  • Network accessline 43
    CALLME_TO=$(jq -r .user_number ~/.aiphone/config.json) curl -sS https://callmemcp.com/ring \
  • Network accessline 44
    curl -sS https://callmemcp.com/ring \
  • Network accessline 46
    -d "$(jq -nc --arg to "$CALLME_TO" --arg text "Should I deploy to prod?" \
  • Network accessline 122
    1. They install [Call Me from the App Store](https://apps.apple.com/app/call-me/id6789575165)
  • Network accessline 123
    (iPhone) or [Google Play](https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai) (Android).

skill/aiphone

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Network accessline 2
    # callme — call/text your human's phone from an AI session. bash + curl only.
  • Network accessline 6
    API="${AIPHONE_API:-https://callmemcp.com/aiphone}"
  • Network accessline 42
    need_jq() { command -v jq >/dev/null || { echo "callme needs jq (https://jqlang.github.io/jq/download/)" >&2; exit 2; }; }
  • Network accessline 73
    Download Call Me from the App Store: https://apps.apple.com/app/call-me/id6789575165
  • Network accessline 74
    On Android, get it on Google Play: https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai
  • Dangerous shell operationline 137
    rm -f "$USER_CONF"
  • Network accessline 251
    APPSTORE_URL='https://apps.apple.com/app/id6789575165'
  • Network accessline 317
    }     }' <<< "$QR_MATRIX"   echo "$APPSTORE_URL"
  • Network accessline 318
    }' <<< "$QR_MATRIX"   echo "$APPSTORE_URL" }
  • Network accessline 319
    echo "$APPSTORE_URL"
  • Network accessline 356
    1. Download Call Me from the App Store:    https://apps.apple.com/app/call-me/id6789575165
  • Network accessline 357
    https://apps.apple.com/app/call-me/id6789575165
  • Network accessline 364
    On Android, get it on Google Play instead:    https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai
  • Network accessline 365
    https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai
  • Network accessline 436
    local label="${1:-AI session}"   local resp   resp=$(curl -sfS -X POST "$API/sessions" -H 'content-type: application/json' \
  • Network accessline 437
    local resp   resp=$(curl -sfS -X POST "$API/sessions" -H 'content-type: application/json' \     -d "$(jq -cn --arg l "$label" '{label:$l}')")
  • Network accessline 438
    resp=$(curl -sfS -X POST "$API/sessions" -H 'content-type: application/json' \
  • Network accessline 439
    -d "$(jq -cn --arg l "$label" '{label:$l}')")   echo "$resp" | jq --arg api "$API" '. + {api:$api, cursor:0}' > "$CONF"   chmod 600 "$CONF"
  • Network accessline 440
    echo "$resp" | jq --arg api "$API" '. + {api:$api, cursor:0}' > "$CONF"
  • Network accessline 457
    # +30s curl budget over the server-side timeout
  • Network accessline 458
    local resp   resp=$(curl -sS --max-time "$((timeout + 30))" -X POST "$API/calls" \
  • Network accessline 459
    resp=$(curl -sS --max-time "$((timeout + 30))" -X POST "$API/calls" \
  • Network accessline 479
    ensure_session   local resp   resp=$(curl -sfS -X POST "$API/messages" -H 'content-type: application/json' \
  • Network accessline 480
    local resp   resp=$(curl -sfS -X POST "$API/messages" -H 'content-type: application/json' \     -d "$(jq -cn --arg t "$(conf session_token)" --arg to "$to" --arg b "$text" \
  • Network accessline 481
    resp=$(curl -sfS -X POST "$API/messages" -H 'content-type: application/json' \
  • Network accessline 495
    local cursor resp   cursor=$(conf cursor)   resp=$(curl -sfS --max-time "$(( $1 + 10 ))" -G "$API/sessions/events" \
  • Network accessline 496
    [Credential-related source omitted]
  • Network accessline 497
    resp=$(curl -sfS --max-time "$(( $1 + 10 ))" -G "$API/sessions/events" \
  • Network accessline 507
    do_title() {   need_jq; ensure_session   curl -sfS -X POST "$API/sessions/label" -H 'content-type: application/json' \
  • Network accessline 508
    need_jq; ensure_session   curl -sfS -X POST "$API/sessions/label" -H 'content-type: application/json' \     -d "$(jq -cn --arg t "$(conf session_token)" --arg l "$1" \
  • Network accessline 509
    curl -sfS -X POST "$API/sessions/label" -H 'content-type: application/json' \
  • Dangerous shell operationline 538
    if [ -z "$(find "$f" -mtime -30 2>/dev/null)" ]; then rm -f "$f"; n=$((n+1)); fi
  • Network accessline 560
    title)    [ $# -ge 1 ] || usage; do_title "$1";;   whoami)   need_jq; ensure_session; jq '{session_number, display, api}' "$CONF";;   status)   curl -sfS "$API/healthz"; echo;;
  • Network accessline 561
    whoami)   need_jq; ensure_session; jq '{session_number, display, api}' "$CONF";;   status)   curl -sfS "$API/healthz"; echo;;   prune)    do_prune;;
  • Network accessline 562
    status)   curl -sfS "$API/healthz"; echo;;

skill/callme

  • Executable scriptline 1
    #!/usr/bin/env bash
  • Network accessline 2
    # callme — call/text your human's phone from an AI session. bash + curl only.
  • Network accessline 6
    API="${AIPHONE_API:-https://callmemcp.com/aiphone}"
  • Network accessline 42
    need_jq() { command -v jq >/dev/null || { echo "callme needs jq (https://jqlang.github.io/jq/download/)" >&2; exit 2; }; }
  • Network accessline 73
    Download Call Me from the App Store: https://apps.apple.com/app/call-me/id6789575165
  • Network accessline 74
    On Android, get it on Google Play: https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai
  • Dangerous shell operationline 137
    rm -f "$USER_CONF"
  • Network accessline 251
    APPSTORE_URL='https://apps.apple.com/app/id6789575165'
  • Network accessline 317
    }     }' <<< "$QR_MATRIX"   echo "$APPSTORE_URL"
  • Network accessline 318
    }' <<< "$QR_MATRIX"   echo "$APPSTORE_URL" }
  • Network accessline 319
    echo "$APPSTORE_URL"
  • Network accessline 356
    1. Download Call Me from the App Store:    https://apps.apple.com/app/call-me/id6789575165
  • Network accessline 357
    https://apps.apple.com/app/call-me/id6789575165
  • Network accessline 364
    On Android, get it on Google Play instead:    https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai
  • Network accessline 365
    https://play.google.com/store/apps/details?id=com.serdaroztetik.callmeai
  • Network accessline 436
    local label="${1:-AI session}"   local resp   resp=$(curl -sfS -X POST "$API/sessions" -H 'content-type: application/json' \
  • Network accessline 437
    local resp   resp=$(curl -sfS -X POST "$API/sessions" -H 'content-type: application/json' \     -d "$(jq -cn --arg l "$label" '{label:$l}')")
  • Network accessline 438
    resp=$(curl -sfS -X POST "$API/sessions" -H 'content-type: application/json' \
  • Network accessline 439
    -d "$(jq -cn --arg l "$label" '{label:$l}')")   echo "$resp" | jq --arg api "$API" '. + {api:$api, cursor:0}' > "$CONF"   chmod 600 "$CONF"
  • Network accessline 440
    echo "$resp" | jq --arg api "$API" '. + {api:$api, cursor:0}' > "$CONF"
  • Network accessline 457
    # +30s curl budget over the server-side timeout
  • Network accessline 458
    local resp   resp=$(curl -sS --max-time "$((timeout + 30))" -X POST "$API/calls" \
  • Network accessline 459
    resp=$(curl -sS --max-time "$((timeout + 30))" -X POST "$API/calls" \
  • Network accessline 479
    ensure_session   local resp   resp=$(curl -sfS -X POST "$API/messages" -H 'content-type: application/json' \
  • Network accessline 480
    local resp   resp=$(curl -sfS -X POST "$API/messages" -H 'content-type: application/json' \     -d "$(jq -cn --arg t "$(conf session_token)" --arg to "$to" --arg b "$text" \
  • Network accessline 481
    resp=$(curl -sfS -X POST "$API/messages" -H 'content-type: application/json' \
  • Network accessline 495
    local cursor resp   cursor=$(conf cursor)   resp=$(curl -sfS --max-time "$(( $1 + 10 ))" -G "$API/sessions/events" \
  • Network accessline 496
    [Credential-related source omitted]
  • Network accessline 497
    resp=$(curl -sfS --max-time "$(( $1 + 10 ))" -G "$API/sessions/events" \
  • Network accessline 507
    do_title() {   need_jq; ensure_session   curl -sfS -X POST "$API/sessions/label" -H 'content-type: application/json' \
  • Network accessline 508
    need_jq; ensure_session   curl -sfS -X POST "$API/sessions/label" -H 'content-type: application/json' \     -d "$(jq -cn --arg t "$(conf session_token)" --arg l "$1" \
  • Network accessline 509
    curl -sfS -X POST "$API/sessions/label" -H 'content-type: application/json' \
  • Dangerous shell operationline 538
    if [ -z "$(find "$f" -mtime -30 2>/dev/null)" ]; then rm -f "$f"; n=$((n+1)); fi
  • Network accessline 560
    title)    [ $# -ge 1 ] || usage; do_title "$1";;   whoami)   need_jq; ensure_session; jq '{session_number, display, api}' "$CONF";;   status)   curl -sfS "$API/healthz"; echo;;
  • Network accessline 561
    whoami)   need_jq; ensure_session; jq '{session_number, display, api}' "$CONF";;   status)   curl -sfS "$API/healthz"; echo;;   prune)    do_prune;;
  • Network accessline 562
    status)   curl -sfS "$API/healthz"; echo;;

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 3 facts
  • Contacts jqlang.github.io, which SKILL.md, the README and the plugin manifest do not mentioncall-me/aiphone:42High confidence
  • Contacts jqlang.github.io, which SKILL.md, the README and the plugin manifest do not mentioncall-me/callme:42High confidence
  • Contacts jqlang.github.io, which SKILL.md, the README and the plugin manifest do not mentionskill/callme:42High confidence
Signal confidence: 146 facts

and 96 more

Works with

Agent compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeNativeManifest .claude-plugin/marketplace.json.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md claude-code/skills/call-me/SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md claude-code/skills/call-me/SKILL.md.cursor/skills/<skill-name>/
Gemini CLINativeManifest gemini-extension.json.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md claude-code/skills/call-me/SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard SKILL.md claude-code/skills/call-me/SKILL.md.opencode/skills/<skill-name>/
  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.