@litfamily/litgrok 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (522) hide show
  1. package/.grok/agents/litgrok-executor.md +33 -0
  2. package/.grok/agents/litgrok-korean-prose-editor.md +32 -0
  3. package/.grok/agents/litgrok-korean-style-analyzer.md +30 -0
  4. package/.grok/agents/litgrok-librarian-researcher.md +31 -0
  5. package/.grok/agents/litgrok-meaning-preservation-auditor.md +30 -0
  6. package/.grok/agents/litgrok-native-flow-reviewer.md +30 -0
  7. package/.grok/agents/litgrok-planner.md +31 -0
  8. package/.grok/agents/litgrok-polish-orchestrator.md +30 -0
  9. package/.grok/agents/litgrok-qa-runner.md +33 -0
  10. package/.grok/agents/litgrok-quality-reviewer.md +33 -0
  11. package/.grok/agents/litgrok-verifier.md +32 -0
  12. package/.grok/hooks/deliverable-hedge-guard.json +16 -0
  13. package/.grok/hooks/deliverable-hedge-guard.mjs +148 -0
  14. package/.grok/hooks/lit-mark.mjs +142 -0
  15. package/.grok/hooks/plan-gate.mjs +81 -0
  16. package/.grok/hooks/post-compact.json +15 -0
  17. package/.grok/hooks/post-compact.mjs +6 -0
  18. package/.grok/hooks/post-tool-use-failure.json +15 -0
  19. package/.grok/hooks/post-tool-use-failure.mjs +6 -0
  20. package/.grok/hooks/post-tool-use.json +16 -0
  21. package/.grok/hooks/post-tool-use.mjs +7 -0
  22. package/.grok/hooks/pre-compact.json +15 -0
  23. package/.grok/hooks/pre-compact.mjs +6 -0
  24. package/.grok/hooks/record-passive-event.mjs +198 -0
  25. package/.grok/hooks/session-start.json +15 -0
  26. package/.grok/hooks/session-start.mjs +37 -0
  27. package/.grok/hooks/stop-failure.json +15 -0
  28. package/.grok/hooks/stop-failure.mjs +6 -0
  29. package/.grok/hooks/stop.json +15 -0
  30. package/.grok/hooks/stop.mjs +36 -0
  31. package/.grok/hooks/subagent-start.json +15 -0
  32. package/.grok/hooks/subagent-start.mjs +6 -0
  33. package/.grok/hooks/subagent-stop.json +15 -0
  34. package/.grok/hooks/subagent-stop.mjs +6 -0
  35. package/.grok/hooks/user-prompt-submit.json +15 -0
  36. package/.grok/hooks/user-prompt-submit.mjs +7 -0
  37. package/.grok/rules/00-litgrok.md +152 -0
  38. package/.grok/skills/autoconference/LICENSE +21 -0
  39. package/.grok/skills/autoconference/PROVENANCE.md +23 -0
  40. package/.grok/skills/autoconference/SKILL.md +140 -0
  41. package/.grok/skills/autoconference/assets/conference_template.md +76 -0
  42. package/.grok/skills/autoconference/assets/report_template.md +56 -0
  43. package/.grok/skills/autoconference/assets/synthesis_template.md +40 -0
  44. package/.grok/skills/autoconference/references/_canonical-corpus/manifest.json +138 -0
  45. package/.grok/skills/autoconference/references/agent-prompts.md +30 -0
  46. package/.grok/skills/autoconference/references/conference-protocol.md +21 -0
  47. package/.grok/skills/autoconference/references/core-principles.md +13 -0
  48. package/.grok/skills/autoconference/references/family-contract.md +26 -0
  49. package/.grok/skills/autoconference/references/modes/analyze.md +11 -0
  50. package/.grok/skills/autoconference/references/modes/core/convergence-guide.md +41 -0
  51. package/.grok/skills/autoconference/references/modes/core/crash-recovery.md +11 -0
  52. package/.grok/skills/autoconference/references/modes/core.md +26 -0
  53. package/.grok/skills/autoconference/references/modes/debate.md +11 -0
  54. package/.grok/skills/autoconference/references/modes/plan.md +12 -0
  55. package/.grok/skills/autoconference/references/modes/resume.md +11 -0
  56. package/.grok/skills/autoconference/references/modes/ship.md +11 -0
  57. package/.grok/skills/autoconference/references/modes/survey.md +11 -0
  58. package/.grok/skills/autoconference/references/results-logging.md +12 -0
  59. package/.grok/skills/autoconference/references/visualization-guide.md +10 -0
  60. package/.grok/skills/autoconference/scripts/init_conference.py +646 -0
  61. package/.grok/skills/autoconference/scripts/verify-canonical-corpus.mjs +177 -0
  62. package/.grok/skills/autoconference/templates/code-performance.md +59 -0
  63. package/.grok/skills/autoconference/templates/debate-mode.md +50 -0
  64. package/.grok/skills/autoconference/templates/prompt-optimization.md +58 -0
  65. package/.grok/skills/autoconference/templates/quick-conference.md +48 -0
  66. package/.grok/skills/autoconference/templates/research-synthesis.md +56 -0
  67. package/.grok/skills/autoconference/templates/survey-mode.md +63 -0
  68. package/.grok/skills/autoresearch/LICENSE +21 -0
  69. package/.grok/skills/autoresearch/PROVENANCE.md +22 -0
  70. package/.grok/skills/autoresearch/SKILL.md +149 -0
  71. package/.grok/skills/autoresearch/assets/report_template.md +52 -0
  72. package/.grok/skills/autoresearch/assets/research_template.md +38 -0
  73. package/.grok/skills/autoresearch/assets/results_template.tsv +2 -0
  74. package/.grok/skills/autoresearch/references/_canonical-corpus/manifest.json +148 -0
  75. package/.grok/skills/autoresearch/references/core-principles.md +16 -0
  76. package/.grok/skills/autoresearch/references/family-contract.md +36 -0
  77. package/.grok/skills/autoresearch/references/modes/core/evaluator-contract.md +12 -0
  78. package/.grok/skills/autoresearch/references/modes/core/stuck-detection.md +11 -0
  79. package/.grok/skills/autoresearch/references/modes/core.md +21 -0
  80. package/.grok/skills/autoresearch/references/modes/debug/investigation-techniques.md +11 -0
  81. package/.grok/skills/autoresearch/references/modes/debug.md +11 -0
  82. package/.grok/skills/autoresearch/references/modes/fix.md +11 -0
  83. package/.grok/skills/autoresearch/references/modes/learn.md +11 -0
  84. package/.grok/skills/autoresearch/references/modes/plan.md +14 -0
  85. package/.grok/skills/autoresearch/references/modes/predict/persona-templates.md +11 -0
  86. package/.grok/skills/autoresearch/references/modes/predict.md +11 -0
  87. package/.grok/skills/autoresearch/references/modes/reason.md +11 -0
  88. package/.grok/skills/autoresearch/references/modes/scenario/dimensions.md +11 -0
  89. package/.grok/skills/autoresearch/references/modes/scenario.md +11 -0
  90. package/.grok/skills/autoresearch/references/modes/security/owasp-checklist.md +11 -0
  91. package/.grok/skills/autoresearch/references/modes/security/stride-model.md +11 -0
  92. package/.grok/skills/autoresearch/references/modes/security.md +12 -0
  93. package/.grok/skills/autoresearch/references/modes/ship/type-checklists.md +12 -0
  94. package/.grok/skills/autoresearch/references/modes/ship.md +11 -0
  95. package/.grok/skills/autoresearch/references/results-logging.md +12 -0
  96. package/.grok/skills/autoresearch/references/visualization-guide.md +24 -0
  97. package/.grok/skills/autoresearch/scripts/init_research.py +391 -0
  98. package/.grok/skills/autoresearch/scripts/style_presets.py +123 -0
  99. package/.grok/skills/autoresearch/scripts/verify-canonical-corpus.mjs +179 -0
  100. package/.grok/skills/browser-drive/SKILL.md +194 -0
  101. package/.grok/skills/browser-drive/references/snapshot-act-loop.md +61 -0
  102. package/.grok/skills/comment-checker/SKILL.md +194 -0
  103. package/.grok/skills/debugging/SKILL.md +82 -0
  104. package/.grok/skills/debugging/references/methodology/00-setup.md +108 -0
  105. package/.grok/skills/debugging/references/methodology/02-investigate.md +126 -0
  106. package/.grok/skills/debugging/references/methodology/04-oracle-triple.md +106 -0
  107. package/.grok/skills/debugging/references/methodology/05-escalate.md +69 -0
  108. package/.grok/skills/debugging/references/methodology/06-fix.md +116 -0
  109. package/.grok/skills/debugging/references/methodology/08-qa.md +94 -0
  110. package/.grok/skills/debugging/references/methodology/09-cleanup.md +164 -0
  111. package/.grok/skills/debugging/references/methodology/partial-runtime-evidence.md +228 -0
  112. package/.grok/skills/debugging/references/post-tool-use-failure-taxonomy.md +55 -0
  113. package/.grok/skills/debugging/references/reproduction-recipes.md +182 -0
  114. package/.grok/skills/debugging/references/runtimes/bundled-js-binary.md +415 -0
  115. package/.grok/skills/debugging/references/runtimes/go.md +252 -0
  116. package/.grok/skills/debugging/references/runtimes/native-binary.md +484 -0
  117. package/.grok/skills/debugging/references/runtimes/node.md +260 -0
  118. package/.grok/skills/debugging/references/runtimes/python.md +248 -0
  119. package/.grok/skills/debugging/references/runtimes/rust.md +234 -0
  120. package/.grok/skills/debugging/references/tools/ghidra.md +212 -0
  121. package/.grok/skills/debugging/references/tools/playwright-cli.md +194 -0
  122. package/.grok/skills/debugging/references/tools/pwndbg.md +263 -0
  123. package/.grok/skills/debugging/references/tools/pwntools.md +265 -0
  124. package/.grok/skills/deep-interview/SKILL.md +216 -0
  125. package/.grok/skills/frontend-ui-ux/LICENSE +21 -0
  126. package/.grok/skills/frontend-ui-ux/PROVENANCE.json +38 -0
  127. package/.grok/skills/frontend-ui-ux/SKILL.md +58 -0
  128. package/.grok/skills/frontend-ui-ux/SOURCE-MANIFEST.json +1060 -0
  129. package/.grok/skills/frontend-ui-ux/THIRD-PARTY-NOTICE.txt +14 -0
  130. package/.grok/skills/frontend-ui-ux/data/design-intelligence.json +1 -0
  131. package/.grok/skills/frontend-ui-ux/references/_canonical-corpus/legal/frontend-ATTRIBUTION.md +217 -0
  132. package/.grok/skills/frontend-ui-ux/references/_canonical-corpus/legal/frontend-LICENSE-Apache-2.0.txt +201 -0
  133. package/.grok/skills/frontend-ui-ux/references/_canonical-corpus/legal/root-LICENSE +21 -0
  134. package/.grok/skills/frontend-ui-ux/references/_canonical-corpus/manifest.json +873 -0
  135. package/.grok/skills/frontend-ui-ux/references/adaptive-layout.md +92 -0
  136. package/.grok/skills/frontend-ui-ux/references/brand-and-imagery.md +93 -0
  137. package/.grok/skills/frontend-ui-ux/references/complete-contract.md +557 -0
  138. package/.grok/skills/frontend-ui-ux/references/composition.md +85 -0
  139. package/.grok/skills/frontend-ui-ux/references/creative-directions.md +80 -0
  140. package/.grok/skills/frontend-ui-ux/references/design/README.md +248 -0
  141. package/.grok/skills/frontend-ui-ux/references/design/_INDEX.md +191 -0
  142. package/.grok/skills/frontend-ui-ux/references/design/airbnb.md +393 -0
  143. package/.grok/skills/frontend-ui-ux/references/design/airtable.md +92 -0
  144. package/.grok/skills/frontend-ui-ux/references/design/apple.md +250 -0
  145. package/.grok/skills/frontend-ui-ux/references/design/aside.md +209 -0
  146. package/.grok/skills/frontend-ui-ux/references/design/binance.md +348 -0
  147. package/.grok/skills/frontend-ui-ux/references/design/bmw.md +183 -0
  148. package/.grok/skills/frontend-ui-ux/references/design/brutalist-skill.md +92 -0
  149. package/.grok/skills/frontend-ui-ux/references/design/bugatti.md +271 -0
  150. package/.grok/skills/frontend-ui-ux/references/design/cal.md +262 -0
  151. package/.grok/skills/frontend-ui-ux/references/design/claude.md +315 -0
  152. package/.grok/skills/frontend-ui-ux/references/design/clay.md +307 -0
  153. package/.grok/skills/frontend-ui-ux/references/design/clickhouse.md +284 -0
  154. package/.grok/skills/frontend-ui-ux/references/design/clone-from-url.md +65 -0
  155. package/.grok/skills/frontend-ui-ux/references/design/cohere.md +269 -0
  156. package/.grok/skills/frontend-ui-ux/references/design/coinbase.md +132 -0
  157. package/.grok/skills/frontend-ui-ux/references/design/composio.md +310 -0
  158. package/.grok/skills/frontend-ui-ux/references/design/cursor.md +312 -0
  159. package/.grok/skills/frontend-ui-ux/references/design/design-system-architecture.md +244 -0
  160. package/.grok/skills/frontend-ui-ux/references/design/elevenlabs.md +268 -0
  161. package/.grok/skills/frontend-ui-ux/references/design/expo.md +284 -0
  162. package/.grok/skills/frontend-ui-ux/references/design/ferrari.md +317 -0
  163. package/.grok/skills/frontend-ui-ux/references/design/figma.md +223 -0
  164. package/.grok/skills/frontend-ui-ux/references/design/framer.md +249 -0
  165. package/.grok/skills/frontend-ui-ux/references/design/gpt-tasteskill.md +74 -0
  166. package/.grok/skills/frontend-ui-ux/references/design/hashicorp.md +281 -0
  167. package/.grok/skills/frontend-ui-ux/references/design/ibm.md +335 -0
  168. package/.grok/skills/frontend-ui-ux/references/design/image-to-code-skill.md +1228 -0
  169. package/.grok/skills/frontend-ui-ux/references/design/imagegen-brandkit.md +798 -0
  170. package/.grok/skills/frontend-ui-ux/references/design/imagegen-frontend-mobile.md +1465 -0
  171. package/.grok/skills/frontend-ui-ux/references/design/imagegen-frontend-web.md +987 -0
  172. package/.grok/skills/frontend-ui-ux/references/design/intercom.md +149 -0
  173. package/.grok/skills/frontend-ui-ux/references/design/kraken.md +128 -0
  174. package/.grok/skills/frontend-ui-ux/references/design/lamborghini.md +291 -0
  175. package/.grok/skills/frontend-ui-ux/references/design/layout-skill.md +107 -0
  176. package/.grok/skills/frontend-ui-ux/references/design/lazyweb.md +77 -0
  177. package/.grok/skills/frontend-ui-ux/references/design/linear.app.md +370 -0
  178. package/.grok/skills/frontend-ui-ux/references/design/lovable.md +301 -0
  179. package/.grok/skills/frontend-ui-ux/references/design/mastercard.md +368 -0
  180. package/.grok/skills/frontend-ui-ux/references/design/meta.md +369 -0
  181. package/.grok/skills/frontend-ui-ux/references/design/minimalist-skill.md +85 -0
  182. package/.grok/skills/frontend-ui-ux/references/design/minimax.md +260 -0
  183. package/.grok/skills/frontend-ui-ux/references/design/mintlify.md +329 -0
  184. package/.grok/skills/frontend-ui-ux/references/design/miro.md +111 -0
  185. package/.grok/skills/frontend-ui-ux/references/design/mistral.ai.md +264 -0
  186. package/.grok/skills/frontend-ui-ux/references/design/mongodb.md +269 -0
  187. package/.grok/skills/frontend-ui-ux/references/design/nike.md +366 -0
  188. package/.grok/skills/frontend-ui-ux/references/design/notion.md +312 -0
  189. package/.grok/skills/frontend-ui-ux/references/design/nvidia.md +296 -0
  190. package/.grok/skills/frontend-ui-ux/references/design/ollama.md +270 -0
  191. package/.grok/skills/frontend-ui-ux/references/design/opencode.ai.md +284 -0
  192. package/.grok/skills/frontend-ui-ux/references/design/output-skill.md +49 -0
  193. package/.grok/skills/frontend-ui-ux/references/design/pinterest.md +233 -0
  194. package/.grok/skills/frontend-ui-ux/references/design/playstation.md +367 -0
  195. package/.grok/skills/frontend-ui-ux/references/design/posthog.md +259 -0
  196. package/.grok/skills/frontend-ui-ux/references/design/raycast.md +271 -0
  197. package/.grok/skills/frontend-ui-ux/references/design/react-dev-tooling-skill.md +230 -0
  198. package/.grok/skills/frontend-ui-ux/references/design/redesign-skill.md +178 -0
  199. package/.grok/skills/frontend-ui-ux/references/design/renault.md +314 -0
  200. package/.grok/skills/frontend-ui-ux/references/design/replicate.md +264 -0
  201. package/.grok/skills/frontend-ui-ux/references/design/resend.md +306 -0
  202. package/.grok/skills/frontend-ui-ux/references/design/revolut.md +188 -0
  203. package/.grok/skills/frontend-ui-ux/references/design/runwayml.md +247 -0
  204. package/.grok/skills/frontend-ui-ux/references/design/sanity.md +360 -0
  205. package/.grok/skills/frontend-ui-ux/references/design/sentry.md +265 -0
  206. package/.grok/skills/frontend-ui-ux/references/design/shopify.md +353 -0
  207. package/.grok/skills/frontend-ui-ux/references/design/soft-skill.md +98 -0
  208. package/.grok/skills/frontend-ui-ux/references/design/spacex.md +197 -0
  209. package/.grok/skills/frontend-ui-ux/references/design/spotify.md +249 -0
  210. package/.grok/skills/frontend-ui-ux/references/design/starbucks.md +583 -0
  211. package/.grok/skills/frontend-ui-ux/references/design/stitch-design-example.md +121 -0
  212. package/.grok/skills/frontend-ui-ux/references/design/stitch-skill.md +184 -0
  213. package/.grok/skills/frontend-ui-ux/references/design/stripe.md +325 -0
  214. package/.grok/skills/frontend-ui-ux/references/design/supabase.md +258 -0
  215. package/.grok/skills/frontend-ui-ux/references/design/superhuman.md +255 -0
  216. package/.grok/skills/frontend-ui-ux/references/design/taste-skill.md +1206 -0
  217. package/.grok/skills/frontend-ui-ux/references/design/tesla.md +289 -0
  218. package/.grok/skills/frontend-ui-ux/references/design/theverge.md +342 -0
  219. package/.grok/skills/frontend-ui-ux/references/design/together.ai.md +266 -0
  220. package/.grok/skills/frontend-ui-ux/references/design/uber.md +298 -0
  221. package/.grok/skills/frontend-ui-ux/references/design/vercel.md +313 -0
  222. package/.grok/skills/frontend-ui-ux/references/design/vodafone.md +426 -0
  223. package/.grok/skills/frontend-ui-ux/references/design/voltagent.md +326 -0
  224. package/.grok/skills/frontend-ui-ux/references/design/warp.md +256 -0
  225. package/.grok/skills/frontend-ui-ux/references/design/webflow.md +95 -0
  226. package/.grok/skills/frontend-ui-ux/references/design/wired.md +281 -0
  227. package/.grok/skills/frontend-ui-ux/references/design/wise.md +176 -0
  228. package/.grok/skills/frontend-ui-ux/references/design/x.ai.md +260 -0
  229. package/.grok/skills/frontend-ui-ux/references/design/zapier.md +331 -0
  230. package/.grok/skills/frontend-ui-ux/references/designpowers/EVIDENCE.md +97 -0
  231. package/.grok/skills/frontend-ui-ux/references/designpowers/README.md +48 -0
  232. package/.grok/skills/frontend-ui-ux/references/designpowers/UPSTREAM.md +80 -0
  233. package/.grok/skills/frontend-ui-ux/references/designpowers/lane-a-direction.md +64 -0
  234. package/.grok/skills/frontend-ui-ux/references/designpowers/lane-b-execution.md +65 -0
  235. package/.grok/skills/frontend-ui-ux/references/designpowers/lane-c-review.md +65 -0
  236. package/.grok/skills/frontend-ui-ux/references/designpowers/lane-d-memory.md +83 -0
  237. package/.grok/skills/frontend-ui-ux/references/designpowers/orchestration.md +80 -0
  238. package/.grok/skills/frontend-ui-ux/references/designpowers/routing.md +79 -0
  239. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/LICENSE +21 -0
  240. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/accessibility-reviewer.md +83 -0
  241. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/content-writer.md +132 -0
  242. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-builder.md +109 -0
  243. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-critic.md +89 -0
  244. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-lead.md +113 -0
  245. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-scout.md +78 -0
  246. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/design-strategist.md +121 -0
  247. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/heuristic-evaluator.md +268 -0
  248. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/inspiration-scout.md +107 -0
  249. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/agents/motion-designer.md +120 -0
  250. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/accessible-content/reference.md +101 -0
  251. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/adaptive-interfaces/reference.md +109 -0
  252. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/cognitive-accessibility/reference.md +107 -0
  253. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debate/reference.md +199 -0
  254. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-debt-tracker/reference.md +174 -0
  255. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-handoff/reference.md +125 -0
  256. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-md/reference.md +106 -0
  257. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-retrospective/reference.md +266 -0
  258. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-review/reference.md +123 -0
  259. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/design-system-alignment/reference.md +120 -0
  260. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/designpowers-critique/reference.md +164 -0
  261. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/heuristic-evaluation/reference.md +85 -0
  262. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/inclusive-personas/reference.md +98 -0
  263. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/inspiration-scouting/reference.md +165 -0
  264. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/interaction-design/reference.md +122 -0
  265. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/motion-choreography/reference.md +81 -0
  266. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/research-planning/reference.md +96 -0
  267. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/responsive-patterns/reference.md +77 -0
  268. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/synthetic-user-testing/reference.md +192 -0
  269. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-feedback/reference.md +165 -0
  270. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/taste-report/reference.md +78 -0
  271. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/token-architecture/reference.md +75 -0
  272. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/ui-composition/reference.md +117 -0
  273. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/usability-testing/reference.md +78 -0
  274. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/verification-before-shipping/reference.md +125 -0
  275. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/voice-and-tone/reference.md +79 -0
  276. package/.grok/skills/frontend-ui-ux/references/designpowers/vendor/skills/writing-design-plans/reference.md +119 -0
  277. package/.grok/skills/frontend-ui-ux/references/evidence-review.md +126 -0
  278. package/.grok/skills/frontend-ui-ux/references/implementation-platforms.md +109 -0
  279. package/.grok/skills/frontend-ui-ux/references/inclusive-interface.md +92 -0
  280. package/.grok/skills/frontend-ui-ux/references/interaction-motion.md +101 -0
  281. package/.grok/skills/frontend-ui-ux/references/operating-lanes.md +92 -0
  282. package/.grok/skills/frontend-ui-ux/references/perfection/README.md +160 -0
  283. package/.grok/skills/frontend-ui-ux/references/perfection/react-perf-tooling.md +127 -0
  284. package/.grok/skills/frontend-ui-ux/references/performance-delivery.md +93 -0
  285. package/.grok/skills/frontend-ui-ux/references/product-direction.md +84 -0
  286. package/.grok/skills/frontend-ui-ux/references/redesign-playbook.md +97 -0
  287. package/.grok/skills/frontend-ui-ux/references/system-foundations.md +84 -0
  288. package/.grok/skills/frontend-ui-ux/references/taste-direction.md +86 -0
  289. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/README.md +659 -0
  290. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/charts.csv +26 -0
  291. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/colors.csv +162 -0
  292. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/icons.csv +106 -0
  293. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/landing.csv +35 -0
  294. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/products.csv +162 -0
  295. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/react-performance.csv +45 -0
  296. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/astro.csv +54 -0
  297. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/flutter.csv +53 -0
  298. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/html-tailwind.csv +56 -0
  299. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/jetpack-compose.csv +53 -0
  300. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nextjs.csv +53 -0
  301. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxt-ui.csv +51 -0
  302. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/nuxtjs.csv +59 -0
  303. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react-native.csv +52 -0
  304. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/react.csv +54 -0
  305. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/shadcn.csv +61 -0
  306. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/svelte.csv +54 -0
  307. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/swiftui.csv +51 -0
  308. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/stacks/vue.csv +50 -0
  309. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/styles.csv +85 -0
  310. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/typography.csv +74 -0
  311. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/ui-reasoning.csv +162 -0
  312. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/ux-guidelines.csv +100 -0
  313. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/data/web-interface.csv +31 -0
  314. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/scripts/core.py +262 -0
  315. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/scripts/design_system.py +1148 -0
  316. package/.grok/skills/frontend-ui-ux/references/ui-ux-db/scripts/search.py +114 -0
  317. package/.grok/skills/frontend-ui-ux/references/visual-language.md +84 -0
  318. package/.grok/skills/frontend-ui-ux/references/visual-reconstruction.md +97 -0
  319. package/.grok/skills/frontend-ui-ux/schemas/design-contract-v1alpha1.schema.json +306 -0
  320. package/.grok/skills/frontend-ui-ux/schemas/design-contract-v1beta1.schema.json +291 -0
  321. package/.grok/skills/frontend-ui-ux/schemas/design-contract-v1beta2.schema.json +311 -0
  322. package/.grok/skills/frontend-ui-ux/scripts/design-contract-format.mjs +286 -0
  323. package/.grok/skills/frontend-ui-ux/scripts/design-contract-inventory-rules.mjs +354 -0
  324. package/.grok/skills/frontend-ui-ux/scripts/design-contract-rules.mjs +361 -0
  325. package/.grok/skills/frontend-ui-ux/scripts/design-contract-surface-rules.mjs +313 -0
  326. package/.grok/skills/frontend-ui-ux/scripts/design-data.mjs +68 -0
  327. package/.grok/skills/frontend-ui-ux/scripts/errors.mjs +12 -0
  328. package/.grok/skills/frontend-ui-ux/scripts/import-design-intelligence.mjs +124 -0
  329. package/.grok/skills/frontend-ui-ux/scripts/json-boundary.mjs +63 -0
  330. package/.grok/skills/frontend-ui-ux/scripts/query-design-intelligence.mjs +106 -0
  331. package/.grok/skills/frontend-ui-ux/scripts/search.mjs +43 -0
  332. package/.grok/skills/frontend-ui-ux/scripts/source-replay.mjs +153 -0
  333. package/.grok/skills/frontend-ui-ux/scripts/strict-json.mjs +143 -0
  334. package/.grok/skills/frontend-ui-ux/scripts/validate-design-contract.mjs +52 -0
  335. package/.grok/skills/frontend-ui-ux/scripts/verify-canonical-corpus.mjs +214 -0
  336. package/.grok/skills/lit-burnoff/SKILL.md +175 -0
  337. package/.grok/skills/lit-burnoff-file/SKILL.md +67 -0
  338. package/.grok/skills/lit-code/SKILL.md +531 -0
  339. package/.grok/skills/lit-code/references/go/README.md +90 -0
  340. package/.grok/skills/lit-code/references/go/backend-stack.md +641 -0
  341. package/.grok/skills/lit-code/references/go/bootstrap.md +328 -0
  342. package/.grok/skills/lit-code/references/go/bubbletea-v2.md +360 -0
  343. package/.grok/skills/lit-code/references/go/cobra-stack.md +468 -0
  344. package/.grok/skills/lit-code/references/go/concurrency.md +362 -0
  345. package/.grok/skills/lit-code/references/go/data-modeling.md +329 -0
  346. package/.grok/skills/lit-code/references/go/error-handling.md +359 -0
  347. package/.grok/skills/lit-code/references/go/golangci-strict.md +236 -0
  348. package/.grok/skills/lit-code/references/go/grpc-connect.md +375 -0
  349. package/.grok/skills/lit-code/references/go/libraries.md +337 -0
  350. package/.grok/skills/lit-code/references/go/one-liners.md +202 -0
  351. package/.grok/skills/lit-code/references/go/sqlc-pgx.md +471 -0
  352. package/.grok/skills/lit-code/references/go/testing.md +467 -0
  353. package/.grok/skills/lit-code/references/go/type-patterns.md +298 -0
  354. package/.grok/skills/lit-code/references/permission-sandbox-matrix.md +70 -0
  355. package/.grok/skills/lit-code/references/python/README.md +314 -0
  356. package/.grok/skills/lit-code/references/python/async-anyio.md +442 -0
  357. package/.grok/skills/lit-code/references/python/data-modeling.md +233 -0
  358. package/.grok/skills/lit-code/references/python/data-processing.md +133 -0
  359. package/.grok/skills/lit-code/references/python/error-handling.md +218 -0
  360. package/.grok/skills/lit-code/references/python/fastapi-stack.md +316 -0
  361. package/.grok/skills/lit-code/references/python/httpx2-optimization.md +360 -0
  362. package/.grok/skills/lit-code/references/python/libraries.md +307 -0
  363. package/.grok/skills/lit-code/references/python/one-liners.md +268 -0
  364. package/.grok/skills/lit-code/references/python/orjson-stack.md +378 -0
  365. package/.grok/skills/lit-code/references/python/pydantic-ai.md +285 -0
  366. package/.grok/skills/lit-code/references/python/pyproject-strict.md +232 -0
  367. package/.grok/skills/lit-code/references/python/textual-tui.md +201 -0
  368. package/.grok/skills/lit-code/references/python/type-patterns.md +176 -0
  369. package/.grok/skills/lit-code/references/rust/README.md +317 -0
  370. package/.grok/skills/lit-code/references/rust/async-tokio.md +299 -0
  371. package/.grok/skills/lit-code/references/rust/axum-stack.md +467 -0
  372. package/.grok/skills/lit-code/references/rust/cargo-strict.md +317 -0
  373. package/.grok/skills/lit-code/references/rust/clap-stack.md +409 -0
  374. package/.grok/skills/lit-code/references/rust/concurrency.md +375 -0
  375. package/.grok/skills/lit-code/references/rust/libraries.md +439 -0
  376. package/.grok/skills/lit-code/references/rust/one-liners.md +291 -0
  377. package/.grok/skills/lit-code/references/rust/proptest-insta.md +429 -0
  378. package/.grok/skills/lit-code/references/rust/type-state.md +354 -0
  379. package/.grok/skills/lit-code/references/rust/unsafe-discipline.md +250 -0
  380. package/.grok/skills/lit-code/references/rust/zero-cost-safety.md +527 -0
  381. package/.grok/skills/lit-code/references/rust-ub/README.md +289 -0
  382. package/.grok/skills/lit-code/references/rust-ub/miri-sanitizers-loom.md +411 -0
  383. package/.grok/skills/lit-code/references/rust-ub/ub-taxonomy.md +269 -0
  384. package/.grok/skills/lit-code/references/tool-boundaries.md +66 -0
  385. package/.grok/skills/lit-code/references/typescript/README.md +195 -0
  386. package/.grok/skills/lit-code/references/typescript/backend-hono.md +672 -0
  387. package/.grok/skills/lit-code/references/typescript/bootstrap.md +199 -0
  388. package/.grok/skills/lit-code/references/typescript/data-modeling.md +202 -0
  389. package/.grok/skills/lit-code/references/typescript/error-handling.md +169 -0
  390. package/.grok/skills/lit-code/references/typescript/tsconfig-strict.md +152 -0
  391. package/.grok/skills/lit-code/references/typescript/type-patterns.md +196 -0
  392. package/.grok/skills/lit-code/references/worked-cases.md +190 -0
  393. package/.grok/skills/lit-commit/SKILL.md +218 -0
  394. package/.grok/skills/lit-comprehend/SKILL.md +63 -0
  395. package/.grok/skills/lit-comprehend/references/artifact-format.md +58 -0
  396. package/.grok/skills/lit-comprehend/references/artifact-template.md +219 -0
  397. package/.grok/skills/lit-comprehend/references/honesty-ledger-contract.md +51 -0
  398. package/.grok/skills/lit-comprehend/references/micro-worlds.md +195 -0
  399. package/.grok/skills/lit-comprehend/references/worked-explainer.md +51 -0
  400. package/.grok/skills/lit-crucible/SKILL.md +231 -0
  401. package/.grok/skills/lit-handoff/SKILL.md +159 -0
  402. package/.grok/skills/lit-handoff/evals/evals.json +154 -0
  403. package/.grok/skills/lit-handoff/examples/HANDOFF-example-generic-auth-refactor.md +97 -0
  404. package/.grok/skills/lit-handoff/references/_canonical-corpus/manifest.json +17 -0
  405. package/.grok/skills/lit-handoff/references/source-pointer.md +31 -0
  406. package/.grok/skills/lit-handoff/scripts/verify-canonical-corpus.mjs +137 -0
  407. package/.grok/skills/lit-handoff/templates/HANDOFF.md +121 -0
  408. package/.grok/skills/lit-init/SKILL.md +244 -0
  409. package/.grok/skills/lit-korean/SKILL.md +176 -0
  410. package/.grok/skills/lit-plan/SKILL.md +71 -0
  411. package/.grok/skills/lit-plan/references/plan-schema.md +87 -0
  412. package/.grok/skills/lit-plan/references/start-work-handoff-contract.md +59 -0
  413. package/.grok/skills/lit-plan/scripts/scaffold-plan.mjs +259 -0
  414. package/.grok/skills/lit-plan/scripts/validate-plan.mjs +89 -0
  415. package/.grok/skills/lit-recap/SKILL.md +57 -0
  416. package/.grok/skills/lit-scientific-visualization/SKILL.md +213 -0
  417. package/.grok/skills/lit-scientific-visualization/scripts/verify-canonical-corpus.mjs +181 -0
  418. package/.grok/skills/lit-team/SKILL.md +73 -0
  419. package/.grok/skills/lit-team/references/explore-packet.md +70 -0
  420. package/.grok/skills/lit-team/references/general-purpose-packet.md +75 -0
  421. package/.grok/skills/lit-team/references/plan-packet.md +73 -0
  422. package/.grok/skills/litgoal/SKILL.md +98 -0
  423. package/.grok/skills/litgrok/SKILL.md +77 -0
  424. package/.grok/skills/litresearch/SKILL.md +60 -0
  425. package/.grok/skills/litresearch/references/mcp-tool-use-patterns.md +83 -0
  426. package/.grok/skills/litresearch/references/source-verdict-taxonomy.md +40 -0
  427. package/.grok/skills/litwork/SKILL.md +109 -0
  428. package/.grok/skills/lsp/SKILL.md +56 -0
  429. package/.grok/skills/lsp/references/built-in-lsp-contract.md +71 -0
  430. package/.grok/skills/lsp-setup/SKILL.md +82 -0
  431. package/.grok/skills/lsp-setup/references/bash/README.md +54 -0
  432. package/.grok/skills/lsp-setup/references/c-cpp/README.md +58 -0
  433. package/.grok/skills/lsp-setup/references/csharp/README.md +64 -0
  434. package/.grok/skills/lsp-setup/references/dart/README.md +48 -0
  435. package/.grok/skills/lsp-setup/references/elixir/README.md +51 -0
  436. package/.grok/skills/lsp-setup/references/go/README.md +53 -0
  437. package/.grok/skills/lsp-setup/references/haskell/README.md +57 -0
  438. package/.grok/skills/lsp-setup/references/java/README.md +55 -0
  439. package/.grok/skills/lsp-setup/references/julia/README.md +56 -0
  440. package/.grok/skills/lsp-setup/references/kotlin/README.md +58 -0
  441. package/.grok/skills/lsp-setup/references/lua/README.md +48 -0
  442. package/.grok/skills/lsp-setup/references/php/README.md +49 -0
  443. package/.grok/skills/lsp-setup/references/python/README.md +60 -0
  444. package/.grok/skills/lsp-setup/references/ruby/README.md +53 -0
  445. package/.grok/skills/lsp-setup/references/rust/README.md +55 -0
  446. package/.grok/skills/lsp-setup/references/swift/README.md +52 -0
  447. package/.grok/skills/lsp-setup/references/terraform/README.md +50 -0
  448. package/.grok/skills/lsp-setup/references/typescript/README.md +63 -0
  449. package/.grok/skills/lsp-setup/references/yaml/README.md +47 -0
  450. package/.grok/skills/lsp-setup/references/zig/README.md +49 -0
  451. package/.grok/skills/lsp-setup/scripts/detect-lsp.mjs +40 -0
  452. package/.grok/skills/lsp-setup/scripts/lsp-server-table.mjs +309 -0
  453. package/.grok/skills/lsp-setup/scripts/verify-lsp.mjs +54 -0
  454. package/.grok/skills/refactor/SKILL.md +210 -0
  455. package/.grok/skills/review-work/SKILL.md +515 -0
  456. package/.grok/skills/review-work/references/behavior-lane-contract.md +48 -0
  457. package/.grok/skills/review-work/references/documentation-lane-contract.md +49 -0
  458. package/.grok/skills/review-work/references/integration-lane-contract.md +51 -0
  459. package/.grok/skills/review-work/references/regression-lane-contract.md +48 -0
  460. package/.grok/skills/review-work/references/safety-lane-contract.md +48 -0
  461. package/.grok/skills/review-work/references/test-lane-contract.md +48 -0
  462. package/.grok/skills/review-work/scripts/check-lanes.mjs +63 -0
  463. package/.grok/skills/rules/SKILL.md +51 -0
  464. package/.grok/skills/rules/references/loading-order-contract.md +66 -0
  465. package/.grok/skills/rules/scripts/resolve-guidance.mjs +180 -0
  466. package/.grok/skills/skill-observer/SKILL.md +78 -0
  467. package/.grok/skills/skill-observer/references/review-contract.md +77 -0
  468. package/.grok/skills/skill-observer/scripts/curator.mjs +121 -0
  469. package/.grok/skills/skill-observer/scripts/review.mjs +347 -0
  470. package/.grok/skills/skill-observer/scripts/skill-loop.mjs +2087 -0
  471. package/.grok/skills/skill-observer/scripts/validate-skills.mjs +83 -0
  472. package/.grok/skills/start-work/SKILL.md +396 -0
  473. package/.grok/skills/structural-search/SKILL.md +195 -0
  474. package/.grok/skills/visual-qa/SKILL.md +50 -0
  475. package/.grok/skills/visual-qa/references/capture-playbook.md +47 -0
  476. package/.grok/skills/visual-qa/references/complete-contract.md +721 -0
  477. package/.grok/skills/visual-qa/references/verdict-taxonomy.md +34 -0
  478. package/.grok/skills/visual-qa/scripts/verify-evidence-manifest.mjs +91 -0
  479. package/.grok/skills/wikify/SKILL.md +65 -0
  480. package/.grok/skills/wikify/references/page-format.md +81 -0
  481. package/.grok/skills/wikify/references/provenance-contract.md +52 -0
  482. package/.grok/vendor/NOTICE.md +16 -0
  483. package/.grok/vendor/licenses/045_scientific-visualization-MIT.txt +21 -0
  484. package/.grok/vendor/provenance/045_scientific-visualization.md +37 -0
  485. package/.grok/vendor/scientific-visualization/assets/color_palettes.py +197 -0
  486. package/.grok/vendor/scientific-visualization/assets/nature.mplstyle +75 -0
  487. package/.grok/vendor/scientific-visualization/assets/presentation.mplstyle +74 -0
  488. package/.grok/vendor/scientific-visualization/assets/publication.mplstyle +78 -0
  489. package/.grok/vendor/scientific-visualization/evals/evals.json +158 -0
  490. package/.grok/vendor/scientific-visualization/references/_canonical-corpus/manifest.json +38 -0
  491. package/.grok/vendor/scientific-visualization/references/color_palettes.md +380 -0
  492. package/.grok/vendor/scientific-visualization/references/journal_requirements.md +359 -0
  493. package/.grok/vendor/scientific-visualization/references/matplotlib_examples.md +608 -0
  494. package/.grok/vendor/scientific-visualization/references/mdanalysis_martini_visualization.md +85 -0
  495. package/.grok/vendor/scientific-visualization/references/publication_guidelines.md +217 -0
  496. package/.grok/vendor/scientific-visualization/references/seaborn_for_publications.md +293 -0
  497. package/.grok/vendor/scientific-visualization/scripts/figure_export.py +238 -0
  498. package/.grok/vendor/scientific-visualization/scripts/style_presets.py +467 -0
  499. package/.grok/vendor/scientific-visualization/tests/test_figure_export.py +51 -0
  500. package/.grok/vendor/scientific-visualization/tests/test_style_presets.py +114 -0
  501. package/CHANGELOG.md +131 -0
  502. package/CODE_OF_CONDUCT.md +9 -0
  503. package/CONTRIBUTING.md +22 -0
  504. package/LICENSE +21 -0
  505. package/README.md +228 -0
  506. package/README_ko-KR.md +228 -0
  507. package/SECURITY.md +11 -0
  508. package/SUPPORT.md +9 -0
  509. package/bin/litgrok.mjs +860 -0
  510. package/docs/assets/cover.webp +0 -0
  511. package/docs/assets/litgrok-clay-icon.png +0 -0
  512. package/docs/assets/litgrok-continuity-1600.webp +0 -0
  513. package/docs/assets/litgrok-ignition-1600.webp +0 -0
  514. package/docs/assets/litgrok-wordmark.svg +5 -0
  515. package/docs/assets/readme/README.md +31 -0
  516. package/docs/assets/readme/badge-license.svg +1 -0
  517. package/docs/assets/readme/badge-version.svg +1 -0
  518. package/docs/privacy.md +13 -0
  519. package/docs/reference.md +271 -0
  520. package/docs/reference_ko-KR.md +267 -0
  521. package/package.json +50 -0
  522. package/plugin.json +27 -0
