@haus-tech/haus-workflow 2.0.0 → 3.1.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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "6.0.0",
2
+ "version": "6.1.1",
3
3
  "manifestFormat": 2,
4
4
  "globalPlugins": [
5
5
  {
@@ -13,7 +13,7 @@
13
13
  "items": [
14
14
  {
15
15
  "id": "haus.agentic-workflow-standard",
16
- "version": "1.1.0",
16
+ "version": "1.3.0",
17
17
  "source": "haus",
18
18
  "type": "template",
19
19
  "path": "templates/agentic-workflow-standard.md",
@@ -24,8 +24,8 @@
24
24
  "tags": ["workflow", "baseline", "project-instructions"],
25
25
  "repoRoles": [],
26
26
  "installMode": "copy-selected",
27
- "tokenEstimate": 2200,
28
- "tokenBudget": 2400,
27
+ "tokenEstimate": 3683,
28
+ "tokenBudget": 4790,
29
29
  "default": true,
30
30
  "reviewStatus": "approved",
31
31
  "riskLevel": "low"
@@ -231,7 +231,7 @@
231
231
  "Never commit SAML SP private keys or IDP shared secrets to the repo.",
232
232
  "Do not change redirect/callback URLs without aligning environment/config on both sides."
233
233
  ],
234
- "tokenBudget": 1700,
234
+ "tokenBudget": 560,
235
235
  "tags": ["oidc", "azure-ad", "bankid", "saml2"],
236
236
  "repoRoles": [],
237
237
  "requiresAny": [
@@ -248,7 +248,7 @@
248
248
  "stack": "saml2"
249
249
  }
250
250
  ],
251
- "tokenEstimate": 1700,
251
+ "tokenEstimate": 427,
252
252
  "installMode": "copy-selected",
253
253
  "ecosystem": "auth",
254
254
  "reviewStatus": "approved",
@@ -265,7 +265,7 @@
265
265
  "whenToUse": "Use for BullMQ queue definitions, processors, schedulers, and graceful shutdown.",
266
266
  "whenNotToUse": "Do not use for non-BullMQ job systems or in-process scheduling without Redis.",
267
267
  "references": ["https://docs.bullmq.io/llms.txt"],
268
- "tokenBudget": 1800,
268
+ "tokenBudget": 790,
269
269
  "tags": ["bullmq", "queue", "backend"],
270
270
  "repoRoles": ["vendure-app", "nestjs-api"],
271
271
  "requiresAny": [
@@ -277,7 +277,7 @@
277
277
  }
278
278
  ],
279
279
  "ecosystem": "tooling",
280
- "tokenEstimate": 1800,
280
+ "tokenEstimate": 601,
281
281
  "installMode": "copy-selected",
282
282
  "reviewStatus": "approved",
283
283
  "riskLevel": "low"
@@ -1270,8 +1270,8 @@
1270
1270
  "path": "configs/eslint/eslint.config.mjs",
1271
1271
  "title": "Haus ESLint config",
1272
1272
  "purpose": "ESLint 9.x flat config for Haus Tech TypeScript/React projects.",
1273
- "whenToUse": "Recommended when `eslint` is missing from the repo. Run `haus scaffold haus.eslint-config` to copy the config into the project root.",
1274
- "whenNotToUse": "Do not scaffold if the project already has a custom ESLint config that extends beyond the Haus baseline.",
1273
+ "whenToUse": "Recommended when `eslint` is missing from the repo. Run `haus configs haus.eslint-config` to copy the config into the project root.",
1274
+ "whenNotToUse": "Skip it if the project already has a custom ESLint config that extends beyond the Haus baseline.",
1275
1275
  "tags": ["eslint", "tooling", "quality"],
1276
1276
  "repoRoles": [],
1277
1277
  "requiresAny": [
@@ -1296,7 +1296,7 @@
1296
1296
  "whenToUse": "Use for adding/changing translations, configuring i18next, or wiring react-i18next / next-i18next.",
1297
1297
  "whenNotToUse": "Do not use for non-i18next translation systems or static-only content with no locale.",
1298
1298
  "references": ["https://www.i18next.com/llms.txt"],
1299
- "tokenBudget": 1800,
1299
+ "tokenBudget": 740,
1300
1300
  "tags": ["i18next", "i18n", "frontend"],
1301
1301
  "repoRoles": ["next-app", "react-app", "vue-app", "vite-app"],
1302
1302
  "requiresAny": [
@@ -1311,7 +1311,7 @@
1311
1311
  }
1312
1312
  ],
1313
1313
  "ecosystem": "tooling",
1314
- "tokenEstimate": 1800,
1314
+ "tokenEstimate": 562,
1315
1315
  "installMode": "copy-selected",
1316
1316
  "reviewStatus": "approved",
1317
1317
  "riskLevel": "low"
@@ -1327,7 +1327,7 @@
1327
1327
  "whenToUse": "Use for Laravel Nova resources, actions, filters, and admin UI behavior.",
1328
1328
  "whenNotToUse": "Do not use for customer-facing API/domain-only changes.",
1329
1329
  "references": ["https://nova.laravel.com/docs/llms.txt"],
1330
- "tokenBudget": 2600,
1330
+ "tokenBudget": 490,
1331
1331
  "tags": ["laravel-nova", "laravel"],
1332
1332
  "repoRoles": ["laravel-nova-app"],
1333
1333
  "requiresAny": [
@@ -1336,7 +1336,7 @@
1336
1336
  }
1337
1337
  ],
