harnessed 1.0.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 (51) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +20 -0
  3. package/README.md +178 -0
  4. package/config-templates/README.md +21 -0
  5. package/config-templates/hooks/.gitkeep +0 -0
  6. package/dist/cli.d.ts +1 -0
  7. package/dist/cli.mjs +4653 -0
  8. package/dist/cli.mjs.map +1 -0
  9. package/dist/index.d.ts +3 -0
  10. package/dist/index.mjs +10 -0
  11. package/dist/index.mjs.map +1 -0
  12. package/dist/schemas/index.d.ts +47 -0
  13. package/dist/schemas/index.mjs +384 -0
  14. package/dist/schemas/index.mjs.map +1 -0
  15. package/manifests/README.md +23 -0
  16. package/manifests/SCHEMA.md +180 -0
  17. package/manifests/aliases.yaml +14 -0
  18. package/manifests/cc-hooks/dashboard-autospawn.yaml +45 -0
  19. package/manifests/skill-packs/.gitkeep +0 -0
  20. package/manifests/skill-packs/anthropics-skills-pptx.yaml +46 -0
  21. package/manifests/skill-packs/anthropics-skills-slide-deck.yaml +46 -0
  22. package/manifests/skill-packs/frontend-design.yaml +63 -0
  23. package/manifests/skill-packs/gsd.yaml +43 -0
  24. package/manifests/skill-packs/gstack.yaml +40 -0
  25. package/manifests/skill-packs/karpathy-skills.yaml +64 -0
  26. package/manifests/skill-packs/mattpocock-skills.yaml +40 -0
  27. package/manifests/skill-packs/planning-with-files.yaml +45 -0
  28. package/manifests/skill-packs/ui-ux-pro-max.yaml +61 -0
  29. package/manifests/tools/.gitkeep +0 -0
  30. package/manifests/tools/chrome-devtools-mcp.yaml +44 -0
  31. package/manifests/tools/ctx7.yaml +39 -0
  32. package/manifests/tools/exa-mcp.yaml +39 -0
  33. package/manifests/tools/playwright-test.yaml +47 -0
  34. package/manifests/tools/ralph-loop.yaml +46 -0
  35. package/manifests/tools/superpowers.yaml +42 -0
  36. package/manifests/tools/tavily-mcp.yaml +39 -0
  37. package/package.json +96 -0
  38. package/routing/.gitkeep +0 -0
  39. package/routing/README.md +22 -0
  40. package/routing/SCHEMA.md +199 -0
  41. package/routing/decision_rules.yaml +387 -0
  42. package/routing/plan-review-schema.yaml +50 -0
  43. package/schemas/.gitkeep +0 -0
  44. package/schemas/README.md +33 -0
  45. package/schemas/manifest.v1.schema.json +1107 -0
  46. package/workflows/.gitkeep +0 -0
  47. package/workflows/README.md +23 -0
  48. package/workflows/SCHEMA.md +157 -0
  49. package/workflows/execute-task/SKILL.md +70 -0
  50. package/workflows/execute-task/phases.yaml +27 -0
  51. package/workflows/plan-feature/workflow.yaml +40 -0
