@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 +12 -0
- package/dist/cli.js +8 -0
- package/library/catalog/allowed-stacks.json +8 -1
- package/library/catalog/manifest.json +101 -6
- package/package.json +1 -1
- package/tests/fixtures/catalog/manifest.json +54 -6
- package/tests/fixtures/catalog/skills/expo-react-native-patterns/SKILL.md +9 -0
- package/tests/fixtures/catalog/skills/nextauth-patterns/SKILL.md +9 -0
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;
|
|
@@ -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.
|
|
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,
|
|
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.
|
|
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
|
@@ -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,
|
|
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" }
|