@dzhechkov/skills-feature-adr 1.3.62 → 1.3.64

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.
@@ -0,0 +1,349 @@
1
+ {
2
+ "manifest": {
3
+ "version": 1,
4
+ "pack": "skills-feature-adr",
5
+ "files": [
6
+ {
7
+ "path": "CHANGELOG.md",
8
+ "sha256": "e4f50d4f757f877b54c8d25dfc1321776545be4cb814d5f17ee1128ee2320982"
9
+ },
10
+ {
11
+ "path": "LICENSE",
12
+ "sha256": "ec1ddbebcf25c3eb0423b8d7d5ebcdf9adda31455ac7257b3d156978880866cf"
13
+ },
14
+ {
15
+ "path": "README.md",
16
+ "sha256": "b3095a1ad16fe17c103fb167e2844dabfe61f2a67dde3f797521c7916f41ddb3"
17
+ },
18
+ {
19
+ "path": "bin/cli.js",
20
+ "sha256": "a210174d6b63d053f7744757972d31acb0f4d9c59f8dacff7b62872a19ebd31a"
21
+ },
22
+ {
23
+ "path": "docs/team-onboarding.md",
24
+ "sha256": "8af05fe3e4983ebff22ea9a94fc0962a27f193b09df91dc717b0dc1af1cc4169"
25
+ },
26
+ {
27
+ "path": "package.json",
28
+ "sha256": "98aaa022a135e9cf92c534e191c96bdcd0254bf1ea8d7aba42745a82071ad4c2"
29
+ },
30
+ {
31
+ "path": "scripts/sync-templates.js",
32
+ "sha256": "790d53c2e98a4b9aa589c72c6394c0e3aeb6b99d4a0bade4c881d2a8d11cf12c"
33
+ },
34
+ {
35
+ "path": "sources.json",
36
+ "sha256": "2e7f84f7fa7e97aa38514a94e920747e648a6f2ad0a503fc50e7519658116065"
37
+ },
38
+ {
39
+ "path": "src/cli.js",
40
+ "sha256": "ec1ef8f3f83f386b671cdf7086778126c8a990d90c1c84049636b9399708bbe7"
41
+ },
42
+ {
43
+ "path": "src/commands/doctor.js",
44
+ "sha256": "ee5e265f42655d58f55b75db8b5340f37b37c8cb3d62281762f1ea34b8cf125d"
45
+ },
46
+ {
47
+ "path": "src/commands/init.js",
48
+ "sha256": "fbc3853435048c5b632119bf37cc702c4c305cae7de656548891295f6b9e8947"
49
+ },
50
+ {
51
+ "path": "src/commands/list.js",
52
+ "sha256": "148c77553229d9e5c80f71b46bf9f20ff9c81e378027bcd7b50a979387cd2303"
53
+ },
54
+ {
55
+ "path": "src/commands/remove.js",
56
+ "sha256": "4b18dbb733dde58c8f94978c2c3386505fd838530c0860dca74224699dbb5902"
57
+ },
58
+ {
59
+ "path": "src/commands/update.js",
60
+ "sha256": "e75d417fd1544f94c2cf9d2cfd0e11e5bb72ac1a8d38a97c3ba3858ca2548c60"
61
+ },
62
+ {
63
+ "path": "src/utils.js",
64
+ "sha256": "b1041465cb70877878d7d4b79bfec3f52ba3e64df5bbcbd33c8eaccf63c3e041"
65
+ },
66
+ {
67
+ "path": "templates/.claude/commands/feature-adr.md",
68
+ "sha256": "b34bc3d276648b8ad2426619572a50b173e6d4e57bd922c8bd26827deda709d7"
69
+ },
70
+ {
71
+ "path": "templates/.claude/commands/harvest.md",
72
+ "sha256": "4f8bf9b11d2d237f60e423c522295bea72334829ddce43b100f5c6d49dcd7f07"
73
+ },
74
+ {
75
+ "path": "templates/.claude/rules/feature-adr-conventions.md",
76
+ "sha256": "a20293e040686646e9271c16b64fbe5a47645a7717d4de13e9e130ea1c77b815"
77
+ },
78
+ {
79
+ "path": "templates/.claude/rules/feature-adr-ultracode.md",
80
+ "sha256": "7a27bc765ae607ad6f7f9396d9d4cf25bf18f3ed7746e83ef7099f25455e1446"
81
+ },
82
+ {
83
+ "path": "templates/.claude/rules/reward-learning.md",
84
+ "sha256": "cfe0b27e71b3f58bd1e35ad38c658cd708caa9e2f8fbb1e623f24d50a90d92fe"
85
+ },
86
+ {
87
+ "path": "templates/.claude/shards/feature-adr.shard.md",
88
+ "sha256": "e1663c2aa297ef2eedb777c2ade06462e3fdffd1083112d99743d041b66f6a8e"
89
+ },
90
+ {
91
+ "path": "templates/.claude/skills/challenge-panel/SKILL.md",
92
+ "sha256": "4fb6db563bff2fdb2a7c5b50ba44763a2cd886a4cb8ad8f39c10841d5fadcae8"
93
+ },
94
+ {
95
+ "path": "templates/.claude/skills/code-critic/SKILL.md",
96
+ "sha256": "7705b43e0dee1c70d913139fa57b1fba6a60aba29ead71a762c85def4a9aadae"
97
+ },
98
+ {
99
+ "path": "templates/.claude/skills/code-impl/SKILL.md",
100
+ "sha256": "325c31e7b81b6c8ed34252261634ebcc662a83765873e9a2951ef4c1474462fa"
101
+ },
102
+ {
103
+ "path": "templates/.claude/skills/code-skills-creator/SKILL.md",
104
+ "sha256": "2c47426a0637a8d120d132021a5319db991441d6b15a5f62d909f12bf8eafb53"
105
+ },
106
+ {
107
+ "path": "templates/.claude/skills/configure-feature-adr/SKILL.md",
108
+ "sha256": "e9ce4e5bc2b218688a40fe51a7c75c3af51af3e3aaf9857738e85355b02bf68b"
109
+ },
110
+ {
111
+ "path": "templates/.claude/skills/explore/SKILL.md",
112
+ "sha256": "2473e7961845db0d64566cd42627b374d1830664b9e302058a1b1aa466bc7361"
113
+ },
114
+ {
115
+ "path": "templates/.claude/skills/explore/references/questioning-techniques.md",
116
+ "sha256": "ec0dd00871d3abe950f9cf375216a43043827897166c4165c3fa581839851195"
117
+ },
118
+ {
119
+ "path": "templates/.claude/skills/explore/references/task-brief-templates.md",
120
+ "sha256": "4e9292479e120afce944b747bb7b4a7226c41e9880708d620de3ea4fa4ef0249"
121
+ },
122
+ {
123
+ "path": "templates/.claude/skills/feature-adr/SKILL.md",
124
+ "sha256": "c422d1e2b50cf7b8bd56cd5d886d96af30d8bf33a468b925396f395ebf32de53"
125
+ },
126
+ {
127
+ "path": "templates/.claude/skills/feature-adr/examples/sample-feature-output.md",
128
+ "sha256": "bb74b13f7a22a38bd146bb0baa12da4916214af586e74d721c578bdea750e933"
129
+ },
130
+ {
131
+ "path": "templates/.claude/skills/feature-adr/modules/00-complexity-router.md",
132
+ "sha256": "a1275bd960ddff1c61352f96d8b7a4249371190766f08d1778f5a54f98350950"
133
+ },
134
+ {
135
+ "path": "templates/.claude/skills/feature-adr/modules/01-requirements.md",
136
+ "sha256": "7b599efd3122be7ce2247bba1c9204e1b3c09322ad56ed4cedcbd4dd471ed41e"
137
+ },
138
+ {
139
+ "path": "templates/.claude/skills/feature-adr/modules/02-research.md",
140
+ "sha256": "55099189082d872d08a9d40b11782d8d08256955cbea617aa457756eb9fa1a07"
141
+ },
142
+ {
143
+ "path": "templates/.claude/skills/feature-adr/modules/03-adr.md",
144
+ "sha256": "742f1d362fd4d1b1b731fe81b7aa794886aa58126005ad67ef0a27775c80f082"
145
+ },
146
+ {
147
+ "path": "templates/.claude/skills/feature-adr/modules/03.5-ideation-swarm.md",
148
+ "sha256": "220e06d0d67643f09df868df32d1ec3acdc205653a5ef977d171791d9ce77b74"
149
+ },
150
+ {
151
+ "path": "templates/.claude/skills/feature-adr/modules/04-ddd.md",
152
+ "sha256": "c6cf98ab0dd80183ad507aca12edf164ee79a5fb60eee84d674cf73fe3a68646"
153
+ },
154
+ {
155
+ "path": "templates/.claude/skills/feature-adr/modules/05-architecture.md",
156
+ "sha256": "227ec469154348afc414ef4751cc34ea5bb87ecb063cf196eff254615a6b5e00"
157
+ },
158
+ {
159
+ "path": "templates/.claude/skills/feature-adr/modules/06-implementation-plan.md",
160
+ "sha256": "7a6c830d63f73953a96f1cb125ab88b7d5c24b2d4b61e997d6d3dfea8262d495"
161
+ },
162
+ {
163
+ "path": "templates/.claude/skills/feature-adr/modules/07-code.md",
164
+ "sha256": "c427a0abacb4bc1d969d9f47739ce2aeff286a66da73eab67bf042d5c4dc9a59"
165
+ },
166
+ {
167
+ "path": "templates/.claude/skills/feature-adr/modules/08-qe.md",
168
+ "sha256": "0d314eaeb69a761f68c4beb1ab7df0a2da1964538a8eb33c99cb9b819598d255"
169
+ },
170
+ {
171
+ "path": "templates/.claude/skills/feature-adr/modules/09-fleet-qe.md",
172
+ "sha256": "67a88305ce6ca5b70d235f11c820a319dbdd0dfb50cea4b152c72377be12d2d5"
173
+ },
174
+ {
175
+ "path": "templates/.claude/skills/feature-adr/modules/10-delivery-gate.md",
176
+ "sha256": "6e5ec81366c50da91873b57d52eaa714cbea3a23352b65f6116998a851839b8e"
177
+ },
178
+ {
179
+ "path": "templates/.claude/skills/feature-adr/references/adr-template.md",
180
+ "sha256": "32cb1b23cde7a72d4af5683f54f95938acc568b2fec7e6fdd4c215d2e4d00b69"
181
+ },
182
+ {
183
+ "path": "templates/.claude/skills/feature-adr/references/agentic-qe/README.md",
184
+ "sha256": "fa9488302d0aaa4f3174c387f105f41f3fb5f66b2d9b89de8c27a1ebee3b359c"
185
+ },
186
+ {
187
+ "path": "templates/.claude/skills/feature-adr/references/agentic-qe/brutal-honesty-review.md",
188
+ "sha256": "831bb03478dcda3d260fcee31732cceb37e28af4e3d1e5cc252b6602df451e13"
189
+ },
190
+ {
191
+ "path": "templates/.claude/skills/feature-adr/references/agentic-qe/chaos-engineering-resilience.md",
192
+ "sha256": "2f6a1371957d8f0d80290c0b7579aa0405010cf24550dd4b8bdf21829696f16d"
193
+ },
194
+ {
195
+ "path": "templates/.claude/skills/feature-adr/references/agentic-qe/code-goal-planner.md",
196
+ "sha256": "6923711f4630073b9de7314f2aa9a94993c4f40bf29dfa728995e7dc14a497ac"
197
+ },
198
+ {
199
+ "path": "templates/.claude/skills/feature-adr/references/agentic-qe/enterprise-integration-testing.md",
200
+ "sha256": "10d66f5f371dcdb28069baa10a01f63e2ddd07c623e6a5ad354d255a39956f29"
201
+ },
202
+ {
203
+ "path": "templates/.claude/skills/feature-adr/references/agentic-qe/mutation-testing.md",
204
+ "sha256": "293a26497acbf33255b62ed48dc0b9db7419600e2871cb11ce7fc1ebd7a7b15f"
205
+ },
206
+ {
207
+ "path": "templates/.claude/skills/feature-adr/references/agentic-qe/performance-testing.md",
208
+ "sha256": "ae04d14c552988d0f19d56ba0ad125d477ebcdeca4945ef08e65a808e0c8622d"
209
+ },
210
+ {
211
+ "path": "templates/.claude/skills/feature-adr/references/agentic-qe/qcsd-ideation-swarm.md",
212
+ "sha256": "b2717c5d95dcca7102cfb995ace206656931e355b2ed536db52b7ff8bb935906"
213
+ },
214
+ {
215
+ "path": "templates/.claude/skills/feature-adr/references/agentic-qe/qcsd-production-swarm.md",
216
+ "sha256": "d75d23eaff754d2d8b547fd858dbb70fe2b207c5d055749ec82a0acae2c2c9ef"
217
+ },
218
+ {
219
+ "path": "templates/.claude/skills/feature-adr/references/agentic-qe/qe-coverage-analysis.md",
220
+ "sha256": "e526595fc48a893518e4d48e12644c40a50fbf86bd17c81ae4638507ed71d77d"
221
+ },
222
+ {
223
+ "path": "templates/.claude/skills/feature-adr/references/agentic-qe/qe-requirements-validation.md",
224
+ "sha256": "53612e7b8141b5c453b40d5583160f07903c530f0fe379899e897ddd4c68abea"
225
+ },
226
+ {
227
+ "path": "templates/.claude/skills/feature-adr/references/agentic-qe/regression-testing.md",
228
+ "sha256": "f040fdfa356c99e7a444e26c2c62e3308ed68b6ce498e2a91d5da8d9393c971c"
229
+ },
230
+ {
231
+ "path": "templates/.claude/skills/feature-adr/references/agentic-qe/risk-based-testing.md",
232
+ "sha256": "72ab0c133601a8369e9ed1e8a7d9494ec7486e18909062b685caa63ca185aea5"
233
+ },
234
+ {
235
+ "path": "templates/.claude/skills/feature-adr/references/agentic-qe/security-testing.md",
236
+ "sha256": "486cb8b560153345b4efcd31ac0b47dc1ece642745add61720937c1bc1717606"
237
+ },
238
+ {
239
+ "path": "templates/.claude/skills/feature-adr/references/agentic-qe/shift-left-testing.md",
240
+ "sha256": "e716a9caf2c701c14c4fa69d297047c420494d6d34d392552801025ce81e623a"
241
+ },
242
+ {
243
+ "path": "templates/.claude/skills/feature-adr/references/agentic-qe/tdd-london-chicago.md",
244
+ "sha256": "568c6807674aaa5ff47015da8f513485b0f62c71eac0e15f0fc6b96d4aa9370f"
245
+ },
246
+ {
247
+ "path": "templates/.claude/skills/feature-adr/references/c4-template.md",
248
+ "sha256": "bbe4c4ee3e8736c53ff8364a0f65718ec5a99e1c2901e0677bff06a8d342f0e5"
249
+ },
250
+ {
251
+ "path": "templates/.claude/skills/feature-adr/references/complexity-matrix.md",
252
+ "sha256": "5cba6a10eeb65071c8c081f897adbcbcda34760d7f361c99d3e1d9243c708b71"
253
+ },
254
+ {
255
+ "path": "templates/.claude/skills/feature-adr/references/qe-checklist.md",
256
+ "sha256": "238d8896996dc53559f58b24aa7eca966cc8845c3b9dda6d982c717c657b91e4"
257
+ },
258
+ {
259
+ "path": "templates/.claude/skills/frontend-design/LICENSE.txt",
260
+ "sha256": "0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594"
261
+ },
262
+ {
263
+ "path": "templates/.claude/skills/frontend-design/SKILL.md",
264
+ "sha256": "c9e93c1b95b99a9e120b93d7683afa804713f98ce44bf29ba6d24e9ea1b44aee"
265
+ },
266
+ {
267
+ "path": "templates/.claude/skills/knowledge-extractor/SKILL.md",
268
+ "sha256": "2b7e6f3a7037104b8fa23b86c113733e047a9a9f0e8b4f16c4cde8a6341c8525"
269
+ },
270
+ {
271
+ "path": "templates/.claude/skills/knowledge-extractor/modules/01-extract.md",
272
+ "sha256": "95ffc66908dcc2ef7c27816773de35cbdf2476b7c816066631738c238c792a1a"
273
+ },
274
+ {
275
+ "path": "templates/.claude/skills/knowledge-extractor/modules/02-classify.md",
276
+ "sha256": "c6a9fc61a333cc986dfac0e12ff92d888677cc0855b0c4cdbd4eb90645275523"
277
+ },
278
+ {
279
+ "path": "templates/.claude/skills/knowledge-extractor/modules/03-gate.md",
280
+ "sha256": "fb7268841e48152dc353b29fae27a6a5e43afc39cef44b7f2eef1f092b3044cf"
281
+ },
282
+ {
283
+ "path": "templates/.claude/skills/knowledge-extractor/modules/04-integrate.md",
284
+ "sha256": "e94b5d017078aad5c88652da1054b2f6e33020b7eca5419c9d315f127006580c"
285
+ },
286
+ {
287
+ "path": "templates/.claude/skills/knowledge-extractor/references/artifact-categories.md",
288
+ "sha256": "97cc06cceedabba1d739bf13129f590cda18c75015c2ac643213f540ec2ca1eb"
289
+ },
290
+ {
291
+ "path": "templates/.claude/skills/knowledge-extractor/references/maturity-model.md",
292
+ "sha256": "5f6060a13cb2a59dc1d8b03cb964a27a616fa426efca893c68929fea4d9c681d"
293
+ },
294
+ {
295
+ "path": "templates/.claude/skills/knowledge-extractor/references/quality-gates.md",
296
+ "sha256": "e8cf0703125f32a820f6cceb1baa2defd903df482ea7bc1a7470c3f5198c794e"
297
+ },
298
+ {
299
+ "path": "templates/.claude/skills/knowledge-extractor/templates/artifact-card.md",
300
+ "sha256": "2f962bde871068104e80243cb898996af59691de4fad3e13b48f8ed5b73cfe8c"
301
+ },
302
+ {
303
+ "path": "templates/.claude/skills/knowledge-extractor/templates/harvest-report.md",
304
+ "sha256": "2b179bd25e7158e4eb62d07d0ad782c678001042eb520178147125f76b46447f"
305
+ },
306
+ {
307
+ "path": "templates/.claude/skills/problem-solver-enhanced/SKILL.md",
308
+ "sha256": "031378aa2e10c98928e35de07d454135e73550cd0c49f0cd886d53e4208d6b9f"
309
+ },
310
+ {
311
+ "path": "templates/.claude/skills/system-grill/JOURNAL-TEMPLATE.md",
312
+ "sha256": "6ea0dbd7e814caf93ba19eb08c4a3bf056bfa0fabd2e25016891828b72f4e29f"
313
+ },
314
+ {
315
+ "path": "templates/.claude/skills/system-grill/SKILL.md",
316
+ "sha256": "aa0877a2104edb039a6cab00ff30b47520d913d0d4490769c5e115a9f161e61e"
317
+ },
318
+ {
319
+ "path": "templates/.claude/workflows/feature-adr.js",
320
+ "sha256": "e02d770867542d0d1505baca64c3008ff1bbc0048b291bd30be7ccc41bdc06a1"
321
+ },
322
+ {
323
+ "path": "templates/lib/memory-protocol.md",
324
+ "sha256": "4889c82e18ae116a8f45c1bc76799c81e86466fb12effe794da73594c377a412"
325
+ },
326
+ {
327
+ "path": "templates/lib/reward-tracker.md",
328
+ "sha256": "581feeda1b4b920f7013bde5938f5cb6ffe3e44f5d2426263c49f1047ade8d55"
329
+ },
330
+ {
331
+ "path": "test/back-compat.test.js",
332
+ "sha256": "74fa0b7f1e595eddef251b37b0bf6d6f97971f1c2d03348228a9913380128d54"
333
+ },
334
+ {
335
+ "path": "test/helpers/sandbox.js",
336
+ "sha256": "61e883fb74a00301b1578987aecfc5b0ff4f4db4ee64c90fae0035a24dcabc99"
337
+ },
338
+ {
339
+ "path": "test/three-way.test.js",
340
+ "sha256": "16c3b973996b6cdd2d070e413de54e9835a038bd37b0d3769f5cccccdd57e971"
341
+ },
342
+ {
343
+ "path": "test/update-3way.test.js",
344
+ "sha256": "8c34fb6b5202393b52cbfd29d3cd64b6d270675c2d8327d4c1a8366af8088ae7"
345
+ }
346
+ ]
347
+ },
348
+ "signature": "ac1qFz1SL9en2rAGmTGAYgsXlnlNG7tX3LCKhQFdt0nngZoLWW3LIT9pXBKrSAwKLAsqLXc1EVcmx2fmupeyAg=="
349
+ }
package/README.md CHANGED
@@ -106,6 +106,32 @@ ARCHITECTURE → IMPLEMENTATION → CODE → QE → FLEET QE
106
106
  # Full protocols + 6 extra skills, up to 7 fleet QE agents
