@rulemetric/cli 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/dist/base-command.js +2 -2
  2. package/dist/{chunk-S56LOTGQ.js → chunk-7DIWBTB5.js} +2 -2
  3. package/dist/chunk-DUQGKWHJ.js +309 -0
  4. package/dist/chunk-DUQGKWHJ.js.map +7 -0
  5. package/dist/{chunk-2WWGG2A5.js → chunk-E32IADV3.js} +10 -9
  6. package/dist/chunk-E32IADV3.js.map +7 -0
  7. package/dist/{chunk-42A3HEEH.js → chunk-F5DPTXRC.js} +30 -2
  8. package/dist/{chunk-42A3HEEH.js.map → chunk-F5DPTXRC.js.map} +3 -3
  9. package/dist/{chunk-YEBBX4HQ.js → chunk-I4GHR6CY.js} +2 -2
  10. package/dist/{chunk-CROYS75W.js → chunk-LJ5OT5XN.js} +4 -4
  11. package/dist/{chunk-MTLAIJED.js → chunk-OWUS3HMA.js} +2 -2
  12. package/dist/{chunk-OGVORIFM.js → chunk-R56PH7YE.js} +11 -3
  13. package/dist/chunk-R56PH7YE.js.map +7 -0
  14. package/dist/{chunk-CLC7ZFH2.js → chunk-RYMK7FQL.js} +2 -2
  15. package/dist/{chunk-C7SRRSPA.js → chunk-VBOTWXJW.js} +2 -2
  16. package/dist/commands/antigravity/backfill.js +2 -2
  17. package/dist/commands/auth/create-key.js +2 -2
  18. package/dist/commands/auth/login.js +2 -2
  19. package/dist/commands/auth/logout.js +2 -2
  20. package/dist/commands/auth/revoke-key.js +2 -2
  21. package/dist/commands/auth/status.js +2 -2
  22. package/dist/commands/catalog/index.js +2 -2
  23. package/dist/commands/catalog/recommend.js +2 -2
  24. package/dist/commands/convert.js +2 -2
  25. package/dist/commands/converters.js +2 -2
  26. package/dist/commands/crons/list.js +2 -2
  27. package/dist/commands/crons/run.js +2 -2
  28. package/dist/commands/dashboard.js +2 -2
  29. package/dist/commands/eval-targets/create.js +2 -2
  30. package/dist/commands/eval-targets/list.js +2 -2
  31. package/dist/commands/evals/agent.js +11 -10
  32. package/dist/commands/evals/agent.js.map +2 -2
  33. package/dist/commands/evals/benchmark.js +2 -2
  34. package/dist/commands/evals/compare.js +2 -2
  35. package/dist/commands/evals/create.js +2 -2
  36. package/dist/commands/evals/optimize-description.js +2 -2
  37. package/dist/commands/evals/optimize.js +2 -2
  38. package/dist/commands/evals/run.js +2 -2
  39. package/dist/commands/gateway/ensure.js +2 -2
  40. package/dist/commands/hooks/install.js +2 -2
  41. package/dist/commands/hooks/run.js +2 -2
  42. package/dist/commands/hooks/uninstall.js +2 -2
  43. package/dist/commands/import.js +2 -2
  44. package/dist/commands/instructions/create.js +2 -2
  45. package/dist/commands/instructions/delete.js +2 -2
  46. package/dist/commands/instructions/fork.js +2 -2
  47. package/dist/commands/instructions/get.js +2 -2
  48. package/dist/commands/instructions/list.js +2 -2
  49. package/dist/commands/instructions/promote.js +2 -2
  50. package/dist/commands/instructions/pull.js +2 -2
  51. package/dist/commands/instructions/upstream.js +2 -2
  52. package/dist/commands/instructions/versions.js +2 -2
  53. package/dist/commands/launcher.js +2 -2
  54. package/dist/commands/org/current.js +2 -2
  55. package/dist/commands/org/list.js +2 -2
  56. package/dist/commands/org/switch.js +2 -2
  57. package/dist/commands/packs/add-instruction.js +2 -2
  58. package/dist/commands/packs/apply.js +2 -2
  59. package/dist/commands/packs/create.js +2 -2
  60. package/dist/commands/packs/fork.js +2 -2
  61. package/dist/commands/packs/get.js +2 -2
  62. package/dist/commands/packs/list.js +2 -2
  63. package/dist/commands/packs/remove-instruction.js +2 -2
  64. package/dist/commands/proxy/env.js +2 -2
  65. package/dist/commands/proxy/logs.js +2 -2
  66. package/dist/commands/proxy/restart.js +2 -2
  67. package/dist/commands/proxy/setup.js +2 -2
  68. package/dist/commands/proxy/start.js +2 -2
  69. package/dist/commands/proxy/status.js +2 -2
  70. package/dist/commands/proxy/stop.js +2 -2
  71. package/dist/commands/research/backfill.js +2 -2
  72. package/dist/commands/research/tail-transcript.js +2 -2
  73. package/dist/commands/service/install.js +2 -2
  74. package/dist/commands/service/status.js +2 -2
  75. package/dist/commands/service/uninstall.js +2 -2
  76. package/dist/commands/sessions/analyze.js +2 -2
  77. package/dist/commands/sessions/end.js +2 -2
  78. package/dist/commands/sessions/import.js +2 -2
  79. package/dist/commands/sessions/list.js +2 -2
  80. package/dist/commands/sessions/start.js +2 -2
  81. package/dist/commands/setup.js +146 -0
  82. package/dist/commands/setup.js.map +7 -0
  83. package/dist/commands/signals/report.js +2 -2
  84. package/dist/commands/skills/export-approved.js +2 -2
  85. package/dist/commands/skills/install.js +2 -2
  86. package/dist/commands/skills/list.js +2 -2
  87. package/dist/commands/skills/publish.js +2 -2
  88. package/dist/commands/skills/search.js +2 -2
  89. package/dist/commands/skills/update.js +2 -2
  90. package/dist/commands/suggestions/accept.js +2 -2
  91. package/dist/commands/suggestions/dismiss.js +2 -2
  92. package/dist/commands/suggestions/list.js +2 -2
  93. package/dist/commands/suggestions/refresh.js +2 -2
  94. package/dist/dashboard/Dashboard.js +11 -11
  95. package/dist/dashboard/launcher/LauncherOverlay.js +3 -3
  96. package/dist/lib/agent-loop.js +7 -7
  97. package/dist/lib/handlers/process-announcement.js +2 -2
  98. package/dist/lib/handlers/process-changelog.js +2 -2
  99. package/dist/lib/handlers/process-run-cleanup.js +2 -2
  100. package/dist/lib/handlers/process-session-goal.js +2 -2
  101. package/dist/lib/manual-tasks.js +2 -2
  102. package/dist/lib/setup-steps.js +26 -0
  103. package/dist/lib/setup-steps.js.map +7 -0
  104. package/dist/lib/version-check.js +3 -1
  105. package/oclif.manifest.json +1025 -964
  106. package/package.json +7 -7
  107. package/dist/chunk-2WWGG2A5.js.map +0 -7
  108. package/dist/chunk-OGVORIFM.js.map +0 -7
  109. /package/dist/{chunk-S56LOTGQ.js.map → chunk-7DIWBTB5.js.map} +0 -0
  110. /package/dist/{chunk-YEBBX4HQ.js.map → chunk-I4GHR6CY.js.map} +0 -0
  111. /package/dist/{chunk-CROYS75W.js.map → chunk-LJ5OT5XN.js.map} +0 -0
  112. /package/dist/{chunk-MTLAIJED.js.map → chunk-OWUS3HMA.js.map} +0 -0
  113. /package/dist/{chunk-CLC7ZFH2.js.map → chunk-RYMK7FQL.js.map} +0 -0
  114. /package/dist/{chunk-C7SRRSPA.js.map → chunk-VBOTWXJW.js.map} +0 -0
@@ -311,6 +311,67 @@
311
311
  "launcher.js"
312
312
  ]
313
313
  },
314
+ "setup": {
315
+ "aliases": [],
316
+ "args": {
317
+ "target": {
318
+ "description": "\"plan\" or a step id (install, auth, hooks, worker)",
319
+ "name": "target",
320
+ "required": false
321
+ }
322
+ },
323
+ "description": "Agentic, transparent setup: plan / show diffs / apply the four core onboarding steps",
324
+ "examples": [
325
+ "<%= config.bin %> setup # interactive walk (TTY)",
326
+ "<%= config.bin %> setup plan # read-only: every remaining artifact + diff",
327
+ "<%= config.bin %> setup hooks --show # print one step's diff",
328
+ "<%= config.bin %> setup hooks --apply # apply one step",
329
+ "<%= config.bin %> setup --json # machine-readable status (exit 0 iff complete)"
330
+ ],
331
+ "flags": {
332
+ "api-url": {
333
+ "description": "Override API base URL",
334
+ "env": "RULEMETRIC_API_URL",
335
+ "hidden": true,
336
+ "name": "api-url",
337
+ "hasDynamicHelp": false,
338
+ "multiple": false,
339
+ "type": "option"
340
+ },
341
+ "json": {
342
+ "description": "Machine-readable output",
343
+ "name": "json",
344
+ "allowNo": false,
345
+ "type": "boolean"
346
+ },
347
+ "show": {
348
+ "description": "Print the step diff (read-only)",
349
+ "name": "show",
350
+ "allowNo": false,
351
+ "type": "boolean"
352
+ },
353
+ "apply": {
354
+ "description": "Apply the step",
355
+ "name": "apply",
356
+ "allowNo": false,
357
+ "type": "boolean"
358
+ }
359
+ },
360
+ "hasDynamicHelp": false,
361
+ "hiddenAliases": [],
362
+ "id": "setup",
363
+ "pluginAlias": "@rulemetric/cli",
364
+ "pluginName": "@rulemetric/cli",
365
+ "pluginType": "core",
366
+ "strict": true,
367
+ "enableJsonFlag": false,
368
+ "isESM": true,
369
+ "relativePath": [
370
+ "dist",
371
+ "commands",
372
+ "setup.js"
373
+ ]
374
+ },
314
375
  "antigravity:backfill": {
315
376
  "aliases": [],
316
377
  "args": {
@@ -1629,12 +1690,18 @@
1629
1690
  "uninstall.js"
1630
1691
  ]
1631
1692
  },
