Skip to content

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.