superacli 1.1.13 → 1.1.14

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 (75) hide show
  1. package/.agents/skills/humanenv-usage/SKILL.md +19 -0
  2. package/AGENTS.md +62 -0
  3. package/CONTRIBUTING.md +6 -2
  4. package/cli/plugin-install-guidance.js +25 -11
  5. package/cli/plugins-registry.js +25 -6
  6. package/cli/skills-catalog.js +85 -10
  7. package/coverage/clover.xml +1073 -965
  8. package/coverage/lcov-report/cli/adapter-schema.js.html +32 -32
  9. package/coverage/lcov-report/cli/adapters/builtin.js.html +1 -1
  10. package/coverage/lcov-report/cli/adapters/http.js.html +1 -1
  11. package/coverage/lcov-report/cli/adapters/index.html +1 -1
  12. package/coverage/lcov-report/cli/adapters/mcp.js.html +1 -1
  13. package/coverage/lcov-report/cli/adapters/openapi.js.html +1 -1
  14. package/coverage/lcov-report/cli/adapters/process.js.html +1 -1
  15. package/coverage/lcov-report/cli/adapters/shell.js.html +1 -1
  16. package/coverage/lcov-report/cli/ask.js.html +1 -1
  17. package/coverage/lcov-report/cli/config.js.html +109 -109
  18. package/coverage/lcov-report/cli/discover.js.html +1 -1
  19. package/coverage/lcov-report/cli/executor.js.html +1 -1
  20. package/coverage/lcov-report/cli/help-json.js.html +1 -1
  21. package/coverage/lcov-report/cli/index.html +92 -92
  22. package/coverage/lcov-report/cli/mcp-diagnostics.js.html +1 -1
  23. package/coverage/lcov-report/cli/mcp-discovery.js.html +1 -1
  24. package/coverage/lcov-report/cli/mcp-local.js.html +1 -1
  25. package/coverage/lcov-report/cli/mcp-stdio-jsonrpc.js.html +1 -1
  26. package/coverage/lcov-report/cli/namespace-passthrough.js.html +1 -1
  27. package/coverage/lcov-report/cli/plan-runtime.js.html +1 -1
  28. package/coverage/lcov-report/cli/planner.js.html +1 -1
  29. package/coverage/lcov-report/cli/plugin-install-guidance.js.html +919 -877
  30. package/coverage/lcov-report/cli/plugins-command.js.html +452 -452
  31. package/coverage/lcov-report/cli/plugins-learn.js.html +60 -60
  32. package/coverage/lcov-report/cli/plugins-manager.js.html +133 -133
  33. package/coverage/lcov-report/cli/plugins-registry.js.html +105 -48
  34. package/coverage/lcov-report/cli/plugins-store.js.html +106 -106
  35. package/coverage/lcov-report/cli/skills-catalog.js.html +366 -141
  36. package/coverage/lcov-report/cli/skills-mcp.js.html +1 -1
  37. package/coverage/lcov-report/cli/skills.js.html +1 -1
  38. package/coverage/lcov-report/index.html +19 -19
  39. package/coverage/lcov-report/server/app.js.html +1 -1
  40. package/coverage/lcov-report/server/index.html +1 -1
  41. package/coverage/lcov-report/server/routes/ask.js.html +1 -1
  42. package/coverage/lcov-report/server/routes/commands.js.html +1 -1
  43. package/coverage/lcov-report/server/routes/config.js.html +1 -1
  44. package/coverage/lcov-report/server/routes/index.html +1 -1
  45. package/coverage/lcov-report/server/routes/jobs.js.html +1 -1
  46. package/coverage/lcov-report/server/routes/mcp.js.html +1 -1
  47. package/coverage/lcov-report/server/routes/plans.js.html +1 -1
  48. package/coverage/lcov-report/server/routes/plugins.js.html +1 -1
  49. package/coverage/lcov-report/server/routes/specs.js.html +1 -1
  50. package/coverage/lcov-report/server/services/configService.js.html +1 -1
  51. package/coverage/lcov-report/server/services/index.html +1 -1
  52. package/coverage/lcov-report/server/services/pluginsService.js.html +1 -1
  53. package/coverage/lcov-report/server/storage/adapter.js.html +1 -1
  54. package/coverage/lcov-report/server/storage/file.js.html +1 -1
  55. package/coverage/lcov-report/server/storage/index.html +1 -1
  56. package/coverage/lcov-report/server/storage/mongo.js.html +1 -1
  57. package/coverage/lcov.info +1423 -1120
  58. package/package.json +1 -1
  59. package/plugins/beads/install-guidance.json +10 -0
  60. package/plugins/beads/meta.json +5 -0
  61. package/plugins/codedb/meta.json +5 -0
  62. package/plugins/codedb/plugin.json +169 -0
  63. package/plugins/codedb/skills/quickstart/SKILL.md +65 -0
  64. package/plugins/humanenv/.agents/skills/humanenv-sdk-python-usage/SKILL.md +37 -0
  65. package/plugins/humanenv/.agents/skills/humanenv-usage/SKILL.md +32 -0
  66. package/plugins/humanenv/plugin.json +65 -0
  67. package/plugins/humanenv/skills/quickstart/SKILL.md +95 -0
  68. package/plugins/mmx/install-guidance.json +10 -0
  69. package/plugins/mmx/meta.json +5 -0
  70. package/plugins/mmx/plugin.json +413 -0
  71. package/plugins/mmx/skills/quickstart/SKILL.md +234 -0
  72. package/plugins/plugins.json +21 -9
  73. package/plugins/rtk/README.md +63 -0
  74. package/plugins/rtk/plugin.json +79 -0
  75. package/plugins/rtk/skills/quickstart/SKILL.md +78 -0
@@ -23,30 +23,30 @@
23
23
  <div class='clearfix'>
24
24
 
25
25
  <div class='fl pad1y space-right2'>
26
- <span class="strong">0% </span>
26
+ <span class="strong">84.82% </span>
27
27
  <span class="quiet">Statements</span>
28
- <span class='fraction'>0/500</span>
28
+ <span class='fraction'>436/514</span>
29
29
  </div>
30
30
 
31
31
 
32
32
  <div class='fl pad1y space-right2'>
33
- <span class="strong">0% </span>
33
+ <span class="strong">100% </span>
34
34
  <span class="quiet">Branches</span>
35
- <span class='fraction'>0/1</span>
35
+ <span class='fraction'>0/0</span>
36
36
  </div>
37
37
 
38
38
 
39
39
  <div class='fl pad1y space-right2'>
40
40
  <span class="strong">0% </span>
41
41
  <span class="quiet">Functions</span>
42
- <span class='fraction'>0/1</span>
42
+ <span class='fraction'>0/6</span>
43
43
  </div>
44
44
 
45
45
 
46
46
  <div class='fl pad1y space-right2'>
47
- <span class="strong">0% </span>
47
+ <span class="strong">84.82% </span>
48
48
  <span class="quiet">Lines</span>
49
- <span class='fraction'>0/500</span>
49
+ <span class='fraction'>436/514</span>
50
50
  </div>
51
51
 
52
52
 
@@ -61,7 +61,7 @@
61
61
  </div>
62
62
  </template>
63
63
  </div>
64
- <div class='status-line low'></div>
64
+ <div class='status-line high'></div>
65
65
  <pre><table class="coverage">
66
66
  <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
67
  <a name='L2'></a><a href='#L2'>2</a>
@@ -563,226 +563,446 @@
563
563
  <a name='L498'></a><a href='#L498'>498</a>
564
564
  <a name='L499'></a><a href='#L499'>499</a>
565
565
  <a name='L500'></a><a href='#L500'>500</a>
