@arjunkhera/atlas 0.0.0 → 0.2.1

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 (43) hide show
  1. package/.claude-plugin/plugin.json +18 -0
  2. package/.mcp.json +18 -0
  3. package/README.md +32 -1
  4. package/agents/artifact-format/example.html +71 -0
  5. package/agents/artifact-format/system.css +273 -0
  6. package/agents/artifact-renderer.md +132 -0
  7. package/agents/capability-reader.md +100 -0
  8. package/agents/code-explorer.md +108 -0
  9. package/agents/reviewer-architect.md +78 -0
  10. package/agents/reviewer-pm.md +81 -0
  11. package/agents/reviewer-security.md +82 -0
  12. package/bin/atlas +5 -0
  13. package/door/cli.mjs +280 -0
  14. package/door/lib/helpers.mjs +139 -0
  15. package/door/lib/install.mjs +260 -0
  16. package/door/lib/kind-drift.mjs +76 -0
  17. package/door/lib/onboarding.mjs +130 -0
  18. package/door/lib/pull-request.mjs +119 -0
  19. package/door/lib/releases.mjs +42 -0
  20. package/door/lib/status.mjs +47 -0
  21. package/door/lib/tooling.mjs +119 -0
  22. package/package.json +24 -3
  23. package/shape/check.mjs +1797 -0
  24. package/shape/releases.json +15 -0
  25. package/skills/sdlc-task/SKILL.md +174 -0
  26. package/skills/sdlc-task/lifecycle.yaml +27 -0
  27. package/skills/sdlc-task/templates/design-doc.md +118 -0
  28. package/skills/sdlc-task/templates/resume-anchor.md +25 -0
  29. package/work/code-read.mjs +65 -0
  30. package/work/lib/action-store.mjs +84 -0
  31. package/work/lib/capability.mjs +487 -0
  32. package/work/lib/child-env.mjs +11 -0
  33. package/work/lib/client.mjs +214 -0
  34. package/work/lib/code-read.mjs +238 -0
  35. package/work/lib/delivery.mjs +624 -0
  36. package/work/lib/mcp-stdio.mjs +68 -0
  37. package/work/lib/questions.mjs +278 -0
  38. package/work/lib/sweep.mjs +189 -0
  39. package/work/lib/verb-fields.mjs +53 -0
  40. package/work/lib/verbs.mjs +511 -0
  41. package/work/manifest-0.5.0.json +609 -0
  42. package/work/mcp.mjs +216 -0
  43. package/work/protected-paths.json +38 -0
