@haus-tech/haus-workflow 0.5.0 → 0.7.0

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,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.7.0](https://github.com/WeAreHausTech/haus-workflow/compare/v0.6.0...v0.7.0) (2026-05-28)
4
+
5
+ ### Features
6
+
7
+ * **scanner:** detect expo + react-native (T18) ([290a5ba](https://github.com/WeAreHausTech/haus-workflow/commit/290a5bac13faa8ec515d8dd9363caa2c00ce74cc))
8
+
9
+ ## [0.6.0](https://github.com/WeAreHausTech/haus-workflow/compare/v0.5.0...v0.6.0) (2026-05-28)
10
+
11
+ ### Features
12
+
13
+ * **scanner:** detect mysql, saml2, next-auth (T15-T17) ([13694e1](https://github.com/WeAreHausTech/haus-workflow/commit/13694e12895b2bb470c7a01adc10a3fc91bb3e42))
14
+
3
15
  ## [0.5.0](https://github.com/WeAreHausTech/haus-workflow/compare/v0.4.0...v0.5.0) (2026-05-28)
4
16
 
5
17
  ### Features
package/dist/cli.js CHANGED
@@ -1421,6 +1421,7 @@ function detectRoles(deps, files) {
1421
1421
  if (deps.includes("react-router") && deps.includes("@react-router/node")) roles.add("react-router-app");
1422
1422
  if (deps.includes("sanity")) roles.add("sanity-studio");
1423
1423
  if (deps.includes("@strapi/strapi") || deps.some((d) => d.startsWith("@strapi/"))) roles.add("strapi-app");
1424
+ if (deps.includes("expo")) roles.add("expo-app");
1424
1425
  if (deps.includes("@vendure/core")) roles.add("vendure-app");
1425
1426
  if (deps.some((d) => d.startsWith("@haus/vendure-")) || files.some((f) => f.includes("vendure-config")))
1426
1427
  roles.add("vendure-plugin");
@@ -1479,6 +1480,8 @@ async function detectStacks(root, deps, files, packageManager) {
1479
1480
  add("backend", "strapi");
1480
1481
  }
1481
1482
  if (deps.includes("prisma") || deps.includes("@prisma/client")) add("backend", "prisma");
1483
+ if (deps.includes("expo")) add("frontend", "expo");
1484
+ if (deps.includes("react-native")) add("frontend", "react-native");
1482
1485
  if (deps.includes("@vendure/core")) add("backend", "vendure3");
1483
1486
  if (deps.includes("@nestjs/core")) add("backend", "nestjs");
1484
1487
  if (await hasNeedle(root, files, "NestFactory")) add("backend", "nestjs");
@@ -1507,6 +1510,7 @@ async function detectStacks(root, deps, files, packageManager) {
1507
1510
  if (deps.includes("jest") || deps.includes("jest-environment-jsdom")) add("testing", "jest");
1508
1511
  if (deps.includes("pg")) add("databases", "postgresql");
1509
1512
  if (deps.includes("mariadb") || deps.includes("mysql2")) add("databases", "mariadb");
1513
+ if (deps.includes("mysql") || deps.includes("mysql2")) add("databases", "mysql");
1510
1514
  if (deps.includes("mssql")) add("databases", "mssql");
1511
1515
  if (deps.includes("@elastic/elasticsearch")) add("databases", "elasticsearch");
1512
1516
  if (deps.includes("predis/predis") || deps.includes("ioredis") || deps.includes("redis")) {
@@ -1515,6 +1519,10 @@ async function detectStacks(root, deps, files, packageManager) {
1515
1519
  if (await hasNeedle(root, files, "openid")) add("auth", "oidc");
1516
1520
  if (await hasNeedle(root, files, "AZURE_AD")) add("auth", "azure-ad");
1517
1521
  if (await hasNeedle(root, files, "BANKID")) add("auth", "bankid");
1522
+ if (deps.includes("24slides/laravel-saml2") || deps.includes("aacotroneo/laravel-saml2")) {
1523
+ add("auth", "saml2");
1524
+ }
1525
+ if (deps.includes("next-auth") || deps.includes("@auth/core")) add("auth", "next-auth");
1518
1526
  if (packageManager === "yarn") add("packageManagers", "yarn4");
1519
1527
  if (packageManager === "pnpm") add("packageManagers", "pnpm89");
1520
1528
  return out;
@@ -76,6 +76,13 @@
76
76
  "strapi",
77
77
  "prisma",
78
78
  "cms",
79
- "database"
79
+ "database",
80
+ "mysql",
81
+ "saml2",
82
+ "next-auth",
83
+ "auth",
84
+ "expo",
85
+ "react-native",
86
+ "mobile"
80
87
  ]
81
88
  }
@@ -232,6 +232,53 @@
232
232
  "tokenEstimate": 2000,
233
233
  "installMode": "copy-selected"
234
234
  },
235
+ {
236
+ "id": "haus.expo-react-native-patterns",
237
+ "version": "1.0.0",
238
+ "source": "haus",
239
+ "type": "skill",
240
+ "path": "skills/expo-react-native-patterns",
241
+ "title": "Haus Expo / React Native patterns",
242
+ "purpose": "Guide Expo Router, React Native component, native module, and EAS build changes.",
243
+ "whenToUse": "Use for Expo Router routes, RN components, native modules, expo config plugins, and EAS build/submit.",
244
+ "whenNotToUse": "Do not use for web-only React apps or unrelated mobile native projects (Swift/Kotlin without Expo).",
245
+ "references": [
246
+ "references/conventions.md",
247
+ "references/scope.md",
248
+ "references/workflow.md",
249
+ "https://docs.expo.dev/"
250
+ ],
251
+ "tokenBudget": 1200,
252
+ "tags": [
253
+ "expo",
254
+ "react-native",
255
+ "mobile",
256
+ "react"
257
+ ],
258
+ "repoRoles": [
259
+ "expo-app"
260
+ ],
261
+ "requiresAny": [
262
+ {
263
+ "stack": "expo"
264
+ },
265
+ {
266
+ "stack": "react-native"
267
+ },
268
+ {
269
+ "role": "expo-app"
270
+ },
271
+ {
272
+ "dependency": "expo"
273
+ },
274
+ {
275
+ "dependency": "react-native"
276
+ }
277
+ ],
278
+ "ecosystem": "mobile",
279
+ "tokenEstimate": 2200,
280
+ "installMode": "copy-selected"
281
+ },
235
282
  {
236
283
  "id": "haus.sanity-patterns",
237
284
  "version": "1.0.0",
@@ -1111,13 +1158,13 @@
1111
1158
  },
1112
1159
  {
1113
1160
  "id": "haus.auth-oidc-azure-bankid-patterns",
1114
- "version": "1.0.0",
1161
+ "version": "1.1.0",
1115
1162
  "source": "haus",
1116
1163
  "type": "skill",
1117
1164
  "path": "skills/auth-oidc-azure-bankid-patterns",
1118
- "title": "Haus auth patterns",
1119
- "purpose": "Guide identity-provider auth flow and claim/session lifecycle changes.",
1120
- "whenToUse": "Use for OIDC/Azure AD/BankID login, callback, token, and claim mapping updates.",
1165
+ "title": "Haus enterprise auth patterns (OIDC / Azure AD / BankID / SAML2)",
1166
+ "purpose": "Guide identity-provider auth flow and claim/session lifecycle changes across OIDC, Azure AD, BankID, and SAML2.",
1167
+ "whenToUse": "Use for OIDC/Azure AD/BankID/SAML2 login, callback, token, claim mapping, and SP/IDP metadata updates.",
1121
1168
  "whenNotToUse": "Do not use for profile CRUD without auth protocol change.",
1122
1169
  "references": [
1123
1170
  "references/conventions.md",
@@ -1128,7 +1175,8 @@
1128
1175
  "tags": [
1129
1176
  "oidc",
1130
1177
  "azure-ad",
1131
- "bankid"
1178
+ "bankid",
1179
+ "saml2"
1132
1180
  ],
1133
1181
  "repoRoles": [],
1134
1182
  "requiresAny": [
@@ -1140,15 +1188,58 @@
1140
1188
  },
1141
1189
  {
1142
1190
  "stack": "bankid"
1191
+ },
1192
+ {
1193
+ "stack": "saml2"
1143
1194
  }
1144
1195
  ],
1145
1196
  "tokenEstimate": 1700,
1146
1197
  "installMode": "copy-selected",
1147
1198
  "ecosystem": "auth"
1148
1199
  },
1200
+ {
1201
+ "id": "haus.nextauth-patterns",
1202
+ "version": "1.0.0",
1203
+ "source": "haus",
1204
+ "type": "skill",
1205
+ "path": "skills/nextauth-patterns",
1206
+ "title": "Haus NextAuth patterns",
1207
+ "purpose": "Guide NextAuth.js / Auth.js provider, session, callback, and middleware changes in Next.js apps.",
1208
+ "whenToUse": "Use for `next-auth` / `@auth/core` provider setup, session strategy, callbacks, JWT, and route protection in Next.js.",
1209
+ "whenNotToUse": "Do not use for Laravel/PHP auth, OIDC outside Next.js, or session-less API tokens.",
1210
+ "references": [
1211
+ "references/conventions.md",
1212
+ "references/scope.md",
1213
+ "references/workflow.md",
1214
+ "https://authjs.dev/"
1215
+ ],
1216
+ "tokenBudget": 1200,
1217
+ "tags": [
1218
+ "next-auth",
1219
+ "auth",
1220
+ "nextjs"
1221
+ ],
1222
+ "repoRoles": [
1223
+ "next-app"
1224
+ ],
1225
+ "requiresAny": [
1226
+ {
1227
+ "stack": "next-auth"
1228
+ },
1229
+ {
1230
+ "dependency": "next-auth"
1231
+ },
1232
+ {
1233
+ "dependency": "@auth/core"
1234
+ }
1235
+ ],
1236
+ "ecosystem": "auth",
1237
+ "tokenEstimate": 2000,
1238
+ "installMode": "copy-selected"
1239
+ },
1149
1240
  {
1150
1241
  "id": "haus.database-patterns",
1151
- "version": "1.1.0",
1242
+ "version": "1.2.0",
1152
1243
  "source": "haus",
1153
1244
  "type": "skill",
1154
1245
  "path": "skills/database-patterns",
@@ -1165,6 +1256,7 @@
1165
1256
  "tags": [
1166
1257
  "postgresql",
1167
1258
  "mariadb",
1259
+ "mysql",
1168
1260
  "mssql",
1169
1261
  "elasticsearch",
1170
1262
  "redis"
@@ -1177,6 +1269,9 @@
1177
1269
  {
1178
1270
  "stack": "mariadb"
1179
1271
  },
1272
+ {
1273
+ "stack": "mysql"
1274
+ },
1180
1275
  {
1181
1276
  "stack": "mssql"
1182
1277
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haus-tech/haus-workflow",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "description": "Haus AI workflow CLI for Claude Code.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -128,6 +128,30 @@
128
128
  "tokenEstimate": 2000,
129
129
  "installMode": "copy-selected"
130
130
  },
131
+ {
132
+ "id": "haus.expo-react-native-patterns",
133
+ "source": "haus",
134
+ "type": "skill",
135
+ "path": "skills/expo-react-native-patterns",
136
+ "title": "Haus Expo / React Native patterns",
137
+ "purpose": "Guide Expo Router, React Native component, native module, and EAS build changes.",
138
+ "whenToUse": "Use for Expo Router routes, RN components, native modules, expo config plugins, and EAS build/submit.",
139
+ "whenNotToUse": "Do not use for web-only React apps or unrelated mobile native projects (Swift/Kotlin without Expo).",
140
+ "references": ["references/scope.md", "references/workflow.md", "https://docs.expo.dev/"],
141
+ "tokenBudget": 1200,
142
+ "tags": ["expo", "react-native", "mobile", "react"],
143
+ "repoRoles": ["expo-app"],
144
+ "requiresAny": [
145
+ { "stack": "expo" },
146
+ { "stack": "react-native" },
147
+ { "role": "expo-app" },
148
+ { "dependency": "expo" },
149
+ { "dependency": "react-native" }
150
+ ],
151
+ "ecosystem": "mobile",
152
+ "tokenEstimate": 2200,
153
+ "installMode": "copy-selected"
154
+ },
131
155
  {
132
156
  "id": "haus.sanity-patterns",
133
157
  "source": "haus",
@@ -624,22 +648,45 @@
624
648
  "source": "haus",
625
649
  "type": "skill",
626
650
  "path": "skills/auth-oidc-azure-bankid-patterns",
627
- "title": "Haus auth patterns",
628
- "purpose": "Guide identity-provider auth flow and claim/session lifecycle changes.",
629
- "whenToUse": "Use for OIDC/Azure AD/BankID login, callback, token, and claim mapping updates.",
651
+ "title": "Haus enterprise auth patterns (OIDC / Azure AD / BankID / SAML2)",
652
+ "purpose": "Guide identity-provider auth flow and claim/session lifecycle changes across OIDC, Azure AD, BankID, and SAML2.",
653
+ "whenToUse": "Use for OIDC/Azure AD/BankID/SAML2 login, callback, token, claim mapping, and SP/IDP metadata updates.",
630
654
  "whenNotToUse": "Do not use for profile CRUD without auth protocol change.",
631
655
  "references": ["references/scope.md", "references/workflow.md"],
632
656
  "tokenBudget": 1200,
633
- "tags": ["oidc", "azure-ad", "bankid"],
657
+ "tags": ["oidc", "azure-ad", "bankid", "saml2"],
634
658
  "repoRoles": [],
635
659
  "requiresAny": [
636
660
  { "stack": "oidc" },
637
661
  { "stack": "azure-ad" },
638
- { "stack": "bankid" }
662
+ { "stack": "bankid" },
663
+ { "stack": "saml2" }
639
664
  ],
640
665
  "tokenEstimate": 1700,
641
666
  "installMode": "copy-selected"
642
667
  },
668
+ {
669
+ "id": "haus.nextauth-patterns",
670
+ "source": "haus",
671
+ "type": "skill",
672
+ "path": "skills/nextauth-patterns",
673
+ "title": "Haus NextAuth patterns",
674
+ "purpose": "Guide NextAuth.js / Auth.js provider, session, callback, and middleware changes in Next.js apps.",
675
+ "whenToUse": "Use for `next-auth` / `@auth/core` provider setup, session strategy, callbacks, JWT, and route protection in Next.js.",
676
+ "whenNotToUse": "Do not use for Laravel/PHP auth, OIDC outside Next.js, or session-less API tokens.",
677
+ "references": ["references/scope.md", "references/workflow.md", "https://authjs.dev/"],
678
+ "tokenBudget": 1200,
679
+ "tags": ["next-auth", "auth", "nextjs"],
680
+ "repoRoles": ["next-app"],
681
+ "requiresAny": [
682
+ { "stack": "next-auth" },
683
+ { "dependency": "next-auth" },
684
+ { "dependency": "@auth/core" }
685
+ ],
686
+ "ecosystem": "auth",
687
+ "tokenEstimate": 2000,
688
+ "installMode": "copy-selected"
689
+ },
643
690
  {
644
691
  "id": "haus.database-patterns",
645
692
  "source": "haus",
@@ -651,11 +698,12 @@
651
698
  "whenNotToUse": "Do not use for UI-only changes without persistence/search impact.",
652
699
  "references": ["references/scope.md", "references/workflow.md"],
653
700
  "tokenBudget": 1200,
654
- "tags": ["postgresql", "mariadb", "mssql", "elasticsearch", "redis"],
701
+ "tags": ["postgresql", "mariadb", "mysql", "mssql", "elasticsearch", "redis"],
655
702
  "repoRoles": [],
656
703
  "requiresAny": [
657
704
  { "stack": "postgresql" },
658
705
  { "stack": "mariadb" },
706
+ { "stack": "mysql" },
659
707
  { "stack": "mssql" },
660
708
  { "stack": "elasticsearch" },
661
709
  { "stack": "redis" }
@@ -0,0 +1,9 @@
1
+ <!-- Fixture stub — minimal valid SKILL.md for CLI tests. -->
2
+
3
+ ## Use when
4
+
5
+ Use this skill when working with the relevant technology.
6
+
7
+ ## Do not use when
8
+
9
+ Do not use for unrelated tasks.
@@ -0,0 +1,9 @@
1
+ <!-- Fixture stub — minimal valid SKILL.md for CLI tests. -->
2
+
3
+ ## Use when
4
+
5
+ Use this skill when working with the relevant technology.
6
+
7
+ ## Do not use when
8
+
9
+ Do not use for unrelated tasks.