566
- <a name='L501'></a><a href='#L501'>501</a></td><td class="line-coverage quiet"><span class="cline-any cline-no">&nbsp;</span>
567
- <span class="cline-any cline-no">&nbsp;</span>
568
- <span class="cline-any cline-no">&nbsp;</span>
569
- <span class="cline-any cline-no">&nbsp;</span>
570
- <span class="cline-any cline-no">&nbsp;</span>
571
- <span class="cline-any cline-no">&nbsp;</span>
572
- <span class="cline-any cline-no">&nbsp;</span>
573
- <span class="cline-any cline-no">&nbsp;</span>
574
- <span class="cline-any cline-no">&nbsp;</span>
575
- <span class="cline-any cline-no">&nbsp;</span>
576
- <span class="cline-any cline-no">&nbsp;</span>
577
- <span class="cline-any cline-no">&nbsp;</span>
578
- <span class="cline-any cline-no">&nbsp;</span>
579
- <span class="cline-any cline-no">&nbsp;</span>
580
- <span class="cline-any cline-no">&nbsp;</span>
581
- <span class="cline-any cline-no">&nbsp;</span>
582
- <span class="cline-any cline-no">&nbsp;</span>
583
- <span class="cline-any cline-no">&nbsp;</span>
584
- <span class="cline-any cline-no">&nbsp;</span>
585
- <span class="cline-any cline-no">&nbsp;</span>
586
- <span class="cline-any cline-no">&nbsp;</span>
587
- <span class="cline-any cline-no">&nbsp;</span>
588
- <span class="cline-any cline-no">&nbsp;</span>
589
- <span class="cline-any cline-no">&nbsp;</span>
590
- <span class="cline-any cline-no">&nbsp;</span>
591
- <span class="cline-any cline-no">&nbsp;</span>
592
- <span class="cline-any cline-no">&nbsp;</span>
593
- <span class="cline-any cline-no">&nbsp;</span>
594
- <span class="cline-any cline-no">&nbsp;</span>
595
- <span class="cline-any cline-no">&nbsp;</span>
596
- <span class="cline-any cline-no">&nbsp;</span>
597
- <span class="cline-any cline-no">&nbsp;</span>
598
- <span class="cline-any cline-no">&nbsp;</span>
599
- <span class="cline-any cline-no">&nbsp;</span>
600
- <span class="cline-any cline-no">&nbsp;</span>
601
- <span class="cline-any cline-no">&nbsp;</span>
602
- <span class="cline-any cline-no">&nbsp;</span>
603
- <span class="cline-any cline-no">&nbsp;</span>
604
- <span class="cline-any cline-no">&nbsp;</span>
605
- <span class="cline-any cline-no">&nbsp;</span>
606
- <span class="cline-any cline-no">&nbsp;</span>
607
- <span class="cline-any cline-no">&nbsp;</span>
608
- <span class="cline-any cline-no">&nbsp;</span>
609
- <span class="cline-any cline-no">&nbsp;</span>
610
- <span class="cline-any cline-no">&nbsp;</span>
611
- <span class="cline-any cline-no">&nbsp;</span>
612
- <span class="cline-any cline-no">&nbsp;</span>
613
- <span class="cline-any cline-no">&nbsp;</span>
614
- <span class="cline-any cline-no">&nbsp;</span>
615
- <span class="cline-any cline-no">&nbsp;</span>
616
- <span class="cline-any cline-no">&nbsp;</span>
617
- <span class="cline-any cline-no">&nbsp;</span>
618
- <span class="cline-any cline-no">&nbsp;</span>
619
- <span class="cline-any cline-no">&nbsp;</span>
620
- <span class="cline-any cline-no">&nbsp;</span>
621
- <span class="cline-any cline-no">&nbsp;</span>
622
- <span class="cline-any cline-no">&nbsp;</span>
623
- <span class="cline-any cline-no">&nbsp;</span>
624
- <span class="cline-any cline-no">&nbsp;</span>
625
- <span class="cline-any cline-no">&nbsp;</span>
626
- <span class="cline-any cline-no">&nbsp;</span>
627
- <span class="cline-any cline-no">&nbsp;</span>
628
- <span class="cline-any cline-no">&nbsp;</span>
629
- <span class="cline-any cline-no">&nbsp;</span>
630
- <span class="cline-any cline-no">&nbsp;</span>
631
- <span class="cline-any cline-no">&nbsp;</span>
632
- <span class="cline-any cline-no">&nbsp;</span>
633
- <span class="cline-any cline-no">&nbsp;</span>
634
- <span class="cline-any cline-no">&nbsp;</span>
635
- <span class="cline-any cline-no">&nbsp;</span>
636
- <span class="cline-any cline-no">&nbsp;</span>
637
- <span class="cline-any cline-no">&nbsp;</span>
638
- <span class="cline-any cline-no">&nbsp;</span>
639
- <span class="cline-any cline-no">&nbsp;</span>
640
- <span class="cline-any cline-no">&nbsp;</span>
641
- <span class="cline-any cline-no">&nbsp;</span>
642
- <span class="cline-any cline-no">&nbsp;</span>
643
- <span class="cline-any cline-no">&nbsp;</span>
644
- <span class="cline-any cline-no">&nbsp;</span>
645
- <span class="cline-any cline-no">&nbsp;</span>
646
- <span class="cline-any cline-no">&nbsp;</span>
647
- <span class="cline-any cline-no">&nbsp;</span>
648
- <span class="cline-any cline-no">&nbsp;</span>
649
- <span class="cline-any cline-no">&nbsp;</span>
650
- <span class="cline-any cline-no">&nbsp;</span>
651
- <span class="cline-any cline-no">&nbsp;</span>
652
- <span class="cline-any cline-no">&nbsp;</span>
653
- <span class="cline-any cline-no">&nbsp;</span>
654
- <span class="cline-any cline-no">&nbsp;</span>
655
- <span class="cline-any cline-no">&nbsp;</span>
656
- <span class="cline-any cline-no">&nbsp;</span>
657
- <span class="cline-any cline-no">&nbsp;</span>
658
- <span class="cline-any cline-no">&nbsp;</span>
659
- <span class="cline-any cline-no">&nbsp;</span>
660
- <span class="cline-any cline-no">&nbsp;</span>
661
- <span class="cline-any cline-no">&nbsp;</span>
662
- <span class="cline-any cline-no">&nbsp;</span>
663
- <span class="cline-any cline-no">&nbsp;</span>
664
- <span class="cline-any cline-no">&nbsp;</span>
665
- <span class="cline-any cline-no">&nbsp;</span>
666
- <span class="cline-any cline-no">&nbsp;</span>
667
- <span class="cline-any cline-no">&nbsp;</span>
668
- <span class="cline-any cline-no">&nbsp;</span>
669
- <span class="cline-any cline-no">&nbsp;</span>
670
- <span class="cline-any cline-no">&nbsp;</span>
671
- <span class="cline-any cline-no">&nbsp;</span>
672
- <span class="cline-any cline-no">&nbsp;</span>
673
- <span class="cline-any cline-no">&nbsp;</span>
674
- <span class="cline-any cline-no">&nbsp;</span>
675
- <span class="cline-any cline-no">&nbsp;</span>
676
- <span class="cline-any cline-no">&nbsp;</span>
677
- <span class="cline-any cline-no">&nbsp;</span>
678
- <span class="cline-any cline-no">&nbsp;</span>
679
- <span class="cline-any cline-no">&nbsp;</span>
680
- <span class="cline-any cline-no">&nbsp;</span>
681
- <span class="cline-any cline-no">&nbsp;</span>
682
- <span class="cline-any cline-no">&nbsp;</span>
683
- <span class="cline-any cline-no">&nbsp;</span>
684
- <span class="cline-any cline-no">&nbsp;</span>
685
- <span class="cline-any cline-no">&nbsp;</span>
686
- <span class="cline-any cline-no">&nbsp;</span>
687
- <span class="cline-any cline-no">&nbsp;</span>
688
- <span class="cline-any cline-no">&nbsp;</span>
689
- <span class="cline-any cline-no">&nbsp;</span>
690
- <span class="cline-any cline-no">&nbsp;</span>
691
- <span class="cline-any cline-no">&nbsp;</span>
692
- <span class="cline-any cline-no">&nbsp;</span>
693
- <span class="cline-any cline-no">&nbsp;</span>
694
- <span class="cline-any cline-no">&nbsp;</span>
695
- <span class="cline-any cline-no">&nbsp;</span>
696
- <span class="cline-any cline-no">&nbsp;</span>
697
- <span class="cline-any cline-no">&nbsp;</span>
698
- <span class="cline-any cline-no">&nbsp;</span>
699
- <span class="cline-any cline-no">&nbsp;</span>
700
- <span class="cline-any cline-no">&nbsp;</span>
701
- <span class="cline-any cline-no">&nbsp;</span>
702
- <span class="cline-any cline-no">&nbsp;</span>
703
- <span class="cline-any cline-no">&nbsp;</span>
704
- <span class="cline-any cline-no">&nbsp;</span>
705
- <span class="cline-any cline-no">&nbsp;</span>
706
- <span class="cline-any cline-no">&nbsp;</span>
707
- <span class="cline-any cline-no">&nbsp;</span>
708
- <span class="cline-any cline-no">&nbsp;</span>
709
- <span class="cline-any cline-no">&nbsp;</span>
710
- <span class="cline-any cline-no">&nbsp;</span>
711
- <span class="cline-any cline-no">&nbsp;</span>
712
- <span class="cline-any cline-no">&nbsp;</span>
713
- <span class="cline-any cline-no">&nbsp;</span>
714
- <span class="cline-any cline-no">&nbsp;</span>
715
- <span class="cline-any cline-no">&nbsp;</span>
716
- <span class="cline-any cline-no">&nbsp;</span>
717
- <span class="cline-any cline-no">&nbsp;</span>
718
- <span class="cline-any cline-no">&nbsp;</span>
719
- <span class="cline-any cline-no">&nbsp;</span>
720
- <span class="cline-any cline-no">&nbsp;</span>
721
- <span class="cline-any cline-no">&nbsp;</span>
722
- <span class="cline-any cline-no">&nbsp;</span>
723
- <span class="cline-any cline-no">&nbsp;</span>
724
- <span class="cline-any cline-no">&nbsp;</span>
725
- <span class="cline-any cline-no">&nbsp;</span>
726
- <span class="cline-any cline-no">&nbsp;</span>
727
- <span class="cline-any cline-no">&nbsp;</span>
728
- <span class="cline-any cline-no">&nbsp;</span>
729
- <span class="cline-any cline-no">&nbsp;</span>
730
- <span class="cline-any cline-no">&nbsp;</span>
731
- <span class="cline-any cline-no">&nbsp;</span>
732
- <span class="cline-any cline-no">&nbsp;</span>
733
- <span class="cline-any cline-no">&nbsp;</span>
734
- <span class="cline-any cline-no">&nbsp;</span>
735
- <span class="cline-any cline-no">&nbsp;</span>
736
- <span class="cline-any cline-no">&nbsp;</span>
737
- <span class="cline-any cline-no">&nbsp;</span>
738
- <span class="cline-any cline-no">&nbsp;</span>
739
- <span class="cline-any cline-no">&nbsp;</span>
740
- <span class="cline-any cline-no">&nbsp;</span>
741
- <span class="cline-any cline-no">&nbsp;</span>
742
- <span class="cline-any cline-no">&nbsp;</span>
743
- <span class="cline-any cline-no">&nbsp;</span>
744
- <span class="cline-any cline-no">&nbsp;</span>
745
- <span class="cline-any cline-no">&nbsp;</span>
746
- <span class="cline-any cline-no">&nbsp;</span>
747
- <span class="cline-any cline-no">&nbsp;</span>
748
- <span class="cline-any cline-no">&nbsp;</span>
749
- <span class="cline-any cline-no">&nbsp;</span>
750
- <span class="cline-any cline-no">&nbsp;</span>
751
- <span class="cline-any cline-no">&nbsp;</span>
752
- <span class="cline-any cline-no">&nbsp;</span>
753
- <span class="cline-any cline-no">&nbsp;</span>
754
- <span class="cline-any cline-no">&nbsp;</span>
755
- <span class="cline-any cline-no">&nbsp;</span>
756
- <span class="cline-any cline-no">&nbsp;</span>
757
- <span class="cline-any cline-no">&nbsp;</span>
758
- <span class="cline-any cline-no">&nbsp;</span>
759
- <span class="cline-any cline-no">&nbsp;</span>
760
- <span class="cline-any cline-no">&nbsp;</span>
761
- <span class="cline-any cline-no">&nbsp;</span>
762
- <span class="cline-any cline-no">&nbsp;</span>
763
- <span class="cline-any cline-no">&nbsp;</span>
764
- <span class="cline-any cline-no">&nbsp;</span>
765
- <span class="cline-any cline-no">&nbsp;</span>
766
- <span class="cline-any cline-no">&nbsp;</span>
767
- <span class="cline-any cline-no">&nbsp;</span>
768
- <span class="cline-any cline-no">&nbsp;</span>
769
- <span class="cline-any cline-no">&nbsp;</span>
770
- <span class="cline-any cline-no">&nbsp;</span>
771
- <span class="cline-any cline-no">&nbsp;</span>
772
- <span class="cline-any cline-no">&nbsp;</span>
773
- <span class="cline-any cline-no">&nbsp;</span>
774
- <span class="cline-any cline-no">&nbsp;</span>
775
- <span class="cline-any cline-no">&nbsp;</span>
776
- <span class="cline-any cline-no">&nbsp;</span>
777
- <span class="cline-any cline-no">&nbsp;</span>
778
- <span class="cline-any cline-no">&nbsp;</span>
779
- <span class="cline-any cline-no">&nbsp;</span>
780
- <span class="cline-any cline-no">&nbsp;</span>
781
- <span class="cline-any cline-no">&nbsp;</span>
782
- <span class="cline-any cline-no">&nbsp;</span>
783
- <span class="cline-any cline-no">&nbsp;</span>
784
- <span class="cline-any cline-no">&nbsp;</span>
785
- <span class="cline-any cline-no">&nbsp;</span>
566
+ <a name='L501'></a><a href='#L501'>501</a>
567
+ <a name='L502'></a><a href='#L502'>502</a>
568
+ <a name='L503'></a><a href='#L503'>503</a>
569
+ <a name='L504'></a><a href='#L504'>504</a>
570
+ <a name='L505'></a><a href='#L505'>505</a>
571
+ <a name='L506'></a><a href='#L506'>506</a>
572
+ <a name='L507'></a><a href='#L507'>507</a>
573
+ <a name='L508'></a><a href='#L508'>508</a>
574
+ <a name='L509'></a><a href='#L509'>509</a>
575
+ <a name='L510'></a><a href='#L510'>510</a>
576
+ <a name='L511'></a><a href='#L511'>511</a>
577
+ <a name='L512'></a><a href='#L512'>512</a>
578
+ <a name='L513'></a><a href='#L513'>513</a>
579
+ <a name='L514'></a><a href='#L514'>514</a>
580
+ <a name='L515'></a><a href='#L515'>515</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
581
+ <span class="cline-any cline-yes">1x</span>
582
+ <span class="cline-any cline-yes">1x</span>
583
+ <span class="cline-any cline-yes">1x</span>
584
+ <span class="cline-any cline-yes">1x</span>
585
+ <span class="cline-any cline-yes">1x</span>
586
+ <span class="cline-any cline-yes">1x</span>
587
+ <span class="cline-any cline-yes">1x</span>
588
+ <span class="cline-any cline-yes">1x</span>
589
+ <span class="cline-any cline-yes">1x</span>
590
+ <span class="cline-any cline-yes">1x</span>
591
+ <span class="cline-any cline-yes">1x</span>
592
+ <span class="cline-any cline-yes">1x</span>
593
+ <span class="cline-any cline-yes">1x</span>
594
+ <span class="cline-any cline-yes">1x</span>
595
+ <span class="cline-any cline-yes">1x</span>
596
+ <span class="cline-any cline-yes">1x</span>
597
+ <span class="cline-any cline-yes">1x</span>
598
+ <span class="cline-any cline-yes">1x</span>
599
+ <span class="cline-any cline-yes">1x</span>
600
+ <span class="cline-any cline-yes">1x</span>
601
+ <span class="cline-any cline-yes">1x</span>
602
+ <span class="cline-any cline-yes">1x</span>
603
+ <span class="cline-any cline-yes">1x</span>
604
+ <span class="cline-any cline-yes">1x</span>
605
+ <span class="cline-any cline-yes">1x</span>
606
+ <span class="cline-any cline-yes">1x</span>
607
+ <span class="cline-any cline-yes">1x</span>
608
+ <span class="cline-any cline-yes">1x</span>
609
+ <span class="cline-any cline-yes">1x</span>
610
+ <span class="cline-any cline-yes">1x</span>
611
+ <span class="cline-any cline-yes">1x</span>
612
+ <span class="cline-any cline-yes">1x</span>
613
+ <span class="cline-any cline-yes">1x</span>
614
+ <span class="cline-any cline-yes">1x</span>
615
+ <span class="cline-any cline-yes">1x</span>
616
+ <span class="cline-any cline-yes">1x</span>
617
+ <span class="cline-any cline-yes">1x</span>
618
+ <span class="cline-any cline-yes">1x</span>
619
+ <span class="cline-any cline-yes">1x</span>
620
+ <span class="cline-any cline-yes">1x</span>
621
+ <span class="cline-any cline-yes">1x</span>
622
+ <span class="cline-any cline-yes">1x</span>
623
+ <span class="cline-any cline-yes">1x</span>
624
+ <span class="cline-any cline-yes">1x</span>
625
+ <span class="cline-any cline-yes">1x</span>
626
+ <span class="cline-any cline-yes">1x</span>
627
+ <span class="cline-any cline-yes">1x</span>
628
+ <span class="cline-any cline-yes">1x</span>
629
+ <span class="cline-any cline-yes">1x</span>
630
+ <span class="cline-any cline-yes">1x</span>
631
+ <span class="cline-any cline-yes">1x</span>
632
+ <span class="cline-any cline-yes">1x</span>
633
+ <span class="cline-any cline-yes">1x</span>
634
+ <span class="cline-any cline-yes">1x</span>
635
+ <span class="cline-any cline-yes">1x</span>
636
+ <span class="cline-any cline-yes">1x</span>
637
+ <span class="cline-any cline-yes">1x</span>
638
+ <span class="cline-any cline-yes">1x</span>
639
+ <span class="cline-any cline-yes">1x</span>
640
+ <span class="cline-any cline-yes">1x</span>
641
+ <span class="cline-any cline-yes">1x</span>
642
+ <span class="cline-any cline-yes">1x</span>
643
+ <span class="cline-any cline-yes">1x</span>
644
+ <span class="cline-any cline-yes">1x</span>
645
+ <span class="cline-any cline-yes">1x</span>
646
+ <span class="cline-any cline-yes">1x</span>
647
+ <span class="cline-any cline-yes">1x</span>
648
+ <span class="cline-any cline-yes">1x</span>
649
+ <span class="cline-any cline-yes">1x</span>
650
+ <span class="cline-any cline-yes">1x</span>
651
+ <span class="cline-any cline-yes">1x</span>
652
+ <span class="cline-any cline-yes">1x</span>
653
+ <span class="cline-any cline-yes">1x</span>
654
+ <span class="cline-any cline-yes">1x</span>
655
+ <span class="cline-any cline-yes">1x</span>
656
+ <span class="cline-any cline-yes">1x</span>
657
+ <span class="cline-any cline-yes">1x</span>
658
+ <span class="cline-any cline-yes">1x</span>
659
+ <span class="cline-any cline-yes">1x</span>
660
+ <span class="cline-any cline-yes">1x</span>
661
+ <span class="cline-any cline-yes">1x</span>
662
+ <span class="cline-any cline-yes">1x</span>
663
+ <span class="cline-any cline-yes">1x</span>
664
+ <span class="cline-any cline-yes">1x</span>
665
+ <span class="cline-any cline-yes">1x</span>
666
+ <span class="cline-any cline-yes">1x</span>
667
+ <span class="cline-any cline-yes">1x</span>
668
+ <span class="cline-any cline-yes">1x</span>
669
+ <span class="cline-any cline-yes">1x</span>
670
+ <span class="cline-any cline-yes">1x</span>
671
+ <span class="cline-any cline-yes">1x</span>
672
+ <span class="cline-any cline-yes">1x</span>
673
+ <span class="cline-any cline-yes">1x</span>
674
+ <span class="cline-any cline-yes">1x</span>
675
+ <span class="cline-any cline-yes">1x</span>
676
+ <span class="cline-any cline-yes">1x</span>
677
+ <span class="cline-any cline-yes">1x</span>
678
+ <span class="cline-any cline-yes">1x</span>
679
+ <span class="cline-any cline-yes">1x</span>
680
+ <span class="cline-any cline-yes">1x</span>
681
+ <span class="cline-any cline-yes">1x</span>
682
+ <span class="cline-any cline-yes">1x</span>
683
+ <span class="cline-any cline-yes">1x</span>
684
+ <span class="cline-any cline-yes">1x</span>
685
+ <span class="cline-any cline-yes">1x</span>
686
+ <span class="cline-any cline-yes">1x</span>
687
+ <span class="cline-any cline-yes">1x</span>
688
+ <span class="cline-any cline-yes">1x</span>
689
+ <span class="cline-any cline-yes">1x</span>
690
+ <span class="cline-any cline-yes">1x</span>
691
+ <span class="cline-any cline-yes">1x</span>
692
+ <span class="cline-any cline-yes">1x</span>
693
+ <span class="cline-any cline-yes">1x</span>
694
+ <span class="cline-any cline-yes">1x</span>
695
+ <span class="cline-any cline-yes">1x</span>
696
+ <span class="cline-any cline-yes">1x</span>
697
+ <span class="cline-any cline-yes">1x</span>
698
+ <span class="cline-any cline-yes">1x</span>
699
+ <span class="cline-any cline-yes">1x</span>
700
+ <span class="cline-any cline-yes">1x</span>
701
+ <span class="cline-any cline-yes">1x</span>
702
+ <span class="cline-any cline-yes">1x</span>
703
+ <span class="cline-any cline-yes">1x</span>
704
+ <span class="cline-any cline-yes">1x</span>
705
+ <span class="cline-any cline-yes">1x</span>
706
+ <span class="cline-any cline-yes">1x</span>
707
+ <span class="cline-any cline-yes">1x</span>
708
+ <span class="cline-any cline-yes">1x</span>
709
+ <span class="cline-any cline-yes">1x</span>
710
+ <span class="cline-any cline-yes">1x</span>
711
+ <span class="cline-any cline-yes">1x</span>
712
+ <span class="cline-any cline-yes">1x</span>
713
+ <span class="cline-any cline-yes">1x</span>
714
+ <span class="cline-any cline-yes">1x</span>
715
+ <span class="cline-any cline-yes">1x</span>
716
+ <span class="cline-any cline-yes">1x</span>
717
+ <span class="cline-any cline-yes">1x</span>
718
+ <span class="cline-any cline-yes">1x</span>
719
+ <span class="cline-any cline-yes">1x</span>
720
+ <span class="cline-any cline-yes">1x</span>
721
+ <span class="cline-any cline-yes">1x</span>
722
+ <span class="cline-any cline-yes">1x</span>
723
+ <span class="cline-any cline-yes">1x</span>
724
+ <span class="cline-any cline-yes">1x</span>
725
+ <span class="cline-any cline-yes">1x</span>
726
+ <span class="cline-any cline-yes">1x</span>
727
+ <span class="cline-any cline-yes">1x</span>
728
+ <span class="cline-any cline-yes">1x</span>
729
+ <span class="cline-any cline-yes">1x</span>
730
+ <span class="cline-any cline-yes">1x</span>
731
+ <span class="cline-any cline-yes">1x</span>
732
+ <span class="cline-any cline-yes">1x</span>
733
+ <span class="cline-any cline-yes">1x</span>
734
+ <span class="cline-any cline-yes">1x</span>
735
+ <span class="cline-any cline-yes">1x</span>
736
+ <span class="cline-any cline-yes">1x</span>
737
+ <span class="cline-any cline-yes">1x</span>
738
+ <span class="cline-any cline-yes">1x</span>
739
+ <span class="cline-any cline-yes">1x</span>
740
+ <span class="cline-any cline-yes">1x</span>
741
+ <span class="cline-any cline-yes">1x</span>
742
+ <span class="cline-any cline-yes">1x</span>
743
+ <span class="cline-any cline-yes">1x</span>
744
+ <span class="cline-any cline-yes">1x</span>
745
+ <span class="cline-any cline-yes">1x</span>
746
+ <span class="cline-any cline-yes">1x</span>
747
+ <span class="cline-any cline-yes">1x</span>
748
+ <span class="cline-any cline-yes">1x</span>
749
+ <span class="cline-any cline-yes">1x</span>
750
+ <span class="cline-any cline-yes">1x</span>
751
+ <span class="cline-any cline-yes">1x</span>
752
+ <span class="cline-any cline-yes">1x</span>
753
+ <span class="cline-any cline-yes">1x</span>
754
+ <span class="cline-any cline-yes">1x</span>
755
+ <span class="cline-any cline-yes">1x</span>
756
+ <span class="cline-any cline-yes">1x</span>
757
+ <span class="cline-any cline-yes">1x</span>
758
+ <span class="cline-any cline-yes">1x</span>
759
+ <span class="cline-any cline-yes">1x</span>
760
+ <span class="cline-any cline-yes">1x</span>
761
+ <span class="cline-any cline-yes">1x</span>
762
+ <span class="cline-any cline-yes">1x</span>
763
+ <span class="cline-any cline-yes">1x</span>
764
+ <span class="cline-any cline-yes">1x</span>
765
+ <span class="cline-any cline-yes">1x</span>
766
+ <span class="cline-any cline-yes">1x</span>
767
+ <span class="cline-any cline-yes">1x</span>
768
+ <span class="cline-any cline-yes">1x</span>
769
+ <span class="cline-any cline-yes">1x</span>
770
+ <span class="cline-any cline-yes">1x</span>
771
+ <span class="cline-any cline-yes">1x</span>
772
+ <span class="cline-any cline-yes">1x</span>
773
+ <span class="cline-any cline-yes">1x</span>
774
+ <span class="cline-any cline-yes">1x</span>
775
+ <span class="cline-any cline-yes">1x</span>
776
+ <span class="cline-any cline-yes">1x</span>
777
+ <span class="cline-any cline-yes">1x</span>
778
+ <span class="cline-any cline-yes">1x</span>
779
+ <span class="cline-any cline-yes">1x</span>
780
+ <span class="cline-any cline-yes">1x</span>
781
+ <span class="cline-any cline-yes">1x</span>
782
+ <span class="cline-any cline-yes">1x</span>
783
+ <span class="cline-any cline-yes">1x</span>
784
+ <span class="cline-any cline-yes">1x</span>
785
+ <span class="cline-any cline-yes">1x</span>
786
+ <span class="cline-any cline-yes">1x</span>
787
+ <span class="cline-any cline-yes">1x</span>
788
+ <span class="cline-any cline-yes">1x</span>
789
+ <span class="cline-any cline-yes">1x</span>
790
+ <span class="cline-any cline-yes">1x</span>
791
+ <span class="cline-any cline-yes">1x</span>
792
+ <span class="cline-any cline-yes">1x</span>
793
+ <span class="cline-any cline-yes">1x</span>
794
+ <span class="cline-any cline-yes">1x</span>
795
+ <span class="cline-any cline-yes">1x</span>
796
+ <span class="cline-any cline-yes">1x</span>
797
+ <span class="cline-any cline-yes">1x</span>
798
+ <span class="cline-any cline-yes">1x</span>
799
+ <span class="cline-any cline-yes">1x</span>
800
+ <span class="cline-any cline-yes">1x</span>
801
+ <span class="cline-any cline-yes">1x</span>
802
+ <span class="cline-any cline-yes">1x</span>
803
+ <span class="cline-any cline-yes">1x</span>
804
+ <span class="cline-any cline-yes">1x</span>
805
+ <span class="cline-any cline-yes">1x</span>
806
+ <span class="cline-any cline-yes">1x</span>
807
+ <span class="cline-any cline-yes">1x</span>
808
+ <span class="cline-any cline-yes">1x</span>
809
+ <span class="cline-any cline-yes">1x</span>
810
+ <span class="cline-any cline-yes">1x</span>
811
+ <span class="cline-any cline-yes">1x</span>
812
+ <span class="cline-any cline-yes">1x</span>
813
+ <span class="cline-any cline-yes">1x</span>
814
+ <span class="cline-any cline-yes">1x</span>
815
+ <span class="cline-any cline-yes">1x</span>
816
+ <span class="cline-any cline-yes">1x</span>
817
+ <span class="cline-any cline-yes">1x</span>
818
+ <span class="cline-any cline-yes">1x</span>
819
+ <span class="cline-any cline-yes">1x</span>
820
+ <span class="cline-any cline-yes">1x</span>
821
+ <span class="cline-any cline-yes">1x</span>
822
+ <span class="cline-any cline-yes">1x</span>
823
+ <span class="cline-any cline-yes">1x</span>
824
+ <span class="cline-any cline-yes">1x</span>
825
+ <span class="cline-any cline-yes">1x</span>
826
+ <span class="cline-any cline-yes">1x</span>
827
+ <span class="cline-any cline-yes">1x</span>
828
+ <span class="cline-any cline-yes">1x</span>
829
+ <span class="cline-any cline-yes">1x</span>
830
+ <span class="cline-any cline-yes">1x</span>
831
+ <span class="cline-any cline-yes">1x</span>
832
+ <span class="cline-any cline-yes">1x</span>
833
+ <span class="cline-any cline-yes">1x</span>
834
+ <span class="cline-any cline-yes">1x</span>
835
+ <span class="cline-any cline-yes">1x</span>
836
+ <span class="cline-any cline-yes">1x</span>
837
+ <span class="cline-any cline-yes">1x</span>
838
+ <span class="cline-any cline-yes">1x</span>
839
+ <span class="cline-any cline-yes">1x</span>
840
+ <span class="cline-any cline-yes">1x</span>
841
+ <span class="cline-any cline-yes">1x</span>
842
+ <span class="cline-any cline-yes">1x</span>
843
+ <span class="cline-any cline-yes">1x</span>
844
+ <span class="cline-any cline-yes">1x</span>
845
+ <span class="cline-any cline-yes">1x</span>
846
+ <span class="cline-any cline-yes">1x</span>
847
+ <span class="cline-any cline-yes">1x</span>
848
+ <span class="cline-any cline-yes">1x</span>
849
+ <span class="cline-any cline-yes">1x</span>
850
+ <span class="cline-any cline-yes">1x</span>
851
+ <span class="cline-any cline-yes">1x</span>
852
+ <span class="cline-any cline-yes">1x</span>
853
+ <span class="cline-any cline-yes">1x</span>
854
+ <span class="cline-any cline-yes">1x</span>
855
+ <span class="cline-any cline-yes">1x</span>
856
+ <span class="cline-any cline-yes">1x</span>
857
+ <span class="cline-any cline-yes">1x</span>
858
+ <span class="cline-any cline-yes">1x</span>
859
+ <span class="cline-any cline-yes">1x</span>
860
+ <span class="cline-any cline-yes">1x</span>
861
+ <span class="cline-any cline-yes">1x</span>
862
+ <span class="cline-any cline-yes">1x</span>
863
+ <span class="cline-any cline-yes">1x</span>
864
+ <span class="cline-any cline-yes">1x</span>
865
+ <span class="cline-any cline-yes">1x</span>
866
+ <span class="cline-any cline-yes">1x</span>
867
+ <span class="cline-any cline-yes">1x</span>
868
+ <span class="cline-any cline-yes">1x</span>
869
+ <span class="cline-any cline-yes">1x</span>
870
+ <span class="cline-any cline-yes">1x</span>
871
+ <span class="cline-any cline-yes">1x</span>
872
+ <span class="cline-any cline-yes">1x</span>
873
+ <span class="cline-any cline-yes">1x</span>
874
+ <span class="cline-any cline-yes">1x</span>
875
+ <span class="cline-any cline-yes">1x</span>
876
+ <span class="cline-any cline-yes">1x</span>
877
+ <span class="cline-any cline-yes">1x</span>
878
+ <span class="cline-any cline-yes">1x</span>
879
+ <span class="cline-any cline-yes">1x</span>
880
+ <span class="cline-any cline-yes">1x</span>
881
+ <span class="cline-any cline-yes">1x</span>
882
+ <span class="cline-any cline-yes">1x</span>
883
+ <span class="cline-any cline-yes">1x</span>
884
+ <span class="cline-any cline-yes">1x</span>
885
+ <span class="cline-any cline-yes">1x</span>
886
+ <span class="cline-any cline-yes">1x</span>
887
+ <span class="cline-any cline-yes">1x</span>
888
+ <span class="cline-any cline-yes">1x</span>
889
+ <span class="cline-any cline-yes">1x</span>
890
+ <span class="cline-any cline-yes">1x</span>
891
+ <span class="cline-any cline-yes">1x</span>
892
+ <span class="cline-any cline-yes">1x</span>
893
+ <span class="cline-any cline-yes">1x</span>
894
+ <span class="cline-any cline-yes">1x</span>
895
+ <span class="cline-any cline-yes">1x</span>
896
+ <span class="cline-any cline-yes">1x</span>
897
+ <span class="cline-any cline-yes">1x</span>
898
+ <span class="cline-any cline-yes">1x</span>
899
+ <span class="cline-any cline-yes">1x</span>
900
+ <span class="cline-any cline-yes">1x</span>
901
+ <span class="cline-any cline-yes">1x</span>
902
+ <span class="cline-any cline-yes">1x</span>
903
+ <span class="cline-any cline-yes">1x</span>
904
+ <span class="cline-any cline-yes">1x</span>
905
+ <span class="cline-any cline-yes">1x</span>
906
+ <span class="cline-any cline-yes">1x</span>
907
+ <span class="cline-any cline-yes">1x</span>
908
+ <span class="cline-any cline-yes">1x</span>
909
+ <span class="cline-any cline-yes">1x</span>
910
+ <span class="cline-any cline-yes">1x</span>
911
+ <span class="cline-any cline-yes">1x</span>
912
+ <span class="cline-any cline-yes">1x</span>
913
+ <span class="cline-any cline-yes">1x</span>
914
+ <span class="cline-any cline-yes">1x</span>
915
+ <span class="cline-any cline-yes">1x</span>
916
+ <span class="cline-any cline-yes">1x</span>
917
+ <span class="cline-any cline-yes">1x</span>
918
+ <span class="cline-any cline-yes">1x</span>
919
+ <span class="cline-any cline-yes">1x</span>
920
+ <span class="cline-any cline-yes">1x</span>
921
+ <span class="cline-any cline-yes">1x</span>
922
+ <span class="cline-any cline-yes">1x</span>
923
+ <span class="cline-any cline-yes">1x</span>
924
+ <span class="cline-any cline-yes">1x</span>
925
+ <span class="cline-any cline-yes">1x</span>
926
+ <span class="cline-any cline-yes">1x</span>
927
+ <span class="cline-any cline-yes">1x</span>
928
+ <span class="cline-any cline-yes">1x</span>
929
+ <span class="cline-any cline-yes">1x</span>
930
+ <span class="cline-any cline-yes">1x</span>
931
+ <span class="cline-any cline-yes">1x</span>
932
+ <span class="cline-any cline-yes">1x</span>
933
+ <span class="cline-any cline-yes">1x</span>
934
+ <span class="cline-any cline-yes">1x</span>
935
+ <span class="cline-any cline-yes">1x</span>
936
+ <span class="cline-any cline-yes">1x</span>
937
+ <span class="cline-any cline-yes">1x</span>
938
+ <span class="cline-any cline-yes">1x</span>
939
+ <span class="cline-any cline-yes">1x</span>
940
+ <span class="cline-any cline-yes">1x</span>
941
+ <span class="cline-any cline-yes">1x</span>
942
+ <span class="cline-any cline-yes">1x</span>
943
+ <span class="cline-any cline-yes">1x</span>
944
+ <span class="cline-any cline-yes">1x</span>
945
+ <span class="cline-any cline-yes">1x</span>
946
+ <span class="cline-any cline-yes">1x</span>
947
+ <span class="cline-any cline-yes">1x</span>
948
+ <span class="cline-any cline-yes">1x</span>
949
+ <span class="cline-any cline-yes">1x</span>
950
+ <span class="cline-any cline-yes">1x</span>
951
+ <span class="cline-any cline-yes">1x</span>
952
+ <span class="cline-any cline-yes">1x</span>
953
+ <span class="cline-any cline-yes">1x</span>
954
+ <span class="cline-any cline-yes">1x</span>
955
+ <span class="cline-any cline-yes">1x</span>
956
+ <span class="cline-any cline-yes">1x</span>
957
+ <span class="cline-any cline-yes">1x</span>
958
+ <span class="cline-any cline-yes">1x</span>
959
+ <span class="cline-any cline-yes">1x</span>
960
+ <span class="cline-any cline-yes">1x</span>
961
+ <span class="cline-any cline-yes">1x</span>
962
+ <span class="cline-any cline-yes">1x</span>
963
+ <span class="cline-any cline-yes">1x</span>
964
+ <span class="cline-any cline-yes">1x</span>
965
+ <span class="cline-any cline-yes">1x</span>
966
+ <span class="cline-any cline-yes">1x</span>
967
+ <span class="cline-any cline-yes">1x</span>
968
+ <span class="cline-any cline-yes">1x</span>
969
+ <span class="cline-any cline-yes">1x</span>
970
+ <span class="cline-any cline-yes">1x</span>
971
+ <span class="cline-any cline-yes">1x</span>
972
+ <span class="cline-any cline-yes">1x</span>
973
+ <span class="cline-any cline-yes">1x</span>
974
+ <span class="cline-any cline-yes">1x</span>
975
+ <span class="cline-any cline-yes">1x</span>
976
+ <span class="cline-any cline-yes">1x</span>
977
+ <span class="cline-any cline-yes">1x</span>
978
+ <span class="cline-any cline-yes">1x</span>
979
+ <span class="cline-any cline-yes">1x</span>
980
+ <span class="cline-any cline-yes">1x</span>
981
+ <span class="cline-any cline-yes">1x</span>
982
+ <span class="cline-any cline-yes">1x</span>
983
+ <span class="cline-any cline-yes">1x</span>
984
+ <span class="cline-any cline-yes">1x</span>
985
+ <span class="cline-any cline-yes">1x</span>
986
+ <span class="cline-any cline-yes">1x</span>
987
+ <span class="cline-any cline-yes">1x</span>
988
+ <span class="cline-any cline-yes">1x</span>
989
+ <span class="cline-any cline-yes">1x</span>
990
+ <span class="cline-any cline-yes">1x</span>
991
+ <span class="cline-any cline-yes">1x</span>
992
+ <span class="cline-any cline-yes">1x</span>
993
+ <span class="cline-any cline-yes">1x</span>
994
+ <span class="cline-any cline-yes">1x</span>
995
+ <span class="cline-any cline-yes">1x</span>
996
+ <span class="cline-any cline-yes">1x</span>
997
+ <span class="cline-any cline-yes">1x</span>
998
+ <span class="cline-any cline-yes">1x</span>
999
+ <span class="cline-any cline-yes">1x</span>
1000
+ <span class="cline-any cline-yes">1x</span>
1001
+ <span class="cline-any cline-yes">1x</span>
1002
+ <span class="cline-any cline-yes">1x</span>
1003
+ <span class="cline-any cline-yes">1x</span>
1004
+ <span class="cline-any cline-yes">1x</span>
1005
+ <span class="cline-any cline-yes">1x</span>
786
1006
  <span class="cline-any cline-no">&nbsp;</span>
