Using AgentDock
Skills
Find skills on skills.sh, inspect, install and run them headless.
Skills are Claude Code (and Codex) skill folders: a SKILL.md plus supporting files. AgentDock lets you find skills in the public skills.sh catalog, inspect them before anything lands on a machine, install them into a project or a runtime profile, and run them headless with a recorded result.
Everything goes through a project's runner. The control plane never downloads or executes skill code itself.
Find a skill
Open Skills in the navigation, pick a Project (its runner does the searching) and type in Search. Results show the name, the owner/repo it comes from and its install count.
The runner calls https://skills.sh/api/search?q=<query> and caches each query for 10 minutes. That host is fixed in the runner's code: neither the server nor the browser can make it fetch another URL.
Inspect before you install
Opening a result runs inspect on the runner:
- It shallow-clones
https://github.com/<owner>/<repo>.git. No other host is accepted. - It resolves the exact commit.
- It finds the
SKILL.mdfiles the way theskillsCLI does (theskills/folder and agent folders, up to three levels deep). - It hashes every file with SHA-256 and computes a content hash over all of them.
The sheet shows the skill's description, its allowed-tools, every file with its size and hash, and the content hash. Read the files that matter, especially scripts and allowed-tools, before you install.
| Limit | Value |
|---|---|
| Files per skill | 500 |
| Total size | 5 MiB |
| Preview lifetime | 15 minutes |
Symlinks inside a skill are never followed or copied.
Install
Choose a Target and Runtime in Install to… and click Install. The runner clones the same commit again and checks that the content hash still matches the preview. If the repository changed in between (new content, or a rewritten history), the install stops with changed_since_preview and nothing is written.
Installing is a plain copy. AgentDock never runs npx skills and never creates symlinks, so no third-party package code executes on the machine. Each installed folder gets a provenance file, .agentdock-skill.json, with the source, skill id, commit, content hash and install time.
Into a project (operator)
A project install never writes to the main checkout. It opens a pull request:
- a temporary worktree
.wt-<repo>-skill-<shortid>next to the project; - branch
skills/<name>with one commit, no attribution trailer, hooks disabled; - the skill copied to
.claude/skills/<name>/(Claude) or.agents/skills/<name>/(Codex); gh pr createinto the project's base branch, with the source, commit, content hash and file list in the body.
The worktree is removed after the push. The skill becomes part of the project once you merge the pull request.
Into a runtime profile (admin)
A profile install writes directly to <CLAUDE_CONFIG_DIR>/skills/<name>/ on the runner machine, because nothing there is versioned. It affects every project that uses that profile on that machine, so only an admin can install or uninstall at profile scope. See Runtime profiles.
Installed skills
Project → Skills lists what the runner finds, grouped by scope:
- project:
.claude/skills/*and.agents/skills/*onorigin/<base>(read from git, not the working tree); - profile: each profile's own skills folder;
- plugin: skills of plugins installed in a Claude profile, such as
code-sentinel@<version>.
The list refreshes when a project is connected, after each install, and on demand.
Run a skill
Click Run on a skill. The dialog asks for:
| Field | Notes |
|---|---|
| Arguments | Passed after the skill name. The skill's argument-hint is the placeholder |
| Runtime profile | Defaults to the project's default profile |
| Model | opus, sonnet, haiku or fable |
| Output | report or pr |
| Permission mode | Defaults to the project's orchestrator setting. A non-default mode shows a warning, and bypassPermissions needs an admin |
| Timeout (minutes) | Default 60, maximum 360 (6 hours) |
The runner then:
- creates a worktree
.wt-<repo>-run-<shortid>fromorigin/<base>on branchrun/<shortid>-<skill>; - starts tmux session
agentdock-run-<shortid>runningagentdock-runner exec-run <runDir>; - that launches the profile's binary headless with
-p "/<skill> <args>",--model,--permission-modeand--output-format stream-json.
Because the run lives in tmux, restarting the runner does not kill it. The run page shows its phase and a live log of assistant text, one-line tool calls and the result. An admin can Attach to the run's terminal, and an operator can Cancel it.
Output modes
report: when the session exits, the runner collects the final result text, the changed files and a diff against the base, then removes the worktree and branch.pr: if the run succeeded and changed something, the runner commits (chore(skill): <skill> run <shortid>, no trailer), pushes and opens a pull request into the base with the report as its body. The worktree is kept until that pull request is merged or closed, then cleaned up (checked every 10 minutes). A run with no changes endssucceededwith "no changes". A cancelled, timed-out or failedprrun never pushes.
Limits
At most skills.maxConcurrentRuns runs (default 2) execute at once per runner; the rest wait in queued, first in first out. A run that hits its timeout is killed and ends timed_out. A stop budget that is used up refuses new runs with budget_exceeded. See Usage, cost and budgets.
What is stored
Only the result fields reach the database:
| Field | Cap |
|---|---|
| Report text | 32 KiB |
| Changed files | 200 entries (plus the total count) |
| Patch | 128 KiB. The full patch stays on the runner in the run directory |
| Pull request | number and URL |
The live log stream is relayed, not stored. Tokens and API-equivalent cost are recorded per run from the session's telemetry and transcript, and the run appears in History with kind skill.
Skills you cannot run
cs-orchestrator and cs-worker are refused with not_runnable. The orchestrator has its own controls on the Fleet page, and a worker only makes sense with a brief from the orchestrator. Every other installed skill, including other Code Sentinel skills such as cs-security or cs-debug, can run here, on a schedule or from an inbound trigger.
Fleet workers are held to their owns and never globs by Code Sentinel's fence. Skill runs are not: they run in their own worktree with the permission mode you chose. Review what a skill does before you run it with acceptEdits or bypassPermissions.
Who can do what
| Action | Minimum role |
|---|---|
| See installed skills and runs | viewer of the project |
| Search, inspect, install to the project, run, cancel | operator of the project |
| Install or uninstall at profile scope, attach to a run | admin |
Installs, uninstalls, run starts, cancels and finishes are audited.