@danieljvdm/dev-kit 0.5.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/README.md +161 -68
  2. package/dev-kit.example.jsonc +8 -3
  3. package/package.json +19 -15
  4. package/schema/dev-kit.schema.json +52 -0
  5. package/skill-sources.jsonc +8 -12
  6. package/skill-sources.lock.json +3 -9
  7. package/skills/dev-kit/SKILL.md +74 -24
  8. package/skills/effect-atom-data-fetching/SKILL.md +40 -0
  9. package/skills/effect-atom-data-fetching/agents/openai.yaml +4 -0
  10. package/skills/effect-atom-data-fetching/references/cache-lifecycle.md +72 -0
  11. package/skills/effect-atom-data-fetching/references/http-and-invalidation.md +93 -0
  12. package/skills/effect-atom-data-fetching/references/tanstack-start.md +69 -0
  13. package/skills/effect-atom-data-fetching/references/testing.md +63 -0
  14. package/skills/effect-ts/agents/openai.yaml +0 -1
  15. package/skills/effect-ts/references/audit-services.md +11 -11
  16. package/skills/effect-ts/references/guide-effect.md +56 -69
  17. package/skills/effect-ts/references/guide-error-handling.md +64 -73
  18. package/skills/effect-ts/references/guide-layers.md +187 -215
  19. package/skills/effect-ts/references/guide-observability.md +91 -116
  20. package/skills/effect-ts/references/guide-retries.md +32 -44
  21. package/skills/effect-ts/references/guide-schedule.md +26 -40
  22. package/skills/effect-ts/references/guide-schema.md +50 -57
  23. package/skills/effect-ts/references/guide-sql.md +47 -50
  24. package/skills/effect-ts/references/guide-testing.md +96 -98
  25. package/skills/effect-ts/references/guide-type-safety-and-boundaries.md +7 -7
  26. package/skills/effect-ts/references/version-and-source.md +0 -1
  27. package/src/bin/dev-kit.ts +61 -28
  28. package/src/catalog-manager.ts +86 -34
  29. package/src/catalog.ts +72 -34
  30. package/src/cli-ui.ts +20 -16
  31. package/src/effect-source.ts +49 -19
  32. package/src/effect-tsgo.ts +66 -35
  33. package/src/gitignore.ts +19 -6
  34. package/src/index.ts +12 -0
  35. package/src/manifest.ts +51 -3
  36. package/src/node-symbolic-link.ts +3 -0
  37. package/src/oxlint-plugin-effect.js +3 -0
  38. package/src/oxlint-plugin-style.d.ts +8 -0
  39. package/src/oxlint-plugin-style.js +8 -0
  40. package/src/oxlint.js +14 -0
  41. package/src/oxlint.ts +14 -0
  42. package/src/package-skill-source.ts +190 -75
  43. package/src/path-digest.ts +37 -10
  44. package/src/project-package.ts +59 -0
  45. package/src/project-process-lock.ts +19 -12
  46. package/src/project-state.ts +29 -2
  47. package/src/skill-manager.ts +134 -55
  48. package/src/skill-selector.ts +8 -2
  49. package/src/source-manifest.ts +2 -6
  50. package/src/sync.ts +491 -121
  51. package/src/vendor.ts +112 -42
  52. package/src/vite-plus-hooks.ts +174 -0
  53. package/src/vite-plus-quality.ts +49 -0
  54. package/templates/AGENTS.md +9 -0
  55. package/templates/vite-plus/github-actions-check.yml +44 -0
  56. package/templates/vite-plus/vite.config.ts +22 -0
package/README.md CHANGED
@@ -61,8 +61,8 @@ or use `--no-apply` to edit the manifest without syncing yet.
61
61
  "include": ["dev-kit", "effect"],
62
62
  "targets": {
63
63
  "agents": { "enabled": true, "mode": "copy" },
64
- "claude": { "enabled": true, "mode": "symlink" }
65
- }
64
+ "claude": { "enabled": true, "mode": "symlink" },
65
+ },
66
66
  }