787
1007
  <span class="cline-any cline-no">&nbsp;</span>
788
1008
  <span class="cline-any cline-no">&nbsp;</span>
@@ -795,6 +1015,7 @@
795
1015
  <span class="cline-any cline-no">&nbsp;</span>
796
1016
  <span class="cline-any cline-no">&nbsp;</span>
797
1017
  <span class="cline-any cline-no">&nbsp;</span>
1018
+ <span class="cline-any cline-yes">1x</span>
798
1019
  <span class="cline-any cline-no">&nbsp;</span>
799
1020
  <span class="cline-any cline-no">&nbsp;</span>
800
1021
  <span class="cline-any cline-no">&nbsp;</span>
@@ -804,6 +1025,7 @@
804
1025
  <span class="cline-any cline-no">&nbsp;</span>
805
1026
  <span class="cline-any cline-no">&nbsp;</span>
806
1027
  <span class="cline-any cline-no">&nbsp;</span>
1028
+ <span class="cline-any cline-yes">1x</span>
807
1029
  <span class="cline-any cline-no">&nbsp;</span>
808
1030
  <span class="cline-any cline-no">&nbsp;</span>
809
1031
  <span class="cline-any cline-no">&nbsp;</span>
@@ -814,12 +1036,14 @@
814
1036
  <span class="cline-any cline-no">&nbsp;</span>
815
1037
  <span class="cline-any cline-no">&nbsp;</span>
816
1038
  <span class="cline-any cline-no">&nbsp;</span>
1039
+ <span class="cline-any cline-yes">1x</span>
817
1040
  <span class="cline-any cline-no">&nbsp;</span>
818
1041
  <span class="cline-any cline-no">&nbsp;</span>
819
1042
  <span class="cline-any cline-no">&nbsp;</span>
820
1043
  <span class="cline-any cline-no">&nbsp;</span>
821
1044
  <span class="cline-any cline-no">&nbsp;</span>
822
1045
  <span class="cline-any cline-no">&nbsp;</span>
1046
+ <span class="cline-any cline-yes">1x</span>
823
1047
  <span class="cline-any cline-no">&nbsp;</span>