1338
1338
  "ecosystem": "laravel",
1339
- "tokenEstimate": 2600,
1339
+ "tokenEstimate": 370,
1340
1340
  "installMode": "copy-selected",
1341
1341
  "reviewStatus": "approved",
1342
1342
  "riskLevel": "low"
@@ -1355,8 +1355,8 @@
1355
1355
  "repoRoles": [],
1356
1356
  "ecosystem": "security",
1357
1357
  "installMode": "copy-selected",
1358
- "tokenEstimate": 220,
1359
- "tokenBudget": 320,
1358
+ "tokenEstimate": 387,
1359
+ "tokenBudget": 510,
1360
1360
  "default": false,
1361
1361
  "reviewStatus": "approved",
1362
1362
  "riskLevel": "low"
@@ -1375,7 +1375,7 @@
1375
1375
  "repoRoles": [],
1376
1376
  "ecosystem": "general",
1377
1377
  "installMode": "copy-selected",
1378
- "tokenEstimate": 180,
1378
+ "tokenEstimate": 179,
1379
1379
  "default": false,
1380
1380
  "reviewStatus": "approved",
1381
1381
  "riskLevel": "low"
@@ -1394,7 +1394,7 @@
1394
1394
  "repoRoles": [],
1395
1395
  "ecosystem": "general",
1396
1396
  "installMode": "copy-selected",
1397
- "tokenEstimate": 120,
1397
+ "tokenEstimate": 301,
1398
1398
  "default": true,
1399
1399
  "reviewStatus": "approved",
1400
1400
  "riskLevel": "low"
@@ -1413,8 +1413,48 @@
1413
1413
  "repoRoles": [],
1414
1414
  "ecosystem": "general",
1415
1415
  "installMode": "copy-selected",
1416
- "tokenEstimate": 750,
1417
- "tokenBudget": 900,
1416
+ "tokenEstimate": 512,
1417
+ "tokenBudget": 670,
1418
+ "default": true,
1419
+ "reviewStatus": "approved",
1420
+ "riskLevel": "low"
1421
+ },
1422
+ {
1423
+ "id": "haus.issue-authoring",
1424
+ "version": "1.2.0",
1425
+ "source": "haus",
1426
+ "type": "skill",
1427
+ "path": "skills/haus-owned/general/issue-authoring",
1428
+ "title": "Issue authoring",
1429
+ "purpose": "Create GitHub issues in a two-audience format: short human section for approval, deep technical section an AI can implement from. Modes: finding, deferred, idea.",
1430
+ "whenToUse": "Filing bugs/review findings, capturing scope deferred out of a plan, recording ideas that arise during development.",
1431
+ "whenNotToUse": "Work already approved and planned — that belongs in the plan.",
1432
+ "tags": ["workflow", "haus", "project-instructions"],
1433
+ "repoRoles": [],
1434
+ "ecosystem": "general",
1435
+ "installMode": "copy-selected",
1436
+ "tokenEstimate": 1817,
1437
+ "tokenBudget": 2370,
1438
+ "default": true,
1439
+ "reviewStatus": "approved",
1440
+ "riskLevel": "low"
1441
+ },
1442
+ {
1443
+ "id": "haus.issue-creator",
1444
+ "version": "1.1.1",
1445
+ "source": "haus",
1446
+ "type": "agent",
1447
+ "path": "agents/haus-owned/issue-creator.md",
1448
+ "title": "Issue creator",
1449
+ "purpose": "Background agent that files GitHub issues using the issue-authoring format, on a cheaper model and in isolated context.",
1450
+ "whenToUse": "Spawned by the out-of-scope capture rule, or on request, to file findings, deferred scope, or ideas.",
1451
+ "whenNotToUse": "Repos without GitHub issues enabled, or where issue hygiene is managed elsewhere.",
1452
+ "tags": ["agent", "workflow", "haus"],
1453
+ "repoRoles": [],
1454
+ "ecosystem": "general",
1455
+ "installMode": "copy-selected",
1456
+ "tokenEstimate": 643,
1457
+ "tokenBudget": 840,
1418
1458
  "default": true,
1419
1459
  "reviewStatus": "approved",
1420
1460
  "riskLevel": "low"
@@ -1430,7 +1470,7 @@
1430
1470
  "whenToUse": "Use for `next-auth` / `@auth/core` provider setup, session strategy, callbacks, JWT, and route protection in Next.js.",
1431
1471
  "whenNotToUse": "Do not use for Laravel/PHP auth, OIDC outside Next.js, or session-less API tokens.",
1432
1472
  "references": ["https://authjs.dev/"],
1433
- "tokenBudget": 2000,
1473
+ "tokenBudget": 710,
1434
1474
  "tags": ["next-auth", "auth", "nextjs"],
1435
1475
  "repoRoles": ["next-app"],
1436
1476
  "requiresAny": [
@@ -1445,7 +1485,7 @@
1445
1485
  }
1446
1486
  ],