@@ -0,0 +1,1107 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "additionalProperties": false,
4
+ "type": "object",
5
+ "required": [
6
+ "apiVersion",
7
+ "kind",
8
+ "metadata",
9
+ "spec"
10
+ ],
11
+ "properties": {
12
+ "apiVersion": {
13
+ "const": "harnessed/v1",
14
+ "type": "string"
15
+ },
16
+ "kind": {
17
+ "const": "Manifest",
18
+ "type": "string"
19
+ },
20
+ "metadata": {
21
+ "additionalProperties": false,
22
+ "type": "object",
23
+ "required": [
24
+ "name",
25
+ "description",
26
+ "upstream"
27
+ ],
28
+ "properties": {
29
+ "name": {
30
+ "pattern": "^[a-z0-9][a-z0-9-]*$",
31
+ "minLength": 1,
32
+ "type": "string"
33
+ },
34
+ "display_name": {
35
+ "type": "string"
36
+ },
37
+ "description": {
38
+ "minLength": 1,
39
+ "maxLength": 120,
40
+ "type": "string"
41
+ },
42
+ "upstream": {
43
+ "additionalProperties": false,
44
+ "type": "object",
45
+ "required": [
46
+ "source",
47
+ "homepage",
48
+ "repository",
49
+ "license",
50
+ "notice"
51
+ ],
52
+ "properties": {
53
+ "source": {
54
+ "minLength": 1,
55
+ "type": "string"
56
+ },
57
+ "homepage": {
58
+ "format": "uri",
59
+ "type": "string"
60
+ },
61
+ "repository": {
62
+ "format": "uri",
63
+ "type": "string"
64
+ },
65
+ "license": {
66
+ "anyOf": [
67
+ {
68
+ "const": "MIT",
69
+ "type": "string"
70
+ },
71
+ {
72
+ "const": "Apache-2.0",
73
+ "type": "string"
74
+ },
75
+ {
76
+ "const": "BSD-3-Clause",
77
+ "type": "string"
78
+ },
79
+ {
80
+ "const": "ISC",
81
+ "type": "string"
82
+ },
83
+ {
84
+ "const": "0BSD",
85
+ "type": "string"
86
+ },
87
+ {
88
+ "const": "MIT-0",
89
+ "type": "string"
90
+ },
91
+ {
92
+ "const": "anthropics-official",
93
+ "type": "string"
94
+ }
95
+ ]
96
+ },
97
+ "license_source": {
98
+ "anyOf": [
99
+ {
100
+ "const": "README",
101
+ "type": "string"
102
+ },
103
+ {
104
+ "const": "registry",
105
+ "type": "string"
106
+ },
107
+ {
108
+ "const": "none",
109
+ "type": "string"
110
+ },
111
+ {
112
+ "const": "anthropics-official",
113
+ "type": "string"
114
+ }
115
+ ]
116
+ },
117
+ "notice": {
118
+ "minLength": 1,
119
+ "maxLength": 500,
120
+ "type": "string"
121
+ }
122
+ }
123
+ }
124
+ }
125
+ },
126
+ "spec": {
127
+ "additionalProperties": false,
128
+ "type": "object",
129
+ "required": [
130
+ "type",
131
+ "component_type",
132
+ "install",
133
+ "verify",
134
+ "uninstall",
135
+ "upstream_health",
136
+ "signed_by",
137
+ "platforms",
138
+ "category",
139
+ "install_type"
140
+ ],
141
+ "properties": {
142
+ "type": {
143
+ "anyOf": [
144
+ {
145
+ "const": "cc-plugin",
146
+ "type": "string"
147
+ },
148
+ {
149
+ "const": "cc-skill-pack",
150
+ "type": "string"
151
+ },
152
+ {
153
+ "const": "mcp-npm",
154
+ "type": "string"
155
+ },
156
+ {
157
+ "const": "cli-npm",
158
+ "type": "string"
159
+ },
160
+ {
161
+ "const": "cc-hook",
162
+ "type": "string"
163
+ }
164
+ ]
165
+ },
166
+ "component_type": {
167
+ "anyOf": [
168
+ {
169
+ "const": "command",
170
+ "type": "string"
171
+ },
172
+ {
173
+ "const": "behavior-rule",
174
+ "type": "string"
175
+ },
176
+ {
177
+ "const": "mcp-tool",
178
+ "type": "string"
179
+ },
180
+ {
181
+ "const": "cli-binary",
182
+ "type": "string"
183
+ }
184
+ ]
185
+ },
186
+ "install": {
187
+ "type": "object",
188
+ "discriminator": {
189
+ "propertyName": "method"
190
+ },
191
+ "required": [
192
+ "method"
193
+ ],
194
+ "properties": {
195
+ "method": {
196
+ "type": "string"
197
+ }
198
+ },
199
+ "oneOf": [
200
+ {
201
+ "additionalProperties": false,
202
+ "type": "object",
203
+ "required": [
204
+ "method",
205
+ "cmd",
206
+ "git_ref",
207
+ "idempotent_check"
208
+ ],
209
+ "properties": {
210
+ "method": {
211
+ "const": "cc-plugin-marketplace",
212
+ "type": "string"
213
+ },
214
+ "cmd": {
215
+ "minLength": 1,
216
+ "type": "string"
217
+ },
218
+ "cwd": {
219
+ "type": "string"
220
+ },
221
+ "env": {
222
+ "type": "object",
223
+ "patternProperties": {
224
+ "^(.*)$": {
225
+ "type": "string"
226
+ }
227
+ }
228
+ },
229
+ "args": {
230
+ "type": "object",
231
+ "patternProperties": {
232
+ "^(.*)$": {}
233
+ }
234
+ },
235
+ "git_ref": {
236
+ "minLength": 1,
237
+ "pattern": "^([a-f0-9]{7,40}|v?\\d+\\.\\d+\\.\\d+([.-][\\w.-]+)?)$",
238
+ "type": "string"
239
+ },
240
+ "idempotent_check": {
241
+ "minLength": 1,
242
+ "type": "string"
243
+ },
244
+ "marketplace_source": {
245
+ "additionalProperties": false,
246
+ "type": "object",
247
+ "required": [
248
+ "source",
249
+ "repo"
250
+ ],
251
+ "properties": {
252
+ "source": {
253
+ "const": "github",
254
+ "type": "string"
255
+ },
256
+ "repo": {
257
+ "pattern": "^[a-zA-Z0-9_.-]+/[a-zA-Z0-9_.-]+$",
258
+ "minLength": 3,
259
+ "type": "string"
260
+ }
261
+ }
262
+ }
263
+ }
264
+ },
265
+ {
266
+ "additionalProperties": false,
267
+ "type": "object",
268
+ "required": [
269
+ "method",
270
+ "cmd",
271
+ "git_ref",
272
+ "idempotent_check"
273
+ ],
274
+ "properties": {
275
+ "method": {
276
+ "const": "git-clone-with-setup",
277
+ "type": "string"
278
+ },
279
+ "cmd": {
280
+ "minLength": 1,
281
+ "type": "string"
282
+ },
283
+ "cwd": {
284
+ "type": "string"
285
+ },
286
+ "env": {
287
+ "type": "object",
288
+ "patternProperties": {
289
+ "^(.*)$": {
290
+ "type": "string"
291
+ }
292
+ }
293
+ },
294
+ "args": {
295
+ "type": "object",
296
+ "patternProperties": {
297
+ "^(.*)$": {}
298
+ }
299
+ },
300
+ "git_ref": {
301
+ "minLength": 1,
302
+ "pattern": "^([a-f0-9]{7,40}|v?\\d+\\.\\d+\\.\\d+([.-][\\w.-]+)?)$",
303
+ "type": "string"
304
+ },
305
+ "idempotent_check": {
306
+ "minLength": 1,
307
+ "type": "string"
308
+ }
309
+ }
310
+ },
311
+ {
312
+ "additionalProperties": false,
313
+ "type": "object",
314
+ "required": [
315
+ "method",
316
+ "cmd",
317
+ "npm_version",
318
+ "idempotent_check"
319
+ ],
320
+ "properties": {
321
+ "method": {
322
+ "const": "npx-skill-installer",
323
+ "type": "string"
324
+ },
325
+ "cmd": {
326
+ "minLength": 1,
327
+ "type": "string"
328
+ },
329
+ "cwd": {
330
+ "type": "string"
331
+ },
332
+ "env": {
333
+ "type": "object",
334
+ "patternProperties": {
335
+ "^(.*)$": {
336
+ "type": "string"
337
+ }
338
+ }
339
+ },
340
+ "args": {
341
+ "type": "object",
342
+ "patternProperties": {
343
+ "^(.*)$": {}
344
+ }
345
+ },
346
+ "npm_version": {
347
+ "minLength": 1,
348
+ "type": "string"
349
+ },
350
+ "idempotent_check": {
351
+ "minLength": 1,
352
+ "type": "string"
353
+ }
354
+ }
355
+ },
356
+ {
357
+ "additionalProperties": false,
358
+ "type": "object",
359
+ "required": [
360
+ "method",
361
+ "cmd",
362
+ "npm_version",
363
+ "idempotent_check"
364
+ ],
365
+ "properties": {
366
+ "method": {
367
+ "const": "npm-cli",
368
+ "type": "string"
369
+ },
370
+ "cmd": {
371
+ "minLength": 1,
372
+ "type": "string"
373
+ },
374
+ "cwd": {
375
+ "type": "string"
376
+ },
377
+ "env": {
378
+ "type": "object",
379
+ "patternProperties": {
380
+ "^(.*)$": {
381
+ "type": "string"
382
+ }
383
+ }
384
+ },
385
+ "args": {
386
+ "type": "object",
387
+ "patternProperties": {
388
+ "^(.*)$": {}
389
+ }
390
+ },
391
+ "npm_version": {
392
+ "minLength": 1,
393
+ "type": "string"
394
+ },
395
+ "idempotent_check": {
396
+ "minLength": 1,
397
+ "type": "string"
398
+ }
399
+ }
400
+ },
401
+ {
402
+ "additionalProperties": false,
403
+ "type": "object",
404
+ "required": [
405
+ "method",
406
+ "cmd",
407
+ "npm_version",
408
+ "idempotent_check"
409
+ ],
410
+ "properties": {
411
+ "method": {
412
+ "const": "mcp-stdio-add",
413
+ "type": "string"
414
+ },
415
+ "cmd": {
416
+ "minLength": 1,
417
+ "type": "string"
418
+ },
419
+ "cwd": {
420
+ "type": "string"
421
+ },
422
+ "env": {
423
+ "type": "object",
424
+ "patternProperties": {
425
+ "^(.*)$": {
426
+ "type": "string"
427
+ }
428
+ }
429
+ },
430
+ "args": {
431
+ "type": "object",
432
+ "patternProperties": {
433
+ "^(.*)$": {}
434
+ }
435
+ },
436
+ "npm_version": {
437
+ "minLength": 1,
438
+ "type": "string"
439
+ },
440
+ "idempotent_check": {
441
+ "minLength": 1,
442
+ "type": "string"
443
+ }
444
+ }
445
+ },
446
+ {
447
+ "additionalProperties": false,
448
+ "type": "object",
449
+ "required": [
450
+ "method",
451
+ "cmd",
452
+ "npm_version",
453
+ "idempotent_check"
454
+ ],
455
+ "properties": {
456
+ "method": {
457
+ "const": "mcp-http-add",
458
+ "type": "string"
459
+ },
460
+ "cmd": {
461
+ "minLength": 1,
462
+ "type": "string"
463
+ },
464
+ "cwd": {
465
+ "type": "string"
466
+ },
467
+ "env": {
468
+ "type": "object",
469
+ "patternProperties": {
470
+ "^(.*)$": {
471
+ "type": "string"
472
+ }
473
+ }
474
+ },
475
+ "args": {
476
+ "type": "object",
477
+ "patternProperties": {
478
+ "^(.*)$": {}
479
+ }
480
+ },
481
+ "npm_version": {
482
+ "minLength": 1,
483
+ "type": "string"
484
+ },
485
+ "idempotent_check": {
486
+ "minLength": 1,
487
+ "type": "string"
488
+ }
489
+ }
490
+ },
491
+ {
492
+ "additionalProperties": false,
493
+ "type": "object",
494
+ "required": [
495
+ "method",
496
+ "cmd",
497
+ "hook_event",
498
+ "hook_command",
499
+ "idempotent_check"
500
+ ],
501
+ "properties": {
502
+ "method": {
503
+ "const": "cc-hook-add",
504
+ "type": "string"
505
+ },
506
+ "cmd": {
507
+ "minLength": 1,
508
+ "type": "string"
509
+ },
510
+ "cwd": {
511
+ "type": "string"
512
+ },
513
+ "env": {
514
+ "type": "object",
515
+ "patternProperties": {
516
+ "^(.*)$": {
517
+ "type": "string"
518
+ }
519
+ }
520
+ },
521
+ "hook_event": {
522
+ "anyOf": [
523
+ {
524
+ "const": "SessionStart",
525
+ "type": "string"
526
+ },
527
+ {
528
+ "const": "UserPromptSubmit",
529
+ "type": "string"
530
+ },
531
+ {
532
+ "const": "PreToolUse",
533
+ "type": "string"
534
+ },
535
+ {
536
+ "const": "PostToolUse",
537
+ "type": "string"
538
+ }
539
+ ]
540
+ },
541
+ "hook_matcher": {
542
+ "type": "string"
543
+ },
544
+ "hook_command": {
545
+ "minLength": 1,
546
+ "type": "string"
547
+ },
548
+ "idempotent_check": {
549
+ "minLength": 1,
550
+ "type": "string"
551
+ }
552
+ }
553
+ }
554
+ ]
555
+ },
556
+ "verify": {
557
+ "additionalProperties": false,
558
+ "type": "object",
559
+ "required": [
560
+ "cmd"
561
+ ],
562
+ "properties": {
563
+ "cmd": {
564
+ "minLength": 1,
565
+ "type": "string"
566
+ },
567
+ "timeout_ms": {
568
+ "minimum": 100,
569
+ "maximum": 60000,
570
+ "type": "integer"
571
+ },
572
+ "expected_exit_code": {
573
+ "type": "integer"
574
+ }
575
+ }
576
+ },
577
+ "uninstall": {
578
+ "additionalProperties": false,
579
+ "type": "object",
580
+ "required": [
581
+ "cmd"
582
+ ],
583
+ "properties": {
584
+ "cmd": {
585
+ "minLength": 1,
586
+ "type": "string"
587
+ },
588
+ "cleanup_paths": {
589
+ "type": "array",
590
+ "items": {
591
+ "type": "string"
592
+ }
593
+ }
594
+ }
595
+ },
596
+ "upstream_health": {
597
+ "additionalProperties": false,
598
+ "type": "object",
599
+ "required": [
600
+ "stability",
601
+ "last_check",
602
+ "last_known_good_version",
603
+ "fallback_action"
604
+ ],
605
+ "properties": {
606
+ "stability": {
607
+ "anyOf": [
608
+ {
609
+ "const": "stable",
610
+ "type": "string"
611
+ },
612
+ {
613
+ "const": "beta",
614
+ "type": "string"
615
+ },
616
+ {
617
+ "const": "unstable",
618
+ "type": "string"
619
+ },
620
+ {
621
+ "const": "archived",
622
+ "type": "string"
623
+ }
624
+ ]
625
+ },
626
+ "last_check": {
627
+ "format": "date",
628
+ "type": "string"
629
+ },
630
+ "last_known_good_version": {
631
+ "minLength": 1,
632
+ "type": "string"
633
+ },
634
+ "fallback_action": {
635
+ "anyOf": [
636
+ {
637
+ "const": "warn",
638
+ "type": "string"
639
+ },
640
+ {
641
+ "const": "block",
642
+ "type": "string"
643
+ },
644
+ {
645
+ "const": "use_alternative",
646
+ "type": "string"
647
+ }
648
+ ]
649
+ },
650
+ "alternative": {
651
+ "type": "string"
652
+ }
653
+ }
654
+ },
655
+ "signed_by": {
656
+ "pattern": "^[a-zA-Z0-9-]+$",
657
+ "minLength": 1,
658
+ "type": "string"
659
+ },
660
+ "signature": {
661
+ "additionalProperties": false,
662
+ "type": "object",
663
+ "required": [
664
+ "sigstore_bundle"
665
+ ],
666
+ "properties": {
667
+ "sigstore_bundle": {
668
+ "format": "uri",
669
+ "type": "string"
670
+ }
671
+ }
672
+ },
673
+ "platforms": {
674
+ "minItems": 1,
675
+ "uniqueItems": true,
676
+ "type": "array",
677
+ "items": {
678
+ "anyOf": [
679
+ {
680
+ "const": "linux",
681
+ "type": "string"
682
+ },
683
+ {
684
+ "const": "darwin",
685
+ "type": "string"
686
+ },
687
+ {
688
+ "const": "win32",
689
+ "type": "string"
690
+ }
691
+ ]
692
+ }
693
+ },
694
+ "tested_with_versions": {
695
+ "additionalProperties": false,
696
+ "type": "object",
697
+ "properties": {
698
+ "cc_versions": {
699
+ "type": "array",
700
+ "items": {
701
+ "type": "string"
702
+ }
703
+ },
704
+ "node_versions": {
705
+ "type": "array",
706
+ "items": {
707
+ "type": "string"
708
+ }
709
+ }
710
+ }
711
+ },
712
+ "mutually_exclusive_with": {
713
+ "type": "array",
714
+ "items": {
715
+ "type": "string"
716
+ }
717
+ },
718
+ "category": {
719
+ "anyOf": [
720
+ {
721
+ "const": "meta",
722
+ "type": "string"
723
+ },
724
+ {
725
+ "const": "engineering",
726
+ "type": "string"
727
+ },
728
+ {
729
+ "const": "design",
730
+ "type": "string"
731
+ },
732
+ {
733
+ "const": "content",
734
+ "type": "string"
735
+ },
736
+ {
737
+ "const": "testing",
738
+ "type": "string"
739
+ },
740
+ {
741
+ "const": "search",
742
+ "type": "string"
743
+ }
744
+ ]
745
+ },
746
+ "install_type": {
747
+ "anyOf": [
748
+ {
749
+ "const": "skill",
750
+ "type": "string"
751
+ },
752
+ {
753
+ "const": "mcp",
754
+ "type": "string"
755
+ },
756
+ {
757
+ "const": "npm",
758
+ "type": "string"
759
+ },
760
+ {
761
+ "const": "git",
762
+ "type": "string"
763
+ },
764
+ {
765
+ "const": "hook",
766
+ "type": "string"
767
+ }
768
+ ]
769
+ },
770
+ "decision_rules": {
771
+ "additionalProperties": false,
772
+ "type": "object",
773
+ "properties": {
774
+ "trigger": {
775
+ "minLength": 1,
776
+ "type": "string"
777
+ },
778
+ "default_expert": {
779
+ "minLength": 1,
780
+ "type": "string"
781
+ },
782
+ "arbitration_rule": {
783
+ "minLength": 1,
784
+ "type": "string"
785
+ },
786
+ "override_signals": {
787
+ "type": "array",
788
+ "items": {
789
+ "additionalProperties": false,
790
+ "type": "object",
791
+ "required": [
792
+ "phrase",
793
+ "use"
794
+ ],
795
+ "properties": {
796
+ "phrase": {
797
+ "minLength": 1,
798
+ "type": "string"
799
+ },
800
+ "use": {
801
+ "minLength": 1,
802
+ "type": "string"
803
+ }
804
+ }
805
+ }
806
+ },
807
+ "do_not_use_when": {
808
+ "minItems": 1,
809
+ "type": "array",
810
+ "items": {
811
+ "minLength": 1,
812
+ "type": "string"
813
+ }
814
+ },
815
+ "if_rejected_use": {
816
+ "minLength": 1,
817
+ "type": "string"
818
+ }
819
+ }
820
+ },
821
+ "phase": {
822
+ "anyOf": [
823
+ {
824
+ "const": "discuss",
825
+ "type": "string"
826
+ },
827
+ {
828
+ "const": "plan",
829
+ "type": "string"
830
+ },
831
+ {
832
+ "const": "execute",
833
+ "type": "string"
834
+ },
835
+ {
836
+ "const": "verify",
837
+ "type": "string"
838
+ }
839
+ ]
840
+ },
841
+ "triggers": {
842
+ "additionalProperties": false,
843
+ "type": "object",
844
+ "properties": {
845
+ "complexity_threshold": {
846
+ "minimum": 1,
847
+ "type": "integer"
848
+ },
849
+ "tdd_required": {
850
+ "type": "boolean"
851
+ },
852
+ "brainstorming_required": {
853
+ "type": "boolean"
854
+ }
855
+ }
856
+ },
857
+ "provides": {
858
+ "minItems": 2,
859
+ "uniqueItems": true,
860
+ "type": "array",
861
+ "items": {
862
+ "additionalProperties": false,
863
+ "type": "object",
864
+ "required": [
865
+ "id",
866
+ "component_type"
867
+ ],
868
+ "properties": {
869
+ "id": {
870
+ "minLength": 1,
871
+ "type": "string"
872
+ },
873
+ "component_type": {
874
+ "anyOf": [
875
+ {
876
+ "const": "command",
877
+ "type": "string"
878
+ },
879
+ {
880
+ "const": "behavior-rule",
881
+ "type": "string"
882
+ },
883
+ {
884
+ "const": "mcp-tool",
885
+ "type": "string"
886
+ },
887
+ {
888
+ "const": "cli-binary",
889
+ "type": "string"
890
+ }
891
+ ]
892
+ }
893
+ }
894
+ }
895
+ }
896
+ }
897
+ }
898
+ },
899
+ "$id": "https://harnessed.dev/schemas/manifest.v1.schema.json",
900
+ "title": "harnessed Manifest v1",
901
+ "description": "Per ADR 0001. Strict mode (additionalProperties: false everywhere).",
902
+ "allOf": [
903
+ {
904
+ "if": {
905
+ "type": "object",
906
+ "properties": {
907
+ "spec": {
908
+ "type": "object",
909
+ "properties": {
910
+ "type": {
911
+ "const": "cc-plugin"
912
+ }
913
+ },
914
+ "required": [
915
+ "type"
916
+ ]
917
+ }
918
+ },
919
+ "required": [
920
+ "spec"
921
+ ]
922
+ },
923
+ "then": {
924
+ "type": "object",
925
+ "properties": {
926
+ "spec": {
927
+ "type": "object",
928
+ "properties": {
929
+ "install": {
930
+ "type": "object",
931
+ "properties": {
932
+ "method": {
933
+ "enum": [
934
+ "cc-plugin-marketplace"
935
+ ]
936
+ }
937
+ },
938
+ "required": [
939
+ "method"
940
+ ]
941
+ }
942
+ },
943
+ "required": [
944
+ "install"
945
+ ]
946
+ }
947
+ },
948
+ "required": [
949
+ "spec"
950
+ ]
951
+ }
952
+ },
953
+ {
954
+ "if": {
955
+ "type": "object",
956
+ "properties": {
957
+ "spec": {
958
+ "type": "object",
959
+ "properties": {
960
+ "type": {
961
+ "const": "cc-skill-pack"
962
+ }
963
+ },
964
+ "required": [
965
+ "type"
966
+ ]
967
+ }
968
+ },
969
+ "required": [
970
+ "spec"
971
+ ]
972
+ },
973
+ "then": {
974
+ "type": "object",
975
+ "properties": {
976
+ "spec": {
977
+ "type": "object",
978
+ "properties": {
979
+ "install": {
980
+ "type": "object",
981
+ "properties": {
982
+ "method": {
983
+ "enum": [
984
+ "cc-plugin-marketplace",
985
+ "git-clone-with-setup",
986
+ "npx-skill-installer"
987
+ ]
988
+ }
989
+ },
990
+ "required": [
991
+ "method"
992
+ ]
993
+ }
994
+ },
995
+ "required": [
996
+ "install"
997
+ ]
998
+ }
999
+ },
1000
+ "required": [
1001
+ "spec"
1002
+ ]
1003
+ }
1004
+ },
1005
+ {
1006
+ "if": {
1007
+ "type": "object",
1008
+ "properties": {
1009
+ "spec": {
1010
+ "type": "object",
1011
+ "properties": {
1012
+ "type": {
1013
+ "const": "mcp-npm"
1014
+ }
1015
+ },
1016
+ "required": [
1017
+ "type"
1018
+ ]
1019
+ }
1020
+ },
1021
+ "required": [
1022
+ "spec"
1023
+ ]
1024
+ },
1025
+ "then": {
1026
+ "type": "object",
1027
+ "properties": {
1028
+ "spec": {
1029
+ "type": "object",
1030
+ "properties": {
1031
+ "install": {
1032
+ "type": "object",
1033
+ "properties": {
1034
+ "method": {
1035
+ "enum": [
1036
+ "mcp-stdio-add",
1037
+ "mcp-http-add"
1038
+ ]
1039
+ }
1040
+ },
1041
+ "required": [
1042
+ "method"
1043
+ ]
1044
+ }
1045
+ },
1046
+ "required": [
1047
+ "install"
1048
+ ]
1049
+ }
1050
+ },
1051
+ "required": [
1052
+ "spec"
1053
+ ]
1054
+ }
1055
+ },
1056
+ {
1057
+ "if": {
1058
+ "type": "object",
1059
+ "properties": {
1060
+ "spec": {
1061
+ "type": "object",
1062
+ "properties": {
1063
+ "type": {
1064
+ "const": "cli-npm"
1065
+ }
1066
+ },
1067
+ "required": [
1068
+ "type"
1069
+ ]
1070
+ }
1071
+ },
1072
+ "required": [
1073
+ "spec"
1074
+ ]
1075
+ },
1076
+ "then": {
1077
+ "type": "object",
1078
+ "properties": {
1079
+ "spec": {
1080
+ "type": "object",
1081
+ "properties": {
1082
+ "install": {
1083
+ "type": "object",
1084
+ "properties": {
1085
+ "method": {
1086
+ "enum": [
1087
+ "npm-cli"
1088
+ ]
1089
+ }
1090
+ },
1091
+ "required": [
1092
+ "method"
1093
+ ]
1094
+ }
1095
+ },
1096
+ "required": [
1097
+ "install"
1098
+ ]
1099
+ }
1100
+ },
1101
+ "required": [
1102
+ "spec"
1103
+ ]
1104
+ }
1105
+ }
1106
+ ]
1107
+ }