@wipcomputer/wip-ai-devops-toolbox 1.9.55 → 1.9.56

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 (536) hide show
  1. package/.worktrees/toolbox--release-notes/.license-guard.json +7 -0
  2. package/.worktrees/toolbox--release-notes/.publish-skill.json +4 -0
  3. package/.worktrees/toolbox--release-notes/CHANGELOG.md +1875 -0
  4. package/.worktrees/toolbox--release-notes/CLA.md +19 -0
  5. package/.worktrees/toolbox--release-notes/DEV-GUIDE-GENERAL-PUBLIC.md +949 -0
  6. package/.worktrees/toolbox--release-notes/LICENSE +52 -0
  7. package/.worktrees/toolbox--release-notes/README.md +238 -0
  8. package/.worktrees/toolbox--release-notes/RELEASE-NOTES-v1-9-56.md +42 -0
  9. package/.worktrees/toolbox--release-notes/SKILL.md +821 -0
  10. package/.worktrees/toolbox--release-notes/TECHNICAL.md +416 -0
  11. package/.worktrees/toolbox--release-notes/UNIVERSAL-INTERFACE.md +180 -0
  12. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-8-0.md +29 -0
  13. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-8-1.md +7 -0
  14. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-8-2.md +7 -0
  15. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-0.md +37 -0
  16. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-1.md +38 -0
  17. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-10.md +40 -0
  18. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-2.md +40 -0
  19. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-31.md +26 -0
  20. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-32.md +18 -0
  21. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-41.md +28 -0
  22. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-45.md +25 -0
  23. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-46.md +38 -0
  24. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-47.md +42 -0
  25. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-48.md +22 -0
  26. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-49.md +31 -0
  27. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-50.md +24 -0
  28. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-51.md +11 -0
  29. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-52.md +25 -0
  30. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-53.md +22 -0
  31. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-54.md +13 -0
  32. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-55.md +11 -0
  33. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-6.md +72 -0
  34. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-7.md +23 -0
  35. package/.worktrees/toolbox--release-notes/_trash/RELEASE-NOTES-v1-9-9.md +75 -0
  36. package/.worktrees/toolbox--release-notes/_trash/guide 2/DEV-GUIDE.md +487 -0
  37. package/.worktrees/toolbox--release-notes/_trash/guide 2/scripts/deploy-public.sh +152 -0
  38. package/.worktrees/toolbox--release-notes/package.json +27 -0
  39. package/.worktrees/toolbox--release-notes/scripts/SKILL-deploy-public.md +61 -0
  40. package/.worktrees/toolbox--release-notes/scripts/SKILL-post-merge-rename.md +47 -0
  41. package/.worktrees/toolbox--release-notes/scripts/deploy-public.sh +345 -0
  42. package/.worktrees/toolbox--release-notes/scripts/post-merge-rename.sh +210 -0
  43. package/.worktrees/toolbox--release-notes/scripts/publish-skill.sh +134 -0
  44. package/.worktrees/toolbox--release-notes/templates/global-claude-md.md +73 -0
  45. package/.worktrees/toolbox--release-notes/templates/repo-claude-md.template +24 -0
  46. package/.worktrees/toolbox--release-notes/tools/deploy-public/LICENSE +52 -0
  47. package/.worktrees/toolbox--release-notes/tools/deploy-public/README.md +31 -0
  48. package/.worktrees/toolbox--release-notes/tools/deploy-public/SKILL.md +71 -0
  49. package/.worktrees/toolbox--release-notes/tools/deploy-public/deploy-public.sh +264 -0
  50. package/.worktrees/toolbox--release-notes/tools/deploy-public/package.json +9 -0
  51. package/.worktrees/toolbox--release-notes/tools/ldm-jobs/LICENSE +52 -0
  52. package/.worktrees/toolbox--release-notes/tools/ldm-jobs/README.md +46 -0
  53. package/.worktrees/toolbox--release-notes/tools/ldm-jobs/backup.sh +16 -0
  54. package/.worktrees/toolbox--release-notes/tools/ldm-jobs/branch-protect.sh +39 -0
  55. package/.worktrees/toolbox--release-notes/tools/ldm-jobs/crystal-capture.sh +19 -0
  56. package/.worktrees/toolbox--release-notes/tools/ldm-jobs/setup-shell.sh +27 -0
  57. package/.worktrees/toolbox--release-notes/tools/ldm-jobs/visibility-audit.sh +27 -0
  58. package/.worktrees/toolbox--release-notes/tools/post-merge-rename/LICENSE +52 -0
  59. package/.worktrees/toolbox--release-notes/tools/post-merge-rename/README.md +29 -0
  60. package/.worktrees/toolbox--release-notes/tools/post-merge-rename/SKILL.md +57 -0
  61. package/.worktrees/toolbox--release-notes/tools/post-merge-rename/package.json +9 -0
  62. package/.worktrees/toolbox--release-notes/tools/post-merge-rename/post-merge-rename.sh +122 -0
  63. package/.worktrees/toolbox--release-notes/tools/wip-branch-guard/INSTALL.md +41 -0
  64. package/.worktrees/toolbox--release-notes/tools/wip-branch-guard/guard.mjs +459 -0
  65. package/.worktrees/toolbox--release-notes/tools/wip-branch-guard/package.json +18 -0
  66. package/.worktrees/toolbox--release-notes/tools/wip-file-guard/CHANGELOG.md +6 -0
  67. package/.worktrees/toolbox--release-notes/tools/wip-file-guard/LICENSE +52 -0
  68. package/.worktrees/toolbox--release-notes/tools/wip-file-guard/README.md +113 -0
  69. package/.worktrees/toolbox--release-notes/tools/wip-file-guard/REFERENCE.md +86 -0
  70. package/.worktrees/toolbox--release-notes/tools/wip-file-guard/SKILL.md +105 -0
  71. package/.worktrees/toolbox--release-notes/tools/wip-file-guard/guard.mjs +161 -0
  72. package/.worktrees/toolbox--release-notes/tools/wip-file-guard/openclaw.plugin.json +8 -0
  73. package/.worktrees/toolbox--release-notes/tools/wip-file-guard/package.json +27 -0
  74. package/.worktrees/toolbox--release-notes/tools/wip-file-guard/test.sh +119 -0
  75. package/.worktrees/toolbox--release-notes/tools/wip-license-guard/LICENSE +52 -0
  76. package/.worktrees/toolbox--release-notes/tools/wip-license-guard/README.md +69 -0
  77. package/.worktrees/toolbox--release-notes/tools/wip-license-guard/SKILL.md +65 -0
  78. package/.worktrees/toolbox--release-notes/tools/wip-license-guard/cli.mjs +472 -0
  79. package/.worktrees/toolbox--release-notes/tools/wip-license-guard/core.mjs +310 -0
  80. package/.worktrees/toolbox--release-notes/tools/wip-license-guard/guard.mjs +146 -0
  81. package/.worktrees/toolbox--release-notes/tools/wip-license-guard/package.json +22 -0
  82. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/CHANGELOG.md +17 -0
  83. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/LICENSE +52 -0
  84. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/README.md +200 -0
  85. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/SKILL.md +111 -0
  86. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/cli/index.d.ts +15 -0
  87. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/cli/index.js +170 -0
  88. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/cli/index.js.map +1 -0
  89. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/core/detector.d.ts +12 -0
  90. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/core/detector.js +104 -0
  91. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/core/detector.js.map +1 -0
  92. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/core/index.d.ts +4 -0
  93. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/core/index.js +5 -0
  94. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/core/index.js.map +1 -0
  95. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/core/ledger.d.ts +49 -0
  96. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/core/ledger.js +72 -0
  97. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/core/ledger.js.map +1 -0
  98. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/core/reporter.d.ts +14 -0
  99. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/core/reporter.js +227 -0
  100. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/core/reporter.js.map +1 -0
  101. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/core/scanner.d.ts +39 -0
  102. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/core/scanner.js +325 -0
  103. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/dist/core/scanner.js.map +1 -0
  104. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/hooks/pre-pull.sh +55 -0
  105. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/hooks/pre-push.sh +51 -0
  106. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/mcp-server.mjs +119 -0
  107. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/package-lock.json +54 -0
  108. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/package.json +43 -0
  109. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/src/cli/index.ts +189 -0
  110. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/src/core/detector.ts +130 -0
  111. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/src/core/index.ts +4 -0
  112. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/src/core/ledger.ts +116 -0
  113. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/src/core/reporter.ts +255 -0
  114. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/src/core/scanner.ts +367 -0
  115. package/.worktrees/toolbox--release-notes/tools/wip-license-hook/tsconfig.json +16 -0
  116. package/.worktrees/toolbox--release-notes/tools/wip-readme-format/README.md +49 -0
  117. package/.worktrees/toolbox--release-notes/tools/wip-readme-format/SKILL.md +84 -0
  118. package/.worktrees/toolbox--release-notes/tools/wip-readme-format/format.mjs +597 -0
  119. package/.worktrees/toolbox--release-notes/tools/wip-readme-format/package.json +15 -0
  120. package/.worktrees/toolbox--release-notes/tools/wip-release/CHANGELOG.md +42 -0
  121. package/.worktrees/toolbox--release-notes/tools/wip-release/LICENSE +52 -0
  122. package/.worktrees/toolbox--release-notes/tools/wip-release/README.md +45 -0
  123. package/.worktrees/toolbox--release-notes/tools/wip-release/REFERENCE.md +100 -0
  124. package/.worktrees/toolbox--release-notes/tools/wip-release/SKILL.md +139 -0
  125. package/.worktrees/toolbox--release-notes/tools/wip-release/cli.js +175 -0
  126. package/.worktrees/toolbox--release-notes/tools/wip-release/core.mjs +1664 -0
  127. package/.worktrees/toolbox--release-notes/tools/wip-release/mcp-server.mjs +113 -0
  128. package/.worktrees/toolbox--release-notes/tools/wip-release/package.json +36 -0
  129. package/.worktrees/toolbox--release-notes/tools/wip-repo-init/README.md +38 -0
  130. package/.worktrees/toolbox--release-notes/tools/wip-repo-init/SKILL.md +77 -0
  131. package/.worktrees/toolbox--release-notes/tools/wip-repo-init/init.mjs +148 -0
  132. package/.worktrees/toolbox--release-notes/tools/wip-repo-init/package.json +11 -0
  133. package/.worktrees/toolbox--release-notes/tools/wip-repo-init/templates/_sort/README.md +15 -0
  134. package/.worktrees/toolbox--release-notes/tools/wip-repo-init/templates/_trash/README.md +16 -0
  135. package/.worktrees/toolbox--release-notes/tools/wip-repo-init/templates/dev-updates/README.md +50 -0
  136. package/.worktrees/toolbox--release-notes/tools/wip-repo-init/templates/product/notes/README.md +26 -0
  137. package/.worktrees/toolbox--release-notes/tools/wip-repo-init/templates/product/plans-prds/roadmap.md +77 -0
  138. package/.worktrees/toolbox--release-notes/tools/wip-repo-init/templates/product/plans-prds/todos/README.md +63 -0
  139. package/.worktrees/toolbox--release-notes/tools/wip-repo-init/templates/product/product-ideas/README.md +24 -0
  140. package/.worktrees/toolbox--release-notes/tools/wip-repo-init/templates/product/readme-first-product.md +128 -0
  141. package/.worktrees/toolbox--release-notes/tools/wip-repo-init/templates/read-me-first.md +80 -0
  142. package/.worktrees/toolbox--release-notes/tools/wip-repo-permissions-hook/LICENSE +52 -0
  143. package/.worktrees/toolbox--release-notes/tools/wip-repo-permissions-hook/README.md +86 -0
  144. package/.worktrees/toolbox--release-notes/tools/wip-repo-permissions-hook/SKILL.md +73 -0
  145. package/.worktrees/toolbox--release-notes/tools/wip-repo-permissions-hook/cli.js +93 -0
  146. package/.worktrees/toolbox--release-notes/tools/wip-repo-permissions-hook/core.mjs +122 -0
  147. package/.worktrees/toolbox--release-notes/tools/wip-repo-permissions-hook/guard.mjs +64 -0
  148. package/.worktrees/toolbox--release-notes/tools/wip-repo-permissions-hook/mcp-server.mjs +92 -0
  149. package/.worktrees/toolbox--release-notes/tools/wip-repo-permissions-hook/openclaw.plugin.json +8 -0
  150. package/.worktrees/toolbox--release-notes/tools/wip-repo-permissions-hook/package.json +31 -0
  151. package/.worktrees/toolbox--release-notes/tools/wip-repos/LICENSE +52 -0
  152. package/.worktrees/toolbox--release-notes/tools/wip-repos/README.md +77 -0
  153. package/.worktrees/toolbox--release-notes/tools/wip-repos/SKILL.md +80 -0
  154. package/.worktrees/toolbox--release-notes/tools/wip-repos/claude.mjs +248 -0
  155. package/.worktrees/toolbox--release-notes/tools/wip-repos/cli.mjs +191 -0
  156. package/.worktrees/toolbox--release-notes/tools/wip-repos/core.mjs +290 -0
  157. package/.worktrees/toolbox--release-notes/tools/wip-repos/mcp-server.mjs +157 -0
  158. package/.worktrees/toolbox--release-notes/tools/wip-repos/package.json +34 -0
  159. package/.worktrees/toolbox--release-notes/tools/wip-universal-installer/CHANGELOG.md +57 -0
  160. package/.worktrees/toolbox--release-notes/tools/wip-universal-installer/LICENSE +52 -0
  161. package/.worktrees/toolbox--release-notes/tools/wip-universal-installer/README.md +81 -0
  162. package/.worktrees/toolbox--release-notes/tools/wip-universal-installer/REFERENCE.md +122 -0
  163. package/.worktrees/toolbox--release-notes/tools/wip-universal-installer/SKILL.md +87 -0
  164. package/.worktrees/toolbox--release-notes/tools/wip-universal-installer/SPEC.md +206 -0
  165. package/.worktrees/toolbox--release-notes/tools/wip-universal-installer/detect.mjs +130 -0
  166. package/.worktrees/toolbox--release-notes/tools/wip-universal-installer/examples/minimal/README.md +20 -0
  167. package/.worktrees/toolbox--release-notes/tools/wip-universal-installer/examples/minimal/SKILL.md +28 -0
  168. package/.worktrees/toolbox--release-notes/tools/wip-universal-installer/examples/minimal/cli.mjs +4 -0
  169. package/.worktrees/toolbox--release-notes/tools/wip-universal-installer/examples/minimal/core.mjs +8 -0
  170. package/.worktrees/toolbox--release-notes/tools/wip-universal-installer/examples/minimal/mcp-server.mjs +27 -0
  171. package/.worktrees/toolbox--release-notes/tools/wip-universal-installer/examples/minimal/package.json +12 -0
  172. package/.worktrees/toolbox--release-notes/tools/wip-universal-installer/install.js +930 -0
  173. package/.worktrees/toolbox--release-notes/tools/wip-universal-installer/package.json +32 -0
  174. package/.worktrees/toolbox--save-stale/.license-guard.json +7 -0
  175. package/.worktrees/toolbox--save-stale/.publish-skill.json +4 -0
  176. package/.worktrees/toolbox--save-stale/CHANGELOG.md +1875 -0
  177. package/.worktrees/toolbox--save-stale/CLA.md +19 -0
  178. package/.worktrees/toolbox--save-stale/DEV-GUIDE-GENERAL-PUBLIC.md +949 -0
  179. package/.worktrees/toolbox--save-stale/LICENSE +52 -0
  180. package/.worktrees/toolbox--save-stale/README.md +238 -0
  181. package/.worktrees/toolbox--save-stale/SKILL.md +821 -0
  182. package/.worktrees/toolbox--save-stale/TECHNICAL.md +416 -0
  183. package/.worktrees/toolbox--save-stale/UNIVERSAL-INTERFACE.md +180 -0
  184. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-8-0.md +29 -0
  185. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-8-1.md +7 -0
  186. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-8-2.md +7 -0
  187. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-0.md +37 -0
  188. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-1.md +38 -0
  189. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-10.md +40 -0
  190. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-2.md +40 -0
  191. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-31.md +26 -0
  192. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-32.md +18 -0
  193. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-41.md +28 -0
  194. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-45.md +25 -0
  195. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-46.md +38 -0
  196. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-47.md +42 -0
  197. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-48.md +22 -0
  198. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-49.md +31 -0
  199. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-50.md +24 -0
  200. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-51.md +11 -0
  201. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-52.md +25 -0
  202. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-53.md +22 -0
  203. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-54.md +13 -0
  204. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-55.md +11 -0
  205. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-6.md +72 -0
  206. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-7.md +23 -0
  207. package/.worktrees/toolbox--save-stale/_trash/RELEASE-NOTES-v1-9-9.md +75 -0
  208. package/.worktrees/toolbox--save-stale/_trash/guide 2/DEV-GUIDE.md +487 -0
  209. package/.worktrees/toolbox--save-stale/_trash/guide 2/scripts/deploy-public.sh +152 -0
  210. package/.worktrees/toolbox--save-stale/package.json +27 -0
  211. package/.worktrees/toolbox--save-stale/scripts/SKILL-deploy-public.md +61 -0
  212. package/.worktrees/toolbox--save-stale/scripts/SKILL-post-merge-rename.md +47 -0
  213. package/.worktrees/toolbox--save-stale/scripts/deploy-public.sh +345 -0
  214. package/.worktrees/toolbox--save-stale/scripts/post-merge-rename.sh +210 -0
  215. package/.worktrees/toolbox--save-stale/scripts/publish-skill.sh +134 -0
  216. package/.worktrees/toolbox--save-stale/templates/global-claude-md.md +73 -0
  217. package/.worktrees/toolbox--save-stale/templates/repo-claude-md.template +24 -0
  218. package/.worktrees/toolbox--save-stale/tools/deploy-public/LICENSE +52 -0
  219. package/.worktrees/toolbox--save-stale/tools/deploy-public/README.md +31 -0
  220. package/.worktrees/toolbox--save-stale/tools/deploy-public/SKILL.md +71 -0
  221. package/.worktrees/toolbox--save-stale/tools/deploy-public/deploy-public.sh +264 -0
  222. package/.worktrees/toolbox--save-stale/tools/deploy-public/package.json +9 -0
  223. package/.worktrees/toolbox--save-stale/tools/ldm-jobs/LICENSE +52 -0
  224. package/.worktrees/toolbox--save-stale/tools/ldm-jobs/README.md +46 -0
  225. package/.worktrees/toolbox--save-stale/tools/ldm-jobs/backup.sh +16 -0
  226. package/.worktrees/toolbox--save-stale/tools/ldm-jobs/branch-protect.sh +39 -0
  227. package/.worktrees/toolbox--save-stale/tools/ldm-jobs/crystal-capture.sh +19 -0
  228. package/.worktrees/toolbox--save-stale/tools/ldm-jobs/setup-shell.sh +27 -0
  229. package/.worktrees/toolbox--save-stale/tools/ldm-jobs/visibility-audit.sh +27 -0
  230. package/.worktrees/toolbox--save-stale/tools/post-merge-rename/LICENSE +52 -0
  231. package/.worktrees/toolbox--save-stale/tools/post-merge-rename/README.md +29 -0
  232. package/.worktrees/toolbox--save-stale/tools/post-merge-rename/SKILL.md +57 -0
  233. package/.worktrees/toolbox--save-stale/tools/post-merge-rename/package.json +9 -0
  234. package/.worktrees/toolbox--save-stale/tools/post-merge-rename/post-merge-rename.sh +122 -0
  235. package/.worktrees/toolbox--save-stale/tools/wip-branch-guard/INSTALL.md +41 -0
  236. package/.worktrees/toolbox--save-stale/tools/wip-branch-guard/guard.mjs +459 -0
  237. package/.worktrees/toolbox--save-stale/tools/wip-branch-guard/package.json +18 -0
  238. package/.worktrees/toolbox--save-stale/tools/wip-file-guard/CHANGELOG.md +6 -0
  239. package/.worktrees/toolbox--save-stale/tools/wip-file-guard/LICENSE +52 -0
  240. package/.worktrees/toolbox--save-stale/tools/wip-file-guard/README.md +113 -0
  241. package/.worktrees/toolbox--save-stale/tools/wip-file-guard/REFERENCE.md +86 -0
  242. package/.worktrees/toolbox--save-stale/tools/wip-file-guard/SKILL.md +105 -0
  243. package/.worktrees/toolbox--save-stale/tools/wip-file-guard/guard.mjs +161 -0
  244. package/.worktrees/toolbox--save-stale/tools/wip-file-guard/openclaw.plugin.json +8 -0
  245. package/.worktrees/toolbox--save-stale/tools/wip-file-guard/package.json +27 -0
  246. package/.worktrees/toolbox--save-stale/tools/wip-file-guard/test.sh +119 -0
  247. package/.worktrees/toolbox--save-stale/tools/wip-license-guard/LICENSE +52 -0
  248. package/.worktrees/toolbox--save-stale/tools/wip-license-guard/README.md +69 -0
  249. package/.worktrees/toolbox--save-stale/tools/wip-license-guard/SKILL.md +65 -0
  250. package/.worktrees/toolbox--save-stale/tools/wip-license-guard/cli.mjs +472 -0
  251. package/.worktrees/toolbox--save-stale/tools/wip-license-guard/core.mjs +310 -0
  252. package/.worktrees/toolbox--save-stale/tools/wip-license-guard/guard.mjs +146 -0
  253. package/.worktrees/toolbox--save-stale/tools/wip-license-guard/package.json +22 -0
  254. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/CHANGELOG.md +17 -0
  255. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/LICENSE +52 -0
  256. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/README.md +200 -0
  257. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/SKILL.md +111 -0
  258. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/cli/index.d.ts +15 -0
  259. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/cli/index.js +170 -0
  260. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/cli/index.js.map +1 -0
  261. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/core/detector.d.ts +12 -0
  262. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/core/detector.js +104 -0
  263. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/core/detector.js.map +1 -0
  264. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/core/index.d.ts +4 -0
  265. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/core/index.js +5 -0
  266. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/core/index.js.map +1 -0
  267. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/core/ledger.d.ts +49 -0
  268. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/core/ledger.js +72 -0
  269. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/core/ledger.js.map +1 -0
  270. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/core/reporter.d.ts +14 -0
  271. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/core/reporter.js +227 -0
  272. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/core/reporter.js.map +1 -0
  273. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/core/scanner.d.ts +39 -0
  274. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/core/scanner.js +325 -0
  275. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/dist/core/scanner.js.map +1 -0
  276. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/hooks/pre-pull.sh +55 -0
  277. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/hooks/pre-push.sh +51 -0
  278. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/mcp-server.mjs +119 -0
  279. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/package-lock.json +54 -0
  280. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/package.json +43 -0
  281. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/src/cli/index.ts +189 -0
  282. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/src/core/detector.ts +130 -0
  283. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/src/core/index.ts +4 -0
  284. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/src/core/ledger.ts +116 -0
  285. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/src/core/reporter.ts +255 -0
  286. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/src/core/scanner.ts +367 -0
  287. package/.worktrees/toolbox--save-stale/tools/wip-license-hook/tsconfig.json +16 -0
  288. package/.worktrees/toolbox--save-stale/tools/wip-readme-format/README.md +49 -0
  289. package/.worktrees/toolbox--save-stale/tools/wip-readme-format/SKILL.md +84 -0
  290. package/.worktrees/toolbox--save-stale/tools/wip-readme-format/format.mjs +597 -0
  291. package/.worktrees/toolbox--save-stale/tools/wip-readme-format/package.json +15 -0
  292. package/.worktrees/toolbox--save-stale/tools/wip-release/CHANGELOG.md +42 -0
  293. package/.worktrees/toolbox--save-stale/tools/wip-release/LICENSE +52 -0
  294. package/.worktrees/toolbox--save-stale/tools/wip-release/README.md +45 -0
  295. package/.worktrees/toolbox--save-stale/tools/wip-release/REFERENCE.md +100 -0
  296. package/.worktrees/toolbox--save-stale/tools/wip-release/SKILL.md +139 -0
  297. package/.worktrees/toolbox--save-stale/tools/wip-release/cli.js +175 -0
  298. package/.worktrees/toolbox--save-stale/tools/wip-release/core.mjs +1664 -0
  299. package/.worktrees/toolbox--save-stale/tools/wip-release/mcp-server.mjs +113 -0
  300. package/.worktrees/toolbox--save-stale/tools/wip-release/package.json +36 -0
  301. package/.worktrees/toolbox--save-stale/tools/wip-repo-init/README.md +38 -0
  302. package/.worktrees/toolbox--save-stale/tools/wip-repo-init/SKILL.md +77 -0
  303. package/.worktrees/toolbox--save-stale/tools/wip-repo-init/init.mjs +148 -0
  304. package/.worktrees/toolbox--save-stale/tools/wip-repo-init/package.json +11 -0
  305. package/.worktrees/toolbox--save-stale/tools/wip-repo-init/templates/_sort/README.md +15 -0
  306. package/.worktrees/toolbox--save-stale/tools/wip-repo-init/templates/_trash/README.md +16 -0
  307. package/.worktrees/toolbox--save-stale/tools/wip-repo-init/templates/dev-updates/README.md +50 -0
  308. package/.worktrees/toolbox--save-stale/tools/wip-repo-init/templates/product/notes/README.md +26 -0
  309. package/.worktrees/toolbox--save-stale/tools/wip-repo-init/templates/product/plans-prds/roadmap.md +77 -0
  310. package/.worktrees/toolbox--save-stale/tools/wip-repo-init/templates/product/plans-prds/todos/README.md +63 -0
  311. package/.worktrees/toolbox--save-stale/tools/wip-repo-init/templates/product/product-ideas/README.md +24 -0
  312. package/.worktrees/toolbox--save-stale/tools/wip-repo-init/templates/product/readme-first-product.md +128 -0
  313. package/.worktrees/toolbox--save-stale/tools/wip-repo-init/templates/read-me-first.md +80 -0
  314. package/.worktrees/toolbox--save-stale/tools/wip-repo-permissions-hook/LICENSE +52 -0
  315. package/.worktrees/toolbox--save-stale/tools/wip-repo-permissions-hook/README.md +86 -0
  316. package/.worktrees/toolbox--save-stale/tools/wip-repo-permissions-hook/SKILL.md +73 -0
  317. package/.worktrees/toolbox--save-stale/tools/wip-repo-permissions-hook/cli.js +93 -0
  318. package/.worktrees/toolbox--save-stale/tools/wip-repo-permissions-hook/core.mjs +122 -0
  319. package/.worktrees/toolbox--save-stale/tools/wip-repo-permissions-hook/guard.mjs +64 -0
  320. package/.worktrees/toolbox--save-stale/tools/wip-repo-permissions-hook/mcp-server.mjs +92 -0
  321. package/.worktrees/toolbox--save-stale/tools/wip-repo-permissions-hook/openclaw.plugin.json +8 -0
  322. package/.worktrees/toolbox--save-stale/tools/wip-repo-permissions-hook/package.json +31 -0
  323. package/.worktrees/toolbox--save-stale/tools/wip-repos/LICENSE +52 -0
  324. package/.worktrees/toolbox--save-stale/tools/wip-repos/README.md +77 -0
  325. package/.worktrees/toolbox--save-stale/tools/wip-repos/SKILL.md +80 -0
  326. package/.worktrees/toolbox--save-stale/tools/wip-repos/claude.mjs +248 -0
  327. package/.worktrees/toolbox--save-stale/tools/wip-repos/cli.mjs +191 -0
  328. package/.worktrees/toolbox--save-stale/tools/wip-repos/core.mjs +290 -0
  329. package/.worktrees/toolbox--save-stale/tools/wip-repos/mcp-server.mjs +157 -0
  330. package/.worktrees/toolbox--save-stale/tools/wip-repos/package.json +34 -0
  331. package/.worktrees/toolbox--save-stale/tools/wip-universal-installer/CHANGELOG.md +57 -0
  332. package/.worktrees/toolbox--save-stale/tools/wip-universal-installer/LICENSE +52 -0
  333. package/.worktrees/toolbox--save-stale/tools/wip-universal-installer/README.md +81 -0
  334. package/.worktrees/toolbox--save-stale/tools/wip-universal-installer/REFERENCE.md +122 -0
  335. package/.worktrees/toolbox--save-stale/tools/wip-universal-installer/SKILL.md +87 -0
  336. package/.worktrees/toolbox--save-stale/tools/wip-universal-installer/SPEC.md +206 -0
  337. package/.worktrees/toolbox--save-stale/tools/wip-universal-installer/detect.mjs +130 -0
  338. package/.worktrees/toolbox--save-stale/tools/wip-universal-installer/examples/minimal/README.md +20 -0
  339. package/.worktrees/toolbox--save-stale/tools/wip-universal-installer/examples/minimal/SKILL.md +28 -0
  340. package/.worktrees/toolbox--save-stale/tools/wip-universal-installer/examples/minimal/cli.mjs +4 -0
  341. package/.worktrees/toolbox--save-stale/tools/wip-universal-installer/examples/minimal/core.mjs +8 -0
  342. package/.worktrees/toolbox--save-stale/tools/wip-universal-installer/examples/minimal/mcp-server.mjs +27 -0
  343. package/.worktrees/toolbox--save-stale/tools/wip-universal-installer/examples/minimal/package.json +12 -0
  344. package/.worktrees/toolbox--save-stale/tools/wip-universal-installer/install.js +930 -0
  345. package/.worktrees/toolbox--save-stale/tools/wip-universal-installer/package.json +32 -0
  346. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/.license-guard.json +7 -0
  347. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/.publish-skill.json +4 -0
  348. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/CHANGELOG.md +1875 -0
  349. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/CLA.md +19 -0
  350. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/DEV-GUIDE-GENERAL-PUBLIC.md +949 -0
  351. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/LICENSE +52 -0
  352. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/README.md +238 -0
  353. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/SKILL.md +821 -0
  354. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/TECHNICAL.md +416 -0
  355. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/UNIVERSAL-INTERFACE.md +180 -0
  356. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-8-0.md +29 -0
  357. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-8-1.md +7 -0
  358. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-8-2.md +7 -0
  359. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-0.md +37 -0
  360. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-1.md +38 -0
  361. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-10.md +40 -0
  362. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-2.md +40 -0
  363. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-31.md +26 -0
  364. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-32.md +18 -0
  365. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-41.md +28 -0
  366. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-45.md +25 -0
  367. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-46.md +38 -0
  368. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-47.md +42 -0
  369. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-48.md +22 -0
  370. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-49.md +31 -0
  371. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-50.md +24 -0
  372. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-51.md +11 -0
  373. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-52.md +25 -0
  374. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-53.md +22 -0
  375. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-54.md +13 -0
  376. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-55.md +11 -0
  377. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-6.md +72 -0
  378. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-7.md +23 -0
  379. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/RELEASE-NOTES-v1-9-9.md +75 -0
  380. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/guide 2/DEV-GUIDE.md +487 -0
  381. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/_trash/guide 2/scripts/deploy-public.sh +152 -0
  382. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/package.json +27 -0
  383. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/scripts/SKILL-deploy-public.md +61 -0
  384. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/scripts/SKILL-post-merge-rename.md +47 -0
  385. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/scripts/deploy-public.sh +345 -0
  386. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/scripts/post-merge-rename.sh +210 -0
  387. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/scripts/publish-skill.sh +134 -0
  388. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/templates/global-claude-md.md +73 -0
  389. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/templates/repo-claude-md.template +24 -0
  390. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/deploy-public/LICENSE +52 -0
  391. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/deploy-public/README.md +31 -0
  392. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/deploy-public/SKILL.md +71 -0
  393. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/deploy-public/deploy-public.sh +264 -0
  394. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/deploy-public/package.json +9 -0
  395. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/ldm-jobs/LICENSE +52 -0
  396. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/ldm-jobs/README.md +46 -0
  397. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/ldm-jobs/backup.sh +16 -0
  398. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/ldm-jobs/branch-protect.sh +39 -0
  399. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/ldm-jobs/crystal-capture.sh +19 -0
  400. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/ldm-jobs/setup-shell.sh +27 -0
  401. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/ldm-jobs/visibility-audit.sh +27 -0
  402. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/post-merge-rename/LICENSE +52 -0
  403. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/post-merge-rename/README.md +29 -0
  404. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/post-merge-rename/SKILL.md +57 -0
  405. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/post-merge-rename/package.json +9 -0
  406. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/post-merge-rename/post-merge-rename.sh +122 -0
  407. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-branch-guard/INSTALL.md +41 -0
  408. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-branch-guard/guard.mjs +418 -0
  409. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-branch-guard/package.json +18 -0
  410. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-file-guard/CHANGELOG.md +6 -0
  411. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-file-guard/LICENSE +52 -0
  412. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-file-guard/README.md +113 -0
  413. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-file-guard/REFERENCE.md +86 -0
  414. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-file-guard/SKILL.md +105 -0
  415. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-file-guard/guard.mjs +161 -0
  416. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-file-guard/openclaw.plugin.json +8 -0
  417. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-file-guard/package.json +27 -0
  418. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-file-guard/test.sh +119 -0
  419. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-guard/LICENSE +52 -0
  420. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-guard/README.md +69 -0
  421. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-guard/SKILL.md +65 -0
  422. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-guard/cli.mjs +472 -0
  423. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-guard/core.mjs +310 -0
  424. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-guard/guard.mjs +146 -0
  425. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-guard/package.json +22 -0
  426. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/CHANGELOG.md +17 -0
  427. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/LICENSE +52 -0
  428. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/README.md +200 -0
  429. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/SKILL.md +111 -0
  430. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/cli/index.d.ts +15 -0
  431. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/cli/index.js +170 -0
  432. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/cli/index.js.map +1 -0
  433. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/core/detector.d.ts +12 -0
  434. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/core/detector.js +104 -0
  435. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/core/detector.js.map +1 -0
  436. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/core/index.d.ts +4 -0
  437. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/core/index.js +5 -0
  438. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/core/index.js.map +1 -0
  439. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/core/ledger.d.ts +49 -0
  440. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/core/ledger.js +72 -0
  441. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/core/ledger.js.map +1 -0
  442. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/core/reporter.d.ts +14 -0
  443. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/core/reporter.js +227 -0
  444. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/core/reporter.js.map +1 -0
  445. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/core/scanner.d.ts +39 -0
  446. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/core/scanner.js +325 -0
  447. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/dist/core/scanner.js.map +1 -0
  448. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/hooks/pre-pull.sh +55 -0
  449. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/hooks/pre-push.sh +51 -0
  450. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/mcp-server.mjs +119 -0
  451. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/package-lock.json +54 -0
  452. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/package.json +43 -0
  453. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/src/cli/index.ts +189 -0
  454. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/src/core/detector.ts +130 -0
  455. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/src/core/index.ts +4 -0
  456. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/src/core/ledger.ts +116 -0
  457. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/src/core/reporter.ts +255 -0
  458. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/src/core/scanner.ts +367 -0
  459. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-license-hook/tsconfig.json +16 -0
  460. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-readme-format/README.md +49 -0
  461. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-readme-format/SKILL.md +84 -0
  462. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-readme-format/format.mjs +597 -0
  463. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-readme-format/package.json +15 -0
  464. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-release/CHANGELOG.md +42 -0
  465. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-release/LICENSE +52 -0
  466. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-release/README.md +45 -0
  467. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-release/REFERENCE.md +100 -0
  468. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-release/SKILL.md +139 -0
  469. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-release/cli.js +175 -0
  470. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-release/core.mjs +1664 -0
  471. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-release/mcp-server.mjs +113 -0
  472. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-release/package.json +36 -0
  473. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-init/README.md +38 -0
  474. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-init/SKILL.md +77 -0
  475. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-init/init.mjs +148 -0
  476. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-init/package.json +11 -0
  477. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-init/templates/_sort/README.md +15 -0
  478. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-init/templates/_trash/README.md +16 -0
  479. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-init/templates/dev-updates/README.md +50 -0
  480. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-init/templates/product/notes/README.md +26 -0
  481. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-init/templates/product/plans-prds/roadmap.md +77 -0
  482. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-init/templates/product/plans-prds/todos/README.md +63 -0
  483. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-init/templates/product/product-ideas/README.md +24 -0
  484. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-init/templates/product/readme-first-product.md +128 -0
  485. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-init/templates/read-me-first.md +80 -0
  486. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-permissions-hook/LICENSE +52 -0
  487. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-permissions-hook/README.md +86 -0
  488. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-permissions-hook/SKILL.md +73 -0
  489. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-permissions-hook/cli.js +93 -0
  490. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-permissions-hook/core.mjs +122 -0
  491. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-permissions-hook/guard.mjs +64 -0
  492. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-permissions-hook/mcp-server.mjs +92 -0
  493. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-permissions-hook/openclaw.plugin.json +8 -0
  494. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repo-permissions-hook/package.json +31 -0
  495. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repos/LICENSE +52 -0
  496. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repos/README.md +77 -0
  497. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repos/SKILL.md +80 -0
  498. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repos/claude.mjs +248 -0
  499. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repos/cli.mjs +191 -0
  500. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repos/core.mjs +290 -0
  501. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repos/mcp-server.mjs +157 -0
  502. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-repos/package.json +34 -0
  503. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-universal-installer/CHANGELOG.md +57 -0
  504. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-universal-installer/LICENSE +52 -0
  505. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-universal-installer/README.md +81 -0
  506. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-universal-installer/REFERENCE.md +122 -0
  507. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-universal-installer/SKILL.md +87 -0
  508. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-universal-installer/SPEC.md +206 -0
  509. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-universal-installer/detect.mjs +130 -0
  510. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-universal-installer/examples/minimal/README.md +20 -0
  511. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-universal-installer/examples/minimal/SKILL.md +28 -0
  512. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-universal-installer/examples/minimal/cli.mjs +4 -0
  513. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-universal-installer/examples/minimal/core.mjs +8 -0
  514. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-universal-installer/examples/minimal/mcp-server.mjs +27 -0
  515. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-universal-installer/examples/minimal/package.json +12 -0
  516. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-universal-installer/install.js +930 -0
  517. package/.worktrees/wip-ai-devops-toolbox-private--cc-mini--dot-worktrees/tools/wip-universal-installer/package.json +32 -0
  518. package/CHANGELOG.md +45 -0
  519. package/DEV-GUIDE-GENERAL-PUBLIC.md +6 -6
  520. package/SKILL.md +1 -1
  521. package/_trash/RELEASE-NOTES-v1-9-56.md +42 -0
  522. package/package.json +1 -1
  523. package/tools/deploy-public/package.json +1 -1
  524. package/tools/post-merge-rename/package.json +1 -1
  525. package/tools/wip-branch-guard/guard.mjs +46 -5
  526. package/tools/wip-branch-guard/package.json +1 -1
  527. package/tools/wip-file-guard/package.json +1 -1
  528. package/tools/wip-license-guard/package.json +1 -1
  529. package/tools/wip-license-hook/package.json +1 -1
  530. package/tools/wip-readme-format/package.json +1 -1
  531. package/tools/wip-release/core.mjs +3 -3
  532. package/tools/wip-release/package.json +1 -1
  533. package/tools/wip-repo-init/package.json +1 -1
  534. package/tools/wip-repo-permissions-hook/package.json +1 -1
  535. package/tools/wip-repos/package.json +1 -1
  536. package/tools/wip-universal-installer/package.json +1 -1