1447
1487
  "ecosystem": "auth",
1448
- "tokenEstimate": 2000,
1488
+ "tokenEstimate": 543,
1449
1489
  "installMode": "copy-selected",
1450
1490
  "reviewStatus": "approved",
1451
1491
  "riskLevel": "medium"
@@ -1557,7 +1597,7 @@
1557
1597
  "purpose": "Guide deterministic dependency/workspace changes for Yarn4 and pnpm89.",
1558
1598
  "whenToUse": "Use for lockfile, workspace, and package manager configuration changes.",
1559
1599
  "whenNotToUse": "Do not use for feature-only code edits with no dependency/workspace impact.",
1560
- "tokenBudget": 1200,
1600
+ "tokenBudget": 410,
1561
1601
  "tags": ["yarn4", "pnpm89"],
1562
1602
  "repoRoles": [],
1563
1603
  "requiresAny": [
@@ -1568,7 +1608,7 @@
1568
1608
  "stack": "pnpm89"
1569
1609
  }
1570
1610
  ],
1571
- "tokenEstimate": 1200,
1611
+ "tokenEstimate": 311,
1572
1612
  "installMode": "copy-selected",
1573
1613
  "ecosystem": "packagemanager",
1574
1614
  "reviewStatus": "approved",
@@ -1582,8 +1622,8 @@
1582
1622
  "path": "configs/prettier",
1583
1623
  "title": "Haus Prettier config",
1584
1624
  "purpose": "Prettier config and .prettierignore for Haus Tech projects.",
1585
- "whenToUse": "Recommended when `prettier` is missing from the repo. Run `haus scaffold haus.prettier-config` to copy the config into the project root.",
1586
- "whenNotToUse": "Do not scaffold if the project already has a custom Prettier config.",
1625
+ "whenToUse": "Recommended when `prettier` is missing from the repo. Run `haus configs haus.prettier-config` to copy the config into the project root.",
1626
+ "whenNotToUse": "Skip it if the project already has a custom Prettier config.",
1587
1627
  "tags": ["prettier", "tooling", "quality"],
1588
1628
  "repoRoles": [],
1589
1629
  "requiresAny": [
@@ -1620,7 +1660,7 @@
1620
1660
  "Treat Qliro push notifications as the source of truth, not the checkout redirect; push handlers must be idempotent since Qliro retries on 5xx.",
1621
1661
  "Always validate the signature on incoming Qliro push payloads before trusting them."
1622
1662
  ],
1623
- "tokenBudget": 1800,
1663
+ "tokenBudget": 650,
1624
1664
  "tags": ["qliro", "payments", "tooling"],
1625
1665
  "repoRoles": ["vendure-app", "vendure-plugin", "next-app"],
1626
1666
  "requiresAny": [
@@ -1632,7 +1672,7 @@
1632
1672
  }
1633
1673
  ],
1634
1674
  "ecosystem": "payments",
1635
- "tokenEstimate": 1800,
1675
+ "tokenEstimate": 496,
1636
1676
  "installMode": "copy-selected",
1637
1677
  "reviewStatus": "approved",
1638
1678
  "riskLevel": "medium"
@@ -1648,7 +1688,7 @@
1648
1688
  "whenToUse": "Use for routes, loaders, actions, and SSR config in React Router v7 apps.",
1649
1689
  "whenNotToUse": "Do not use for Next.js App Router or Remix v1 codebases.",
1650
1690
  "references": ["https://reactrouter.com/start/framework/installation"],
1651
- "tokenBudget": 2000,
1691
+ "tokenBudget": 600,
1652
1692
  "tags": ["frontend", "react", "typescript"],
1653
1693
  "repoRoles": ["react-router-app", "react-app"],
1654
1694
  "requiresAny": [
@@ -1663,7 +1703,7 @@
1663
1703
  }
1664
1704
  ],
1665
1705
  "ecosystem": "react",
1666
- "tokenEstimate": 2000,
1706
+ "tokenEstimate": 456,
1667
1707
  "installMode": "copy-selected",
1668
1708
  "reviewStatus": "approved",
1669
1709
  "riskLevel": "low"
@@ -1680,7 +1720,7 @@
1680
1720
  "whenNotToUse": "Do not use when a more specific skill or command applies.",
1681
1721
  "tags": ["workflow", "redis", "database"],
1682
1722
  "repoRoles": [],
1683
- "tokenEstimate": 3462,
1723
+ "tokenEstimate": 1282,
1684
1724
  "installMode": "copy-selected",
1685
1725
  "default": false,
1686
1726
  "reviewStatus": "approved",
