@haus-tech/haus-workflow 0.2.2 → 0.4.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 +14 -0
- package/dist/cli.js +31 -4
- package/library/catalog/allowed-stacks.json +5 -2
- package/library/catalog/manifest.json +151 -9
- package/package.json +1 -1
- package/tests/fixtures/catalog/manifest.json +76 -7
- package/tests/fixtures/catalog/skills/react-router-v7-patterns/SKILL.md +9 -0
- package/tests/fixtures/catalog/skills/typescript5-patterns/SKILL.md +9 -0
- package/tests/fixtures/catalog/skills/vitest-patterns/SKILL.md +9 -0
- /package/tests/fixtures/catalog/skills/{typescript6-patterns → jest-patterns}/SKILL.md +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.4.0](https://github.com/WeAreHausTech/haus-workflow/compare/v0.3.0...v0.4.0) (2026-05-28)
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* **scanner:** detect react-router-v7, tailwind, shadcn; rename typescript6 → typescript5 (T8-T11) ([d98d813](https://github.com/WeAreHausTech/haus-workflow/commit/d98d813c7e52df68ae7f55ceb23bd9016e2d8308))
|
|
8
|
+
|
|
9
|
+
## [0.3.0](https://github.com/WeAreHausTech/haus-workflow/compare/v0.2.2...v0.3.0) (2026-05-28)
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* **catalog:** allow vitest, jest, and redis tags ([ea08ab6](https://github.com/WeAreHausTech/haus-workflow/commit/ea08ab6cbd66a80bbcb94ce99c5d338dbaefc184))
|
|
14
|
+
* **scanner:** detect elementor, ACF/JetEngine, redis (T5-T7) ([262925c](https://github.com/WeAreHausTech/haus-workflow/commit/262925c02e695e9469c9c1ee4e9c03c87f9e1478))
|
|
15
|
+
* **scanner:** detect vitest and jest (T3, T4) ([1b917af](https://github.com/WeAreHausTech/haus-workflow/commit/1b917af88d10c8ca443dd8d6c9b5fe3b27a850fa))
|
|
16
|
+
|
|
3
17
|
## [0.2.2](https://github.com/WeAreHausTech/haus-workflow/compare/v0.2.1...v0.2.2) (2026-05-28)
|
|
4
18
|
|
|
5
19
|
### Bug Fixes
|
package/dist/cli.js
CHANGED
|
@@ -1418,6 +1418,7 @@ function detectRoles(deps, files) {
|
|
|
1418
1418
|
if (deps.includes("next") || files.some((f) => f.includes("next.config."))) roles.add("next-app");
|
|
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
|
+
if (deps.includes("react-router") && deps.includes("@react-router/node")) roles.add("react-router-app");
|
|
1421
1422
|
if (deps.includes("@vendure/core")) roles.add("vendure-app");
|
|
1422
1423
|
if (deps.some((d) => d.startsWith("@haus/vendure-")) || files.some((f) => f.includes("vendure-config")))
|
|
1423
1424
|
roles.add("vendure-plugin");
|
|
@@ -1427,13 +1428,17 @@ function detectRoles(deps, files) {
|
|
|
1427
1428
|
if (files.some((f) => f.endsWith("turbo.json"))) roles.add("turbo-monorepo");
|
|
1428
1429
|
if (files.some((f) => f.endsWith("artisan")) || deps.includes("laravel/framework")) roles.add("laravel-app");
|
|
1429
1430
|
if (deps.includes("laravel/nova")) roles.add("laravel-nova-app");
|
|
1430
|
-
|
|
1431
|
+
const hasWpConfig = files.some((f) => f.endsWith("wp-config.php"));
|
|
1432
|
+
const hasBedrockLayout = files.some((f) => f.includes("web/app")) || deps.includes("roots/wordpress");
|
|
1433
|
+
if (hasWpConfig && hasBedrockLayout) {
|
|
1431
1434
|
roles.add("wordpress-bedrock-site");
|
|
1432
1435
|
roles.add("wordpress-site");
|
|
1433
|
-
}
|
|
1434
|
-
if (files.some((f) => f.endsWith("wp-config.php")) && !files.some((f) => f.includes("web/app"))) {
|
|
1436
|
+
} else if (hasWpConfig) {
|
|
1435
1437
|
roles.add("wordpress-vanilla-site");
|
|
1436
1438
|
roles.add("wordpress-site");
|
|
1439
|
+
} else if (deps.includes("roots/wordpress")) {
|
|
1440
|
+
roles.add("wordpress-bedrock-site");
|
|
1441
|
+
roles.add("wordpress-site");
|
|
1437
1442
|
}
|
|
1438
1443
|
if (files.some((f) => f.endsWith(".csproj") || f.endsWith(".sln"))) roles.add("dotnet-service");
|
|
1439
1444
|
if (deps.includes("express")) roles.add("express-service");
|
|
@@ -1457,6 +1462,14 @@ async function detectStacks(root, deps, files, packageManager) {
|
|
|
1457
1462
|
if (deps.includes("react")) add("frontend", "react19");
|
|
1458
1463
|
if (deps.includes("vue")) add("frontend", "vue");
|
|
1459
1464
|
if (deps.includes("vite")) add("frontend", "vite8");
|
|
1465
|
+
if (deps.includes("react-router") && deps.includes("@react-router/node")) add("frontend", "react-router-v7");
|
|
1466
|
+
if (deps.includes("tailwindcss") || files.some((f) => f.includes("tailwind.config."))) {
|
|
1467
|
+
add("frontend", "tailwindcss");
|
|
1468
|
+
}
|
|
1469
|
+
if (files.some((f) => f.endsWith("components.json")) && deps.includes("class-variance-authority")) {
|
|
1470
|
+
add("frontend", "shadcn");
|
|
1471
|
+
}
|
|
1472
|
+
if (deps.includes("typescript")) add("tooling", "typescript5");
|
|
1460
1473
|
if (deps.includes("@vendure/core")) add("backend", "vendure3");
|
|
1461
1474
|
if (deps.includes("@nestjs/core")) add("backend", "nestjs");
|
|
1462
1475
|
if (await hasNeedle(root, files, "NestFactory")) add("backend", "nestjs");
|
|
@@ -1465,17 +1478,31 @@ async function detectStacks(root, deps, files, packageManager) {
|
|
|
1465
1478
|
if (files.some((f) => f.endsWith(".graphql") || f.endsWith("schema.graphql"))) add("backend", "graphql");
|
|
1466
1479
|
if (deps.includes("laravel/framework")) add("backend", "laravel");
|
|
1467
1480
|
if (files.some((f) => f.includes("app/Providers/") || f.includes("routes/"))) add("backend", "laravel");
|
|
1468
|
-
if (files.some((f) => f.endsWith("wp-config.php"))) add("backend", "wordpress");
|
|
1481
|
+
if (files.some((f) => f.endsWith("wp-config.php")) || deps.includes("roots/wordpress")) add("backend", "wordpress");
|
|
1482
|
+
if (deps.includes("wpackagist-plugin/elementor") || deps.includes("wearehaus/elementor-pro") || deps.includes("wpackagist-theme/hello-elementor")) {
|
|
1483
|
+
add("backend", "elementor");
|
|
1484
|
+
}
|
|
1485
|
+
if (deps.includes("wearehaus/advanced-custom-fields-pro") || deps.includes("wpackagist-plugin/advanced-custom-fields")) {
|
|
1486
|
+
add("backend", "acf-pro");
|
|
1487
|
+
}
|
|
1488
|
+
if (deps.includes("wearehaus/jet-engine")) add("backend", "jetengine");
|
|
1489
|
+
if (deps.includes("wearehaus/jet-smart-filters")) add("backend", "jetsmartfilters");
|
|
1490
|
+
if (deps.includes("wearehaus/gravityforms")) add("backend", "gravityforms");
|
|
1469
1491
|
if (files.some((f) => f.endsWith(".csproj") || f.endsWith(".sln"))) add("backend", "dotnet");
|
|
1470
1492
|
if (deps.includes("@playwright/test")) add("testing", "playwright");
|
|
1471
1493
|
if (files.some((f) => f.includes(".storybook"))) add("testing", "storybook");
|
|
1472
1494
|
if (deps.some((d) => d.startsWith("@testing-library/"))) add("testing", "testing-library");
|
|
1473
1495
|
if (files.some((f) => f.endsWith("phpunit.xml"))) add("testing", "phpunit");
|
|
1474
1496
|
if (deps.some((d) => d.startsWith("@storybook/"))) add("testing", "storybook");
|
|
1497
|
+
if (deps.includes("vitest")) add("testing", "vitest");
|
|
1498
|
+
if (deps.includes("jest") || deps.includes("jest-environment-jsdom")) add("testing", "jest");
|
|
1475
1499
|
if (deps.includes("pg")) add("databases", "postgresql");
|
|
1476
1500
|
if (deps.includes("mariadb") || deps.includes("mysql2")) add("databases", "mariadb");
|
|
1477
1501
|
if (deps.includes("mssql")) add("databases", "mssql");
|
|
1478
1502
|
if (deps.includes("@elastic/elasticsearch")) add("databases", "elasticsearch");
|
|
1503
|
+
if (deps.includes("predis/predis") || deps.includes("ioredis") || deps.includes("redis")) {
|
|
1504
|
+
add("databases", "redis");
|
|
1505
|
+
}
|
|
1479
1506
|
if (await hasNeedle(root, files, "openid")) add("auth", "oidc");
|
|
1480
1507
|
if (await hasNeedle(root, files, "AZURE_AD")) add("auth", "azure-ad");
|
|
1481
1508
|
if (await hasNeedle(root, files, "BANKID")) add("auth", "bankid");
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"turbo",
|
|
29
29
|
"nextjs",
|
|
30
30
|
"react19",
|
|
31
|
-
"
|
|
31
|
+
"typescript5",
|
|
32
32
|
"vite8",
|
|
33
33
|
"tanstack-query",
|
|
34
34
|
"tanstack-router",
|
|
@@ -68,6 +68,9 @@
|
|
|
68
68
|
"testing-library",
|
|
69
69
|
"phpunit",
|
|
70
70
|
"storybook",
|
|
71
|
-
"wisest"
|
|
71
|
+
"wisest",
|
|
72
|
+
"vitest",
|
|
73
|
+
"jest",
|
|
74
|
+
"redis"
|
|
72
75
|
]
|
|
73
76
|
}
|
|
@@ -107,12 +107,12 @@
|
|
|
107
107
|
"installMode": "copy-selected"
|
|
108
108
|
},
|
|
109
109
|
{
|
|
110
|
-
"id": "haus.
|
|
111
|
-
"version": "1.
|
|
110
|
+
"id": "haus.typescript5-patterns",
|
|
111
|
+
"version": "1.1.0",
|
|
112
112
|
"source": "haus",
|
|
113
113
|
"type": "skill",
|
|
114
|
-
"path": "skills/
|
|
115
|
-
"title": "Haus TypeScript patterns",
|
|
114
|
+
"path": "skills/typescript5-patterns",
|
|
115
|
+
"title": "Haus TypeScript 5 patterns",
|
|
116
116
|
"purpose": "Guide TypeScript contract and migration-safe typing changes.",
|
|
117
117
|
"whenToUse": "Use for shared types, DTOs, interface boundaries, and type-safe refactors.",
|
|
118
118
|
"whenNotToUse": "Do not use for runtime-only changes without type-contract impact.",
|
|
@@ -137,6 +137,9 @@
|
|
|
137
137
|
"shared-package"
|
|
138
138
|
],
|
|
139
139
|
"requiresAny": [
|
|
140
|
+
{
|
|
141
|
+
"stack": "typescript5"
|
|
142
|
+
},
|
|
140
143
|
{
|
|
141
144
|
"stack": "typescript"
|
|
142
145
|
},
|
|
@@ -188,6 +191,47 @@
|
|
|
188
191
|
"tokenEstimate": 1800,
|
|
189
192
|
"installMode": "copy-selected"
|
|
190
193
|
},
|
|
194
|
+
{
|
|
195
|
+
"id": "haus.react-router-v7-patterns",
|
|
196
|
+
"version": "1.0.0",
|
|
197
|
+
"source": "haus",
|
|
198
|
+
"type": "skill",
|
|
199
|
+
"path": "skills/react-router-v7-patterns",
|
|
200
|
+
"title": "Haus React Router v7 patterns",
|
|
201
|
+
"purpose": "Guide React Router v7 SSR route, loader, and action boundary changes.",
|
|
202
|
+
"whenToUse": "Use for routes, loaders, actions, and SSR config in React Router v7 apps.",
|
|
203
|
+
"whenNotToUse": "Do not use for Next.js App Router or Remix v1 codebases.",
|
|
204
|
+
"references": [
|
|
205
|
+
"references/conventions.md",
|
|
206
|
+
"references/scope.md",
|
|
207
|
+
"references/workflow.md",
|
|
208
|
+
"https://reactrouter.com/start/framework/installation"
|
|
209
|
+
],
|
|
210
|
+
"tokenBudget": 1200,
|
|
211
|
+
"tags": [
|
|
212
|
+
"frontend",
|
|
213
|
+
"react",
|
|
214
|
+
"typescript"
|
|
215
|
+
],
|
|
216
|
+
"repoRoles": [
|
|
217
|
+
"react-router-app",
|
|
218
|
+
"react-app"
|
|
219
|
+
],
|
|
220
|
+
"requiresAny": [
|
|
221
|
+
{
|
|
222
|
+
"stack": "react-router-v7"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"role": "react-router-app"
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"dependency": "@react-router/node"
|
|
229
|
+
}
|
|
230
|
+
],
|
|
231
|
+
"ecosystem": "react",
|
|
232
|
+
"tokenEstimate": 2000,
|
|
233
|
+
"installMode": "copy-selected"
|
|
234
|
+
},
|
|
191
235
|
{
|
|
192
236
|
"id": "haus.vendure-plugin-patterns",
|
|
193
237
|
"version": "1.0.0",
|
|
@@ -521,7 +565,7 @@
|
|
|
521
565
|
"tags": [
|
|
522
566
|
"nestjs",
|
|
523
567
|
"graphql",
|
|
524
|
-
"
|
|
568
|
+
"typescript5"
|
|
525
569
|
],
|
|
526
570
|
"repoRoles": [
|
|
527
571
|
"nestjs-api"
|
|
@@ -663,7 +707,7 @@
|
|
|
663
707
|
},
|
|
664
708
|
{
|
|
665
709
|
"id": "haus.radix-shadcn-patterns",
|
|
666
|
-
"version": "1.
|
|
710
|
+
"version": "1.1.0",
|
|
667
711
|
"source": "haus",
|
|
668
712
|
"type": "skill",
|
|
669
713
|
"path": "skills/radix-shadcn-patterns",
|
|
@@ -689,6 +733,9 @@
|
|
|
689
733
|
"react-app"
|
|
690
734
|
],
|
|
691
735
|
"requiresAny": [
|
|
736
|
+
{
|
|
737
|
+
"stack": "shadcn"
|
|
738
|
+
},
|
|
692
739
|
{
|
|
693
740
|
"dependency": "@radix-ui/react-dialog"
|
|
694
741
|
},
|
|
@@ -857,7 +904,7 @@
|
|
|
857
904
|
},
|
|
858
905
|
{
|
|
859
906
|
"id": "haus.wordpress-acf-elementor-jetengine-patterns",
|
|
860
|
-
"version": "1.
|
|
907
|
+
"version": "1.1.0",
|
|
861
908
|
"source": "haus",
|
|
862
909
|
"type": "skill",
|
|
863
910
|
"path": "skills/wordpress-acf-elementor-jetengine-patterns",
|
|
@@ -888,6 +935,15 @@
|
|
|
888
935
|
},
|
|
889
936
|
{
|
|
890
937
|
"stack": "wordpress"
|
|
938
|
+
},
|
|
939
|
+
{
|
|
940
|
+
"stack": "elementor"
|
|
941
|
+
},
|
|
942
|
+
{
|
|
943
|
+
"stack": "acf-pro"
|
|
944
|
+
},
|
|
945
|
+
{
|
|
946
|
+
"stack": "jetengine"
|
|
891
947
|
}
|
|
892
948
|
],
|
|
893
949
|
"ecosystem": "wordpress",
|
|
@@ -967,7 +1023,7 @@
|
|
|
967
1023
|
},
|
|
968
1024
|
{
|
|
969
1025
|
"id": "haus.database-patterns",
|
|
970
|
-
"version": "1.
|
|
1026
|
+
"version": "1.1.0",
|
|
971
1027
|
"source": "haus",
|
|
972
1028
|
"type": "skill",
|
|
973
1029
|
"path": "skills/database-patterns",
|
|
@@ -985,7 +1041,8 @@
|
|
|
985
1041
|
"postgresql",
|
|
986
1042
|
"mariadb",
|
|
987
1043
|
"mssql",
|
|
988
|
-
"elasticsearch"
|
|
1044
|
+
"elasticsearch",
|
|
1045
|
+
"redis"
|
|
989
1046
|
],
|
|
990
1047
|
"repoRoles": [],
|
|
991
1048
|
"requiresAny": [
|
|
@@ -1000,6 +1057,9 @@
|
|
|
1000
1057
|
},
|
|
1001
1058
|
{
|
|
1002
1059
|
"stack": "elasticsearch"
|
|
1060
|
+
},
|
|
1061
|
+
{
|
|
1062
|
+
"stack": "redis"
|
|
1003
1063
|
}
|
|
1004
1064
|
],
|
|
1005
1065
|
"tokenEstimate": 1700,
|
|
@@ -1078,6 +1138,88 @@
|
|
|
1078
1138
|
"installMode": "copy-selected",
|
|
1079
1139
|
"ecosystem": "testing"
|
|
1080
1140
|
},
|
|
1141
|
+
{
|
|
1142
|
+
"id": "haus.vitest-patterns",
|
|
1143
|
+
"version": "1.0.0",
|
|
1144
|
+
"source": "haus",
|
|
1145
|
+
"type": "skill",
|
|
1146
|
+
"path": "skills/vitest-patterns",
|
|
1147
|
+
"title": "Haus Vitest patterns",
|
|
1148
|
+
"purpose": "Guide Vitest unit/integration test structure, mocking, and coverage config.",
|
|
1149
|
+
"whenToUse": "Use when writing or modifying Vitest tests in TypeScript/JS frontends and Node services.",
|
|
1150
|
+
"whenNotToUse": "Do not use for Jest, Playwright, or PHPUnit test tasks.",
|
|
1151
|
+
"references": [
|
|
1152
|
+
"references/conventions.md",
|
|
1153
|
+
"references/scope.md",
|
|
1154
|
+
"references/workflow.md",
|
|
1155
|
+
"https://vitest.dev/guide/"
|
|
1156
|
+
],
|
|
1157
|
+
"tokenBudget": 1200,
|
|
1158
|
+
"tags": [
|
|
1159
|
+
"testing",
|
|
1160
|
+
"vitest",
|
|
1161
|
+
"typescript"
|
|
1162
|
+
],
|
|
1163
|
+
"repoRoles": [
|
|
1164
|
+
"next-app",
|
|
1165
|
+
"react-app",
|
|
1166
|
+
"vue-app",
|
|
1167
|
+
"vite-app",
|
|
1168
|
+
"vendure-app",
|
|
1169
|
+
"vendure-plugin"
|
|
1170
|
+
],
|
|
1171
|
+
"requiresAny": [
|
|
1172
|
+
{
|
|
1173
|
+
"stack": "vitest"
|
|
1174
|
+
},
|
|
1175
|
+
{
|
|
1176
|
+
"dependency": "vitest"
|
|
1177
|
+
}
|
|
1178
|
+
],
|
|
1179
|
+
"tokenEstimate": 1500,
|
|
1180
|
+
"installMode": "copy-selected"
|
|
1181
|
+
},
|
|
1182
|
+
{
|
|
1183
|
+
"id": "haus.jest-patterns",
|
|
1184
|
+
"version": "1.0.0",
|
|
1185
|
+
"source": "haus",
|
|
1186
|
+
"type": "skill",
|
|
1187
|
+
"path": "skills/jest-patterns",
|
|
1188
|
+
"title": "Haus Jest patterns",
|
|
1189
|
+
"purpose": "Guide Jest unit/integration test structure, mocking, and Nx-style setup.",
|
|
1190
|
+
"whenToUse": "Use when writing or modifying Jest tests, including Nx workspace projects.",
|
|
1191
|
+
"whenNotToUse": "Do not use for Vitest, Playwright, or PHPUnit test tasks.",
|
|
1192
|
+
"references": [
|
|
1193
|
+
"references/conventions.md",
|
|
1194
|
+
"references/scope.md",
|
|
1195
|
+
"references/workflow.md",
|
|
1196
|
+
"https://jestjs.io/docs/getting-started"
|
|
1197
|
+
],
|
|
1198
|
+
"tokenBudget": 1200,
|
|
1199
|
+
"tags": [
|
|
1200
|
+
"testing",
|
|
1201
|
+
"jest",
|
|
1202
|
+
"typescript"
|
|
1203
|
+
],
|
|
1204
|
+
"repoRoles": [
|
|
1205
|
+
"next-app",
|
|
1206
|
+
"react-app",
|
|
1207
|
+
"nx-monorepo"
|
|
1208
|
+
],
|
|
1209
|
+
"requiresAny": [
|
|
1210
|
+
{
|
|
1211
|
+
"stack": "jest"
|
|
1212
|
+
},
|
|
1213
|
+
{
|
|
1214
|
+
"dependency": "jest"
|
|
1215
|
+
},
|
|
1216
|
+
{
|
|
1217
|
+
"dependency": "jest-environment-jsdom"
|
|
1218
|
+
}
|
|
1219
|
+
],
|
|
1220
|
+
"tokenEstimate": 1500,
|
|
1221
|
+
"installMode": "copy-selected"
|
|
1222
|
+
},
|
|
1081
1223
|
{
|
|
1082
1224
|
"id": "haus.phpunit-patterns",
|
|
1083
1225
|
"version": "1.0.0",
|
package/package.json
CHANGED
|
@@ -58,11 +58,11 @@
|
|
|
58
58
|
"installMode": "copy-selected"
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
|
-
"id": "haus.
|
|
61
|
+
"id": "haus.typescript5-patterns",
|
|
62
62
|
"source": "haus",
|
|
63
63
|
"type": "skill",
|
|
64
|
-
"path": "skills/
|
|
65
|
-
"title": "Haus TypeScript patterns",
|
|
64
|
+
"path": "skills/typescript5-patterns",
|
|
65
|
+
"title": "Haus TypeScript 5 patterns",
|
|
66
66
|
"purpose": "Guide TypeScript contract and migration-safe typing changes.",
|
|
67
67
|
"whenToUse": "Use for shared types, DTOs, interface boundaries, and type-safe refactors.",
|
|
68
68
|
"whenNotToUse": "Do not use for runtime-only changes without type-contract impact.",
|
|
@@ -78,6 +78,7 @@
|
|
|
78
78
|
"shared-package"
|
|
79
79
|
],
|
|
80
80
|
"requiresAny": [
|
|
81
|
+
{ "stack": "typescript5" },
|
|
81
82
|
{ "stack": "typescript" },
|
|
82
83
|
{ "dependency": "typescript" }
|
|
83
84
|
],
|
|
@@ -105,6 +106,28 @@
|
|
|
105
106
|
"tokenEstimate": 1800,
|
|
106
107
|
"installMode": "copy-selected"
|
|
107
108
|
},
|
|
109
|
+
{
|
|
110
|
+
"id": "haus.react-router-v7-patterns",
|
|
111
|
+
"source": "haus",
|
|
112
|
+
"type": "skill",
|
|
113
|
+
"path": "skills/react-router-v7-patterns",
|
|
114
|
+
"title": "Haus React Router v7 patterns",
|
|
115
|
+
"purpose": "Guide React Router v7 SSR route, loader, and action boundary changes.",
|
|
116
|
+
"whenToUse": "Use for routes, loaders, actions, and SSR config in React Router v7 apps.",
|
|
117
|
+
"whenNotToUse": "Do not use for Next.js App Router or Remix v1 codebases.",
|
|
118
|
+
"references": ["references/scope.md", "references/workflow.md", "https://reactrouter.com/start/framework/installation"],
|
|
119
|
+
"tokenBudget": 1200,
|
|
120
|
+
"tags": ["frontend", "react", "typescript"],
|
|
121
|
+
"repoRoles": ["react-router-app", "react-app"],
|
|
122
|
+
"requiresAny": [
|
|
123
|
+
{ "stack": "react-router-v7" },
|
|
124
|
+
{ "role": "react-router-app" },
|
|
125
|
+
{ "dependency": "@react-router/node" }
|
|
126
|
+
],
|
|
127
|
+
"ecosystem": "react",
|
|
128
|
+
"tokenEstimate": 2000,
|
|
129
|
+
"installMode": "copy-selected"
|
|
130
|
+
},
|
|
108
131
|
{
|
|
109
132
|
"id": "haus.vendure-plugin-patterns",
|
|
110
133
|
"source": "haus",
|
|
@@ -300,7 +323,7 @@
|
|
|
300
323
|
"whenNotToUse": "Do not use for REST-only controller tasks.",
|
|
301
324
|
"references": ["references/scope.md", "references/workflow.md", "https://docs.nestjs.com/"],
|
|
302
325
|
"tokenBudget": 1200,
|
|
303
|
-
"tags": ["nestjs", "graphql", "
|
|
326
|
+
"tags": ["nestjs", "graphql", "typescript5"],
|
|
304
327
|
"repoRoles": ["nestjs-api"],
|
|
305
328
|
"requiresAny": [
|
|
306
329
|
{ "stack": "nestjs" },
|
|
@@ -391,6 +414,7 @@
|
|
|
391
414
|
"tags": ["radix", "shadcn", "react19"],
|
|
392
415
|
"repoRoles": ["next-app", "react-app"],
|
|
393
416
|
"requiresAny": [
|
|
417
|
+
{ "stack": "shadcn" },
|
|
394
418
|
{ "dependency": "@radix-ui/react-dialog" },
|
|
395
419
|
{ "dependency": "@radix-ui/themes" },
|
|
396
420
|
{ "dependency": "shadcn-ui" },
|
|
@@ -501,7 +525,10 @@
|
|
|
501
525
|
"requiresAny": [
|
|
502
526
|
{ "role": "wordpress-bedrock-site" },
|
|
503
527
|
{ "role": "wordpress-vanilla-site" },
|
|
504
|
-
{ "stack": "wordpress" }
|
|
528
|
+
{ "stack": "wordpress" },
|
|
529
|
+
{ "stack": "elementor" },
|
|
530
|
+
{ "stack": "acf-pro" },
|
|
531
|
+
{ "stack": "jetengine" }
|
|
505
532
|
],
|
|
506
533
|
"ecosystem": "wordpress",
|
|
507
534
|
"tokenEstimate": 2600,
|
|
@@ -557,13 +584,14 @@
|
|
|
557
584
|
"whenNotToUse": "Do not use for UI-only changes without persistence/search impact.",
|
|
558
585
|
"references": ["references/scope.md", "references/workflow.md"],
|
|
559
586
|
"tokenBudget": 1200,
|
|
560
|
-
"tags": ["postgresql", "mariadb", "mssql", "elasticsearch"],
|
|
587
|
+
"tags": ["postgresql", "mariadb", "mssql", "elasticsearch", "redis"],
|
|
561
588
|
"repoRoles": [],
|
|
562
589
|
"requiresAny": [
|
|
563
590
|
{ "stack": "postgresql" },
|
|
564
591
|
{ "stack": "mariadb" },
|
|
565
592
|
{ "stack": "mssql" },
|
|
566
|
-
{ "stack": "elasticsearch" }
|
|
593
|
+
{ "stack": "elasticsearch" },
|
|
594
|
+
{ "stack": "redis" }
|
|
567
595
|
],
|
|
568
596
|
"tokenEstimate": 1700,
|
|
569
597
|
"installMode": "copy-selected"
|
|
@@ -610,6 +638,47 @@
|
|
|
610
638
|
"tokenEstimate": 1500,
|
|
611
639
|
"installMode": "copy-selected"
|
|
612
640
|
},
|
|
641
|
+
{
|
|
642
|
+
"id": "haus.vitest-patterns",
|
|
643
|
+
"source": "haus",
|
|
644
|
+
"type": "skill",
|
|
645
|
+
"path": "skills/vitest-patterns",
|
|
646
|
+
"title": "Haus Vitest patterns",
|
|
647
|
+
"purpose": "Guide Vitest unit/integration test structure, mocking, and coverage config.",
|
|
648
|
+
"whenToUse": "Use when writing or modifying Vitest tests in TypeScript/JS frontends and Node services.",
|
|
649
|
+
"whenNotToUse": "Do not use for Jest, Playwright, or PHPUnit test tasks.",
|
|
650
|
+
"references": ["references/scope.md", "references/workflow.md", "https://vitest.dev/guide/"],
|
|
651
|
+
"tokenBudget": 1200,
|
|
652
|
+
"tags": ["testing", "vitest", "typescript"],
|
|
653
|
+
"repoRoles": ["next-app", "react-app", "vue-app", "vite-app", "vendure-app", "vendure-plugin"],
|
|
654
|
+
"requiresAny": [
|
|
655
|
+
{ "stack": "vitest" },
|
|
656
|
+
{ "dependency": "vitest" }
|
|
657
|
+
],
|
|
658
|
+
"tokenEstimate": 1500,
|
|
659
|
+
"installMode": "copy-selected"
|
|
660
|
+
},
|
|
661
|
+
{
|
|
662
|
+
"id": "haus.jest-patterns",
|
|
663
|
+
"source": "haus",
|
|
664
|
+
"type": "skill",
|
|
665
|
+
"path": "skills/jest-patterns",
|
|
666
|
+
"title": "Haus Jest patterns",
|
|
667
|
+
"purpose": "Guide Jest unit/integration test structure, mocking, and Nx-style setup.",
|
|
668
|
+
"whenToUse": "Use when writing or modifying Jest tests, including Nx workspace projects.",
|
|
669
|
+
"whenNotToUse": "Do not use for Vitest, Playwright, or PHPUnit test tasks.",
|
|
670
|
+
"references": ["references/scope.md", "references/workflow.md", "https://jestjs.io/docs/getting-started"],
|
|
671
|
+
"tokenBudget": 1200,
|
|
672
|
+
"tags": ["testing", "jest", "typescript"],
|
|
673
|
+
"repoRoles": ["next-app", "react-app", "nx-monorepo"],
|
|
674
|
+
"requiresAny": [
|
|
675
|
+
{ "stack": "jest" },
|
|
676
|
+
{ "dependency": "jest" },
|
|
677
|
+
{ "dependency": "jest-environment-jsdom" }
|
|
678
|
+
],
|
|
679
|
+
"tokenEstimate": 1500,
|
|
680
|
+
"installMode": "copy-selected"
|
|
681
|
+
},
|
|
613
682
|
{
|
|
614
683
|
"id": "haus.phpunit-patterns",
|
|
615
684
|
"source": "haus",
|
|
File without changes
|