@mc-and-his-agents/loom-installer 0.1.1

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 (856) hide show
  1. package/README.md +47 -0
  2. package/dist/src/claude.js +157 -0
  3. package/dist/src/cli.js +35 -0
  4. package/dist/src/codex.js +191 -0
  5. package/dist/src/index.js +175 -0
  6. package/dist/src/payload.js +42 -0
  7. package/dist/src/types.js +1 -0
  8. package/dist/src/utils.js +84 -0
  9. package/dist/test/installer.test.js +167 -0
  10. package/package.json +46 -0
  11. package/payload/manifest.json +4294 -0
  12. package/payload/plugin/loom/.codex-plugin/plugin.json +37 -0
  13. package/payload/plugin/loom/skills/README.md +128 -0
  14. package/payload/plugin/loom/skills/distribution-and-adapter-contract.md +359 -0
  15. package/payload/plugin/loom/skills/install-layout.json +91 -0
  16. package/payload/plugin/loom/skills/loom-adopt/SKILL.md +80 -0
  17. package/payload/plugin/loom/skills/loom-adopt/agents/openai.yaml +4 -0
  18. package/payload/plugin/loom/skills/loom-adopt/contract.json +45 -0
  19. package/payload/plugin/loom/skills/loom-adopt/references/input-signals.md +17 -0
  20. package/payload/plugin/loom/skills/loom-adopt/references/output-contract.md +17 -0
  21. package/payload/plugin/loom/skills/loom-adopt/scripts/loom-adopt.py +14 -0
  22. package/payload/plugin/loom/skills/loom-handoff/SKILL.md +23 -0
  23. package/payload/plugin/loom/skills/loom-handoff/agents/openai.yaml +4 -0
  24. package/payload/plugin/loom/skills/loom-handoff/contract.json +53 -0
  25. package/payload/plugin/loom/skills/loom-handoff/references/input-signals.md +7 -0
  26. package/payload/plugin/loom/skills/loom-handoff/references/output-contract.md +42 -0
  27. package/payload/plugin/loom/skills/loom-handoff/scripts/loom-handoff.py +14 -0
  28. package/payload/plugin/loom/skills/loom-init/SKILL.md +246 -0
  29. package/payload/plugin/loom/skills/loom-init/agents/openai.yaml +4 -0
  30. package/payload/plugin/loom/skills/loom-init/contract.json +76 -0
  31. package/payload/plugin/loom/skills/loom-init/references/input-signals.md +16 -0
  32. package/payload/plugin/loom/skills/loom-init/references/intake-signals.md +155 -0
  33. package/payload/plugin/loom/skills/loom-init/references/output-contract.md +208 -0
  34. package/payload/plugin/loom/skills/loom-init/scripts/loom-init.py +14 -0
  35. package/payload/plugin/loom/skills/loom-merge-ready/SKILL.md +23 -0
  36. package/payload/plugin/loom/skills/loom-merge-ready/agents/openai.yaml +4 -0
  37. package/payload/plugin/loom/skills/loom-merge-ready/contract.json +49 -0
  38. package/payload/plugin/loom/skills/loom-merge-ready/references/input-signals.md +7 -0
  39. package/payload/plugin/loom/skills/loom-merge-ready/references/output-contract.md +34 -0
  40. package/payload/plugin/loom/skills/loom-merge-ready/scripts/loom-merge-ready.py +14 -0
  41. package/payload/plugin/loom/skills/loom-pre-review/SKILL.md +69 -0
  42. package/payload/plugin/loom/skills/loom-pre-review/agents/openai.yaml +4 -0
  43. package/payload/plugin/loom/skills/loom-pre-review/contract.json +41 -0
  44. package/payload/plugin/loom/skills/loom-pre-review/references/input-signals.md +14 -0
  45. package/payload/plugin/loom/skills/loom-pre-review/references/output-contract.md +20 -0
  46. package/payload/plugin/loom/skills/loom-pre-review/scripts/loom-pre-review.py +14 -0
  47. package/payload/plugin/loom/skills/loom-resume/SKILL.md +72 -0
  48. package/payload/plugin/loom/skills/loom-resume/agents/openai.yaml +4 -0
  49. package/payload/plugin/loom/skills/loom-resume/contract.json +47 -0
  50. package/payload/plugin/loom/skills/loom-resume/references/input-signals.md +15 -0
  51. package/payload/plugin/loom/skills/loom-resume/references/output-contract.md +58 -0
  52. package/payload/plugin/loom/skills/loom-resume/scripts/loom-resume.py +14 -0
  53. package/payload/plugin/loom/skills/loom-retire/SKILL.md +26 -0
  54. package/payload/plugin/loom/skills/loom-retire/agents/openai.yaml +4 -0
  55. package/payload/plugin/loom/skills/loom-retire/contract.json +41 -0
  56. package/payload/plugin/loom/skills/loom-retire/references/input-signals.md +7 -0
  57. package/payload/plugin/loom/skills/loom-retire/references/output-contract.md +13 -0
  58. package/payload/plugin/loom/skills/loom-retire/scripts/loom-retire.py +14 -0
  59. package/payload/plugin/loom/skills/loom-review/SKILL.md +95 -0
  60. package/payload/plugin/loom/skills/loom-review/agents/openai.yaml +4 -0
  61. package/payload/plugin/loom/skills/loom-review/contract.json +49 -0
  62. package/payload/plugin/loom/skills/loom-review/references/input-signals.md +15 -0
  63. package/payload/plugin/loom/skills/loom-review/references/output-contract.md +57 -0
  64. package/payload/plugin/loom/skills/loom-review/scripts/loom-review.py +14 -0
  65. package/payload/plugin/loom/skills/registry.json +64 -0
  66. package/payload/plugin/loom/skills/route-matrix.md +63 -0
  67. package/payload/plugin/loom/skills/shared/assets/github/PULL_REQUEST_TEMPLATE.md +22 -0
  68. package/payload/plugin/loom/skills/shared/assets/review/loom-review-result-schema.json +93 -0
  69. package/payload/plugin/loom/skills/shared/assets/templates/scaffold/plan.md +51 -0
  70. package/payload/plugin/loom/skills/shared/assets/templates/scaffold/spec.md +48 -0
  71. package/payload/plugin/loom/skills/shared/references/adoption/deep-existing-repo-default.md +64 -0
  72. package/payload/plugin/loom/skills/shared/references/adoption/lightweight-retrofit-default.md +71 -0
  73. package/payload/plugin/loom/skills/shared/references/adoption/routing-and-checkpoints.md +88 -0
  74. package/payload/plugin/loom/skills/shared/references/governance/host-object-taxonomy.md +148 -0
  75. package/payload/plugin/loom/skills/shared/references/governance/issue-model.md +127 -0
  76. package/payload/plugin/loom/skills/shared/references/governance/maturity-and-closing.md +69 -0
  77. package/payload/plugin/loom/skills/shared/references/governance/principles.md +180 -0
  78. package/payload/plugin/loom/skills/shared/references/governance/review-model.md +109 -0
  79. package/payload/plugin/loom/skills/shared/references/governance/state-machine.md +163 -0
  80. package/payload/plugin/loom/skills/shared/references/governance/truth-and-sync-boundary.md +161 -0
  81. package/payload/plugin/loom/skills/shared/references/harness/automation-frontload.md +139 -0
  82. package/payload/plugin/loom/skills/shared/references/harness/closeout-gate.md +97 -0
  83. package/payload/plugin/loom/skills/shared/references/harness/execution-chain.md +56 -0
  84. package/payload/plugin/loom/skills/shared/references/harness/execution-context.md +71 -0
  85. package/payload/plugin/loom/skills/shared/references/harness/fact-chain-contract.md +160 -0
  86. package/payload/plugin/loom/skills/shared/references/harness/host-action-contract.md +128 -0
  87. package/payload/plugin/loom/skills/shared/references/harness/host-issue-binding.md +90 -0
  88. package/payload/plugin/loom/skills/shared/references/harness/host-lifecycle-boundary.md +56 -0
  89. package/payload/plugin/loom/skills/shared/references/harness/merge-checkpoint.md +95 -0
  90. package/payload/plugin/loom/skills/shared/references/harness/reconciliation-audit.md +64 -0
  91. package/payload/plugin/loom/skills/shared/references/harness/recovery-model.md +101 -0
  92. package/payload/plugin/loom/skills/shared/references/harness/review-execution.md +99 -0
  93. package/payload/plugin/loom/skills/shared/references/harness/runtime-state.md +103 -0
  94. package/payload/plugin/loom/skills/shared/references/harness/status-surface.md +121 -0
  95. package/payload/plugin/loom/skills/shared/references/harness/work-item-contract.md +104 -0
  96. package/payload/plugin/loom/skills/shared/references/harness/workspace-and-purity.md +73 -0
  97. package/payload/plugin/loom/skills/shared/references/harness/workspace-model.md +56 -0
  98. package/payload/plugin/loom/skills/shared/references/templates/pull-request.md +44 -0
  99. package/payload/plugin/loom/skills/shared/references/templates/review-record.md +35 -0
  100. package/payload/plugin/loom/skills/shared/references/templates/spec-suite.md +57 -0
  101. package/payload/plugin/loom/skills/shared/scripts/fact_chain_support.py +509 -0
  102. package/payload/plugin/loom/skills/shared/scripts/governance_surface.py +869 -0
  103. package/payload/plugin/loom/skills/shared/scripts/loom_check.py +4724 -0
  104. package/payload/plugin/loom/skills/shared/scripts/loom_flow.py +5390 -0
  105. package/payload/plugin/loom/skills/shared/scripts/loom_init.py +1966 -0
  106. package/payload/plugin/loom/skills/shared/scripts/runtime_paths.py +116 -0
  107. package/payload/plugin/loom/skills/shared/scripts/runtime_state.py +405 -0
  108. package/payload/plugin/loom/skills/upgrade-contract.json +29 -0
  109. package/payload/skills/loom-adopt/.loom-runtime/install-layout.json +77 -0
  110. package/payload/skills/loom-adopt/.loom-runtime/loom-adopt/SKILL.md +80 -0
  111. package/payload/skills/loom-adopt/.loom-runtime/loom-adopt/agents/openai.yaml +4 -0
  112. package/payload/skills/loom-adopt/.loom-runtime/loom-adopt/contract.json +45 -0
  113. package/payload/skills/loom-adopt/.loom-runtime/loom-adopt/references/input-signals.md +17 -0
  114. package/payload/skills/loom-adopt/.loom-runtime/loom-adopt/references/output-contract.md +17 -0
  115. package/payload/skills/loom-adopt/.loom-runtime/loom-adopt/scripts/loom-adopt.py +14 -0
  116. package/payload/skills/loom-adopt/.loom-runtime/loom-init/references/input-signals.md +16 -0
  117. package/payload/skills/loom-adopt/.loom-runtime/loom-init/references/intake-signals.md +155 -0
  118. package/payload/skills/loom-adopt/.loom-runtime/loom-init/references/output-contract.md +208 -0
  119. package/payload/skills/loom-adopt/.loom-runtime/registry.json +15 -0
  120. package/payload/skills/loom-adopt/.loom-runtime/route-matrix.md +63 -0
  121. package/payload/skills/loom-adopt/.loom-runtime/shared/assets/github/PULL_REQUEST_TEMPLATE.md +22 -0
  122. package/payload/skills/loom-adopt/.loom-runtime/shared/assets/review/loom-review-result-schema.json +93 -0
  123. package/payload/skills/loom-adopt/.loom-runtime/shared/assets/templates/scaffold/plan.md +51 -0
  124. package/payload/skills/loom-adopt/.loom-runtime/shared/assets/templates/scaffold/spec.md +48 -0
  125. package/payload/skills/loom-adopt/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +64 -0
  126. package/payload/skills/loom-adopt/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +71 -0
  127. package/payload/skills/loom-adopt/.loom-runtime/shared/references/adoption/routing-and-checkpoints.md +88 -0
  128. package/payload/skills/loom-adopt/.loom-runtime/shared/references/governance/host-object-taxonomy.md +148 -0
  129. package/payload/skills/loom-adopt/.loom-runtime/shared/references/governance/issue-model.md +127 -0
  130. package/payload/skills/loom-adopt/.loom-runtime/shared/references/governance/maturity-and-closing.md +69 -0
  131. package/payload/skills/loom-adopt/.loom-runtime/shared/references/governance/principles.md +180 -0
  132. package/payload/skills/loom-adopt/.loom-runtime/shared/references/governance/review-model.md +109 -0
  133. package/payload/skills/loom-adopt/.loom-runtime/shared/references/governance/state-machine.md +163 -0
  134. package/payload/skills/loom-adopt/.loom-runtime/shared/references/governance/truth-and-sync-boundary.md +161 -0
  135. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/automation-frontload.md +139 -0
  136. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/closeout-gate.md +97 -0
  137. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/execution-chain.md +56 -0
  138. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/execution-context.md +71 -0
  139. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/fact-chain-contract.md +160 -0
  140. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/host-action-contract.md +128 -0
  141. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/host-issue-binding.md +90 -0
  142. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/host-lifecycle-boundary.md +56 -0
  143. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/merge-checkpoint.md +95 -0
  144. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/reconciliation-audit.md +64 -0
  145. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/recovery-model.md +101 -0
  146. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/review-execution.md +99 -0
  147. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/runtime-state.md +103 -0
  148. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/status-surface.md +121 -0
  149. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/work-item-contract.md +104 -0
  150. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/workspace-and-purity.md +73 -0
  151. package/payload/skills/loom-adopt/.loom-runtime/shared/references/harness/workspace-model.md +56 -0
  152. package/payload/skills/loom-adopt/.loom-runtime/shared/references/templates/pull-request.md +44 -0
  153. package/payload/skills/loom-adopt/.loom-runtime/shared/references/templates/review-record.md +35 -0
  154. package/payload/skills/loom-adopt/.loom-runtime/shared/references/templates/spec-suite.md +57 -0
  155. package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/fact_chain_support.py +509 -0
  156. package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/governance_surface.py +879 -0
  157. package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/loom_check.py +4683 -0
  158. package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/loom_flow.py +5390 -0
  159. package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/loom_init.py +1966 -0
  160. package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/runtime_paths.py +116 -0
  161. package/payload/skills/loom-adopt/.loom-runtime/shared/scripts/runtime_state.py +405 -0
  162. package/payload/skills/loom-adopt/.loom-runtime/upgrade-contract.json +29 -0
  163. package/payload/skills/loom-adopt/SKILL.md +80 -0
  164. package/payload/skills/loom-adopt/agents/openai.yaml +4 -0
  165. package/payload/skills/loom-adopt/contract.json +45 -0
  166. package/payload/skills/loom-adopt/references/input-signals.md +17 -0
  167. package/payload/skills/loom-adopt/references/loom-init/input-signals.md +16 -0
  168. package/payload/skills/loom-adopt/references/loom-init/intake-signals.md +155 -0
  169. package/payload/skills/loom-adopt/references/loom-init/output-contract.md +208 -0
  170. package/payload/skills/loom-adopt/references/output-contract.md +17 -0
  171. package/payload/skills/loom-adopt/references/route-matrix.md +63 -0
  172. package/payload/skills/loom-adopt/references/shared/adoption/deep-existing-repo-default.md +64 -0
  173. package/payload/skills/loom-adopt/references/shared/adoption/lightweight-retrofit-default.md +71 -0
  174. package/payload/skills/loom-adopt/references/shared/adoption/routing-and-checkpoints.md +88 -0
  175. package/payload/skills/loom-adopt/references/shared/governance/host-object-taxonomy.md +148 -0
  176. package/payload/skills/loom-adopt/references/shared/governance/issue-model.md +127 -0
  177. package/payload/skills/loom-adopt/references/shared/governance/maturity-and-closing.md +69 -0
  178. package/payload/skills/loom-adopt/references/shared/governance/principles.md +180 -0
  179. package/payload/skills/loom-adopt/references/shared/governance/review-model.md +109 -0
  180. package/payload/skills/loom-adopt/references/shared/governance/state-machine.md +163 -0
  181. package/payload/skills/loom-adopt/references/shared/governance/truth-and-sync-boundary.md +161 -0
  182. package/payload/skills/loom-adopt/references/shared/harness/automation-frontload.md +139 -0
  183. package/payload/skills/loom-adopt/references/shared/harness/closeout-gate.md +97 -0
  184. package/payload/skills/loom-adopt/references/shared/harness/execution-chain.md +56 -0
  185. package/payload/skills/loom-adopt/references/shared/harness/execution-context.md +71 -0
  186. package/payload/skills/loom-adopt/references/shared/harness/fact-chain-contract.md +160 -0
  187. package/payload/skills/loom-adopt/references/shared/harness/host-action-contract.md +128 -0
  188. package/payload/skills/loom-adopt/references/shared/harness/host-issue-binding.md +90 -0
  189. package/payload/skills/loom-adopt/references/shared/harness/host-lifecycle-boundary.md +56 -0
  190. package/payload/skills/loom-adopt/references/shared/harness/merge-checkpoint.md +95 -0
  191. package/payload/skills/loom-adopt/references/shared/harness/reconciliation-audit.md +64 -0
  192. package/payload/skills/loom-adopt/references/shared/harness/recovery-model.md +101 -0
  193. package/payload/skills/loom-adopt/references/shared/harness/review-execution.md +99 -0
  194. package/payload/skills/loom-adopt/references/shared/harness/runtime-state.md +103 -0
  195. package/payload/skills/loom-adopt/references/shared/harness/status-surface.md +121 -0
  196. package/payload/skills/loom-adopt/references/shared/harness/work-item-contract.md +104 -0
  197. package/payload/skills/loom-adopt/references/shared/harness/workspace-and-purity.md +73 -0
  198. package/payload/skills/loom-adopt/references/shared/harness/workspace-model.md +56 -0
  199. package/payload/skills/loom-adopt/references/shared/templates/pull-request.md +44 -0
  200. package/payload/skills/loom-adopt/references/shared/templates/review-record.md +35 -0
  201. package/payload/skills/loom-adopt/references/shared/templates/spec-suite.md +57 -0
  202. package/payload/skills/loom-adopt/scripts/loom-adopt.py +16 -0
  203. package/payload/skills/loom-handoff/.loom-runtime/install-layout.json +77 -0
  204. package/payload/skills/loom-handoff/.loom-runtime/loom-handoff/SKILL.md +23 -0
  205. package/payload/skills/loom-handoff/.loom-runtime/loom-handoff/agents/openai.yaml +4 -0
  206. package/payload/skills/loom-handoff/.loom-runtime/loom-handoff/contract.json +53 -0
  207. package/payload/skills/loom-handoff/.loom-runtime/loom-handoff/references/input-signals.md +7 -0
  208. package/payload/skills/loom-handoff/.loom-runtime/loom-handoff/references/output-contract.md +42 -0
  209. package/payload/skills/loom-handoff/.loom-runtime/loom-handoff/scripts/loom-handoff.py +14 -0
  210. package/payload/skills/loom-handoff/.loom-runtime/loom-init/references/input-signals.md +16 -0
  211. package/payload/skills/loom-handoff/.loom-runtime/loom-init/references/intake-signals.md +155 -0
  212. package/payload/skills/loom-handoff/.loom-runtime/loom-init/references/output-contract.md +208 -0
  213. package/payload/skills/loom-handoff/.loom-runtime/registry.json +15 -0
  214. package/payload/skills/loom-handoff/.loom-runtime/route-matrix.md +63 -0
  215. package/payload/skills/loom-handoff/.loom-runtime/shared/assets/github/PULL_REQUEST_TEMPLATE.md +22 -0
  216. package/payload/skills/loom-handoff/.loom-runtime/shared/assets/review/loom-review-result-schema.json +93 -0
  217. package/payload/skills/loom-handoff/.loom-runtime/shared/assets/templates/scaffold/plan.md +51 -0
  218. package/payload/skills/loom-handoff/.loom-runtime/shared/assets/templates/scaffold/spec.md +48 -0
  219. package/payload/skills/loom-handoff/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +64 -0
  220. package/payload/skills/loom-handoff/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +71 -0
  221. package/payload/skills/loom-handoff/.loom-runtime/shared/references/adoption/routing-and-checkpoints.md +88 -0
  222. package/payload/skills/loom-handoff/.loom-runtime/shared/references/governance/host-object-taxonomy.md +148 -0
  223. package/payload/skills/loom-handoff/.loom-runtime/shared/references/governance/issue-model.md +127 -0
  224. package/payload/skills/loom-handoff/.loom-runtime/shared/references/governance/maturity-and-closing.md +69 -0
  225. package/payload/skills/loom-handoff/.loom-runtime/shared/references/governance/principles.md +180 -0
  226. package/payload/skills/loom-handoff/.loom-runtime/shared/references/governance/review-model.md +109 -0
  227. package/payload/skills/loom-handoff/.loom-runtime/shared/references/governance/state-machine.md +163 -0
  228. package/payload/skills/loom-handoff/.loom-runtime/shared/references/governance/truth-and-sync-boundary.md +161 -0
  229. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/automation-frontload.md +139 -0
  230. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/closeout-gate.md +97 -0
  231. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/execution-chain.md +56 -0
  232. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/execution-context.md +71 -0
  233. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/fact-chain-contract.md +160 -0
  234. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/host-action-contract.md +128 -0
  235. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/host-issue-binding.md +90 -0
  236. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/host-lifecycle-boundary.md +56 -0
  237. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/merge-checkpoint.md +95 -0
  238. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/reconciliation-audit.md +64 -0
  239. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/recovery-model.md +101 -0
  240. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/review-execution.md +99 -0
  241. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/runtime-state.md +103 -0
  242. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/status-surface.md +121 -0
  243. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/work-item-contract.md +104 -0
  244. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/workspace-and-purity.md +73 -0
  245. package/payload/skills/loom-handoff/.loom-runtime/shared/references/harness/workspace-model.md +56 -0
  246. package/payload/skills/loom-handoff/.loom-runtime/shared/references/templates/pull-request.md +44 -0
  247. package/payload/skills/loom-handoff/.loom-runtime/shared/references/templates/review-record.md +35 -0
  248. package/payload/skills/loom-handoff/.loom-runtime/shared/references/templates/spec-suite.md +57 -0
  249. package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/fact_chain_support.py +509 -0
  250. package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/governance_surface.py +879 -0
  251. package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/loom_check.py +4683 -0
  252. package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/loom_flow.py +5390 -0
  253. package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/loom_init.py +1966 -0
  254. package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/runtime_paths.py +116 -0
  255. package/payload/skills/loom-handoff/.loom-runtime/shared/scripts/runtime_state.py +405 -0
  256. package/payload/skills/loom-handoff/.loom-runtime/upgrade-contract.json +29 -0
  257. package/payload/skills/loom-handoff/SKILL.md +23 -0
  258. package/payload/skills/loom-handoff/agents/openai.yaml +4 -0
  259. package/payload/skills/loom-handoff/contract.json +53 -0
  260. package/payload/skills/loom-handoff/references/input-signals.md +7 -0
  261. package/payload/skills/loom-handoff/references/loom-init/input-signals.md +16 -0
  262. package/payload/skills/loom-handoff/references/loom-init/intake-signals.md +155 -0
  263. package/payload/skills/loom-handoff/references/loom-init/output-contract.md +208 -0
  264. package/payload/skills/loom-handoff/references/output-contract.md +42 -0
  265. package/payload/skills/loom-handoff/references/route-matrix.md +63 -0
  266. package/payload/skills/loom-handoff/references/shared/adoption/deep-existing-repo-default.md +64 -0
  267. package/payload/skills/loom-handoff/references/shared/adoption/lightweight-retrofit-default.md +71 -0
  268. package/payload/skills/loom-handoff/references/shared/adoption/routing-and-checkpoints.md +88 -0
  269. package/payload/skills/loom-handoff/references/shared/governance/host-object-taxonomy.md +148 -0
  270. package/payload/skills/loom-handoff/references/shared/governance/issue-model.md +127 -0
  271. package/payload/skills/loom-handoff/references/shared/governance/maturity-and-closing.md +69 -0
  272. package/payload/skills/loom-handoff/references/shared/governance/principles.md +180 -0
  273. package/payload/skills/loom-handoff/references/shared/governance/review-model.md +109 -0
  274. package/payload/skills/loom-handoff/references/shared/governance/state-machine.md +163 -0
  275. package/payload/skills/loom-handoff/references/shared/governance/truth-and-sync-boundary.md +161 -0
  276. package/payload/skills/loom-handoff/references/shared/harness/automation-frontload.md +139 -0
  277. package/payload/skills/loom-handoff/references/shared/harness/closeout-gate.md +97 -0
  278. package/payload/skills/loom-handoff/references/shared/harness/execution-chain.md +56 -0
  279. package/payload/skills/loom-handoff/references/shared/harness/execution-context.md +71 -0
  280. package/payload/skills/loom-handoff/references/shared/harness/fact-chain-contract.md +160 -0
  281. package/payload/skills/loom-handoff/references/shared/harness/host-action-contract.md +128 -0
  282. package/payload/skills/loom-handoff/references/shared/harness/host-issue-binding.md +90 -0
  283. package/payload/skills/loom-handoff/references/shared/harness/host-lifecycle-boundary.md +56 -0
  284. package/payload/skills/loom-handoff/references/shared/harness/merge-checkpoint.md +95 -0
  285. package/payload/skills/loom-handoff/references/shared/harness/reconciliation-audit.md +64 -0
  286. package/payload/skills/loom-handoff/references/shared/harness/recovery-model.md +101 -0
  287. package/payload/skills/loom-handoff/references/shared/harness/review-execution.md +99 -0
  288. package/payload/skills/loom-handoff/references/shared/harness/runtime-state.md +103 -0
  289. package/payload/skills/loom-handoff/references/shared/harness/status-surface.md +121 -0
  290. package/payload/skills/loom-handoff/references/shared/harness/work-item-contract.md +104 -0
  291. package/payload/skills/loom-handoff/references/shared/harness/workspace-and-purity.md +73 -0
  292. package/payload/skills/loom-handoff/references/shared/harness/workspace-model.md +56 -0
  293. package/payload/skills/loom-handoff/references/shared/templates/pull-request.md +44 -0
  294. package/payload/skills/loom-handoff/references/shared/templates/review-record.md +35 -0
  295. package/payload/skills/loom-handoff/references/shared/templates/spec-suite.md +57 -0
  296. package/payload/skills/loom-handoff/scripts/loom-handoff.py +16 -0
  297. package/payload/skills/loom-init/.loom-runtime/install-layout.json +77 -0
  298. package/payload/skills/loom-init/.loom-runtime/loom-init/SKILL.md +246 -0
  299. package/payload/skills/loom-init/.loom-runtime/loom-init/agents/openai.yaml +4 -0
  300. package/payload/skills/loom-init/.loom-runtime/loom-init/contract.json +76 -0
  301. package/payload/skills/loom-init/.loom-runtime/loom-init/references/input-signals.md +16 -0
  302. package/payload/skills/loom-init/.loom-runtime/loom-init/references/intake-signals.md +155 -0
  303. package/payload/skills/loom-init/.loom-runtime/loom-init/references/output-contract.md +208 -0
  304. package/payload/skills/loom-init/.loom-runtime/loom-init/scripts/loom-init.py +14 -0
  305. package/payload/skills/loom-init/.loom-runtime/registry.json +15 -0
  306. package/payload/skills/loom-init/.loom-runtime/route-matrix.md +63 -0
  307. package/payload/skills/loom-init/.loom-runtime/shared/assets/github/PULL_REQUEST_TEMPLATE.md +22 -0
  308. package/payload/skills/loom-init/.loom-runtime/shared/assets/review/loom-review-result-schema.json +93 -0
  309. package/payload/skills/loom-init/.loom-runtime/shared/assets/templates/scaffold/plan.md +51 -0
  310. package/payload/skills/loom-init/.loom-runtime/shared/assets/templates/scaffold/spec.md +48 -0
  311. package/payload/skills/loom-init/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +64 -0
  312. package/payload/skills/loom-init/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +71 -0
  313. package/payload/skills/loom-init/.loom-runtime/shared/references/adoption/routing-and-checkpoints.md +88 -0
  314. package/payload/skills/loom-init/.loom-runtime/shared/references/governance/host-object-taxonomy.md +148 -0
  315. package/payload/skills/loom-init/.loom-runtime/shared/references/governance/issue-model.md +127 -0
  316. package/payload/skills/loom-init/.loom-runtime/shared/references/governance/maturity-and-closing.md +69 -0
  317. package/payload/skills/loom-init/.loom-runtime/shared/references/governance/principles.md +180 -0
  318. package/payload/skills/loom-init/.loom-runtime/shared/references/governance/review-model.md +109 -0
  319. package/payload/skills/loom-init/.loom-runtime/shared/references/governance/state-machine.md +163 -0
  320. package/payload/skills/loom-init/.loom-runtime/shared/references/governance/truth-and-sync-boundary.md +161 -0
  321. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/automation-frontload.md +139 -0
  322. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/closeout-gate.md +97 -0
  323. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/execution-chain.md +56 -0
  324. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/execution-context.md +71 -0
  325. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/fact-chain-contract.md +160 -0
  326. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/host-action-contract.md +128 -0
  327. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/host-issue-binding.md +90 -0
  328. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/host-lifecycle-boundary.md +56 -0
  329. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/merge-checkpoint.md +95 -0
  330. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/reconciliation-audit.md +64 -0
  331. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/recovery-model.md +101 -0
  332. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/review-execution.md +99 -0
  333. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/runtime-state.md +103 -0
  334. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/status-surface.md +121 -0
  335. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/work-item-contract.md +104 -0
  336. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/workspace-and-purity.md +73 -0
  337. package/payload/skills/loom-init/.loom-runtime/shared/references/harness/workspace-model.md +56 -0
  338. package/payload/skills/loom-init/.loom-runtime/shared/references/templates/pull-request.md +44 -0
  339. package/payload/skills/loom-init/.loom-runtime/shared/references/templates/review-record.md +35 -0
  340. package/payload/skills/loom-init/.loom-runtime/shared/references/templates/spec-suite.md +57 -0
  341. package/payload/skills/loom-init/.loom-runtime/shared/scripts/fact_chain_support.py +509 -0
  342. package/payload/skills/loom-init/.loom-runtime/shared/scripts/governance_surface.py +879 -0
  343. package/payload/skills/loom-init/.loom-runtime/shared/scripts/loom_check.py +4683 -0
  344. package/payload/skills/loom-init/.loom-runtime/shared/scripts/loom_flow.py +5390 -0
  345. package/payload/skills/loom-init/.loom-runtime/shared/scripts/loom_init.py +1966 -0
  346. package/payload/skills/loom-init/.loom-runtime/shared/scripts/runtime_paths.py +116 -0
  347. package/payload/skills/loom-init/.loom-runtime/shared/scripts/runtime_state.py +405 -0
  348. package/payload/skills/loom-init/.loom-runtime/upgrade-contract.json +29 -0
  349. package/payload/skills/loom-init/SKILL.md +246 -0
  350. package/payload/skills/loom-init/agents/openai.yaml +4 -0
  351. package/payload/skills/loom-init/contract.json +76 -0
  352. package/payload/skills/loom-init/references/input-signals.md +16 -0
  353. package/payload/skills/loom-init/references/intake-signals.md +155 -0
  354. package/payload/skills/loom-init/references/output-contract.md +208 -0
  355. package/payload/skills/loom-init/references/route-matrix.md +63 -0
  356. package/payload/skills/loom-init/references/shared/adoption/deep-existing-repo-default.md +64 -0
  357. package/payload/skills/loom-init/references/shared/adoption/lightweight-retrofit-default.md +71 -0
  358. package/payload/skills/loom-init/references/shared/adoption/routing-and-checkpoints.md +88 -0
  359. package/payload/skills/loom-init/references/shared/governance/host-object-taxonomy.md +148 -0
  360. package/payload/skills/loom-init/references/shared/governance/issue-model.md +127 -0
  361. package/payload/skills/loom-init/references/shared/governance/maturity-and-closing.md +69 -0
  362. package/payload/skills/loom-init/references/shared/governance/principles.md +180 -0
  363. package/payload/skills/loom-init/references/shared/governance/review-model.md +109 -0
  364. package/payload/skills/loom-init/references/shared/governance/state-machine.md +163 -0
  365. package/payload/skills/loom-init/references/shared/governance/truth-and-sync-boundary.md +161 -0
  366. package/payload/skills/loom-init/references/shared/harness/automation-frontload.md +139 -0
  367. package/payload/skills/loom-init/references/shared/harness/closeout-gate.md +97 -0
  368. package/payload/skills/loom-init/references/shared/harness/execution-chain.md +56 -0
  369. package/payload/skills/loom-init/references/shared/harness/execution-context.md +71 -0
  370. package/payload/skills/loom-init/references/shared/harness/fact-chain-contract.md +160 -0
  371. package/payload/skills/loom-init/references/shared/harness/host-action-contract.md +128 -0
  372. package/payload/skills/loom-init/references/shared/harness/host-issue-binding.md +90 -0
  373. package/payload/skills/loom-init/references/shared/harness/host-lifecycle-boundary.md +56 -0
  374. package/payload/skills/loom-init/references/shared/harness/merge-checkpoint.md +95 -0
  375. package/payload/skills/loom-init/references/shared/harness/reconciliation-audit.md +64 -0
  376. package/payload/skills/loom-init/references/shared/harness/recovery-model.md +101 -0
  377. package/payload/skills/loom-init/references/shared/harness/review-execution.md +99 -0
  378. package/payload/skills/loom-init/references/shared/harness/runtime-state.md +103 -0
  379. package/payload/skills/loom-init/references/shared/harness/status-surface.md +121 -0
  380. package/payload/skills/loom-init/references/shared/harness/work-item-contract.md +104 -0
  381. package/payload/skills/loom-init/references/shared/harness/workspace-and-purity.md +73 -0
  382. package/payload/skills/loom-init/references/shared/harness/workspace-model.md +56 -0
  383. package/payload/skills/loom-init/references/shared/templates/pull-request.md +44 -0
  384. package/payload/skills/loom-init/references/shared/templates/review-record.md +35 -0
  385. package/payload/skills/loom-init/references/shared/templates/spec-suite.md +57 -0
  386. package/payload/skills/loom-init/scripts/loom-init.py +16 -0
  387. package/payload/skills/loom-merge-ready/.loom-runtime/install-layout.json +77 -0
  388. package/payload/skills/loom-merge-ready/.loom-runtime/loom-init/references/input-signals.md +16 -0
  389. package/payload/skills/loom-merge-ready/.loom-runtime/loom-init/references/intake-signals.md +155 -0
  390. package/payload/skills/loom-merge-ready/.loom-runtime/loom-init/references/output-contract.md +208 -0
  391. package/payload/skills/loom-merge-ready/.loom-runtime/loom-merge-ready/SKILL.md +23 -0
  392. package/payload/skills/loom-merge-ready/.loom-runtime/loom-merge-ready/agents/openai.yaml +4 -0
  393. package/payload/skills/loom-merge-ready/.loom-runtime/loom-merge-ready/contract.json +49 -0
  394. package/payload/skills/loom-merge-ready/.loom-runtime/loom-merge-ready/references/input-signals.md +7 -0
  395. package/payload/skills/loom-merge-ready/.loom-runtime/loom-merge-ready/references/output-contract.md +34 -0
  396. package/payload/skills/loom-merge-ready/.loom-runtime/loom-merge-ready/scripts/loom-merge-ready.py +14 -0
  397. package/payload/skills/loom-merge-ready/.loom-runtime/registry.json +15 -0
  398. package/payload/skills/loom-merge-ready/.loom-runtime/route-matrix.md +63 -0
  399. package/payload/skills/loom-merge-ready/.loom-runtime/shared/assets/github/PULL_REQUEST_TEMPLATE.md +22 -0
  400. package/payload/skills/loom-merge-ready/.loom-runtime/shared/assets/review/loom-review-result-schema.json +93 -0
  401. package/payload/skills/loom-merge-ready/.loom-runtime/shared/assets/templates/scaffold/plan.md +51 -0
  402. package/payload/skills/loom-merge-ready/.loom-runtime/shared/assets/templates/scaffold/spec.md +48 -0
  403. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +64 -0
  404. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +71 -0
  405. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/adoption/routing-and-checkpoints.md +88 -0
  406. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/governance/host-object-taxonomy.md +148 -0
  407. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/governance/issue-model.md +127 -0
  408. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/governance/maturity-and-closing.md +69 -0
  409. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/governance/principles.md +180 -0
  410. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/governance/review-model.md +109 -0
  411. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/governance/state-machine.md +163 -0
  412. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/governance/truth-and-sync-boundary.md +161 -0
  413. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/automation-frontload.md +139 -0
  414. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/closeout-gate.md +97 -0
  415. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/execution-chain.md +56 -0
  416. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/execution-context.md +71 -0
  417. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/fact-chain-contract.md +160 -0
  418. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/host-action-contract.md +128 -0
  419. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/host-issue-binding.md +90 -0
  420. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/host-lifecycle-boundary.md +56 -0
  421. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/merge-checkpoint.md +95 -0
  422. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/reconciliation-audit.md +64 -0
  423. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/recovery-model.md +101 -0
  424. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/review-execution.md +99 -0
  425. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/runtime-state.md +103 -0
  426. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/status-surface.md +121 -0
  427. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/work-item-contract.md +104 -0
  428. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/workspace-and-purity.md +73 -0
  429. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/harness/workspace-model.md +56 -0
  430. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/templates/pull-request.md +44 -0
  431. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/templates/review-record.md +35 -0
  432. package/payload/skills/loom-merge-ready/.loom-runtime/shared/references/templates/spec-suite.md +57 -0
  433. package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/fact_chain_support.py +509 -0
  434. package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/governance_surface.py +879 -0
  435. package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_check.py +4683 -0
  436. package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_flow.py +5390 -0
  437. package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/loom_init.py +1966 -0
  438. package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/runtime_paths.py +116 -0
  439. package/payload/skills/loom-merge-ready/.loom-runtime/shared/scripts/runtime_state.py +405 -0
  440. package/payload/skills/loom-merge-ready/.loom-runtime/upgrade-contract.json +29 -0
  441. package/payload/skills/loom-merge-ready/SKILL.md +23 -0
  442. package/payload/skills/loom-merge-ready/agents/openai.yaml +4 -0
  443. package/payload/skills/loom-merge-ready/contract.json +49 -0
  444. package/payload/skills/loom-merge-ready/references/input-signals.md +7 -0
  445. package/payload/skills/loom-merge-ready/references/loom-init/input-signals.md +16 -0
  446. package/payload/skills/loom-merge-ready/references/loom-init/intake-signals.md +155 -0
  447. package/payload/skills/loom-merge-ready/references/loom-init/output-contract.md +208 -0
  448. package/payload/skills/loom-merge-ready/references/output-contract.md +34 -0
  449. package/payload/skills/loom-merge-ready/references/route-matrix.md +63 -0
  450. package/payload/skills/loom-merge-ready/references/shared/adoption/deep-existing-repo-default.md +64 -0
  451. package/payload/skills/loom-merge-ready/references/shared/adoption/lightweight-retrofit-default.md +71 -0
  452. package/payload/skills/loom-merge-ready/references/shared/adoption/routing-and-checkpoints.md +88 -0
  453. package/payload/skills/loom-merge-ready/references/shared/governance/host-object-taxonomy.md +148 -0
  454. package/payload/skills/loom-merge-ready/references/shared/governance/issue-model.md +127 -0
  455. package/payload/skills/loom-merge-ready/references/shared/governance/maturity-and-closing.md +69 -0
  456. package/payload/skills/loom-merge-ready/references/shared/governance/principles.md +180 -0
  457. package/payload/skills/loom-merge-ready/references/shared/governance/review-model.md +109 -0
  458. package/payload/skills/loom-merge-ready/references/shared/governance/state-machine.md +163 -0
  459. package/payload/skills/loom-merge-ready/references/shared/governance/truth-and-sync-boundary.md +161 -0
  460. package/payload/skills/loom-merge-ready/references/shared/harness/automation-frontload.md +139 -0
  461. package/payload/skills/loom-merge-ready/references/shared/harness/closeout-gate.md +97 -0
  462. package/payload/skills/loom-merge-ready/references/shared/harness/execution-chain.md +56 -0
  463. package/payload/skills/loom-merge-ready/references/shared/harness/execution-context.md +71 -0
  464. package/payload/skills/loom-merge-ready/references/shared/harness/fact-chain-contract.md +160 -0
  465. package/payload/skills/loom-merge-ready/references/shared/harness/host-action-contract.md +128 -0
  466. package/payload/skills/loom-merge-ready/references/shared/harness/host-issue-binding.md +90 -0
  467. package/payload/skills/loom-merge-ready/references/shared/harness/host-lifecycle-boundary.md +56 -0
  468. package/payload/skills/loom-merge-ready/references/shared/harness/merge-checkpoint.md +95 -0
  469. package/payload/skills/loom-merge-ready/references/shared/harness/reconciliation-audit.md +64 -0
  470. package/payload/skills/loom-merge-ready/references/shared/harness/recovery-model.md +101 -0
  471. package/payload/skills/loom-merge-ready/references/shared/harness/review-execution.md +99 -0
  472. package/payload/skills/loom-merge-ready/references/shared/harness/runtime-state.md +103 -0
  473. package/payload/skills/loom-merge-ready/references/shared/harness/status-surface.md +121 -0
  474. package/payload/skills/loom-merge-ready/references/shared/harness/work-item-contract.md +104 -0
  475. package/payload/skills/loom-merge-ready/references/shared/harness/workspace-and-purity.md +73 -0
  476. package/payload/skills/loom-merge-ready/references/shared/harness/workspace-model.md +56 -0
  477. package/payload/skills/loom-merge-ready/references/shared/templates/pull-request.md +44 -0
  478. package/payload/skills/loom-merge-ready/references/shared/templates/review-record.md +35 -0
  479. package/payload/skills/loom-merge-ready/references/shared/templates/spec-suite.md +57 -0
  480. package/payload/skills/loom-merge-ready/scripts/loom-merge-ready.py +16 -0
  481. package/payload/skills/loom-pre-review/.loom-runtime/install-layout.json +77 -0
  482. package/payload/skills/loom-pre-review/.loom-runtime/loom-init/references/input-signals.md +16 -0
  483. package/payload/skills/loom-pre-review/.loom-runtime/loom-init/references/intake-signals.md +155 -0
  484. package/payload/skills/loom-pre-review/.loom-runtime/loom-init/references/output-contract.md +208 -0
  485. package/payload/skills/loom-pre-review/.loom-runtime/loom-pre-review/SKILL.md +69 -0
  486. package/payload/skills/loom-pre-review/.loom-runtime/loom-pre-review/agents/openai.yaml +4 -0
  487. package/payload/skills/loom-pre-review/.loom-runtime/loom-pre-review/contract.json +41 -0
  488. package/payload/skills/loom-pre-review/.loom-runtime/loom-pre-review/references/input-signals.md +14 -0
  489. package/payload/skills/loom-pre-review/.loom-runtime/loom-pre-review/references/output-contract.md +20 -0
  490. package/payload/skills/loom-pre-review/.loom-runtime/loom-pre-review/scripts/loom-pre-review.py +14 -0
  491. package/payload/skills/loom-pre-review/.loom-runtime/registry.json +15 -0
  492. package/payload/skills/loom-pre-review/.loom-runtime/route-matrix.md +63 -0
  493. package/payload/skills/loom-pre-review/.loom-runtime/shared/assets/github/PULL_REQUEST_TEMPLATE.md +22 -0
  494. package/payload/skills/loom-pre-review/.loom-runtime/shared/assets/review/loom-review-result-schema.json +93 -0
  495. package/payload/skills/loom-pre-review/.loom-runtime/shared/assets/templates/scaffold/plan.md +51 -0
  496. package/payload/skills/loom-pre-review/.loom-runtime/shared/assets/templates/scaffold/spec.md +48 -0
  497. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +64 -0
  498. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +71 -0
  499. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/adoption/routing-and-checkpoints.md +88 -0
  500. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/governance/host-object-taxonomy.md +148 -0
  501. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/governance/issue-model.md +127 -0
  502. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/governance/maturity-and-closing.md +69 -0
  503. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/governance/principles.md +180 -0
  504. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/governance/review-model.md +109 -0
  505. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/governance/state-machine.md +163 -0
  506. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/governance/truth-and-sync-boundary.md +161 -0
  507. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/automation-frontload.md +139 -0
  508. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/closeout-gate.md +97 -0
  509. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/execution-chain.md +56 -0
  510. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/execution-context.md +71 -0
  511. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/fact-chain-contract.md +160 -0
  512. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/host-action-contract.md +128 -0
  513. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/host-issue-binding.md +90 -0
  514. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/host-lifecycle-boundary.md +56 -0
  515. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/merge-checkpoint.md +95 -0
  516. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/reconciliation-audit.md +64 -0
  517. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/recovery-model.md +101 -0
  518. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/review-execution.md +99 -0
  519. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/runtime-state.md +103 -0
  520. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/status-surface.md +121 -0
  521. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/work-item-contract.md +104 -0
  522. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/workspace-and-purity.md +73 -0
  523. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/harness/workspace-model.md +56 -0
  524. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/templates/pull-request.md +44 -0
  525. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/templates/review-record.md +35 -0
  526. package/payload/skills/loom-pre-review/.loom-runtime/shared/references/templates/spec-suite.md +57 -0
  527. package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/fact_chain_support.py +509 -0
  528. package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/governance_surface.py +879 -0
  529. package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_check.py +4683 -0
  530. package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_flow.py +5390 -0
  531. package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/loom_init.py +1966 -0
  532. package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/runtime_paths.py +116 -0
  533. package/payload/skills/loom-pre-review/.loom-runtime/shared/scripts/runtime_state.py +405 -0
  534. package/payload/skills/loom-pre-review/.loom-runtime/upgrade-contract.json +29 -0
  535. package/payload/skills/loom-pre-review/SKILL.md +69 -0
  536. package/payload/skills/loom-pre-review/agents/openai.yaml +4 -0
  537. package/payload/skills/loom-pre-review/contract.json +41 -0
  538. package/payload/skills/loom-pre-review/references/input-signals.md +14 -0
  539. package/payload/skills/loom-pre-review/references/loom-init/input-signals.md +16 -0
  540. package/payload/skills/loom-pre-review/references/loom-init/intake-signals.md +155 -0
  541. package/payload/skills/loom-pre-review/references/loom-init/output-contract.md +208 -0
  542. package/payload/skills/loom-pre-review/references/output-contract.md +20 -0
  543. package/payload/skills/loom-pre-review/references/route-matrix.md +63 -0
  544. package/payload/skills/loom-pre-review/references/shared/adoption/deep-existing-repo-default.md +64 -0
  545. package/payload/skills/loom-pre-review/references/shared/adoption/lightweight-retrofit-default.md +71 -0
  546. package/payload/skills/loom-pre-review/references/shared/adoption/routing-and-checkpoints.md +88 -0
  547. package/payload/skills/loom-pre-review/references/shared/governance/host-object-taxonomy.md +148 -0
  548. package/payload/skills/loom-pre-review/references/shared/governance/issue-model.md +127 -0
  549. package/payload/skills/loom-pre-review/references/shared/governance/maturity-and-closing.md +69 -0
  550. package/payload/skills/loom-pre-review/references/shared/governance/principles.md +180 -0
  551. package/payload/skills/loom-pre-review/references/shared/governance/review-model.md +109 -0
  552. package/payload/skills/loom-pre-review/references/shared/governance/state-machine.md +163 -0
  553. package/payload/skills/loom-pre-review/references/shared/governance/truth-and-sync-boundary.md +161 -0
  554. package/payload/skills/loom-pre-review/references/shared/harness/automation-frontload.md +139 -0
  555. package/payload/skills/loom-pre-review/references/shared/harness/closeout-gate.md +97 -0
  556. package/payload/skills/loom-pre-review/references/shared/harness/execution-chain.md +56 -0
  557. package/payload/skills/loom-pre-review/references/shared/harness/execution-context.md +71 -0
  558. package/payload/skills/loom-pre-review/references/shared/harness/fact-chain-contract.md +160 -0
  559. package/payload/skills/loom-pre-review/references/shared/harness/host-action-contract.md +128 -0
  560. package/payload/skills/loom-pre-review/references/shared/harness/host-issue-binding.md +90 -0
  561. package/payload/skills/loom-pre-review/references/shared/harness/host-lifecycle-boundary.md +56 -0
  562. package/payload/skills/loom-pre-review/references/shared/harness/merge-checkpoint.md +95 -0
  563. package/payload/skills/loom-pre-review/references/shared/harness/reconciliation-audit.md +64 -0
  564. package/payload/skills/loom-pre-review/references/shared/harness/recovery-model.md +101 -0
  565. package/payload/skills/loom-pre-review/references/shared/harness/review-execution.md +99 -0
  566. package/payload/skills/loom-pre-review/references/shared/harness/runtime-state.md +103 -0
  567. package/payload/skills/loom-pre-review/references/shared/harness/status-surface.md +121 -0
  568. package/payload/skills/loom-pre-review/references/shared/harness/work-item-contract.md +104 -0
  569. package/payload/skills/loom-pre-review/references/shared/harness/workspace-and-purity.md +73 -0
  570. package/payload/skills/loom-pre-review/references/shared/harness/workspace-model.md +56 -0
  571. package/payload/skills/loom-pre-review/references/shared/templates/pull-request.md +44 -0
  572. package/payload/skills/loom-pre-review/references/shared/templates/review-record.md +35 -0
  573. package/payload/skills/loom-pre-review/references/shared/templates/spec-suite.md +57 -0
  574. package/payload/skills/loom-pre-review/scripts/loom-pre-review.py +16 -0
  575. package/payload/skills/loom-resume/.loom-runtime/install-layout.json +77 -0
  576. package/payload/skills/loom-resume/.loom-runtime/loom-init/references/input-signals.md +16 -0
  577. package/payload/skills/loom-resume/.loom-runtime/loom-init/references/intake-signals.md +155 -0
  578. package/payload/skills/loom-resume/.loom-runtime/loom-init/references/output-contract.md +208 -0
  579. package/payload/skills/loom-resume/.loom-runtime/loom-resume/SKILL.md +72 -0
  580. package/payload/skills/loom-resume/.loom-runtime/loom-resume/agents/openai.yaml +4 -0
  581. package/payload/skills/loom-resume/.loom-runtime/loom-resume/contract.json +47 -0
  582. package/payload/skills/loom-resume/.loom-runtime/loom-resume/references/input-signals.md +15 -0
  583. package/payload/skills/loom-resume/.loom-runtime/loom-resume/references/output-contract.md +58 -0
  584. package/payload/skills/loom-resume/.loom-runtime/loom-resume/scripts/loom-resume.py +14 -0
  585. package/payload/skills/loom-resume/.loom-runtime/registry.json +15 -0
  586. package/payload/skills/loom-resume/.loom-runtime/route-matrix.md +63 -0
  587. package/payload/skills/loom-resume/.loom-runtime/shared/assets/github/PULL_REQUEST_TEMPLATE.md +22 -0
  588. package/payload/skills/loom-resume/.loom-runtime/shared/assets/review/loom-review-result-schema.json +93 -0
  589. package/payload/skills/loom-resume/.loom-runtime/shared/assets/templates/scaffold/plan.md +51 -0
  590. package/payload/skills/loom-resume/.loom-runtime/shared/assets/templates/scaffold/spec.md +48 -0
  591. package/payload/skills/loom-resume/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +64 -0
  592. package/payload/skills/loom-resume/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +71 -0
  593. package/payload/skills/loom-resume/.loom-runtime/shared/references/adoption/routing-and-checkpoints.md +88 -0
  594. package/payload/skills/loom-resume/.loom-runtime/shared/references/governance/host-object-taxonomy.md +148 -0
  595. package/payload/skills/loom-resume/.loom-runtime/shared/references/governance/issue-model.md +127 -0
  596. package/payload/skills/loom-resume/.loom-runtime/shared/references/governance/maturity-and-closing.md +69 -0
  597. package/payload/skills/loom-resume/.loom-runtime/shared/references/governance/principles.md +180 -0
  598. package/payload/skills/loom-resume/.loom-runtime/shared/references/governance/review-model.md +109 -0
  599. package/payload/skills/loom-resume/.loom-runtime/shared/references/governance/state-machine.md +163 -0
  600. package/payload/skills/loom-resume/.loom-runtime/shared/references/governance/truth-and-sync-boundary.md +161 -0
  601. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/automation-frontload.md +139 -0
  602. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/closeout-gate.md +97 -0
  603. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/execution-chain.md +56 -0
  604. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/execution-context.md +71 -0
  605. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/fact-chain-contract.md +160 -0
  606. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/host-action-contract.md +128 -0
  607. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/host-issue-binding.md +90 -0
  608. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/host-lifecycle-boundary.md +56 -0
  609. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/merge-checkpoint.md +95 -0
  610. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/reconciliation-audit.md +64 -0
  611. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/recovery-model.md +101 -0
  612. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/review-execution.md +99 -0
  613. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/runtime-state.md +103 -0
  614. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/status-surface.md +121 -0
  615. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/work-item-contract.md +104 -0
  616. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/workspace-and-purity.md +73 -0
  617. package/payload/skills/loom-resume/.loom-runtime/shared/references/harness/workspace-model.md +56 -0
  618. package/payload/skills/loom-resume/.loom-runtime/shared/references/templates/pull-request.md +44 -0
  619. package/payload/skills/loom-resume/.loom-runtime/shared/references/templates/review-record.md +35 -0
  620. package/payload/skills/loom-resume/.loom-runtime/shared/references/templates/spec-suite.md +57 -0
  621. package/payload/skills/loom-resume/.loom-runtime/shared/scripts/fact_chain_support.py +509 -0
  622. package/payload/skills/loom-resume/.loom-runtime/shared/scripts/governance_surface.py +879 -0
  623. package/payload/skills/loom-resume/.loom-runtime/shared/scripts/loom_check.py +4683 -0
  624. package/payload/skills/loom-resume/.loom-runtime/shared/scripts/loom_flow.py +5390 -0
  625. package/payload/skills/loom-resume/.loom-runtime/shared/scripts/loom_init.py +1966 -0
  626. package/payload/skills/loom-resume/.loom-runtime/shared/scripts/runtime_paths.py +116 -0
  627. package/payload/skills/loom-resume/.loom-runtime/shared/scripts/runtime_state.py +405 -0
  628. package/payload/skills/loom-resume/.loom-runtime/upgrade-contract.json +29 -0
  629. package/payload/skills/loom-resume/SKILL.md +72 -0
  630. package/payload/skills/loom-resume/agents/openai.yaml +4 -0
  631. package/payload/skills/loom-resume/contract.json +47 -0
  632. package/payload/skills/loom-resume/references/input-signals.md +15 -0
  633. package/payload/skills/loom-resume/references/loom-init/input-signals.md +16 -0
  634. package/payload/skills/loom-resume/references/loom-init/intake-signals.md +155 -0
  635. package/payload/skills/loom-resume/references/loom-init/output-contract.md +208 -0
  636. package/payload/skills/loom-resume/references/output-contract.md +58 -0
  637. package/payload/skills/loom-resume/references/route-matrix.md +63 -0
  638. package/payload/skills/loom-resume/references/shared/adoption/deep-existing-repo-default.md +64 -0
  639. package/payload/skills/loom-resume/references/shared/adoption/lightweight-retrofit-default.md +71 -0
  640. package/payload/skills/loom-resume/references/shared/adoption/routing-and-checkpoints.md +88 -0
  641. package/payload/skills/loom-resume/references/shared/governance/host-object-taxonomy.md +148 -0
  642. package/payload/skills/loom-resume/references/shared/governance/issue-model.md +127 -0
  643. package/payload/skills/loom-resume/references/shared/governance/maturity-and-closing.md +69 -0
  644. package/payload/skills/loom-resume/references/shared/governance/principles.md +180 -0
  645. package/payload/skills/loom-resume/references/shared/governance/review-model.md +109 -0
  646. package/payload/skills/loom-resume/references/shared/governance/state-machine.md +163 -0
  647. package/payload/skills/loom-resume/references/shared/governance/truth-and-sync-boundary.md +161 -0
  648. package/payload/skills/loom-resume/references/shared/harness/automation-frontload.md +139 -0
  649. package/payload/skills/loom-resume/references/shared/harness/closeout-gate.md +97 -0
  650. package/payload/skills/loom-resume/references/shared/harness/execution-chain.md +56 -0
  651. package/payload/skills/loom-resume/references/shared/harness/execution-context.md +71 -0
  652. package/payload/skills/loom-resume/references/shared/harness/fact-chain-contract.md +160 -0
  653. package/payload/skills/loom-resume/references/shared/harness/host-action-contract.md +128 -0
  654. package/payload/skills/loom-resume/references/shared/harness/host-issue-binding.md +90 -0
  655. package/payload/skills/loom-resume/references/shared/harness/host-lifecycle-boundary.md +56 -0
  656. package/payload/skills/loom-resume/references/shared/harness/merge-checkpoint.md +95 -0
  657. package/payload/skills/loom-resume/references/shared/harness/reconciliation-audit.md +64 -0
  658. package/payload/skills/loom-resume/references/shared/harness/recovery-model.md +101 -0
  659. package/payload/skills/loom-resume/references/shared/harness/review-execution.md +99 -0
  660. package/payload/skills/loom-resume/references/shared/harness/runtime-state.md +103 -0
  661. package/payload/skills/loom-resume/references/shared/harness/status-surface.md +121 -0
  662. package/payload/skills/loom-resume/references/shared/harness/work-item-contract.md +104 -0
  663. package/payload/skills/loom-resume/references/shared/harness/workspace-and-purity.md +73 -0
  664. package/payload/skills/loom-resume/references/shared/harness/workspace-model.md +56 -0
  665. package/payload/skills/loom-resume/references/shared/templates/pull-request.md +44 -0
  666. package/payload/skills/loom-resume/references/shared/templates/review-record.md +35 -0
  667. package/payload/skills/loom-resume/references/shared/templates/spec-suite.md +57 -0
  668. package/payload/skills/loom-resume/scripts/loom-resume.py +16 -0
  669. package/payload/skills/loom-retire/.loom-runtime/install-layout.json +77 -0
  670. package/payload/skills/loom-retire/.loom-runtime/loom-init/references/input-signals.md +16 -0
  671. package/payload/skills/loom-retire/.loom-runtime/loom-init/references/intake-signals.md +155 -0
  672. package/payload/skills/loom-retire/.loom-runtime/loom-init/references/output-contract.md +208 -0
  673. package/payload/skills/loom-retire/.loom-runtime/loom-retire/SKILL.md +26 -0
  674. package/payload/skills/loom-retire/.loom-runtime/loom-retire/agents/openai.yaml +4 -0
  675. package/payload/skills/loom-retire/.loom-runtime/loom-retire/contract.json +41 -0
  676. package/payload/skills/loom-retire/.loom-runtime/loom-retire/references/input-signals.md +7 -0
  677. package/payload/skills/loom-retire/.loom-runtime/loom-retire/references/output-contract.md +13 -0
  678. package/payload/skills/loom-retire/.loom-runtime/loom-retire/scripts/loom-retire.py +14 -0
  679. package/payload/skills/loom-retire/.loom-runtime/registry.json +15 -0
  680. package/payload/skills/loom-retire/.loom-runtime/route-matrix.md +63 -0
  681. package/payload/skills/loom-retire/.loom-runtime/shared/assets/github/PULL_REQUEST_TEMPLATE.md +22 -0
  682. package/payload/skills/loom-retire/.loom-runtime/shared/assets/review/loom-review-result-schema.json +93 -0
  683. package/payload/skills/loom-retire/.loom-runtime/shared/assets/templates/scaffold/plan.md +51 -0
  684. package/payload/skills/loom-retire/.loom-runtime/shared/assets/templates/scaffold/spec.md +48 -0
  685. package/payload/skills/loom-retire/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +64 -0
  686. package/payload/skills/loom-retire/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +71 -0
  687. package/payload/skills/loom-retire/.loom-runtime/shared/references/adoption/routing-and-checkpoints.md +88 -0
  688. package/payload/skills/loom-retire/.loom-runtime/shared/references/governance/host-object-taxonomy.md +148 -0
  689. package/payload/skills/loom-retire/.loom-runtime/shared/references/governance/issue-model.md +127 -0
  690. package/payload/skills/loom-retire/.loom-runtime/shared/references/governance/maturity-and-closing.md +69 -0
  691. package/payload/skills/loom-retire/.loom-runtime/shared/references/governance/principles.md +180 -0
  692. package/payload/skills/loom-retire/.loom-runtime/shared/references/governance/review-model.md +109 -0
  693. package/payload/skills/loom-retire/.loom-runtime/shared/references/governance/state-machine.md +163 -0
  694. package/payload/skills/loom-retire/.loom-runtime/shared/references/governance/truth-and-sync-boundary.md +161 -0
  695. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/automation-frontload.md +139 -0
  696. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/closeout-gate.md +97 -0
  697. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/execution-chain.md +56 -0
  698. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/execution-context.md +71 -0
  699. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/fact-chain-contract.md +160 -0
  700. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/host-action-contract.md +128 -0
  701. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/host-issue-binding.md +90 -0
  702. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/host-lifecycle-boundary.md +56 -0
  703. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/merge-checkpoint.md +95 -0
  704. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/reconciliation-audit.md +64 -0
  705. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/recovery-model.md +101 -0
  706. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/review-execution.md +99 -0
  707. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/runtime-state.md +103 -0
  708. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/status-surface.md +121 -0
  709. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/work-item-contract.md +104 -0
  710. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/workspace-and-purity.md +73 -0
  711. package/payload/skills/loom-retire/.loom-runtime/shared/references/harness/workspace-model.md +56 -0
  712. package/payload/skills/loom-retire/.loom-runtime/shared/references/templates/pull-request.md +44 -0
  713. package/payload/skills/loom-retire/.loom-runtime/shared/references/templates/review-record.md +35 -0
  714. package/payload/skills/loom-retire/.loom-runtime/shared/references/templates/spec-suite.md +57 -0
  715. package/payload/skills/loom-retire/.loom-runtime/shared/scripts/fact_chain_support.py +509 -0
  716. package/payload/skills/loom-retire/.loom-runtime/shared/scripts/governance_surface.py +879 -0
  717. package/payload/skills/loom-retire/.loom-runtime/shared/scripts/loom_check.py +4683 -0
  718. package/payload/skills/loom-retire/.loom-runtime/shared/scripts/loom_flow.py +5390 -0
  719. package/payload/skills/loom-retire/.loom-runtime/shared/scripts/loom_init.py +1966 -0
  720. package/payload/skills/loom-retire/.loom-runtime/shared/scripts/runtime_paths.py +116 -0
  721. package/payload/skills/loom-retire/.loom-runtime/shared/scripts/runtime_state.py +405 -0
  722. package/payload/skills/loom-retire/.loom-runtime/upgrade-contract.json +29 -0
  723. package/payload/skills/loom-retire/SKILL.md +26 -0
  724. package/payload/skills/loom-retire/agents/openai.yaml +4 -0
  725. package/payload/skills/loom-retire/contract.json +41 -0
  726. package/payload/skills/loom-retire/references/input-signals.md +7 -0
  727. package/payload/skills/loom-retire/references/loom-init/input-signals.md +16 -0
  728. package/payload/skills/loom-retire/references/loom-init/intake-signals.md +155 -0
  729. package/payload/skills/loom-retire/references/loom-init/output-contract.md +208 -0
  730. package/payload/skills/loom-retire/references/output-contract.md +13 -0
  731. package/payload/skills/loom-retire/references/route-matrix.md +63 -0
  732. package/payload/skills/loom-retire/references/shared/adoption/deep-existing-repo-default.md +64 -0
  733. package/payload/skills/loom-retire/references/shared/adoption/lightweight-retrofit-default.md +71 -0
  734. package/payload/skills/loom-retire/references/shared/adoption/routing-and-checkpoints.md +88 -0
  735. package/payload/skills/loom-retire/references/shared/governance/host-object-taxonomy.md +148 -0
  736. package/payload/skills/loom-retire/references/shared/governance/issue-model.md +127 -0
  737. package/payload/skills/loom-retire/references/shared/governance/maturity-and-closing.md +69 -0
  738. package/payload/skills/loom-retire/references/shared/governance/principles.md +180 -0
  739. package/payload/skills/loom-retire/references/shared/governance/review-model.md +109 -0
  740. package/payload/skills/loom-retire/references/shared/governance/state-machine.md +163 -0
  741. package/payload/skills/loom-retire/references/shared/governance/truth-and-sync-boundary.md +161 -0
  742. package/payload/skills/loom-retire/references/shared/harness/automation-frontload.md +139 -0
  743. package/payload/skills/loom-retire/references/shared/harness/closeout-gate.md +97 -0
  744. package/payload/skills/loom-retire/references/shared/harness/execution-chain.md +56 -0
  745. package/payload/skills/loom-retire/references/shared/harness/execution-context.md +71 -0
  746. package/payload/skills/loom-retire/references/shared/harness/fact-chain-contract.md +160 -0
  747. package/payload/skills/loom-retire/references/shared/harness/host-action-contract.md +128 -0
  748. package/payload/skills/loom-retire/references/shared/harness/host-issue-binding.md +90 -0
  749. package/payload/skills/loom-retire/references/shared/harness/host-lifecycle-boundary.md +56 -0
  750. package/payload/skills/loom-retire/references/shared/harness/merge-checkpoint.md +95 -0
  751. package/payload/skills/loom-retire/references/shared/harness/reconciliation-audit.md +64 -0
  752. package/payload/skills/loom-retire/references/shared/harness/recovery-model.md +101 -0
  753. package/payload/skills/loom-retire/references/shared/harness/review-execution.md +99 -0
  754. package/payload/skills/loom-retire/references/shared/harness/runtime-state.md +103 -0
  755. package/payload/skills/loom-retire/references/shared/harness/status-surface.md +121 -0
  756. package/payload/skills/loom-retire/references/shared/harness/work-item-contract.md +104 -0
  757. package/payload/skills/loom-retire/references/shared/harness/workspace-and-purity.md +73 -0
  758. package/payload/skills/loom-retire/references/shared/harness/workspace-model.md +56 -0
  759. package/payload/skills/loom-retire/references/shared/templates/pull-request.md +44 -0
  760. package/payload/skills/loom-retire/references/shared/templates/review-record.md +35 -0
  761. package/payload/skills/loom-retire/references/shared/templates/spec-suite.md +57 -0
  762. package/payload/skills/loom-retire/scripts/loom-retire.py +16 -0
  763. package/payload/skills/loom-review/.loom-runtime/install-layout.json +77 -0
  764. package/payload/skills/loom-review/.loom-runtime/loom-init/references/input-signals.md +16 -0
  765. package/payload/skills/loom-review/.loom-runtime/loom-init/references/intake-signals.md +155 -0
  766. package/payload/skills/loom-review/.loom-runtime/loom-init/references/output-contract.md +208 -0
  767. package/payload/skills/loom-review/.loom-runtime/loom-review/SKILL.md +95 -0
  768. package/payload/skills/loom-review/.loom-runtime/loom-review/agents/openai.yaml +4 -0
  769. package/payload/skills/loom-review/.loom-runtime/loom-review/contract.json +49 -0
  770. package/payload/skills/loom-review/.loom-runtime/loom-review/references/input-signals.md +15 -0
  771. package/payload/skills/loom-review/.loom-runtime/loom-review/references/output-contract.md +57 -0
  772. package/payload/skills/loom-review/.loom-runtime/loom-review/scripts/loom-review.py +14 -0
  773. package/payload/skills/loom-review/.loom-runtime/registry.json +15 -0
  774. package/payload/skills/loom-review/.loom-runtime/route-matrix.md +63 -0
  775. package/payload/skills/loom-review/.loom-runtime/shared/assets/github/PULL_REQUEST_TEMPLATE.md +22 -0
  776. package/payload/skills/loom-review/.loom-runtime/shared/assets/review/loom-review-result-schema.json +93 -0
  777. package/payload/skills/loom-review/.loom-runtime/shared/assets/templates/scaffold/plan.md +51 -0
  778. package/payload/skills/loom-review/.loom-runtime/shared/assets/templates/scaffold/spec.md +48 -0
  779. package/payload/skills/loom-review/.loom-runtime/shared/references/adoption/deep-existing-repo-default.md +64 -0
  780. package/payload/skills/loom-review/.loom-runtime/shared/references/adoption/lightweight-retrofit-default.md +71 -0
  781. package/payload/skills/loom-review/.loom-runtime/shared/references/adoption/routing-and-checkpoints.md +88 -0
  782. package/payload/skills/loom-review/.loom-runtime/shared/references/governance/host-object-taxonomy.md +148 -0
  783. package/payload/skills/loom-review/.loom-runtime/shared/references/governance/issue-model.md +127 -0
  784. package/payload/skills/loom-review/.loom-runtime/shared/references/governance/maturity-and-closing.md +69 -0
  785. package/payload/skills/loom-review/.loom-runtime/shared/references/governance/principles.md +180 -0
  786. package/payload/skills/loom-review/.loom-runtime/shared/references/governance/review-model.md +109 -0
  787. package/payload/skills/loom-review/.loom-runtime/shared/references/governance/state-machine.md +163 -0
  788. package/payload/skills/loom-review/.loom-runtime/shared/references/governance/truth-and-sync-boundary.md +161 -0
  789. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/automation-frontload.md +139 -0
  790. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/closeout-gate.md +97 -0
  791. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/execution-chain.md +56 -0
  792. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/execution-context.md +71 -0
  793. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/fact-chain-contract.md +160 -0
  794. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/host-action-contract.md +128 -0
  795. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/host-issue-binding.md +90 -0
  796. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/host-lifecycle-boundary.md +56 -0
  797. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/merge-checkpoint.md +95 -0
  798. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/reconciliation-audit.md +64 -0
  799. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/recovery-model.md +101 -0
  800. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/review-execution.md +99 -0
  801. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/runtime-state.md +103 -0
  802. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/status-surface.md +121 -0
  803. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/work-item-contract.md +104 -0
  804. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/workspace-and-purity.md +73 -0
  805. package/payload/skills/loom-review/.loom-runtime/shared/references/harness/workspace-model.md +56 -0
  806. package/payload/skills/loom-review/.loom-runtime/shared/references/templates/pull-request.md +44 -0
  807. package/payload/skills/loom-review/.loom-runtime/shared/references/templates/review-record.md +35 -0
  808. package/payload/skills/loom-review/.loom-runtime/shared/references/templates/spec-suite.md +57 -0
  809. package/payload/skills/loom-review/.loom-runtime/shared/scripts/fact_chain_support.py +509 -0
  810. package/payload/skills/loom-review/.loom-runtime/shared/scripts/governance_surface.py +879 -0
  811. package/payload/skills/loom-review/.loom-runtime/shared/scripts/loom_check.py +4683 -0
  812. package/payload/skills/loom-review/.loom-runtime/shared/scripts/loom_flow.py +5390 -0
  813. package/payload/skills/loom-review/.loom-runtime/shared/scripts/loom_init.py +1966 -0
  814. package/payload/skills/loom-review/.loom-runtime/shared/scripts/runtime_paths.py +116 -0
  815. package/payload/skills/loom-review/.loom-runtime/shared/scripts/runtime_state.py +405 -0
  816. package/payload/skills/loom-review/.loom-runtime/upgrade-contract.json +29 -0
  817. package/payload/skills/loom-review/SKILL.md +95 -0
  818. package/payload/skills/loom-review/agents/openai.yaml +4 -0
  819. package/payload/skills/loom-review/contract.json +49 -0
  820. package/payload/skills/loom-review/references/input-signals.md +15 -0
  821. package/payload/skills/loom-review/references/loom-init/input-signals.md +16 -0
  822. package/payload/skills/loom-review/references/loom-init/intake-signals.md +155 -0
  823. package/payload/skills/loom-review/references/loom-init/output-contract.md +208 -0
  824. package/payload/skills/loom-review/references/output-contract.md +57 -0
  825. package/payload/skills/loom-review/references/route-matrix.md +63 -0
  826. package/payload/skills/loom-review/references/shared/adoption/deep-existing-repo-default.md +64 -0
  827. package/payload/skills/loom-review/references/shared/adoption/lightweight-retrofit-default.md +71 -0
  828. package/payload/skills/loom-review/references/shared/adoption/routing-and-checkpoints.md +88 -0
  829. package/payload/skills/loom-review/references/shared/governance/host-object-taxonomy.md +148 -0
  830. package/payload/skills/loom-review/references/shared/governance/issue-model.md +127 -0
  831. package/payload/skills/loom-review/references/shared/governance/maturity-and-closing.md +69 -0
  832. package/payload/skills/loom-review/references/shared/governance/principles.md +180 -0
  833. package/payload/skills/loom-review/references/shared/governance/review-model.md +109 -0
  834. package/payload/skills/loom-review/references/shared/governance/state-machine.md +163 -0
  835. package/payload/skills/loom-review/references/shared/governance/truth-and-sync-boundary.md +161 -0
  836. package/payload/skills/loom-review/references/shared/harness/automation-frontload.md +139 -0
  837. package/payload/skills/loom-review/references/shared/harness/closeout-gate.md +97 -0
  838. package/payload/skills/loom-review/references/shared/harness/execution-chain.md +56 -0
  839. package/payload/skills/loom-review/references/shared/harness/execution-context.md +71 -0
  840. package/payload/skills/loom-review/references/shared/harness/fact-chain-contract.md +160 -0
  841. package/payload/skills/loom-review/references/shared/harness/host-action-contract.md +128 -0
  842. package/payload/skills/loom-review/references/shared/harness/host-issue-binding.md +90 -0
  843. package/payload/skills/loom-review/references/shared/harness/host-lifecycle-boundary.md +56 -0
  844. package/payload/skills/loom-review/references/shared/harness/merge-checkpoint.md +95 -0
  845. package/payload/skills/loom-review/references/shared/harness/reconciliation-audit.md +64 -0
  846. package/payload/skills/loom-review/references/shared/harness/recovery-model.md +101 -0
  847. package/payload/skills/loom-review/references/shared/harness/review-execution.md +99 -0
  848. package/payload/skills/loom-review/references/shared/harness/runtime-state.md +103 -0
  849. package/payload/skills/loom-review/references/shared/harness/status-surface.md +121 -0
  850. package/payload/skills/loom-review/references/shared/harness/work-item-contract.md +104 -0
  851. package/payload/skills/loom-review/references/shared/harness/workspace-and-purity.md +73 -0
  852. package/payload/skills/loom-review/references/shared/harness/workspace-model.md +56 -0
  853. package/payload/skills/loom-review/references/shared/templates/pull-request.md +44 -0
  854. package/payload/skills/loom-review/references/shared/templates/review-record.md +35 -0
  855. package/payload/skills/loom-review/references/shared/templates/spec-suite.md +57 -0
  856. package/payload/skills/loom-review/scripts/loom-review.py +16 -0