67
67
  ```
68
68
 
@@ -73,18 +73,33 @@ bun x dev-kit plan
73
73
  bun x dev-kit apply
74
74
  ```
75
75
 
76
- Commit the generated `dev-kit.lock.json`, then use locked mode in your package
77
- lifecycle:
76
+ Commit the generated `dev-kit.lock.json`, then let the package lifecycle
77
+ converge owned outputs automatically when installed packages change:
78
78
 
79
79
  ```jsonc
80
80
  {
81
81
  "scripts": {
82
- "postinstall": "dev-kit apply --locked"
83
- }
82
+ "postinstall": "dev-kit apply",
83
+ },
84
84
  }
85
85
  ```
86
86
 
87
- That single postinstall applies every task enabled in `dev-kit.jsonc`.
87
+ That single postinstall applies every task enabled in `dev-kit.jsonc` and
88
+ regenerates `dev-kit.lock.json` when an intentional package upgrade changes a
89
+ bundled or package-provided skill. Ownership and conflict checks still prevent
90
+ unreviewed overwrites.
91
+
92
+ Keep strict verification in CI. Either install with lifecycle scripts disabled
93
+ before running locked mode:
94
+
95
+ ```bash
96
+ bun install --ignore-scripts
97
+ bun x dev-kit apply --locked
98
+ ```
99
+
100
+ Or allow the normal postinstall and fail CI when it leaves tracked changes.
101
+ Do not run an unlocked apply before a locked verification because that would
102
+ regenerate the drift being checked.
88
103
 
89
104
  This repository dogfoods the same flow with its committed `dev-kit.jsonc` and
90
105
  `dev-kit.lock.json`. From this source checkout, invoke the local CLI with:
@@ -100,29 +115,29 @@ the root package itself.
100
115
 
101
116
  ## Commands
102
117
 
103
- | Command | Purpose |
104
- | --- | --- |
105
- | `dev-kit` | Show selected skills and the four common next actions. |
106
- | `dev-kit init` | Create a minimal `dev-kit.jsonc`. |
107
- | `dev-kit add <skill...>` | Select and immediately install skills. |
108
- | `dev-kit remove <skill...>` | Deselect and uninstall skills safely. |
109
- | `dev-kit list [--all]` | List selected skills or browse the catalog. |
110
- | `dev-kit search <words...>` | Search names and descriptions. |
111
- | `dev-kit info <skill>` | Show description and Git or installed-package provenance. |
112
- | `dev-kit status` | Check whether the project matches its selection. |
113
- | `dev-kit sync` | Apply the current manifest. |
114
- | `dev-kit plan` | Preview project changes without writing files. |
115
- | `dev-kit apply` | Apply the manifest and update `dev-kit.lock.json`. |
116
- | `dev-kit apply --locked` | Reproduce the committed lock or fail on drift. |
117
- | `dev-kit gitignore` | Add `.repos/` and `.dev-kit/` to `.gitignore`. |
118
- | `dev-kit effect sync` | Sync `.repos/effect` to the installed Effect version. |
119
- | `dev-kit tsgo patch` | Validate and patch Effect TypeScript-Go directly. |
120
- | `dev-kit catalog refresh` | Maintainer command to approve current upstream refs. |
121
- | `dev-kit catalog add <repository>` | Inspect a repository and approve selected skills. |
122
- | `dev-kit catalog remove <source-or-skill>` | Revoke an approval (`--yes` outside a terminal). |
123
- | `dev-kit catalog list` | List approved upstream repositories. |
124
- | `dev-kit catalog info <source>` | Show a source, commit, and approved skills. |
125
- | `dev-kit catalog verify` | Verify the committed snapshot without advancing refs. |
118
+ | Command | Purpose |
119
+ | ------------------------------------------ | --------------------------------------------------------- |
120
+ | `dev-kit` | Show selected skills and the four common next actions. |
121
+ | `dev-kit init` | Create a minimal `dev-kit.jsonc`. |
122
+ | `dev-kit add <skill...>` | Select and immediately install skills. |
123
+ | `dev-kit remove <skill...>` | Deselect and uninstall skills safely. |
124
+ | `dev-kit list [--all]` | List selected skills or browse the catalog. |
125
+ | `dev-kit search <words...>` | Search names and descriptions. |
126
+ | `dev-kit info <skill>` | Show description and Git or installed-package provenance. |
127
+ | `dev-kit status` | Check whether the project matches its selection. |
128
+ | `dev-kit sync` | Apply the current manifest. |
129
+ | `dev-kit plan` | Preview project changes without writing files. |
130
+ | `dev-kit apply` | Apply the manifest and update `dev-kit.lock.json`. |
131
+ | `dev-kit apply --locked` | Reproduce the committed lock or fail on drift. |
132
+ | `dev-kit gitignore` | Add `.repos/` and `.dev-kit/` to `.gitignore`. |
133
+ | `dev-kit effect sync` | Sync `.repos/effect` to the installed Effect version. |
134
+ | `dev-kit tsgo patch` | Validate and patch Effect TypeScript-Go directly. |
135
+ | `dev-kit catalog refresh` | Maintainer command to approve current upstream refs. |
136
+ | `dev-kit catalog add <repository>` | Inspect a repository and approve selected skills. |
137
+ | `dev-kit catalog remove <source-or-skill>` | Revoke an approval (`--yes` outside a terminal). |
138
+ | `dev-kit catalog list` | List approved upstream repositories. |
139
+ | `dev-kit catalog info <source>` | Show a source, commit, and approved skills. |
140
+ | `dev-kit catalog verify` | Verify the committed snapshot without advancing refs. |
126
141
 
