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

# Install a skill into your Workspace

> Install one community skill from the skills.sh registry, or track a Git repository whose skills sync into your Workspace.

A [Skill](/concepts/capabilities#skills) is a named, versioned instruction
directory an Agent can carry into a Run. The CLI gets one into your Workspace
two ways: a one-shot install from the [skills.sh](https://skills.sh) community
registry, and a tracked Git repository that re-syncs on demand.

Both forms use the same public operations you could call over HTTP. Neither
runs the skill, and neither executes anything it downloads.

<Warning>
  The Checkfu CLI has no self-service public installation channel during private
  alpha. The commands below assume access through an explicitly authorized alpha
  arrangement. See [CLI access in private alpha](/getting-started/cli-access) for
  the source-checkout and HTTP alternatives.
</Warning>

## Install one skill from the registry

Name the skill the way the registry prints it:

```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
checkfu skill add @skills/anthropics/skills/pdf
```

The command resolves the entry, then stops and shows you what it found:

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
Source: https://www.skills.sh/r/anthropics/skills/pdf
Author: anthropics/skills <https://skills.sh/anthropics/skills/pdf>
Description: Use this skill whenever the user wants to do anything with PDF files…
Files (12):
  pdf/LICENSE.txt  1466 bytes
  pdf/SKILL.md  8035 bytes
  pdf/forms.md  11854 bytes
  pdf/reference.md  16692 bytes
  pdf/scripts/check_bounding_boxes.py  2774 bytes
  …
```

Registry content is written by other people. Read the list, then confirm:

```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
checkfu skill add @skills/anthropics/skills/pdf --yes
```

Nothing is imported without `--yes`. The CLI writes no local files, runs no
scripts, and interprets nothing beyond checking that each path is a safe
relative path and that the directory carries a `SKILL.md`. It packs the exact
bytes it fetched into an Agent Skills directory archive and posts it to
`POST /v1/skills/import`.

On success it prints the created Skill and the line to paste into an agent's
`skills` array:

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
Imported Skill pdf version 1 (skill_0123456789abcdef0123456789abcdef).
Add it to a CMA-shaped skills array:
  { "type": "custom", "skill_id": "skill_0123456789abcdef0123456789abcdef" }
```

`--json` writes JSON and only JSON: without `--yes` it emits the manifest as one
document with `"imported": false`, and with `--yes` it emits the created Skill.
Either way stdout carries exactly one document a script can parse.

This form is a pinned copy. The Skill does not change when the registry entry
changes; run the command again to import the newer content as a new version.

## Track a repository instead

When you author skills in a Git repository, track the repository once and sync
it whenever it changes:

```sh theme={"theme":{"light":"github-light","dark":"github-dark"}}
checkfu skill add --source https://github.com/your-org/skills
```

The first run needs an active `github` [Connection](/concepts/capabilities):
the command creates the repository's [filesystem tree](/concepts/file-trees)
through it, creates a `SkillSource` over that tree, and syncs:

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
Created filesystem tree skills (proj_0123456789abcdef0123456789abcdef) for your-org/skills.
Created SkillSource skills (sksrc_0123456789abcdef0123456789abcdef).
Synced SkillSource skills (sksrc_0123456789abcdef0123456789abcdef); status healthy.
  tidy-notes  created  skill_0123456789abcdef0123456789abcdef
  release-notes  unchanged  skill_fedcba9876543210fedcba9876543210
```

Running it again after a push reuses the same tree and source, so a repeated
call is one more sync rather than a second copy. A re-sync does not need to
choose a Connection: the tree already reads through the one it was created
with, and that binding cannot be changed later. Passing a different
`--connection` on a re-sync is refused rather than quietly ignored.

| Option                  | Use it when                                                                |
| ----------------------- | -------------------------------------------------------------------------- |
| `--root <path>`         | Skills live in a subdirectory, not at the repository root.                 |
| `--ref <git-ref>`       | The skills live on a branch or tag other than `main`.                      |
| `--name <name>`         | The derived name (the repository name) is not what you want.               |
| `--connection <conn_…>` | More than one active `github` Connection exists and this is the first run. |
| `--acted-as <prin_…>`   | The read should act as a Principal other than the Connection owner.        |

A sync reports one row per directory it saw. `created`, `updated`, and
`unchanged` publish a Skill; `invalid` names the reason a directory was not
readable; `missing` marks a directory this source published before and that the
current commit no longer contains. A missing directory is never deleted.

The two forms take separate options. An option belonging to the other form is
refused rather than accepted and ignored, so `--yes` never reads as a
confirmation that did not happen:

```text theme={"theme":{"light":"github-light","dark":"github-dark"}}
$ checkfu skill add --source example/skills --yes
checkfu: --yes applies to the registry form, not --source.

$ checkfu skill add @skills/example/skills/tidy-notes --root skills
checkfu: --root requires --source.
```

## Which form to use

|                    | `checkfu skill add @skills/…`         | `checkfu skill add --source …`                        |
| ------------------ | ------------------------------------- | ----------------------------------------------------- |
| Source             | skills.sh registry                    | A Git repository you can read                         |
| Updates            | Re-run to import a new version        | Re-run to sync the current commit                     |
| Needs a Connection | No                                    | Yes on the first run; a re-sync reuses the tree's own |
| Best for           | Trying someone else's published skill | Skills you or your team author                        |

## Search

`checkfu skill search` does not exist. skills.sh serves search outside its
documented registry surface and marks that endpoint legacy, so browse
[skills.sh](https://skills.sh) directly and install by name.
