@haus-tech/haus-workflow 0.10.1 → 0.11.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 +138 -123
- package/dist/cli.js +224 -169
- package/library/catalog/manifest.json +264 -494
- package/library/catalog/sources.yaml +56 -56
- package/library/global/agents/haus-code-reviewer.md +3 -2
- package/library/global/agents/haus-docs-researcher.md +3 -2
- package/library/global/agents/haus-planner.md +3 -2
- package/library/global/agents/haus-security-reviewer.md +3 -2
- package/library/global/agents/haus-test-reviewer.md +3 -2
- package/library/global/skills/haus-workflow/SKILL.md +21 -14
- package/library/global/templates/agentic-workflow-standard.md +279 -0
- package/package.json +3 -3
- package/tests/README.md +19 -19
- package/tests/fixtures/catalog/manifest.json +111 -78
- package/library/global/templates/haus-way-of-work.md +0 -40
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "
|
|
2
|
+
"version": "2.1.0",
|
|
3
3
|
"items": [
|
|
4
4
|
{
|
|
5
5
|
"id": "haus.global-engineering-rules",
|
|
@@ -11,23 +11,17 @@
|
|
|
11
11
|
"purpose": "Provide baseline deterministic engineering, validation, and security guardrails.",
|
|
12
12
|
"whenToUse": "Use as default baseline in supported Haus workflows.",
|
|
13
13
|
"whenNotToUse": "Do not use for unsupported stacks or non-development workflows.",
|
|
14
|
-
"references": [
|
|
15
|
-
|
|
16
|
-
],
|
|
17
|
-
"safetyNotes": [
|
|
18
|
-
"Never read secrets or customer exports."
|
|
19
|
-
],
|
|
14
|
+
"references": ["references/conventions.md"],
|
|
15
|
+
"safetyNotes": ["Never read secrets or customer exports."],
|
|
20
16
|
"tokenBudget": 1800,
|
|
21
|
-
"tags": [
|
|
22
|
-
"haus",
|
|
23
|
-
"quality",
|
|
24
|
-
"security"
|
|
25
|
-
],
|
|
17
|
+
"tags": ["haus", "quality", "security"],
|
|
26
18
|
"repoRoles": [],
|
|
27
19
|
"requiresAny": [],
|
|
28
20
|
"tokenEstimate": 1800,
|
|
29
21
|
"installMode": "copy-selected",
|
|
30
|
-
"default": true
|
|
22
|
+
"default": true,
|
|
23
|
+
"reviewStatus": "approved",
|
|
24
|
+
"riskLevel": "low"
|
|
31
25
|
},
|
|
32
26
|
{
|
|
33
27
|
"id": "haus.nextjs-patterns",
|
|
@@ -46,15 +40,8 @@
|
|
|
46
40
|
"https://nextjs.org/llms.txt"
|
|
47
41
|
],
|
|
48
42
|
"tokenBudget": 1200,
|
|
49
|
-
"tags": [
|
|
50
|
-
|
|
51
|
-
"nextjs",
|
|
52
|
-
"react",
|
|
53
|
-
"typescript"
|
|
54
|
-
],
|
|
55
|
-
"repoRoles": [
|
|
56
|
-
"next-app"
|
|
57
|
-
],
|
|
43
|
+
"tags": ["frontend", "nextjs", "react", "typescript"],
|
|
44
|
+
"repoRoles": ["next-app"],
|
|
58
45
|
"requiresAny": [
|
|
59
46
|
{
|
|
60
47
|
"stack": "nextjs"
|
|
@@ -65,7 +52,9 @@
|
|
|
65
52
|
],
|
|
66
53
|
"ecosystem": "nextjs",
|
|
67
54
|
"tokenEstimate": 2600,
|
|
68
|
-
"installMode": "copy-selected"
|
|
55
|
+
"installMode": "copy-selected",
|
|
56
|
+
"reviewStatus": "approved",
|
|
57
|
+
"riskLevel": "low"
|
|
69
58
|
},
|
|
70
59
|
{
|
|
71
60
|
"id": "haus.react19-patterns",
|
|
@@ -84,16 +73,8 @@
|
|
|
84
73
|
"https://react.dev/"
|
|
85
74
|
],
|
|
86
75
|
"tokenBudget": 1200,
|
|
87
|
-
"tags": [
|
|
88
|
-
|
|
89
|
-
"react",
|
|
90
|
-
"typescript"
|
|
91
|
-
],
|
|
92
|
-
"repoRoles": [
|
|
93
|
-
"react-app",
|
|
94
|
-
"next-app",
|
|
95
|
-
"design-system"
|
|
96
|
-
],
|
|
76
|
+
"tags": ["frontend", "react", "typescript"],
|
|
77
|
+
"repoRoles": ["react-app", "next-app", "design-system"],
|
|
97
78
|
"requiresAny": [
|
|
98
79
|
{
|
|
99
80
|
"stack": "react19"
|
|
@@ -104,7 +85,9 @@
|
|
|
104
85
|
],
|
|
105
86
|
"ecosystem": "react",
|
|
106
87
|
"tokenEstimate": 2200,
|
|
107
|
-
"installMode": "copy-selected"
|
|
88
|
+
"installMode": "copy-selected",
|
|
89
|
+
"reviewStatus": "approved",
|
|
90
|
+
"riskLevel": "low"
|
|
108
91
|
},
|
|
109
92
|
{
|
|
110
93
|
"id": "haus.typescript5-patterns",
|
|
@@ -123,11 +106,7 @@
|
|
|
123
106
|
"https://www.typescriptlang.org/docs/handbook/"
|
|
124
107
|
],
|
|
125
108
|
"tokenBudget": 1200,
|
|
126
|
-
"tags": [
|
|
127
|
-
"typescript",
|
|
128
|
-
"frontend",
|
|
129
|
-
"backend"
|
|
130
|
-
],
|
|
109
|
+
"tags": ["typescript", "frontend", "backend"],
|
|
131
110
|
"repoRoles": [
|
|
132
111
|
"next-app",
|
|
133
112
|
"react-app",
|
|
@@ -149,7 +128,9 @@
|
|
|
149
128
|
],
|
|
150
129
|
"tokenEstimate": 2200,
|
|
151
130
|
"installMode": "copy-selected",
|
|
152
|
-
"ecosystem": "typescript"
|
|
131
|
+
"ecosystem": "typescript",
|
|
132
|
+
"reviewStatus": "approved",
|
|
133
|
+
"riskLevel": "low"
|
|
153
134
|
},
|
|
154
135
|
{
|
|
155
136
|
"id": "haus.vite8-patterns",
|
|
@@ -169,16 +150,8 @@
|
|
|
169
150
|
"https://vitest.dev/guide"
|
|
170
151
|
],
|
|
171
152
|
"tokenBudget": 1200,
|
|
172
|
-
"tags": [
|
|
173
|
-
|
|
174
|
-
"frontend",
|
|
175
|
-
"typescript"
|
|
176
|
-
],
|
|
177
|
-
"repoRoles": [
|
|
178
|
-
"vite-app",
|
|
179
|
-
"react-app",
|
|
180
|
-
"vue-app"
|
|
181
|
-
],
|
|
153
|
+
"tags": ["vite8", "frontend", "typescript"],
|
|
154
|
+
"repoRoles": ["vite-app", "react-app", "vue-app"],
|
|
182
155
|
"requiresAny": [
|
|
183
156
|
{
|
|
184
157
|
"stack": "vite8"
|
|
@@ -189,7 +162,9 @@
|
|
|
189
162
|
],
|
|
190
163
|
"ecosystem": "vite",
|
|
191
164
|
"tokenEstimate": 1800,
|
|
192
|
-
"installMode": "copy-selected"
|
|
165
|
+
"installMode": "copy-selected",
|
|
166
|
+
"reviewStatus": "approved",
|
|
167
|
+
"riskLevel": "low"
|
|
193
168
|
},
|
|
194
169
|
{
|
|
195
170
|
"id": "haus.react-router-v7-patterns",
|
|
@@ -208,15 +183,8 @@
|
|
|
208
183
|
"https://reactrouter.com/start/framework/installation"
|
|
209
184
|
],
|
|
210
185
|
"tokenBudget": 1200,
|
|
211
|
-
"tags": [
|
|
212
|
-
|
|
213
|
-
"react",
|
|
214
|
-
"typescript"
|
|
215
|
-
],
|
|
216
|
-
"repoRoles": [
|
|
217
|
-
"react-router-app",
|
|
218
|
-
"react-app"
|
|
219
|
-
],
|
|
186
|
+
"tags": ["frontend", "react", "typescript"],
|
|
187
|
+
"repoRoles": ["react-router-app", "react-app"],
|
|
220
188
|
"requiresAny": [
|
|
221
189
|
{
|
|
222
190
|
"stack": "react-router-v7"
|
|
@@ -230,7 +198,9 @@
|
|
|
230
198
|
],
|
|
231
199
|
"ecosystem": "react",
|
|
232
200
|
"tokenEstimate": 2000,
|
|
233
|
-
"installMode": "copy-selected"
|
|
201
|
+
"installMode": "copy-selected",
|
|
202
|
+
"reviewStatus": "approved",
|
|
203
|
+
"riskLevel": "low"
|
|
234
204
|
},
|
|
235
205
|
{
|
|
236
206
|
"id": "haus.expo-react-native-patterns",
|
|
@@ -249,15 +219,8 @@
|
|
|
249
219
|
"https://docs.expo.dev/"
|
|
250
220
|
],
|
|
251
221
|
"tokenBudget": 1200,
|
|
252
|
-
"tags": [
|
|
253
|
-
|
|
254
|
-
"react-native",
|
|
255
|
-
"mobile",
|
|
256
|
-
"react"
|
|
257
|
-
],
|
|
258
|
-
"repoRoles": [
|
|
259
|
-
"expo-app"
|
|
260
|
-
],
|
|
222
|
+
"tags": ["expo", "react-native", "mobile", "react"],
|
|
223
|
+
"repoRoles": ["expo-app"],
|
|
261
224
|
"requiresAny": [
|
|
262
225
|
{
|
|
263
226
|
"stack": "expo"
|
|
@@ -277,7 +240,9 @@
|
|
|
277
240
|
],
|
|
278
241
|
"ecosystem": "mobile",
|
|
279
242
|
"tokenEstimate": 2200,
|
|
280
|
-
"installMode": "copy-selected"
|
|
243
|
+
"installMode": "copy-selected",
|
|
244
|
+
"reviewStatus": "approved",
|
|
245
|
+
"riskLevel": "low"
|
|
281
246
|
},
|
|
282
247
|
{
|
|
283
248
|
"id": "haus.i18next-patterns",
|
|
@@ -296,17 +261,8 @@
|
|
|
296
261
|
"https://www.i18next.com/"
|
|
297
262
|
],
|
|
298
263
|
"tokenBudget": 1200,
|
|
299
|
-
"tags": [
|
|
300
|
-
|
|
301
|
-
"i18n",
|
|
302
|
-
"frontend"
|
|
303
|
-
],
|
|
304
|
-
"repoRoles": [
|
|
305
|
-
"next-app",
|
|
306
|
-
"react-app",
|
|
307
|
-
"vue-app",
|
|
308
|
-
"vite-app"
|
|
309
|
-
],
|
|
264
|
+
"tags": ["i18next", "i18n", "frontend"],
|
|
265
|
+
"repoRoles": ["next-app", "react-app", "vue-app", "vite-app"],
|
|
310
266
|
"requiresAny": [
|
|
311
267
|
{
|
|
312
268
|
"stack": "i18next"
|
|
@@ -320,7 +276,9 @@
|
|
|
320
276
|
],
|
|
321
277
|
"ecosystem": "tooling",
|
|
322
278
|
"tokenEstimate": 1800,
|
|
323
|
-
"installMode": "copy-selected"
|
|
279
|
+
"installMode": "copy-selected",
|
|
280
|
+
"reviewStatus": "approved",
|
|
281
|
+
"riskLevel": "low"
|
|
324
282
|
},
|
|
325
283
|
{
|
|
326
284
|
"id": "haus.bullmq-patterns",
|
|
@@ -339,15 +297,8 @@
|
|
|
339
297
|
"https://docs.bullmq.io/"
|
|
340
298
|
],
|
|
341
299
|
"tokenBudget": 1200,
|
|
342
|
-
"tags": [
|
|
343
|
-
|
|
344
|
-
"queue",
|
|
345
|
-
"backend"
|
|
346
|
-
],
|
|
347
|
-
"repoRoles": [
|
|
348
|
-
"vendure-app",
|
|
349
|
-
"nestjs-api"
|
|
350
|
-
],
|
|
300
|
+
"tags": ["bullmq", "queue", "backend"],
|
|
301
|
+
"repoRoles": ["vendure-app", "nestjs-api"],
|
|
351
302
|
"requiresAny": [
|
|
352
303
|
{
|
|
353
304
|
"stack": "bullmq"
|
|
@@ -358,7 +309,9 @@
|
|
|
358
309
|
],
|
|
359
310
|
"ecosystem": "tooling",
|
|
360
311
|
"tokenEstimate": 1800,
|
|
361
|
-
"installMode": "copy-selected"
|
|
312
|
+
"installMode": "copy-selected",
|
|
313
|
+
"reviewStatus": "approved",
|
|
314
|
+
"riskLevel": "low"
|
|
362
315
|
},
|
|
363
316
|
{
|
|
364
317
|
"id": "haus.sentry-patterns",
|
|
@@ -377,16 +330,8 @@
|
|
|
377
330
|
"https://docs.sentry.io/"
|
|
378
331
|
],
|
|
379
332
|
"tokenBudget": 1200,
|
|
380
|
-
"tags": [
|
|
381
|
-
|
|
382
|
-
"observability",
|
|
383
|
-
"tooling"
|
|
384
|
-
],
|
|
385
|
-
"repoRoles": [
|
|
386
|
-
"next-app",
|
|
387
|
-
"nestjs-api",
|
|
388
|
-
"vendure-app"
|
|
389
|
-
],
|
|
333
|
+
"tags": ["sentry", "observability", "tooling"],
|
|
334
|
+
"repoRoles": ["next-app", "nestjs-api", "vendure-app"],
|
|
390
335
|
"requiresAny": [
|
|
391
336
|
{
|
|
392
337
|
"stack": "sentry"
|
|
@@ -403,7 +348,9 @@
|
|
|
403
348
|
],
|
|
404
349
|
"ecosystem": "tooling",
|
|
405
350
|
"tokenEstimate": 1800,
|
|
406
|
-
"installMode": "copy-selected"
|
|
351
|
+
"installMode": "copy-selected",
|
|
352
|
+
"reviewStatus": "approved",
|
|
353
|
+
"riskLevel": "low"
|
|
407
354
|
},
|
|
408
355
|
{
|
|
409
356
|
"id": "haus.prettier-setup",
|
|
@@ -415,17 +362,9 @@
|
|
|
415
362
|
"purpose": "Install `@haus-tech/tech-config` and wire `.prettierrc` to the shared prettier config via the `/prettier` subpath export.",
|
|
416
363
|
"whenToUse": "Use when Prettier is missing from a haus repo, when migrating an ad-hoc config, or when migrating from the deprecated `@haus-tech/prettier-config`.",
|
|
417
364
|
"whenNotToUse": "Do not use when Prettier is already configured against `@haus-tech/tech-config/prettier`.",
|
|
418
|
-
"references": [
|
|
419
|
-
"references/conventions.md",
|
|
420
|
-
"references/scope.md",
|
|
421
|
-
"references/workflow.md"
|
|
422
|
-
],
|
|
365
|
+
"references": ["references/conventions.md", "references/scope.md", "references/workflow.md"],
|
|
423
366
|
"tokenBudget": 800,
|
|
424
|
-
"tags": [
|
|
425
|
-
"prettier",
|
|
426
|
-
"tooling",
|
|
427
|
-
"quality"
|
|
428
|
-
],
|
|
367
|
+
"tags": ["prettier", "tooling", "quality"],
|
|
429
368
|
"repoRoles": [],
|
|
430
369
|
"requiresAny": [
|
|
431
370
|
{
|
|
@@ -434,7 +373,9 @@
|
|
|
434
373
|
],
|
|
435
374
|
"ecosystem": "tooling",
|
|
436
375
|
"tokenEstimate": 1000,
|
|
437
|
-
"installMode": "copy-selected"
|
|
376
|
+
"installMode": "copy-selected",
|
|
377
|
+
"reviewStatus": "approved",
|
|
378
|
+
"riskLevel": "low"
|
|
438
379
|
},
|
|
439
380
|
{
|
|
440
381
|
"id": "haus.eslint-setup",
|
|
@@ -446,17 +387,9 @@
|
|
|
446
387
|
"purpose": "Install `@haus-tech/tech-config` and wire ESLint flat config to the shared rules.",
|
|
447
388
|
"whenToUse": "Use when ESLint is missing from a haus repo or migrating from a legacy `.eslintrc` to flat config.",
|
|
448
389
|
"whenNotToUse": "Do not use when ESLint is already configured against `@haus-tech/tech-config`.",
|
|
449
|
-
"references": [
|
|
450
|
-
"references/conventions.md",
|
|
451
|
-
"references/scope.md",
|
|
452
|
-
"references/workflow.md"
|
|
453
|
-
],
|
|
390
|
+
"references": ["references/conventions.md", "references/scope.md", "references/workflow.md"],
|
|
454
391
|
"tokenBudget": 800,
|
|
455
|
-
"tags": [
|
|
456
|
-
"eslint",
|
|
457
|
-
"tooling",
|
|
458
|
-
"quality"
|
|
459
|
-
],
|
|
392
|
+
"tags": ["eslint", "tooling", "quality"],
|
|
460
393
|
"repoRoles": [],
|
|
461
394
|
"requiresAny": [
|
|
462
395
|
{
|
|
@@ -465,7 +398,9 @@
|
|
|
465
398
|
],
|
|
466
399
|
"ecosystem": "tooling",
|
|
467
400
|
"tokenEstimate": 1000,
|
|
468
|
-
"installMode": "copy-selected"
|
|
401
|
+
"installMode": "copy-selected",
|
|
402
|
+
"reviewStatus": "approved",
|
|
403
|
+
"riskLevel": "low"
|
|
469
404
|
},
|
|
470
405
|
{
|
|
471
406
|
"id": "haus.stripe-patterns",
|
|
@@ -484,16 +419,8 @@
|
|
|
484
419
|
"https://docs.stripe.com/"
|
|
485
420
|
],
|
|
486
421
|
"tokenBudget": 1200,
|
|
487
|
-
"tags": [
|
|
488
|
-
|
|
489
|
-
"payments",
|
|
490
|
-
"tooling"
|
|
491
|
-
],
|
|
492
|
-
"repoRoles": [
|
|
493
|
-
"next-app",
|
|
494
|
-
"react-app",
|
|
495
|
-
"vendure-plugin"
|
|
496
|
-
],
|
|
422
|
+
"tags": ["stripe", "payments", "tooling"],
|
|
423
|
+
"repoRoles": ["next-app", "react-app", "vendure-plugin"],
|
|
497
424
|
"requiresAny": [
|
|
498
425
|
{
|
|
499
426
|
"stack": "stripe"
|
|
@@ -507,7 +434,9 @@
|
|
|
507
434
|
],
|
|
508
435
|
"ecosystem": "payments",
|
|
509
436
|
"tokenEstimate": 2000,
|
|
510
|
-
"installMode": "copy-selected"
|
|
437
|
+
"installMode": "copy-selected",
|
|
438
|
+
"reviewStatus": "approved",
|
|
439
|
+
"riskLevel": "medium"
|
|
511
440
|
},
|
|
512
441
|
{
|
|
513
442
|
"id": "haus.qliro-patterns",
|
|
@@ -519,22 +448,10 @@
|
|
|
519
448
|
"purpose": "Guide Qliro Checkout integration via @haus-tech/qliro-plugin in Vendure storefronts.",
|
|
520
449
|
"whenToUse": "Use for Qliro Checkout flow, order callbacks, refund handling, and merchant API config.",
|
|
521
450
|
"whenNotToUse": "Do not use for non-Nordic payment providers or Stripe-only flows.",
|
|
522
|
-
"references": [
|
|
523
|
-
"references/conventions.md",
|
|
524
|
-
"references/scope.md",
|
|
525
|
-
"references/workflow.md"
|
|
526
|
-
],
|
|
451
|
+
"references": ["references/conventions.md", "references/scope.md", "references/workflow.md"],
|
|
527
452
|
"tokenBudget": 1200,
|
|
528
|
-
"tags": [
|
|
529
|
-
|
|
530
|
-
"payments",
|
|
531
|
-
"tooling"
|
|
532
|
-
],
|
|
533
|
-
"repoRoles": [
|
|
534
|
-
"vendure-app",
|
|
535
|
-
"vendure-plugin",
|
|
536
|
-
"next-app"
|
|
537
|
-
],
|
|
453
|
+
"tags": ["qliro", "payments", "tooling"],
|
|
454
|
+
"repoRoles": ["vendure-app", "vendure-plugin", "next-app"],
|
|
538
455
|
"requiresAny": [
|
|
539
456
|
{
|
|
540
457
|
"stack": "qliro"
|
|
@@ -545,7 +462,9 @@
|
|
|
545
462
|
],
|
|
546
463
|
"ecosystem": "payments",
|
|
547
464
|
"tokenEstimate": 1800,
|
|
548
|
-
"installMode": "copy-selected"
|
|
465
|
+
"installMode": "copy-selected",
|
|
466
|
+
"reviewStatus": "approved",
|
|
467
|
+
"riskLevel": "medium"
|
|
549
468
|
},
|
|
550
469
|
{
|
|
551
470
|
"id": "haus.supabase-patterns",
|
|
@@ -564,15 +483,8 @@
|
|
|
564
483
|
"https://supabase.com/docs"
|
|
565
484
|
],
|
|
566
485
|
"tokenBudget": 1200,
|
|
567
|
-
"tags": [
|
|
568
|
-
|
|
569
|
-
"database",
|
|
570
|
-
"backend"
|
|
571
|
-
],
|
|
572
|
-
"repoRoles": [
|
|
573
|
-
"next-app",
|
|
574
|
-
"react-app"
|
|
575
|
-
],
|
|
486
|
+
"tags": ["supabase", "database", "backend"],
|
|
487
|
+
"repoRoles": ["next-app", "react-app"],
|
|
576
488
|
"requiresAny": [
|
|
577
489
|
{
|
|
578
490
|
"stack": "supabase"
|
|
@@ -586,7 +498,9 @@
|
|
|
586
498
|
],
|
|
587
499
|
"ecosystem": "database",
|
|
588
500
|
"tokenEstimate": 2000,
|
|
589
|
-
"installMode": "copy-selected"
|
|
501
|
+
"installMode": "copy-selected",
|
|
502
|
+
"reviewStatus": "approved",
|
|
503
|
+
"riskLevel": "low"
|
|
590
504
|
},
|
|
591
505
|
{
|
|
592
506
|
"id": "haus.sanity-patterns",
|
|
@@ -605,15 +519,8 @@
|
|
|
605
519
|
"https://www.sanity.io/docs"
|
|
606
520
|
],
|
|
607
521
|
"tokenBudget": 1200,
|
|
608
|
-
"tags": [
|
|
609
|
-
|
|
610
|
-
"backend",
|
|
611
|
-
"cms"
|
|
612
|
-
],
|
|
613
|
-
"repoRoles": [
|
|
614
|
-
"sanity-studio",
|
|
615
|
-
"next-app"
|
|
616
|
-
],
|
|
522
|
+
"tags": ["sanity", "backend", "cms"],
|
|
523
|
+
"repoRoles": ["sanity-studio", "next-app"],
|
|
617
524
|
"requiresAny": [
|
|
618
525
|
{
|
|
619
526
|
"stack": "sanity"
|
|
@@ -630,7 +537,9 @@
|
|
|
630
537
|
],
|
|
631
538
|
"ecosystem": "cms",
|
|
632
539
|
"tokenEstimate": 2000,
|
|
633
|
-
"installMode": "copy-selected"
|
|
540
|
+
"installMode": "copy-selected",
|
|
541
|
+
"reviewStatus": "approved",
|
|
542
|
+
"riskLevel": "low"
|
|
634
543
|
},
|
|
635
544
|
{
|
|
636
545
|
"id": "haus.strapi-patterns",
|
|
@@ -649,14 +558,8 @@
|
|
|
649
558
|
"https://docs.strapi.io/dev-docs/intro"
|
|
650
559
|
],
|
|
651
560
|
"tokenBudget": 1200,
|
|
652
|
-
"tags": [
|
|
653
|
-
|
|
654
|
-
"backend",
|
|
655
|
-
"cms"
|
|
656
|
-
],
|
|
657
|
-
"repoRoles": [
|
|
658
|
-
"strapi-app"
|
|
659
|
-
],
|
|
561
|
+
"tags": ["strapi", "backend", "cms"],
|
|
562
|
+
"repoRoles": ["strapi-app"],
|
|
660
563
|
"requiresAny": [
|
|
661
564
|
{
|
|
662
565
|
"stack": "strapi"
|
|
@@ -670,7 +573,9 @@
|
|
|
670
573
|
],
|
|
671
574
|
"ecosystem": "cms",
|
|
672
575
|
"tokenEstimate": 2000,
|
|
673
|
-
"installMode": "copy-selected"
|
|
576
|
+
"installMode": "copy-selected",
|
|
577
|
+
"reviewStatus": "approved",
|
|
578
|
+
"riskLevel": "low"
|
|
674
579
|
},
|
|
675
580
|
{
|
|
676
581
|
"id": "haus.prisma-patterns",
|
|
@@ -689,15 +594,8 @@
|
|
|
689
594
|
"https://www.prisma.io/docs"
|
|
690
595
|
],
|
|
691
596
|
"tokenBudget": 1200,
|
|
692
|
-
"tags": [
|
|
693
|
-
|
|
694
|
-
"backend",
|
|
695
|
-
"database"
|
|
696
|
-
],
|
|
697
|
-
"repoRoles": [
|
|
698
|
-
"next-app",
|
|
699
|
-
"nestjs-api"
|
|
700
|
-
],
|
|
597
|
+
"tags": ["prisma", "backend", "database"],
|
|
598
|
+
"repoRoles": ["next-app", "nestjs-api"],
|
|
701
599
|
"requiresAny": [
|
|
702
600
|
{
|
|
703
601
|
"stack": "prisma"
|
|
@@ -711,7 +609,9 @@
|
|
|
711
609
|
],
|
|
712
610
|
"ecosystem": "database",
|
|
713
611
|
"tokenEstimate": 2000,
|
|
714
|
-
"installMode": "copy-selected"
|
|
612
|
+
"installMode": "copy-selected",
|
|
613
|
+
"reviewStatus": "approved",
|
|
614
|
+
"riskLevel": "low"
|
|
715
615
|
},
|
|
716
616
|
{
|
|
717
617
|
"id": "haus.vendure-plugin-patterns",
|
|
@@ -730,17 +630,8 @@
|
|
|
730
630
|
"https://docs.vendure.io/llms.txt"
|
|
731
631
|
],
|
|
732
632
|
"tokenBudget": 1200,
|
|
733
|
-
"tags": [
|
|
734
|
-
|
|
735
|
-
"vendure",
|
|
736
|
-
"nestjs",
|
|
737
|
-
"graphql",
|
|
738
|
-
"typescript"
|
|
739
|
-
],
|
|
740
|
-
"repoRoles": [
|
|
741
|
-
"vendure-plugin",
|
|
742
|
-
"vendure-app"
|
|
743
|
-
],
|
|
633
|
+
"tags": ["backend", "vendure", "nestjs", "graphql", "typescript"],
|
|
634
|
+
"repoRoles": ["vendure-plugin", "vendure-app"],
|
|
744
635
|
"requiresAny": [
|
|
745
636
|
{
|
|
746
637
|
"stack": "vendure3"
|
|
@@ -754,7 +645,9 @@
|
|
|
754
645
|
],
|
|
755
646
|
"ecosystem": "vendure",
|
|
756
647
|
"tokenEstimate": 3400,
|
|
757
|
-
"installMode": "copy-selected"
|
|
648
|
+
"installMode": "copy-selected",
|
|
649
|
+
"reviewStatus": "approved",
|
|
650
|
+
"riskLevel": "low"
|
|
758
651
|
},
|
|
759
652
|
{
|
|
760
653
|
"id": "haus.laravel-patterns",
|
|
@@ -773,15 +666,8 @@
|
|
|
773
666
|
"https://laravel.com/docs"
|
|
774
667
|
],
|
|
775
668
|
"tokenBudget": 1200,
|
|
776
|
-
"tags": [
|
|
777
|
-
|
|
778
|
-
"laravel",
|
|
779
|
-
"php"
|
|
780
|
-
],
|
|
781
|
-
"repoRoles": [
|
|
782
|
-
"laravel-app",
|
|
783
|
-
"laravel-nova-app"
|
|
784
|
-
],
|
|
669
|
+
"tags": ["backend", "laravel", "php"],
|
|
670
|
+
"repoRoles": ["laravel-app", "laravel-nova-app"],
|
|
785
671
|
"requiresAny": [
|
|
786
672
|
{
|
|
787
673
|
"stack": "laravel"
|
|
@@ -792,7 +678,9 @@
|
|
|
792
678
|
],
|
|
793
679
|
"ecosystem": "laravel",
|
|
794
680
|
"tokenEstimate": 2800,
|
|
795
|
-
"installMode": "copy-selected"
|
|
681
|
+
"installMode": "copy-selected",
|
|
682
|
+
"reviewStatus": "approved",
|
|
683
|
+
"riskLevel": "low"
|
|
796
684
|
},
|
|
797
685
|
{
|
|
798
686
|
"id": "haus.wordpress-patterns",
|
|
@@ -811,15 +699,8 @@
|
|
|
811
699
|
"https://developer.wordpress.org/"
|
|
812
700
|
],
|
|
813
701
|
"tokenBudget": 1200,
|
|
814
|
-
"tags": [
|
|
815
|
-
|
|
816
|
-
"wordpress",
|
|
817
|
-
"php"
|
|
818
|
-
],
|
|
819
|
-
"repoRoles": [
|
|
820
|
-
"wordpress-site",
|
|
821
|
-
"wordpress-bedrock-site"
|
|
822
|
-
],
|
|
702
|
+
"tags": ["backend", "wordpress", "php"],
|
|
703
|
+
"repoRoles": ["wordpress-site", "wordpress-bedrock-site"],
|
|
823
704
|
"requiresAny": [
|
|
824
705
|
{
|
|
825
706
|
"stack": "wordpress"
|
|
@@ -830,7 +711,9 @@
|
|
|
830
711
|
],
|
|
831
712
|
"ecosystem": "wordpress",
|
|
832
713
|
"tokenEstimate": 3000,
|
|
833
|
-
"installMode": "copy-selected"
|
|
714
|
+
"installMode": "copy-selected",
|
|
715
|
+
"reviewStatus": "approved",
|
|
716
|
+
"riskLevel": "low"
|
|
834
717
|
},
|
|
835
718
|
{
|
|
836
719
|
"id": "haus.dotnet-patterns",
|
|
@@ -842,20 +725,10 @@
|
|
|
842
725
|
"purpose": "Guide .NET API/service/domain/persistence layer changes.",
|
|
843
726
|
"whenToUse": "Use for .NET service and endpoint behavior changes with domain impact.",
|
|
844
727
|
"whenNotToUse": "Do not use for frontend-only or non-.NET runtime tasks.",
|
|
845
|
-
"references": [
|
|
846
|
-
"references/conventions.md",
|
|
847
|
-
"references/scope.md",
|
|
848
|
-
"references/workflow.md"
|
|
849
|
-
],
|
|
728
|
+
"references": ["references/conventions.md", "references/scope.md", "references/workflow.md"],
|
|
850
729
|
"tokenBudget": 1200,
|
|
851
|
-
"tags": [
|
|
852
|
-
|
|
853
|
-
"dotnet",
|
|
854
|
-
"csharp"
|
|
855
|
-
],
|
|
856
|
-
"repoRoles": [
|
|
857
|
-
"dotnet-service"
|
|
858
|
-
],
|
|
730
|
+
"tags": ["backend", "dotnet", "csharp"],
|
|
731
|
+
"repoRoles": ["dotnet-service"],
|
|
859
732
|
"requiresAny": [
|
|
860
733
|
{
|
|
861
734
|
"stack": "dotnet"
|
|
@@ -863,7 +736,9 @@
|
|
|
863
736
|
],
|
|
864
737
|
"ecosystem": "dotnet",
|
|
865
738
|
"tokenEstimate": 2600,
|
|
866
|
-
"installMode": "copy-selected"
|
|
739
|
+
"installMode": "copy-selected",
|
|
740
|
+
"reviewStatus": "approved",
|
|
741
|
+
"riskLevel": "low"
|
|
867
742
|
},
|
|
868
743
|
{
|
|
869
744
|
"id": "haus.playwright-patterns",
|
|
@@ -882,16 +757,8 @@
|
|
|
882
757
|
"https://playwright.dev/docs/intro"
|
|
883
758
|
],
|
|
884
759
|
"tokenBudget": 1200,
|
|
885
|
-
"tags": [
|
|
886
|
-
|
|
887
|
-
"playwright"
|
|
888
|
-
],
|
|
889
|
-
"repoRoles": [
|
|
890
|
-
"next-app",
|
|
891
|
-
"react-app",
|
|
892
|
-
"vue-app",
|
|
893
|
-
"test-suite"
|
|
894
|
-
],
|
|
760
|
+
"tags": ["testing", "playwright"],
|
|
761
|
+
"repoRoles": ["next-app", "react-app", "vue-app", "test-suite"],
|
|
895
762
|
"requiresAny": [
|
|
896
763
|
{
|
|
897
764
|
"stack": "playwright"
|
|
@@ -902,7 +769,9 @@
|
|
|
902
769
|
],
|
|
903
770
|
"tokenEstimate": 2200,
|
|
904
771
|
"installMode": "copy-selected",
|
|
905
|
-
"ecosystem": "playwright"
|
|
772
|
+
"ecosystem": "playwright",
|
|
773
|
+
"reviewStatus": "approved",
|
|
774
|
+
"riskLevel": "low"
|
|
906
775
|
},
|
|
907
776
|
{
|
|
908
777
|
"id": "haus.code-reviewer-agent",
|
|
@@ -911,16 +780,14 @@
|
|
|
911
780
|
"type": "agent",
|
|
912
781
|
"path": "agents/code-reviewer.md",
|
|
913
782
|
"title": "Haus code reviewer agent",
|
|
914
|
-
"tags": [
|
|
915
|
-
"review",
|
|
916
|
-
"quality",
|
|
917
|
-
"security"
|
|
918
|
-
],
|
|
783
|
+
"tags": ["review", "quality", "security"],
|
|
919
784
|
"repoRoles": [],
|
|
920
785
|
"requiresAny": [],
|
|
921
786
|
"tokenEstimate": 1400,
|
|
922
787
|
"installMode": "copy-selected",
|
|
923
|
-
"default": true
|
|
788
|
+
"default": true,
|
|
789
|
+
"reviewStatus": "approved",
|
|
790
|
+
"riskLevel": "low"
|
|
924
791
|
},
|
|
925
792
|
{
|
|
926
793
|
"id": "haus.test-reviewer-agent",
|
|
@@ -929,15 +796,13 @@
|
|
|
929
796
|
"type": "agent",
|
|
930
797
|
"path": "agents/test-reviewer.md",
|
|
931
798
|
"title": "Haus test reviewer agent",
|
|
932
|
-
"tags": [
|
|
933
|
-
"review",
|
|
934
|
-
"testing",
|
|
935
|
-
"quality"
|
|
936
|
-
],
|
|
799
|
+
"tags": ["review", "testing", "quality"],
|
|
937
800
|
"repoRoles": [],
|
|
938
801
|
"requiresAny": [],
|
|
939
802
|
"tokenEstimate": 1400,
|
|
940
|
-
"installMode": "copy-selected"
|
|
803
|
+
"installMode": "copy-selected",
|
|
804
|
+
"reviewStatus": "approved",
|
|
805
|
+
"riskLevel": "low"
|
|
941
806
|
},
|
|
942
807
|
{
|
|
943
808
|
"id": "haus.security-reviewer-agent",
|
|
@@ -946,14 +811,13 @@
|
|
|
946
811
|
"type": "agent",
|
|
947
812
|
"path": "agents/security-reviewer.md",
|
|
948
813
|
"title": "Haus security reviewer agent",
|
|
949
|
-
"tags": [
|
|
950
|
-
"review",
|
|
951
|
-
"security"
|
|
952
|
-
],
|
|
814
|
+
"tags": ["review", "security"],
|
|
953
815
|
"repoRoles": [],
|
|
954
816
|
"requiresAny": [],
|
|
955
817
|
"tokenEstimate": 1400,
|
|
956
|
-
"installMode": "copy-selected"
|
|
818
|
+
"installMode": "copy-selected",
|
|
819
|
+
"reviewStatus": "approved",
|
|
820
|
+
"riskLevel": "low"
|
|
957
821
|
},
|
|
958
822
|
{
|
|
959
823
|
"id": "haus.docs-researcher-agent",
|
|
@@ -962,15 +826,13 @@
|
|
|
962
826
|
"type": "agent",
|
|
963
827
|
"path": "agents/docs-researcher.md",
|
|
964
828
|
"title": "Haus docs researcher agent",
|
|
965
|
-
"tags": [
|
|
966
|
-
"review",
|
|
967
|
-
"quality",
|
|
968
|
-
"workflow"
|
|
969
|
-
],
|
|
829
|
+
"tags": ["review", "quality", "workflow"],
|
|
970
830
|
"repoRoles": [],
|
|
971
831
|
"requiresAny": [],
|
|
972
832
|
"tokenEstimate": 1200,
|
|
973
|
-
"installMode": "copy-selected"
|
|
833
|
+
"installMode": "copy-selected",
|
|
834
|
+
"reviewStatus": "approved",
|
|
835
|
+
"riskLevel": "low"
|
|
974
836
|
},
|
|
975
837
|
{
|
|
976
838
|
"id": "haus.planner-agent",
|
|
@@ -979,15 +841,13 @@
|
|
|
979
841
|
"type": "agent",
|
|
980
842
|
"path": "agents/planner.md",
|
|
981
843
|
"title": "Haus planner agent",
|
|
982
|
-
"tags": [
|
|
983
|
-
"workflow",
|
|
984
|
-
"quality",
|
|
985
|
-
"review"
|
|
986
|
-
],
|
|
844
|
+
"tags": ["workflow", "quality", "review"],
|
|
987
845
|
"repoRoles": [],
|
|
988
846
|
"requiresAny": [],
|
|
989
847
|
"tokenEstimate": 1200,
|
|
990
|
-
"installMode": "copy-selected"
|
|
848
|
+
"installMode": "copy-selected",
|
|
849
|
+
"reviewStatus": "approved",
|
|
850
|
+
"riskLevel": "low"
|
|
991
851
|
},
|
|
992
852
|
{
|
|
993
853
|
"id": "haus.vendure-app-patterns",
|
|
@@ -1006,14 +866,8 @@
|
|
|
1006
866
|
"https://docs.vendure.io/llms.txt"
|
|
1007
867
|
],
|
|
1008
868
|
"tokenBudget": 1200,
|
|
1009
|
-
"tags": [
|
|
1010
|
-
|
|
1011
|
-
"nestjs",
|
|
1012
|
-
"graphql"
|
|
1013
|
-
],
|
|
1014
|
-
"repoRoles": [
|
|
1015
|
-
"vendure-app"
|
|
1016
|
-
],
|
|
869
|
+
"tags": ["vendure3", "nestjs", "graphql"],
|
|
870
|
+
"repoRoles": ["vendure-app"],
|
|
1017
871
|
"requiresAny": [
|
|
1018
872
|
{
|
|
1019
873
|
"stack": "vendure3"
|
|
@@ -1024,7 +878,9 @@
|
|
|
1024
878
|
],
|
|
1025
879
|
"ecosystem": "vendure",
|
|
1026
880
|
"tokenEstimate": 3200,
|
|
1027
|
-
"installMode": "copy-selected"
|
|
881
|
+
"installMode": "copy-selected",
|
|
882
|
+
"reviewStatus": "approved",
|
|
883
|
+
"riskLevel": "low"
|
|
1028
884
|
},
|
|
1029
885
|
{
|
|
1030
886
|
"id": "haus.nestjs-graphql-patterns",
|
|
@@ -1043,14 +899,8 @@
|
|
|
1043
899
|
"https://docs.nestjs.com/"
|
|
1044
900
|
],
|
|
1045
901
|
"tokenBudget": 1200,
|
|
1046
|
-
"tags": [
|
|
1047
|
-
|
|
1048
|
-
"graphql",
|
|
1049
|
-
"typescript5"
|
|
1050
|
-
],
|
|
1051
|
-
"repoRoles": [
|
|
1052
|
-
"nestjs-api"
|
|
1053
|
-
],
|
|
902
|
+
"tags": ["nestjs", "graphql", "typescript5"],
|
|
903
|
+
"repoRoles": ["nestjs-api"],
|
|
1054
904
|
"requiresAny": [
|
|
1055
905
|
{
|
|
1056
906
|
"stack": "nestjs"
|
|
@@ -1064,7 +914,9 @@
|
|
|
1064
914
|
],
|
|
1065
915
|
"ecosystem": "nestjs",
|
|
1066
916
|
"tokenEstimate": 2600,
|
|
1067
|
-
"installMode": "copy-selected"
|
|
917
|
+
"installMode": "copy-selected",
|
|
918
|
+
"reviewStatus": "approved",
|
|
919
|
+
"riskLevel": "low"
|
|
1068
920
|
},
|
|
1069
921
|
{
|
|
1070
922
|
"id": "haus.nx21-monorepo-patterns",
|
|
@@ -1083,13 +935,8 @@
|
|
|
1083
935
|
"https://nx.dev/docs"
|
|
1084
936
|
],
|
|
1085
937
|
"tokenBudget": 1200,
|
|
1086
|
-
"tags": [
|
|
1087
|
-
|
|
1088
|
-
"yarn4"
|
|
1089
|
-
],
|
|
1090
|
-
"repoRoles": [
|
|
1091
|
-
"nx-monorepo"
|
|
1092
|
-
],
|
|
938
|
+
"tags": ["nx21", "yarn4"],
|
|
939
|
+
"repoRoles": ["nx-monorepo"],
|
|
1093
940
|
"requiresAny": [
|
|
1094
941
|
{
|
|
1095
942
|
"role": "nx-monorepo"
|
|
@@ -1103,7 +950,9 @@
|
|
|
1103
950
|
],
|
|
1104
951
|
"ecosystem": "nx",
|
|
1105
952
|
"tokenEstimate": 2200,
|
|
1106
|
-
"installMode": "copy-selected"
|
|
953
|
+
"installMode": "copy-selected",
|
|
954
|
+
"reviewStatus": "approved",
|
|
955
|
+
"riskLevel": "low"
|
|
1107
956
|
},
|
|
1108
957
|
{
|
|
1109
958
|
"id": "haus.turbo-monorepo-patterns",
|
|
@@ -1122,13 +971,8 @@
|
|
|
1122
971
|
"https://turbo.build/repo/docs"
|
|
1123
972
|
],
|
|
1124
973
|
"tokenBudget": 1200,
|
|
1125
|
-
"tags": [
|
|
1126
|
-
|
|
1127
|
-
"yarn4"
|
|
1128
|
-
],
|
|
1129
|
-
"repoRoles": [
|
|
1130
|
-
"turbo-monorepo"
|
|
1131
|
-
],
|
|
974
|
+
"tags": ["turbo", "yarn4"],
|
|
975
|
+
"repoRoles": ["turbo-monorepo"],
|
|
1132
976
|
"requiresAny": [
|
|
1133
977
|
{
|
|
1134
978
|
"role": "turbo-monorepo"
|
|
@@ -1139,7 +983,9 @@
|
|
|
1139
983
|
],
|
|
1140
984
|
"ecosystem": "turbo",
|
|
1141
985
|
"tokenEstimate": 2200,
|
|
1142
|
-
"installMode": "copy-selected"
|
|
986
|
+
"installMode": "copy-selected",
|
|
987
|
+
"reviewStatus": "approved",
|
|
988
|
+
"riskLevel": "low"
|
|
1143
989
|
},
|
|
1144
990
|
{
|
|
1145
991
|
"id": "haus.tanstack-query-router-patterns",
|
|
@@ -1159,15 +1005,8 @@
|
|
|
1159
1005
|
"https://tanstack.com/router/latest/docs"
|
|
1160
1006
|
],
|
|
1161
1007
|
"tokenBudget": 1200,
|
|
1162
|
-
"tags": [
|
|
1163
|
-
|
|
1164
|
-
"tanstack-router",
|
|
1165
|
-
"react19"
|
|
1166
|
-
],
|
|
1167
|
-
"repoRoles": [
|
|
1168
|
-
"next-app",
|
|
1169
|
-
"react-app"
|
|
1170
|
-
],
|
|
1008
|
+
"tags": ["tanstack-query", "tanstack-router", "react19"],
|
|
1009
|
+
"repoRoles": ["next-app", "react-app"],
|
|
1171
1010
|
"requiresAny": [
|
|
1172
1011
|
{
|
|
1173
1012
|
"dependency": "@tanstack/react-query"
|
|
@@ -1184,7 +1023,9 @@
|
|
|
1184
1023
|
],
|
|
1185
1024
|
"ecosystem": "react",
|
|
1186
1025
|
"tokenEstimate": 2200,
|
|
1187
|
-
"installMode": "copy-selected"
|
|
1026
|
+
"installMode": "copy-selected",
|
|
1027
|
+
"reviewStatus": "approved",
|
|
1028
|
+
"riskLevel": "low"
|
|
1188
1029
|
},
|
|
1189
1030
|
{
|
|
1190
1031
|
"id": "haus.radix-shadcn-patterns",
|
|
@@ -1204,15 +1045,8 @@
|
|
|
1204
1045
|
"https://www.radix-ui.com/primitives/docs"
|
|
1205
1046
|
],
|
|
1206
1047
|
"tokenBudget": 1200,
|
|
1207
|
-
"tags": [
|
|
1208
|
-
|
|
1209
|
-
"shadcn",
|
|
1210
|
-
"react19"
|
|
1211
|
-
],
|
|
1212
|
-
"repoRoles": [
|
|
1213
|
-
"next-app",
|
|
1214
|
-
"react-app"
|
|
1215
|
-
],
|
|
1048
|
+
"tags": ["radix", "shadcn", "react19"],
|
|
1049
|
+
"repoRoles": ["next-app", "react-app"],
|
|
1216
1050
|
"requiresAny": [
|
|
1217
1051
|
{
|
|
1218
1052
|
"stack": "shadcn"
|
|
@@ -1235,7 +1069,9 @@
|
|
|
1235
1069
|
],
|
|
1236
1070
|
"ecosystem": "react",
|
|
1237
1071
|
"tokenEstimate": 1800,
|
|
1238
|
-
"installMode": "copy-selected"
|
|
1072
|
+
"installMode": "copy-selected",
|
|
1073
|
+
"reviewStatus": "approved",
|
|
1074
|
+
"riskLevel": "low"
|
|
1239
1075
|
},
|
|
1240
1076
|
{
|
|
1241
1077
|
"id": "haus.tailwind-scss-patterns",
|
|
@@ -1254,16 +1090,8 @@
|
|
|
1254
1090
|
"https://tailwindcss.com/docs"
|
|
1255
1091
|
],
|
|
1256
1092
|
"tokenBudget": 1200,
|
|
1257
|
-
"tags": [
|
|
1258
|
-
|
|
1259
|
-
"scss",
|
|
1260
|
-
"react19"
|
|
1261
|
-
],
|
|
1262
|
-
"repoRoles": [
|
|
1263
|
-
"next-app",
|
|
1264
|
-
"react-app",
|
|
1265
|
-
"vite-app"
|
|
1266
|
-
],
|
|
1093
|
+
"tags": ["tailwind", "scss", "react19"],
|
|
1094
|
+
"repoRoles": ["next-app", "react-app", "vite-app"],
|
|
1267
1095
|
"requiresAny": [
|
|
1268
1096
|
{
|
|
1269
1097
|
"dependency": "tailwindcss"
|
|
@@ -1277,7 +1105,9 @@
|
|
|
1277
1105
|
],
|
|
1278
1106
|
"ecosystem": "tailwind",
|
|
1279
1107
|
"tokenEstimate": 1800,
|
|
1280
|
-
"installMode": "copy-selected"
|
|
1108
|
+
"installMode": "copy-selected",
|
|
1109
|
+
"reviewStatus": "approved",
|
|
1110
|
+
"riskLevel": "low"
|
|
1281
1111
|
},
|
|
1282
1112
|
{
|
|
1283
1113
|
"id": "haus.vue-patterns",
|
|
@@ -1296,12 +1126,8 @@
|
|
|
1296
1126
|
"https://vuejs.org/guide"
|
|
1297
1127
|
],
|
|
1298
1128
|
"tokenBudget": 1200,
|
|
1299
|
-
"tags": [
|
|
1300
|
-
|
|
1301
|
-
],
|
|
1302
|
-
"repoRoles": [
|
|
1303
|
-
"vue-app"
|
|
1304
|
-
],
|
|
1129
|
+
"tags": ["vue"],
|
|
1130
|
+
"repoRoles": ["vue-app"],
|
|
1305
1131
|
"requiresAny": [
|
|
1306
1132
|
{
|
|
1307
1133
|
"stack": "vue"
|
|
@@ -1312,7 +1138,9 @@
|
|
|
1312
1138
|
],
|
|
1313
1139
|
"ecosystem": "vue",
|
|
1314
1140
|
"tokenEstimate": 2000,
|
|
1315
|
-
"installMode": "copy-selected"
|
|
1141
|
+
"installMode": "copy-selected",
|
|
1142
|
+
"reviewStatus": "approved",
|
|
1143
|
+
"riskLevel": "low"
|
|
1316
1144
|
},
|
|
1317
1145
|
{
|
|
1318
1146
|
"id": "haus.laravel-nova-patterns",
|
|
@@ -1331,13 +1159,8 @@
|
|
|
1331
1159
|
"https://laravel.com/docs"
|
|
1332
1160
|
],
|
|
1333
1161
|
"tokenBudget": 1200,
|
|
1334
|
-
"tags": [
|
|
1335
|
-
|
|
1336
|
-
"laravel"
|
|
1337
|
-
],
|
|
1338
|
-
"repoRoles": [
|
|
1339
|
-
"laravel-nova-app"
|
|
1340
|
-
],
|
|
1162
|
+
"tags": ["laravel-nova", "laravel"],
|
|
1163
|
+
"repoRoles": ["laravel-nova-app"],
|
|
1341
1164
|
"requiresAny": [
|
|
1342
1165
|
{
|
|
1343
1166
|
"dependency": "laravel/nova"
|
|
@@ -1345,7 +1168,9 @@
|
|
|
1345
1168
|
],
|
|
1346
1169
|
"ecosystem": "laravel",
|
|
1347
1170
|
"tokenEstimate": 2600,
|
|
1348
|
-
"installMode": "copy-selected"
|
|
1171
|
+
"installMode": "copy-selected",
|
|
1172
|
+
"reviewStatus": "approved",
|
|
1173
|
+
"riskLevel": "low"
|
|
1349
1174
|
},
|
|
1350
1175
|
{
|
|
1351
1176
|
"id": "haus.wordpress-bedrock-patterns",
|
|
@@ -1364,13 +1189,8 @@
|
|
|
1364
1189
|
"https://developer.wordpress.org/"
|
|
1365
1190
|
],
|
|
1366
1191
|
"tokenBudget": 1200,
|
|
1367
|
-
"tags": [
|
|
1368
|
-
|
|
1369
|
-
"bedrock"
|
|
1370
|
-
],
|
|
1371
|
-
"repoRoles": [
|
|
1372
|
-
"wordpress-bedrock-site"
|
|
1373
|
-
],
|
|
1192
|
+
"tags": ["wordpress", "bedrock"],
|
|
1193
|
+
"repoRoles": ["wordpress-bedrock-site"],
|
|
1374
1194
|
"requiresAny": [
|
|
1375
1195
|
{
|
|
1376
1196
|
"role": "wordpress-bedrock-site"
|
|
@@ -1381,7 +1201,9 @@
|
|
|
1381
1201
|
],
|
|
1382
1202
|
"ecosystem": "wordpress",
|
|
1383
1203
|
"tokenEstimate": 2600,
|
|
1384
|
-
"installMode": "copy-selected"
|
|
1204
|
+
"installMode": "copy-selected",
|
|
1205
|
+
"reviewStatus": "approved",
|
|
1206
|
+
"riskLevel": "low"
|
|
1385
1207
|
},
|
|
1386
1208
|
{
|
|
1387
1209
|
"id": "haus.wordpress-acf-elementor-jetengine-patterns",
|
|
@@ -1400,13 +1222,8 @@
|
|
|
1400
1222
|
"https://developer.wordpress.org/"
|
|
1401
1223
|
],
|
|
1402
1224
|
"tokenBudget": 1200,
|
|
1403
|
-
"tags": [
|
|
1404
|
-
|
|
1405
|
-
],
|
|
1406
|
-
"repoRoles": [
|
|
1407
|
-
"wordpress-bedrock-site",
|
|
1408
|
-
"wordpress-vanilla-site"
|
|
1409
|
-
],
|
|
1225
|
+
"tags": ["wordpress"],
|
|
1226
|
+
"repoRoles": ["wordpress-bedrock-site", "wordpress-vanilla-site"],
|
|
1410
1227
|
"requiresAny": [
|
|
1411
1228
|
{
|
|
1412
1229
|
"role": "wordpress-bedrock-site"
|
|
@@ -1429,7 +1246,9 @@
|
|
|
1429
1246
|
],
|
|
1430
1247
|
"ecosystem": "wordpress",
|
|
1431
1248
|
"tokenEstimate": 2600,
|
|
1432
|
-
"installMode": "copy-selected"
|
|
1249
|
+
"installMode": "copy-selected",
|
|
1250
|
+
"reviewStatus": "approved",
|
|
1251
|
+
"riskLevel": "low"
|
|
1433
1252
|
},
|
|
1434
1253
|
{
|
|
1435
1254
|
"id": "haus.dotnet-service-patterns",
|
|
@@ -1441,18 +1260,10 @@
|
|
|
1441
1260
|
"purpose": "Guide .NET service-layer contract and orchestration changes.",
|
|
1442
1261
|
"whenToUse": "Use for .NET service boundary, orchestration, and handler behavior updates.",
|
|
1443
1262
|
"whenNotToUse": "Do not use for route formatting-only tasks with no service impact.",
|
|
1444
|
-
"references": [
|
|
1445
|
-
"references/conventions.md",
|
|
1446
|
-
"references/scope.md",
|
|
1447
|
-
"references/workflow.md"
|
|
1448
|
-
],
|
|
1263
|
+
"references": ["references/conventions.md", "references/scope.md", "references/workflow.md"],
|
|
1449
1264
|
"tokenBudget": 1200,
|
|
1450
|
-
"tags": [
|
|
1451
|
-
|
|
1452
|
-
],
|
|
1453
|
-
"repoRoles": [
|
|
1454
|
-
"dotnet-service"
|
|
1455
|
-
],
|
|
1265
|
+
"tags": ["dotnet"],
|
|
1266
|
+
"repoRoles": ["dotnet-service"],
|
|
1456
1267
|
"requiresAny": [
|
|
1457
1268
|
{
|
|
1458
1269
|
"stack": "dotnet"
|
|
@@ -1463,7 +1274,9 @@
|
|
|
1463
1274
|
],
|
|
1464
1275
|
"ecosystem": "dotnet",
|
|
1465
1276
|
"tokenEstimate": 2300,
|
|
1466
|
-
"installMode": "copy-selected"
|
|
1277
|
+
"installMode": "copy-selected",
|
|
1278
|
+
"reviewStatus": "approved",
|
|
1279
|
+
"riskLevel": "low"
|
|
1467
1280
|
},
|
|
1468
1281
|
{
|
|
1469
1282
|
"id": "haus.auth-oidc-azure-bankid-patterns",
|
|
@@ -1475,18 +1288,9 @@
|
|
|
1475
1288
|
"purpose": "Guide identity-provider auth flow and claim/session lifecycle changes across OIDC, Azure AD, BankID, and SAML2.",
|
|
1476
1289
|
"whenToUse": "Use for OIDC/Azure AD/BankID/SAML2 login, callback, token, claim mapping, and SP/IDP metadata updates.",
|
|
1477
1290
|
"whenNotToUse": "Do not use for profile CRUD without auth protocol change.",
|
|
1478
|
-
"references": [
|
|
1479
|
-
"references/conventions.md",
|
|
1480
|
-
"references/scope.md",
|
|
1481
|
-
"references/workflow.md"
|
|
1482
|
-
],
|
|
1291
|
+
"references": ["references/conventions.md", "references/scope.md", "references/workflow.md"],
|
|
1483
1292
|
"tokenBudget": 1200,
|
|
1484
|
-
"tags": [
|
|
1485
|
-
"oidc",
|
|
1486
|
-
"azure-ad",
|
|
1487
|
-
"bankid",
|
|
1488
|
-
"saml2"
|
|
1489
|
-
],
|
|
1293
|
+
"tags": ["oidc", "azure-ad", "bankid", "saml2"],
|
|
1490
1294
|
"repoRoles": [],
|
|
1491
1295
|
"requiresAny": [
|
|
1492
1296
|
{
|
|
@@ -1504,7 +1308,9 @@
|
|
|
1504
1308
|
],
|
|
1505
1309
|
"tokenEstimate": 1700,
|
|
1506
1310
|
"installMode": "copy-selected",
|
|
1507
|
-
"ecosystem": "auth"
|
|
1311
|
+
"ecosystem": "auth",
|
|
1312
|
+
"reviewStatus": "approved",
|
|
1313
|
+
"riskLevel": "medium"
|
|
1508
1314
|
},
|
|
1509
1315
|
{
|
|
1510
1316
|
"id": "haus.nextauth-patterns",
|
|
@@ -1523,14 +1329,8 @@
|
|
|
1523
1329
|
"https://authjs.dev/"
|
|
1524
1330
|
],
|
|
1525
1331
|
"tokenBudget": 1200,
|
|
1526
|
-
"tags": [
|
|
1527
|
-
|
|
1528
|
-
"auth",
|
|
1529
|
-
"nextjs"
|
|
1530
|
-
],
|
|
1531
|
-
"repoRoles": [
|
|
1532
|
-
"next-app"
|
|
1533
|
-
],
|
|
1332
|
+
"tags": ["next-auth", "auth", "nextjs"],
|
|
1333
|
+
"repoRoles": ["next-app"],
|
|
1534
1334
|
"requiresAny": [
|
|
1535
1335
|
{
|
|
1536
1336
|
"stack": "next-auth"
|
|
@@ -1544,7 +1344,9 @@
|
|
|
1544
1344
|
],
|
|
1545
1345
|
"ecosystem": "auth",
|
|
1546
1346
|
"tokenEstimate": 2000,
|
|
1547
|
-
"installMode": "copy-selected"
|
|
1347
|
+
"installMode": "copy-selected",
|
|
1348
|
+
"reviewStatus": "approved",
|
|
1349
|
+
"riskLevel": "medium"
|
|
1548
1350
|
},
|
|
1549
1351
|
{
|
|
1550
1352
|
"id": "haus.database-patterns",
|
|
@@ -1556,20 +1358,9 @@
|
|
|
1556
1358
|
"purpose": "Guide schema/query/index/search changes across supported data engines.",
|
|
1557
1359
|
"whenToUse": "Use for migrations, query behavior, indexing, and Elasticsearch mapping updates.",
|
|
1558
1360
|
"whenNotToUse": "Do not use for UI-only changes without persistence/search impact.",
|
|
1559
|
-
"references": [
|
|
1560
|
-
"references/conventions.md",
|
|
1561
|
-
"references/scope.md",
|
|
1562
|
-
"references/workflow.md"
|
|
1563
|
-
],
|
|
1361
|
+
"references": ["references/conventions.md", "references/scope.md", "references/workflow.md"],
|
|
1564
1362
|
"tokenBudget": 1200,
|
|
1565
|
-
"tags": [
|
|
1566
|
-
"postgresql",
|
|
1567
|
-
"mariadb",
|
|
1568
|
-
"mysql",
|
|
1569
|
-
"mssql",
|
|
1570
|
-
"elasticsearch",
|
|
1571
|
-
"redis"
|
|
1572
|
-
],
|
|
1363
|
+
"tags": ["postgresql", "mariadb", "mysql", "mssql", "elasticsearch", "redis"],
|
|
1573
1364
|
"repoRoles": [],
|
|
1574
1365
|
"requiresAny": [
|
|
1575
1366
|
{
|
|
@@ -1593,11 +1384,13 @@
|
|
|
1593
1384
|
],
|
|
1594
1385
|
"tokenEstimate": 1700,
|
|
1595
1386
|
"installMode": "copy-selected",
|
|
1596
|
-
"ecosystem": "database"
|
|
1387
|
+
"ecosystem": "database",
|
|
1388
|
+
"reviewStatus": "approved",
|
|
1389
|
+
"riskLevel": "low"
|
|
1597
1390
|
},
|
|
1598
1391
|
{
|
|
1599
1392
|
"id": "haus.package-manager-yarn4-pnpm89",
|
|
1600
|
-
"version": "1.0.
|
|
1393
|
+
"version": "1.0.1",
|
|
1601
1394
|
"source": "haus",
|
|
1602
1395
|
"type": "skill",
|
|
1603
1396
|
"path": "skills/package-manager-yarn4-pnpm89",
|
|
@@ -1605,16 +1398,9 @@
|
|
|
1605
1398
|
"purpose": "Guide deterministic dependency/workspace changes for Yarn4 and pnpm89.",
|
|
1606
1399
|
"whenToUse": "Use for lockfile, workspace, and package manager configuration changes.",
|
|
1607
1400
|
"whenNotToUse": "Do not use for feature-only code edits with no dependency/workspace impact.",
|
|
1608
|
-
"references": [
|
|
1609
|
-
"references/conventions.md",
|
|
1610
|
-
"references/scope.md",
|
|
1611
|
-
"references/workflow.md"
|
|
1612
|
-
],
|
|
1401
|
+
"references": ["references/conventions.md", "references/scope.md", "references/workflow.md"],
|
|
1613
1402
|
"tokenBudget": 1200,
|
|
1614
|
-
"tags": [
|
|
1615
|
-
"yarn4",
|
|
1616
|
-
"pnpm89"
|
|
1617
|
-
],
|
|
1403
|
+
"tags": ["yarn4", "pnpm89"],
|
|
1618
1404
|
"repoRoles": [],
|
|
1619
1405
|
"requiresAny": [
|
|
1620
1406
|
{
|
|
@@ -1626,7 +1412,9 @@
|
|
|
1626
1412
|
],
|
|
1627
1413
|
"tokenEstimate": 1200,
|
|
1628
1414
|
"installMode": "copy-selected",
|
|
1629
|
-
"ecosystem": "packagemanager"
|
|
1415
|
+
"ecosystem": "packagemanager",
|
|
1416
|
+
"reviewStatus": "approved",
|
|
1417
|
+
"riskLevel": "low"
|
|
1630
1418
|
},
|
|
1631
1419
|
{
|
|
1632
1420
|
"id": "haus.testing-library-patterns",
|
|
@@ -1645,9 +1433,7 @@
|
|
|
1645
1433
|
"https://vitest.dev/guide"
|
|
1646
1434
|
],
|
|
1647
1435
|
"tokenBudget": 1200,
|
|
1648
|
-
"tags": [
|
|
1649
|
-
"testing-library"
|
|
1650
|
-
],
|
|
1436
|
+
"tags": ["testing-library"],
|
|
1651
1437
|
"repoRoles": [],
|
|
1652
1438
|
"requiresAny": [
|
|
1653
1439
|
{
|
|
@@ -1665,7 +1451,9 @@
|
|
|
1665
1451
|
],
|
|
1666
1452
|
"tokenEstimate": 1500,
|
|
1667
1453
|
"installMode": "copy-selected",
|
|
1668
|
-
"ecosystem": "testing"
|
|
1454
|
+
"ecosystem": "testing",
|
|
1455
|
+
"reviewStatus": "approved",
|
|
1456
|
+
"riskLevel": "low"
|
|
1669
1457
|
},
|
|
1670
1458
|
{
|
|
1671
1459
|
"id": "haus.vitest-patterns",
|
|
@@ -1684,11 +1472,7 @@
|
|
|
1684
1472
|
"https://vitest.dev/guide/"
|
|
1685
1473
|
],
|
|
1686
1474
|
"tokenBudget": 1200,
|
|
1687
|
-
"tags": [
|
|
1688
|
-
"testing",
|
|
1689
|
-
"vitest",
|
|
1690
|
-
"typescript"
|
|
1691
|
-
],
|
|
1475
|
+
"tags": ["testing", "vitest", "typescript"],
|
|
1692
1476
|
"repoRoles": [
|
|
1693
1477
|
"next-app",
|
|
1694
1478
|
"react-app",
|
|
@@ -1705,8 +1489,11 @@
|
|
|
1705
1489
|
"dependency": "vitest"
|
|
1706
1490
|
}
|
|
1707
1491
|
],
|
|
1492
|
+
"ecosystem": "testing",
|
|
1708
1493
|
"tokenEstimate": 1500,
|
|
1709
|
-
"installMode": "copy-selected"
|
|
1494
|
+
"installMode": "copy-selected",
|
|
1495
|
+
"reviewStatus": "approved",
|
|
1496
|
+
"riskLevel": "low"
|
|
1710
1497
|
},
|
|
1711
1498
|
{
|
|
1712
1499
|
"id": "haus.jest-patterns",
|
|
@@ -1725,16 +1512,8 @@
|
|
|
1725
1512
|
"https://jestjs.io/docs/getting-started"
|
|
1726
1513
|
],
|
|
1727
1514
|
"tokenBudget": 1200,
|
|
1728
|
-
"tags": [
|
|
1729
|
-
|
|
1730
|
-
"jest",
|
|
1731
|
-
"typescript"
|
|
1732
|
-
],
|
|
1733
|
-
"repoRoles": [
|
|
1734
|
-
"next-app",
|
|
1735
|
-
"react-app",
|
|
1736
|
-
"nx-monorepo"
|
|
1737
|
-
],
|
|
1515
|
+
"tags": ["testing", "jest", "typescript"],
|
|
1516
|
+
"repoRoles": ["next-app", "react-app", "nx-monorepo"],
|
|
1738
1517
|
"requiresAny": [
|
|
1739
1518
|
{
|
|
1740
1519
|
"stack": "jest"
|
|
@@ -1746,8 +1525,11 @@
|
|
|
1746
1525
|
"dependency": "jest-environment-jsdom"
|
|
1747
1526
|
}
|
|
1748
1527
|
],
|
|
1528
|
+
"ecosystem": "testing",
|
|
1749
1529
|
"tokenEstimate": 1500,
|
|
1750
|
-
"installMode": "copy-selected"
|
|
1530
|
+
"installMode": "copy-selected",
|
|
1531
|
+
"reviewStatus": "approved",
|
|
1532
|
+
"riskLevel": "low"
|
|
1751
1533
|
},
|
|
1752
1534
|
{
|
|
1753
1535
|
"id": "haus.phpunit-patterns",
|
|
@@ -1766,13 +1548,8 @@
|
|
|
1766
1548
|
"https://laravel.com/docs"
|
|
1767
1549
|
],
|
|
1768
1550
|
"tokenBudget": 1200,
|
|
1769
|
-
"tags": [
|
|
1770
|
-
|
|
1771
|
-
],
|
|
1772
|
-
"repoRoles": [
|
|
1773
|
-
"laravel-app",
|
|
1774
|
-
"laravel-nova-app"
|
|
1775
|
-
],
|
|
1551
|
+
"tags": ["phpunit"],
|
|
1552
|
+
"repoRoles": ["laravel-app", "laravel-nova-app"],
|
|
1776
1553
|
"requiresAny": [
|
|
1777
1554
|
{
|
|
1778
1555
|
"stack": "phpunit"
|
|
@@ -1783,7 +1560,9 @@
|
|
|
1783
1560
|
],
|
|
1784
1561
|
"ecosystem": "laravel",
|
|
1785
1562
|
"tokenEstimate": 1500,
|
|
1786
|
-
"installMode": "copy-selected"
|
|
1563
|
+
"installMode": "copy-selected",
|
|
1564
|
+
"reviewStatus": "approved",
|
|
1565
|
+
"riskLevel": "low"
|
|
1787
1566
|
},
|
|
1788
1567
|
{
|
|
1789
1568
|
"id": "haus.storybook-patterns",
|
|
@@ -1802,14 +1581,8 @@
|
|
|
1802
1581
|
"https://storybook.js.org/docs"
|
|
1803
1582
|
],
|
|
1804
1583
|
"tokenBudget": 1200,
|
|
1805
|
-
"tags": [
|
|
1806
|
-
|
|
1807
|
-
],
|
|
1808
|
-
"repoRoles": [
|
|
1809
|
-
"react-app",
|
|
1810
|
-
"next-app",
|
|
1811
|
-
"vite-app"
|
|
1812
|
-
],
|
|
1584
|
+
"tags": ["storybook"],
|
|
1585
|
+
"repoRoles": ["react-app", "next-app", "vite-app"],
|
|
1813
1586
|
"requiresAny": [
|
|
1814
1587
|
{
|
|
1815
1588
|
"stack": "storybook"
|
|
@@ -1826,7 +1599,9 @@
|
|
|
1826
1599
|
],
|
|
1827
1600
|
"ecosystem": "storybook",
|
|
1828
1601
|
"tokenEstimate": 1500,
|
|
1829
|
-
"installMode": "copy-selected"
|
|
1602
|
+
"installMode": "copy-selected",
|
|
1603
|
+
"reviewStatus": "approved",
|
|
1604
|
+
"riskLevel": "low"
|
|
1830
1605
|
},
|
|
1831
1606
|
{
|
|
1832
1607
|
"id": "haus.security-review",
|
|
@@ -1845,16 +1620,15 @@
|
|
|
1845
1620
|
"references/verification.md"
|
|
1846
1621
|
],
|
|
1847
1622
|
"tokenBudget": 800,
|
|
1848
|
-
"tags": [
|
|
1849
|
-
"security",
|
|
1850
|
-
"review"
|
|
1851
|
-
],
|
|
1623
|
+
"tags": ["security", "review"],
|
|
1852
1624
|
"repoRoles": [],
|
|
1853
1625
|
"requiresAny": [],
|
|
1854
1626
|
"tokenEstimate": 1200,
|
|
1855
1627
|
"installMode": "copy-selected",
|
|
1856
1628
|
"ecosystem": "security",
|
|
1857
|
-
"default": true
|
|
1629
|
+
"default": true,
|
|
1630
|
+
"reviewStatus": "approved",
|
|
1631
|
+
"riskLevel": "low"
|
|
1858
1632
|
},
|
|
1859
1633
|
{
|
|
1860
1634
|
"id": "haus.production-readiness-review",
|
|
@@ -1873,38 +1647,34 @@
|
|
|
1873
1647
|
"references/rollback.md"
|
|
1874
1648
|
],
|
|
1875
1649
|
"tokenBudget": 800,
|
|
1876
|
-
"tags": [
|
|
1877
|
-
"quality",
|
|
1878
|
-
"security",
|
|
1879
|
-
"review"
|
|
1880
|
-
],
|
|
1650
|
+
"tags": ["quality", "security", "review"],
|
|
1881
1651
|
"repoRoles": [],
|
|
1882
1652
|
"requiresAny": [],
|
|
1883
1653
|
"tokenEstimate": 1200,
|
|
1884
1654
|
"installMode": "copy-selected",
|
|
1885
1655
|
"ecosystem": "production",
|
|
1886
|
-
"default": true
|
|
1656
|
+
"default": true,
|
|
1657
|
+
"reviewStatus": "approved",
|
|
1658
|
+
"riskLevel": "low"
|
|
1887
1659
|
},
|
|
1888
1660
|
{
|
|
1889
|
-
"id": "haus.
|
|
1661
|
+
"id": "haus.agentic-workflow-standard",
|
|
1890
1662
|
"version": "1.0.0",
|
|
1891
1663
|
"source": "haus",
|
|
1892
1664
|
"type": "template",
|
|
1893
|
-
"path": "templates/
|
|
1894
|
-
"title": "
|
|
1895
|
-
"purpose": "
|
|
1896
|
-
"whenToUse": "Install in every project using haus-workflow.
|
|
1665
|
+
"path": "templates/agentic-workflow-standard.md",
|
|
1666
|
+
"title": "Agentic workflow standard",
|
|
1667
|
+
"purpose": "General agentic development workflow: feature loop, NEVER rules, testing standards, ADR, subagent patterns, security, accessibility.",
|
|
1668
|
+
"whenToUse": "Install in every project using haus-workflow.",
|
|
1897
1669
|
"whenNotToUse": "Never skip this template.",
|
|
1898
|
-
"tags": [
|
|
1899
|
-
"workflow",
|
|
1900
|
-
"baseline",
|
|
1901
|
-
"project-instructions"
|
|
1902
|
-
],
|
|
1670
|
+
"tags": ["workflow", "baseline", "project-instructions"],
|
|
1903
1671
|
"repoRoles": [],
|
|
1904
1672
|
"installMode": "copy-selected",
|
|
1905
|
-
"tokenEstimate":
|
|
1906
|
-
"tokenBudget":
|
|
1907
|
-
"default": true
|
|
1673
|
+
"tokenEstimate": 2200,
|
|
1674
|
+
"tokenBudget": 2400,
|
|
1675
|
+
"default": true,
|
|
1676
|
+
"reviewStatus": "approved",
|
|
1677
|
+
"riskLevel": "low"
|
|
1908
1678
|
}
|
|
1909
1679
|
]
|
|
1910
1680
|
}
|