@@ -1713,7 +1753,7 @@
1713
1753
  "whenNotToUse": "Everyday Redis usage is covered by redis-redis-connections. Install only for monitoring, triage, and observability setup (role:redis-ops).",
1714
1754
  "tags": ["workflow", "redis", "observability"],
1715
1755
  "repoRoles": [],
1716
- "tokenEstimate": 1546,
1756
+ "tokenEstimate": 912,
1717
1757
  "installMode": "copy-selected",
1718
1758
  "default": false,
1719
1759
  "reviewStatus": "approved",
@@ -1745,7 +1785,7 @@
1745
1785
  "whenNotToUse": "Everyday Redis usage is covered by redis-redis-connections. Install only for production hardening / ACL / TLS workflows (role:redis-ops).",
1746
1786
  "tags": ["workflow", "redis", "security"],
1747
1787
  "repoRoles": [],
1748
- "tokenEstimate": 1887,
1788
+ "tokenEstimate": 921,
1749
1789
  "installMode": "copy-selected",
1750
1790
  "default": false,
1751
1791
  "reviewStatus": "approved",
@@ -1778,7 +1818,7 @@
1778
1818
  "references": ["https://docs.sanity.io/llms.txt"],
1779
1819
  "tags": ["workflow", "sanity", "cms"],
1780
1820
  "repoRoles": [],
1781
- "tokenEstimate": 3195,
1821
+ "tokenEstimate": 467,
1782
1822
  "installMode": "copy-selected",
1783
1823
  "default": false,
1784
1824
  "reviewStatus": "approved",
@@ -1942,7 +1982,7 @@
1942
1982
  "whenToUse": "Use for component stories, args/controls, and Storybook config changes.",
1943
1983
  "whenNotToUse": "Do not use for backend/service-only development tasks.",
1944
1984
  "references": ["https://storybook.js.org/llms.txt"],
1945
- "tokenBudget": 1500,
1985
+ "tokenBudget": 500,
1946
1986
  "tags": ["storybook"],
1947
1987
  "repoRoles": ["react-app", "next-app", "vite-app"],
1948
1988
  "requiresAny": [
@@ -1957,7 +1997,7 @@
1957
1997
  }
1958
1998
  ],
1959
1999
  "ecosystem": "storybook",
1960
- "tokenEstimate": 1500,
2000
+ "tokenEstimate": 378,
1961
2001
  "installMode": "copy-selected",
1962
2002
  "reviewStatus": "approved",
1963
2003
  "riskLevel": "low"
@@ -1973,7 +2013,7 @@
1973
2013
  "whenToUse": "Use for Strapi content type schemas, controllers, services, and policies in v5.",
1974
2014
  "whenNotToUse": "Do not use for Sanity, WordPress, or other CMS work.",
1975
2015
  "references": ["https://docs.strapi.io/llms.txt"],
1976
- "tokenBudget": 2000,
2016
+ "tokenBudget": 800,
1977
2017
  "tags": ["strapi", "backend", "cms"],
1978
2018
  "repoRoles": ["strapi-app"],
1979
2019
  "requiresAny": [
@@ -1988,7 +2028,7 @@
1988
2028
  }
1989
2029
  ],
1990
2030
  "ecosystem": "cms",
1991
- "tokenEstimate": 2000,
2031
+ "tokenEstimate": 608,
1992
2032
  "installMode": "copy-selected",
1993
2033
  "reviewStatus": "approved",
1994
2034
  "riskLevel": "low"
@@ -2123,7 +2163,7 @@
2123
2163
  "whenToUse": "Use for TanStack query cache behavior and TanStack router flow updates.",
2124
2164
  "whenNotToUse": "Do not use for styling-only component changes.",
2125
2165
  "references": ["https://tanstack.com/llms.txt"],
2126
- "tokenBudget": 2200,
2166
+ "tokenBudget": 520,
2127
2167
  "tags": ["tanstack-query", "tanstack-router"],
2128
2168
  "repoRoles": ["next-app", "react-app"],
2129
2169
  "requiresAny": [
@@ -2138,7 +2178,7 @@
2138
2178
  }
2139
2179
  ],
2140
2180
  "ecosystem": "react",
2141
- "tokenEstimate": 2200,
2181
+ "tokenEstimate": 394,
2142
2182
  "installMode": "copy-selected",
2143
2183
  "reviewStatus": "approved",
2144
2184
  "riskLevel": "low"
@@ -2187,7 +2227,7 @@
2187
2227
  "whenToUse": "Use for shared types, DTOs, interface boundaries, and type-safe refactors.",
2188
2228
  "whenNotToUse": "Do not use for runtime-only changes without type-contract impact.",
2189
2229
  "references": ["https://www.typescriptlang.org/docs/handbook/"],
2190
- "tokenBudget": 2200,
2230
+ "tokenBudget": 400,
2191
2231
  "tags": ["typescript", "frontend", "backend"],
2192
2232
  "repoRoles": [
2193
2233
  "next-app",
@@ -2208,7 +2248,7 @@
2208
2248
  "dependency": "typescript"
2209
2249
  }
