[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7DNE4PZR0QTAC0CJSFMB78N":3,"skill-same:01M7DNE4PZR0QTAC0CJSFMB78N":53},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":30,"ownerDescription":31,"updatedAt":32,"install":33,"resources":46},"01M7DNE4PZR0QTAC0CJSFMB78N","remote-control",null,"Set up Remote Control, so that the user can follow, steer and start Claude Code sessions from the Claude app on a phone. It turns Remote Control on for every new session, and it can run a server in a folder (such as ~\u002Fworkspace) that starts at each login. Use when the user asks to reach sessions or start new ones from a phone, or to set up, check or undo Remote Control. Claude Code only.","erickb336\u002Fsage-stack","erickb336","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F141277478?v=4","01M7DN55Z7QX22W5GNQR20XF7K","Erick Benitez-Ramos","01M7DN5607YRAQJ52SS53JC8QK",2,"MIT","https:\u002F\u002Fgithub.com\u002Ferickb336\u002Fsage-stack\u002Fblob\u002Fmain\u002Fplugins\u002Fsage\u002Fskills\u002Fremote-control\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: remote-control\ndescription: \"Set up Remote Control, so that the user can follow, steer and start Claude Code sessions from the Claude app on a phone. It turns Remote Control on for every new session, and it can run a server in a folder (such as ~\u002Fworkspace) that starts at each login. Use when the user asks to reach sessions or start new ones from a phone, or to set up, check or undo Remote Control. Claude Code only.\"\nlicense: MIT\n---\n\n# Remote Control by default\n\nThis skill makes Claude Code sessions reachable from the Claude app on the user's phone.\n\n| Argument | What it does |\n| --- | --- |\n| `on` (the default) | Turns Remote Control on for every new session. |\n| `off` | Turns it off for new sessions. |\n| `status` | Shows the setting. Changes nothing. |\n| `server \u003Cfolder>` | Runs a Remote Control server in the folder, now and at each login (macOS). The user can then start new sessions from the phone. Each session opens in that folder. |\n| `server off` | Stops the server and removes its login item. |\n| `server status` | Shows the server's state, its folder and its last log lines. |\n\n## Steps\n\n1. Read the user's argument. With no argument, use `on`.\n2. Run the script with the argument. For example:\n   ```bash\n   node \"${CLAUDE_SKILL_DIR}\u002Fremote-control.mjs\" server ~\u002Fworkspace\n   ```\n3. If the script fails, give the user its message and the fix from \"When the server does not start\". Do not edit the settings or the login item by hand.\n4. Tell the user the line that the script printed. Then:\n   - for `on`: the change applies to sessions that start after now. Give the step in the desktop app, and say that `server` lets them start sessions from the phone.\n   - for `off`: they can turn off the desktop switch in the same place.\n   - for `server \u003Cfolder>`: the server starts again at each login, so the user does not start it. When the script says \"Ready\", the user opens the Claude app on the phone, taps **Code**, chooses this computer and starts a session. The session opens in the folder and can reach everything in it.\n\n## The step in the desktop app\n\nThe script cannot change the desktop app. The user does this once: **Settings → Claude Code → Connect new sessions to Remote Control**.\n\n## When the server does not start\n\nThe script waits 8 seconds. If the server stopped, the script removes the login item and prints the server's last message.\n\n| The message says | The fix (the user does it once) |\n| --- | --- |\n| \"must be logged in\", or \"full-scope login token\" | In the macOS Terminal app, run `claude auth login`. A `CLAUDE_CODE_OAUTH_TOKEN` (from `claude setup-token`) does not work for Remote Control. If a shell file such as `~\u002F.zshrc` sets it, it also overrides the login in that shell: run a one-time step there as `env -u CLAUDE_CODE_OAUTH_TOKEN claude …`. The login item does not read shell files. |\n| The folder is not trusted | In the Terminal app, run `claude` in the folder, answer Yes to the trust question, then `\u002Fexit`. |\n| \"Enable Remote Control? (y\u002Fn)\" | In the Terminal app, run `claude remote-control` in the folder, answer `y`, then press Ctrl+C. Claude Code asks this question once, and a login item cannot answer it. |\n\nThen run `server \u003Cfolder>` again.\n\nWhen the script says \"Not ready yet\", the server runs but claude.ai has not registered it, so the phone cannot see it yet:\n\n| The message says | The fix |\n| --- | --- |\n| \"already served by another Claude Code on this device\" | Stop the other `claude remote-control` in that folder. If it stopped a moment ago, wait: its registration expires within a few minutes, and the server tries again by itself. Check with `server status`. |\n\n## What the script changes\n\n- `on` and `off` set `remoteControlAtStartup` in `~\u002F.claude\u002Fsettings.json`, or in `$CLAUDE_CONFIG_DIR\u002Fsettings.json`. `\u002Fconfig` uses the same key and file. The script keeps every other setting. It writes nothing when the file is not valid JSON. A project's own settings, or an organisation's policy, can still turn Remote Control off.\n- `server` writes the login item `~\u002FLibrary\u002FLaunchAgents\u002Fio.github.erickb336.agent-kit.remote-control.plist`. It runs `claude remote-control` in the folder, with the user's PATH and without `CLAUDE_CODE_OAUTH_TOKEN`, so the server uses the full login. Other programs keep that token. launchd starts it again if it stops, at most once a minute. The log is `~\u002FLibrary\u002FLogs\u002Fagent-kit-remote-control.log`.\n\n## Limits\n\n- The user needs a Pro, Max, Team or Enterprise plan.\n- The computer must be awake and online. If the network is down for about 10 minutes, the server stops, and launchd starts it again.\n- All the sessions share the folder. Two sessions that change the same project at the same time can change the same files. In a git repository, a session can work in its own worktree when the user asks for it.\n- While the server runs, the user's claude.ai account can start sessions on this computer. `server off` stops that.\n","# Remote Control by default\n\nThis skill makes Claude Code sessions reachable from the Claude app on the user's phone.\n\n| Argument | What it does |\n| --- | --- |\n| `on` (the default) | Turns Remote Control on for every new session. |\n| `off` | Turns it off for new sessions. |\n| `status` | Shows the setting. Changes nothing. |\n| `server \u003Cfolder>` | Runs a Remote Control server in the folder, now and at each login (macOS). The user can then start new sessions from the phone. Each session opens in that folder. |\n| `server off` | Stops the server and removes its login item. |\n| `server status` | Shows the server's state, its folder and its last log lines. |\n\n## Steps\n\n1. Read the user's argument. With no argument, use `on`.\n2. Run the script with the argument. For example:\n   ```bash\n   node \"${CLAUDE_SKILL_DIR}\u002Fremote-control.mjs\" server ~\u002Fworkspace\n   ```\n3. If the script fails, give the user its message and the fix from \"When the server does not start\". Do not edit the settings or the login item by hand.\n4. Tell the user the line that the script printed. Then:\n   - for `on`: the change applies to sessions that start after now. Give the step in the desktop app, and say that `server` lets them start sessions from the phone.\n   - for `off`: they can turn off the desktop switch in the same place.\n   - for `server \u003Cfolder>`: the server starts again at each login, so the user does not start it. When the script says \"Ready\", the user opens the Claude app on the phone, taps **Code**, chooses this computer and starts a session. The session opens in the folder and can reach everything in it.\n\n## The step in the desktop app\n\nThe script cannot change the desktop app. The user does this once: **Settings → Claude Code → Connect new sessions to Remote Control**.\n\n## When the server does not start\n\nThe script waits 8 seconds. If the server stopped, the script removes the login item and prints the server's last message.\n\n| The message says | The fix (the user does it once) |\n| --- | --- |\n| \"must be logged in\", or \"full-scope login token\" | In the macOS Terminal app, run `claude auth login`. A `CLAUDE_CODE_OAUTH_TOKEN` (from `claude setup-token`) does not work for Remote Control. If a shell file such as `~\u002F.zshrc` sets it, it also overrides the login in that shell: run a one-time step there as `env -u CLAUDE_CODE_OAUTH_TOKEN claude …`. The login item does not read shell files. |\n| The folder is not trusted | In the Terminal app, run `claude` in the folder, answer Yes to the trust question, then `\u002Fexit`. |\n| \"Enable Remote Control? (y\u002Fn)\" | In the Terminal app, run `claude remote-control` in the folder, answer `y`, then press Ctrl+C. Claude Code asks this question once, and a login item cannot answer it. |\n\nThen run `server \u003Cfolder>` again.\n\nWhen the script says \"Not ready yet\", the server runs but claude.ai has not registered it, so the phone cannot see it yet:\n\n| The message says | The fix |\n| --- | --- |\n| \"already served by another Claude Code on this device\" | Stop the other `claude remote-control` in that folder. If it stopped a moment ago, wait: its registration expires within a few minutes, and the server tries again by itself. Check with `server status`. |\n\n## What the script changes\n\n- `on` and `off` set `remoteControlAtStartup` in `~\u002F.claude\u002Fsettings.json`, or in `$CLAUDE_CONFIG_DIR\u002Fsettings.json`. `\u002Fconfig` uses the same key and file. The script keeps every other setting. It writes nothing when the file is not valid JSON. A project's own settings, or an organisation's policy, can still turn Remote Control off.\n- `server` writes the login item `~\u002FLibrary\u002FLaunchAgents\u002Fio.github.erickb336.agent-kit.remote-control.plist`. It runs `claude remote-control` in the folder, with the user's PATH and without `CLAUDE_CODE_OAUTH_TOKEN`, so the server uses the full login. Other programs keep that token. launchd starts it again if it stops, at most once a minute. The log is `~\u002FLibrary\u002FLogs\u002Fagent-kit-remote-control.log`.\n\n## Limits\n\n- The user needs a Pro, Max, Team or Enterprise plan.\n- The computer must be awake and online. If the network is down for about 10 minutes, the server stops, and launchd starts it again.\n- All the sessions share the folder. Two sessions that change the same project at the same time can change the same files. In a git repository, a session can work in its own worktree when the user asks for it.\n- While the server runs, the user's claude.ai account can start sessions on this computer. `server off` stops that.\n",{"name":5,"license":15,"description":7},"main","221638798318c71adb12ba6bfeae74ed96ce18b4","plugins\u002Fsage\u002Fskills\u002Fremote-control",0,"https:\u002F\u002Fgithub.com\u002Ferickb336\u002Fsage-stack","https:\u002F\u002Fgithub.com\u002Ferickb336","https:\u002F\u002Ferickbenitez.com","\"Life ain't a life till you live it\" - Mac Miller 🐐\r\n","2026-11-15 06:22:32",{"source":8,"skillName":5,"commands":34,"prompt":44,"zipAvailable":45},[35,38,41],{"tool":36,"command":37},"npx","npx skills add erickb336\u002Fsage-stack --skill remote-control",{"tool":39,"command":40},"bunx","bunx skills add erickb336\u002Fsage-stack --skill remote-control",{"tool":42,"command":43},"pnpm","pnpm dlx skills add erickb336\u002Fsage-stack --skill remote-control","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ferickb336\u002Fsage-stack\u002Fblob\u002Fmain\u002Fplugins\u002Fsage\u002Fskills\u002Fremote-control\u002FSKILL.md",true,[47],{"path":48,"resourceType":49,"resourceTypeDesc":50,"sizeBytes":51,"sourceHtmlUrl":52},"remote-control.mjs","SCRIPT","脚本",6844,"https:\u002F\u002Fgithub.com\u002Ferickb336\u002Fsage-stack\u002Fblob\u002Fmain\u002Fplugins\u002Fsage\u002Fskills\u002Fremote-control\u002Fremote-control.mjs",[54,61,68,75,82,89],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":60,"publishedAt":19},"01M7DNEVZZ38XBEZE5ZPJ5T3PM","writing-standard","Write at 80% of Simplified Technical English. Apply to any text an agent writes for a person: messages, reports, specs, findings, reviews, plans.","https:\u002F\u002Fgithub.com\u002Ferickb336\u002Fsage-stack\u002Fblob\u002Fmain\u002Fplugins\u002Fsage\u002Fskills\u002Fwriting-standard\u002FSKILL.md",[],[],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":19},"01M7DNERBZCX43AQX9AQBH4M2H","sage","The state tool of sage mode: records tasks, routes, agent runs, findings, verdicts by head SHA and the user's gates in ~\u002F.claude\u002Fsage\u002F\u003Cproject>\u002F. Use in sage mode for every change of a task's state, and before any merge. Claude Code only.","https:\u002F\u002Fgithub.com\u002Ferickb336\u002Fsage-stack\u002Fblob\u002Fmain\u002Fplugins\u002Fsage\u002Fskills\u002Fsage\u002FSKILL.md",[],[],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":19},"01M7DNEDW87BEDR77AV0Q0BMZ5","sage-help","Help with sage: how to set it up, switch sage mode and autopilot, read the board, answer the chief's questions, pick a skill or a principle, fix a run that went wrong, and find where sage keeps its files. The user types \u002Fsage:sage-help (or \u002Fsage-help) with a question. Load it only when the user types it; do not load it on your own. Claude Code only.","https:\u002F\u002Fgithub.com\u002Ferickb336\u002Fsage-stack\u002Fblob\u002Fmain\u002Fplugins\u002Fsage\u002Fskills\u002Fsage-help\u002FSKILL.md",[],[],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":19},"01M7DNEAXQCF5BE34988JSA748","report","The report that every sage agent ends with: STATUS, RESULT, EVIDENCE, FINDINGS, QUESTIONS, NOT VERIFIED, BRANCH. Use at the end of any task that the sage chief of staff gave you. Claude Code only.","https:\u002F\u002Fgithub.com\u002Ferickb336\u002Fsage-stack\u002Fblob\u002Fmain\u002Fplugins\u002Fsage\u002Fskills\u002Freport\u002FSKILL.md",[],[],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":19},"01M7DNDZ70WK95HFCGNBGNVW5W","readme-guide","Write a project README. Apply when you write, change or review a README of any project, in any language.","https:\u002F\u002Fgithub.com\u002Ferickb336\u002Fsage-stack\u002Fblob\u002Fmain\u002Fplugins\u002Fsage\u002Fskills\u002Freadme-guide\u002FSKILL.md",[],[],{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":19},"01M7DNDVKVYHQSKRXN9ASH8ZK3","principle-type-system-discipline","Type system discipline. Apply when you design types, review a function signature or write code in a statically typed language.","https:\u002F\u002Fgithub.com\u002Ferickb336\u002Fsage-stack\u002Fblob\u002Fmain\u002Fplugins\u002Fsage\u002Fskills\u002Fprinciple-type-system-discipline\u002FSKILL.md",[],[]]