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,822 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * delegate-skills · pi-delegate · relay.mjs
4
+ *
5
+ * Dispatch a self-contained brief to the Pi coding agent CLI (`pi --mode json`),
6
+ * capture the JSON event stream, and write a structured result the orchestrating
7
+ * agent can review. The orchestrator runs this one command and reads the result
8
+ * JSON — every pi-specific mechanic lives in here, which keeps the skill
9
+ * orchestrator-agnostic. Smoke-tested against a current pi CLI on macOS.
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 `pi` and `git`, plus the platform
14
+ * process-termination utility when a Windows process-tree kill requires one.
15
+ * The `pi` process it launches does authenticate — exactly as you do at the
16
+ * terminal. Read this file before you run it.
17
+ *
18
+ * The brief is piped to pi on stdin, so it never appears in the host process
19
+ * list and no argv size cap applies. Keep secrets out of the brief anyway on
20
+ * shared machines — reference workspace files or environment variables instead.
21
+ *
22
+ * It deliberately does NOT commit. Committing is always the orchestrator's job
23
+ * — after it reviews the diff and re-runs the project gates.
24
+ *
25
+ * Autonomy: pi has no sandbox and no permission modes — a default headless run
26
+ * reads, writes, edits, and runs shell commands without asking. `--read-only`
27
+ * restricts pi's callable tool surface to `read,grep,find,ls` across built-in,
28
+ * extension, and custom tools; installed extension code still runs with the
29
+ * user's host permissions. The relay passes `--no-approve` unless `--approve`
30
+ * explicitly trusts project `.pi` resources. The diff reported in
31
+ * `touchedFiles` is the record of what changed.
32
+ *
33
+ * pi is installed from npm, so on native Windows `pi` is a `.cmd` shim this
34
+ * relay launches with shell:true. Only token-validated flag values ride argv
35
+ * (the brief never does), which keeps that launch safe.
36
+ *
37
+ * Usage:
38
+ * node relay.mjs --brief <file> [options]
39
+ * cat brief.txt | node relay.mjs [options]
40
+ *
41
+ * Options:
42
+ * --brief <file> Path to the brief. If omitted, read it from stdin.
43
+ * --cd <dir> Working root for pi (default: current directory).
44
+ * --lane <name> Fleet lane from delegate-setup config (dials apply; explicit flags win).
45
+ * --provider <name> pi provider name (default: pi's own default).
46
+ * --model <pattern> pi model id or pattern (default: pi's own default).
47
+ * Letters, digits, and . _ : / - only.
48
+ * --session <id> Resume a specific pi session; send only the delta brief.
49
+ * --resume-last Continue the most recent pi session for this cwd
50
+ * (`pi --continue`); send only the delta brief.
51
+ * --approve Trust project-local files for this run. By default
52
+ * the relay passes --no-approve.
53
+ * --read-only Restrict pi to read,grep,find,ls (no write/edit/bash).
54
+ * --timeout <dur> Relay-side watchdog (default: 30m). pi has no timeout
55
+ * flag; durations use h/m/s strings.
56
+ * --out-dir <dir> Where to write run artifacts (default: a fresh dir
57
+ * under the system temp dir).
58
+ * -h, --help Show this help.
59
+ *
60
+ * Result: written to <out-dir>/result.json and summarized on stdout —
61
+ * status, exitCode, signal, piVersion, sessionId, finalMessage (pi's own
62
+ * report), requested/actual provider and model, usage, touchedFiles (git
63
+ * porcelain, null if git cannot report), readOnly, projectTrusted, and paths
64
+ * to brief.txt, final.txt, events.jsonl, and stderr.txt.
65
+ *
66
+ * Exit codes: a pre-run usage error (bad/missing args, empty brief) exits 2
67
+ * before any run and writes no result file; a missing `pi` binary exits 127;
68
+ * otherwise the exit code mirrors pi's own (0 success, non-zero failure), except
69
+ * a final assistant `error`/`aborted` event exits 1 even if pi exits 0. If the
70
+ * child dies on a signal, the exit code is 128 plus the signal number and
71
+ * `result.json` records the signal. Once the brief validates, `result.json` is
72
+ * written on every outcome — completed, failed, timeout (the --timeout watchdog
73
+ * fired, or the bounded --version preflight hung), aborted (the relay itself
74
+ * was killed and forwarded the kill to pi), or pi_unavailable.
75
+ */
76
+
77
+ import {spawn, execFileSync, spawnSync } from "node:child_process";
78
+ import {
79
+ appendFileSync,
80
+ existsSync,
81
+ mkdirSync,
82
+ readFileSync,
83
+ renameSync,
84
+ rmSync,
85
+ statSync,
86
+ writeFileSync,
87
+ } from "node:fs";
88
+ import {join, resolve, basename, dirname } from "node:path";
89
+ import { fileURLToPath } from "node:url";
90
+ import { constants, tmpdir } from "node:os";
91
+ import { StringDecoder } from "node:string_decoder";
92
+ const MAX_BUFFERED_CHARS = 1_048_576;
93
+
94
+ const DEFAULT_TIMEOUT = "30m";
95
+ const MAX_TIMER_MS = 2_147_483_647;
96
+ const VERSION_TIMEOUT_MS = 10_000;
97
+ const READ_ONLY_TOOLS = "read,grep,find,ls";
98
+ // --model, --provider, and --session values reach a shell on win32 (shell:true for the
99
+ // .cmd shim), so they are restricted to safe tokens.
100
+ const SAFE_TOKEN = /^[A-Za-z0-9][A-Za-z0-9._:/-]*$/;
101
+
102
+ const IMPLEMENTER_KEY = "pi";
103
+
104
+ function makeEventScanner(onObject) {
105
+ let buf = "";
106
+ let index = 0;
107
+ let depth = 0;
108
+ let start = -1;
109
+ let inString = false;
110
+ let escaped = false;
111
+ return (chunk) => {
112
+ if (!chunk) return;
113
+ buf += chunk;
114
+ for (;;) {
115
+ while (index < buf.length) {
116
+ const ch = buf[index];
117
+ // Only track strings inside an object (depth > 0). At depth 0 we are
118
+ // skipping a junk prefix, and an unmatched `"` there must not swallow the
119
+ // real `{...}` that follows in the same chunk.
120
+ if (inString) {
121
+ if (escaped) escaped = false;
122
+ else if (ch === "\\") escaped = true;
123
+ else if (ch === '"') inString = false;
124
+ } else if (ch === '"') {
125
+ if (depth > 0) inString = true;
126
+ } else if (ch === "{") {
127
+ if (depth === 0) start = index;
128
+ depth += 1;
129
+ } else if (ch === "}") {
130
+ if (depth > 0) {
131
+ depth -= 1;
132
+ if (depth === 0 && start !== -1) {
133
+ const slice = buf.slice(start, index + 1);
134
+ try { onObject(JSON.parse(slice)); } catch { /* skip malformed */ }
135
+ start = -1;
136
+ }
137
+ }
138
+ }
139
+ index += 1;
140
+ }
141
+ if (depth === 0 || start === -1 || buf.length - start <= MAX_BUFFERED_CHARS) break;
142
+ // A complete object may exceed the retained-input cap within this chunk.
143
+ // Drop only an oversized partial, then rescan its suffix so a later
144
+ // concatenated event is not lost.
145
+ buf = buf.slice(start + MAX_BUFFERED_CHARS);
146
+ index = 0;
147
+ start = -1;
148
+ depth = 0;
149
+ inString = false;
150
+ escaped = false;
151
+ }
152
+ if (depth > 0 && start !== -1) {
153
+ if (start > 0) {
154
+ buf = buf.slice(start);
155
+ index -= start;
156
+ start = 0;
157
+ }
158
+ } else {
159
+ buf = "";
160
+ index = 0;
161
+ start = -1;
162
+ }
163
+ };
164
+ }
165
+
166
+ function applyFleetLane(opts, flagged) {
167
+ if (!opts.lane) return;
168
+ const script = join(dirname(fileURLToPath(import.meta.url)), "../../delegate-setup/scripts/lane.mjs");
169
+ if (!existsSync(script)) {
170
+ fail("--lane requires the delegate-setup skill installed beside this relay");
171
+ }
172
+ const r = spawnSync(
173
+ process.execPath,
174
+ [script, "resolve", "--cwd", opts.cd, "--lane", opts.lane, "--implementer", IMPLEMENTER_KEY],
175
+ { encoding: "utf8", env: process.env },
176
+ );
177
+ if (r.error) fail(`lane resolve failed: ${r.error.message}`);
178
+ if (r.status !== 0) {
179
+ fail((r.stderr || "lane resolve failed").trim().replace(/^lane\.mjs:\s*/, ""));
180
+ }
181
+ let resolved;
182
+ try {
183
+ const lines = (r.stdout || "").trim().split("\n").filter(Boolean);
184
+ resolved = JSON.parse(lines[lines.length - 1]);
185
+ } catch {
186
+ fail("lane resolve returned invalid JSON");
187
+ }
188
+ opts.laneSource = resolved.source;
189
+ for (const [field, value] of Object.entries(resolved.dials || {})) {
190
+ if (flagged.has(field)) continue;
191
+ if (field === "autonomy" && (flagged.has("autonomy") || flagged.has("sandbox") || flagged.has("readOnly"))) continue;
192
+ if (field === "agent" && (flagged.has("agent") || flagged.has("readOnly"))) continue;
193
+ if (field === "sandbox" && (flagged.has("sandbox") || flagged.has("readOnly"))) continue;
194
+ if (field === "permissionMode" && (flagged.has("permissionMode") || flagged.has("readOnly"))) continue;
195
+ if (field === "planOnly" && (flagged.has("planOnly") || flagged.has("readOnly"))) continue;
196
+ if (field === "readOnly" && flagged.has("readOnly")) continue;
197
+ if (field === "force" && flagged.has("force")) continue;
198
+ opts[field] = value;
199
+ }
200
+ }
201
+
202
+ function fail(message, code = 2) {
203
+ process.stderr.write(`relay: ${message}\n`);
204
+ process.exit(code);
205
+ }
206
+
207
+ function parseDuration(duration) {
208
+ const match = /^(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?$/.exec(duration);
209
+ if (!match || (!match[1] && !match[2] && !match[3])) return null;
210
+ try {
211
+ const seconds =
212
+ BigInt(match[1] || 0) * 3600n +
213
+ BigInt(match[2] || 0) * 60n +
214
+ BigInt(match[3] || 0);
215
+ const milliseconds = seconds * 1000n;
216
+ if (milliseconds <= 0n || milliseconds > BigInt(MAX_TIMER_MS)) return null;
217
+ return Number(milliseconds);
218
+ } catch {
219
+ return null;
220
+ }
221
+ }
222
+
223
+ function parseArgs(argv) {
224
+ const flagged = new Set();
225
+ const opts = {
226
+ lane: null,
227
+ laneSource: null,
228
+ brief: null,
229
+ cd: process.cwd(),
230
+ provider: null,
231
+ model: null,
232
+ session: null,
233
+ resumeLast: false,
234
+ readOnly: false,
235
+ approve: false,
236
+ timeout: DEFAULT_TIMEOUT,
237
+ outDir: null,
238
+ };
239
+ for (let i = 0; i < argv.length; i += 1) {
240
+ const arg = argv[i];
241
+ const next = () => {
242
+ const value = argv[i + 1];
243
+ if (value === undefined) fail(`${arg} requires a value`);
244
+ i += 1;
245
+ return value;
246
+ };
247
+ switch (arg) {
248
+ case "-h":
249
+ case "--help":
250
+ process.stdout.write(headerComment());
251
+ process.exit(0);
252
+ break;
253
+ case "--brief": opts.brief = next(); break;
254
+ case "--cd": opts.cd = resolve(next()); break;
255
+ case "--lane": opts.lane = next(); break;
256
+ case "--provider": opts.provider = next(); flagged.add("provider"); break;
257
+ case "--model": opts.model = next(); flagged.add("model"); break;
258
+ case "--session": opts.session = next(); break;
259
+ case "--resume-last": opts.resumeLast = true; break;
260
+ case "--read-only": opts.readOnly = true; flagged.add("readOnly"); break;
261
+ case "--approve": opts.approve = true; break;
262
+ case "--timeout": opts.timeout = next(); flagged.add("timeout"); break;
263
+ case "--out-dir": opts.outDir = resolve(next()); break;
264
+ default:
265
+ fail(`unknown option: ${arg}`);
266
+ }
267
+ }
268
+ applyFleetLane(opts, flagged);
269
+ if (opts.resumeLast && opts.session) {
270
+ fail("--resume-last and --session are mutually exclusive; pass only one");
271
+ }
272
+ for (const flag of ["model", "provider", "session"]) {
273
+ if (opts[flag] !== null && !SAFE_TOKEN.test(opts[flag])) {
274
+ fail(`--${flag} value contains unsupported characters (allowed: letters, digits, . _ : / -)`);
275
+ }
276
+ }
277
+ if (parseDuration(opts.timeout) === null) {
278
+ fail(`--timeout "${opts.timeout}" is not a duration; use h/m/s strings like 30m, 90s, or 1h30m`);
279
+ }
280
+ if (parseDuration(opts.timeout) === 0) fail("--timeout must be greater than zero");
281
+ // setTimeout overflows past 2^31 - 1 ms (~24.8 days) and fires immediately,
282
+ // which would read as an instant spurious timeout — reject it up front.
283
+ if (parseDuration(opts.timeout) > 2_147_483_647) {
284
+ fail(`--timeout "${opts.timeout}" exceeds the maximum schedulable watchdog (~24.8 days)`);
285
+ }
286
+ if (!existsSync(opts.cd) || !statSync(opts.cd).isDirectory()) {
287
+ fail(`working directory not found: ${opts.cd}`);
288
+ }
289
+ return opts;
290
+ }
291
+
292
+ function headerComment() {
293
+ // The leading block comment doubles as --help text.
294
+ const src = readFileSync(new URL(import.meta.url), "utf8");
295
+ const match = src.match(/\/\*\*([\s\S]*?)\*\//);
296
+ if (!match) return "relay.mjs - dispatch a brief to pi --mode json\n";
297
+ return `${match[1].replace(/^\s*\* ?/gm, "").trim()}\n`;
298
+ }
299
+
300
+ function readBrief(opts) {
301
+ if (opts.brief) {
302
+ if (!existsSync(opts.brief)) fail(`brief file not found: ${opts.brief}`);
303
+ return readFileSync(opts.brief, "utf8");
304
+ }
305
+ if (process.stdin.isTTY) {
306
+ fail("no --brief given and stdin is a TTY; pass --brief <file> or pipe the brief on stdin");
307
+ }
308
+ try {
309
+ return readFileSync(0, "utf8");
310
+ } catch {
311
+ return "";
312
+ }
313
+ }
314
+
315
+ function killChild(child, signal = "SIGTERM") {
316
+ if (!child || !child.pid) return;
317
+ if (process.platform === "win32") {
318
+ if (signal !== "SIGTERM") return;
319
+ try {
320
+ execFileSync("taskkill", ["/pid", String(child.pid), "/t", "/f"], {
321
+ stdio: ["ignore", "ignore", "inherit"],
322
+ });
323
+ } catch {
324
+ // The process tree already exited.
325
+ }
326
+ return;
327
+ }
328
+ try {
329
+ process.kill(-child.pid, signal);
330
+ } catch {
331
+ try {
332
+ child.kill(signal);
333
+ } catch {
334
+ // The process group already exited.
335
+ }
336
+ }
337
+ }
338
+
339
+ async function piVersion(timeoutMs, onChild) {
340
+ const limit = Math.min(timeoutMs, VERSION_TIMEOUT_MS);
341
+ const runProbe = (command, argv, options = {}) => new Promise((resolveProbe) => {
342
+ const child = spawn(command, argv, {
343
+ stdio: ["ignore", "pipe", "pipe"],
344
+ detached: process.platform !== "win32",
345
+ ...options,
346
+ });
347
+ onChild(child);
348
+ let stdout = "";
349
+ let stderr = "";
350
+ let settled = false;
351
+ let timedOut = false;
352
+ let timer;
353
+ const finish = (result) => {
354
+ if (settled) return;
355
+ settled = true;
356
+ clearTimeout(timer);
357
+ resolveProbe({ stdout, stderr, ...result });
358
+ };
359
+ child.stdout.on("data", (chunk) => { stdout += chunk; });
360
+ child.stderr.on("data", (chunk) => { stderr += chunk; });
361
+ child.on("error", (error) => finish({ code: null, error, timedOut: false }));
362
+ child.on("close", (code) => finish({ code, error: null, timedOut }));
363
+ timer = setTimeout(() => {
364
+ timedOut = true;
365
+ killChild(child, process.platform === "win32" ? "SIGTERM" : "SIGKILL");
366
+ }, limit);
367
+ });
368
+
369
+ // shell:true resolves pi.cmd, but a missing command is only an exit 1 from
370
+ // cmd.exe. Ask the in-box where.exe first so absence stays pi_unavailable.
371
+ if (process.platform === "win32") {
372
+ const wherePath = join(process.env.SystemRoot || process.env.WINDIR || "C:\\Windows", "System32", "where.exe");
373
+ const found = await runProbe(wherePath, ["pi"]);
374
+ if (found.timedOut) {
375
+ return { version: null, error: Object.assign(new Error("where.exe pi timed out"), { code: "ETIMEDOUT", stderr: found.stderr }) };
376
+ }
377
+ if (found.error && found.error.code !== "ENOENT") return { version: null, error: found.error };
378
+ if (!found.error && found.code !== 0) return { version: null, error: null };
379
+ }
380
+
381
+ const probe = process.platform === "win32"
382
+ ? await runProbe("pi --version", [], { shell: true, detached: false })
383
+ : await runProbe("pi", ["--version"]);
384
+ if (probe.timedOut) {
385
+ return { version: null, error: Object.assign(new Error("pi --version timed out"), { code: "ETIMEDOUT", stderr: probe.stderr }) };
386
+ }
387
+ if (probe.error && probe.error.code === "ENOENT") return { version: null, error: null };
388
+ if (probe.error) return { version: null, error: probe.error };
389
+ if (probe.code !== 0) {
390
+ return { version: null, error: Object.assign(new Error("pi --version failed"), { status: probe.code, stderr: probe.stderr }) };
391
+ }
392
+ return { version: probe.stdout.trim() || "unknown", error: null };
393
+ }
394
+
395
+ function gitTouchedFiles(cwd) {
396
+ try {
397
+ const output = execFileSync("git", ["status", "--porcelain"], {
398
+ cwd,
399
+ encoding: "utf8",
400
+ timeout: 10_000,
401
+ killSignal: "SIGKILL",
402
+ stdio: ["ignore", "pipe", "ignore"],
403
+ maxBuffer: 64 * 1024 * 1024,
404
+ });
405
+ return output.split("\n").map((line) => line.trimEnd()).filter(Boolean);
406
+ } catch {
407
+ return null;
408
+ }
409
+ }
410
+
411
+ function timestamp() {
412
+ return new Date().toISOString().replace(/[:.]/g, "-");
413
+ }
414
+
415
+ function buildArgv(opts) {
416
+ // The brief rides stdin, never argv. --mode json alone is non-interactive:
417
+ // pi reads the piped brief, streams events, and exits.
418
+ const argv = ["--mode", "json"];
419
+ if (opts.provider) argv.push("--provider", opts.provider);
420
+ if (opts.model) argv.push("--model", opts.model);
421
+ if (opts.session) argv.push("--session", opts.session);
422
+ else if (opts.resumeLast) argv.push("--continue");
423
+ argv.push(opts.approve ? "--approve" : "--no-approve");
424
+ if (opts.readOnly) argv.push("--tools", READ_ONLY_TOOLS);
425
+ return argv;
426
+ }
427
+
428
+ function prepareRunDir(opts, brief) {
429
+ const startedAt = new Date().toISOString();
430
+ const outDir = opts.outDir || join(tmpdir(), "delegate-relay", `${basename(opts.cd) || "repo"}-${timestamp()}`);
431
+ mkdirSync(outDir, { recursive: true });
432
+ const run = {
433
+ startedAt,
434
+ briefPath: join(outDir, "brief.txt"),
435
+ finalPath: join(outDir, "final.txt"),
436
+ eventsPath: join(outDir, "events.jsonl"),
437
+ stderrPath: join(outDir, "stderr.txt"),
438
+ resultPath: join(outDir, "result.json"),
439
+ };
440
+ // A reused --out-dir must not leak a previous run's artifacts into this one.
441
+ rmSync(run.finalPath, { force: true });
442
+ rmSync(run.resultPath, { force: true });
443
+ writeFileSync(run.briefPath, brief, "utf8");
444
+ writeFileSync(run.eventsPath, "", "utf8");
445
+ writeFileSync(run.stderrPath, "", "utf8");
446
+ return run;
447
+ }
448
+
449
+ function makeResultWriter(opts, version, run) {
450
+ return (extra) => {
451
+ const result = {
452
+ schema: "delegate-relay.result.v1",
453
+ lane: opts.lane,
454
+ laneSource: opts.laneSource,
455
+ tool: "pi",
456
+ workdir: opts.cd,
457
+ provider: opts.provider,
458
+ model: opts.model,
459
+ readOnly: opts.readOnly,
460
+ projectTrusted: opts.approve,
461
+ resumed: Boolean(opts.resumeLast || opts.session),
462
+ piVersion: version,
463
+ startedAt: run.startedAt,
464
+ finishedAt: new Date().toISOString(),
465
+ briefPath: run.briefPath,
466
+ finalPath: existsSync(run.finalPath) ? run.finalPath : null,
467
+ eventsPath: run.eventsPath,
468
+ stderrPath: run.stderrPath,
469
+ ...extra,
470
+ };
471
+ // Atomic write: a polling orchestrator never reads a half-written result.
472
+ const temporary = `${run.resultPath}.${process.pid}.tmp`;
473
+ writeFileSync(temporary, `${JSON.stringify(result, null, 2)}\n`, "utf8");
474
+ renameSync(temporary, run.resultPath);
475
+ return result;
476
+ };
477
+ }
478
+
479
+ function reportUnavailable(writeResult, resultPath) {
480
+ const result = writeResult({
481
+ status: "pi_unavailable",
482
+ exitCode: 127,
483
+ signal: null,
484
+ sessionId: null,
485
+ actualProvider: null,
486
+ actualModel: null,
487
+ usage: null,
488
+ stopReason: null,
489
+ finalMessage: "",
490
+ touchedFiles: null,
491
+ });
492
+ printSummary(result, resultPath);
493
+ process.stderr.write("relay: `pi` not found on PATH. Install with `npm install -g @earendil-works/pi-coding-agent`, then authenticate (`/login`, or an API-key environment variable).\n");
494
+ process.exit(127);
495
+ }
496
+
497
+ function reportVersionFailure(writeResult, run, error, timeoutMs) {
498
+ const timedOut = error && error.code === "ETIMEDOUT";
499
+ const stderr = String((error && error.stderr) || "").trim();
500
+ if (stderr) writeFileSync(run.stderrPath, `${stderr}\n`, "utf8");
501
+ const message = timedOut
502
+ ? `pi --version preflight timed out after ${Math.min(timeoutMs, VERSION_TIMEOUT_MS)}ms; pi was not dispatched`
503
+ : `pi --version preflight failed${Number.isInteger(error && error.status) ? ` with exit ${error.status}` : ""}; pi was not dispatched`;
504
+ const result = writeResult({
505
+ status: timedOut ? "timeout" : "failed",
506
+ exitCode: timedOut ? 124 : Number.isInteger(error && error.status) ? error.status : 1,
507
+ signal: null,
508
+ sessionId: null,
509
+ actualProvider: null,
510
+ actualModel: null,
511
+ usage: null,
512
+ stopReason: null,
513
+ finalMessage: "",
514
+ touchedFiles: null,
515
+ ...(stderr ? { stderrTail: stderr.split("\n").slice(-20) } : {}),
516
+ error: message,
517
+ });
518
+ printSummary(result, run.resultPath);
519
+ process.stderr.write(`relay: ${message}\n`);
520
+ process.exit(result.exitCode);
521
+ }
522
+
523
+ function installPreflightSignalHandlers(opts, run, writeResult, getChild) {
524
+ let active = true;
525
+ const handlers = new Map();
526
+ for (const sig of ["SIGTERM", "SIGINT", "SIGHUP"]) {
527
+ const handler = () => {
528
+ if (!active) return;
529
+ active = false;
530
+ const result = writeResult({
531
+ status: "aborted",
532
+ exitCode: 128 + (constants.signals[sig] || 15),
533
+ signal: sig,
534
+ sessionId: null,
535
+ actualProvider: null,
536
+ actualModel: null,
537
+ usage: null,
538
+ stopReason: null,
539
+ finalMessage: "",
540
+ touchedFiles: gitTouchedFiles(opts.cd),
541
+ error: `the relay was killed by ${sig} during the pi version preflight; pi was not dispatched`,
542
+ });
543
+ printSummary(result, run.resultPath);
544
+ const child = getChild();
545
+ if (child) killChild(child, process.platform === "win32" ? "SIGTERM" : "SIGKILL");
546
+ process.exit(result.exitCode);
547
+ };
548
+ handlers.set(sig, handler);
549
+ process.on(sig, handler);
550
+ }
551
+ return () => {
552
+ active = false;
553
+ for (const [sig, handler] of handlers) process.removeListener(sig, handler);
554
+ };
555
+ }
556
+
557
+ function spawnShellLaunch(binary, argv, options, useShell) {
558
+ if (!useShell) return spawn(binary, argv, options);
559
+ // Node 24 warns when shell:true is paired with an args array. The args here
560
+ // are already token-validated or quoted for cmd.exe, so serialize them once.
561
+ return spawn([binary, ...argv].join(" "), { ...options, shell: true });
562
+ }
563
+
564
+ function dispatchToPi(opts, brief, run, writeResult) {
565
+ const child = spawnShellLaunch("pi", buildArgv(opts), {
566
+ cwd: opts.cd,
567
+ stdio: ["pipe", "pipe", "pipe"],
568
+ // shell:true on win32 so the pi.cmd shim resolves. Safe: the brief is fed
569
+ // via stdin — never argv — and argv holds only the fixed flag names and
570
+ // token-validated --provider/--model/--session values.
571
+ detached: process.platform !== "win32", // POSIX: lead a new process group so killChild can fell the whole tree
572
+ }, process.platform === "win32");
573
+
574
+ let sessionId = null;
575
+ let actualProvider = null;
576
+ let actualModel = null;
577
+ let usage = null;
578
+ let stopReason = null;
579
+ let assistantError = null;
580
+ const textChunks = [];
581
+ const stderrTail = [];
582
+ const scan = makeEventScanner((event) => {
583
+ if (event.type === "session" && typeof event.id === "string") {
584
+ sessionId = event.id;
585
+ }
586
+ if (event.type === "message_end" && event.message && event.message.role === "assistant") {
587
+ const content = event.message.content;
588
+ if (typeof content === "string") textChunks.push(content);
589
+ if (Array.isArray(content)) {
590
+ for (const part of content) {
591
+ if (part && part.type === "text" && typeof part.text === "string") textChunks.push(part.text);
592
+ }
593
+ }
594
+ if (typeof event.message.provider === "string") actualProvider = event.message.provider;
595
+ if (typeof event.message.model === "string") actualModel = event.message.model;
596
+ if (event.message.usage && typeof event.message.usage === "object") usage = event.message.usage;
597
+ if (typeof event.message.stopReason === "string") stopReason = event.message.stopReason;
598
+ if (typeof event.message.errorMessage === "string") assistantError = event.message.errorMessage;
599
+ }
600
+ });
601
+
602
+ // Decode across chunk boundaries: a multibyte UTF-8 character split between
603
+ // two data events would otherwise decode as U+FFFD and corrupt the report.
604
+ // Files get the raw bytes; only in-memory parsing goes through the decoders.
605
+ const stdoutDecoder = new StringDecoder("utf8");
606
+ const stderrDecoder = new StringDecoder("utf8");
607
+
608
+ child.stdout.on("data", (chunk) => {
609
+ appendFileSync(run.eventsPath, chunk);
610
+ scan(stdoutDecoder.write(chunk));
611
+ });
612
+
613
+ child.stderr.on("data", (chunk) => {
614
+ process.stderr.write(chunk);
615
+ appendFileSync(run.stderrPath, chunk);
616
+ const text = stderrDecoder.write(chunk);
617
+ for (const line of text.split("\n")) {
618
+ if (line.trim()) stderrTail.push(line.trimEnd());
619
+ }
620
+ while (stderrTail.length > 20) stderrTail.shift();
621
+ });
622
+
623
+ // A fast-exiting pi (usage error, crashed startup) closes the pipe before
624
+ // the write; swallow EPIPE here — the exit code reports the failure.
625
+ child.stdin.on("error", () => {});
626
+ child.stdin.write(brief);
627
+ child.stdin.end();
628
+
629
+ const assembleFinal = () => {
630
+ const message = textChunks.join("\n\n");
631
+ if (message) writeFileSync(run.finalPath, message, "utf8");
632
+ return message;
633
+ };
634
+
635
+ let settled = false;
636
+ let watchdogFired = false;
637
+ let sigkillTimer = null;
638
+ const timeoutMs = parseDuration(opts.timeout) ?? parseDuration(DEFAULT_TIMEOUT);
639
+ const watchdogTimer = setTimeout(() => {
640
+ watchdogFired = true;
641
+ child.once("exit", () => {
642
+ child.stdout.destroy();
643
+ child.stderr.destroy();
644
+ });
645
+ killChild(child);
646
+ sigkillTimer = setTimeout(() => {
647
+ if (!settled) killChild(child, "SIGKILL");
648
+ }, 10_000);
649
+ }, timeoutMs);
650
+
651
+ const clearWatchdog = () => {
652
+ clearTimeout(watchdogTimer);
653
+ if (sigkillTimer) clearTimeout(sigkillTimer);
654
+ };
655
+
656
+ // The relay's own death must still produce a result: without this, a kill from the
657
+ // orchestrator's side (its command timeout, a stopped task, a closed terminal) writes
658
+ // no result.json and leaves the pi child running or dying mid-edit with nothing
659
+ // recording why. SIGTERM/SIGHUP registration is a no-op on Windows; SIGINT works there.
660
+ for (const sig of ["SIGTERM", "SIGINT", "SIGHUP"]) {
661
+ process.on(sig, () => {
662
+ if (settled) return;
663
+ settled = true;
664
+ clearWatchdog();
665
+ const abortedFields = {
666
+ status: "aborted",
667
+ exitCode: 128 + (constants.signals[sig] || 15),
668
+ signal: sig,
669
+ sessionId,
670
+ actualProvider,
671
+ actualModel,
672
+ usage,
673
+ stopReason,
674
+ finalMessage: assembleFinal(),
675
+ touchedFiles: gitTouchedFiles(opts.cd),
676
+ stderrTail: stderrTail.slice(-20),
677
+ error: `the relay was killed by ${sig}; pi was terminated with it — inspect the working tree before re-dispatching`,
678
+ };
679
+ const result = writeResult(abortedFields);
680
+ printSummary(result, run.resultPath);
681
+ killChild(child);
682
+ setTimeout(() => {
683
+ killChild(child, "SIGKILL");
684
+ // the child may flush files during the grace window; refresh the snapshot so the
685
+ // artifact matches the tree the orchestrator will actually find
686
+ writeResult({ ...abortedFields, touchedFiles: gitTouchedFiles(opts.cd) });
687
+ process.exit(result.exitCode);
688
+ }, 2000);
689
+ });
690
+ }
691
+
692
+ // A grandchild that outlives pi and inherited the pipes keeps stdout/stderr open, so
693
+ // "close" never fires and the relay waits forever, writing no result. Once pi itself is
694
+ // gone the pipes hold nothing we still need, so drop them after a short drain grace and let
695
+ // "close" run. This is the normal-exit twin of the stream teardown the watchdog already
696
+ // does on the timeout path.
697
+ child.once("exit", () => {
698
+ // The implementer already exited. Leaving the watchdog armed lets a drain that
699
+ // overlaps the remaining budget fire, set watchdogFired, and report timeout.
700
+ if (!watchdogFired) clearWatchdog();
701
+ const drain = setTimeout(() => {
702
+ if (settled) return;
703
+ child.stdout.destroy();
704
+ child.stderr.destroy();
705
+ }, 500);
706
+ if (typeof drain.unref === "function") drain.unref();
707
+ });
708
+
709
+ child.on("error", (err) => {
710
+ if (settled) return;
711
+ settled = true;
712
+ clearWatchdog();
713
+ const result = writeResult({
714
+ status: "failed",
715
+ exitCode: 1,
716
+ signal: null,
717
+ sessionId,
718
+ actualProvider,
719
+ actualModel,
720
+ usage,
721
+ stopReason,
722
+ finalMessage: assembleFinal(),
723
+ touchedFiles: gitTouchedFiles(opts.cd),
724
+ error: String(err && err.message ? err.message : err),
725
+ });
726
+ printSummary(result, run.resultPath);
727
+ process.exit(1);
728
+ });
729
+
730
+ child.on("close", (code, signal) => {
731
+ if (settled) return;
732
+ settled = true;
733
+ clearWatchdog();
734
+ // a descendant that ignored SIGTERM must not outlive the timeout report: once the
735
+ // parent is down, sweep the group (no-op where taskkill already felled the tree)
736
+ if (watchdogFired) killChild(child, "SIGKILL");
737
+ // A timed-out run is failed even if pi handles SIGTERM by exiting 0 —
738
+ // orchestrators key off status and the relay exit code.
739
+ const assistantFailed = stopReason === "error" || stopReason === "aborted";
740
+ const succeeded = code === 0 && !watchdogFired && !assistantFailed;
741
+ const mapped = code ?? (constants.signals[signal] ? 128 + constants.signals[signal] : 1);
742
+ const exitCode = succeeded ? 0 : mapped === 0 ? 1 : mapped;
743
+ const result = writeResult({
744
+ status: succeeded ? "completed" : watchdogFired ? "timeout" : "failed",
745
+ exitCode,
746
+ signal: signal ?? null,
747
+ sessionId,
748
+ actualProvider,
749
+ actualModel,
750
+ usage,
751
+ stopReason,
752
+ finalMessage: assembleFinal(),
753
+ touchedFiles: gitTouchedFiles(opts.cd),
754
+ ...(succeeded ? {} : { stderrTail: stderrTail.slice(-20) }),
755
+ ...(watchdogFired ? { error: `pi did not finish within --timeout ${opts.timeout}; killed by the relay watchdog` } : {}),
756
+ ...(!watchdogFired && assistantFailed ? { error: assistantError || `pi ended with stopReason "${stopReason}"` } : {}),
757
+ });
758
+ printSummary(result, run.resultPath);
759
+ process.exit(result.exitCode);
760
+ });
761
+ }
762
+
763
+ async function main() {
764
+ const opts = parseArgs(process.argv.slice(2));
765
+ const brief = readBrief(opts);
766
+ if (!brief.trim()) fail("empty brief (pass --brief <file> or pipe the brief on stdin)");
767
+
768
+ const timeoutMs = parseDuration(opts.timeout) ?? parseDuration(DEFAULT_TIMEOUT);
769
+ const run = prepareRunDir(opts, brief);
770
+ let writeResult = makeResultWriter(opts, null, run);
771
+ let preflightChild = null;
772
+ const clearPreflightSignals = installPreflightSignalHandlers(opts, run, writeResult, () => preflightChild);
773
+ const probe = await piVersion(timeoutMs, (child) => { preflightChild = child; });
774
+ writeResult = makeResultWriter(opts, probe.version, run);
775
+ if (!probe.version && !probe.error) {
776
+ clearPreflightSignals();
777
+ reportUnavailable(writeResult, run.resultPath);
778
+ return;
779
+ }
780
+ if (!probe.version) {
781
+ clearPreflightSignals();
782
+ reportVersionFailure(writeResult, run, probe.error, timeoutMs);
783
+ return;
784
+ }
785
+ clearPreflightSignals();
786
+ dispatchToPi(opts, brief, run, writeResult);
787
+ }
788
+
789
+ function printSummary(result, resultPath) {
790
+ const lines = [];
791
+ lines.push("");
792
+ lines.push(`relay: ${result.status} (exit ${result.exitCode}${result.signal ? `, killed by ${result.signal}` : ""}) · pi ${result.piVersion ?? "?"}`);
793
+ 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 a pi error; check host memory and re-dispatch, or split the task into smaller briefs.");
794
+ if (result.signal === "SIGTERM" && result.status === "failed") lines.push("hint: something outside the relay terminated pi (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.");
795
+ if (result.readOnly) lines.push(`mode: read-only (tools ${READ_ONLY_TOOLS})`);
796
+ if (result.projectTrusted) lines.push("mode: project resources trusted (--approve)");
797
+ if (result.resumed) lines.push("mode: resumed an existing session");
798
+ if (result.actualModel) lines.push(`model: ${result.actualProvider ? `${result.actualProvider}/` : ""}${result.actualModel}`);
799
+ if (result.sessionId) lines.push(`session id (resume with: --session ${result.sessionId}): ${result.sessionId}`);
800
+ const touched = result.touchedFiles;
801
+ if (touched === null) {
802
+ lines.push("touched files: git unavailable - inspect the working tree directly");
803
+ } else {
804
+ lines.push(`touched files: ${touched.length}`);
805
+ for (const file of touched.slice(0, 40)) lines.push(` ${file}`);
806
+ if (touched.length > 40) lines.push(` ... and ${touched.length - 40} more`);
807
+ }
808
+ if (result.stderrTail && result.stderrTail.length) {
809
+ lines.push("last stderr:");
810
+ for (const line of result.stderrTail.slice(-8)) lines.push(` ${line}`);
811
+ }
812
+ lines.push("");
813
+ lines.push("--- pi final report ---");
814
+ lines.push(result.finalMessage || "(no final message captured)");
815
+ lines.push("--- end report ---");
816
+ lines.push("");
817
+ lines.push(`result: ${resultPath}`);
818
+ lines.push("relay does not commit. Review the diff, re-run the project gates yourself, then commit from the orchestrator.");
819
+ process.stdout.write(`${lines.join("\n")}\n`);
820
+ }
821
+
822
+ main();