Skip to main content

Update flow

haus update keeps your project's .claude/ in sync with the latest catalog.

Lock file integrity

Each applied item is recorded in .haus-workflow/haus.lock.json with a content hash. On re-apply:

  • Hash matches lock → item is overwritable; update proceeds
  • Hash differs from lock → item was user-edited; update skips and warns

This means you can safely edit catalog-installed files locally — haus will not silently overwrite your changes.

Offline fallback

haus-workflow ships a bundled fallback manifest.json (at the npm package version). If the catalog fetch fails, haus falls back to the bundled manifest and warns. Items that are missing from the local cache are skipped.

Two independent version numbers

It's easy to conflate these, but they track different things:

  • manifest.json's top-level version — bumped on every catalog release, regardless of which items changed. The CLI records the catalog ref your project last synced against and compares it against this to tell whether you're behind.
  • Each item's own version field — bumped only when a file under that specific item's path changes. CI catches a missed bump on any PR that touches an item's content without incrementing it.

So a fresh haus update after a catalog release might report "up to date" on most items even though the manifest version moved — only items whose own version actually changed get re-fetched and re-applied.