Behavior-preserving cleanups:
- extract shared resolveBaseUrl helper for jira/confluence base-URL logic
- extract shared registerTool helper; port jira/gitlab/confluence tools to it
- make scanSecrets declarative (filter/map)
- collapse ok/warn pair into status() and drop double existsSync in kit-doctor
Typecheck clean; npm test 71 PASS, 0 FAIL.
- uninstall.sh: removes pi-kit from settings.json (string + gated object
entries), the package clone, kit-installed public skills, ~/.config/pi-kit
(env.sh with tokens, audit.jsonl) and the shell-rc sourcing block
- confirmation prompt by default; PI_KIT_UNINSTALL=1 for non-interactive,
PI_KIT_KEEP_CONFIG=1 / PI_KIT_KEEP_SKILLS=1 to retain parts
- works without the pi binary (settings edited directly); notes how to
remove pi itself
- tests: test/uninstall.test.sh against a throwaway $HOME (14 checks:
full/partial removal, refusal without flag, idempotent re-run), wired
into npm test