@runweave/server-linux-x64 0.1.7 → 0.1.9

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 (352) hide show
  1. package/manifest.json +1487 -156
  2. package/native.tar.gz +0 -0
  3. package/package.json +1 -1
  4. package/payload/.agents/plugins/marketplace.json +20 -0
  5. package/payload/app-server/build-info.json +3 -3
  6. package/payload/app-server/index.cjs +1 -1
  7. package/payload/backend/build-info.json +4 -4
  8. package/payload/backend/index.cjs +2416 -1684
  9. package/payload/backend/ios-simulators/pool.py +3 -3
  10. package/payload/backend/scheduled-tasks-sqlite-worker.cjs +224 -171
  11. package/payload/frontend/dist/assets/{_baseUniq-i1Ki3twP.js → _baseUniq-qHFga5V8.js} +1 -1
  12. package/payload/frontend/dist/assets/{access-DK9V0f3W.js → access-DgHvmn15.js} +1 -1
  13. package/payload/frontend/dist/assets/{advanced-B13lWv1d.js → advanced-C1Fh14vw.js} +1 -1
  14. package/payload/frontend/dist/assets/{appearance-DumRYmkD.js → appearance-Bs7cSXqO.js} +1 -1
  15. package/payload/frontend/dist/assets/{arc-HKn3_xyV.js → arc-E3iYHQG_.js} +1 -1
  16. package/payload/frontend/dist/assets/{architectureDiagram-Q4EWVU46-C09x7b94.js → architectureDiagram-Q4EWVU46-DgpYpTb9.js} +1 -1
  17. package/payload/frontend/dist/assets/{blockDiagram-DXYQGD6D-CFLFTR6d.js → blockDiagram-DXYQGD6D-CfFOEKZ7.js} +1 -1
  18. package/payload/frontend/dist/assets/{c4Diagram-AHTNJAMY-8P8Q-xqC.js → c4Diagram-AHTNJAMY-BxlHBUj3.js} +1 -1
  19. package/payload/frontend/dist/assets/channel-amxyNKnk.js +1 -0
  20. package/payload/frontend/dist/assets/{chunk-4BX2VUAB-B1KEkTal.js → chunk-4BX2VUAB-xWocgDo8.js} +1 -1
  21. package/payload/frontend/dist/assets/{chunk-4TB4RGXK-Bu_Z47kJ.js → chunk-4TB4RGXK-Bl1cNICf.js} +1 -1
  22. package/payload/frontend/dist/assets/{chunk-55IACEB6-xzHVCHyi.js → chunk-55IACEB6-DVtE836u.js} +1 -1
  23. package/payload/frontend/dist/assets/{chunk-EDXVE4YY-h3HAW06h.js → chunk-EDXVE4YY-Dbd3tDCr.js} +1 -1
  24. package/payload/frontend/dist/assets/{chunk-FMBD7UC4-CQ4faPSh.js → chunk-FMBD7UC4-MPJaTsyN.js} +1 -1
  25. package/payload/frontend/dist/assets/{chunk-OYMX7WX6-CubmLoGT.js → chunk-OYMX7WX6-D3LuudlW.js} +1 -1
  26. package/payload/frontend/dist/assets/{chunk-QZHKN3VN-xk0zKNja.js → chunk-QZHKN3VN-Dn1aF6iQ.js} +1 -1
  27. package/payload/frontend/dist/assets/{chunk-YZCP3GAM-CHpTv8sd.js → chunk-YZCP3GAM-jZYbHnCw.js} +1 -1
  28. package/payload/frontend/dist/assets/classDiagram-6PBFFD2Q-B8cTijjT.js +1 -0
  29. package/payload/frontend/dist/assets/classDiagram-v2-HSJHXN6E-B8cTijjT.js +1 -0
  30. package/payload/frontend/dist/assets/clone-xzI2eGRI.js +1 -0
  31. package/payload/frontend/dist/assets/connection-V2iI-6rM.js +12 -0
  32. package/payload/frontend/dist/assets/{connections-A7InZw2T.js → connections-G_Q7342g.js} +1 -1
  33. package/payload/frontend/dist/assets/{cose-bilkent-S5V4N54A-CQn27vi_.js → cose-bilkent-S5V4N54A-75FLD3RS.js} +1 -1
  34. package/payload/frontend/dist/assets/{dagre-KV5264BT-CClOwB9v.js → dagre-KV5264BT-DEm-DpJL.js} +1 -1
  35. package/payload/frontend/dist/assets/{desktop-BgryfXXM.js → desktop-g5JC-CQd.js} +1 -1
  36. package/payload/frontend/dist/assets/{diagram-5BDNPKRD-DcUJOAmV.js → diagram-5BDNPKRD-BV6P2UTy.js} +1 -1
  37. package/payload/frontend/dist/assets/{diagram-G4DWMVQ6-DdabmTwk.js → diagram-G4DWMVQ6-DuCK-MM2.js} +1 -1
  38. package/payload/frontend/dist/assets/{diagram-MMDJMWI5-DmcxjBIk.js → diagram-MMDJMWI5-D5_GlPgO.js} +1 -1
  39. package/payload/frontend/dist/assets/{diagram-TYMM5635-BUSpXaiN.js → diagram-TYMM5635-QRbOYR1P.js} +1 -1
  40. package/payload/frontend/dist/assets/{erDiagram-SMLLAGMA-vkAXcv5_.js → erDiagram-SMLLAGMA-DefCheAw.js} +1 -1
  41. package/payload/frontend/dist/assets/{flowDiagram-DWJPFMVM-BHDU7BUJ.js → flowDiagram-DWJPFMVM-DVzyWIso.js} +1 -1
  42. package/payload/frontend/dist/assets/{ganttDiagram-T4ZO3ILL-C3lAG7_6.js → ganttDiagram-T4ZO3ILL-BJaClUEF.js} +1 -1
  43. package/payload/frontend/dist/assets/{gitGraphDiagram-UUTBAWPF-DHLyYJf7.js → gitGraphDiagram-UUTBAWPF-BLfbApNz.js} +1 -1
  44. package/payload/frontend/dist/assets/{graph-Bp5bIzXM.js → graph-C-YqFh68.js} +1 -1
  45. package/payload/frontend/dist/assets/{image-DkcKNLTV.js → image-CZo_2Awc.js} +1 -1
  46. package/payload/frontend/dist/assets/{index-BUS7FSlk.js → index-6q2aeqkt.js} +95 -105
  47. package/payload/frontend/dist/assets/{infoDiagram-42DDH7IO-CVp9zvmA.js → infoDiagram-42DDH7IO-BakVOutT.js} +1 -1
  48. package/payload/frontend/dist/assets/{ishikawaDiagram-UXIWVN3A-D07QPX3O.js → ishikawaDiagram-UXIWVN3A-D_1Oa5Dc.js} +1 -1
  49. package/payload/frontend/dist/assets/{journeyDiagram-VCZTEJTY-D-iZPDHM.js → journeyDiagram-VCZTEJTY-Y8TVFv6B.js} +1 -1
  50. package/payload/frontend/dist/assets/{kanban-definition-6JOO6SKY-BR4eWb08.js → kanban-definition-6JOO6SKY-DxeNhTIB.js} +1 -1
  51. package/payload/frontend/dist/assets/{layout-Cyv0DyJm.js → layout-5cMeOTAp.js} +1 -1
  52. package/payload/frontend/dist/assets/{linear-D5M7Pvj1.js → linear-Bnc3ev5g.js} +1 -1
  53. package/payload/frontend/dist/assets/main-3TPtEl66.js +706 -0
  54. package/payload/frontend/dist/assets/main-D4_uoZQa.css +33 -0
  55. package/payload/frontend/dist/assets/{min-BFlloFGg.js → min-BRXKkrS8.js} +1 -1
  56. package/payload/frontend/dist/assets/{mindmap-definition-QFDTVHPH-AKUF178o.js → mindmap-definition-QFDTVHPH-RYZO_BEr.js} +1 -1
  57. package/payload/frontend/dist/assets/{monitoring-B2okceCB.js → monitoring-Fv7kZ4s6.js} +1 -1
  58. package/payload/frontend/dist/assets/{notifications-0lql4_qJ.js → notifications-BzrYqyMH.js} +1 -1
  59. package/payload/frontend/dist/assets/{pieDiagram-DEJITSTG-CRiHmwn7.js → pieDiagram-DEJITSTG-Bzw0dhjz.js} +1 -1
  60. package/payload/frontend/dist/assets/{quadrantDiagram-34T5L4WZ-CzXrq7IJ.js → quadrantDiagram-34T5L4WZ-CQJY_msa.js} +1 -1
  61. package/payload/frontend/dist/assets/{record-content-DTCQKbEj.js → record-content-B7-6olQt.js} +1 -1
  62. package/payload/frontend/dist/assets/{requirementDiagram-MS252O5E-Bbn5ulLV.js → requirementDiagram-MS252O5E-DuP8hAV8.js} +1 -1
  63. package/payload/frontend/dist/assets/{sankeyDiagram-XADWPNL6-D9ZZ46pQ.js → sankeyDiagram-XADWPNL6-D-fQnCZZ.js} +1 -1
  64. package/payload/frontend/dist/assets/{sequenceDiagram-FGHM5R23-DxOP2gDa.js → sequenceDiagram-FGHM5R23-DaZNEccV.js} +1 -1
  65. package/payload/frontend/dist/assets/{stateDiagram-FHFEXIEX-NF_Qq5Cq.js → stateDiagram-FHFEXIEX-CkOLt5R1.js} +1 -1
  66. package/payload/frontend/dist/assets/stateDiagram-v2-QKLJ7IA2-atg1K4nB.js +1 -0
  67. package/payload/frontend/dist/assets/{status-2U71YpVe.js → status-CIIPajZp.js} +1 -1
  68. package/payload/frontend/dist/assets/suiji-C453W-Sg.js +1 -0
  69. package/payload/frontend/dist/assets/{svg-DpI3GSCw.js → svg-BUqAWGtg.js} +1 -1
  70. package/payload/frontend/dist/assets/{tabs-CYKuiiHg.js → tabs-Cwlp1Meu.js} +1 -1
  71. package/payload/frontend/dist/assets/{timeline-definition-GMOUNBTQ-ChEZSNF_.js → timeline-definition-GMOUNBTQ-BOKDMwHS.js} +1 -1
  72. package/payload/frontend/dist/assets/{vennDiagram-DHZGUBPP-Ch26SNbB.js → vennDiagram-DHZGUBPP-fSZjDS41.js} +1 -1
  73. package/payload/frontend/dist/assets/{wardley-RL74JXVD-D0ap5vv0.js → wardley-RL74JXVD-D1KIsvoD.js} +1 -1
  74. package/payload/frontend/dist/assets/{wardleyDiagram-NUSXRM2D-btdjsmHO.js → wardleyDiagram-NUSXRM2D-FMe67dwE.js} +1 -1
  75. package/payload/frontend/dist/assets/{xychartDiagram-5P7HB3ND-CklPtFGT.js → xychartDiagram-5P7HB3ND-B9AM9_9w.js} +1 -1
  76. package/payload/frontend/dist/build-info.json +4 -4
  77. package/payload/frontend/dist/companion.html +1 -1
  78. package/payload/frontend/dist/index.html +3 -3
  79. package/payload/packages/agent-bridge/src/install-pi.mjs +81 -0
  80. package/payload/plugins/pi/dist/SKILL.md +22 -0
  81. package/payload/plugins/pi/dist/bridge/app-server-client.cjs +82 -0
  82. package/payload/plugins/pi/dist/bridge/feishu_stop_notify.sh +169 -0
  83. package/payload/plugins/pi/dist/bridge/runweave-hook-bridge.cjs +583 -0
  84. package/payload/plugins/pi/dist/bridge/runweave-hook-completion.cjs +42 -0
  85. package/payload/plugins/pi/dist/bridge/runweave-hook-payload.cjs +578 -0
  86. package/payload/plugins/pi/dist/bridge/runweave-task-supervision.cjs +167 -0
  87. package/payload/plugins/pi/dist/runweave.js +316 -0
  88. package/payload/plugins/toolkit/.codex-plugin/plugin.json +31 -0
  89. package/payload/plugins/toolkit/README.md +185 -0
  90. package/payload/plugins/toolkit/hooks/AGENTS.md +6 -0
  91. package/payload/plugins/toolkit/hooks/app-server-client.cjs +82 -0
  92. package/payload/plugins/toolkit/hooks/feishu_stop_notify.sh +169 -0
  93. package/payload/plugins/toolkit/hooks/runweave-hook-bridge.cjs +583 -0
  94. package/payload/plugins/toolkit/hooks/runweave-hook-completion.cjs +42 -0
  95. package/payload/plugins/toolkit/hooks/runweave-hook-dispatch.cjs +123 -0
  96. package/payload/plugins/toolkit/hooks/runweave-hook-payload.cjs +578 -0
  97. package/payload/plugins/toolkit/hooks/runweave-task-supervision.cjs +167 -0
  98. package/payload/plugins/toolkit/hooks.json +108 -0
  99. package/payload/plugins/toolkit/skills/acceptance/SKILL.md +70 -0
  100. package/payload/plugins/toolkit/skills/acceptance/agents/openai.yaml +4 -0
  101. package/payload/plugins/toolkit/skills/acceptance/references/capture.md +38 -0
  102. package/payload/plugins/toolkit/skills/acceptance/references/delivery.md +54 -0
  103. package/payload/plugins/toolkit/skills/acceptance/references/gallery-contract.md +84 -0
  104. package/payload/plugins/toolkit/skills/acceptance/references/gallery-copy.md +34 -0
  105. package/payload/plugins/toolkit/skills/acceptance/references/video.md +52 -0
  106. package/payload/plugins/toolkit/skills/acceptance/scripts/capture.py +137 -0
  107. package/payload/plugins/toolkit/skills/acceptance/scripts/common.py +63 -0
  108. package/payload/plugins/toolkit/skills/acceptance/scripts/gallery.py +353 -0
  109. package/payload/plugins/toolkit/skills/acceptance/scripts/preview.py +109 -0
  110. package/payload/plugins/toolkit/skills/acceptance/scripts/video.py +283 -0
  111. package/payload/plugins/toolkit/skills/acceptance/templates/reader.css +576 -0
  112. package/payload/plugins/toolkit/skills/acceptance/templates/reader.html +63 -0
  113. package/payload/plugins/toolkit/skills/acceptance/templates/reader.js +326 -0
  114. package/payload/plugins/toolkit/skills/acceptance/templates/viewer.css +55 -0
  115. package/payload/plugins/toolkit/skills/acceptance-gallery/SKILL.md +8 -0
  116. package/payload/plugins/toolkit/skills/acceptance-gallery/agents/openai.yaml +6 -0
  117. package/payload/plugins/toolkit/skills/acceptance-gallery/references/capture-and-copy.md +3 -0
  118. package/payload/plugins/toolkit/skills/acceptance-gallery/references/content-contract.md +3 -0
  119. package/payload/plugins/toolkit/skills/acceptance-gallery/scripts/gallery.py +9 -0
  120. package/payload/plugins/toolkit/skills/acceptance-video/SKILL.md +8 -0
  121. package/payload/plugins/toolkit/skills/acceptance-video/agents/openai.yaml +6 -0
  122. package/payload/plugins/toolkit/skills/acceptance-video/references/input-and-capture.md +3 -0
  123. package/payload/plugins/toolkit/skills/acceptance-video/references/mobile-review.md +3 -0
  124. package/payload/plugins/toolkit/skills/acceptance-video/scripts/capture.py +9 -0
  125. package/payload/plugins/toolkit/skills/acceptance-video/scripts/video.py +9 -0
  126. package/payload/plugins/toolkit/skills/agent-device/SKILL.md +86 -0
  127. package/payload/plugins/toolkit/skills/agent-device/agents/openai.yaml +4 -0
  128. package/payload/plugins/toolkit/skills/agent-device/references/ios-setup.md +36 -0
  129. package/payload/plugins/toolkit/skills/agent-device/scripts/device.py +398 -0
  130. package/payload/plugins/toolkit/skills/agent-device/scripts/resources.py +248 -0
  131. package/payload/plugins/toolkit/skills/architecture-flow-prototyping/SKILL.md +128 -0
  132. package/payload/plugins/toolkit/skills/architecture-flow-prototyping/agents/openai.yaml +4 -0
  133. package/payload/plugins/toolkit/skills/architecture-flow-prototyping/references/architecture-flow-checklist.md +59 -0
  134. package/payload/plugins/toolkit/skills/architecture-flow-prototyping/references/architecture-flow-guide.md +135 -0
  135. package/payload/plugins/toolkit/skills/architecture-flow-prototyping/references/architecture-flow-handoff-template.md +57 -0
  136. package/payload/plugins/toolkit/skills/ask-first/SKILL.md +81 -0
  137. package/payload/plugins/toolkit/skills/brainstorming/SKILL.md +41 -0
  138. package/payload/plugins/toolkit/skills/browse-record/SKILL.md +35 -0
  139. package/payload/plugins/toolkit/skills/browse-record/references/app-usage.md +19 -0
  140. package/payload/plugins/toolkit/skills/browse-record/references/daily-reporting.md +115 -0
  141. package/payload/plugins/toolkit/skills/browse-record/references/zhihu.md +33 -0
  142. package/payload/plugins/toolkit/skills/browse-record/scripts/app_usage.py +110 -0
  143. package/payload/plugins/toolkit/skills/browse-record/scripts/browse_job.py +385 -0
  144. package/payload/plugins/toolkit/skills/browse-record/scripts/zhihu-read.js +126 -0
  145. package/payload/plugins/toolkit/skills/browse-record/scripts/zhihu_http.py +273 -0
  146. package/payload/plugins/toolkit/skills/clear-technical-explanations/LICENSE +21 -0
  147. package/payload/plugins/toolkit/skills/clear-technical-explanations/SKILL.md +103 -0
  148. package/payload/plugins/toolkit/skills/code-grounded-requirements/SKILL.md +54 -0
  149. package/payload/plugins/toolkit/skills/daily-doc-maintenance/SKILL.md +151 -0
  150. package/payload/plugins/toolkit/skills/daily-record/SKILL.md +63 -0
  151. package/payload/plugins/toolkit/skills/daily-record/agents/openai.yaml +4 -0
  152. package/payload/plugins/toolkit/skills/daily-record/references/browser-history.md +6 -0
  153. package/payload/plugins/toolkit/skills/daily-record/references/feishu.md +90 -0
  154. package/payload/plugins/toolkit/skills/daily-record/references/scheduled-reporting.md +144 -0
  155. package/payload/plugins/toolkit/skills/daily-record/references/scheduled-task.template.json +15 -0
  156. package/payload/plugins/toolkit/skills/daily-record/references/suiji-work-records.md +57 -0
  157. package/payload/plugins/toolkit/skills/daily-record/scripts/feishu.py +280 -0
  158. package/payload/plugins/toolkit/skills/daily-record/scripts/job.py +416 -0
  159. package/payload/plugins/toolkit/skills/daily-record/scripts/job_browser.py +77 -0
  160. package/payload/plugins/toolkit/skills/daily-record/scripts/job_facts.py +132 -0
  161. package/payload/plugins/toolkit/skills/daily-record/scripts/job_isolation.py +69 -0
  162. package/payload/plugins/toolkit/skills/daily-record/scripts/job_materials.py +154 -0
  163. package/payload/plugins/toolkit/skills/daily-record/scripts/job_screen.py +77 -0
  164. package/payload/plugins/toolkit/skills/daily-record/scripts/job_state.py +309 -0
  165. package/payload/plugins/toolkit/skills/daily-refactor/SKILL.md +101 -0
  166. package/payload/plugins/toolkit/skills/daily-refactor/scripts/compare-architecture-reports.mjs +168 -0
  167. package/payload/plugins/toolkit/skills/debugging-strategies/SKILL.md +38 -0
  168. package/payload/plugins/toolkit/skills/debugging-strategies/resources/implementation-playbook.md +520 -0
  169. package/payload/plugins/toolkit/skills/diagnostic-log-debugging/SKILL.md +79 -0
  170. package/payload/plugins/toolkit/skills/doc-coauthoring/SKILL.md +64 -0
  171. package/payload/plugins/toolkit/skills/eli5/LICENSE +21 -0
  172. package/payload/plugins/toolkit/skills/eli5/SKILL.md +18 -0
  173. package/payload/plugins/toolkit/skills/experience/SKILL.md +71 -0
  174. package/payload/plugins/toolkit/skills/experience/package.json +13 -0
  175. package/payload/plugins/toolkit/skills/git-advanced-workflows/SKILL.md +457 -0
  176. package/payload/plugins/toolkit/skills/github-pr/SKILL.md +109 -0
  177. package/payload/plugins/toolkit/skills/github-pr/scripts/github-access.mjs +292 -0
  178. package/payload/plugins/toolkit/skills/github-pr/scripts/preflight.mjs +191 -0
  179. package/payload/plugins/toolkit/skills/github-pr/scripts/source-worktree.mjs +354 -0
  180. package/payload/plugins/toolkit/skills/grill-with-docs/SKILL.md +66 -0
  181. package/payload/plugins/toolkit/skills/grill-with-docs/agents/openai.yaml +6 -0
  182. package/payload/plugins/toolkit/skills/grilling/SKILL.md +14 -0
  183. package/payload/plugins/toolkit/skills/handoff/SKILL.md +98 -0
  184. package/payload/plugins/toolkit/skills/karpathy-guidelines/SKILL.md +73 -0
  185. package/payload/plugins/toolkit/skills/playwright-cli/SKILL.md +562 -0
  186. package/payload/plugins/toolkit/skills/playwright-cli/references/element-attributes.md +23 -0
  187. package/payload/plugins/toolkit/skills/playwright-cli/references/playwright-tests.md +39 -0
  188. package/payload/plugins/toolkit/skills/playwright-cli/references/request-mocking.md +87 -0
  189. package/payload/plugins/toolkit/skills/playwright-cli/references/running-code.md +240 -0
  190. package/payload/plugins/toolkit/skills/playwright-cli/references/session-management.md +226 -0
  191. package/payload/plugins/toolkit/skills/playwright-cli/references/spec-driven-testing.md +312 -0
  192. package/payload/plugins/toolkit/skills/playwright-cli/references/storage-state.md +275 -0
  193. package/payload/plugins/toolkit/skills/playwright-cli/references/test-generation.md +138 -0
  194. package/payload/plugins/toolkit/skills/playwright-cli/references/tracing.md +142 -0
  195. package/payload/plugins/toolkit/skills/playwright-cli/references/video-recording.md +157 -0
  196. package/payload/plugins/toolkit/skills/playwright-cli/templates/standalone.config.json +7 -0
  197. package/payload/plugins/toolkit/skills/product-exploration/SKILL.md +64 -0
  198. package/payload/plugins/toolkit/skills/product-exploration/agents/openai.yaml +5 -0
  199. package/payload/plugins/toolkit/skills/prototype-first-development/SKILL.md +134 -0
  200. package/payload/plugins/toolkit/skills/prototype-first-development/references/html-prototype-template/README.md +88 -0
  201. package/payload/plugins/toolkit/skills/prototype-first-development/references/html-prototype-template/app.js +145 -0
  202. package/payload/plugins/toolkit/skills/prototype-first-development/references/html-prototype-template/index.html +229 -0
  203. package/payload/plugins/toolkit/skills/prototype-first-development/references/html-prototype-template/mock-state.json +60 -0
  204. package/payload/plugins/toolkit/skills/prototype-first-development/references/implementation-plan-handoff-template.md +61 -0
  205. package/payload/plugins/toolkit/skills/prototype-first-development/references/prototype-workflow-checklist.md +64 -0
  206. package/payload/plugins/toolkit/skills/publish-runweave-server/SKILL.md +64 -0
  207. package/payload/plugins/toolkit/skills/publish-runweave-server/agents/openai.yaml +4 -0
  208. package/payload/plugins/toolkit/skills/react-best-practices/AGENTS.md +3227 -0
  209. package/payload/plugins/toolkit/skills/react-best-practices/README.md +127 -0
  210. package/payload/plugins/toolkit/skills/react-best-practices/SKILL.md +143 -0
  211. package/payload/plugins/toolkit/skills/react-best-practices/metadata.json +15 -0
  212. package/payload/plugins/toolkit/skills/react-best-practices/rules/advanced/event-handler-refs.md +55 -0
  213. package/payload/plugins/toolkit/skills/react-best-practices/rules/advanced/init-once.md +42 -0
  214. package/payload/plugins/toolkit/skills/react-best-practices/rules/advanced/use-latest.md +39 -0
  215. package/payload/plugins/toolkit/skills/react-best-practices/rules/async/api-routes.md +38 -0
  216. package/payload/plugins/toolkit/skills/react-best-practices/rules/async/defer-await.md +80 -0
  217. package/payload/plugins/toolkit/skills/react-best-practices/rules/async/dependencies.md +52 -0
  218. package/payload/plugins/toolkit/skills/react-best-practices/rules/async/parallel.md +28 -0
  219. package/payload/plugins/toolkit/skills/react-best-practices/rules/async/suspense-boundaries.md +99 -0
  220. package/payload/plugins/toolkit/skills/react-best-practices/rules/bundle/barrel-imports.md +59 -0
  221. package/payload/plugins/toolkit/skills/react-best-practices/rules/bundle/conditional.md +37 -0
  222. package/payload/plugins/toolkit/skills/react-best-practices/rules/bundle/defer-third-party.md +49 -0
  223. package/payload/plugins/toolkit/skills/react-best-practices/rules/bundle/dynamic-imports.md +35 -0
  224. package/payload/plugins/toolkit/skills/react-best-practices/rules/bundle/preload.md +46 -0
  225. package/payload/plugins/toolkit/skills/react-best-practices/rules/client/event-listeners.md +78 -0
  226. package/payload/plugins/toolkit/skills/react-best-practices/rules/client/localstorage-schema.md +77 -0
  227. package/payload/plugins/toolkit/skills/react-best-practices/rules/client/passive-event-listeners.md +48 -0
  228. package/payload/plugins/toolkit/skills/react-best-practices/rules/client/swr-dedup.md +56 -0
  229. package/payload/plugins/toolkit/skills/react-best-practices/rules/js/batch-dom-css.md +110 -0
  230. package/payload/plugins/toolkit/skills/react-best-practices/rules/js/cache-function-results.md +80 -0
  231. package/payload/plugins/toolkit/skills/react-best-practices/rules/js/cache-property-access.md +28 -0
  232. package/payload/plugins/toolkit/skills/react-best-practices/rules/js/cache-storage.md +70 -0
  233. package/payload/plugins/toolkit/skills/react-best-practices/rules/js/combine-iterations.md +32 -0
  234. package/payload/plugins/toolkit/skills/react-best-practices/rules/js/early-exit.md +50 -0
  235. package/payload/plugins/toolkit/skills/react-best-practices/rules/js/flatmap-filter.md +55 -0
  236. package/payload/plugins/toolkit/skills/react-best-practices/rules/js/hoist-regexp.md +45 -0
  237. package/payload/plugins/toolkit/skills/react-best-practices/rules/js/index-maps.md +37 -0
  238. package/payload/plugins/toolkit/skills/react-best-practices/rules/js/length-check-first.md +50 -0
  239. package/payload/plugins/toolkit/skills/react-best-practices/rules/js/min-max-loop.md +82 -0
  240. package/payload/plugins/toolkit/skills/react-best-practices/rules/js/set-map-lookups.md +24 -0
  241. package/payload/plugins/toolkit/skills/react-best-practices/rules/js/tosorted-immutable.md +57 -0
  242. package/payload/plugins/toolkit/skills/react-best-practices/rules/meta/sections.md +46 -0
  243. package/payload/plugins/toolkit/skills/react-best-practices/rules/meta/template.md +28 -0
  244. package/payload/plugins/toolkit/skills/react-best-practices/rules/rendering/activity.md +26 -0
  245. package/payload/plugins/toolkit/skills/react-best-practices/rules/rendering/animate-svg-wrapper.md +38 -0
  246. package/payload/plugins/toolkit/skills/react-best-practices/rules/rendering/conditional-render.md +32 -0
  247. package/payload/plugins/toolkit/skills/react-best-practices/rules/rendering/content-visibility.md +38 -0
  248. package/payload/plugins/toolkit/skills/react-best-practices/rules/rendering/hoist-jsx.md +36 -0
  249. package/payload/plugins/toolkit/skills/react-best-practices/rules/rendering/hydration-no-flicker.md +72 -0
  250. package/payload/plugins/toolkit/skills/react-best-practices/rules/rendering/hydration-suppress-warning.md +26 -0
  251. package/payload/plugins/toolkit/skills/react-best-practices/rules/rendering/resource-hints.md +89 -0
  252. package/payload/plugins/toolkit/skills/react-best-practices/rules/rendering/script-defer-async.md +71 -0
  253. package/payload/plugins/toolkit/skills/react-best-practices/rules/rendering/svg-precision.md +28 -0
  254. package/payload/plugins/toolkit/skills/react-best-practices/rules/rendering/usetransition-loading.md +75 -0
  255. package/payload/plugins/toolkit/skills/react-best-practices/rules/rerender/defer-reads.md +39 -0
  256. package/payload/plugins/toolkit/skills/react-best-practices/rules/rerender/dependencies.md +45 -0
  257. package/payload/plugins/toolkit/skills/react-best-practices/rules/rerender/derived-state-no-effect.md +40 -0
  258. package/payload/plugins/toolkit/skills/react-best-practices/rules/rerender/derived-state.md +29 -0
  259. package/payload/plugins/toolkit/skills/react-best-practices/rules/rerender/functional-setstate.md +77 -0
  260. package/payload/plugins/toolkit/skills/react-best-practices/rules/rerender/lazy-state-init.md +58 -0
  261. package/payload/plugins/toolkit/skills/react-best-practices/rules/rerender/memo-with-default-value.md +36 -0
  262. package/payload/plugins/toolkit/skills/react-best-practices/rules/rerender/memo.md +44 -0
  263. package/payload/plugins/toolkit/skills/react-best-practices/rules/rerender/move-effect-to-event.md +45 -0
  264. package/payload/plugins/toolkit/skills/react-best-practices/rules/rerender/no-inline-components.md +83 -0
  265. package/payload/plugins/toolkit/skills/react-best-practices/rules/rerender/simple-expression-in-memo.md +35 -0
  266. package/payload/plugins/toolkit/skills/react-best-practices/rules/rerender/transitions.md +40 -0
  267. package/payload/plugins/toolkit/skills/react-best-practices/rules/rerender/use-ref-transient-values.md +73 -0
  268. package/payload/plugins/toolkit/skills/react-best-practices/rules/server/after-nonblocking.md +74 -0
  269. package/payload/plugins/toolkit/skills/react-best-practices/rules/server/auth-actions.md +96 -0
  270. package/payload/plugins/toolkit/skills/react-best-practices/rules/server/cache-lru.md +41 -0
  271. package/payload/plugins/toolkit/skills/react-best-practices/rules/server/cache-react.md +76 -0
  272. package/payload/plugins/toolkit/skills/react-best-practices/rules/server/dedup-props.md +65 -0
  273. package/payload/plugins/toolkit/skills/react-best-practices/rules/server/hoist-static-io.md +139 -0
  274. package/payload/plugins/toolkit/skills/react-best-practices/rules/server/parallel-fetching.md +83 -0
  275. package/payload/plugins/toolkit/skills/react-best-practices/rules/server/serialization.md +38 -0
  276. package/payload/plugins/toolkit/skills/recorded-browser-mcp-verification/SKILL.md +8 -0
  277. package/payload/plugins/toolkit/skills/recorded-browser-mcp-verification/agents/openai.yaml +6 -0
  278. package/payload/plugins/toolkit/skills/reproduce-before-fix/SKILL.md +93 -0
  279. package/payload/plugins/toolkit/skills/reproduce-before-fix/agents/openai.yaml +7 -0
  280. package/payload/plugins/toolkit/skills/review-only/SKILL.md +72 -0
  281. package/payload/plugins/toolkit/skills/review-with-runtime-evidence/SKILL.md +134 -0
  282. package/payload/plugins/toolkit/skills/review-with-runtime-evidence/agents/openai.yaml +7 -0
  283. package/payload/plugins/toolkit/skills/review-with-runtime-evidence/references/contracts.md +114 -0
  284. package/payload/plugins/toolkit/skills/review-with-runtime-evidence/scripts/classify-runtime-verdict.mjs +140 -0
  285. package/payload/plugins/toolkit/skills/review-with-runtime-evidence/scripts/run-static-review.mjs +389 -0
  286. package/payload/plugins/toolkit/skills/review-with-runtime-evidence/scripts/static-review-contract.mjs +243 -0
  287. package/payload/plugins/toolkit/skills/run-test-cases/SKILL.md +63 -0
  288. package/payload/plugins/toolkit/skills/runweave-change-validation/SKILL.md +196 -0
  289. package/payload/plugins/toolkit/skills/runweave-change-validation/agents/openai.yaml +7 -0
  290. package/payload/plugins/toolkit/skills/runweave-change-validation/scripts/assert-dev-session-status.mjs +181 -0
  291. package/payload/plugins/toolkit/skills/runweave-dev-session/SKILL.md +126 -0
  292. package/payload/plugins/toolkit/skills/runweave-dev-session/agents/openai.yaml +7 -0
  293. package/payload/plugins/toolkit/skills/runweave-management/SKILL.md +47 -0
  294. package/payload/plugins/toolkit/skills/scheduled-task/SKILL.md +35 -0
  295. package/payload/plugins/toolkit/skills/shadcn/SKILL.md +245 -0
  296. package/payload/plugins/toolkit/skills/shadcn/agents/openai.yml +5 -0
  297. package/payload/plugins/toolkit/skills/shadcn/assets/shadcn-small.png +0 -0
  298. package/payload/plugins/toolkit/skills/shadcn/assets/shadcn.png +0 -0
  299. package/payload/plugins/toolkit/skills/shadcn/cli.md +276 -0
  300. package/payload/plugins/toolkit/skills/shadcn/customization.md +209 -0
  301. package/payload/plugins/toolkit/skills/shadcn/evals/evals.json +47 -0
  302. package/payload/plugins/toolkit/skills/shadcn/mcp.md +94 -0
  303. package/payload/plugins/toolkit/skills/shadcn/rules/base-vs-radix.md +310 -0
  304. package/payload/plugins/toolkit/skills/shadcn/rules/composition.md +197 -0
  305. package/payload/plugins/toolkit/skills/shadcn/rules/forms.md +198 -0
  306. package/payload/plugins/toolkit/skills/shadcn/rules/icons.md +101 -0
  307. package/payload/plugins/toolkit/skills/shadcn/rules/styling.md +163 -0
  308. package/payload/plugins/toolkit/skills/suiji/SKILL.md +54 -0
  309. package/payload/plugins/toolkit/skills/suiji/references/api.md +72 -0
  310. package/payload/plugins/toolkit/skills/suiji/references/source-adapter.md +40 -0
  311. package/payload/plugins/toolkit/skills/suiji/references/work-records.md +36 -0
  312. package/payload/plugins/toolkit/skills/suiji/scripts/source_adapter.py +46 -0
  313. package/payload/plugins/toolkit/skills/suiji/scripts/suiji.py +358 -0
  314. package/payload/plugins/toolkit/skills/suiji/scripts/work_records.py +328 -0
  315. package/payload/plugins/toolkit/skills/suiji/scripts/work_reports.py +75 -0
  316. package/payload/plugins/toolkit/skills/sync-branch-hard-reset/SKILL.md +59 -0
  317. package/payload/plugins/toolkit/skills/update-runweave-backend/SKILL.md +90 -0
  318. package/payload/plugins/toolkit/skills/update-runweave-backend/agents/openai.yaml +4 -0
  319. package/payload/plugins/toolkit/skills/update-runweave-backend/references/npm-update.md +68 -0
  320. package/payload/plugins/toolkit/skills/update-runweave-backend/references/systemd.md +34 -0
  321. package/payload/plugins/toolkit/skills/update-runweave-desktop/SKILL.md +102 -0
  322. package/payload/plugins/toolkit/skills/update-runweave-ios/SKILL.md +16 -0
  323. package/payload/plugins/toolkit/skills/update-runweave-ios/references/ios-wireless-recovery.md +54 -0
  324. package/payload/plugins/toolkit/skills/using-rw/SKILL.md +265 -0
  325. package/payload/plugins/toolkit/skills/write-plan/SKILL.md +72 -0
  326. package/payload/plugins/toolkit/skills/write-test-cases/SKILL.md +100 -0
  327. package/payload/plugins/toolkit/skills/write-test-cases/assets/test-plan-template.yaml +15 -0
  328. package/payload/plugins/toolkit/skills/write-test-cases/references/coverage-checklist.md +75 -0
  329. package/payload/plugins/toolkit/skills/write-test-cases/references/design-techniques.md +91 -0
  330. package/payload/plugins/toolkit/skills/youtube-reading/SKILL.md +35 -0
  331. package/payload/plugins/toolkit/skills/youtube-reading/agents/openai.yaml +4 -0
  332. package/payload/plugins/toolkit/skills/youtube-reading/assets/runtime-lock.json +92 -0
  333. package/payload/plugins/toolkit/skills/youtube-reading/references/content-contract.md +52 -0
  334. package/payload/plugins/toolkit/skills/youtube-reading/references/setup.md +70 -0
  335. package/payload/plugins/toolkit/skills/youtube-reading/requirements.lock +9 -0
  336. package/payload/plugins/toolkit/skills/youtube-reading/scripts/artifacts.py +206 -0
  337. package/payload/plugins/toolkit/skills/youtube-reading/scripts/runtime.py +424 -0
  338. package/payload/plugins/toolkit/skills/youtube-reading/scripts/youtube_reading.py +314 -0
  339. package/payload/plugins/toolkit-release.json +1 -0
  340. package/payload/scripts/toolkit/codex-state.mjs +75 -0
  341. package/payload/scripts/toolkit/release.mjs +210 -0
  342. package/payload/scripts/toolkit/sync-runtime.mjs +108 -0
  343. package/payload/scripts/toolkit/sync.mjs +585 -0
  344. package/payload/frontend/dist/assets/channel-CuSisha8.js +0 -1
  345. package/payload/frontend/dist/assets/classDiagram-6PBFFD2Q-ClJkT7PY.js +0 -1
  346. package/payload/frontend/dist/assets/classDiagram-v2-HSJHXN6E-ClJkT7PY.js +0 -1
  347. package/payload/frontend/dist/assets/clone-CPcyXi9g.js +0 -1
  348. package/payload/frontend/dist/assets/connection-BhcgnOMb.js +0 -12
  349. package/payload/frontend/dist/assets/main-BDBhLSX2.js +0 -696
  350. package/payload/frontend/dist/assets/main-Cg6Oo1xK.css +0 -33
  351. package/payload/frontend/dist/assets/stateDiagram-v2-QKLJ7IA2-DhdOfEAv.js +0 -1
  352. package/payload/frontend/dist/assets/suiji-DXtfgwxj.js +0 -1
