@haus-tech/haus-workflow 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.9.0](https://github.com/WeAreHausTech/haus-workflow/compare/v0.8.0...v0.9.0) (2026-05-28)
4
+
5
+ ### Features
6
+
7
+ * **scanner:** detect stripe, qliro, supabase (T26-T28) ([b2585b0](https://github.com/WeAreHausTech/haus-workflow/commit/b2585b027621be1442533d12255523f8361d967b))
8
+
9
+ ## [0.8.0](https://github.com/WeAreHausTech/haus-workflow/compare/v0.7.0...v0.8.0) (2026-05-28)
10
+
11
+ ### Features
12
+
13
+ * **scanner:** tooling detection (T19-T25) ([2ae293b](https://github.com/WeAreHausTech/haus-workflow/commit/2ae293b69cf97be15017021e16703e19aa3c2223))
14
+
3
15
  ## [0.7.0](https://github.com/WeAreHausTech/haus-workflow/compare/v0.6.0...v0.7.0) (2026-05-28)
4
16
 
5
17
  ### Features
package/dist/cli.js CHANGED
@@ -1482,6 +1482,21 @@ async function detectStacks(root, deps, files, packageManager) {
1482
1482
  if (deps.includes("prisma") || deps.includes("@prisma/client")) add("backend", "prisma");
1483
1483
  if (deps.includes("expo")) add("frontend", "expo");
1484
1484
  if (deps.includes("react-native")) add("frontend", "react-native");
1485
+ if (deps.includes("i18next") || deps.includes("react-i18next")) add("tooling", "i18next");
1486
+ if (deps.includes("bullmq")) add("tooling", "bullmq");
1487
+ if (files.some((f) => f === "Dockerfile" || f.startsWith("docker-compose"))) add("tooling", "docker");
1488
+ if (deps.includes("pm2") || files.some((f) => f.includes("ecosystem.config"))) add("tooling", "pm2");
1489
+ if (deps.some((d) => d.startsWith("@sentry/"))) add("tooling", "sentry");
1490
+ if (deps.includes("deployer/deployer")) add("tooling", "deployer-php");
1491
+ if (!deps.includes("prettier")) add("tooling", "missing-prettier");
1492
+ if (!deps.includes("eslint")) add("tooling", "missing-eslint");
1493
+ if (deps.includes("@stripe/stripe-js") || deps.includes("@stripe/react-stripe-js")) {
1494
+ add("tooling", "stripe");
1495
+ }
1496
+ if (deps.includes("@haus-tech/qliro-plugin")) add("tooling", "qliro");
1497
+ if (deps.includes("@supabase/supabase-js") || deps.some((d) => d.startsWith("@supabase/"))) {
1498
+ add("databases", "supabase");
1499
+ }
1485
1500
  if (deps.includes("@vendure/core")) add("backend", "vendure3");
1486
1501
  if (deps.includes("@nestjs/core")) add("backend", "nestjs");
1487
1502
  if (await hasNeedle(root, files, "NestFactory")) add("backend", "nestjs");
@@ -83,6 +83,24 @@
83
83
  "auth",
84
84
  "expo",
85
85
  "react-native",
86
- "mobile"
86
+ "mobile",
87
+ "i18next",
88
+ "i18n",
89
+ "bullmq",
90
+ "queue",
91
+ "sentry",
92
+ "observability",
93
+ "tooling",
94
+ "prettier",
95
+ "eslint",
96
+ "missing-prettier",
97
+ "missing-eslint",
98
+ "docker",
99
+ "pm2",
100
+ "deployer-php",
101
+ "stripe",
102
+ "qliro",
103
+ "supabase",
104
+ "payments"
87
105
  ]
88
106
  }
@@ -279,6 +279,315 @@
279
279
  "tokenEstimate": 2200,
280
280
  "installMode": "copy-selected"
281
281
  },
282
+ {
283
+ "id": "haus.i18next-patterns",
284
+ "version": "1.0.0",
285
+ "source": "haus",
286
+ "type": "skill",
287
+ "path": "skills/i18next-patterns",
288
+ "title": "Haus i18next patterns",
289
+ "purpose": "Guide i18next setup, namespace structure, translation key conventions, and SSR-safe usage.",
290
+ "whenToUse": "Use for adding/changing translations, configuring i18next, or wiring react-i18next / next-i18next.",
291
+ "whenNotToUse": "Do not use for non-i18next translation systems or static-only content with no locale.",
292
+ "references": [
293
+ "references/conventions.md",
294
+ "references/scope.md",
295
+ "references/workflow.md",
296
+ "https://www.i18next.com/"
297
+ ],
298
+ "tokenBudget": 1200,
299
+ "tags": [
300
+ "i18next",
301
+ "i18n",
302
+ "frontend"
303
+ ],
304
+ "repoRoles": [
305
+ "next-app",
306
+ "react-app",
307
+ "vue-app",
308
+ "vite-app"
309
+ ],
310
+ "requiresAny": [
311
+ {
312
+ "stack": "i18next"
313
+ },
314
+ {
315
+ "dependency": "i18next"
316
+ },
317
+ {
318
+ "dependency": "react-i18next"
319
+ }
320
+ ],
321
+ "ecosystem": "tooling",
322
+ "tokenEstimate": 1800,
323
+ "installMode": "copy-selected"
324
+ },
325
+ {
326
+ "id": "haus.bullmq-patterns",
327
+ "version": "1.0.0",
328
+ "source": "haus",
329
+ "type": "skill",
330
+ "path": "skills/bullmq-patterns",
331
+ "title": "Haus BullMQ patterns",
332
+ "purpose": "Guide BullMQ queue, worker, scheduler, and Redis-connection lifecycle changes.",
333
+ "whenToUse": "Use for BullMQ queue definitions, processors, schedulers, and graceful shutdown.",
334
+ "whenNotToUse": "Do not use for non-BullMQ job systems or in-process scheduling without Redis.",
335
+ "references": [
336
+ "references/conventions.md",
337
+ "references/scope.md",
338
+ "references/workflow.md",
339
+ "https://docs.bullmq.io/"
340
+ ],
341
+ "tokenBudget": 1200,
342
+ "tags": [
343
+ "bullmq",
344
+ "queue",
345
+ "backend"
346
+ ],
347
+ "repoRoles": [
348
+ "vendure-app",
349
+ "nestjs-api"
350
+ ],
351
+ "requiresAny": [
352
+ {
353
+ "stack": "bullmq"
354
+ },
355
+ {
356
+ "dependency": "bullmq"
357
+ }
358
+ ],
359
+ "ecosystem": "tooling",
360
+ "tokenEstimate": 1800,
361
+ "installMode": "copy-selected"
362
+ },
363
+ {
364
+ "id": "haus.sentry-patterns",
365
+ "version": "1.0.0",
366
+ "source": "haus",
367
+ "type": "skill",
368
+ "path": "skills/sentry-patterns",
369
+ "title": "Haus Sentry patterns",
370
+ "purpose": "Guide Sentry SDK setup, error capture, performance tracing, and PII scrubbing.",
371
+ "whenToUse": "Use for `@sentry/*` SDK init, scope/breadcrumb config, source map upload, and PII redaction.",
372
+ "whenNotToUse": "Do not use for non-Sentry monitoring (Datadog, New Relic, etc.).",
373
+ "references": [
374
+ "references/conventions.md",
375
+ "references/scope.md",
376
+ "references/workflow.md",
377
+ "https://docs.sentry.io/"
378
+ ],
379
+ "tokenBudget": 1200,
380
+ "tags": [
381
+ "sentry",
382
+ "observability",
383
+ "tooling"
384
+ ],
385
+ "repoRoles": [
386
+ "next-app",
387
+ "nestjs-api",
388
+ "vendure-app"
389
+ ],
390
+ "requiresAny": [
391
+ {
392
+ "stack": "sentry"
393
+ },
394
+ {
395
+ "dependency": "@sentry/node"
396
+ },
397
+ {
398
+ "dependency": "@sentry/nextjs"
399
+ },
400
+ {
401
+ "packageNamePattern": "@sentry/*"
402
+ }
403
+ ],
404
+ "ecosystem": "tooling",
405
+ "tokenEstimate": 1800,
406
+ "installMode": "copy-selected"
407
+ },
408
+ {
409
+ "id": "haus.prettier-setup",
410
+ "version": "1.0.0",
411
+ "source": "haus",
412
+ "type": "skill",
413
+ "path": "skills/prettier-setup",
414
+ "title": "Haus Prettier setup",
415
+ "purpose": "Install `@haus-tech/prettier-config` and wire `.prettierrc` to the shared config.",
416
+ "whenToUse": "Use when Prettier is missing from a haus repo or when migrating an ad-hoc Prettier config to the shared package.",
417
+ "whenNotToUse": "Do not use when Prettier is already configured against `@haus-tech/prettier-config`.",
418
+ "references": [
419
+ "references/conventions.md",
420
+ "references/scope.md",
421
+ "references/workflow.md"
422
+ ],
423
+ "tokenBudget": 800,
424
+ "tags": [
425
+ "prettier",
426
+ "tooling",
427
+ "quality"
428
+ ],
429
+ "repoRoles": [],
430
+ "requiresAny": [
431
+ {
432
+ "stack": "missing-prettier"
433
+ }
434
+ ],
435
+ "ecosystem": "tooling",
436
+ "tokenEstimate": 1000,
437
+ "installMode": "copy-selected"
438
+ },
439
+ {
440
+ "id": "haus.eslint-setup",
441
+ "version": "1.0.0",
442
+ "source": "haus",
443
+ "type": "skill",
444
+ "path": "skills/eslint-setup",
445
+ "title": "Haus ESLint setup",
446
+ "purpose": "Install `@haus-tech/tech-config` and wire ESLint flat config to the shared rules.",
447
+ "whenToUse": "Use when ESLint is missing from a haus repo or migrating from a legacy `.eslintrc` to flat config.",
448
+ "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
+ ],
454
+ "tokenBudget": 800,
455
+ "tags": [
456
+ "eslint",
457
+ "tooling",
458
+ "quality"
459
+ ],
460
+ "repoRoles": [],
461
+ "requiresAny": [
462
+ {
463
+ "stack": "missing-eslint"
464
+ }
465
+ ],
466
+ "ecosystem": "tooling",
467
+ "tokenEstimate": 1000,
468
+ "installMode": "copy-selected"
469
+ },
470
+ {
471
+ "id": "haus.stripe-patterns",
472
+ "version": "1.0.0",
473
+ "source": "haus",
474
+ "type": "skill",
475
+ "path": "skills/stripe-patterns",
476
+ "title": "Haus Stripe patterns",
477
+ "purpose": "Guide Stripe Elements, Checkout, webhook handling, and PCI-safe integration changes.",
478
+ "whenToUse": "Use for `@stripe/stripe-js` / `@stripe/react-stripe-js` integrations, payment intents, webhooks, and Checkout.",
479
+ "whenNotToUse": "Do not use for non-Stripe payment providers (Qliro, Klarna, etc.).",
480
+ "references": [
481
+ "references/conventions.md",
482
+ "references/scope.md",
483
+ "references/workflow.md",
484
+ "https://docs.stripe.com/"
485
+ ],
486
+ "tokenBudget": 1200,
487
+ "tags": [
488
+ "stripe",
489
+ "payments",
490
+ "tooling"
491
+ ],
492
+ "repoRoles": [
493
+ "next-app",
494
+ "react-app",
495
+ "vendure-plugin"
496
+ ],
497
+ "requiresAny": [
498
+ {
499
+ "stack": "stripe"
500
+ },
501
+ {
502
+ "dependency": "@stripe/stripe-js"
503
+ },
504
+ {
505
+ "dependency": "@stripe/react-stripe-js"
506
+ }
507
+ ],
508
+ "ecosystem": "payments",
509
+ "tokenEstimate": 2000,
510
+ "installMode": "copy-selected"
511
+ },
512
+ {
513
+ "id": "haus.qliro-patterns",
514
+ "version": "1.0.0",
515
+ "source": "haus",
516
+ "type": "skill",
517
+ "path": "skills/qliro-patterns",
518
+ "title": "Haus Qliro patterns",
519
+ "purpose": "Guide Qliro Checkout integration via @haus-tech/qliro-plugin in Vendure storefronts.",
520
+ "whenToUse": "Use for Qliro Checkout flow, order callbacks, refund handling, and merchant API config.",
521
+ "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
+ ],
527
+ "tokenBudget": 1200,
528
+ "tags": [
529
+ "qliro",
530
+ "payments",
531
+ "tooling"
532
+ ],
533
+ "repoRoles": [
534
+ "vendure-app",
535
+ "vendure-plugin",
536
+ "next-app"
537
+ ],
538
+ "requiresAny": [
539
+ {
540
+ "stack": "qliro"
541
+ },
542
+ {
543
+ "dependency": "@haus-tech/qliro-plugin"
544
+ }
545
+ ],
546
+ "ecosystem": "payments",
547
+ "tokenEstimate": 1800,
548
+ "installMode": "copy-selected"
549
+ },
550
+ {
551
+ "id": "haus.supabase-patterns",
552
+ "version": "1.0.0",
553
+ "source": "haus",
554
+ "type": "skill",
555
+ "path": "skills/supabase-patterns",
556
+ "title": "Haus Supabase patterns",
557
+ "purpose": "Guide Supabase client wiring, Row-Level Security, edge functions, and auth integration.",
558
+ "whenToUse": "Use for `@supabase/supabase-js` queries, RLS policies, edge functions, and Supabase Auth flows.",
559
+ "whenNotToUse": "Do not use for non-Supabase BaaS (Firebase, AWS Amplify) or self-hosted Postgres without Supabase.",
560
+ "references": [
561
+ "references/conventions.md",
562
+ "references/scope.md",
563
+ "references/workflow.md",
564
+ "https://supabase.com/docs"
565
+ ],
566
+ "tokenBudget": 1200,
567
+ "tags": [
568
+ "supabase",
569
+ "database",
570
+ "backend"
571
+ ],
572
+ "repoRoles": [
573
+ "next-app",
574
+ "react-app"
575
+ ],
576
+ "requiresAny": [
577
+ {
578
+ "stack": "supabase"
579
+ },
580
+ {
581
+ "dependency": "@supabase/supabase-js"
582
+ },
583
+ {
584
+ "packageNamePattern": "@supabase/*"
585
+ }
586
+ ],
587
+ "ecosystem": "database",
588
+ "tokenEstimate": 2000,
589
+ "installMode": "copy-selected"
590
+ },
282
591
  {
283
592
  "id": "haus.sanity-patterns",
284
593
  "version": "1.0.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haus-tech/haus-workflow",
3
- "version": "0.7.0",
3
+ "version": "0.9.0",
4
4
  "description": "Haus AI workflow CLI for Claude Code.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -152,6 +152,177 @@
152
152
  "tokenEstimate": 2200,
153
153
  "installMode": "copy-selected"
154
154
  },
155
+ {
156
+ "id": "haus.i18next-patterns",
157
+ "source": "haus",
158
+ "type": "skill",
159
+ "path": "skills/i18next-patterns",
160
+ "title": "Haus i18next patterns",
161
+ "purpose": "Guide i18next setup, namespace structure, translation key conventions, and SSR-safe usage.",
162
+ "whenToUse": "Use for adding/changing translations, configuring i18next, or wiring react-i18next / next-i18next.",
163
+ "whenNotToUse": "Do not use for non-i18next translation systems or static-only content with no locale.",
164
+ "references": ["references/scope.md", "references/workflow.md", "https://www.i18next.com/"],
165
+ "tokenBudget": 1200,
166
+ "tags": ["i18next", "i18n", "frontend"],
167
+ "repoRoles": ["next-app", "react-app", "vue-app", "vite-app"],
168
+ "requiresAny": [
169
+ { "stack": "i18next" },
170
+ { "dependency": "i18next" },
171
+ { "dependency": "react-i18next" }
172
+ ],
173
+ "ecosystem": "tooling",
174
+ "tokenEstimate": 1800,
175
+ "installMode": "copy-selected"
176
+ },
177
+ {
178
+ "id": "haus.bullmq-patterns",
179
+ "source": "haus",
180
+ "type": "skill",
181
+ "path": "skills/bullmq-patterns",
182
+ "title": "Haus BullMQ patterns",
183
+ "purpose": "Guide BullMQ queue, worker, scheduler, and Redis-connection lifecycle changes.",
184
+ "whenToUse": "Use for BullMQ queue definitions, processors, schedulers, and graceful shutdown.",
185
+ "whenNotToUse": "Do not use for non-BullMQ job systems or in-process scheduling without Redis.",
186
+ "references": ["references/scope.md", "references/workflow.md", "https://docs.bullmq.io/"],
187
+ "tokenBudget": 1200,
188
+ "tags": ["bullmq", "queue", "backend"],
189
+ "repoRoles": ["vendure-app", "nestjs-api"],
190
+ "requiresAny": [
191
+ { "stack": "bullmq" },
192
+ { "dependency": "bullmq" }
193
+ ],
194
+ "ecosystem": "tooling",
195
+ "tokenEstimate": 1800,
196
+ "installMode": "copy-selected"
197
+ },
198
+ {
199
+ "id": "haus.sentry-patterns",
200
+ "source": "haus",
201
+ "type": "skill",
202
+ "path": "skills/sentry-patterns",
203
+ "title": "Haus Sentry patterns",
204
+ "purpose": "Guide Sentry SDK setup, error capture, performance tracing, and PII scrubbing.",
205
+ "whenToUse": "Use for `@sentry/*` SDK init, scope/breadcrumb config, source map upload, and PII redaction.",
206
+ "whenNotToUse": "Do not use for non-Sentry monitoring (Datadog, New Relic, etc.).",
207
+ "references": ["references/scope.md", "references/workflow.md", "https://docs.sentry.io/"],
208
+ "tokenBudget": 1200,
209
+ "tags": ["sentry", "observability", "tooling"],
210
+ "repoRoles": ["next-app", "nestjs-api", "vendure-app"],
211
+ "requiresAny": [
212
+ { "stack": "sentry" },
213
+ { "dependency": "@sentry/node" },
214
+ { "dependency": "@sentry/nextjs" },
215
+ { "packageNamePattern": "@sentry/*" }
216
+ ],
217
+ "ecosystem": "tooling",
218
+ "tokenEstimate": 1800,
219
+ "installMode": "copy-selected"
220
+ },
221
+ {
222
+ "id": "haus.prettier-setup",
223
+ "source": "haus",
224
+ "type": "skill",
225
+ "path": "skills/prettier-setup",
226
+ "title": "Haus Prettier setup",
227
+ "purpose": "Install `@haus-tech/prettier-config` and wire `.prettierrc` to the shared config.",
228
+ "whenToUse": "Use when Prettier is missing from a haus repo or when migrating an ad-hoc Prettier config to the shared package.",
229
+ "whenNotToUse": "Do not use when Prettier is already configured against `@haus-tech/prettier-config`.",
230
+ "references": ["references/scope.md", "references/workflow.md"],
231
+ "tokenBudget": 800,
232
+ "tags": ["prettier", "tooling", "quality"],
233
+ "repoRoles": [],
234
+ "requiresAny": [
235
+ { "stack": "missing-prettier" }
236
+ ],
237
+ "ecosystem": "tooling",
238
+ "tokenEstimate": 1000,
239
+ "installMode": "copy-selected"
240
+ },
241
+ {
242
+ "id": "haus.eslint-setup",
243
+ "source": "haus",
244
+ "type": "skill",
245
+ "path": "skills/eslint-setup",
246
+ "title": "Haus ESLint setup",
247
+ "purpose": "Install `@haus-tech/tech-config` and wire ESLint flat config to the shared rules.",
248
+ "whenToUse": "Use when ESLint is missing from a haus repo or migrating from a legacy `.eslintrc` to flat config.",
249
+ "whenNotToUse": "Do not use when ESLint is already configured against `@haus-tech/tech-config`.",
250
+ "references": ["references/scope.md", "references/workflow.md"],
251
+ "tokenBudget": 800,
252
+ "tags": ["eslint", "tooling", "quality"],
253
+ "repoRoles": [],
254
+ "requiresAny": [
255
+ { "stack": "missing-eslint" }
256
+ ],
257
+ "ecosystem": "tooling",
258
+ "tokenEstimate": 1000,
259
+ "installMode": "copy-selected"
260
+ },
261
+ {
262
+ "id": "haus.stripe-patterns",
263
+ "source": "haus",
264
+ "type": "skill",
265
+ "path": "skills/stripe-patterns",
266
+ "title": "Haus Stripe patterns",
267
+ "purpose": "Guide Stripe Elements, Checkout, webhook handling, and PCI-safe integration changes.",
268
+ "whenToUse": "Use for `@stripe/stripe-js` / `@stripe/react-stripe-js` integrations, payment intents, webhooks, and Checkout.",
269
+ "whenNotToUse": "Do not use for non-Stripe payment providers (Qliro, Klarna, etc.).",
270
+ "references": ["references/scope.md", "references/workflow.md", "https://docs.stripe.com/"],
271
+ "tokenBudget": 1200,
272
+ "tags": ["stripe", "payments", "tooling"],
273
+ "repoRoles": ["next-app", "react-app", "vendure-plugin"],
274
+ "requiresAny": [
275
+ { "stack": "stripe" },
276
+ { "dependency": "@stripe/stripe-js" },
277
+ { "dependency": "@stripe/react-stripe-js" }
278
+ ],
279
+ "ecosystem": "payments",
280
+ "tokenEstimate": 2000,
281
+ "installMode": "copy-selected"
282
+ },
283
+ {
284
+ "id": "haus.qliro-patterns",
285
+ "source": "haus",
286
+ "type": "skill",
287
+ "path": "skills/qliro-patterns",
288
+ "title": "Haus Qliro patterns",
289
+ "purpose": "Guide Qliro Checkout integration via @haus-tech/qliro-plugin in Vendure storefronts.",
290
+ "whenToUse": "Use for Qliro Checkout flow, order callbacks, refund handling, and merchant API config.",
291
+ "whenNotToUse": "Do not use for non-Nordic payment providers or Stripe-only flows.",
292
+ "references": ["references/scope.md", "references/workflow.md"],
293
+ "tokenBudget": 1200,
294
+ "tags": ["qliro", "payments", "tooling"],
295
+ "repoRoles": ["vendure-app", "vendure-plugin", "next-app"],
296
+ "requiresAny": [
297
+ { "stack": "qliro" },
298
+ { "dependency": "@haus-tech/qliro-plugin" }
299
+ ],
300
+ "ecosystem": "payments",
301
+ "tokenEstimate": 1800,
302
+ "installMode": "copy-selected"
303
+ },
304
+ {
305
+ "id": "haus.supabase-patterns",
306
+ "source": "haus",
307
+ "type": "skill",
308
+ "path": "skills/supabase-patterns",
309
+ "title": "Haus Supabase patterns",
310
+ "purpose": "Guide Supabase client wiring, Row-Level Security, edge functions, and auth integration.",
311
+ "whenToUse": "Use for `@supabase/supabase-js` queries, RLS policies, edge functions, and Supabase Auth flows.",
312
+ "whenNotToUse": "Do not use for non-Supabase BaaS (Firebase, AWS Amplify) or self-hosted Postgres without Supabase.",
313
+ "references": ["references/scope.md", "references/workflow.md", "https://supabase.com/docs"],
314
+ "tokenBudget": 1200,
315
+ "tags": ["supabase", "database", "backend"],
316
+ "repoRoles": ["next-app", "react-app"],
317
+ "requiresAny": [
318
+ { "stack": "supabase" },
319
+ { "dependency": "@supabase/supabase-js" },
320
+ { "packageNamePattern": "@supabase/*" }
321
+ ],
322
+ "ecosystem": "database",
323
+ "tokenEstimate": 2000,
324
+ "installMode": "copy-selected"
325
+ },
155
326
  {
156
327
  "id": "haus.sanity-patterns",
157
328
  "source": "haus",
@@ -0,0 +1,9 @@
1
+ <!-- Fixture stub — minimal valid SKILL.md for CLI tests. -->
2
+
3
+ ## Use when
4
+
5
+ Use this skill when working with the relevant technology.
6
+
7
+ ## Do not use when
8
+
9
+ Do not use for unrelated tasks.
@@ -0,0 +1,9 @@
1
+ <!-- Fixture stub — minimal valid SKILL.md for CLI tests. -->
2
+
3
+ ## Use when
4
+
5
+ Use this skill when working with the relevant technology.
6
+
7
+ ## Do not use when
8
+
9
+ Do not use for unrelated tasks.
@@ -0,0 +1,9 @@
1
+ <!-- Fixture stub — minimal valid SKILL.md for CLI tests. -->
2
+
3
+ ## Use when
4
+
5
+ Use this skill when working with the relevant technology.
6
+
7
+ ## Do not use when
8
+
9
+ Do not use for unrelated tasks.
@@ -0,0 +1,9 @@
1
+ <!-- Fixture stub — minimal valid SKILL.md for CLI tests. -->
2
+
3
+ ## Use when
4
+
5
+ Use this skill when working with the relevant technology.
6
+
7
+ ## Do not use when
8
+
9
+ Do not use for unrelated tasks.
@@ -0,0 +1,9 @@
1
+ <!-- Fixture stub — minimal valid SKILL.md for CLI tests. -->
2
+
3
+ ## Use when
4
+
5
+ Use this skill when working with the relevant technology.
6
+
7
+ ## Do not use when
8
+
9
+ Do not use for unrelated tasks.
@@ -0,0 +1,9 @@
1
+ <!-- Fixture stub — minimal valid SKILL.md for CLI tests. -->
2
+
3
+ ## Use when
4
+
5
+ Use this skill when working with the relevant technology.
6
+
7
+ ## Do not use when
8
+
9
+ Do not use for unrelated tasks.
@@ -0,0 +1,9 @@
1
+ <!-- Fixture stub — minimal valid SKILL.md for CLI tests. -->
2
+
3
+ ## Use when
4
+
5
+ Use this skill when working with the relevant technology.
6
+
7
+ ## Do not use when
8
+
9
+ Do not use for unrelated tasks.
@@ -0,0 +1,9 @@
1
+ <!-- Fixture stub — minimal valid SKILL.md for CLI tests. -->
2
+
3
+ ## Use when
4
+
5
+ Use this skill when working with the relevant technology.
6
+
7
+ ## Do not use when
8
+
9
+ Do not use for unrelated tasks.