@haus-tech/haus-workflow 0.16.0 → 0.16.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.16.2](https://github.com/WeAreHausTech/haus-workflow/compare/v0.16.1...v0.16.2) (2026-06-09)
4
+
5
+ ## [0.16.1](https://github.com/WeAreHausTech/haus-workflow/compare/v0.16.0...v0.16.1) (2026-06-09)
6
+
3
7
  ## [0.16.0](https://github.com/WeAreHausTech/haus-workflow/compare/v0.15.0...v0.16.0) (2026-06-05)
4
8
 
5
9
  ### Features
package/README.md CHANGED
@@ -29,13 +29,17 @@ and configures the repo for you.
29
29
 
30
30
  Once installed, Claude Code gains a `/haus-workflow` slash command.
31
31
 
32
+ The `project:*` tasks act on the current repo. The unprefixed verbs (`update`,
33
+ `catalog`, `install`, `uninstall`) manage the haus tool itself on your machine
34
+ (`~/.claude` + npm), like `npm install -g`. The short legacy names still work.
35
+
32
36
  ```
33
- /haus-workflow # interactive menu — pick setup, update, refresh, etc.
34
- /haus-workflow init # first-time project setup
35
- /haus-workflow apply # refresh .claude/ and regenerate CLAUDE.md imports
36
- /haus-workflow update # update npm package + catalog + ~/.claude/
37
- /haus-workflow catalog # fetch only latest catalog
38
- /haus-workflow doctor # health check for drift
37
+ /haus-workflow # interactive menu — pick a task
38
+ /haus-workflow project:init # [project] add haus to an EXISTING repo — AI skills, commands, workflow + docs
39
+ /haus-workflow project:refresh # [project] refresh .claude/ and regenerate CLAUDE.md imports
40
+ /haus-workflow project:doctor # [project] health check for drift
41
+ /haus-workflow update # [global] update npm package + catalog + ~/.claude/
42
+ /haus-workflow catalog # [global] fetch only the latest catalog
39
43
  ```
40
44
 
41
45
  Without an argument, the skill presents a menu so you can pick the task. With an argument, it runs immediately.
package/dist/cli.js CHANGED
@@ -3290,45 +3290,10 @@ async function runSetupCore(root, opts) {
3290
3290
  }
3291
3291
 
3292
3292
  // src/commands/setup-project.ts
3293
- var GUIDED_QUESTIONS = [
3294
- "What is this project for?",
3295
- "Is it for a client, internal Haus work, or experimentation?",
3296
- "What should Claude help with most?",
3297
- "Is this project connected to other repositories?",
3298
- "Are there parts of the project Claude should avoid touching?",
3299
- "Are there client-specific rules or sensitive areas?",
3300
- "Do you want a minimal, standard, or strict setup?"
3301
- ];
3302
3293
  async function runSetupProject(options) {
3303
3294
  const root = process.cwd();
3304
- let mode = options.guided ? "guided" : "fast";
3305
- if (!options.guided && !options.fast && !options.json) {
3306
- log("How do you want to set this project up?");
3307
- log("1. Guided setup - I'll ask a few simple questions, then scan the project.");
3308
- log("2. Fast setup - I'll only scan the project and recommend defaults.");
3309
- const choice = await ask("Choose 1 or 2");
3310
- mode = choice === "1" ? "guided" : "fast";
3311
- }
3312
- if (mode === "guided") {
3313
- const existing = await readJson(hausPath(root, "setup-answers.json")) ?? {};
3314
- const merged = {};
3315
- for (const question of GUIDED_QUESTIONS) {
3316
- if (options.json) {
3317
- merged[question] = existing[question] ?? "pending-user-answer";
3318
- continue;
3319
- }
3320
- const prefilled = existing[question];
3321
- if (prefilled && prefilled !== "pending-user-answer" && prefilled !== "no-answer") {
3322
- merged[question] = prefilled;
3323
- continue;
3324
- }
3325
- const answer = await ask(question);
3326
- merged[question] = answer || prefilled || "no-answer";
3327
- }
3328
- await writeJson(hausPath(root, "setup-answers.json"), merged);
3329
- }
3330
3295
  await runSetupCore(root, {
3331
- mode,
3296
+ mode: "fast",
3332
3297
  json: options.json,
3333
3298
  apply: !options.json,
3334
3299
  dryRun: false,
@@ -4963,7 +4928,7 @@ validateRuntimeNodeVersion();
4963
4928
  program.name("haus").description("Haus AI workflow CLI").version(cliVersion());
4964
4929
  program.command("scan").option("--json").action(runScan);
4965
4930
  program.command("recommend").option("--json").action(runRecommend);
4966
- program.command("setup-project").option("--guided").option("--fast").option("--json").action(runSetupProject);
4931
+ program.command("setup-project").option("--json").action(runSetupProject);
4967
4932
  program.command("doctor").option("--hooks", "Verify .claude/settings.json matches the hook contract").action(runDoctor);
4968
4933
  program.command("apply").option("--dry-run").option("--write").option("--select", "Interactively select catalog items before applying").option(
4969
4934
  "--allow-empty-cache",
@@ -4975,7 +4940,7 @@ program.command("apply").option("--dry-run").option("--write").option("--select"
4975
4940
  program.command("undo").option("-y, --yes", "Skip confirmation").action(runUndo);
4976
4941
  program.command("explain-recommendation").option("--json").action(runExplainRecommendation);
4977
4942
  program.command("context").option("--task <task>").option("--from-hook").option("--json").option("--verbose").action(runContext);
4978
- program.command("init").option("--fast").option("--json").action(runInit);
4943
+ program.command("init").option("--json").action(runInit);
4979
4944
  program.command("refresh").action(runRefresh);
4980
4945
  program.command("catalog-audit").action(runCatalogAudit);
4981
4946
  program.command("validate-catalog").argument("[manifest]").action(runValidateCatalog);
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "2.4.1",
2
+ "version": "2.4.2",
3
3
  "items": [
4
4
  {
5
5
  "id": "haus.nextjs-patterns",
@@ -4,7 +4,7 @@ commands; they read plain language and approve.
4
4
 
5
5
  Do this in order:
6
6
 
7
- 1. **Detect.** Run `haus setup-project --fast --json`. Read the JSON yourself —
7
+ 1. **Detect.** Run `haus setup-project --json`. Read the JSON yourself —
8
8
  do not show it. Translate what was detected into one or two plain sentences,
9
9
  e.g. "This looks like a Next.js website using Yarn. I found unit tests but no
10
10
  end-to-end tests." If the detection status is `unknown` or `partial`, say so
@@ -17,16 +17,21 @@ All-in-one entry point for the Haus AI workflow.
17
17
 
18
18
  ## Task aliases → commands
19
19
 
20
- | Alias(es) | Command | What it does |
21
- | ------------------------------------ | -------------------- | ---------------------------------------------- |
22
- | `init`, `setup` | `haus init` | First-time project setup |
23
- | `apply`, `refresh`, `update-project` | `haus apply --write` | Re-run setup / refresh `.claude/` context |
24
- | `update`, `upgrade` | `haus update` | Update npm package + catalog + `~/.claude/` |
25
- | `catalog` | `haus update` | Fetch latest catalog (same command as update) |
26
- | `doctor`, `check` | `haus doctor` | Check for install drift |
27
- | `install`, `global` | `haus install` | Seed `~/.claude/` with haus-owned files |
28
- | `uninstall` | `haus uninstall` | Remove all haus global files from `~/.claude/` |
29
- | `claude-md`, `regenerate` | `haus apply --write` | Regenerate root `CLAUDE.md` import block |
20
+ Task names use an asymmetric scope convention. The **project:** namespace marks tasks that
21
+ act on **this repo** (`./.claude`, `./.haus-workflow`) — type `project:` to see them all.
22
+ The unprefixed verbs (`update`, `catalog`, `install`, `uninstall`) act on **this machine's
23
+ haus install** (`~/.claude`, npm) they manage the haus tool itself, like `npm install -g`.
24
+ The short legacy aliases still work but the names below are canonical.
25
+
26
+ | Task name (legacy aliases) | Command | Scope | What it does |
27
+ | ----------------------------------------------------------------- | ----------------------- | ------- | ------------------------------------------------------------------------------------------- |
28
+ | `project:init` (`setup`, `init`) | _Setup procedure below_ | project | First-time setup of an **existing** repo: adds AI skills, commands, workflow + project docs |
29
+ | `project:refresh` (`apply`, `refresh`, `claude-md`, `regenerate`) | `haus apply --write` | project | Re-run setup / refresh `.claude/` context + regenerate root `CLAUDE.md` import block |
30
+ | `project:doctor` (`doctor`, `check`) | `haus doctor` | project | Check for install drift |
31
+ | `update` (`upgrade`) | `haus update` | global | Update npm package + catalog + `~/.claude/` (also refreshes this project) |
32
+ | `catalog` | `haus update` | global | Fetch latest catalog (same command as update) |
33
+ | `install` (`global`) | `haus install` | global | Seed `~/.claude/` with haus-owned files |
34
+ | `uninstall` | `haus uninstall` | global | Remove all haus global files from `~/.claude/` |
30
35
 
31
36
  ## Step 1 — Determine the task
32
37
 
@@ -37,16 +42,14 @@ All-in-one entry point for the Haus AI workflow.
37
42
  ```
38
43
  Question: "What would you like to do?"
39
44
  Options:
40
- 1. Set up this project for the first time
41
- (haus init scans repo, writes .haus-workflow/, updates CLAUDE.md)
42
- 2. Refresh project setup
45
+ 1. [project] project:init add haus to an existing project for the first time
46
+ (AI skills + commands + workflow into a repo you already have, then a deep read to write the CLAUDE.md docs body + docs/)
47
+ 2. [project] project:refresh — refresh this project's setup
43
48
  (haus apply --write — re-runs setup, regenerates CLAUDE.md imports)
44
- 3. Update haus package + catalog + global files
49
+ 3. [global] update — update haus package + catalog + global files
45
50
  (haus update — checks npm for new version, fetches catalog, refreshes ~/.claude/)
46
- 4. Fetch catalog updates only
51
+ 4. [global] catalog — fetch catalog updates only
47
52
  (haus update — same command; pulls latest workflow templates and lockfile)
48
- 5. Regenerate CLAUDE.md import block
49
- (haus apply --write — rewrites the @-import block at the root CLAUDE.md)
50
53
  ```
51
54
 
52
55
  Map the user's selection to the command from the alias table, then continue to Step 2.
@@ -55,21 +58,16 @@ Map the user's selection to the command from the alias table, then continue to S
55
58
 
56
59
  Run the mapped command via Bash. Quote the exact command you are running before executing it.
57
60
 
61
+ **Exception — `project:init` (`setup` / `init`):** this maps to a multi-step procedure, not a single command. Do not run a bare `haus init`. Skip to **Setup (`project:init`)** under Step 3 and follow it.
62
+
58
63
  ## Step 3 — Post-run steps
59
64
 
60
65
  After the command completes, follow the relevant post-run steps below.
61
66
 
62
- ### After `haus init`
63
-
64
- 1. Open `.haus-workflow/workflow-config.md`.
65
- 2. Check for unfilled placeholders (`TODO`, `n/a`, empty values) in:
66
- - Test, lint, typecheck, build commands — confirm against `package.json` scripts.
67
- - Docs paths — check whether `docs/SPEC.md`, `docs/DESIGN.md`, `docs/UX.md` exist.
68
- - Validation library — check `package.json` dependencies for `zod`, `yup`, `joi`, `valibot`.
69
- - Pre-commit tool — check for `.husky/`, `lefthook.yml`, `.pre-commit-config.yaml`.
70
- - Highest-stakes logic — ask the user if unclear.
71
- 3. Fill in every unfilled field. Do not leave placeholders.
72
- 4. Confirm with the user that `workflow-config.md` is complete before proceeding.
67
+ ### Setup (`project:init`)
68
+
69
+ 1. Open and follow `~/.claude/commands/haus-setup.md` — the installed `haus-setup` command (in some projects also `.claude/commands/haus-setup.md`). Run every step in order. It detects the stack, asks the guided questions, runs `haus apply --write` (scaffolding, skills, commands, rules, docs skill), writes the **project docs** (`CLAUDE.md` body + `docs/`) and `.haus-workflow/deep-context.json`, runs `haus recommend`, applies the newly-matched helpers, and confirms.
70
+ 2. Then fill `.haus-workflow/workflow-config.md` replace every placeholder (`TODO`, `n/a`, empty): test/lint/typecheck/build commands (check `package.json`), docs paths, validation library, pre-commit tool, highest-stakes logic (ask if unclear). Leave none.
73
71
 
74
72
  ### After `haus apply --write`
75
73
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haus-tech/haus-workflow",
3
- "version": "0.16.0",
3
+ "version": "0.16.2",
4
4
  "description": "Haus AI workflow CLI for Claude Code.",
5
5
  "type": "module",
6
6
  "bin": {