[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6MKQ2A2H245PHFCZFWD1FZP":3,"skill-same:01M6MKQ2A2H245PHFCZFWD1FZP":63},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":39,"commitSha":40,"skillDirectory":41,"forksCount":42,"repositoryHtmlUrl":43,"repositoryHomepageUrl":44,"ownerHtmlUrl":45,"ownerBlogUrl":46,"ownerDescription":47,"updatedAt":48,"install":49,"resources":62},"01M6MKQ2A2H245PHFCZFWD1FZP","plori",null,"Runs tasks on Plori cloud agents that continue after the chat ends, such as background or parallel builds, scheduled automations, long jobs and research saved as files. Not for quick tasks.","hashgraph-online\u002Fawesome-codex-plugins","hashgraph-online","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F160371962?v=4","01M6CNB6NRJVNNGN14TR01Q6D3","HOL (Hashgraph Online)","01M6JT1HSKKG9V68KQAQGBA7XP",1559,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fplori-ai\u002Fcodex-plugin\u002Fskills\u002Fplori\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"research","tasks","cloud","continue","parallel","files","jobs","chat","as","long","quick","saved","scheduled","for","background","2026-11-10 10:12:30",false,"---\nname: plori\ndescription: Runs tasks on Plori cloud agents that continue after the chat ends, such as background or parallel builds, scheduled automations, long jobs and research saved as files. Not for quick tasks.\n---\n\n# Using plori from an agent\n\nIf you were asked to set up plori, follow Connect below: add the plori MCP server to this\nclient, have the account owner sign in, and confirm the tools respond before you report\nsuccess.\n\nPlori runs AI agents in cloud Workspaces. Several agents can work on one project at once, and\nPlori merges their changes back into the Workspace. A Workspace holds a project's files under\n`\u002Fworkspace`, saved versions of those files, a main conversation and the run history.\n\n## Connect\n\nIf this client already lists Plori tools and `list_workspaces` answers, skip this section.\n\nMCP: Streamable HTTP at `https:\u002F\u002Fapi.plori.ai\u002Fmcp`.\n\n- OAuth 2.1: an unauthenticated request returns 401 with the discovery chain (RFC 9728\n  metadata at https:\u002F\u002Fapi.plori.ai\u002F.well-known\u002Foauth-protected-resource, dynamic client\n  registration, authorization code + PKCE). The account owner signs in with an email code.\n- API key: the account owner creates one at https:\u002F\u002Fplori.ai. Send\n  `Authorization: Bearer plori_sk_...`.\n\n### Claude Code: connect from this conversation\n\nRead these instructions in the current conversation before starting authentication.\nInstalling a skill or plugin is optional. Use this flow only in interactive Claude Code\nwhen its Plori MCP client exposes both `authenticate` and `complete_authentication`.\nOther clients use their ordinary OAuth or API-key setup above.\n\nIf this Claude Code build does not expose both `authenticate` and\n`complete_authentication`, use `\u002Fmcp` instead. Pick plori, choose Authenticate, then\nsign in with the emailed code. If the browser cannot reach the localhost callback,\nClaude Code prompts for it directly in its own dialog, never in chat. Then verify with\n`list_workspaces`.\n\n1. Check the current MCP configuration and active tools. Reuse an existing Plori server\n   at `https:\u002F\u002Fapi.plori.ai\u002Fmcp`; do not add duplicate entries or replace a different\n   server with the same name. If missing, configure it once with\n   `claude mcp add --transport http plori https:\u002F\u002Fapi.plori.ai\u002Fmcp`.\n   Confirm the server is available in this conversation before authenticating. Saving\n   configuration alone does not prove that it loaded. If its tools are missing, ask\n   the user to type `\u002Freload-plugins` in this Claude Code conversation, then resume\n   these steps in the same session. This also refreshes MCP configuration when no\n   plugins are installed. It is a user command; do not try to invoke it through the\n   Skill tool. Confirm the authentication tools are available before proceeding. If they\n   are still missing, use `\u002Fmcp` instead (above).\n2. If Plori tools already work, the connection is complete. Otherwise, call the\n   client's Plori `authenticate` tool using its exposed schema. Keep the returned\n   authorization URL intact. Do not construct a new OAuth request or change its state,\n   redirect URI, or PKCE challenge.\n3. POST JSON `{\"authorization_url\":\"\u003Cthe exact client URL>\"}` once to\n   `https:\u002F\u002Fapi.plori.ai\u002Foauth\u002Fpair`. The response contains `user_code`,\n   `verification_uri`, `verification_uri_complete`, `device_code`,\n   `expires_in` (seconds), and `interval` (seconds). Keep `device_code` private.\n   If a permission rule, hook, or tool denies this request, stop and use the fallback below.\n4. Tell the user: \"Open \u003Cverification_uri> and enter \u003Cuser_code>. Sign in and approve\n   the connection; I will continue when you finish.\" The user can open the page on\n   their phone. Display the short address and code, not the authorization or callback\n   URL. Do not ask the user to copy a callback URL into chat.\n5. Poll `https:\u002F\u002Fapi.plori.ai\u002Foauth\u002Fpair\u002Fpoll` with JSON\n   `{\"device_code\":\"\u003Cdevice_code>\"}`. Keep only one request in flight, allow each\n   request at least 30 seconds to finish, and wait at least `interval` seconds\n   between requests. The server can hold a pending request for 25 seconds.\n   Read pending and failure responses from the JSON `error` field, not `status`.\n   On `error: \"authorization_pending\"`, continue. On `error: \"slow_down\"`, use the\n   larger of your previous delay plus five seconds and the response's `interval`\n   for all subsequent requests. Honor `Retry-After` when present on HTTP 429.\n   On HTTP 503 with `error: \"temporarily_unavailable\"`, preserve this pairing and\n   the pending client authentication. Wait at least the larger of your poll interval\n   and `Retry-After` (five seconds), then retry the same device code. A temporary\n   failure does not extend `expires_in`; retry only within the original four-minute\n   window while the client authentication remains pending.\n   If a permission rule, hook, or tool denies a poll request, stop and use the fallback below.\n6. On `status: \"approved\"`, pass the returned `callback_url` directly to the same client's\n   `complete_authentication` tool using its exposed schema. Do not navigate to the\n   loopback URL or exchange the code yourself: the client owns the PKCE verifier.\n   Then discover Plori tools and call `list_workspaces` to confirm the connection before\n   reporting success. This verification does not create a Workspace or start paid work.\n\n#### Fallback when a pairing request is denied\n\nUse this fallback after the first permission, hook, or tool denial of either pairing\nPOST. Do not make another request to `\u002Foauth\u002Fpair` or `\u002Foauth\u002Fpair\u002Fpoll`, and do not\ntry curl, wget, WebFetch, Python, a shell script, or another generic network\ntool.\n\n1. Show the user the exact authorization URL returned by the current `authenticate`\n   call. Ask them to open it in their browser, sign in, and approve the connection.\n   Do not edit the URL.\n2. After approval, the authorization server redirects the browser to a localhost\n   callback. If that\n   redirect connects, let the client finish authentication. If the browser cannot\n   connect to localhost, ask the user to copy the final localhost callback URL from\n   the browser address bar and paste it into this conversation. It contains one-time\n   authorization data, so tell the user not to paste it anywhere else. Do not ask for\n   that URL before the redirect has failed.\n3. Pass a pasted callback URL only to the same client's `complete_authentication`\n   tool. Do not open, fetch, rewrite, log, or exchange it yourself.\n4. Discover Plori tools and call `list_workspaces` before reporting success. This check\n   does not create a Workspace or start paid work.\n\nIf the authorization URL or pending client authentication expires during this\nfallback, discard it and call `authenticate` again. Use only the new authorization\nURL. Never reuse an expired URL.\n\nStop on `access_denied`; do not retry a denied request automatically. On\n`expired_token`, an already-consumed pairing, or a client authentication timeout,\nstart a fresh client authentication before creating another pairing. Never reuse the\nold authorization URL. Pairing lasts four minutes to fit within the client's pending\nlogin. If the approved response is lost, restart the whole flow; the callback is\nreturned only once. Keep approval polling active while the user signs in.\n\nRemote Control can use this flow only when it controls that same interactive Claude\nCode process and the two authentication tools are available. A separate hosted\nClaude.ai connector or Agent SDK session needs its own supported authentication flow.\nURLs can still appear in client tool results; do not promise to hide tool transcripts.\n\n#### Switch accounts or sign out\n\nTo connect a different Plori account or sign out, use `\u002Fmcp`. Pick plori, choose Clear\nauthentication, then Authenticate again with the new account's email code.\n`claude mcp remove` does not clear the stored token.\n\n### CLI and REST\n\nCLI: `curl -fsSL https:\u002F\u002Fplori.ai\u002Finstall.sh | sh` (Windows: `irm https:\u002F\u002Fplori.ai\u002Finstall.ps1 | iex`),\n`npm i -g @plori\u002Fcli`, or `npx -y @plori\u002Fcli`. The shell installer writes to\n`~\u002F.local\u002Fbin` and edits no rc file, so run `export PATH=\"$HOME\u002F.local\u002Fbin:$PATH\"` first.\n`plori login` signs in through the browser; headless callers use\n`plori login --key plori_sk_...` or set `PLORI_API_KEY`. Piped output and `--json` give\nJSON.\n\nREST: `https:\u002F\u002Fapi.plori.ai\u002Fv1` with the same bearer token. Detail: https:\u002F\u002Fplori.ai\u002Fauth.md\n\n## Tools\n\nThe MCP server has 24 tools. Invitees use their own login, API keys and OAuth\nsessions. Workspace calls resolve access to the owning account from the resource.\n\n### Workspaces\n\n- `list_workspaces` lists your own and shared Workspaces with `account`\n  (`user_id`, `email`) and your `role` (`owner`, `member` or `viewer`).\n  Pass `workspace_id` for one. `storage_readiness` is present while its storage starts.\n- `create_workspace` (`name`, `idempotency_key`) returns `id` and `default_agent_id`,\n  the Workspace's agent. Without `default_manager_agent_id` it creates that agent, which\n  counts against the agent limit. Optional `account` selects a shared account by user id.\n  Omit it for your own account. Members can create there. Viewers cannot. The result\n  includes `account` and `role`. Names are not unique: reuse a Workspace.\n- `delete_workspace` permanently deletes its files, saved versions, copies and\n  conversations.\n- `get_credits` returns the balance. Check it before long work.\n\n### Send a task\n\n`send_workspace_message` (`workspace_id`, `message`) runs a task in the Workspace's main\nconversation, or in the one named by `session_id`. Use it for most work, including work\nthat can be split: the Workspace's own agent splits it between several agents, merges their\nchanges and fixes conflicts.\n\n- For a new or continued run, the call holds until the run ends, pauses for input,\n  or the hold ends. The server picks a hold that fits your client. Use that default.\n- If the result is `running`, call `get_run_result` (`workspace_id`, `run_id`) after\n  `poll_after_seconds`. Repeat until the run completes or is `awaiting_input`.\n- `get_run_result`, `cancel_run`, `list_runs`, `list_pending_inputs` and\n  `schedule_run` take the `workspace_id`.\n- Reuse `session_id` to keep context. An idle conversation starts a run. While running,\n  plain text returns `status: \"steering\"` or `\"queued\"` with `steer_id`.\n- If the paused run has exactly one ordinary question assigned to you, your message\n  answers it. Otherwise it queues, and `pending_inputs` names the request and assignee.\n  A message never cancels a pending request. If the result has `status: \"answered\"`\n  and `continuation_pending: true`, read the paused run until it reports\n  `continuation_run_id`. Do not submit the answer again.\n- A queued or steering receipt returns immediately, regardless of `wait`. It includes\n  `run_id`, `session_id`, `agent_id`, `workspace_id`, `url` and `poll_after_seconds`.\n  Its `run_id` is the running or paused run, not a result for this message. Use\n  `list_runs` to find a later queued turn. No lookup connects `steer_id` to that run.\n- 409 `conversation_busy` still applies to attachments or run options in a busy\n  conversation, and to working-copy conflicts. Send attachments and options when idle.\n- A retry with the same `idempotency_key` returns the original run or message receipt for 24 hours.\n  `max_turn_tokens` sets an optional token ceiling for the turn. `cancel_run` stops a run.\n\n### Files\n\n- Only files under `\u002Fworkspace` persist between runs. Software installed elsewhere and\n  processes a run starts do not. Use `TMPDIR` for temporary files.\n- A completed run does not prove its files are saved: wait for `file_source.state`\n  `ready` with no `save_failure`.\n- A completed run's `files` are signed URLs that need no other credential.\n  They expire about 10 minutes after the result. Call `get_run_result` again for fresh links.\n  `read_workspace_file` reads a saved version: `current_revision`, an agent's\n  `saved_revision_id`, or a changeset's `base_revision`, `incoming_revision` or\n  `result_revision`. A path such as `\u002Fworkspace\u002Fa.md` is not a URL.\n- `upload_workspace_file` writes a file into the Workspace's current files. Pass text up\n  to 262144 bytes as `content`. For a larger or binary file (up to 32 MiB), omit\n  `content` and run the returned `curl` command in a shell within 10 minutes. Its URL\n  accepts one upload.\n\n### Approvals and questions\n\n- A run started through MCP or a schedule pauses before each action outside the Workspace\n  (connected-account and MCP writes, outbound HTTP writes, git push, publishing, deploys,\n  email, public tunnels, irreversible browser actions, workflow activation) until the\n  account owner approves that one action in the Plori web app.\n- `awaiting_input` is an approval or a question. Show it to the human, with the approval's\n  `approve_url`.\n- You cannot approve or grant `always_allow`. `answer_pending_input` can only deny a\n  request or answer a question. Never send secrets through it.\n- Then follow the `continuation_run_id` from `get_run_result`. `answer_pending_input`\n  returns the continuation's `run_id`, or `continuation_pending: true` while files save;\n  then poll the paused run until `continuation_run_id` is set.\n- `list_pending_inputs` is the current queue; an old run can keep `awaiting_input`. A\n  `consent_tool` row is an outward write: only the human approves it or grants standing\n  consent, in the web app.\n- Requests go to the worker's creator, or to the owner for the manager. The owner can\n  also answer a worker's request. Other members can read it and may answer after the\n  account's timeout, 30 minutes by default. Viewers never answer. Standing grants and\n  secret answers stay owner-only. `list_pending_inputs` includes `assigned_to`,\n  `open_to_members_at` and `can_act` for the caller. Credential restrictions still apply.\n- A member's monthly spend cap can refuse a new run with 402. Schedules, previews,\n  workflows, Workspace settings and deletion are owner-only in M1.\n- Clients with the MCP Tasks extension get a task handle instead. A returned call does not\n  report later changes: poll, or keep a subscription.\n\n### Scheduled runs\n\n`schedule_run` (`workspace_id`, `prompt`, `delay_seconds` or an RFC3339 `fire_at`) returns\n`status: \"awaiting_confirmation\"` and a `confirm_url`. Show the human the prompt, the time\nand the `confirm_url`. The run is queued only after the owner confirms in the web app.\n\n### Run several agents yourself\n\nOnly for a client that manages the agents itself. Each agent works on its own copy of the\nfiles. Plori submits changed files when a run completes normally and accepts a clean comparison.\n\n1. `create_workspace_worker` (`workspace_id`, `task`, `idempotency_key`) returns\n   `agent_id` and `task_group_id` at once; the agent queues while capacity is busy. Pass\n   `task_group_id` to later calls to group their costs and stop request;\n   `get_workspace_costs` reports cost. Worker agents do not count against the agent limit.\n2. Poll `get_workspace_worker` or `list_workspace_workers` until `save_state` is `ready`.\n   `get_run_result` (`run_id`, `workspace_id`) reads the reply and approval requests.\n   `steer_workspace_worker` messages a running turn (409 `run_not_running` if it has not\n   started, is paused or has ended). `cancel_run` stops one agent,\n   `stop_workspace_task_group` a group.\n3. Check `get_workspace_worker` (`change_status`, `changeset_id`), then `get_workspace_changeset`.\n   Use `submit_workspace_changeset` only for saved, unsubmitted work after an error, cancellation\n   or stop, or after `recompare_required`.\n4. Poll `get_workspace_changeset`: `accepted` with `result_revision` confirms the files landed.\n   `needs_resolution`: ask the Workspace's agent to combine files with `send_workspace_message`,\n   or reject and start another worker.\n5. For `review_ready`, `accept_workspace_changeset` completes the merge (`expected_current_revision` = the\n   `comparison_current_revision`; `validation_evidence` = 1-32 short statements of the\n   checks you made). `reject_workspace_changeset` discards it. After accept, poll until\n   `state` is `accepted` and `result_revision` is set.\n\nAccept errors:\n\n- 409 `current_revision_conflict`: another merge landed first. Submit again, then repeat\n  steps 4 and 5.\n- 409 `workspace_changeset_unresolved`: not computed yet, or it has conflicts. A merge with\n  conflicts cannot be completed through MCP. To have conflicts fixed, send the task to the\n  Workspace with `send_workspace_message`; its agent fixes conflicts.\n- 409 `workspace_changeset_busy`: a run or file operation is active. Accept after it ends.\n\nThese agents pause before outward actions like other runs. Workflows, usage and disk\nreports, trash and connected accounts are not on MCP; use the web app, REST or the CLI.\n\n### Workspace CLI commands\n\nThe CLI also covers what MCP does not. Use exact IDs; there is no implicit active Workspace.\nGroups: `workspace`, `independent-agent`, `copy`, `revision`, `workspace-files`,\n`worker`, `task-group`, `changeset`, `operation`; `plori GROUP --help` lists actions and\nflags. Commands that create something take `--idempotency-key KEY`. To complete a merge:\n`plori changeset accept WORKSPACE_ID CHANGESET_ID --current-revision REVISION_ID\n--evidence TEXT --idempotency-key KEY` with the `comparison_current_revision`. Writes to a\ncopy need the `--if-match` ETag you read. Use `--yes` (`agent-retire`,\n`workspace delete`) only when the human authorized the action. Examples:\nhttps:\u002F\u002Fplori.ai\u002Fdocs\u002Fcli\n\n## Long runs\n\nUse the default wait. If the result is `running`, call `get_run_result` after\n`poll_after_seconds`, until the run completes or is `awaiting_input`.\n\nTroubleshooting, optional: if your client drops the results of long calls, pass\n`wait_seconds` with a shorter hold, or `wait=false`. In Codex, `tool_timeout_sec` on the\nplori entry in `config.toml` sets how long a call can last. `plori watch` in a background\nshell prints run endings and input requests.\n\n## CLI commands\n\nAgents are addressed by name or ID. Every command accepts `--json`.\n\n- `plori run \u003Cname> \"message\"` waits for the reply; `--no-wait` returns a run ID.\n  `plori result \u003Cname> \u003Crun-id> --wait` (bounded by `--wait-seconds`) reads the result.\n- `plori watch` prints run endings and input requests as JSON lines. `plori inbox` lists\n  what ended and what waits on you.\n- `plori inputs \u003Cname>`; `plori answer \u003Crun-id> \u003Ctool-call-id> --approve|--deny|--value \u003Cv>`.\n  Add `--always-allow` only on the human's explicit instruction.\n- `plori schedules create \u003Cworkspace> \"prompt\" --in \u003Cseconds>` (or `--at \u003Crfc3339>`).\n- `plori attach` is for a human at the keyboard; an agent uses `--read-only` to tail.\n\nExit codes of `run`, `result --wait` and `watch`: 0 succeeded, 1 API or runtime failure,\n2 usage error, 3 credentials missing, rejected or expired, 4 control plane unreachable, 10\nawaiting human input, 20 run error, 30 cancelled, 40 wait ran out with the run still going.\n\n## Costs and limits\n\nRuns spend credits. The plan sets included credits, disk, agent count, workflow limits and\nthe length of one run. Registered accounts have no limit on concurrent agent runs.\nAnonymous trials allow at most 2 concurrent agent runs across their agents.\nA third run makes `send_workspace_message` return 429 with advice to register free.\nRegistered accounts have no token ceiling per turn unless `max_turn_tokens` sets one.\n`max_turn_seconds` sets a turn's time budget.\n\n## More\n\n- Integration entry point: https:\u002F\u002Fplori.ai\u002Fagents.md\n- MCP connect guide: https:\u002F\u002Fplori.ai\u002Fmcp\n- CLI on npm: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@plori\u002Fcli\n- Authentication detail: https:\u002F\u002Fplori.ai\u002Fauth.md\n- Site map for agents: https:\u002F\u002Fplori.ai\u002Fllms.txt\n","# Using plori from an agent\n\nIf you were asked to set up plori, follow Connect below: add the plori MCP server to this\nclient, have the account owner sign in, and confirm the tools respond before you report\nsuccess.\n\nPlori runs AI agents in cloud Workspaces. Several agents can work on one project at once, and\nPlori merges their changes back into the Workspace. A Workspace holds a project's files under\n`\u002Fworkspace`, saved versions of those files, a main conversation and the run history.\n\n## Connect\n\nIf this client already lists Plori tools and `list_workspaces` answers, skip this section.\n\nMCP: Streamable HTTP at `https:\u002F\u002Fapi.plori.ai\u002Fmcp`.\n\n- OAuth 2.1: an unauthenticated request returns 401 with the discovery chain (RFC 9728\n  metadata at https:\u002F\u002Fapi.plori.ai\u002F.well-known\u002Foauth-protected-resource, dynamic client\n  registration, authorization code + PKCE). The account owner signs in with an email code.\n- API key: the account owner creates one at https:\u002F\u002Fplori.ai. Send\n  `Authorization: Bearer plori_sk_...`.\n\n### Claude Code: connect from this conversation\n\nRead these instructions in the current conversation before starting authentication.\nInstalling a skill or plugin is optional. Use this flow only in interactive Claude Code\nwhen its Plori MCP client exposes both `authenticate` and `complete_authentication`.\nOther clients use their ordinary OAuth or API-key setup above.\n\nIf this Claude Code build does not expose both `authenticate` and\n`complete_authentication`, use `\u002Fmcp` instead. Pick plori, choose Authenticate, then\nsign in with the emailed code. If the browser cannot reach the localhost callback,\nClaude Code prompts for it directly in its own dialog, never in chat. Then verify with\n`list_workspaces`.\n\n1. Check the current MCP configuration and active tools. Reuse an existing Plori server\n   at `https:\u002F\u002Fapi.plori.ai\u002Fmcp`; do not add duplicate entries or replace a different\n   server with the same name. If missing, configure it once with\n   `claude mcp add --transport http plori https:\u002F\u002Fapi.plori.ai\u002Fmcp`.\n   Confirm the server is available in this conversation before authenticating. Saving\n   configuration alone does not prove that it loaded. If its tools are missing, ask\n   the user to type `\u002Freload-plugins` in this Claude Code conversation, then resume\n   these steps in the same session. This also refreshes MCP configuration when no\n   plugins are installed. It is a user command; do not try to invoke it through the\n   Skill tool. Confirm the authentication tools are available before proceeding. If they\n   are still missing, use `\u002Fmcp` instead (above).\n2. If Plori tools already work, the connection is complete. Otherwise, call the\n   client's Plori `authenticate` tool using its exposed schema. Keep the returned\n   authorization URL intact. Do not construct a new OAuth request or change its state,\n   redirect URI, or PKCE challenge.\n3. POST JSON `{\"authorization_url\":\"\u003Cthe exact client URL>\"}` once to\n   `https:\u002F\u002Fapi.plori.ai\u002Foauth\u002Fpair`. The response contains `user_code`,\n   `verification_uri`, `verification_uri_complete`, `device_code`,\n   `expires_in` (seconds), and `interval` (seconds). Keep `device_code` private.\n   If a permission rule, hook, or tool denies this request, stop and use the fallback below.\n4. Tell the user: \"Open \u003Cverification_uri> and enter \u003Cuser_code>. Sign in and approve\n   the connection; I will continue when you finish.\" The user can open the page on\n   their phone. Display the short address and code, not the authorization or callback\n   URL. Do not ask the user to copy a callback URL into chat.\n5. Poll `https:\u002F\u002Fapi.plori.ai\u002Foauth\u002Fpair\u002Fpoll` with JSON\n   `{\"device_code\":\"\u003Cdevice_code>\"}`. Keep only one request in flight, allow each\n   request at least 30 seconds to finish, and wait at least `interval` seconds\n   between requests. The server can hold a pending request for 25 seconds.\n   Read pending and failure responses from the JSON `error` field, not `status`.\n   On `error: \"authorization_pending\"`, continue. On `error: \"slow_down\"`, use the\n   larger of your previous delay plus five seconds and the response's `interval`\n   for all subsequent requests. Honor `Retry-After` when present on HTTP 429.\n   On HTTP 503 with `error: \"temporarily_unavailable\"`, preserve this pairing and\n   the pending client authentication. Wait at least the larger of your poll interval\n   and `Retry-After` (five seconds), then retry the same device code. A temporary\n   failure does not extend `expires_in`; retry only within the original four-minute\n   window while the client authentication remains pending.\n   If a permission rule, hook, or tool denies a poll request, stop and use the fallback below.\n6. On `status: \"approved\"`, pass the returned `callback_url` directly to the same client's\n   `complete_authentication` tool using its exposed schema. Do not navigate to the\n   loopback URL or exchange the code yourself: the client owns the PKCE verifier.\n   Then discover Plori tools and call `list_workspaces` to confirm the connection before\n   reporting success. This verification does not create a Workspace or start paid work.\n\n#### Fallback when a pairing request is denied\n\nUse this fallback after the first permission, hook, or tool denial of either pairing\nPOST. Do not make another request to `\u002Foauth\u002Fpair` or `\u002Foauth\u002Fpair\u002Fpoll`, and do not\ntry curl, wget, WebFetch, Python, a shell script, or another generic network\ntool.\n\n1. Show the user the exact authorization URL returned by the current `authenticate`\n   call. Ask them to open it in their browser, sign in, and approve the connection.\n   Do not edit the URL.\n2. After approval, the authorization server redirects the browser to a localhost\n   callback. If that\n   redirect connects, let the client finish authentication. If the browser cannot\n   connect to localhost, ask the user to copy the final localhost callback URL from\n   the browser address bar and paste it into this conversation. It contains one-time\n   authorization data, so tell the user not to paste it anywhere else. Do not ask for\n   that URL before the redirect has failed.\n3. Pass a pasted callback URL only to the same client's `complete_authentication`\n   tool. Do not open, fetch, rewrite, log, or exchange it yourself.\n4. Discover Plori tools and call `list_workspaces` before reporting success. This check\n   does not create a Workspace or start paid work.\n\nIf the authorization URL or pending client authentication expires during this\nfallback, discard it and call `authenticate` again. Use only the new authorization\nURL. Never reuse an expired URL.\n\nStop on `access_denied`; do not retry a denied request automatically. On\n`expired_token`, an already-consumed pairing, or a client authentication timeout,\nstart a fresh client authentication before creating another pairing. Never reuse the\nold authorization URL. Pairing lasts four minutes to fit within the client's pending\nlogin. If the approved response is lost, restart the whole flow; the callback is\nreturned only once. Keep approval polling active while the user signs in.\n\nRemote Control can use this flow only when it controls that same interactive Claude\nCode process and the two authentication tools are available. A separate hosted\nClaude.ai connector or Agent SDK session needs its own supported authentication flow.\nURLs can still appear in client tool results; do not promise to hide tool transcripts.\n\n#### Switch accounts or sign out\n\nTo connect a different Plori account or sign out, use `\u002Fmcp`. Pick plori, choose Clear\nauthentication, then Authenticate again with the new account's email code.\n`claude mcp remove` does not clear the stored token.\n\n### CLI and REST\n\nCLI: `curl -fsSL https:\u002F\u002Fplori.ai\u002Finstall.sh | sh` (Windows: `irm https:\u002F\u002Fplori.ai\u002Finstall.ps1 | iex`),\n`npm i -g @plori\u002Fcli`, or `npx -y @plori\u002Fcli`. The shell installer writes to\n`~\u002F.local\u002Fbin` and edits no rc file, so run `export PATH=\"$HOME\u002F.local\u002Fbin:$PATH\"` first.\n`plori login` signs in through the browser; headless callers use\n`plori login --key plori_sk_...` or set `PLORI_API_KEY`. Piped output and `--json` give\nJSON.\n\nREST: `https:\u002F\u002Fapi.plori.ai\u002Fv1` with the same bearer token. Detail: https:\u002F\u002Fplori.ai\u002Fauth.md\n\n## Tools\n\nThe MCP server has 24 tools. Invitees use their own login, API keys and OAuth\nsessions. Workspace calls resolve access to the owning account from the resource.\n\n### Workspaces\n\n- `list_workspaces` lists your own and shared Workspaces with `account`\n  (`user_id`, `email`) and your `role` (`owner`, `member` or `viewer`).\n  Pass `workspace_id` for one. `storage_readiness` is present while its storage starts.\n- `create_workspace` (`name`, `idempotency_key`) returns `id` and `default_agent_id`,\n  the Workspace's agent. Without `default_manager_agent_id` it creates that agent, which\n  counts against the agent limit. Optional `account` selects a shared account by user id.\n  Omit it for your own account. Members can create there. Viewers cannot. The result\n  includes `account` and `role`. Names are not unique: reuse a Workspace.\n- `delete_workspace` permanently deletes its files, saved versions, copies and\n  conversations.\n- `get_credits` returns the balance. Check it before long work.\n\n### Send a task\n\n`send_workspace_message` (`workspace_id`, `message`) runs a task in the Workspace's main\nconversation, or in the one named by `session_id`. Use it for most work, including work\nthat can be split: the Workspace's own agent splits it between several agents, merges their\nchanges and fixes conflicts.\n\n- For a new or continued run, the call holds until the run ends, pauses for input,\n  or the hold ends. The server picks a hold that fits your client. Use that default.\n- If the result is `running`, call `get_run_result` (`workspace_id`, `run_id`) after\n  `poll_after_seconds`. Repeat until the run completes or is `awaiting_input`.\n- `get_run_result`, `cancel_run`, `list_runs`, `list_pending_inputs` and\n  `schedule_run` take the `workspace_id`.\n- Reuse `session_id` to keep context. An idle conversation starts a run. While running,\n  plain text returns `status: \"steering\"` or `\"queued\"` with `steer_id`.\n- If the paused run has exactly one ordinary question assigned to you, your message\n  answers it. Otherwise it queues, and `pending_inputs` names the request and assignee.\n  A message never cancels a pending request. If the result has `status: \"answered\"`\n  and `continuation_pending: true`, read the paused run until it reports\n  `continuation_run_id`. Do not submit the answer again.\n- A queued or steering receipt returns immediately, regardless of `wait`. It includes\n  `run_id`, `session_id`, `agent_id`, `workspace_id`, `url` and `poll_after_seconds`.\n  Its `run_id` is the running or paused run, not a result for this message. Use\n  `list_runs` to find a later queued turn. No lookup connects `steer_id` to that run.\n- 409 `conversation_busy` still applies to attachments or run options in a busy\n  conversation, and to working-copy conflicts. Send attachments and options when idle.\n- A retry with the same `idempotency_key` returns the original run or message receipt for 24 hours.\n  `max_turn_tokens` sets an optional token ceiling for the turn. `cancel_run` stops a run.\n\n### Files\n\n- Only files under `\u002Fworkspace` persist between runs. Software installed elsewhere and\n  processes a run starts do not. Use `TMPDIR` for temporary files.\n- A completed run does not prove its files are saved: wait for `file_source.state`\n  `ready` with no `save_failure`.\n- A completed run's `files` are signed URLs that need no other credential.\n  They expire about 10 minutes after the result. Call `get_run_result` again for fresh links.\n  `read_workspace_file` reads a saved version: `current_revision`, an agent's\n  `saved_revision_id`, or a changeset's `base_revision`, `incoming_revision` or\n  `result_revision`. A path such as `\u002Fworkspace\u002Fa.md` is not a URL.\n- `upload_workspace_file` writes a file into the Workspace's current files. Pass text up\n  to 262144 bytes as `content`. For a larger or binary file (up to 32 MiB), omit\n  `content` and run the returned `curl` command in a shell within 10 minutes. Its URL\n  accepts one upload.\n\n### Approvals and questions\n\n- A run started through MCP or a schedule pauses before each action outside the Workspace\n  (connected-account and MCP writes, outbound HTTP writes, git push, publishing, deploys,\n  email, public tunnels, irreversible browser actions, workflow activation) until the\n  account owner approves that one action in the Plori web app.\n- `awaiting_input` is an approval or a question. Show it to the human, with the approval's\n  `approve_url`.\n- You cannot approve or grant `always_allow`. `answer_pending_input` can only deny a\n  request or answer a question. Never send secrets through it.\n- Then follow the `continuation_run_id` from `get_run_result`. `answer_pending_input`\n  returns the continuation's `run_id`, or `continuation_pending: true` while files save;\n  then poll the paused run until `continuation_run_id` is set.\n- `list_pending_inputs` is the current queue; an old run can keep `awaiting_input`. A\n  `consent_tool` row is an outward write: only the human approves it or grants standing\n  consent, in the web app.\n- Requests go to the worker's creator, or to the owner for the manager. The owner can\n  also answer a worker's request. Other members can read it and may answer after the\n  account's timeout, 30 minutes by default. Viewers never answer. Standing grants and\n  secret answers stay owner-only. `list_pending_inputs` includes `assigned_to`,\n  `open_to_members_at` and `can_act` for the caller. Credential restrictions still apply.\n- A member's monthly spend cap can refuse a new run with 402. Schedules, previews,\n  workflows, Workspace settings and deletion are owner-only in M1.\n- Clients with the MCP Tasks extension get a task handle instead. A returned call does not\n  report later changes: poll, or keep a subscription.\n\n### Scheduled runs\n\n`schedule_run` (`workspace_id`, `prompt`, `delay_seconds` or an RFC3339 `fire_at`) returns\n`status: \"awaiting_confirmation\"` and a `confirm_url`. Show the human the prompt, the time\nand the `confirm_url`. The run is queued only after the owner confirms in the web app.\n\n### Run several agents yourself\n\nOnly for a client that manages the agents itself. Each agent works on its own copy of the\nfiles. Plori submits changed files when a run completes normally and accepts a clean comparison.\n\n1. `create_workspace_worker` (`workspace_id`, `task`, `idempotency_key`) returns\n   `agent_id` and `task_group_id` at once; the agent queues while capacity is busy. Pass\n   `task_group_id` to later calls to group their costs and stop request;\n   `get_workspace_costs` reports cost. Worker agents do not count against the agent limit.\n2. Poll `get_workspace_worker` or `list_workspace_workers` until `save_state` is `ready`.\n   `get_run_result` (`run_id`, `workspace_id`) reads the reply and approval requests.\n   `steer_workspace_worker` messages a running turn (409 `run_not_running` if it has not\n   started, is paused or has ended). `cancel_run` stops one agent,\n   `stop_workspace_task_group` a group.\n3. Check `get_workspace_worker` (`change_status`, `changeset_id`), then `get_workspace_changeset`.\n   Use `submit_workspace_changeset` only for saved, unsubmitted work after an error, cancellation\n   or stop, or after `recompare_required`.\n4. Poll `get_workspace_changeset`: `accepted` with `result_revision` confirms the files landed.\n   `needs_resolution`: ask the Workspace's agent to combine files with `send_workspace_message`,\n   or reject and start another worker.\n5. For `review_ready`, `accept_workspace_changeset` completes the merge (`expected_current_revision` = the\n   `comparison_current_revision`; `validation_evidence` = 1-32 short statements of the\n   checks you made). `reject_workspace_changeset` discards it. After accept, poll until\n   `state` is `accepted` and `result_revision` is set.\n\nAccept errors:\n\n- 409 `current_revision_conflict`: another merge landed first. Submit again, then repeat\n  steps 4 and 5.\n- 409 `workspace_changeset_unresolved`: not computed yet, or it has conflicts. A merge with\n  conflicts cannot be completed through MCP. To have conflicts fixed, send the task to the\n  Workspace with `send_workspace_message`; its agent fixes conflicts.\n- 409 `workspace_changeset_busy`: a run or file operation is active. Accept after it ends.\n\nThese agents pause before outward actions like other runs. Workflows, usage and disk\nreports, trash and connected accounts are not on MCP; use the web app, REST or the CLI.\n\n### Workspace CLI commands\n\nThe CLI also covers what MCP does not. Use exact IDs; there is no implicit active Workspace.\nGroups: `workspace`, `independent-agent`, `copy`, `revision`, `workspace-files`,\n`worker`, `task-group`, `changeset`, `operation`; `plori GROUP --help` lists actions and\nflags. Commands that create something take `--idempotency-key KEY`. To complete a merge:\n`plori changeset accept WORKSPACE_ID CHANGESET_ID --current-revision REVISION_ID\n--evidence TEXT --idempotency-key KEY` with the `comparison_current_revision`. Writes to a\ncopy need the `--if-match` ETag you read. Use `--yes` (`agent-retire`,\n`workspace delete`) only when the human authorized the action. Examples:\nhttps:\u002F\u002Fplori.ai\u002Fdocs\u002Fcli\n\n## Long runs\n\nUse the default wait. If the result is `running`, call `get_run_result` after\n`poll_after_seconds`, until the run completes or is `awaiting_input`.\n\nTroubleshooting, optional: if your client drops the results of long calls, pass\n`wait_seconds` with a shorter hold, or `wait=false`. In Codex, `tool_timeout_sec` on the\nplori entry in `config.toml` sets how long a call can last. `plori watch` in a background\nshell prints run endings and input requests.\n\n## CLI commands\n\nAgents are addressed by name or ID. Every command accepts `--json`.\n\n- `plori run \u003Cname> \"message\"` waits for the reply; `--no-wait` returns a run ID.\n  `plori result \u003Cname> \u003Crun-id> --wait` (bounded by `--wait-seconds`) reads the result.\n- `plori watch` prints run endings and input requests as JSON lines. `plori inbox` lists\n  what ended and what waits on you.\n- `plori inputs \u003Cname>`; `plori answer \u003Crun-id> \u003Ctool-call-id> --approve|--deny|--value \u003Cv>`.\n  Add `--always-allow` only on the human's explicit instruction.\n- `plori schedules create \u003Cworkspace> \"prompt\" --in \u003Cseconds>` (or `--at \u003Crfc3339>`).\n- `plori attach` is for a human at the keyboard; an agent uses `--read-only` to tail.\n\nExit codes of `run`, `result --wait` and `watch`: 0 succeeded, 1 API or runtime failure,\n2 usage error, 3 credentials missing, rejected or expired, 4 control plane unreachable, 10\nawaiting human input, 20 run error, 30 cancelled, 40 wait ran out with the run still going.\n\n## Costs and limits\n\nRuns spend credits. The plan sets included credits, disk, agent count, workflow limits and\nthe length of one run. Registered accounts have no limit on concurrent agent runs.\nAnonymous trials allow at most 2 concurrent agent runs across their agents.\nA third run makes `send_workspace_message` return 429 with advice to register free.\nRegistered accounts have no token ceiling per turn unless `max_turn_tokens` sets one.\n`max_turn_seconds` sets a turn's time budget.\n\n## More\n\n- Integration entry point: https:\u002F\u002Fplori.ai\u002Fagents.md\n- MCP connect guide: https:\u002F\u002Fplori.ai\u002Fmcp\n- CLI on npm: https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@plori\u002Fcli\n- Authentication detail: https:\u002F\u002Fplori.ai\u002Fauth.md\n- Site map for agents: https:\u002F\u002Fplori.ai\u002Fllms.txt\n",{"name":5,"description":7},"main","2b63f856ce19c2a797929cacabd9e0fc936812fa","plugins\u002Fplori-ai\u002Fcodex-plugin\u002Fskills\u002Fplori",474,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins","https:\u002F\u002Fhol.org\u002Fplugins\u002Fbest-codex-plugins","https:\u002F\u002Fgithub.com\u002Fhashgraph-online","https:\u002F\u002Fhol.org","Open-source standards and developer tools for interoperable AI agents: discovery, identity, communication, payments, privacy and security.","2026-11-11 14:40:14",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add hashgraph-online\u002Fawesome-codex-plugins --skill plori",{"tool":55,"command":56},"bunx","bunx skills add hashgraph-online\u002Fawesome-codex-plugins --skill plori",{"tool":58,"command":59},"pnpm","pnpm dlx skills add hashgraph-online\u002Fawesome-codex-plugins --skill plori","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fplori-ai\u002Fcodex-plugin\u002Fskills\u002Fplori\u002FSKILL.md",true,[],[64,72,79,86,113,138],{"skillNo":65,"name":66,"nameZh":6,"description":67,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":68,"categories":69,"keywords":70,"publishedAt":71},"01M746ZWACVKMZ1BJXJZHYJSSX","migrate-to-e2e","Moves an existing Playwright, Cypress, Selenium, Appium, Detox, Maestro, or TesterArmy suite to e2e one slice at a time, with the old suite running beside the new one until each ported test is proven. Keeps a MIGRATION.md progress file so any later session resumes where the last stopped. Optionally plants a defect to show both suites catch it. Use for \u002Fmigrate-to-e2e, \"migrate our tests to e2e\", \"port these Maestro flows\", \"move our TesterArmy tests\", or when a project has an e2e config and an older suite still running.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fmigrate-to-e2e\u002FSKILL.md",[],[],"2026-11-11 15:11:14",{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":71},"01M746ZPTAX1Q0FBKAB1CYND7E","e2e","Writes, runs, and debugs end-to-end tests for web and mobile apps with e2e, the agentic test runner, which mixes agent.act goals with exact locator assertions on a Playwright browser or an iOS or Android device. Also drives a project's running app live over the e2e MCP server to look at a screen, check a UI change, take a screenshot or record a video, and try a locator; and runs bug bashes, parallel e2e explore runs with each bug proven by a repro test. Use when a project depends on e2e or has an e2e.config.ts, when asked for end-to-end, browser, mobile, or agentic UI tests, to check a change in the running app, to QA or bug bash an app or branch, or when an e2e run fails.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fe2e\u002FSKILL.md",[],[],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":71},"01M746ZJN784HVHMDP9MQGCSGG","create-verification-skill","Generate a project-local verify-\u003Capp> skill on top of e2e, so any coding agent can launch the app, check it is worth driving, exercise a feature the way a user does, keep evidence, and bug bash it. Writes the skill, a feature map with one explore charter per feature, and proves it once. Use for \u002Fcreate-verification-skill, \"make a verification skill for this repo\", or when a project has no scripted way to prove UI behavior.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fcreate-verification-skill\u002FSKILL.md",[],[],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":34},"01M716A6ETNB9B1SQ3GXZC75VR","deja-search","deja-vu memory — search the user's past AI coding sessions with the deja CLI. Holds what they already settled and never wrote into the repo (naming rules, banned or already-tried tools, required checks before merge, preferred values, who owns what). Use before your first edit in a task, before you call a change done or ready to merge, before you recommend a tool, library, design or reviewer, before re-debugging an error that may already be solved, when they say 'didn't we fix this before', 'what did we decide about X' or 'I already have that', and before telling them something on this machine does not exist.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-search\u002FSKILL.md",[],[93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112],"search","deja search","never","error","ready","memory","re","decide","fix","design","debugging","when","you","done","reviewer","io","change","cli","merge","past",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":34},"01M716A3J2W5SENSE9VGMXB375","deja-reflect","End-of-session reflection and memory curation with deja-vu. Review what was decided, what commands broke and what repaired them, and record durable project rules or decisions with deja remember so the next session starts with them.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-reflect\u002FSKILL.md",[],[120,121,122,108,123,124,125,126,127,128,129,130,131,132,98,133,134,135,136,137],"deja reflect","reflect","review","with","record","github","next","https","node","Rules","decisions","brew","remember","project rules","project","session","end","reflection",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":155,"publishedAt":34},"01M715T3RR4BAYSR57HPPTJ0PF","revid","Make, edit, export and post AI videos with Revid (revid.ai) through the Revid MCP server. Use whenever the user wants a short-form or long-form video made (from an idea, a script, a URL, an article, a PDF, a tweet, a product page, their own clips, or a song), wants to find what is going viral on TikTok, YouTube, Instagram or X before making something, wants to edit or re-export an existing Revid project, generate a standalone AI image or clip, make a series episode, or publish and schedule a finished video to connected social accounts. Covers setup (hosted MCP with OAuth, or an API key), the 36 tools, credits, polling and the rules for publishing. Routes to the more specific revid-* skills when one fits.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftmakersas\u002Frevid-skills\u002Fskills\u002Frevid\u002FSKILL.md",[144,149,152],{"categoryNo":145,"categoryName":146,"taxonomyType":147,"taxonomyTypeDesc":148},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",{"categoryNo":150,"categoryName":151,"taxonomyType":147,"taxonomyTypeDesc":148},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":153,"categoryName":154,"taxonomyType":147,"taxonomyTypeDesc":148},"01JBSEEDCAT000000000000010","后端与接口",[140,156,157,158,159,160,161,134,162,99,163,164,165,166,104,167,168,169,170,171],"URL","Video","short-form","standalone","PDF","viral","tiktok","short","social","MCP","song","image","mcp server","schedule","api","publish"]