# sccs v2.46.0 | Claude Code Sync Tool (UV)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ Setup:      uv venv --python 3.12 && venv+ && uv pip install -e ".[dev]"
▸ Sync:       sccs sync --dry-run
▸ Sync+Git:   sccs sync --commit --push
▸ Sync+Docs:  sccs sync --docs --commit --push
▸ New cats:   sccs sync --migrate              # v2.44.0: opt-in new-category prompt (default OFF); or `sccs config upgrade`
▸ Status:     sccs status
▸ Docs:       sccs docs generate --dry-run
▸ Categories: sccs categories list --all
▸ Test:       pytest --cov=sccs
▸ Lint:       ruff check sccs/ tests/ && ruff format --check sccs/ tests/

# Doctor (System & Plugin Health)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ Check:      sccs doctor check                # v2.42.0: live update-check (OUTDATED rows + hint)
▸ Check off:  sccs doctor check --no-update-check  # offline/fast, no npm view / marketplace refresh
▸ Install:    sccs doctor install
▸ Update:     sccs doctor update
▸ Optimize:   sccs doctor optimize           # v2.30.0: install+update+drift warning
▸ Optimize+:  sccs doctor optimize --strict  # v2.30.0: queue uninstall for foreign plugins/MCP
  (checks Node.js, claude CLI, plugins, npx tools, ~/.npm + ~/.claude permissions)
  (v2.31.0: also strips doctor.disallowed_hooks from ~/.claude/settings.json after every pass)
  (v2.32.0: doctor.protected_hooks ['gsd-'] never stripped; update/optimize auto-run safe maintenance, destructive still confirms)
  (v2.32.1: npm-bin-global check gates install on <prefix>/bin too; system npm prefixes → user-local ~/.npm-global only, no chown)
  (v2.33.0: PluginSpec.allowlist_only — LSPs + frontend-design@claude-code-plugins are foreign-drift allowlist only, no MISSING/OUTDATED/marketplace block; check↔update now converges)
  (v2.33.2: reporter never recommends `sudo chown /usr/bin` — fix_command returns None for system/multi-user paths; reporter delegates to safe `_npm_global_fix_block`; label `npm bin -g` → `npm prefix bin`; restart-shell hint after fix)
  (v2.40.0: GSD tool redux→@opengsd/gsd-core; MIN_NODE 20→22; orphan-cleanup MOVES stale gsd-*/get-shit-done to ~/.config/sccs/gsd-orphans-backup-<ts>/ on install/update, confirm-gated)
  (v2.42.0: check live-detects newer versions — npx via `npm view <npm_package>`, plugins via marketplace manifest → OUTDATED + "Updates available" hint; informational only, exit unchanged; --no-update-check for offline)
  (v2.42.1: check shows Node.js install/upgrade cmd inline below the table | v2.42.2: subprocess wrappers force UTF-8 decode → no Windows cp1252 crash)
  (v2.43.0: opt-in `doctor.cli_tools: [zoxide, coreutils]` — detect+install optional CLI tools; zoxide all-OS, coreutils Windows-only via winget; `winget list` catches WinGet-Links PATH trap; informational, never exit 1)
  (v2.43.1: Windows npm/npx .cmd wrappers run via `cmd.exe /c` so `doctor install` works | v2.43.2: npm-prefix-bin = prefix itself on Windows (no /bin) → no false MISSING; PATH-fix block is PowerShell on Windows)
  (v2.45.0: Windows-only pwsh-7 check — `doctor check` flags PowerShell <7 / missing + suggests `winget install/upgrade --id Microsoft.PowerShell`; suggestion only, never exit 1, hidden off-Windows)
  (v2.45.1: Windows Node.js install hint → Chocolatey (`irm …/install.ps1|iex` → `choco install nodejs`, elevated, print-only); winget removed for Node; macOS/Linux unchanged)

# Convert (Fish → PowerShell)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ Convert:    sccs convert fish-to-pwsh --force        # generate PS profile from ~/.config/fish
▸ No comfort: sccs convert fish-to-pwsh --no-conveniences
  (v2.45.0: emits conf.d/95-conveniences.ps1 — ll/la/l (eza/lsd fallback), ../.../...., which/touch/mkcd; loads last, wins over converted ls/ll; --no-conveniences to skip)

# OpenCode Integration (v2.37.0+)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ Status:     sccs integrations opencode status
▸ Map models: sccs integrations opencode map-models   # v2.38.0: assign CC models -> OpenCode models
▸ Agents:     sccs integrations opencode export-agents --dry-run
▸ Commands:   sccs integrations opencode export-commands --dry-run
▸ MCP:        sccs integrations opencode merge-mcp --dry-run
  (skills/rules read natively by OpenCode from ~/.claude; agents/commands/MCP converted one-way)
  (v2.39.0: doctor-managed gsd-*/playwright-cli excluded by default; own patterns via opencode.exclude; -a/-c bypasses exclude)

# Pi Integration (v2.41.0+)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ Status:     sccs integrations pi status
▸ Skills:     sccs integrations pi export-skills --dry-run    # -> ~/.pi/agent/skills/
▸ Agents:     sccs integrations pi export-agents --dry-run    # agents -> skills (Pi has no subagents)
▸ Commands:   sccs integrations pi export-commands --dry-run  # -> ~/.pi/agent/prompts/
▸ All:        sccs integrations pi export-all
  (verbatim copy, no frontmatter conversion / model mapping; gsd-* excluded by default, -s/-a/-c bypasses)

# PyPI Publishing
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
▸ Build:      uv build
▸ TestPyPI:   uv publish --publish-url https://test.pypi.org/legacy/
▸ PyPI:       uv publish
