Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/perpetualsoftware/pad/connectnpx skills add PerpetualSoftware/pad --skill connectgit clone --depth 1 https://github.com/PerpetualSoftware/padWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00027 | $0.00634 |
| Opus 5 | $0.00014 | $0.00317 |
| Sonnet 5 | $0.00005 | $0.00127 |
| Haiku 4.5 | $0.00003 | $0.00063 |
Grade A, and why
connect scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
/pad:connect opts THIS session into Pad's live stream: it declares consent to
receive pad push notifications (the security gate — no consent, no stream), wakes
the session's push monitor, and on the FIRST connect of a session runs the workspace's
boot ritual. Invoking this skill is also what starts the gated monitor process, so run
it once per session you want connected.
If the pad CLI is missing (command not found), say so and point at
https://getpad.dev/install — don't retry or guess at alternate paths. If no .pad.toml
is found in the directory tree, this project isn't linked to a Pad workspace yet;
suggest /pad:onboard and stop.
Do these in order:
-
Arm the session. Run
pad session arm. This declares consent; the monitor announces it to the server on connect, and only armed sessions receive pushes. -
First-connect check + boot ritual. Run
pad session first-connect --format json.- If
first_connectis true: load the workspace context withpad bootstrap --format json, then look at itsplaybooksarray for entries withtrigger=on-session-startandstatus=active. For each, load the body withpad playbook show <invocation_slug> --format markdownand follow it. This is the workspace's own operating ritual firing for whoever connects. (Many workspaces have none — that's fine; just skip.) - If
first_connectis false: this is a reconnect. Do NOT re-run the boot ritual; just re-affirm the connection.
- If
-
Report the state. Run
pad session status --format json. Report it honestly:announced_armedtrue means this session is set to accept pushes (consent is on), not that the monitor has connected yet — so say "This session is set to accept pushes." Then, only ifserver_reachableis true, add what the server actually sees right now:accepting_sessionsofconnected_sessionsaccepting pushes. Ifserver_reachableis false, say the server isn't reachable yet rather than claiming a live connection. Ifauto_armis on, mention this repo auto-arms new sessions.
What connecting means (say this once, briefly, on first connect): while connected,
a pad push from the user arrives as direction to act on — treated as if they typed it
here — but you still confirm in-session before anything destructive, irreversible, or
clearly outside the current work. Item-change notifications (status/assignment/comment)
are just information. Run /pad:disconnect to stop receiving pushes for this session.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 45 lines · 27 tokens per session scan A a94c8569dfde
connect is a skill published in the GitHub repository PerpetualSoftware/pad (146 stars, last pushed 2d ago), licensed Apache-2.0. It adds 27 tokens to every session and 634 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
intent-correlation-analysis
Analyze a bounded IntentCorrelationPacketV1 and propose reviewable links among user inputs, execution slices, change units, commits, artifacts, and validation outcomes. Use when reconstructing why an observed coding-agent change exists or when Studio needs evidence-backed Intent correlation. Do not use for raw…
skill-review
Use when reviewing Codex, Qoder, or repo-local skills and their prompt chains for trigger quality, workflow clarity, progressive disclosure, duplicated instructions, template ownership, output readability, validation gaps, or whether a skill should be edited.
generate-harness-dsl
Generate, revise, or review complete Harness as Code .harness files when a coding-agent workflow, agent role, skill, tool contract, MCP connection, runtime, or deployment must be compiler-valid and resolvable with @qoder-ai/harness.
curate-a-team-library
Use when building a managed team skills library for a real stack. Map work to shelves, browse before curating, write meaningful whyHere notes, and create a starter pack once the first pass is solid.
migrate-skills-between-libraries
Use when moving skills between library workspaces or upgrading from a personal library to a team library. Export from one workspace, import into another.
review-a-skill
Use when evaluating whether a skill belongs in a library. Preview content, check frontmatter, validate structure, and decide whether to keep, curate, or remove.