Files
sic/SKILL.md
T
marfrit 35a8a07152 sic — quoting-proof remote command execution
Client (sic) frames argv as netstrings and pipes it over ssh to a daemon
(sicd) that execvp's it, so no shell re-parses the arguments. exec mode by
default; opt-in sh mode for pipes/redirects/globs. Go client + daemon, Python
reference daemon, design doc, quoting-hell demo, and foreground/background
agent skills.

Renamed from the climcp prototype.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EWpfhDgYNA21tETDP9ueBE
2026-07-19 12:10:51 +02:00

48 lines
1.5 KiB
Markdown

---
name: sic
description: Run a command on a remote host without shell quoting bugs. Lighter than a per-host MCP server.
---
# sic — remote command execution
`sic <host> <command> [arg ...]` runs the command on `<host>`. Arguments go to
`sicd` on the host as netstrings and are passed to `execvp` directly, so no
shell re-parses them. `ssh host touch 'a b'` makes two files; `sic host touch
'a b'` makes one file named `a b`.
## Usage
```
sic <host> <command> [arg ...] # exec mode (default)
sic --sh <host> '<shell string>' # sh -c on the host
sic <host> -- <command> [arg ...] # explicit separator if host/command starts with --
```
Pass each argument as a separate argument to `sic`. Do not construct netstrings;
`sic` frames them.
```
sic quotesu echo hello world
sic quotesu touch 'my file.txt'
sic quotesu echo '$HOME' # literal, no expansion
sic quotesu python3 -c 'import sys; print(sys.argv)' a 'b c'
sic --sh quotesu 'grep foo *.log | wc -l'
```
## exec vs --sh
- Default (exec): a program with arguments. Quoting cannot break, but there are
no pipes, redirects, or globs.
- `--sh`: use only when you need a pipe, redirect, or glob. The single string is
parsed by `sh -c` on the host.
## Deploy sicd to a new host
```
scp gateway/sicd <host>:/tmp/sicd # Python reference; or bin/sicd (Go)
sic --sh <host> 'sudo install -m755 /tmp/sicd /usr/local/bin/sicd'
sic <host> id # verify
```
For long-running commands, use the background skill (`SKILL-bg.md`).