CLI Reference
Bare ipman in a terminal opens the TUI. Every command below is the same
engine in plain-CLI form; --json variants are the agent/script interface.
Housekeeping (the core surface)
| Command | Description |
|---|---|
ipman status [--json] [-v] |
Panorama: every scope's custody state and skill health counts |
ipman scan [--json] |
Deep scan: per-skill states, duplicate groups, cleanable findings |
ipman absorb [names…] [--all] [--user] [--as NEW] [--live] |
接管技能: move loose skill dirs into the store (fresh git repo each), symlink back. Idempotent, resumable; identical cross-scope copies dedup automatically; clones/suites/plugins never touched |
ipman dedup [--apply] |
Duplicate groups; --apply merges semantically-compatible copies onto one stored original (dry-run default) |
ipman clean [--apply] [--empty-trash] |
Broken links / orphan store entries / empty shells; --apply quarantines to ~/.ipman/trash (dry-run default) |
ipman doctor [--user] |
Health checks with exit code (CI-friendly): links, custody, lock drift, git version |
Activation (启用/停用) and packs (功能包)
| Command | Description |
|---|---|
ipman disable <name> \| --pack <p> [--scope S] |
停用: drop the link; the original stays, re-enable anytime |
ipman enable <name> \| --pack <p> [--scope S] |
启用: rebuild the link from the pin (or the store catalog) |
ipman pack list / show <name> |
Inspect defined packs |
ipman pack create <name> <skills…> [--scope S] |
Define a pack from store-managed skills (absorb first if needed) |
--scope accepts user, . (current project) or a scope id; default is the
current project if inside one, else user.
Custody (接管目录)
| Command | Description |
|---|---|
ipman takeover <scope> [--from-link] |
Move the whole skills dir into IpMan custody; the path becomes a symlink (agent unaware). --from-link migrates an existing symlinked setup |
ipman release <scope> [--purge] |
Give the directory back, contents restored in place |
ipman sync [--user] |
Rebuild everything from the ledgers: custody link, per-skill links, exact pins |
Custody notes: recommended for the user scope; project-scope custody makes
.claude/skills a machine-specific symlink (auto-git-ignored, warned).
If an external updater recreates the real directory, doctor/status flag it
and takeover repairs — new skills are merged in, nothing lost.
Agent integration
| Command | Description |
|---|---|
ipman skill-sync [--check --json] [--self DIR] [--scope S] |
Install/update the companion skill. Targets are explicitly registered — never probed. --check reports CLI vs skill vs PyPI versions (24h cache, offline-silent) |
ipman statusline |
One compact line for the agent's status bar (📦 user⚑12 \| proj✓3 \| !1断链) |
ipman init |
Register the current project as a scope (creates ip.yaml) |
Wire the status bar in Claude Code: add ipman statusline to (or into) your
statusLine command in settings.json.
The artifacts
~/.ipman/store/… one original per skill: live git repo +
read-only pinned snapshots (@<commit>)
~/.ipman/scopes/registry.yaml known project scopes + skill-sync targets
~/.ipman/scopes/<id>/scope.yaml custody flag + per-skill active/archived
~/.ipman/packs/<name>.yaml pack definitions (reference lists)
~/.ipman/trash/<timestamp>/ quarantine (clean --apply); --empty-trash purges
<project>/ip.yaml + ip.lock per-scope ledger: declarations + exact pins
ip.lock stays authoritative for pins (source/commit/tree); scope.yaml for
organization (custody, active/archived). IPMAN_HOME relocates everything.
Dormant / retired
hub, legacy-pack, install, uninstall, add, update, list,
remove still execute but are hidden (superseded or dormant — see
Dormant Features). The env command group and shell
prompt-tag integration are retired: the project directory is the
environment, and status display moved to the agent status bar.