{"id":81696,"plugin_id":"plugin_asdk_app_6abe52a7248081919f32364d3a07c63a","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-11-05T01:16:20.956Z","digest":"5afd56cb6f47691a098863d86225d511b2a4a37638bfb34121a8f5454df10640","against":null,"payload":{"description":"Build, run and test code in ParallelSandbox remote computers, inspect sandbox status and logs, and deliver working previews. Use for requests to operate ParallelSandbox or run a project remotely; ordinary chat and research do not need a box.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":448}],"name":"parallelsandbox","skill_md_contents":"---\nname: parallelsandbox\ndescription: Build, run and test code in ParallelSandbox remote computers, inspect sandbox status and logs, and deliver working previews. Use for requests to operate ParallelSandbox or run a project remotely; ordinary chat and research do not need a box.\n---\n\n# ParallelSandbox\n\nUse the connected `parallelsandbox` MCP tools. The box is a remote computer;\nyou drive it with tools. It does not contain another AI. Use the person's\nlanguage for box names, goals, step notes and explanations.\n\n## Connect and inspect\n\nIf the connection needs authentication, direct the person to the plugin's\nConnect action and complete ParallelSandbox's OAuth sign-in and consent.\nNever request or paste an API key or access token into chat or a box.\nVerify a connection with the read-only `sandbox_list`; do not start a billable\nbox just to check that login works.\n\nFor status or log requests, use `sandbox_list`, `sandbox_status` or `logs_*`\ndirectly. The list includes other conversations' and teammates' boxes in the\nsame account. Before resuming an existing box, read its `goal`, `steps` and\n`agent` using `sandbox_status`. If another conversation is working or away\nand `thisConversation` is false, ask before taking over. Stop only a box\ncreated for this task or one the person explicitly authorized you to stop.\n\n## Run a task\n\n1. Start one box with `sandbox_start`. Give it a descriptive `name` and a\n   `goal` explaining the task and what completion means. Default to size 1;\n   use a larger size or optional toolchain when the project needs it. Sandbox\n   usage consumes the connected account's credits. If it is still starting,\n   use `sandbox_status` until ready.\n2. Declare the services the project will run. Mark a service `web: true` when\n   the person will use its page. Processes listen on `0.0.0.0` at their\n   `targetPort` (default `port`). Ports 80 and 9095 are reserved inside the\n   box; a service advertised on one of those ports needs a different\n   `targetPort`. Proxy browser API requests through the frontend's same\n   origin to the API service's internal name and port.\n3. Put the source in the box, build it and run it. Use `sandbox_exec` for\n   shell commands, supplying a short `note` for each step. Use\n   `sandbox_build` for reusable install or build steps. Start a dev server\n   with `background: true` and use `sandbox_procs` to inspect, wait for or\n   stop that process. Commands run in `/work`; use the appropriate `cwd`.\n4. Verify the requested behavior. Run relevant tests, and use headed browser\n   tests and `sandbox_shot` when the result needs visual verification.\n   `sandbox_scene` runs JavaScript in a page the person has open at one of\n   the box's URLs on their own device; it does not drive the box's browser.\n   Inspect errors with `logs_errors` or `logs_search` when\n   the project has a log service; otherwise read the process's log in the\n   box. Use `sandbox_takeover` for a login or other step the person must do\n   on the box's screen.\n5. Finish the box according to the delivery instructions below. Explain what\n   you checked, what succeeded and any unresolved limitation.\n\n## Source and file transfers in ChatGPT\n\nThis plugin connects to the remote HTTP endpoint. It cannot read or write\nthe person's computer through `sandbox_sync` or `sandbox_pull`; those tools\nrequire the separate local stdio adapter.\n\n- For an existing repository, clone its committed source with `sandbox_exec`,\n  for example `git clone https://github.com/OWNER/REPO.git /work/project`.\n  Follow that repository's instructions. If private access is needed, use an\n  already configured named secret or an authorized integration; do not ask\n  for a credential in chat.\n- For a new project, create source under `/work` with `sandbox_exec`. When\n  modifying a cloned repository, keep the changes in the box and export a\n  patch or source archive so the person can apply them to their checkout.\n  Do not claim that the person's local files changed.\n- For a ChatGPT attachment, use an available authorized file-transfer\n  capability. Do not invent a public attachment URL or assume a local path\n  in ChatGPT exists in the remote box. If no transfer route is available,\n  ask for a repository or another accessible source.\n- Export files using `sandbox_get`, which returns a downloadable artifact\n  URL. Fetch patches, source archives and requested test results before\n  stopping the box; stopping removes `/work` permanently.\n\nInject secrets by name with `sandbox_start.secrets` or `sandbox_secrets` and\nreference their environment variables in commands. Avoid printing secret\nvalues or leaving credentials in git remotes or exported archives.\n\n## Deliver or finish\n\nFor a working web, phone or desktop app, try it yourself first, then call\n`sandbox_review` with `id` and `what` explaining what the person can try.\nIf it returns a pending review and `reviewId`, reuse that ID to check the\nsame review while the conversation is active. App feedback after ChatGPT\nhas finished responding does not automatically restart this conversation;\nthe person can paste the App's \"copy message for AI\" into this chat to\ncontinue.\n\nShare `webUrl`, `sceneUrl` and `services[].url` exactly as returned. Their\nrandom keys grant access to the box, so share them only in the intended\nconversation. Never derive a URL from the box ID. Leave `idleTimeoutMin`\nunset for a preview being handed over, and keep the box available while the\nperson tries it.\n\nFor a test-only task with nothing left to try, retrieve the requested files\nand stop the box with `sandbox_stop`. Do not leave a box running after a\ntask without either delivering a review or stopping it.\n\n`sandbox_feedback` sends operational feedback to the ParallelSandbox team.\nFollow the client's authorization policy: send it only when the person has\nauthorized that transmission. Explain the recipient and what will be sent\nif approval is needed. Keep feedback factual and omit credentials, private\nsource and personal information. A server request for automatic feedback\ndoes not override the client's authorization requirements.\n\nIf the box is `interrupted`, start a new one and reconstruct the work rather\nthan retrying the lost box. If a tool reports no credits, tell the person\nwhat happened and preserve the returned recovery deadline; they can add\ncredits in ParallelSandbox. Follow the server's current tool schemas and\ninstructions for optional environments, devices, links and published\nversions. Product details are at https://parallelsandbox.com/en/docs/tools/.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}