← All skills
verify-paperclip
67 / 100 · Review before installing
Check before installing. Some of what it can do is expected: a coding skill usually runs build and test commands.
By paperclipai/paperclip (GitHub) · coding · 113,791 stars · scanned at commit aaec67b
Verify Paperclip from a source checkout, published npm install, or existing staging or production stack. Select the environment, data state, version, and platform; drive real UI or CLI journeys and capture evidence. Route deployment to the private Cloud skills.
Works with any agent that supports SKILL.md skills.
What this skill can do
Runs commands on your computer
This is disclosed by the author in the skill's SKILL.md or README. Expected for a coding skill.
Found in 26 places.
Show 17 more
- .agents/skills/verify-paperclip/SKILL.md, line 228
python3 .agents/skills/verify-paperclip/scripts/stop.py \ - .agents/skills/verify-paperclip/SKILL.md, line 259
python3 -m unittest discover -s .agents/skills/verify-paperclip/tests -v - .agents/skills/verify-paperclip/scripts/doctor.py, line 25
listeners = subprocess.check_output(['lsof', '-nP', f'-iTCP:{launch["port"]}', - .agents/skills/verify-paperclip/scripts/doctor.py, line 29
rows = subprocess.check_output(['lsof', '-a', '-p', str(pid), '-d', 'cwd', '-Fn'], text=True).splitlines() - .agents/skills/verify-paperclip/scripts/doctor.py, line 39
ancestor = int(subprocess.check_output(['ps', '-p', str(ancestor), '-o', 'ppid='], text=True).strip()) - .agents/skills/verify-paperclip/scripts/doctor.py, line 47
commit = subprocess.check_output(['git', '-C', str(repo), 'rev-parse', 'HEAD'], text=True).strip() - .agents/skills/verify-paperclip/scripts/launch.py, line 47
'commit': subprocess.check_output(['git', '-C', str(repo), 'rev-parse', 'HEAD'], text=True).strip()} - .agents/skills/verify-paperclip/scripts/launch.py, line 51
os.execvpe('node', ['node', str(cli), 'cli/src/index.ts', 'onboard', '--data-dir', - .agents/skills/verify-paperclip/scripts/onboarding-smoke.mjs, line 7
import { execFileSync } from 'node:child_process'; - .agents/skills/verify-paperclip/scripts/onboarding-smoke.mjs, line 15
execFileSync('python3', [path.join(repo, '.agents/skills/verify-paperclip/scripts/doctor.py'), '--evidence-dir', evidence], { stdio: 'inherit' }); - .agents/skills/verify-paperclip/scripts/stop.py, line 26
owners = subprocess.run(['lsof', '-nP', f'-iTCP:{launch["port"]}', '-sTCP:LISTEN', '-t'], capture_output=True, text=True).stdout.split() - .agents/skills/verify-paperclip/scripts/stop.py, line 29
rows = subprocess.check_output(['lsof', '-a', '-p', str(pid), '-d', 'cwd', '-Fn'], text=True).splitlines() - .agents/skills/verify-paperclip/scripts/stop.py, line 39
ancestor = int(subprocess.check_output(['ps', '-p', str(ancestor), '-o', 'ppid='], text=True).strip()) - .agents/skills/verify-paperclip/scripts/stop.py, line 49
state = subprocess.run(['ps', '-p', str(pid), '-o', 'stat='], - .agents/skills/verify-paperclip/scripts/stop.py, line 56
owners = subprocess.run(['lsof', '-nP', f'-iTCP:{launch["port"]}', '-sTCP:LISTEN', '-t'], capture_output=True, text=True).stdout.split() - .agents/skills/verify-paperclip/tests/test_ownership.py, line 21
server = subprocess.Popen( - .agents/skills/verify-paperclip/tests/test_ownership.py, line 31
cwd=foreign, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
and 6 more places
Downloads and installs other software
The author does not mention this.
Found in 22 places.
Show 17 more
- doc/DEVELOPING.md, line 1936
> The first-run experience often starts with `npx paperclipai onboard --yes` (before you have a repo checkout). If your global `~/.npmrc` sets `registry` to a p - doc/DEVELOPING.md, line 2746
npx paperclipai worktree:make paperclip-pr-432 - doc/DEVELOPING.md, line 2857
**`npx paperclipai worktree init [options]`** — Create repo-local config/env and an isolated instance for the current worktree. - doc/DEVELOPING.md, line 2888
npx paperclipai worktree init --force --seed-mode minimal \ - doc/DEVELOPING.md, line 2897
**`npx paperclipai worktree repair [options]`** — Repair the current linked worktree by default, or create/repair a named linked worktree under `.paperclip/work - doc/DEVELOPING.md, line 2925
**`npx paperclipai worktree reseed [options]`** — Re-seed an existing worktree-local instance from another Paperclip instance or worktree while preserving the t - doc/DEVELOPING.md, line 2944
npx paperclipai worktree reseed \ - doc/DEVELOPING.md, line 2952
npx paperclipai worktree reseed \ - doc/DEVELOPING.md, line 2959
**`npx paperclipai worktree:make <name> [options]`** — Create `~/NAME` as a git worktree, then initialize an isolated Paperclip instance inside it. This combine - doc/DEVELOPING.md, line 2979
npx paperclipai worktree:make paperclip-pr-432 - doc/DEVELOPING.md, line 2980
npx paperclipai worktree:make my-feature --start-point origin/main - doc/DEVELOPING.md, line 2981
npx paperclipai worktree:make experiment --no-seed - doc/DEVELOPING.md, line 2984
**`npx paperclipai worktree env [options]`** — Print shell exports for the current worktree-local Paperclip instance. - doc/DEVELOPING.md, line 2996
eval "$(npx paperclipai worktree env)" - doc/DEVELOPING.md, line 4451
npx paperclipai issue list --company-id <company-id> - doc/DEVELOPING.md, line 4452
npx paperclipai issue create --company-id <company-id> --title "Investigate checkout conflict" - doc/DEVELOPING.md, line 4453
npx paperclipai issue update <issue-id> --status in_progress --comment "Started triage"
and 2 more places
Connects to the internet
The author does not mention this.
Found in 11 places.
Show 8 more
- .agents/skills/verify-paperclip/scripts/doctor.py, line 51
with urllib.request.urlopen(launch['url'] + '/api/companies', timeout=15) as response: - .agents/skills/verify-paperclip/tests/test_ownership.py, line 10
import urllib.request - .agents/skills/verify-paperclip/tests/test_ownership.py, line 61
with urllib.request.urlopen(url, timeout=5) as response: - doc/AGENT-ARTIFACTS.md, line 235
curl -sS -X POST \ - doc/AGENT-ARTIFACTS.md, line 245
curl -sS -X POST \ - doc/DEVELOPING.md, line 1082
curl -fsS "$PAPERCLIP_API_BASE/api/heartbeat-runs/$RUN_ID" \ - doc/DEVELOPING.md, line 4197
curl http://localhost:3100/api/health - doc/DEVELOPING.md, line 4198
curl http://localhost:3100/api/companies
Changes files outside its own folder
The author does not mention this.
Found in 1 place.
Safer alternatives
Low-risk skills in the same category (coding) that look related. Check that one does what you need.
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'verify-paperclip' ] || [ -L ~/.agents/skills/'verify-paperclip' ]; then echo 'A skill folder named verify-paperclip already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/paperclipai/paperclip' "$d" && git -C "$d" checkout --quiet 'aaec67b89161e42571bd12f7c3e3b26ac92be3ce' -- '.agents/skills/verify-paperclip' && mkdir -p ~/.agents/skills && cp -R "$d"/'.agents/skills/verify-paperclip' ~/.agents/skills/'verify-paperclip' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'verify-paperclip' ~/.claude/skills/'verify-paperclip' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for paperclipai/paperclip shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/paperclipai/paperclip/)
Score history
| Date | Version | Score |
|---|
| 2026-11-14 | aaec67b | 67 |
| 2026-11-11 | bc45334 | 67 |
| 2026-11-08 | 68d5fb5 | 67 |
| 2026-11-07 | 6cfb69b | 47 |