824
1048
  <span class="cline-any cline-no">&nbsp;</span>
825
1049
  <span class="cline-any cline-no">&nbsp;</span>
@@ -827,6 +1051,7 @@
827
1051
  <span class="cline-any cline-no">&nbsp;</span>
828
1052
  <span class="cline-any cline-no">&nbsp;</span>
829
1053
  <span class="cline-any cline-no">&nbsp;</span>
1054
+ <span class="cline-any cline-yes">1x</span>
830
1055
  <span class="cline-any cline-no">&nbsp;</span>
831
1056
  <span class="cline-any cline-no">&nbsp;</span>
832
1057
  <span class="cline-any cline-no">&nbsp;</span>
@@ -861,640 +1086,438 @@
861
1086
  <span class="cline-any cline-no">&nbsp;</span>
862
1087
  <span class="cline-any cline-no">&nbsp;</span>
863
1088
  <span class="cline-any cline-no">&nbsp;</span>
864
- <span class="cline-any cline-no">&nbsp;</span>
865
- <span class="cline-any cline-no">&nbsp;</span>
866
- <span class="cline-any cline-no">&nbsp;</span>
867
- <span class="cline-any cline-no">&nbsp;</span>
868
- <span class="cline-any cline-no">&nbsp;</span>
869
- <span class="cline-any cline-no">&nbsp;</span>
870
- <span class="cline-any cline-no">&nbsp;</span>
871
- <span class="cline-any cline-no">&nbsp;</span>
872
- <span class="cline-any cline-no">&nbsp;</span>
873
- <span class="cline-any cline-no">&nbsp;</span>
874
- <span class="cline-any cline-no">&nbsp;</span>
875
- <span class="cline-any cline-no">&nbsp;</span>
876
- <span class="cline-any cline-no">&nbsp;</span>
877
- <span class="cline-any cline-no">&nbsp;</span>
878
- <span class="cline-any cline-no">&nbsp;</span>
879
- <span class="cline-any cline-no">&nbsp;</span>
880
- <span class="cline-any cline-no">&nbsp;</span>
881
- <span class="cline-any cline-no">&nbsp;</span>
882
- <span class="cline-any cline-no">&nbsp;</span>
883
- <span class="cline-any cline-no">&nbsp;</span>
884
- <span class="cline-any cline-no">&nbsp;</span>
885
- <span class="cline-any cline-no">&nbsp;</span>
886
- <span class="cline-any cline-no">&nbsp;</span>
887
- <span class="cline-any cline-no">&nbsp;</span>
888
- <span class="cline-any cline-no">&nbsp;</span>
889
- <span class="cline-any cline-no">&nbsp;</span>
890
- <span class="cline-any cline-no">&nbsp;</span>
891
- <span class="cline-any cline-no">&nbsp;</span>
892
- <span class="cline-any cline-no">&nbsp;</span>
893
- <span class="cline-any cline-no">&nbsp;</span>
894
- <span class="cline-any cline-no">&nbsp;</span>
895
- <span class="cline-any cline-no">&nbsp;</span>
896
- <span class="cline-any cline-no">&nbsp;</span>
897
- <span class="cline-any cline-no">&nbsp;</span>
898
- <span class="cline-any cline-no">&nbsp;</span>
899
- <span class="cline-any cline-no">&nbsp;</span>
900
- <span class="cline-any cline-no">&nbsp;</span>
901
- <span class="cline-any cline-no">&nbsp;</span>
902
- <span class="cline-any cline-no">&nbsp;</span>
903
- <span class="cline-any cline-no">&nbsp;</span>
904
- <span class="cline-any cline-no">&nbsp;</span>
905
- <span class="cline-any cline-no">&nbsp;</span>
906
- <span class="cline-any cline-no">&nbsp;</span>
907
- <span class="cline-any cline-no">&nbsp;</span>
908
- <span class="cline-any cline-no">&nbsp;</span>
909
- <span class="cline-any cline-no">&nbsp;</span>
910
- <span class="cline-any cline-no">&nbsp;</span>
911
- <span class="cline-any cline-no">&nbsp;</span>
912
- <span class="cline-any cline-no">&nbsp;</span>
913
- <span class="cline-any cline-no">&nbsp;</span>
914
- <span class="cline-any cline-no">&nbsp;</span>
915
- <span class="cline-any cline-no">&nbsp;</span>
916
- <span class="cline-any cline-no">&nbsp;</span>
917
- <span class="cline-any cline-no">&nbsp;</span>
918
- <span class="cline-any cline-no">&nbsp;</span>
919
- <span class="cline-any cline-no">&nbsp;</span>
920
- <span class="cline-any cline-no">&nbsp;</span>
921
- <span class="cline-any cline-no">&nbsp;</span>
922
- <span class="cline-any cline-no">&nbsp;</span>
923
- <span class="cline-any cline-no">&nbsp;</span>
924
- <span class="cline-any cline-no">&nbsp;</span>
925
- <span class="cline-any cline-no">&nbsp;</span>
926
- <span class="cline-any cline-no">&nbsp;</span>
927
- <span class="cline-any cline-no">&nbsp;</span>
928
- <span class="cline-any cline-no">&nbsp;</span>
929
- <span class="cline-any cline-no">&nbsp;</span>
930
- <span class="cline-any cline-no">&nbsp;</span>
931
- <span class="cline-any cline-no">&nbsp;</span>
932
- <span class="cline-any cline-no">&nbsp;</span>
933
- <span class="cline-any cline-no">&nbsp;</span>
934
- <span class="cline-any cline-no">&nbsp;</span>
935
- <span class="cline-any cline-no">&nbsp;</span>
936
- <span class="cline-any cline-no">&nbsp;</span>
937
- <span class="cline-any cline-no">&nbsp;</span>
938
- <span class="cline-any cline-no">&nbsp;</span>
939
- <span class="cline-any cline-no">&nbsp;</span>
940
- <span class="cline-any cline-no">&nbsp;</span>
941
- <span class="cline-any cline-no">&nbsp;</span>
942
- <span class="cline-any cline-no">&nbsp;</span>
943
- <span class="cline-any cline-no">&nbsp;</span>
944
- <span class="cline-any cline-no">&nbsp;</span>
945
- <span class="cline-any cline-no">&nbsp;</span>
946
- <span class="cline-any cline-no">&nbsp;</span>
947
- <span class="cline-any cline-no">&nbsp;</span>
948
- <span class="cline-any cline-no">&nbsp;</span>
949
- <span class="cline-any cline-no">&nbsp;</span>
950
- <span class="cline-any cline-no">&nbsp;</span>
951
- <span class="cline-any cline-no">&nbsp;</span>
952
- <span class="cline-any cline-no">&nbsp;</span>
953
- <span class="cline-any cline-no">&nbsp;</span>
954
- <span class="cline-any cline-no">&nbsp;</span>
955
- <span class="cline-any cline-no">&nbsp;</span>
956
- <span class="cline-any cline-no">&nbsp;</span>
957
- <span class="cline-any cline-no">&nbsp;</span>
958
- <span class="cline-any cline-no">&nbsp;</span>
959
- <span class="cline-any cline-no">&nbsp;</span>
960
- <span class="cline-any cline-no">&nbsp;</span>
961
- <span class="cline-any cline-no">&nbsp;</span>
962
- <span class="cline-any cline-no">&nbsp;</span>
963
- <span class="cline-any cline-no">&nbsp;</span>
964
- <span class="cline-any cline-no">&nbsp;</span>
965
- <span class="cline-any cline-no">&nbsp;</span>
966
- <span class="cline-any cline-no">&nbsp;</span>
967
- <span class="cline-any cline-no">&nbsp;</span>
968
- <span class="cline-any cline-no">&nbsp;</span>
969
- <span class="cline-any cline-no">&nbsp;</span>
970
- <span class="cline-any cline-no">&nbsp;</span>
971
- <span class="cline-any cline-no">&nbsp;</span>
972
- <span class="cline-any cline-no">&nbsp;</span>
973
- <span class="cline-any cline-no">&nbsp;</span>
974
- <span class="cline-any cline-no">&nbsp;</span>
975
- <span class="cline-any cline-no">&nbsp;</span>
976
- <span class="cline-any cline-no">&nbsp;</span>
977
- <span class="cline-any cline-no">&nbsp;</span>
978
- <span class="cline-any cline-no">&nbsp;</span>
979
- <span class="cline-any cline-no">&nbsp;</span>
980
- <span class="cline-any cline-no">&nbsp;</span>
981
- <span class="cline-any cline-no">&nbsp;</span>
982
- <span class="cline-any cline-no">&nbsp;</span>
983
- <span class="cline-any cline-no">&nbsp;</span>
984
- <span class="cline-any cline-no">&nbsp;</span>
985
- <span class="cline-any cline-no">&nbsp;</span>
986
- <span class="cline-any cline-no">&nbsp;</span>
987
- <span class="cline-any cline-no">&nbsp;</span>
988
- <span class="cline-any cline-no">&nbsp;</span>
989
- <span class="cline-any cline-no">&nbsp;</span>
990
- <span class="cline-any cline-no">&nbsp;</span>
991
- <span class="cline-any cline-no">&nbsp;</span>
992
- <span class="cline-any cline-no">&nbsp;</span>
993
- <span class="cline-any cline-no">&nbsp;</span>
994
- <span class="cline-any cline-no">&nbsp;</span>
995
- <span class="cline-any cline-no">&nbsp;</span>
996
- <span class="cline-any cline-no">&nbsp;</span>
997
- <span class="cline-any cline-no">&nbsp;</span>
998
- <span class="cline-any cline-no">&nbsp;</span>
999
- <span class="cline-any cline-no">&nbsp;</span>
1000
- <span class="cline-any cline-no">&nbsp;</span>
1001
- <span class="cline-any cline-no">&nbsp;</span>
1002
- <span class="cline-any cline-no">&nbsp;</span>
1003
- <span class="cline-any cline-no">&nbsp;</span>
1004
- <span class="cline-any cline-no">&nbsp;</span>
1005
- <span class="cline-any cline-no">&nbsp;</span>
1006
- <span class="cline-any cline-no">&nbsp;</span>
1007
- <span class="cline-any cline-no">&nbsp;</span>
1008
- <span class="cline-any cline-no">&nbsp;</span>
1009
- <span class="cline-any cline-no">&nbsp;</span>
1010
- <span class="cline-any cline-no">&nbsp;</span>
1011
- <span class="cline-any cline-no">&nbsp;</span>
1012
- <span class="cline-any cline-no">&nbsp;</span>
1013
- <span class="cline-any cline-no">&nbsp;</span>
1014
- <span class="cline-any cline-no">&nbsp;</span>
1015
- <span class="cline-any cline-no">&nbsp;</span>
1016
- <span class="cline-any cline-no">&nbsp;</span>
1017
- <span class="cline-any cline-no">&nbsp;</span>
1018
- <span class="cline-any cline-no">&nbsp;</span>
1019
- <span class="cline-any cline-no">&nbsp;</span>
1020
- <span class="cline-any cline-no">&nbsp;</span>
1021
- <span class="cline-any cline-no">&nbsp;</span>
1022
- <span class="cline-any cline-no">&nbsp;</span>
1023
- <span class="cline-any cline-no">&nbsp;</span>
1024
- <span class="cline-any cline-no">&nbsp;</span>
1025
- <span class="cline-any cline-no">&nbsp;</span>
1026
- <span class="cline-any cline-no">&nbsp;</span>
1027
- <span class="cline-any cline-no">&nbsp;</span>
1028
- <span class="cline-any cline-no">&nbsp;</span>
1029
- <span class="cline-any cline-no">&nbsp;</span>
1030
- <span class="cline-any cline-no">&nbsp;</span>
1031
- <span class="cline-any cline-no">&nbsp;</span>
1032
- <span class="cline-any cline-no">&nbsp;</span>
1033
- <span class="cline-any cline-no">&nbsp;</span>
1034
- <span class="cline-any cline-no">&nbsp;</span>
1035
- <span class="cline-any cline-no">&nbsp;</span>
1036
- <span class="cline-any cline-no">&nbsp;</span>
1037
- <span class="cline-any cline-no">&nbsp;</span>
1038
- <span class="cline-any cline-no">&nbsp;</span>
1039
- <span class="cline-any cline-no">&nbsp;</span>
1040
- <span class="cline-any cline-no">&nbsp;</span>
1041
- <span class="cline-any cline-no">&nbsp;</span>
1042
- <span class="cline-any cline-no">&nbsp;</span>
1043
- <span class="cline-any cline-no">&nbsp;</span>
1044
- <span class="cline-any cline-no">&nbsp;</span>
1045
- <span class="cline-any cline-no">&nbsp;</span>
1046
- <span class="cline-any cline-no">&nbsp;</span>
1047
- <span class="cline-any cline-no">&nbsp;</span>
1048
- <span class="cline-any cline-no">&nbsp;</span>
1049
- <span class="cline-any cline-no">&nbsp;</span>
1050
- <span class="cline-any cline-no">&nbsp;</span>
1051
- <span class="cline-any cline-no">&nbsp;</span>
1052
- <span class="cline-any cline-no">&nbsp;</span>
1053
- <span class="cline-any cline-no">&nbsp;</span>
1054
- <span class="cline-any cline-no">&nbsp;</span>
1055
- <span class="cline-any cline-no">&nbsp;</span>
1056
- <span class="cline-any cline-no">&nbsp;</span>
1057
- <span class="cline-any cline-no">&nbsp;</span>
1058
- <span class="cline-any cline-no">&nbsp;</span>
1059
- <span class="cline-any cline-no">&nbsp;</span>
1060
- <span class="cline-any cline-no">&nbsp;</span>
1061
- <span class="cline-any cline-no">&nbsp;</span>
1062
- <span class="cline-any cline-no">&nbsp;</span>
1063
- <span class="cline-any cline-no">&nbsp;</span>
1064
- <span class="cline-any cline-no">&nbsp;</span>
1065
- <span class="cline-any cline-no">&nbsp;</span>
1066
- <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js"><span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" ><span class="branch-0 cbranch-no" title="branch not covered" >const fs = require("fs")</span></span></span>
1067
- <span class="cstat-no" title="statement not covered" >const path = require("path")</span>
1068
- <span class="cstat-no" title="statement not covered" >const { readPluginsLock } = require("./plugins-store")</span>
1069
- <span class="cstat-no" title="statement not covered" >const { getRegistryPlugin } = require("./plugins-registry")</span>
1070
- <span class="cstat-no" title="statement not covered" ></span>
1071
- <span class="cstat-no" title="statement not covered" >const PLUGIN_INSTALL_GUIDANCE = {</span>
1072
- <span class="cstat-no" title="statement not covered" > beads: {</span>
1073
- <span class="cstat-no" title="statement not covered" > plugin: "beads",</span>
1074
- <span class="cstat-no" title="statement not covered" > binary: "br",</span>
1075
- <span class="cstat-no" title="statement not covered" > check: "br --version",</span>
1076
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1077
- <span class="cstat-no" title="statement not covered" > "curl -fsSL \"https://raw.githubusercontent.com/Dicklesworthstone/beads_rust/main/install.sh?$(date +%s)\" | bash",</span>
1078
- <span class="cstat-no" title="statement not covered" > "br --version"</span>
1079
- <span class="cstat-no" title="statement not covered" > ],</span>
1080
- <span class="cstat-no" title="statement not covered" > note: "Installation is intentionally delegated to your LLM/automation flow (dcli/scli/supercli)."</span>
1081
- <span class="cstat-no" title="statement not covered" > },</span>
1082
- <span class="cstat-no" title="statement not covered" > gwc: { plugin: "gwc", binary: "gws", check: "gws --version", install_steps: ["npm install -g @googleworkspace/cli", "gws --version"], note: "Installation is intentionally delegated to your LLM/automation flow (dcli/scli/supercli)." },</span>
1083
- <span class="cstat-no" title="statement not covered" > commiat: { plugin: "commiat", binary: "commiat", check: "commiat --version", install_steps: ["npm install -g commiat", "commiat --version"], note: "Installation is intentionally delegated to your LLM/automation flow (dcli/scli/supercli)." },</span>
1084
- <span class="cstat-no" title="statement not covered" > docker: { plugin: "docker", binary: "docker", check: "docker --version", install_steps: ["docker --version"], note: "Install Docker Engine/Desktop using your OS package manager, then verify with docker --version." },</span>
1085
- <span class="cstat-no" title="statement not covered" > stripe: {</span>
1086
- <span class="cstat-no" title="statement not covered" > plugin: "stripe",</span>
1087
- <span class="cstat-no" title="statement not covered" > binary: "stripe",</span>
1088
- <span class="cstat-no" title="statement not covered" > check: "stripe --version",</span>
1089
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1090
- <span class="cstat-no" title="statement not covered" > "brew install stripe/stripe-cli/stripe",</span>
1091
- <span class="cstat-no" title="statement not covered" > "stripe --version",</span>
1092
- <span class="cstat-no" title="statement not covered" > "stripe login"</span>
1093
- <span class="cstat-no" title="statement not covered" > ],</span>
1094
- <span class="cstat-no" title="statement not covered" > note: "Install Stripe CLI and authenticate with stripe login before running API commands."</span>
1095
- <span class="cstat-no" title="statement not covered" > },</span>
1096
- <span class="cstat-no" title="statement not covered" > vercel: {</span>
1097
- <span class="cstat-no" title="statement not covered" > plugin: "vercel",</span>
1098
- <span class="cstat-no" title="statement not covered" > binary: "vercel",</span>
1099
- <span class="cstat-no" title="statement not covered" > check: "vercel --version",</span>
1100
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1101
- <span class="cstat-no" title="statement not covered" > "npm install -g vercel",</span>
1102
- <span class="cstat-no" title="statement not covered" > "vercel --version",</span>
1103
- <span class="cstat-no" title="statement not covered" > "vercel login"</span>
1104
- <span class="cstat-no" title="statement not covered" > ],</span>
1105
- <span class="cstat-no" title="statement not covered" > note: "Install Vercel CLI and authenticate with vercel login before running account or project commands."</span>
1106
- <span class="cstat-no" title="statement not covered" > },</span>
1107
- <span class="cstat-no" title="statement not covered" > linear: {</span>
1108
- <span class="cstat-no" title="statement not covered" > plugin: "linear",</span>
1109
- <span class="cstat-no" title="statement not covered" > binary: "linear",</span>
1110
- <span class="cstat-no" title="statement not covered" > check: "linear --version",</span>
1111
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1112
- <span class="cstat-no" title="statement not covered" > "npm install -g @schpet/linear-cli",</span>
1113
- <span class="cstat-no" title="statement not covered" > "npm install -D @schpet/linear-cli",</span>
1114
- <span class="cstat-no" title="statement not covered" > "linear --version",</span>
1115
- <span class="cstat-no" title="statement not covered" > "linear auth login"</span>
1116
- <span class="cstat-no" title="statement not covered" > ],</span>
1117
- <span class="cstat-no" title="statement not covered" > note: "Targets community package @schpet/linear-cli; if installed locally, invoke via npx --no-install linear."</span>
1118
- <span class="cstat-no" title="statement not covered" > },</span>
1119
- <span class="cstat-no" title="statement not covered" > railway: {</span>
1120
- <span class="cstat-no" title="statement not covered" > plugin: "railway",</span>
1121
- <span class="cstat-no" title="statement not covered" > binary: "railway",</span>
1122
- <span class="cstat-no" title="statement not covered" > check: "railway --version",</span>
1123
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1124
- <span class="cstat-no" title="statement not covered" > "npm install -g @railway/cli",</span>
1125
- <span class="cstat-no" title="statement not covered" > "npm install -D @railway/cli",</span>
1126
- <span class="cstat-no" title="statement not covered" > "railway --version",</span>
1127
- <span class="cstat-no" title="statement not covered" > "railway login"</span>
1128
- <span class="cstat-no" title="statement not covered" > ],</span>
1129
- <span class="cstat-no" title="statement not covered" > note: "If installed locally, use npx --no-install railway and ensure node_modules/.bin is in PATH for dcli plugin execution."</span>
1130
- <span class="cstat-no" title="statement not covered" > },</span>
1131
- <span class="cstat-no" title="statement not covered" > supabase: {</span>
1132
- <span class="cstat-no" title="statement not covered" > plugin: "supabase",</span>
1133
- <span class="cstat-no" title="statement not covered" > binary: "supabase",</span>
1134
- <span class="cstat-no" title="statement not covered" > check: "supabase --version",</span>
1135
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1136
- <span class="cstat-no" title="statement not covered" > "npm install -g supabase",</span>
1137
- <span class="cstat-no" title="statement not covered" > "npm install -D supabase",</span>
1138
- <span class="cstat-no" title="statement not covered" > "supabase --version",</span>
1139
- <span class="cstat-no" title="statement not covered" > "supabase login"</span>
1140
- <span class="cstat-no" title="statement not covered" > ],</span>
1141
- <span class="cstat-no" title="statement not covered" > note: "If installed locally, use npx --no-install supabase and ensure node_modules/.bin is in PATH for dcli plugin execution."</span>
1142
- <span class="cstat-no" title="statement not covered" > },</span>
1143
- <span class="cstat-no" title="statement not covered" > gh: {</span>
1144
- <span class="cstat-no" title="statement not covered" > plugin: "gh",</span>
1145
- <span class="cstat-no" title="statement not covered" > binary: "gh",</span>
1146
- <span class="cstat-no" title="statement not covered" > check: "gh --version",</span>
1147
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1148
- <span class="cstat-no" title="statement not covered" > "gh --version",</span>
1149
- <span class="cstat-no" title="statement not covered" > "gh auth login"</span>
1150
- <span class="cstat-no" title="statement not covered" > ],</span>
1151
- <span class="cstat-no" title="statement not covered" > note: "Install GitHub CLI with your platform package manager and authenticate with gh auth login before using account or repo commands."</span>
1152
- <span class="cstat-no" title="statement not covered" > },</span>
1153
- <span class="cstat-no" title="statement not covered" > kubectl: {</span>
1154
- <span class="cstat-no" title="statement not covered" > plugin: "kubectl",</span>
1155
- <span class="cstat-no" title="statement not covered" > binary: "kubectl",</span>
1156
- <span class="cstat-no" title="statement not covered" > check: "kubectl version --client",</span>
1157
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1158
- <span class="cstat-no" title="statement not covered" > "kubectl version --client",</span>
1159
- <span class="cstat-no" title="statement not covered" > "kubectl config current-context"</span>
1160
- <span class="cstat-no" title="statement not covered" > ],</span>
1161
- <span class="cstat-no" title="statement not covered" > note: "Install kubectl with your platform package manager and ensure your kubeconfig is already configured before using cluster commands."</span>
1162
- <span class="cstat-no" title="statement not covered" > },</span>
1163
- <span class="cstat-no" title="statement not covered" > terraform: {</span>
1164
- <span class="cstat-no" title="statement not covered" > plugin: "terraform",</span>
1165
- <span class="cstat-no" title="statement not covered" > binary: "terraform",</span>
1166
- <span class="cstat-no" title="statement not covered" > check: "terraform version -json",</span>
1167
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1168
- <span class="cstat-no" title="statement not covered" > "terraform version -json",</span>
1169
- <span class="cstat-no" title="statement not covered" > "terraform init"</span>
1170
- <span class="cstat-no" title="statement not covered" > ],</span>
1171
- <span class="cstat-no" title="statement not covered" > note: "Install Terraform with your platform package manager. For state-dependent commands, run inside an initialized Terraform working directory."</span>
1172
- <span class="cstat-no" title="statement not covered" > },</span>
1173
- <span class="cstat-no" title="statement not covered" > aws: {</span>
1174
- <span class="cstat-no" title="statement not covered" > plugin: "aws",</span>
1175
- <span class="cstat-no" title="statement not covered" > binary: "aws",</span>
1176
- <span class="cstat-no" title="statement not covered" > check: "aws --version",</span>
1177
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1178
- <span class="cstat-no" title="statement not covered" > "aws --version",</span>
1179
- <span class="cstat-no" title="statement not covered" > "aws configure"</span>
1180
- <span class="cstat-no" title="statement not covered" > ],</span>
1181
- <span class="cstat-no" title="statement not covered" > note: "Install AWS CLI with your platform package manager and configure credentials before using account or service commands."</span>
1182
- <span class="cstat-no" title="statement not covered" > },</span>
1183
- <span class="cstat-no" title="statement not covered" > gcloud: {</span>
1184
- <span class="cstat-no" title="statement not covered" > plugin: "gcloud",</span>
1185
- <span class="cstat-no" title="statement not covered" > binary: "gcloud",</span>
1186
- <span class="cstat-no" title="statement not covered" > check: "gcloud --version",</span>
1187
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1188
- <span class="cstat-no" title="statement not covered" > "gcloud --version",</span>
1189
- <span class="cstat-no" title="statement not covered" > "gcloud auth login"</span>
1190
- <span class="cstat-no" title="statement not covered" > ],</span>
1191
- <span class="cstat-no" title="statement not covered" > note: "Install Google Cloud CLI with your platform package manager and authenticate with gcloud auth login before using account or project commands."</span>
1192
- <span class="cstat-no" title="statement not covered" > },</span>
1193
- <span class="cstat-no" title="statement not covered" > az: {</span>
1194
- <span class="cstat-no" title="statement not covered" > plugin: "az",</span>
1195
- <span class="cstat-no" title="statement not covered" > binary: "az",</span>
1196
- <span class="cstat-no" title="statement not covered" > check: "az version",</span>
1197
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1198
- <span class="cstat-no" title="statement not covered" > "az version",</span>
1199
- <span class="cstat-no" title="statement not covered" > "az login"</span>
1200
- <span class="cstat-no" title="statement not covered" > ],</span>
1201
- <span class="cstat-no" title="statement not covered" > note: "Install Azure CLI with your platform package manager and authenticate with az login before using account or resource commands."</span>
1202
- <span class="cstat-no" title="statement not covered" > },</span>
1203
- <span class="cstat-no" title="statement not covered" > helm: {</span>
1204
- <span class="cstat-no" title="statement not covered" > plugin: "helm",</span>
1205
- <span class="cstat-no" title="statement not covered" > binary: "helm",</span>
1206
- <span class="cstat-no" title="statement not covered" > check: "helm version --short",</span>
1207
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1208
- <span class="cstat-no" title="statement not covered" > "helm version --short",</span>
1209
- <span class="cstat-no" title="statement not covered" > "kubectl config current-context"</span>
1210
- <span class="cstat-no" title="statement not covered" > ],</span>
1211
- <span class="cstat-no" title="statement not covered" > note: "Install Helm with your platform package manager. For release and cluster-backed commands, ensure your Kubernetes context is already configured."</span>
1212
- <span class="cstat-no" title="statement not covered" > },</span>
1213
- <span class="cstat-no" title="statement not covered" > npm: {</span>
1214
- <span class="cstat-no" title="statement not covered" > plugin: "npm",</span>
1215
- <span class="cstat-no" title="statement not covered" > binary: "npm",</span>
1216
- <span class="cstat-no" title="statement not covered" > check: "npm --version",</span>
1217
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1218
- <span class="cstat-no" title="statement not covered" > "npm --version",</span>
1219
- <span class="cstat-no" title="statement not covered" > "npm login"</span>
1220
- <span class="cstat-no" title="statement not covered" > ],</span>
1221
- <span class="cstat-no" title="statement not covered" > note: "npm is usually installed with Node.js. Run npm login only if you need authenticated registry operations."</span>
1222
- <span class="cstat-no" title="statement not covered" > },</span>
1223
- <span class="cstat-no" title="statement not covered" > pulumi: {</span>
1224
- <span class="cstat-no" title="statement not covered" > plugin: "pulumi",</span>
1225
- <span class="cstat-no" title="statement not covered" > binary: "pulumi",</span>
1226
- <span class="cstat-no" title="statement not covered" > check: "pulumi version",</span>
1227
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1228
- <span class="cstat-no" title="statement not covered" > "pulumi version",</span>
1229
- <span class="cstat-no" title="statement not covered" > "pulumi login"</span>
1230
- <span class="cstat-no" title="statement not covered" > ],</span>
1231
- <span class="cstat-no" title="statement not covered" > note: "Install Pulumi with your platform package manager and authenticate with pulumi login before using stack or cloud-backed commands."</span>
1232
- <span class="cstat-no" title="statement not covered" > },</span>
1233
- <span class="cstat-no" title="statement not covered" > pnpm: {</span>
1234
- <span class="cstat-no" title="statement not covered" > plugin: "pnpm",</span>
1235
- <span class="cstat-no" title="statement not covered" > binary: "pnpm",</span>
1236
- <span class="cstat-no" title="statement not covered" > check: "pnpm --version",</span>
1237
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1238
- <span class="cstat-no" title="statement not covered" > "pnpm --version",</span>
1239
- <span class="cstat-no" title="statement not covered" > "pnpm login"</span>
1240
- <span class="cstat-no" title="statement not covered" > ],</span>
1241
- <span class="cstat-no" title="statement not covered" > note: "Install pnpm with your platform package manager or via corepack. Run pnpm login only if you need authenticated registry operations."</span>
1242
- <span class="cstat-no" title="statement not covered" > },</span>
1243
- <span class="cstat-no" title="statement not covered" > uv: {</span>
1244
- <span class="cstat-no" title="statement not covered" > plugin: "uv",</span>
1245
- <span class="cstat-no" title="statement not covered" > binary: "uv",</span>
1246
- <span class="cstat-no" title="statement not covered" > check: "uv --version",</span>
1247
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1248
- <span class="cstat-no" title="statement not covered" > "curl -LsSf https://astral.sh/uv/install.sh | sh",</span>
1249
- <span class="cstat-no" title="statement not covered" > "uv --version"</span>
1250
- <span class="cstat-no" title="statement not covered" > ],</span>
1251
- <span class="cstat-no" title="statement not covered" > note: "Install uv with the official installer or your platform package manager. Run uv auth login only if you need private index authentication."</span>
1252
- <span class="cstat-no" title="statement not covered" > },</span>
1253
- <span class="cstat-no" title="statement not covered" > poetry: {</span>
1254
- <span class="cstat-no" title="statement not covered" > plugin: "poetry",</span>
1255
- <span class="cstat-no" title="statement not covered" > binary: "poetry",</span>
1256
- <span class="cstat-no" title="statement not covered" > check: "poetry --version",</span>
1257
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1258
- <span class="cstat-no" title="statement not covered" > "curl -sSL https://install.python-poetry.org | python3 -",</span>
1259
- <span class="cstat-no" title="statement not covered" > "poetry --version"</span>
1260
- <span class="cstat-no" title="statement not covered" > ],</span>
1261
- <span class="cstat-no" title="statement not covered" > note: "Install Poetry with the official installer or pipx. Configure repository credentials only if you need private package publishing or installs."</span>
1262
- <span class="cstat-no" title="statement not covered" > },</span>
1263
- <span class="cstat-no" title="statement not covered" > eza: {</span>
1264
- <span class="cstat-no" title="statement not covered" > plugin: "eza",</span>
1265
- <span class="cstat-no" title="statement not covered" > binary: "eza",</span>
1266
- <span class="cstat-no" title="statement not covered" > check: "eza --version",</span>
1267
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1268
- <span class="cstat-no" title="statement not covered" > "cargo install eza",</span>
1269
- <span class="cstat-no" title="statement not covered" > "eza --version"</span>
1270
- <span class="cstat-no" title="statement not covered" > ],</span>
1271
- <span class="cstat-no" title="statement not covered" > note: "Install eza with your platform package manager or cargo. It is a non-interactive ls replacement, so no login or account setup is required."</span>
1272
- <span class="cstat-no" title="statement not covered" > },</span>
1273
- <span class="cstat-no" title="statement not covered" > just: {</span>
1274
- <span class="cstat-no" title="statement not covered" > plugin: "just",</span>
1275
- <span class="cstat-no" title="statement not covered" > binary: "just",</span>
1276
- <span class="cstat-no" title="statement not covered" > check: "just --version",</span>
1277
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1278
- <span class="cstat-no" title="statement not covered" > "cargo install just",</span>
1279
- <span class="cstat-no" title="statement not covered" > "just --version"</span>
1280
- <span class="cstat-no" title="statement not covered" > ],</span>
1281
- <span class="cstat-no" title="statement not covered" > note: "Install just with your platform package manager or cargo. Most useful commands operate on a nearby justfile, but help and version commands work anywhere."</span>
1282
- <span class="cstat-no" title="statement not covered" > },</span>
1283
- <span class="cstat-no" title="statement not covered" > watchexec: {</span>
1284
- <span class="cstat-no" title="statement not covered" > plugin: "watchexec",</span>
1285
- <span class="cstat-no" title="statement not covered" > binary: "watchexec",</span>
1286
- <span class="cstat-no" title="statement not covered" > check: "watchexec --version",</span>
1287
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1288
- <span class="cstat-no" title="statement not covered" > "cargo install --locked watchexec-cli",</span>
1289
- <span class="cstat-no" title="statement not covered" > "watchexec --version"</span>
1290
- <span class="cstat-no" title="statement not covered" > ],</span>
1291
- <span class="cstat-no" title="statement not covered" > note: "Install watchexec with your platform package manager, cargo binstall, or cargo. It is non-interactive and works well for scripted file-watching workflows."</span>
1292
- <span class="cstat-no" title="statement not covered" > },</span>
1293
- <span class="cstat-no" title="statement not covered" > nextest: {</span>
1294
- <span class="cstat-no" title="statement not covered" > plugin: "nextest",</span>
1295
- <span class="cstat-no" title="statement not covered" > binary: "cargo-nextest",</span>
1296
- <span class="cstat-no" title="statement not covered" > check: "cargo-nextest --version",</span>
1297
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1298
- <span class="cstat-no" title="statement not covered" > "cargo install cargo-nextest --locked",</span>
1299
- <span class="cstat-no" title="statement not covered" > "cargo-nextest --version"</span>
1300
- <span class="cstat-no" title="statement not covered" > ],</span>
1301
- <span class="cstat-no" title="statement not covered" > note: "Install cargo-nextest with prebuilt binaries or cargo. Most commands are intended for Rust workspaces, but version and help commands work anywhere."</span>
1302
- <span class="cstat-no" title="statement not covered" > },</span>
1303
- <span class="cstat-no" title="statement not covered" > mysql: {</span>
1304
- <span class="cstat-no" title="statement not covered" > plugin: "mysql",</span>
1305
- <span class="cstat-no" title="statement not covered" > binary: "mysql",</span>
1306
- <span class="cstat-no" title="statement not covered" > check: "mysql --version",</span>
1307
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1308
- <span class="cstat-no" title="statement not covered" > "mysql --version",</span>
1309
- <span class="cstat-no" title="statement not covered" > "supercli plugins install mysql",</span>
1310
- <span class="cstat-no" title="statement not covered" > "supercli mysql cli version --json",</span>
1311
- <span class="cstat-no" title="statement not covered" > "supercli mysql query execute --execute \"select 1\" --host 127.0.0.1 --user root --database mysql --json"</span>
1312
- <span class="cstat-no" title="statement not covered" > ],</span>
1313
- <span class="cstat-no" title="statement not covered" > note: "Install the MySQL client with your platform package manager. The wrapped query command is tuned for batch output and works best when connection settings come from flags or standard MySQL environment variables like MYSQL_HOST, MYSQL_USER, MYSQL_DATABASE, and MYSQL_PWD."</span>
1314
- <span class="cstat-no" title="statement not covered" > },</span>
1315
- <span class="cstat-no" title="statement not covered" > mongosh: {</span>
1316
- <span class="cstat-no" title="statement not covered" > plugin: "mongosh",</span>
1317
- <span class="cstat-no" title="statement not covered" > binary: "mongosh",</span>
1318
- <span class="cstat-no" title="statement not covered" > check: "mongosh --version",</span>
1319
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1320
- <span class="cstat-no" title="statement not covered" > "mongosh --version",</span>
1321
- <span class="cstat-no" title="statement not covered" > "supercli plugins install mongosh",</span>
1322
- <span class="cstat-no" title="statement not covered" > "supercli mongosh cli version --json",</span>
1323
- <span class="cstat-no" title="statement not covered" > "supercli mongosh server ping --host 127.0.0.1 --port 27017 --json",</span>
1324
- <span class="cstat-no" title="statement not covered" > "supercli mongosh eval run --javascript \"db.adminCommand({ ping: 1 })\" --json"</span>
1325
- <span class="cstat-no" title="statement not covered" > ],</span>
1326
- <span class="cstat-no" title="statement not covered" > note: "This plugin targets the current mongosh shell rather than the legacy mongo shell. Wrapped commands prefer relaxed JSON output for automation, while raw passthrough remains available for connection-string-based flows."</span>
1327
- <span class="cstat-no" title="statement not covered" > },</span>
1328
- <span class="cstat-no" title="statement not covered" > blogwatcher: {</span>
1329
- <span class="cstat-no" title="statement not covered" > plugin: "blogwatcher",</span>
1330
- <span class="cstat-no" title="statement not covered" > binary: "blogwatcher",</span>
1331
- <span class="cstat-no" title="statement not covered" > check: "blogwatcher --version",</span>
1332
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1333
- <span class="cstat-no" title="statement not covered" > "brew install Hyaxia/tap/blogwatcher",</span>
1334
- <span class="cstat-no" title="statement not covered" > "go install github.com/Hyaxia/blogwatcher/cmd/blogwatcher@latest",</span>
1335
- <span class="cstat-no" title="statement not covered" > "blogwatcher --version",</span>
1336
- <span class="cstat-no" title="statement not covered" > "supercli plugins install blogwatcher",</span>
1337
- <span class="cstat-no" title="statement not covered" > "supercli skills list --catalog --provider blogwatcher --json",</span>
1338
- <span class="cstat-no" title="statement not covered" > "supercli skills get blogwatcher:root.skill",</span>
1339
- <span class="cstat-no" title="statement not covered" > "supercli blogwatcher blogs list --json"</span>
1340
- <span class="cstat-no" title="statement not covered" > ],</span>
1341
- <span class="cstat-no" title="statement not covered" > note: "This hybrid plugin indexes the upstream BlogWatcher README and SKILL documents into the skill-doc catalog and exposes non-interactive wrappers for the local CLI. BlogWatcher stores data under ~/.blogwatcher, so use an isolated HOME when you want disposable test data."</span>
1342
- <span class="cstat-no" title="statement not covered" > },</span>
1343
- <span class="cstat-no" title="statement not covered" > himalaya: {</span>
1344
- <span class="cstat-no" title="statement not covered" > plugin: "himalaya",</span>
1345
- <span class="cstat-no" title="statement not covered" > binary: "himalaya",</span>
1346
- <span class="cstat-no" title="statement not covered" > check: "himalaya --version",</span>
1347
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1348
- <span class="cstat-no" title="statement not covered" > "brew install himalaya",</span>
1349
- <span class="cstat-no" title="statement not covered" > "cargo install himalaya --locked",</span>
1350
- <span class="cstat-no" title="statement not covered" > "himalaya --version",</span>
1351
- <span class="cstat-no" title="statement not covered" > "supercli plugins install himalaya",</span>
1352
- <span class="cstat-no" title="statement not covered" > "supercli himalaya account list --json",</span>
1353
- <span class="cstat-no" title="statement not covered" > "supercli himalaya folder list --account personal --json",</span>
1354
- <span class="cstat-no" title="statement not covered" > "supercli himalaya envelope list --account personal --folder INBOX --page 1 --json"</span>
1355
- <span class="cstat-no" title="statement not covered" > ],</span>
1356
- <span class="cstat-no" title="statement not covered" > note: "Prefer the wrapped read-only commands for automation. Himalaya itself uses --output json rather than --json, and interactive or write-side flows like account configure, message send, and mailbox mutation are intentionally left out of wrapped v1."</span>
1357
- <span class="cstat-no" title="statement not covered" > },</span>
1358
- <span class="cstat-no" title="statement not covered" > wacli: {</span>
1359
- <span class="cstat-no" title="statement not covered" > plugin: "wacli",</span>
1360
- <span class="cstat-no" title="statement not covered" > binary: "wacli",</span>
1361
- <span class="cstat-no" title="statement not covered" > check: "wacli --version",</span>
1362
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1363
- <span class="cstat-no" title="statement not covered" > "brew install steipete/tap/wacli",</span>
1364
- <span class="cstat-no" title="statement not covered" > "go build -tags sqlite_fts5 -o ./dist/wacli ./cmd/wacli",</span>
1365
- <span class="cstat-no" title="statement not covered" > "wacli --version",</span>
1366
- <span class="cstat-no" title="statement not covered" > "supercli plugins install wacli",</span>
1367
- <span class="cstat-no" title="statement not covered" > "supercli wacli doctor run --json",</span>
1368
- <span class="cstat-no" title="statement not covered" > "supercli wacli auth status --json",</span>
1369
- <span class="cstat-no" title="statement not covered" > "supercli wacli chats list --store ~/.wacli --json"</span>
1370
- <span class="cstat-no" title="statement not covered" > ],</span>
1371
- <span class="cstat-no" title="statement not covered" > note: "This plugin intentionally wraps only read-only diagnostics and local-store inspection commands. Use the upstream wacli CLI directly for QR auth, sync loops, sending messages, media download, and group/contact mutations."</span>
1372
- <span class="cstat-no" title="statement not covered" > },</span>
1373
- <span class="cstat-no" title="statement not covered" > xurl: {</span>
1374
- <span class="cstat-no" title="statement not covered" > plugin: "xurl",</span>
1375
- <span class="cstat-no" title="statement not covered" > binary: "xurl",</span>
1376
- <span class="cstat-no" title="statement not covered" > check: "xurl version",</span>
1377
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1378
- <span class="cstat-no" title="statement not covered" > "brew install --cask xdevplatform/tap/xurl",</span>
1379
- <span class="cstat-no" title="statement not covered" > "npm install -g @xdevplatform/xurl",</span>
1380
- <span class="cstat-no" title="statement not covered" > "go install github.com/xdevplatform/xurl@latest",</span>
1381
- <span class="cstat-no" title="statement not covered" > "xurl version",</span>
1382
- <span class="cstat-no" title="statement not covered" > "supercli plugins install xurl",</span>
1383
- <span class="cstat-no" title="statement not covered" > "supercli skills list --catalog --provider xurl --json",</span>
1384
- <span class="cstat-no" title="statement not covered" > "supercli xurl auth status --json",</span>
1385
- <span class="cstat-no" title="statement not covered" > "supercli xurl account whoami --json"</span>
1386
- <span class="cstat-no" title="statement not covered" > ],</span>
1387
- <span class="cstat-no" title="statement not covered" > note: "This hybrid plugin indexes upstream xurl docs and exposes a curated set of read-only wrappers. Use the upstream xurl CLI directly for auth setup, posting, likes, follows, raw requests, streams, webhooks, and any command that can mutate X state."</span>
1388
- <span class="cstat-no" title="statement not covered" > },</span>
1389
- <span class="cstat-no" title="statement not covered" > clix: {</span>
1390
- <span class="cstat-no" title="statement not covered" > plugin: "clix",</span>
1391
- <span class="cstat-no" title="statement not covered" > binary: "clix",</span>
1392
- <span class="cstat-no" title="statement not covered" > check: "clix auth status --json",</span>
1393
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1394
- <span class="cstat-no" title="statement not covered" > "uv pip install clix0",</span>
1395
- <span class="cstat-no" title="statement not covered" > "clix auth",</span>
1396
- <span class="cstat-no" title="statement not covered" > "supercli plugins install clix",</span>
1397
- <span class="cstat-no" title="statement not covered" > "supercli skills list --catalog --provider clix --json",</span>
1398
- <span class="cstat-no" title="statement not covered" > "supercli clix auth status --json",</span>
1399
- <span class="cstat-no" title="statement not covered" > "supercli clix timeline list --count 10 --json"</span>
1400
- <span class="cstat-no" title="statement not covered" > ],</span>
1401
- <span class="cstat-no" title="statement not covered" > note: "This hybrid plugin indexes upstream clix docs and exposes curated read-only wrappers. Use upstream clix directly for cookie login, account switching, posting, deleting, likes, retweets, and bookmark mutations."</span>
1402
- <span class="cstat-no" title="statement not covered" > },</span>
1403
- <span class="cstat-no" title="statement not covered" > monty: {</span>
1404
- <span class="cstat-no" title="statement not covered" > plugin: "monty",</span>
1405
- <span class="cstat-no" title="statement not covered" > binary: "node",</span>
1406
- <span class="cstat-no" title="statement not covered" > check: "supercli monty cli version --json",</span>
1407
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1408
- <span class="cstat-no" title="statement not covered" > "supercli plugins install monty",</span>
1409
- <span class="cstat-no" title="statement not covered" > "supercli monty cli setup",</span>
1410
- <span class="cstat-no" title="statement not covered" > "supercli skills list --catalog --provider monty --json",</span>
1411
- <span class="cstat-no" title="statement not covered" > "supercli monty python run \"1 + 2\" --json"</span>
1412
- <span class="cstat-no" title="statement not covered" > ],</span>
1413
- <span class="cstat-no" title="statement not covered" > note: "This hybrid plugin indexes the upstream Monty README and CLAUDE skill documents and provides a sandboxed Python execution environment. It manages its own @pydantic/monty dependency globally."</span>
1414
- <span class="cstat-no" title="statement not covered" > },</span>
1415
- <span class="cstat-no" title="statement not covered" > cline: {</span>
1416
- <span class="cstat-no" title="statement not covered" > plugin: "cline",</span>
1417
- <span class="cstat-no" title="statement not covered" > binary: "cline",</span>
1418
- <span class="cstat-no" title="statement not covered" > check: "cline --version",</span>
1419
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1420
- <span class="cstat-no" title="statement not covered" > "npm install -g cline",</span>
1421
- <span class="cstat-no" title="statement not covered" > "cline --version",</span>
1422
- <span class="cstat-no" title="statement not covered" > "supercli plugins install cline",</span>
1423
- <span class="cstat-no" title="statement not covered" > "supercli cline cli version --json",</span>
1424
- <span class="cstat-no" title="statement not covered" > "supercli cline task run --prompt \"List files with more LOC in cwd\" --cwd . --timeout 30 --json",</span>
1425
- <span class="cstat-no" title="statement not covered" > "supercli skills sync --json",</span>
1426
- <span class="cstat-no" title="statement not covered" > "supercli skills get repo:cline-non-interactive"</span>
1427
- <span class="cstat-no" title="statement not covered" > ],</span>
1428
- <span class="cstat-no" title="statement not covered" > note: "Prefer the wrapped cline task run/plan commands for unattended automation. They bake in documented non-interactive defaults with JSON streaming support and are easier for agents to parse than raw passthrough."</span>
1429
- <span class="cstat-no" title="statement not covered" > },</span>
1430
- <span class="cstat-no" title="statement not covered" > nullclaw: {</span>
1431
- <span class="cstat-no" title="statement not covered" > plugin: "nullclaw",</span>
1432
- <span class="cstat-no" title="statement not covered" > binary: "nullclaw",</span>
1433
- <span class="cstat-no" title="statement not covered" > check: "nullclaw --version",</span>
1434
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1435
- <span class="cstat-no" title="statement not covered" > "supercli plugins install nullclaw",</span>
1436
- <span class="cstat-no" title="statement not covered" > "curl --version",</span>
1437
- <span class="cstat-no" title="statement not covered" > "brew install nullclaw",</span>
1438
- <span class="cstat-no" title="statement not covered" > "nullclaw --version",</span>
1439
- <span class="cstat-no" title="statement not covered" > "supercli skills list --catalog --provider nullclaw --json",</span>
1440
- <span class="cstat-no" title="statement not covered" > "supercli skills get nullclaw:root.agents",</span>
1441
- <span class="cstat-no" title="statement not covered" > "supercli nullclaw cli version --json",</span>
1442
- <span class="cstat-no" title="statement not covered" > "supercli nullclaw system status --json"</span>
1443
- <span class="cstat-no" title="statement not covered" > ],</span>
1444
- <span class="cstat-no" title="statement not covered" > note: "This hybrid plugin indexes remote NullClaw docs into the local skill-doc catalog and exposes the local nullclaw binary through wrapped commands plus passthrough. curl is required for remote doc retrieval."</span>
1445
- <span class="cstat-no" title="statement not covered" > },</span>
1446
- <span class="cstat-no" title="statement not covered" > "agency-agents": {</span>
1447
- <span class="cstat-no" title="statement not covered" > plugin: "agency-agents",</span>
1448
- <span class="cstat-no" title="statement not covered" > binary: "curl",</span>
1449
- <span class="cstat-no" title="statement not covered" > check: "curl --version",</span>
1450
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1451
- <span class="cstat-no" title="statement not covered" > "supercli plugins install agency-agents",</span>
1452
- <span class="cstat-no" title="statement not covered" > "supercli skills list --catalog --provider agency-agents --json",</span>
1453
- <span class="cstat-no" title="statement not covered" > "supercli skills get agency-agents:engineering.engineering-frontend-developer"</span>
1454
- <span class="cstat-no" title="statement not covered" > ],</span>
1455
- <span class="cstat-no" title="statement not covered" > note: "Install indexes remote markdown skill documents from https://github.com/msitarzewski/agency-agents (best effort, upstream paths may change)."</span>
1456
- <span class="cstat-no" title="statement not covered" > },</span>
1457
- <span class="cstat-no" title="statement not covered" > "visual-explainer": {</span>
1458
- <span class="cstat-no" title="statement not covered" > plugin: "visual-explainer",</span>
1459
- <span class="cstat-no" title="statement not covered" > binary: "curl",</span>
1460
- <span class="cstat-no" title="statement not covered" > check: "curl --version",</span>
1461
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1462
- <span class="cstat-no" title="statement not covered" > "supercli plugins install visual-explainer",</span>
1463
- <span class="cstat-no" title="statement not covered" > "supercli skills list --catalog --provider visual-explainer --json",</span>
1464
- <span class="cstat-no" title="statement not covered" > "supercli skills get visual-explainer:visual-explainer.skill"</span>
1465
- <span class="cstat-no" title="statement not covered" > ],</span>
1466
- <span class="cstat-no" title="statement not covered" > note: "Install indexes normalized markdown skill documents from https://github.com/javimosch/visual-explainer (plugins/visual-explainer-normalized)."</span>
1467
- <span class="cstat-no" title="statement not covered" > },</span>
1468
- <span class="cstat-no" title="statement not covered" > resend: {</span>
1469
- <span class="cstat-no" title="statement not covered" > plugin: "resend",</span>
1470
- <span class="cstat-no" title="statement not covered" > binary: "resend",</span>
1471
- <span class="cstat-no" title="statement not covered" > check: "resend doctor --json",</span>
1472
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1473
- <span class="cstat-no" title="statement not covered" > "supercli plugins install resend",</span>
1474
- <span class="cstat-no" title="statement not covered" > "supercli resend cli setup",</span>
1475
- <span class="cstat-no" title="statement not covered" > "supercli resend login",</span>
1476
- <span class="cstat-no" title="statement not covered" > "supercli resend cli doctor --json"</span>
1477
- <span class="cstat-no" title="statement not covered" > ],</span>
1478
- <span class="cstat-no" title="statement not covered" > note: "This hybrid plugin indexes the upstream resend-cli README into the skill-doc catalog and provides a wrapped interface for sending emails and checking environment health. It manages its own resend-cli dependency globally."</span>
1479
- <span class="cstat-no" title="statement not covered" > },</span>
1480
- <span class="cstat-no" title="statement not covered" > "cocoindex-code": {</span>
1481
- <span class="cstat-no" title="statement not covered" > plugin: "cocoindex-code",</span>
1482
- <span class="cstat-no" title="statement not covered" > binary: "cocoindex-code",</span>
1483
- <span class="cstat-no" title="statement not covered" > check: "cocoindex-code --help",</span>
1484
- <span class="cstat-no" title="statement not covered" > install_steps: [</span>
1485
- <span class="cstat-no" title="statement not covered" > "pipx install cocoindex-code",</span>
1486
- <span class="cstat-no" title="statement not covered" > "cocoindex-code --help",</span>
1487
- <span class="cstat-no" title="statement not covered" > "supercli plugins install cocoindex-code",</span>
1488
- <span class="cstat-no" title="statement not covered" > "supercli cocoindex index build --json",</span>
1489
- <span class="cstat-no" title="statement not covered" > "supercli cocoindex code search --query \"where is auth middleware\" --limit 5 --json",</span>
1490
- <span class="cstat-no" title="statement not covered" > "supercli cocoindex mcp search --query \"where is auth middleware\" --limit 5 --json"</span>
1491
- <span class="cstat-no" title="statement not covered" > ],</span>
1492
- <span class="cstat-no" title="statement not covered" > note: "The plugin auto-registers local MCP server cocoindex-code, exposes fast direct search as cocoindex.code.search, and keeps cocoindex.mcp.search available for MCP-native flows. Use direct mcp call for advanced filters like languages/paths."</span>
1493
- <span class="cstat-no" title="statement not covered" > }</span>
1494
- <span class="cstat-no" title="statement not covered" ></span>
1495
- <span class="cstat-no" title="statement not covered" >}</span>
1496
- <span class="cstat-no" title="statement not covered" ></span>
1497
- <span class="cstat-no" title="statement not covered" >function normalizeInstallGuidance(guidance, pluginName) {</span>
1089
+ <span class="cline-any cline-yes">1x</span>
1090
+ <span class="cline-any cline-yes">1x</span>
1091
+ <span class="cline-any cline-yes">1x</span>
1092
+ <span class="cline-any cline-yes">1x</span>
1093
+ <span class="cline-any cline-yes">1x</span>
1094
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">const fs = require("fs")
1095
+ const path = require("path")
1096
+ const { readPluginsLock } = require("./plugins-store")
1097
+ const { getRegistryPlugin } = require("./plugins-registry")
1098
+ &nbsp;
1099
+ // NOTE: Do not add new plugin entries here. New plugins should use
1100
+ // plugins/&lt;name&gt;/meta.json or plugins/&lt;name&gt;/install-guidance.json
1101
+ // for install guidance. This map is kept for legacy compatibility only.
1102
+ &nbsp;
1103
+ const PLUGIN_INSTALL_GUIDANCE = {
1104
+ gwc: { plugin: "gwc", binary: "gws", check: "gws --version", install_steps: ["npm install -g @googleworkspace/cli", "gws --version"], note: "Installation is intentionally delegated to your LLM/automation flow (dcli/scli/supercli)." },
1105
+ commiat: { plugin: "commiat", binary: "commiat", check: "commiat --version", install_steps: ["npm install -g commiat", "commiat --version"], note: "Installation is intentionally delegated to your LLM/automation flow (dcli/scli/supercli)." },
1106
+ humanenv: { plugin: "humanenv", binary: "humanenv", check: "humanenv", install_steps: ["npm install -g humanenv", "humanenv"], note: "Human must run humanenv server first and create a project in the admin UI before agent can authenticate." },
1107
+ docker: { plugin: "docker", binary: "docker", check: "docker --version", install_steps: ["docker --version"], note: "Install Docker Engine/Desktop using your OS package manager, then verify with docker --version." },
1108
+ stripe: {
1109
+ plugin: "stripe",
1110
+ binary: "stripe",
1111
+ check: "stripe --version",
1112
+ install_steps: [
1113
+ "brew install stripe/stripe-cli/stripe",
1114
+ "stripe --version",
1115
+ "stripe login"
1116
+ ],
1117
+ note: "Install Stripe CLI and authenticate with stripe login before running API commands."
1118
+ },
1119
+ vercel: {
1120
+ plugin: "vercel",
1121
+ binary: "vercel",
1122
+ check: "vercel --version",
1123
+ install_steps: [
1124
+ "npm install -g vercel",
1125
+ "vercel --version",
1126
+ "vercel login"
1127
+ ],
1128
+ note: "Install Vercel CLI and authenticate with vercel login before running account or project commands."
1129
+ },
1130
+ linear: {
1131
+ plugin: "linear",
1132
+ binary: "linear",
1133
+ check: "linear --version",
1134
+ install_steps: [
1135
+ "npm install -g @schpet/linear-cli",
1136
+ "npm install -D @schpet/linear-cli",
1137
+ "linear --version",
1138
+ "linear auth login"
1139
+ ],
1140
+ note: "Targets community package @schpet/linear-cli; if installed locally, invoke via npx --no-install linear."
1141
+ },
1142
+ railway: {
1143
+ plugin: "railway",
1144
+ binary: "railway",
1145
+ check: "railway --version",
1146
+ install_steps: [
1147
+ "npm install -g @railway/cli",
1148
+ "npm install -D @railway/cli",
1149
+ "railway --version",
1150
+ "railway login"
1151
+ ],
1152
+ note: "If installed locally, use npx --no-install railway and ensure node_modules/.bin is in PATH for dcli plugin execution."
1153
+ },
1154
+ supabase: {
1155
+ plugin: "supabase",
1156
+ binary: "supabase",
1157
+ check: "supabase --version",
1158
+ install_steps: [
1159
+ "npm install -g supabase",
1160
+ "npm install -D supabase",
1161
+ "supabase --version",
1162
+ "supabase login"
1163
+ ],
1164
+ note: "If installed locally, use npx --no-install supabase and ensure node_modules/.bin is in PATH for dcli plugin execution."
1165
+ },
1166
+ gh: {
1167
+ plugin: "gh",
1168
+ binary: "gh",
1169
+ check: "gh --version",
1170
+ install_steps: [
1171
+ "gh --version",
1172
+ "gh auth login"
1173
+ ],
1174
+ note: "Install GitHub CLI with your platform package manager and authenticate with gh auth login before using account or repo commands."
1175
+ },
1176
+ kubectl: {
1177
+ plugin: "kubectl",
1178
+ binary: "kubectl",
1179
+ check: "kubectl version --client",
1180
+ install_steps: [
1181
+ "kubectl version --client",
1182
+ "kubectl config current-context"
1183
+ ],
1184
+ note: "Install kubectl with your platform package manager and ensure your kubeconfig is already configured before using cluster commands."
1185
+ },
1186
+ terraform: {
1187
+ plugin: "terraform",
1188
+ binary: "terraform",
1189
+ check: "terraform version -json",
1190
+ install_steps: [
1191
+ "terraform version -json",
1192
+ "terraform init"
1193
+ ],
1194
+ note: "Install Terraform with your platform package manager. For state-dependent commands, run inside an initialized Terraform working directory."
1195
+ },
1196
+ aws: {
1197
+ plugin: "aws",
1198
+ binary: "aws",
1199
+ check: "aws --version",
1200
+ install_steps: [
1201
+ "aws --version",
1202
+ "aws configure"
1203
+ ],
1204
+ note: "Install AWS CLI with your platform package manager and configure credentials before using account or service commands."
1205
+ },
1206
+ gcloud: {
1207
+ plugin: "gcloud",
1208
+ binary: "gcloud",
1209
+ check: "gcloud --version",
1210
+ install_steps: [
1211
+ "gcloud --version",
1212
+ "gcloud auth login"
1213
+ ],
1214
+ note: "Install Google Cloud CLI with your platform package manager and authenticate with gcloud auth login before using account or project commands."
1215
+ },
1216
+ az: {
1217
+ plugin: "az",
1218
+ binary: "az",
1219
+ check: "az version",
1220
+ install_steps: [
1221
+ "az version",
1222
+ "az login"
1223
+ ],
1224
+ note: "Install Azure CLI with your platform package manager and authenticate with az login before using account or resource commands."
1225
+ },
1226
+ helm: {
1227
+ plugin: "helm",
1228
+ binary: "helm",
1229
+ check: "helm version --short",
1230
+ install_steps: [
1231
+ "helm version --short",
1232
+ "kubectl config current-context"
1233
+ ],
1234
+ note: "Install Helm with your platform package manager. For release and cluster-backed commands, ensure your Kubernetes context is already configured."
1235
+ },
1236
+ npm: {
1237
+ plugin: "npm",
1238
+ binary: "npm",
1239
+ check: "npm --version",
1240
+ install_steps: [
1241
+ "npm --version",
1242
+ "npm login"
1243
+ ],
1244
+ note: "npm is usually installed with Node.js. Run npm login only if you need authenticated registry operations."
1245
+ },
1246
+ pulumi: {
1247
+ plugin: "pulumi",
1248
+ binary: "pulumi",
1249
+ check: "pulumi version",
1250
+ install_steps: [
1251
+ "pulumi version",
1252
+ "pulumi login"
1253
+ ],
1254
+ note: "Install Pulumi with your platform package manager and authenticate with pulumi login before using stack or cloud-backed commands."
1255
+ },
1256
+ pnpm: {
1257
+ plugin: "pnpm",
1258
+ binary: "pnpm",
1259
+ check: "pnpm --version",
1260
+ install_steps: [
1261
+ "pnpm --version",
1262
+ "pnpm login"
1263
+ ],
1264
+ note: "Install pnpm with your platform package manager or via corepack. Run pnpm login only if you need authenticated registry operations."
1265
+ },
1266
+ uv: {
1267
+ plugin: "uv",
1268
+ binary: "uv",
1269
+ check: "uv --version",
1270
+ install_steps: [
1271
+ "curl -LsSf https://astral.sh/uv/install.sh | sh",
1272
+ "uv --version"
1273
+ ],
1274
+ note: "Install uv with the official installer or your platform package manager. Run uv auth login only if you need private index authentication."
1275
+ },
1276
+ poetry: {
1277
+ plugin: "poetry",
1278
+ binary: "poetry",
1279
+ check: "poetry --version",
1280
+ install_steps: [
1281
+ "curl -sSL https://install.python-poetry.org | python3 -",
1282
+ "poetry --version"
1283
+ ],
1284
+ note: "Install Poetry with the official installer or pipx. Configure repository credentials only if you need private package publishing or installs."
1285
+ },
1286
+ eza: {
1287
+ plugin: "eza",
1288
+ binary: "eza",
1289
+ check: "eza --version",
1290
+ install_steps: [
1291
+ "cargo install eza",
1292
+ "eza --version"
1293
+ ],
1294
+ note: "Install eza with your platform package manager or cargo. It is a non-interactive ls replacement, so no login or account setup is required."
1295
+ },
1296
+ just: {
1297
+ plugin: "just",
1298
+ binary: "just",
1299
+ check: "just --version",
1300
+ install_steps: [
1301
+ "cargo install just",
1302
+ "just --version"
1303
+ ],
1304
+ note: "Install just with your platform package manager or cargo. Most useful commands operate on a nearby justfile, but help and version commands work anywhere."
1305
+ },
1306
+ watchexec: {
1307
+ plugin: "watchexec",
1308
+ binary: "watchexec",
1309
+ check: "watchexec --version",
1310
+ install_steps: [
1311
+ "cargo install --locked watchexec-cli",
1312
+ "watchexec --version"
1313
+ ],
1314
+ note: "Install watchexec with your platform package manager, cargo binstall, or cargo. It is non-interactive and works well for scripted file-watching workflows."
1315
+ },
1316
+ nextest: {
1317
+ plugin: "nextest",
1318
+ binary: "cargo-nextest",
1319
+ check: "cargo-nextest --version",
1320
+ install_steps: [
1321
+ "cargo install cargo-nextest --locked",
1322
+ "cargo-nextest --version"
1323
+ ],
1324
+ note: "Install cargo-nextest with prebuilt binaries or cargo. Most commands are intended for Rust workspaces, but version and help commands work anywhere."
1325
+ },
1326
+ mysql: {
1327
+ plugin: "mysql",
1328
+ binary: "mysql",
1329
+ check: "mysql --version",
1330
+ install_steps: [
1331
+ "mysql --version",
1332
+ "supercli plugins install mysql",
1333
+ "supercli mysql cli version --json",
1334
+ "supercli mysql query execute --execute \"select 1\" --host 127.0.0.1 --user root --database mysql --json"
1335
+ ],
1336
+ note: "Install the MySQL client with your platform package manager. The wrapped query command is tuned for batch output and works best when connection settings come from flags or standard MySQL environment variables like MYSQL_HOST, MYSQL_USER, MYSQL_DATABASE, and MYSQL_PWD."
1337
+ },
1338
+ mongosh: {
1339
+ plugin: "mongosh",
1340
+ binary: "mongosh",
1341
+ check: "mongosh --version",
1342
+ install_steps: [
1343
+ "mongosh --version",
1344
+ "supercli plugins install mongosh",
1345
+ "supercli mongosh cli version --json",
1346
+ "supercli mongosh server ping --host 127.0.0.1 --port 27017 --json",
1347
+ "supercli mongosh eval run --javascript \"db.adminCommand({ ping: 1 })\" --json"
1348
+ ],
1349
+ note: "This plugin targets the current mongosh shell rather than the legacy mongo shell. Wrapped commands prefer relaxed JSON output for automation, while raw passthrough remains available for connection-string-based flows."
1350
+ },
1351
+ blogwatcher: {
1352
+ plugin: "blogwatcher",
1353
+ binary: "blogwatcher",
1354
+ check: "blogwatcher --version",
1355
+ install_steps: [
1356
+ "brew install Hyaxia/tap/blogwatcher",
1357
+ "go install github.com/Hyaxia/blogwatcher/cmd/blogwatcher@latest",
1358
+ "blogwatcher --version",
1359
+ "supercli plugins install blogwatcher",
1360
+ "supercli skills list --catalog --provider blogwatcher --json",
1361
+ "supercli skills get blogwatcher:root.skill",
1362
+ "supercli blogwatcher blogs list --json"
1363
+ ],
1364
+ note: "This hybrid plugin indexes the upstream BlogWatcher README and SKILL documents into the skill-doc catalog and exposes non-interactive wrappers for the local CLI. BlogWatcher stores data under ~/.blogwatcher, so use an isolated HOME when you want disposable test data."
1365
+ },
1366
+ himalaya: {
1367
+ plugin: "himalaya",
1368
+ binary: "himalaya",
1369
+ check: "himalaya --version",
1370
+ install_steps: [
1371
+ "brew install himalaya",
1372
+ "cargo install himalaya --locked",
1373
+ "himalaya --version",
1374
+ "supercli plugins install himalaya",
1375
+ "supercli himalaya account list --json",
1376
+ "supercli himalaya folder list --account personal --json",
1377
+ "supercli himalaya envelope list --account personal --folder INBOX --page 1 --json"
1378
+ ],
1379
+ note: "Prefer the wrapped read-only commands for automation. Himalaya itself uses --output json rather than --json, and interactive or write-side flows like account configure, message send, and mailbox mutation are intentionally left out of wrapped v1."
1380
+ },
1381
+ wacli: {
1382
+ plugin: "wacli",
1383
+ binary: "wacli",
1384
+ check: "wacli --version",
1385
+ install_steps: [
1386
+ "brew install steipete/tap/wacli",
1387
+ "go build -tags sqlite_fts5 -o ./dist/wacli ./cmd/wacli",
1388
+ "wacli --version",
1389
+ "supercli plugins install wacli",
1390
+ "supercli wacli doctor run --json",
1391
+ "supercli wacli auth status --json",
1392
+ "supercli wacli chats list --store ~/.wacli --json"
1393
+ ],
1394
+ note: "This plugin intentionally wraps only read-only diagnostics and local-store inspection commands. Use the upstream wacli CLI directly for QR auth, sync loops, sending messages, media download, and group/contact mutations."
1395
+ },
1396
+ xurl: {
1397
+ plugin: "xurl",
1398
+ binary: "xurl",
1399
+ check: "xurl version",
1400
+ install_steps: [
1401
+ "brew install --cask xdevplatform/tap/xurl",
1402
+ "npm install -g @xdevplatform/xurl",
1403
+ "go install github.com/xdevplatform/xurl@latest",
1404
+ "xurl version",
1405
+ "supercli plugins install xurl",
1406
+ "supercli skills list --catalog --provider xurl --json",
1407
+ "supercli xurl auth status --json",
1408
+ "supercli xurl account whoami --json"
1409
+ ],
1410
+ note: "This hybrid plugin indexes upstream xurl docs and exposes a curated set of read-only wrappers. Use the upstream xurl CLI directly for auth setup, posting, likes, follows, raw requests, streams, webhooks, and any command that can mutate X state."
1411
+ },
1412
+ clix: {
1413
+ plugin: "clix",
1414
+ binary: "clix",
1415
+ check: "clix auth status --json",
1416
+ install_steps: [
1417
+ "uv pip install clix0",
1418
+ "clix auth",
1419
+ "supercli plugins install clix",
1420
+ "supercli skills list --catalog --provider clix --json",
1421
+ "supercli clix auth status --json",
1422
+ "supercli clix timeline list --count 10 --json"
1423
+ ],
1424
+ note: "This hybrid plugin indexes upstream clix docs and exposes curated read-only wrappers. Use upstream clix directly for cookie login, account switching, posting, deleting, likes, retweets, and bookmark mutations."
1425
+ },
1426
+ monty: {
1427
+ plugin: "monty",
1428
+ binary: "node",
1429
+ check: "supercli monty cli version --json",
1430
+ install_steps: [
1431
+ "supercli plugins install monty",
1432
+ "supercli monty cli setup",
1433
+ "supercli skills list --catalog --provider monty --json",
1434
+ "supercli monty python run \"1 + 2\" --json"
1435
+ ],
1436
+ note: "This hybrid plugin indexes the upstream Monty README and CLAUDE skill documents and provides a sandboxed Python execution environment. It manages its own @pydantic/monty dependency globally."
1437
+ },
1438
+ cline: {
1439
+ plugin: "cline",
1440
+ binary: "cline",
1441
+ check: "cline --version",
1442
+ install_steps: [
1443
+ "npm install -g cline",
1444
+ "cline --version",
1445
+ "supercli plugins install cline",
1446
+ "supercli cline cli version --json",
1447
+ "supercli cline task run --prompt \"List files with more LOC in cwd\" --cwd . --timeout 30 --json",
1448
+ "supercli skills sync --json",
1449
+ "supercli skills get repo:cline-non-interactive"
1450
+ ],
1451
+ note: "Prefer the wrapped cline task run/plan commands for unattended automation. They bake in documented non-interactive defaults with JSON streaming support and are easier for agents to parse than raw passthrough."
1452
+ },
1453
+ nullclaw: {
1454
+ plugin: "nullclaw",
1455
+ binary: "nullclaw",
1456
+ check: "nullclaw --version",
1457
+ install_steps: [
1458
+ "supercli plugins install nullclaw",
1459
+ "curl --version",
1460
+ "brew install nullclaw",
1461
+ "nullclaw --version",
1462
+ "supercli skills list --catalog --provider nullclaw --json",
1463
+ "supercli skills get nullclaw:root.agents",
1464
+ "supercli nullclaw cli version --json",
1465
+ "supercli nullclaw system status --json"
1466
+ ],
1467
+ note: "This hybrid plugin indexes remote NullClaw docs into the local skill-doc catalog and exposes the local nullclaw binary through wrapped commands plus passthrough. curl is required for remote doc retrieval."
1468
+ },
1469
+ "agency-agents": {
1470
+ plugin: "agency-agents",
1471
+ binary: "curl",
1472
+ check: "curl --version",
1473
+ install_steps: [
1474
+ "supercli plugins install agency-agents",
1475
+ "supercli skills list --catalog --provider agency-agents --json",
1476
+ "supercli skills get agency-agents:engineering.engineering-frontend-developer"
1477
+ ],
1478
+ note: "Install indexes remote markdown skill documents from https://github.com/msitarzewski/agency-agents (best effort, upstream paths may change)."
1479
+ },
1480
+ "visual-explainer": {
1481
+ plugin: "visual-explainer",
1482
+ binary: "curl",
1483
+ check: "curl --version",
1484
+ install_steps: [
1485
+ "supercli plugins install visual-explainer",
1486
+ "supercli skills list --catalog --provider visual-explainer --json",
1487
+ "supercli skills get visual-explainer:visual-explainer.skill"
1488
+ ],
1489
+ note: "Install indexes normalized markdown skill documents from https://github.com/javimosch/visual-explainer (plugins/visual-explainer-normalized)."
1490
+ },
1491
+ resend: {
1492
+ plugin: "resend",
1493
+ binary: "resend",
1494
+ check: "resend doctor --json",
1495
+ install_steps: [
1496
+ "supercli plugins install resend",
1497
+ "supercli resend cli setup",
1498
+ "supercli resend login",
1499
+ "supercli resend cli doctor --json"
1500
+ ],
1501
+ note: "This hybrid plugin indexes the upstream resend-cli README into the skill-doc catalog and provides a wrapped interface for sending emails and checking environment health. It manages its own resend-cli dependency globally."
1502
+ },
1503
+ "cocoindex-code": {
1504
+ plugin: "cocoindex-code",
1505
+ binary: "cocoindex-code",
1506
+ check: "cocoindex-code --help",
1507
+ install_steps: [
1508
+ "pipx install cocoindex-code",
1509
+ "cocoindex-code --help",
1510
+ "supercli plugins install cocoindex-code",
1511
+ "supercli cocoindex index build --json",
1512
+ "supercli cocoindex code search --query \"where is auth middleware\" --limit 5 --json",
1513
+ "supercli cocoindex mcp search --query \"where is auth middleware\" --limit 5 --json"
1514
+ ],
1515
+ note: "The plugin auto-registers local MCP server cocoindex-code, exposes fast direct search as cocoindex.code.search, and keeps cocoindex.mcp.search available for MCP-native flows. Use direct mcp call for advanced filters like languages/paths."
1516
+ }
1517
+ &nbsp;
1518
+ }
1519
+ &nbsp;
1520
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function normalizeInstallGuidance(guidance, pluginName) {</span></span>
1498
1521
  <span class="cstat-no" title="statement not covered" > if (!guidance || typeof guidance !== "object" || Array.isArray(guidance)) return null</span>
1499
1522
  <span class="cstat-no" title="statement not covered" > const normalized = {</span>
1500
1523
  <span class="cstat-no" title="statement not covered" > plugin: typeof guidance.plugin === "string" &amp;&amp; guidance.plugin ? guidance.plugin : String(pluginName || ""),</span>
@@ -1506,8 +1529,8 @@
1506
1529
  <span class="cstat-no" title="statement not covered" > if (!normalized.plugin) return null</span>
1507
1530
  <span class="cstat-no" title="statement not covered" > return (!normalized.binary &amp;&amp; !normalized.check &amp;&amp; normalized.install_steps.length === 0 &amp;&amp; !normalized.note) ? null : normalized</span>
1508
1531
  <span class="cstat-no" title="statement not covered" >}</span>
1509
- <span class="cstat-no" title="statement not covered" ></span>
1510
- <span class="cstat-no" title="statement not covered" >function readManifestGuidance(manifestPath, pluginName) {</span>
1532
+ &nbsp;
1533
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function readManifestGuidance(manifestPath, pluginName) {</span></span>
1511
1534
  <span class="cstat-no" title="statement not covered" > if (!manifestPath || !fs.existsSync(manifestPath)) return null</span>
1512
1535
  <span class="cstat-no" title="statement not covered" > try {</span>
1513
1536
  <span class="cstat-no" title="statement not covered" > const parsed = JSON.parse(fs.readFileSync(manifestPath, "utf-8"))</span>
@@ -1516,23 +1539,34 @@
1516
1539
  <span class="cstat-no" title="statement not covered" > return null</span>
1517
1540
  <span class="cstat-no" title="statement not covered" > }</span>
1518
1541
  <span class="cstat-no" title="statement not covered" >}</span>
1519
- <span class="cstat-no" title="statement not covered" ></span>
1520
- <span class="cstat-no" title="statement not covered" >function findInstalledPlugin(name) {</span>
1542
+ &nbsp;
1543
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function readInstallGuidanceFile(filePath) {</span></span>
1544
+ <span class="cstat-no" title="statement not covered" > if (!filePath || !fs.existsSync(filePath)) return null</span>
1545
+ <span class="cstat-no" title="statement not covered" > try {</span>
1546
+ <span class="cstat-no" title="statement not covered" > const parsed = JSON.parse(fs.readFileSync(filePath, "utf-8"))</span>
1547
+ <span class="cstat-no" title="statement not covered" > const pluginName = path.basename(path.dirname(filePath))</span>
1548
+ <span class="cstat-no" title="statement not covered" > return normalizeInstallGuidance(parsed, pluginName)</span>
1549
+ <span class="cstat-no" title="statement not covered" > } catch {</span>
1550
+ <span class="cstat-no" title="statement not covered" > return null</span>
1551
+ <span class="cstat-no" title="statement not covered" > }</span>
1552
+ <span class="cstat-no" title="statement not covered" >}</span>
1553
+ &nbsp;
1554
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function findInstalledPlugin(name) {</span></span>
1521
1555
  <span class="cstat-no" title="statement not covered" > const lower = String(name || "").toLowerCase().trim()</span>
1522
1556
  <span class="cstat-no" title="statement not covered" > if (!lower) return null</span>
1523
1557
  <span class="cstat-no" title="statement not covered" > const lock = readPluginsLock()</span>
1524
1558
  <span class="cstat-no" title="statement not covered" > return Object.values(lock.installed || {}).find(p =&gt; String(p &amp;&amp; p.name || "").toLowerCase() === lower) || null</span>
1525
1559
  <span class="cstat-no" title="statement not covered" >}</span>
1526
- <span class="cstat-no" title="statement not covered" ></span>
1527
- <span class="cstat-no" title="statement not covered" >function resolveRegistryManifestPath(entry) {</span>
1560
+ &nbsp;
1561
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function resolveRegistryManifestPath(entry) {</span></span>
1528
1562
  <span class="cstat-no" title="statement not covered" > if (!entry || !entry.source || typeof entry.source !== "object") return null</span>
1529
1563
  <span class="cstat-no" title="statement not covered" > const manifestPath = entry.source.manifest_path</span>
1530
1564
  <span class="cstat-no" title="statement not covered" > if (!manifestPath || typeof manifestPath !== "string") return null</span>
1531
1565
  <span class="cstat-no" title="statement not covered" > if (path.isAbsolute(manifestPath)) return manifestPath</span>
1532
1566
  <span class="cstat-no" title="statement not covered" > return path.resolve(__dirname, "..", manifestPath)</span>
1533
1567
  <span class="cstat-no" title="statement not covered" >}</span>
1534
- <span class="cstat-no" title="statement not covered" ></span>
1535
- <span class="cstat-no" title="statement not covered" >function getPluginInstallGuidance(name) {</span>
1568
+ &nbsp;
1569
+ <span class="cstat-no" title="statement not covered" ><span class="fstat-no" title="function not covered" >function getPluginInstallGuidance(name) {</span></span>
1536
1570
  <span class="cstat-no" title="statement not covered" > const lower = String(name || "").toLowerCase().trim()</span>
1537
1571
  <span class="cstat-no" title="statement not covered" > if (!lower) return null</span>
1538
1572
  <span class="cstat-no" title="statement not covered" ></span>
@@ -1552,17 +1586,25 @@
1552
1586
  <span class="cstat-no" title="statement not covered" > if (fromManifest) return fromManifest</span>
1553
1587
  <span class="cstat-no" title="statement not covered" > }</span>
1554
1588
  <span class="cstat-no" title="statement not covered" ></span>
1555
- <span class="cstat-no" title="statement not covered" > const bundledManifest = path.resolve(__dirname, "..", "plugins", lower, "plugin.json")</span>
1589
+ <span class="cstat-no" title="statement not covered" > const pluginDir = path.resolve(__dirname, "..", "plugins", lower)</span>
1590
+ <span class="cstat-no" title="statement not covered" ></span>
1591
+ <span class="cstat-no" title="statement not covered" > const fromMeta = readInstallGuidanceFile(path.join(pluginDir, "meta.json"))</span>
1592
+ <span class="cstat-no" title="statement not covered" > if (fromMeta) return fromMeta</span>
1593
+ <span class="cstat-no" title="statement not covered" ></span>
1594
+ <span class="cstat-no" title="statement not covered" > const fromGuidanceFile = readInstallGuidanceFile(path.join(pluginDir, "install-guidance.json"))</span>
1595
+ <span class="cstat-no" title="statement not covered" > if (fromGuidanceFile) return fromGuidanceFile</span>
1596
+ <span class="cstat-no" title="statement not covered" ></span>
1597
+ <span class="cstat-no" title="statement not covered" > const bundledManifest = path.join(pluginDir, "plugin.json")</span>
1556
1598
  <span class="cstat-no" title="statement not covered" > const bundled = readManifestGuidance(bundledManifest, lower)</span>
1557
1599
  <span class="cstat-no" title="statement not covered" > if (bundled) return bundled</span>
1558
1600
  <span class="cstat-no" title="statement not covered" ></span>
1559
1601
  <span class="cstat-no" title="statement not covered" > return PLUGIN_INSTALL_GUIDANCE[lower] || null</span>
1560
1602
  <span class="cstat-no" title="statement not covered" >}</span>
1561
- <span class="cstat-no" title="statement not covered" ></span>
1562
- <span class="cstat-no" title="statement not covered" >module.exports = {</span>
1563
- <span class="cstat-no" title="statement not covered" > getPluginInstallGuidance,</span>
1564
- <span class="cstat-no" title="statement not covered" > normalizeInstallGuidance,</span>
1565
- <span class="cstat-no" title="statement not covered" >}</span>
1603
+ &nbsp;
1604
+ module.exports = {
1605
+ getPluginInstallGuidance,
1606
+ normalizeInstallGuidance,
1607
+ }
1566
1608
  &nbsp;</pre></td></tr></table></pre>
1567
1609
 
1568
1610
  <div class='push'></div><!-- for sticky footer -->
@@ -1570,7 +1612,7 @@
1570
1612
  <div class='footer quiet pad2 space-top1 center small'>
1571
1613
  Code coverage generated by
1572
1614
  <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
1573
- at 2026-03-18T21:19:48.416Z
1615
+ at 2026-04-10T17:55:25.401Z
1574
1616
  </div>
1575
1617
  <script src="../prettify.js"></script>
1576
1618
  <script>