127
142
  Options vary by command and include `--dry-run`, `--manifest`, `--lockfile`,
128
143
  and `--project-dir`. Run any command with `--help` for its complete usage.
@@ -131,11 +146,11 @@ and `--project-dir`. Run any command with `--help` for its complete usage.
131
146
 
132
147
  Dev Kit uses three project-local files:
133
148
 
134
- | Path | Role | Commit it? |
135
- | --- | --- | --- |
136
- | `dev-kit.jsonc` | Desired skills, targets, and setup tasks. | Yes |
137
- | `dev-kit.lock.json` | Resolved content digests and setup-tool versions. | Yes |
138
- | `.dev-kit/state.json` | Local ownership receipts used during apply and cleanup. | No |
149
+ | Path | Role | Commit it? |
150
+ | --------------------- | ------------------------------------------------------- | ---------- |
151
+ | `dev-kit.jsonc` | Desired skills, targets, and setup tasks. | Yes |
152
+ | `dev-kit.lock.json` | Resolved content digests and setup-tool versions. | Yes |
153
+ | `.dev-kit/state.json` | Local ownership receipts used during apply and cleanup. | No |
139
154
 
140
155
  Skills are copied into `.agents/skills` by default. Other harness targets can
141
156
  copy or symlink those project-local skills.
@@ -162,22 +177,24 @@ tool versions. A project-local process lock also prevents concurrent applies.
162
177
  "workers-best-practices",
163
178
  "wrangler",
164
179
  "serve-sim",
165
- "@tanstack/ai#ai-core"
180
+ "@tanstack/ai#ai-core",
166
181
  ],
167
182
  "exclude": ["animation-vocabulary"],
168
183
  "setup": {
169
- "claudeInstructions": { "enabled": true }
184
+ "agentInstructions": { "enabled": true },
185
+ "claudeInstructions": { "enabled": true },
170
186
  },
171
187
  "targets": {
172
188
  "agents": { "enabled": true, "mode": "copy" },
173
189
  "claude": { "enabled": true, "mode": "symlink" },
174
- "opencode": { "enabled": false, "mode": "symlink" }
175
- }
190
+ "opencode": { "enabled": false, "mode": "symlink" },
191
+ },
176
192
  }
