Background: Rich avoided /gsd-update for several months because the pre-1.41 installer clean-wiped commands/gsd/, get-shit-done/, and agents/gsd-* — losing any hand-edits and any user-added files that happened to live in those dirs (e.g. TT spike skills under skills/).

What changed (GSD 1.41.0, 7 May 2026): the installer now performs a first-time user baseline scan — it walks the runtime dir and records every file NOT in gsd-file-manifest.json as a “user baseline” file. Those files are then protected across all future updates. On the 1.40.0 → 1.42.3 upgrade run on Friday 22 May 2026, the installer logged:

✓ Installer migrations
   recorded 356 managed baseline files — first-time baseline scan
   preserved 11 user baseline files — first-time baseline scan

The 11 preserved files included all 6 of Rich’s custom TT skills (dispatching-spikes, harvesting-spike-evidence, planning-spike-suites, running-spike-suites, tt-research-capture, review-plan) plus the context-mode-cache-heal.mjs hook + a few audit-record / script siblings.

Belt-and-braces backup remains: The /gsd-update skill workflow also runs gsd-tools.cjs detect-custom-files and copies anything not in the manifest to ~/.claude/gsd-user-files-backup/ BEFORE the install runs. Empirical diff after the 1.40.0 → 1.42.3 run: diff -rq backup current = empty (all 10 detected custom files unchanged). So even if the baseline-preservation logic had a bug, the workflow-side backup catches it.

How to apply:

  • Future /gsd-update runs are safe by default — no need to manually back up custom skills/hooks/agents first.
  • If Rich hand-edits a canonical gsd-* agent file (one that IS in the manifest), that edit will still be overwritten. To preserve hand-edits to managed files, the installer auto-stages them to gsd-local-patches/ and they can be re-merged with /gsd-update --reapply (three-way merge).
  • The detect-custom-files JSON output ({ custom_files: [...], custom_count: N, manifest_found: true, manifest_version: "X.Y.Z" }) is queryable via node ~/.claude/get-shit-done/bin/gsd-tools.cjs detect-custom-files --config-dir ~/.claude — useful before any GSD-touching operation.
  • If updating to a major version (1.x → 2.x) check the changelog for any baseline-format migration.

Cross-link: feedback_substrate_search_locations_file_is_canonical (substrate search discipline); installer source at ~/.claude/get-shit-done/workflows/update.md step backup_custom_files.