service
Skill64 starsChanged 2 months agoMITView on GitHub
Run the agent as an always-on background service (launchd on macOS, systemd on Linux). Triggers on /agent:service, /agent:service install, /agent:service status, /agent:service uninstall, /agent:service logs, "always-on", "background service", "correr 24/7", "run as daemon", "launchd", "systemd".
11 other projects use a version of this.
Adopted by
Most recently taken up by
- artivilla/agent-skillstheir own version, first seen Nov 8, 2026
- MohammadShehadeh/agent-skillstheir own version, first seen Nov 1, 2026
- vijaysuperpositionist/skillstheir own version, first seen Nov 1, 2026
- wheslleyrimar/BuildCLI-Agentstheir own version, first seen Oct 22, 2026
- The-Utopia-Studio/skillstheir own version, first seen Oct 13, 2026
- ch4570/vulporatheir own version, first seen Oct 11, 2026
Other versions11 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 11
- spotify/portal-ai-plugins★ 2.8ksame name
- landaozhu/skills★ 27same name
- maxwellsdm1867/wheeler★ 12same name
- The-Utopia-Studio/skills★ 6same name
- gabriellst/codm★ 4same name
- wheslleyrimar/BuildCLI-Agents★ 3same name
- MohammadShehadeh/agent-skills★ 2same name
- ch4570/vulpora★ 1same name
- mkreindel/seo-toolkit-template★ 1same name
- artivilla/agent-skills★ 0same name
1 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository23 other files it gives its agents.
- AGENTS.mdAGENTS.md
- templates/AGENTS.mdAGENTS.md
- templates/CLAUDE.mdCLAUDE.md
- aboutSkill
- channelsSkill
- compactSkill
- createSkill
- cronsSkill
- doctorSkill
- heartbeatSkill
- helpSkill
- importSkill
- liveSkill
- messagingSkill
- newSkill
- scopeSkill
- settingsSkill
- skill-managerSkill
- statusSkill
- updateSkill
- usageSkill
- voiceSkill
- whoamiSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
17 rules. 0 are common, 3 are distinctive, and 14 are very specific to this project.
0
Common
Most of the 8 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
14
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 41
If the plan has error (unsupported OS), print the error and stop.
- Distinctive: line 43
If the user says no, stop with a neutral acknowledgement.
- Distinctive: line 44
If the user confirms:
- Very specific: line 46
Read the file with Read(~/.claude/settings.json).
- Very specific: line 47
If skipDangerousModePermissionPrompt is already true, skip to the next sub-step.
- Very specific: line 49
If yes: merge with jq via Bash (preserves any other keys, atomic write):
- Very specific: line 52
If no: warn explicitly *"Without it the service will hang at startup.
- Very specific: line 53
If plan.extraFiles is present, for each entry: ensure the parent dir exists (Bash(mkdir -p <dirname>)), then Write(file.path, …
- Very specific: line 54
Write the plist / unit file: Write(filePath, fileContent) — the plan tells you the path
- Very specific: line 55
Run each command from plan.commands in order with Bash, printing the label before each
- Very specific: line 56
If any command fails, stop and report the error (do NOT try to roll back — the user can run uninstall to clean up)
- Very specific: line 62
Run each command from plan.commands with Bash
- Very specific: line 68
Ask the user: *"Remove the <plan.label> service?
- Very specific: line 75
Run the single tail command and print output directly.
- Distinctive: line 84
Never install the service without the safety confirmation: If the user insists without reading the warning, say you need them to explicitly …
- Very specific: line 85
Never run launchctl or systemctl commands that aren't in the plan returned by service_plan — the tool is the source of truth.
- Very specific: line 86
Never modify the plist / unit file after creation from an imagined config.
“Common” is measured: kept by at least 6 in 10 of the 8 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Always-on service
Wrap Claude Code (with ClawCode) in the OS's service manager so the agent keeps running after the terminal closes. This is what makes the HTTP bridge, WebChat, webhooks, and crons work 24/7.
This is an OPTIONAL feature. See docs/service.md for the full reference, risks, and how to add messaging-channel flags.
⚠️ Safety — read before install
Installing the service runs Claude Code with --dangerously-skip-permissions in the background. That flag:
- Pre-approves every tool call (Bash, Write, Edit, network requests)
- Cannot be undone per-request — the running service has full permissions over the agent's workspace for its whole lifetime
- Is necessary because a daemon cannot answer interactive tool-approval prompts
This is an irrevocable trust decision for this workspace. Only run /agent:service install if you understand that.
Always prompt the user to confirm before installing. Quote the flag by name in the confirmation. If the user hesitates or asks questions, stop and explain.
Dispatch
Parse the action and call service_plan with it.
| User says | Action argument |
/agent:service install | install |
/agent:service status (or no arg) | status |
/agent:service uninstall | uninstall |
/agent:service logs | logs |
Install flow
- Find the
claudebinary:Bash(which claude). Trim output. If empty, abort with: "Can't findclaudein PATH. Install Claude Code or point me at it manually." - Inspect the existing service launcher (if any) and preserve its exact channel, session and other arguments. Call
channels_detectas supporting evidence; do not replace an existing launcher with a guessed command. If Live is configured, runlive_setup_statusand follow/agent:livefor any setup changes first. Callservice_plan({ action: "install", claudeBin: <path>, extraArgs: <existing arguments> }). The plan adds ClawCode's Live channel when opted in and the wrapper supplies the managed web environment; it does not add or authorize WhatsApp or permission flags on behalf of the operator. - If the plan has
error(unsupported OS), print the error and stop. - Show the user the warning (see Safety section). Ask explicitly: "This will install a background service that runs with --dangerously-skip-permissions. Confirm? [y/N]"
- If the user says no, stop with a neutral acknowledgement.
- If the user confirms:
- Pre-check
~/.claude/settings.json(prevents the most common install hang — seedocs/service.md"Heads-up" note):- Read the file with
Read(~/.claude/settings.json). If it doesn't exist or is empty, treat as{}. - If
skipDangerousModePermissionPromptis alreadytrue, skip to the next sub-step. - Otherwise, tell the user: "Heads-up: your
~/.claude/settings.jsonis missing\"skipDangerousModePermissionPrompt\": true. Without it, the service will show a 'Bypass Permissions — Do you accept?' dialog at startup that no daemon (launchd / systemd) can answer, and the install will appear to succeed but the service will hang silently. Add it now? [y/N]" - If yes: merge with
jqvia Bash (preserves any other keys, atomic write):Bash: jq '. + {"skipDangerousModePermissionPrompt": true}' ~/.claude/settings.json > ~/.claude/settings.json.tmp && mv ~/.claude/settings.json.tmp ~/.claude/settings.json(If the file did not exist, first runBash: echo '{}' > ~/.claude/settings.jsonsojqhas something to merge into.) Confirm with one line: "Added skipDangerousModePermissionPrompt: true to ~/.claude/settings.json." - If no: warn explicitly "Without it the service will hang at startup. Continue anyway? [y/N]". On a second
no, abort with a neutral acknowledgement and do not write any service files. Onyes, proceed and let the user deal with it.
- Read the file with
- If
plan.extraFilesis present, for each entry: ensure the parent dir exists (Bash(mkdir -p <dirname>)), thenWrite(file.path, file.content), thenBash(chmod <octal> <file.path>)usingfile.mode(default 0o644 when omitted). These are auxiliary scripts the unit file needs to exist before start — e.g. the resume-on-restart wrapper. - Write the plist / unit file:
Write(filePath, fileContent)— the plan tells you the path - Run each command from
plan.commandsin order withBash, printing the label before each - If any command fails, stop and report the error (do NOT try to roll back — the user can run
uninstallto clean up)
- Pre-check
- Final line: "Service installed. Label:
<plan.label>. Log:<plan.logPath>. Run/agent:service statusto verify."
Status flow
- Call
service_plan({ action: "status" }) - Run each command from
plan.commandswithBash - Summarize in one line: "Active" / "Not loaded" / "Unknown" based on the command output
Uninstall flow
- Call
service_plan({ action: "uninstall" }) - Ask the user: "Remove the
<plan.label>service? [y/N]" - On confirmation, run each command from
plan.commands - Report: "Service removed."
Logs flow
- Call
service_plan({ action: "logs" }) - Run the single
tailcommand and print output directly.
Response style
- On CLI and WebChat: multi-line with labels.
- On messaging channels: compress to essentials. Command output can get long — if the log dump would exceed ~20 lines, just say "check
/tmp/clawcode-<slug>.logdirectly" instead.
Never
- Never install the service without the safety confirmation. If the user insists without reading the warning, say you need them to explicitly confirm the flag.
- Never run
launchctlorsystemctlcommands that aren't in the plan returned byservice_plan— the tool is the source of truth. - Never modify the plist / unit file after creation from an imagined config. If the user wants to add channel flags, re-run
/agent:service installwith the existing and updated flags supplied asextraArgs. Preserve its other options and explicit service consent.
References
docs/service.md— full doc, risks, channel-flag customizationlib/service-generator.ts— pure generatorsdocs/INDEX.md
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

