@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.
- package/README.md +161 -68
- package/dev-kit.example.jsonc +8 -3
- package/package.json +19 -15
- package/schema/dev-kit.schema.json +52 -0
- package/skill-sources.jsonc +8 -12
- package/skill-sources.lock.json +3 -9
- package/skills/dev-kit/SKILL.md +74 -24
- package/skills/effect-atom-data-fetching/SKILL.md +40 -0
- package/skills/effect-atom-data-fetching/agents/openai.yaml +4 -0
- package/skills/effect-atom-data-fetching/references/cache-lifecycle.md +72 -0
- package/skills/effect-atom-data-fetching/references/http-and-invalidation.md +93 -0
- package/skills/effect-atom-data-fetching/references/tanstack-start.md +69 -0
- package/skills/effect-atom-data-fetching/references/testing.md +63 -0
- package/skills/effect-ts/agents/openai.yaml +0 -1
- package/skills/effect-ts/references/audit-services.md +11 -11
- package/skills/effect-ts/references/guide-effect.md +56 -69
- package/skills/effect-ts/references/guide-error-handling.md +64 -73
- package/skills/effect-ts/references/guide-layers.md +187 -215
- package/skills/effect-ts/references/guide-observability.md +91 -116
- package/skills/effect-ts/references/guide-retries.md +32 -44
- package/skills/effect-ts/references/guide-schedule.md +26 -40
- package/skills/effect-ts/references/guide-schema.md +50 -57
- package/skills/effect-ts/references/guide-sql.md +47 -50
- package/skills/effect-ts/references/guide-testing.md +96 -98
- package/skills/effect-ts/references/guide-type-safety-and-boundaries.md +7 -7
- package/skills/effect-ts/references/version-and-source.md +0 -1
- package/src/bin/dev-kit.ts +61 -28
- package/src/catalog-manager.ts +86 -34
- package/src/catalog.ts +72 -34
- package/src/cli-ui.ts +20 -16
- package/src/effect-source.ts +49 -19
- package/src/effect-tsgo.ts +66 -35
- package/src/gitignore.ts +19 -6
- package/src/index.ts +12 -0
- package/src/manifest.ts +51 -3
- package/src/node-symbolic-link.ts +3 -0
- package/src/oxlint-plugin-effect.js +3 -0
- package/src/oxlint-plugin-style.d.ts +8 -0
- package/src/oxlint-plugin-style.js +8 -0
- package/src/oxlint.js +14 -0
- package/src/oxlint.ts +14 -0
- package/src/package-skill-source.ts +190 -75
- package/src/path-digest.ts +37 -10
- package/src/project-package.ts +59 -0
- package/src/project-process-lock.ts +19 -12
- package/src/project-state.ts +29 -2
- package/src/skill-manager.ts +134 -55
- package/src/skill-selector.ts +8 -2
- package/src/source-manifest.ts +2 -6
- package/src/sync.ts +491 -121
- package/src/vendor.ts +112 -42
- package/src/vite-plus-hooks.ts +174 -0
- package/src/vite-plus-quality.ts +49 -0
- package/templates/AGENTS.md +9 -0
- package/templates/vite-plus/github-actions-check.yml +44 -0
- 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
|
|
77
|
-
|
|
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
|
|
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
|
|
104
|
-
|
|
|
105
|
-
| `dev-kit`
|
|
106
|
-
| `dev-kit init`
|
|
107
|
-
| `dev-kit add <skill...>`
|
|
108
|
-
| `dev-kit remove <skill...>`
|
|
109
|
-
| `dev-kit list [--all]`
|
|
110
|
-
| `dev-kit search <words...>`
|
|
111
|
-
| `dev-kit info <skill>`
|
|
112
|
-
| `dev-kit status`
|
|
113
|
-
| `dev-kit sync`
|
|
114
|
-
| `dev-kit plan`
|
|
115
|
-
| `dev-kit apply`
|
|
116
|
-
| `dev-kit apply --locked`
|
|
117
|
-
| `dev-kit gitignore`
|
|
118
|
-
| `dev-kit effect sync`
|
|
119
|
-
| `dev-kit tsgo patch`
|
|
120
|
-
| `dev-kit catalog refresh`
|
|
121
|
-
| `dev-kit catalog add <repository>`
|
|
122
|
-
| `dev-kit catalog remove <source-or-skill>` | Revoke an approval (`--yes` outside a terminal).
|
|
123
|
-
| `dev-kit catalog list`
|
|
124
|
-
| `dev-kit catalog info <source>`
|
|
125
|
-
| `dev-kit catalog verify`
|
|
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
|
|
135
|
-
|
|
|
136
|
-
| `dev-kit.jsonc`
|
|
137
|
-
| `dev-kit.lock.json`
|
|
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
|
-
"
|
|
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
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
"
|
|
203
|
-
}
|
|
247
|
+
"vitePlus": { "hooks": { "enabled": true } },
|
|
248
|
+
},
|
|
204
249
|
}
|
|
205
250
|
```
|
|
206
251
|
|
|
207
|
-
`dev-kit apply` requires
|
|
208
|
-
`
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
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
|
-
|
|
276
|
-
|
|
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
|
|
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
|
-
|
|
443
|
-
|
|
444
|
-
vitest run --config vitest.config.ts
|
|
536
|
+
vp install
|
|
537
|
+
vp run check
|
|
445
538
|
```
|
package/dev-kit.example.jsonc
CHANGED
|
@@ -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.
|
|
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": "
|
|
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,
|
package/skill-sources.jsonc
CHANGED
|
@@ -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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
]
|
|
47
|
+
"include": ["serve-sim"],
|
|
48
|
+
"licensePath": "LICENSE",
|
|
49
|
+
},
|
|
50
|
+
],
|
|
55
51
|
}
|
package/skill-sources.lock.json
CHANGED
|
@@ -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
|
-
|
|
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
|
},
|