107
107
  ```
108
108
 
109
+ ### Durable checkpoints + resume (v1.3.64)
110
+
111
+ Every expensive stage (router / design / plan / code / qe / fleet) checkpoints its result into
112
+ `features/<slug>/.fa-state/checkpoints.jsonl`. Re-invoking the workflow with the SAME slug resumes
113
+ completed stages instead of re-running them — covering both a **killed run** (previously a total
114
+ restart: the exact failure mode that motivated usage-adaptive routing) and the **standard L/XL
115
+ two-phase flow** (the `stopAfter: 'plan'` → `stopAfter: 'none'` re-invoke now resumes
116
+ router+design+plan for free).
117
+
118
+ ```js
119
+ // run 1 (dies mid-code, or stops at the L/XL plan checkpoint)…
120
+ Workflow({ scriptPath: '.claude/workflows/feature-adr.js', args: { slug: 'add-x', description: '…' } })
121
+ // run 2 — same slug: completed stages resume, only the unfinished work runs
122
+ Workflow({ scriptPath: '.claude/workflows/feature-adr.js', args: { slug: 'add-x', description: '…', stopAfter: 'none' } })
123
+ // → log: "checkpoint: router RESUMED … design RESUMED … plan RESUMED"; result carries resumedStages
124
+ ```
125
+
126
+ Knobs: `args.resume: 'auto'` (default — resume only on input-hash match AND every tier-required
127
+ artifact present) · `'never'` (ignore recorded state) · `'force'` (trust the hash, skip artifact
128
+ probes); `args.checkpoints: false` disables the layer entirely. **Honest scope:** resume proves the
129
+ run *inputs* are unchanged and artifacts exist — it does NOT fingerprint the working tree; after
130
+ manual edits mid-feature pass `resume: 'never'` (or delete `.fa-state/`) and re-QE. A stale-input
131
+ checkpoint never resumes in any mode. RU: упавший L/XL-ран продолжает с места смерти, а не
132
+ пере-тратит выполненные стадии; штатный двухфазный L/XL-флоу тоже дешевеет — re-invoke после
133
+ план-чекпоинта возобновляет router+design+plan из чекпоинтов.
134
+
109
135
  ### Codex model routing (optional)
110
136
 
111
137
  If [Codex](https://developers.openai.com/codex) is installed + logged in, the pipeline can route work to
package/bin/cli.js CHANGED
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dzhechkov/skills-feature-adr",
3
- "version": "1.3.62",
3
+ "version": "1.3.64",
4
4
  "description": "Adaptive Feature Development skill pack for Claude Code — 11-step pipeline with Complexity Router (S/M/L/XL), ADR-driven architecture, 15 agentic-qe skills, multi-agent fleet QE. Supports --full-qe, --full-qe-extended, --with-learning, and --knowledge-extractor modes.",
5
5
  "bin": {
6
6
  "skills-feature-adr": "./bin/cli.js"
@@ -11,12 +11,10 @@
11
11
  "templates/",
12
12
  "LICENSE",
13
13
  "CHANGELOG.md",
14
- "docs/"
14
+ "docs/",
15
+ ".dz-manifest.json",
16
+ "sbom.json"
15
17
  ],
16
- "scripts": {
17
- "test": "node --test \"test/**/*.test.js\"",
18
- "prepack": "node -e \"const fs=require('fs');const bad=['.claude','.skills-feature-adr.json'].filter(p=>fs.existsSync(p));if(bad.length){console.error('prepack guard: stray init artifacts in package dir: '+bad.join(', ')+' — remove before packing');process.exit(1)}\""
19
- },
20
18
  "keywords": [
21
19
  "claude",
22
20
  "claude-code",
@@ -61,5 +59,8 @@
61
59
  },
62
60
  "publishConfig": {
63
61
  "access": "public"
62
+ },
63
+ "scripts": {
64
+ "test": "node --test \"test/**/*.test.js\""
64
65
  }
65
- }
66
+ }