2210
2250
  ],
2211
- "tokenEstimate": 2200,
2251
+ "tokenEstimate": 305,
2212
2252
  "installMode": "copy-selected",
2213
2253
  "ecosystem": "typescript",
2214
2254
  "reviewStatus": "approved",
@@ -2225,7 +2265,7 @@
2225
2265
  "whenToUse": "Use for Vendure app config, worker, bootstrap, and system wiring updates.",
2226
2266
  "whenNotToUse": "Do not use for isolated shared plugin package tasks.",
2227
2267
  "references": ["https://docs.vendure.io/llms.txt"],
2228
- "tokenBudget": 3200,
2268
+ "tokenBudget": 390,
2229
2269
  "tags": ["vendure3", "nestjs", "graphql"],
2230
2270
  "repoRoles": ["vendure-app"],
2231
2271
  "requiresAny": [
@@ -2237,7 +2277,7 @@
2237
2277
  }
2238
2278
  ],
2239
2279
  "ecosystem": "vendure",
2240
- "tokenEstimate": 3200,
2280
+ "tokenEstimate": 300,
2241
2281
  "installMode": "copy-selected",
2242
2282
  "reviewStatus": "approved",
2243
2283
  "riskLevel": "low"
@@ -2253,7 +2293,7 @@
2253
2293
  "whenToUse": "Use for Vendure plugin resolvers, services, entities, and plugin migrations.",
2254
2294
  "whenNotToUse": "Do not use for storefront-only UI changes or non-Vendure APIs.",
2255
2295
  "references": ["https://docs.vendure.io/llms.txt"],
2256
- "tokenBudget": 3400,
2296
+ "tokenBudget": 510,
2257
2297
  "tags": ["backend", "vendure", "nestjs", "graphql", "typescript"],
2258
2298
  "repoRoles": ["vendure-plugin", "vendure-app"],
2259
2299
  "requiresAny": [
@@ -2268,7 +2308,7 @@
2268
2308
  }
2269
2309
  ],
2270
2310
  "ecosystem": "vendure",
2271
- "tokenEstimate": 3400,
2311
+ "tokenEstimate": 388,
2272
2312
  "installMode": "copy-selected",
2273
2313
  "reviewStatus": "approved",
2274
2314
  "riskLevel": "low"
@@ -2284,7 +2324,7 @@
2284
2324
  "whenToUse": "Use for ACF field groups and Elementor/JetEngine-driven dynamic template behavior.",
2285
2325
  "whenNotToUse": "Do not use for generic WordPress hooks with no builder/meta impact.",
2286
2326
  "references": ["https://developer.wordpress.org/"],
2287
- "tokenBudget": 2600,
2327
+ "tokenBudget": 420,
2288
2328
  "tags": ["wordpress"],
2289
2329
  "repoRoles": ["wordpress-bedrock-site", "wordpress-vanilla-site"],
2290
2330
  "requiresAny": [
@@ -2308,7 +2348,7 @@
2308
2348
  }
2309
2349
  ],
2310
2350
  "ecosystem": "wordpress",
2311
- "tokenEstimate": 2600,
2351
+ "tokenEstimate": 320,
2312
2352
  "installMode": "copy-selected",
2313
2353
  "reviewStatus": "approved",
2314
2354
  "riskLevel": "low"
@@ -2324,7 +2364,7 @@
2324
2364
  "whenToUse": "Use for Bedrock config, env loading, and boot path behavior updates.",
2325
2365
  "whenNotToUse": "Do not use for hook/template-only WordPress runtime changes.",
2326
2366
  "references": ["https://developer.wordpress.org/"],
2327
- "tokenBudget": 2600,
2367
+ "tokenBudget": 410,
2328
2368
  "tags": ["wordpress", "bedrock"],
2329
2369
  "repoRoles": ["wordpress-bedrock-site"],
2330
2370
  "requiresAny": [
@@ -2336,7 +2376,7 @@
2336
2376
  }
2337
2377
  ],
2338
2378
  "ecosystem": "wordpress",
2339
- "tokenEstimate": 2600,
2379
+ "tokenEstimate": 311,
2340
2380
  "installMode": "copy-selected",
2341
2381
  "reviewStatus": "approved",
2342
2382
  "riskLevel": "low"
@@ -2468,11 +2508,11 @@
2468
2508
  "purpose": "Create or refresh agent-operable project docs (CLAUDE.md, docs/SUMMARY.md, topic files) from code.",
2469
2509
  "whenToUse": "Use when the user runs the docs sync or asks to init/refresh project documentation for agent context, or after setup/commands/env/deploy/integration changes.",
2470
2510
  "whenNotToUse": "Do not use for code changes with no documentation impact, or where facts would have to be invented.",
2471
- "tokenBudget": 1800,
2511
+ "tokenBudget": 3070,
2472
2512
  "tags": ["workflow", "core-skill", "project-instructions"],
2473
2513
  "repoRoles": [],
2474
2514
  "requiresAny": [],
