Comparison · agent skill managers · features not UI
ainb skill-manager vs. xingkongliang/skills-manager
One-line verdict
They built a skill library + marketplace client (SQLite-backed,
skills.sh discovery, deliberately skill-only). We built a
multi-surface unit manager that also handles Claude
plugins, does bidirectional repo ↔ home sync with
push-back, and maps folders per-tool (YAML manifest, no
marketplace). Different centre of gravity — their gravity is
discover & collect, ours is reconcile & publish.
The two products at a glance
Both are Rust, both sync skills to many coding-agent homes. That's where the overlap ends.
A mature skill library and marketplace client. One central repo at
~/.skills-manager/ + a SQLite DB;
skills copied/symlinked out to each tool. Browse skills.sh, install,
adopt your own, auto-update on a schedule, tag, version-snapshot.
⭐ 1.8kv1.22.5 · 46 releasesstore: SQLitetools: 15+scope: skills only
USainb skill-manager
agents-in-a-box · ratatui TUI + CLI
A reconciler for units across tool homes and source repos. YAML
manifest.yaml +
lock.yaml; discovers
marketplace plugins AND orphan skills, maps each unit's files
per-tool, and syncs both directions (incl. publishing your local
edits back upstream).
✅ full · ◑ partial · ✘ none. Rows where we lead are marked with a clay edge.
Capability
them
us
note
Claude marketplace plugins
✘
✅
Our differentiator. They deliberately exclude the plugin cache (CHANGELOG v1.14.0: "avoid false positives from plugin marketplace caches"). Our Class-A walker reads .claude-plugin/plugin.json and surfaces marketplace:<plugin>@<mp>.
Bidirectional sync (local edit → upstream)
◑
✅
Theirs is central↔project only; no remote git push-back, and they don't detect dirty installed skills. Ours: apply_to_repo commits + pushes your home-side edits back to the source repo.
Per-tool folder mapping (fan-out)
◑
✅
They copy/symlink to .<tool>/skills. Ours has target_layout glob→home/repo mapping so one source publishes to arbitrary subdirs across tools.
Multi-unit-type (agents, commands, mcp, hooks)
✘
✅
They are SKILL.md-only by spec. We discover/manage agents, commands, mcp-servers, hooks too.
Discover on-disk skills
✅
✅
Both scan tool homes. Ours pops a discovery banner on empty-state; theirs lists in a Global Workspace.
Both compare stored SHA vs remote HEAD. Ours renders ✓/⚠/▲/⟷ glyphs via background git ls-remote poll.
Update / remove / install in-product
✅
✅
Both CLI + GUI/TUI. Our TUI help-bar keys (i/u/c/r/s//) were just fully wired.
Provenance tracking
✅
◑
They lead. SQLite stores source_type / ref / resolved-ref / subpath / branch / revision / content_hash. Ours: a provenance matcher is designed but not built — externally-cloned skills currently read as local:.
Browse remote catalog before install
✅
✘
They lead — big gap for us.skills search → skills.sh /api/search + trending/hot. Our [/] search only filters already-installed units.
Own-skill library / upload
✅
◑
They lead. v1.19 first-class "upload a local-only skill into central library". Ours: adopt + promote exist, but no first-class personal library UI.
Auto-update scheduler
✅
✘
They lead. Polls every 15 min (1h/6h/24h configurable). We have no background updater.
Tagging / filtering
✅
✘
They lead.skill_tags table + tag CRUD. We have no tags.
Git-backed version history / restore
✅
◑
Theirs snapshots the whole ~/.skills-manager repo (git versions/restore). Ours relies on the source repos' own history + the lockfile.
external-dependencies.yaml provenance
✘
◑
Neither reads it today, but ours is designed to (matcher correlates installed_plugins.json + external-deps.yaml → real gh: URIs). Theirs has no such manifest concept.
Storage model
SQLite
YAML
Theirs: queryable DB, strong for tags/search/provenance. Ours: human-readable, git-diffable, no query engine.
The plugin question, answered loud
⬡
We are the only one that manages Claude plugins. skills-manager
knows ~/.claude/plugins/cache exists and treats it as noise to
filter out — its detection rule is "a directory is a skill iff it contains
SKILL.md", and plugin.json / .claude-plugin/
are out of scope by spec. ainb's Class-A walker does the opposite: it reads the
plugin manifest, understands a plugin as a bundle of skills, and emits
marketplace:<plugin>@<marketplace> URIs. If "manage my
installed plugins" is the job, they don't do it and aren't trying to.
The marketplace & own-skill question — our two biggest gaps
⚠
They have a front door; we don't. Their whole left-half of the product
is browse skills.sh → preview → install, plus a first-class "upload my own
skill into a central library". We have discover-what's-already-on-disk
(the banner) + promote + adopt — powerful for reconciliation, but
there is no catalog to browse before you install and no personal
skill library as a first-class surface. For a user whose mental model is
"where do I find new skills and keep my own", they win today.