opencode-skills-collection 4.1.15 → 4.1.16

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 (1013) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +2 -1
  2. package/bundled-skills/00-andruia-consultant/SKILL.md +23 -10
  3. package/bundled-skills/10-andruia-skill-smith/SKILL.md +18 -14
  4. package/bundled-skills/20-andruia-niche-intelligence/SKILL.md +40 -15
  5. package/bundled-skills/360-feedback-system/SKILL.md +7 -10
  6. package/bundled-skills/3d-web-experience/SKILL.md +91 -47
  7. package/bundled-skills/acceptance-orchestrator/SKILL.md +6 -7
  8. package/bundled-skills/access-matrix/SKILL.md +8 -7
  9. package/bundled-skills/accessibility-compliance-accessibility-audit/SKILL.md +10 -4
  10. package/bundled-skills/accessibility-compliance-accessibility-audit/resources/implementation-playbook.md +29 -76
  11. package/bundled-skills/accesslint-audit/SKILL.md +13 -7
  12. package/bundled-skills/accesslint-diff/SKILL.md +15 -47
  13. package/bundled-skills/accesslint-scan/SKILL.md +24 -8
  14. package/bundled-skills/activecampaign-automation/SKILL.md +8 -4
  15. package/bundled-skills/ad-campaign-analyzer/SKILL.md +11 -9
  16. package/bundled-skills/address-github-comments/SKILL.md +12 -6
  17. package/bundled-skills/adhx/SKILL.md +12 -9
  18. package/bundled-skills/admin-access-register/SKILL.md +20 -26
  19. package/bundled-skills/advanced-analytics-dashboard/SKILL.md +12 -13
  20. package/bundled-skills/aegisops-ai/SKILL.md +19 -19
  21. package/bundled-skills/agent-creator/SKILL.md +13 -14
  22. package/bundled-skills/agent-evals/SKILL.md +27 -22
  23. package/bundled-skills/agent-framework-azure-ai-py/SKILL.md +3 -0
  24. package/bundled-skills/agent-framework-azure-ai-py/UPSTREAM-LICENSE.txt +21 -0
  25. package/bundled-skills/agent-framework-azure-ai-py/UPSTREAM-NOTICE.md +14 -0
  26. package/bundled-skills/agent-framework-azure-ai-py/references/advanced.md +512 -0
  27. package/bundled-skills/agent-framework-azure-ai-py/references/mcp.md +301 -0
  28. package/bundled-skills/agent-framework-azure-ai-py/references/threads.md +300 -0
  29. package/bundled-skills/agent-framework-azure-ai-py/references/tools.md +278 -0
  30. package/bundled-skills/agent-manager-skill/SKILL.md +10 -4
  31. package/bundled-skills/agent-memory/SKILL.md +39 -8
  32. package/bundled-skills/agent-memory-mcp/SKILL.md +11 -2
  33. package/bundled-skills/agent-memory-systems/SKILL.md +13 -28
  34. package/bundled-skills/agent-memory-systems/references/detailed-guide.md +59 -257
  35. package/bundled-skills/agent-orchestration-improve-agent/SKILL.md +12 -7
  36. package/bundled-skills/agent-orchestration-multi-agent-optimize/SKILL.md +14 -24
  37. package/bundled-skills/agent-orchestrator/SKILL.md +30 -20
  38. package/bundled-skills/agent-orchestrator/references/capability-taxonomy.md +9 -9
  39. package/bundled-skills/agent-orchestrator/references/orchestration-patterns.md +2 -2
  40. package/bundled-skills/agent-orchestrator/scripts/match_skills.py +49 -51
  41. package/bundled-skills/agent-orchestrator/scripts/orchestrate.py +71 -32
  42. package/bundled-skills/agent-orchestrator/scripts/scan_registry.py +92 -68
  43. package/bundled-skills/agent-self-scheduling/SKILL.md +11 -8
  44. package/bundled-skills/agent-squad/alex/SKILL.md +6 -1
  45. package/bundled-skills/agent-squad/aria/SKILL.md +7 -2
  46. package/bundled-skills/agent-squad/dep/SKILL.md +11 -4
  47. package/bundled-skills/agent-squad/luna/SKILL.md +10 -5
  48. package/bundled-skills/agent-squad/mason/SKILL.md +10 -5
  49. package/bundled-skills/agent-squad/max/SKILL.md +10 -3
  50. package/bundled-skills/agent-squad/quinn/SKILL.md +12 -5
  51. package/bundled-skills/agent-squad/rex/SKILL.md +7 -2
  52. package/bundled-skills/agentflow/SKILL.md +22 -15
  53. package/bundled-skills/agentfolio/SKILL.md +3 -2
  54. package/bundled-skills/agentic-actions-auditor/SKILL.md +35 -27
  55. package/bundled-skills/agentmail/SKILL.md +33 -58
  56. package/bundled-skills/agents-md/SKILL.md +1 -3
  57. package/bundled-skills/agents-v2-py/SKILL.md +57 -58
  58. package/bundled-skills/agenttrace-session-audit/SKILL.md +3 -2
  59. package/bundled-skills/agy-auto/SKILL.md +11 -10
  60. package/bundled-skills/ai-agent-development/SKILL.md +6 -0
  61. package/bundled-skills/ai-agent-evaluation-benchmarking/SKILL.md +15 -10
  62. package/bundled-skills/ai-agent-tool-routing/SKILL.md +98 -116
  63. package/bundled-skills/ai-agents-architect/SKILL.md +2 -2
  64. package/bundled-skills/ai-analyzer/SKILL.md +25 -10
  65. package/bundled-skills/ai-code-generation-guardrails/SKILL.md +99 -126
  66. package/bundled-skills/ai-dev-jobs-mcp/SKILL.md +8 -4
  67. package/bundled-skills/ai-engineer/SKILL.md +13 -7
  68. package/bundled-skills/ai-engineering-toolkit/SKILL.md +11 -7
  69. package/bundled-skills/ai-headshot-studio/SKILL.md +9 -7
  70. package/bundled-skills/ai-image-generation-studio/SKILL.md +9 -7
  71. package/bundled-skills/ai-inference-service-mesh/SKILL.md +18 -43
  72. package/bundled-skills/ai-logo-maker/SKILL.md +8 -4
  73. package/bundled-skills/ai-loop/SKILL.md +4 -4
  74. package/bundled-skills/ai-ml/SKILL.md +4 -0
  75. package/bundled-skills/ai-multilingual-dubbing/SKILL.md +9 -3
  76. package/bundled-skills/ai-native-cli/SKILL.md +10 -7
  77. package/bundled-skills/ai-photo-restyler/SKILL.md +8 -4
  78. package/bundled-skills/ai-pipeline-orchestration/SKILL.md +36 -18
  79. package/bundled-skills/ai-podcast-voiceover/SKILL.md +9 -3
  80. package/bundled-skills/ai-prompt-regression-testing/SKILL.md +100 -112
  81. package/bundled-skills/ai-red-teaming/SKILL.md +55 -35
  82. package/bundled-skills/ai-security-hardening/SKILL.md +17 -25
  83. package/bundled-skills/ai-sre-incident-response/SKILL.md +8 -8
  84. package/bundled-skills/ai-studio-image/SKILL.md +8 -0
  85. package/bundled-skills/akf-trust-metadata/SKILL.md +8 -2
  86. package/bundled-skills/alerting-oncall/SKILL.md +1 -0
  87. package/bundled-skills/alerting-oncall/references/details.md +1 -5
  88. package/bundled-skills/alpha-vantage/SKILL.md +0 -4
  89. package/bundled-skills/angular-migration/SKILL.md +14 -0
  90. package/bundled-skills/animejs-animation/SKILL.md +8 -3
  91. package/bundled-skills/anti-deception/SKILL.md +5 -3
  92. package/bundled-skills/anti-reversing-techniques/SKILL.md +1 -1
  93. package/bundled-skills/anti-sleep/SKILL.md +4 -2
  94. package/bundled-skills/antigravity-design-expert/SKILL.md +3 -3
  95. package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +6 -0
  96. package/bundled-skills/api-analyzer/SKILL.md +7 -29
  97. package/bundled-skills/api-designer/SKILL.md +9 -0
  98. package/bundled-skills/api-documentation/SKILL.md +7 -1
  99. package/bundled-skills/api-sdk-generator/SKILL.md +0 -21
  100. package/bundled-skills/api-testing-observability-api-mock/resources/implementation-playbook.md +31 -11
  101. package/bundled-skills/apk-reverse/SKILL.md +14 -0
  102. package/bundled-skills/apk-reverse/UPSTREAM-LICENSE.txt +21 -0
  103. package/bundled-skills/apk-reverse/UPSTREAM-NOTICE.md +11 -0
  104. package/bundled-skills/apk-reverse/scripts/manifest-summary.ps1 +80 -0
  105. package/bundled-skills/architecture-review/SKILL.md +4 -4
  106. package/bundled-skills/arm-cortex-expert/SKILL.md +0 -1
  107. package/bundled-skills/arrowspace/SKILL.md +23 -21
  108. package/bundled-skills/ask-questions-if-underspecified/SKILL.md +4 -4
  109. package/bundled-skills/audit-logging/SKILL.md +10 -77
  110. package/bundled-skills/automated-triage/SKILL.md +3 -0
  111. package/bundled-skills/automated-triage/UPSTREAM-LICENSE.txt +201 -0
  112. package/bundled-skills/automated-triage/UPSTREAM-NOTICE.md +12 -0
  113. package/bundled-skills/automated-triage/references/triage-example.md +115 -0
  114. package/bundled-skills/automated-triage/references/triage-stages.md +141 -0
  115. package/bundled-skills/avoid-ai-writing/SKILL.md +4 -2
  116. package/bundled-skills/awareness-stage-mapper/SKILL.md +16 -8
  117. package/bundled-skills/aws-cdk-development/SKILL.md +7 -0
  118. package/bundled-skills/aws-cdk-development/UPSTREAM-LICENSE.txt +21 -0
  119. package/bundled-skills/aws-cdk-development/UPSTREAM-NOTICE.md +14 -0
  120. package/bundled-skills/aws-cdk-development/references/cdk-patterns.md +431 -0
  121. package/bundled-skills/aws-cdk-development/scripts/validate-stack.sh +247 -0
  122. package/bundled-skills/aws-skills/SKILL.md +16 -21
  123. package/bundled-skills/aws-sst-development/SKILL.md +3 -0
  124. package/bundled-skills/aws-sst-development/UPSTREAM-LICENSE.txt +21 -0
  125. package/bundled-skills/aws-sst-development/UPSTREAM-NOTICE.md +13 -0
  126. package/bundled-skills/aws-sst-development/references/authoring.md +506 -0
  127. package/bundled-skills/aws-sst-development/references/deploy-and-troubleshoot.md +182 -0
  128. package/bundled-skills/aws-sst-development/references/testing.md +126 -0
  129. package/bundled-skills/awt-e2e-testing/SKILL.md +7 -1
  130. package/bundled-skills/azd-deployment/SKILL.md +45 -51
  131. package/bundled-skills/azure-ai-agents-persistent-java/SKILL.md +35 -19
  132. package/bundled-skills/azure-ai-projects-py/SKILL.md +7 -0
  133. package/bundled-skills/azure-ai-projects-py/UPSTREAM-LICENSE.txt +21 -0
  134. package/bundled-skills/azure-ai-projects-py/UPSTREAM-NOTICE.md +23 -0
  135. package/bundled-skills/azure-ai-projects-py/references/agents.md +295 -0
  136. package/bundled-skills/azure-ai-projects-py/references/api-reference.md +1150 -0
  137. package/bundled-skills/azure-ai-projects-py/references/async-patterns.md +258 -0
  138. package/bundled-skills/azure-ai-projects-py/references/built-in-evaluators.md +427 -0
  139. package/bundled-skills/azure-ai-projects-py/references/connections.md +203 -0
  140. package/bundled-skills/azure-ai-projects-py/references/custom-evaluators.md +450 -0
  141. package/bundled-skills/azure-ai-projects-py/references/datasets-indexes.md +177 -0
  142. package/bundled-skills/azure-ai-projects-py/references/deployments.md +134 -0
  143. package/bundled-skills/azure-ai-projects-py/references/evaluation.md +349 -0
  144. package/bundled-skills/azure-ai-projects-py/references/tools.md +464 -0
  145. package/bundled-skills/azure-ai-projects-py/scripts/run_batch_evaluation.py +409 -0
  146. package/bundled-skills/azure-ai-transcription-py/SKILL.md +30 -50
  147. package/bundled-skills/azure-ai-voicelive-py/SKILL.md +3 -0
  148. package/bundled-skills/azure-ai-voicelive-py/UPSTREAM-LICENSE.txt +21 -0
  149. package/bundled-skills/azure-ai-voicelive-py/UPSTREAM-NOTICE.md +15 -0
  150. package/bundled-skills/azure-ai-voicelive-py/references/api-reference.md +344 -0
  151. package/bundled-skills/azure-ai-voicelive-py/references/examples.md +558 -0
  152. package/bundled-skills/azure-ai-voicelive-py/references/models.md +737 -0
  153. package/bundled-skills/azure-communication-callingserver-java/SKILL.md +10 -9
  154. package/bundled-skills/azure-cosmos-db-py/SKILL.md +7 -0
  155. package/bundled-skills/azure-cosmos-db-py/UPSTREAM-LICENSE.txt +21 -0
  156. package/bundled-skills/azure-cosmos-db-py/UPSTREAM-NOTICE.md +20 -0
  157. package/bundled-skills/azure-cosmos-db-py/assets/conftest_template.py +332 -0
  158. package/bundled-skills/azure-cosmos-db-py/assets/cosmos_client_template.py +225 -0
  159. package/bundled-skills/azure-cosmos-db-py/assets/service_template.py +314 -0
  160. package/bundled-skills/azure-cosmos-db-py/references/client-setup.md +214 -0
  161. package/bundled-skills/azure-cosmos-db-py/references/error-handling.md +382 -0
  162. package/bundled-skills/azure-cosmos-db-py/references/partitioning.md +270 -0
  163. package/bundled-skills/azure-cosmos-db-py/references/service-layer.md +305 -0
  164. package/bundled-skills/azure-cosmos-db-py/references/testing.md +495 -0
  165. package/bundled-skills/azure-cosmos-py/SKILL.md +11 -0
  166. package/bundled-skills/azure-cosmos-py/UPSTREAM-LICENSE.txt +21 -0
  167. package/bundled-skills/azure-cosmos-py/UPSTREAM-NOTICE.md +14 -0
  168. package/bundled-skills/azure-cosmos-py/references/partitioning.md +346 -0
  169. package/bundled-skills/azure-cosmos-py/references/query-patterns.md +395 -0
  170. package/bundled-skills/azure-cosmos-rust/SKILL.md +30 -22
  171. package/bundled-skills/azure-eventhub-py/SKILL.md +7 -0
  172. package/bundled-skills/azure-eventhub-py/UPSTREAM-LICENSE.txt +21 -0
  173. package/bundled-skills/azure-eventhub-py/UPSTREAM-NOTICE.md +15 -0
  174. package/bundled-skills/azure-eventhub-py/references/checkpointing.md +312 -0
  175. package/bundled-skills/azure-eventhub-py/references/partitions.md +346 -0
  176. package/bundled-skills/azure-eventhub-py/scripts/setup_consumer.py +422 -0
  177. package/bundled-skills/azure-eventhub-rust/SKILL.md +28 -13
  178. package/bundled-skills/azure-identity-rust/SKILL.md +16 -10
  179. package/bundled-skills/azure-keyvault-keys-rust/SKILL.md +13 -8
  180. package/bundled-skills/azure-keyvault-secrets-rust/SKILL.md +12 -6
  181. package/bundled-skills/azure-mgmt-apimanagement-dotnet/SKILL.md +11 -0
  182. package/bundled-skills/azure-mgmt-apimanagement-dotnet/UPSTREAM-LICENSE.txt +21 -0
  183. package/bundled-skills/azure-mgmt-apimanagement-dotnet/UPSTREAM-NOTICE.md +15 -0
  184. package/bundled-skills/azure-mgmt-apimanagement-dotnet/references/apis-operations.md +168 -0
  185. package/bundled-skills/azure-mgmt-apimanagement-dotnet/references/products-subscriptions.md +173 -0
  186. package/bundled-skills/azure-mgmt-apimanagement-dotnet/references/service-management.md +154 -0
  187. package/bundled-skills/azure-resource-manager-cosmosdb-dotnet/SKILL.md +3 -0
  188. package/bundled-skills/azure-resource-manager-cosmosdb-dotnet/UPSTREAM-LICENSE.txt +21 -0
  189. package/bundled-skills/azure-resource-manager-cosmosdb-dotnet/UPSTREAM-NOTICE.md +15 -0
  190. package/bundled-skills/azure-resource-manager-cosmosdb-dotnet/references/account-management.md +279 -0
  191. package/bundled-skills/azure-resource-manager-cosmosdb-dotnet/references/sql-resources.md +373 -0
  192. package/bundled-skills/azure-resource-manager-cosmosdb-dotnet/references/throughput.md +308 -0
  193. package/bundled-skills/azure-resource-manager-sql-dotnet/SKILL.md +3 -0
  194. package/bundled-skills/azure-resource-manager-sql-dotnet/UPSTREAM-LICENSE.txt +21 -0
  195. package/bundled-skills/azure-resource-manager-sql-dotnet/UPSTREAM-NOTICE.md +15 -0
  196. package/bundled-skills/azure-resource-manager-sql-dotnet/references/database-operations.md +268 -0
  197. package/bundled-skills/azure-resource-manager-sql-dotnet/references/elastic-pools.md +234 -0
  198. package/bundled-skills/azure-resource-manager-sql-dotnet/references/server-management.md +192 -0
  199. package/bundled-skills/azure-search-documents-dotnet/SKILL.md +3 -0
  200. package/bundled-skills/azure-search-documents-dotnet/UPSTREAM-LICENSE.txt +21 -0
  201. package/bundled-skills/azure-search-documents-dotnet/UPSTREAM-NOTICE.md +14 -0
  202. package/bundled-skills/azure-search-documents-dotnet/references/semantic-search.md +241 -0
  203. package/bundled-skills/azure-search-documents-dotnet/references/vector-search.md +236 -0
  204. package/bundled-skills/azure-servicebus-py/SKILL.md +7 -0
  205. package/bundled-skills/azure-servicebus-py/UPSTREAM-LICENSE.txt +21 -0
  206. package/bundled-skills/azure-servicebus-py/UPSTREAM-NOTICE.md +15 -0
  207. package/bundled-skills/azure-servicebus-py/references/dead-letter.md +418 -0
  208. package/bundled-skills/azure-servicebus-py/references/patterns.md +405 -0
  209. package/bundled-skills/azure-servicebus-py/scripts/setup_servicebus.py +384 -0
  210. package/bundled-skills/azure-speech-to-text-rest-py/SKILL.md +3 -0
  211. package/bundled-skills/azure-speech-to-text-rest-py/UPSTREAM-LICENSE.txt +21 -0
  212. package/bundled-skills/azure-speech-to-text-rest-py/UPSTREAM-NOTICE.md +13 -0
  213. package/bundled-skills/azure-speech-to-text-rest-py/references/pronunciation-assessment.md +276 -0
  214. package/bundled-skills/azure-storage-blob-rust/SKILL.md +29 -21
  215. package/bundled-skills/baseline-ui/SKILL.md +2 -2
  216. package/bundled-skills/bash-scripting/SKILL.md +10 -2
  217. package/bundled-skills/bazel-build-optimization/SKILL.md +0 -1
  218. package/bundled-skills/bdistill-behavioral-xray/SKILL.md +5 -5
  219. package/bundled-skills/bdistill-knowledge-extraction/SKILL.md +9 -6
  220. package/bundled-skills/beautiful-prose/SKILL.md +1 -2
  221. package/bundled-skills/bevy-ecs-expert/SKILL.md +9 -7
  222. package/bundled-skills/billing-automation/resources/implementation-playbook.md +56 -513
  223. package/bundled-skills/binary-analysis-patterns/SKILL.md +0 -1
  224. package/bundled-skills/biopython/SKILL.md +3 -0
  225. package/bundled-skills/biopython/UPSTREAM-LICENSE.txt +21 -0
  226. package/bundled-skills/biopython/UPSTREAM-NOTICE.md +17 -0
  227. package/bundled-skills/biopython/references/advanced.md +577 -0
  228. package/bundled-skills/biopython/references/alignment.md +368 -0
  229. package/bundled-skills/biopython/references/blast.md +455 -0
  230. package/bundled-skills/biopython/references/databases.md +487 -0
  231. package/bundled-skills/biopython/references/phylogenetics.md +566 -0
  232. package/bundled-skills/biopython/references/sequence_io.md +285 -0
  233. package/bundled-skills/biopython/references/structure.md +564 -0
  234. package/bundled-skills/blockchain-developer/SKILL.md +0 -1
  235. package/bundled-skills/blueprint/SKILL.md +6 -8
  236. package/bundled-skills/brain-to-docs/SKILL.md +4 -4
  237. package/bundled-skills/brand-growth-system-builder/SKILL.md +10 -0
  238. package/bundled-skills/brand-perception-psychologist/SKILL.md +15 -7
  239. package/bundled-skills/browser-bridge/SKILL.md +101 -0
  240. package/bundled-skills/build/SKILL.md +15 -10
  241. package/bundled-skills/build/references/detailed-guide.md +38 -14
  242. package/bundled-skills/burpsuite-project-parser/SKILL.md +7 -0
  243. package/bundled-skills/buywhere-product-catalog/SKILL.md +6 -5
  244. package/bundled-skills/c-pro/SKILL.md +8 -6
  245. package/bundled-skills/c4-architecture-c4-architecture/SKILL.md +0 -1
  246. package/bundled-skills/c4-code/SKILL.md +0 -1
  247. package/bundled-skills/c4-component/SKILL.md +0 -1
  248. package/bundled-skills/c4-container/SKILL.md +0 -1
  249. package/bundled-skills/c4-context/SKILL.md +0 -1
  250. package/bundled-skills/cdk-patterns/SKILL.md +7 -0
  251. package/bundled-skills/changelog-entry/SKILL.md +6 -4
  252. package/bundled-skills/check-identity-pack/SKILL.md +7 -8
  253. package/bundled-skills/chrome-extension-developer/SKILL.md +8 -4
  254. package/bundled-skills/ci-cd-and-automation/SKILL.md +15 -3
  255. package/bundled-skills/cirq/SKILL.md +3 -0
  256. package/bundled-skills/cirq/UPSTREAM-LICENSE.txt +21 -0
  257. package/bundled-skills/cirq/UPSTREAM-NOTICE.md +16 -0
  258. package/bundled-skills/cirq/references/building.md +307 -0
  259. package/bundled-skills/cirq/references/experiments.md +572 -0
  260. package/bundled-skills/cirq/references/hardware.md +527 -0
  261. package/bundled-skills/cirq/references/noise.md +514 -0
  262. package/bundled-skills/cirq/references/simulation.md +353 -0
  263. package/bundled-skills/cirq/references/transformation.md +416 -0
  264. package/bundled-skills/cis-benchmarks/SKILL.md +16 -9
  265. package/bundled-skills/clarvia-aeo-check/SKILL.md +9 -9
  266. package/bundled-skills/claude-ally-health/SKILL.md +17 -6
  267. package/bundled-skills/claude-code-guide/SKILL.md +9 -5
  268. package/bundled-skills/claude-scientific-skills/SKILL.md +15 -3
  269. package/bundled-skills/claude-speed-reader/SKILL.md +13 -3
  270. package/bundled-skills/claude-win11-speckit-update-skill/SKILL.md +13 -7
  271. package/bundled-skills/cline-pilot/SKILL.md +10 -0
  272. package/bundled-skills/closed-loop-delivery/SKILL.md +7 -7
  273. package/bundled-skills/cloud-architect/SKILL.md +0 -1
  274. package/bundled-skills/cloudflare-workers-expert/SKILL.md +6 -5
  275. package/bundled-skills/cloudformation-best-practices/SKILL.md +4 -3
  276. package/bundled-skills/cmux/SKILL.md +8 -0
  277. package/bundled-skills/code-refactoring-context-restore/SKILL.md +1 -1
  278. package/bundled-skills/code-review-ai-ai-review/SKILL.md +8 -1
  279. package/bundled-skills/code-review-and-quality/SKILL.md +9 -0
  280. package/bundled-skills/code-reviewer/SKILL.md +0 -1
  281. package/bundled-skills/codex-review/SKILL.md +3 -2
  282. package/bundled-skills/commit/SKILL.md +12 -11
  283. package/bundled-skills/comprehensive-review-full-review/SKILL.md +0 -1
  284. package/bundled-skills/computer-vision-expert/SKILL.md +9 -8
  285. package/bundled-skills/concise-planning/SKILL.md +7 -7
  286. package/bundled-skills/conductor-implement/SKILL.md +0 -1
  287. package/bundled-skills/conductor-new-track/SKILL.md +0 -1
  288. package/bundled-skills/conductor-revert/SKILL.md +0 -1
  289. package/bundled-skills/conductor-setup/SKILL.md +42 -25
  290. package/bundled-skills/conductor-status/SKILL.md +0 -1
  291. package/bundled-skills/conductor-validator/SKILL.md +15 -19
  292. package/bundled-skills/constant-time-analysis/SKILL.md +3 -0
  293. package/bundled-skills/constant-time-analysis/UPSTREAM-LICENSE.txt +427 -0
  294. package/bundled-skills/constant-time-analysis/UPSTREAM-NOTICE.md +18 -0
  295. package/bundled-skills/constant-time-analysis/references/compiled.md +129 -0
  296. package/bundled-skills/constant-time-analysis/references/javascript.md +136 -0
  297. package/bundled-skills/constant-time-analysis/references/kotlin.md +252 -0
  298. package/bundled-skills/constant-time-analysis/references/php.md +172 -0
  299. package/bundled-skills/constant-time-analysis/references/python.md +179 -0
  300. package/bundled-skills/constant-time-analysis/references/ruby.md +198 -0
  301. package/bundled-skills/constant-time-analysis/references/swift.md +288 -0
  302. package/bundled-skills/constant-time-analysis/references/vm-compiled.md +354 -0
  303. package/bundled-skills/container-hardening/SKILL.md +23 -24
  304. package/bundled-skills/content-marketer/SKILL.md +0 -1
  305. package/bundled-skills/context-kit/SKILL.md +8 -0
  306. package/bundled-skills/context-management-context-restore/SKILL.md +1 -1
  307. package/bundled-skills/context-management-context-save/SKILL.md +0 -1
  308. package/bundled-skills/context-manager/SKILL.md +0 -1
  309. package/bundled-skills/context7-auto-research/SKILL.md +3 -3
  310. package/bundled-skills/copy-editing/SKILL.md +4 -0
  311. package/bundled-skills/copywriting-psychologist/SKILL.md +16 -8
  312. package/bundled-skills/cost-optimization/SKILL.md +11 -1
  313. package/bundled-skills/cost-optimization/UPSTREAM-LICENSE.txt +21 -0
  314. package/bundled-skills/cost-optimization/UPSTREAM-NOTICE.md +11 -0
  315. package/bundled-skills/cost-optimization/references/tagging-standards.md +23 -0
  316. package/bundled-skills/cowork-to-code-bridge/SKILL.md +9 -0
  317. package/bundled-skills/create-issue-gate/SKILL.md +5 -5
  318. package/bundled-skills/create-pr/SKILL.md +2 -0
  319. package/bundled-skills/crossframe-suite/SKILL.md +8 -0
  320. package/bundled-skills/crypto-bd-agent/SKILL.md +1 -2
  321. package/bundled-skills/csharp-pro/SKILL.md +5 -7
  322. package/bundled-skills/csv-manual-export/SKILL.md +1 -2
  323. package/bundled-skills/customer-psychographic-profiler/SKILL.md +15 -7
  324. package/bundled-skills/customer-support/SKILL.md +0 -1
  325. package/bundled-skills/data-engineering-data-driven-feature/SKILL.md +0 -1
  326. package/bundled-skills/data-privacy-controls/SKILL.md +7 -8
  327. package/bundled-skills/database-admin/SKILL.md +0 -1
  328. package/bundled-skills/database-design/SKILL.md +5 -1
  329. package/bundled-skills/database-design/database-selection.md +1 -1
  330. package/bundled-skills/database-design/orm-selection.md +1 -1
  331. package/bundled-skills/database-design/scripts/schema_validator.py +17 -8
  332. package/bundled-skills/database-migration/SKILL.md +14 -1
  333. package/bundled-skills/database-migrations-sql-migrations/resources/implementation-playbook.md +31 -283
  334. package/bundled-skills/database-optimizer/SKILL.md +0 -1
  335. package/bundled-skills/debug-buttercup/SKILL.md +8 -0
  336. package/bundled-skills/debugger/SKILL.md +4 -3
  337. package/bundled-skills/debugging-toolkit/SKILL.md +2 -2
  338. package/bundled-skills/debugging-toolkit-smart-debug/SKILL.md +14 -10
  339. package/bundled-skills/deep-research/SKILL.md +24 -13
  340. package/bundled-skills/deep-research/UPSTREAM-LICENSE.txt +190 -0
  341. package/bundled-skills/deep-research/UPSTREAM-NOTICE.md +11 -0
  342. package/bundled-skills/deep-research/requirements.txt +2 -0
  343. package/bundled-skills/deep-research/scripts/research.py +802 -0
  344. package/bundled-skills/defi-protocol-templates/SKILL.md +16 -1
  345. package/bundled-skills/defuddle/SKILL.md +9 -6
  346. package/bundled-skills/delegating-to-agents/SKILL.md +12 -13
  347. package/bundled-skills/dependency-management-deps-audit/resources/implementation-playbook.md +32 -289
  348. package/bundled-skills/dependency-upgrade/SKILL.md +14 -1
  349. package/bundled-skills/deployment-pipeline-design/SKILL.md +11 -111
  350. package/bundled-skills/deployment-validation-config-validate/SKILL.md +1 -1
  351. package/bundled-skills/deprecation-and-migration/SKILL.md +2 -2
  352. package/bundled-skills/design-orchestration/SKILL.md +4 -4
  353. package/bundled-skills/design-spells/SKILL.md +4 -4
  354. package/bundled-skills/detect-ai-text/SKILL.md +4 -4
  355. package/bundled-skills/deterministic-design/SKILL.md +5 -4
  356. package/bundled-skills/devcontainer-setup/SKILL.md +3 -0
  357. package/bundled-skills/devcontainer-setup/UPSTREAM-LICENSE.txt +427 -0
  358. package/bundled-skills/devcontainer-setup/UPSTREAM-NOTICE.md +12 -0
  359. package/bundled-skills/devcontainer-setup/references/dockerfile-best-practices.md +102 -0
  360. package/bundled-skills/devcontainer-setup/references/features-vs-dockerfile.md +22 -0
  361. package/bundled-skills/diagram-generator/SKILL.md +6 -0
  362. package/bundled-skills/diagram-generator/UPSTREAM-LICENSE.txt +21 -0
  363. package/bundled-skills/diagram-generator/UPSTREAM-NOTICE.md +11 -0
  364. package/bundled-skills/diagram-generator/scripts/render_diagram.py +169 -0
  365. package/bundled-skills/django-access-review/SKILL.md +20 -12
  366. package/bundled-skills/django-perf-review/SKILL.md +1 -1
  367. package/bundled-skills/doc-coauthoring/SKILL.md +1 -1
  368. package/bundled-skills/doc2math/SKILL.md +10 -9
  369. package/bundled-skills/docker-compose/SKILL.md +17 -11
  370. package/bundled-skills/docker-expert/SKILL.md +57 -53
  371. package/bundled-skills/docker-management/SKILL.md +17 -13
  372. package/bundled-skills/docs-architect/SKILL.md +0 -1
  373. package/bundled-skills/docs-generator/SKILL.md +7 -1
  374. package/bundled-skills/docs-generator/UPSTREAM-LICENSE.txt +21 -0
  375. package/bundled-skills/docs-generator/UPSTREAM-NOTICE.md +15 -0
  376. package/bundled-skills/docs-generator/scripts/case-init.ps1 +379 -0
  377. package/bundled-skills/docs-generator/scripts/lib/HostRuntime.ps1 +58 -0
  378. package/bundled-skills/docs-generator/scripts/lib/WorkRoot.ps1 +33 -0
  379. package/bundled-skills/documentation/SKILL.md +5 -1
  380. package/bundled-skills/documentation-and-adrs/SKILL.md +7 -5
  381. package/bundled-skills/documentation-templates/SKILL.md +8 -6
  382. package/bundled-skills/dotnet-architect/SKILL.md +0 -1
  383. package/bundled-skills/doubt-driven-development/SKILL.md +8 -0
  384. package/bundled-skills/dx-optimizer/SKILL.md +8 -8
  385. package/bundled-skills/e2e-testing/SKILL.md +4 -0
  386. package/bundled-skills/eas-workflows/SKILL.md +60 -27
  387. package/bundled-skills/eas-workflows/agents/openai.yaml +1 -1
  388. package/bundled-skills/eas-workflows/scripts/fetch.js +131 -82
  389. package/bundled-skills/eas-workflows/scripts/package.json +4 -0
  390. package/bundled-skills/elixir-pro/SKILL.md +5 -7
  391. package/bundled-skills/emblemai-crypto-wallet/SKILL.md +7 -6
  392. package/bundled-skills/emotional-arc-designer/SKILL.md +16 -8
  393. package/bundled-skills/error-debugging-multi-agent-review/SKILL.md +1 -1
  394. package/bundled-skills/error-detective/SKILL.md +7 -3
  395. package/bundled-skills/error-diagnostics-smart-debug/SKILL.md +14 -10
  396. package/bundled-skills/error-handling-patterns/resources/implementation-playbook.md +21 -72
  397. package/bundled-skills/event-sourcing-architect/SKILL.md +4 -3
  398. package/bundled-skills/exa-search/SKILL.md +4 -2
  399. package/bundled-skills/executing-plans/SKILL.md +8 -8
  400. package/bundled-skills/expo-ui-jetpack-compose/SKILL.md +4 -7
  401. package/bundled-skills/expo-ui-swift-ui/SKILL.md +5 -8
  402. package/bundled-skills/fact-check-x-unified/SKILL.md +25 -15
  403. package/bundled-skills/fact-check-x-unified/UPSTREAM-NOTICE.md +9 -0
  404. package/bundled-skills/fact-check-x-unified/scripts/fact_check_x.py +10 -5
  405. package/bundled-skills/fact-check-x-unified/scripts/trusted_search_config.py +49 -8
  406. package/bundled-skills/fact-check-x-unified/tests/smoke_test.py +1 -1
  407. package/bundled-skills/fact-check-x-unified/tests/trusted_search_config_test.py +8 -2
  408. package/bundled-skills/fal-audio/SKILL.md +16 -6
  409. package/bundled-skills/fal-generate/SKILL.md +16 -6
  410. package/bundled-skills/fal-image-edit/SKILL.md +16 -6
  411. package/bundled-skills/fal-platform/SKILL.md +12 -4
  412. package/bundled-skills/fal-upscale/SKILL.md +12 -4
  413. package/bundled-skills/fal-workflow/SKILL.md +24 -6
  414. package/bundled-skills/family-health-analyzer/SKILL.md +17 -16
  415. package/bundled-skills/fastapi-router-py/SKILL.md +3 -0
  416. package/bundled-skills/fastapi-router-py/UPSTREAM-LICENSE.txt +21 -0
  417. package/bundled-skills/fastapi-router-py/UPSTREAM-NOTICE.md +11 -0
  418. package/bundled-skills/fastapi-router-py/assets/template.py +147 -0
  419. package/bundled-skills/fda-food-safety-auditor/SKILL.md +9 -8
  420. package/bundled-skills/fda-medtech-compliance-auditor/SKILL.md +8 -8
  421. package/bundled-skills/ffuf-claude-skill/SKILL.md +18 -3
  422. package/bundled-skills/file-organizer/SKILL.md +1 -1
  423. package/bundled-skills/find-bugs/SKILL.md +4 -4
  424. package/bundled-skills/find-matching-tenders/SKILL.md +12 -11
  425. package/bundled-skills/firecrawl-scraper/SKILL.md +4 -2
  426. package/bundled-skills/firmware-analyst/SKILL.md +10 -1
  427. package/bundled-skills/fix-review/SKILL.md +5 -1
  428. package/bundled-skills/fp-either-ref/SKILL.md +10 -4
  429. package/bundled-skills/fp-option-ref/SKILL.md +12 -6
  430. package/bundled-skills/fp-pipe-ref/SKILL.md +7 -1
  431. package/bundled-skills/fp-taskeither-ref/SKILL.md +28 -10
  432. package/bundled-skills/fp-types-ref/SKILL.md +8 -2
  433. package/bundled-skills/framework-migration-legacy-modernize/SKILL.md +0 -1
  434. package/bundled-skills/free-design-resources/SKILL.md +8 -0
  435. package/bundled-skills/frontend-api-integration-patterns/SKILL.md +11 -8
  436. package/bundled-skills/frontend-data-contracts/SKILL.md +5 -1
  437. package/bundled-skills/frontend-mobile-development-component-scaffold/SKILL.md +1 -1
  438. package/bundled-skills/frontend-mobile-security-xss-scan/SKILL.md +1 -1
  439. package/bundled-skills/frontend-slides/SKILL.md +1 -0
  440. package/bundled-skills/frontend-slides-frontend-slides/SKILL.md +15 -0
  441. package/bundled-skills/frontend-slides-frontend-slides/UPSTREAM-LICENSE.txt +21 -0
  442. package/bundled-skills/frontend-slides-frontend-slides/UPSTREAM-NOTICE.md +14 -0
  443. package/bundled-skills/frontend-slides-frontend-slides/scripts/export-pdf.sh +390 -0
  444. package/bundled-skills/frontend-slides-frontend-slides/scripts/extract-pptx.py +96 -0
  445. package/bundled-skills/frontend-slides-frontend-slides/scripts/lib/confined-server.mjs +113 -0
  446. package/bundled-skills/frontend-ui-engineering/SKILL.md +8 -0
  447. package/bundled-skills/full-output-enforcement/SKILL.md +20 -9
  448. package/bundled-skills/full-stack-orchestration-full-stack-feature/SKILL.md +0 -1
  449. package/bundled-skills/game-development/2d-games/SKILL.md +3 -3
  450. package/bundled-skills/game-development/3d-games/SKILL.md +8 -4
  451. package/bundled-skills/game-development/game-design/SKILL.md +8 -4
  452. package/bundled-skills/game-development/mobile-games/SKILL.md +10 -6
  453. package/bundled-skills/game-development/multiplayer/SKILL.md +9 -5
  454. package/bundled-skills/game-development/pc-games/SKILL.md +6 -2
  455. package/bundled-skills/game-development/vr-ar/SKILL.md +12 -6
  456. package/bundled-skills/gh-review-requests/SKILL.md +14 -42
  457. package/bundled-skills/gha-security-review/SKILL.md +3 -0
  458. package/bundled-skills/gha-security-review/UPSTREAM-LICENSE.txt +190 -0
  459. package/bundled-skills/gha-security-review/UPSTREAM-NOTICE.md +19 -0
  460. package/bundled-skills/gha-security-review/references/ai-prompt-injection-via-ci.md +181 -0
  461. package/bundled-skills/gha-security-review/references/comment-triggered-commands.md +195 -0
  462. package/bundled-skills/gha-security-review/references/credential-escalation.md +225 -0
  463. package/bundled-skills/gha-security-review/references/expression-injection.md +287 -0
  464. package/bundled-skills/gha-security-review/references/permissions-and-secrets.md +265 -0
  465. package/bundled-skills/gha-security-review/references/pwn-request.md +212 -0
  466. package/bundled-skills/gha-security-review/references/real-world-attacks.md +298 -0
  467. package/bundled-skills/gha-security-review/references/runner-infrastructure.md +268 -0
  468. package/bundled-skills/gha-security-review/references/supply-chain.md +225 -0
  469. package/bundled-skills/git-advanced-workflows/SKILL.md +19 -12
  470. package/bundled-skills/git-commit-message/SKILL.md +2 -2
  471. package/bundled-skills/git-pr-review/SKILL.md +6 -9
  472. package/bundled-skills/git-pr-workflows-onboard/SKILL.md +0 -1
  473. package/bundled-skills/git-pr-workflows-pr-enhance/SKILL.md +1 -1
  474. package/bundled-skills/github-actions/SKILL.md +20 -24
  475. package/bundled-skills/github-actions-debugger/SKILL.md +7 -3
  476. package/bundled-skills/github-issue-creator/SKILL.md +12 -12
  477. package/bundled-skills/gitlab-ci-patterns/SKILL.md +5 -7
  478. package/bundled-skills/global-chat-agent-discovery/SKILL.md +12 -7
  479. package/bundled-skills/gmail-automation/SKILL.md +9 -0
  480. package/bundled-skills/godot-4-migration/SKILL.md +12 -4
  481. package/bundled-skills/google-calendar-automation/SKILL.md +23 -145
  482. package/bundled-skills/google-docs-automation/SKILL.md +1 -1
  483. package/bundled-skills/google-drive-automation/SKILL.md +9 -0
  484. package/bundled-skills/google-sheets-automation/SKILL.md +1 -1
  485. package/bundled-skills/google-slides-automation/SKILL.md +1 -1
  486. package/bundled-skills/graphql-architect/SKILL.md +0 -1
  487. package/bundled-skills/grill-me/SKILL.md +3 -1
  488. package/bundled-skills/grill-with-docs/SKILL.md +3 -1
  489. package/bundled-skills/grilling/SKILL.md +1 -1
  490. package/bundled-skills/handoff/SKILL.md +5 -1
  491. package/bundled-skills/haskell-pro/SKILL.md +3 -4
  492. package/bundled-skills/headline-psychologist/SKILL.md +15 -7
  493. package/bundled-skills/hf-mem/SKILL.md +9 -1
  494. package/bundled-skills/hosted-agents-v2-py/SKILL.md +56 -57
  495. package/bundled-skills/hr-pro/SKILL.md +0 -1
  496. package/bundled-skills/hugging-face-jobs/SKILL.md +0 -1
  497. package/bundled-skills/hugging-face-tool-builder/SKILL.md +16 -2
  498. package/bundled-skills/hybrid-cloud-architect/SKILL.md +0 -1
  499. package/bundled-skills/hybrid-cloud-networking/SKILL.md +11 -1
  500. package/bundled-skills/hybrid-cloud-networking/UPSTREAM-LICENSE.txt +21 -0
  501. package/bundled-skills/hybrid-cloud-networking/UPSTREAM-NOTICE.md +11 -0
  502. package/bundled-skills/hybrid-cloud-networking/references/direct-connect.md +17 -0
  503. package/bundled-skills/hyperexecute-skill/SKILL.md +7 -0
  504. package/bundled-skills/hyperexecute-skill/UPSTREAM-LICENSE.txt +21 -0
  505. package/bundled-skills/hyperexecute-skill/UPSTREAM-NOTICE.md +16 -0
  506. package/bundled-skills/hyperexecute-skill/scripts/build-command.js +57 -0
  507. package/bundled-skills/hyperexecute-skill/scripts/doctor.js +81 -0
  508. package/bundled-skills/hyperexecute-skill/scripts/summarize-artifacts.js +63 -0
  509. package/bundled-skills/hyperexecute-skill/scripts/validate-config.js +72 -0
  510. package/bundled-skills/iconsax-library/SKILL.md +6 -4
  511. package/bundled-skills/ida-reverse/SKILL.md +13 -0
  512. package/bundled-skills/ida-reverse/UPSTREAM-LICENSE.txt +21 -0
  513. package/bundled-skills/ida-reverse/UPSTREAM-NOTICE.md +13 -0
  514. package/bundled-skills/ida-reverse/scripts/IdaOpenHelpers.ps1 +115 -0
  515. package/bundled-skills/ida-reverse/scripts/open.ps1 +378 -0
  516. package/bundled-skills/ida-reverse/scripts/start-gui.ps1 +105 -0
  517. package/bundled-skills/idea-evaluator/idea-evaluator-con/SKILL.md +4 -2
  518. package/bundled-skills/idea-evaluator/idea-evaluator-pro/SKILL.md +5 -3
  519. package/bundled-skills/identity-mirror/SKILL.md +15 -7
  520. package/bundled-skills/imagen/SKILL.md +15 -5
  521. package/bundled-skills/imagen/UPSTREAM-LICENSE.txt +190 -0
  522. package/bundled-skills/imagen/UPSTREAM-NOTICE.md +5 -0
  523. package/bundled-skills/imagen/scripts/generate_image.py +241 -0
  524. package/bundled-skills/implement/SKILL.md +4 -4
  525. package/bundled-skills/incident-response-incident-response/SKILL.md +0 -1
  526. package/bundled-skills/incident-response-smart-fix/SKILL.md +1 -1
  527. package/bundled-skills/incident-runbook-templates/SKILL.md +22 -16
  528. package/bundled-skills/incremental-implementation/SKILL.md +8 -0
  529. package/bundled-skills/infinite-gratitude/SKILL.md +6 -2
  530. package/bundled-skills/internal-comms/SKILL.md +1 -1
  531. package/bundled-skills/interview-coach/SKILL.md +7 -4
  532. package/bundled-skills/istio-traffic-management/SKILL.md +0 -1
  533. package/bundled-skills/iterate-pr/SKILL.md +9 -0
  534. package/bundled-skills/java-pro/SKILL.md +0 -1
  535. package/bundled-skills/javascript-pro/SKILL.md +1 -1
  536. package/bundled-skills/javascript-typescript-typescript-scaffold/SKILL.md +1 -1
  537. package/bundled-skills/julia-pro/SKILL.md +0 -1
  538. package/bundled-skills/k8s-security-policies/SKILL.md +8 -1
  539. package/bundled-skills/kotler-macro-analyzer/SKILL.md +4 -0
  540. package/bundled-skills/kotlin-coroutines-expert/SKILL.md +8 -5
  541. package/bundled-skills/kubernetes-deployment/SKILL.md +5 -1
  542. package/bundled-skills/kubernetes-hardening/SKILL.md +9 -1
  543. package/bundled-skills/langchain-architecture/SKILL.md +15 -1
  544. package/bundled-skills/legacy-modernizer/SKILL.md +4 -5
  545. package/bundled-skills/legal-advisor/SKILL.md +9 -6
  546. package/bundled-skills/lightning-architecture-review/SKILL.md +6 -6
  547. package/bundled-skills/lightning-channel-factories/SKILL.md +6 -6
  548. package/bundled-skills/lightning-factory-explainer/SKILL.md +5 -5
  549. package/bundled-skills/linkerd-patterns/SKILL.md +0 -1
  550. package/bundled-skills/linux-hardening/SKILL.md +24 -23
  551. package/bundled-skills/llm-application-dev-ai-assistant/SKILL.md +1 -1
  552. package/bundled-skills/llm-application-dev-langchain-agent/SKILL.md +0 -1
  553. package/bundled-skills/llm-application-dev-prompt-optimize/SKILL.md +1 -1
  554. package/bundled-skills/llm-evaluation/SKILL.md +50 -62
  555. package/bundled-skills/llm-evaluation/references/benchmarking.md +35 -0
  556. package/bundled-skills/logic-review/SKILL.md +8 -0
  557. package/bundled-skills/longbridge/SKILL.md +8 -4
  558. package/bundled-skills/longbridge-content/SKILL.md +3 -0
  559. package/bundled-skills/longbridge-content/UPSTREAM-LICENSE.txt +21 -0
  560. package/bundled-skills/longbridge-content/UPSTREAM-NOTICE.md +15 -0
  561. package/bundled-skills/longbridge-content/references/filing.md +48 -0
  562. package/bundled-skills/longbridge-content/references/news.md +118 -0
  563. package/bundled-skills/longbridge-content/references/regulatory-kb.md +128 -0
  564. package/bundled-skills/longbridge-content/references/sec-filings.md +113 -0
  565. package/bundled-skills/longbridge-content/references/topic.md +53 -0
  566. package/bundled-skills/longbridge-fundamentals/SKILL.md +3 -0
  567. package/bundled-skills/longbridge-fundamentals/UPSTREAM-LICENSE.txt +21 -0
  568. package/bundled-skills/longbridge-fundamentals/UPSTREAM-NOTICE.md +31 -0
  569. package/bundled-skills/longbridge-fundamentals/references/behavioral-finance.md +108 -0
  570. package/bundled-skills/longbridge-fundamentals/references/business-segments.md +50 -0
  571. package/bundled-skills/longbridge-fundamentals/references/company.md +39 -0
  572. package/bundled-skills/longbridge-fundamentals/references/compare.md +49 -0
  573. package/bundled-skills/longbridge-fundamentals/references/corp-action.md +42 -0
  574. package/bundled-skills/longbridge-fundamentals/references/corporate-events.md +89 -0
  575. package/bundled-skills/longbridge-fundamentals/references/corporate.md +64 -0
  576. package/bundled-skills/longbridge-fundamentals/references/dcf.md +103 -0
  577. package/bundled-skills/longbridge-fundamentals/references/dividend.md +51 -0
  578. package/bundled-skills/longbridge-fundamentals/references/executive.md +39 -0
  579. package/bundled-skills/longbridge-fundamentals/references/financial-report.md +88 -0
  580. package/bundled-skills/longbridge-fundamentals/references/financial-statement.md +49 -0
  581. package/bundled-skills/longbridge-fundamentals/references/industry-valuation.md +86 -0
  582. package/bundled-skills/longbridge-fundamentals/references/invest-relation.md +39 -0
  583. package/bundled-skills/longbridge-fundamentals/references/main-business-analysis.md +654 -0
  584. package/bundled-skills/longbridge-fundamentals/references/operating.md +42 -0
  585. package/bundled-skills/longbridge-fundamentals/references/smallcap-growth.md +72 -0
  586. package/bundled-skills/longbridge-fundamentals/references/valuation-methodology.md +86 -0
  587. package/bundled-skills/longbridge-fundamentals/references/valuation-rank.md +57 -0
  588. package/bundled-skills/longbridge-fundamentals/references/valuation.md +86 -0
  589. package/bundled-skills/longbridge-fundamentals/references/value-screen.md +71 -0
  590. package/bundled-skills/longbridge-market-data/SKILL.md +3 -0
  591. package/bundled-skills/longbridge-market-data/UPSTREAM-LICENSE.txt +21 -0
  592. package/bundled-skills/longbridge-market-data/UPSTREAM-NOTICE.md +28 -0
  593. package/bundled-skills/longbridge-market-data/references/adr-premium.md +63 -0
  594. package/bundled-skills/longbridge-market-data/references/ah-premium.md +67 -0
  595. package/bundled-skills/longbridge-market-data/references/capital.md +48 -0
  596. package/bundled-skills/longbridge-market-data/references/depth.md +40 -0
  597. package/bundled-skills/longbridge-market-data/references/exchange-rate.md +35 -0
  598. package/bundled-skills/longbridge-market-data/references/fx-carry.md +59 -0
  599. package/bundled-skills/longbridge-market-data/references/intraday.md +47 -0
  600. package/bundled-skills/longbridge-market-data/references/ipo.md +48 -0
  601. package/bundled-skills/longbridge-market-data/references/kline.md +62 -0
  602. package/bundled-skills/longbridge-market-data/references/market-status.md +35 -0
  603. package/bundled-skills/longbridge-market-data/references/market-temp.md +53 -0
  604. package/bundled-skills/longbridge-market-data/references/participants.md +35 -0
  605. package/bundled-skills/longbridge-market-data/references/quote.md +78 -0
  606. package/bundled-skills/longbridge-market-data/references/security-list.md +36 -0
  607. package/bundled-skills/longbridge-market-data/references/subscriptions.md +23 -0
  608. package/bundled-skills/longbridge-market-data/references/trade-stats.md +39 -0
  609. package/bundled-skills/longbridge-market-data/references/trades.md +44 -0
  610. package/bundled-skills/longbridge-market-data/references/trading.md +40 -0
  611. package/bundled-skills/loss-aversion-designer/SKILL.md +15 -7
  612. package/bundled-skills/m365-agents-dotnet/SKILL.md +8 -0
  613. package/bundled-skills/m365-agents-py/SKILL.md +8 -0
  614. package/bundled-skills/m365-agents-ts/SKILL.md +8 -0
  615. package/bundled-skills/machine-learning-ops-ml-pipeline/SKILL.md +0 -1
  616. package/bundled-skills/macos-screen-recorder/SKILL.md +5 -1
  617. package/bundled-skills/magic-animator/SKILL.md +4 -2
  618. package/bundled-skills/magic-ui-generator/SKILL.md +7 -5
  619. package/bundled-skills/makepad-animation/SKILL.md +8 -0
  620. package/bundled-skills/makepad-basics/SKILL.md +9 -0
  621. package/bundled-skills/makepad-deployment/SKILL.md +18 -0
  622. package/bundled-skills/makepad-dsl/SKILL.md +9 -0
  623. package/bundled-skills/makepad-event-action/SKILL.md +9 -0
  624. package/bundled-skills/makepad-font/SKILL.md +8 -0
  625. package/bundled-skills/makepad-layout/SKILL.md +9 -0
  626. package/bundled-skills/makepad-platform/SKILL.md +8 -0
  627. package/bundled-skills/makepad-reference/SKILL.md +5 -3
  628. package/bundled-skills/makepad-shaders/SKILL.md +9 -0
  629. package/bundled-skills/makepad-skills/SKILL.md +11 -5
  630. package/bundled-skills/makepad-splash/SKILL.md +8 -0
  631. package/bundled-skills/makepad-widgets/SKILL.md +10 -0
  632. package/bundled-skills/manifest/SKILL.md +20 -113
  633. package/bundled-skills/markdown-rendering/SKILL.md +3 -3
  634. package/bundled-skills/market-sizing-analysis/SKILL.md +13 -24
  635. package/bundled-skills/market-sizing-analysis/examples/saas-market-sizing.md +20 -337
  636. package/bundled-skills/market-sizing-analysis/references/data-sources.md +10 -22
  637. package/bundled-skills/markstream-angular/SKILL.md +3 -1
  638. package/bundled-skills/markstream-nuxt/SKILL.md +3 -1
  639. package/bundled-skills/markstream-react/SKILL.md +5 -1
  640. package/bundled-skills/markstream-svelte/SKILL.md +3 -1
  641. package/bundled-skills/markstream-vue/SKILL.md +3 -1
  642. package/bundled-skills/markstream-vue2/SKILL.md +5 -1
  643. package/bundled-skills/markstream-vue2-cli/SKILL.md +5 -1
  644. package/bundled-skills/markstream-vue2-vite/SKILL.md +5 -1
  645. package/bundled-skills/matplotlib/SKILL.md +5 -0
  646. package/bundled-skills/matplotlib/UPSTREAM-LICENSE.txt +21 -0
  647. package/bundled-skills/matplotlib/UPSTREAM-NOTICE.md +16 -0
  648. package/bundled-skills/matplotlib/references/api_reference.md +412 -0
  649. package/bundled-skills/matplotlib/references/common_issues.md +563 -0
  650. package/bundled-skills/matplotlib/references/plot_types.md +476 -0
  651. package/bundled-skills/matplotlib/references/styling_guide.md +589 -0
  652. package/bundled-skills/matplotlib/scripts/plot_template.py +401 -0
  653. package/bundled-skills/matplotlib/scripts/style_configurator.py +412 -0
  654. package/bundled-skills/mcp-server-security/SKILL.md +17 -11
  655. package/bundled-skills/mcp-server-security/references/details.md +51 -90
  656. package/bundled-skills/memory-forensics/SKILL.md +0 -1
  657. package/bundled-skills/mermaid-expert/SKILL.md +5 -4
  658. package/bundled-skills/minecraft-bukkit-pro/SKILL.md +0 -1
  659. package/bundled-skills/mirrord/SKILL.md +5 -3
  660. package/bundled-skills/ml-engineer/SKILL.md +0 -1
  661. package/bundled-skills/ml-pipeline-workflow/SKILL.md +10 -1
  662. package/bundled-skills/mlops-engineer/SKILL.md +0 -1
  663. package/bundled-skills/mobile-security-coder/SKILL.md +0 -1
  664. package/bundled-skills/monopoly/SKILL.md +12 -0
  665. package/bundled-skills/monopoly/security-checklist/SKILL.md +9 -7
  666. package/bundled-skills/monorepo-architect/SKILL.md +5 -4
  667. package/bundled-skills/monte-carlo-analyze-root-cause/SKILL.md +4 -0
  668. package/bundled-skills/monte-carlo-analyze-root-cause/UPSTREAM-LICENSE.txt +201 -0
  669. package/bundled-skills/monte-carlo-analyze-root-cause/UPSTREAM-NOTICE.md +19 -0
  670. package/bundled-skills/monte-carlo-analyze-root-cause/references/common-root-causes.md +79 -0
  671. package/bundled-skills/monte-carlo-analyze-root-cause/references/data-exploration.md +149 -0
  672. package/bundled-skills/monte-carlo-analyze-root-cause/references/etl-failure-investigation.md +67 -0
  673. package/bundled-skills/monte-carlo-analyze-root-cause/references/field-anomaly-investigation.md +107 -0
  674. package/bundled-skills/monte-carlo-analyze-root-cause/references/freshness-investigation.md +67 -0
  675. package/bundled-skills/monte-carlo-analyze-root-cause/references/intake-no-incident.md +67 -0
  676. package/bundled-skills/monte-carlo-analyze-root-cause/references/query-change-investigation.md +55 -0
  677. package/bundled-skills/monte-carlo-analyze-root-cause/references/schema-investigation.md +48 -0
  678. package/bundled-skills/monte-carlo-analyze-root-cause/references/volume-investigation.md +53 -0
  679. package/bundled-skills/monte-carlo-asset-health/SKILL.md +4 -0
  680. package/bundled-skills/monte-carlo-asset-health/UPSTREAM-LICENSE.txt +201 -0
  681. package/bundled-skills/monte-carlo-asset-health/UPSTREAM-NOTICE.md +12 -0
  682. package/bundled-skills/monte-carlo-asset-health/references/parameters.md +111 -0
  683. package/bundled-skills/monte-carlo-asset-health/references/workflows.md +132 -0
  684. package/bundled-skills/monte-carlo-monitoring-advisor/SKILL.md +3 -0
  685. package/bundled-skills/monte-carlo-monitoring-advisor/UPSTREAM-LICENSE.txt +201 -0
  686. package/bundled-skills/monte-carlo-monitoring-advisor/UPSTREAM-NOTICE.md +12 -0
  687. package/bundled-skills/monte-carlo-monitoring-advisor/references/agent-monitor-creation.md +471 -0
  688. package/bundled-skills/monte-carlo-monitoring-advisor/references/data-monitor-creation.md +272 -0
  689. package/bundled-skills/monte-carlo-performance-diagnosis/SKILL.md +3 -0
  690. package/bundled-skills/monte-carlo-performance-diagnosis/UPSTREAM-LICENSE.txt +201 -0
  691. package/bundled-skills/monte-carlo-performance-diagnosis/UPSTREAM-NOTICE.md +12 -0
  692. package/bundled-skills/monte-carlo-performance-diagnosis/references/investigation-tiers.md +110 -0
  693. package/bundled-skills/monte-carlo-performance-diagnosis/references/query-analysis.md +50 -0
  694. package/bundled-skills/monte-carlo-remediation/SKILL.md +3 -0
  695. package/bundled-skills/monte-carlo-remediation/UPSTREAM-LICENSE.txt +201 -0
  696. package/bundled-skills/monte-carlo-remediation/UPSTREAM-NOTICE.md +13 -0
  697. package/bundled-skills/monte-carlo-remediation/references/patterns.md +295 -0
  698. package/bundled-skills/monte-carlo-remediation/references/safety.md +160 -0
  699. package/bundled-skills/monte-carlo-remediation/references/tool-discovery.md +172 -0
  700. package/bundled-skills/monte-carlo-storage-cost-analysis/SKILL.md +3 -0
  701. package/bundled-skills/monte-carlo-storage-cost-analysis/UPSTREAM-LICENSE.txt +201 -0
  702. package/bundled-skills/monte-carlo-storage-cost-analysis/UPSTREAM-NOTICE.md +11 -0
  703. package/bundled-skills/monte-carlo-storage-cost-analysis/references/output-structure.md +93 -0
  704. package/bundled-skills/mtls-configuration/SKILL.md +0 -1
  705. package/bundled-skills/multi-cloud-architecture/SKILL.md +3 -1
  706. package/bundled-skills/multi-cloud-architecture/UPSTREAM-LICENSE.txt +21 -0
  707. package/bundled-skills/multi-cloud-architecture/UPSTREAM-NOTICE.md +12 -0
  708. package/bundled-skills/multi-cloud-architecture/references/multi-cloud-patterns.md +26 -0
  709. package/bundled-skills/multi-cloud-architecture/references/service-comparison.md +35 -0
  710. package/bundled-skills/nanobanana-ppt-skills/SKILL.md +13 -4
  711. package/bundled-skills/native-data-fetching/references/detailed-guide.md +42 -23
  712. package/bundled-skills/native-data-fetching/references/expo-router-loaders.md +36 -29
  713. package/bundled-skills/nerdzao-elite/SKILL.md +9 -5
  714. package/bundled-skills/nerdzao-elite-gemini-high/SKILL.md +7 -3
  715. package/bundled-skills/network-engineer/SKILL.md +0 -1
  716. package/bundled-skills/networkx/SKILL.md +3 -0
  717. package/bundled-skills/networkx/UPSTREAM-LICENSE.txt +21 -0
  718. package/bundled-skills/networkx/UPSTREAM-NOTICE.md +15 -0
  719. package/bundled-skills/networkx/references/algorithms.md +383 -0
  720. package/bundled-skills/networkx/references/generators.md +378 -0
  721. package/bundled-skills/networkx/references/graph-basics.md +283 -0
  722. package/bundled-skills/networkx/references/io.md +441 -0
  723. package/bundled-skills/networkx/references/visualization.md +529 -0
  724. package/bundled-skills/new-rails-project/SKILL.md +4 -2
  725. package/bundled-skills/news-sentiment-engine/SKILL.md +13 -28
  726. package/bundled-skills/nft-standards/SKILL.md +15 -1
  727. package/bundled-skills/nsfw-ai-spicyapi/SKILL.md +8 -0
  728. package/bundled-skills/nx-workspace-patterns/SKILL.md +0 -1
  729. package/bundled-skills/objection-preemptor/SKILL.md +15 -7
  730. package/bundled-skills/observability-monitoring-monitor-setup/SKILL.md +1 -1
  731. package/bundled-skills/obsidian-cli/SKILL.md +4 -2
  732. package/bundled-skills/odoo-module-developer/SKILL.md +4 -1
  733. package/bundled-skills/odoo-orm-expert/SKILL.md +4 -2
  734. package/bundled-skills/odw/SKILL.md +8 -0
  735. package/bundled-skills/offensive-osint/SKILL.md +76 -70
  736. package/bundled-skills/offensive-osint/UPSTREAM-LICENSE.txt +395 -0
  737. package/bundled-skills/offensive-osint/UPSTREAM-NOTICE.md +26 -0
  738. package/bundled-skills/offensive-osint/references/breach-and-credentials.md +130 -0
  739. package/bundled-skills/offensive-osint/references/dork-corpus.md +182 -0
  740. package/bundled-skills/offensive-osint/references/helpers-and-automation.md +266 -0
  741. package/bundled-skills/offensive-osint/references/identity-fabric.md +309 -0
  742. package/bundled-skills/offensive-osint/references/people-osint.md +107 -0
  743. package/bundled-skills/offensive-osint/references/probes-and-wordlists.md +1269 -0
  744. package/bundled-skills/offensive-osint/references/recon-stack.md +284 -0
  745. package/bundled-skills/offensive-osint/references/recon-techniques.md +343 -0
  746. package/bundled-skills/offensive-osint/references/saas-public-surfaces.md +140 -0
  747. package/bundled-skills/offensive-osint/references/secret-patterns.md +71 -0
  748. package/bundled-skills/offensive-osint/references/secret-validators.md +334 -0
  749. package/bundled-skills/offensive-osint/references/sector-notes.md +74 -0
  750. package/bundled-skills/offensive-osint/references/severity-matrix.md +112 -0
  751. package/bundled-skills/offensive-osint/references/specialized-osint.md +204 -0
  752. package/bundled-skills/offensive-osint/references/tooling-install.md +190 -0
  753. package/bundled-skills/offers/SKILL.md +1 -1
  754. package/bundled-skills/omp-delegate/SKILL.md +5 -1
  755. package/bundled-skills/omp-delegate/UPSTREAM-LICENSE.txt +21 -0
  756. package/bundled-skills/omp-delegate/UPSTREAM-NOTICE.md +13 -0
  757. package/bundled-skills/omp-delegate/scripts/relay.mjs +823 -0
  758. package/bundled-skills/on-call-handoff-patterns/SKILL.md +2 -2
  759. package/bundled-skills/onboarding/SKILL.md +1 -1
  760. package/bundled-skills/onboarding-cro/SKILL.md +1 -1
  761. package/bundled-skills/open-source-marketing/SKILL.md +1 -1
  762. package/bundled-skills/opencode-delegate/SKILL.md +5 -1
  763. package/bundled-skills/opencode-delegate/UPSTREAM-LICENSE.txt +21 -0
  764. package/bundled-skills/opencode-delegate/UPSTREAM-NOTICE.md +13 -0
  765. package/bundled-skills/opencode-delegate/scripts/relay.mjs +781 -0
  766. package/bundled-skills/page-cro/SKILL.md +14 -110
  767. package/bundled-skills/payment-integration/SKILL.md +0 -1
  768. package/bundled-skills/paypal-integration/SKILL.md +3 -1
  769. package/bundled-skills/pentest-tools/src-hunter/SKILL.md +8 -0
  770. package/bundled-skills/performance-engineer/SKILL.md +1 -1
  771. package/bundled-skills/performance-optimization/SKILL.md +8 -0
  772. package/bundled-skills/performance-testing-review-ai-review/SKILL.md +8 -1
  773. package/bundled-skills/performance-testing-review-multi-agent-review/SKILL.md +1 -1
  774. package/bundled-skills/php-pro/SKILL.md +0 -1
  775. package/bundled-skills/pi-delegate/SKILL.md +5 -1
  776. package/bundled-skills/pi-delegate/UPSTREAM-LICENSE.txt +21 -0
  777. package/bundled-skills/pi-delegate/UPSTREAM-NOTICE.md +13 -0
  778. package/bundled-skills/pi-delegate/scripts/relay.mjs +822 -0
  779. package/bundled-skills/pitch-psychologist/SKILL.md +18 -10
  780. package/bundled-skills/planning-and-task-breakdown/SKILL.md +8 -0
  781. package/bundled-skills/playwright-java/SKILL.md +14 -0
  782. package/bundled-skills/podcast-generation/SKILL.md +3 -0
  783. package/bundled-skills/podcast-generation/UPSTREAM-LICENSE.txt +21 -0
  784. package/bundled-skills/podcast-generation/UPSTREAM-NOTICE.md +13 -0
  785. package/bundled-skills/podcast-generation/references/architecture.md +87 -0
  786. package/bundled-skills/podcast-generation/references/code-examples.md +189 -0
  787. package/bundled-skills/podcast-generation/scripts/pcm_to_wav.py +73 -0
  788. package/bundled-skills/polars/SKILL.md +3 -0
  789. package/bundled-skills/polars/UPSTREAM-LICENSE.txt +21 -0
  790. package/bundled-skills/polars/UPSTREAM-NOTICE.md +16 -0
  791. package/bundled-skills/polars/references/best_practices.md +649 -0
  792. package/bundled-skills/polars/references/core_concepts.md +378 -0
  793. package/bundled-skills/polars/references/io_guide.md +557 -0
  794. package/bundled-skills/polars/references/operations.md +602 -0
  795. package/bundled-skills/polars/references/pandas_migration.md +417 -0
  796. package/bundled-skills/polars/references/transformations.md +549 -0
  797. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/SKILL.md +3 -0
  798. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/UPSTREAM-LICENSE.txt +21 -0
  799. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/UPSTREAM-NOTICE.md +18 -0
  800. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/references/amendments.md +146 -0
  801. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/references/protocol-spec.md +506 -0
  802. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/references/routing.md +227 -0
  803. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/references/templates.md +438 -0
  804. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/references/troubleshooting.md +216 -0
  805. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/scripts/init_polis.py +559 -0
  806. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/scripts/route_contract.py +19 -0
  807. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/templates/POLIS_CONSTITUTION.md +293 -0
  808. package/bundled-skills/posix-shell-pro/SKILL.md +0 -1
  809. package/bundled-skills/power-user-cultivation/SKILL.md +1 -1
  810. package/bundled-skills/presentation-deck/SKILL.md +4 -4
  811. package/bundled-skills/presentation-deck/references/related-skills.md +1 -1
  812. package/bundled-skills/price-psychology-strategist/SKILL.md +16 -8
  813. package/bundled-skills/pricing/SKILL.md +1 -1
  814. package/bundled-skills/product-marketing/SKILL.md +1 -1
  815. package/bundled-skills/prometheus-configuration/SKILL.md +11 -1
  816. package/bundled-skills/prompt-engineering-patterns/SKILL.md +0 -1
  817. package/bundled-skills/public-relations/SKILL.md +1 -1
  818. package/bundled-skills/pubmed-database/SKILL.md +10 -0
  819. package/bundled-skills/pypict-skill/SKILL.md +18 -5
  820. package/bundled-skills/python-testing-patterns/resources/implementation-playbook.md +7 -2
  821. package/bundled-skills/qiskit/SKILL.md +3 -0
  822. package/bundled-skills/qiskit/UPSTREAM-LICENSE.txt +21 -0
  823. package/bundled-skills/qiskit/UPSTREAM-NOTICE.md +18 -0
  824. package/bundled-skills/qiskit/references/algorithms.md +607 -0
  825. package/bundled-skills/qiskit/references/backends.md +433 -0
  826. package/bundled-skills/qiskit/references/circuits.md +197 -0
  827. package/bundled-skills/qiskit/references/patterns.md +533 -0
  828. package/bundled-skills/qiskit/references/primitives.md +277 -0
  829. package/bundled-skills/qiskit/references/setup.md +99 -0
  830. package/bundled-skills/qiskit/references/transpilation.md +286 -0
  831. package/bundled-skills/qiskit/references/visualization.md +415 -0
  832. package/bundled-skills/qoder-delegate/SKILL.md +5 -1
  833. package/bundled-skills/qoder-delegate/UPSTREAM-LICENSE.txt +21 -0
  834. package/bundled-skills/qoder-delegate/UPSTREAM-NOTICE.md +13 -0
  835. package/bundled-skills/qoder-delegate/scripts/relay.mjs +698 -0
  836. package/bundled-skills/quant-analyst/SKILL.md +0 -1
  837. package/bundled-skills/radare2/SKILL.md +9 -0
  838. package/bundled-skills/react-flow-node-ts/SKILL.md +3 -0
  839. package/bundled-skills/react-flow-node-ts/UPSTREAM-LICENSE.txt +21 -0
  840. package/bundled-skills/react-flow-node-ts/UPSTREAM-NOTICE.md +12 -0
  841. package/bundled-skills/react-flow-node-ts/assets/template.tsx +108 -0
  842. package/bundled-skills/react-flow-node-ts/assets/types.template.ts +34 -0
  843. package/bundled-skills/react-state-management/SKILL.md +0 -1
  844. package/bundled-skills/read-all-adrs/SKILL.md +3 -4
  845. package/bundled-skills/recsys-pipeline-architect/SKILL.md +8 -0
  846. package/bundled-skills/reference-builder/SKILL.md +0 -1
  847. package/bundled-skills/risk-manager/SKILL.md +0 -1
  848. package/bundled-skills/robius-app-architecture/SKILL.md +10 -0
  849. package/bundled-skills/robius-event-action/SKILL.md +10 -0
  850. package/bundled-skills/robius-matrix-integration/SKILL.md +10 -0
  851. package/bundled-skills/robius-state-management/SKILL.md +10 -0
  852. package/bundled-skills/robius-widget-patterns/SKILL.md +10 -0
  853. package/bundled-skills/ruby-pro/SKILL.md +0 -1
  854. package/bundled-skills/scala-pro/SKILL.md +0 -1
  855. package/bundled-skills/scanpy/SKILL.md +3 -0
  856. package/bundled-skills/scanpy/UPSTREAM-LICENSE.txt +21 -0
  857. package/bundled-skills/scanpy/UPSTREAM-NOTICE.md +15 -0
  858. package/bundled-skills/scanpy/assets/analysis_template.py +295 -0
  859. package/bundled-skills/scanpy/references/api_reference.md +251 -0
  860. package/bundled-skills/scanpy/references/plotting_guide.md +352 -0
  861. package/bundled-skills/scanpy/references/standard_workflow.md +206 -0
  862. package/bundled-skills/scanpy/scripts/qc_analysis.py +200 -0
  863. package/bundled-skills/scarcity-urgency-psychologist/SKILL.md +15 -7
  864. package/bundled-skills/score-eval/SKILL.md +29 -18
  865. package/bundled-skills/search-specialist/SKILL.md +0 -1
  866. package/bundled-skills/security-bluebook-builder/SKILL.md +9 -1
  867. package/bundled-skills/security-compliance-compliance-check/resources/implementation-playbook.md +46 -177
  868. package/bundled-skills/security-requirement-extraction/resources/implementation-playbook.md +8 -6
  869. package/bundled-skills/senior-fullstack/SKILL.md +24 -200
  870. package/bundled-skills/senior-fullstack/references/architecture_patterns.md +4 -100
  871. package/bundled-skills/senior-fullstack/references/development_workflows.md +4 -100
  872. package/bundled-skills/senior-fullstack/references/tech_stack_guide.md +4 -100
  873. package/bundled-skills/senior-fullstack/scripts/code_quality_analyzer.py +5 -13
  874. package/bundled-skills/senior-fullstack/scripts/fullstack_scaffolder.py +5 -13
  875. package/bundled-skills/senior-fullstack/scripts/project_scaffolder.py +5 -13
  876. package/bundled-skills/seo-authority-builder/SKILL.md +0 -1
  877. package/bundled-skills/seo-cannibalization-detector/SKILL.md +6 -2
  878. package/bundled-skills/seo-content/SKILL.md +8 -0
  879. package/bundled-skills/seo-content-auditor/SKILL.md +3 -1
  880. package/bundled-skills/seo-directory-backlinks/SKILL.md +8 -0
  881. package/bundled-skills/seo-image-gen/SKILL.md +14 -0
  882. package/bundled-skills/seo-keyword-strategist/SKILL.md +0 -1
  883. package/bundled-skills/seo-meta-optimizer/SKILL.md +0 -1
  884. package/bundled-skills/seo-schema/SKILL.md +8 -0
  885. package/bundled-skills/seo-snippet-hunter/SKILL.md +0 -1
  886. package/bundled-skills/seo-structure-architect/SKILL.md +6 -2
  887. package/bundled-skills/sequence-psychologist/SKILL.md +15 -7
  888. package/bundled-skills/service-mesh-expert/SKILL.md +0 -1
  889. package/bundled-skills/service-mesh-observability/SKILL.md +0 -1
  890. package/bundled-skills/sharp-edges/SKILL.md +3 -0
  891. package/bundled-skills/sharp-edges/UPSTREAM-LICENSE.txt +427 -0
  892. package/bundled-skills/sharp-edges/UPSTREAM-NOTICE.md +26 -0
  893. package/bundled-skills/sharp-edges/references/auth-patterns.md +252 -0
  894. package/bundled-skills/sharp-edges/references/case-studies.md +274 -0
  895. package/bundled-skills/sharp-edges/references/config-patterns.md +333 -0
  896. package/bundled-skills/sharp-edges/references/crypto-apis.md +190 -0
  897. package/bundled-skills/sharp-edges/references/lang-c.md +205 -0
  898. package/bundled-skills/sharp-edges/references/lang-csharp.md +285 -0
  899. package/bundled-skills/sharp-edges/references/lang-go.md +270 -0
  900. package/bundled-skills/sharp-edges/references/lang-java.md +263 -0
  901. package/bundled-skills/sharp-edges/references/lang-javascript.md +269 -0
  902. package/bundled-skills/sharp-edges/references/lang-kotlin.md +265 -0
  903. package/bundled-skills/sharp-edges/references/lang-php.md +245 -0
  904. package/bundled-skills/sharp-edges/references/lang-python.md +274 -0
  905. package/bundled-skills/sharp-edges/references/lang-ruby.md +273 -0
  906. package/bundled-skills/sharp-edges/references/lang-rust.md +272 -0
  907. package/bundled-skills/sharp-edges/references/lang-swift.md +287 -0
  908. package/bundled-skills/sharp-edges/references/language-specific.md +588 -0
  909. package/bundled-skills/shellcheck-configuration/SKILL.md +0 -1
  910. package/bundled-skills/shipping-and-launch/SKILL.md +11 -0
  911. package/bundled-skills/skill-scanner/SKILL.md +23 -14
  912. package/bundled-skills/skill-scanner/UPSTREAM-LICENSE.txt +190 -0
  913. package/bundled-skills/skill-scanner/UPSTREAM-NOTICE.md +14 -0
  914. package/bundled-skills/skill-scanner/references/dangerous-code-patterns.md +194 -0
  915. package/bundled-skills/skill-scanner/references/permission-analysis.md +93 -0
  916. package/bundled-skills/skill-scanner/references/prompt-injection-patterns.md +157 -0
  917. package/bundled-skills/skill-scanner/scripts/scan_skill.py +800 -0
  918. package/bundled-skills/skill-seekers/SKILL.md +16 -20
  919. package/bundled-skills/slideops/SKILL.md +3 -0
  920. package/bundled-skills/slideops/UPSTREAM-LICENSE.txt +21 -0
  921. package/bundled-skills/slideops/UPSTREAM-NOTICE.md +16 -0
  922. package/bundled-skills/slideops/assets/template.html +536 -0
  923. package/bundled-skills/slideops/references/automation.md +185 -0
  924. package/bundled-skills/slideops/references/diagrams.md +92 -0
  925. package/bundled-skills/slideops/references/verification.md +124 -0
  926. package/bundled-skills/slideops/scripts/check.py +501 -0
  927. package/bundled-skills/slideops/scripts/cite.py +143 -0
  928. package/bundled-skills/social-proof-architect/SKILL.md +16 -8
  929. package/bundled-skills/spark-optimization/SKILL.md +0 -1
  930. package/bundled-skills/speckit-updater/SKILL.md +7 -0
  931. package/bundled-skills/speed/SKILL.md +16 -14
  932. package/bundled-skills/sred-project-organizer/SKILL.md +7 -0
  933. package/bundled-skills/startup-analyst/SKILL.md +0 -1
  934. package/bundled-skills/startup-business-analyst-business-case/SKILL.md +0 -1
  935. package/bundled-skills/startup-business-analyst-financial-projections/SKILL.md +0 -1
  936. package/bundled-skills/startup-business-analyst-market-opportunity/SKILL.md +0 -1
  937. package/bundled-skills/startup-financial-modeling/SKILL.md +16 -25
  938. package/bundled-skills/subject-line-psychologist/SKILL.md +15 -7
  939. package/bundled-skills/superpowers-lab/SKILL.md +15 -20
  940. package/bundled-skills/supply-chain-security/SKILL.md +6 -14
  941. package/bundled-skills/supply-chain-security/references/cicd-pipeline-security.md +3 -39
  942. package/bundled-skills/swiftui-ui-patterns/SKILL.md +4 -0
  943. package/bundled-skills/swiftui-ui-patterns/references/async-state.md +14 -8
  944. package/bundled-skills/swiftui-ui-patterns/references/controls.md +1 -1
  945. package/bundled-skills/swiftui-ui-patterns/references/form.md +22 -4
  946. package/bundled-skills/swiftui-ui-patterns/references/lightweight-clients.md +3 -3
  947. package/bundled-skills/swiftui-ui-patterns/references/list.md +2 -2
  948. package/bundled-skills/swiftui-ui-patterns/references/matched-transitions.md +3 -1
  949. package/bundled-skills/swiftui-ui-patterns/references/media.md +3 -0
  950. package/bundled-skills/swiftui-ui-patterns/references/overlay.md +8 -3
  951. package/bundled-skills/swiftui-ui-patterns/references/performance.md +2 -5
  952. package/bundled-skills/swiftui-ui-patterns/references/scroll-reveal.md +3 -1
  953. package/bundled-skills/swiftui-ui-patterns/references/searchable.md +23 -7
  954. package/bundled-skills/swiftui-ui-patterns/references/sheets.md +16 -10
  955. package/bundled-skills/swiftui-ui-patterns/references/split-views.md +4 -1
  956. package/bundled-skills/systematic-debugging/condition-based-waiting-example.ts +30 -144
  957. package/bundled-skills/systematic-debugging/condition-based-waiting.md +1 -1
  958. package/bundled-skills/tdd-orchestrator/SKILL.md +0 -1
  959. package/bundled-skills/team-composition-analysis/SKILL.md +9 -1
  960. package/bundled-skills/technical-tutorials/SKILL.md +1 -1
  961. package/bundled-skills/temporal-python-pro/SKILL.md +0 -1
  962. package/bundled-skills/temporal-python-testing/SKILL.md +0 -1
  963. package/bundled-skills/terraform-module-library/SKILL.md +11 -1
  964. package/bundled-skills/test-automator/SKILL.md +0 -1
  965. package/bundled-skills/testing-patterns/SKILL.md +6 -6
  966. package/bundled-skills/trust-calibrator/SKILL.md +15 -7
  967. package/bundled-skills/tune-monitor/SKILL.md +3 -0
  968. package/bundled-skills/tune-monitor/UPSTREAM-LICENSE.txt +201 -0
  969. package/bundled-skills/tune-monitor/UPSTREAM-NOTICE.md +14 -0
  970. package/bundled-skills/tune-monitor/references/custom-sql-monitor.md +112 -0
  971. package/bundled-skills/tune-monitor/references/metric-monitor.md +118 -0
  972. package/bundled-skills/tune-monitor/references/table-monitor.md +138 -0
  973. package/bundled-skills/tune-monitor/references/validation-monitor.md +132 -0
  974. package/bundled-skills/turborepo-caching/SKILL.md +0 -1
  975. package/bundled-skills/tutorial-engineer/SKILL.md +0 -1
  976. package/bundled-skills/typescript-expert/SKILL.md +10 -8
  977. package/bundled-skills/typescript-expert/scripts/ts_diagnostic.py +48 -15
  978. package/bundled-skills/ui-ux-designer/SKILL.md +0 -1
  979. package/bundled-skills/ui-visual-validator/SKILL.md +0 -1
  980. package/bundled-skills/uniprot-database/SKILL.md +8 -0
  981. package/bundled-skills/unity-developer/SKILL.md +0 -1
  982. package/bundled-skills/usage-based-pricing/SKILL.md +1 -1
  983. package/bundled-skills/using-agent-skills/SKILL.md +4 -1
  984. package/bundled-skills/using-agent-skills/UPSTREAM-LICENSE.txt +21 -0
  985. package/bundled-skills/using-agent-skills/UPSTREAM-NOTICE.md +11 -0
  986. package/bundled-skills/using-agent-skills/references/definition-of-done.md +67 -0
  987. package/bundled-skills/using-neon/SKILL.md +21 -0
  988. package/bundled-skills/ux-persuasion-engineer/SKILL.md +15 -7
  989. package/bundled-skills/variant-analysis/SKILL.md +10 -0
  990. package/bundled-skills/vexor-cli/SKILL.md +8 -0
  991. package/bundled-skills/vibe-delegate/SKILL.md +5 -1
  992. package/bundled-skills/vibe-delegate/UPSTREAM-LICENSE.txt +21 -0
  993. package/bundled-skills/vibe-delegate/UPSTREAM-NOTICE.md +13 -0
  994. package/bundled-skills/vibe-delegate/scripts/relay.mjs +773 -0
  995. package/bundled-skills/video-content-extractor/SKILL.md +8 -0
  996. package/bundled-skills/visual-emotion-engineer/SKILL.md +16 -8
  997. package/bundled-skills/warp-delegate/SKILL.md +5 -1
  998. package/bundled-skills/warp-delegate/UPSTREAM-LICENSE.txt +21 -0
  999. package/bundled-skills/warp-delegate/UPSTREAM-NOTICE.md +13 -0
  1000. package/bundled-skills/warp-delegate/scripts/relay.mjs +837 -0
  1001. package/bundled-skills/wcag-audit-patterns/resources/implementation-playbook.md +14 -33
  1002. package/bundled-skills/web-performance-optimization/SKILL.md +15 -15
  1003. package/bundled-skills/web-performance-optimization/references/detailed-guide.md +12 -7
  1004. package/bundled-skills/web3-testing/SKILL.md +16 -1
  1005. package/bundled-skills/workflow-orchestration-patterns/SKILL.md +1 -2
  1006. package/bundled-skills/zcode-delegate/SKILL.md +11 -3
  1007. package/bundled-skills/zcode-delegate/UPSTREAM-LICENSE.txt +21 -0
  1008. package/bundled-skills/zcode-delegate/UPSTREAM-NOTICE.md +13 -0
  1009. package/bundled-skills/zcode-delegate/references/dispatch-and-poll.md +4 -4
  1010. package/bundled-skills/zcode-delegate/scripts/relay.mjs +1043 -0
  1011. package/package.json +1 -1
  1012. package/skills_index.json +168 -154
  1013. package/bundled-skills/api-security-testing/SKILL.md +0 -176
