Ships the v2026.817.0 docs to live: the doc content that was authored and verified earlier, plus a full screenshot overhaul. The content half (`cdf81e2` and the nightly commits behind it) has already been reviewed. **The screenshots are the part that needs eyes** — `f24d734`, 342 PNGs. ## Screenshots Everything was recaptured against the release commit `213dabab4f8e1f3bb1803a2924c0fea1289fcd4c` (`upstream/candidate/release-2026.817.0`). The previous shots were 375 parent-commits stale (v2026.720.0), with 228 of 310 entries flagged pending. All 342 registry entries now carry that SHA. > ⚠️ Worth knowing: the release commit is **not** an ancestor of the parent's > `master`, and local `master` was four days *older* than it. Capturing against > `master` would have both missed release UI and leaked 93 post-tag commits' worth > of UI into the release docs. ### New coverage (34 entries) Three guides shipped with **no images at all** despite being 115–136 lines. They now have them: | Guide | Shots | |---|---| | `guides/day-to-day/decisions.md` | queue, an agent-proposed decision with its options, triage strip, filter panel, named queue, Decided curtain, empty state | | `experimental/status-cards.md` | board, New card dialog, and all four drawer tabs | | `experimental/task-chat.md` | thread, composer mode picker, side pane | | `reference/api/secrets.md` | the board-side Proposals tab | Chat-Style Tasks is captured in a **separate pass**: `enableTaskChatRedesign` is instance-wide, so leaving it on would have turned every classic issue/task/work-mode shot into the redesigned chat. ## Two defects that were already live Both were shipping in the docs before this PR: 1. **`issues/detail-chat.png` and the `tasks/*` shots were mostly plugin debug output.** The Kitchen Sink example plugin mounts a panel into the issue page that dumps the raw issue JSON, and the seed installed it. Those guides were illustrating a debug panel instead of the task page. The seed no longer installs it. 2. **The seeded task thread was a monologue** — four board-user messages in a row, because the board actor cannot post agent comments. It is now a real two-sided exchange. ## Targets repointed because the UI moved | Target | Why | |---|---| | `activity/*` | `Activity.tsx` deleted; `/activity` renders `pages/audit/CompanyActivity.tsx` | | `experimental/cloud-upstream` | `CloudUpstream.tsx` deleted; the route now redirects to `/company/export` | | `settings/*`, `plugins/*`, `adapters/*` | `/instance/settings/*` are legacy redirects now | | `dashboard/stale-tasks-panel` | panel removed from `Dashboard.tsx` — target dropped | Plus eight targets with **silent selector drift**. A failed interaction step falls back to "whatever state was reached", so these had been quietly producing wrong images — a plain inbox where the doc promised a mode picker, a whole dashboard where it promised one panel. Full table in `docs/user-guides/screenshots/SCREENSHOTS_PLAN_v2026.817.0.md` §C2. ## Pipeline Decisions, status-card summaries and secret proposals are all **agent-authored**, and the board actor the seed runs as is refused by every one of them (`"Agent run context required"`, `"Secret proposals require a verified run-bound agent token"`). Rather than insert rows behind the API, `seed-new-surfaces.mjs` borrows the two doors a real run already has — a board-minted agent API key, and a locally signed agent JWT — so every write goes through the production code path. Also: - `capture.mjs` records a real `captured_against` on a detached checkout instead of the literal string `"HEAD"` (which is what every pre-2026.817 entry recorded), and gains a `scrollTo` step for content below the fold. - `run.mjs` gains `--serve` for iterating on the seed, the task-chat phase, and a keeper that holds the demo board's issue statuses steady — the demo `process` agents finish runs without declaring a disposition, so the stalled-work sweep re-blocks issues every few minutes over a capture that runs far longer. ## Reviewing Light and dark both captured at 1440×900 @2x. The new surfaces are the ones to scrutinise; the rest is a like-for-like refresh. ### One leftover Dropping `dashboard/stale-tasks-panel` leaves `{light,dark}/dashboard/stale-tasks-panel.png` tracked but unused — they need deleting by hand. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]> Co-authored-by: DevRel Gemini <[email protected]> Co-authored-by: Paperclip <[email protected]> Co-authored-by: Dotta <[email protected]> Co-authored-by: ClaudeCoder <[email protected]>
13 KiB
paperclip_version
| paperclip_version |
|---|
| v2026.609.0 |
Skills Commands
Use these commands to put capabilities in front of your agents: browse the app-shipped catalog, install skills into a company's library, attach the ones an agent should actually use, and keep installed skills in sync with their pinned origins. Skills are how you teach an agent a repeatable procedure (open a pull request, run a browser, follow a review checklist) without rewriting its prompt every time.
There are two command groups. The plural paperclipai skills group is the one you reach for in practice — it understands catalog references, resolves skills by id/key/slug, and prints readable tables. The singular paperclipai skill group is a thin, payload-driven wrapper over the same company-skill API endpoints; use it only when you need raw control over the request body in a script.
The three operations
paperclipai skills spans three distinct things. Keeping them straight is the whole mental model:
| Operation | Commands | What it changes |
|---|---|---|
| Company install | skills install, import, create, scan-projects |
Adds or updates a skill in the company's library. Available to the whole company; does not attach it to any agent. |
| Agent attach | skills agent sync, skills agent clear |
Changes an agent's desired company-skill set. sync takes a required --mode (add, remove, or replace) so you can grow, prune, or overwrite the set; clear empties it. |
| Adapter runtime sync | reported by skills agent list; triggered by sync/clear |
The server-side adapter reconciles the desired set with files on disk and returns an AgentSkillSnapshot. |
Note:
skills agent syncnow requires a--mode(add,remove, orreplace), so you choose whether the named skills join, leave, or overwrite the desired set.skills agent clearempties the set outright (it usesreplaceinternally with an empty list). Bundled Paperclip skills still live in the company library as read-only entries, but the server no longer force-attaches them to an agent.
Tip: Add
--jsonto any command to print the raw API result for scripting. Every company-scoped command takes--company-id <company-id>(and respects your selected profile/context). See common options.
Catalog: browse before you install
The Paperclip app ships a curated catalog of skills. Catalog commands let you read it without writing anything to a company — there is no company context required to browse, search, or inspect.
paperclipai skills browse --kind bundled --category github
paperclipai skills search "pull request" --kind bundled
paperclipai skills inspect github-pr-workflow
| Command | Use |
|---|---|
browse |
List catalog skills, optionally filtered by --kind, --category, or --query. |
search <query> |
Same as browse but takes the search text as a positional argument. |
inspect <catalogRef> |
Show one catalog skill in full, including its file manifest (path, kind, size, sha256). |
Browse/search filters:
| Flag | Use |
|---|---|
--kind <kind> |
Filter by catalog kind: bundled or optional. |
--category <slug> |
Filter by catalog category slug. |
--query <text> |
Free-text search (browse only; search uses its positional argument). |
A <catalogRef> is a catalog skill id, key, or a unique slug. Inspect a skill before installing it so you know exactly which files will land in the company library.
Catalog install into the company library
skills install materializes a catalog skill into a company-managed skill. This is a company install — it does not attach the skill to any agent.
paperclipai skills install github-pr-workflow --company-id <company-id>
paperclipai skills install github-pr-workflow --as review-prs --company-id <company-id>
| Flag | Use |
|---|---|
--as <slug> |
Override the company skill slug. |
--force |
Replace a same-key catalog-managed skill when the server allows it. Never bypasses hard validation or hard-stop audit findings. |
After install the command reminds you that nothing is attached yet. To make an agent use it, run an agent attach afterward.
Note: Catalog commands are for the app-shipped catalog only. GitHub, skills.sh, local-path, and plain-URL sources go through
skills importinstead.
Company library
These commands manage the skills that exist in a company, regardless of where they came from. All require a company context.
paperclipai skills list --company-id <company-id>
paperclipai skills show <skill-ref> --company-id <company-id>
paperclipai skills file <skill-ref> --path SKILL.md --company-id <company-id>
paperclipai skills import <source> --company-id <company-id>
paperclipai skills create --name "Review PRs" --slug review-prs --body-file SKILL.md --company-id <company-id>
paperclipai skills scan-projects --project-id <project-id> --company-id <company-id>
| Command | Use |
|---|---|
list |
List every skill in the company library. |
show <skillRef> |
Show full detail for one company skill. |
file <skillRef> |
Print one skill file. Defaults to SKILL.md; pass --path <path> for another file. In human mode the raw content is written to stdout so you can pipe it. |
import <source> |
Import skills from a local path, GitHub, skills.sh, or a URL source. Prints the imported skills plus any warnings. |
create |
Create a managed local skill from flags and an optional markdown body. |
scan-projects |
Scan project workspaces for skills and import or update what it finds. |
A <skillRef> resolves against the company library by id, canonical key, or unique slug. An ambiguous slug is rejected — use an id or key instead.
skills create options:
| Flag | Use |
|---|---|
--name <name> |
Required. Skill name. |
--slug <slug> |
Optional explicit slug. |
--description <text> |
Optional description. |
--body-file <path> |
Markdown body file. Use - to read the body from stdin. |
skills scan-projects options (each may be repeated):
| Flag | Use |
|---|---|
--project-id <id> |
Project ID to scan; repeat for several. |
--workspace-id <id> |
Workspace ID to scan; repeat for several. |
With no --project-id/--workspace-id the scan covers the company's projects and workspaces. The summary line reports projects/workspaces scanned plus discovered, imported, updated, skipped, conflicts, and warnings counts.
Maintenance loop: check, update, audit, reset
Catalog-installed skills are pinned to an origin. Over time the catalog moves on, or someone edits the installed bytes locally. These four commands are the maintenance loop. The skill reference is optional on check, update, and audit; omit it to operate over the whole library.
paperclipai skills check --company-id <company-id>
paperclipai skills update <skill-ref> --company-id <company-id>
paperclipai skills update --all --company-id <company-id>
paperclipai skills audit <skill-ref> --company-id <company-id>
paperclipai skills reset <skill-ref> --yes --company-id <company-id>
| Command | Use |
|---|---|
check [skillRef] |
Report update status: supported, hasUpdate, currentRef/latestRef, installedHash/originHash, any updateHoldReason, and the auditVerdict. |
update [skillRef] |
Install the pinned update for one skill. |
update --all |
Check every skill and update only those with hasUpdate=true; supported-but-current and unsupported skills are skipped with a reason. |
audit [skillRef] |
Re-scan installed bytes and report findings (severity, code, path, message) without executing anything. |
reset <skillRef> |
Reinstall a catalog-managed skill from its pinned origin, discarding local edits. |
update and reset accept --force:
| Flag | Use |
|---|---|
--all |
(update only) Update every skill that has an available update. |
--force |
Discard local-modification and soft-audit holds. Hard-stop audit findings still block the operation. |
--yes |
(reset only) Confirm without the interactive prompt. Required when not in a TTY. |
Warning: Pass either a skill reference or
--alltoupdate, never both — the command rejects that combination.
Remove a skill
paperclipai skills remove <skill-ref> --yes --company-id <company-id>
skills remove deletes a skill from the company library. It prompts for confirmation in an interactive terminal and requires --yes when run non-interactively.
Agent attach: desired skills
Once a skill is in the library, skills agent sync decides how the skills you name meet the agent's current desired set. That is what --mode is for, and it is required — you pick one of three behaviours:
addkeeps everything the agent already has and unions in the skills you name (a skill already present is updated in place).removedrops only the skills you name and leaves the rest of the set alone.replaceoverwrites the complete desired set with exactly the skills you pass, detaching anything you omit. This is the old full-replacement behaviour.
The adapter then reconciles and the command returns an AgentSkillSnapshot.
paperclipai skills agent list <agent-ref> --company-id <company-id>
paperclipai skills agent sync <agent-ref> --skill review-prs --skill agent-browser --mode add --company-id <company-id>
paperclipai skills agent clear <agent-ref> --yes --company-id <company-id>
| Command | Use |
|---|---|
agent list <agentRef> |
Show the agent's runtime skill snapshot: adapter type, whether sync is supported, the mode, the desired count, and per-skill runtime entries (state, origin, managed flag). |
agent sync <agentRef> |
Add, remove, or replace the agent's desired company skills and sync runtime state. Requires at least one --skill and a --mode. |
agent clear <agentRef> |
Clear the desired set (empties it via an internal replace with an empty list). Prompts in a TTY; requires --yes otherwise. |
| Flag | Use |
|---|---|
--skill <skillRef> |
(sync) A desired company skill id, key, or slug. Repeat for several. At least one is required. |
--mode <mode> |
(sync) Required. Merge mode: add keeps other skills; remove deletes only named skills; replace destructively overwrites the complete set. |
--yes |
(clear) Confirm without the interactive prompt. |
An <agentRef> is an agent id or shortname/url-key. With --mode replace you must list the complete desired set every time — anything you omit is detached — while --mode add and --mode remove only touch the skills you name. clear detaches everything.
The singular skill group
paperclipai skill is a lower-level wrapper over the same company-skill API. It does not resolve key/slug references — every subcommand takes a literal <skillId> — and the create/import/scan/file-update operations are driven by a raw JSON payload. Reach for it only when you are scripting against a known skill ID and want direct control of the request body.
paperclipai skill list -C <company-id>
paperclipai skill get <skill-id> -C <company-id>
paperclipai skill file <skill-id> --path SKILL.md -C <company-id>
paperclipai skill file:update <skill-id> --payload-json '{"path":"SKILL.md","content":"..."}' -C <company-id>
paperclipai skill update-status <skill-id> -C <company-id>
paperclipai skill install-update <skill-id> -C <company-id>
paperclipai skill delete <skill-id> -C <company-id>
| Command | Use |
|---|---|
list |
List company skills (raw API output). |
get <skillId> |
Get one skill's detail by ID. |
file <skillId> |
Read a skill file; --path defaults to SKILL.md. |
file:update <skillId> |
Update a skill file. Requires --payload-json (a CompanySkillFileUpdate body). |
create |
Create a local skill. Requires --payload-json. |
import |
Import skills from a source. Requires --payload-json. |
scan-projects |
Scan project workspaces for skills. Requires --payload-json. |
update-status <skillId> |
Read the update status for one skill. |
install-update <skillId> |
Install the available update for one skill. |
delete <skillId> |
Delete a skill by ID. |
Every skill subcommand takes -C, --company-id <id>. Prefer the plural skills group for everyday work — it gives you reference resolution, confirmation prompts, and readable output that the singular group does not.
See also
- Agent commands — inspect agents and set up a local agent CLI session.
- Adapter commands — the runtimes that reconcile desired skills into files on disk.
- Company commands — company context, export, and import (skills travel in company packages).
- Project commands — the projects and workspaces
scan-projectsreads from. - Common options and output and scripting — shared flags and
--jsonhandling.