[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6C6FGMD5NFCPJM8AX1J6TTR":3,"skill-same:01M6C6FGMD5NFCPJM8AX1J6TTR":226},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":54,"linkOnly":55,"markdownContent":56,"markdownBody":57,"frontMatter":58,"refName":59,"commitSha":60,"skillDirectory":61,"forksCount":62,"repositoryHtmlUrl":63,"repositoryHomepageUrl":6,"ownerHtmlUrl":64,"ownerBlogUrl":65,"ownerDescription":66,"updatedAt":67,"install":68,"resources":81},"01M6C6FGMD5NFCPJM8AX1J6TTR","allternit-phones",null,"Drive real phones, phone numbers and mailboxes through Allternit's MCP server. Use when the task is to operate an Android phone or iPhone (take a screenshot, tap, type, open an app, run a goal on the phone, replay a saved phone skill, run the same job on several phones), test a mobile app on a real device, give an agent its own phone number and mailbox, send or read an SMS, read a one-time code (OTP) or verification email, or share a live view link of a phone screen. Triggers on: phone, device, Android, iPhone, app on my phone, SMS, text message, OTP, verification code, 2FA code, agent number, agent mailbox, Allternit phones.","Allternit\u002Fallternit-platform","Allternit","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F250397232?v=4","01M6C67T2SPVP033M7REAAHYHX","01M6C67T7CXM1DKVQY8DFAFRB2",1,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Fplugins\u002Fallternit-phones\u002Fcodex\u002Fallternit-phones\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53],"allternit phones","goal","when","send","take a screenshot","number","operate","otp","app","iphone","time","message","tap","mobile","take","mobile app","MCP","use","view","read","text","open","email","server","verification","share","code","run","test","mcp server","android","2026-11-10 10:12:30",false,"---\nname: allternit-phones\ndescription: \"Drive real phones, phone numbers and mailboxes through Allternit's MCP server. Use when the task is to operate an Android phone or iPhone (take a screenshot, tap, type, open an app, run a goal on the phone, replay a saved phone skill, run the same job on several phones), test a mobile app on a real device, give an agent its own phone number and mailbox, send or read an SMS, read a one-time code (OTP) or verification email, or share a live view link of a phone screen. Triggers on: phone, device, Android, iPhone, app on my phone, SMS, text message, OTP, verification code, 2FA code, agent number, agent mailbox, Allternit phones.\"\n---\n\n# Allternit phones, numbers and mailboxes\n\nAllternit's remote MCP server (`https:\u002F\u002Fmcp.allternit.com\u002Fmcp`) exposes the project owner's\nlinked phones, the project's phone numbers and its agent mailboxes as MCP tools. The phones\nthemselves are linked to the owner's **Allternit Desktop** (Phone Link, adb or a USB Agent);\nevery phone call is relayed to that Desktop and runs through the same phone gateway a bot uses.\n\n## Setup check (do this first)\n\n1. The `allternit` MCP server must be in `~\u002F.codex\u002Fconfig.toml` (see the add-on README). If its tools are missing, tell the user to:\n   - create a **project API key** at platform.allternit.com, API Keys, Platform API, with the\n     scopes they need: `phones` (drive phones), `numbers` (get numbers), `messaging` (texts),\n     `mail` (mailboxes). Use a key that is **not bound to an account**; phones belong to the\n     owner, so an account-bound key is refused (`403 account_bound_key`).\n   - export it before starting the agent: `export ALLTERNIT_API_KEY=alt_live_...`\n     (`alt_test_...` is the sandbox: simulated numbers, nothing delivered).\n2. Call `phones_list`. Each phone has a `serial` (`link:...`, `usb:...` or `host:port`),\n   `online` and `desktop_online`. Use `-` as the serial only when exactly one phone is connected.\n3. If `desktop_online` is false, or a call fails with `phone_desktop_offline`, ask the user to open\n   Allternit Desktop, signed in. `phone_offline` means that phone is not connected to the Desktop.\n\nNever print the API key, put it in a file in the repo, or paste it into a tool argument.\n\n## Safety rules (not optional)\n\n- **Texts, calls and reading texts need the owner.** `phone.sms.send`, `phone.call.dial` and\n  `phone.sms.read` open an approval dialog on the owner's Desktop every time. You cannot skip it.\n  Tell the user to watch for it; a refusal comes back as `ok: false, error: \"approval_denied\"`.\n  Do not retry a denied action.\n- **Only accounts the user authorized.** Never sign into, create, or recover an account the user\n  did not ask for, and never use a phone, number or mailbox to get around another service's\n  verification, rate limits or terms. Give an agent an identity only for the user's own services\n  or services that allow it.\n- **No surprise side effects.** Before anything that sends, buys, pays, posts, deletes, or changes\n  settings on the phone, state what you are about to do and get a yes. Buying a live number is\n  billed monthly; say so before calling it.\n- **Personal data stays put.** History redacts typed text, numbers and message bodies. Don't\n  copy screen contents, contacts or messages into code, commits or logs unless the user asks.\n\n## Tools\n\n| Tool | Use |\n|---|---|\n| `phones_list` | Linked phones and whether they are reachable |\n| `phone_screenshot` | Current screen (image plus screen text when available) |\n| `phone_tap` | Tap at `x`, `y` in screenshot pixels |\n| `phone_type` | Type text into the focused field |\n| `phone_open_app` | Open an app by name or package \u002F bundle id |\n| `phone_task` | Give the phone a goal; it loops screen, action, screen on the Desktop. Returns a `run_id` |\n| `phone_run_status` | Status and steps of a task or skill run (`run_id`) |\n| `phone_skill_run` | Replay a saved phone skill with its `inputs` (no model needed) |\n| `phone_history` | Recent steps on a phone, optionally one `run_id` |\n| `phone_live_url` | A link that shows the phone screen live |\n| `mailbox_create` \u002F `mailbox_list` | Agent mailboxes |\n| `mail_list` \u002F `mail_read` | Messages in a mailbox |\n| `mail_read_otp` | The newest one-time code in a mailbox |\n\nCheck each tool's input schema before calling it; argument names come from the server.\nFor anything the tools don't cover, the same project key works on the REST API at\n`https:\u002F\u002Fapi.allternit.com\u002Fv1` (`\u002Fv1\u002Fphones`, `\u002Fv1\u002Fphones\u002Fruns`, `\u002Fv1\u002Fnumbers`, `\u002Fv1\u002Fmessages`,\n`\u002Fv1\u002Fmailboxes`, `\u002Fv1\u002Fidentities`).\n\n## Workflows\n\n### 1. Screenshot, then tap (manual driving)\n\n1. `phone_screenshot`. Read the screen; find the target by its text, not by guessing coordinates.\n2. `phone_tap` at the centre of the element (screenshot pixels).\n3. `phone_screenshot` again to confirm the screen changed as expected. Never chain several taps\n   blind; one action, one check.\n4. For text: tap the field, `phone_type`, screenshot to confirm.\nUse this for short, precise steps and for checking a build of the user's own app.\n\n### 2. Run a task (let the phone loop)\n\nFor anything over about five steps, prefer `phone_task` with a plain goal\n(\"Open Settings and turn on Wi-Fi\"), `max_steps` 1 to 40 (default 15). It answers at once with a\n`run_id`; poll `phone_run_status` every few seconds until it is done (a task stops after 5 minutes),\nthen report what happened from its steps. Tasks and skill replays never text or call.\nIf a saved skill fits (ask the user, or check with the REST `GET \u002Fv1\u002Fphones\u002Fskills`), use\n`phone_skill_run` instead: faster, no model, deterministic. Pass every input the skill lists.\n\n### 3. Fleet run (same job on several phones)\n\nUse REST `POST \u002Fv1\u002Fphones\u002Fruns` with the goal or skill and the serials (see the Phones docs), or\nstart one `phone_task` per serial. Track each `run_id` with `phone_run_status` and give the user a\nper-phone table: serial, status, steps, failure reason.\n\n### 4. Give an agent an identity\n\nAn identity is a number, a mailbox and (optionally) a phone for one agent or test persona.\n- One call: REST `POST \u002Fv1\u002Fidentities` creates the number and mailbox together and returns both.\n- Or step by step: `POST \u002Fv1\u002Fnumbers` (scope `numbers`), then `mailbox_create`.\nIn a sandbox project numbers are simulated `+1 555` numbers that never reach a carrier. Live\nnumbers need a paid plan and are billed monthly; confirm with the user first. US texting from a\nlive number needs carrier registration (`\u002Fv1\u002Fnumbers\u002F{id}\u002Fregistration`).\n\n### 5. Read a one-time code\n\n- **Email:** `mail_read_otp` on the mailbox the service sent to. If it returns nothing, wait a few\n  seconds and retry (up to about a minute), then `mail_list` to see what did arrive.\n- **SMS to an Allternit number:** REST `GET \u002Fv1\u002Fmessages?number_id=...&direction=inbound`, newest first.\n- **SMS on the user's own phone:** `phone.sms.read` through the phone tools. This needs the owner's\n  approval on their Desktop every time; tell them before you ask.\nUse a code only for the sign-in the user asked for, then stop. Don't store it.\n\n### 6. Share a live view\n\n`phone_live_url` returns a link to watch the phone screen. Give the link to the user as-is; it is\ntied to their account. Mention it when starting a long `phone_task` so they can watch.\n\n## Errors\n\n| Code | What to do |\n|---|---|\n| `phone_desktop_offline` | Ask the user to open Allternit Desktop, signed in |\n| `phone_gateway_unavailable` | Desktop is up but its phone gateway is off; ask the user to restart it from Desktop |\n| `phone_offline` | That phone isn't connected; pick another serial or ask the user to reconnect |\n| `phone_required` | Several phones connected; pass a serial instead of `-` |\n| `phone_timeout` | No answer in time; a text or call may still be waiting for approval |\n| `no_desktop` | The owner never paired a Desktop; they need to install and sign in |\n| `403 permission_error` | The key lacks a scope; ask the user to add it to the key |\n| `accessibility_off` | The phone's accessibility service is off; the user turns it on in Phone Link |\n\nDocs: https:\u002F\u002Fdocs.allternit.com\u002Fapi\u002Fplatform\u002Fsdks\u002Fclaude-code-codex and\nhttps:\u002F\u002Fdocs.allternit.com\u002Fapi\u002Fplatform\u002Fphones\n","# Allternit phones, numbers and mailboxes\n\nAllternit's remote MCP server (`https:\u002F\u002Fmcp.allternit.com\u002Fmcp`) exposes the project owner's\nlinked phones, the project's phone numbers and its agent mailboxes as MCP tools. The phones\nthemselves are linked to the owner's **Allternit Desktop** (Phone Link, adb or a USB Agent);\nevery phone call is relayed to that Desktop and runs through the same phone gateway a bot uses.\n\n## Setup check (do this first)\n\n1. The `allternit` MCP server must be in `~\u002F.codex\u002Fconfig.toml` (see the add-on README). If its tools are missing, tell the user to:\n   - create a **project API key** at platform.allternit.com, API Keys, Platform API, with the\n     scopes they need: `phones` (drive phones), `numbers` (get numbers), `messaging` (texts),\n     `mail` (mailboxes). Use a key that is **not bound to an account**; phones belong to the\n     owner, so an account-bound key is refused (`403 account_bound_key`).\n   - export it before starting the agent: `export ALLTERNIT_API_KEY=alt_live_...`\n     (`alt_test_...` is the sandbox: simulated numbers, nothing delivered).\n2. Call `phones_list`. Each phone has a `serial` (`link:...`, `usb:...` or `host:port`),\n   `online` and `desktop_online`. Use `-` as the serial only when exactly one phone is connected.\n3. If `desktop_online` is false, or a call fails with `phone_desktop_offline`, ask the user to open\n   Allternit Desktop, signed in. `phone_offline` means that phone is not connected to the Desktop.\n\nNever print the API key, put it in a file in the repo, or paste it into a tool argument.\n\n## Safety rules (not optional)\n\n- **Texts, calls and reading texts need the owner.** `phone.sms.send`, `phone.call.dial` and\n  `phone.sms.read` open an approval dialog on the owner's Desktop every time. You cannot skip it.\n  Tell the user to watch for it; a refusal comes back as `ok: false, error: \"approval_denied\"`.\n  Do not retry a denied action.\n- **Only accounts the user authorized.** Never sign into, create, or recover an account the user\n  did not ask for, and never use a phone, number or mailbox to get around another service's\n  verification, rate limits or terms. Give an agent an identity only for the user's own services\n  or services that allow it.\n- **No surprise side effects.** Before anything that sends, buys, pays, posts, deletes, or changes\n  settings on the phone, state what you are about to do and get a yes. Buying a live number is\n  billed monthly; say so before calling it.\n- **Personal data stays put.** History redacts typed text, numbers and message bodies. Don't\n  copy screen contents, contacts or messages into code, commits or logs unless the user asks.\n\n## Tools\n\n| Tool | Use |\n|---|---|\n| `phones_list` | Linked phones and whether they are reachable |\n| `phone_screenshot` | Current screen (image plus screen text when available) |\n| `phone_tap` | Tap at `x`, `y` in screenshot pixels |\n| `phone_type` | Type text into the focused field |\n| `phone_open_app` | Open an app by name or package \u002F bundle id |\n| `phone_task` | Give the phone a goal; it loops screen, action, screen on the Desktop. Returns a `run_id` |\n| `phone_run_status` | Status and steps of a task or skill run (`run_id`) |\n| `phone_skill_run` | Replay a saved phone skill with its `inputs` (no model needed) |\n| `phone_history` | Recent steps on a phone, optionally one `run_id` |\n| `phone_live_url` | A link that shows the phone screen live |\n| `mailbox_create` \u002F `mailbox_list` | Agent mailboxes |\n| `mail_list` \u002F `mail_read` | Messages in a mailbox |\n| `mail_read_otp` | The newest one-time code in a mailbox |\n\nCheck each tool's input schema before calling it; argument names come from the server.\nFor anything the tools don't cover, the same project key works on the REST API at\n`https:\u002F\u002Fapi.allternit.com\u002Fv1` (`\u002Fv1\u002Fphones`, `\u002Fv1\u002Fphones\u002Fruns`, `\u002Fv1\u002Fnumbers`, `\u002Fv1\u002Fmessages`,\n`\u002Fv1\u002Fmailboxes`, `\u002Fv1\u002Fidentities`).\n\n## Workflows\n\n### 1. Screenshot, then tap (manual driving)\n\n1. `phone_screenshot`. Read the screen; find the target by its text, not by guessing coordinates.\n2. `phone_tap` at the centre of the element (screenshot pixels).\n3. `phone_screenshot` again to confirm the screen changed as expected. Never chain several taps\n   blind; one action, one check.\n4. For text: tap the field, `phone_type`, screenshot to confirm.\nUse this for short, precise steps and for checking a build of the user's own app.\n\n### 2. Run a task (let the phone loop)\n\nFor anything over about five steps, prefer `phone_task` with a plain goal\n(\"Open Settings and turn on Wi-Fi\"), `max_steps` 1 to 40 (default 15). It answers at once with a\n`run_id`; poll `phone_run_status` every few seconds until it is done (a task stops after 5 minutes),\nthen report what happened from its steps. Tasks and skill replays never text or call.\nIf a saved skill fits (ask the user, or check with the REST `GET \u002Fv1\u002Fphones\u002Fskills`), use\n`phone_skill_run` instead: faster, no model, deterministic. Pass every input the skill lists.\n\n### 3. Fleet run (same job on several phones)\n\nUse REST `POST \u002Fv1\u002Fphones\u002Fruns` with the goal or skill and the serials (see the Phones docs), or\nstart one `phone_task` per serial. Track each `run_id` with `phone_run_status` and give the user a\nper-phone table: serial, status, steps, failure reason.\n\n### 4. Give an agent an identity\n\nAn identity is a number, a mailbox and (optionally) a phone for one agent or test persona.\n- One call: REST `POST \u002Fv1\u002Fidentities` creates the number and mailbox together and returns both.\n- Or step by step: `POST \u002Fv1\u002Fnumbers` (scope `numbers`), then `mailbox_create`.\nIn a sandbox project numbers are simulated `+1 555` numbers that never reach a carrier. Live\nnumbers need a paid plan and are billed monthly; confirm with the user first. US texting from a\nlive number needs carrier registration (`\u002Fv1\u002Fnumbers\u002F{id}\u002Fregistration`).\n\n### 5. Read a one-time code\n\n- **Email:** `mail_read_otp` on the mailbox the service sent to. If it returns nothing, wait a few\n  seconds and retry (up to about a minute), then `mail_list` to see what did arrive.\n- **SMS to an Allternit number:** REST `GET \u002Fv1\u002Fmessages?number_id=...&direction=inbound`, newest first.\n- **SMS on the user's own phone:** `phone.sms.read` through the phone tools. This needs the owner's\n  approval on their Desktop every time; tell them before you ask.\nUse a code only for the sign-in the user asked for, then stop. Don't store it.\n\n### 6. Share a live view\n\n`phone_live_url` returns a link to watch the phone screen. Give the link to the user as-is; it is\ntied to their account. Mention it when starting a long `phone_task` so they can watch.\n\n## Errors\n\n| Code | What to do |\n|---|---|\n| `phone_desktop_offline` | Ask the user to open Allternit Desktop, signed in |\n| `phone_gateway_unavailable` | Desktop is up but its phone gateway is off; ask the user to restart it from Desktop |\n| `phone_offline` | That phone isn't connected; pick another serial or ask the user to reconnect |\n| `phone_required` | Several phones connected; pass a serial instead of `-` |\n| `phone_timeout` | No answer in time; a text or call may still be waiting for approval |\n| `no_desktop` | The owner never paired a Desktop; they need to install and sign in |\n| `403 permission_error` | The key lacks a scope; ask the user to add it to the key |\n| `accessibility_off` | The phone's accessibility service is off; the user turns it on in Phone Link |\n\nDocs: https:\u002F\u002Fdocs.allternit.com\u002Fapi\u002Fplatform\u002Fsdks\u002Fclaude-code-codex and\nhttps:\u002F\u002Fdocs.allternit.com\u002Fapi\u002Fplatform\u002Fphones\n",{"name":5,"description":7},"main","7db7c6f88fb96b6792195dacabdb088419b7a9fa","plugins\u002Fallternit-phones\u002Fcodex\u002Fallternit-phones",0,"https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform","https:\u002F\u002Fgithub.com\u002FAllternit","https:\u002F\u002Fallternit.com","Allternit builds AI agents that work on your computer, in the cloud, and from your phone. Home of Allternit Desktop and Gizzi Code.","2026-11-12 03:40:39",{"source":8,"skillName":5,"commands":69,"prompt":79,"zipAvailable":80},[70,73,76],{"tool":71,"command":72},"npx","npx skills add Allternit\u002Fallternit-platform --skill allternit-phones",{"tool":74,"command":75},"bunx","bunx skills add Allternit\u002Fallternit-platform --skill allternit-phones",{"tool":77,"command":78},"pnpm","pnpm dlx skills add Allternit\u002Fallternit-platform --skill allternit-phones","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Fplugins\u002Fallternit-phones\u002Fcodex\u002Fallternit-phones\u002FSKILL.md",true,[82,88,94,98,102,106,110,114,118,122,126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218,222],{"path":83,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":86,"sourceHtmlUrl":87},"_meta.json","REFERENCE","参考文档",482,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002F_meta.json",{"path":89,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":92,"sourceHtmlUrl":93},"bin\u002Facp.ts","SCRIPT","脚本",15689,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fbin\u002Facp.ts",{"path":95,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":96,"sourceHtmlUrl":97},"package-lock.json",31414,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fpackage-lock.json",{"path":99,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":100,"sourceHtmlUrl":101},"package.json",887,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fpackage.json",{"path":103,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":104,"sourceHtmlUrl":105},"README.md",7126,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002FREADME.md",{"path":107,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":108,"sourceHtmlUrl":109},"references\u002Facp-job.md",9542,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Freferences\u002Facp-job.md",{"path":111,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":112,"sourceHtmlUrl":113},"references\u002Fagent-token.md",3675,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Freferences\u002Fagent-token.md",{"path":115,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":116,"sourceHtmlUrl":117},"references\u002Fagent-wallet.md",3473,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Freferences\u002Fagent-wallet.md",{"path":119,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":120,"sourceHtmlUrl":121},"references\u002Fseller.md",17612,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Freferences\u002Fseller.md",{"path":123,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":124,"sourceHtmlUrl":125},"SOURCE.md",310,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002FSOURCE.md",{"path":127,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":128,"sourceHtmlUrl":129},"src\u002Fcommands\u002Fagent.ts",7778,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Fcommands\u002Fagent.ts",{"path":131,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":132,"sourceHtmlUrl":133},"src\u002Fcommands\u002Fbrowse.ts",1935,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Fcommands\u002Fbrowse.ts",{"path":135,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":136,"sourceHtmlUrl":137},"src\u002Fcommands\u002Fjob.ts",5862,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Fcommands\u002Fjob.ts",{"path":139,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":140,"sourceHtmlUrl":141},"src\u002Fcommands\u002Fprofile.ts",2266,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Fcommands\u002Fprofile.ts",{"path":143,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":144,"sourceHtmlUrl":145},"src\u002Fcommands\u002Fsell.ts",22773,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Fcommands\u002Fsell.ts",{"path":147,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":148,"sourceHtmlUrl":149},"src\u002Fcommands\u002Fserve.ts",5588,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Fcommands\u002Fserve.ts",{"path":151,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":152,"sourceHtmlUrl":153},"src\u002Fcommands\u002Fsetup.ts",10460,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Fcommands\u002Fsetup.ts",{"path":155,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":156,"sourceHtmlUrl":157},"src\u002Fcommands\u002Ftoken.ts",2628,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Fcommands\u002Ftoken.ts",{"path":159,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":160,"sourceHtmlUrl":161},"src\u002Fcommands\u002Fwallet.ts",2852,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Fcommands\u002Fwallet.ts",{"path":163,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":164,"sourceHtmlUrl":165},"src\u002Flib\u002Fapi.ts",2624,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Flib\u002Fapi.ts",{"path":167,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":168,"sourceHtmlUrl":169},"src\u002Flib\u002Fauth.ts",7404,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Flib\u002Fauth.ts",{"path":171,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":172,"sourceHtmlUrl":173},"src\u002Flib\u002Fclient.ts",733,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Flib\u002Fclient.ts",{"path":175,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":176,"sourceHtmlUrl":177},"src\u002Flib\u002Fconfig.ts",5630,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Flib\u002Fconfig.ts",{"path":179,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":180,"sourceHtmlUrl":181},"src\u002Flib\u002Fopen.ts",697,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Flib\u002Fopen.ts",{"path":183,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":184,"sourceHtmlUrl":185},"src\u002Flib\u002Foutput.ts",2921,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Flib\u002Foutput.ts",{"path":187,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":188,"sourceHtmlUrl":189},"src\u002Flib\u002Fwallet.ts",715,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Flib\u002Fwallet.ts",{"path":191,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":192,"sourceHtmlUrl":193},"src\u002Fseller\u002Fruntime\u002FacpSocket.ts",2355,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Fseller\u002Fruntime\u002FacpSocket.ts",{"path":195,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":196,"sourceHtmlUrl":197},"src\u002Fseller\u002Fruntime\u002Fofferings.ts",2224,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Fseller\u002Fruntime\u002Fofferings.ts",{"path":199,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":200,"sourceHtmlUrl":201},"src\u002Fseller\u002Fruntime\u002FofferingTypes.ts",1908,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Fseller\u002Fruntime\u002FofferingTypes.ts",{"path":203,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":204,"sourceHtmlUrl":205},"src\u002Fseller\u002Fruntime\u002Fseller.ts",7162,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Fseller\u002Fruntime\u002Fseller.ts",{"path":207,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":208,"sourceHtmlUrl":209},"src\u002Fseller\u002Fruntime\u002FsellerApi.ts",1813,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Fseller\u002Fruntime\u002FsellerApi.ts",{"path":211,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":212,"sourceHtmlUrl":213},"src\u002Fseller\u002Fruntime\u002Ftypes.ts",1604,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Fsrc\u002Fseller\u002Fruntime\u002Ftypes.ts",{"path":215,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":216,"sourceHtmlUrl":217},"test-cli.sh",7257,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Ftest-cli.sh",{"path":219,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":220,"sourceHtmlUrl":221},"TRUST.auto.yaml",2171,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002FTRUST.auto.yaml",{"path":223,"resourceType":84,"resourceTypeDesc":85,"sizeBytes":224,"sourceHtmlUrl":225},"tsconfig.json",510,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fai-crypto\u002Fvirtuals-protocol\u002Ftsconfig.json",[227,250,269,291,313,341],{"skillNo":228,"name":229,"nameZh":6,"description":230,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":231,"categories":232,"keywords":233,"publishedAt":54},"01M6C6GBWRCJNWQP5S16PKXB77","jev","Ask typed System One judgments (noul \u002F choice \u002F score) against Allternit's LOCAL System One server instead of prompting a chat model to \"return JSON\". Use when classifying, routing, scoring, or screening something and code needs a probability it can branch on, or when the user runs \u002Fjev. Official TypeSafe Jev is an optional, explicit remote lane.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fsystem-one-local\u002Fskills\u002Fjev\u002FSKILL.md",[],[229,234,235,49,46,236,237,238,239,240,241,242,243,40,244,245,246,247,248,249,25],"official","routing","lane","system","json","model","choice","branch","ask","user","scoring","chat","local","probability","remote","can",{"skillNo":251,"name":252,"nameZh":6,"description":253,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":254,"categories":255,"keywords":256,"publishedAt":54},"01M6C6G9CGB9MX47NSQ31QNNB7","jev-route","Route with local System One answers — map Choice + confidence to act \u002F confirm \u002F human lanes, or pick a model tier by Choice label. Also documents the separate `route-model` helper for OpenRouter's typesafe\u002Fjev-router (a chat-model router, NOT System One). Use for confidence routing, model-tier routing, or when the user runs \u002Fjev-route.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fsystem-one-local\u002Fskills\u002Fjev-route\u002FSKILL.md",[],[229,257,258,259,235,237,239,260,240,261,243,40,262,263,245,264,246,265,266,267,268,25],"jev route","route","documents","pick","openrouter","router","model router","map","helper","with","for","model-tier",{"skillNo":270,"name":271,"nameZh":6,"description":272,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":273,"categories":274,"keywords":275,"publishedAt":54},"01M6C6G6JZE0RC50QWWE6HG320","jev-guardrail","Screen text or agent tool calls with a battery of local System One Noul hazards plus a Score, with policy in code — and the Claude Code PreToolUse guard (hooks\u002Fpretooluse-guard) that puts deterministic hard rules first and lets Jev only raise friction. Use for injection\u002Fsecret\u002Fdestructive-action screening or when the user runs \u002Fjev-guardrail.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fsystem-one-local\u002Fskills\u002Fjev-guardrail\u002FSKILL.md",[],[229,276,277,278,49,279,280,281,237,282,43,283,243,40,284,285,286,287,246,288,289,267,290,25],"jev guardrail","guardrail","policy","injection","first","guard","tool","Rules","friction","only","hooks","deterministic","battery","calls","agent tool",{"skillNo":292,"name":293,"nameZh":6,"description":294,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":295,"categories":296,"keywords":300,"publishedAt":54},"01M6C6G426P7Q5J3F98HVYDCB2","jev-fanout","Ask every independent System One question over the same state in ONE POST \u002Fv1\u002Fsystemone to the local server (speculative fan-out). Use for parallel judgments, compound commands, one-call turn assessment, or when the user runs \u002Fjev-fanout. Do not fire one HTTP call per question.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fsystem-one-local\u002Fskills\u002Fjev-fanout\u002FSKILL.md",[297],{"categoryNo":298,"categoryName":299,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口",[229,301,302,303,304,305,46,237,306,242,307,243,40,308,309,246,310,311,267,312,25],"fanout","jev fanout","http","assessment","state","parallel","question","do","call","post","v1","local server",{"skillNo":314,"name":315,"nameZh":6,"description":316,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":317,"categories":318,"keywords":319,"publishedAt":54},"01M6C6G13D7JK869Q3DHMQ9542","memory-drive","Read and write the user's Allternit Memory Drive, a git repo of markdown memories in the open Agent Memory Repo format. Use at the start of a session to load what the user's agents remember (MEMORY.md), when the user says \"remember this\", when you learn a durable fact about the user or their work, and before answering questions that depend on past sessions.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fmemory-drive-plugin\u002Fskills\u002Fmemory-drive\u002FSKILL.md",[],[320,321,322,323,324,325,326,327,328,44,329,330,331,332,42,333,243,334,40,335,336,337,338,339,340,25],"memory","drive","memory drive","sessions","remember","learn","git","agent memory","start","markdown","format","work","repo","write","session","what the","memories","about","questions","you","load",{"skillNo":342,"name":343,"nameZh":6,"description":344,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":345,"categories":346,"keywords":348,"publishedAt":54},"01M6C6FX778N1047QAJ39Y582H","agent-orchestrator","Orchestrate external CLI agents (kimi, codex, agy, claude, grok, gizzi) through the Allternit Factory (gizzi agents \u002F orchestration \u002F workspace \u002F workflows). Use when the user asks to delegate, offload, or farm out implementation work to another CLI agent \u002F terminal session, or to run work outside this session to save tokens. Part of Allternit Agents \u002F Bot Agents — not a separate product.","https:\u002F\u002Fgithub.com\u002FAllternit\u002Fallternit-platform\u002Fblob\u002Fmain\u002Ftools\u002Fagent-orchestrator\u002FSKILL.md",[347],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},[349,350,351,352,353,354,355,356,50,357,358,359,360,331,361,362,334,40,363,364,365,366,367,368,369,370,25],"orchestrator","agent orchestrator","bot","cli","terminal","codex","orchestration","workflows","product","orchestrate","save","workspace","delegate","factory","grok","kimi","implementation","offload","tokens","cli agents","farm","terminal session"]