Changelog
v2.1.0 — Canonical store, manifest safety, comprehensive test + doc coverage
The v2.1 release makes state.json the one canonical store for installed skills and plugins (replacing the v0.x installed.json + plugins.json pair), closes correctness gaps in sync and install, and ships a full end-to-end test suite and doc audit for the v2.0 surface. v0.x users transition transparently — your data is read once from the legacy files and written into state.json on the next install/update/remove. skilltap migrate remains available for explicit one-shot migration; skilltap doctor --fix cleans up the orphan legacy files afterward.
Changed
state.jsonis the canonical state file.install,update,remove,disable,enable,move,adopt,link, plugin operations all now write directly tostate.jsoninstead ofinstalled.json/plugins.json. Existing v0.x users get a one-time transparent read fallback so no data is lost. The next save populatesstate.jsonand the fallback stops firing for that scope.--agentflag andSKILLTAP_AGENT=1env var work with proper precedence.composePolicyresolves agent mode as:flags.agent>SKILLTAP_AGENT=1>[agent-mode]config block. CLI startup checks (telemetry notice, update hint, skill-update reminder) short-circuit on the env var. The flag is wired intoinstall,update,tap install,skills remove, andskills enable/disable. TheisAgentMode()helper used by read-only commands (disable,enable,toggle,plugin info,skills info, etc.) honors the flag via direct argv inspection, so the documented precedence applies uniformly across every command.skilltap installrefuses (or auto-recovers) whenskilltap.tomlis corrupt. Previously, install silently swallowed a corrupt manifest and left the project in a half-managed state:state.jsonupdated, skill files placed, but manifest unchanged and lockfile missing the new entry. Now: agent mode exits 1 with a pointer toskilltap doctor --fix(CI/scripts must never silently mutate user files); interactive mode auto-recovers (backs up the corrupt file toskilltap.toml.bak, resets to empty, continues the install).skilltap syncnow requires a project root. Runningsyncoutside any git repo or project previously reported a misleading "trivially in-sync" no-op (theif (!projectRoot)guard was dead code becausetryFindProjectRoot()fell back to cwd). It now exits 1 with a clear error pointing the user to a directory containing.gitorskilltap.toml. Replaced internally with a newfindManifestRoot()helper that returns null when no manifest ancestor exists.
Added
- Doctor v2.0 checks (10–15).
skilltap doctornow runs 15 checks total (was 9). The six new v2.0 checks:state.jsonvalidity, manifest drift, lockfile drift, plugin manifest validity (.skilltap/<name>.toml), MCP injection consistency, and v0.x file orphans. Manifest and lockfile corruption are nowfixable: true—--fixbacks the corrupt file to.bakand writes a fresh empty file using the samerecoverManifest/recoverLockfilehelper the install preflight uses. Thev0.x file orphanscheck detects whenstate.jsonis populated AND legacyinstalled.json/plugins.jsonare still on disk;--fixrenames each orphan to<file>.v1.bak. Pre-migration users (empty state, populated legacy file) are intentionally not flagged — their fallback is still active. skilltap doctorruns from real git repos correctly. Fixed aBun.file('.git').exists()bug in the project-root detection that madeskilltap status/doctoralways report "no project root" when run inside a real git repo. Replaced withlstat.- Comprehensive v2.0/v2.1 test coverage. 50+ new CLI subprocess and unit tests for previously-uncovered surface:
resolveScopesmart-scope-default (all 5 branches),syncdrift workflow with--apply/--strict/--json,trynever-writes invariant (the safety property that makes try usable on untrusted code),migrateidempotency and HTTP-tap abort, doctor--fixrepair workflow, agent-mode precedence chain, HTTP-tap stderr warning, install-never-writes-installed.jsoninvariant, first-time global install (smart-default outside git), skill remove drops from manifest + lockfile,status --json.
Documentation
- Comprehensive website audit. All 15 website pages (11 guides + 4 reference) audited for v2.1 consistency. 4 Blocker fixes and ~10 High-priority gaps closed. Key fixes: removed the obsolete scope-prompt UI mock from getting-started (smart-scope-default infers scope silently); fixed
update --all(doesn't exist, 4 occurrences) in teams guide; corrected[security]block usage in teams + config-options worked examples (per-mode keys belong in[security.human]/[security.agent], not the shared[security]block); corrected the false claim thatinstallauto-migrates v0.x state. Added complete CLI reference sections fortry,migrate,toggle/enable/disable,mcp:source format, bareskilltapstatus. Doctor check table updated to 15 (was 9). Added missing config keys (builtin_tap,default_git_host,updates.show_diff). - Foundation doc updates. SPEC.md §v2.0 Sync gained the project-root requirement; §
skilltap installgained a Manifest Preflight callout; §v2.0 Doctor Upgrades documents the new fixability for manifest and lockfile checks. UX.md install + sync flows updated with the corrupt- manifest handling and the no-project-root error case. CLI hint correctness:skilltap config set agent-mode.enabled truenow emits a hint mentioning the--agentflag andSKILLTAP_AGENT=1env var alongside the persistent wizard. - End-to-end test design document. New
docs/E2E-TEST-DESIGN-V2.mdenumerates 27 golden-path tests across 13 user journeys plus 20 adversarial tests across 5 failure-mode categories, with spec citations, fixture requirements, and prioritized implementation order. ~18 of the highest-priority tests landed in this release; the rest documented for a follow-up pass.
Internals
- Module-graph cleanup. Extracted
getConfigDir/ensureDirsto a leaf module (core/src/dirs.ts) andSKILLTAP_AGENTenv-var check to its own helper (core/src/agent-env.ts). The previous circular import betweenconfig.ts↔state/save.ts(worked around with dynamicawait import()calls) is gone — all callers use clean static imports. - Net –355 lines of code. Dual-write scaffolding from the early v2.1 cutover (
sync-from-v1.ts,read-bridge.ts) deleted now thatstate.jsonis canonical. manifest/recover.ts— sharedrecoverManifest()/recoverLockfile()helpers used by both install preflight and doctor--fix. Backup-then-replace pattern mirrors the existingstate-v2doctor fixer.- Lint: 104 errors / 279 warnings → 0 / 0. Project-wide
bun run checksafe-fix pass + targeted unsafe-fix passes for unused imports/variables/templates + per-line documentation of every remaining!non-null assertion with its runtime guard. macOS/tmp→/private/tmpsymlink bug inmakeTmpDirfixed mid-cleanup, resolving 6 long-standing test failures.
Known gaps (deferred to v2.2)
- v0.x schema deletion —
schemas/installed.tsandschemas/plugins.tsare still imported (mostly for type re-exports —InstalledSkill,PluginRecordshapes are reused as-is instate.json). Wholesale deletion is deferred to v2.2 after a release window for users to clear orphans viaskilltap doctor --fix. [agent-mode]config block schema retirement — the block is read for back-compat but won't be the documented entry point in v2.2.- Plugin authoring guide —
creating-skills.mddoesn't yet have a section on publishing plugins via.skilltap/<name>.toml([[skills]],[[servers]],[[agents]],publish = true). Tracked for a focused doc pass.
v2.0.0-rc.1 — Tooling-surface redesign
The v2.0 release reshapes how you manage skills and plugins around a project manifest, simplifies the security config, drops "agent mode" as a separate mental model, and adds Claude Desktop as an MCP target. Existing v0.x setups keep working — run skilltap migrate when ready.
Added
- Project manifest (
skilltap.toml+skilltap.lock) — declare your project's skill and plugin dependencies; commit the files; teammates runskilltap sync --applyfor parity.installandremovekeep both files in sync automatically. skilltap sync— show drift between manifest, lockfile, and installed state.--applyexecutes the plan via existing install/remove machinery.--strictstops at the first failure.skilltap status(also bareskilltap) — text dashboard of skills, plugins, MCP injection per agent, taps, drift.--jsonfor scripting.skilltap try <source>— read-only preview of any source. Clones to a temp dir, parses manifests, runs static security scan, prints summary, cleans up.--skip-scanand--jsonflags supported.skilltap migrate— one-shot upgrade from v0.x state. Readsinstalled.json+plugins.json+ v0.x config keys, writes consolidatedstate.jsonand v2 config layout, renames originals to.v1.bak. Refuses to migrate HTTP taps (no longer supported) with a list of which to fix.- Top-level
toggle/enable/disable<plugin>[:component]— direct component addressing. Bare plugin name opens a multiselect picker (toggle) or applies bulk action (enable/disable). Fully back-compat: existingskilltap plugin togglekeeps working. .skilltap/<plugin>.toml— native v2.0 plugin manifest format. Place one or more files in.skilltap/withpublish = trueto make a repo installable as one or more plugins. Multi-plugin repos supported viauser/repo:plugin-namesyntax. Existing.claude-plugin/plugin.jsonand.codex-plugin/plugin.jsonformats continue to be read.- Claude Desktop MCP target — added alongside
claude-code,cursor,codex,gemini,windsurf. Resolves to the OS-specific config path on macOS and Linux; Windows deferred. - Smart scope default — inside a git repo,
installdefaults to--project; outside,--global. Removes the scope prompt for the common case. Override explicitly with--global/--project. - Component-ref syntax —
skilltap toggle dev-toolkit:test-generatoraddresses one component directly without going through a picker. Same pattern forenableanddisable. --agentflag (andSKILLTAP_AGENT=1env var) — non-interactive mode for AI agents, CI, scripts. Replaces (but stays compatible with) the config-only[agent-mode]block.- Doctor v2 checks —
skilltap doctornow also checksstate.jsonvalidity, manifest/lockfile drift,.skilltap/<plugin>.tomlvalidity, and MCP injection consistency (with auto-fix for orphan agent-config entries). skilltap install mcp:<source>/skilltap remove mcp:<source>— install or remove MCP servers from any source (git, local, npm) without going through the skill machinery. Useful for one-off MCP-only repos. Servers land understate.json::mcpServers[]namespaced asskilltap:<slug>:<server-name>; remove prunes both state and the target agents' MCP configs.
Simplified
- Single state file —
installed.jsonandplugins.jsonconsolidated intostate.jsonper scope. v0.x users see a soft startup hint pointing atskilltap migrate; the legacy files remain readable as a one-time fallback for unmigrated setups. - Top-level command surface — daily-use commands (
install,remove,update,list,info,enable,disable,toggle,sync,status) sit at the root;skills/,plugin/,tap/subgroups are retained for less-common operations.
Note on security config: The original v2.0 design called for a collapsed single
[security]block with three keys (scan/on_warn/trust) andon_warn = "install"as the default — these features were documented in earlier release-note drafts but were deferred during Phase 31c-c-2. Shipped v2.0/v2.1 retains the v0.x per-mode structure ([security.human]and[security.agent]) with--agentactivating the agent-mode block. The preset table,[[security.overrides]], andrequire_scanare all still active. See SPEC.md → v2.0 Security for the actual shipped schema.
Removed
- HTTP registry tap adapter — taps are git-only. Existing config entries with
type = "http"are silently filtered with a one-time warning;skilltap migratelists them as needing manual conversion or removal. UpdateTapResult.http— dead-loaded field with no production consumers; dropped from the public API.
Changed
- CLI command surface — top-level shortcuts for
sync,status,try,migrate,toggle,enable,disable. Existing paths (skilltap plugin toggle,skilltap skills remove, etc.) still work as silent aliases. Shell completion scripts (bash, zsh, fish) updated.
Migration
skilltap migrateThe command:
- Consolidates
installed.json+plugins.json→state.json. - Translates v0.x's old top-level
[security]keys (scan,on_warn,require_scan) into per-mode[security.human]+[security.agent]blocks. (Per-mode structure was kept; the original "collapse to flat [security]" design was deferred.) Existing per-mode configs pass through unchanged. - Keeps
[agent-mode]intact (the originally-planned[agent]block withdefault/blockwas deferred). The new--agentflag andSKILLTAP_AGENT=1env var are alternative per-invocation entry points. - Keeps
[[security.overrides]]intact (the originally-plannedtrust = []glob array was deferred). - Renames originals to
<file>.v1.bak(e.g.,installed.json.v1.bak). - Aborts before any writes with a list if any HTTP taps are configured (must be converted to git or removed before re-running).
If you're not ready to migrate, v2.0 also reads v0.x state — manifest writes and v2 commands work alongside the legacy paths. The full cutover (v0.x path retirement) lands in v2.1+.
Known gaps
- v0.x reader retirement —
installed.json/plugins.jsonare still read AND written by install/update/remove for back-compat. The full cutover to state.json reads — and retirement of the[agent-mode]config block — lands in v2.1.
v0.10.8
Fixes
Plugin detection for direct install —
skilltap install nklisch/skills(or any direct git/GitHub source) now detects plugin manifests and prompts whether to install as a plugin. Previously the plugin manifest was silently ignored and only skills were installed. Tap-based resolution was unaffected.HTTP MCP servers — plugins that declare HTTP MCP servers now have them fully injected into target agent configs as
{ url, headers? }entries. Previously HTTP servers were parsed from the manifest but silently dropped at install time. Toggle and remove also work correctly for HTTP servers.
v0.10.7
Fixes
- Shell completions — plugin command —
plugin/pluginswas registered in the CLI but missing from all shell completion scripts. Bash, zsh, and fish now completeplugin list,plugin info,plugin toggle(with--skills,--mcps,--agents), andplugin remove. - Shell completions — missing flags — several flags were absent from completions:
verify --all,config --reset,skills info --json(and theinfoalias),tap add --type,tap remove --yes,tap list --json. - Shell completions — status description — corrected to "Show agent mode status and configuration" across zsh and fish.
v0.10.4
Fixes
- Nested frontmatter metadata —
skilltap verifyno longer fails with "expected record, received string" when a skill's frontmatter contains a nestedmetadata:block. The parser now correctly preserves nested key-value pairs as an object instead of flattening them to the top level. (Fixes #14)
v0.10.1
Fixes
- macOS self-update quarantine — downloaded binary now has the
com.apple.quarantineextended attribute stripped before replacing the running binary, preventing Gatekeeper from killing the updated binary on macOS. - macOS code signature — ad-hoc sign (
codesign -s -) the binary after download in both self-update and install script. Cross-compiled Mach-O binaries from CI lack any code signature, which Apple Silicon rejects with "load code signature error 4".
v0.10.0
Plugin Support
- Plugin detection and parsing — skilltap now reads Claude Code (
.claude-plugin/plugin.json) and Codex (.codex-plugin/plugin.json) plugin formats, extracting skills, MCP server configs, and agent definitions into a normalized manifest. - Plugin install —
skilltap install <repo>auto-detects plugins and installs the portable subset (skills + MCP servers + agent definitions) across all target agent platforms. MCP servers are injected into each agent's config file (Claude Code, Cursor, Codex, Gemini, Windsurf) with namespacing (skilltap:<plugin>:<server>) and automatic backup. - Plugin management — new
skilltap plugincommand group:list,info,toggle(enable/disable individual skills, MCPs, or agents within a plugin), andremove. - Agent definitions — plugin agent
.mdfiles are placed in.claude/agents/(Claude Code-only for now, extensible to other platforms). - plugins.json — installed plugins tracked in
~/.config/skilltap/plugins.json(global) or{project}/.agents/plugins.jsonwith per-component active/inactive state.
Tap-Defined Plugins
- Inline plugin definitions in tap.json — taps can now define plugins in a
pluginsarray with inline skills, MCP servers, and agent definitions. Content files live in the tap repo itself. skilltap install tap-name/plugin-name— new install syntax for tap-defined plugins. If the first path segment matches a configured tap name, resolves the plugin from that tap directly.- Marketplace plugin auto-detection — when using a Claude Code marketplace repo as a tap, plugins with relative-path sources and
.claude-plugin/plugin.jsonare automatically treated as full plugins (not just skill entries).
Improvements
skilltap findshows[plugin]badge for plugin entries in search results.skilltap status/--jsonincludes plugin count.tap.jsonplugin: trueflag on skill entries marks them as plugins for badge display.
v0.9.14
- Fixed
skilltap updateauto-removing disabled skills as "stale records". Disabled skills are now skipped entirely during orphan detection — missing install directories and symlinks are expected for disabled skills and should not trigger removal.
v0.9.12
- Fixed
skilltap updatecrashing withcp: cannot stat '...': No such file or directorywhen a skill's subdirectory was removed from an upstream multi-skill repo. The update now detects this and offers to remove the stale skill record instead of crashing. - Fixed
skilltap updateandinstallcrashing or showing false "already installed" conflicts when an installed.json record exists but the skill directory has been manually deleted. Stale records are now detected and cleaned up before the operation proceeds. - Fixed
skilltap removesilently succeeding when the skill directory was already gone; now reports that only the record was cleaned up. - Added support for Claude Code marketplace repos (
.claude-plugin/marketplace.json) as taps.skilltap tap add owner/reponow works with any Claude Code plugin marketplace. - Scanner now discovers skills in
plugins/*/skills/*/SKILL.md(Claude Code plugin layout) without requiring a deep scan.
v0.9.11
- Fixed scanner not detecting skills placed directly at
skills/SKILL.md(flat layout). Previously onlyskills/<name>/SKILL.md(subdirectory layout) was recognized. - Fixed
SKILLTAP_INSTALLenv var not being passed through to the install script.
v0.9.10
- Fixed skill install failing on macOS with "no such file or directory" during copy. The scanner's symlink resolution (
/tmp→/private/tmp) caused a path mismatch with the install cache, so copied paths pointed at the deleted temp dir.
v0.9.9
- Fixed scanner incorrectly matching lowercase
skill.mdasSKILL.mdon macOS (case-insensitive filesystem). All SKILL.md existence checks now usereaddir+ exact string matching instead ofBun.file().exists(). - Root
SKILL.mdno longer short-circuits scanning — repos with both a root skill and nested skills under.agents/skills/now discover all skills correctly.
v0.9.7
- Fixed
skilltap tap installfailing with "Skill not found in repo" on macOS when installing skills from repos that use.agents/skills/layout. Bun.Glob silently skips dot-prefixed directories in cross-compiled macOS binaries; replaced withreaddir-based scanning that works reliably across platforms. - Added debug logging to the skill scanner (enable with
SKILLTAP_DEBUG=1).
v0.9.6
- Fixed
skilltap updatecrashing on skills installed from local git paths whose source directory was later deleted. Records with a local filesystem path asreponow gracefully skip with"local"status instead of hard-failing on git fetch.
v0.9.5
- Fixed
skilltap installerroring on conflict when noonAlreadyInstalledcallback is provided; previously silently swallowed the conflict. Callers must now explicitly handle the case via the callback. Agent mode now auto-updates on reinstall (matching--yesbehavior). - Fixed
skilltap install <local-path>failing when the path is not a git repository. Non-git local directories are now copied directly and recorded withrepo: null(skipped during update). Git-based local paths continue to clone and support updates. - Added comprehensive lifecycle test suite (24 tests) covering the full skill journey — install → update → disable → enable → move → remove — across git, npm, local, adopted, and linked sources.
v0.9.4
- Fixed
skilltap updateerroring with "git fetch failed: fatal: not a git repository" on adopted local skills that have no git remote. These skills are now silently skipped during update with a "local (no remote)" status. - Fixed Homebrew tap name in install instructions.
v0.9.3
- Fixed
install,find,tap list, andskills infofailing with "No taps configured" on a fresh install. The built-in tap is now cloned on first use in all commands that resolve tap names, not justtap install.
v0.9.2
- Fixed
skills adopt(and skill discovery in general) crashing with ENOENT when a broken symlink exists in an agent skills directory. Broken symlinks are now silently skipped during discovery.
v0.9.1
- Fixed symlink creation to gracefully handle existing paths: replaces stale symlinks pointing to the wrong target, real directories, and leftover files — instead of failing with EEXIST.
- Symlink creation is now idempotent when the path already points to the correct target.
v0.8.0
Security config redesign and skills command group.
Features
- Added
skilltap skillscommand group with three subcommands:skills list— unified view of all installed skills across global and project scopes.skills adopt— bring an existing skill directory under skilltap management.skills move— relocate a skill between scopes or agents.
- Added
skilltap config securitycommand and interactive wizard for configuring security settings. - Redesigned security configuration: per-mode settings (interactive vs. agent), presets (
strict,standard,permissive), and per-tap trust overrides replace the previous single-level config. - Updated the config wizard and agent-mode wizard to surface the new per-mode security options.
- Added security configuration section to the Getting Started guide.
Internal
- Added
core/src/skills/discover,adopt, andmovemodules backing the new command group. - Added shell completions for
config securityand theskillssubcommands. - Added tests for security config redesign and skills command group spec coverage.
v0.7.16
- Removed
npxreferences from docs; fixed GitHub Releases URL.
v0.7.15
Authentication overhaul.
- Replaced direct GitHub API HTTP calls with
gitCLI auth — installation now uses your existing git credentials (SSH keys, git credential helpers, etc.) with no extra token setup. - Added
default_git_hostconfig key to set a preferred git host.
v0.7.13
- Added
skilltap tap info <name>command to inspect a registered tap and its available skills.
v0.7.12
- Added 8-second timeout to registry fetch to prevent test and install hangs on slow networks.
v0.7.8 – v0.7.9
Multi-skill remove improvements.
removenow accepts a--globalflag to remove globally-installed skills instead of project-scoped ones.- Fixed
projectRootscoping so removal targets the correct installed.json. - Disambiguation prompt added when a skill name matches across multiple taps in interactive picker.
v0.7.7
- Fixed a bug where installing from multiple sources in a single command would duplicate the first source's skills.
v0.7.5 – v0.7.6
Multi-source install.
skilltap installnow accepts multiple source arguments in one invocation.- When
skillNamesare specified they take precedence over the interactive picker. - Updated docs and shell completions for multi-source usage.
v0.7.3
- Fixed
tap installincorrectly showing stale cached skills; now pre-filters to the requested skill and clears the cache before resolving.
v0.7.2
- Fixed semantic scanning not wiring through
find,tap install, and install-update code paths — warnings were silently dropped in these flows.
v0.7.1
- Fixed
self-updateincorrectly reporting "already up to date" when the update cache was absent or stale.
v0.7.0
Install UX and architectural cleanup.
- Refactored toward single-source definitions across agent metadata and config enum arrays.
- Install now shows per-step progress UI.
tap installrefreshes the tap on update so you always see current skill versions.doctorno longer falsely flags linked skills as orphans or wrong-target.tap installpre-selects already-installed skills so deselecting one removes it.- Fixed zsh multi-remove completion; dropped phantom update flags from completions.
v0.6.6
- Semantic scan progress is now shown during
update— no more silent wait on large skill sets.
v0.6.5
Agent selection and install-on-existing behavior.
findandtap installnow prompt for agent selection when no default agent is configured.- Installing a skill that already exists triggers an update instead of failing.
- Update refreshes symlinks even when the skill is already at the latest commit.
v0.6.4
- Fixed a Bun crash when the terminal resizes during the config wizard.
v0.6.3
- Added anonymous install telemetry (opt-in).
- Added a persistent footer bar with context-aware keybinding hints to interactive prompts.
v0.5.9
- Added
skilltap config editcommand to open the config file in$EDITOR.
v0.5.7
- Fixed 11 open issues identified via agent-mode audit: edge cases in install, remove, update, and scan flows.
v0.5.5 – v0.5.6
Per-project doctor.
doctornow checks the project-localinstalled.jsonin addition to the global one.installed.jsonis designed to be committed to version control, enabling team-wide skill tracking.- Fixed
self-updatebinary replacement to usecp + rminstead ofmvto avoid cross-device failures.
v0.5.1
- Fixed
verify: bare skill name resolution,--allflag, and YAML block scalar parsing.
v0.5.0
Tap install, multi-select, and GitHub shorthand.
- Added
skilltap tap installsubcommand — browse and install skills from a registered tap interactively. findsearch prompt now supports multi-select mode.tap addnow accepts GitHub shorthand (owner/repo) in addition to full URLs.removeaccepts multiple skill names in one command; shows interactive multiselect when no name is given.- Added
--forceflag toself-updateto bypass the update cache.
v0.4.0 – v0.4.4
Interactive search improvements.
find -ishows descriptions alongside skill names in search results.- Reactive fuzzy search prompt using fzf-style matching.
- Results show source and install count.
- Fixed cross-device binary replacement (
mv→cp + rm). - Added debug logging for shell command errors.
v0.3.9
- Reactive search prompt with fzf fuzzy matching for
find -i. - Reduced static scanner false positives; warning output now includes surrounding context.
- Picker items show source and install count.
v0.3.8
findis now TTY-aware: runs interactive search flow in a terminal, falls back to plain output in pipes/scripts.
v0.3.5 – v0.3.7
Find overhaul and registry switch.
findsupports multi-word queries and sorts results by install count.- Added
--localflag to search only locally-installed skills (no network). - Replaced npm search with the skills.sh registry.
- Added
config get/config setcommands for reading and writing individual config keys from the CLI. - Added first-run telemetry consent prompt; installs now emit an anonymous event.
- Shell completions now document
config get/set, registry config, and install flags.
v0.3.3 – v0.3.4
Telemetry, find scoring, and PATH setup.
findautomatically falls back to npm search and uses scored multi-token ranking.- Interactive
finduses fzf for real-time filtering. - Installer script now writes a
PATHexport to the user's shell profile automatically. - Added
telemetrycommand and[telemetry]config section. - Added team/org messaging to landing page and docs.
v0.3.2
Self-update, status, and install UX.
- Added
skilltap self-updateto update the binary in-place from GitHub Releases. - Added
skilltap statusto show currently installed skills and their state. - Improved install conflict handling: clearer prompts, agent selection during install.
- Moved skills to
.agents/skills/; symlinks to.claude/skills/andCLAUDE.md. - Added nklisch/skilltap-skills as the official tap.
- Linked docs to the official Agent Skills specification.
- Added interactive PTY test harness for
@clack/promptsflows.
v0.3.1
- Added install confirmation prompts.
- Fixed inaccuracies found by implementation audit of docs/spec.
- Improved terminal demo: accurate security warning format, interactive scope/agent prompts.
v0.3.0
Shell completions, doctor, create/verify, and first npm release.
- Added shell completions for bash, zsh, and fish (
skilltap completions). - Added
skilltap doctorto diagnose broken symlinks, missing installs, and config issues. - Added
skilltap create(scaffold a new skill) andskilltap verify(validate SKILL.md). - Published to npm; added install script and Homebrew formula.
- Added cross-platform release workflow and semantic scan landing page animations.
v0.2.0
Registry taps, npm skills, trust system, and distribution.
- Added HTTP registry tap support — point a tap at a hosted
tap.jsonindex. - Added npm source adapter — install skills published to npm with
npm:<package>. - Added trust resolution system: skills from trusted taps skip re-confirmation.
- Added interactive agent selection prompt during install when multiple agents are detected.
- Added install script, Homebrew formula, and GitHub Releases workflow.
- Added full CI pipeline.
- Security: overlap chunks to catch cross-boundary split attacks; hardened semantic prompt.
v0.1.0
Initial release.
- Core install/remove/update flow for agent skills from any git source.
- Static security scanner with 7 pattern detectors (trojan source, homoglyphs, hidden Unicode, suspicious base64, etc.).
- Semantic scan via local agent CLI (Claude Code, Cursor, Ollama, etc.).
- Source adapters: git URL, GitHub shorthand, local path.
- Agent symlinks: Claude Code →
.claude/skills/, Cursor →.cursor/skills/, etc. - Tap management:
tap add,tap list,tap remove,tap update. findcommand for skill discovery.- Config wizard with TOML config file.
- Agent mode for non-interactive use in automation.