177
193
  ```
178
194
 
179
195
  - `dev-kit` installs guidance for operating the toolkit itself.
180
- - `effect` expands to the consolidated `effect-ts` skill.
196
+ - `effect` expands to `effect-ts` plus focused Effect Atom HTTP data-fetching
197
+ guidance.
181
198
  - Prefer individual external skills such as `workers-best-practices` and
182
199
  `wrangler`, selected after scanning the project for relevant technologies.
183
200
  - `serve-sim` selects the approved Evan Bacon simulator skill directly.
@@ -191,24 +208,85 @@ Dev Kit reserves `.repos/<source-id>` for project-local source checkouts. Run
191
208
  The patch is idempotent, preserves existing lines, and refuses symlinked
192
209
  `.gitignore` files.
193
210
 
194
- ## Claude instructions
211
+ ## Agent instructions
212
+
213
+ Enable a managed project-root instruction wrapper and a portable Claude Code
214
+ bridge in the manifest:
215
+
216
+ ```jsonc
217
+ {
218
+ "include": ["dev-kit"],
219
+ "setup": {
220
+ "agentInstructions": { "enabled": true },
221
+ "claudeInstructions": { "enabled": true },
222
+ },
223
+ }
224
+ ```
195
225
 
196
- Enable a portable Claude Code instruction bridge in the manifest:
226
+ `setup.agentInstructions` manages `AGENTS.md` as a generated wrapper with a
227
+ short description of dev-kit and a pointer to the installed `dev-kit` skill.
228
+ When the root `package.json` declares `vite-plus` directly, the wrapper also
229
+ includes Vite+'s installed `node_modules/vite-plus/AGENTS.md` instructions.
230
+ Transitive installations do not opt a project in.
231
+
232
+ `setup.claudeInstructions` manages `CLAUDE.md` as the relative symlink
233
+ `CLAUDE.md → AGENTS.md`. It can link to the generated wrapper in the same apply,
234
+ or retain the older behavior of linking to an existing regular `AGENTS.md` when
235
+ the wrapper task is disabled. Both outputs are recorded independently in the
236
+ lockfile and local ownership state. Dev Kit refuses to replace unowned files
237
+ and removes only unchanged owned outputs.
238
+
239
+ ## Vite+ Git hooks
240
+
241
+ Enable Vite+'s project-local Git hook dispatcher in the manifest:
197
242
 
198
243
  ```jsonc
199
244
  {
200
- "include": [],
245
+ "include": ["dev-kit"],
201
246
  "setup": {
202
- "claudeInstructions": { "enabled": true }
203
- }
247
+ "vitePlus": { "hooks": { "enabled": true } },
248
+ },
204
249
  }
