Skip to main content

IpMan Banner

IpMan - Intelligence Package Manager

I can take on ten.

The skills housekeeper for AI agents. Discover, organize, absorb, dedup and clean the skills already on your machine — like a disk-cleanup utility, but for agent skills. It never installs and never destroys.

Documentation | 中文文档 | 中文 README


What it is (and is not)

Skills pile up: copied folders, half-remembered clones, duplicates across projects, broken leftovers. Your agent's own tooling installs skills — but nothing tidies them.

IpMan is that missing housekeeper. It does not install or uninstall skills — your agent's native mechanisms keep doing that. IpMan handles what they don't:

Verb What it does
scan / status See every skills directory (user-global and per-project) and the true state of each skill: real dir, symlink, broken, duplicate, suite-managed
absorb Take loose skill folders into one central store (a fresh git repo each — changes tracked from then on) and leave a symlink in place. Your agent notices nothing
dedup Find byte-identical copies across projects and merge them onto one stored original
clean Broken links, orphaned store entries, empty shells — quarantined to ~/.ipman/trash, never deleted
enable / disable Switch a skill off without losing it (the link goes, the original stays), switch it back on anytime
pack Name a set of skills and enable/disable them as one unit, in any scope
takeover / release Optionally put a whole skills directory in IpMan's custody: survives accidental rm -rf, restorable with one sync

Everything destructive is dry-run first and quarantined — recoverable, always.

Quick start

pipx install ipman-cli        # or: pip install ipman-cli / uv tool install ipman-cli

ipman                         # in a terminal: the interactive TUI
ipman status                  # or the same, as plain text
ipman scan                    # deep scan: wild skills, duplicates, cleanables

Typical first session:

ipman absorb --user           # inventory of ~/.claude/skills: what's absorbable
ipman absorb --user my-notes  # take one over (moved to store, symlinked back)
ipman dedup                   # duplicate report (dry-run)
ipman clean                   # cleanables report (dry-run)

Toolkits are recognized, not mangled

Toolkits like gstack are git clones that dozens of your other skills symlink into. IpMan identifies them — scan reports Suites detected: gstack: 55 skills, and each wrapper shows suite:gstack rather than a generic suite. Trying to absorb such a root is refused (it would break every dependent); the right move is directory custody (takeover), which protects the whole directory while leaving the toolkit's own updater untouched. Marketplace plugins and independent clones are never touched either.

Use it from inside your agent

Install the companion skills (explicitly — IpMan never auto-installs anything, not even itself):

ipman skill-sync --scope claude-code-user   # installs 'ipman' + 'ipman-update'

Then tell your agent "clean up my skills" / "整理一下我的技能" — it drives the same engine through --json commands, confirming before every write. The skills stay version-locked to the CLI (ipman skill-sync --check).

Updating is a skill too: /ipman-update detects how you installed (pipx / uv / pip), upgrades the CLI from PyPI on your OK, then regenerates the skills so they never drift from the tool.

Status bar: ipman statusline prints one line for your agent's status bar:

ipman statusline    # -> 📦 user⚑12 | myproj✓3 | !1断链   (⚑ custody, ✓ native)

Wire it into Claude Code's statusLine command in settings.json.

Speaks your language

The whole interface — status values (real/link/broken), error messages, the TUI and CLI output — auto-switches between English and Chinese based on your locale (LANG / LC_ALL). zh* gives you 真目录/软链接/断链; anything else stays English. Nothing to configure.

Safety model

  • Never installs, never uninstalls — organization only
  • Dry-run first: dedup/clean report before --apply
  • Quarantine, not deletion: clean --apply moves to ~/.ipman/trash; --empty-trash is a separate, explicit step
  • Pinned read-only originals: absorbed skills link to read-only snapshots — even a trailing-slash rm -rf can't gut the store
  • Toolkits, clones and marketplace plugins are left alone: anything with its own manager or upstream is reported, never touched

Status

v3 (0.4.x): the housekeeper surface is new; verified on macOS with Claude Code. Windows: per-skill operations expected to work (junction fallback, CI-tested), directory takeover pending a Windows verification pass. Feedback and issues welcome.

License

Apache License 2.0 — see LICENSE for details.

Metadata

Release files for ipman-cli 0.4.18

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ipman-cli 0.4.18
File Size Uploaded
ipman_cli-0.4.18.tar.gz 2.3 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for ipman-cli 0.4.18
File Interpreter ABI Platform
ipman_cli-0.4.18-py3-none-any.whl Python 3 none any Details

Total release size: 2.4 MB

Release files / ipman_cli-0.4.18.tar.gz

Download URL ipman_cli-0.4.18.tar.gz
Size 2.3 MB
Tags Source
SHA-256 checksum
How to use checksums
570488ec9f27ec6b2a8363d093ec9b9306c6e78ad8ab898c99b4ab714da6623b
BLAKE2b-256 checksum
How to use checksums
200e82e0e53e44047eddbf17f14ae1f9791babab32564ab0a3046c23baff3d51
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 4, 2026.

Transparency log

Release files / ipman_cli-0.4.18-py3-none-any.whl

Download URL ipman_cli-0.4.18-py3-none-any.whl
Size 98.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fe90e4c4049743e68cd2ab1bef0299b6280a5820e304e4e2aaf55ff2d0da1949
BLAKE2b-256 checksum
How to use checksums
c891c053d2bf20912f5db6c41ac7a2651f3e3507db397bc4d8e2eed64cc339d6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 4, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.4.18 This release

2 release files

0.4.8

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.39

2 release files

0.2.27

2 release files

0.2.13

2 release files

0.2.12

2 release files

0.1.88

2 release files

0.1.84

2 release files

0.1.80

2 release files

0.1.73

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page