@@ -0,0 +1,609 @@
1
+ {
2
+ "name": "atlas-work",
3
+ "version": "0.5.0",
4
+ "kind": "extension",
5
+ "description": "Atlas work records: products and repos as the registry, work items, questions, decisions, receipts, delivery and reopen marks, and their relations. Version 0.4.0 adds mark, the delivery fields on the item and the health endpoint on the product (M1 slice L3, 2026-09-17). Version 0.3.0 added question and receipt. Version 0.2.0 dropped atlas_key and write_class.",
6
+ "capability": {
7
+ "semantics_version": ">=1.0.0 <2.0.0"
8
+ },
9
+ "permissions": {
10
+ "types_contributed": [
11
+ "@{{handle}}/product",
12
+ "@{{handle}}/repo",
13
+ "@{{handle}}/container",
14
+ "@{{handle}}/decision",
15
+ "@{{handle}}/question",
16
+ "@{{handle}}/receipt",
17
+ "@{{handle}}/mark",
18
+ "@{{handle}}/part_of",
19
+ "@{{handle}}/spun_out_of",
20
+ "@{{handle}}/replaced_by",
21
+ "@{{handle}}/constrains",
22
+ "@{{handle}}/depends_on",
23
+ "@{{handle}}/corrects"
24
+ ],
25
+ "templates_contributed": []
26
+ },
27
+ "contributes": {
28
+ "types": [
29
+ {
30
+ "name": "@{{handle}}/product",
31
+ "kind": "entity",
32
+ "component_spec": {
33
+ "metadata": {
34
+ "fields": {
35
+ "$required": [
36
+ "registry_id",
37
+ "name",
38
+ "writer",
39
+ "request_id"
40
+ ],
41
+ "properties": {
42
+ "registry_id": {
43
+ "type": "string"
44
+ },
45
+ "name": {
46
+ "type": "string"
47
+ },
48
+ "project_id": {
49
+ "type": "string"
50
+ },
51
+ "notes": {
52
+ "type": "string",
53
+ "default": ""
54
+ },
55
+ "writer": {
56
+ "type": "object"
57
+ },
58
+ "request_id": {
59
+ "type": "string"
60
+ },
61
+ "health_url": {
62
+ "type": "string"
63
+ }
64
+ }
65
+ },
66
+ "validation": "strict"
67
+ }
68
+ }
69
+ },
70
+ {
71
+ "name": "@{{handle}}/repo",
72
+ "kind": "entity",
73
+ "component_spec": {
74
+ "metadata": {
75
+ "fields": {
76
+ "$required": [
77
+ "registry_id",
78
+ "product",
79
+ "default_branch",
80
+ "writer",
81
+ "request_id"
82
+ ],
83
+ "properties": {
84
+ "registry_id": {
85
+ "type": "string"
86
+ },
87
+ "product": {
88
+ "type": "string"
89
+ },
90
+ "default_branch": {
91
+ "type": "string"
92
+ },
93
+ "kind": {
94
+ "type": "string"
95
+ },
96
+ "notes": {
97
+ "type": "string",
98
+ "default": ""
99
+ },
100
+ "writer": {
101
+ "type": "object"
102
+ },
103
+ "request_id": {
104
+ "type": "string"
105
+ }
106
+ }
107
+ },
108
+ "validation": "strict"
109
+ }
110
+ }
111
+ },
112
+ {
113
+ "name": "@{{handle}}/container",
114
+ "kind": "entity",
115
+ "component_spec": {
116
+ "metadata": {
117
+ "fields": {
118
+ "$required": [
119
+ "lifecycle"
120
+ ],
121
+ "properties": {
122
+ "lifecycle": {
123
+ "type": "string",
124
+ "default": "proposed"
125
+ },
126
+ "stage": {
127
+ "type": "string",
128
+ "default": "capture"
129
+ },
130
+ "summary": {
131
+ "type": "string",
132
+ "default": ""
133
+ },
134
+ "external_refs": {
135
+ "type": "array",
136
+ "default": []
137
+ },
138
+ "product": {
139
+ "type": "string"
140
+ },
141
+ "repos": {
142
+ "type": "array"
143
+ },
144
+ "tier": {
145
+ "type": "string"
146
+ },
147
+ "scope": {
148
+ "type": "object"
149
+ },
150
+ "scope_hash": {
151
+ "type": "string"
152
+ },
153
+ "origin": {
154
+ "type": "object"
155
+ },
156
+ "pause_reason": {
157
+ "type": "string"
158
+ },
159
+ "links": {
160
+ "type": "array"
161
+ },
162
+ "next_step": {
163
+ "type": "string"
164
+ },
165
+ "driver": {
166
+ "type": "string"
167
+ },
168
+ "writer": {
169
+ "type": "object"
170
+ },
171
+ "request_id": {
172
+ "type": "string"
173
+ },
174
+ "reopened_at": {
175
+ "type": "string"
176
+ },
177
+ "delivered_at": {
178
+ "type": "string"
179
+ },
180
+ "delivery_marks": {
181
+ "type": "array"
182
+ },
183
+ "delivery_state": {
184
+ "type": "string"
185
+ }
186
+ }
187
+ },
188
+ "validation": "coerce"
189
+ }
190
+ }
191
+ },
192
+ {
193
+ "name": "@{{handle}}/decision",
194
+ "kind": "entity",
195
+ "component_spec": {
196
+ "metadata": {
197
+ "fields": {
198
+ "$required": [
199
+ "writer",
200
+ "request_id"
201
+ ],
202
+ "properties": {
203
+ "kind": {
204
+ "type": "string"
205
+ },
206
+ "text": {
207
+ "type": "string"
208
+ },
209
+ "date": {
210
+ "type": "string"
211
+ },
212
+ "source": {
213
+ "type": "string"
214
+ },
215
+ "product": {
216
+ "type": "string"
217
+ },
218
+ "answers": {
219
+ "type": "string"
220
+ },
221
+ "items": {
222
+ "type": "array"
223
+ },
224
+ "priority_order": {
225
+ "type": "array"
226
+ },
227
+ "replaces": {
228
+ "type": "string"
229
+ },
230
+ "writer": {
231
+ "type": "object"
232
+ },
233
+ "request_id": {
234
+ "type": "string"
235
+ },
236
+ "atlas_receipts": {
237
+ "type": "object"
238
+ }
239
+ }
240
+ },
241
+ "validation": "strict"
242
+ }
243
+ }
244
+ },
245
+ {
246
+ "name": "@{{handle}}/question",
247
+ "kind": "entity",
248
+ "component_spec": {
249
+ "metadata": {
250
+ "fields": {
251
+ "$required": [
252
+ "text",
253
+ "item",
254
+ "product",
255
+ "cost",
256
+ "status",
257
+ "writer",
258
+ "request_id"
259
+ ],
260
+ "properties": {
261
+ "text": {
262
+ "type": "string"
263
+ },
264
+ "item": {
265
+ "type": "string"
266
+ },
267
+ "product": {
268
+ "type": "string"
269
+ },
270
+ "asked_by": {
271
+ "type": "object"
272
+ },
273
+ "asked_at": {
274
+ "type": "string"
275
+ },
276
+ "cost": {
277
+ "type": "string"
278
+ },
279
+ "cost_rank": {
280
+ "type": "number"
281
+ },
282
+ "context": {
283
+ "type": "object"
284
+ },
285
+ "status": {
286
+ "type": "string",
287
+ "default": "open"
288
+ },
289
+ "answer": {
290
+ "type": "string"
291
+ },
292
+ "answered_at": {
293
+ "type": "string"
294
+ },
295
+ "writer": {
296
+ "type": "object"
297
+ },
298
+ "request_id": {
299
+ "type": "string"
300
+ },
301
+ "atlas_receipts": {
302
+ "type": "object"
303
+ }
304
+ }
305
+ },
306
+ "validation": "strict"
307
+ }
308
+ }
309
+ },
310
+ {
311
+ "name": "@{{handle}}/receipt",
312
+ "kind": "entity",
313
+ "component_spec": {
314
+ "metadata": {
315
+ "fields": {
316
+ "$required": [
317
+ "decision",
318
+ "rendered",
319
+ "kept_at",
320
+ "writer",
321
+ "request_id"
322
+ ],
323
+ "properties": {
324
+ "decision": {
325
+ "type": "string"
326
+ },
327
+ "question": {
328
+ "type": "string"
329
+ },
330
+ "product": {
331
+ "type": "string"
332
+ },
333
+ "view": {
334
+ "type": "string"
335
+ },
336
+ "rendered": {
337
+ "type": "string"
338
+ },
339
+ "kept_at": {
340
+ "type": "string"
341
+ },
342
+ "redactions": {
343
+ "type": "number"
344
+ },
345
+ "writer": {
346
+ "type": "object"
347
+ },
348
+ "request_id": {
349
+ "type": "string"
350
+ },
351
+ "atlas_receipts": {
352
+ "type": "object"
353
+ }
354
+ }
355
+ },
356
+ "validation": "strict"
357
+ }
358
+ }
359
+ },
360
+ {
361
+ "name": "@{{handle}}/mark",
362
+ "kind": "entity",
363
+ "component_spec": {
364
+ "metadata": {
365
+ "fields": {
366
+ "$required": [
367
+ "kind",
368
+ "item",
369
+ "product",
370
+ "verdict",
371
+ "marked_at",
372
+ "writer",
373
+ "request_id"
374
+ ],
375
+ "properties": {
376
+ "writer": {
377
+ "type": "object"
378
+ },
379
+ "request_id": {
380
+ "type": "string"
381
+ },
382
+ "prs": {
383
+ "type": "array"
384
+ },
385
+ "item": {
386
+ "type": "string"
387
+ },
388
+ "kind": {
389
+ "type": "string"
390
+ },
391
+ "note": {
392
+ "type": "string"
393
+ },
394
+ "checks": {
395
+ "type": "array"
396
+ },
397
+ "reason": {
398
+ "type": "string"
399
+ },
400
+ "product": {
401
+ "type": "string"
402
+ },
403
+ "verdict": {
404
+ "type": "string"
405
+ },
406
+ "corrects": {
407
+ "type": "string"
408
+ },
409
+ "deployed": {
410
+ "type": "object"
411
+ },
412
+ "marked_at": {
413
+ "type": "string"
414
+ },
415
+ "verified_by": {
416
+ "type": "array"
417
+ },
418
+ "failed_check": {
419
+ "type": "string"
420
+ },
421
+ "atlas_receipts": {
422
+ "type": "object"
423
+ }
424
+ }
425
+ },
426
+ "validation": "strict"
427
+ }
428
+ }
429
+ },
430
+ {
431
+ "name": "@{{handle}}/part_of",
432
+ "kind": "edge",
433
+ "component_spec": {
434
+ "directionality": "directed",
435
+ "cardinality": "N:N",
436
+ "props": {
437
+ "fields": {
438
+ "$required": [
439
+ "writer",
440
+ "request_id"
441
+ ],
442
+ "properties": {
443
+ "writer": {
444
+ "type": "object"
445
+ },
446
+ "request_id": {
447
+ "type": "string"
448
+ }
449
+ }
450
+ },
451
+ "validation": "strict"
452
+ }
453
+ }
454
+ },
455
+ {
456
+ "name": "@{{handle}}/spun_out_of",
457
+ "kind": "edge",
458
+ "component_spec": {
459
+ "directionality": "directed",
460
+ "cardinality": "N:N",
461
+ "props": {
462
+ "fields": {
463
+ "$required": [
464
+ "writer",
465
+ "request_id"
466
+ ],
467
+ "properties": {
468
+ "writer": {
469
+ "type": "object"
470
+ },
471
+ "request_id": {
472
+ "type": "string"
473
+ },
474
+ "reason": {
475
+ "type": "string"
476
+ }
477
+ }
478
+ },
479
+ "validation": "strict"
480
+ }
481
+ }
482
+ },
483
+ {
484
+ "name": "@{{handle}}/replaced_by",
485
+ "kind": "edge",
486
+ "component_spec": {
487
+ "directionality": "directed",
488
+ "cardinality": "N:N",
489
+ "props": {
490
+ "fields": {
491
+ "$required": [
492
+ "writer",
493
+ "request_id"
494
+ ],
495
+ "properties": {
496
+ "writer": {
497
+ "type": "object"
498
+ },
499
+ "request_id": {
500
+ "type": "string"
501
+ }
502
+ }
503
+ },
504
+ "validation": "strict"
505
+ }
506
+ }
507
+ },
508
+ {
509
+ "name": "@{{handle}}/constrains",
510
+ "kind": "edge",
511
+ "component_spec": {
512
+ "directionality": "directed",
513
+ "cardinality": "N:N",
514
+ "props": {
515
+ "fields": {
516
+ "$required": [
517
+ "writer",
518
+ "request_id"
519
+ ],
520
+ "properties": {
521
+ "writer": {
522
+ "type": "object"
523
+ },
524
+ "request_id": {
525
+ "type": "string"
526
+ }
527
+ }
528
+ },
529
+ "validation": "strict"
530
+ }
531
+ }
532
+ },
533
+ {
534
+ "name": "@{{handle}}/depends_on",
535
+ "kind": "edge",
536
+ "component_spec": {
537
+ "directionality": "directed",
538
+ "cardinality": "N:N",
539
+ "props": {
540
+ "fields": {
541
+ "$required": [
542
+ "writer",
543
+ "request_id"
544
+ ],
545
+ "properties": {
546
+ "writer": {
547
+ "type": "object"
548
+ },
549
+ "request_id": {
550
+ "type": "string"
551
+ }
552
+ }
553
+ },
554
+ "validation": "strict"
555
+ }
556
+ }
557
+ },
558
+ {
559
+ "name": "@{{handle}}/corrects",
560
+ "kind": "edge",
561
+ "component_spec": {
562
+ "directionality": "directed",
563
+ "cardinality": "N:N",
564
+ "props": {
565
+ "fields": {
566
+ "$required": [
567
+ "writer",
568
+ "request_id"
569
+ ],
570
+ "properties": {
571
+ "writer": {
572
+ "type": "object"
573
+ },
574
+ "request_id": {
575
+ "type": "string"
576
+ }
577
+ }
578
+ },
579
+ "validation": "strict"
580
+ }
581
+ }
582
+ }
583
+ ],
584
+ "templates": []
585
+ },
586
+ "changelog": {
587
+ "0.2.0": [
588
+ "Adds product and repo as the name registry. Items point at registry ids.",
589
+ "Re-declares container, decision, part_of, spun_out_of, replaced_by, constrains, depends_on and corrects without atlas_key and write_class. Every record carries writer and request_id.",
590
+ "Deprecated, not re-declared: capability, behavior_statement, evidence, supports, changes, extends. Their first-slice entities are archived by the owner (amendment A1.4, section 3)."
591
+ ],
592
+ "0.3.0": [
593
+ "Adds question and receipt. A question holds its text, item, product, asker, date, cost of waiting and the context to answer; a receipt holds the rendered answer the owner acted on and the decision it belongs to.",
594
+ "Re-declares decision with the fields of design page D1: the owner\u2019s words, date, source, the question it answers, the items it touches, the priority order, and what it replaces. $required is unchanged, so an older decision record still validates.",
595
+ "No new edge type. Questions, decisions and receipts point at their records by field and carry one references edge each."
596
+ ],
597
+ "0.4.0": [
598
+ "Adds mark. One mark record holds either a delivery or a reopen: the PRs, the deployed commit, the three live checks and their results, the gate runs that verified them, or the reason a delivery was reopened and the failed check it cites.",
599
+ "A reopen mark points at the delivery mark it corrects with the corrects edge of 0.2.0. No delivery mark is ever rewritten.",
600
+ "The item gains delivery_state, delivery_marks, delivered_at and reopened_at. The product gains health_url, where the deployed app answers."
601
+ ],
602
+ "0.5.0": [
603
+ "The repo record gains kind: service, library or schema. M2 amendment A1.5, slice L1. The M2 repo-shape check reads it to decide which of the seven files a repo needs.",
604
+ "kind is not a required field, so every repo record written under 0.2.0, 0.3.0 and 0.4.0 still validates. repo edit fills it.",
605
+ "Nothing else changes. 0.4.0 and its mark record are carried over whole.",
606
+ "Why 0.5.0 and not 0.4.0: M1 slice L3 published 0.4.0 for the mark record on 2026-09-17, in a session that ran beside this one. A published version never changes, so this slice took the next number. Owner decision, 2026-09-17."
607
+ ]
608
+ }
609
+ }