205
250
  ```
206
251
 
207
- `dev-kit apply` requires a project-root `AGENTS.md`, then manages
208
- `CLAUDE.md` as the relative symlink `CLAUDE.md → AGENTS.md`. The link is
209
- recorded in the lockfile and local ownership state. Dev Kit refuses to replace
210
- an unowned `CLAUDE.md` and removes the link when the task is disabled only if
211
- the owned link is unchanged.
252
+ `dev-kit apply` requires `vite-plus` as an installed direct dependency and runs
253
+ its project-local `vp config --no-agent` command when hook setup is missing. The
254
+ generated `.vite-hooks/_` dispatcher is ignored by Git, so every linked
255
+ worktree converges its own copy during install while the project-owned
256
+ `.vite-hooks/pre-commit` hook remains portable. Dev Kit preserves an unrelated
257
+ `core.hooksPath` instead of replacing another hook manager. Set
258
+ `VITE_GIT_HOOKS=0` (or `HUSKY=0`) to skip the task for that invocation.
259
+
260
+ ## Vite+ quality setup
261
+
262
+ Supported Vite+/Effect repositories can explicitly opt into Dev Kit's canonical
263
+ quality configuration and GitHub Actions workflow:
264
+
265
+ ```jsonc
266
+ {
267
+ "include": ["dev-kit", "effect"],
268
+ "setup": {
269
+ "effectTsgo": { "enabled": true },
270
+ "vitePlus": {
271
+ "hooks": { "enabled": true },
272
+ "quality": { "enabled": true },
273
+ },
274
+ },
275
+ }
276
+ ```
277
+
278
+ The quality task requires direct `@danieljvdm/dev-kit`, `vite-plus`, `effect`,
279
+ `@effect/tsgo`, and native TypeScript dependencies, plus the enabled Effect
280
+ TypeScript-Go patch. It manages `vite.config.ts` and
281
+ `.github/workflows/check.yml` as digest-owned files. Existing custom files or
282
+ conflicting `check`/`typecheck` package scripts are rejected instead of merged
283
+ or overwritten. Exact canonical files can be adopted; disabling the task
284
+ removes only unchanged owned files.
285
+
286
+ The managed Vite config composes the shared Oxfmt and Oxlint presets, configures
287
+ `vp staged`, and defines `vp run check` and `vp run typecheck`. The check task
288
+ and CI run `vp fmt --check`, `vp lint`, `vp test`, then the Effect-patched
289
+ compiler through `vp run typecheck`.
212
290
 
213
291
  ## Effect source checkout
214
292
 
@@ -218,8 +296,8 @@ Enable a local checkout of the exact installed Effect release in the manifest:
218
296
  {
219
297
  "include": ["effect"],
220
298
  "setup": {
221
- "effectSource": { "enabled": true }
222
- }
299
+ "effectSource": { "enabled": true },
300
+ },
223
301
  }
224
302
  ```
225
303
 
@@ -241,8 +319,8 @@ Enable Effect TypeScript-Go in the same manifest:
241
319
  "include": ["effect"],
242
320
  "setup": {
243
321
  "effectSource": { "enabled": true },
244
- "effectTsgo": { "enabled": true }
245
- }
322
+ "effectTsgo": { "enabled": true },
323
+ },
246
324
  }
247
325
  ```
248
326
 
@@ -253,8 +331,8 @@ Pin the compatible packages in the consuming project:
253
331
  "devDependencies": {
254
332
  "@danieljvdm/dev-kit": "^0.2.0",
255
333
  "@effect/tsgo": "0.24.3",
256
- "typescript": "7.0.2"
257
- }
334
+ "typescript": "7.0.2",
335
+ },
258
336
  }
259
337
  ```
260
338
 
@@ -262,8 +340,8 @@ Pin the compatible packages in the consuming project:
262
340
  {
263
341
  "$schema": "./node_modules/@effect/tsgo/schema.json",
264
342
  "compilerOptions": {
265
- "plugins": [{ "name": "@effect/language-service" }]
266
- }
343
+ "plugins": [{ "name": "@effect/language-service" }],
344
+ },
267
345
  }
268
346
  ```
269
347
 
@@ -272,8 +350,8 @@ native TypeScript compiler. It does not download dependencies and skips an
272
350
  installation that is already patched. Use `dev-kit tsgo patch --dry-run` when
273
351
  troubleshooting the task directly.
274
352
 
275
- Package and tsconfig edits remain explicit until Dev Kit can safely own parts
276
- of shared JSONC files.
353
+ Dependency and `tsconfig.json` edits remain explicit. Enable the Vite+ quality
354
+ task only when Dev Kit can own the canonical root config and GitHub workflow.
277
355
 
278
356
  ## Installed package skills
279
357
 
@@ -345,9 +423,9 @@ This repository remains an opinionated catalog for Git-hosted skills.
345
423
  "ref": "main",
346
424
  "skillsPath": "skills",
347
425
  "include": ["*"],
348
- "licensePath": "LICENSE"
349
- }
350
- ]
426
+ "licensePath": "LICENSE",
427
+ },
428
+ ],
351
429
  }
352
430
  ```