2475
- "tokenEstimate": 1800,
2515
+ "tokenEstimate": 2358,
2476
2516
  "installMode": "copy-selected",
2477
2517
  "ecosystem": "workflow",
2478
2518
  "default": true,
@@ -2577,7 +2617,7 @@
2577
2617
  "whenNotToUse": "Do not use when a more specific skill or command applies.",
2578
2618
  "tags": ["workflow", "tailwind", "radix"],
2579
2619
  "repoRoles": [],
2580
- "tokenEstimate": 6019,
2620
+ "tokenEstimate": 1323,
2581
2621
  "installMode": "copy-selected",
2582
2622
  "default": false,
2583
2623
  "reviewStatus": "approved",
@@ -3331,7 +3371,7 @@
3331
3371
  "whenToUse": "Use alongside haus.nx-nx-workspace / haus.nx-nx-generate when naming tags, placing generators/executors, or enforcing module boundaries.",
3332
3372
  "whenNotToUse": "Use haus.nx-nx-workspace or haus.nx-nx-generate for general Nx exploration/generation.",
3333
3373
  "references": ["https://nx.dev/llms.txt"],
3334
- "tokenBudget": 800,
3374
+ "tokenBudget": 500,
3335
3375
  "tags": ["nx", "workflow"],
3336
3376
  "repoRoles": ["nx-monorepo"],
3337
3377
  "requiresAny": [
@@ -29,6 +29,7 @@ repo's files. The short legacy aliases still work but the names below are canoni
29
29
  | `project:reinit` (`reinit`, `re-init`) | _Reinit procedure below_ | project | **Full re-setup.** Removes all haus-managed project files (backed up first, user content preserved), then re-runs `project:init` from scratch |
30
30
  | `project:clone [name]` (`clone`) | _Clone procedure below_ | project | With a `name`: find & clone one repo by name from GitHub. No name: asks single-repo-vs-workspace first, then either mode — workspace mode clones from `repos.manifest.json` |
31
31
  | `project:cloneandsetup [name]` (`cloneandsetup`) | _Clone & setup procedure below_ | project | Run `project:clone`, then set up each repo for local dev — deps, databases, cross-repo links, and env — via each repo's `.haus-workflow/localdev.yml` (+ the workspace's order/links/env) |
32
+ | `project:new [stack] [name]` (`new`, `create`) | _New-project procedure below_ | project | Create a **brand-new** project from an allowed stack (Next.js, Vite+React, NestJS, Expo): scaffold, haus configs, git + GitHub repo, then full init |
32
33
  | `project:add-skills` (`add-skills`, `opt-in`) | _Add-skills procedure below_ | project | Add optional skills, agents, or config (ESLint/Prettier) to an already-set-up project without re-running full setup |
33
34
  | `project:refresh` (`apply`, `refresh`, `claude-md`, `regenerate`) | _Refresh procedure below_ | project | **Full non-destructive sync.** Updates the haus package + catalog first, then re-runs `project:init`'s pipeline in place — nothing is removed up front; new catalog items get added, changed ones updated, and anything removed upstream gets pruned by `apply`'s existing orphan-pruning |
34
35
  | `project:doctor` (`doctor`, `check`) | `haus doctor` | project | Check for install drift |
@@ -43,7 +44,7 @@ repo's files. The short legacy aliases still work but the names below are canoni
43
44
  **If a task argument was passed:** look it up in the alias table above. If no match, tell the user and list valid options. If matched, skip to Step 2.
44
45
 
45
46
  **If no task was passed:** the menu has more options than one `AskUserQuestion` question can
46
- hold (max 4 options per question). Page through all 12 tasks in batches: each page shows the
47
+ hold (max 4 options per question). Page through all 13 tasks in batches: each page shows the
47
48
  next 3 tasks plus a 4th "More options" choice, except the last page, which shows whatever
48
49
  tasks remain (≤4) with no continuation choice — nothing is dropped, and this pattern
49
50
  generalizes automatically if a task is ever added to or removed from the alias table above
@@ -56,39 +57,41 @@ Question 1: "What would you like to do?"
56
57
  Options:
57
58
  1. [project] project:init — add haus to an existing project for the first time
58
59
  (AI skills + commands + workflow into a repo you already have, then a deep read to write the CLAUDE.md docs body + docs/)
59
- 2. [project] project:refresh — full non-destructive sync with the latest haus
60
+ 2. [project] project:new [stack] [name] — create a brand-new project from an allowed stack
61
+ (Next.js, Vite+React, NestJS, Expo — scaffold, haus configs, git + GitHub repo, then full init)
62
+ 3. [project] project:refresh — full non-destructive sync with the latest haus
60
63
  (updates the haus package + catalog, then re-runs setup in place — nothing removed first)
