cli-jaw 0.1.6 → 0.1.8

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 (746) hide show
  1. package/README.ko.md +68 -71
  2. package/README.md +123 -92
  3. package/README.zh-CN.md +68 -73
  4. package/dist/bin/cli-claw.js +96 -0
  5. package/dist/bin/cli-claw.js.map +1 -0
  6. package/dist/bin/cli-jaw.js +0 -0
  7. package/dist/bin/commands/doctor.js +3 -0
  8. package/dist/bin/commands/doctor.js.map +1 -1
  9. package/dist/bin/commands/init.js +36 -19
  10. package/dist/bin/commands/init.js.map +1 -1
  11. package/dist/bin/postinstall.js +175 -104
  12. package/dist/bin/postinstall.js.map +1 -1
  13. package/dist/lib/mcp-sync.js +43 -4
  14. package/dist/lib/mcp-sync.js.map +1 -1
  15. package/dist/server.js +22 -103
  16. package/dist/server.js.map +1 -1
  17. package/dist/src/cli/acp-client.js +1 -1
  18. package/dist/src/cli/command-context.js +73 -0
  19. package/dist/src/cli/command-context.js.map +1 -0
  20. package/dist/src/core/db.js +1 -1
  21. package/dist/src/memory/heartbeat.js +2 -1
  22. package/dist/src/memory/heartbeat.js.map +1 -1
  23. package/dist/src/orchestrator/collect.js +53 -0
  24. package/dist/src/orchestrator/collect.js.map +1 -0
  25. package/dist/src/orchestrator/gateway.js +49 -0
  26. package/dist/src/orchestrator/gateway.js.map +1 -0
  27. package/dist/src/telegram/bot.js +32 -119
  28. package/dist/src/telegram/bot.js.map +1 -1
  29. package/package.json +7 -7
  30. package/public/css/sidebar.css +14 -0
  31. package/public/dist/bundle.js +21 -21
  32. package/public/dist/bundle.js.map +3 -3
  33. package/public/index.html +2 -2
  34. package/public/js/features/settings.js +1 -2
  35. package/public/js/main.js +0 -1
  36. package/scripts/check-copilot-gap.js +57 -0
  37. package/scripts/check-deps-offline.mjs +75 -0
  38. package/scripts/check-deps-online.sh +26 -0
  39. package/scripts/i18n-registry.py +208 -0
  40. package/scripts/postinstall-guard.cjs +63 -0
  41. package/scripts/release.sh +30 -0
  42. package/skills_ref/1password/SKILL.md +0 -70
  43. package/skills_ref/agents-sdk/SKILL.md +0 -155
  44. package/skills_ref/agents-sdk/references/callable.md +0 -92
  45. package/skills_ref/agents-sdk/references/codemode.md +0 -207
  46. package/skills_ref/agents-sdk/references/email.md +0 -146
  47. package/skills_ref/agents-sdk/references/mcp.md +0 -154
  48. package/skills_ref/agents-sdk/references/state-scheduling.md +0 -164
  49. package/skills_ref/agents-sdk/references/streaming-chat.md +0 -178
  50. package/skills_ref/agents-sdk/references/workflows.md +0 -132
  51. package/skills_ref/algorithmic-art/LICENSE.txt +0 -202
  52. package/skills_ref/algorithmic-art/SKILL.md +0 -405
  53. package/skills_ref/algorithmic-art/templates/generator_template.js +0 -223
  54. package/skills_ref/algorithmic-art/templates/viewer.html +0 -599
  55. package/skills_ref/apple-notes/SKILL.md +0 -77
  56. package/skills_ref/apple-reminders/SKILL.md +0 -118
  57. package/skills_ref/atlas/SKILL.md +0 -99
  58. package/skills_ref/brainstorming/SKILL.md +0 -96
  59. package/skills_ref/browser/SKILL.md +0 -179
  60. package/skills_ref/canvas-design/LICENSE.txt +0 -202
  61. package/skills_ref/canvas-design/SKILL.md +0 -130
  62. package/skills_ref/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +0 -93
  63. package/skills_ref/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
  64. package/skills_ref/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
  65. package/skills_ref/canvas-design/canvas-fonts/BigShoulders-OFL.txt +0 -93
  66. package/skills_ref/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
  67. package/skills_ref/canvas-design/canvas-fonts/Boldonse-OFL.txt +0 -93
  68. package/skills_ref/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
  69. package/skills_ref/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
  70. package/skills_ref/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +0 -93
  71. package/skills_ref/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
  72. package/skills_ref/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
  73. package/skills_ref/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
  74. package/skills_ref/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +0 -93
  75. package/skills_ref/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
  76. package/skills_ref/canvas-design/canvas-fonts/DMMono-OFL.txt +0 -93
  77. package/skills_ref/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
  78. package/skills_ref/canvas-design/canvas-fonts/EricaOne-OFL.txt +0 -94
  79. package/skills_ref/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
  80. package/skills_ref/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
  81. package/skills_ref/canvas-design/canvas-fonts/GeistMono-OFL.txt +0 -93
  82. package/skills_ref/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
  83. package/skills_ref/canvas-design/canvas-fonts/Gloock-OFL.txt +0 -93
  84. package/skills_ref/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
  85. package/skills_ref/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
  86. package/skills_ref/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +0 -93
  87. package/skills_ref/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
  88. package/skills_ref/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
  89. package/skills_ref/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
  90. package/skills_ref/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
  91. package/skills_ref/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
  92. package/skills_ref/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
  93. package/skills_ref/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
  94. package/skills_ref/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
  95. package/skills_ref/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +0 -93
  96. package/skills_ref/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
  97. package/skills_ref/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
  98. package/skills_ref/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
  99. package/skills_ref/canvas-design/canvas-fonts/Italiana-OFL.txt +0 -93
  100. package/skills_ref/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
  101. package/skills_ref/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
  102. package/skills_ref/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +0 -93
  103. package/skills_ref/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
  104. package/skills_ref/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
  105. package/skills_ref/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
  106. package/skills_ref/canvas-design/canvas-fonts/Jura-OFL.txt +0 -93
  107. package/skills_ref/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +0 -93
  108. package/skills_ref/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
  109. package/skills_ref/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
  110. package/skills_ref/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
  111. package/skills_ref/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
  112. package/skills_ref/canvas-design/canvas-fonts/Lora-OFL.txt +0 -93
  113. package/skills_ref/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
  114. package/skills_ref/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
  115. package/skills_ref/canvas-design/canvas-fonts/NationalPark-OFL.txt +0 -93
  116. package/skills_ref/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
  117. package/skills_ref/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +0 -93
  118. package/skills_ref/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
  119. package/skills_ref/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
  120. package/skills_ref/canvas-design/canvas-fonts/Outfit-OFL.txt +0 -93
  121. package/skills_ref/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
  122. package/skills_ref/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
  123. package/skills_ref/canvas-design/canvas-fonts/PixelifySans-OFL.txt +0 -93
  124. package/skills_ref/canvas-design/canvas-fonts/PoiretOne-OFL.txt +0 -93
  125. package/skills_ref/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
  126. package/skills_ref/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
  127. package/skills_ref/canvas-design/canvas-fonts/RedHatMono-OFL.txt +0 -93
  128. package/skills_ref/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
  129. package/skills_ref/canvas-design/canvas-fonts/Silkscreen-OFL.txt +0 -93
  130. package/skills_ref/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
  131. package/skills_ref/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
  132. package/skills_ref/canvas-design/canvas-fonts/SmoochSans-OFL.txt +0 -93
  133. package/skills_ref/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
  134. package/skills_ref/canvas-design/canvas-fonts/Tektur-OFL.txt +0 -93
  135. package/skills_ref/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
  136. package/skills_ref/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
  137. package/skills_ref/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
  138. package/skills_ref/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
  139. package/skills_ref/canvas-design/canvas-fonts/WorkSans-OFL.txt +0 -93
  140. package/skills_ref/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
  141. package/skills_ref/canvas-design/canvas-fonts/YoungSerif-OFL.txt +0 -93
  142. package/skills_ref/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
  143. package/skills_ref/changelog-generator/SKILL.md +0 -104
  144. package/skills_ref/cloudflare-deploy/SKILL.md +0 -207
  145. package/skills_ref/codebase-orientation/SKILL.md +0 -29
  146. package/skills_ref/config-file-explainer/SKILL.md +0 -26
  147. package/skills_ref/context-compression/SKILL.md +0 -265
  148. package/skills_ref/context-compression/references/evaluation-framework.md +0 -213
  149. package/skills_ref/context-compression/scripts/compression_evaluator.py +0 -658
  150. package/skills_ref/data-structure-chooser/SKILL.md +0 -26
  151. package/skills_ref/debugging-checklist/SKILL.md +0 -26
  152. package/skills_ref/debugging-helpers/CREATION-LOG.md +0 -119
  153. package/skills_ref/debugging-helpers/SKILL.md +0 -296
  154. package/skills_ref/debugging-helpers/condition-based-waiting-example.ts +0 -158
  155. package/skills_ref/debugging-helpers/condition-based-waiting.md +0 -115
  156. package/skills_ref/debugging-helpers/defense-in-depth.md +0 -122
  157. package/skills_ref/debugging-helpers/find-polluter.sh +0 -63
  158. package/skills_ref/debugging-helpers/root-cause-tracing.md +0 -169
  159. package/skills_ref/debugging-helpers/test-academic.md +0 -14
  160. package/skills_ref/debugging-helpers/test-pressure-1.md +0 -58
  161. package/skills_ref/debugging-helpers/test-pressure-2.md +0 -68
  162. package/skills_ref/debugging-helpers/test-pressure-3.md +0 -69
  163. package/skills_ref/deep-research/.env.example +0 -7
  164. package/skills_ref/deep-research/README.md +0 -246
  165. package/skills_ref/deep-research/SKILL.md +0 -106
  166. package/skills_ref/deep-research/requirements.txt +0 -2
  167. package/skills_ref/deep-research/scripts/research.py +0 -692
  168. package/skills_ref/dependency-install-helper/SKILL.md +0 -26
  169. package/skills_ref/dev/SKILL.md +0 -65
  170. package/skills_ref/dev-backend/SKILL.md +0 -61
  171. package/skills_ref/dev-data/SKILL.md +0 -76
  172. package/skills_ref/dev-frontend/LICENSE.txt +0 -177
  173. package/skills_ref/dev-frontend/SKILL.md +0 -42
  174. package/skills_ref/dev-testing/LICENSE.txt +0 -202
  175. package/skills_ref/dev-testing/SKILL.md +0 -96
  176. package/skills_ref/dev-testing/examples/console_logging.py +0 -35
  177. package/skills_ref/dev-testing/examples/element_discovery.py +0 -40
  178. package/skills_ref/dev-testing/examples/static_html_automation.py +0 -33
  179. package/skills_ref/dev-testing/scripts/with_server.py +0 -106
  180. package/skills_ref/develop-web-game/SKILL.md +0 -149
  181. package/skills_ref/differential-review/.claude-plugin/plugin.json +0 -10
  182. package/skills_ref/differential-review/README.md +0 -109
  183. package/skills_ref/differential-review/commands/diff-review.md +0 -21
  184. package/skills_ref/differential-review/skills/differential-review/SKILL.md +0 -220
  185. package/skills_ref/differential-review/skills/differential-review/adversarial.md +0 -203
  186. package/skills_ref/differential-review/skills/differential-review/methodology.md +0 -234
  187. package/skills_ref/differential-review/skills/differential-review/patterns.md +0 -300
  188. package/skills_ref/differential-review/skills/differential-review/reporting.md +0 -369
  189. package/skills_ref/dispatching-parallel-agents/SKILL.md +0 -180
  190. package/skills_ref/doc-coauthoring/SKILL.md +0 -375
  191. package/skills_ref/docx/LICENSE.txt +0 -30
  192. package/skills_ref/docx/SKILL.md +0 -481
  193. package/skills_ref/docx/scripts/__init__.py +0 -1
  194. package/skills_ref/docx/scripts/accept_changes.py +0 -135
  195. package/skills_ref/docx/scripts/comment.py +0 -318
  196. package/skills_ref/docx/scripts/office/helpers/__init__.py +0 -0
  197. package/skills_ref/docx/scripts/office/helpers/merge_runs.py +0 -199
  198. package/skills_ref/docx/scripts/office/helpers/simplify_redlines.py +0 -197
  199. package/skills_ref/docx/scripts/office/pack.py +0 -159
  200. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  201. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  202. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  203. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  204. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  205. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  206. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  207. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  208. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  209. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  210. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  211. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  212. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  213. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  214. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  215. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  216. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  217. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  218. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  219. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  220. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  221. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  222. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  223. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  224. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  225. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  226. package/skills_ref/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  227. package/skills_ref/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  228. package/skills_ref/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  229. package/skills_ref/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  230. package/skills_ref/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  231. package/skills_ref/docx/scripts/office/schemas/mce/mc.xsd +0 -75
  232. package/skills_ref/docx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
  233. package/skills_ref/docx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
  234. package/skills_ref/docx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
  235. package/skills_ref/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
  236. package/skills_ref/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
  237. package/skills_ref/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  238. package/skills_ref/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
  239. package/skills_ref/docx/scripts/office/soffice.py +0 -183
  240. package/skills_ref/docx/scripts/office/unpack.py +0 -132
  241. package/skills_ref/docx/scripts/office/validate.py +0 -111
  242. package/skills_ref/docx/scripts/office/validators/__init__.py +0 -15
  243. package/skills_ref/docx/scripts/office/validators/base.py +0 -847
  244. package/skills_ref/docx/scripts/office/validators/docx.py +0 -446
  245. package/skills_ref/docx/scripts/office/validators/pptx.py +0 -275
  246. package/skills_ref/docx/scripts/office/validators/redlining.py +0 -247
  247. package/skills_ref/docx/scripts/templates/comments.xml +0 -3
  248. package/skills_ref/docx/scripts/templates/commentsExtended.xml +0 -3
  249. package/skills_ref/docx/scripts/templates/commentsExtensible.xml +0 -3
  250. package/skills_ref/docx/scripts/templates/commentsIds.xml +0 -3
  251. package/skills_ref/docx/scripts/templates/people.xml +0 -3
  252. package/skills_ref/durable-objects/SKILL.md +0 -186
  253. package/skills_ref/durable-objects/references/rules.md +0 -286
  254. package/skills_ref/durable-objects/references/testing.md +0 -264
  255. package/skills_ref/durable-objects/references/workers.md +0 -346
  256. package/skills_ref/email-draft-polish/SKILL.md +0 -24
  257. package/skills_ref/error-message-explainer/SKILL.md +0 -27
  258. package/skills_ref/fal-image-edit/SKILL.md +0 -249
  259. package/skills_ref/fal-image-edit/scripts/edit-image.sh +0 -199
  260. package/skills_ref/figma-implement-design/SKILL.md +0 -264
  261. package/skills_ref/git-worktrees/SKILL.md +0 -218
  262. package/skills_ref/github/SKILL.md +0 -210
  263. package/skills_ref/gog/SKILL.md +0 -116
  264. package/skills_ref/goplaces/SKILL.md +0 -52
  265. package/skills_ref/himalaya/SKILL.md +0 -257
  266. package/skills_ref/hugging-face-cli/SKILL.md +0 -186
  267. package/skills_ref/hugging-face-cli/references/commands.md +0 -954
  268. package/skills_ref/hugging-face-cli/references/examples.md +0 -374
  269. package/skills_ref/hugging-face-evaluation/SKILL.md +0 -651
  270. package/skills_ref/hugging-face-evaluation/examples/.env.example +0 -7
  271. package/skills_ref/hugging-face-evaluation/examples/USAGE_EXAMPLES.md +0 -382
  272. package/skills_ref/hugging-face-evaluation/examples/artificial_analysis_to_hub.py +0 -141
  273. package/skills_ref/hugging-face-evaluation/examples/example_readme_tables.md +0 -135
  274. package/skills_ref/hugging-face-evaluation/examples/metric_mapping.json +0 -50
  275. package/skills_ref/hugging-face-evaluation/requirements.txt +0 -20
  276. package/skills_ref/hugging-face-evaluation/scripts/evaluation_manager.py +0 -1374
  277. package/skills_ref/hugging-face-evaluation/scripts/inspect_eval_uv.py +0 -104
  278. package/skills_ref/hugging-face-evaluation/scripts/inspect_vllm_uv.py +0 -317
  279. package/skills_ref/hugging-face-evaluation/scripts/lighteval_vllm_uv.py +0 -303
  280. package/skills_ref/hugging-face-evaluation/scripts/run_eval_job.py +0 -98
  281. package/skills_ref/hugging-face-evaluation/scripts/run_vllm_eval_job.py +0 -331
  282. package/skills_ref/hugging-face-evaluation/scripts/test_extraction.py +0 -206
  283. package/skills_ref/hugging-face-model-trainer/SKILL.md +0 -718
  284. package/skills_ref/hugging-face-model-trainer/references/gguf_conversion.md +0 -296
  285. package/skills_ref/hugging-face-model-trainer/references/hardware_guide.md +0 -283
  286. package/skills_ref/hugging-face-model-trainer/references/hub_saving.md +0 -364
  287. package/skills_ref/hugging-face-model-trainer/references/reliability_principles.md +0 -371
  288. package/skills_ref/hugging-face-model-trainer/references/trackio_guide.md +0 -189
  289. package/skills_ref/hugging-face-model-trainer/references/training_methods.md +0 -150
  290. package/skills_ref/hugging-face-model-trainer/references/training_patterns.md +0 -203
  291. package/skills_ref/hugging-face-model-trainer/references/troubleshooting.md +0 -282
  292. package/skills_ref/hugging-face-model-trainer/references/unsloth.md +0 -313
  293. package/skills_ref/hugging-face-model-trainer/scripts/convert_to_gguf.py +0 -424
  294. package/skills_ref/hugging-face-model-trainer/scripts/dataset_inspector.py +0 -417
  295. package/skills_ref/hugging-face-model-trainer/scripts/estimate_cost.py +0 -150
  296. package/skills_ref/hugging-face-model-trainer/scripts/train_dpo_example.py +0 -106
  297. package/skills_ref/hugging-face-model-trainer/scripts/train_grpo_example.py +0 -89
  298. package/skills_ref/hugging-face-model-trainer/scripts/train_sft_example.py +0 -122
  299. package/skills_ref/hugging-face-model-trainer/scripts/unsloth_sft_example.py +0 -512
  300. package/skills_ref/imagegen/SKILL.md +0 -174
  301. package/skills_ref/insecure-defaults/.claude-plugin/plugin.json +0 -10
  302. package/skills_ref/insecure-defaults/README.md +0 -45
  303. package/skills_ref/insecure-defaults/skills/insecure-defaults/SKILL.md +0 -117
  304. package/skills_ref/insecure-defaults/skills/insecure-defaults/references/examples.md +0 -409
  305. package/skills_ref/jupyter-notebook/SKILL.md +0 -107
  306. package/skills_ref/linear/SKILL.md +0 -87
  307. package/skills_ref/linter-fix-guide/SKILL.md +0 -27
  308. package/skills_ref/log-summarizer/SKILL.md +0 -27
  309. package/skills_ref/mcp-builder/LICENSE.txt +0 -202
  310. package/skills_ref/mcp-builder/SKILL.md +0 -236
  311. package/skills_ref/mcp-builder/reference/evaluation.md +0 -602
  312. package/skills_ref/mcp-builder/reference/mcp_best_practices.md +0 -249
  313. package/skills_ref/mcp-builder/reference/node_mcp_server.md +0 -970
  314. package/skills_ref/mcp-builder/reference/python_mcp_server.md +0 -719
  315. package/skills_ref/mcp-builder/scripts/connections.py +0 -151
  316. package/skills_ref/mcp-builder/scripts/evaluation.py +0 -373
  317. package/skills_ref/mcp-builder/scripts/example_evaluation.xml +0 -22
  318. package/skills_ref/mcp-builder/scripts/requirements.txt +0 -2
  319. package/skills_ref/memory/SKILL.md +0 -129
  320. package/skills_ref/modern-python/.claude-plugin/plugin.json +0 -10
  321. package/skills_ref/modern-python/README.md +0 -66
  322. package/skills_ref/modern-python/hooks/hooks.json +0 -16
  323. package/skills_ref/modern-python/hooks/setup-shims.bats +0 -70
  324. package/skills_ref/modern-python/hooks/setup-shims.sh +0 -24
  325. package/skills_ref/modern-python/hooks/shims/pip +0 -27
  326. package/skills_ref/modern-python/hooks/shims/pip-shim.bats +0 -45
  327. package/skills_ref/modern-python/hooks/shims/pip3 +0 -27
  328. package/skills_ref/modern-python/hooks/shims/pipx +0 -41
  329. package/skills_ref/modern-python/hooks/shims/pipx-shim.bats +0 -64
  330. package/skills_ref/modern-python/hooks/shims/python +0 -26
  331. package/skills_ref/modern-python/hooks/shims/python-shim.bats +0 -53
  332. package/skills_ref/modern-python/hooks/shims/python3 +0 -26
  333. package/skills_ref/modern-python/hooks/shims/uv +0 -27
  334. package/skills_ref/modern-python/hooks/shims/uv-shim.bats +0 -47
  335. package/skills_ref/modern-python/skills/modern-python/SKILL.md +0 -333
  336. package/skills_ref/modern-python/skills/modern-python/references/dependabot.md +0 -43
  337. package/skills_ref/modern-python/skills/modern-python/references/migration-checklist.md +0 -141
  338. package/skills_ref/modern-python/skills/modern-python/references/pep723-scripts.md +0 -259
  339. package/skills_ref/modern-python/skills/modern-python/references/prek.md +0 -211
  340. package/skills_ref/modern-python/skills/modern-python/references/pyproject.md +0 -254
  341. package/skills_ref/modern-python/skills/modern-python/references/ruff-config.md +0 -240
  342. package/skills_ref/modern-python/skills/modern-python/references/security-setup.md +0 -255
  343. package/skills_ref/modern-python/skills/modern-python/references/testing.md +0 -284
  344. package/skills_ref/modern-python/skills/modern-python/references/uv-commands.md +0 -200
  345. package/skills_ref/modern-python/skills/modern-python/templates/dependabot.yml +0 -36
  346. package/skills_ref/modern-python/skills/modern-python/templates/pre-commit-config.yaml +0 -66
  347. package/skills_ref/nano-banana-pro/SKILL.md +0 -58
  348. package/skills_ref/netlify-deploy/SKILL.md +0 -233
  349. package/skills_ref/notion/SKILL.md +0 -304
  350. package/skills_ref/notion-knowledge-capture/SKILL.md +0 -56
  351. package/skills_ref/notion-meeting-intelligence/SKILL.md +0 -60
  352. package/skills_ref/notion-research-documentation/SKILL.md +0 -59
  353. package/skills_ref/notion-spec-to-implementation/SKILL.md +0 -58
  354. package/skills_ref/obsidian/SKILL.md +0 -81
  355. package/skills_ref/openai-docs/SKILL.md +0 -56
  356. package/skills_ref/openhue/SKILL.md +0 -112
  357. package/skills_ref/pdf/SKILL.md +0 -69
  358. package/skills_ref/postgres/README.md +0 -77
  359. package/skills_ref/postgres/SKILL.md +0 -129
  360. package/skills_ref/postgres/connections.example.json +0 -34
  361. package/skills_ref/postgres/requirements.txt +0 -1
  362. package/skills_ref/postgres/scripts/query.py +0 -262
  363. package/skills_ref/pptx/LICENSE.txt +0 -30
  364. package/skills_ref/pptx/SKILL.md +0 -232
  365. package/skills_ref/pptx/editing.md +0 -205
  366. package/skills_ref/pptx/pptxgenjs.md +0 -420
  367. package/skills_ref/pptx/scripts/__init__.py +0 -0
  368. package/skills_ref/pptx/scripts/add_slide.py +0 -195
  369. package/skills_ref/pptx/scripts/clean.py +0 -286
  370. package/skills_ref/pptx/scripts/office/helpers/__init__.py +0 -0
  371. package/skills_ref/pptx/scripts/office/helpers/merge_runs.py +0 -199
  372. package/skills_ref/pptx/scripts/office/helpers/simplify_redlines.py +0 -197
  373. package/skills_ref/pptx/scripts/office/pack.py +0 -159
  374. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  375. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  376. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  377. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  378. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  379. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  380. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  381. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  382. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  383. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  384. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  385. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  386. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  387. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  388. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  389. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  390. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  391. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  392. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  393. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  394. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  395. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  396. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  397. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  398. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  399. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  400. package/skills_ref/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  401. package/skills_ref/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  402. package/skills_ref/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  403. package/skills_ref/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  404. package/skills_ref/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  405. package/skills_ref/pptx/scripts/office/schemas/mce/mc.xsd +0 -75
  406. package/skills_ref/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
  407. package/skills_ref/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
  408. package/skills_ref/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
  409. package/skills_ref/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
  410. package/skills_ref/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
  411. package/skills_ref/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  412. package/skills_ref/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
  413. package/skills_ref/pptx/scripts/office/soffice.py +0 -183
  414. package/skills_ref/pptx/scripts/office/unpack.py +0 -132
  415. package/skills_ref/pptx/scripts/office/validate.py +0 -111
  416. package/skills_ref/pptx/scripts/office/validators/__init__.py +0 -15
  417. package/skills_ref/pptx/scripts/office/validators/base.py +0 -847
  418. package/skills_ref/pptx/scripts/office/validators/docx.py +0 -446
  419. package/skills_ref/pptx/scripts/office/validators/pptx.py +0 -275
  420. package/skills_ref/pptx/scripts/office/validators/redlining.py +0 -247
  421. package/skills_ref/pptx/scripts/thumbnail.py +0 -289
  422. package/skills_ref/property-based-testing/.claude-plugin/plugin.json +0 -9
  423. package/skills_ref/property-based-testing/README.md +0 -47
  424. package/skills_ref/property-based-testing/skills/property-based-testing/README.md +0 -88
  425. package/skills_ref/property-based-testing/skills/property-based-testing/SKILL.md +0 -123
  426. package/skills_ref/property-based-testing/skills/property-based-testing/references/design.md +0 -191
  427. package/skills_ref/property-based-testing/skills/property-based-testing/references/generating.md +0 -204
  428. package/skills_ref/property-based-testing/skills/property-based-testing/references/interpreting-failures.md +0 -239
  429. package/skills_ref/property-based-testing/skills/property-based-testing/references/libraries.md +0 -130
  430. package/skills_ref/property-based-testing/skills/property-based-testing/references/refactoring.md +0 -181
  431. package/skills_ref/property-based-testing/skills/property-based-testing/references/reviewing.md +0 -209
  432. package/skills_ref/property-based-testing/skills/property-based-testing/references/strategies.md +0 -124
  433. package/skills_ref/react-best-practices/AGENTS.md +0 -2934
  434. package/skills_ref/react-best-practices/README.md +0 -123
  435. package/skills_ref/react-best-practices/SKILL.md +0 -136
  436. package/skills_ref/react-best-practices/metadata.json +0 -15
  437. package/skills_ref/react-best-practices/rules/_sections.md +0 -46
  438. package/skills_ref/react-best-practices/rules/_template.md +0 -28
  439. package/skills_ref/react-best-practices/rules/advanced-event-handler-refs.md +0 -55
  440. package/skills_ref/react-best-practices/rules/advanced-init-once.md +0 -42
  441. package/skills_ref/react-best-practices/rules/advanced-use-latest.md +0 -39
  442. package/skills_ref/react-best-practices/rules/async-api-routes.md +0 -38
  443. package/skills_ref/react-best-practices/rules/async-defer-await.md +0 -80
  444. package/skills_ref/react-best-practices/rules/async-dependencies.md +0 -51
  445. package/skills_ref/react-best-practices/rules/async-parallel.md +0 -28
  446. package/skills_ref/react-best-practices/rules/async-suspense-boundaries.md +0 -99
  447. package/skills_ref/react-best-practices/rules/bundle-barrel-imports.md +0 -59
  448. package/skills_ref/react-best-practices/rules/bundle-conditional.md +0 -31
  449. package/skills_ref/react-best-practices/rules/bundle-defer-third-party.md +0 -49
  450. package/skills_ref/react-best-practices/rules/bundle-dynamic-imports.md +0 -35
  451. package/skills_ref/react-best-practices/rules/bundle-preload.md +0 -50
  452. package/skills_ref/react-best-practices/rules/client-event-listeners.md +0 -74
  453. package/skills_ref/react-best-practices/rules/client-localstorage-schema.md +0 -71
  454. package/skills_ref/react-best-practices/rules/client-passive-event-listeners.md +0 -48
  455. package/skills_ref/react-best-practices/rules/client-swr-dedup.md +0 -56
  456. package/skills_ref/react-best-practices/rules/js-batch-dom-css.md +0 -107
  457. package/skills_ref/react-best-practices/rules/js-cache-function-results.md +0 -80
  458. package/skills_ref/react-best-practices/rules/js-cache-property-access.md +0 -28
  459. package/skills_ref/react-best-practices/rules/js-cache-storage.md +0 -70
  460. package/skills_ref/react-best-practices/rules/js-combine-iterations.md +0 -32
  461. package/skills_ref/react-best-practices/rules/js-early-exit.md +0 -50
  462. package/skills_ref/react-best-practices/rules/js-hoist-regexp.md +0 -45
  463. package/skills_ref/react-best-practices/rules/js-index-maps.md +0 -37
  464. package/skills_ref/react-best-practices/rules/js-length-check-first.md +0 -49
  465. package/skills_ref/react-best-practices/rules/js-min-max-loop.md +0 -82
  466. package/skills_ref/react-best-practices/rules/js-set-map-lookups.md +0 -24
  467. package/skills_ref/react-best-practices/rules/js-tosorted-immutable.md +0 -57
  468. package/skills_ref/react-best-practices/rules/rendering-activity.md +0 -26
  469. package/skills_ref/react-best-practices/rules/rendering-animate-svg-wrapper.md +0 -47
  470. package/skills_ref/react-best-practices/rules/rendering-conditional-render.md +0 -40
  471. package/skills_ref/react-best-practices/rules/rendering-content-visibility.md +0 -38
  472. package/skills_ref/react-best-practices/rules/rendering-hoist-jsx.md +0 -46
  473. package/skills_ref/react-best-practices/rules/rendering-hydration-no-flicker.md +0 -82
  474. package/skills_ref/react-best-practices/rules/rendering-hydration-suppress-warning.md +0 -30
  475. package/skills_ref/react-best-practices/rules/rendering-svg-precision.md +0 -28
  476. package/skills_ref/react-best-practices/rules/rendering-usetransition-loading.md +0 -75
  477. package/skills_ref/react-best-practices/rules/rerender-defer-reads.md +0 -39
  478. package/skills_ref/react-best-practices/rules/rerender-dependencies.md +0 -45
  479. package/skills_ref/react-best-practices/rules/rerender-derived-state-no-effect.md +0 -40
  480. package/skills_ref/react-best-practices/rules/rerender-derived-state.md +0 -29
  481. package/skills_ref/react-best-practices/rules/rerender-functional-setstate.md +0 -74
  482. package/skills_ref/react-best-practices/rules/rerender-lazy-state-init.md +0 -58
  483. package/skills_ref/react-best-practices/rules/rerender-memo-with-default-value.md +0 -38
  484. package/skills_ref/react-best-practices/rules/rerender-memo.md +0 -44
  485. package/skills_ref/react-best-practices/rules/rerender-move-effect-to-event.md +0 -45
  486. package/skills_ref/react-best-practices/rules/rerender-simple-expression-in-memo.md +0 -35
  487. package/skills_ref/react-best-practices/rules/rerender-transitions.md +0 -40
  488. package/skills_ref/react-best-practices/rules/rerender-use-ref-transient-values.md +0 -73
  489. package/skills_ref/react-best-practices/rules/server-after-nonblocking.md +0 -73
  490. package/skills_ref/react-best-practices/rules/server-auth-actions.md +0 -96
  491. package/skills_ref/react-best-practices/rules/server-cache-lru.md +0 -41
  492. package/skills_ref/react-best-practices/rules/server-cache-react.md +0 -76
  493. package/skills_ref/react-best-practices/rules/server-dedup-props.md +0 -65
  494. package/skills_ref/react-best-practices/rules/server-parallel-fetching.md +0 -83
  495. package/skills_ref/react-best-practices/rules/server-serialization.md +0 -38
  496. package/skills_ref/receiving-code-review/SKILL.md +0 -213
  497. package/skills_ref/registry.json +0 -1493
  498. package/skills_ref/render-deploy/SKILL.md +0 -462
  499. package/skills_ref/requesting-code-review/SKILL.md +0 -105
  500. package/skills_ref/requesting-code-review/code-reviewer.md +0 -146
  501. package/skills_ref/screen-capture/SKILL.md +0 -162
  502. package/skills_ref/security-best-practices/LICENSE.txt +0 -201
  503. package/skills_ref/security-best-practices/SKILL.md +0 -86
  504. package/skills_ref/security-best-practices/agents/openai.yaml +0 -4
  505. package/skills_ref/security-best-practices/references/golang-general-backend-security.md +0 -826
  506. package/skills_ref/security-best-practices/references/javascript-express-web-server-security.md +0 -1158
  507. package/skills_ref/security-best-practices/references/javascript-general-web-frontend-security.md +0 -747
  508. package/skills_ref/security-best-practices/references/javascript-jquery-web-frontend-security.md +0 -678
  509. package/skills_ref/security-best-practices/references/javascript-typescript-nextjs-web-server-security.md +0 -1144
  510. package/skills_ref/security-best-practices/references/javascript-typescript-react-web-frontend-security.md +0 -990
  511. package/skills_ref/security-best-practices/references/javascript-typescript-vue-web-frontend-security.md +0 -791
  512. package/skills_ref/security-best-practices/references/python-django-web-server-security.md +0 -882
  513. package/skills_ref/security-best-practices/references/python-fastapi-web-server-security.md +0 -1036
  514. package/skills_ref/security-best-practices/references/python-flask-web-server-security.md +0 -705
  515. package/skills_ref/security-ownership-map/LICENSE.txt +0 -201
  516. package/skills_ref/security-ownership-map/SKILL.md +0 -206
  517. package/skills_ref/security-ownership-map/agents/openai.yaml +0 -4
  518. package/skills_ref/security-ownership-map/references/neo4j-import.md +0 -60
  519. package/skills_ref/security-ownership-map/scripts/build_ownership_map.py +0 -956
  520. package/skills_ref/security-ownership-map/scripts/community_maintainers.py +0 -544
  521. package/skills_ref/security-ownership-map/scripts/query_ownership.py +0 -483
  522. package/skills_ref/security-ownership-map/scripts/run_ownership_map.py +0 -200
  523. package/skills_ref/security-threat-model/LICENSE.txt +0 -201
  524. package/skills_ref/security-threat-model/SKILL.md +0 -81
  525. package/skills_ref/security-threat-model/agents/openai.yaml +0 -4
  526. package/skills_ref/security-threat-model/references/prompt-template.md +0 -255
  527. package/skills_ref/security-threat-model/references/security-controls-and-assets.md +0 -32
  528. package/skills_ref/sentry/SKILL.md +0 -123
  529. package/skills_ref/skill-creator/SKILL.md +0 -372
  530. package/skills_ref/sora/SKILL.md +0 -153
  531. package/skills_ref/speech/SKILL.md +0 -144
  532. package/skills_ref/spotify-player/SKILL.md +0 -64
  533. package/skills_ref/static-analysis/.claude-plugin/plugin.json +0 -8
  534. package/skills_ref/static-analysis/README.md +0 -65
  535. package/skills_ref/static-analysis/agents/semgrep-scanner.md +0 -71
  536. package/skills_ref/static-analysis/agents/semgrep-triager.md +0 -107
  537. package/skills_ref/static-analysis/skills/codeql/SKILL.md +0 -119
  538. package/skills_ref/static-analysis/skills/codeql/references/diagnostic-query-templates.md +0 -339
  539. package/skills_ref/static-analysis/skills/codeql/references/language-details.md +0 -207
  540. package/skills_ref/static-analysis/skills/codeql/references/performance-tuning.md +0 -111
  541. package/skills_ref/static-analysis/skills/codeql/references/ruleset-catalog.md +0 -63
  542. package/skills_ref/static-analysis/skills/codeql/references/threat-models.md +0 -44
  543. package/skills_ref/static-analysis/skills/codeql/workflows/build-database.md +0 -669
  544. package/skills_ref/static-analysis/skills/codeql/workflows/create-data-extensions.md +0 -536
  545. package/skills_ref/static-analysis/skills/codeql/workflows/run-analysis.md +0 -436
  546. package/skills_ref/static-analysis/skills/sarif-parsing/SKILL.md +0 -479
  547. package/skills_ref/static-analysis/skills/sarif-parsing/resources/jq-queries.md +0 -162
  548. package/skills_ref/static-analysis/skills/sarif-parsing/resources/sarif_helpers.py +0 -331
  549. package/skills_ref/static-analysis/skills/semgrep/SKILL.md +0 -431
  550. package/skills_ref/static-analysis/skills/semgrep/references/rulesets.md +0 -162
  551. package/skills_ref/static-analysis/skills/semgrep/references/scanner-task-prompt.md +0 -102
  552. package/skills_ref/static-analysis/skills/semgrep/references/triage-task-prompt.md +0 -122
  553. package/skills_ref/static-analysis/skills/semgrep/scripts/merge_triaged_sarif.py +0 -252
  554. package/skills_ref/summarize/SKILL.md +0 -87
  555. package/skills_ref/tdd/SKILL.md +0 -371
  556. package/skills_ref/tdd/testing-anti-patterns.md +0 -299
  557. package/skills_ref/telegram-send/SKILL.md +0 -99
  558. package/skills_ref/terraform/README.md +0 -105
  559. package/skills_ref/terraform/code-generation/.claude-plugin/plugin.json +0 -30
  560. package/skills_ref/terraform/code-generation/skills/azure-verified-modules/SKILL.md +0 -613
  561. package/skills_ref/terraform/code-generation/skills/terraform-style-guide/SKILL.md +0 -353
  562. package/skills_ref/terraform/code-generation/skills/terraform-test/SKILL.md +0 -1669
  563. package/skills_ref/terraform/module-generation/.claude-plugin/plugin.json +0 -30
  564. package/skills_ref/terraform/module-generation/skills/refactor-module/SKILL.md +0 -538
  565. package/skills_ref/terraform/module-generation/skills/terraform-stacks/SKILL.md +0 -468
  566. package/skills_ref/terraform/module-generation/skills/terraform-stacks/references/api-monitoring.md +0 -543
  567. package/skills_ref/terraform/module-generation/skills/terraform-stacks/references/component-blocks.md +0 -476
  568. package/skills_ref/terraform/module-generation/skills/terraform-stacks/references/deployment-blocks.md +0 -391
  569. package/skills_ref/terraform/module-generation/skills/terraform-stacks/references/examples.md +0 -1529
  570. package/skills_ref/terraform/module-generation/skills/terraform-stacks/references/linked-stacks.md +0 -187
  571. package/skills_ref/terraform/module-generation/skills/terraform-stacks/references/troubleshooting.md +0 -671
  572. package/skills_ref/terraform/provider-development/.claude-plugin/plugin.json +0 -13
  573. package/skills_ref/terraform/provider-development/skills/new-terraform-provider/SKILL.md +0 -25
  574. package/skills_ref/terraform/provider-development/skills/new-terraform-provider/assets/main.go +0 -40
  575. package/skills_ref/terraform/provider-development/skills/provider-actions/SKILL.md +0 -478
  576. package/skills_ref/terraform/provider-development/skills/provider-resources/SKILL.md +0 -599
  577. package/skills_ref/terraform/provider-development/skills/run-acceptance-tests/SKILL.md +0 -41
  578. package/skills_ref/theme-factory/LICENSE.txt +0 -202
  579. package/skills_ref/theme-factory/SKILL.md +0 -59
  580. package/skills_ref/theme-factory/theme-showcase.pdf +0 -0
  581. package/skills_ref/theme-factory/themes/arctic-frost.md +0 -19
  582. package/skills_ref/theme-factory/themes/botanical-garden.md +0 -19
  583. package/skills_ref/theme-factory/themes/desert-rose.md +0 -19
  584. package/skills_ref/theme-factory/themes/forest-canopy.md +0 -19
  585. package/skills_ref/theme-factory/themes/golden-hour.md +0 -19
  586. package/skills_ref/theme-factory/themes/midnight-galaxy.md +0 -19
  587. package/skills_ref/theme-factory/themes/modern-minimalist.md +0 -19
  588. package/skills_ref/theme-factory/themes/ocean-depths.md +0 -19
  589. package/skills_ref/theme-factory/themes/sunset-boulevard.md +0 -19
  590. package/skills_ref/theme-factory/themes/tech-innovation.md +0 -19
  591. package/skills_ref/things-mac/SKILL.md +0 -86
  592. package/skills_ref/tmux/SKILL.md +0 -153
  593. package/skills_ref/transcribe/SKILL.md +0 -81
  594. package/skills_ref/trello/SKILL.md +0 -95
  595. package/skills_ref/tts/SKILL.md +0 -99
  596. package/skills_ref/vercel-deploy/SKILL.md +0 -115
  597. package/skills_ref/video-downloader/SKILL.md +0 -99
  598. package/skills_ref/video-downloader/scripts/download_video.py +0 -145
  599. package/skills_ref/video-frames/SKILL.md +0 -46
  600. package/skills_ref/vision-click/SKILL.md +0 -128
  601. package/skills_ref/weather/SKILL.md +0 -112
  602. package/skills_ref/web-artifacts-builder/LICENSE.txt +0 -202
  603. package/skills_ref/web-artifacts-builder/SKILL.md +0 -74
  604. package/skills_ref/web-artifacts-builder/scripts/bundle-artifact.sh +0 -54
  605. package/skills_ref/web-artifacts-builder/scripts/init-artifact.sh +0 -322
  606. package/skills_ref/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  607. package/skills_ref/web-perf/SKILL.md +0 -193
  608. package/skills_ref/web-routing/SKILL.md +0 -26
  609. package/skills_ref/whatsapp/SKILL.md +0 -255
  610. package/skills_ref/whatsapp/assets/agent-app-integration-example.json +0 -35
  611. package/skills_ref/whatsapp/assets/databases-example.json +0 -11
  612. package/skills_ref/whatsapp/assets/function-decide-route-interactive-buttons.json +0 -6
  613. package/skills_ref/whatsapp/assets/functions-example.json +0 -5
  614. package/skills_ref/whatsapp/assets/workflow-agent-simple.json +0 -31
  615. package/skills_ref/whatsapp/assets/workflow-api-template-wait-agent.json +0 -59
  616. package/skills_ref/whatsapp/assets/workflow-customer-support-intake-agent.json +0 -56
  617. package/skills_ref/whatsapp/assets/workflow-decision.json +0 -83
  618. package/skills_ref/whatsapp/assets/workflow-interactive-buttons-decide-ai.json +0 -89
  619. package/skills_ref/whatsapp/assets/workflow-interactive-buttons-decide-function.json +0 -88
  620. package/skills_ref/whatsapp/assets/workflow-linear.json +0 -53
  621. package/skills_ref/whatsapp/package.json +0 -10
  622. package/skills_ref/whatsapp/references/app-integrations.md +0 -89
  623. package/skills_ref/whatsapp/references/databases-reference.md +0 -21
  624. package/skills_ref/whatsapp/references/execution-context.md +0 -42
  625. package/skills_ref/whatsapp/references/function-contracts.md +0 -55
  626. package/skills_ref/whatsapp/references/functions-payloads.md +0 -87
  627. package/skills_ref/whatsapp/references/functions-reference.md +0 -133
  628. package/skills_ref/whatsapp/references/graph-contract.md +0 -145
  629. package/skills_ref/whatsapp/references/node-types.md +0 -430
  630. package/skills_ref/whatsapp/references/triggers.md +0 -20
  631. package/skills_ref/whatsapp/references/workflow-overview.md +0 -22
  632. package/skills_ref/whatsapp/references/workflow-reference.md +0 -123
  633. package/skills_ref/whatsapp/scripts/configure-prop.js +0 -113
  634. package/skills_ref/whatsapp/scripts/create-connect-token.js +0 -38
  635. package/skills_ref/whatsapp/scripts/create-function.js +0 -64
  636. package/skills_ref/whatsapp/scripts/create-integration.js +0 -137
  637. package/skills_ref/whatsapp/scripts/create-row.js +0 -47
  638. package/skills_ref/whatsapp/scripts/create-trigger.js +0 -88
  639. package/skills_ref/whatsapp/scripts/create-workflow.js +0 -85
  640. package/skills_ref/whatsapp/scripts/delete-integration.js +0 -44
  641. package/skills_ref/whatsapp/scripts/delete-row.js +0 -49
  642. package/skills_ref/whatsapp/scripts/delete-trigger.js +0 -44
  643. package/skills_ref/whatsapp/scripts/deploy-function.js +0 -47
  644. package/skills_ref/whatsapp/scripts/edit-graph.js +0 -289
  645. package/skills_ref/whatsapp/scripts/get-action-schema.js +0 -44
  646. package/skills_ref/whatsapp/scripts/get-context-value.js +0 -80
  647. package/skills_ref/whatsapp/scripts/get-execution-event.js +0 -55
  648. package/skills_ref/whatsapp/scripts/get-execution.js +0 -44
  649. package/skills_ref/whatsapp/scripts/get-function.js +0 -43
  650. package/skills_ref/whatsapp/scripts/get-graph.js +0 -85
  651. package/skills_ref/whatsapp/scripts/get-table.js +0 -45
  652. package/skills_ref/whatsapp/scripts/get-workflow.js +0 -44
  653. package/skills_ref/whatsapp/scripts/invoke-function.js +0 -60
  654. package/skills_ref/whatsapp/scripts/lib/databases/args.js +0 -87
  655. package/skills_ref/whatsapp/scripts/lib/databases/filters.js +0 -30
  656. package/skills_ref/whatsapp/scripts/lib/databases/kapso-api.js +0 -70
  657. package/skills_ref/whatsapp/scripts/lib/functions/args.js +0 -55
  658. package/skills_ref/whatsapp/scripts/lib/functions/kapso-api.js +0 -70
  659. package/skills_ref/whatsapp/scripts/lib/workflows/args.js +0 -53
  660. package/skills_ref/whatsapp/scripts/lib/workflows/kapso-api.js +0 -123
  661. package/skills_ref/whatsapp/scripts/lib/workflows/result.js +0 -16
  662. package/skills_ref/whatsapp/scripts/list-accounts.js +0 -62
  663. package/skills_ref/whatsapp/scripts/list-apps.js +0 -42
  664. package/skills_ref/whatsapp/scripts/list-execution-events.js +0 -61
  665. package/skills_ref/whatsapp/scripts/list-executions.js +0 -53
  666. package/skills_ref/whatsapp/scripts/list-function-invocations.js +0 -53
  667. package/skills_ref/whatsapp/scripts/list-functions.js +0 -41
  668. package/skills_ref/whatsapp/scripts/list-integrations.js +0 -41
  669. package/skills_ref/whatsapp/scripts/list-provider-models.js +0 -48
  670. package/skills_ref/whatsapp/scripts/list-tables.js +0 -41
  671. package/skills_ref/whatsapp/scripts/list-triggers.js +0 -44
  672. package/skills_ref/whatsapp/scripts/list-whatsapp-phone-numbers.js +0 -56
  673. package/skills_ref/whatsapp/scripts/list-workflows.js +0 -44
  674. package/skills_ref/whatsapp/scripts/openapi-explore.mjs +0 -1273
  675. package/skills_ref/whatsapp/scripts/query-rows.js +0 -71
  676. package/skills_ref/whatsapp/scripts/reload-props.js +0 -110
  677. package/skills_ref/whatsapp/scripts/resume-execution.js +0 -75
  678. package/skills_ref/whatsapp/scripts/search-actions.js +0 -64
  679. package/skills_ref/whatsapp/scripts/update-execution-status.js +0 -51
  680. package/skills_ref/whatsapp/scripts/update-function.js +0 -65
  681. package/skills_ref/whatsapp/scripts/update-graph.js +0 -154
  682. package/skills_ref/whatsapp/scripts/update-integration.js +0 -82
  683. package/skills_ref/whatsapp/scripts/update-row.js +0 -51
  684. package/skills_ref/whatsapp/scripts/update-trigger.js +0 -60
  685. package/skills_ref/whatsapp/scripts/update-workflow-settings.js +0 -67
  686. package/skills_ref/whatsapp/scripts/upsert-row.js +0 -64
  687. package/skills_ref/whatsapp/scripts/validate-graph.js +0 -293
  688. package/skills_ref/whatsapp/scripts/variables-delete.js +0 -37
  689. package/skills_ref/whatsapp/scripts/variables-list.js +0 -55
  690. package/skills_ref/whatsapp/scripts/variables-set.js +0 -39
  691. package/skills_ref/writing-plans/SKILL.md +0 -116
  692. package/skills_ref/xlsx/LICENSE.txt +0 -30
  693. package/skills_ref/xlsx/SKILL.md +0 -292
  694. package/skills_ref/xlsx/scripts/office/helpers/__init__.py +0 -0
  695. package/skills_ref/xlsx/scripts/office/helpers/merge_runs.py +0 -199
  696. package/skills_ref/xlsx/scripts/office/helpers/simplify_redlines.py +0 -197
  697. package/skills_ref/xlsx/scripts/office/pack.py +0 -159
  698. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  699. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  700. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  701. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  702. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  703. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  704. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  705. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  706. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  707. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  708. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  709. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  710. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  711. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  712. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  713. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  714. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  715. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  716. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  717. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  718. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  719. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  720. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  721. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  722. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  723. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  724. package/skills_ref/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  725. package/skills_ref/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  726. package/skills_ref/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  727. package/skills_ref/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  728. package/skills_ref/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  729. package/skills_ref/xlsx/scripts/office/schemas/mce/mc.xsd +0 -75
  730. package/skills_ref/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
  731. package/skills_ref/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
  732. package/skills_ref/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
  733. package/skills_ref/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
  734. package/skills_ref/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
  735. package/skills_ref/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  736. package/skills_ref/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
  737. package/skills_ref/xlsx/scripts/office/soffice.py +0 -183
  738. package/skills_ref/xlsx/scripts/office/unpack.py +0 -132
  739. package/skills_ref/xlsx/scripts/office/validate.py +0 -111
  740. package/skills_ref/xlsx/scripts/office/validators/__init__.py +0 -15
  741. package/skills_ref/xlsx/scripts/office/validators/base.py +0 -847
  742. package/skills_ref/xlsx/scripts/office/validators/docx.py +0 -446
  743. package/skills_ref/xlsx/scripts/office/validators/pptx.py +0 -275
  744. package/skills_ref/xlsx/scripts/office/validators/redlining.py +0 -247
  745. package/skills_ref/xlsx/scripts/recalc.py +0 -184
  746. package/skills_ref/xurl/SKILL.md +0 -461