@@ -0,0 +1,354 @@
1
+ #!/usr/bin/env node
2
+ import { spawnSync } from "node:child_process";
3
+ import fs from "node:fs";
4
+ import path from "node:path";
5
+ import { createHash, randomUUID } from "node:crypto";
6
+
7
+ // Capture before copying/staging. Receipts contain recovery data, never stdout.
8
+ const env = { ...process.env };
9
+ for (const key of [
10
+ "GIT_DIR",
11
+ "GIT_WORK_TREE",
12
+ "GIT_COMMON_DIR",
13
+ "GIT_INDEX_FILE",
14
+ ])
15
+ delete env[key];
16
+ env.GIT_OPTIONAL_LOCKS = "0";
17
+ function git(cwd, args, optional = false) {
18
+ const result = spawnSync("git", ["-C", cwd, ...args], {
19
+ env,
20
+ encoding: "utf8",
21
+ maxBuffer: 32 * 1024 * 1024,
22
+ });
23
+ if (result.error || result.status !== 0) {
24
+ if (optional && !result.error) return null;
25
+ throw new Error(result.error?.message ?? result.stderr.trim());
26
+ }
27
+ return result.stdout;
28
+ }
29
+ const digest = (bytes) => createHash("sha256").update(bytes).digest("hex");
30
+ const split = (value) => value.split("\0").filter(Boolean);
31
+ function tree(cwd, revision) {
32
+ return Object.fromEntries(
33
+ split(git(cwd, ["ls-tree", "-r", "-z", revision])).map((entry) => {
34
+ const tab = entry.indexOf("\t");
35
+ const [mode, , oid] = entry.slice(0, tab).split(" ");
36
+ return [entry.slice(tab + 1), { mode, oid }];
37
+ }),
38
+ );
39
+ }
40
+ function state(cwd) {
41
+ const head = git(cwd, ["rev-parse", "HEAD"]).trim();
42
+ const baseline = tree(cwd, head);
43
+ const indexPath = path.resolve(
44
+ cwd,
45
+ git(cwd, ["rev-parse", "--git-path", "index"]).trim(),
46
+ );
47
+ const index = fs.readFileSync(indexPath).toString("base64");
48
+ const entries = Object.fromEntries(
49
+ split(git(cwd, ["ls-files", "--stage", "-z"])).map((entry) => {
50
+ const tab = entry.indexOf("\t");
51
+ const [mode, oid, stage] = entry.slice(0, tab).split(" ");
52
+ if (stage !== "0")
53
+ throw new Error("Unmerged index; retain source worktree");
54
+ return [entry.slice(tab + 1), { mode, oid }];
55
+ }),
56
+ );
57
+ const names = new Set([
58
+ ...split(git(cwd, ["diff", "HEAD", "--name-only", "--no-renames", "-z"])),
59
+ ...split(
60
+ git(cwd, ["diff", "--cached", "--name-only", "--no-renames", "-z"]),
61
+ ),
62
+ ...split(git(cwd, ["ls-files", "--others", "--exclude-standard", "-z"])),
63
+ ]);
64
+ const fileMode =
65
+ git(cwd, ["config", "--get", "core.filemode"], true)?.trim() !== "false";
66
+ const files = {};
67
+ for (const name of [...names].sort()) {
68
+ const full = path.join(cwd, name);
69
+ let stat;
70
+ try {
71
+ stat = fs.lstatSync(full);
72
+ } catch (error) {
73
+ if (error.code !== "ENOENT") throw error;
74
+ }
75
+ if (!stat) {
76
+ files[name] = { working: null, index: entries[name] ?? null };
77
+ continue;
78
+ }
79
+ if (!stat.isFile() && !stat.isSymbolicLink())
80
+ throw new Error(`Unsupported path: ${name}`);
81
+ const bytes = stat.isSymbolicLink()
82
+ ? Buffer.from(fs.readlinkSync(full))
83
+ : fs.readFileSync(full);
84
+ const mode = stat.isSymbolicLink()
85
+ ? "120000"
86
+ : !fileMode && entries[name]
87
+ ? entries[name].mode
88
+ : stat.mode & 0o111
89
+ ? "100755"
90
+ : "100644";
91
+ const oid = stat.isSymbolicLink()
92
+ ? spawnSync("git", ["-C", cwd, "hash-object", "--stdin"], {
93
+ env,
94
+ input: bytes,
95
+ encoding: "utf8",
96
+ })
97
+ : { status: 0, stdout: git(cwd, ["hash-object", "--", name]) };
98
+ if (oid.status !== 0) throw new Error(`Cannot hash ${name}`);
99
+ files[name] = {
100
+ working: { mode, oid: oid.stdout.trim() },
101
+ index: entries[name] ?? null,
102
+ rawSHA256: digest(bytes),
103
+ data: bytes.toString("base64"),
104
+ permissions: stat.mode & 0o777,
105
+ tracked: Boolean(baseline[name]),
106
+ };
107
+ }
108
+ return { head, indexPath, index, files };
109
+ }
110
+ const equal = (left, right) =>
111
+ JSON.stringify(left ?? null) === JSON.stringify(right ?? null);
112
+ function inspect(receipt, targetRef) {
113
+ const cwd = receipt.cwd;
114
+ if (
115
+ fs.realpathSync(
116
+ path.resolve(cwd, git(cwd, ["rev-parse", "--git-common-dir"]).trim()),
117
+ ) !== receipt.repository
118
+ ) {
119
+ throw new Error("Source repository identity changed");
120
+ }
121
+ const target = git(cwd, [
122
+ "rev-parse",
123
+ "--verify",
124
+ `${targetRef}^{commit}`,
125
+ ]).trim();
126
+ const current = state(cwd),
127
+ targetTree = tree(cwd, target);
128
+ const changed = [
129
+ ...new Set([
130
+ ...Object.keys(receipt.snapshot.files),
131
+ ...Object.keys(current.files),
132
+ ]),
133
+ ].filter((name) => !equal(receipt.snapshot.files[name], current.files[name]));
134
+ const covered = [],
135
+ retained = [];
136
+ for (const [name, file] of Object.entries(current.files)) {
137
+ if (
138
+ receipt.ownedPaths.includes(name) &&
139
+ equal(file.working, targetTree[name])
140
+ )
141
+ covered.push(name);
142
+ else retained.push(name);
143
+ }
144
+ const base = git(cwd, ["merge-base", current.head, target]).trim();
145
+ const sourceTree = tree(cwd, current.head);
146
+ const historyUncovered = split(
147
+ git(cwd, ["diff", "--name-only", "--no-renames", "-z", base, current.head]),
148
+ ).filter(
149
+ (name) =>
150
+ !equal(
151
+ covered.includes(name) ? current.files[name].working : sourceTree[name],
152
+ targetTree[name],
153
+ ),
154
+ );
155
+ // A staged version differing from the final working file is a separate payload.
156
+ const indexUncovered = covered.filter((name) => {
157
+ const file = current.files[name];
158
+ return (
159
+ !equal(file.index, sourceTree[name]) && !equal(file.index, file.working)
160
+ );
161
+ });
162
+ return {
163
+ target,
164
+ current,
165
+ covered,
166
+ retained,
167
+ changed,
168
+ historyUncovered,
169
+ indexUncovered,
170
+ canFinish:
171
+ current.head === receipt.snapshot.head &&
172
+ current.index === receipt.snapshot.index &&
173
+ changed.length === 0 &&
174
+ historyUncovered.length === 0 &&
175
+ indexUncovered.length === 0,
176
+ };
177
+ }
178
+ function restoreIndex(snapshot) {
179
+ const lock = `${snapshot.indexPath}.lock`;
180
+ fs.writeFileSync(lock, Buffer.from(snapshot.index, "base64"), {
181
+ flag: "wx",
182
+ mode: 0o600,
183
+ });
184
+ fs.renameSync(lock, snapshot.indexPath);
185
+ }
186
+ function finish(receipt, audit, receiptPath) {
187
+ if (!audit.canFinish)
188
+ throw new Error(
189
+ "Source changed or contains unpublished history/index content; inspect receipt and retain source",
190
+ );
191
+ const cwd = receipt.cwd,
192
+ snapshot = audit.current;
193
+ const backupRef = `refs/heads/backup/pr-source-${randomUUID()}`;
194
+ git(cwd, [
195
+ "update-ref",
196
+ backupRef,
197
+ snapshot.head,
198
+ "0".repeat(snapshot.head.length),
199
+ ]);
200
+ // Re-check before entering rollback: a changed source must never be restored.
201
+ if (!equal(state(cwd), snapshot))
202
+ throw new Error("Source changed before synchronization");
203
+ const removed = [];
204
+ let stagedIndex;
205
+ try {
206
+ for (const name of audit.covered) {
207
+ const file = snapshot.files[name];
208
+ if (!file.tracked && !file.index) {
209
+ fs.unlinkSync(path.join(cwd, name));
210
+ removed.push(name);
211
+ } else {
212
+ git(cwd, ["add", "--", name]);
213
+ }
214
+ }
215
+ stagedIndex = fs.readFileSync(snapshot.indexPath).toString("base64");
216
+ // No --force, reset, clean or stash: Git refuses overlapping residual edits.
217
+ git(cwd, ["checkout", "--detach", audit.target]);
218
+ } catch (error) {
219
+ if (git(cwd, ["rev-parse", "HEAD"]).trim() === snapshot.head) {
220
+ if (
221
+ stagedIndex &&
222
+ fs.readFileSync(snapshot.indexPath).toString("base64") !== stagedIndex
223
+ ) {
224
+ throw new Error(
225
+ `Index changed; retain recovery receipt ${receiptPath}: ${error.message}`,
226
+ );
227
+ }
228
+ restoreIndex(snapshot);
229
+ for (const name of removed) {
230
+ const file = snapshot.files[name],
231
+ full = path.join(cwd, name);
232
+ fs.mkdirSync(path.dirname(full), { recursive: true });
233
+ if (file.working.mode === "120000")
234
+ fs.symlinkSync(Buffer.from(file.data, "base64").toString(), full);
235
+ else
236
+ fs.writeFileSync(full, Buffer.from(file.data, "base64"), {
237
+ flag: "wx",
238
+ mode: file.permissions,
239
+ });
240
+ }
241
+ }
242
+ throw new Error(
243
+ `Synchronization incomplete; backup ${backupRef}, receipt ${receiptPath}: ${error.message}`,
244
+ );
245
+ }
246
+ const after = state(cwd);
247
+ const mismatches = audit.covered.filter((name) => after.files[name]);
248
+ for (const name of audit.retained) {
249
+ const before = snapshot.files[name],
250
+ next = after.files[name];
251
+ if (
252
+ !next ||
253
+ before.rawSHA256 !== next.rawSHA256 ||
254
+ !equal(before.working, next.working) ||
255
+ !equal(before.index, next.index)
256
+ )
257
+ mismatches.push(name);
258
+ }
259
+ if (after.head !== audit.target || mismatches.length) {
260
+ throw new Error(
261
+ `Post-sync verification failed; retain backup ${backupRef} and receipt ${receiptPath}: ${mismatches.join(", ")}`,
262
+ );
263
+ }
264
+ return {
265
+ synchronized: true,
266
+ target: audit.target,
267
+ covered: audit.covered,
268
+ retained: audit.retained,
269
+ backupRef,
270
+ receipt: receiptPath,
271
+ };
272
+ }
273
+
274
+ try {
275
+ const [command, first, second, third, ...rest] = process.argv.slice(2);
276
+ if (command === "capture" && first && second && third && rest.length === 0) {
277
+ const cwd = fs.realpathSync(
278
+ git(path.resolve(first), ["rev-parse", "--show-toplevel"]).trim(),
279
+ );
280
+ const receiptPath = path.resolve(second),
281
+ scopePath = path.resolve(third);
282
+ if (receiptPath === cwd || receiptPath.startsWith(`${cwd}${path.sep}`))
283
+ throw new Error("Keep recovery receipt outside source worktree");
284
+ const ownedPaths = JSON.parse(fs.readFileSync(scopePath, "utf8"));
285
+ if (
286
+ !Array.isArray(ownedPaths) ||
287
+ ownedPaths.some(
288
+ (name) =>
289
+ typeof name !== "string" ||
290
+ !name ||
291
+ path.isAbsolute(name) ||
292
+ name.split("/").includes(".."),
293
+ )
294
+ )
295
+ throw new Error(
296
+ "Scope must be a JSON array of repository-relative paths",
297
+ );
298
+ const repository = fs.realpathSync(
299
+ path.resolve(cwd, git(cwd, ["rev-parse", "--git-common-dir"]).trim()),
300
+ );
301
+ const snapshot = state(cwd);
302
+ if (!equal(snapshot, state(cwd)))
303
+ throw new Error("Source changed during capture");
304
+ fs.writeFileSync(
305
+ receiptPath,
306
+ JSON.stringify({ version: 1, cwd, repository, ownedPaths, snapshot }),
307
+ { flag: "wx", mode: 0o600 },
308
+ );
309
+ console.log(
310
+ JSON.stringify({
311
+ captured: true,
312
+ source: cwd,
313
+ head: snapshot.head,
314
+ receipt: receiptPath,
315
+ }),
316
+ );
317
+ } else if (
318
+ ["inspect", "finish"].includes(command) &&
319
+ first &&
320
+ second &&
321
+ rest.length === 0 &&
322
+ (command === "inspect" ? !third : third === "--source-idle")
323
+ ) {
324
+ const receiptPath = path.resolve(first),
325
+ receipt = JSON.parse(fs.readFileSync(receiptPath, "utf8"));
326
+ if (receipt.version !== 1) throw new Error("Unsupported receipt version");
327
+ const audit = inspect(receipt, second);
328
+ console.log(
329
+ JSON.stringify(
330
+ command === "finish"
331
+ ? finish(receipt, audit, receiptPath)
332
+ : {
333
+ source: receipt.cwd,
334
+ target: audit.target,
335
+ sourceHeadChanged: audit.current.head !== receipt.snapshot.head,
336
+ sourceIndexChanged:
337
+ audit.current.index !== receipt.snapshot.index,
338
+ covered: audit.covered,
339
+ retained: audit.retained,
340
+ changed: audit.changed,
341
+ historyUncovered: audit.historyUncovered,
342
+ indexUncovered: audit.indexUncovered,
343
+ canFinish: audit.canFinish,
344
+ },
345
+ ),
346
+ );
347
+ } else
348
+ throw new Error(
349
+ "Usage: source-worktree.mjs capture <source> <receipt.json> <scope.json> | inspect <receipt.json> <target> | finish <receipt.json> <target> --source-idle",
350
+ );
351
+ } catch (error) {
352
+ console.error(JSON.stringify({ synchronized: false, error: error.message }));
353
+ process.exitCode = 1;
354
+ }
@@ -0,0 +1,66 @@
1
+ ---
2
+ name: grill-with-docs
3
+ description: Stress-test a feature or design through a repo-grounded interview while recording resolved domain language in CONTEXT.md and durable architectural decisions in ADRs. Use when a codebase needs both design alignment and a documentation trail; do not use for a discussion that should not modify project docs.
4
+ metadata:
5
+ source: "https://github.com/mattpocock/skills/tree/main/skills/engineering/grill-with-docs"
6
+ adapted_for: "Runweave Toolkit"
7
+ ---
8
+
9
+ # Grill with Docs
10
+
11
+ Turn an unsettled feature or design into shared understanding and durable project knowledge. Combine a rigorous design interview with active domain modeling. Do not implement the design while this skill is active.
12
+
13
+ ## Ground the discussion
14
+
15
+ Before asking a question:
16
+
17
+ 1. Read the repository instructions and any plan or draft the user identified.
18
+ 2. Locate the relevant `CONTEXT.md`. If the repository has `CONTEXT-MAP.md`, use it to select the bounded context; otherwise use the repository-level context.
19
+ 3. Read relevant ADRs and inspect the code paths that can establish current behavior.
20
+
21
+ Finding facts is the agent's job. Answer questions from the repository or available tools instead of asking the user to rediscover facts.
22
+
23
+ ## Run the grill
24
+
25
+ Map the design as a decision tree and resolve prerequisite decisions before dependent ones.
26
+
27
+ - Ask one high-value decision question at a time and wait for the user's answer.
28
+ - Give a recommended answer with the concrete reason and important trade-off.
29
+ - Challenge vague, overloaded, or contradictory terms. Propose one canonical term when that will make the model clearer.
30
+ - Use concrete scenarios and edge cases to test the boundaries between concepts.
31
+ - When the user's description conflicts with existing docs or code, show the evidence and ask which behavior is authoritative.
32
+ - Recompute the unresolved decision tree after every answer.
33
+
34
+ Do not start implementation, write a specification, or create tickets until the user confirms that shared understanding has been reached.
35
+
36
+ ## Record resolved language
37
+
38
+ Update the relevant `CONTEXT.md` as soon as a domain term is resolved. Preserve the file's existing structure and vocabulary.
39
+
40
+ `CONTEXT.md` is a glossary:
41
+
42
+ - Define domain concepts, distinctions, relationships, and invariants in the project's language.
43
+ - Do not add implementation details, design alternatives, task lists, or specification content.
44
+ - Create the file lazily only after the first stable term is resolved.
45
+
46
+ If unrelated user changes already exist in the file, preserve them and edit only the resolved entry.
47
+
48
+ ## Record durable decisions
49
+
50
+ Offer an ADR only when all three conditions are true:
51
+
52
+ 1. Reversing the decision later would have meaningful cost.
53
+ 2. A future reader would find the choice surprising without its context.
54
+ 3. The decision resolves a real trade-off between credible alternatives.
55
+
56
+ If any condition is missing, do not create an ADR. Follow the repository's existing ADR convention; when none exists, use `docs/adr/` and continue its numeric sequence. Record the context, decision, alternatives, and consequences without turning the ADR into an implementation plan.
57
+
58
+ ## Finish
59
+
60
+ The grill is complete only when every reachable decision branch is resolved and the user confirms shared understanding. Then report:
61
+
62
+ - the agreed design boundaries;
63
+ - the glossary entries and ADRs created or changed;
64
+ - any explicitly deferred questions.
65
+
66
+ If no term or decision met the documentation threshold, leave the repository unchanged and say so.
@@ -0,0 +1,6 @@
1
+ interface:
2
+ display_name: "Grill with Docs"
3
+ short_description: "Stress-test a design and preserve its decisions"
4
+ default_prompt: "Use $grill-with-docs to challenge this design and record the resulting domain terms and durable decisions."
5
+ policy:
6
+ allow_implicit_invocation: false
@@ -0,0 +1,14 @@
1
+ ---
2
+ name: grilling
3
+ description: Grill the user relentlessly about a plan or design. Use when the user wants to stress-test a plan before building, or uses any 'grill' trigger phrases.
4
+ ---
5
+
6
+ # Grilling
7
+
8
+ Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.
9
+
10
+ Ask the questions one at a time, waiting for feedback on each question before continuing. Asking multiple questions at once is bewildering.
11
+
12
+ If a question can be answered by exploring the codebase, explore the codebase instead.
13
+
14
+ Do not enact the plan until I confirm we have reached a shared understanding.
@@ -0,0 +1,98 @@
1
+ ---
2
+ name: handoff
3
+ description: 当用户明确要求“交接”“handoff”“把当前任务交给另一个 Agent”时使用;把当前任务写成自包含的 Markdown 交接文档,再让一个零对话上下文的新 Agent 在当前工作区按文档执行。不要用于普通任务拆分、并行调研或任务编排。
4
+ ---
5
+
6
+ # Handoff
7
+
8
+ 把当前任务交给一个全新的执行 Agent。交接以磁盘上的 Markdown 文档为唯一任务合同,不复制当前对话,也不引入 Runweave 后端、专属 UI 或通知协议。
9
+
10
+ ## 边界
11
+
12
+ - 仅在用户明确要求交接时触发。
13
+ - 新 Agent 必须在当前工作区执行;Worktree 创建、跨 Workspace 放置和长期 Agent 管理不属于本 skill。
14
+ - 新 Agent 从零对话上下文启动,只能依赖仓库文件和交接文档。
15
+ - 当前 Agent 完成交接后不得继续修改目标文件,避免与执行 Agent 竞争。
16
+ - 交接不扩大授权。只读、诊断、实现、提交、推送等语义必须与用户原始要求一致。
17
+
18
+ ## 写交接文档
19
+
20
+ 将文档写入 `.runweave/handoffs/<YYYYMMDD-HHmmss>-<task-slug>.md`。创建前读取当前任务涉及的代码、最近的 `AGENTS.md` 和必要的 Git 状态,不凭记忆补全事实。
21
+
22
+ 文档必须让不了解当前对话的人直接执行,按需包含:
23
+
24
+ ```markdown
25
+ # Handoff: <任务标题>
26
+
27
+ ## Task
28
+
29
+ 用祈使句准确描述要完成的工作,并明确是调查、评审、修改还是交付。
30
+
31
+ ## User intent
32
+
33
+ 记录用户真正要解决的问题和已经明确的取舍,不擅自扩大目标。
34
+
35
+ ## Context
36
+
37
+ 说明任务为何存在,以及理解任务所需的最少背景。
38
+
39
+ ## Relevant files
40
+
41
+ - `path/to/file`:职责和与任务的关系
42
+
43
+ ## Current state
44
+
45
+ 已经完成什么、什么仍未完成、当前已知行为是什么。
46
+
47
+ ## What was tried
48
+
49
+ - 尝试及结果;没有则写“无”。
50
+
51
+ ## Decisions
52
+
53
+ - 已确定的决定及原因。
54
+
55
+ ## Acceptance criteria
56
+
57
+ - [ ] 可独立判断通过或失败的标准。
58
+
59
+ ## Constraints
60
+
61
+ - 必须保留的行为、权限边界和明确非目标。
62
+
63
+ ## Workspace snapshot
64
+
65
+ - Working directory
66
+ - Git branch and HEAD
67
+ - 与本任务相关的未提交改动;不得把无关用户改动归入任务范围
68
+
69
+ ## Verification
70
+
71
+ 应执行的检查及成功标准;未获授权的外部写操作不得写成默认步骤。
72
+ ```
73
+
74
+ 保留准确的文件路径、错误文本、命令结果和用户决策,但不要复制密钥、Token、Cookie、个人数据或无关的大段日志。调查任务必须明确写 `DO NOT edit files`;修改任务写清允许修改的范围;“提交”“推送”“创建 PR”等权限分别记录,不能相互推导。
75
+
76
+ ## 启动执行 Agent
77
+
78
+ 文档写完后,使用宿主提供的 sub-agent 能力启动一个新 Agent:
79
+
80
+ - 使用零对话继承模式;在 Codex collaboration 中传 `fork_turns: "none"`。
81
+ - 不指定模型覆盖,除非用户明确指定接收 Agent 或模型。
82
+ - 给新 Agent 的启动消息只包含交接文档绝对路径和以下要求:先读取适用的 `AGENTS.md`,再把交接文档视为唯一任务合同,完成其中工作和验证,并在文档末尾追加 `## Execution result`,记录结果、验证和遗留问题。
83
+ - 不把交接文档内容再次粘贴进启动消息。若不读文档也能执行,说明交接仍依赖了隐藏上下文。
84
+
85
+ 当前 Agent 等待新 Agent 完成,但不实现自己的轮询、状态机或通知协议。执行 Agent 需要用户新增授权或遇到无法从代码判断的产品决策时,将问题原样交还用户。
86
+
87
+ 如果宿主没有 sub-agent 能力,只完成交接文档并明确报告无法启动接收 Agent;不要由当前 Agent 冒充新的执行 Agent。
88
+
89
+ ## 完成
90
+
91
+ 收到执行结果后,当前 Agent 只做必要的事实核对并向用户报告:
92
+
93
+ - 交接文档路径;
94
+ - 执行 Agent 完成了什么;
95
+ - 实际执行的验证及结果;
96
+ - 未完成项或需要用户决定的事项。
97
+
98
+ 不要把子 Agent 的自述当作已验证事实;高风险或外部状态结果仍需相应证据。
@@ -0,0 +1,73 @@
1
+ ---
2
+ name: karpathy-guidelines
3
+ description: Behavioral guidelines to reduce common LLM coding mistakes. Use when writing, reviewing, or refactoring code to avoid overcomplication, make surgical changes, surface assumptions, and define verifiable success criteria.
4
+ license: MIT
5
+ ---
6
+
7
+ # Karpathy Guidelines
8
+
9
+ Behavioral guidelines to reduce common LLM coding mistakes, derived from [Andrej Karpathy's observations](https://x.com/karpathy/status/2015883857489522876) on LLM coding pitfalls.
10
+
11
+ Apply these guidelines within the user's requested scope and the repository's instructions, including its verification policy.
12
+
13
+ ## 1. Think Before Coding
14
+
15
+ **Ground decisions in context. Surface consequential uncertainty.**
16
+
17
+ Before implementing:
18
+
19
+ - Resolve questions from the code and existing context first. Choose routine, reversible implementation details using established patterns; state assumptions that materially affect the result.
20
+ - Ask when missing information could change the goal, scope, authorization, or acceptance criteria and cannot be resolved from context. Pause only the dependent work; continue useful work within the agreed scope.
21
+ - If a simpler approach exists, say so. Push back when warranted.
22
+
23
+ ## 2. Simplicity First
24
+
25
+ **Minimum code that solves the problem. Nothing speculative.**
26
+
27
+ - No features beyond what was asked.
28
+ - No abstractions for single-use code.
29
+ - No "flexibility" or "configurability" that wasn't requested.
30
+ - No error handling for impossible scenarios.
31
+ - If you write 200 lines and it could be 50, rewrite it.
32
+
33
+ Ask yourself: "Would a senior engineer say this is overcomplicated?" If yes, simplify.
34
+
35
+ ## 3. Surgical Changes
36
+
37
+ **Touch only what you must. Clean up only your own mess.**
38
+
39
+ When editing existing code:
40
+
41
+ - Don't "improve" adjacent code, comments, or formatting.
42
+ - Don't refactor things that aren't broken.
43
+ - Match existing style, even if you'd do it differently.
44
+ - If you notice unrelated dead code, mention it - don't delete it.
45
+
46
+ When your changes create orphans:
47
+
48
+ - Remove imports/variables/functions that YOUR changes made unused.
49
+ - Don't remove pre-existing dead code unless asked.
50
+
51
+ The test: Every changed line should trace directly to the user's request.
52
+
53
+ ## 4. Goal-Driven Execution
54
+
55
+ **Define success criteria. Verify in proportion to the change.**
56
+
57
+ Follow the repository's verification policy. Prefer existing checks and direct behavior verification; do not require new test files or TDD by default. Complete required checks, then expand verification only when a change, failure, or unresolved concern warrants it. Report any verification gaps explicitly.
58
+
59
+ Transform tasks into verifiable goals:
60
+
61
+ - "Add validation" → "Verify representative valid and invalid inputs behave as required"
62
+ - "Fix the bug" → "Check the reported failure path and verify the corrected behavior"
63
+ - "Refactor X" → "Verify affected behavior remains unchanged using relevant existing checks"
64
+
65
+ For multi-step tasks, state a brief plan:
66
+
67
+ ```
68
+ 1. [Step] → verify: [check]
69
+ 2. [Step] → verify: [check]
70
+ 3. [Step] → verify: [check]
71
+ ```
72
+
73
+ Strong success criteria let you loop independently. Weak criteria ("make it work") require constant clarification.