@@ -0,0 +1,182 @@
1
+ # Reproduction recipes
2
+
3
+ Load these recipes when a PostToolUseFailure observation must be converted into a stable, safe experiment. Each recipe keeps one causal dimension fixed and names the evidence needed to distinguish outcomes.
4
+
5
+ ## Recipe 1 — Wrong working directory
6
+
7
+ ### Trigger
8
+
9
+ A package command, relative path, or generated output is missing even though the repository appears to contain it.
10
+
11
+ ### Reproducer
12
+
13
+ 1. Record event.cwd and event.workspaceRoot from the failed tool observation.
14
+ 2. Resolve the intended product root using a read-only path/status check.
15
+ 3. List the named package or target relative to both roots.
16
+ 4. Run the narrow documented command from the intended root without changing inputs.
17
+
18
+ ### Expected evidence
19
+
20
+ The original invocation, both resolved paths, and the second exit status. If changing only cwd changes failure to success, classify working-directory mismatch. If it does not, reject that hypothesis. Do not modify scripts to accommodate an accidental root.
21
+
22
+ ### Cleanup
23
+
24
+ None, unless the command created cache or evidence files; inventory and remove only disposable files created by the recipe.
25
+
26
+ ## Recipe 2 — Permission denial versus sandbox denial
27
+
28
+ ### Trigger
29
+
30
+ A read, edit, or shell action reports that access is unavailable.
31
+
32
+ ### Reproducer
33
+
34
+ 1. Determine whether the host attempted the tool call.
35
+ 2. Record the matching permission decision without editing configuration.
36
+ 3. Record the active sandbox profile.
37
+ 4. Probe a read-only path known to be inside the active profile.
38
+ 5. Compare with the exact denied target; do not broaden either boundary.
39
+
40
+ ### Expected evidence
41
+
42
+ A permission denial means the tool did not receive approval. A sandbox denial follows an approved attempt and identifies an operating boundary in visible output. If both can apply, record both. Reproduction succeeds by classifying the layer, not by making the blocked operation run.
43
+
44
+ ### Cleanup
45
+
46
+ No permission, sandbox, or trust configuration changed.
47
+
48
+ ## Recipe 3 — Malformed tool input
49
+
50
+ ### Trigger
51
+
52
+ A tool rejects input before observable work begins, or a rich invocation fails with an ambiguous validation message.
53
+
54
+ ### Reproducer
55
+
56
+ Original input: preserve as inert evidence.
57
+ Control input: the smallest documented valid shape.
58
+ Reduction: add one original field at a time until failure returns.
59
+ Conflict check: remove mutually exclusive or duplicate fields.
60
+
61
+ ### Expected evidence
62
+
63
+ The minimal valid input, the first failing increment, and the exact validation result. The PostToolUseFailure envelope can preserve toolName and toolInput; it does not provide a documented parsed-error object. Redact secrets without changing the structural cause.
64
+
65
+ ### Cleanup
66
+
67
+ Remove any temporary input file created for reduction. Do not delete the user's original fixture.
68
+
69
+ ## Recipe 4 — Program exit versus assertion failure
70
+
71
+ ### Trigger
72
+
73
+ A test command reports non-zero but the first meaningful failure layer is unclear.
74
+
75
+ ### Reproducer
76
+
77
+ 1. Run the smallest named test file or case.
78
+ 2. Capture command exit, stderr/stdout, and first failing assertion.
79
+ 3. If setup exits before a test runs, classify program/environment failure.
80
+ 4. If the assertion runs, preserve expected and actual values.
81
+ 5. Change one input dimension and repeat.
82
+
83
+ ### Expected evidence
84
+
85
+ An explicit count of tests that ran, the first expected/actual mismatch when applicable, and the process exit status. A setup error is not RED for a behavior test. A failing assertion unrelated to proposed behavior is not proof of target cause.
86
+
87
+ ### Cleanup
88
+
89
+ Check for snapshots, coverage, or generated fixtures. Do not update them to turn the run GREEN unless that update is the authorized behavior.
90
+
91
+ ## Recipe 5 — Timeout, hang, or background continuation
92
+
93
+ ### Trigger
94
+
95
+ A command exceeds its foreground interval or returns control while work may continue.
96
+
97
+ ### Reproducer
98
+
99
+ 1. Record the configured foreground timeout.
100
+ 2. Determine whether the host backgrounded the command.
101
+ 3. Inspect documented task status instead of starting a duplicate.
102
+ 4. Capture last emitted progress and whether output advances.
103
+ 5. Cancel only when safe and authorized; inspect partial state.
104
+
105
+ ### Expected evidence
106
+
107
+ One of: completed with status, still running with task identity, timed out with no continuation, cancelled, or hung with a stable no-progress observation. Do not label a running background task failed. Do not label a timeout a test failure without final state.
108
+
109
+ ### Cleanup
110
+
111
+ Account for the task, child processes, locks, temporary files, and partial artifacts.
112
+
113
+ ## Recipe 6 — Dirty-tree regression comparison
114
+
115
+ ### Trigger
116
+
117
+ A suite fails after a change and ownership of the failure is uncertain.
118
+
119
+ ### Reproducer
120
+
121
+ 1. Preserve the dirty tree; record its status.
122
+ 2. Run the focused failing command in the current tree.
123
+ 3. Create an isolated baseline at HEAD in a bounded temporary worktree when authorized.
124
+ 4. Reuse dependencies safely without copying dirty source.
125
+ 5. Run the identical command with the identical runtime version.
126
+ 6. Compare failing test names and counts.
127
+
128
+ ### Expected evidence
129
+
130
+ Current-tree and baseline commands, cwd, exit, pass/fail counts, and exact overlapping or unique failures. A baseline failure supports “pre-existing” only for the same failure under comparable conditions. Clean up the temporary worktree without touching the user's dirty state.
131
+
132
+ ### Cleanup
133
+
134
+ Remove the exact temporary worktree and verify no new branch, process, or archive remains.
135
+
136
+ ## Recipe 7 — Partial write after a failed mutating tool
137
+
138
+ ### Trigger
139
+
140
+ A write, installer, formatter, or generator reports failure after it may have touched files.
141
+
142
+ ### Reproducer
143
+
144
+ 1. Stop retries.
145
+ 2. Inventory the named destination and adjacent temp/lock files.
146
+ 3. Compare bytes or hashes with preflight state when available.
147
+ 4. Determine whether operation was atomic, partial, or untouched.
148
+ 5. Choose recovery only from verified ownership and conflict policy.
149
+
150
+ ### Expected evidence
151
+
152
+ A path-by-path state table showing absent, unchanged, created, modified, or unknown. The tool failure event proves failure, not rollback. Do not overwrite foreign content or run broad cleanup to recover.
153
+
154
+ ### Cleanup
155
+
156
+ Remove only verified disposable remnants created by the failed operation. Preserve unknown state and report it.
157
+
158
+ ## Recipe 8 — Passive hook record absent
159
+
160
+ ### Trigger
161
+
162
+ A visible tool failure has no matching session-ledger record.
163
+
164
+ ### Reproducer
165
+
166
+ 1. Confirm the project hook was loaded and trusted.
167
+ 2. Drive the command script with documented event JSON on stdin.
168
+ 3. Test GROK_HOOK_EVENT present, env absent with stdin hookEventName present,
169
+ and both absent.
170
+ 4. Inspect exit, stderr, and exact ledger destination.
171
+
172
+ ### Expected evidence
173
+
174
+ The driver distinguishes hook configuration, event-name fallback, validation, and ledger-write behavior. Passive stdout is ignored by the host, so success is exit 0 plus expected state. Missing live activation remains a separate uncertainty.
175
+
176
+ ### Cleanup
177
+
178
+ Use a temporary workspace root and remove it after the receipt.
179
+
180
+ ## Reproduction stop rule
181
+
182
+ Stop when the next probe needs credentials, destructive recovery, configuration weakening, project trust, external mutation, or scope expansion that was not authorized. Return the supported failure class, evidence already gathered, and exact next decision.
@@ -0,0 +1,415 @@
1
+ # Bundled-JS / Embedded-Source Binaries (Bun SEA, Node SEA, Deno compile, pkg, Electron, PyInstaller)
2
+
3
+ A growing class of "binaries" are not stripped C/C++ at all — they are a runtime VM glued onto a high-level-language bundle. The bundle is **plaintext or trivially-decodable** inside the binary.
4
+
5
+ If you reach for `native-binary.md` workflow on these (Ghidra → pwndbg → hex), you will waste hours decompiling a runtime you don't care about while the actual logic sits exposed three megabytes away.
6
+
7
+ **This reference exists because the workflow is fundamentally different from stripped C.**
8
+
9
+ ---
10
+
11
+ ## When to use this reference instead of `native-binary.md`
12
+
13
+ Open this if `file ./target` shows a generic Mach-O / ELF / PE BUT any of:
14
+
15
+ - Size is suspiciously large (50 MB+ for a "simple CLI")
16
+ - `strings -n 8 ./target | rg -i "node_modules|webpack|esbuild|bun|pkg/lib|electron|pyinstaller"` returns hits
17
+ - The binary's CLI flags include things like `--inspect`, `--unhandled-rejections`, npm-style help text
18
+ - Vendor docs say it's built with Bun / pkg / nexe / Deno compile / PyInstaller / Electron / Tauri (UI shell)
19
+ - `head -c 4 ./target | xxd` shows a known runtime magic for an embedded archive section
20
+
21
+ If yes → **stop following `native-binary.md` and follow this**. Triage and dynamic tracing are the same. Static analysis is completely different.
22
+
23
+ ---
24
+
25
+ ## The workflow
26
+
27
+ ```
28
+ [1] Triage → identify the bundler (Bun? pkg? Deno? Electron? PyInstaller?)
29
+ [2] Locate the bundle → find where the embedded source archive starts
30
+ [3] Extract → dump source to disk so you can grep / read it
31
+ [4] Source-level static analysis (rg + Read, NOT Ghidra)
32
+ [5] Runtime verification → debug logs, --inspect, partial-evidence patterns
33
+ [6] Fix / report
34
+ ```
35
+
36
+ Step 3 is the unlock — once you have plaintext source on disk, the rest is normal codebase exploration.
37
+
38
+ ---
39
+
40
+ ## [1] Identify the bundler — 30-second fingerprint
41
+
42
+ ```bash
43
+ # Look for runtime-specific markers in plaintext strings
44
+ strings -n 12 ./target 2>/dev/null | rg -iE 'bun|node_modules|webpack|esbuild|deno|pkg/lib|electron|pyinstaller|nexe|NODE_SEA_FUSE|NODE_SEA_BLOB|tauri|ESZIP_V2|denort' | head -20
45
+ ```
46
+
47
+ | Marker pattern | Bundler | Source format |
48
+ |---|---|---|
49
+ | `@oven/bun-darwin`, `bun-lockfile-format-v`, `// @bun` | **Bun SEA** (compiled via `bun build --compile`) | Plaintext JS, single big bundle |
50
+ | `NODE_SEA_BLOB` + `NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2:1` | **Node SEA** (`node --build-sea` or `--experimental-sea-config`) | Plaintext JS, or V8 code cache (when `useCodeCache: true`), or startup snapshot (when `useSnapshot: true`) — the latter two are NOT plaintext |
51
+ | `pkg/lib/bootstrap.js`, `pkg/prelude`, `PAYLOAD_POSITION` | **pkg** (vercel/pkg) | Plaintext or v8 cached data |
52
+ | `ESZIP_V2`, `denort`, `deno_runtime` | **Deno compile** (`deno compile`) | TS/JS in eszip archive — readable but needs `eszip` crate to walk; not pure plaintext |
53
+ | `Electron`, `app.asar`, `chrome.dll`, `Squirrel.Mac` | **Electron** | `app.asar` archive (TAR-like with JSON header). Source is plaintext JS once extracted |
54
+ | `PyInstaller`, `pyz`, `_MEIPASS`, `pyi-os-utils` | **PyInstaller** | Compressed `.pyc` bytecode — needs `pyinstxtractor` + `decompyle3` to recover Python source |
55
+ | `nexe-`, `nexe_compile`, `:::nexe::` | **nexe** | Plaintext JS appended to node binary |
56
+ | `Tauri`, `tao`, `wry`, `tauri::generate_context` | **Tauri** (Rust shell + JS UI) | **Two worlds**: JS frontend in resource section is extractable here; Rust commands / core logic are native and require [native-binary.md](native-binary.md) |
57
+
58
+ If multiple match (e.g. Tauri + Bun): the outer shell is the first one (Tauri/Electron). The inner JS is the second one's format. **For Tauri specifically, expect to use both this reference (for the UI bundle) and `native-binary.md` (for the Rust binary side).**
59
+
60
+ > **Source-format reality check**: only Bun SEA, pkg (when not using `--public-packages`), nexe, and Electron `.asar` are reliably plaintext. Node SEA with code-cache or snapshot, PyInstaller `.pyc`, and Deno eszip require additional tooling. Don't assume `strings` will find readable code — verify the bundler first.
61
+
62
+ ---
63
+
64
+ ## [2] Locate the bundle
65
+
66
+ ### Bun SEA — JS is just embedded plaintext
67
+
68
+ The JS source is concatenated into the binary as a giant template literal / string. No decoding needed.
69
+
70
+ ```bash
71
+ # Verify by searching for typical JS bundle markers
72
+ strings -n 8 ./target | rg "function|var |let |const |async function" | head -5
73
+
74
+ # Find where the bundle starts (look for "use strict" or banner comment)
75
+ LC_ALL=C grep -aob '"use strict"' ./target | head -5
76
+ LC_ALL=C grep -aob '#!/usr/bin/env bun' ./target | head -5
77
+ ```
78
+
79
+ ### Node SEA — `NODE_SEA_BLOB` resource/segment + activated fuse
80
+
81
+ Per the [Node.js SEA docs](https://nodejs.org/api/single-executable-applications.html), a Node-built SEA contains:
82
+ - A resource (PE), section in `NODE_SEA` segment (Mach-O), or note (ELF) named `NODE_SEA_BLOB`
83
+ - The fuse string `NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2:1` (with trailing `:1` indicating injected; `:0` means a copy of the node binary that has not yet had a blob injected)
84
+
85
+ ```bash
86
+ # Confirm it is a SEA at all
87
+ LC_ALL=C grep -aob 'NODE_SEA_FUSE_fce680ab2cc467b6e072b8b5df1996b2:1' ./target | head -1
88
+
89
+ # Find the blob resource/section
90
+ LC_ALL=C grep -aob 'NODE_SEA_BLOB' ./target | head
91
+
92
+ # On Mach-O, inspect the segment directly
93
+ otool -l ./target | grep -A4 'NODE_SEA'
94
+ ```
95
+
96
+ The blob format is documented but non-trivial to walk by hand. For extraction, **use postject in reverse** (carve the section bytes) or read the blob via `node:sea` API from inside a debug build of the same binary. Plain `strings` will get you the embedded JS only when the SEA was built without `useCodeCache` and without `useSnapshot` — both of those replace plaintext with V8 cache data or startup snapshot bytes.
97
+
98
+ `node --build-sea sea-config.json` and `node --experimental-sea-config sea-config.json` *generate* SEA blobs; neither inspects an existing executable.
99
+
100
+ ### Deno compile — eszip archive section
101
+
102
+ ```bash
103
+ # Deno-compile binaries embed an eszip v2 archive
104
+ LC_ALL=C grep -aob 'ESZIP_V2' ./target | head -3
105
+ # Also confirm the runtime
106
+ LC_ALL=C grep -aob 'denort' ./target | head -1
107
+ ```
108
+
109
+ To extract, use the `eszip` Rust crate (or the `@deno/eszip` JS port) to parse the archive after carving it out at the offset above. There is no stable Deno CLI flag that inspects compiled-executable eszip contents as of 2026-04 — `deno info` only works on source files.
110
+
111
+ ### pkg — `PAYLOAD_POSITION` marker
112
+
113
+ ```bash
114
+ LC_ALL=C grep -aob 'PAYLOAD_POSITION' ./target | head
115
+ LC_ALL=C grep -aob 'pkg/prelude' ./target | head
116
+ ```
117
+
118
+ For source extraction, use the `pkg-extract` tooling community projects or carve based on the offset reported by the `PAYLOAD_POSITION:<n>` value.
119
+
120
+ ### Electron — `app.asar` is usually a separate file
121
+
122
+ Most Electron apps ship `app.asar` next to the binary, not embedded inside. Extract it with the official tool:
123
+
124
+ ```bash
125
+ # macOS layout
126
+ ls -la /Applications/MyApp.app/Contents/Resources/app.asar
127
+ npx @electron/asar extract app.asar ./extracted/
128
+ # or older:
129
+ npx asar extract app.asar ./extracted/
130
+ ```
131
+
132
+ For single-file builds where the asar is embedded inside the executable, **do not pattern-match arbitrary 4-byte sequences** (the asar format starts with a Pickle-encoded uint32 header size + JSON metadata, and the same bytes appear elsewhere in any binary). Instead, use a Pickle-aware extractor that validates the JSON header before claiming a match — the `asar` npm package's programmatic `extractAll()` API does this. Carve the asar bytes by scanning for a candidate Pickle header (4-byte size + 4-byte payload size + `{"files":` prefix), validate the JSON parses, then feed the carved buffer to `extractAll()`.
133
+
134
+ ### PyInstaller — use `pyinstxtractor`, NOT runtime self-extraction
135
+
136
+ ```bash
137
+ # Recover the embedded archive without running the binary
138
+ python3 pyinstxtractor.py ./target
139
+ # Output: ./target_extracted/ with .pyc files
140
+
141
+ # Decompile the .pyc files back to Python source
142
+ decompyle3 ./target_extracted/main.pyc # Python 3.7+
143
+ uncompyle6 ./target_extracted/main.pyc # older Python
144
+ ```
145
+
146
+ If `pyinstxtractor` cannot read the archive (e.g. non-standard PyInstaller version), use the official `pyi-archive_viewer` tool that ships with PyInstaller. Avoid the "run-the-binary-and-snoop-`/tmp/_MEI*`" approach: it only catches what runs in the time window between `_MEIPASS` extraction and cleanup, and it executes potentially untrusted code.
147
+
148
+ ---
149
+
150
+ ## [3] Extract source to disk — DO NOT skip this
151
+
152
+ **The single biggest mistake** with bundled-JS reverse engineering is trying to read the source out of `strings` output or `xxd` dumps. You will lose data. See "Gotchas" below.
153
+
154
+ ### For Bun SEA / nexe / single-string-blob bundlers
155
+
156
+ Read the binary as bytes, find the JS section, save to a `.js` file:
157
+
158
+ ```python
159
+ # extract_bundled_js.py
160
+ import sys
161
+
162
+ if len(sys.argv) < 2:
163
+ raise SystemExit("usage: extract_bundled_js.py <target>")
164
+
165
+ with open(sys.argv[1], 'rb') as f:
166
+ data = f.read()
167
+
168
+ markers = [b'// @bun', b'"use strict"', b"'use strict'", b'#!/usr/bin/env']
169
+ start = -1
170
+ for m in markers:
171
+ p = data.find(m)
172
+ if p != -1 and (start == -1 or p < start):
173
+ start = p
174
+
175
+ if start == -1:
176
+ raise SystemExit(
177
+ "no bundle marker found — binary may not be Bun/nexe, "
178
+ "or markers were stripped. Try strings(1) for hints."
179
+ )
180
+
181
+ # Heuristic end: look for a long null run AFTER start.
182
+ # This is a heuristic, NOT a guarantee. Verify the tail of the output
183
+ # looks like JS (closing braces, EOF) before trusting it.
184
+ end = data.find(b'\x00' * 1024, start)
185
+ if end == -1:
186
+ end = len(data)
187
+
188
+ bundle = data[start:end]
189
+ print(f'Extracted {len(bundle)} bytes from offset {start} to {end}', file=sys.stderr)
190
+ sys.stdout.buffer.write(bundle)
191
+ ```
192
+
193
+ ```bash
194
+ python3 extract_bundled_js.py ./target > extracted-bundle.js
195
+ wc -c extracted-bundle.js
196
+ # Sanity check the tail is JS, not random binary
197
+ tail -c 200 extracted-bundle.js
198
+ ```
199
+
200
+ ### For PyInstaller
201
+
202
+ Use `pyinstxtractor` then `uncompyle6` / `decompyle3` on the `.pyc` files.
203
+
204
+ ### For Electron .asar
205
+
206
+ ```bash
207
+ npx asar extract app.asar ./extracted/
208
+ # Now ./extracted/ has a normal node_modules + your source layout
209
+ ```
210
+
211
+ ### For Deno compile
212
+
213
+ Use the `eszip` Rust crate or the `@deno/eszip` JS port to walk the archive after carving the eszip section out at the offset reported by the `ESZIP_V2` magic search. There is no stable Deno CLI as of 2026-04 that inspects compiled-binary eszip contents directly.
214
+
215
+ ---
216
+
217
+ ## [4] Source-level static analysis — `rg` + `Read`, not Ghidra
218
+
219
+ Once you have the source on disk, treat it as a normal codebase:
220
+
221
+ ```bash
222
+ # Find function definitions
223
+ rg -n "^function |^const \w+ = (function|\(.*\) =>)" extracted-bundle.js | head
224
+
225
+ # Find specific behavior
226
+ rg -n "claude-opus-4-7|reasoning_effort|api_key" extracted-bundle.js
227
+
228
+ # Resolve minified identifiers — they show up as `var XYZ="value"`
229
+ rg -aoP 'var \w+="[^"]+"' extracted-bundle.js | head -50
230
+ ```
231
+
232
+ For minified bundles, use a template-literal-aware parser to extract specific functions or template strings. Example skeleton:
233
+
234
+ ```python
235
+ def find_template_end(data, start):
236
+ """Walk a JS template literal preserving ${...} interpolation depth.
237
+ Returns position of closing backtick."""
238
+ i = start
239
+ while i < len(data):
240
+ c = data[i:i+1]
241
+ if c == b'\\':
242
+ i += 2; continue
243
+ if c == b'$' and data[i+1:i+2] == b'{':
244
+ depth = 1; i += 2
245
+ while i < len(data) and depth > 0:
246
+ cc = data[i:i+1]
247
+ if cc == b'\\': i += 2; continue
248
+ if cc == b'`':
249
+ j = find_template_end(data, i+1)
250
+ i = j + 1; continue
251
+ if cc == b'{': depth += 1
252
+ elif cc == b'}': depth -= 1
253
+ elif cc in (b'"', b"'"):
254
+ q = cc; i += 1
255
+ while i < len(data) and data[i:i+1] != q:
256
+ if data[i:i+1] == b'\\': i += 2
257
+ else: i += 1
258
+ i += 1; continue
259
+ i += 1
260
+ continue
261
+ if c == b'`': return i
262
+ i += 1
263
+ return -1
264
+ ```
265
+
266
+ For function-body extraction, **track the parameter list separately** before tracking body braces. The naive approach mis-counts destructuring `function f({a, b, ...c})` as the body `{` and exits early.
267
+
268
+ ---
269
+
270
+ ## [5] Runtime verification
271
+
272
+ You usually cannot single-step JS inside a Bun-compiled binary the way you would with `node --inspect`. Workarounds:
273
+
274
+ ### Bun-compiled
275
+
276
+ Bun's inspector takes `--inspect[=<host>:<port>[/<prefix>]]` on the command line. For env-var control of compiled binaries, the form is the same minus the leading `--`:
277
+
278
+ ```bash
279
+ # Default port (6499) auto-prefix
280
+ ./target --inspect
281
+ # → ws://localhost:6499/<auto-prefix> (paste into https://debug.bun.sh)
282
+
283
+ # Explicit host:port[/prefix]
284
+ ./target --inspect=localhost:9229/dbg
285
+ # Or via env var (if --inspect cannot be passed)
286
+ BUN_INSPECT=localhost:9229/dbg ./target
287
+ ```
288
+
289
+ **For HTTP request tracing without an interactive debugger** (highest-value Bun-specific runtime evidence):
290
+
291
+ ```bash
292
+ # Print every fetch() / node:http request as a curl command + full headers/body
293
+ BUN_CONFIG_VERBOSE_FETCH=curl ./target ...
294
+
295
+ # Or just print the request/response without curl-format
296
+ BUN_CONFIG_VERBOSE_FETCH=true ./target ...
297
+ ```
298
+
299
+ Plus generic env-var-based debug logging if the app supports it:
300
+
301
+ ```bash
302
+ APP_DEBUG=1 APP_LOG_LEVEL=debug APP_LOG_FILE=/tmp/trace.log ./target
303
+ ```
304
+
305
+ ### Node SEA / pkg / nexe
306
+ ```bash
307
+ # These usually accept --inspect since they are real Node
308
+ ./target --inspect
309
+ # Then chrome://inspect or node --inspect-brk
310
+ ```
311
+
312
+ ### Electron
313
+ ```bash
314
+ ./target.app/Contents/MacOS/target --inspect=9229 --remote-debugging-port=9223
315
+ # Renderer process is at chrome://inspect, main process via the inspector port
316
+ ```
317
+
318
+ ### When you cannot make a real call
319
+ The target's API may require credentials, network access, or paid quota you don't have. **You are not stuck** — see [methodology/partial-runtime-evidence.md](../methodology/partial-runtime-evidence.md) for the fallback patterns.
320
+
321
+ ---
322
+
323
+ ## ⚠️ Gotchas — read these before extracting
324
+
325
+ ### G1. `strings -n N` silently drops short identifier interpolations
326
+
327
+ `strings` outputs runs of printable characters of length **≥ N**. Default is 4 on most systems; many references (including older versions of `native-binary.md`) recommend `-n 8` for less noise.
328
+
329
+ **With `-n 8`, short template-literal interpolations like `${x}`, `${i}`, `${R}` are silently dropped** because they are 4 chars surrounded by non-printable bytes (newlines or section padding). The result looks like:
330
+
331
+ ```text
332
+ expected: <INSTRUCTIONS>\n${x}\n</INSTRUCTIONS>
333
+ strings: <INSTRUCTIONS>\n</INSTRUCTIONS> ← ${x} is gone, no warning
334
+ ```
335
+
336
+ A consumer reading the strings output would conclude the template is empty.
337
+
338
+ **Mitigation**:
339
+ 1. Use `strings` only for **fingerprinting** (Phase 1 triage), never as the source of extracted text.
340
+ 2. For actual extraction, **read the binary as bytes** with `python3 -c "open('./target','rb').read()"` and grep / parse from there.
341
+ 3. If you must use `strings`, try `strings -n 1 -t x ./target` and post-filter — but byte-level reads are still more reliable.
342
+
343
+ ### G2. Stale cached binary ≠ latest features
344
+
345
+ Bundled-app installers often check a remote version and skip download if a cached binary exists. If you reverse-engineered an old version and the user reports behavior you don't see in the source, **re-run the installer** (or fetch the version manifest manually) before assuming the source is current.
346
+
347
+ ```bash
348
+ # Example pattern - varies by tool
349
+ curl -fsSL https://example.com/install.sh | head -50 # find version-fetch URL
350
+ curl -fsSL https://static.example.com/cli/cli-version.txt
351
+ ./your-tool --version
352
+ # Compare. If different, re-install.
353
+ ```
354
+
355
+ ### G3. APFS / NTFS case-insensitivity silently overwrites files
356
+
357
+ When extracting many minified function bodies (`cVR`, `CVR`, `dpr`, `DPR`, …) and saving each to its own file, **macOS APFS and Windows NTFS treat `cVR.txt` and `CVR.txt` as the same file**. The second write silently overwrites the first.
358
+
359
+ **Mitigation**: prefix filenames with something case-distinguishing, e.g. `mode-cVR.txt`, `mode-CVR.txt`, or use a hash suffix.
360
+
361
+ ### G4. Bun's runtime adds 30-50 MB of unrelated symbols
362
+
363
+ A 70 MB Bun-compiled binary is **mostly Bun runtime** (~50 MB) plus your app (~20 MB). When fingerprinting, you will see thousands of strings like `tree-sitter-typescript`, `react-native-stylex` etc. that the user's actual app doesn't use — these are package names baked into Bun's package-resolution data.
364
+
365
+ **Mitigation**: when grepping for "what does this app do?", filter out runtime noise:
366
+ ```bash
367
+ strings -n 8 ./target | rg -v 'node_modules|@oven/bun|package-lock|tree-sitter|ffmpeg-installer' | head
368
+ ```
369
+
370
+ ### G5. Source maps usually NOT shipped
371
+
372
+ Bundled apps strip source maps for production. Variable names are minified to `T`, `R`, `a`, `r`, etc. Treat the bundle like an obfuscated codebase: identify constants by tracing assignments (`var T="actual-name"`) and resolve interpolations manually.
373
+
374
+ ### G6. The "extract" file is not legally redistributable
375
+
376
+ If reverse-engineering proprietary software, the extracted source is the vendor's IP. Use it for understanding behavior, **never commit it to git**, never post snippets in public issues. Cleanup your `extracted-bundle.js` files in Phase 9.
377
+
378
+ ---
379
+
380
+ ## Silent-failure patterns specific to bundled JS
381
+
382
+ | Pattern | Why it's silent |
383
+ |---|---|
384
+ | Bundle includes unreachable dead code from tree-shaking failures | You read code that never runs — verify with runtime trace |
385
+ | `process.env.X` resolved at BUILD time, not RUNTIME | Setting the env var at runtime has no effect; the value is baked in |
386
+ | `import.meta.url` in compiled binary returns `bun://...` not a real path | File-relative resolution silently breaks |
387
+ | Worker threads spawn from embedded code, look for sub-bundle inside main bundle | Workers may have their own copy of dependencies |
388
+ | Minified identifiers with case variants used in same module | Easy to confuse `cVR` with `CVR` when reading fast |
389
+
390
+ ---
391
+
392
+ ## Phase 9 cleanup specifics for bundled-JS work
393
+
394
+ ```bash
395
+ # Remove extracted bundles — they may contain proprietary source
396
+ rm -f /tmp/extracted-bundle.js /tmp/extracted-*.js
397
+ rm -rf /tmp/asar-extracted/
398
+ rm -rf /tmp/_MEI*
399
+
400
+ # Remove strings dumps
401
+ rm -f /tmp/*-strings.txt /tmp/*-strings-v*.txt
402
+
403
+ # Remove Python helper scripts created for parsing
404
+ rm -f /tmp/extract_bundled_js.py /tmp/parse_template.py
405
+
406
+ # Verify the extraction directory is gone (if you used a workspace dir)
407
+ ls /Users/$USER/local-workspaces/*-extracted/ 2>/dev/null
408
+ # rm -rf only after journal review confirms nothing important is there
409
+ ```
410
+
411
+ ---
412
+
413
+ ## When to escalate back to `native-binary.md`
414
+
415
+ If extraction reveals the "bundle" is actually compiled to v8 cached data (pkg with `--public-packages` or PyInstaller with bytecode-only mode), and decompilation is non-trivial, **switch back to `native-binary.md` workflow** (Ghidra against the runtime + careful tracing). Bundled-JS workflow only helps when the high-level source is recoverable as readable text.