61
- 3. [project] project:clone [name] — clone repos
62
- (picked from here with no name yet — clone.md will ask whether it's a single repo or a whole workspace next)
63
- 4. [—] More options — see: project:cloneandsetup, project:add-skills, project:reinit, and 6 more
64
+ 4. [—] More options — see: project:clone, project:cloneandsetup, project:add-skills, and 7 more
64
65
 
65
66
  Question 2: "What would you like to do?" (only shown if "More options" was picked)
66
67
  Options:
67
- 1. [project] project:cloneandsetup [name] — clone repos, then set them up for local dev
68
+ 1. [project] project:clone [name] — clone repos
69
+ (picked from here with no name yet — clone.md will ask whether it's a single repo or a whole workspace next)
70
+ 2. [project] project:cloneandsetup [name] — clone repos, then set them up for local dev
68
71
  (project:clone — asking single-repo-vs-workspace since no name is known yet — then per-repo deps + databases + cross-repo links + env from localdev.yml)
69
- 2. [project] project:add-skills — add optional skills, agents, or config to this project
72
+ 3. [project] project:add-skills — add optional skills, agents, or config to this project
70
73
  (offers opt-in helpers matching your stack that aren't installed yet — no full re-setup)
71
- 3. [project] project:reinit — full re-setup from scratch
72
- (removes all haus-managed project files, backed up first, then re-runs project:init)
73
- 4. [—] More options — see: update, project:doctor, project:fix, and 3 more
74
+ 4. [—] More options — see: project:reinit, update, project:doctor, and 4 more
74
75
 
75
76
  Question 3: "What would you like to do?" (only shown if "More options" was picked again)
76
77
  Options:
77
- 1. [global] update — update haus package + catalog + global files
78
+ 1. [project] project:reinit — full re-setup from scratch
79
+ (removes all haus-managed project files, backed up first, then re-runs project:init)
80
+ 2. [global] update — update haus package + catalog + global files
78
81
  (haus update — checks npm for new version, fetches catalog, refreshes ~/.claude/)
79
- 2. [project] project:doctor — check for install drift
82
+ 3. [project] project:doctor — check for install drift
80
83
  (haus doctor — a one-line plain-language verdict, healthy or a list of what needs attention)
81
- 3. [project] project:fix — diagnose and fix install drift
82
- (runs doctor, applies the suggested fixes, confirms green)
83
- 4. [—] More options — see: install, uninstall, help
84
+ 4. [—] More options — see: project:fix, install, uninstall, help
84
85
 
85
86
  Question 4: "What would you like to do?" (only shown if "More options" was picked a third time — last page, no further continuation)
86
87
  Options:
87
- 1. [global] install — seed ~/.claude/ with haus-owned files
88
+ 1. [project] project:fix — diagnose and fix install drift
89
+ (runs doctor, applies the suggested fixes, confirms green)
90
+ 2. [global] install — seed ~/.claude/ with haus-owned files
88
91
  (haus install)
89
- 2. [global] uninstall — remove all haus global files from ~/.claude/
92
+ 3. [global] uninstall — remove all haus global files from ~/.claude/
90
93
  (haus uninstall)
91
- 3. [—] help — explain what haus-workflow is and list all available tasks
94
+ 4. [—] help — explain what haus-workflow is and list all available tasks
92
95
  (touches no files — points to docs/cli.md and docs/runbook.md for depth)
93
96
  ```
94
97
 
@@ -98,7 +101,7 @@ Map the user's selection to the command from the alias table, then continue to S
98
101
 
99
102
  Run the mapped command via Bash. Quote the exact command you are running before executing it.
100
103
 
101
- **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.
104
+ **Exception — `project:init` (`setup` / `init`):** this maps to a multi-step procedure that drives `haus init --json --dry-run` plus follow-up commands, not a single command. Skip to **Setup (`project:init`)** under Step 3 and follow it.
102
105
 
103
106
  **Exception — `project:reinit` (`reinit` / `re-init`):** removes files before re-running setup. Skip to **Reinit (`project:reinit`)** under Step 3 and follow it.
104
107
 
@@ -106,6 +109,8 @@ Run the mapped command via Bash. Quote the exact command you are running before
106
109
 
107
110
  **Exception — `project:cloneandsetup` (`cloneandsetup`):** clone followed by a per-repo setup pass, with confirmations. Skip to **Clone & setup (`project:cloneandsetup`)** under Step 3 and follow it.
108
111
 
112
+ **Exception — `project:new` (`new` / `create`):** collects the stack/name/org/visibility via `AskUserQuestion` and drives `haus new` non-interactively — not a single command. Skip to **New project (`project:new`)** under Step 3 and follow it.
113
+
109
114
  **Exception — `project:add-skills` (`add-skills` / `opt-in`):** a short scan → recommend → choose → apply procedure. Skip to **Add optional skills (`project:add-skills`)** under Step 3 and follow it.
110
115
 
111
116
  **Exception — `project:refresh` (`apply` / `refresh` / `claude-md` / `regenerate`):** updates the haus package first, then re-runs the setup pipeline — not a single command. Skip to **Refresh (`project:refresh`)** under Step 3 and follow it.
@@ -164,6 +169,10 @@ upstream gets pruned automatically by `apply`'s existing orphan-pruning.
164
169
 
165
170
  1. Open and follow `references/cloneandsetup.md` in this skill's directory — it runs the full `project:clone` flow (including clone.md's Step 0 when no name is already known), then sets up each cloned repo locally: selects the node version (`nvm install` from `.nvmrc`), enables corepack, installs JS/PHP dependencies, and seeds `.env`, confirming before each phase. It does not start servers.
166
171
 
172
+ ### New project (`project:new`)
173
+
174
+ 1. Open and follow `references/new.md` in this skill's directory. It lists allowed stacks via `haus new --list --json`, collects the stack/name/org/visibility with `AskUserQuestion`, previews with `--dry-run`, confirms, then runs `haus new <stack> <name> --json --yes [flags]` for real and narrates the JSON result — including relaying any failure `detail` (resume commands) verbatim and surfacing `installHint`. Never run bare interactive `haus new`.
175
+
167
176
  ### Add optional skills (`project:add-skills`)
168
177
 
169
178
  For a project that's already set up but where the user wants more helpers later —
@@ -184,8 +193,8 @@ choices.
184
193
  with one option per group / config item. Then:
185
194
  - Skills/agents → `haus recommend --include <id> <id> …`, then
186
195
  `haus apply --write`.
187
- - Config → `haus scaffold <id>` (add `--force` only if the user chose to
188
- replace an existing file; scaffold preserves files by default).
196
+ - Config → `haus configs <id>` (add `--force` only if the user chose to
197
+ replace an existing file; configs preserves files by default).
189
198
  5. Confirm with the names added and their combined token estimate, e.g.
190
199
  "Added 2 optional helpers: Code review workflow, TDD workflow (~3k tokens)."
191
200
 
@@ -6,7 +6,7 @@ commands; they read plain language and approve.
6
6
 
7
7
  Do this in order:
8
8
 
9
- 1. **Detect.** Run `haus setup-project --json`. Read the JSON yourself —
9
+ 1. **Detect.** Run `haus init --json --dry-run`. Read the JSON yourself —
10
10
  do not show it. Translate what was detected into one or two plain sentences,
11
11
  e.g. "This looks like a Next.js website using Yarn. I found unit tests but no
12
12
  end-to-end tests." If the detection status is `unknown` or `partial`, say so
@@ -47,9 +47,9 @@ Do this in order:
47
47
  `recommendation.json`, so repeated calls would drop the earlier includes.
48
48
  - **Project config** (entries in `recommended[]` with `install: false`, e.g.
49
49
  Haus ESLint / Prettier baselines): offer each as a plain choice ("Add the
50
- Haus ESLint baseline"). On confirm, run `haus scaffold <id>`. `haus scaffold`
50
+ Haus ESLint baseline"). On confirm, run `haus configs <id>`. `haus configs`
51
51
  **preserves existing config files by default** and tells you when a file
52
- already exists — only re-run with `haus scaffold <id> --force` if the user
52
+ already exists — only re-run with `haus configs <id> --force` if the user
53
53
  explicitly chooses to **replace** their current config.
54
54
 
55
55
  If neither list has anything, skip this step silently — don't ask an empty
@@ -0,0 +1,24 @@
1
+ # project:new — create a new project from an allowed stack
2
+
3
+ Drives `haus new` non-interactively. NEVER run bare `haus new` without flags —
4
+ its interactive prompts don't work through the agent; collect answers with
5
+ AskUserQuestion and pass everything as flags.
6
+
7
+ 1. **List stacks.** Run `haus new --list --json`. Present the stacks via
8
+ AskUserQuestion (one option per stack, id + title).
9
+ 2. **Collect inputs.** Ask for: project name (free text; lowercase letters, digits,
10
+ `. _ -`), GitHub org (default: WeAreHausTech; "personal" = omit --org),
11
+ visibility (private default / public), and whether to create the GitHub
12
+ repo at all (default yes; no → add `--no-github`).
13
+ 3. **Preview.** Run
14
+ `haus new <stack> <name> --json --yes --dry-run [--org <org>] [--public] [--no-github]`
15
+ and show the user the planned steps in plain language. Confirm before executing.
16
+ 4. **Execute.** Re-run the same command without `--dry-run`. Parse the JSON:
17
+ - `ok: true` → summarize: project path, repo URL, init result, and the
18
+ `installHint` (dependencies are NOT installed automatically).
19
+ - `ok: false` → report the failed step's `detail` verbatim — it contains the
20
+ exact resume commands (e.g. `gh repo create … && git push -u origin main`).
21
+ Do NOT retry destructively; the project directory is never auto-deleted.
22
+ 5. **Hand off.** Tell the user to `cd <name>` and run the install command from
23
+ `installHint` — the project is fully initialized (no separate `project:init`
24
+ needed).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haus-tech/haus-workflow",
3
- "version": "2.0.0",
3
+ "version": "3.1.2",
4
4
  "description": "Haus AI workflow CLI for Claude Code.",
5
5
  "type": "module",
6
6
  "bin": {