@haus-tech/haus-workflow 0.4.0 → 0.6.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 +14 -0
- package/library/catalog/allowed-stacks.json +10 -1
- package/library/catalog/manifest.json +179 -6
- package/package.json +1 -1
- package/tests/fixtures/catalog/manifest.json +97 -6
- package/tests/fixtures/catalog/skills/nextauth-patterns/SKILL.md +9 -0
- package/tests/fixtures/catalog/skills/prisma-patterns/SKILL.md +9 -0
- package/tests/fixtures/catalog/skills/sanity-patterns/SKILL.md +9 -0
- package/tests/fixtures/catalog/skills/strapi-patterns/SKILL.md +9 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.6.0](https://github.com/WeAreHausTech/haus-workflow/compare/v0.5.0...v0.6.0) (2026-05-28)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* **scanner:** detect mysql, saml2, next-auth (T15-T17) ([13694e1](https://github.com/WeAreHausTech/haus-workflow/commit/13694e12895b2bb470c7a01adc10a3fc91bb3e42))
|
|
8
|
+
|
|
9
|
+
## [0.5.0](https://github.com/WeAreHausTech/haus-workflow/compare/v0.4.0...v0.5.0) (2026-05-28)
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **scanner:** detect sanity, strapi, prisma (T12-T14) ([d2f3235](https://github.com/WeAreHausTech/haus-workflow/commit/d2f32359de33f85176085dfcd5c68685b2d4a5fc))
|
|
14
|
+
|
|
3
15
|
## [0.4.0](https://github.com/WeAreHausTech/haus-workflow/compare/v0.3.0...v0.4.0) (2026-05-28)
|
|
4
16
|
|
|
5
17
|
### Features
|
package/dist/cli.js
CHANGED
|
@@ -1419,6 +1419,8 @@ function detectRoles(deps, files) {
|
|
|
1419
1419
|
if (deps.includes("react")) roles.add("react-app");
|
|
1420
1420
|
if (deps.includes("vite") || files.some((f) => f.includes("vite.config."))) roles.add("vite-app");
|
|
1421
1421
|
if (deps.includes("react-router") && deps.includes("@react-router/node")) roles.add("react-router-app");
|
|
1422
|
+
if (deps.includes("sanity")) roles.add("sanity-studio");
|
|
1423
|
+
if (deps.includes("@strapi/strapi") || deps.some((d) => d.startsWith("@strapi/"))) roles.add("strapi-app");
|
|
1422
1424
|
if (deps.includes("@vendure/core")) roles.add("vendure-app");
|
|
1423
1425
|
if (deps.some((d) => d.startsWith("@haus/vendure-")) || files.some((f) => f.includes("vendure-config")))
|
|
1424
1426
|
roles.add("vendure-plugin");
|
|
@@ -1470,6 +1472,13 @@ async function detectStacks(root, deps, files, packageManager) {
|
|
|
1470
1472
|
add("frontend", "shadcn");
|
|
1471
1473
|
}
|
|
1472
1474
|
if (deps.includes("typescript")) add("tooling", "typescript5");
|
|
1475
|
+
if (deps.includes("sanity") || deps.includes("next-sanity") || deps.includes("@sanity/client")) {
|
|
1476
|
+
add("backend", "sanity");
|
|
1477
|
+
}
|
|
1478
|
+
if (deps.includes("@strapi/strapi") || deps.some((d) => d.startsWith("@strapi/"))) {
|
|
1479
|
+
add("backend", "strapi");
|
|
1480
|
+
}
|
|
1481
|
+
if (deps.includes("prisma") || deps.includes("@prisma/client")) add("backend", "prisma");
|
|
1473
1482
|
if (deps.includes("@vendure/core")) add("backend", "vendure3");
|
|
1474
1483
|
if (deps.includes("@nestjs/core")) add("backend", "nestjs");
|
|
1475
1484
|
if (await hasNeedle(root, files, "NestFactory")) add("backend", "nestjs");
|
|
@@ -1498,6 +1507,7 @@ async function detectStacks(root, deps, files, packageManager) {
|
|
|
1498
1507
|
if (deps.includes("jest") || deps.includes("jest-environment-jsdom")) add("testing", "jest");
|
|
1499
1508
|
if (deps.includes("pg")) add("databases", "postgresql");
|
|
1500
1509
|
if (deps.includes("mariadb") || deps.includes("mysql2")) add("databases", "mariadb");
|
|
1510
|
+
if (deps.includes("mysql") || deps.includes("mysql2")) add("databases", "mysql");
|
|
1501
1511
|
if (deps.includes("mssql")) add("databases", "mssql");
|
|
1502
1512
|
if (deps.includes("@elastic/elasticsearch")) add("databases", "elasticsearch");
|
|
1503
1513
|
if (deps.includes("predis/predis") || deps.includes("ioredis") || deps.includes("redis")) {
|
|
@@ -1506,6 +1516,10 @@ async function detectStacks(root, deps, files, packageManager) {
|
|
|
1506
1516
|
if (await hasNeedle(root, files, "openid")) add("auth", "oidc");
|
|
1507
1517
|
if (await hasNeedle(root, files, "AZURE_AD")) add("auth", "azure-ad");
|
|
1508
1518
|
if (await hasNeedle(root, files, "BANKID")) add("auth", "bankid");
|
|
1519
|
+
if (deps.includes("24slides/laravel-saml2") || deps.includes("aacotroneo/laravel-saml2")) {
|
|
1520
|
+
add("auth", "saml2");
|
|
1521
|
+
}
|
|
1522
|
+
if (deps.includes("next-auth") || deps.includes("@auth/core")) add("auth", "next-auth");
|
|
1509
1523
|
if (packageManager === "yarn") add("packageManagers", "yarn4");
|
|
1510
1524
|
if (packageManager === "pnpm") add("packageManagers", "pnpm89");
|
|
1511
1525
|
return out;
|
|
@@ -232,6 +232,131 @@
|
|
|
232
232
|
"tokenEstimate": 2000,
|
|
233
233
|
"installMode": "copy-selected"
|
|
234
234
|
},
|
|
235
|
+
{
|
|
236
|
+
"id": "haus.sanity-patterns",
|
|
237
|
+
"version": "1.0.0",
|
|
238
|
+
"source": "haus",
|
|
239
|
+
"type": "skill",
|
|
240
|
+
"path": "skills/sanity-patterns",
|
|
241
|
+
"title": "Haus Sanity patterns",
|
|
242
|
+
"purpose": "Guide Sanity v3/v5 schema, Studio config, GROQ query, and Next.js integration changes.",
|
|
243
|
+
"whenToUse": "Use for Sanity schema, Studio plugin, GROQ query, or next-sanity integration updates.",
|
|
244
|
+
"whenNotToUse": "Do not use for Strapi, WordPress, or other CMS work.",
|
|
245
|
+
"references": [
|
|
246
|
+
"references/conventions.md",
|
|
247
|
+
"references/scope.md",
|
|
248
|
+
"references/workflow.md",
|
|
249
|
+
"https://www.sanity.io/docs"
|
|
250
|
+
],
|
|
251
|
+
"tokenBudget": 1200,
|
|
252
|
+
"tags": [
|
|
253
|
+
"sanity",
|
|
254
|
+
"backend",
|
|
255
|
+
"cms"
|
|
256
|
+
],
|
|
257
|
+
"repoRoles": [
|
|
258
|
+
"sanity-studio",
|
|
259
|
+
"next-app"
|
|
260
|
+
],
|
|
261
|
+
"requiresAny": [
|
|
262
|
+
{
|
|
263
|
+
"stack": "sanity"
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
"role": "sanity-studio"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"dependency": "sanity"
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
"dependency": "next-sanity"
|
|
273
|
+
}
|
|
274
|
+
],
|
|
275
|
+
"ecosystem": "cms",
|
|
276
|
+
"tokenEstimate": 2000,
|
|
277
|
+
"installMode": "copy-selected"
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"id": "haus.strapi-patterns",
|
|
281
|
+
"version": "1.0.0",
|
|
282
|
+
"source": "haus",
|
|
283
|
+
"type": "skill",
|
|
284
|
+
"path": "skills/strapi-patterns",
|
|
285
|
+
"title": "Haus Strapi patterns",
|
|
286
|
+
"purpose": "Guide Strapi v5 content type, controller, service, and policy changes.",
|
|
287
|
+
"whenToUse": "Use for Strapi content type schemas, controllers, services, and policies in v5.",
|
|
288
|
+
"whenNotToUse": "Do not use for Sanity, WordPress, or other CMS work.",
|
|
289
|
+
"references": [
|
|
290
|
+
"references/conventions.md",
|
|
291
|
+
"references/scope.md",
|
|
292
|
+
"references/workflow.md",
|
|
293
|
+
"https://docs.strapi.io/dev-docs/intro"
|
|
294
|
+
],
|
|
295
|
+
"tokenBudget": 1200,
|
|
296
|
+
"tags": [
|
|
297
|
+
"strapi",
|
|
298
|
+
"backend",
|
|
299
|
+
"cms"
|
|
300
|
+
],
|
|
301
|
+
"repoRoles": [
|
|
302
|
+
"strapi-app"
|
|
303
|
+
],
|
|
304
|
+
"requiresAny": [
|
|
305
|
+
{
|
|
306
|
+
"stack": "strapi"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"role": "strapi-app"
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
"dependency": "@strapi/strapi"
|
|
313
|
+
}
|
|
314
|
+
],
|
|
315
|
+
"ecosystem": "cms",
|
|
316
|
+
"tokenEstimate": 2000,
|
|
317
|
+
"installMode": "copy-selected"
|
|
318
|
+
},
|
|
319
|
+
{
|
|
320
|
+
"id": "haus.prisma-patterns",
|
|
321
|
+
"version": "1.0.0",
|
|
322
|
+
"source": "haus",
|
|
323
|
+
"type": "skill",
|
|
324
|
+
"path": "skills/prisma-patterns",
|
|
325
|
+
"title": "Haus Prisma patterns",
|
|
326
|
+
"purpose": "Guide Prisma schema, migration, and query-safe ORM changes.",
|
|
327
|
+
"whenToUse": "Use for prisma/schema.prisma updates, migrations, and PrismaClient query changes.",
|
|
328
|
+
"whenNotToUse": "Do not use for non-Prisma ORM tasks or pure DB schema work without Prisma.",
|
|
329
|
+
"references": [
|
|
330
|
+
"references/conventions.md",
|
|
331
|
+
"references/scope.md",
|
|
332
|
+
"references/workflow.md",
|
|
333
|
+
"https://www.prisma.io/docs"
|
|
334
|
+
],
|
|
335
|
+
"tokenBudget": 1200,
|
|
336
|
+
"tags": [
|
|
337
|
+
"prisma",
|
|
338
|
+
"backend",
|
|
339
|
+
"database"
|
|
340
|
+
],
|
|
341
|
+
"repoRoles": [
|
|
342
|
+
"next-app",
|
|
343
|
+
"nestjs-api"
|
|
344
|
+
],
|
|
345
|
+
"requiresAny": [
|
|
346
|
+
{
|
|
347
|
+
"stack": "prisma"
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
"dependency": "@prisma/client"
|
|
351
|
+
},
|
|
352
|
+
{
|
|
353
|
+
"dependency": "prisma"
|
|
354
|
+
}
|
|
355
|
+
],
|
|
356
|
+
"ecosystem": "database",
|
|
357
|
+
"tokenEstimate": 2000,
|
|
358
|
+
"installMode": "copy-selected"
|
|
359
|
+
},
|
|
235
360
|
{
|
|
236
361
|
"id": "haus.vendure-plugin-patterns",
|
|
237
362
|
"version": "1.0.0",
|
|
@@ -986,13 +1111,13 @@
|
|
|
986
1111
|
},
|
|
987
1112
|
{
|
|
988
1113
|
"id": "haus.auth-oidc-azure-bankid-patterns",
|
|
989
|
-
"version": "1.
|
|
1114
|
+
"version": "1.1.0",
|
|
990
1115
|
"source": "haus",
|
|
991
1116
|
"type": "skill",
|
|
992
1117
|
"path": "skills/auth-oidc-azure-bankid-patterns",
|
|
993
|
-
"title": "Haus auth patterns",
|
|
994
|
-
"purpose": "Guide identity-provider auth flow and claim/session lifecycle changes.",
|
|
995
|
-
"whenToUse": "Use for OIDC/Azure AD/BankID login, callback, token,
|
|
1118
|
+
"title": "Haus enterprise auth patterns (OIDC / Azure AD / BankID / SAML2)",
|
|
1119
|
+
"purpose": "Guide identity-provider auth flow and claim/session lifecycle changes across OIDC, Azure AD, BankID, and SAML2.",
|
|
1120
|
+
"whenToUse": "Use for OIDC/Azure AD/BankID/SAML2 login, callback, token, claim mapping, and SP/IDP metadata updates.",
|
|
996
1121
|
"whenNotToUse": "Do not use for profile CRUD without auth protocol change.",
|
|
997
1122
|
"references": [
|
|
998
1123
|
"references/conventions.md",
|
|
@@ -1003,7 +1128,8 @@
|
|
|
1003
1128
|
"tags": [
|
|
1004
1129
|
"oidc",
|
|
1005
1130
|
"azure-ad",
|
|
1006
|
-
"bankid"
|
|
1131
|
+
"bankid",
|
|
1132
|
+
"saml2"
|
|
1007
1133
|
],
|
|
1008
1134
|
"repoRoles": [],
|
|
1009
1135
|
"requiresAny": [
|
|
@@ -1015,15 +1141,58 @@
|
|
|
1015
1141
|
},
|
|
1016
1142
|
{
|
|
1017
1143
|
"stack": "bankid"
|
|
1144
|
+
},
|
|
1145
|
+
{
|
|
1146
|
+
"stack": "saml2"
|
|
1018
1147
|
}
|
|
1019
1148
|
],
|
|
1020
1149
|
"tokenEstimate": 1700,
|
|
1021
1150
|
"installMode": "copy-selected",
|
|
1022
1151
|
"ecosystem": "auth"
|
|
1023
1152
|
},
|
|
1153
|
+
{
|
|
1154
|
+
"id": "haus.nextauth-patterns",
|
|
1155
|
+
"version": "1.0.0",
|
|
1156
|
+
"source": "haus",
|
|
1157
|
+
"type": "skill",
|
|
1158
|
+
"path": "skills/nextauth-patterns",
|
|
1159
|
+
"title": "Haus NextAuth patterns",
|
|
1160
|
+
"purpose": "Guide NextAuth.js / Auth.js provider, session, callback, and middleware changes in Next.js apps.",
|
|
1161
|
+
"whenToUse": "Use for `next-auth` / `@auth/core` provider setup, session strategy, callbacks, JWT, and route protection in Next.js.",
|
|
1162
|
+
"whenNotToUse": "Do not use for Laravel/PHP auth, OIDC outside Next.js, or session-less API tokens.",
|
|
1163
|
+
"references": [
|
|
1164
|
+
"references/conventions.md",
|
|
1165
|
+
"references/scope.md",
|
|
1166
|
+
"references/workflow.md",
|
|
1167
|
+
"https://authjs.dev/"
|
|
1168
|
+
],
|
|
1169
|
+
"tokenBudget": 1200,
|
|
1170
|
+
"tags": [
|
|
1171
|
+
"next-auth",
|
|
1172
|
+
"auth",
|
|
1173
|
+
"nextjs"
|
|
1174
|
+
],
|
|
1175
|
+
"repoRoles": [
|
|
1176
|
+
"next-app"
|
|
1177
|
+
],
|
|
1178
|
+
"requiresAny": [
|
|
1179
|
+
{
|
|
1180
|
+
"stack": "next-auth"
|
|
1181
|
+
},
|
|
1182
|
+
{
|
|
1183
|
+
"dependency": "next-auth"
|
|
1184
|
+
},
|
|
1185
|
+
{
|
|
1186
|
+
"dependency": "@auth/core"
|
|
1187
|
+
}
|
|
1188
|
+
],
|
|
1189
|
+
"ecosystem": "auth",
|
|
1190
|
+
"tokenEstimate": 2000,
|
|
1191
|
+
"installMode": "copy-selected"
|
|
1192
|
+
},
|
|
1024
1193
|
{
|
|
1025
1194
|
"id": "haus.database-patterns",
|
|
1026
|
-
"version": "1.
|
|
1195
|
+
"version": "1.2.0",
|
|
1027
1196
|
"source": "haus",
|
|
1028
1197
|
"type": "skill",
|
|
1029
1198
|
"path": "skills/database-patterns",
|
|
@@ -1040,6 +1209,7 @@
|
|
|
1040
1209
|
"tags": [
|
|
1041
1210
|
"postgresql",
|
|
1042
1211
|
"mariadb",
|
|
1212
|
+
"mysql",
|
|
1043
1213
|
"mssql",
|
|
1044
1214
|
"elasticsearch",
|
|
1045
1215
|
"redis"
|
|
@@ -1052,6 +1222,9 @@
|
|
|
1052
1222
|
{
|
|
1053
1223
|
"stack": "mariadb"
|
|
1054
1224
|
},
|
|
1225
|
+
{
|
|
1226
|
+
"stack": "mysql"
|
|
1227
|
+
},
|
|
1055
1228
|
{
|
|
1056
1229
|
"stack": "mssql"
|
|
1057
1230
|
},
|
package/package.json
CHANGED
|
@@ -128,6 +128,73 @@
|
|
|
128
128
|
"tokenEstimate": 2000,
|
|
129
129
|
"installMode": "copy-selected"
|
|
130
130
|
},
|
|
131
|
+
{
|
|
132
|
+
"id": "haus.sanity-patterns",
|
|
133
|
+
"source": "haus",
|
|
134
|
+
"type": "skill",
|
|
135
|
+
"path": "skills/sanity-patterns",
|
|
136
|
+
"title": "Haus Sanity patterns",
|
|
137
|
+
"purpose": "Guide Sanity v3/v5 schema, Studio config, GROQ query, and Next.js integration changes.",
|
|
138
|
+
"whenToUse": "Use for Sanity schema, Studio plugin, GROQ query, or next-sanity integration updates.",
|
|
139
|
+
"whenNotToUse": "Do not use for Strapi, WordPress, or other CMS work.",
|
|
140
|
+
"references": ["references/scope.md", "references/workflow.md", "https://www.sanity.io/docs"],
|
|
141
|
+
"tokenBudget": 1200,
|
|
142
|
+
"tags": ["sanity", "backend", "cms"],
|
|
143
|
+
"repoRoles": ["sanity-studio", "next-app"],
|
|
144
|
+
"requiresAny": [
|
|
145
|
+
{ "stack": "sanity" },
|
|
146
|
+
{ "role": "sanity-studio" },
|
|
147
|
+
{ "dependency": "sanity" },
|
|
148
|
+
{ "dependency": "next-sanity" }
|
|
149
|
+
],
|
|
150
|
+
"ecosystem": "cms",
|
|
151
|
+
"tokenEstimate": 2000,
|
|
152
|
+
"installMode": "copy-selected"
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
"id": "haus.strapi-patterns",
|
|
156
|
+
"source": "haus",
|
|
157
|
+
"type": "skill",
|
|
158
|
+
"path": "skills/strapi-patterns",
|
|
159
|
+
"title": "Haus Strapi patterns",
|
|
160
|
+
"purpose": "Guide Strapi v5 content type, controller, service, and policy changes.",
|
|
161
|
+
"whenToUse": "Use for Strapi content type schemas, controllers, services, and policies in v5.",
|
|
162
|
+
"whenNotToUse": "Do not use for Sanity, WordPress, or other CMS work.",
|
|
163
|
+
"references": ["references/scope.md", "references/workflow.md", "https://docs.strapi.io/dev-docs/intro"],
|
|
164
|
+
"tokenBudget": 1200,
|
|
165
|
+
"tags": ["strapi", "backend", "cms"],
|
|
166
|
+
"repoRoles": ["strapi-app"],
|
|
167
|
+
"requiresAny": [
|
|
168
|
+
{ "stack": "strapi" },
|
|
169
|
+
{ "role": "strapi-app" },
|
|
170
|
+
{ "dependency": "@strapi/strapi" }
|
|
171
|
+
],
|
|
172
|
+
"ecosystem": "cms",
|
|
173
|
+
"tokenEstimate": 2000,
|
|
174
|
+
"installMode": "copy-selected"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"id": "haus.prisma-patterns",
|
|
178
|
+
"source": "haus",
|
|
179
|
+
"type": "skill",
|
|
180
|
+
"path": "skills/prisma-patterns",
|
|
181
|
+
"title": "Haus Prisma patterns",
|
|
182
|
+
"purpose": "Guide Prisma schema, migration, and query-safe ORM changes.",
|
|
183
|
+
"whenToUse": "Use for prisma/schema.prisma updates, migrations, and PrismaClient query changes.",
|
|
184
|
+
"whenNotToUse": "Do not use for non-Prisma ORM tasks or pure DB schema work without Prisma.",
|
|
185
|
+
"references": ["references/scope.md", "references/workflow.md", "https://www.prisma.io/docs"],
|
|
186
|
+
"tokenBudget": 1200,
|
|
187
|
+
"tags": ["prisma", "backend", "database"],
|
|
188
|
+
"repoRoles": ["next-app", "nestjs-api"],
|
|
189
|
+
"requiresAny": [
|
|
190
|
+
{ "stack": "prisma" },
|
|
191
|
+
{ "dependency": "@prisma/client" },
|
|
192
|
+
{ "dependency": "prisma" }
|
|
193
|
+
],
|
|
194
|
+
"ecosystem": "database",
|
|
195
|
+
"tokenEstimate": 2000,
|
|
196
|
+
"installMode": "copy-selected"
|
|
197
|
+
},
|
|
131
198
|
{
|
|
132
199
|
"id": "haus.vendure-plugin-patterns",
|
|
133
200
|
"source": "haus",
|
|
@@ -557,22 +624,45 @@
|
|
|
557
624
|
"source": "haus",
|
|
558
625
|
"type": "skill",
|
|
559
626
|
"path": "skills/auth-oidc-azure-bankid-patterns",
|
|
560
|
-
"title": "Haus auth patterns",
|
|
561
|
-
"purpose": "Guide identity-provider auth flow and claim/session lifecycle changes.",
|
|
562
|
-
"whenToUse": "Use for OIDC/Azure AD/BankID login, callback, token,
|
|
627
|
+
"title": "Haus enterprise auth patterns (OIDC / Azure AD / BankID / SAML2)",
|
|
628
|
+
"purpose": "Guide identity-provider auth flow and claim/session lifecycle changes across OIDC, Azure AD, BankID, and SAML2.",
|
|
629
|
+
"whenToUse": "Use for OIDC/Azure AD/BankID/SAML2 login, callback, token, claim mapping, and SP/IDP metadata updates.",
|
|
563
630
|
"whenNotToUse": "Do not use for profile CRUD without auth protocol change.",
|
|
564
631
|
"references": ["references/scope.md", "references/workflow.md"],
|
|
565
632
|
"tokenBudget": 1200,
|
|
566
|
-
"tags": ["oidc", "azure-ad", "bankid"],
|
|
633
|
+
"tags": ["oidc", "azure-ad", "bankid", "saml2"],
|
|
567
634
|
"repoRoles": [],
|
|
568
635
|
"requiresAny": [
|
|
569
636
|
{ "stack": "oidc" },
|
|
570
637
|
{ "stack": "azure-ad" },
|
|
571
|
-
{ "stack": "bankid" }
|
|
638
|
+
{ "stack": "bankid" },
|
|
639
|
+
{ "stack": "saml2" }
|
|
572
640
|
],
|
|
573
641
|
"tokenEstimate": 1700,
|
|
574
642
|
"installMode": "copy-selected"
|
|
575
643
|
},
|
|
644
|
+
{
|
|
645
|
+
"id": "haus.nextauth-patterns",
|
|
646
|
+
"source": "haus",
|
|
647
|
+
"type": "skill",
|
|
648
|
+
"path": "skills/nextauth-patterns",
|
|
649
|
+
"title": "Haus NextAuth patterns",
|
|
650
|
+
"purpose": "Guide NextAuth.js / Auth.js provider, session, callback, and middleware changes in Next.js apps.",
|
|
651
|
+
"whenToUse": "Use for `next-auth` / `@auth/core` provider setup, session strategy, callbacks, JWT, and route protection in Next.js.",
|
|
652
|
+
"whenNotToUse": "Do not use for Laravel/PHP auth, OIDC outside Next.js, or session-less API tokens.",
|
|
653
|
+
"references": ["references/scope.md", "references/workflow.md", "https://authjs.dev/"],
|
|
654
|
+
"tokenBudget": 1200,
|
|
655
|
+
"tags": ["next-auth", "auth", "nextjs"],
|
|
656
|
+
"repoRoles": ["next-app"],
|
|
657
|
+
"requiresAny": [
|
|
658
|
+
{ "stack": "next-auth" },
|
|
659
|
+
{ "dependency": "next-auth" },
|
|
660
|
+
{ "dependency": "@auth/core" }
|
|
661
|
+
],
|
|
662
|
+
"ecosystem": "auth",
|
|
663
|
+
"tokenEstimate": 2000,
|
|
664
|
+
"installMode": "copy-selected"
|
|
665
|
+
},
|
|
576
666
|
{
|
|
577
667
|
"id": "haus.database-patterns",
|
|
578
668
|
"source": "haus",
|
|
@@ -584,11 +674,12 @@
|
|
|
584
674
|
"whenNotToUse": "Do not use for UI-only changes without persistence/search impact.",
|
|
585
675
|
"references": ["references/scope.md", "references/workflow.md"],
|
|
586
676
|
"tokenBudget": 1200,
|
|
587
|
-
"tags": ["postgresql", "mariadb", "mssql", "elasticsearch", "redis"],
|
|
677
|
+
"tags": ["postgresql", "mariadb", "mysql", "mssql", "elasticsearch", "redis"],
|
|
588
678
|
"repoRoles": [],
|
|
589
679
|
"requiresAny": [
|
|
590
680
|
{ "stack": "postgresql" },
|
|
591
681
|
{ "stack": "mariadb" },
|
|
682
|
+
{ "stack": "mysql" },
|
|
592
683
|
{ "stack": "mssql" },
|
|
593
684
|
{ "stack": "elasticsearch" },
|
|
594
685
|
{ "stack": "redis" }
|