> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sidecars.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Agent skills

> Two installable skills that teach any agent how to work on Sidecars documents and how to write and iterate a plan in one: npx skills add https://docs.sidecars.ai.

export const CopyToAgent = ({prompt}) => {
  const [copied, setCopied] = useState(false);
  const [focused, setFocused] = useState(false);
  useEffect(() => {
    if (!copied) return;
    const timer = setTimeout(() => setCopied(false), 4000);
    return () => clearTimeout(timer);
  }, [copied]);
  const copy = () => {
    if (!navigator?.clipboard) return;
    navigator.clipboard.writeText(prompt).then(() => setCopied(true), () => setCopied(false));
  };
  return <div className="not-prose my-6 rounded-2xl border border-zinc-950/10 p-5 dark:border-white/15">
      <h3 className="text-base font-semibold text-zinc-950 dark:text-white">
        Let your agent set up Sidecars
      </h3>
      <p className="mt-1 text-sm text-zinc-950/70 dark:text-white/70">
        Click below to copy the setup prompt, then paste it into your agent.
      </p>
      <div className="mt-4">
        <button aria-live="polite" className="inline-flex items-center rounded-lg bg-zinc-950 px-3 py-2 text-sm font-medium text-white transition-opacity hover:opacity-80 dark:bg-white dark:text-zinc-950" onBlur={() => setFocused(false)} onClick={copy} onFocus={event => setFocused(event.target.matches(":focus-visible"))} style={focused ? {
    outline: "2px solid rgb(113 113 122)",
    outlineOffset: "2px"
  } : undefined} type="button">
          {copied ? "Copied! Paste it into your agent." : "Copy to your agent"}
        </button>
      </div>
      <p className="mt-4 select-text rounded-xl bg-zinc-950/5 p-3 text-sm text-zinc-950/70 dark:bg-white/10 dark:text-white/70">
        {prompt}
      </p>
    </div>;
};

A connected agent can call every tool in the [catalogue](/tools). A skill
tells it *how* to use them well: read before writing, quote excerpts from
the read, keep human edits, evaluate a comment before acting on it, and never
mistake "threads resolved" for "approved". Sidecars publishes two skills in
the [Agent Skills](https://agentskills.io) format, hosted on this site.

<CardGroup cols={2}>
  <Card title="sidecars-documents" icon="file-lines" href="https://docs.sidecars.ai/.well-known/agent-skills/sidecars-documents/SKILL.md">
    Find or create a document, read it with its version, make the smallest
    edit, and run a resumable review loop over its comment threads.
  </Card>

  <Card title="sidecars-plans" icon="map" href="https://docs.sidecars.ai/.well-known/agent-skills/sidecars-plans/SKILL.md">
    Write a plan as a Sidecars document: where it lives, a template sized to
    the task, review rounds, version-pinned approval, hand-off.
  </Card>
</CardGroup>

## Install

One command installs both into the agent you pick, at project scope, using
the [Skills CLI](https://github.com/vercel-labs/skills):

```bash theme={null}
npx skills add https://docs.sidecars.ai
```

Add `-g` for a global install, `-s sidecars-plans` to pick one skill, or
`-a claude-code -a cursor -a codex` to choose the agents without a prompt.
`npx skills list` shows what is installed and `npx skills update` picks up
new versions.

Or hand the install to the agent you already have open:

<CopyToAgent prompt="Install the Sidecars agent skills by running `npx skills add https://docs.sidecars.ai` for this agent at project scope, then confirm that sidecars-documents and sidecars-plans are listed by `npx skills list`." />

<Note>
  Installing skills is separate from connecting the MCP server. The skills
  tell the agent how to use the Sidecars tools; the tools only exist once the
  agent is [connected](/connect) and signed in.
</Note>

## What a review round looks like

Someone leaves three comments on a plan an agent wrote: one anchored on a
paragraph asking for a different default, one on the whole document asking
for an acceptance-criteria section, and one asking "should this be a
separate service?". Then they tell the agent to address the review.

1. `read_comments` returns the three open threads; `read_document` returns
   the current text and its `version`.
2. The agent classifies them: two change requests, one decision only a
   person can make.
3. For the anchored thread it calls `edit_document` with
   `mode: "replace_section"` and the thread's quoted passage as
   `section_excerpt`, reads the document back, replies in the thread with
   what changed, and resolves it.
4. For the whole-document thread it appends the new section, reads back,
   replies, resolves.
5. For the question it replies with the trade-off it can see and leaves the
   thread open.
6. It reports: two threads resolved, one open for a decision, version `N`.

Nothing about the document's approval state changed. That happens when a
person says so, and the plan skill records it in the Status line with the
version it applies to.

## For hosts without the Skills CLI

Every skill is a plain `SKILL.md` file. Save it under your agent's skills
directory (`.claude/skills/<name>/SKILL.md` for Claude Code,
`.cursor/skills/<name>/SKILL.md` for Cursor, `.agents/skills/<name>/SKILL.md`
for Codex and other hosts that read the shared layout):

* [`sidecars-documents/SKILL.md`](https://docs.sidecars.ai/.well-known/agent-skills/sidecars-documents/SKILL.md)
* [`sidecars-plans/SKILL.md`](https://docs.sidecars.ai/.well-known/agent-skills/sidecars-plans/SKILL.md)

The machine-readable index is at
[`/.well-known/agent-skills/index.json`](https://docs.sidecars.ai/.well-known/agent-skills/index.json).
