skillshare v0.19.0 Release Notes
Release date: 2026-04-11
TL;DR
- Agent management — agents are a first-class resource type alongside skills. Install, sync, audit, update, uninstall, and back them up with the same workflow
- Positional kind filter —
skillshare sync agents,skillshare audit agents, and so on. Commands default to skills when no keyword is given (existing behavior unchanged) - Agent auto-detection —
installdetects agents inagents/subdirectories, mixed-kind repos, and pure-agent repos. Tracked agent repos are supported with git-pull updates - Unified Web UI Resources — the old
/skillspage is now/resourceswith Skills and Agents tabs. Targets, Update, Filter Studio, and Audit pages all support both kinds - Centralized
.metadata.json— a single metadata file replaces the oldregistry.yaml+ per-skill sidecar files, with automatic migration on first load. Fixes long-standing nested-name collisions - Theme system — light/dark terminal palette with
SKILLSHARE_THEME, WCAG-AA-compliant light colours, OSC 11 auto-detection - Audit
--allflag removed — superseded by the positional kind filter (audit agents)
Agent Management
Agents are now a core resource type in skillshare. Until v0.18, skillshare only synced skills (directories with a SKILL.md). v0.19 adds a parallel track for agents — single .md files representing custom agent definitions — that targets like Claude Code, Cursor, OpenCode, and Augment can consume directly.
Everything you can do with skills, you can now do with agents:
skillshare install github.com/team/agents-repo # auto-detects agents
skillshare sync agents # sync agents only
skillshare sync --all # sync skills + agents + extras
skillshare list agents # list installed agents
skillshare check agents # detect drift on tracked agent repos
skillshare update agents --all # update every agent
skillshare audit agents # scan agents for security issues
skillshare uninstall agents my-agent # uninstall a single agent
skillshare enable my-agent --kind agent
skillshare disable my-agent --kind agentMost commands take a positional agents keyword as a kind filter. Without the keyword, commands default to skills — so existing scripts and muscle memory keep working.
Agent source directory
Agents live in their own source directory alongside skills:
~/.config/skillshare/
├── skills/ ← SKILL.md directories (unchanged)
├── agents/ ← single .md agent files (new)
└── extras/ ← rules, commands, prompts (unchanged)
In project mode, the layout mirrors this under .skillshare/. skillshare init and skillshare init -p automatically create the agents/ directory on first run.
The path is configurable via a new agents_source field in the config file, which works exactly like the existing source field for skills.
Installing agents from repos
skillshare install auto-detects three agent repo layouts:
agents/convention — a subdirectory calledagents/containing.mdfiles- Mixed-kind repos — a repo that has both
SKILL.mddirectories and anagents/folder - Pure-agent repos — no
SKILL.md, noagents/folder, but root-level.mdfiles
Conventional files (README.md, LICENSE.md, CHANGELOG.md) are automatically excluded from agent discovery so you don't have to list them manually.
If you want to be explicit, use the new flags:
skillshare install github.com/team/repo --kind agent # force agent mode
skillshare install github.com/team/repo --agent foo # install specific agentsAgent installs go through the same audit gate as skills. Use --force, --skip-audit, or --audit-threshold to adjust.
Tracked agent repos
Agents support --track for pull-based updates, the same way tracked skill repos already work. check, update, doctor, and uninstall all recognise tracked agent repos, and the --group / -G flag lets you filter by repo group when you have several installed.
Nested agents (e.g. demo/code-reviewer.md inside a tracked repo) are discovered correctly via the recursive walk.
Sync modes
Agent sync supports all three modes:
- merge (default) — creates per-file symlinks in the target's
agentspath - symlink — symlinks the whole
agents/directory - copy — hard copy of each agent file
Targets that don't declare an agents: path (for example, targets that only support skills) are skipped automatically, with a warning so you know why nothing changed.
Before any agent sync runs, the existing agent files in each target are backed up, matching how skill sync already works. Restore is available from the backup and trash TUIs, which tag agents with an [A] badge and route restores to the correct source directory.
.agentignore
Agents can be excluded from sync via .agentignore and .agentignore.local, using the same gitignore-style pattern syntax as .skillignore. The Web UI Config page has a new .agentignore tab that edits the file with live pattern preview and ignored-file counts.
Project-mode agent support
Every agent command works in project mode with -p. Agents are reconciled into .skillshare/agents/ alongside skills, respecting the project's agents_source and filters.
JSON output
skillshare install --json and skillshare update --json now emit agent-aware payloads and apply the same audit block-threshold gate as skills. Useful for scripted agent workflows in CI:
skillshare update agents --json --audit-threshold highKind badges everywhere
The TUI and Web UI surface [S] / [A] badges so you can tell at a glance what kind of resource you're looking at — in list, diff, audit, trash, backup, update, targets, collect, and detail views. The list TUI also has a new k:kind filter tag for quick agent/skill filtering inside the fuzzy filter.
Unified Web UI Resources
/resources route
The old /skills page has been renamed to /resources and now has Skills and Agents tabs. Tab state persists to localStorage, and the underline tab style follows the active theme (playful mode gets wobble borders). The page shows a single resource count in the header, with counts split across the tabs.
Targets page redesign
The Targets page now has equal Skills and Agents sections, each with its own filter editor and target picker. Adding a target opens a modal picker with kind-aware presets. Links to Filter Studio include a ?kind= param, so clicking "Edit filters" jumps you directly into the right context.
Update page three-phase flow
The Update page has been redesigned around a clearer three-phase flow: selecting → updating → done. The selecting phase has tabs for Skills and Agents, group-based sorting, and grouped status cards. The updating phase streams progress via EventSource with proper cleanup on page change. The done phase summarizes what happened.
Filter Studio agent support
Filter Studio is a single-context view driven by the ?kind=skill|agent query param. Each context edits its own include/exclude patterns and sync mode. The skillshare target <name> command gained a parallel set of flags for agent filters, mirroring the existing skill filter flags:
skillshare target claude --add-agent-include "team-*"
skillshare target claude --add-agent-exclude "legacy/*"
skillshare target claude --remove-agent-include "team-*"
skillshare target claude --remove-agent-exclude "legacy/*"
skillshare target claude --agent-mode copy # merge | symlink | copyThe same changes are exposed in the Web UI via PATCH /api/targets/:name, which now accepts agent_include, agent_exclude, and agent_mode fields alongside their skill counterparts. The overview API also returns agentsSource and extrasSource alongside the skills source, so the UI can show the full picture.
Audit cache
Audit results are now cached with React Query and invalidated on mutation, so repeated visits to the Audit page are instant. The audit card icon colour on the dashboard follows the max severity instead of being static, and the card count no longer mixes agent totals with finding counts. _cross-skill findings are excluded from the card total and shown in a separate slot.
Collect page
The Collect page has a new segmented control for switching between collecting skills and agents from existing targets.
Centralized .metadata.json
Installation metadata used to be split across two places: a top-level registry.yaml keyed by skill basename, and per-skill .skillshare-meta.json sidecar files. This caused subtle bugs with grouped skills — two skills both named dev in different folders would clash in the basename-keyed registry.
v0.19 consolidates everything into a single ~/.config/skillshare/skills/.metadata.json file (and an equivalent one under agents/), keyed by the full source-relative path. Atomic writes, single source of truth, no more collisions.
Automatic migration
The first time any v0.19 command loads metadata, it:
- Detects any existing
registry.yamland per-skill sidecar files - Merges them into a unified
.metadata.json - Deletes the old files
This is idempotent — if .metadata.json already exists, no migration runs. No user action required; upgrades Just Work.
Theme System
A new internal/theme package provides a unified light/dark terminal palette. Resolution order:
NO_COLORenv var → colours disabledSKILLSHARE_THEME=light→ forced light paletteSKILLSHARE_THEME=dark→ forced dark paletteSKILLSHARE_THEME=auto(or unset) → probe the terminal via OSC 11- Fallback → dark palette
SKILLSHARE_THEME=light skillshare list
SKILLSHARE_THEME=dark skillshare auditThe dark primary colour has been softened for easier reading on black backgrounds, and the new light palette is WCAG-AA compliant against white terminals. Every TUI, plain CLI output, audit display, and list grouping now routes through the theme, so colour consistency is global.
skillshare doctor includes a theme check to help debug terminals that report the wrong background.
Install & TUI Polish
Explicit SKILL.md URLs resolve to one skill
Pasting a direct blob/.../SKILL.md URL now installs only that skill, bypassing the orchestrator pack selection prompt. Previously, the URL would trigger the full multi-select picker even though the user's intent was clear.
skillshare install https://github.com/team/repo/blob/main/frontend/tdd/SKILL.mdRefs: #124
Radio checklist follows the cursor
The single-select (radio) TUI used for orchestrator selection, branch selection, and other one-of-N prompts has been reworked. Selection now follows the cursor automatically — there's no "empty selection" edge case where pressing Enter does nothing. Space keeps exactly one item active; Enter confirms the focused row.
Diff TUI redesign
The diff TUI now renders single-line items grouped under repo headers, instead of the old verbose per-item layout. Agent diffs show an [A] badge so you can tell them apart from skill diffs.
List TUI groupings
skillshare list now groups entries by tracked repo root and local top directory in the TUI, with cleaner tab bar layout in the split-detail view. The tab bar no longer gets clipped on narrow terminals.
Bug Fixes
- Sync extras
agentstarget collision — targets that declared an extras entry calledagentsno longer conflict with the new agent sync; these extras are automatically skipped when agent sync is active - Doctor drift count — agents disabled via
.agentignoreno longer count toward the drift total - Audit card totals — the dashboard audit card no longer mixes agent counts with finding counts
- Audit scans all agents — the audit walker includes disabled agents, so hidden agents still get security-checked
- Sync extras formatting — removed a stray space between the checkmark and path in
syncextras output; summary headers are now consistent across skills, agents, and extras - UI skill detail in agent mode — the detail page hides the Files section for single-file agents, remembers the selected tab via localStorage, and shows the correct folder-view labels
- Sync page layout — the stats row and ignored-skills grouping are easier to scan
- Button warning variant — the shared
Buttoncomponent now supports thewarningvariant that several pages were already referencing - Check progress pop-in — removed the loading progress bar that caused layout shift on the Skills page
- Tracked repo check status — the check status is now propagated to every item inside the repo, not just the root
- Doctor target colouring — only the status word is coloured in
skillshare doctortarget rows, not the whole line
Breaking Changes
audit --all flag removed
The --all flag on skillshare audit has been removed. Audit now runs per resource kind, and the kind is selected via the positional keyword:
skillshare audit # scan skills (default, unchanged)
skillshare audit agents # scan agents onlyThe Web UI audit page has dedicated Skills/Agents tabs, so the old "scan everything at once" mode is no longer needed at the CLI level either. If you previously scripted audit --all, replace it with two calls (audit and audit agents) or use the JSON output of each.
Migration Guide
For most users: nothing to do. Upgrade via your usual method and the tooling handles everything:
- The first command run will migrate
registry.yaml+ sidecar files into.metadata.json skillshare init(or an implicit config-save) will create the newagents/source directory- Existing skill workflows are unchanged
If you scripted audit --all: replace with two calls:
# Before
skillshare audit --all
# After
skillshare audit
skillshare audit agentsIf you want to try agents: start by installing an agent repo or creating an agents/ folder under your source:
mkdir -p ~/.config/skillshare/agents
cp my-custom-agent.md ~/.config/skillshare/agents/
skillshare sync agentsChangelog
- 43c5154 Flatten nested agent sync names
- b8a189b Improve resource install agent support
- f159f9e Merge pull request #126 from runkids/feat/agents
- 7a010a9 chore: release v0.18.9
- f2a6a39 chore: release v0.19.0
- 424a9df chore: remove debug test files and local metadata
- 19d88ce chore: update schema and red team scripts for centralized metadata
- 806045d docs(agents): expand docs + skillshare SKILL.md for agent workflows
- d4bd0a6 docs(sync,diff): fix agent sync description and add agent diff section
- 294be5f docs(ui): update sync page and API description for kind param
- 788f9bc feat(agents): JSON output + audit gate for install/update
- ebcfaf6 feat(agents): add --group support, fix nested discovery, and improve TUI dispatch
- cb55ffe feat(agents): add positional kind filter and wire agents into list, sync, update, uninstall, collect, trash
- 30f8fb0 feat(agents): add project-mode backup and restore for agents
- 075c019 feat(agents): implement project-mode agent support for all commands
- 95c46ca feat(agents): wire backup/restore and update CLI help text (Phase 4)
- c2b9a15 feat(agents): wire kind filter into status, diff, doctor (Phase 3)
- 6f2932c feat(api): add agent support to overview, skills, and targets endpoints
- c176d89 feat(api): add kind field to sync, audit, check, update, and install handlers
- baf6b18 feat(audit): add Kind field to Result, Noun helpers to kind_filter, remove --all flag
- 86461ec feat(audit): add Skills/Agents tab switching to TUI
- c6f24ab feat(audit): dynamize skill/agent terminology in CLI output
- 5dc981a feat(audit): wire agent-only audit filtering via kind arg
- 9eaaae5 feat(backup): auto backup agents before sync in global and project mode
- 2cb830f feat(check): add remote update detection for tracked agents
- 949fd44 feat(check,trash): add agent drift detection and agent trash support
- e29a42d feat(cli): add kind arg to update command and kind field to diff output
- 57cfab7 feat(cli): add kind filter to check and uninstall commands
- e2101ab feat(cli): add resource kind filter parsing for CLI commands
- b23425a feat(cli): tracked agent repo support in install, check, update, doctor
- 47da532 feat(cli,api): add agent info to status, doctor, and trash handler
- c049ccd feat(config): add agents_source field and create agents directory on init
- 89d40af feat(diff-tui): single-line items with group headers
- 9f77ac0 feat(install): add TUI multi-select and batch progress for agent install
- ba1b03f feat(install): add agent discovery, install flow, and --kind/--agent flags
- 91057c1 feat(install): detect and install agents from pure-agent repos
- 8ed32e2 feat(install): discover agents in tracked repos on clone and update
- d892eca feat(install): explicit SKILL.md URLs resolve to single skill + radio TUI follows cursor
- 5160ed5 feat(resource): add ResourceKind interface, SkillKind/AgentKind implementations, and reserved name validation
- e1c94b5 feat(server): add ?kind=agents param to audit API handlers
- 3350920 feat(server): add computeAgentTargetDiff for agent diff in UI
- da000c4 feat(server): agent tracked repo install, prune-on-empty, audit guards
- 4b37f1f feat(server): extend collect endpoint to pull agents via kind field
- 4834e45 feat(server): extend collect scan to support kind=agent parameter
- 55e2e0e feat(server): include agent diffs in handleDiff and handleDiffStream
- d1ac3dd feat(server): support kind param in POST /api/sync
- 9a4fbdc feat(sync): add agent sync engine with merge, symlink, and copy modes
- 49d3393 feat(sync): skip extras 'agents' targets that overlap with agents sync
- 73d4d32 feat(sync): warn when targets are skipped for agents (no agents path)
- 36e2247 feat(theme): add internal/theme package with palettes and detection
- 585b3cd feat(tui): add [S]/[A] kind prefix in All tab and group by kind
- dc4ef27 feat(tui): add agent badge and correct restore routing in trash TUI
- be962fd feat(tui): add k:kind filter tag for agent/skill filtering in list
- 5afaf57 feat(tui): add tab switching between skills/agents in list TUI
- 3c3139f feat(tui): pass agentsSourcePath and route actions per kind in list TUI
- 11aebd2 feat(tui): show agent badge and route agent restore in backup restore TUI
- 98bd7d7 feat(tui): show agent diffs with [A] badge in diff TUI
- a941b61 feat(tui): support agent content viewing in list detail panel
- 0efdb64 feat(ui): add .agentignore tab to Config page
- abd2328 feat(ui): add KindBadge to CollectPage and BatchUninstallPage
- 35fcb74 feat(ui): add SegmentedControl for agent scope on Collect page
- 833fc86 feat(ui): add Skills/Agents tab bar to audit page
- 5536cac feat(ui): add agent kind types to API client and KindBadge component
- 9a053a3 feat(ui): add agent stat card, kind filter tabs, and kind fields to API handlers
- 2475acd feat(ui): add agent support to batch uninstall and trash pages
- dfd69b7 feat(ui): add kind param to sync API client
- 17ab4aa feat(ui): add skills/agents tabs and group-based sort to UpdatePage
- 3dfbff7 feat(ui): add sync scope control and kind-separated summary
- 5c99a1c feat(ui): audit cache invalidation, agent target display, UX polish
- 91eabf3 feat(ui): cache audit results with React Query
- bf2aff0 feat(ui): extend collect API client with kind parameter
- 3db5e02 feat(ui): redesign Targets page with equal Skills/Agents sections and modal picker
- 3df973c feat(ui): redesign UpdatePage with selecting/updating/done phases
- f5af6c3 feat(ui): unify skills/agents under /resources route and API
- e4301f5 feat(ui,api): kind-first install flow for mixed repos + discover agents
- 017dc22 feat: add --kind agent to enable/disable and agent path to TargetsPage
- 12f8c52 feat: add .agentignore support and agent file validation
- e9eee35 feat: add MetadataStore Load/Save with atomic writes
- dad90d7 feat: add MetadataStore core types and CRUD operations
- fa5679d feat: add MetadataStore helpers (SetFromSource, ComputeEntryHashes, RefreshHashes)
- 5836a88 feat: add agent filter support to Filter Studio, targets CLI, and overview API
- 6659898 feat: add kind badge to SkillDetailPage and kind arg to audit command
- 2f4021f feat: add kind badge to list TUI and remaining frontend pages
- ce6be17 feat: add migration from old sidecar + registry to .metadata.json
- 7e30699 feat: add tracked agent repo discovery and install support
- 4c43506 feat: agent detail endpoint, project reconcile, and TrashPage badge
- ca73b40 feat: warn when agents installed/synced but no targets support agents
- 586f0f5 fix(agents): correct project-mode agent dispatch for all commands
- 92d5fc6 fix(agents): exclude convention files and respect agents/ subdir in tracked repos
- 486f135 fix(audit): exclude _cross-skill from TUI tab counts
- ff1aedf fix(audit): group agents by directory in TUI
- 1b9ba78 fix(audit): scan agents as individual files, not directories
- 4034747 fix(audit): scan all agents including disabled ones
- 4c0674d fix(audit): set agentsSourcePath in project mode for TUI tab
- 33cbd17 fix(audit): show 'No skills/agents' instead of 'No items' in TUI
- 40dca83 fix(cli): agent diff drift detection and sync prune when source empty
- 49dcbd0 fix(doctor): exclude disabled agents from drift count
- a2d3b47 fix(install): discover agents in subdir URLs and fix single-item kind routing
- f3176da fix(install): include root skill in individual selection for orchestrator repos
- 50b0aba fix(install): install orchestrator children as independent skills
- 072d8b9 fix(install): resolve blob URLs pointing at SKILL.md to the skill directory
- 60489b3 fix(install): route agent installs to agents source directory
- 4e200e3 fix(install): validate git source in InferTrackedKind before clone attempt
- ed924c9 fix(list): fix tab bar clipped off screen in split layout
- ce7c7d1 fix(list): group TUI entries by tracked repo root and local top dir
- f0f371c fix(list): group agents by directory in TUI
- 2a91a72 fix(server): sync matrix agent handling and stale test routes
- 30da704 fix(sync): pass -g flag to cmdSyncExtras in global --all mode
- 34c275a fix(sync): remove extra indent between checkmark and path in extras output
- 6d1f675 fix(sync): strip .md extension in agent filter matching and add tests
- 5476ec8 fix(tests): remove unused os import in install_online_test
- 526fbbd fix(ui): add missing 'warning' variant to Button component
- 7537872 fix(ui): address spec compliance issues in UpdatePage
- 974c3d5 fix(ui): agent detail hides Files, tab persists to localStorage, folder view labels
- 6c339da fix(ui): align checkbox with first text line and fix install summary label
- 0e314e1 fix(ui): apply Track badge and name formatting to sticky folder header
- 1249062 fix(ui): audit card icon color follows max severity
- 9ffc7bb fix(ui): center-align checkbox with skill name in picker modal
- da4f460 fix(ui): dynamic picker modal title based on resource kind
- 01a6f66 fix(ui): exclude _cross-skill from audit card count and show separately
- e1c6549 fix(ui): fix audit summary mixing agent counts with finding counts
- cbbfcde fix(ui): improve Sync page stats layout and ignored section grouping
- d690408 fix(ui): increase spacing between Resources header and tabs
- 353f0cb fix(ui): match audit tab style to resources page
- c501e55 fix(ui): propagate tracked repo check status to all items in the repo
- 7a319fa fix(ui): remove duplicate Track badge from card view
- 8d8434d fix(ui): remove pop-in check progress bar to avoid layout shift
- 84c6031 fix(ui): remove redundant count subtitle from Resources page header
- 0838ee6 fix(ui): replace Track badge with GitBranch icon in tree view
- 5f7d9ad fix(ui): resolve TypeScript errors — add ResourceTab type, useSearchParams import, tab filtering
- 8970a5e fix(ui): sort table view by group/repo before name
- abeb5b9 fix(ui): unify resource terminology and compact action bars
- 379407e fix(ui): use GitBranch icon instead of folder for tracked repos in tree view
- 273277c fix(ui): use Layers icon for Resources header to avoid tab icon duplication
- e6e41c1 fix(ui): use props instead of parent scope vars in FolderTreeView
- 79b717e fix(ui): use ss-segmented classes for resource tabs to inherit playful theme
- 568d2b7 fix: address code review findings
- 9be0ea0 fix: agent list metadata, detail lookup, card icon, and time format
- d16c4f3 fix: correct metadata store routing, corruption handling, and lookup depth
- e2a3d70 fix: install agents from mixed repos after skills
- 1ff4360 fix: keep (project) label on Source header only
- fa08916 fix: merge doctor extras check into single line per extra
- 4af128f fix: migrate metadata consumers from Get(basename) to GetByPath
- 9d934f8 fix: pass AgentsSource to Config in project mode install
- bc31eb2 fix: remove leading spaces from target name in status output
- c6564c2 fix: remove leading spaces from ui.Status and Extras output
- 4426ca5 fix: resolve macOS /var → /private/var symlink in agent sync test
- 27f352e fix: resolve relative paths in project mode extras and agent targets
- b526657 fix: rewrite agent update to use discovery + single-file installer
- 1dbfc84 fix: show [merge] mode in agent sub-items for status and doctor
- 36ee2fe fix: tone down doctor target colors — only status word is colored
- 7290884 fix: use full-path metadata keys to prevent grouped skill collisions
- 2d1a370 fix: use merged instead of synced for agent status
- 43d6bd1 refactor(agents): simplify — extract shared helpers, fix path bug, use DirEntry.Type
- 081348d refactor(collect): unify skills/agents flow with collectPlan + generics
- ea055de refactor(registry): rename SkillEntry to ResourceEntry and add unified registry load/save
- ea2abf0 refactor(tui): delete legacy tui_colors.go and add doctor theme check
- 47fe1b8 refactor(tui): migrate list TUIs to theme package
- 8955ce7 refactor(tui): migrate remaining TUIs to theme package
- 3c4d057 refactor(ui): centralize display name formatting via resourceNames utilities
- 03a7b7a refactor(ui): fix quality issues in UpdatePage — EventSource leak, dedup status cards, shared glob utility
- 5b35a0e refactor(ui): migrate plain CLI output to theme.ANSI()
- eff9647 refactor(ui): rename SkillsPage to ResourcesPage with Skills/Agents tabs
- e5d512f refactor(ui): replace SegmentedControl with underline tabs for Skills/Agents
- d3851b1 refactor(ui): underline tabs with playful theme support for resource tabs
- c61033a refactor(ui): use connected SegmentedControl style for Skills/Agents tabs
- 0244abb refactor: consolidate reconcile walk logic into shared core
- 693f75c refactor: deduplicate agent path resolution and add agent backup to sync/target
- 7552c76 refactor: eliminate sidecar reads and use centralized metadata store
- a73d55d refactor: extract agent helpers and simplify duplicated patterns
- 6abfa47 refactor: integrate agent checks into doctor targets section
- 5310297 refactor: mark legacy meta functions as deprecated, skip .metadata.json in hash walk
- e62f729 refactor: partial uninstall migration to MetadataStore
- 8dff3df refactor: pass trash dir to cmdUninstallAgents and update help text
- a726e36 refactor: redesign status output — unified layout with agents in targets
- 67c7010 refactor: remove dead MetadataEntry.Name field and add LoadMetadataOrNew
- d0a1df3 refactor: replace ReadMeta in server handler_skills and handler_update
- ad05ed9 refactor: replace ReadMeta in update handlers with MetadataStore
- 1f1790b refactor: replace Registry with MetadataStore in reconcile, server, install context
- ed1beb1 refactor: replace all remaining ReadMeta/LoadRegistry with MetadataStore
- eadfcf3 refactor: replace positional "all" keyword with --all flag for kind filter
- aaabc3a refactor: simplify audit code — constants, dedup helpers, cache pattern
- 2acfec8 refactor: simplify metadata — extract helpers, remove dual-write, add kind constants
- 525ae0b refactor: status always shows both skills and agents
- 3241159 style(sync): unify summary format and headers across skills, agents, extras
- 6e9177a style: fix gofmt alignment in test files
- 637814a style: gofmt
- eceb9cc test(agents): fill coverage gaps — project mode uninstall, trash empty/delete, multi-target, JSON kind
- 26c5050 test(audit): verify agents/skills audit uses correct terminology
- b93518e test(e2e): add agents runbook and fix all 33 runbooks to 361/361 pass
- 6eb054c test(e2e): add issue #124 orchestrator install runbook
- 275fe3e test(testutil): add RunCLIEnv helper for env-var-based CLI tests
- 031306a test(tui): add integration tests for agent TUI features