toolkit-updatelisted
Install: claude install-skill furkankoykiran/.claude
# Toolkit update
The toolkit ships in two layers, and they update through different mechanisms.
Getting this wrong is the most common source of confusion, so establish which
layer the user means before doing anything.
| Layer | What it holds | How it updates |
| --- | --- | --- |
| **Plugins** (`skills/fk-*`) | skills, agents | Claude Code's own plugin updater |
| **Bootstrap** (`~/.claude`) | hooks, installer, provider scripts, global instructions, the plugins' source of truth | `fkt` |
## 1. Establish the current state
```bash
~/.claude/bin/fkt status
```
This is offline and instant. It prints the installed version, the channel, the
cached check result, whether the worktree is clean, and any security advisories
that apply to the installed version.
## 2. Check for an update
```bash
~/.claude/bin/fkt check
```
Exit codes matter here — read them, do not parse the prose:
| Exit | Meaning |
| --- | --- |
| `0` | up to date, or an available update is snoozed |
| `10` | an update is available |
| `30` | offline, or the remote was unreachable |
| `40` | `~/.claude` is not a git checkout — it must be reinstalled, not updated |
Results are cached for 12 hours. Pass `--force` only when the user explicitly
wants a fresh network check; otherwise the cache is the right answer.
## 3. Apply it
```bash
~/.claude/bin/fkt update
```
Fast-forward only. It **refuses** (exit `20`) rather than destroying work when:
- tracked files are modified — report `git -C ~/.claude status` to t