github runkids/skillshare v0.16.12

latest releases: v0.19.3, v0.19.2, v0.19.1...
one month ago

skillshare v0.16.12 Release Notes

Release date: 2026-03-05

TL;DR

v0.16.12 adds structured JSON output to 8 more commands, bringing total --json coverage to all 12 major CLI commands. Every command now has a machine-readable output mode for agent consumption and CI/CD pipelines:

  1. 8 new --json commands — sync, install, update, uninstall, collect, target list, status, diff
  2. Non-interactive by design--json on mutating commands implies --force (skips prompts)
  3. Clean stdout — TUI, spinners, and progress suppressed; structured data to stdout only

No breaking changes. Drop-in upgrade from v0.16.11.


Structured JSON Output

The problem

AI agents (Claude Code, Codex, Cursor) and CI pipelines need to parse CLI output programmatically. Text output with colors, spinners, and tables is designed for humans — parsing it with grep/regex is brittle and breaks when formatting changes between versions.

Solution

8 commands gain --json support in two phases:

Phase 1 — Mutating commands:

Command --json implies Example
sync (none) skillshare sync --json | jq '.errors'
install --force --all skillshare install github.com/user/repo --json
update --force skillshare update --json | jq '.updated'
uninstall --force skillshare uninstall my-skill --json
collect --force skillshare collect ./path --json

Phase 2 — Read-only commands:

Command Example
target list skillshare target list --json | jq '.[].name'
status skillshare status --json
diff skillshare diff --json | jq '.files'

Previously supported (unchanged):

Command Flag
audit --format json (also --json as deprecated alias)
log --json (JSONL — one object per line)
check --json
list --json / -j

Design decisions

  • Per-command JSON schema — each command defines its own output struct (e.g., syncJSONOutput, installJSONOutput). No universal envelope — keeps each schema focused and documented.
  • writeJSON() helper — shared function with recursive nil-slice-to-empty-array conversion. Ensures jq never sees null where it expects [].
  • --json implies --force for mutating commands — agents can't answer interactive prompts, so JSON mode skips them. This is safe because the caller explicitly opted into machine mode.
  • Stderr for progress, stdout for JSON — spinners and progress indicators go to stderr so they don't corrupt the JSON stream. jq piping works cleanly.

Usage patterns

# Agent workflow: install → verify → sync
skillshare install github.com/team/skills --json | jq -e '.skills | length > 0'
skillshare sync --json | jq -e '.errors == 0'

# CI pipeline: check for updates
skillshare check --json | jq '.tracked_repos[] | select(.has_update)'

# Dashboard: get full status
skillshare status --json | jq '{skills: .skills | length, targets: .targets | length}'

Changelog

  • b366f61 chore: formatting alignment and changelog jq example fix
  • f03ba45 chore: update docs
  • 02aa2b2 feat(cli): add --json output to 8 commands (Phase 1+2)
  • 5c31332 feat(skill): add --json assertion guidance to cli-e2e-test skill
  • 18bfe5f feat(skill): improve built-in skill for v0.16.12
  • bcf31d8 fix(audit): show actual active analyzers in status --json output
  • 9982c2e fix(cli): clean up --json output code after review
  • 6b4a878 fix(cli): ensure --json mode outputs pure JSON to stdout
  • 18cd0ec fix(cli): preserve non-zero exit code for --json error paths
  • 4b09d2e fix(cli): redirect JSON-mode UI to /dev/null and add status --project --json
  • 9a12df0 fix(cli): restore argument validation for status --project mode
  • b5430e0 fix(cli): suppress UI output in --json mode for install, diff, uninstall
  • d707fc6 fix(cli): suppress stderr progress messages in --json mode
  • 1a4de5d fix(cli): use errors.As for jsonSilentError check in main
  • 8ddf685 fix(cli): wrap collect/sync JSON errors with jsonSilentError
  • 7223ac5 fix(sync): preserve non-json dry-run output stream
  • 6ad930f perf(cli): parallelize git dirty checks in status --json
  • 0d59f15 refactor(cli): deduplicate JSON output helpers and fix ResolvePolicy semantics
  • 4535da1 refactor(cli): return updateResult from single-target update handlers

Don't miss a new skillshare release

NewReleases is sending notifications on new releases.