@@ -0,0 +1,597 @@
1
+ #!/usr/bin/env node
2
+ // wip-readme-format: reformat a repo's README to follow the WIP Computer standard.
3
+ //
4
+ // Usage:
5
+ // wip-readme-format /path/to/repo # generate README-init-*.md section files
6
+ // wip-readme-format /path/to/repo --deploy # assemble sections into README.md + TECHNICAL.md
7
+ // wip-readme-format /path/to/repo --dry-run # preview without writing
8
+ // wip-readme-format /path/to/repo --check # validate existing README, exit 0/1
9
+ //
10
+ // Generated files:
11
+ // README-init-badges.md Org header + interface badges
12
+ // README-init-title.md Title + tagline
13
+ // README-init-teach.md "Teach Your AI" onboarding block
14
+ // README-init-features.md Features list
15
+ // README-init-coverage.md Interface coverage table (toolbox only)
16
+ // README-init-more-info.md Links to docs
17
+ // README-init-license.md License block
18
+ // README-init-technical.md Technical content extracted from old README
19
+ //
20
+ // Workflow (same pattern as release notes):
21
+ // 1. wip-readme-format /path/to/repo ... generates section files
22
+ // 2. Edit any section you want (e.g. README-init-license.md)
23
+ // 3. wip-readme-format /path/to/repo --deploy ... assembles + moves into place
24
+
25
+ import { existsSync, readFileSync, writeFileSync, mkdirSync, unlinkSync, readdirSync } from 'node:fs';
26
+ import { join, resolve, basename, dirname } from 'node:path';
27
+ import { fileURLToPath } from 'node:url';
28
+ import { detectInterfaces, detectToolbox } from '../wip-universal-installer/detect.mjs';
29
+
30
+ const __dirname = dirname(fileURLToPath(import.meta.url));
31
+
32
+ if (process.argv.includes('--version') || process.argv.includes('-v')) {
33
+ const pkg = JSON.parse(readFileSync(join(__dirname, 'package.json'), 'utf8'));
34
+ console.log(pkg.version);
35
+ process.exit(0);
36
+ }
37
+
38
+ const args = process.argv.slice(2);
39
+ const DRY_RUN = args.includes('--dry-run');
40
+ const CHECK = args.includes('--check');
41
+ const DEPLOY = args.includes('--deploy');
42
+ const target = args.find(a => !a.startsWith('--'));
43
+
44
+ function log(msg) { console.log(` ${msg}`); }
45
+ function ok(msg) { console.log(` \u2713 ${msg}`); }
46
+ function fail(msg) { console.error(` \u2717 ${msg}`); }
47
+ function warn(msg) { console.log(` ! ${msg}`); }
48
+
49
+ function readJSON(path) {
50
+ try { return JSON.parse(readFileSync(path, 'utf8')); } catch { return null; }
51
+ }
52
+
53
+ function readFile(path) {
54
+ try { return readFileSync(path, 'utf8'); } catch { return null; }
55
+ }
56
+
57
+ // Section order for assembly. "coverage" is optional (toolbox only).
58
+ // "technical" is separate (becomes TECHNICAL.md, not part of README).
59
+ const SECTION_ORDER = ['badges', 'title', 'teach', 'features', 'coverage', 'more-info', 'license'];
60
+
61
+ function initPath(repoPath, section) {
62
+ return join(repoPath, `README-init-${section}.md`);
63
+ }
64
+
65
+ // ── Badge generation ──
66
+
67
+ const BADGE_MAP = {
68
+ cli: { label: 'CLI', file: null },
69
+ module: { label: 'Module', file: null },
70
+ mcp: { label: 'MCP Server', file: 'mcp-server.mjs' },
71
+ openclaw: { label: 'OpenClaw Plugin', file: 'openclaw.plugin.json' },
72
+ skill: { label: 'Skill', file: 'SKILL.md' },
73
+ claudeCodeHook: { label: 'Claude Code Hook', file: 'guard.mjs' },
74
+ };
75
+
76
+ function generateBadges(interfaces, repoUrl) {
77
+ const badges = [];
78
+ for (const [key, info] of Object.entries(interfaces)) {
79
+ const meta = BADGE_MAP[key];
80
+ if (!meta) continue;
81
+ const label = meta.label.replace(/ /g, '_');
82
+ const badge = `https://img.shields.io/badge/interface-${label}-black`;
83
+ const link = meta.file && repoUrl
84
+ ? `${repoUrl}/blob/main/${meta.file}`
85
+ : repoUrl || '#';
86
+ badges.push(`[![${meta.label}](${badge})](${link})`);
87
+ }
88
+ return badges.join(' ');
89
+ }
90
+
91
+ // ── Teach Your AI block ──
92
+
93
+ function generateTeachBlock(toolName, repoUrl, skillPath) {
94
+ const skillUrl = repoUrl
95
+ ? `${repoUrl}/blob/main/${skillPath || 'SKILL.md'}`
96
+ : 'SKILL.md';
97
+ const installCmd = repoUrl
98
+ ? `wip-install ${repoUrl.replace('https://github.com/', '')} --dry-run`
99
+ : `wip-install /path/to/repo --dry-run`;
100
+
101
+ return `## Teach Your AI to Use ${toolName}
102
+
103
+ Open your AI and say:
104
+
105
+ \`\`\`
106
+ Read the SKILL.md at ${skillUrl.replace('https://', '')}.
107
+
108
+ Then explain to me:
109
+ 1. What are these tools?
110
+ 2. What do they do?
111
+ 3. What would they change about how we work together?
112
+
113
+ Then ask me:
114
+ - Do you have more questions?
115
+ - Do you want to install them?
116
+
117
+ If I say yes, run: ${installCmd}
118
+
119
+ Show me exactly what will change on my system. When I'm ready, I'll tell you
120
+ to install for real.
121
+ \`\`\`
122
+
123
+ Your agent will read the repo, explain everything, and do a dry-run install first so you can see exactly what changes before anything is written to your system.`;
124
+ }
125
+
126
+ // ── Interface coverage table (toolbox mode) ──
127
+
128
+ function extractSkillName(toolPath) {
129
+ const skillContent = readFile(join(toolPath, 'SKILL.md'));
130
+ if (!skillContent) return null;
131
+ const match = skillContent.match(/^---\s*\n[\s\S]*?^name:\s*(.+)/m);
132
+ return match ? match[1].trim() : null;
133
+ }
134
+
135
+ function generateInterfaceTable(repoPath, subTools) {
136
+ const rows = [];
137
+ let num = 0;
138
+ for (const tool of subTools) {
139
+ num++;
140
+ const { interfaces, pkg: toolPkg } = detectInterfaces(tool.path);
141
+ const skillName = extractSkillName(tool.path);
142
+ const name = skillName || (() => {
143
+ const rawName = toolPkg?.name?.replace(/^@\w+\//, '').replace(/^wip-/, '') || tool.name;
144
+ return rawName.split('-').map(w => {
145
+ const lower = w.toLowerCase();
146
+ if (['ai', 'api', 'cli', 'mcp', 'os', 'devops'].includes(lower)) return lower === 'devops' ? 'DevOps' : lower.toUpperCase();
147
+ return w.charAt(0).toUpperCase() + w.slice(1);
148
+ }).join(' ');
149
+ })();
150
+ const cli = interfaces.cli ? 'Y' : '';
151
+ const mod = interfaces.module ? 'Y' : '';
152
+ const mcp = interfaces.mcp ? 'Y' : '';
153
+ const oc = interfaces.openclaw ? 'Y' : '';
154
+ const skill = interfaces.skill ? 'Y' : '';
155
+ const hook = interfaces.claudeCodeHook ? 'Y' : '';
156
+ rows.push(`| ${num} | ${name} | ${cli} | ${mod} | ${mcp} | ${oc} | ${skill} | ${hook} |`);
157
+ }
158
+
159
+ return `## Interface Coverage
160
+
161
+ | # | Tool | CLI | Module | MCP | OC Plugin | Skill | CC Hook |
162
+ |---|------|-----|--------|-----|-----------|-------|---------|
163
+ ${rows.join('\n')}`;
164
+ }
165
+
166
+ // ── Features extraction ──
167
+
168
+ function extractToolboxFeatures(subTools) {
169
+ const features = [];
170
+ for (const tool of subTools) {
171
+ const pkg = readJSON(join(tool.path, 'package.json'));
172
+ const name = pkg?.name?.replace(/^@\w+\//, '').replace(/^wip-/, '') || tool.name;
173
+ const displayName = name.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ');
174
+ const desc = pkg?.description || '_No description_';
175
+ features.push({ name: displayName, description: desc });
176
+ }
177
+ return features;
178
+ }
179
+
180
+ // ── License block ──
181
+
182
+ function generateLicenseBlock(repoPath) {
183
+ const licenseGuard = readJSON(join(repoPath, '.license-guard.json'));
184
+ if (licenseGuard) {
185
+ return `## License
186
+
187
+ \`\`\`
188
+ MIT All CLI tools, MCP servers, skills, and hooks (use anywhere, no restrictions).
189
+ AGPLv3 Commercial redistribution, marketplace listings, or bundling into paid services.
190
+ \`\`\`
191
+
192
+ AGPLv3 for personal use is free. Commercial licenses available.`;
193
+ }
194
+
195
+ const license = readFile(join(repoPath, 'LICENSE'));
196
+ if (license) {
197
+ const pkg = readJSON(join(repoPath, 'package.json'));
198
+ return `## License
199
+
200
+ ${pkg?.license || 'See LICENSE file.'}`;
201
+ }
202
+
203
+ return `## License
204
+
205
+ _No license information found. Run \`wip-license-guard init\` to set up licensing._`;
206
+ }
207
+
208
+ // ── More Info section ──
209
+
210
+ function generateMoreInfo(repoPath, repoUrl) {
211
+ const links = [];
212
+
213
+ if (existsSync(join(repoPath, 'TECHNICAL.md')) || existsSync(initPath(repoPath, 'technical'))) {
214
+ const techLink = repoUrl ? `${repoUrl}/blob/main/TECHNICAL.md` : 'TECHNICAL.md';
215
+ links.push(`- [Technical Documentation](${repoUrl ? techLink : 'TECHNICAL.md'}) ... Source code locations, build steps, development setup, architecture details`);
216
+ }
217
+
218
+ links.push(`- [Universal Interface Spec](https://github.com/wipcomputer/wip-ai-devops-toolbox/blob/main/tools/wip-universal-installer/SPEC.md) ... The six interfaces every agent-native tool can ship`);
219
+
220
+ if (existsSync(join(repoPath, 'DEV-GUIDE-GENERAL-PUBLIC.md'))) {
221
+ links.push(`- [Dev Guide](DEV-GUIDE-GENERAL-PUBLIC.md) ... Best practices for AI-assisted development`);
222
+ }
223
+
224
+ return `## More Info
225
+
226
+ ${links.join('\n')}`;
227
+ }
228
+
229
+ // ── Existing README content extraction ──
230
+
231
+ function extractExistingContent(readmePath) {
232
+ const content = readFile(readmePath);
233
+ if (!content) return {};
234
+
235
+ const sections = {};
236
+ let currentSection = '_preamble';
237
+ let currentContent = [];
238
+
239
+ for (const line of content.split('\n')) {
240
+ const headingMatch = line.match(/^##\s+(.+)/);
241
+ if (headingMatch) {
242
+ sections[currentSection] = currentContent.join('\n').trim();
243
+ currentSection = headingMatch[1].trim().toLowerCase();
244
+ currentContent = [];
245
+ } else {
246
+ currentContent.push(line);
247
+ }
248
+ }
249
+ sections[currentSection] = currentContent.join('\n').trim();
250
+
251
+ return sections;
252
+ }
253
+
254
+ // ── Technical content detection ──
255
+
256
+ function isTechnicalContent(section) {
257
+ const techKeywords = [
258
+ 'architecture', 'api', 'endpoint', 'build', 'development setup',
259
+ 'configuration', 'schema', 'database', 'migration', 'deployment',
260
+ 'docker', 'environment variable', 'debugging',
261
+ ];
262
+ const lower = section.toLowerCase();
263
+ return techKeywords.some(k => lower.includes(k));
264
+ }
265
+
266
+ // ── Main ──
267
+
268
+ if (!target || target === '--help' || target === '-h') {
269
+ console.log('');
270
+ console.log(' wip-readme-format ... reformat a README to follow the WIP Computer standard');
271
+ console.log('');
272
+ console.log(' Usage:');
273
+ console.log(' wip-readme-format /path/to/repo generate README-init-*.md section files');
274
+ console.log(' wip-readme-format /path/to/repo --deploy assemble sections, back up old, move into place');
275
+ console.log(' wip-readme-format /path/to/repo --dry-run preview without writing');
276
+ console.log(' wip-readme-format /path/to/repo --check validate existing README');
277
+ console.log('');
278
+ console.log(' Workflow:');
279
+ console.log(' 1. wip-readme-format /path/to/repo ... generates section files');
280
+ console.log(' 2. Edit any section (e.g. README-init-license.md)');
281
+ console.log(' 3. wip-readme-format /path/to/repo --deploy ... assembles into README.md');
282
+ console.log('');
283
+ console.log(' Section files (in assembly order):');
284
+ console.log(' README-init-badges.md Org header + interface badges');
285
+ console.log(' README-init-title.md Title + tagline');
286
+ console.log(' README-init-teach.md "Teach Your AI" onboarding block');
287
+ console.log(' README-init-features.md Features list');
288
+ console.log(' README-init-coverage.md Interface coverage table (toolbox only)');
289
+ console.log(' README-init-more-info.md Links to docs');
290
+ console.log(' README-init-license.md License block + built-by line');
291
+ console.log(' README-init-technical.md Technical content (becomes TECHNICAL.md)');
292
+ console.log('');
293
+ process.exit(0);
294
+ }
295
+
296
+ const repoPath = resolve(target);
297
+ if (!existsSync(repoPath)) {
298
+ fail(`Path not found: ${repoPath}`);
299
+ process.exit(1);
300
+ }
301
+
302
+ const pkg = readJSON(join(repoPath, 'package.json'));
303
+ const { interfaces } = detectInterfaces(repoPath);
304
+ const subTools = detectToolbox(repoPath);
305
+ const isToolbox = subTools.length > 0;
306
+
307
+ // Determine repo URL from package.json
308
+ let repoUrl = null;
309
+ if (pkg?.repository?.url) {
310
+ repoUrl = pkg.repository.url
311
+ .replace('git+', '')
312
+ .replace('.git', '');
313
+ }
314
+
315
+ // Tool name: human-readable
316
+ const toolName = pkg?.name?.replace(/^@\w+\//, '').replace(/^wip-/, '') || basename(repoPath);
317
+ const ACRONYMS = ['ai', 'api', 'cli', 'mcp', 'os', 'pr', 'ui', 'url', 'devops'];
318
+ const displayName = toolName
319
+ .split('-')
320
+ .map(w => {
321
+ const lower = w.toLowerCase();
322
+ if (ACRONYMS.includes(lower)) return lower === 'devops' ? 'DevOps' : lower.toUpperCase();
323
+ return w.charAt(0).toUpperCase() + w.slice(1);
324
+ })
325
+ .join(' ');
326
+
327
+ const tagline = pkg?.description || '_What it solves in human words. Not what it is technically._';
328
+
329
+ const readmePath = join(repoPath, 'README.md');
330
+ const technicalPath = join(repoPath, 'TECHNICAL.md');
331
+ const existing = extractExistingContent(readmePath);
332
+
333
+ // ── Deploy mode ──
334
+
335
+ if (DEPLOY) {
336
+ console.log('');
337
+ console.log(' wip-readme-format --deploy');
338
+ console.log(` Target: ${repoPath}`);
339
+ console.log(` ${'─'.repeat(40)}`);
340
+
341
+ // Check that at least the badges section exists
342
+ if (!existsSync(initPath(repoPath, 'badges'))) {
343
+ fail('No README-init-*.md files found. Run wip-readme-format first to generate them.');
344
+ process.exit(1);
345
+ }
346
+
347
+ // Safety: init files must be reviewed (committed or modified) before deploy.
348
+ // If all init files are untracked (just generated, never reviewed), block.
349
+ try {
350
+ const { execSync } = await import('node:child_process');
351
+ const initFiles = readdirSync(repoPath).filter(f => f.startsWith('README-init-'));
352
+ const allUntracked = initFiles.every(f => {
353
+ try {
354
+ const status = execSync(`git status --porcelain "${f}"`, { cwd: repoPath, encoding: 'utf8' }).trim();
355
+ return status.startsWith('??');
356
+ } catch { return false; }
357
+ });
358
+ if (allUntracked && initFiles.length > 0) {
359
+ fail('Init files have not been reviewed. They are all untracked (just generated).');
360
+ console.log(' Review the README-init-*.md files, edit as needed, then git add them before deploying.');
361
+ console.log(' Or commit them first so there is a review trail.');
362
+ process.exit(1);
363
+ }
364
+ } catch {}
365
+
366
+
367
+ const date = new Date().toISOString().slice(0, 10);
368
+ const aiTrash = join(repoPath, 'ai', '_trash');
369
+
370
+ // Back up existing README.md
371
+ const oldReadme = readFile(readmePath);
372
+ if (oldReadme) {
373
+ if (!existsSync(aiTrash)) mkdirSync(aiTrash, { recursive: true });
374
+ writeFileSync(join(aiTrash, `README--before-format--${date}.md`), oldReadme);
375
+ ok('Backed up README.md to ai/_trash/');
376
+ }
377
+
378
+ // Back up existing TECHNICAL.md
379
+ const oldTech = readFile(technicalPath);
380
+ if (oldTech) {
381
+ if (!existsSync(aiTrash)) mkdirSync(aiTrash, { recursive: true });
382
+ writeFileSync(join(aiTrash, `TECHNICAL--before-format--${date}.md`), oldTech);
383
+ ok('Backed up TECHNICAL.md to ai/_trash/');
384
+ }
385
+
386
+ // Assemble README from sections in order
387
+ const readmeParts = [];
388
+ for (const section of SECTION_ORDER) {
389
+ const sectionPath = initPath(repoPath, section);
390
+ const content = readFile(sectionPath);
391
+ if (content) {
392
+ readmeParts.push(content.trimEnd());
393
+ unlinkSync(sectionPath);
394
+ ok(` ${section} -> README.md`);
395
+ }
396
+ }
397
+
398
+ if (readmeParts.length === 0) {
399
+ fail('No section files found to assemble.');
400
+ process.exit(1);
401
+ }
402
+
403
+ writeFileSync(readmePath, readmeParts.join('\n\n') + '\n');
404
+ ok('Assembled README.md');
405
+
406
+ // Move technical -> TECHNICAL.md
407
+ const techPath = initPath(repoPath, 'technical');
408
+ if (existsSync(techPath)) {
409
+ const techContent = readFileSync(techPath, 'utf8');
410
+ writeFileSync(technicalPath, techContent);
411
+ unlinkSync(techPath);
412
+ ok('README-init-technical.md -> TECHNICAL.md');
413
+ }
414
+
415
+ console.log(` ${'─'.repeat(40)}`);
416
+ ok('Deployed. Old files in ai/_trash/.\n');
417
+ process.exit(0);
418
+ }
419
+
420
+ // ── Check mode ──
421
+
422
+ if (CHECK) {
423
+ console.log('');
424
+ console.log(' wip-readme-format --check');
425
+ console.log(` Target: ${repoPath}`);
426
+ console.log(` ${'─'.repeat(40)}`);
427
+
428
+ const content = readFile(readmePath);
429
+ if (!content) {
430
+ fail('No README.md found');
431
+ process.exit(1);
432
+ }
433
+
434
+ let passed = true;
435
+ const required = ['teach your ai', 'features', 'more info', 'license'];
436
+ const sectionNames = Object.keys(existing).filter(k => k !== '_preamble');
437
+
438
+ for (const section of required) {
439
+ const found = sectionNames.some(s => s.includes(section));
440
+ if (found) {
441
+ ok(`Has "${section}" section`);
442
+ } else {
443
+ fail(`Missing "${section}" section`);
444
+ passed = false;
445
+ }
446
+ }
447
+
448
+ if (content.includes('img.shields.io/badge/interface')) {
449
+ ok('Has interface badges');
450
+ } else {
451
+ fail('Missing interface badges');
452
+ passed = false;
453
+ }
454
+
455
+ if (isToolbox) {
456
+ if (content.includes('Interface Coverage') || content.includes('interface coverage')) {
457
+ ok('Has interface coverage table');
458
+ } else {
459
+ fail('Missing interface coverage table (toolbox repo)');
460
+ passed = false;
461
+ }
462
+ }
463
+
464
+ // Check for stale staging files
465
+ const stale = SECTION_ORDER.concat(['technical']).filter(s => existsSync(initPath(repoPath, s)));
466
+ if (stale.length > 0) {
467
+ warn(`${stale.length} README-init-*.md file(s) found. Run --deploy to assemble.`);
468
+ }
469
+
470
+ console.log(` ${'─'.repeat(40)}`);
471
+ if (passed) {
472
+ ok('README follows the standard');
473
+ process.exit(0);
474
+ } else {
475
+ fail('README does not follow the standard');
476
+ process.exit(1);
477
+ }
478
+ }
479
+
480
+ // ── Generate mode (default) ──
481
+
482
+ console.log('');
483
+ console.log(` wip-readme-format${DRY_RUN ? ' (dry run)' : ''}`);
484
+ console.log(` Target: ${repoPath}`);
485
+ console.log(` ${'─'.repeat(40)}`);
486
+ log(`Package: ${pkg?.name || 'unknown'}`);
487
+ log(`Interfaces: ${Object.keys(interfaces).join(', ') || 'none'}`);
488
+ if (isToolbox) log(`Toolbox: ${subTools.length} sub-tools`);
489
+ console.log('');
490
+
491
+ // ── Build each section ──
492
+
493
+ const sections = {};
494
+
495
+ // 1. Badges
496
+ let allInterfaces = { ...interfaces };
497
+ if (isToolbox) {
498
+ for (const tool of subTools) {
499
+ const { interfaces: subIfaces } = detectInterfaces(tool.path);
500
+ for (const key of Object.keys(subIfaces)) {
501
+ if (!allInterfaces[key]) allInterfaces[key] = subIfaces[key];
502
+ }
503
+ }
504
+ }
505
+ const badges = generateBadges(allInterfaces, repoUrl);
506
+ const specBadge = `[![Universal Interface Spec](https://img.shields.io/badge/Universal_Interface_Spec-black?style=flat&color=black)](https://github.com/wipcomputer/wip-ai-devops-toolbox/blob/main/tools/wip-universal-installer/SPEC.md)`;
507
+ const badgeLines = ['###### WIP Computer', ''];
508
+ if (badges) badgeLines.push(badges + ' ' + specBadge);
509
+ else badgeLines.push(specBadge);
510
+ sections.badges = badgeLines.join('\n');
511
+
512
+ // 2. Title + tagline
513
+ sections.title = `# ${displayName}\n\n${tagline}`;
514
+
515
+ // 3. Teach Your AI
516
+ const skillPath = interfaces.skill ? 'SKILL.md' : null;
517
+ if (skillPath || isToolbox) {
518
+ sections.teach = generateTeachBlock(displayName, repoUrl, skillPath);
519
+ }
520
+
521
+ // 4. Features
522
+ const featureKeys = Object.keys(existing).filter(k =>
523
+ k.includes('features') || k.includes('feature')
524
+ );
525
+ const existingFeatures = featureKeys.length > 0 ? existing[featureKeys[0]] : null;
526
+
527
+ if (existingFeatures) {
528
+ sections.features = `## Features\n\n${existingFeatures}`;
529
+ } else if (isToolbox) {
530
+ const toolFeatures = extractToolboxFeatures(subTools);
531
+ const lines = ['## Features', ''];
532
+ for (const f of toolFeatures) {
533
+ lines.push(`**${f.name}**`);
534
+ lines.push(`- ${f.description}`, '');
535
+ }
536
+ sections.features = lines.join('\n').trimEnd();
537
+ } else {
538
+ sections.features = `## Features\n\n_Describe what this tool does for the user. Human-readable. Name, description, stability tag._`;
539
+ }
540
+
541
+ // 5. Interface Coverage (toolbox only)
542
+ if (isToolbox) {
543
+ sections.coverage = generateInterfaceTable(repoPath, subTools);
544
+ }
545
+
546
+ // 6. More Info
547
+ sections['more-info'] = generateMoreInfo(repoPath, repoUrl);
548
+
549
+ // 7. License + built-by
550
+ sections.license = generateLicenseBlock(repoPath) +
551
+ '\n\nBuilt by Parker Todd Brooks, Lēsa (OpenClaw, Claude Opus 4.6), Claude Code (Claude Opus 4.6).';
552
+
553
+ // 8. Technical (separate file, becomes TECHNICAL.md)
554
+ const techSections = [];
555
+ for (const [name, content] of Object.entries(existing)) {
556
+ if (name === '_preamble') continue;
557
+ if (isTechnicalContent(content)) {
558
+ techSections.push(`## ${name.charAt(0).toUpperCase() + name.slice(1)}\n\n${content}`);
559
+ }
560
+ }
561
+ if (techSections.length > 0) {
562
+ const existingTech = readFile(technicalPath) || `# ${displayName} ... Technical Documentation\n\n`;
563
+ sections.technical = existingTech.trimEnd() + '\n\n' + techSections.join('\n\n');
564
+ }
565
+
566
+ // ── Output ──
567
+
568
+ if (DRY_RUN) {
569
+ for (const section of SECTION_ORDER) {
570
+ if (!sections[section]) continue;
571
+ console.log(` ── README-init-${section}.md ──\n`);
572
+ console.log(sections[section]);
573
+ console.log('');
574
+ }
575
+ if (sections.technical) {
576
+ console.log(` ── README-init-technical.md ──\n`);
577
+ console.log(` (${techSections.length} section(s) extracted from old README)`);
578
+ }
579
+ console.log(`\n ${'─'.repeat(40)}`);
580
+ console.log(' Dry run complete. No files written.\n');
581
+ } else {
582
+ let count = 0;
583
+ for (const section of SECTION_ORDER) {
584
+ if (!sections[section]) continue;
585
+ writeFileSync(initPath(repoPath, section), sections[section] + '\n');
586
+ ok(`README-init-${section}.md`);
587
+ count++;
588
+ }
589
+ if (sections.technical) {
590
+ writeFileSync(initPath(repoPath, 'technical'), sections.technical + '\n');
591
+ ok('README-init-technical.md');
592
+ count++;
593
+ }
594
+
595
+ console.log(` ${'─'.repeat(40)}`);
596
+ ok(`${count} section files written. Edit any, then run with --deploy.\n`);
597
+ }
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "@wipcomputer/wip-readme-format",
3
+ "version": "1.9.15",
4
+ "description": "Reformat any repo's README to follow the WIP Computer standard. Agent-first, human-readable.",
5
+ "type": "module",
6
+ "bin": {
7
+ "wip-readme-format": "./format.mjs"
8
+ },
9
+ "license": "MIT AND AGPL-3.0-or-later",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "git+https://github.com/wipcomputer/wip-ai-devops-toolbox.git",
13
+ "directory": "tools/wip-readme-format"
14
+ }
15
+ }
@@ -0,0 +1,42 @@
1
+ # Changelog
2
+
3
+
4
+
5
+
6
+ ## 1.2.4 (2026-02-21)
7
+
8
+ Align description across all sources
9
+
10
+ ## 1.2.3 (2026-02-21)
11
+
12
+ Fix npm bin entry: remove ./ prefix so npx wip-release works globally
13
+
14
+ ## 1.2.2 (2026-02-21)
15
+
16
+ Fix ClawHub display name and slug detection. Harden command injection fix.
17
+
18
+ ## 1.2.0 (2026-02-21)
19
+
20
+ Add ClawHub publish as step 9 in release pipeline. Fix command injection by replacing execSync with execFileSync argument arrays. Declare required binaries and secrets in SKILL.md metadata.
21
+
22
+ ## 1.1.1 (2026-02-21)
23
+
24
+ Fix npm bin entry: rename cli.mjs to cli.js
25
+
26
+ ## 1.1.0 (2026-02-21)
27
+
28
+ Rich release notes, agent-driven install prompt, REFERENCE.md
29
+
30
+ ## 1.0.0 (2026-02-21)
31
+
32
+ Initial release. Local release pipeline tool.
33
+
34
+ - `release()` ... full pipeline: bump, changelog, skill sync, commit, tag, publish
35
+ - `detectCurrentVersion()` ... read version from package.json
36
+ - `syncSkillVersion()` ... update SKILL.md frontmatter
37
+ - `updateChangelog()` ... prepend version entry
38
+ - `publishNpm()` ... npm publish via 1Password
39
+ - `publishGitHubPackages()` ... GitHub Packages publish
40
+ - `createGitHubRelease()` ... gh release create
41
+
42
+ CLI: `wip-release patch|minor|major [--notes --dry-run --no-publish]`