353
431
 
@@ -404,7 +482,18 @@ export default defineConfig({
404
482
 
405
483
  Use `lint.extends` rather than a shallow object spread so Vite+ composes the
406
484
  nested plugin and rule configuration correctly. Oxfmt has no `extends`, so
407
- spread its configuration before project-local formatter options.
485
+ spread its configuration before project-local formatter options. The shared
486
+ lint preset enables `typeAware` for semantic lint rules but leaves `typeCheck`
487
+ disabled. The opt-in `setup.vitePlus.quality` task manages this composition for
488
+ repositories that use the canonical config; custom configs keep the task
489
+ disabled and compose the exports manually. Effect TypeScript-Go projects run:
490
+
491
+ ```sh
492
+ vp fmt --check
493
+ vp lint
494
+ vp test
495
+ vp run typecheck
496
+ ```
408
497
 
409
498
  Standalone projects import the same objects from their native config files:
410
499
 
@@ -428,7 +517,12 @@ export default defineConfig({
428
517
  });
429
518
  ```
430
519
 
431
- The Oxlint preset also registers the shared `effect` JavaScript plugin. Effect
520
+ The Oxlint preset enables `stylistic/padding-line-between-statements`: adjacent
521
+ variable declarations remain grouped, while the next logical statement and
522
+ all `return` statements require a separating blank line. The rule is fixable,
523
+ so `vp lint --fix` repairs missing spacing automatically.
524
+
525
+ The preset also registers the shared `effect` JavaScript plugin. Effect
432
526
  projects opt into its rules in path-specific overrides, for example
433
527
  `effect/no-effect-run`, `effect/no-unsafe-promise`, and
434
528
  `effect/no-untyped-throw`. The package exports the plugin directly from
@@ -439,7 +533,6 @@ consumer-scoped because application and host boundaries differ by repository.
439
533
  ## Development
440
534
 
441
535
  ```bash
442
- bun install
443
- bun run check
444
- vitest run --config vitest.config.ts
536
+ vp install
537
+ vp run check
445
538
  ```
@@ -2,13 +2,18 @@
2
2
  "$schema": "./schema/dev-kit.schema.json",
3
3
  "include": ["dev-kit", "effect"],
4
4
  "setup": {
5
+ "agentInstructions": { "enabled": true },
5
6
  "claudeInstructions": { "enabled": true },
6
7
  "effectSource": { "enabled": true },
7
- "effectTsgo": { "enabled": true }
8
+ "effectTsgo": { "enabled": true },
9
+ "vitePlus": {
10
+ "hooks": { "enabled": true },
11
+ "quality": { "enabled": true },
12
+ },
8
13
  },
9
14
  "targets": {
10
15
  "agents": { "enabled": true, "mode": "copy" },
11
16
  "claude": { "enabled": true, "mode": "symlink" },
12
- "opencode": { "enabled": false, "mode": "symlink" }
13
- }
17
+ "opencode": { "enabled": false, "mode": "symlink" },
18
+ },
14
19
  }
package/package.json CHANGED
@@ -1,17 +1,27 @@
1
1
  {
2
2
  "name": "@danieljvdm/dev-kit",
3
- "version": "0.5.0",
3
+ "version": "0.7.0",
4
4
  "private": false,
5
- "type": "module",
6
5
  "description": "Declarative project development toolkit with portable agent skills.",
6
+ "license": "MIT",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "git+https://github.com/danieljvdm/dev-kit.git"
10
10
  },
11
- "license": "MIT",
12
11
  "bin": {
13
12
  "dev-kit": "bin/dev-kit.mjs"
14
13
  },
14
+ "files": [
15
+ "dev-kit.example.jsonc",
16
+ "bin/",
17
+ "schema/",
18
+ "skills/",
19
+ "skill-sources.jsonc",
20
+ "skill-sources.lock.json",
21
+ "src/",
22
+ "templates/"
23
+ ],
24
+ "type": "module",
15
25
  "exports": {
16
26
  ".": {
17
27
  "types": "./src/index.ts",
@@ -31,38 +41,32 @@
31
41
  "./oxlint-plugin-effect": {
32
42
  "types": "./src/oxlint-plugin-effect.d.ts",
33
43
  "default": "./src/oxlint-plugin-effect.js"
44
+ },
45
+ "./oxlint-plugin-style": {
46
+ "types": "./src/oxlint-plugin-style.d.ts",
47
+ "default": "./src/oxlint-plugin-style.js"
34
48
  }
35
49
  },
36
- "files": [
37
- "dev-kit.example.jsonc",
38
- "bin/",
39
- "schema/",
40
- "skills/",
41
- "skill-sources.jsonc",
42
- "skill-sources.lock.json",
43
- "src/"
44
- ],
45
50
  "scripts": {
46
51
  "prepare": "./bin/dev-kit.mjs apply --locked",
47
52
  "dev-kit": "./bin/dev-kit.mjs",
48
53
  "changeset": "changeset",
49
54
  "version-packages": "changeset version && ./bin/dev-kit.mjs apply",
50
55
  "release": "changeset publish",
51
- "check": "tsc --noEmit && vp lint",
52
56
  "lint": "vp lint",
53
57
  "plan": "./bin/dev-kit.mjs plan",
54
58
  "apply": "./bin/dev-kit.mjs apply",
55
59
  "gitignore": "./bin/dev-kit.mjs gitignore",
56
60
  "effect:sync": "./bin/dev-kit.mjs effect sync",
57
- "test": "vitest run --config vitest.config.ts",
61
+ "test": "vp test",
58
62
  "test:watch": "vitest --config vitest.config.ts",
59
63
  "tsgo:patch": "./bin/dev-kit.mjs tsgo patch",
60
- "typecheck": "tsc --noEmit",
61
64
  "catalog:refresh": "./bin/dev-kit.mjs catalog refresh",
62
65
  "catalog:check": "./bin/dev-kit.mjs catalog verify"
63
66
  },
64
67
  "dependencies": {
65
68
  "@effect/platform-node": "4.0.0-beta.102",
69
+ "@stylistic/eslint-plugin": "5.10.0",
66
70
  "effect": "4.0.0-beta.102",
67
71
  "jsonc-parser": "3.3.1",
68
72
  "tsx": "4.22.4"
@@ -34,6 +34,9 @@
34
34
  "type": "object",
35
35
  "additionalProperties": false,
36
36
  "properties": {
37
+ "agentInstructions": {
38
+ "$ref": "#/$defs/agentInstructionsSetup"
39
+ },
37
40
  "claudeInstructions": {
38
41
  "$ref": "#/$defs/claudeInstructionsSetup"
39
42
  },
@@ -42,6 +45,9 @@
42
45
  },
43
46
  "effectTsgo": {
44
47
  "$ref": "#/$defs/effectTsgoSetup"
48
+ },
49
+ "vitePlus": {
50
+ "$ref": "#/$defs/vitePlusSetup"
45
51
  }
46
52
  },
47
53
  "default": {}
@@ -61,6 +67,17 @@
61
67
  },
62
68
  "required": ["include"],
63
69
  "$defs": {
70
+ "agentInstructionsSetup": {
71
+ "description": "Manage a project-root AGENTS.md wrapper with dev-kit guidance and conditional tool instructions.",
72
+ "type": "object",
73
+ "additionalProperties": false,
74
+ "properties": {
75
+ "enabled": {
76
+ "type": "boolean",
77
+ "default": false
78
+ }
79
+ }
80
+ },
64
81
  "claudeInstructionsSetup": {
65
82
  "description": "Manage CLAUDE.md as a relative symlink to the project-root AGENTS.md file.",
66
83
  "type": "object",
@@ -119,6 +136,41 @@
119
136
  }
120
137
  }
121
138
  },
139
+ "vitePlusSetup": {
140
+ "description": "Manage project-local Vite+ setup tasks.",
141
+ "type": "object",
142
+ "additionalProperties": false,
143
+ "properties": {
144
+ "hooks": {
145
+ "$ref": "#/$defs/vitePlusHooksSetup"
146
+ },
147
+ "quality": {
148
+ "$ref": "#/$defs/vitePlusQualitySetup"
149
+ }
150
+ }
151
+ },
152
+ "vitePlusHooksSetup": {
153
+ "description": "Run the installed Vite+ configurator to converge Git hook dispatchers in each worktree.",
154
+ "type": "object",
155
+ "additionalProperties": false,
156
+ "properties": {
157
+ "enabled": {
158
+ "type": "boolean",
159
+ "default": false
160
+ }
161
+ }
162
+ },
163
+ "vitePlusQualitySetup": {
164
+ "description": "Manage the canonical Vite+ quality config and GitHub Actions workflow for supported Effect TypeScript-Go repositories.",
165
+ "type": "object",
166
+ "additionalProperties": false,
167
+ "properties": {
168
+ "enabled": {
169
+ "type": "boolean",
170
+ "default": false
171
+ }
172
+ }
173
+ },
122
174
  "target": {
123
175
  "type": "object",
124
176
  "additionalProperties": false,
@@ -14,12 +14,10 @@
14
14
  "improve-animations",
15
15
  "pick-ui-library",
16
16
  "prototype",
17
- "review-animations"
17
+ "review-animations",
18
18
  ],
19
19
  "licensePath": "LICENSE",
20
- "stripFrontmatter": [
21
- "disable-model-invocation"
22
- ]
20
+ "stripFrontmatter": ["disable-model-invocation"],
23
21
  },
24
22
  {
25
23
  "id": "cloudflare-skills",
@@ -37,19 +35,17 @@
37
35
  "turnstile-spin",
38
36
  "web-perf",
39
37
  "workers-best-practices",
40
- "wrangler"
38
+ "wrangler",
41
39
  ],
42
- "licensePath": "LICENSE"
40
+ "licensePath": "LICENSE",
43
41
  },
44
42
  {
45
43
  "id": "evanbacon-serve-sim",
46
44
  "repository": "https://github.com/EvanBacon/serve-sim.git",
47
45
  "ref": "main",
48
46
  "skillsPath": "skills",
49
- "include": [
50
- "serve-sim"
51
- ],
52
- "licensePath": "LICENSE"
53
- }
54
- ]
47
+ "include": ["serve-sim"],
48
+ "licensePath": "LICENSE",
49
+ },
50
+ ],
55
51
  }
@@ -48,9 +48,7 @@
48
48
  "review-animations": "sha256:d78c312f4102c0243fb524f85d1fd999e8c413a5afbef9ac3c7fe054fbb84570"
49
49
  },
50
50
  "licensePath": "LICENSE",
51
- "stripFrontmatter": [
52
- "disable-model-invocation"
53
- ]
51
+ "stripFrontmatter": ["disable-model-invocation"]
54
52
  },
55
53
  {
56
54
  "id": "cloudflare-skills",
@@ -118,12 +116,8 @@
118
116
  "ref": "main",
119
117
  "resolved": "14ad57ff922551bf7be81e907ddfcfa6191e64f2",
120
118
  "skillsPath": "skills",
121
- "include": [
122
- "serve-sim"
123
- ],
124
- "skills": [
125
- "serve-sim"
126
- ],
119
+ "include": ["serve-sim"],
120
+ "skills": ["serve-sim"],
127
121
  "descriptions": {
128
122
  "serve-sim": "Control and stream a running iOS, iPad, or Apple Watch Simulator with npx serve-sim. Use for simulator preview, taps, gestures, hardware buttons, rotation, camera injection, permissions, accessibility, and CoreAnimation debug."
129
123
  },