1632
- "org:current": {
1693
+ "instructions:create": {
1633
1694
  "aliases": [],
1634
- "args": {},
1635
- "description": "Show the current active organization",
1695
+ "args": {
1696
+ "file": {
1697
+ "description": "Path to markdown file",
1698
+ "name": "file"
1699
+ }
1700
+ },
1701
+ "description": "Create a new instruction",
1636
1702
  "examples": [
1637
- "<%= config.bin %> org current"
1703
+ "<%= config.bin %> instructions create ./my-instruction.md --name \"My Rules\"",
1704
+ "<%= config.bin %> instructions create ./rules.md -n \"Rules\" -s project"
1638
1705
  ],
1639
1706
  "flags": {
1640
1707
  "api-url": {
@@ -1645,37 +1712,51 @@
1645
1712
  "hasDynamicHelp": false,
1646
1713
  "multiple": false,
1647
1714
  "type": "option"
1648
- }
1649
- },
1650
- "hasDynamicHelp": false,
1651
- "hiddenAliases": [],
1652
- "id": "org:current",
1653
- "pluginAlias": "@rulemetric/cli",
1654
- "pluginName": "@rulemetric/cli",
1655
- "pluginType": "core",
1656
- "strict": true,
1657
- "enableJsonFlag": false,
1658
- "isESM": true,
1659
- "relativePath": [
1660
- "dist",
1661
- "commands",
1662
- "org",
1663
- "current.js"
1664
- ]
1665
- },
1666
- "org:list": {
1667
- "aliases": [],
1668
- "args": {},
1669
- "description": "List organizations the current user is a member of",
1670
- "examples": [
1671
- "<%= config.bin %> org list"
1672
- ],
1673
- "flags": {
1674
- "api-url": {
1675
- "description": "Override API base URL",
1676
- "env": "RULEMETRIC_API_URL",
1677
- "hidden": true,
1678
- "name": "api-url",
1715
+ },
1716
+ "name": {
1717
+ "char": "n",
1718
+ "description": "Instruction name",
1719
+ "name": "name",
1720
+ "required": true,
1721
+ "hasDynamicHelp": false,
1722
+ "multiple": false,
1723
+ "type": "option"
1724
+ },
1725
+ "description": {
1726
+ "char": "d",
1727
+ "description": "Instruction description",
1728
+ "name": "description",
1729
+ "required": true,
1730
+ "hasDynamicHelp": false,
1731
+ "multiple": false,
1732
+ "type": "option"
1733
+ },
1734
+ "scope": {
1735
+ "char": "s",
1736
+ "description": "Instruction scope",
1737
+ "name": "scope",
1738
+ "default": "personal",
1739
+ "hasDynamicHelp": false,
1740
+ "multiple": false,
1741
+ "options": [
1742
+ "org",
1743
+ "team",
1744
+ "project",
1745
+ "personal"
1746
+ ],
1747
+ "type": "option"
1748
+ },
1749
+ "scope-ref": {
1750
+ "description": "Scope reference UUID",
1751
+ "name": "scope-ref",
1752
+ "hasDynamicHelp": false,
1753
+ "multiple": false,
1754
+ "type": "option"
1755
+ },
1756
+ "tags": {
1757
+ "char": "t",
1758
+ "description": "Comma-separated tags",
1759
+ "name": "tags",
1679
1760
  "hasDynamicHelp": false,
1680
1761
  "multiple": false,
1681
1762
  "type": "option"
@@ -1683,7 +1764,7 @@
1683
1764
  },
1684
1765
  "hasDynamicHelp": false,
1685
1766
  "hiddenAliases": [],
1686
- "id": "org:list",
1767
+ "id": "instructions:create",
1687
1768
  "pluginAlias": "@rulemetric/cli",
1688
1769
  "pluginName": "@rulemetric/cli",
1689
1770
  "pluginType": "core",
@@ -1693,23 +1774,23 @@
1693
1774
  "relativePath": [
1694
1775
  "dist",
1695
1776
  "commands",
1696
- "org",
1697
- "list.js"
1777
+ "instructions",
1778
+ "create.js"
1698
1779
  ]
1699
1780
  },
1700
- "org:switch": {
1781
+ "instructions:delete": {
1701
1782
  "aliases": [],
1702
1783
  "args": {
1703
- "slug": {
1704
- "description": "Organization slug to switch to",
1705
- "name": "slug",
1706
- "required": false
1784
+ "id": {
1785
+ "description": "Instruction ID",
1786
+ "name": "id",
1787
+ "required": true
1707
1788
  }
1708
1789
  },
1709
- "description": "Switch the active organization",
1790
+ "description": "Delete (archive) an instruction",
1710
1791
  "examples": [
1711
- "<%= config.bin %> org switch acme",
1712
- "<%= config.bin %> org switch --clear"
1792
+ "<%= config.bin %> instructions delete <id>",
1793
+ "<%= config.bin %> instructions delete <id> --force"
1713
1794
  ],
1714
1795
  "flags": {
1715
1796
  "api-url": {
@@ -1721,16 +1802,17 @@
1721
1802
  "multiple": false,
1722
1803
  "type": "option"
1723
1804
  },
1724
- "clear": {
1725
- "description": "Clear the active organization (personal mode)",
1726
- "name": "clear",
1805
+ "force": {
1806
+ "char": "f",
1807
+ "description": "Skip confirmation prompt",
1808
+ "name": "force",
1727
1809
  "allowNo": false,
1728
1810
  "type": "boolean"
1729
1811
  }
1730
1812
  },
1731
1813
  "hasDynamicHelp": false,
1732
1814
  "hiddenAliases": [],
1733
- "id": "org:switch",
1815
+ "id": "instructions:delete",
1734
1816
  "pluginAlias": "@rulemetric/cli",
1735
1817
  "pluginName": "@rulemetric/cli",
1736
1818
  "pluginType": "core",
@@ -1740,27 +1822,22 @@
1740
1822
  "relativePath": [
1741
1823
  "dist",
1742
1824
  "commands",
1743
- "org",
1744
- "switch.js"
1825
+ "instructions",
1826
+ "delete.js"
1745
1827
  ]
1746
1828
  },
1747
- "packs:add-instruction": {
1829
+ "instructions:fork": {
1748
1830
  "aliases": [],
1749
1831
  "args": {
1750
- "packId": {
1751
- "description": "Pack ID",
1752
- "name": "packId",
1753
- "required": true
1754
- },
1755
- "instructionId": {
1756
- "description": "Instruction ID",
1757
- "name": "instructionId",
1832
+ "id": {
1833
+ "description": "ID of the instruction to fork",
1834
+ "name": "id",
1758
1835
  "required": true
1759
1836
  }
1760
1837
  },
1761
- "description": "Add an instruction to a pack",
1838
+ "description": "Fork an instruction to your personal scope",
1762
1839
  "examples": [
1763
- "<%= config.bin %> packs add-instruction <pack-id> <instruction-id>"
1840
+ "<%= config.bin %> instructions fork <instruction-id>"
1764
1841
  ],
1765
1842
  "flags": {
1766
1843
  "api-url": {
@@ -1775,7 +1852,7 @@
1775
1852
  },
1776
1853
  "hasDynamicHelp": false,
1777
1854
  "hiddenAliases": [],
1778
- "id": "packs:add-instruction",
1855
+ "id": "instructions:fork",
1779
1856
  "pluginAlias": "@rulemetric/cli",
1780
1857
  "pluginName": "@rulemetric/cli",
1781
1858
  "pluginType": "core",
@@ -1785,24 +1862,32 @@
1785
1862
  "relativePath": [
1786
1863
  "dist",
1787
1864
  "commands",
1788
- "packs",
1789
- "add-instruction.js"
1865
+ "instructions",
1866
+ "fork.js"
1790
1867
  ]
1791
1868
  },
1792
- "packs:apply": {
1869
+ "instructions:get": {
1793
1870
  "aliases": [],
1794
1871
  "args": {
1795
1872
  "id": {
1796
- "description": "Pack ID",
1873
+ "description": "Instruction ID",
1797
1874
  "name": "id",
1798
1875
  "required": true
1799
1876
  }
1800
1877
  },
1801
- "description": "Apply a pack to a project (bulk-link all instructions)",
1878
+ "description": "Get an instruction by ID",
1802
1879
  "examples": [
1803
- "<%= config.bin %> packs apply <pack-id> --project <project-id>"
1880
+ "<%= config.bin %> instructions get <id>",
1881
+ "<%= config.bin %> instructions get <id> --format raw"
1804
1882
  ],
1805
1883
  "flags": {
1884
+ "json": {
1885
+ "description": "Format output as json.",
1886
+ "helpGroup": "GLOBAL",
1887
+ "name": "json",
1888
+ "allowNo": false,
1889
+ "type": "boolean"
1890
+ },
1806
1891
  "api-url": {
1807
1892
  "description": "Override API base URL",
1808
1893
  "env": "RULEMETRIC_API_URL",
@@ -1812,40 +1897,53 @@
1812
1897
  "multiple": false,
1813
1898
  "type": "option"
1814
1899
  },
1815
- "project": {
1816
- "char": "p",
1817
- "description": "Project ID",
1818
- "name": "project",
1819
- "required": true,
1900
+ "format": {
1901
+ "char": "f",
1902
+ "description": "Output format",
1903
+ "name": "format",
1904
+ "default": "yaml",
1820
1905
  "hasDynamicHelp": false,
1821
1906
  "multiple": false,
1907
+ "options": [
1908
+ "yaml",
1909
+ "json",
1910
+ "raw"
1911
+ ],
1822
1912
  "type": "option"
1823
1913
  }
1824
1914
  },
1825
1915
  "hasDynamicHelp": false,
1826
1916
  "hiddenAliases": [],
1827
- "id": "packs:apply",
1917
+ "id": "instructions:get",
1828
1918
  "pluginAlias": "@rulemetric/cli",
1829
1919
  "pluginName": "@rulemetric/cli",
1830
1920
  "pluginType": "core",
1831
1921
  "strict": true,
1832
- "enableJsonFlag": false,
1922
+ "enableJsonFlag": true,
1833
1923
  "isESM": true,
1834
1924
  "relativePath": [
1835
1925
  "dist",
1836
1926
  "commands",
1837
- "packs",
1838
- "apply.js"
1927
+ "instructions",
1928
+ "get.js"
1839
1929
  ]
1840
1930
  },
1841
- "packs:create": {
1931
+ "instructions:list": {
1842
1932
  "aliases": [],
1843
1933
  "args": {},
1844
- "description": "Create a new instruction pack",
1934
+ "description": "List your instructions",
1845
1935
  "examples": [
1846
- "<%= config.bin %> packs create --name \"Security Pack\" --description \"Security-focused instructions\""
1936
+ "<%= config.bin %> instructions list",
1937
+ "<%= config.bin %> instructions list --json"
1847
1938
  ],
1848
1939
  "flags": {
1940
+ "json": {
1941
+ "description": "Format output as json.",
1942
+ "helpGroup": "GLOBAL",
1943
+ "name": "json",
1944
+ "allowNo": false,
1945
+ "type": "boolean"
1946
+ },
1849
1947
  "api-url": {
1850
1948
  "description": "Override API base URL",
1851
1949
  "env": "RULEMETRIC_API_URL",
@@ -1855,42 +1953,76 @@
1855
1953
  "multiple": false,
1856
1954
  "type": "option"
1857
1955
  },
1858
- "name": {
1859
- "char": "n",
1860
- "description": "Pack name",
1861
- "name": "name",
1862
- "required": true,
1956
+ "format": {
1957
+ "char": "f",
1958
+ "description": "Output format",
1959
+ "name": "format",
1960
+ "default": "table",
1863
1961
  "hasDynamicHelp": false,
1864
1962
  "multiple": false,
1865
- "type": "option"
1866
- },
1867
- "description": {
1868
- "char": "d",
1869
- "description": "Pack description",
1870
- "name": "description",
1871
- "required": true,
1963
+ "options": [
1964
+ "table",
1965
+ "json"
1966
+ ],
1967
+ "type": "option"
1968
+ }
1969
+ },
1970
+ "hasDynamicHelp": false,
1971
+ "hiddenAliases": [],
1972
+ "id": "instructions:list",
1973
+ "pluginAlias": "@rulemetric/cli",
1974
+ "pluginName": "@rulemetric/cli",
1975
+ "pluginType": "core",
1976
+ "strict": true,
1977
+ "enableJsonFlag": true,
1978
+ "isESM": true,
1979
+ "relativePath": [
1980
+ "dist",
1981
+ "commands",
1982
+ "instructions",
1983
+ "list.js"
1984
+ ]
1985
+ },
1986
+ "instructions:promote": {
1987
+ "aliases": [],
1988
+ "args": {
1989
+ "id": {
1990
+ "description": "ID of the instruction to promote",
1991
+ "name": "id",
1992
+ "required": true
1993
+ }
1994
+ },
1995
+ "description": "Promote an instruction to a higher scope (personal → team → org)",
1996
+ "examples": [
1997
+ "<%= config.bin %> instructions promote <id> --scope team --ref <team-id>",
1998
+ "<%= config.bin %> instructions promote <id> --scope org --ref <org-id>"
1999
+ ],
2000
+ "flags": {
2001
+ "api-url": {
2002
+ "description": "Override API base URL",
2003
+ "env": "RULEMETRIC_API_URL",
2004
+ "hidden": true,
2005
+ "name": "api-url",
1872
2006
  "hasDynamicHelp": false,
1873
2007
  "multiple": false,
1874
2008
  "type": "option"
1875
2009
  },
1876
2010
  "scope": {
1877
- "char": "s",
1878
- "description": "Pack scope",
2011
+ "description": "Target scope",
1879
2012
  "name": "scope",
1880
- "default": "personal",
2013
+ "required": true,
1881
2014
  "hasDynamicHelp": false,
1882
2015
  "multiple": false,
1883
2016
  "options": [
1884
- "org",
1885
2017
  "team",
1886
- "personal"
2018
+ "org"
1887
2019
  ],
1888
2020
  "type": "option"
1889
2021
  },
1890
- "tags": {
1891
- "char": "t",
1892
- "description": "Comma-separated tags",
1893
- "name": "tags",
2022
+ "ref": {
2023
+ "description": "Target scope ref (team or org ID)",
2024
+ "name": "ref",
2025
+ "required": true,
1894
2026
  "hasDynamicHelp": false,
1895
2027
  "multiple": false,
1896
2028
  "type": "option"
@@ -1898,7 +2030,7 @@
1898
2030
  },
1899
2031
  "hasDynamicHelp": false,
1900
2032
  "hiddenAliases": [],
1901
- "id": "packs:create",
2033
+ "id": "instructions:promote",
1902
2034
  "pluginAlias": "@rulemetric/cli",
1903
2035
  "pluginName": "@rulemetric/cli",
1904
2036
  "pluginType": "core",
@@ -1908,23 +2040,20 @@
1908
2040
  "relativePath": [
1909
2041
  "dist",
1910
2042
  "commands",
1911
- "packs",
1912
- "create.js"
2043
+ "instructions",
2044
+ "promote.js"
1913
2045
  ]
1914
2046
  },
1915
- "packs:fork": {
2047
+ "instructions:pull": {
1916
2048
  "aliases": [],
1917
2049
  "args": {
1918
2050
  "id": {
1919
- "description": "ID of the pack to fork",
2051
+ "description": "ID of the forked instruction",
1920
2052
  "name": "id",
1921
2053
  "required": true
1922
2054
  }
1923
2055
  },
1924
- "description": "Fork a pack to your personal scope",
1925
- "examples": [
1926
- "<%= config.bin %> packs fork <pack-id>"
1927
- ],
2056
+ "description": "Pull upstream changes into a forked instruction",
1928
2057
  "flags": {
1929
2058
  "api-url": {
1930
2059
  "description": "Override API base URL",
@@ -1938,7 +2067,7 @@
1938
2067
  },
1939
2068
  "hasDynamicHelp": false,
1940
2069
  "hiddenAliases": [],
1941
- "id": "packs:fork",
2070
+ "id": "instructions:pull",
1942
2071
  "pluginAlias": "@rulemetric/cli",
1943
2072
  "pluginName": "@rulemetric/cli",
1944
2073
  "pluginType": "core",
@@ -1948,23 +2077,20 @@
1948
2077
  "relativePath": [
1949
2078
  "dist",
1950
2079
  "commands",
1951
- "packs",
1952
- "fork.js"
2080
+ "instructions",
2081
+ "pull.js"
1953
2082
  ]
1954
2083
  },
1955
- "packs:get": {
2084
+ "instructions:upstream": {
1956
2085
  "aliases": [],
1957
2086
  "args": {
1958
2087
  "id": {
1959
- "description": "Pack ID",
2088
+ "description": "ID of the forked instruction",
1960
2089
  "name": "id",
1961
2090
  "required": true
1962
2091
  }
1963
2092
  },
1964
- "description": "Get pack detail with instruction list",
1965
- "examples": [
1966
- "<%= config.bin %> packs get <pack-id>"
1967
- ],
2093
+ "description": "Check if a forked instruction has upstream updates",
1968
2094
  "flags": {
1969
2095
  "api-url": {
1970
2096
  "description": "Override API base URL",
@@ -1978,7 +2104,7 @@
1978
2104
  },
1979
2105
  "hasDynamicHelp": false,
1980
2106
  "hiddenAliases": [],
1981
- "id": "packs:get",
2107
+ "id": "instructions:upstream",
1982
2108
  "pluginAlias": "@rulemetric/cli",
1983
2109
  "pluginName": "@rulemetric/cli",
1984
2110
  "pluginType": "core",
@@ -1988,17 +2114,22 @@
1988
2114
  "relativePath": [
1989
2115
  "dist",
1990
2116
  "commands",
1991
- "packs",
1992
- "get.js"
2117
+ "instructions",
2118
+ "upstream.js"
1993
2119
  ]
1994
2120
  },
1995
- "packs:list": {
2121
+ "instructions:versions": {
1996
2122
  "aliases": [],
1997
- "args": {},
1998
- "description": "List your instruction packs",
2123
+ "args": {
2124
+ "id": {
2125
+ "description": "Instruction ID",
2126
+ "name": "id",
2127
+ "required": true
2128
+ }
2129
+ },
2130
+ "description": "List version history for an instruction",
1999
2131
  "examples": [
2000
- "<%= config.bin %> packs list",
2001
- "<%= config.bin %> packs list --json"
2132
+ "<%= config.bin %> instructions versions <id>"
2002
2133
  ],
2003
2134
  "flags": {
2004
2135
  "json": {
@@ -2016,24 +2147,11 @@
2016
2147
  "hasDynamicHelp": false,
2017
2148
  "multiple": false,
2018
2149
  "type": "option"
2019
- },
2020
- "format": {
2021
- "char": "f",
2022
- "description": "Output format",
2023
- "name": "format",
2024
- "default": "table",
2025
- "hasDynamicHelp": false,
2026
- "multiple": false,
2027
- "options": [
2028
- "table",
2029
- "json"
2030
- ],
2031
- "type": "option"
2032
2150
  }
2033
2151
  },
2034
2152
  "hasDynamicHelp": false,
2035
2153
  "hiddenAliases": [],
2036
- "id": "packs:list",
2154
+ "id": "instructions:versions",
2037
2155
  "pluginAlias": "@rulemetric/cli",
2038
2156
  "pluginName": "@rulemetric/cli",
2039
2157
  "pluginType": "core",
@@ -2043,11 +2161,11 @@
2043
2161
  "relativePath": [
2044
2162
  "dist",
2045
2163
  "commands",
2046
- "packs",
2047
- "list.js"
2164
+ "instructions",
2165
+ "versions.js"
2048
2166
  ]
2049
2167
  },
2050
- "packs:remove-instruction": {
2168
+ "packs:add-instruction": {
2051
2169
  "aliases": [],
2052
2170
  "args": {
2053
2171
  "packId": {
@@ -2061,9 +2179,9 @@
2061
2179
  "required": true
2062
2180
  }
2063
2181
  },
2064
- "description": "Remove an instruction from a pack",
2182
+ "description": "Add an instruction to a pack",
2065
2183
  "examples": [
2066
- "<%= config.bin %> packs remove-instruction <pack-id> <instruction-id>"
2184
+ "<%= config.bin %> packs add-instruction <pack-id> <instruction-id>"
2067
2185
  ],
2068
2186
  "flags": {
2069
2187
  "api-url": {
@@ -2078,7 +2196,7 @@
2078
2196
  },
2079
2197
  "hasDynamicHelp": false,
2080
2198
  "hiddenAliases": [],
2081
- "id": "packs:remove-instruction",
2199
+ "id": "packs:add-instruction",
2082
2200
  "pluginAlias": "@rulemetric/cli",
2083
2201
  "pluginName": "@rulemetric/cli",
2084
2202
  "pluginType": "core",
@@ -2089,18 +2207,21 @@
2089
2207
  "dist",
2090
2208
  "commands",
2091
2209
  "packs",
2092
- "remove-instruction.js"
2210
+ "add-instruction.js"
2093
2211
  ]
2094
2212
  },
2095
- "proxy:env": {
2213
+ "packs:apply": {
2096
2214
  "aliases": [],
2097
- "args": {},
2098
- "description": "Print shell env vars to route any client through the RuleMetric proxy",
2215
+ "args": {
2216
+ "id": {
2217
+ "description": "Pack ID",
2218
+ "name": "id",
2219
+ "required": true
2220
+ }
2221
+ },
2222
+ "description": "Apply a pack to a project (bulk-link all instructions)",
2099
2223
  "examples": [
2100
- "<%= config.bin %> proxy env",
2101
- "<%= config.bin %> proxy env --shell fish",
2102
- "eval \"$(rulemetric proxy env)\"",
2103
- "rulemetric proxy env --python"
2224
+ "<%= config.bin %> packs apply <pack-id> --project <project-id>"
2104
2225
  ],
2105
2226
  "flags": {
2106
2227
  "api-url": {
@@ -2112,48 +2233,19 @@
2112
2233
  "multiple": false,
2113
2234
  "type": "option"
2114
2235
  },
2115
- "shell": {
2116
- "char": "s",
2117
- "description": "Shell format (posix, fish, powershell)",
2118
- "name": "shell",
2119
- "default": "posix",
2236
+ "project": {
2237
+ "char": "p",
2238
+ "description": "Project ID",
2239
+ "name": "project",
2240
+ "required": true,
2120
2241
  "hasDynamicHelp": false,
2121
2242
  "multiple": false,
2122
- "options": [
2123
- "posix",
2124
- "fish",
2125
- "powershell"
2126
- ],
2127
2243
  "type": "option"
2128
- },
2129
- "python": {
2130
- "description": "Include Python-specific env vars (REQUESTS_CA_BUNDLE, SSL_CERT_FILE)",
2131
- "name": "python",
2132
- "allowNo": false,
2133
- "type": "boolean"
2134
- },
2135
- "node": {
2136
- "description": "Include Node.js-specific env vars (NODE_EXTRA_CA_CERTS)",
2137
- "name": "node",
2138
- "allowNo": false,
2139
- "type": "boolean"
2140
- },
2141
- "all": {
2142
- "description": "Include env vars for all runtimes",
2143
- "name": "all",
2144
- "allowNo": false,
2145
- "type": "boolean"
2146
- },
2147
- "vscode": {
2148
- "description": "Output VS Code settings.json snippet for Copilot proxy",
2149
- "name": "vscode",
2150
- "allowNo": false,
2151
- "type": "boolean"
2152
2244
  }
2153
2245
  },
2154
2246
  "hasDynamicHelp": false,
2155
2247
  "hiddenAliases": [],
2156
- "id": "proxy:env",
2248
+ "id": "packs:apply",
2157
2249
  "pluginAlias": "@rulemetric/cli",
2158
2250
  "pluginName": "@rulemetric/cli",
2159
2251
  "pluginType": "core",
@@ -2163,18 +2255,16 @@
2163
2255
  "relativePath": [
2164
2256
  "dist",
2165
2257
  "commands",
2166
- "proxy",
2167
- "env.js"
2258
+ "packs",
2259
+ "apply.js"
2168
2260
  ]
2169
2261
  },
2170
- "proxy:logs": {
2262
+ "packs:create": {
2171
2263
  "aliases": [],
2172
2264
  "args": {},
2173
- "description": "View context capture proxy logs",
2265
+ "description": "Create a new instruction pack",
2174
2266
  "examples": [
2175
- "<%= config.bin %> proxy logs",
2176
- "<%= config.bin %> proxy logs --follow",
2177
- "<%= config.bin %> proxy logs --lines 50"
2267
+ "<%= config.bin %> packs create --name \"Security Pack\" --description \"Security-focused instructions\""
2178
2268
  ],
2179
2269
  "flags": {
2180
2270
  "api-url": {
@@ -2186,75 +2276,50 @@
2186
2276
  "multiple": false,
2187
2277
  "type": "option"
2188
2278
  },
2189
- "follow": {
2190
- "char": "f",
2191
- "description": "Follow log output (like tail -f)",
2192
- "name": "follow",
2193
- "allowNo": false,
2194
- "type": "boolean"
2195
- },
2196
- "lines": {
2279
+ "name": {
2197
2280
  "char": "n",
2198
- "description": "Number of lines to show",
2199
- "name": "lines",
2200
- "default": 30,
2281
+ "description": "Pack name",
2282
+ "name": "name",
2283
+ "required": true,
2201
2284
  "hasDynamicHelp": false,
2202
2285
  "multiple": false,
2203
2286
  "type": "option"
2204
- }
2205
- },
2206
- "hasDynamicHelp": false,
2207
- "hiddenAliases": [],
2208
- "id": "proxy:logs",
2209
- "pluginAlias": "@rulemetric/cli",
2210
- "pluginName": "@rulemetric/cli",
2211
- "pluginType": "core",
2212
- "strict": true,
2213
- "enableJsonFlag": false,
2214
- "isESM": true,
2215
- "relativePath": [
2216
- "dist",
2217
- "commands",
2218
- "proxy",
2219
- "logs.js"
2220
- ]
2221
- },
2222
- "proxy:restart": {
2223
- "aliases": [],
2224
- "args": {},
2225
- "description": "Restart the context capture proxy (stop + start)",
2226
- "examples": [
2227
- "<%= config.bin %> proxy restart"
2228
- ],
2229
- "flags": {
2230
- "api-url": {
2231
- "description": "Override API base URL",
2232
- "env": "RULEMETRIC_API_URL",
2233
- "hidden": true,
2234
- "name": "api-url",
2287
+ },
2288
+ "description": {
2289
+ "char": "d",
2290
+ "description": "Pack description",
2291
+ "name": "description",
2292
+ "required": true,
2235
2293
  "hasDynamicHelp": false,
2236
2294
  "multiple": false,
2237
2295
  "type": "option"
2238
2296
  },
2239
- "port": {
2240
- "char": "p",
2241
- "description": "Proxy listen port",
2242
- "name": "port",
2297
+ "scope": {
2298
+ "char": "s",
2299
+ "description": "Pack scope",
2300
+ "name": "scope",
2301
+ "default": "personal",
2243
2302
  "hasDynamicHelp": false,
2244
2303
  "multiple": false,
2304
+ "options": [
2305
+ "org",
2306
+ "team",
2307
+ "personal"
2308
+ ],
2245
2309
  "type": "option"
2246
2310
  },
2247
- "docker": {
2248
- "char": "d",
2249
- "description": "Run in Docker mode",
2250
- "name": "docker",
2251
- "allowNo": false,
2252
- "type": "boolean"
2311
+ "tags": {
2312
+ "char": "t",
2313
+ "description": "Comma-separated tags",
2314
+ "name": "tags",
2315
+ "hasDynamicHelp": false,
2316
+ "multiple": false,
2317
+ "type": "option"
2253
2318
  }
2254
2319
  },
2255
2320
  "hasDynamicHelp": false,
2256
2321
  "hiddenAliases": [],
2257
- "id": "proxy:restart",
2322
+ "id": "packs:create",
2258
2323
  "pluginAlias": "@rulemetric/cli",
2259
2324
  "pluginName": "@rulemetric/cli",
2260
2325
  "pluginType": "core",
@@ -2264,18 +2329,22 @@
2264
2329
  "relativePath": [
2265
2330
  "dist",
2266
2331
  "commands",
2267
- "proxy",
2268
- "restart.js"
2332
+ "packs",
2333
+ "create.js"
2269
2334
  ]
2270
2335
  },
2271
- "proxy:setup": {
2336
+ "packs:fork": {
2272
2337
  "aliases": [],
2273
- "args": {},
2274
- "description": "Set up context capture proxy (installs mitmproxy, configures shell)",
2338
+ "args": {
2339
+ "id": {
2340
+ "description": "ID of the pack to fork",
2341
+ "name": "id",
2342
+ "required": true
2343
+ }
2344
+ },
2345
+ "description": "Fork a pack to your personal scope",
2275
2346
  "examples": [
2276
- "<%= config.bin %> proxy setup",
2277
- "<%= config.bin %> proxy setup --shell zsh",
2278
- "<%= config.bin %> proxy setup --check"
2347
+ "<%= config.bin %> packs fork <pack-id>"
2279
2348
  ],
2280
2349
  "flags": {
2281
2350
  "api-url": {
@@ -2286,39 +2355,51 @@
2286
2355
  "hasDynamicHelp": false,
2287
2356
  "multiple": false,
2288
2357
  "type": "option"
2289
- },
2290
- "shell": {
2291
- "description": "Shell to configure (auto-detected if omitted)",
2292
- "name": "shell",
2293
- "hasDynamicHelp": false,
2294
- "multiple": false,
2295
- "options": [
2296
- "zsh",
2297
- "bash",
2298
- "fish",
2299
- "powershell"
2300
- ],
2301
- "type": "option"
2302
- },
2303
- "port": {
2304
- "char": "p",
2305
- "description": "Proxy listen port",
2306
- "name": "port",
2307
- "default": 8787,
2358
+ }
2359
+ },
2360
+ "hasDynamicHelp": false,
2361
+ "hiddenAliases": [],
2362
+ "id": "packs:fork",
2363
+ "pluginAlias": "@rulemetric/cli",
2364
+ "pluginName": "@rulemetric/cli",
2365
+ "pluginType": "core",
2366
+ "strict": true,
2367
+ "enableJsonFlag": false,
2368
+ "isESM": true,
2369
+ "relativePath": [
2370
+ "dist",
2371
+ "commands",
2372
+ "packs",
2373
+ "fork.js"
2374
+ ]
2375
+ },
2376
+ "packs:get": {
2377
+ "aliases": [],
2378
+ "args": {
2379
+ "id": {
2380
+ "description": "Pack ID",
2381
+ "name": "id",
2382
+ "required": true
2383
+ }
2384
+ },
2385
+ "description": "Get pack detail with instruction list",
2386
+ "examples": [
2387
+ "<%= config.bin %> packs get <pack-id>"
2388
+ ],
2389
+ "flags": {
2390
+ "api-url": {
2391
+ "description": "Override API base URL",
2392
+ "env": "RULEMETRIC_API_URL",
2393
+ "hidden": true,
2394
+ "name": "api-url",
2308
2395
  "hasDynamicHelp": false,
2309
2396
  "multiple": false,
2310
2397
  "type": "option"
2311
- },
2312
- "check": {
2313
- "description": "Only check prerequisites, do not install anything",
2314
- "name": "check",
2315
- "allowNo": false,
2316
- "type": "boolean"
2317
2398
  }
2318
2399
  },
2319
2400
  "hasDynamicHelp": false,
2320
2401
  "hiddenAliases": [],
2321
- "id": "proxy:setup",
2402
+ "id": "packs:get",
2322
2403
  "pluginAlias": "@rulemetric/cli",
2323
2404
  "pluginName": "@rulemetric/cli",
2324
2405
  "pluginType": "core",
@@ -2328,21 +2409,26 @@
2328
2409
  "relativePath": [
2329
2410
  "dist",
2330
2411
  "commands",
2331
- "proxy",
2332
- "setup.js"
2412
+ "packs",
2413
+ "get.js"
2333
2414
  ]
2334
2415
  },
2335
- "proxy:start": {
2416
+ "packs:list": {
2336
2417
  "aliases": [],
2337
2418
  "args": {},
2338
- "description": "Start context capture proxy",
2419
+ "description": "List your instruction packs",
2339
2420
  "examples": [
2340
- "<%= config.bin %> proxy start",
2341
- "<%= config.bin %> proxy start --docker",
2342
- "<%= config.bin %> proxy start --port 9090",
2343
- "<%= config.bin %> proxy start --web"
2421
+ "<%= config.bin %> packs list",
2422
+ "<%= config.bin %> packs list --json"
2344
2423
  ],
2345
2424
  "flags": {
2425
+ "json": {
2426
+ "description": "Format output as json.",
2427
+ "helpGroup": "GLOBAL",
2428
+ "name": "json",
2429
+ "allowNo": false,
2430
+ "type": "boolean"
2431
+ },
2346
2432
  "api-url": {
2347
2433
  "description": "Override API base URL",
2348
2434
  "env": "RULEMETRIC_API_URL",
@@ -2352,44 +2438,68 @@
2352
2438
  "multiple": false,
2353
2439
  "type": "option"
2354
2440
  },
2355
- "port": {
2356
- "char": "p",
2357
- "description": "Proxy listen port",
2358
- "name": "port",
2359
- "default": 8788,
2441
+ "format": {
2442
+ "char": "f",
2443
+ "description": "Output format",
2444
+ "name": "format",
2445
+ "default": "table",
2360
2446
  "hasDynamicHelp": false,
2361
2447
  "multiple": false,
2448
+ "options": [
2449
+ "table",
2450
+ "json"
2451
+ ],
2362
2452
  "type": "option"
2453
+ }
2454
+ },
2455
+ "hasDynamicHelp": false,
2456
+ "hiddenAliases": [],
2457
+ "id": "packs:list",
2458
+ "pluginAlias": "@rulemetric/cli",
2459
+ "pluginName": "@rulemetric/cli",
2460
+ "pluginType": "core",
2461
+ "strict": true,
2462
+ "enableJsonFlag": true,
2463
+ "isESM": true,
2464
+ "relativePath": [
2465
+ "dist",
2466
+ "commands",
2467
+ "packs",
2468
+ "list.js"
2469
+ ]
2470
+ },
2471
+ "packs:remove-instruction": {
2472
+ "aliases": [],
2473
+ "args": {
2474
+ "packId": {
2475
+ "description": "Pack ID",
2476
+ "name": "packId",
2477
+ "required": true
2363
2478
  },
2364
- "docker": {
2365
- "char": "d",
2366
- "description": "Run proxy in Docker (no local mitmproxy needed)",
2367
- "name": "docker",
2368
- "allowNo": false,
2369
- "type": "boolean"
2370
- },
2371
- "web": {
2372
- "description": "Launch mitmweb debug UI instead of mitmdump (local mode only)",
2373
- "name": "web",
2374
- "allowNo": false,
2375
- "type": "boolean"
2376
- },
2377
- "skip-checks": {
2378
- "description": "Skip prerequisite checks",
2379
- "name": "skip-checks",
2380
- "allowNo": false,
2381
- "type": "boolean"
2382
- },
2383
- "build": {
2384
- "description": "Force rebuild Docker image",
2385
- "name": "build",
2386
- "allowNo": false,
2387
- "type": "boolean"
2479
+ "instructionId": {
2480
+ "description": "Instruction ID",
2481
+ "name": "instructionId",
2482
+ "required": true
2483
+ }
2484
+ },
2485
+ "description": "Remove an instruction from a pack",
2486
+ "examples": [
2487
+ "<%= config.bin %> packs remove-instruction <pack-id> <instruction-id>"
2488
+ ],
2489
+ "flags": {
2490
+ "api-url": {
2491
+ "description": "Override API base URL",
2492
+ "env": "RULEMETRIC_API_URL",
2493
+ "hidden": true,
2494
+ "name": "api-url",
2495
+ "hasDynamicHelp": false,
2496
+ "multiple": false,
2497
+ "type": "option"
2388
2498
  }
2389
2499
  },
2390
2500
  "hasDynamicHelp": false,
2391
2501
  "hiddenAliases": [],
2392
- "id": "proxy:start",
2502
+ "id": "packs:remove-instruction",
2393
2503
  "pluginAlias": "@rulemetric/cli",
2394
2504
  "pluginName": "@rulemetric/cli",
2395
2505
  "pluginType": "core",
@@ -2399,16 +2509,19 @@
2399
2509
  "relativePath": [
2400
2510
  "dist",
2401
2511
  "commands",
2402
- "proxy",
2403
- "start.js"
2512
+ "packs",
2513
+ "remove-instruction.js"
2404
2514
  ]
2405
2515
  },
2406
- "proxy:status": {
2516
+ "proxy:env": {
2407
2517
  "aliases": [],
2408
2518
  "args": {},
2409
- "description": "Check gateway and context capture proxy status",
2519
+ "description": "Print shell env vars to route any client through the RuleMetric proxy",
2410
2520
  "examples": [
2411
- "<%= config.bin %> proxy status"
2521
+ "<%= config.bin %> proxy env",
2522
+ "<%= config.bin %> proxy env --shell fish",
2523
+ "eval \"$(rulemetric proxy env)\"",
2524
+ "rulemetric proxy env --python"
2412
2525
  ],
2413
2526
  "flags": {
2414
2527
  "api-url": {
@@ -2419,11 +2532,49 @@
2419
2532
  "hasDynamicHelp": false,
2420
2533
  "multiple": false,
2421
2534
  "type": "option"
2535
+ },
2536
+ "shell": {
2537
+ "char": "s",
2538
+ "description": "Shell format (posix, fish, powershell)",
2539
+ "name": "shell",
2540
+ "default": "posix",
2541
+ "hasDynamicHelp": false,
2542
+ "multiple": false,
2543
+ "options": [
2544
+ "posix",
2545
+ "fish",
2546
+ "powershell"
2547
+ ],
2548
+ "type": "option"
2549
+ },
2550
+ "python": {
2551
+ "description": "Include Python-specific env vars (REQUESTS_CA_BUNDLE, SSL_CERT_FILE)",
2552
+ "name": "python",
2553
+ "allowNo": false,
2554
+ "type": "boolean"
2555
+ },
2556
+ "node": {
2557
+ "description": "Include Node.js-specific env vars (NODE_EXTRA_CA_CERTS)",
2558
+ "name": "node",
2559
+ "allowNo": false,
2560
+ "type": "boolean"
2561
+ },
2562
+ "all": {
2563
+ "description": "Include env vars for all runtimes",
2564
+ "name": "all",
2565
+ "allowNo": false,
2566
+ "type": "boolean"
2567
+ },
2568
+ "vscode": {
2569
+ "description": "Output VS Code settings.json snippet for Copilot proxy",
2570
+ "name": "vscode",
2571
+ "allowNo": false,
2572
+ "type": "boolean"
2422
2573
  }
2423
2574
  },
2424
2575
  "hasDynamicHelp": false,
2425
2576
  "hiddenAliases": [],
2426
- "id": "proxy:status",
2577
+ "id": "proxy:env",
2427
2578
  "pluginAlias": "@rulemetric/cli",
2428
2579
  "pluginName": "@rulemetric/cli",
2429
2580
  "pluginType": "core",
@@ -2434,15 +2585,17 @@
2434
2585
  "dist",
2435
2586
  "commands",
2436
2587
  "proxy",
2437
- "status.js"
2588
+ "env.js"
2438
2589
  ]
2439
2590
  },
2440
- "proxy:stop": {
2591
+ "proxy:logs": {
2441
2592
  "aliases": [],
2442
2593
  "args": {},
2443
- "description": "Stop the context capture proxy",
2594
+ "description": "View context capture proxy logs",
2444
2595
  "examples": [
2445
- "<%= config.bin %> proxy stop"
2596
+ "<%= config.bin %> proxy logs",
2597
+ "<%= config.bin %> proxy logs --follow",
2598
+ "<%= config.bin %> proxy logs --lines 50"
2446
2599
  ],
2447
2600
  "flags": {
2448
2601
  "api-url": {
@@ -2453,11 +2606,27 @@
2453
2606
  "hasDynamicHelp": false,
2454
2607
  "multiple": false,
2455
2608
  "type": "option"
2609
+ },
2610
+ "follow": {
2611
+ "char": "f",
2612
+ "description": "Follow log output (like tail -f)",
2613
+ "name": "follow",
2614
+ "allowNo": false,
2615
+ "type": "boolean"
2616
+ },
2617
+ "lines": {
2618
+ "char": "n",
2619
+ "description": "Number of lines to show",
2620
+ "name": "lines",
2621
+ "default": 30,
2622
+ "hasDynamicHelp": false,
2623
+ "multiple": false,
2624
+ "type": "option"
2456
2625
  }
2457
2626
  },
2458
2627
  "hasDynamicHelp": false,
2459
2628
  "hiddenAliases": [],
2460
- "id": "proxy:stop",
2629
+ "id": "proxy:logs",
2461
2630
  "pluginAlias": "@rulemetric/cli",
2462
2631
  "pluginName": "@rulemetric/cli",
2463
2632
  "pluginType": "core",
@@ -2468,16 +2637,15 @@
2468
2637
  "dist",
2469
2638
  "commands",
2470
2639
  "proxy",
2471
- "stop.js"
2640
+ "logs.js"
2472
2641
  ]
2473
2642
  },
2474
- "research:backfill": {
2643
+ "proxy:restart": {
2475
2644
  "aliases": [],
2476
2645
  "args": {},
2477
- "description": "Scan every ~/.claude/projects transcript for past rate-limit (429) events and POST them as observations. Opt-in seed for the usage-research dataset — forward-only tail is the default capture path.",
2646
+ "description": "Restart the context capture proxy (stop + start)",
2478
2647
  "examples": [
2479
- "<%= config.bin %> research backfill",
2480
- "<%= config.bin %> research backfill --claude-dir /custom/.claude --dry-run"
2648
+ "<%= config.bin %> proxy restart"
2481
2649
  ],
2482
2650
  "flags": {
2483
2651
  "api-url": {
@@ -2489,24 +2657,25 @@
2489
2657
  "multiple": false,
2490
2658
  "type": "option"
2491
2659
  },
2492
- "claude-dir": {
2493
- "description": "Override the Claude Code projects directory",
2494
- "name": "claude-dir",
2495
- "default": "/home/runner/.claude",
2660
+ "port": {
2661
+ "char": "p",
2662
+ "description": "Proxy listen port",
2663
+ "name": "port",
2496
2664
  "hasDynamicHelp": false,
2497
2665
  "multiple": false,
2498
2666
  "type": "option"
2499
2667
  },
2500
- "dry-run": {
2501
- "description": "Print observation count without POSTing",
2502
- "name": "dry-run",
2668
+ "docker": {
2669
+ "char": "d",
2670
+ "description": "Run in Docker mode",
2671
+ "name": "docker",
2503
2672
  "allowNo": false,
2504
2673
  "type": "boolean"
2505
2674
  }
2506
2675
  },
2507
2676
  "hasDynamicHelp": false,
2508
2677
  "hiddenAliases": [],
2509
- "id": "research:backfill",
2678
+ "id": "proxy:restart",
2510
2679
  "pluginAlias": "@rulemetric/cli",
2511
2680
  "pluginName": "@rulemetric/cli",
2512
2681
  "pluginType": "core",
@@ -2516,20 +2685,19 @@
2516
2685
  "relativePath": [
2517
2686
  "dist",
2518
2687
  "commands",
2519
- "research",
2520
- "backfill.js"
2688
+ "proxy",
2689
+ "restart.js"
2521
2690
  ]
2522
2691
  },
2523
- "research:tail-transcript": {
2692
+ "proxy:setup": {
2524
2693
  "aliases": [],
2525
- "args": {
2526
- "transcript": {
2527
- "description": "Absolute path to a Claude Code .jsonl transcript",
2528
- "name": "transcript",
2529
- "required": true
2530
- }
2531
- },
2532
- "description": "Read new lines from a Claude Code transcript since the last cached offset, POST any 429 events, and persist the new offset. Invoked by the session-end hook — safe to re-run.",
2694
+ "args": {},
2695
+ "description": "Set up context capture proxy (installs mitmproxy, configures shell)",
2696
+ "examples": [
2697
+ "<%= config.bin %> proxy setup",
2698
+ "<%= config.bin %> proxy setup --shell zsh",
2699
+ "<%= config.bin %> proxy setup --check"
2700
+ ],
2533
2701
  "flags": {
2534
2702
  "api-url": {
2535
2703
  "description": "Override API base URL",
@@ -2540,17 +2708,38 @@
2540
2708
  "multiple": false,
2541
2709
  "type": "option"
2542
2710
  },
2543
- "no-post": {
2544
- "description": "Parse and advance the offset without POSTing (debug)",
2545
- "name": "no-post",
2711
+ "shell": {
2712
+ "description": "Shell to configure (auto-detected if omitted)",
2713
+ "name": "shell",
2714
+ "hasDynamicHelp": false,
2715
+ "multiple": false,
2716
+ "options": [
2717
+ "zsh",
2718
+ "bash",
2719
+ "fish",
2720
+ "powershell"
2721
+ ],
2722
+ "type": "option"
2723
+ },
2724
+ "port": {
2725
+ "char": "p",
2726
+ "description": "Proxy listen port",
2727
+ "name": "port",
2728
+ "default": 8787,
2729
+ "hasDynamicHelp": false,
2730
+ "multiple": false,
2731
+ "type": "option"
2732
+ },
2733
+ "check": {
2734
+ "description": "Only check prerequisites, do not install anything",
2735
+ "name": "check",
2546
2736
  "allowNo": false,
2547
2737
  "type": "boolean"
2548
2738
  }
2549
2739
  },
2550
2740
  "hasDynamicHelp": false,
2551
- "hidden": true,
2552
2741
  "hiddenAliases": [],
2553
- "id": "research:tail-transcript",
2742
+ "id": "proxy:setup",
2554
2743
  "pluginAlias": "@rulemetric/cli",
2555
2744
  "pluginName": "@rulemetric/cli",
2556
2745
  "pluginType": "core",
@@ -2560,20 +2749,19 @@
2560
2749
  "relativePath": [
2561
2750
  "dist",
2562
2751
  "commands",
2563
- "research",
2564
- "tail-transcript.js"
2752
+ "proxy",
2753
+ "setup.js"
2565
2754
  ]
2566
2755
  },
2567
- "service:install": {
2756
+ "proxy:start": {
2568
2757
  "aliases": [],
2569
2758
  "args": {},
2570
- "description": "Install RuleMetric services. Default (in a repo checkout): API + worker + gateway + capture proxy as launchd agents. With --worker-only: just the job worker, targeting the globally-installed CLI — no repo, no build (works from `npm i -g @rulemetric/cli`, macOS launchd or Linux systemd).",
2759
+ "description": "Start context capture proxy",
2571
2760
  "examples": [
2572
- "<%= config.bin %> service install",
2573
- "<%= config.bin %> service install --port 3000",
2574
- "<%= config.bin %> service install --skip-build",
2575
- "<%= config.bin %> service install --no-proxy",
2576
- "<%= config.bin %> service install --worker-only"
2761
+ "<%= config.bin %> proxy start",
2762
+ "<%= config.bin %> proxy start --docker",
2763
+ "<%= config.bin %> proxy start --port 9090",
2764
+ "<%= config.bin %> proxy start --web"
2577
2765
  ],
2578
2766
  "flags": {
2579
2767
  "api-url": {
@@ -2587,42 +2775,42 @@
2587
2775
  },
2588
2776
  "port": {
2589
2777
  "char": "p",
2590
- "description": "API server port",
2778
+ "description": "Proxy listen port",
2591
2779
  "name": "port",
2592
- "default": 3000,
2780
+ "default": 8788,
2593
2781
  "hasDynamicHelp": false,
2594
2782
  "multiple": false,
2595
2783
  "type": "option"
2596
2784
  },
2597
- "force": {
2598
- "char": "f",
2599
- "description": "Overwrite existing service configuration and reclaim conflicting ports",
2600
- "name": "force",
2785
+ "docker": {
2786
+ "char": "d",
2787
+ "description": "Run proxy in Docker (no local mitmproxy needed)",
2788
+ "name": "docker",
2601
2789
  "allowNo": false,
2602
2790
  "type": "boolean"
2603
2791
  },
2604
- "skip-build": {
2605
- "description": "Skip the pre-install workspace build (API/web/cli dist must already exist)",
2606
- "name": "skip-build",
2792
+ "web": {
2793
+ "description": "Launch mitmweb debug UI instead of mitmdump (local mode only)",
2794
+ "name": "web",
2607
2795
  "allowNo": false,
2608
2796
  "type": "boolean"
2609
2797
  },
2610
- "no-proxy": {
2611
- "description": "Skip gateway + mitmproxy plists (just install API + worker)",
2612
- "name": "no-proxy",
2798
+ "skip-checks": {
2799
+ "description": "Skip prerequisite checks",
2800
+ "name": "skip-checks",
2613
2801
  "allowNo": false,
2614
2802
  "type": "boolean"
2615
2803
  },
2616
- "worker-only": {
2617
- "description": "Install ONLY the job worker as a persistent service, targeting the globally-installed CLI (no repo checkout, no build, no API/gateway/proxy). Sources auth from ~/.config/rulemetric/env. macOS (launchd) + Linux (systemd --user).",
2618
- "name": "worker-only",
2804
+ "build": {
2805
+ "description": "Force rebuild Docker image",
2806
+ "name": "build",
2619
2807
  "allowNo": false,
2620
2808
  "type": "boolean"
2621
2809
  }
2622
2810
  },
2623
2811
  "hasDynamicHelp": false,
2624
2812
  "hiddenAliases": [],
2625
- "id": "service:install",
2813
+ "id": "proxy:start",
2626
2814
  "pluginAlias": "@rulemetric/cli",
2627
2815
  "pluginName": "@rulemetric/cli",
2628
2816
  "pluginType": "core",
@@ -2632,14 +2820,17 @@
2632
2820
  "relativePath": [
2633
2821
  "dist",
2634
2822
  "commands",
2635
- "service",
2636
- "install.js"
2823
+ "proxy",
2824
+ "start.js"
2637
2825
  ]
2638
2826
  },
2639
- "service:status": {
2827
+ "proxy:status": {
2640
2828
  "aliases": [],
2641
2829
  "args": {},
2642
- "description": "Check the status of all RuleMetric launchd services",
2830
+ "description": "Check gateway and context capture proxy status",
2831
+ "examples": [
2832
+ "<%= config.bin %> proxy status"
2833
+ ],
2643
2834
  "flags": {
2644
2835
  "api-url": {
2645
2836
  "description": "Override API base URL",
@@ -2653,7 +2844,7 @@
2653
2844
  },
2654
2845
  "hasDynamicHelp": false,
2655
2846
  "hiddenAliases": [],
2656
- "id": "service:status",
2847
+ "id": "proxy:status",
2657
2848
  "pluginAlias": "@rulemetric/cli",
2658
2849
  "pluginName": "@rulemetric/cli",
2659
2850
  "pluginType": "core",
@@ -2663,53 +2854,16 @@
2663
2854
  "relativePath": [
2664
2855
  "dist",
2665
2856
  "commands",
2666
- "service",
2857
+ "proxy",
2667
2858
  "status.js"
2668
2859
  ]
2669
2860
  },
2670
- "service:uninstall": {
2861
+ "proxy:stop": {
2671
2862
  "aliases": [],
2672
2863
  "args": {},
2673
- "description": "Remove RuleMetric services (macOS launchd: API/worker/gateway/proxy; Linux: the --worker-only systemd unit)",
2674
- "flags": {
2675
- "api-url": {
2676
- "description": "Override API base URL",
2677
- "env": "RULEMETRIC_API_URL",
2678
- "hidden": true,
2679
- "name": "api-url",
2680
- "hasDynamicHelp": false,
2681
- "multiple": false,
2682
- "type": "option"
2683
- }
2684
- },
2685
- "hasDynamicHelp": false,
2686
- "hiddenAliases": [],
2687
- "id": "service:uninstall",
2688
- "pluginAlias": "@rulemetric/cli",
2689
- "pluginName": "@rulemetric/cli",
2690
- "pluginType": "core",
2691
- "strict": true,
2692
- "enableJsonFlag": false,
2693
- "isESM": true,
2694
- "relativePath": [
2695
- "dist",
2696
- "commands",
2697
- "service",
2698
- "uninstall.js"
2699
- ]
2700
- },
2701
- "sessions:analyze": {
2702
- "aliases": [],
2703
- "args": {
2704
- "id": {
2705
- "description": "Session ID",
2706
- "name": "id",
2707
- "required": true
2708
- }
2709
- },
2710
- "description": "Trigger AI analysis on a session",
2864
+ "description": "Stop the context capture proxy",
2711
2865
  "examples": [
2712
- "<%= config.bin %> sessions analyze <session-id>"
2866
+ "<%= config.bin %> proxy stop"
2713
2867
  ],
2714
2868
  "flags": {
2715
2869
  "api-url": {
@@ -2724,7 +2878,7 @@
2724
2878
  },
2725
2879
  "hasDynamicHelp": false,
2726
2880
  "hiddenAliases": [],
2727
- "id": "sessions:analyze",
2881
+ "id": "proxy:stop",
2728
2882
  "pluginAlias": "@rulemetric/cli",
2729
2883
  "pluginName": "@rulemetric/cli",
2730
2884
  "pluginType": "core",
@@ -2734,16 +2888,17 @@
2734
2888
  "relativePath": [
2735
2889
  "dist",
2736
2890
  "commands",
2737
- "sessions",
2738
- "analyze.js"
2891
+ "proxy",
2892
+ "stop.js"
2739
2893
  ]
2740
2894
  },
2741
- "sessions:end": {
2895
+ "research:backfill": {
2742
2896
  "aliases": [],
2743
2897
  "args": {},
2744
- "description": "End the active capture session",
2898
+ "description": "Scan every ~/.claude/projects transcript for past rate-limit (429) events and POST them as observations. Opt-in seed for the usage-research dataset — forward-only tail is the default capture path.",
2745
2899
  "examples": [
2746
- "<%= config.bin %> sessions end"
2900
+ "<%= config.bin %> research backfill",
2901
+ "<%= config.bin %> research backfill --claude-dir /custom/.claude --dry-run"
2747
2902
  ],
2748
2903
  "flags": {
2749
2904
  "api-url": {
@@ -2754,11 +2909,25 @@
2754
2909
  "hasDynamicHelp": false,
2755
2910
  "multiple": false,
2756
2911
  "type": "option"
2912
+ },
2913
+ "claude-dir": {
2914
+ "description": "Override the Claude Code projects directory",
2915
+ "name": "claude-dir",
2916
+ "default": "/home/runner/.claude",
2917
+ "hasDynamicHelp": false,
2918
+ "multiple": false,
2919
+ "type": "option"
2920
+ },
2921
+ "dry-run": {
2922
+ "description": "Print observation count without POSTing",
2923
+ "name": "dry-run",
2924
+ "allowNo": false,
2925
+ "type": "boolean"
2757
2926
  }
2758
2927
  },
2759
2928
  "hasDynamicHelp": false,
2760
2929
  "hiddenAliases": [],
2761
- "id": "sessions:end",
2930
+ "id": "research:backfill",
2762
2931
  "pluginAlias": "@rulemetric/cli",
2763
2932
  "pluginName": "@rulemetric/cli",
2764
2933
  "pluginType": "core",
@@ -2768,24 +2937,20 @@
2768
2937
  "relativePath": [
2769
2938
  "dist",
2770
2939
  "commands",
2771
- "sessions",
2772
- "end.js"
2940
+ "research",
2941
+ "backfill.js"
2773
2942
  ]
2774
2943
  },
2775
- "sessions:import": {
2944
+ "research:tail-transcript": {
2776
2945
  "aliases": [],
2777
2946
  "args": {
2778
- "path": {
2779
- "description": "Path to session file",
2780
- "name": "path",
2947
+ "transcript": {
2948
+ "description": "Absolute path to a Claude Code .jsonl transcript",
2949
+ "name": "transcript",
2781
2950
  "required": true
2782
2951
  }
2783
2952
  },
2784
- "description": "Import a session file (JSONL, JSON)",
2785
- "examples": [
2786
- "<%= config.bin %> sessions import ~/.claude/projects/my-project/session-abc.jsonl",
2787
- "<%= config.bin %> sessions import ./copilot-export.json --tool vscode_copilot"
2788
- ],
2953
+ "description": "Read new lines from a Claude Code transcript since the last cached offset, POST any 429 events, and persist the new offset. Invoked by the session-end hook — safe to re-run.",
2789
2954
  "flags": {
2790
2955
  "api-url": {
2791
2956
  "description": "Override API base URL",
@@ -2796,17 +2961,17 @@
2796
2961
  "multiple": false,
2797
2962
  "type": "option"
2798
2963
  },
2799
- "tool": {
2800
- "description": "Override tool detection (claude_code, cursor, vscode_copilot)",
2801
- "name": "tool",
2802
- "hasDynamicHelp": false,
2803
- "multiple": false,
2804
- "type": "option"
2964
+ "no-post": {
2965
+ "description": "Parse and advance the offset without POSTing (debug)",
2966
+ "name": "no-post",
2967
+ "allowNo": false,
2968
+ "type": "boolean"
2805
2969
  }
2806
2970
  },
2807
2971
  "hasDynamicHelp": false,
2972
+ "hidden": true,
2808
2973
  "hiddenAliases": [],
2809
- "id": "sessions:import",
2974
+ "id": "research:tail-transcript",
2810
2975
  "pluginAlias": "@rulemetric/cli",
2811
2976
  "pluginName": "@rulemetric/cli",
2812
2977
  "pluginType": "core",
@@ -2816,17 +2981,20 @@
2816
2981
  "relativePath": [
2817
2982
  "dist",
2818
2983
  "commands",
2819
- "sessions",
2820
- "import.js"
2984
+ "research",
2985
+ "tail-transcript.js"
2821
2986
  ]
2822
2987
  },
2823
- "sessions:list": {
2988
+ "service:install": {
2824
2989
  "aliases": [],
2825
2990
  "args": {},
2826
- "description": "List captured sessions",
2991
+ "description": "Install RuleMetric services. Default (in a repo checkout): API + worker + gateway + capture proxy as launchd agents. With --worker-only: just the job worker, targeting the globally-installed CLI — no repo, no build (works from `npm i -g @rulemetric/cli`, macOS launchd or Linux systemd).",
2827
2992
  "examples": [
2828
- "<%= config.bin %> sessions list",
2829
- "<%= config.bin %> sessions list --tool claude_code"
2993
+ "<%= config.bin %> service install",
2994
+ "<%= config.bin %> service install --port 3000",
2995
+ "<%= config.bin %> service install --skip-build",
2996
+ "<%= config.bin %> service install --no-proxy",
2997
+ "<%= config.bin %> service install --worker-only"
2830
2998
  ],
2831
2999
  "flags": {
2832
3000
  "api-url": {
@@ -2838,25 +3006,44 @@
2838
3006
  "multiple": false,
2839
3007
  "type": "option"
2840
3008
  },
2841
- "tool": {
2842
- "description": "Filter by tool (claude_code, cursor, vscode_copilot)",
2843
- "name": "tool",
3009
+ "port": {
3010
+ "char": "p",
3011
+ "description": "API server port",
3012
+ "name": "port",
3013
+ "default": 3000,
2844
3014
  "hasDynamicHelp": false,
2845
3015
  "multiple": false,
2846
3016
  "type": "option"
2847
3017
  },
2848
- "limit": {
2849
- "description": "Max results",
2850
- "name": "limit",
2851
- "default": 20,
2852
- "hasDynamicHelp": false,
2853
- "multiple": false,
2854
- "type": "option"
3018
+ "force": {
3019
+ "char": "f",
3020
+ "description": "Overwrite existing service configuration and reclaim conflicting ports",
3021
+ "name": "force",
3022
+ "allowNo": false,
3023
+ "type": "boolean"
3024
+ },
3025
+ "skip-build": {
3026
+ "description": "Skip the pre-install workspace build (API/web/cli dist must already exist)",
3027
+ "name": "skip-build",
3028
+ "allowNo": false,
3029
+ "type": "boolean"
3030
+ },
3031
+ "no-proxy": {
3032
+ "description": "Skip gateway + mitmproxy plists (just install API + worker)",
3033
+ "name": "no-proxy",
3034
+ "allowNo": false,
3035
+ "type": "boolean"
3036
+ },
3037
+ "worker-only": {
3038
+ "description": "Install ONLY the job worker as a persistent service, targeting the globally-installed CLI (no repo checkout, no build, no API/gateway/proxy). Sources auth from ~/.config/rulemetric/env. macOS (launchd) + Linux (systemd --user).",
3039
+ "name": "worker-only",
3040
+ "allowNo": false,
3041
+ "type": "boolean"
2855
3042
  }
2856
3043
  },
2857
3044
  "hasDynamicHelp": false,
2858
3045
  "hiddenAliases": [],
2859
- "id": "sessions:list",
3046
+ "id": "service:install",
2860
3047
  "pluginAlias": "@rulemetric/cli",
2861
3048
  "pluginName": "@rulemetric/cli",
2862
3049
  "pluginType": "core",
@@ -2866,19 +3053,14 @@
2866
3053
  "relativePath": [
2867
3054
  "dist",
2868
3055
  "commands",
2869
- "sessions",
2870
- "list.js"
3056
+ "service",
3057
+ "install.js"
2871
3058
  ]
2872
3059
  },
2873
- "sessions:start": {
3060
+ "service:status": {
2874
3061
  "aliases": [],
2875
3062
  "args": {},
2876
- "description": "Start a capture session for any LLM provider (Cortex, Groq, etc.)",
2877
- "examples": [
2878
- "<%= config.bin %> sessions start --tool cortex",
2879
- "<%= config.bin %> sessions start --tool groq --project-dir /path/to/project",
2880
- "eval \"$(rulemetric proxy env --python)\" && rulemetric sessions start --tool cortex"
2881
- ],
3063
+ "description": "Check the status of all RuleMetric launchd services",
2882
3064
  "flags": {
2883
3065
  "api-url": {
2884
3066
  "description": "Override API base URL",
@@ -2888,28 +3070,11 @@
2888
3070
  "hasDynamicHelp": false,
2889
3071
  "multiple": false,
2890
3072
  "type": "option"
2891
- },
2892
- "tool": {
2893
- "char": "t",
2894
- "description": "LLM provider or tool name (e.g., cortex, groq, deepseek, custom_app)",
2895
- "name": "tool",
2896
- "required": true,
2897
- "hasDynamicHelp": false,
2898
- "multiple": false,
2899
- "type": "option"
2900
- },
2901
- "project-dir": {
2902
- "char": "d",
2903
- "description": "Project directory (defaults to cwd)",
2904
- "name": "project-dir",
2905
- "hasDynamicHelp": false,
2906
- "multiple": false,
2907
- "type": "option"
2908
3073
  }
2909
3074
  },
2910
3075
  "hasDynamicHelp": false,
2911
3076
  "hiddenAliases": [],
2912
- "id": "sessions:start",
3077
+ "id": "service:status",
2913
3078
  "pluginAlias": "@rulemetric/cli",
2914
3079
  "pluginName": "@rulemetric/cli",
2915
3080
  "pluginType": "core",
@@ -2919,14 +3084,14 @@
2919
3084
  "relativePath": [
2920
3085
  "dist",
2921
3086
  "commands",
2922
- "sessions",
2923
- "start.js"
3087
+ "service",
3088
+ "status.js"
2924
3089
  ]
2925
3090
  },
2926
- "signals:report": {
3091
+ "service:uninstall": {
2927
3092
  "aliases": [],
2928
3093
  "args": {},
2929
- "description": "Report filesystem-detected languages for the current project to the server.",
3094
+ "description": "Remove RuleMetric services (macOS launchd: API/worker/gateway/proxy; Linux: the --worker-only systemd unit)",
2930
3095
  "flags": {
2931
3096
  "api-url": {
2932
3097
  "description": "Override API base URL",
@@ -2936,19 +3101,11 @@
2936
3101
  "hasDynamicHelp": false,
2937
3102
  "multiple": false,
2938
3103
  "type": "option"
2939
- },
2940
- "cwd": {
2941
- "description": "Project path to inspect (defaults to process.cwd())",
2942
- "name": "cwd",
2943
- "hasDynamicHelp": false,
2944
- "multiple": false,
2945
- "type": "option"
2946
3104
  }
2947
3105
  },
2948
3106
  "hasDynamicHelp": false,
2949
- "hidden": true,
2950
3107
  "hiddenAliases": [],
2951
- "id": "signals:report",
3108
+ "id": "service:uninstall",
2952
3109
  "pluginAlias": "@rulemetric/cli",
2953
3110
  "pluginName": "@rulemetric/cli",
2954
3111
  "pluginType": "core",
@@ -2958,32 +3115,29 @@
2958
3115
  "relativePath": [
2959
3116
  "dist",
2960
3117
  "commands",
2961
- "signals",
2962
- "report.js"
3118
+ "service",
3119
+ "uninstall.js"
2963
3120
  ]
2964
3121
  },
2965
- "skills:export-approved": {
3122
+ "sessions:analyze": {
2966
3123
  "aliases": [],
2967
- "args": {},
2968
- "description": "Export approved community submissions as community-skills.json for registry merge",
3124
+ "args": {
3125
+ "id": {
3126
+ "description": "Session ID",
3127
+ "name": "id",
3128
+ "required": true
3129
+ }
3130
+ },
3131
+ "description": "Trigger AI analysis on a session",
2969
3132
  "examples": [
2970
- "<%= config.bin %> skills export-approved",
2971
- "<%= config.bin %> skills export-approved --output ./community-skills.json"
3133
+ "<%= config.bin %> sessions analyze <session-id>"
2972
3134
  ],
2973
3135
  "flags": {
2974
3136
  "api-url": {
2975
3137
  "description": "Override API base URL",
2976
3138
  "env": "RULEMETRIC_API_URL",
2977
3139
  "hidden": true,
2978
- "name": "api-url",
2979
- "hasDynamicHelp": false,
2980
- "multiple": false,
2981
- "type": "option"
2982
- },
2983
- "output": {
2984
- "description": "Output file path",
2985
- "name": "output",
2986
- "default": "packages/skills-registry/community-skills.json",
3140
+ "name": "api-url",
2987
3141
  "hasDynamicHelp": false,
2988
3142
  "multiple": false,
2989
3143
  "type": "option"
@@ -2991,7 +3145,7 @@
2991
3145
  },
2992
3146
  "hasDynamicHelp": false,
2993
3147
  "hiddenAliases": [],
2994
- "id": "skills:export-approved",
3148
+ "id": "sessions:analyze",
2995
3149
  "pluginAlias": "@rulemetric/cli",
2996
3150
  "pluginName": "@rulemetric/cli",
2997
3151
  "pluginType": "core",
@@ -3001,24 +3155,16 @@
3001
3155
  "relativePath": [
3002
3156
  "dist",
3003
3157
  "commands",
3004
- "skills",
3005
- "export-approved.js"
3158
+ "sessions",
3159
+ "analyze.js"
3006
3160
  ]
3007
3161
  },
3008
- "skills:install": {
3162
+ "sessions:end": {
3009
3163
  "aliases": [],
3010
- "args": {
3011
- "id": {
3012
- "description": "Skill ID to install",
3013
- "name": "id",
3014
- "required": true
3015
- }
3016
- },
3017
- "description": "Install a skill from the registry into your project",
3164
+ "args": {},
3165
+ "description": "End the active capture session",
3018
3166
  "examples": [
3019
- "<%= config.bin %> skills install tdd-workflow",
3020
- "<%= config.bin %> skills install tdd-workflow --tool cursor",
3021
- "<%= config.bin %> skills install tdd-workflow --preview"
3167
+ "<%= config.bin %> sessions end"
3022
3168
  ],
3023
3169
  "flags": {
3024
3170
  "api-url": {
@@ -3029,37 +3175,11 @@
3029
3175
  "hasDynamicHelp": false,
3030
3176
  "multiple": false,
3031
3177
  "type": "option"
3032
- },
3033
- "tool": {
3034
- "description": "Target tool format",
3035
- "name": "tool",
3036
- "hasDynamicHelp": false,
3037
- "multiple": false,
3038
- "options": [
3039
- "claude_code",
3040
- "cursor",
3041
- "copilot"
3042
- ],
3043
- "type": "option"
3044
- },
3045
- "preview": {
3046
- "description": "Preview content without writing",
3047
- "name": "preview",
3048
- "allowNo": false,
3049
- "type": "boolean"
3050
- },
3051
- "dir": {
3052
- "description": "Project directory",
3053
- "name": "dir",
3054
- "default": ".",
3055
- "hasDynamicHelp": false,
3056
- "multiple": false,
3057
- "type": "option"
3058
3178
  }
3059
3179
  },
3060
3180
  "hasDynamicHelp": false,
3061
3181
  "hiddenAliases": [],
3062
- "id": "skills:install",
3182
+ "id": "sessions:end",
3063
3183
  "pluginAlias": "@rulemetric/cli",
3064
3184
  "pluginName": "@rulemetric/cli",
3065
3185
  "pluginType": "core",
@@ -3069,17 +3189,23 @@
3069
3189
  "relativePath": [
3070
3190
  "dist",
3071
3191
  "commands",
3072
- "skills",
3073
- "install.js"
3192
+ "sessions",
3193
+ "end.js"
3074
3194
  ]
3075
3195
  },
3076
- "skills:list": {
3196
+ "sessions:import": {
3077
3197
  "aliases": [],
3078
- "args": {},
3079
- "description": "List skills in the registry",
3198
+ "args": {
3199
+ "path": {
3200
+ "description": "Path to session file",
3201
+ "name": "path",
3202
+ "required": true
3203
+ }
3204
+ },
3205
+ "description": "Import a session file (JSONL, JSON)",
3080
3206
  "examples": [
3081
- "<%= config.bin %> skills list",
3082
- "<%= config.bin %> skills list --stats"
3207
+ "<%= config.bin %> sessions import ~/.claude/projects/my-project/session-abc.jsonl",
3208
+ "<%= config.bin %> sessions import ./copilot-export.json --tool vscode_copilot"
3083
3209
  ],
3084
3210
  "flags": {
3085
3211
  "api-url": {
@@ -3091,16 +3217,9 @@
3091
3217
  "multiple": false,
3092
3218
  "type": "option"
3093
3219
  },
3094
- "stats": {
3095
- "description": "Show registry statistics",
3096
- "name": "stats",
3097
- "allowNo": false,
3098
- "type": "boolean"
3099
- },
3100
- "limit": {
3101
- "description": "Max skills to show",
3102
- "name": "limit",
3103
- "default": 30,
3220
+ "tool": {
3221
+ "description": "Override tool detection (claude_code, cursor, vscode_copilot)",
3222
+ "name": "tool",
3104
3223
  "hasDynamicHelp": false,
3105
3224
  "multiple": false,
3106
3225
  "type": "option"
@@ -3108,7 +3227,7 @@
3108
3227
  },
3109
3228
  "hasDynamicHelp": false,
3110
3229
  "hiddenAliases": [],
3111
- "id": "skills:list",
3230
+ "id": "sessions:import",
3112
3231
  "pluginAlias": "@rulemetric/cli",
3113
3232
  "pluginName": "@rulemetric/cli",
3114
3233
  "pluginType": "core",
@@ -3118,23 +3237,17 @@
3118
3237
  "relativePath": [
3119
3238
  "dist",
3120
3239
  "commands",
3121
- "skills",
3122
- "list.js"
3240
+ "sessions",
3241
+ "import.js"
3123
3242
  ]
3124
3243
  },
3125
- "skills:publish": {
3244
+ "sessions:list": {
3126
3245
  "aliases": [],
3127
- "args": {
3128
- "file": {
3129
- "description": "Path to skill file (.md)",
3130
- "name": "file",
3131
- "required": true
3132
- }
3133
- },
3134
- "description": "Submit a skill file to the RuleMetric skills registry",
3246
+ "args": {},
3247
+ "description": "List captured sessions",
3135
3248
  "examples": [
3136
- "<%= config.bin %> skills publish ./my-skill.md",
3137
- "<%= config.bin %> skills publish ./my-skill.md --category workflow --tool claude_code"
3249
+ "<%= config.bin %> sessions list",
3250
+ "<%= config.bin %> sessions list --tool claude_code"
3138
3251
  ],
3139
3252
  "flags": {
3140
3253
  "api-url": {
@@ -3146,60 +3259,17 @@
3146
3259
  "multiple": false,
3147
3260
  "type": "option"
3148
3261
  },
3149
- "name": {
3150
- "description": "Skill name (defaults to filename)",
3151
- "name": "name",
3152
- "hasDynamicHelp": false,
3153
- "multiple": false,
3154
- "type": "option"
3155
- },
3156
- "description": {
3157
- "description": "One-line description",
3158
- "name": "description",
3159
- "hasDynamicHelp": false,
3160
- "multiple": false,
3161
- "type": "option"
3162
- },
3163
- "category": {
3164
- "description": "Skill category",
3165
- "name": "category",
3166
- "default": "other",
3167
- "hasDynamicHelp": false,
3168
- "multiple": false,
3169
- "options": [
3170
- "workflow",
3171
- "language",
3172
- "framework",
3173
- "tool",
3174
- "security",
3175
- "testing",
3176
- "architecture",
3177
- "devops",
3178
- "documentation",
3179
- "performance",
3180
- "other"
3181
- ],
3182
- "type": "option"
3183
- },
3184
3262
  "tool": {
3185
- "description": "Primary tool this skill targets",
3263
+ "description": "Filter by tool (claude_code, cursor, vscode_copilot)",
3186
3264
  "name": "tool",
3187
- "default": "universal",
3188
3265
  "hasDynamicHelp": false,
3189
3266
  "multiple": false,
3190
- "options": [
3191
- "claude_code",
3192
- "cursor",
3193
- "copilot",
3194
- "windsurf",
3195
- "universal"
3196
- ],
3197
3267
  "type": "option"
3198
3268
  },
3199
- "tags": {
3200
- "description": "Comma-separated tags",
3201
- "name": "tags",
3202
- "default": "",
3269
+ "limit": {
3270
+ "description": "Max results",
3271
+ "name": "limit",
3272
+ "default": 20,
3203
3273
  "hasDynamicHelp": false,
3204
3274
  "multiple": false,
3205
3275
  "type": "option"
@@ -3207,7 +3277,7 @@
3207
3277
  },
3208
3278
  "hasDynamicHelp": false,
3209
3279
  "hiddenAliases": [],
3210
- "id": "skills:publish",
3280
+ "id": "sessions:list",
3211
3281
  "pluginAlias": "@rulemetric/cli",
3212
3282
  "pluginName": "@rulemetric/cli",
3213
3283
  "pluginType": "core",
@@ -3217,24 +3287,18 @@
3217
3287
  "relativePath": [
3218
3288
  "dist",
3219
3289
  "commands",
3220
- "skills",
3221
- "publish.js"
3290
+ "sessions",
3291
+ "list.js"
3222
3292
  ]
3223
3293
  },
3224
- "skills:search": {
3294
+ "sessions:start": {
3225
3295
  "aliases": [],
3226
- "args": {
3227
- "query": {
3228
- "description": "Search term",
3229
- "name": "query",
3230
- "required": false
3231
- }
3232
- },
3233
- "description": "Search the community skills registry",
3296
+ "args": {},
3297
+ "description": "Start a capture session for any LLM provider (Cortex, Groq, etc.)",
3234
3298
  "examples": [
3235
- "<%= config.bin %> skills search \"tdd\"",
3236
- "<%= config.bin %> skills search --tool cursor --category testing",
3237
- "<%= config.bin %> skills search --language python"
3299
+ "<%= config.bin %> sessions start --tool cortex",
3300
+ "<%= config.bin %> sessions start --tool groq --project-dir /path/to/project",
3301
+ "eval \"$(rulemetric proxy env --python)\" && rulemetric sessions start --tool cortex"
3238
3302
  ],
3239
3303
  "flags": {
3240
3304
  "api-url": {
@@ -3247,57 +3311,18 @@
3247
3311
  "type": "option"
3248
3312
  },
3249
3313
  "tool": {
3250
- "description": "Filter by tool",
3314
+ "char": "t",
3315
+ "description": "LLM provider or tool name (e.g., cortex, groq, deepseek, custom_app)",
3251
3316
  "name": "tool",
3252
- "hasDynamicHelp": false,
3253
- "multiple": false,
3254
- "options": [
3255
- "claude_code",
3256
- "cursor",
3257
- "copilot",
3258
- "windsurf",
3259
- "cline",
3260
- "universal"
3261
- ],
3262
- "type": "option"
3263
- },
3264
- "category": {
3265
- "description": "Filter by category",
3266
- "name": "category",
3267
- "hasDynamicHelp": false,
3268
- "multiple": false,
3269
- "options": [
3270
- "workflow",
3271
- "language",
3272
- "framework",
3273
- "tool",
3274
- "security",
3275
- "testing",
3276
- "architecture",
3277
- "devops",
3278
- "documentation",
3279
- "performance"
3280
- ],
3281
- "type": "option"
3282
- },
3283
- "language": {
3284
- "description": "Filter by programming language",
3285
- "name": "language",
3286
- "hasDynamicHelp": false,
3287
- "multiple": false,
3288
- "type": "option"
3289
- },
3290
- "framework": {
3291
- "description": "Filter by framework",
3292
- "name": "framework",
3317
+ "required": true,
3293
3318
  "hasDynamicHelp": false,
3294
3319
  "multiple": false,
3295
3320
  "type": "option"
3296
3321
  },
3297
- "limit": {
3298
- "description": "Max results",
3299
- "name": "limit",
3300
- "default": 20,
3322
+ "project-dir": {
3323
+ "char": "d",
3324
+ "description": "Project directory (defaults to cwd)",
3325
+ "name": "project-dir",
3301
3326
  "hasDynamicHelp": false,
3302
3327
  "multiple": false,
3303
3328
  "type": "option"
@@ -3305,7 +3330,7 @@
3305
3330
  },
3306
3331
  "hasDynamicHelp": false,
3307
3332
  "hiddenAliases": [],
3308
- "id": "skills:search",
3333
+ "id": "sessions:start",
3309
3334
  "pluginAlias": "@rulemetric/cli",
3310
3335
  "pluginName": "@rulemetric/cli",
3311
3336
  "pluginType": "core",
@@ -3315,18 +3340,14 @@
3315
3340
  "relativePath": [
3316
3341
  "dist",
3317
3342
  "commands",
3318
- "skills",
3319
- "search.js"
3343
+ "sessions",
3344
+ "start.js"
3320
3345
  ]
3321
3346
  },
3322
- "skills:update": {
3347
+ "signals:report": {
3323
3348
  "aliases": [],
3324
3349
  "args": {},
3325
- "description": "Fetch latest skills from GitHub sources and update local registry",
3326
- "examples": [
3327
- "<%= config.bin %> skills update",
3328
- "<%= config.bin %> skills update --all"
3329
- ],
3350
+ "description": "Report filesystem-detected languages for the current project to the server.",
3330
3351
  "flags": {
3331
3352
  "api-url": {
3332
3353
  "description": "Override API base URL",
@@ -3337,16 +3358,18 @@
3337
3358
  "multiple": false,
3338
3359
  "type": "option"
3339
3360
  },
3340
- "all": {
3341
- "description": "Include Tier 2 (niche) sources",
3342
- "name": "all",
3343
- "allowNo": false,
3344
- "type": "boolean"
3361
+ "cwd": {
3362
+ "description": "Project path to inspect (defaults to process.cwd())",
3363
+ "name": "cwd",
3364
+ "hasDynamicHelp": false,
3365
+ "multiple": false,
3366
+ "type": "option"
3345
3367
  }
3346
3368
  },
3347
3369
  "hasDynamicHelp": false,
3370
+ "hidden": true,
3348
3371
  "hiddenAliases": [],
3349
- "id": "skills:update",
3372
+ "id": "signals:report",
3350
3373
  "pluginAlias": "@rulemetric/cli",
3351
3374
  "pluginName": "@rulemetric/cli",
3352
3375
  "pluginType": "core",
@@ -3356,22 +3379,17 @@
3356
3379
  "relativePath": [
3357
3380
  "dist",
3358
3381
  "commands",
3359
- "skills",
3360
- "update.js"
3382
+ "signals",
3383
+ "report.js"
3361
3384
  ]
3362
3385
  },
3363
- "suggestions:accept": {
3386
+ "skills:export-approved": {
3364
3387
  "aliases": [],
3365
- "args": {
3366
- "id": {
3367
- "description": "Suggestion UUID from `suggestions list`",
3368
- "name": "id",
3369
- "required": true
3370
- }
3371
- },
3372
- "description": "Accept a suggestion and append the instruction to CLAUDE.md",
3388
+ "args": {},
3389
+ "description": "Export approved community submissions as community-skills.json for registry merge",
3373
3390
  "examples": [
3374
- "<%= config.bin %> suggestions accept <id>"
3391
+ "<%= config.bin %> skills export-approved",
3392
+ "<%= config.bin %> skills export-approved --output ./community-skills.json"
3375
3393
  ],
3376
3394
  "flags": {
3377
3395
  "api-url": {
@@ -3382,11 +3400,19 @@
3382
3400
  "hasDynamicHelp": false,
3383
3401
  "multiple": false,
3384
3402
  "type": "option"
3403
+ },
3404
+ "output": {
3405
+ "description": "Output file path",
3406
+ "name": "output",
3407
+ "default": "packages/skills-registry/community-skills.json",
3408
+ "hasDynamicHelp": false,
3409
+ "multiple": false,
3410
+ "type": "option"
3385
3411
  }
3386
3412
  },
3387
3413
  "hasDynamicHelp": false,
3388
3414
  "hiddenAliases": [],
3389
- "id": "suggestions:accept",
3415
+ "id": "skills:export-approved",
3390
3416
  "pluginAlias": "@rulemetric/cli",
3391
3417
  "pluginName": "@rulemetric/cli",
3392
3418
  "pluginType": "core",
@@ -3396,22 +3422,24 @@
3396
3422
  "relativePath": [
3397
3423
  "dist",
3398
3424
  "commands",
3399
- "suggestions",
3400
- "accept.js"
3425
+ "skills",
3426
+ "export-approved.js"
3401
3427
  ]
3402
3428
  },
3403
- "suggestions:dismiss": {
3429
+ "skills:install": {
3404
3430
  "aliases": [],
3405
3431
  "args": {
3406
3432
  "id": {
3407
- "description": "Suggestion UUID from `suggestions list`",
3433
+ "description": "Skill ID to install",
3408
3434
  "name": "id",
3409
3435
  "required": true
3410
3436
  }
3411
3437
  },
3412
- "description": "Dismiss a suggestion so it will not re-surface for 30 days",
3438
+ "description": "Install a skill from the registry into your project",
3413
3439
  "examples": [
3414
- "<%= config.bin %> suggestions dismiss <id>"
3440
+ "<%= config.bin %> skills install tdd-workflow",
3441
+ "<%= config.bin %> skills install tdd-workflow --tool cursor",
3442
+ "<%= config.bin %> skills install tdd-workflow --preview"
3415
3443
  ],
3416
3444
  "flags": {
3417
3445
  "api-url": {
@@ -3422,11 +3450,37 @@
3422
3450
  "hasDynamicHelp": false,
3423
3451
  "multiple": false,
3424
3452
  "type": "option"
3453
+ },
3454
+ "tool": {
3455
+ "description": "Target tool format",
3456
+ "name": "tool",
3457
+ "hasDynamicHelp": false,
3458
+ "multiple": false,
3459
+ "options": [
3460
+ "claude_code",
3461
+ "cursor",
3462
+ "copilot"
3463
+ ],
3464
+ "type": "option"
3465
+ },
3466
+ "preview": {
3467
+ "description": "Preview content without writing",
3468
+ "name": "preview",
3469
+ "allowNo": false,
3470
+ "type": "boolean"
3471
+ },
3472
+ "dir": {
3473
+ "description": "Project directory",
3474
+ "name": "dir",
3475
+ "default": ".",
3476
+ "hasDynamicHelp": false,
3477
+ "multiple": false,
3478
+ "type": "option"
3425
3479
  }
3426
3480
  },
3427
3481
  "hasDynamicHelp": false,
3428
3482
  "hiddenAliases": [],
3429
- "id": "suggestions:dismiss",
3483
+ "id": "skills:install",
3430
3484
  "pluginAlias": "@rulemetric/cli",
3431
3485
  "pluginName": "@rulemetric/cli",
3432
3486
  "pluginType": "core",
@@ -3436,17 +3490,17 @@
3436
3490
  "relativePath": [
3437
3491
  "dist",
3438
3492
  "commands",
3439
- "suggestions",
3440
- "dismiss.js"
3493
+ "skills",
3494
+ "install.js"
3441
3495
  ]
3442
3496
  },
3443
- "suggestions:list": {
3497
+ "skills:list": {
3444
3498
  "aliases": [],
3445
3499
  "args": {},
3446
- "description": "List instruction suggestions for a project",
3500
+ "description": "List skills in the registry",
3447
3501
  "examples": [
3448
- "<%= config.bin %> suggestions list",
3449
- "<%= config.bin %> suggestions list --project /path/to/project"
3502
+ "<%= config.bin %> skills list",
3503
+ "<%= config.bin %> skills list --stats"
3450
3504
  ],
3451
3505
  "flags": {
3452
3506
  "api-url": {
@@ -3458,10 +3512,16 @@
3458
3512
  "multiple": false,
3459
3513
  "type": "option"
3460
3514
  },
3461
- "project": {
3462
- "char": "p",
3463
- "description": "Project path (defaults to current directory)",
3464
- "name": "project",
3515
+ "stats": {
3516
+ "description": "Show registry statistics",
3517
+ "name": "stats",
3518
+ "allowNo": false,
3519
+ "type": "boolean"
3520
+ },
3521
+ "limit": {
3522
+ "description": "Max skills to show",
3523
+ "name": "limit",
3524
+ "default": 30,
3465
3525
  "hasDynamicHelp": false,
3466
3526
  "multiple": false,
3467
3527
  "type": "option"
@@ -3469,7 +3529,7 @@
3469
3529
  },
3470
3530
  "hasDynamicHelp": false,
3471
3531
  "hiddenAliases": [],
3472
- "id": "suggestions:list",
3532
+ "id": "skills:list",
3473
3533
  "pluginAlias": "@rulemetric/cli",
3474
3534
  "pluginName": "@rulemetric/cli",
3475
3535
  "pluginType": "core",
@@ -3479,16 +3539,23 @@
3479
3539
  "relativePath": [
3480
3540
  "dist",
3481
3541
  "commands",
3482
- "suggestions",
3542
+ "skills",
3483
3543
  "list.js"
3484
3544
  ]
3485
3545
  },
3486
- "suggestions:refresh": {
3546
+ "skills:publish": {
3487
3547
  "aliases": [],
3488
- "args": {},
3489
- "description": "Information about refreshing instruction suggestions",
3548
+ "args": {
3549
+ "file": {
3550
+ "description": "Path to skill file (.md)",
3551
+ "name": "file",
3552
+ "required": true
3553
+ }
3554
+ },
3555
+ "description": "Submit a skill file to the RuleMetric skills registry",
3490
3556
  "examples": [
3491
- "<%= config.bin %> suggestions refresh"
3557
+ "<%= config.bin %> skills publish ./my-skill.md",
3558
+ "<%= config.bin %> skills publish ./my-skill.md --category workflow --tool claude_code"
3492
3559
  ],
3493
3560
  "flags": {
3494
3561
  "api-url": {
@@ -3499,11 +3566,69 @@
3499
3566
  "hasDynamicHelp": false,
3500
3567
  "multiple": false,
3501
3568
  "type": "option"
3569
+ },
3570
+ "name": {
3571
+ "description": "Skill name (defaults to filename)",
3572
+ "name": "name",
3573
+ "hasDynamicHelp": false,
3574
+ "multiple": false,
3575
+ "type": "option"
3576
+ },
3577
+ "description": {
3578
+ "description": "One-line description",
3579
+ "name": "description",
3580
+ "hasDynamicHelp": false,
3581
+ "multiple": false,
3582
+ "type": "option"
3583
+ },
3584
+ "category": {
3585
+ "description": "Skill category",
3586
+ "name": "category",
3587
+ "default": "other",
3588
+ "hasDynamicHelp": false,
3589
+ "multiple": false,
3590
+ "options": [
3591
+ "workflow",
3592
+ "language",
3593
+ "framework",
3594
+ "tool",
3595
+ "security",
3596
+ "testing",
3597
+ "architecture",
3598
+ "devops",
3599
+ "documentation",
3600
+ "performance",
3601
+ "other"
3602
+ ],
3603
+ "type": "option"
3604
+ },
3605
+ "tool": {
3606
+ "description": "Primary tool this skill targets",
3607
+ "name": "tool",
3608
+ "default": "universal",
3609
+ "hasDynamicHelp": false,
3610
+ "multiple": false,
3611
+ "options": [
3612
+ "claude_code",
3613
+ "cursor",
3614
+ "copilot",
3615
+ "windsurf",
3616
+ "universal"
3617
+ ],
3618
+ "type": "option"
3619
+ },
3620
+ "tags": {
3621
+ "description": "Comma-separated tags",
3622
+ "name": "tags",
3623
+ "default": "",
3624
+ "hasDynamicHelp": false,
3625
+ "multiple": false,
3626
+ "type": "option"
3502
3627
  }
3503
3628
  },
3504
3629
  "hasDynamicHelp": false,
3505
3630
  "hiddenAliases": [],
3506
- "id": "suggestions:refresh",
3631
+ "id": "skills:publish",
3507
3632
  "pluginAlias": "@rulemetric/cli",
3508
3633
  "pluginName": "@rulemetric/cli",
3509
3634
  "pluginType": "core",
@@ -3513,22 +3638,24 @@
3513
3638
  "relativePath": [
3514
3639
  "dist",
3515
3640
  "commands",
3516
- "suggestions",
3517
- "refresh.js"
3641
+ "skills",
3642
+ "publish.js"
3518
3643
  ]
3519
3644
  },
3520
- "instructions:create": {
3645
+ "skills:search": {
3521
3646
  "aliases": [],
3522
3647
  "args": {
3523
- "file": {
3524
- "description": "Path to markdown file",
3525
- "name": "file"
3648
+ "query": {
3649
+ "description": "Search term",
3650
+ "name": "query",
3651
+ "required": false
3526
3652
  }
3527
3653
  },
3528
- "description": "Create a new instruction",
3654
+ "description": "Search the community skills registry",
3529
3655
  "examples": [
3530
- "<%= config.bin %> instructions create ./my-instruction.md --name \"My Rules\"",
3531
- "<%= config.bin %> instructions create ./rules.md -n \"Rules\" -s project"
3656
+ "<%= config.bin %> skills search \"tdd\"",
3657
+ "<%= config.bin %> skills search --tool cursor --category testing",
3658
+ "<%= config.bin %> skills search --language python"
3532
3659
  ],
3533
3660
  "flags": {
3534
3661
  "api-url": {
@@ -3540,50 +3667,58 @@
3540
3667
  "multiple": false,
3541
3668
  "type": "option"
3542
3669
  },
3543
- "name": {
3544
- "char": "n",
3545
- "description": "Instruction name",
3546
- "name": "name",
3547
- "required": true,
3548
- "hasDynamicHelp": false,
3549
- "multiple": false,
3550
- "type": "option"
3551
- },
3552
- "description": {
3553
- "char": "d",
3554
- "description": "Instruction description",
3555
- "name": "description",
3556
- "required": true,
3670
+ "tool": {
3671
+ "description": "Filter by tool",
3672
+ "name": "tool",
3557
3673
  "hasDynamicHelp": false,
3558
3674
  "multiple": false,
3675
+ "options": [
3676
+ "claude_code",
3677
+ "cursor",
3678
+ "copilot",
3679
+ "windsurf",
3680
+ "cline",
3681
+ "universal"
3682
+ ],
3559
3683
  "type": "option"
3560
3684
  },
3561
- "scope": {
3562
- "char": "s",
3563
- "description": "Instruction scope",
3564
- "name": "scope",
3565
- "default": "personal",
3685
+ "category": {
3686
+ "description": "Filter by category",
3687
+ "name": "category",
3566
3688
  "hasDynamicHelp": false,
3567
3689
  "multiple": false,
3568
3690
  "options": [
3569
- "org",
3570
- "team",
3571
- "project",
3572
- "personal"
3691
+ "workflow",
3692
+ "language",
3693
+ "framework",
3694
+ "tool",
3695
+ "security",
3696
+ "testing",
3697
+ "architecture",
3698
+ "devops",
3699
+ "documentation",
3700
+ "performance"
3573
3701
  ],
3574
3702
  "type": "option"
3575
3703
  },
3576
- "scope-ref": {
3577
- "description": "Scope reference UUID",
3578
- "name": "scope-ref",
3704
+ "language": {
3705
+ "description": "Filter by programming language",
3706
+ "name": "language",
3707
+ "hasDynamicHelp": false,
3708
+ "multiple": false,
3709
+ "type": "option"
3710
+ },
3711
+ "framework": {
3712
+ "description": "Filter by framework",
3713
+ "name": "framework",
3579
3714
  "hasDynamicHelp": false,
3580
3715
  "multiple": false,
3581
3716
  "type": "option"
3582
3717
  },
3583
- "tags": {
3584
- "char": "t",
3585
- "description": "Comma-separated tags",
3586
- "name": "tags",
3718
+ "limit": {
3719
+ "description": "Max results",
3720
+ "name": "limit",
3721
+ "default": 20,
3587
3722
  "hasDynamicHelp": false,
3588
3723
  "multiple": false,
3589
3724
  "type": "option"
@@ -3591,7 +3726,7 @@
3591
3726
  },
3592
3727
  "hasDynamicHelp": false,
3593
3728
  "hiddenAliases": [],
3594
- "id": "instructions:create",
3729
+ "id": "skills:search",
3595
3730
  "pluginAlias": "@rulemetric/cli",
3596
3731
  "pluginName": "@rulemetric/cli",
3597
3732
  "pluginType": "core",
@@ -3601,23 +3736,17 @@
3601
3736
  "relativePath": [
3602
3737
  "dist",
3603
3738
  "commands",
3604
- "instructions",
3605
- "create.js"
3739
+ "skills",
3740
+ "search.js"
3606
3741
  ]
3607
3742
  },
3608
- "instructions:delete": {
3743
+ "skills:update": {
3609
3744
  "aliases": [],
3610
- "args": {
3611
- "id": {
3612
- "description": "Instruction ID",
3613
- "name": "id",
3614
- "required": true
3615
- }
3616
- },
3617
- "description": "Delete (archive) an instruction",
3745
+ "args": {},
3746
+ "description": "Fetch latest skills from GitHub sources and update local registry",
3618
3747
  "examples": [
3619
- "<%= config.bin %> instructions delete <id>",
3620
- "<%= config.bin %> instructions delete <id> --force"
3748
+ "<%= config.bin %> skills update",
3749
+ "<%= config.bin %> skills update --all"
3621
3750
  ],
3622
3751
  "flags": {
3623
3752
  "api-url": {
@@ -3629,17 +3758,16 @@
3629
3758
  "multiple": false,
3630
3759
  "type": "option"
3631
3760
  },
3632
- "force": {
3633
- "char": "f",
3634
- "description": "Skip confirmation prompt",
3635
- "name": "force",
3761
+ "all": {
3762
+ "description": "Include Tier 2 (niche) sources",
3763
+ "name": "all",
3636
3764
  "allowNo": false,
3637
3765
  "type": "boolean"
3638
3766
  }
3639
3767
  },
3640
3768
  "hasDynamicHelp": false,
3641
3769
  "hiddenAliases": [],
3642
- "id": "instructions:delete",
3770
+ "id": "skills:update",
3643
3771
  "pluginAlias": "@rulemetric/cli",
3644
3772
  "pluginName": "@rulemetric/cli",
3645
3773
  "pluginType": "core",
@@ -3649,22 +3777,22 @@
3649
3777
  "relativePath": [
3650
3778
  "dist",
3651
3779
  "commands",
3652
- "instructions",
3653
- "delete.js"
3780
+ "skills",
3781
+ "update.js"
3654
3782
  ]
3655
3783
  },
3656
- "instructions:fork": {
3784
+ "suggestions:accept": {
3657
3785
  "aliases": [],
3658
3786
  "args": {
3659
3787
  "id": {
3660
- "description": "ID of the instruction to fork",
3788
+ "description": "Suggestion UUID from `suggestions list`",
3661
3789
  "name": "id",
3662
3790
  "required": true
3663
3791
  }
3664
3792
  },
3665
- "description": "Fork an instruction to your personal scope",
3793
+ "description": "Accept a suggestion and append the instruction to CLAUDE.md",
3666
3794
  "examples": [
3667
- "<%= config.bin %> instructions fork <instruction-id>"
3795
+ "<%= config.bin %> suggestions accept <id>"
3668
3796
  ],
3669
3797
  "flags": {
3670
3798
  "api-url": {
@@ -3679,7 +3807,7 @@
3679
3807
  },
3680
3808
  "hasDynamicHelp": false,
3681
3809
  "hiddenAliases": [],
3682
- "id": "instructions:fork",
3810
+ "id": "suggestions:accept",
3683
3811
  "pluginAlias": "@rulemetric/cli",
3684
3812
  "pluginName": "@rulemetric/cli",
3685
3813
  "pluginType": "core",
@@ -3689,32 +3817,24 @@
3689
3817
  "relativePath": [
3690
3818
  "dist",
3691
3819
  "commands",
3692
- "instructions",
3693
- "fork.js"
3820
+ "suggestions",
3821
+ "accept.js"
3694
3822
  ]
3695
3823
  },
3696
- "instructions:get": {
3824
+ "suggestions:dismiss": {
3697
3825
  "aliases": [],
3698
3826
  "args": {
3699
3827
  "id": {
3700
- "description": "Instruction ID",
3828
+ "description": "Suggestion UUID from `suggestions list`",
3701
3829
  "name": "id",
3702
3830
  "required": true
3703
3831
  }
3704
3832
  },
3705
- "description": "Get an instruction by ID",
3833
+ "description": "Dismiss a suggestion so it will not re-surface for 30 days",
3706
3834
  "examples": [
3707
- "<%= config.bin %> instructions get <id>",
3708
- "<%= config.bin %> instructions get <id> --format raw"
3835
+ "<%= config.bin %> suggestions dismiss <id>"
3709
3836
  ],
3710
3837
  "flags": {
3711
- "json": {
3712
- "description": "Format output as json.",
3713
- "helpGroup": "GLOBAL",
3714
- "name": "json",
3715
- "allowNo": false,
3716
- "type": "boolean"
3717
- },
3718
3838
  "api-url": {
3719
3839
  "description": "Override API base URL",
3720
3840
  "env": "RULEMETRIC_API_URL",
@@ -3723,54 +3843,33 @@
3723
3843
  "hasDynamicHelp": false,
3724
3844
  "multiple": false,
3725
3845
  "type": "option"
3726
- },
3727
- "format": {
3728
- "char": "f",
3729
- "description": "Output format",
3730
- "name": "format",
3731
- "default": "yaml",
3732
- "hasDynamicHelp": false,
3733
- "multiple": false,
3734
- "options": [
3735
- "yaml",
3736
- "json",
3737
- "raw"
3738
- ],
3739
- "type": "option"
3740
3846
  }
3741
3847
  },
3742
3848
  "hasDynamicHelp": false,
3743
3849
  "hiddenAliases": [],
3744
- "id": "instructions:get",
3850
+ "id": "suggestions:dismiss",
3745
3851
  "pluginAlias": "@rulemetric/cli",
3746
3852
  "pluginName": "@rulemetric/cli",
3747
3853
  "pluginType": "core",
3748
3854
  "strict": true,
3749
- "enableJsonFlag": true,
3855
+ "enableJsonFlag": false,
3750
3856
  "isESM": true,
3751
3857
  "relativePath": [
3752
3858
  "dist",
3753
3859
  "commands",
3754
- "instructions",
3755
- "get.js"
3860
+ "suggestions",
3861
+ "dismiss.js"
3756
3862
  ]
3757
3863
  },
3758
- "instructions:list": {
3864
+ "suggestions:list": {
3759
3865
  "aliases": [],
3760
3866
  "args": {},
3761
- "description": "List your instructions",
3867
+ "description": "List instruction suggestions for a project",
3762
3868
  "examples": [
3763
- "<%= config.bin %> instructions list",
3764
- "<%= config.bin %> instructions list --json"
3869
+ "<%= config.bin %> suggestions list",
3870
+ "<%= config.bin %> suggestions list --project /path/to/project"
3765
3871
  ],
3766
3872
  "flags": {
3767
- "json": {
3768
- "description": "Format output as json.",
3769
- "helpGroup": "GLOBAL",
3770
- "name": "json",
3771
- "allowNo": false,
3772
- "type": "boolean"
3773
- },
3774
3873
  "api-url": {
3775
3874
  "description": "Override API base URL",
3776
3875
  "env": "RULEMETRIC_API_URL",
@@ -3780,49 +3879,37 @@
3780
3879
  "multiple": false,
3781
3880
  "type": "option"
3782
3881
  },
3783
- "format": {
3784
- "char": "f",
3785
- "description": "Output format",
3786
- "name": "format",
3787
- "default": "table",
3882
+ "project": {
3883
+ "char": "p",
3884
+ "description": "Project path (defaults to current directory)",
3885
+ "name": "project",
3788
3886
  "hasDynamicHelp": false,
3789
3887
  "multiple": false,
3790
- "options": [
3791
- "table",
3792
- "json"
3793
- ],
3794
3888
  "type": "option"
3795
3889
  }
3796
3890
  },
3797
3891
  "hasDynamicHelp": false,
3798
3892
  "hiddenAliases": [],
3799
- "id": "instructions:list",
3893
+ "id": "suggestions:list",
3800
3894
  "pluginAlias": "@rulemetric/cli",
3801
3895
  "pluginName": "@rulemetric/cli",
3802
3896
  "pluginType": "core",
3803
3897
  "strict": true,
3804
- "enableJsonFlag": true,
3898
+ "enableJsonFlag": false,
3805
3899
  "isESM": true,
3806
3900
  "relativePath": [
3807
3901
  "dist",
3808
3902
  "commands",
3809
- "instructions",
3903
+ "suggestions",
3810
3904
  "list.js"
3811
3905
  ]
3812
3906
  },
3813
- "instructions:promote": {
3907
+ "suggestions:refresh": {
3814
3908
  "aliases": [],
3815
- "args": {
3816
- "id": {
3817
- "description": "ID of the instruction to promote",
3818
- "name": "id",
3819
- "required": true
3820
- }
3821
- },
3822
- "description": "Promote an instruction to a higher scope (personal → team → org)",
3909
+ "args": {},
3910
+ "description": "Information about refreshing instruction suggestions",
3823
3911
  "examples": [
3824
- "<%= config.bin %> instructions promote <id> --scope team --ref <team-id>",
3825
- "<%= config.bin %> instructions promote <id> --scope org --ref <org-id>"
3912
+ "<%= config.bin %> suggestions refresh"
3826
3913
  ],
3827
3914
  "flags": {
3828
3915
  "api-url": {
@@ -3833,31 +3920,11 @@
3833
3920
  "hasDynamicHelp": false,
3834
3921
  "multiple": false,
3835
3922
  "type": "option"
3836
- },
3837
- "scope": {
3838
- "description": "Target scope",
3839
- "name": "scope",
3840
- "required": true,
3841
- "hasDynamicHelp": false,
3842
- "multiple": false,
3843
- "options": [
3844
- "team",
3845
- "org"
3846
- ],
3847
- "type": "option"
3848
- },
3849
- "ref": {
3850
- "description": "Target scope ref (team or org ID)",
3851
- "name": "ref",
3852
- "required": true,
3853
- "hasDynamicHelp": false,
3854
- "multiple": false,
3855
- "type": "option"
3856
3923
  }
3857
3924
  },
3858
3925
  "hasDynamicHelp": false,
3859
3926
  "hiddenAliases": [],
3860
- "id": "instructions:promote",
3927
+ "id": "suggestions:refresh",
3861
3928
  "pluginAlias": "@rulemetric/cli",
3862
3929
  "pluginName": "@rulemetric/cli",
3863
3930
  "pluginType": "core",
@@ -3867,20 +3934,17 @@
3867
3934
  "relativePath": [
3868
3935
  "dist",
3869
3936
  "commands",
3870
- "instructions",
3871
- "promote.js"
3937
+ "suggestions",
3938
+ "refresh.js"
3872
3939
  ]
3873
3940
  },
3874
- "instructions:pull": {
3941
+ "org:current": {
3875
3942
  "aliases": [],
3876
- "args": {
3877
- "id": {
3878
- "description": "ID of the forked instruction",
3879
- "name": "id",
3880
- "required": true
3881
- }
3882
- },
3883
- "description": "Pull upstream changes into a forked instruction",
3943
+ "args": {},
3944
+ "description": "Show the current active organization",
3945
+ "examples": [
3946
+ "<%= config.bin %> org current"
3947
+ ],
3884
3948
  "flags": {
3885
3949
  "api-url": {
3886
3950
  "description": "Override API base URL",
@@ -3894,7 +3958,7 @@
3894
3958
  },
3895
3959
  "hasDynamicHelp": false,
3896
3960
  "hiddenAliases": [],
3897
- "id": "instructions:pull",
3961
+ "id": "org:current",
3898
3962
  "pluginAlias": "@rulemetric/cli",
3899
3963
  "pluginName": "@rulemetric/cli",
3900
3964
  "pluginType": "core",
@@ -3904,20 +3968,17 @@
3904
3968
  "relativePath": [
3905
3969
  "dist",
3906
3970
  "commands",
3907
- "instructions",
3908
- "pull.js"
3971
+ "org",
3972
+ "current.js"
3909
3973
  ]
3910
3974
  },
3911
- "instructions:upstream": {
3975
+ "org:list": {
3912
3976
  "aliases": [],
3913
- "args": {
3914
- "id": {
3915
- "description": "ID of the forked instruction",
3916
- "name": "id",
3917
- "required": true
3918
- }
3919
- },
3920
- "description": "Check if a forked instruction has upstream updates",
3977
+ "args": {},
3978
+ "description": "List organizations the current user is a member of",
3979
+ "examples": [
3980
+ "<%= config.bin %> org list"
3981
+ ],
3921
3982
  "flags": {
3922
3983
  "api-url": {
3923
3984
  "description": "Override API base URL",
@@ -3931,7 +3992,7 @@
3931
3992
  },
3932
3993
  "hasDynamicHelp": false,
3933
3994
  "hiddenAliases": [],
3934
- "id": "instructions:upstream",
3995
+ "id": "org:list",
3935
3996
  "pluginAlias": "@rulemetric/cli",
3936
3997
  "pluginName": "@rulemetric/cli",
3937
3998
  "pluginType": "core",
@@ -3941,31 +4002,25 @@
3941
4002
  "relativePath": [
3942
4003
  "dist",
3943
4004
  "commands",
3944
- "instructions",
3945
- "upstream.js"
4005
+ "org",
4006
+ "list.js"
3946
4007
  ]
3947
4008
  },
3948
- "instructions:versions": {
4009
+ "org:switch": {
3949
4010
  "aliases": [],
3950
4011
  "args": {
3951
- "id": {
3952
- "description": "Instruction ID",
3953
- "name": "id",
3954
- "required": true
4012
+ "slug": {
4013
+ "description": "Organization slug to switch to",
4014
+ "name": "slug",
4015
+ "required": false
3955
4016
  }
3956
4017
  },
3957
- "description": "List version history for an instruction",
4018
+ "description": "Switch the active organization",
3958
4019
  "examples": [
3959
- "<%= config.bin %> instructions versions <id>"
4020
+ "<%= config.bin %> org switch acme",
4021
+ "<%= config.bin %> org switch --clear"
3960
4022
  ],
3961
4023
  "flags": {
3962
- "json": {
3963
- "description": "Format output as json.",
3964
- "helpGroup": "GLOBAL",
3965
- "name": "json",
3966
- "allowNo": false,
3967
- "type": "boolean"
3968
- },
3969
4024
  "api-url": {
3970
4025
  "description": "Override API base URL",
3971
4026
  "env": "RULEMETRIC_API_URL",
@@ -3974,24 +4029,30 @@
3974
4029
  "hasDynamicHelp": false,
3975
4030
  "multiple": false,
3976
4031
  "type": "option"
4032
+ },
4033
+ "clear": {
4034
+ "description": "Clear the active organization (personal mode)",
4035
+ "name": "clear",
4036
+ "allowNo": false,
4037
+ "type": "boolean"
3977
4038
  }
3978
4039
  },
3979
4040
  "hasDynamicHelp": false,
3980
4041
  "hiddenAliases": [],
3981
- "id": "instructions:versions",
4042
+ "id": "org:switch",
3982
4043
  "pluginAlias": "@rulemetric/cli",
3983
4044
  "pluginName": "@rulemetric/cli",
3984
4045
  "pluginType": "core",
3985
4046
  "strict": true,
3986
- "enableJsonFlag": true,
4047
+ "enableJsonFlag": false,
3987
4048
  "isESM": true,
3988
4049
  "relativePath": [
3989
4050
  "dist",
3990
4051
  "commands",
3991
- "instructions",
3992
- "versions.js"
4052
+ "org",
4053
+ "switch.js"
3993
4054
  ]
3994
4055
  }
3995
4056
  },
3996
- "version": "0.4.0"
4057
+ "version": "0.5.0"
3997
4058
  }