@@ -1,483 +0,0 @@
1
- #!/usr/bin/env python3
2
- """Query ownership-map outputs without loading everything into an LLM context."""
3
-
4
- from __future__ import annotations
5
-
6
- import argparse
7
- import csv
8
- import json
9
- import sys
10
- from collections import defaultdict
11
- from pathlib import Path
12
- from typing import Iterable
13
-
14
-
15
- def parse_args() -> argparse.Namespace:
16
- parser = argparse.ArgumentParser(
17
- description="Query ownership-map outputs with bounded JSON results."
18
- )
19
- parser.add_argument(
20
- "--data-dir",
21
- default="ownership-map-out",
22
- help="Directory containing people.csv, files.csv, edges.csv",
23
- )
24
-
25
- subparsers = parser.add_subparsers(dest="command", required=True)
26
-
27
- people = subparsers.add_parser("people", help="List people")
28
- people.add_argument("--limit", type=int, default=20)
29
- people.add_argument("--sort", default="touches")
30
- people.add_argument("--email-contains", default=None)
31
- people.add_argument("--min-touches", type=int, default=0)
32
- people.add_argument("--min-sensitive", type=float, default=0.0)
33
-
34
- files = subparsers.add_parser("files", help="List files")
35
- files.add_argument("--limit", type=int, default=20)
36
- files.add_argument("--sort", default="sensitivity_score")
37
- files.add_argument("--path-contains", default=None)
38
- files.add_argument("--tag", default=None)
39
- files.add_argument("--bus-factor-max", type=int, default=None)
40
- files.add_argument("--sensitivity-min", type=float, default=0.0)
41
-
42
- person = subparsers.add_parser("person", help="Show person details and top files")
43
- person.add_argument("--person", required=True, help="Exact email or substring")
44
- person.add_argument("--limit", type=int, default=20)
45
- person.add_argument("--sort", default="touches")
46
-
47
- file_cmd = subparsers.add_parser("file", help="Show file details and top people")
48
- file_cmd.add_argument("--file", required=True, help="Exact path or substring")
49
- file_cmd.add_argument("--limit", type=int, default=20)
50
- file_cmd.add_argument("--sort", default="touches")
51
-
52
- cochange = subparsers.add_parser("cochange", help="List co-change neighbors for a file")
53
- cochange.add_argument("--file", required=True, help="Exact path or substring")
54
- cochange.add_argument("--limit", type=int, default=20)
55
- cochange.add_argument("--sort", default="jaccard")
56
- cochange.add_argument("--min-jaccard", type=float, default=0.0)
57
- cochange.add_argument("--min-count", type=int, default=1)
58
-
59
- tag = subparsers.add_parser("tag", help="Show top people/files for a sensitive tag")
60
- tag.add_argument("--tag", required=True)
61
- tag.add_argument("--limit", type=int, default=20)
62
-
63
- summary = subparsers.add_parser("summary", help="Show summary.json sections")
64
- summary.add_argument("--section", default=None)
65
-
66
- communities = subparsers.add_parser("communities", help="List communities")
67
- communities.add_argument("--limit", type=int, default=10)
68
- communities.add_argument("--id", type=int, default=None)
69
-
70
- community = subparsers.add_parser("community", help="Show community maintainers")
71
- community.add_argument("--id", type=int, required=True)
72
- community.add_argument("--include-files", action="store_true")
73
- community.add_argument("--file-limit", type=int, default=50)
74
-
75
- return parser.parse_args()
76
-
77
-
78
- def to_int(value: str) -> int:
79
- try:
80
- return int(value)
81
- except (TypeError, ValueError):
82
- return 0
83
-
84
-
85
- def to_float(value: str) -> float:
86
- try:
87
- return float(value)
88
- except (TypeError, ValueError):
89
- return 0.0
90
-
91
-
92
- def read_csv(path: Path) -> Iterable[dict[str, str]]:
93
- with path.open("r", encoding="utf-8") as handle:
94
- reader = csv.DictReader(handle)
95
- yield from reader
96
-
97
-
98
- def load_people(data_dir: Path) -> list[dict[str, object]]:
99
- people_path = data_dir / "people.csv"
100
- people = []
101
- for row in read_csv(people_path):
102
- person = dict(row)
103
- person["touches"] = to_int(row.get("touches", "0"))
104
- person["commit_count"] = to_int(row.get("commit_count", "0"))
105
- person["sensitive_touches"] = to_float(row.get("sensitive_touches", "0"))
106
- people.append(person)
107
- return people
108
-
109
-
110
- def load_files(data_dir: Path) -> list[dict[str, object]]:
111
- files_path = data_dir / "files.csv"
112
- files = []
113
- for row in read_csv(files_path):
114
- file_entry = dict(row)
115
- file_entry["touches"] = to_int(row.get("touches", "0"))
116
- file_entry["commit_count"] = to_int(row.get("commit_count", "0"))
117
- file_entry["bus_factor"] = to_int(row.get("bus_factor", "0"))
118
- file_entry["sensitivity_score"] = to_float(row.get("sensitivity_score", "0"))
119
- tags = row.get("sensitivity_tags", "")
120
- file_entry["sensitivity_tags"] = [tag for tag in tags.split(";") if tag]
121
- files.append(file_entry)
122
- return files
123
-
124
-
125
- def load_summary(data_dir: Path) -> dict[str, object]:
126
- summary_path = data_dir / "summary.json"
127
- with summary_path.open("r", encoding="utf-8") as handle:
128
- return json.load(handle)
129
-
130
-
131
- def load_communities(data_dir: Path) -> list[dict[str, object]]:
132
- communities_path = data_dir / "communities.json"
133
- if not communities_path.exists():
134
- raise FileNotFoundError("communities.json not found; rerun build with --communities")
135
- with communities_path.open("r", encoding="utf-8") as handle:
136
- return json.load(handle)
137
-
138
-
139
- def load_cochange_edges(data_dir: Path) -> Iterable[dict[str, object]]:
140
- edges_path = data_dir / "cochange_edges.csv"
141
- if not edges_path.exists():
142
- raise FileNotFoundError("cochange_edges.csv not found; rerun build without --no-cochange")
143
- for row in read_csv(edges_path):
144
- yield {
145
- "file_a": row.get("file_a"),
146
- "file_b": row.get("file_b"),
147
- "cochange_count": to_int(row.get("cochange_count", "0")),
148
- "jaccard": to_float(row.get("jaccard", "0")),
149
- }
150
-
151
-
152
- def select_single(records: list[dict[str, object]], key: str, query: str) -> dict[str, object]:
153
- exact = [record for record in records if str(record.get(key, "")) == query]
154
- if exact:
155
- return exact[0]
156
- contains = [record for record in records if query in str(record.get(key, ""))]
157
- if len(contains) == 1:
158
- return contains[0]
159
- if not contains:
160
- raise ValueError(f"No match for {query}")
161
- candidates = [str(record.get(key, "")) for record in contains[:10]]
162
- raise ValueError(f"Multiple matches for {query}: {', '.join(candidates)}")
163
-
164
-
165
- def top_edges_for_person(data_dir: Path, person_id: str) -> list[dict[str, object]]:
166
- edges_path = data_dir / "edges.csv"
167
- results = []
168
- for row in read_csv(edges_path):
169
- if row.get("person_id") != person_id:
170
- continue
171
- results.append(
172
- {
173
- "file_id": row.get("file_id"),
174
- "touches": to_int(row.get("touches", "0")),
175
- "recency_weight": to_float(row.get("recency_weight", "0")),
176
- "sensitive_weight": to_float(row.get("sensitive_weight", "0")),
177
- "last_seen": row.get("last_seen"),
178
- }
179
- )
180
- return results
181
-
182
-
183
- def top_edges_for_file(data_dir: Path, file_id: str) -> list[dict[str, object]]:
184
- edges_path = data_dir / "edges.csv"
185
- results = []
186
- for row in read_csv(edges_path):
187
- if row.get("file_id") != file_id:
188
- continue
189
- results.append(
190
- {
191
- "person_id": row.get("person_id"),
192
- "touches": to_int(row.get("touches", "0")),
193
- "recency_weight": to_float(row.get("recency_weight", "0")),
194
- "sensitive_weight": to_float(row.get("sensitive_weight", "0")),
195
- "last_seen": row.get("last_seen"),
196
- }
197
- )
198
- return results
199
-
200
-
201
- def sort_records(records: list[dict[str, object]], key: str) -> list[dict[str, object]]:
202
- return sorted(records, key=lambda item: item.get(key, 0), reverse=True)
203
-
204
-
205
- def handle_people(args: argparse.Namespace, data_dir: Path) -> None:
206
- people = load_people(data_dir)
207
- if args.email_contains:
208
- people = [p for p in people if args.email_contains in p.get("email", "")]
209
- people = [p for p in people if p["touches"] >= args.min_touches]
210
- people = [p for p in people if p["sensitive_touches"] >= args.min_sensitive]
211
- people = sort_records(people, args.sort)[: args.limit]
212
- payload = [
213
- {
214
- "person_id": p.get("person_id"),
215
- "name": p.get("name"),
216
- "email": p.get("email"),
217
- "touches": p.get("touches"),
218
- "commit_count": p.get("commit_count"),
219
- "sensitive_touches": p.get("sensitive_touches"),
220
- "primary_tz_offset": p.get("primary_tz_offset"),
221
- }
222
- for p in people
223
- ]
224
- print(json.dumps(payload, indent=2))
225
-
226
-
227
- def handle_files(args: argparse.Namespace, data_dir: Path) -> None:
228
- files = load_files(data_dir)
229
- if args.path_contains:
230
- files = [f for f in files if args.path_contains in f.get("path", "")]
231
- if args.tag:
232
- files = [f for f in files if args.tag in f.get("sensitivity_tags", [])]
233
- if args.bus_factor_max is not None:
234
- files = [f for f in files if f["bus_factor"] <= args.bus_factor_max]
235
- files = [f for f in files if f["sensitivity_score"] >= args.sensitivity_min]
236
- files = sort_records(files, args.sort)[: args.limit]
237
- payload = [
238
- {
239
- "file_id": f.get("file_id"),
240
- "path": f.get("path"),
241
- "touches": f.get("touches"),
242
- "bus_factor": f.get("bus_factor"),
243
- "sensitivity_score": f.get("sensitivity_score"),
244
- "sensitivity_tags": f.get("sensitivity_tags"),
245
- "last_seen": f.get("last_seen"),
246
- }
247
- for f in files
248
- ]
249
- print(json.dumps(payload, indent=2))
250
-
251
-
252
- def handle_person(args: argparse.Namespace, data_dir: Path) -> None:
253
- people = load_people(data_dir)
254
- person = select_single(people, "person_id", args.person)
255
- files = load_files(data_dir)
256
- file_map = {f["file_id"]: f for f in files}
257
- edges = top_edges_for_person(data_dir, person["person_id"])
258
- edges = sort_records(edges, args.sort)[: args.limit]
259
- payload = {
260
- "person": {
261
- "person_id": person.get("person_id"),
262
- "name": person.get("name"),
263
- "email": person.get("email"),
264
- "touches": person.get("touches"),
265
- "commit_count": person.get("commit_count"),
266
- "sensitive_touches": person.get("sensitive_touches"),
267
- "primary_tz_offset": person.get("primary_tz_offset"),
268
- "timezone_offsets": person.get("timezone_offsets"),
269
- },
270
- "top_files": [
271
- {
272
- "file_id": edge.get("file_id"),
273
- "path": file_map.get(edge.get("file_id"), {}).get("path"),
274
- "touches": edge.get("touches"),
275
- "recency_weight": edge.get("recency_weight"),
276
- "sensitive_weight": edge.get("sensitive_weight"),
277
- "last_seen": edge.get("last_seen"),
278
- "sensitivity_tags": file_map.get(edge.get("file_id"), {}).get("sensitivity_tags"),
279
- }
280
- for edge in edges
281
- ],
282
- }
283
- print(json.dumps(payload, indent=2))
284
-
285
-
286
- def handle_file(args: argparse.Namespace, data_dir: Path) -> None:
287
- files = load_files(data_dir)
288
- file_entry = select_single(files, "file_id", args.file)
289
- people = load_people(data_dir)
290
- people_map = {p["person_id"]: p for p in people}
291
- edges = top_edges_for_file(data_dir, file_entry["file_id"])
292
- edges = sort_records(edges, args.sort)[: args.limit]
293
- payload = {
294
- "file": {
295
- "file_id": file_entry.get("file_id"),
296
- "path": file_entry.get("path"),
297
- "touches": file_entry.get("touches"),
298
- "bus_factor": file_entry.get("bus_factor"),
299
- "sensitivity_score": file_entry.get("sensitivity_score"),
300
- "sensitivity_tags": file_entry.get("sensitivity_tags"),
301
- "last_seen": file_entry.get("last_seen"),
302
- },
303
- "top_people": [
304
- {
305
- "person_id": edge.get("person_id"),
306
- "name": people_map.get(edge.get("person_id"), {}).get("name"),
307
- "email": people_map.get(edge.get("person_id"), {}).get("email"),
308
- "touches": edge.get("touches"),
309
- "recency_weight": edge.get("recency_weight"),
310
- "sensitive_weight": edge.get("sensitive_weight"),
311
- "primary_tz_offset": people_map.get(edge.get("person_id"), {}).get(
312
- "primary_tz_offset"
313
- ),
314
- }
315
- for edge in edges
316
- ],
317
- }
318
- print(json.dumps(payload, indent=2))
319
-
320
-
321
- def handle_cochange(args: argparse.Namespace, data_dir: Path) -> None:
322
- files = load_files(data_dir)
323
- file_entry = select_single(files, "file_id", args.file)
324
-
325
- neighbors = []
326
- for row in load_cochange_edges(data_dir):
327
- file_a = row.get("file_a")
328
- file_b = row.get("file_b")
329
- if file_a == file_entry["file_id"]:
330
- other = file_b
331
- elif file_b == file_entry["file_id"]:
332
- other = file_a
333
- else:
334
- continue
335
-
336
- if row["cochange_count"] < args.min_count:
337
- continue
338
- if row["jaccard"] < args.min_jaccard:
339
- continue
340
-
341
- neighbors.append(
342
- {
343
- "file_id": other,
344
- "path": other,
345
- "cochange_count": row["cochange_count"],
346
- "jaccard": row["jaccard"],
347
- }
348
- )
349
-
350
- neighbors = sort_records(neighbors, args.sort)[: args.limit]
351
- payload = {
352
- "file": {
353
- "file_id": file_entry.get("file_id"),
354
- "path": file_entry.get("path"),
355
- },
356
- "neighbors": neighbors,
357
- }
358
- print(json.dumps(payload, indent=2))
359
-
360
-
361
- def handle_tag(args: argparse.Namespace, data_dir: Path) -> None:
362
- files = load_files(data_dir)
363
- tagged_files = [f for f in files if args.tag in f.get("sensitivity_tags", [])]
364
- tagged_ids = {f["file_id"] for f in tagged_files}
365
-
366
- person_touch = defaultdict(int)
367
- edges_path = data_dir / "edges.csv"
368
- for row in read_csv(edges_path):
369
- if row.get("file_id") not in tagged_ids:
370
- continue
371
- person_touch[row.get("person_id")] += to_int(row.get("touches", "0"))
372
-
373
- people = load_people(data_dir)
374
- people_map = {p["person_id"]: p for p in people}
375
- top_people = [
376
- {
377
- "person_id": person_id,
378
- "name": people_map.get(person_id, {}).get("name"),
379
- "email": people_map.get(person_id, {}).get("email"),
380
- "touches": touches,
381
- }
382
- for person_id, touches in person_touch.items()
383
- ]
384
- top_people = sorted(top_people, key=lambda item: item.get("touches", 0), reverse=True)[
385
- : args.limit
386
- ]
387
-
388
- top_files = sorted(tagged_files, key=lambda item: item.get("touches", 0), reverse=True)[
389
- : args.limit
390
- ]
391
-
392
- payload = {
393
- "tag": args.tag,
394
- "top_people": top_people,
395
- "top_files": [
396
- {
397
- "file_id": entry.get("file_id"),
398
- "path": entry.get("path"),
399
- "touches": entry.get("touches"),
400
- "bus_factor": entry.get("bus_factor"),
401
- }
402
- for entry in top_files
403
- ],
404
- }
405
- print(json.dumps(payload, indent=2))
406
-
407
-
408
- def handle_summary(args: argparse.Namespace, data_dir: Path) -> None:
409
- summary = load_summary(data_dir)
410
- if args.section:
411
- if args.section not in summary:
412
- raise ValueError(f"Section not found: {args.section}")
413
- payload = summary[args.section]
414
- else:
415
- payload = summary
416
- print(json.dumps(payload, indent=2))
417
-
418
-
419
- def handle_communities(args: argparse.Namespace, data_dir: Path) -> None:
420
- communities = load_communities(data_dir)
421
- if args.id is not None:
422
- matches = [entry for entry in communities if entry.get("id") == args.id]
423
- if not matches:
424
- raise ValueError(f"Community id not found: {args.id}")
425
- payload = matches[0]
426
- else:
427
- payload = sorted(communities, key=lambda item: item.get("size", 0), reverse=True)[
428
- : args.limit
429
- ]
430
- print(json.dumps(payload, indent=2))
431
-
432
-
433
- def handle_community(args: argparse.Namespace, data_dir: Path) -> None:
434
- communities = load_communities(data_dir)
435
- matches = [entry for entry in communities if entry.get("id") == args.id]
436
- if not matches:
437
- raise ValueError(f"Community id not found: {args.id}")
438
- entry = dict(matches[0])
439
- files = entry.pop("files", [])
440
- payload = entry
441
- if args.include_files:
442
- payload["files"] = files[: args.file_limit]
443
- payload["files_truncated"] = len(files) > args.file_limit
444
- print(json.dumps(payload, indent=2))
445
-
446
-
447
- def main() -> int:
448
- args = parse_args()
449
- data_dir = Path(args.data_dir)
450
- if not data_dir.exists():
451
- print(f"Data directory not found: {data_dir}", file=sys.stderr)
452
- return 1
453
-
454
- try:
455
- if args.command == "people":
456
- handle_people(args, data_dir)
457
- elif args.command == "files":
458
- handle_files(args, data_dir)
459
- elif args.command == "person":
460
- handle_person(args, data_dir)
461
- elif args.command == "file":
462
- handle_file(args, data_dir)
463
- elif args.command == "cochange":
464
- handle_cochange(args, data_dir)
465
- elif args.command == "tag":
466
- handle_tag(args, data_dir)
467
- elif args.command == "summary":
468
- handle_summary(args, data_dir)
469
- elif args.command == "communities":
470
- handle_communities(args, data_dir)
471
- elif args.command == "community":
472
- handle_community(args, data_dir)
473
- else:
474
- raise ValueError(f"Unknown command: {args.command}")
475
- except (FileNotFoundError, ValueError) as exc:
476
- print(str(exc), file=sys.stderr)
477
- return 2
478
-
479
- return 0
480
-
481
-
482
- if __name__ == "__main__":
483
- raise SystemExit(main())
@@ -1,200 +0,0 @@
1
- #!/usr/bin/env python3
2
- """One-shot runner for building the security ownership map."""
3
-
4
- from __future__ import annotations
5
-
6
- import argparse
7
- import subprocess
8
- import sys
9
- from pathlib import Path
10
-
11
-
12
- def parse_args() -> argparse.Namespace:
13
- parser = argparse.ArgumentParser(
14
- description="Run build_ownership_map.py with sensible defaults."
15
- )
16
- parser.add_argument("--repo", default=".", help="Path to the git repo (default: .)")
17
- parser.add_argument(
18
- "--out",
19
- default="ownership-map-out",
20
- help="Output directory for graph artifacts",
21
- )
22
- parser.add_argument("--since", default=None, help="Limit git log to commits since date")
23
- parser.add_argument("--until", default=None, help="Limit git log to commits until date")
24
- parser.add_argument(
25
- "--identity",
26
- choices=("author", "committer"),
27
- default="author",
28
- help="Identity to attribute touches to",
29
- )
30
- parser.add_argument(
31
- "--date-field",
32
- choices=("author", "committer"),
33
- default="author",
34
- help="Date field to use for recency and bucketing",
35
- )
36
- parser.add_argument(
37
- "--include-merges",
38
- action="store_true",
39
- help="Include merge commits (excluded by default)",
40
- )
41
- parser.add_argument(
42
- "--emit-commits",
43
- action="store_true",
44
- help="Write commit list to commits.jsonl",
45
- )
46
- parser.add_argument(
47
- "--author-exclude-regex",
48
- action="append",
49
- default=[],
50
- help="Regex for author name/email to exclude (repeatable)",
51
- )
52
- parser.add_argument(
53
- "--no-default-author-excludes",
54
- action="store_true",
55
- help="Disable default author excludes (dependabot)",
56
- )
57
- parser.add_argument(
58
- "--graphml",
59
- action="store_true",
60
- help="Emit GraphML outputs",
61
- )
62
- parser.add_argument(
63
- "--sensitive-config",
64
- default=None,
65
- help="CSV file with pattern,tag,weight for sensitive paths",
66
- )
67
- parser.add_argument(
68
- "--cochange-max-files",
69
- type=int,
70
- default=50,
71
- help="Ignore commits touching more than this many files for co-change graph",
72
- )
73
- parser.add_argument(
74
- "--cochange-min-count",
75
- type=int,
76
- default=2,
77
- help="Minimum co-change count to keep file-file edge",
78
- )
79
- parser.add_argument(
80
- "--cochange-min-jaccard",
81
- type=float,
82
- default=0.05,
83
- help="Minimum Jaccard similarity to keep file-file edge",
84
- )
85
- parser.add_argument(
86
- "--cochange-exclude",
87
- action="append",
88
- default=[],
89
- help="Glob to exclude from co-change graph (repeatable)",
90
- )
91
- parser.add_argument(
92
- "--no-default-cochange-excludes",
93
- action="store_true",
94
- help="Disable default co-change excludes (lockfiles, .github, editor config)",
95
- )
96
- parser.add_argument(
97
- "--community-top-owners",
98
- type=int,
99
- default=5,
100
- help="Top maintainers saved per community",
101
- )
102
- parser.add_argument(
103
- "--bus-factor-threshold",
104
- type=int,
105
- default=1,
106
- help="Bus factor threshold for hotspots",
107
- )
108
- parser.add_argument(
109
- "--stale-days",
110
- type=int,
111
- default=365,
112
- help="Days since last touch to consider stale",
113
- )
114
- parser.add_argument(
115
- "--owner-threshold",
116
- type=float,
117
- default=0.5,
118
- help="Share threshold for hidden owner detection",
119
- )
120
- parser.add_argument(
121
- "--no-cochange",
122
- action="store_true",
123
- help="Disable co-change graph output",
124
- )
125
- parser.add_argument(
126
- "--no-communities",
127
- action="store_true",
128
- help="Disable community detection (not recommended)",
129
- )
130
- return parser.parse_args()
131
-
132
-
133
- def main() -> int:
134
- args = parse_args()
135
-
136
- try:
137
- import networkx # noqa: F401
138
- except ImportError:
139
- print("networkx is required. Install with: pip install networkx", file=sys.stderr)
140
- return 2
141
-
142
- script_path = Path(__file__).resolve().parent / "build_ownership_map.py"
143
- cmd = [
144
- sys.executable,
145
- str(script_path),
146
- "--repo",
147
- args.repo,
148
- "--out",
149
- args.out,
150
- "--identity",
151
- args.identity,
152
- "--date-field",
153
- args.date_field,
154
- "--cochange-max-files",
155
- str(args.cochange_max_files),
156
- "--cochange-min-count",
157
- str(args.cochange_min_count),
158
- "--cochange-min-jaccard",
159
- str(args.cochange_min_jaccard),
160
- "--community-top-owners",
161
- str(args.community_top_owners),
162
- "--bus-factor-threshold",
163
- str(args.bus_factor_threshold),
164
- "--stale-days",
165
- str(args.stale_days),
166
- "--owner-threshold",
167
- str(args.owner_threshold),
168
- ]
169
-
170
- if args.since:
171
- cmd.extend(["--since", args.since])
172
- if args.until:
173
- cmd.extend(["--until", args.until])
174
- if args.include_merges:
175
- cmd.append("--include-merges")
176
- if args.emit_commits:
177
- cmd.append("--emit-commits")
178
- if args.graphml:
179
- cmd.append("--graphml")
180
- if args.sensitive_config:
181
- cmd.extend(["--sensitive-config", args.sensitive_config])
182
- if args.no_cochange:
183
- cmd.append("--no-cochange")
184
- if args.no_communities:
185
- cmd.append("--no-communities")
186
- if args.no_default_cochange_excludes:
187
- cmd.append("--no-default-cochange-excludes")
188
- for pattern in args.cochange_exclude:
189
- cmd.extend(["--cochange-exclude", pattern])
190
- if args.no_default_author_excludes:
191
- cmd.append("--no-default-author-excludes")
192
- for pattern in args.author_exclude_regex:
193
- cmd.extend(["--author-exclude-regex", pattern])
194
-
195
- result = subprocess.run(cmd, check=False)
196
- return result.returncode
197
-
198
-
199
- if __name__ == "__main__":
200
- raise SystemExit(main())