package/README.md ADDED
@@ -0,0 +1,47 @@
1
+ # @mc-and-his-agents/loom-installer
2
+
3
+ Loom 的 npm / npx 安装入口。
4
+
5
+ 它负责两件事:
6
+
7
+ - 把 Loom 作为完整 plugin 接到 Codex 或 Claude
8
+ - 把某个单独 Loom skill 接到对应宿主
9
+
10
+ 它不替代 Loom 当前的 Python runtime;真正的执行面仍然是仓库里的 Python 脚本与已发布的 skill / plugin 产物。
11
+
12
+ ## 命令面
13
+
14
+ ```bash
15
+ npx @mc-and-his-agents/loom-installer add plugin
16
+ npx @mc-and-his-agents/loom-installer add skill loom-init
17
+ ```
18
+
19
+ 也可以先安装再执行:
20
+
21
+ ```bash
22
+ npm install -D @mc-and-his-agents/loom-installer
23
+ npx loom-installer add plugin
24
+ npx loom-installer add skill loom-init
25
+ ```
26
+
27
+ 可选参数:
28
+
29
+ - `--host codex|claude|auto`
30
+ - `--target <repo-root>`
31
+ - `--force`
32
+ - `--json`
33
+
34
+ ## 运行时要求
35
+
36
+ - Node `>=20`
37
+ - Python `>=3.10`,推荐 `3.11+`
38
+
39
+ ## 发布说明
40
+
41
+ 本包支持 `npm publish`,但发布只在 `main` 上进行。
42
+
43
+ 发布模型:
44
+
45
+ - PR 只做门禁,不直接发布 npm
46
+ - `main` 是唯一发布真相源
47
+ - publish 成功后再创建同版本 git tag
@@ -0,0 +1,157 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { InstallerError, copyTree, dirExists, ensureDirectory, fileExists, readJson, replaceTree, runCommand, writeJson } from './utils.js';
4
+ function claudeEnv(env) {
5
+ return {
6
+ ...process.env,
7
+ CLAUDE_CONFIG_DIR: env.claudeConfigDir,
8
+ };
9
+ }
10
+ function claudeMarketplaceRoot(targetRoot) {
11
+ return join(targetRoot, '.claude', 'marketplaces', 'loom-local');
12
+ }
13
+ function claudeMarketplaceManifest() {
14
+ return {
15
+ $schema: 'https://anthropic.com/claude-code/marketplace.schema.json',
16
+ name: 'loom-local',
17
+ description: 'Repo-local Loom marketplace for plugin installation.',
18
+ owner: {
19
+ name: 'MC and his Agents',
20
+ email: 'opensource@mc-and-his-agents.dev',
21
+ },
22
+ plugins: [
23
+ {
24
+ name: 'loom',
25
+ description: 'Loom repo-local plugin entry',
26
+ source: './plugins/loom',
27
+ category: 'productivity',
28
+ homepage: 'https://github.com/MC-and-his-Agents/Loom',
29
+ },
30
+ ],
31
+ };
32
+ }
33
+ function runClaude(env, args) {
34
+ return runCommand(env.claudeBin, args, claudeEnv(env));
35
+ }
36
+ function synthesizeClaudePluginManifest(pluginTarget) {
37
+ const codexManifestPath = join(pluginTarget, '.codex-plugin', 'plugin.json');
38
+ if (!fileExists(codexManifestPath)) {
39
+ throw new InstallerError(`Claude plugin install is missing source plugin manifest: ${codexManifestPath}`);
40
+ }
41
+ const codexManifest = readJson(codexManifestPath);
42
+ const claudeManifestPath = join(pluginTarget, '.claude-plugin', 'plugin.json');
43
+ writeJson(claudeManifestPath, {
44
+ name: codexManifest.name,
45
+ description: codexManifest.description ?? 'Loom repo-local plugin entry',
46
+ version: codexManifest.version ?? '0.0.0',
47
+ author: codexManifest.author ?? {
48
+ name: 'MC and his Agents',
49
+ email: 'opensource@mc-and-his-agents.dev',
50
+ },
51
+ });
52
+ return claudeManifestPath;
53
+ }
54
+ function verifyClaudePluginInstalled(env) {
55
+ const result = runClaude(env, ['plugin', 'list', '--json']);
56
+ if (result.status !== 0) {
57
+ throw new InstallerError(`claude plugin list failed: ${result.stderr || result.stdout}`.trim());
58
+ }
59
+ let payload;
60
+ try {
61
+ payload = JSON.parse(result.stdout || '[]');
62
+ }
63
+ catch {
64
+ throw new InstallerError('claude plugin list --json returned invalid JSON');
65
+ }
66
+ if (!Array.isArray(payload)) {
67
+ throw new InstallerError('claude plugin list --json must return an array');
68
+ }
69
+ const found = payload.some((entry) => {
70
+ if (typeof entry === 'string') {
71
+ return entry === 'loom';
72
+ }
73
+ if (typeof entry !== 'object' || entry === null) {
74
+ return false;
75
+ }
76
+ return entry.name === 'loom';
77
+ });
78
+ if (!found) {
79
+ throw new InstallerError('claude plugin verify failed: loom is not listed as installed');
80
+ }
81
+ }
82
+ export function installClaudePlugin(env, targetRoot, packageRoot, manifest, force) {
83
+ const marketplaceRoot = claudeMarketplaceRoot(targetRoot);
84
+ const marketplaceManifestPath = join(marketplaceRoot, '.claude-plugin', 'marketplace.json');
85
+ const pluginTarget = join(marketplaceRoot, 'plugins', 'loom');
86
+ const pluginSource = join(packageRoot, 'payload', manifest.plugin.relative_path);
87
+ ensureDirectory(join(marketplaceRoot, '.claude-plugin'));
88
+ ensureDirectory(join(marketplaceRoot, 'plugins'));
89
+ if (dirExists(pluginTarget)) {
90
+ if (!force && !fileExists(join(pluginTarget, '.codex-plugin', 'plugin.json'))) {
91
+ throw new InstallerError(`existing Claude marketplace plugin is not Loom-managed: ${pluginTarget}`, `refusing to take over non-Loom Claude marketplace plugin: ${pluginTarget}`);
92
+ }
93
+ replaceTree(pluginSource, pluginTarget);
94
+ }
95
+ else {
96
+ copyTree(pluginSource, pluginTarget, true);
97
+ }
98
+ const claudePluginManifestPath = synthesizeClaudePluginManifest(pluginTarget);
99
+ writeJson(marketplaceManifestPath, claudeMarketplaceManifest());
100
+ const addResult = runClaude(env, ['plugin', 'marketplace', 'add', marketplaceRoot]);
101
+ const addOutput = `${addResult.stdout}\n${addResult.stderr}`;
102
+ if (addResult.status !== 0 && !/already exists|already added|already configured/i.test(addOutput)) {
103
+ throw new InstallerError(`claude plugin marketplace add failed: ${addOutput.trim()}`);
104
+ }
105
+ const installResult = runClaude(env, ['plugin', 'install', 'loom@loom-local']);
106
+ const installOutput = `${installResult.stdout}\n${installResult.stderr}`;
107
+ if (installResult.status !== 0 && !/already installed/i.test(installOutput)) {
108
+ throw new InstallerError(`claude plugin install failed: ${installOutput.trim()}`);
109
+ }
110
+ verifyClaudePluginInstalled(env);
111
+ return {
112
+ mode: 'plugin',
113
+ host: 'claude',
114
+ status: /already installed/i.test(installOutput) ? 'already-installed' : 'installed',
115
+ installed_paths: [marketplaceRoot, marketplaceManifestPath, pluginTarget, claudePluginManifestPath],
116
+ verification: [
117
+ `verified marketplace source at ${marketplaceRoot}`,
118
+ `verified Claude plugin manifest at ${claudePluginManifestPath}`,
119
+ 'verified `claude plugin list --json` contains loom',
120
+ ],
121
+ warnings: ['Claude plugin install goes through the official CLI and does not replace the Python runtime.'],
122
+ fail_closed_reason: null,
123
+ };
124
+ }
125
+ export function installClaudeSkill(targetRoot, packageRoot, skill, force) {
126
+ const sourceDir = join(packageRoot, 'payload', skill.relative_path);
127
+ const targetDir = join(targetRoot, '.claude', 'skills', skill.id);
128
+ const skillMarkdownPath = join(targetDir, 'SKILL.md');
129
+ ensureDirectory(join(targetRoot, '.claude', 'skills'));
130
+ if (dirExists(targetDir)) {
131
+ if (!force && !fileExists(skillMarkdownPath)) {
132
+ throw new InstallerError(`existing Claude skill directory is not Loom-managed: ${targetDir}`, `refusing to take over non-Loom Claude skill directory: ${targetDir}`);
133
+ }
134
+ replaceTree(sourceDir, targetDir);
135
+ }
136
+ else {
137
+ copyTree(sourceDir, targetDir, true);
138
+ }
139
+ if (!fileExists(skillMarkdownPath)) {
140
+ throw new InstallerError(`Claude skill install is missing SKILL.md: ${skillMarkdownPath}`);
141
+ }
142
+ if (!readFileSync(skillMarkdownPath, 'utf8').startsWith('---\n')) {
143
+ throw new InstallerError(`Claude skill install must keep YAML frontmatter in ${skillMarkdownPath}`);
144
+ }
145
+ return {
146
+ mode: 'skill',
147
+ host: 'claude',
148
+ status: 'installed',
149
+ installed_paths: [targetDir],
150
+ verification: [
151
+ `verified skill payload at ${targetDir}`,
152
+ `verified discoverable SKILL.md at ${skillMarkdownPath}`,
153
+ ],
154
+ warnings: ['Claude single-skill install relies on project-level `.claude/skills` discovery and does not expose the full Loom plugin surface.'],
155
+ fail_closed_reason: null,
156
+ };
157
+ }
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env node
2
+ import { formatResult, parseCli, runInstaller } from './index.js';
3
+ import { InstallerError } from './utils.js';
4
+ function errorResult(message) {
5
+ return {
6
+ mode: 'plugin',
7
+ host: 'codex',
8
+ status: 'installed',
9
+ installed_paths: [],
10
+ verification: [],
11
+ warnings: [],
12
+ fail_closed_reason: message,
13
+ };
14
+ }
15
+ try {
16
+ const parsed = parseCli(process.argv.slice(2));
17
+ const result = runInstaller(parsed);
18
+ if (parsed.options.json) {
19
+ process.stdout.write(`${JSON.stringify(result, null, 2)}\n`);
20
+ }
21
+ else {
22
+ process.stdout.write(`${formatResult(result)}\n`);
23
+ }
24
+ }
25
+ catch (error) {
26
+ const message = error instanceof InstallerError ? error.failClosedReason : error instanceof Error ? error.message : String(error);
27
+ const parsedJson = process.argv.includes('--json');
28
+ if (parsedJson) {
29
+ process.stdout.write(`${JSON.stringify(errorResult(message), null, 2)}\n`);
30
+ }
31
+ else {
32
+ process.stderr.write(`loom-installer: ${message}\n`);
33
+ }
34
+ process.exit(1);
35
+ }
@@ -0,0 +1,191 @@
1
+ import { readFileSync, writeFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { InstallerError, copyTree, dirExists, ensureDirectory, fileExists, readJson, replaceTree, writeJson } from './utils.js';
4
+ function codexMarketplacePath(targetRoot) {
5
+ return join(targetRoot, '.agents', 'plugins', 'marketplace.json');
6
+ }
7
+ function parseMarketplace(path) {
8
+ if (!fileExists(path)) {
9
+ return null;
10
+ }
11
+ return readJson(path);
12
+ }
13
+ function defaultMarketplace() {
14
+ return {
15
+ name: 'loom-local',
16
+ interface: {
17
+ displayName: 'Loom Local Plugins',
18
+ },
19
+ plugins: [],
20
+ };
21
+ }
22
+ function loomMarketplaceEntry() {
23
+ return {
24
+ name: 'loom',
25
+ source: {
26
+ source: 'local',
27
+ path: './plugins/loom',
28
+ },
29
+ policy: {
30
+ installation: 'AVAILABLE',
31
+ authentication: 'ON_INSTALL',
32
+ },
33
+ category: 'Productivity',
34
+ };
35
+ }
36
+ function ensureMarketplace(targetRoot, force) {
37
+ const marketplacePath = codexMarketplacePath(targetRoot);
38
+ const marketplace = parseMarketplace(marketplacePath) ?? defaultMarketplace();
39
+ if (!Array.isArray(marketplace.plugins)) {
40
+ throw new InstallerError('Codex marketplace.json must contain a plugins array');
41
+ }
42
+ const expectedPath = './plugins/loom';
43
+ const existing = marketplace.plugins.find((entry) => typeof entry === 'object' && entry !== null && entry.name === 'loom');
44
+ if (existing && existing.source?.path && existing.source.path !== expectedPath) {
45
+ throw new InstallerError(`Codex marketplace already declares loom from a different path: ${existing.source.path}`, `refusing to take over non-Loom marketplace entry for loom: ${existing.source.path}`);
46
+ }
47
+ if (!existing) {
48
+ marketplace.plugins.push(loomMarketplaceEntry());
49
+ }
50
+ else if (force) {
51
+ const index = marketplace.plugins.indexOf(existing);
52
+ marketplace.plugins[index] = loomMarketplaceEntry();
53
+ }
54
+ writeJson(marketplacePath, marketplace);
55
+ return [marketplacePath];
56
+ }
57
+ function parseSkillBlocks(content) {
58
+ const lines = content.split('\n');
59
+ const blocks = [];
60
+ for (let index = 0; index < lines.length; index += 1) {
61
+ if (lines[index].trim() !== '[[skills.config]]') {
62
+ continue;
63
+ }
64
+ const blockLines = [lines[index]];
65
+ index += 1;
66
+ while (index < lines.length && !lines[index].trim().startsWith('[[')) {
67
+ blockLines.push(lines[index]);
68
+ index += 1;
69
+ }
70
+ index -= 1;
71
+ const raw = blockLines.join('\n');
72
+ const pathMatch = raw.match(/^path\s*=\s*"([^"]+)"/m);
73
+ const enabledMatch = raw.match(/^enabled\s*=\s*(true|false)/m);
74
+ blocks.push({
75
+ raw,
76
+ path: pathMatch?.[1] ?? null,
77
+ enabled: enabledMatch ? enabledMatch[1] === 'true' : null,
78
+ });
79
+ }
80
+ return blocks;
81
+ }
82
+ function upsertSkillBlock(configPath, desiredSkillPath, skillId, force) {
83
+ const content = fileExists(configPath) ? readFileSync(configPath, 'utf8') : '';
84
+ const blocks = parseSkillBlocks(content);
85
+ const skillDir = skillId.startsWith('loom-') ? skillId : `loom-${skillId}`;
86
+ const conflicting = blocks.filter((block) => {
87
+ if (!block.path) {
88
+ return false;
89
+ }
90
+ return block.path.endsWith(`/${skillDir}/SKILL.md`) && block.path !== desiredSkillPath;
91
+ });
92
+ if (conflicting.length > 0 && !force) {
93
+ throw new InstallerError(`Codex already has ${skillId} from a different path`, `Codex already has ${skillId} from a different path`);
94
+ }
95
+ let nextContent = content;
96
+ for (const block of conflicting) {
97
+ nextContent = nextContent.replace(`${block.raw}\n`, '').replace(block.raw, '');
98
+ }
99
+ const existingBlock = parseSkillBlocks(nextContent).find((block) => block.path === desiredSkillPath);
100
+ if (existingBlock) {
101
+ const enabledBlock = existingBlock.raw.match(/^enabled\s*=\s*false/m)
102
+ ? existingBlock.raw.replace(/^enabled\s*=\s*false/m, 'enabled = true')
103
+ : existingBlock.enabled === null
104
+ ? `${existingBlock.raw}\nenabled = true`
105
+ : existingBlock.raw;
106
+ nextContent = nextContent.replace(existingBlock.raw, enabledBlock);
107
+ }
108
+ else {
109
+ if (nextContent && !nextContent.endsWith('\n')) {
110
+ nextContent += '\n';
111
+ }
112
+ nextContent += `\n[[skills.config]]\npath = ${JSON.stringify(desiredSkillPath)}\nenabled = true\n`;
113
+ }
114
+ ensureDirectory(join(configPath, '..'));
115
+ writeFileSync(configPath, nextContent.replace(/^\n+/, ''), 'utf8');
116
+ }
117
+ function verifySkillEnabled(configPath, desiredSkillPath) {
118
+ const content = fileExists(configPath) ? readFileSync(configPath, 'utf8') : '';
119
+ return parseSkillBlocks(content).some((block) => block.path === desiredSkillPath && block.enabled !== false);
120
+ }
121
+ export function installCodexPlugin(targetRoot, packageRoot, manifest, force) {
122
+ const pluginSource = join(packageRoot, 'payload', manifest.plugin.relative_path);
123
+ const pluginTarget = join(targetRoot, 'plugins', 'loom');
124
+ const pluginManifestPath = join(pluginTarget, '.codex-plugin', 'plugin.json');
125
+ const installedPaths = [];
126
+ const warnings = [];
127
+ if (dirExists(pluginTarget) && !force) {
128
+ if (!fileExists(pluginManifestPath)) {
129
+ throw new InstallerError(`target already contains plugins/loom but it is not a Loom plugin: ${pluginTarget}`, `refusing to take over non-Loom plugin directory: ${pluginTarget}`);
130
+ }
131
+ }
132
+ if (dirExists(pluginTarget)) {
133
+ replaceTree(pluginSource, pluginTarget);
134
+ }
135
+ else {
136
+ copyTree(pluginSource, pluginTarget, true);
137
+ }
138
+ installedPaths.push(pluginTarget);
139
+ installedPaths.push(...ensureMarketplace(targetRoot, force));
140
+ const pluginManifest = readJson(pluginManifestPath);
141
+ if (pluginManifest.name !== 'loom') {
142
+ throw new InstallerError('Codex plugin installation drifted: plugin name must stay `loom`');
143
+ }
144
+ warnings.push('Codex plugin install remains repo-local; it does not replace the Python runtime.');
145
+ return {
146
+ mode: 'plugin',
147
+ host: 'codex',
148
+ status: 'installed',
149
+ installed_paths: installedPaths,
150
+ verification: [
151
+ `verified plugin payload at ${pluginTarget}`,
152
+ `verified marketplace entry at ${codexMarketplacePath(targetRoot)}`,
153
+ ],
154
+ warnings,
155
+ fail_closed_reason: null,
156
+ };
157
+ }
158
+ export function installCodexSkill(env, packageRoot, skill, force) {
159
+ const skillDirName = skill.id.startsWith('loom-') ? skill.id : `loom-${skill.id}`;
160
+ const sourceDir = join(packageRoot, 'payload', skill.relative_path);
161
+ const targetDir = join(env.codexHome, 'skills', skillDirName);
162
+ const skillMarkdownPath = join(targetDir, 'SKILL.md');
163
+ const configPath = join(env.codexHome, 'config.toml');
164
+ ensureDirectory(join(env.codexHome, 'skills'));
165
+ if (dirExists(targetDir)) {
166
+ if (!force && !fileExists(skillMarkdownPath)) {
167
+ throw new InstallerError(`existing Codex skill directory is not Loom-managed: ${targetDir}`, `refusing to take over non-Loom Codex skill directory: ${targetDir}`);
168
+ }
169
+ replaceTree(sourceDir, targetDir);
170
+ }
171
+ else {
172
+ copyTree(sourceDir, targetDir, true);
173
+ }
174
+ ensureDirectory(env.codexHome);
175
+ upsertSkillBlock(configPath, skillMarkdownPath, skill.id, force);
176
+ if (!verifySkillEnabled(configPath, skillMarkdownPath)) {
177
+ throw new InstallerError(`Codex config did not enable ${skill.id}`);
178
+ }
179
+ return {
180
+ mode: 'skill',
181
+ host: 'codex',
182
+ status: 'installed',
183
+ installed_paths: [targetDir, configPath],
184
+ verification: [
185
+ `verified skill payload at ${targetDir}`,
186
+ `verified skills.config entry for ${skill.id}`,
187
+ ],
188
+ warnings: ['Codex single-skill install exposes only the named skill, not the full Loom plugin surface.'],
189
+ fail_closed_reason: null,
190
+ };
191
+ }
@@ -0,0 +1,175 @@
1
+ import { dirname, join, resolve } from 'node:path';
2
+ import { fileURLToPath } from 'node:url';
3
+ import { InstallerError, assert, dirExists, ensureTargetWritable, runCommand } from './utils.js';
4
+ import { loadPayloadManifest, resolveSkillRecord, verifyPayload } from './payload.js';
5
+ import { installCodexPlugin, installCodexSkill } from './codex.js';
6
+ import { installClaudePlugin, installClaudeSkill } from './claude.js';
7
+ const DEFAULT_OPTIONS = {
8
+ host: 'auto',
9
+ target: '.',
10
+ force: false,
11
+ json: false,
12
+ };
13
+ export function packageRootFromUrl(moduleUrl) {
14
+ return resolve(dirname(fileURLToPath(moduleUrl)), '..', '..');
15
+ }
16
+ export function resolveEnvironment(env = process.env) {
17
+ const homeDir = env.HOME ?? '';
18
+ assert(homeDir, 'HOME is required');
19
+ return {
20
+ homeDir,
21
+ codexHome: env.CODEX_HOME ?? join(homeDir, '.codex'),
22
+ claudeConfigDir: env.CLAUDE_CONFIG_DIR ?? join(homeDir, '.claude'),
23
+ pythonBin: env.LOOM_INSTALLER_PYTHON_BIN ?? 'python3',
24
+ claudeBin: env.LOOM_INSTALLER_CLAUDE_BIN ?? 'claude',
25
+ };
26
+ }
27
+ export function detectHosts(env) {
28
+ const hosts = [];
29
+ if (dirExists(env.codexHome)) {
30
+ hosts.push('codex');
31
+ }
32
+ if (dirExists(env.claudeConfigDir)) {
33
+ hosts.push('claude');
34
+ }
35
+ return hosts;
36
+ }
37
+ export function selectHost(requested, env) {
38
+ if (requested !== 'auto') {
39
+ return requested;
40
+ }
41
+ const detected = detectHosts(env);
42
+ if (detected.length === 1) {
43
+ return detected[0];
44
+ }
45
+ if (detected.length === 0) {
46
+ throw new InstallerError('auto host detection failed: no supported host was detected');
47
+ }
48
+ throw new InstallerError('auto host detection found both Codex and Claude; pass --host explicitly');
49
+ }
50
+ export function parseCli(argv) {
51
+ const command = argv[0];
52
+ const subject = argv[1];
53
+ const third = argv[2];
54
+ const rest = subject === 'plugin' ? argv.slice(2) : argv.slice(3);
55
+ if (command !== 'add') {
56
+ throw new InstallerError('usage: loom-installer add plugin|skill <skill-id> [--host ...] [--target ...] [--force] [--json]');
57
+ }
58
+ const options = { ...DEFAULT_OPTIONS };
59
+ for (let index = 0; index < rest.length; index += 1) {
60
+ const token = rest[index];
61
+ if (token === '--host') {
62
+ const next = rest[index + 1];
63
+ if (next !== 'auto' && next !== 'codex' && next !== 'claude') {
64
+ throw new InstallerError(`unsupported --host value: ${String(next)}`);
65
+ }
66
+ options.host = next;
67
+ index += 1;
68
+ continue;
69
+ }
70
+ if (token === '--target') {
71
+ const next = rest[index + 1];
72
+ if (!next) {
73
+ throw new InstallerError('--target requires a value');
74
+ }
75
+ options.target = next;
76
+ index += 1;
77
+ continue;
78
+ }
79
+ if (token === '--force') {
80
+ options.force = true;
81
+ continue;
82
+ }
83
+ if (token === '--json') {
84
+ options.json = true;
85
+ continue;
86
+ }
87
+ throw new InstallerError(`unknown option: ${token}`);
88
+ }
89
+ if (subject === 'plugin') {
90
+ return {
91
+ mode: 'plugin',
92
+ options,
93
+ };
94
+ }
95
+ if (subject === 'skill') {
96
+ if (!third) {
97
+ throw new InstallerError('usage: loom-installer add skill <skill-id>');
98
+ }
99
+ return {
100
+ mode: 'skill',
101
+ skillId: third,
102
+ options,
103
+ };
104
+ }
105
+ throw new InstallerError(`unknown add target: ${String(subject)}`);
106
+ }
107
+ export function checkPython(env) {
108
+ const result = runCommand(env.pythonBin, ['-c', 'import sys; print(f"{sys.version_info[0]}.{sys.version_info[1]}.{sys.version_info[2]}")'], process.env);
109
+ if (result.status !== 0) {
110
+ throw new InstallerError(`python preflight failed: ${result.stderr || result.stdout}`.trim());
111
+ }
112
+ const match = result.stdout.trim().match(/^(\d+)\.(\d+)\.(\d+)$/);
113
+ if (!match) {
114
+ throw new InstallerError(`python preflight returned an invalid version: ${result.stdout.trim()}`);
115
+ }
116
+ const major = Number(match[1]);
117
+ const minor = Number(match[2]);
118
+ if (major < 3 || (major === 3 && minor < 10)) {
119
+ throw new InstallerError(`python ${result.stdout.trim()} is unsupported; require >= 3.10`);
120
+ }
121
+ const warnings = [];
122
+ if (major === 3 && minor < 11) {
123
+ warnings.push(`python ${result.stdout.trim()} is supported, but 3.11+ is recommended`);
124
+ }
125
+ return warnings;
126
+ }
127
+ export function ensureClaudeCliWhenNeeded(host, mode, env) {
128
+ if (host !== 'claude' || mode !== 'plugin') {
129
+ return;
130
+ }
131
+ const result = runCommand(env.claudeBin, ['--version'], process.env);
132
+ if (result.status !== 0) {
133
+ throw new InstallerError(`claude CLI preflight failed: ${result.stderr || result.stdout}`.trim());
134
+ }
135
+ }
136
+ export function formatResult(result) {
137
+ return [
138
+ `${result.host} ${result.mode}: ${result.status}`,
139
+ ...result.verification.map((line) => `- ${line}`),
140
+ ...result.warnings.map((line) => `! ${line}`),
141
+ ].join('\n');
142
+ }
143
+ export function runInstaller(parsed, envSource = process.env, packageRoot) {
144
+ const resolvedEnv = resolveEnvironment(envSource);
145
+ const host = selectHost(parsed.options.host, resolvedEnv);
146
+ const resolvedPackageRoot = packageRoot ?? packageRootFromUrl(import.meta.url);
147
+ const targetRoot = resolve(parsed.options.target);
148
+ ensureTargetWritable(targetRoot);
149
+ const manifest = loadPayloadManifest(resolvedPackageRoot);
150
+ verifyPayload(resolvedPackageRoot, manifest);
151
+ const warnings = checkPython(resolvedEnv);
152
+ ensureClaudeCliWhenNeeded(host, parsed.mode, resolvedEnv);
153
+ const result = installForHost({
154
+ host,
155
+ parsed,
156
+ env: resolvedEnv,
157
+ packageRoot: resolvedPackageRoot,
158
+ targetRoot,
159
+ manifest,
160
+ });
161
+ result.warnings.unshift(...warnings);
162
+ return result;
163
+ }
164
+ function installForHost(input) {
165
+ const { host, parsed, env, packageRoot, targetRoot, manifest } = input;
166
+ if (parsed.mode === 'plugin') {
167
+ return host === 'codex'
168
+ ? installCodexPlugin(targetRoot, packageRoot, manifest, parsed.options.force)
169
+ : installClaudePlugin(env, targetRoot, packageRoot, manifest, parsed.options.force);
170
+ }
171
+ const skill = resolveSkillRecord(manifest, parsed.skillId ?? '');
172
+ return host === 'codex'
173
+ ? installCodexSkill(env, packageRoot, skill, parsed.options.force)
174
+ : installClaudeSkill(targetRoot, packageRoot, skill, parsed.options.force);
175
+ }
@@ -0,0 +1,42 @@
1
+ import { join } from 'node:path';
2
+ import { InstallerError, dirExists, fileExists, readJson, sha256 } from './utils.js';
3
+ export function loadPayloadManifest(packageRoot) {
4
+ const manifestPath = join(packageRoot, 'payload', 'manifest.json');
5
+ if (!fileExists(manifestPath)) {
6
+ throw new InstallerError(`payload manifest is missing: ${manifestPath}`);
7
+ }
8
+ return readJson(manifestPath);
9
+ }
10
+ export function verifyPayload(packageRoot, manifest) {
11
+ if (manifest.schema_version !== 'loom-installer-payload/v1') {
12
+ throw new InstallerError(`unsupported payload schema: ${manifest.schema_version}`);
13
+ }
14
+ const payloadRoot = join(packageRoot, 'payload');
15
+ const pluginPath = join(payloadRoot, manifest.plugin.relative_path);
16
+ if (!dirExists(pluginPath)) {
17
+ throw new InstallerError(`plugin payload is missing: ${pluginPath}`);
18
+ }
19
+ for (const skill of manifest.skills) {
20
+ const skillPath = join(payloadRoot, skill.relative_path);
21
+ if (!dirExists(skillPath)) {
22
+ throw new InstallerError(`skill payload is missing: ${skillPath}`);
23
+ }
24
+ }
25
+ for (const file of manifest.files) {
26
+ const absolute = join(payloadRoot, file.path);
27
+ if (!fileExists(absolute)) {
28
+ throw new InstallerError(`payload file is missing: ${file.path}`);
29
+ }
30
+ const actualSha = sha256(absolute);
31
+ if (actualSha !== file.sha256) {
32
+ throw new InstallerError(`payload checksum drift detected for ${file.path}`);
33
+ }
34
+ }
35
+ }
36
+ export function resolveSkillRecord(manifest, skillId) {
37
+ const skill = manifest.skills.find((candidate) => candidate.id === skillId);
38
+ if (!skill) {
39
+ throw new InstallerError(`unknown skill id: ${skillId}`, `unknown skill id: ${skillId}`);
40
+ }
41
+ return skill;
42
+ }
@@ -0,0 +1 @@
1
+ export {};