@@ -0,0 +1,781 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * delegate-skills · opencode-delegate · relay.mjs
4
+ *
5
+ * Dispatch a self-contained brief to the OpenCode CLI (`opencode run`),
6
+ * capture the run, and write a structured result the orchestrating agent can
7
+ * review. The orchestrator runs this one command and reads the result JSON —
8
+ * every OpenCode-specific mechanic lives in here, which keeps the skill
9
+ * orchestrator-agnostic. Verified against opencode CLI v1.17.13.
10
+ *
11
+ * Trust posture: relay.mjs itself makes no network calls, reads or writes no
12
+ * credentials, and sends no telemetry; it has no dependencies (Node built-ins
13
+ * only). It shells out only to `opencode` and `git`. The `opencode` process it
14
+ * launches does authenticate — exactly as you do at the terminal. Read this
15
+ * file before you run it.
16
+ *
17
+ * It deliberately does NOT commit. Committing is always the orchestrator's job —
18
+ * after it reviews the diff and re-runs the project gates.
19
+ *
20
+ * OpenCode autonomy is governed by the chosen agent, not a sandbox enum:
21
+ * build (default) — write-capable; edits files in the working dir headlessly.
22
+ * plan — read-only; reviews/diagnoses without touching the tree.
23
+ * A build run passes `--auto` by default so OpenCode never blocks on a permission
24
+ * prompt no one can answer in headless mode; the orchestrator's diff review is the
25
+ * safety net. Pass --no-auto to instead honor the agent's own permission config.
26
+ * A plan (read-only) run never gets --auto, so it can't be auto-approved into edits.
27
+ *
28
+ * Usage:
29
+ * node relay.mjs --brief <file> [options]
30
+ * cat brief.txt | node relay.mjs [options]
31
+ *
32
+ * Options:
33
+ * --brief <file> Path to the brief. If omitted, the brief is read from stdin.
34
+ * --cd <dir> Working root for OpenCode (default: current directory).
35
+ * --lane <name> Fleet lane from delegate-setup config (dials apply; explicit flags win).
36
+ * --model <name> Model as provider/model, or provider/model#variant on opencode 2.x.
37
+ * REQUIRED for a fresh run — OpenCode has no
38
+ * safe default; a resumed run inherits its session's model.
39
+ * --agent <name> OpenCode agent (default: build). Use plan for read-only review.
40
+ * --read-only Shortcut for --agent plan (review/diagnosis, no edits).
41
+ * --variant <name> Provider reasoning effort (e.g. high, max, minimal). Sent as
42
+ * --variant on opencode 1.x; on 2.x it joins the model value
43
+ * as provider/model#variant (2.x has no --variant flag).
44
+ * --no-auto Don't pass --auto; honor the agent's own permission config (a headless
45
+ * run may then hang if the agent is set to ask for a permission).
46
+ * --resume-last Continue the most recent OpenCode session; send only the delta brief.
47
+ * --session <id> Continue a specific session id (ses_...); send only the delta brief.
48
+ * --pure Run OpenCode without external plugins (cleaner event stream).
49
+ * 1.x only; rejected on 2.x, which dropped the flag.
50
+ * --timeout <dur> Relay-side watchdog (default: off). Durations use h/m/s
51
+ * strings like 30m or 2h. On expiry the opencode child is
52
+ * killed and result.json gets status "timeout".
53
+ * --out-dir <dir> Where to write run artifacts (default: a fresh dir under
54
+ * the system temp dir, so the repo under review stays clean).
55
+ * -h, --help Show this help.
56
+ *
57
+ * Result: written to <out-dir>/result.json and summarized on stdout —
58
+ * status, exitCode, signal, opencodeVersion, sessionId (for a later resume), finalMessage
59
+ * (OpenCode's own report), touchedFiles (git porcelain, null if git can't report), and the
60
+ * paths to events.jsonl and final.txt.
61
+ *
62
+ * Exit codes: a pre-run usage error (bad/missing args, empty brief) exits 2
63
+ * before any run and writes no result file; a missing `opencode` binary exits 127;
64
+ * otherwise the exit code mirrors OpenCode's own (0 success, non-zero failure).
65
+ * If the child dies on a signal, the exit code is 128 plus the signal number and
66
+ * `result.json` records the signal.
67
+ * Once the brief validates, `result.json` is written on every outcome —
68
+ * completed, failed, timeout (the --timeout watchdog fired), aborted (the relay
69
+ * itself was killed and forwarded the kill to opencode), or
70
+ * opencode_unavailable. An orchestrator that polls for the
71
+ * file must therefore also treat a non-zero exit with no file as a usage error.
72
+ */
73
+
74
+ import {spawn, execSync, execFileSync, spawnSync } from "node:child_process";
75
+ import { mkdirSync, writeFileSync, renameSync, readFileSync, existsSync, appendFileSync } from "node:fs";
76
+ import {join, resolve, basename, dirname } from "node:path";
77
+ import { fileURLToPath } from "node:url";
78
+ import { constants, tmpdir } from "node:os";
79
+ import { StringDecoder } from "node:string_decoder";
80
+ const MAX_BUFFERED_CHARS = 1_048_576;
81
+
82
+ const VERSION_PROBE_TIMEOUT_MS = 10_000;
83
+ const MAX_TIMER_MS = 2_147_483_647;
84
+ // model/variant reach cmd.exe on win32 (shell:true for the opencode.cmd shim). The
85
+ // model token may carry a variant suffix (provider/model#variant on opencode 2.x), and
86
+ // catalog ids carry '@' (Workers AI @cf/..., Vertex model@default, region@eu) and '~'
87
+ // (OpenRouter/Kilo ~vendor/model-latest aliases). None of '#', '@' or '~' is a cmd.exe
88
+ // metacharacter, and no shell runs off win32. Keep SAFE_TOKEN in lockstep with
89
+ // delegate-setup MODEL_TOKEN.shellSafe, and MODEL_TOKEN with MODEL_TOKEN.opencode.
90
+ const SAFE_TOKEN = /^[A-Za-z0-9][A-Za-z0-9._:/-]*$/;
91
+ const MODEL_TOKEN = /^[A-Za-z0-9][A-Za-z0-9._:@~/#-]*$/;
92
+
93
+ const IMPLEMENTER_KEY = "opencode";
94
+
95
+ function makeEventScanner(onObject) {
96
+ let buf = "";
97
+ let index = 0;
98
+ let depth = 0;
99
+ let start = -1;
100
+ let inString = false;
101
+ let escaped = false;
102
+ return (chunk) => {
103
+ if (!chunk) return;
104
+ buf += chunk;
105
+ for (;;) {
106
+ while (index < buf.length) {
107
+ const ch = buf[index];
108
+ // Only track strings inside an object (depth > 0). At depth 0 we are
109
+ // skipping a junk prefix, and an unmatched `"` there must not swallow the
110
+ // real `{...}` that follows in the same chunk.
111
+ if (inString) {
112
+ if (escaped) escaped = false;
113
+ else if (ch === "\\") escaped = true;
114
+ else if (ch === '"') inString = false;
115
+ } else if (ch === '"') {
116
+ if (depth > 0) inString = true;
117
+ } else if (ch === "{") {
118
+ if (depth === 0) start = index;
119
+ depth += 1;
120
+ } else if (ch === "}") {
121
+ if (depth > 0) {
122
+ depth -= 1;
123
+ if (depth === 0 && start !== -1) {
124
+ const slice = buf.slice(start, index + 1);
125
+ try { onObject(JSON.parse(slice)); } catch { /* skip malformed */ }
126
+ start = -1;
127
+ }
128
+ }
129
+ }
130
+ index += 1;
131
+ }
132
+ if (depth === 0 || start === -1 || buf.length - start <= MAX_BUFFERED_CHARS) break;
133
+ // A complete object may exceed the retained-input cap within this chunk.
134
+ // Drop only an oversized partial, then rescan its suffix so a later
135
+ // concatenated event is not lost.
136
+ buf = buf.slice(start + MAX_BUFFERED_CHARS);
137
+ index = 0;
138
+ start = -1;
139
+ depth = 0;
140
+ inString = false;
141
+ escaped = false;
142
+ }
143
+ if (depth > 0 && start !== -1) {
144
+ if (start > 0) {
145
+ buf = buf.slice(start);
146
+ index -= start;
147
+ start = 0;
148
+ }
149
+ } else {
150
+ buf = "";
151
+ index = 0;
152
+ start = -1;
153
+ }
154
+ };
155
+ }
156
+
157
+ function applyFleetLane(opts, flagged) {
158
+ if (!opts.lane) return;
159
+ const script = join(dirname(fileURLToPath(import.meta.url)), "../../delegate-setup/scripts/lane.mjs");
160
+ if (!existsSync(script)) {
161
+ fail("--lane requires the delegate-setup skill installed beside this relay");
162
+ }
163
+ const r = spawnSync(
164
+ process.execPath,
165
+ [script, "resolve", "--cwd", opts.cd, "--lane", opts.lane, "--implementer", IMPLEMENTER_KEY],
166
+ { encoding: "utf8", env: process.env },
167
+ );
168
+ if (r.error) fail(`lane resolve failed: ${r.error.message}`);
169
+ if (r.status !== 0) {
170
+ fail((r.stderr || "lane resolve failed").trim().replace(/^lane\.mjs:\s*/, ""));
171
+ }
172
+ let resolved;
173
+ try {
174
+ const lines = (r.stdout || "").trim().split("\n").filter(Boolean);
175
+ resolved = JSON.parse(lines[lines.length - 1]);
176
+ } catch {
177
+ fail("lane resolve returned invalid JSON");
178
+ }
179
+ opts.laneSource = resolved.source;
180
+ for (const [field, value] of Object.entries(resolved.dials || {})) {
181
+ if (flagged.has(field)) continue;
182
+ if (field === "autonomy" && (flagged.has("autonomy") || flagged.has("sandbox") || flagged.has("readOnly"))) continue;
183
+ if (field === "agent" && (flagged.has("agent") || flagged.has("readOnly"))) continue;
184
+ if (field === "sandbox" && (flagged.has("sandbox") || flagged.has("readOnly"))) continue;
185
+ if (field === "permissionMode" && (flagged.has("permissionMode") || flagged.has("readOnly"))) continue;
186
+ if (field === "planOnly" && (flagged.has("planOnly") || flagged.has("readOnly"))) continue;
187
+ if (field === "readOnly" && flagged.has("readOnly")) continue;
188
+ if (field === "force" && flagged.has("force")) continue;
189
+ opts[field] = value;
190
+ }
191
+ }
192
+
193
+ function fail(message, code = 2) {
194
+ process.stderr.write(`relay: ${message}\n`);
195
+ process.exit(code);
196
+ }
197
+
198
+ function parseArgs(argv) {
199
+ const flagged = new Set();
200
+ const opts = {
201
+ lane: null,
202
+ laneSource: null,
203
+ brief: null,
204
+ cd: process.cwd(),
205
+ model: null,
206
+ agent: "build",
207
+ variant: null,
208
+ auto: true,
209
+ resumeLast: false,
210
+ session: null,
211
+ pure: false,
212
+ timeout: null,
213
+ outDir: null,
214
+ };
215
+ for (let i = 0; i < argv.length; i += 1) {
216
+ const arg = argv[i];
217
+ const next = () => {
218
+ const value = argv[i + 1];
219
+ if (value === undefined) fail(`${arg} requires a value`);
220
+ i += 1;
221
+ return value;
222
+ };
223
+ switch (arg) {
224
+ case "-h":
225
+ case "--help":
226
+ process.stdout.write(headerComment());
227
+ process.exit(0);
228
+ break;
229
+ case "--brief": opts.brief = next(); break;
230
+ case "--cd": opts.cd = resolve(next()); break;
231
+ case "--lane": opts.lane = next(); break;
232
+ case "--model": opts.model = next(); flagged.add("model"); break;
233
+ case "--agent": opts.agent = next(); flagged.add("agent"); break;
234
+ case "--read-only": opts.agent = "plan"; flagged.add("agent"); flagged.add("readOnly"); break;
235
+ case "--variant": opts.variant = next(); flagged.add("variant"); break;
236
+ case "--auto": opts.auto = true; break;
237
+ case "--no-auto": opts.auto = false; break;
238
+ case "--resume-last": opts.resumeLast = true; break;
239
+ case "--session": opts.session = next(); break;
240
+ case "--pure": opts.pure = true; break;
241
+ case "--timeout": opts.timeout = next(); flagged.add("timeout"); break;
242
+ case "--out-dir": opts.outDir = resolve(next()); break;
243
+ default:
244
+ fail(`unknown option: ${arg}`);
245
+ }
246
+ }
247
+ applyFleetLane(opts, flagged);
248
+ if (opts.model !== null && !MODEL_TOKEN.test(opts.model)) {
249
+ fail("--model contains unsupported characters (allowed: letters, digits, . _ : @ ~ / # -)");
250
+ }
251
+ if (opts.variant !== null && !SAFE_TOKEN.test(opts.variant)) {
252
+ fail("--variant contains unsupported characters (allowed: letters, digits, . _ : / -)");
253
+ }
254
+ if (opts.model !== null && opts.model.includes("#") && opts.variant !== null) {
255
+ fail("--model already carries a variant (provider/model#variant); pass either that or --model plus --variant, not both");
256
+ }
257
+ // The watchdog is relay-only (the opencode launch has no timeout flag), so a malformed
258
+ // --timeout must fail loudly here - a silent no-watchdog fallback would be wrong.
259
+ if (opts.timeout !== null && parseDuration(opts.timeout) === null) {
260
+ fail(`--timeout "${opts.timeout}" is invalid or too long; use a positive h/m/s duration no longer than about 24 days`);
261
+ }
262
+ return opts;
263
+ }
264
+
265
+ function parseDuration(duration) {
266
+ const match = /^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/.exec(duration);
267
+ if (!match || (!match[1] && !match[2] && !match[3])) return null;
268
+ try {
269
+ const seconds =
270
+ BigInt(match[1] || 0) * 3600n +
271
+ BigInt(match[2] || 0) * 60n +
272
+ BigInt(match[3] || 0);
273
+ const milliseconds = seconds * 1000n;
274
+ if (milliseconds <= 0n || milliseconds > BigInt(MAX_TIMER_MS)) return null;
275
+ return Number(milliseconds);
276
+ } catch {
277
+ return null;
278
+ }
279
+ }
280
+
281
+ function killChild(child, signal = "SIGTERM") {
282
+ if (!child || !child.pid) return;
283
+ if (process.platform === "win32") {
284
+ if (signal !== "SIGTERM") return;
285
+ try {
286
+ execFileSync("taskkill", ["/pid", String(child.pid), "/t", "/f"], {
287
+ stdio: ["ignore", "ignore", "inherit"],
288
+ });
289
+ } catch {
290
+ // The process tree already exited.
291
+ }
292
+ return;
293
+ }
294
+ try {
295
+ process.kill(-child.pid, signal);
296
+ } catch {
297
+ try {
298
+ child.kill(signal);
299
+ } catch {
300
+ // The process group already exited.
301
+ }
302
+ }
303
+ }
304
+
305
+ function headerComment() {
306
+ // The leading block comment doubles as --help text.
307
+ const src = readFileSync(new URL(import.meta.url), "utf8");
308
+ const match = src.match(/\/\*\*([\s\S]*?)\*\//);
309
+ if (!match) return "relay.mjs — dispatch a brief to opencode run\n";
310
+ return match[1].replace(/^\s*\* ?/gm, "").trim() + "\n";
311
+ }
312
+
313
+ function readBrief(opts) {
314
+ if (opts.brief) {
315
+ if (!existsSync(opts.brief)) fail(`brief file not found: ${opts.brief}`);
316
+ return readFileSync(opts.brief, "utf8");
317
+ }
318
+ // No --brief: read from stdin (fd 0). Empty stdin is an error.
319
+ if (process.stdin.isTTY) {
320
+ fail("no --brief given and stdin is a TTY; pass --brief <file> or pipe the brief on stdin");
321
+ }
322
+ let stdin = "";
323
+ try {
324
+ stdin = readFileSync(0, "utf8");
325
+ } catch {
326
+ stdin = "";
327
+ }
328
+ return stdin;
329
+ }
330
+
331
+ function versionProbeTimeout(opts) {
332
+ // The watchdog is only armed once opencode is running, so the preflight needs a bound of
333
+ // its own: an `opencode --version` that never returns would wedge the relay here, before
334
+ // any result.json exists, and --timeout could not reach it.
335
+ const timeoutMs = opts.timeout === null ? null : parseDuration(opts.timeout);
336
+ return timeoutMs === null ? VERSION_PROBE_TIMEOUT_MS : Math.min(timeoutMs, VERSION_PROBE_TIMEOUT_MS);
337
+ }
338
+
339
+ function opencodeVersion(probeTimeoutMs) {
340
+ try {
341
+ // On Windows, npm installs `opencode` as a .cmd shim; Node's CreateProcess only
342
+ // auto-appends .exe, never .cmd, so launching it needs shell:true there or it
343
+ // ENOENTs on a working install. POSIX is unaffected. (git installs a real
344
+ // git.exe and must NOT get this flag — see gitTouchedFiles.)
345
+ const options = {
346
+ encoding: "utf8",
347
+ shell: process.platform === "win32",
348
+ timeout: probeTimeoutMs,
349
+ killSignal: "SIGKILL",
350
+ };
351
+ const version = (process.platform === "win32"
352
+ ? execSync("opencode --version", options)
353
+ : execFileSync("opencode", ["--version"], options)).trim();
354
+ return { version: version || "unknown", error: null };
355
+ } catch (error) {
356
+ if (error?.code === "ENOENT") return { version: null, error: null };
357
+ // shell:true routes a missing binary through cmd.exe, which reports it as a non-zero
358
+ // exit rather than ENOENT; that is still "not installed", not a broken install.
359
+ if (process.platform === "win32" &&
360
+ /not recognized as an internal or external command/i.test(String(error?.stderr || ""))) {
361
+ return { version: null, error: null };
362
+ }
363
+ // Anything else — a hung probe we killed, or a real non-zero exit — means opencode is
364
+ // installed but not usable. Reporting that as "unavailable" would send the caller
365
+ // off to reinstall a binary that is already there.
366
+ return { version: null, error };
367
+ }
368
+ }
369
+
370
+ // opencode 2.x replaced the --variant flag with a provider/model#variant model value
371
+ // (2.0.11's `run --help` documents exactly that format and ships no --variant flag);
372
+ // 1.x still documents --variant. The preflight above already probed the version, so the
373
+ // dial mapping gates on it. An unparseable string falls back to the 1.x mapping — the
374
+ // flag every opencode line has accepted so far.
375
+ function opencodeJoinsVariant(version) {
376
+ const match = /(\d+)(?:\.\d+)*/.exec(String(version || ""));
377
+ return match !== null && Number(match[1]) >= 2;
378
+ }
379
+
380
+ function gitTouchedFiles(cwd) {
381
+ try {
382
+ const output = execFileSync("git", ["status", "--porcelain"], {
383
+ cwd,
384
+ encoding: "utf8",
385
+ timeout: 10_000,
386
+ killSignal: "SIGKILL",
387
+ stdio: ["ignore", "pipe", "ignore"],
388
+ maxBuffer: 64 * 1024 * 1024,
389
+ });
390
+ return output.split("\n").map((line) => line.trimEnd()).filter(Boolean);
391
+ } catch {
392
+ return null;
393
+ }
394
+ }
395
+
396
+ function timestamp() {
397
+ // Local script (not a workflow): Date is available and fine here.
398
+ return new Date().toISOString().replace(/[:.]/g, "-");
399
+ }
400
+
401
+ function buildArgv(opts, version) {
402
+ const argv = ["run", "--format", "json"];
403
+ if (opts.pure) argv.push("--pure");
404
+ // Resume continues an existing session; --session pins a specific id, otherwise
405
+ // --continue picks up the most recent one. OpenCode selects the agent for each
406
+ // prompt, so preserve the relay's requested autonomy on resumed turns too.
407
+ if (opts.session) {
408
+ argv.push("--session", opts.session);
409
+ } else if (opts.resumeLast) {
410
+ argv.push("--continue");
411
+ }
412
+ argv.push("--agent", opts.agent);
413
+ // Variant dial: 2.x folds it into the model value as provider/model#variant (it has
414
+ // no --variant flag); 1.x still takes --variant. See opencodeJoinsVariant.
415
+ const joinsVariant = Boolean(opts.model && opts.variant) && opencodeJoinsVariant(version);
416
+ if (opts.model) {
417
+ argv.push("--model", joinsVariant ? `${opts.model}#${opts.variant}` : opts.model);
418
+ }
419
+ if (opts.variant && !joinsVariant) argv.push("--variant", opts.variant);
420
+ // --auto (on by default) auto-approves permissions so a headless build run doesn't
421
+ // block on a prompt no one can answer; --no-auto honors the agent's own config.
422
+ // Never on a plan (read-only) run: --auto would approve the plan agent's ask-gated
423
+ // edit/bash permissions and let a "read-only" review modify the tree. A plan run
424
+ // only reads, so it doesn't need auto-approval anyway.
425
+ if (opts.auto && opts.agent !== "plan") argv.push("--auto");
426
+ // No message argument: the brief is piped on stdin (see dispatchToOpenCode),
427
+ // which avoids all argv-quoting issues with multi-line, XML-tagged briefs.
428
+ return argv;
429
+ }
430
+
431
+ function prepareRunDir(opts, brief) {
432
+ const startedAt = new Date().toISOString();
433
+ // Default the run dir to system temp so the repo under review stays pristine —
434
+ // the touched-files report must show only OpenCode's edits, not relay's artifacts.
435
+ const outDir = opts.outDir || join(tmpdir(), "delegate-relay", `${basename(opts.cd) || "repo"}-${timestamp()}`);
436
+ mkdirSync(outDir, { recursive: true });
437
+ const run = {
438
+ startedAt,
439
+ eventsPath: join(outDir, "events.jsonl"),
440
+ finalPath: join(outDir, "final.txt"),
441
+ briefPath: join(outDir, "brief.txt"),
442
+ resultPath: join(outDir, "result.json"),
443
+ };
444
+ writeFileSync(run.briefPath, brief, "utf8");
445
+ writeFileSync(run.eventsPath, "", "utf8");
446
+ return run;
447
+ }
448
+
449
+ function makeResultWriter(opts, version, run) {
450
+ // Returns writeResult(extra): merges the per-outcome fields onto the run's
451
+ // standing metadata, persists result.json, and returns the object it just
452
+ // wrote so the caller can hand it straight to printSummary.
453
+ return (extra) => {
454
+ const resuming = Boolean(opts.session || opts.resumeLast);
455
+ const result = {
456
+ schema: "delegate-relay.result.v1",
457
+ lane: opts.lane,
458
+ laneSource: opts.laneSource,
459
+ tool: "opencode",
460
+ workdir: opts.cd,
461
+ agent: opts.agent,
462
+ model: opts.model,
463
+ variant: opts.variant,
464
+ auto: opts.auto,
465
+ resumed: resuming,
466
+ resumeLast: opts.resumeLast,
467
+ opencodeVersion: version,
468
+ startedAt: run.startedAt,
469
+ finishedAt: new Date().toISOString(),
470
+ briefPath: run.briefPath,
471
+ eventsPath: run.eventsPath,
472
+ finalPath: existsSync(run.finalPath) ? run.finalPath : null,
473
+ ...extra,
474
+ };
475
+ // Publish atomically so a polling orchestrator never reads a half-written file
476
+ // (same idiom as claude-delegate's writeJsonAtomic and qoder-delegate).
477
+ const temporary = `${run.resultPath}.${process.pid}.tmp`;
478
+ writeFileSync(temporary, `${JSON.stringify(result, null, 2)}\n`, "utf8");
479
+ renameSync(temporary, run.resultPath);
480
+ return result;
481
+ };
482
+ }
483
+
484
+ function reportUnavailable(writeResult, resultPath) {
485
+ const result = writeResult({ status: "opencode_unavailable", exitCode: 127, signal: null, sessionId: null, finalMessage: "", touchedFiles: null, cost: null });
486
+ printSummary(result, resultPath);
487
+ process.stderr.write("relay: `opencode` not found on PATH. Install it (npm i -g opencode-ai) and run `opencode auth login`.\n");
488
+ process.exit(127);
489
+ }
490
+
491
+ function reportVersionFailure(opts, writeResult, run, error, probeTimeoutMs) {
492
+ const timedOut = error?.code === "ETIMEDOUT";
493
+ const stderr = String(error?.stderr || "").trim();
494
+ const message = timedOut
495
+ ? `opencode --version preflight timed out after ${probeTimeoutMs}ms; OpenCode was not dispatched`
496
+ : `opencode --version preflight failed${Number.isInteger(error?.status) ? ` with exit ${error.status}` : ""}; OpenCode was not dispatched`;
497
+ const result = writeResult({
498
+ status: timedOut ? "timeout" : "failed",
499
+ exitCode: timedOut ? 124 : Number.isInteger(error?.status) ? error.status : 1,
500
+ signal: null,
501
+ sessionId: null,
502
+ finalMessage: "",
503
+ touchedFiles: gitTouchedFiles(opts.cd),
504
+ cost: null,
505
+ stderrTail: stderr ? stderr.split("\n").slice(-20) : [],
506
+ error: message,
507
+ });
508
+ printSummary(result, run.resultPath);
509
+ process.stderr.write(`relay: ${message}\n`);
510
+ process.exit(result.exitCode);
511
+ }
512
+
513
+ function spawnShellLaunch(binary, argv, options, useShell) {
514
+ if (!useShell) return spawn(binary, argv, options);
515
+ // Node 24 warns when shell:true is paired with an args array. The args here
516
+ // are already token-validated or quoted for cmd.exe, so serialize them once.
517
+ return spawn([binary, ...argv].join(" "), { ...options, shell: true });
518
+ }
519
+
520
+ function dispatchToOpenCode(opts, brief, run, writeResult, version) {
521
+ const argv = buildArgv(opts, version);
522
+ // Pin the working root two ways: `cwd` sets the child's real directory, and PWD
523
+ // is set explicitly because OpenCode can resolve its project root from the
524
+ // inherited PWD env — which spawn does NOT rewrite — so without it a run could
525
+ // operate on the orchestrator's directory instead of opts.cd (and, with --auto
526
+ // on, edit it unattended). Passing the path via env, not argv, keeps it clear of
527
+ // shell quoting.
528
+ // shell:true on Windows so the opencode.cmd shim resolves (see opencodeVersion).
529
+ // Safe: the brief is fed via child.stdin below — never argv — and argv holds only
530
+ // flag names, an agent enum, a model string, and a session id, with no shell
531
+ // metacharacters or spaceable paths.
532
+ const child = spawnShellLaunch("opencode", argv, {
533
+ cwd: opts.cd,
534
+ env: { ...process.env, PWD: opts.cd },
535
+ stdio: ["pipe", "pipe", "pipe"],
536
+ detached: process.platform !== "win32", // POSIX: lead a new process group so killChild can fell the whole tree
537
+ }, process.platform === "win32");
538
+
539
+ let sessionId = opts.session || null;
540
+ let totalCost = 0;
541
+ let sawCost = false;
542
+ const textParts = new Map(); // part.id -> latest text
543
+ const textOrder = []; // part.ids in first-seen order
544
+ const stderrTail = [];
545
+
546
+ const scan = makeEventScanner((event) => {
547
+ // Session id: real events carry `sessionID` (camelCase); plugin notify objects
548
+ // carry `session_id` (snake_case). Accept either.
549
+ const sid = event.sessionID || event.session_id;
550
+ if (sid) sessionId = sid;
551
+ // Assistant text lives in `type:"text"` events under part.text. Key by part.id
552
+ // so streamed updates to the same part replace rather than duplicate; preserve
553
+ // first-seen order so multi-segment messages assemble correctly.
554
+ if (event.type === "text" && event.part && event.part.type === "text") {
555
+ const id = event.part.id || `anon-${textOrder.length}`;
556
+ if (!textParts.has(id)) textOrder.push(id);
557
+ textParts.set(id, event.part.text ?? "");
558
+ }
559
+ if (event.type === "step_finish" && event.part && typeof event.part.cost === "number") {
560
+ totalCost += event.part.cost;
561
+ sawCost = true;
562
+ }
563
+ });
564
+
565
+ // Decode across chunk boundaries: a multibyte UTF-8 character split between
566
+ // two data events would otherwise decode as U+FFFD and corrupt the report.
567
+ const stdoutDecoder = new StringDecoder("utf8");
568
+ const stderrDecoder = new StringDecoder("utf8");
569
+
570
+ child.stdout.on("data", (chunk) => {
571
+ appendFileSync(run.eventsPath, chunk); // faithful raw record of the event stream
572
+ scan(stdoutDecoder.write(chunk));
573
+ });
574
+
575
+ child.stderr.on("data", (chunk) => {
576
+ process.stderr.write(chunk); // surface OpenCode progress live for the orchestrator
577
+ const text = stderrDecoder.write(chunk);
578
+ for (const line of text.split("\n")) {
579
+ if (line.trim()) stderrTail.push(line.trimEnd());
580
+ }
581
+ while (stderrTail.length > 20) stderrTail.shift();
582
+ });
583
+
584
+ const assembleFinal = () => {
585
+ const message = textOrder.map((id) => textParts.get(id)).join("").trim();
586
+ if (message) writeFileSync(run.finalPath, message, "utf8");
587
+ return message;
588
+ };
589
+
590
+ let settled = false;
591
+ let watchdogFired = false;
592
+ let watchdogTimer = null;
593
+ let sigkillTimer = null;
594
+ const timeoutMs = opts.timeout === null ? null : parseDuration(opts.timeout);
595
+ if (timeoutMs !== null) {
596
+ watchdogTimer = setTimeout(() => {
597
+ watchdogFired = true;
598
+ child.once("exit", () => {
599
+ child.stdout.destroy();
600
+ child.stderr.destroy();
601
+ });
602
+ killChild(child);
603
+ sigkillTimer = setTimeout(() => {
604
+ if (!settled) killChild(child, "SIGKILL");
605
+ }, 10_000);
606
+ }, timeoutMs);
607
+ }
608
+
609
+ const clearWatchdog = () => {
610
+ if (watchdogTimer) clearTimeout(watchdogTimer);
611
+ if (sigkillTimer) clearTimeout(sigkillTimer);
612
+ };
613
+
614
+ // The relay's own death must still produce a result: without this, a kill from the
615
+ // orchestrator's side (its command timeout, a stopped task, a closed terminal) writes
616
+ // no result.json and leaves the opencode child running or dying mid-edit with nothing
617
+ // recording why. SIGTERM/SIGHUP registration is a no-op on Windows; SIGINT works there.
618
+ for (const sig of ["SIGTERM", "SIGINT", "SIGHUP"]) {
619
+ process.on(sig, () => {
620
+ if (settled) return;
621
+ settled = true;
622
+ clearWatchdog();
623
+ const abortedFields = {
624
+ status: "aborted",
625
+ exitCode: 128 + (constants.signals[sig] || 15),
626
+ signal: sig,
627
+ sessionId,
628
+ finalMessage: assembleFinal(),
629
+ touchedFiles: gitTouchedFiles(opts.cd),
630
+ cost: sawCost ? Number(totalCost.toFixed(6)) : null,
631
+ stderrTail: stderrTail.slice(-20),
632
+ error: `the relay was killed by ${sig}; opencode was terminated with it — inspect the working tree before re-dispatching`,
633
+ };
634
+ const result = writeResult(abortedFields);
635
+ printSummary(result, run.resultPath);
636
+ killChild(child);
637
+ setTimeout(() => {
638
+ killChild(child, "SIGKILL");
639
+ // the child may flush files during the grace window; refresh the snapshot so the
640
+ // artifact matches the tree the orchestrator will actually find
641
+ writeResult({ ...abortedFields, touchedFiles: gitTouchedFiles(opts.cd) });
642
+ process.exit(result.exitCode);
643
+ }, 2000);
644
+ });
645
+ }
646
+
647
+ // A grandchild that outlives opencode and inherited the pipes keeps stdout/stderr open, so
648
+ // "close" never fires and the relay waits forever, writing no result. Once opencode itself is
649
+ // gone the pipes hold nothing we still need, so drop them after a short drain grace and let
650
+ // "close" run. This is the normal-exit twin of the stream teardown the watchdog already
651
+ // does on the timeout path.
652
+ child.once("exit", () => {
653
+ // The implementer already exited. Leaving the watchdog armed lets a drain that
654
+ // overlaps the remaining budget fire, set watchdogFired, and report timeout.
655
+ if (!watchdogFired) clearWatchdog();
656
+ const drain = setTimeout(() => {
657
+ if (settled) return;
658
+ child.stdout.destroy();
659
+ child.stderr.destroy();
660
+ }, 500);
661
+ if (typeof drain.unref === "function") drain.unref();
662
+ });
663
+
664
+ child.on("error", (err) => {
665
+ if (settled) return;
666
+ settled = true;
667
+ clearWatchdog();
668
+ const result = writeResult({ status: "failed", exitCode: 1, signal: null, sessionId, finalMessage: assembleFinal(), touchedFiles: gitTouchedFiles(opts.cd), cost: sawCost ? totalCost : null, error: String(err && err.message ? err.message : err) });
669
+ printSummary(result, run.resultPath);
670
+ process.exit(1);
671
+ });
672
+
673
+ child.on("close", (code, signal) => {
674
+ if (settled) return;
675
+ settled = true;
676
+ clearWatchdog();
677
+ // a descendant that ignored SIGTERM must not outlive the timeout report: once the
678
+ // parent is down, sweep the group (no-op where taskkill already felled the tree)
679
+ if (watchdogFired) killChild(child, "SIGKILL");
680
+ const finalMessage = assembleFinal();
681
+ // A timed-out run is never a success even if opencode handles SIGTERM by exiting 0 -
682
+ // orchestrators key off status and the relay exit code.
683
+ const succeeded = code === 0 && !watchdogFired;
684
+ const mapped = code ?? (constants.signals[signal] ? 128 + constants.signals[signal] : 1);
685
+ const result = writeResult({
686
+ status: succeeded ? "completed" : watchdogFired ? "timeout" : "failed",
687
+ exitCode: succeeded ? 0 : mapped === 0 ? 1 : mapped,
688
+ signal: signal ?? null,
689
+ sessionId,
690
+ finalMessage,
691
+ touchedFiles: gitTouchedFiles(opts.cd),
692
+ cost: sawCost ? Number(totalCost.toFixed(6)) : null,
693
+ ...(succeeded ? {} : { stderrTail: stderrTail.slice(-20) }),
694
+ ...(watchdogFired ? { error: `opencode did not finish within --timeout ${opts.timeout}; killed by the relay watchdog` } : {}),
695
+ });
696
+ printSummary(result, run.resultPath);
697
+ process.exit(result.exitCode);
698
+ });
699
+
700
+ // If the child failed to launch, writing to its stdin can emit a stray 'error'
701
+ // on the pipe; the 'error' handler above owns that outcome, so swallow it here.
702
+ child.stdin.on("error", () => {});
703
+ child.stdin.write(brief);
704
+ child.stdin.end();
705
+ }
706
+
707
+ function main() {
708
+ const opts = parseArgs(process.argv.slice(2));
709
+ const brief = readBrief(opts);
710
+ if (!brief.trim()) fail("empty brief (pass --brief <file> or pipe the brief on stdin)");
711
+ // --session pins a specific session and --resume-last picks the most recent; passing both is a
712
+ // contradiction, and buildArgv would silently prefer --session. Reject it rather than guess.
713
+ if (opts.session && opts.resumeLast) {
714
+ fail("--session and --resume-last are mutually exclusive; pass only one");
715
+ }
716
+ // OpenCode has no safe default model (a bare `opencode run` errors), so a fresh run must name one.
717
+ // A resumed run inherits its session's model, so --model is optional there.
718
+ if (!opts.model && !opts.resumeLast && !opts.session) {
719
+ fail("no model given: pass --model provider/model — opencode has no safe default (e.g. a plan you're subscribed to, like opencode-go/kimi-k2.7-code)");
720
+ }
721
+
722
+ // Prepare the run dir before probing, so a preflight that times out or fails still has
723
+ // somewhere to publish result.json rather than exiting silently.
724
+ const run = prepareRunDir(opts, brief);
725
+ const probeTimeoutMs = versionProbeTimeout(opts);
726
+ const probe = opencodeVersion(probeTimeoutMs);
727
+ const writeResult = makeResultWriter(opts, probe.version, run);
728
+
729
+ if (!probe.version && !probe.error) {
730
+ reportUnavailable(writeResult, run.resultPath);
731
+ return;
732
+ }
733
+ if (probe.error) {
734
+ reportVersionFailure(opts, writeResult, run, probe.error, probeTimeoutMs);
735
+ return;
736
+ }
737
+ // A resumed run may inherit its session's model, but a variant can only join a model
738
+ // value — on 2.x there is no --variant flag to fall back to.
739
+ if (opts.variant && !opts.model && opencodeJoinsVariant(probe.version)) {
740
+ fail("--variant needs --model on opencode 2.x: the variant joins the model value as provider/model#variant");
741
+ }
742
+ // 2.x dropped --pure from `opencode run` (same version gate as the variant dial).
743
+ if (opts.pure && opencodeJoinsVariant(probe.version)) {
744
+ fail("--pure is not supported on opencode 2.x: `opencode run` dropped the flag and has no replacement; drop --pure");
745
+ }
746
+
747
+ dispatchToOpenCode(opts, brief, run, writeResult, probe.version);
748
+ }
749
+
750
+ function printSummary(result, resultPath) {
751
+ const lines = [];
752
+ lines.push("");
753
+ lines.push(`relay: ${result.status} (exit ${result.exitCode}${result.signal ? `, killed by ${result.signal}` : ""}) · opencode ${result.opencodeVersion ?? "?"}`);
754
+ if (result.signal === "SIGKILL" && result.status === "failed") lines.push("hint: the host killed the process (commonly the OOM killer or a supervisor timeout) — this is not an opencode error; check host memory and re-dispatch, or split the task into smaller briefs.");
755
+ if (result.signal === "SIGTERM" && result.status === "failed") lines.push("hint: something outside the relay terminated opencode (a supervisor, the session ending, or a manual kill) — when the relay itself does the killing it reports status \"timeout\" or \"aborted\" instead; inspect the working tree before re-dispatching.");
756
+ if (result.resumed) lines.push("mode: resumed existing session");
757
+ if (result.sessionId) lines.push(`session id (resume with: --session ${result.sessionId}): ${result.sessionId}`);
758
+ if (typeof result.cost === "number") lines.push(`cost: $${result.cost}`);
759
+ const touched = result.touchedFiles;
760
+ if (touched === null) {
761
+ lines.push("touched files: git unavailable — inspect the working tree directly");
762
+ } else {
763
+ lines.push(`touched files: ${touched.length}`);
764
+ for (const file of touched.slice(0, 40)) lines.push(` ${file}`);
765
+ if (touched.length > 40) lines.push(` … and ${touched.length - 40} more`);
766
+ }
767
+ if (result.stderrTail && result.stderrTail.length) {
768
+ lines.push("last stderr:");
769
+ for (const line of result.stderrTail.slice(-8)) lines.push(` ${line}`);
770
+ }
771
+ lines.push("");
772
+ lines.push("--- opencode final report ---");
773
+ lines.push(result.finalMessage || "(no final message captured)");
774
+ lines.push("--- end report ---");
775
+ lines.push("");
776
+ lines.push(`result: ${resultPath}`);
777
+ lines.push("relay does not commit. Review the diff, re-run the project gates yourself, then commit from the orchestrator.");
778
+ process.stdout.write(`${lines.join("\n")}\n`);
779
+ }
780
+
781
+ main();