opencode-skills-collection 4.1.14 → 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 (1025) hide show
  1. package/bundled-skills/.antigravity-install-manifest.json +4 -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/advanced-evaluation/SKILL.md +21 -44
  21. package/bundled-skills/aegisops-ai/SKILL.md +19 -19
  22. package/bundled-skills/agent-creator/SKILL.md +13 -14
  23. package/bundled-skills/agent-evals/SKILL.md +27 -22
  24. package/bundled-skills/agent-framework-azure-ai-py/SKILL.md +3 -0
  25. package/bundled-skills/agent-framework-azure-ai-py/UPSTREAM-LICENSE.txt +21 -0
  26. package/bundled-skills/agent-framework-azure-ai-py/UPSTREAM-NOTICE.md +14 -0
  27. package/bundled-skills/agent-framework-azure-ai-py/references/advanced.md +512 -0
  28. package/bundled-skills/agent-framework-azure-ai-py/references/mcp.md +301 -0
  29. package/bundled-skills/agent-framework-azure-ai-py/references/threads.md +300 -0
  30. package/bundled-skills/agent-framework-azure-ai-py/references/tools.md +278 -0
  31. package/bundled-skills/agent-manager-skill/SKILL.md +10 -4
  32. package/bundled-skills/agent-memory/SKILL.md +39 -8
  33. package/bundled-skills/agent-memory-mcp/SKILL.md +11 -2
  34. package/bundled-skills/agent-memory-systems/SKILL.md +13 -28
  35. package/bundled-skills/agent-memory-systems/references/detailed-guide.md +59 -257
  36. package/bundled-skills/agent-orchestration-improve-agent/SKILL.md +12 -7
  37. package/bundled-skills/agent-orchestration-multi-agent-optimize/SKILL.md +14 -24
  38. package/bundled-skills/agent-orchestrator/SKILL.md +30 -20
  39. package/bundled-skills/agent-orchestrator/references/capability-taxonomy.md +9 -9
  40. package/bundled-skills/agent-orchestrator/references/orchestration-patterns.md +2 -2
  41. package/bundled-skills/agent-orchestrator/scripts/match_skills.py +49 -51
  42. package/bundled-skills/agent-orchestrator/scripts/orchestrate.py +71 -32
  43. package/bundled-skills/agent-orchestrator/scripts/scan_registry.py +92 -68
  44. package/bundled-skills/agent-self-scheduling/SKILL.md +11 -8
  45. package/bundled-skills/agent-squad/alex/SKILL.md +6 -1
  46. package/bundled-skills/agent-squad/aria/SKILL.md +7 -2
  47. package/bundled-skills/agent-squad/dep/SKILL.md +11 -4
  48. package/bundled-skills/agent-squad/luna/SKILL.md +10 -5
  49. package/bundled-skills/agent-squad/mason/SKILL.md +10 -5
  50. package/bundled-skills/agent-squad/max/SKILL.md +10 -3
  51. package/bundled-skills/agent-squad/quinn/SKILL.md +12 -5
  52. package/bundled-skills/agent-squad/rex/SKILL.md +7 -2
  53. package/bundled-skills/agentflow/SKILL.md +22 -15
  54. package/bundled-skills/agentfolio/SKILL.md +3 -2
  55. package/bundled-skills/agentic-actions-auditor/SKILL.md +35 -27
  56. package/bundled-skills/agentmail/SKILL.md +33 -58
  57. package/bundled-skills/agents-md/SKILL.md +1 -3
  58. package/bundled-skills/agents-v2-py/SKILL.md +57 -58
  59. package/bundled-skills/agenttrace-session-audit/SKILL.md +3 -2
  60. package/bundled-skills/agy-auto/SKILL.md +11 -10
  61. package/bundled-skills/ai-agent-development/SKILL.md +6 -0
  62. package/bundled-skills/ai-agent-evaluation-benchmarking/SKILL.md +15 -10
  63. package/bundled-skills/ai-agent-tool-routing/SKILL.md +98 -116
  64. package/bundled-skills/ai-agents-architect/SKILL.md +2 -2
  65. package/bundled-skills/ai-analyzer/SKILL.md +25 -10
  66. package/bundled-skills/ai-code-generation-guardrails/SKILL.md +99 -126
  67. package/bundled-skills/ai-dev-jobs-mcp/SKILL.md +8 -4
  68. package/bundled-skills/ai-engineer/SKILL.md +13 -7
  69. package/bundled-skills/ai-engineering-toolkit/SKILL.md +11 -7
  70. package/bundled-skills/ai-headshot-studio/SKILL.md +9 -7
  71. package/bundled-skills/ai-image-generation-studio/SKILL.md +9 -7
  72. package/bundled-skills/ai-inference-service-mesh/SKILL.md +18 -43
  73. package/bundled-skills/ai-logo-maker/SKILL.md +8 -4
  74. package/bundled-skills/ai-loop/SKILL.md +4 -4
  75. package/bundled-skills/ai-ml/SKILL.md +4 -0
  76. package/bundled-skills/ai-multilingual-dubbing/SKILL.md +9 -3
  77. package/bundled-skills/ai-native-cli/SKILL.md +10 -7
  78. package/bundled-skills/ai-photo-restyler/SKILL.md +8 -4
  79. package/bundled-skills/ai-pipeline-orchestration/SKILL.md +36 -18
  80. package/bundled-skills/ai-podcast-voiceover/SKILL.md +9 -3
  81. package/bundled-skills/ai-prompt-regression-testing/SKILL.md +100 -112
  82. package/bundled-skills/ai-red-teaming/SKILL.md +55 -35
  83. package/bundled-skills/ai-security-hardening/SKILL.md +17 -25
  84. package/bundled-skills/ai-sre-incident-response/SKILL.md +13 -12
  85. package/bundled-skills/ai-studio-image/SKILL.md +8 -0
  86. package/bundled-skills/akf-trust-metadata/SKILL.md +8 -2
  87. package/bundled-skills/alerting-oncall/SKILL.md +1 -0
  88. package/bundled-skills/alerting-oncall/references/details.md +1 -5
  89. package/bundled-skills/alpha-vantage/SKILL.md +0 -4
  90. package/bundled-skills/angular-migration/SKILL.md +14 -0
  91. package/bundled-skills/animejs-animation/SKILL.md +8 -3
  92. package/bundled-skills/anti-deception/SKILL.md +5 -3
  93. package/bundled-skills/anti-reversing-techniques/SKILL.md +1 -1
  94. package/bundled-skills/anti-sleep/SKILL.md +4 -2
  95. package/bundled-skills/antigravity-design-expert/SKILL.md +3 -3
  96. package/bundled-skills/antigravity-maintainer-batch-release/SKILL.md +9 -2
  97. package/bundled-skills/api-analyzer/SKILL.md +7 -29
  98. package/bundled-skills/api-contract-testing/SKILL.md +116 -0
  99. package/bundled-skills/api-designer/SKILL.md +9 -0
  100. package/bundled-skills/api-documentation/SKILL.md +7 -1
  101. package/bundled-skills/api-integration/SKILL.md +6 -22
  102. package/bundled-skills/api-rate-limit-handler/SKILL.md +34 -27
  103. package/bundled-skills/api-sdk-generator/SKILL.md +0 -21
  104. package/bundled-skills/api-testing-observability-api-mock/resources/implementation-playbook.md +31 -11
  105. package/bundled-skills/apk-reverse/SKILL.md +14 -0
  106. package/bundled-skills/apk-reverse/UPSTREAM-LICENSE.txt +21 -0
  107. package/bundled-skills/apk-reverse/UPSTREAM-NOTICE.md +11 -0
  108. package/bundled-skills/apk-reverse/scripts/manifest-summary.ps1 +80 -0
  109. package/bundled-skills/architecture-review/SKILL.md +4 -4
  110. package/bundled-skills/arm-cortex-expert/SKILL.md +0 -1
  111. package/bundled-skills/arrowspace/SKILL.md +23 -21
  112. package/bundled-skills/ask-questions-if-underspecified/SKILL.md +4 -4
  113. package/bundled-skills/audit-logging/SKILL.md +10 -77
  114. package/bundled-skills/automated-triage/SKILL.md +3 -0
  115. package/bundled-skills/automated-triage/UPSTREAM-LICENSE.txt +201 -0
  116. package/bundled-skills/automated-triage/UPSTREAM-NOTICE.md +12 -0
  117. package/bundled-skills/automated-triage/references/triage-example.md +115 -0
  118. package/bundled-skills/automated-triage/references/triage-stages.md +141 -0
  119. package/bundled-skills/avoid-ai-writing/SKILL.md +4 -2
  120. package/bundled-skills/awareness-stage-mapper/SKILL.md +17 -9
  121. package/bundled-skills/aws-cdk-development/SKILL.md +7 -0
  122. package/bundled-skills/aws-cdk-development/UPSTREAM-LICENSE.txt +21 -0
  123. package/bundled-skills/aws-cdk-development/UPSTREAM-NOTICE.md +14 -0
  124. package/bundled-skills/aws-cdk-development/references/cdk-patterns.md +431 -0
  125. package/bundled-skills/aws-cdk-development/scripts/validate-stack.sh +247 -0
  126. package/bundled-skills/aws-skills/SKILL.md +16 -21
  127. package/bundled-skills/aws-sst-development/SKILL.md +3 -0
  128. package/bundled-skills/aws-sst-development/UPSTREAM-LICENSE.txt +21 -0
  129. package/bundled-skills/aws-sst-development/UPSTREAM-NOTICE.md +13 -0
  130. package/bundled-skills/aws-sst-development/references/authoring.md +506 -0
  131. package/bundled-skills/aws-sst-development/references/deploy-and-troubleshoot.md +182 -0
  132. package/bundled-skills/aws-sst-development/references/testing.md +126 -0
  133. package/bundled-skills/awt-e2e-testing/SKILL.md +7 -1
  134. package/bundled-skills/azd-deployment/SKILL.md +45 -51
  135. package/bundled-skills/azure-ai-agents-persistent-java/SKILL.md +35 -19
  136. package/bundled-skills/azure-ai-projects-py/SKILL.md +7 -0
  137. package/bundled-skills/azure-ai-projects-py/UPSTREAM-LICENSE.txt +21 -0
  138. package/bundled-skills/azure-ai-projects-py/UPSTREAM-NOTICE.md +23 -0
  139. package/bundled-skills/azure-ai-projects-py/references/agents.md +295 -0
  140. package/bundled-skills/azure-ai-projects-py/references/api-reference.md +1150 -0
  141. package/bundled-skills/azure-ai-projects-py/references/async-patterns.md +258 -0
  142. package/bundled-skills/azure-ai-projects-py/references/built-in-evaluators.md +427 -0
  143. package/bundled-skills/azure-ai-projects-py/references/connections.md +203 -0
  144. package/bundled-skills/azure-ai-projects-py/references/custom-evaluators.md +450 -0
  145. package/bundled-skills/azure-ai-projects-py/references/datasets-indexes.md +177 -0
  146. package/bundled-skills/azure-ai-projects-py/references/deployments.md +134 -0
  147. package/bundled-skills/azure-ai-projects-py/references/evaluation.md +349 -0
  148. package/bundled-skills/azure-ai-projects-py/references/tools.md +464 -0
  149. package/bundled-skills/azure-ai-projects-py/scripts/run_batch_evaluation.py +409 -0
  150. package/bundled-skills/azure-ai-transcription-py/SKILL.md +30 -50
  151. package/bundled-skills/azure-ai-voicelive-py/SKILL.md +3 -0
  152. package/bundled-skills/azure-ai-voicelive-py/UPSTREAM-LICENSE.txt +21 -0
  153. package/bundled-skills/azure-ai-voicelive-py/UPSTREAM-NOTICE.md +15 -0
  154. package/bundled-skills/azure-ai-voicelive-py/references/api-reference.md +344 -0
  155. package/bundled-skills/azure-ai-voicelive-py/references/examples.md +558 -0
  156. package/bundled-skills/azure-ai-voicelive-py/references/models.md +737 -0
  157. package/bundled-skills/azure-communication-callingserver-java/SKILL.md +10 -9
  158. package/bundled-skills/azure-cosmos-db-py/SKILL.md +7 -0
  159. package/bundled-skills/azure-cosmos-db-py/UPSTREAM-LICENSE.txt +21 -0
  160. package/bundled-skills/azure-cosmos-db-py/UPSTREAM-NOTICE.md +20 -0
  161. package/bundled-skills/azure-cosmos-db-py/assets/conftest_template.py +332 -0
  162. package/bundled-skills/azure-cosmos-db-py/assets/cosmos_client_template.py +225 -0
  163. package/bundled-skills/azure-cosmos-db-py/assets/service_template.py +314 -0
  164. package/bundled-skills/azure-cosmos-db-py/references/client-setup.md +214 -0
  165. package/bundled-skills/azure-cosmos-db-py/references/error-handling.md +382 -0
  166. package/bundled-skills/azure-cosmos-db-py/references/partitioning.md +270 -0
  167. package/bundled-skills/azure-cosmos-db-py/references/service-layer.md +305 -0
  168. package/bundled-skills/azure-cosmos-db-py/references/testing.md +495 -0
  169. package/bundled-skills/azure-cosmos-py/SKILL.md +11 -0
  170. package/bundled-skills/azure-cosmos-py/UPSTREAM-LICENSE.txt +21 -0
  171. package/bundled-skills/azure-cosmos-py/UPSTREAM-NOTICE.md +14 -0
  172. package/bundled-skills/azure-cosmos-py/references/partitioning.md +346 -0
  173. package/bundled-skills/azure-cosmos-py/references/query-patterns.md +395 -0
  174. package/bundled-skills/azure-cosmos-rust/SKILL.md +30 -22
  175. package/bundled-skills/azure-eventhub-py/SKILL.md +7 -0
  176. package/bundled-skills/azure-eventhub-py/UPSTREAM-LICENSE.txt +21 -0
  177. package/bundled-skills/azure-eventhub-py/UPSTREAM-NOTICE.md +15 -0
  178. package/bundled-skills/azure-eventhub-py/references/checkpointing.md +312 -0
  179. package/bundled-skills/azure-eventhub-py/references/partitions.md +346 -0
  180. package/bundled-skills/azure-eventhub-py/scripts/setup_consumer.py +422 -0
  181. package/bundled-skills/azure-eventhub-rust/SKILL.md +28 -13
  182. package/bundled-skills/azure-identity-rust/SKILL.md +16 -10
  183. package/bundled-skills/azure-keyvault-keys-rust/SKILL.md +13 -8
  184. package/bundled-skills/azure-keyvault-secrets-rust/SKILL.md +12 -6
  185. package/bundled-skills/azure-mgmt-apimanagement-dotnet/SKILL.md +11 -0
  186. package/bundled-skills/azure-mgmt-apimanagement-dotnet/UPSTREAM-LICENSE.txt +21 -0
  187. package/bundled-skills/azure-mgmt-apimanagement-dotnet/UPSTREAM-NOTICE.md +15 -0
  188. package/bundled-skills/azure-mgmt-apimanagement-dotnet/references/apis-operations.md +168 -0
  189. package/bundled-skills/azure-mgmt-apimanagement-dotnet/references/products-subscriptions.md +173 -0
  190. package/bundled-skills/azure-mgmt-apimanagement-dotnet/references/service-management.md +154 -0
  191. package/bundled-skills/azure-resource-manager-cosmosdb-dotnet/SKILL.md +3 -0
  192. package/bundled-skills/azure-resource-manager-cosmosdb-dotnet/UPSTREAM-LICENSE.txt +21 -0
  193. package/bundled-skills/azure-resource-manager-cosmosdb-dotnet/UPSTREAM-NOTICE.md +15 -0
  194. package/bundled-skills/azure-resource-manager-cosmosdb-dotnet/references/account-management.md +279 -0
  195. package/bundled-skills/azure-resource-manager-cosmosdb-dotnet/references/sql-resources.md +373 -0
  196. package/bundled-skills/azure-resource-manager-cosmosdb-dotnet/references/throughput.md +308 -0
  197. package/bundled-skills/azure-resource-manager-sql-dotnet/SKILL.md +3 -0
  198. package/bundled-skills/azure-resource-manager-sql-dotnet/UPSTREAM-LICENSE.txt +21 -0
  199. package/bundled-skills/azure-resource-manager-sql-dotnet/UPSTREAM-NOTICE.md +15 -0
  200. package/bundled-skills/azure-resource-manager-sql-dotnet/references/database-operations.md +268 -0
  201. package/bundled-skills/azure-resource-manager-sql-dotnet/references/elastic-pools.md +234 -0
  202. package/bundled-skills/azure-resource-manager-sql-dotnet/references/server-management.md +192 -0
  203. package/bundled-skills/azure-search-documents-dotnet/SKILL.md +3 -0
  204. package/bundled-skills/azure-search-documents-dotnet/UPSTREAM-LICENSE.txt +21 -0
  205. package/bundled-skills/azure-search-documents-dotnet/UPSTREAM-NOTICE.md +14 -0
  206. package/bundled-skills/azure-search-documents-dotnet/references/semantic-search.md +241 -0
  207. package/bundled-skills/azure-search-documents-dotnet/references/vector-search.md +236 -0
  208. package/bundled-skills/azure-servicebus-py/SKILL.md +7 -0
  209. package/bundled-skills/azure-servicebus-py/UPSTREAM-LICENSE.txt +21 -0
  210. package/bundled-skills/azure-servicebus-py/UPSTREAM-NOTICE.md +15 -0
  211. package/bundled-skills/azure-servicebus-py/references/dead-letter.md +418 -0
  212. package/bundled-skills/azure-servicebus-py/references/patterns.md +405 -0
  213. package/bundled-skills/azure-servicebus-py/scripts/setup_servicebus.py +384 -0
  214. package/bundled-skills/azure-speech-to-text-rest-py/SKILL.md +3 -0
  215. package/bundled-skills/azure-speech-to-text-rest-py/UPSTREAM-LICENSE.txt +21 -0
  216. package/bundled-skills/azure-speech-to-text-rest-py/UPSTREAM-NOTICE.md +13 -0
  217. package/bundled-skills/azure-speech-to-text-rest-py/references/pronunciation-assessment.md +276 -0
  218. package/bundled-skills/azure-storage-blob-rust/SKILL.md +29 -21
  219. package/bundled-skills/baseline-ui/SKILL.md +2 -2
  220. package/bundled-skills/bash-scripting/SKILL.md +10 -2
  221. package/bundled-skills/bazel-build-optimization/SKILL.md +0 -1
  222. package/bundled-skills/bdistill-behavioral-xray/SKILL.md +5 -5
  223. package/bundled-skills/bdistill-knowledge-extraction/SKILL.md +9 -6
  224. package/bundled-skills/beautiful-prose/SKILL.md +1 -2
  225. package/bundled-skills/bevy-ecs-expert/SKILL.md +9 -7
  226. package/bundled-skills/billing-automation/resources/implementation-playbook.md +56 -513
  227. package/bundled-skills/binary-analysis-patterns/SKILL.md +0 -1
  228. package/bundled-skills/biopython/SKILL.md +3 -0
  229. package/bundled-skills/biopython/UPSTREAM-LICENSE.txt +21 -0
  230. package/bundled-skills/biopython/UPSTREAM-NOTICE.md +17 -0
  231. package/bundled-skills/biopython/references/advanced.md +577 -0
  232. package/bundled-skills/biopython/references/alignment.md +368 -0
  233. package/bundled-skills/biopython/references/blast.md +455 -0
  234. package/bundled-skills/biopython/references/databases.md +487 -0
  235. package/bundled-skills/biopython/references/phylogenetics.md +566 -0
  236. package/bundled-skills/biopython/references/sequence_io.md +285 -0
  237. package/bundled-skills/biopython/references/structure.md +564 -0
  238. package/bundled-skills/blockchain-developer/SKILL.md +0 -1
  239. package/bundled-skills/blueprint/SKILL.md +6 -8
  240. package/bundled-skills/brain-to-docs/SKILL.md +4 -4
  241. package/bundled-skills/brand-growth-system-builder/SKILL.md +10 -0
  242. package/bundled-skills/brand-perception-psychologist/SKILL.md +16 -8
  243. package/bundled-skills/browser-bridge/SKILL.md +101 -0
  244. package/bundled-skills/build/SKILL.md +15 -10
  245. package/bundled-skills/build/references/detailed-guide.md +38 -14
  246. package/bundled-skills/burpsuite-project-parser/SKILL.md +7 -0
  247. package/bundled-skills/buywhere-product-catalog/SKILL.md +6 -5
  248. package/bundled-skills/c-pro/SKILL.md +8 -6
  249. package/bundled-skills/c4-architecture-c4-architecture/SKILL.md +0 -1
  250. package/bundled-skills/c4-code/SKILL.md +0 -1
  251. package/bundled-skills/c4-component/SKILL.md +0 -1
  252. package/bundled-skills/c4-container/SKILL.md +0 -1
  253. package/bundled-skills/c4-context/SKILL.md +0 -1
  254. package/bundled-skills/cdk-patterns/SKILL.md +7 -0
  255. package/bundled-skills/changelog-entry/SKILL.md +6 -4
  256. package/bundled-skills/check-identity-pack/SKILL.md +7 -8
  257. package/bundled-skills/chrome-extension-developer/SKILL.md +8 -4
  258. package/bundled-skills/ci-cd-and-automation/SKILL.md +15 -3
  259. package/bundled-skills/cirq/SKILL.md +3 -0
  260. package/bundled-skills/cirq/UPSTREAM-LICENSE.txt +21 -0
  261. package/bundled-skills/cirq/UPSTREAM-NOTICE.md +16 -0
  262. package/bundled-skills/cirq/references/building.md +307 -0
  263. package/bundled-skills/cirq/references/experiments.md +572 -0
  264. package/bundled-skills/cirq/references/hardware.md +527 -0
  265. package/bundled-skills/cirq/references/noise.md +514 -0
  266. package/bundled-skills/cirq/references/simulation.md +353 -0
  267. package/bundled-skills/cirq/references/transformation.md +416 -0
  268. package/bundled-skills/cis-benchmarks/SKILL.md +16 -9
  269. package/bundled-skills/clarvia-aeo-check/SKILL.md +9 -9
  270. package/bundled-skills/claude-ally-health/SKILL.md +17 -6
  271. package/bundled-skills/claude-code-guide/SKILL.md +9 -5
  272. package/bundled-skills/claude-scientific-skills/SKILL.md +15 -3
  273. package/bundled-skills/claude-speed-reader/SKILL.md +13 -3
  274. package/bundled-skills/claude-win11-speckit-update-skill/SKILL.md +13 -7
  275. package/bundled-skills/cline-pilot/SKILL.md +10 -0
  276. package/bundled-skills/closed-loop-delivery/SKILL.md +7 -7
  277. package/bundled-skills/cloud-architect/SKILL.md +0 -1
  278. package/bundled-skills/cloudflare-workers-expert/SKILL.md +6 -5
  279. package/bundled-skills/cloudformation-best-practices/SKILL.md +4 -3
  280. package/bundled-skills/cmux/SKILL.md +8 -0
  281. package/bundled-skills/code-refactoring-context-restore/SKILL.md +1 -1
  282. package/bundled-skills/code-review-ai-ai-review/SKILL.md +8 -1
  283. package/bundled-skills/code-review-and-quality/SKILL.md +9 -0
  284. package/bundled-skills/code-reviewer/SKILL.md +0 -1
  285. package/bundled-skills/codex-review/SKILL.md +3 -2
  286. package/bundled-skills/commit/SKILL.md +12 -11
  287. package/bundled-skills/comprehensive-review-full-review/SKILL.md +0 -1
  288. package/bundled-skills/computer-vision-expert/SKILL.md +9 -8
  289. package/bundled-skills/concise-planning/SKILL.md +7 -7
  290. package/bundled-skills/conductor-implement/SKILL.md +0 -1
  291. package/bundled-skills/conductor-new-track/SKILL.md +0 -1
  292. package/bundled-skills/conductor-revert/SKILL.md +0 -1
  293. package/bundled-skills/conductor-setup/SKILL.md +42 -25
  294. package/bundled-skills/conductor-status/SKILL.md +0 -1
  295. package/bundled-skills/conductor-validator/SKILL.md +15 -19
  296. package/bundled-skills/constant-time-analysis/SKILL.md +3 -0
  297. package/bundled-skills/constant-time-analysis/UPSTREAM-LICENSE.txt +427 -0
  298. package/bundled-skills/constant-time-analysis/UPSTREAM-NOTICE.md +18 -0
  299. package/bundled-skills/constant-time-analysis/references/compiled.md +129 -0
  300. package/bundled-skills/constant-time-analysis/references/javascript.md +136 -0
  301. package/bundled-skills/constant-time-analysis/references/kotlin.md +252 -0
  302. package/bundled-skills/constant-time-analysis/references/php.md +172 -0
  303. package/bundled-skills/constant-time-analysis/references/python.md +179 -0
  304. package/bundled-skills/constant-time-analysis/references/ruby.md +198 -0
  305. package/bundled-skills/constant-time-analysis/references/swift.md +288 -0
  306. package/bundled-skills/constant-time-analysis/references/vm-compiled.md +354 -0
  307. package/bundled-skills/container-hardening/SKILL.md +23 -24
  308. package/bundled-skills/content-marketer/SKILL.md +0 -1
  309. package/bundled-skills/content-strategy/SKILL.md +1 -1
  310. package/bundled-skills/content-strategy/references/headless-cms.md +5 -3
  311. package/bundled-skills/context-kit/SKILL.md +8 -0
  312. package/bundled-skills/context-management-context-restore/SKILL.md +1 -1
  313. package/bundled-skills/context-management-context-save/SKILL.md +0 -1
  314. package/bundled-skills/context-manager/SKILL.md +0 -1
  315. package/bundled-skills/context7-auto-research/SKILL.md +3 -3
  316. package/bundled-skills/copy-editing/SKILL.md +4 -0
  317. package/bundled-skills/copywriting-psychologist/SKILL.md +17 -9
  318. package/bundled-skills/cost-optimization/SKILL.md +11 -1
  319. package/bundled-skills/cost-optimization/UPSTREAM-LICENSE.txt +21 -0
  320. package/bundled-skills/cost-optimization/UPSTREAM-NOTICE.md +11 -0
  321. package/bundled-skills/cost-optimization/references/tagging-standards.md +23 -0
  322. package/bundled-skills/cowork-to-code-bridge/SKILL.md +9 -0
  323. package/bundled-skills/create-issue-gate/SKILL.md +5 -5
  324. package/bundled-skills/create-pr/SKILL.md +2 -0
  325. package/bundled-skills/crossframe-suite/SKILL.md +8 -0
  326. package/bundled-skills/crypto-bd-agent/SKILL.md +1 -2
  327. package/bundled-skills/csharp-pro/SKILL.md +5 -7
  328. package/bundled-skills/csv-manual-export/SKILL.md +1 -2
  329. package/bundled-skills/customer-psychographic-profiler/SKILL.md +16 -8
  330. package/bundled-skills/customer-support/SKILL.md +0 -1
  331. package/bundled-skills/data-engineering-data-driven-feature/SKILL.md +0 -1
  332. package/bundled-skills/data-privacy-controls/SKILL.md +10 -19
  333. package/bundled-skills/data-storytelling/SKILL.md +4 -2
  334. package/bundled-skills/database-admin/SKILL.md +0 -1
  335. package/bundled-skills/database-design/SKILL.md +5 -1
  336. package/bundled-skills/database-design/database-selection.md +1 -1
  337. package/bundled-skills/database-design/orm-selection.md +1 -1
  338. package/bundled-skills/database-design/scripts/schema_validator.py +17 -8
  339. package/bundled-skills/database-migration/SKILL.md +14 -1
  340. package/bundled-skills/database-migrations-sql-migrations/resources/implementation-playbook.md +31 -283
  341. package/bundled-skills/database-optimizer/SKILL.md +0 -1
  342. package/bundled-skills/debug-buttercup/SKILL.md +8 -0
  343. package/bundled-skills/debugger/SKILL.md +4 -3
  344. package/bundled-skills/debugging-toolkit/SKILL.md +2 -2
  345. package/bundled-skills/debugging-toolkit-smart-debug/SKILL.md +14 -10
  346. package/bundled-skills/deep-research/SKILL.md +24 -13
  347. package/bundled-skills/deep-research/UPSTREAM-LICENSE.txt +190 -0
  348. package/bundled-skills/deep-research/UPSTREAM-NOTICE.md +11 -0
  349. package/bundled-skills/deep-research/requirements.txt +2 -0
  350. package/bundled-skills/deep-research/scripts/research.py +802 -0
  351. package/bundled-skills/defi-protocol-templates/SKILL.md +16 -1
  352. package/bundled-skills/defuddle/SKILL.md +9 -6
  353. package/bundled-skills/delegating-to-agents/SKILL.md +12 -13
  354. package/bundled-skills/dependency-management-deps-audit/resources/implementation-playbook.md +32 -289
  355. package/bundled-skills/dependency-upgrade/SKILL.md +14 -1
  356. package/bundled-skills/deployment-pipeline-design/SKILL.md +11 -111
  357. package/bundled-skills/deployment-validation-config-validate/SKILL.md +1 -1
  358. package/bundled-skills/deprecation-and-migration/SKILL.md +5 -3
  359. package/bundled-skills/design-orchestration/SKILL.md +4 -4
  360. package/bundled-skills/design-spells/SKILL.md +4 -4
  361. package/bundled-skills/detect-ai-text/SKILL.md +4 -4
  362. package/bundled-skills/deterministic-design/SKILL.md +5 -4
  363. package/bundled-skills/devcontainer-setup/SKILL.md +3 -0
  364. package/bundled-skills/devcontainer-setup/UPSTREAM-LICENSE.txt +427 -0
  365. package/bundled-skills/devcontainer-setup/UPSTREAM-NOTICE.md +12 -0
  366. package/bundled-skills/devcontainer-setup/references/dockerfile-best-practices.md +102 -0
  367. package/bundled-skills/devcontainer-setup/references/features-vs-dockerfile.md +22 -0
  368. package/bundled-skills/diagram-generator/SKILL.md +6 -0
  369. package/bundled-skills/diagram-generator/UPSTREAM-LICENSE.txt +21 -0
  370. package/bundled-skills/diagram-generator/UPSTREAM-NOTICE.md +11 -0
  371. package/bundled-skills/diagram-generator/scripts/render_diagram.py +169 -0
  372. package/bundled-skills/django-access-review/SKILL.md +20 -12
  373. package/bundled-skills/django-perf-review/SKILL.md +1 -1
  374. package/bundled-skills/doc-coauthoring/SKILL.md +1 -1
  375. package/bundled-skills/doc2math/SKILL.md +10 -9
  376. package/bundled-skills/docker-compose/SKILL.md +17 -11
  377. package/bundled-skills/docker-expert/SKILL.md +57 -53
  378. package/bundled-skills/docker-management/SKILL.md +17 -13
  379. package/bundled-skills/docs-architect/SKILL.md +0 -1
  380. package/bundled-skills/docs-generator/SKILL.md +7 -1
  381. package/bundled-skills/docs-generator/UPSTREAM-LICENSE.txt +21 -0
  382. package/bundled-skills/docs-generator/UPSTREAM-NOTICE.md +15 -0
  383. package/bundled-skills/docs-generator/scripts/case-init.ps1 +379 -0
  384. package/bundled-skills/docs-generator/scripts/lib/HostRuntime.ps1 +58 -0
  385. package/bundled-skills/docs-generator/scripts/lib/WorkRoot.ps1 +33 -0
  386. package/bundled-skills/documentation/SKILL.md +5 -1
  387. package/bundled-skills/documentation-and-adrs/SKILL.md +7 -5
  388. package/bundled-skills/documentation-templates/SKILL.md +8 -6
  389. package/bundled-skills/dotnet-architect/SKILL.md +0 -1
  390. package/bundled-skills/doubt-driven-development/SKILL.md +8 -0
  391. package/bundled-skills/dx-optimizer/SKILL.md +8 -8
  392. package/bundled-skills/e2e-testing/SKILL.md +4 -0
  393. package/bundled-skills/eas-workflows/SKILL.md +60 -27
  394. package/bundled-skills/eas-workflows/agents/openai.yaml +1 -1
  395. package/bundled-skills/eas-workflows/scripts/fetch.js +131 -82
  396. package/bundled-skills/eas-workflows/scripts/package.json +4 -0
  397. package/bundled-skills/elixir-pro/SKILL.md +5 -7
  398. package/bundled-skills/emblemai-crypto-wallet/SKILL.md +7 -6
  399. package/bundled-skills/emotional-arc-designer/SKILL.md +17 -9
  400. package/bundled-skills/error-debugging-multi-agent-review/SKILL.md +1 -1
  401. package/bundled-skills/error-detective/SKILL.md +7 -3
  402. package/bundled-skills/error-diagnostics-smart-debug/SKILL.md +14 -10
  403. package/bundled-skills/error-handling-patterns/resources/implementation-playbook.md +21 -72
  404. package/bundled-skills/event-sourcing-architect/SKILL.md +4 -3
  405. package/bundled-skills/exa-search/SKILL.md +4 -2
  406. package/bundled-skills/executing-plans/SKILL.md +8 -8
  407. package/bundled-skills/expo-ui-jetpack-compose/SKILL.md +4 -7
  408. package/bundled-skills/expo-ui-swift-ui/SKILL.md +5 -8
  409. package/bundled-skills/fact-check-x-unified/SKILL.md +25 -15
  410. package/bundled-skills/fact-check-x-unified/UPSTREAM-NOTICE.md +9 -0
  411. package/bundled-skills/fact-check-x-unified/scripts/fact_check_x.py +10 -5
  412. package/bundled-skills/fact-check-x-unified/scripts/trusted_search_config.py +49 -8
  413. package/bundled-skills/fact-check-x-unified/tests/smoke_test.py +1 -1
  414. package/bundled-skills/fact-check-x-unified/tests/trusted_search_config_test.py +8 -2
  415. package/bundled-skills/fal-audio/SKILL.md +16 -6
  416. package/bundled-skills/fal-generate/SKILL.md +16 -6
  417. package/bundled-skills/fal-image-edit/SKILL.md +16 -6
  418. package/bundled-skills/fal-platform/SKILL.md +12 -4
  419. package/bundled-skills/fal-upscale/SKILL.md +12 -4
  420. package/bundled-skills/fal-workflow/SKILL.md +24 -6
  421. package/bundled-skills/family-health-analyzer/SKILL.md +17 -16
  422. package/bundled-skills/fastapi-router-py/SKILL.md +3 -0
  423. package/bundled-skills/fastapi-router-py/UPSTREAM-LICENSE.txt +21 -0
  424. package/bundled-skills/fastapi-router-py/UPSTREAM-NOTICE.md +11 -0
  425. package/bundled-skills/fastapi-router-py/assets/template.py +147 -0
  426. package/bundled-skills/fda-food-safety-auditor/SKILL.md +9 -8
  427. package/bundled-skills/fda-medtech-compliance-auditor/SKILL.md +8 -8
  428. package/bundled-skills/ffuf-claude-skill/SKILL.md +18 -3
  429. package/bundled-skills/file-organizer/SKILL.md +1 -1
  430. package/bundled-skills/find-bugs/SKILL.md +4 -4
  431. package/bundled-skills/find-matching-tenders/SKILL.md +12 -11
  432. package/bundled-skills/firecrawl-scraper/SKILL.md +4 -2
  433. package/bundled-skills/firmware-analyst/SKILL.md +10 -1
  434. package/bundled-skills/fix-review/SKILL.md +5 -1
  435. package/bundled-skills/fp-either-ref/SKILL.md +10 -4
  436. package/bundled-skills/fp-option-ref/SKILL.md +12 -6
  437. package/bundled-skills/fp-pipe-ref/SKILL.md +7 -1
  438. package/bundled-skills/fp-taskeither-ref/SKILL.md +28 -10
  439. package/bundled-skills/fp-types-ref/SKILL.md +8 -2
  440. package/bundled-skills/framework-migration-legacy-modernize/SKILL.md +0 -1
  441. package/bundled-skills/free-design-resources/SKILL.md +8 -0
  442. package/bundled-skills/frontend-api-integration-patterns/SKILL.md +11 -8
  443. package/bundled-skills/frontend-data-contracts/SKILL.md +5 -1
  444. package/bundled-skills/frontend-mobile-development-component-scaffold/SKILL.md +1 -1
  445. package/bundled-skills/frontend-mobile-security-xss-scan/SKILL.md +1 -1
  446. package/bundled-skills/frontend-slides/SKILL.md +1 -0
  447. package/bundled-skills/frontend-slides-frontend-slides/SKILL.md +15 -0
  448. package/bundled-skills/frontend-slides-frontend-slides/UPSTREAM-LICENSE.txt +21 -0
  449. package/bundled-skills/frontend-slides-frontend-slides/UPSTREAM-NOTICE.md +14 -0
  450. package/bundled-skills/frontend-slides-frontend-slides/scripts/export-pdf.sh +390 -0
  451. package/bundled-skills/frontend-slides-frontend-slides/scripts/extract-pptx.py +96 -0
  452. package/bundled-skills/frontend-slides-frontend-slides/scripts/lib/confined-server.mjs +113 -0
  453. package/bundled-skills/frontend-ui-engineering/SKILL.md +8 -0
  454. package/bundled-skills/full-output-enforcement/SKILL.md +20 -9
  455. package/bundled-skills/full-stack-orchestration-full-stack-feature/SKILL.md +0 -1
  456. package/bundled-skills/game-development/2d-games/SKILL.md +3 -3
  457. package/bundled-skills/game-development/3d-games/SKILL.md +8 -4
  458. package/bundled-skills/game-development/game-design/SKILL.md +8 -4
  459. package/bundled-skills/game-development/mobile-games/SKILL.md +10 -6
  460. package/bundled-skills/game-development/multiplayer/SKILL.md +9 -5
  461. package/bundled-skills/game-development/pc-games/SKILL.md +6 -2
  462. package/bundled-skills/game-development/vr-ar/SKILL.md +12 -6
  463. package/bundled-skills/gh-review-requests/SKILL.md +14 -42
  464. package/bundled-skills/gha-security-review/SKILL.md +3 -0
  465. package/bundled-skills/gha-security-review/UPSTREAM-LICENSE.txt +190 -0
  466. package/bundled-skills/gha-security-review/UPSTREAM-NOTICE.md +19 -0
  467. package/bundled-skills/gha-security-review/references/ai-prompt-injection-via-ci.md +181 -0
  468. package/bundled-skills/gha-security-review/references/comment-triggered-commands.md +195 -0
  469. package/bundled-skills/gha-security-review/references/credential-escalation.md +225 -0
  470. package/bundled-skills/gha-security-review/references/expression-injection.md +287 -0
  471. package/bundled-skills/gha-security-review/references/permissions-and-secrets.md +265 -0
  472. package/bundled-skills/gha-security-review/references/pwn-request.md +212 -0
  473. package/bundled-skills/gha-security-review/references/real-world-attacks.md +298 -0
  474. package/bundled-skills/gha-security-review/references/runner-infrastructure.md +268 -0
  475. package/bundled-skills/gha-security-review/references/supply-chain.md +225 -0
  476. package/bundled-skills/git-advanced-workflows/SKILL.md +19 -12
  477. package/bundled-skills/git-commit-message/SKILL.md +2 -2
  478. package/bundled-skills/git-pr-review/SKILL.md +6 -9
  479. package/bundled-skills/git-pr-workflows-onboard/SKILL.md +0 -1
  480. package/bundled-skills/git-pr-workflows-pr-enhance/SKILL.md +1 -1
  481. package/bundled-skills/github-actions/SKILL.md +20 -24
  482. package/bundled-skills/github-actions-debugger/SKILL.md +7 -3
  483. package/bundled-skills/github-issue-creator/SKILL.md +12 -12
  484. package/bundled-skills/gitlab-ci-patterns/SKILL.md +5 -7
  485. package/bundled-skills/global-chat-agent-discovery/SKILL.md +12 -7
  486. package/bundled-skills/gmail-automation/SKILL.md +9 -0
  487. package/bundled-skills/godot-4-migration/SKILL.md +12 -4
  488. package/bundled-skills/google-calendar-automation/SKILL.md +23 -145
  489. package/bundled-skills/google-docs-automation/SKILL.md +1 -1
  490. package/bundled-skills/google-drive-automation/SKILL.md +9 -0
  491. package/bundled-skills/google-sheets-automation/SKILL.md +1 -1
  492. package/bundled-skills/google-slides-automation/SKILL.md +1 -1
  493. package/bundled-skills/graphql-architect/SKILL.md +0 -1
  494. package/bundled-skills/grill-me/SKILL.md +3 -1
  495. package/bundled-skills/grill-with-docs/SKILL.md +3 -1
  496. package/bundled-skills/grilling/SKILL.md +1 -1
  497. package/bundled-skills/handoff/SKILL.md +5 -1
  498. package/bundled-skills/haskell-pro/SKILL.md +3 -4
  499. package/bundled-skills/headline-psychologist/SKILL.md +16 -8
  500. package/bundled-skills/hf-mem/SKILL.md +9 -1
  501. package/bundled-skills/hosted-agents-v2-py/SKILL.md +56 -57
  502. package/bundled-skills/hr-pro/SKILL.md +0 -1
  503. package/bundled-skills/hugging-face-jobs/SKILL.md +0 -1
  504. package/bundled-skills/hugging-face-tool-builder/SKILL.md +16 -2
  505. package/bundled-skills/hybrid-cloud-architect/SKILL.md +0 -1
  506. package/bundled-skills/hybrid-cloud-networking/SKILL.md +11 -1
  507. package/bundled-skills/hybrid-cloud-networking/UPSTREAM-LICENSE.txt +21 -0
  508. package/bundled-skills/hybrid-cloud-networking/UPSTREAM-NOTICE.md +11 -0
  509. package/bundled-skills/hybrid-cloud-networking/references/direct-connect.md +17 -0
  510. package/bundled-skills/hyperexecute-skill/SKILL.md +7 -0
  511. package/bundled-skills/hyperexecute-skill/UPSTREAM-LICENSE.txt +21 -0
  512. package/bundled-skills/hyperexecute-skill/UPSTREAM-NOTICE.md +16 -0
  513. package/bundled-skills/hyperexecute-skill/scripts/build-command.js +57 -0
  514. package/bundled-skills/hyperexecute-skill/scripts/doctor.js +81 -0
  515. package/bundled-skills/hyperexecute-skill/scripts/summarize-artifacts.js +63 -0
  516. package/bundled-skills/hyperexecute-skill/scripts/validate-config.js +72 -0
  517. package/bundled-skills/iconsax-library/SKILL.md +6 -4
  518. package/bundled-skills/ida-reverse/SKILL.md +13 -0
  519. package/bundled-skills/ida-reverse/UPSTREAM-LICENSE.txt +21 -0
  520. package/bundled-skills/ida-reverse/UPSTREAM-NOTICE.md +13 -0
  521. package/bundled-skills/ida-reverse/scripts/IdaOpenHelpers.ps1 +115 -0
  522. package/bundled-skills/ida-reverse/scripts/open.ps1 +378 -0
  523. package/bundled-skills/ida-reverse/scripts/start-gui.ps1 +105 -0
  524. package/bundled-skills/idea-evaluator/idea-evaluator-con/SKILL.md +4 -2
  525. package/bundled-skills/idea-evaluator/idea-evaluator-pro/SKILL.md +5 -3
  526. package/bundled-skills/identity-mirror/SKILL.md +16 -8
  527. package/bundled-skills/imagen/SKILL.md +15 -5
  528. package/bundled-skills/imagen/UPSTREAM-LICENSE.txt +190 -0
  529. package/bundled-skills/imagen/UPSTREAM-NOTICE.md +5 -0
  530. package/bundled-skills/imagen/scripts/generate_image.py +241 -0
  531. package/bundled-skills/implement/SKILL.md +4 -4
  532. package/bundled-skills/incident-response-incident-response/SKILL.md +0 -1
  533. package/bundled-skills/incident-response-smart-fix/SKILL.md +1 -1
  534. package/bundled-skills/incident-runbook-templates/SKILL.md +22 -16
  535. package/bundled-skills/incremental-implementation/SKILL.md +8 -0
  536. package/bundled-skills/infinite-gratitude/SKILL.md +6 -2
  537. package/bundled-skills/internal-comms/SKILL.md +1 -1
  538. package/bundled-skills/interview-coach/SKILL.md +7 -4
  539. package/bundled-skills/istio-traffic-management/SKILL.md +0 -1
  540. package/bundled-skills/iterate-pr/SKILL.md +9 -0
  541. package/bundled-skills/java-pro/SKILL.md +0 -1
  542. package/bundled-skills/javascript-pro/SKILL.md +1 -1
  543. package/bundled-skills/javascript-typescript-typescript-scaffold/SKILL.md +1 -1
  544. package/bundled-skills/julia-pro/SKILL.md +0 -1
  545. package/bundled-skills/k8s-security-policies/SKILL.md +8 -1
  546. package/bundled-skills/kotler-macro-analyzer/SKILL.md +4 -0
  547. package/bundled-skills/kotlin-coroutines-expert/SKILL.md +8 -5
  548. package/bundled-skills/kubernetes-deployment/SKILL.md +5 -1
  549. package/bundled-skills/kubernetes-hardening/SKILL.md +9 -1
  550. package/bundled-skills/langchain-architecture/SKILL.md +15 -1
  551. package/bundled-skills/legacy-modernizer/SKILL.md +4 -5
  552. package/bundled-skills/legal-advisor/SKILL.md +9 -6
  553. package/bundled-skills/lightning-architecture-review/SKILL.md +6 -6
  554. package/bundled-skills/lightning-channel-factories/SKILL.md +6 -6
  555. package/bundled-skills/lightning-factory-explainer/SKILL.md +5 -5
  556. package/bundled-skills/linkerd-patterns/SKILL.md +0 -1
  557. package/bundled-skills/linux-hardening/SKILL.md +24 -23
  558. package/bundled-skills/llm-application-dev-ai-assistant/SKILL.md +1 -1
  559. package/bundled-skills/llm-application-dev-langchain-agent/SKILL.md +0 -1
  560. package/bundled-skills/llm-application-dev-prompt-optimize/SKILL.md +1 -1
  561. package/bundled-skills/llm-evaluation/SKILL.md +50 -62
  562. package/bundled-skills/llm-evaluation/references/benchmarking.md +35 -0
  563. package/bundled-skills/logic-review/SKILL.md +8 -0
  564. package/bundled-skills/longbridge/SKILL.md +8 -4
  565. package/bundled-skills/longbridge-content/SKILL.md +3 -0
  566. package/bundled-skills/longbridge-content/UPSTREAM-LICENSE.txt +21 -0
  567. package/bundled-skills/longbridge-content/UPSTREAM-NOTICE.md +15 -0
  568. package/bundled-skills/longbridge-content/references/filing.md +48 -0
  569. package/bundled-skills/longbridge-content/references/news.md +118 -0
  570. package/bundled-skills/longbridge-content/references/regulatory-kb.md +128 -0
  571. package/bundled-skills/longbridge-content/references/sec-filings.md +113 -0
  572. package/bundled-skills/longbridge-content/references/topic.md +53 -0
  573. package/bundled-skills/longbridge-fundamentals/SKILL.md +3 -0
  574. package/bundled-skills/longbridge-fundamentals/UPSTREAM-LICENSE.txt +21 -0
  575. package/bundled-skills/longbridge-fundamentals/UPSTREAM-NOTICE.md +31 -0
  576. package/bundled-skills/longbridge-fundamentals/references/behavioral-finance.md +108 -0
  577. package/bundled-skills/longbridge-fundamentals/references/business-segments.md +50 -0
  578. package/bundled-skills/longbridge-fundamentals/references/company.md +39 -0
  579. package/bundled-skills/longbridge-fundamentals/references/compare.md +49 -0
  580. package/bundled-skills/longbridge-fundamentals/references/corp-action.md +42 -0
  581. package/bundled-skills/longbridge-fundamentals/references/corporate-events.md +89 -0
  582. package/bundled-skills/longbridge-fundamentals/references/corporate.md +64 -0
  583. package/bundled-skills/longbridge-fundamentals/references/dcf.md +103 -0
  584. package/bundled-skills/longbridge-fundamentals/references/dividend.md +51 -0
  585. package/bundled-skills/longbridge-fundamentals/references/executive.md +39 -0
  586. package/bundled-skills/longbridge-fundamentals/references/financial-report.md +88 -0
  587. package/bundled-skills/longbridge-fundamentals/references/financial-statement.md +49 -0
  588. package/bundled-skills/longbridge-fundamentals/references/industry-valuation.md +86 -0
  589. package/bundled-skills/longbridge-fundamentals/references/invest-relation.md +39 -0
  590. package/bundled-skills/longbridge-fundamentals/references/main-business-analysis.md +654 -0
  591. package/bundled-skills/longbridge-fundamentals/references/operating.md +42 -0
  592. package/bundled-skills/longbridge-fundamentals/references/smallcap-growth.md +72 -0
  593. package/bundled-skills/longbridge-fundamentals/references/valuation-methodology.md +86 -0
  594. package/bundled-skills/longbridge-fundamentals/references/valuation-rank.md +57 -0
  595. package/bundled-skills/longbridge-fundamentals/references/valuation.md +86 -0
  596. package/bundled-skills/longbridge-fundamentals/references/value-screen.md +71 -0
  597. package/bundled-skills/longbridge-market-data/SKILL.md +3 -0
  598. package/bundled-skills/longbridge-market-data/UPSTREAM-LICENSE.txt +21 -0
  599. package/bundled-skills/longbridge-market-data/UPSTREAM-NOTICE.md +28 -0
  600. package/bundled-skills/longbridge-market-data/references/adr-premium.md +63 -0
  601. package/bundled-skills/longbridge-market-data/references/ah-premium.md +67 -0
  602. package/bundled-skills/longbridge-market-data/references/capital.md +48 -0
  603. package/bundled-skills/longbridge-market-data/references/depth.md +40 -0
  604. package/bundled-skills/longbridge-market-data/references/exchange-rate.md +35 -0
  605. package/bundled-skills/longbridge-market-data/references/fx-carry.md +59 -0
  606. package/bundled-skills/longbridge-market-data/references/intraday.md +47 -0
  607. package/bundled-skills/longbridge-market-data/references/ipo.md +48 -0
  608. package/bundled-skills/longbridge-market-data/references/kline.md +62 -0
  609. package/bundled-skills/longbridge-market-data/references/market-status.md +35 -0
  610. package/bundled-skills/longbridge-market-data/references/market-temp.md +53 -0
  611. package/bundled-skills/longbridge-market-data/references/participants.md +35 -0
  612. package/bundled-skills/longbridge-market-data/references/quote.md +78 -0
  613. package/bundled-skills/longbridge-market-data/references/security-list.md +36 -0
  614. package/bundled-skills/longbridge-market-data/references/subscriptions.md +23 -0
  615. package/bundled-skills/longbridge-market-data/references/trade-stats.md +39 -0
  616. package/bundled-skills/longbridge-market-data/references/trades.md +44 -0
  617. package/bundled-skills/longbridge-market-data/references/trading.md +40 -0
  618. package/bundled-skills/loss-aversion-designer/SKILL.md +16 -8
  619. package/bundled-skills/m365-agents-dotnet/SKILL.md +8 -0
  620. package/bundled-skills/m365-agents-py/SKILL.md +8 -0
  621. package/bundled-skills/m365-agents-ts/SKILL.md +8 -0
  622. package/bundled-skills/machine-learning-ops-ml-pipeline/SKILL.md +0 -1
  623. package/bundled-skills/macos-screen-recorder/SKILL.md +5 -1
  624. package/bundled-skills/magic-animator/SKILL.md +4 -2
  625. package/bundled-skills/magic-ui-generator/SKILL.md +7 -5
  626. package/bundled-skills/makepad-animation/SKILL.md +8 -0
  627. package/bundled-skills/makepad-basics/SKILL.md +9 -0
  628. package/bundled-skills/makepad-deployment/SKILL.md +18 -0
  629. package/bundled-skills/makepad-dsl/SKILL.md +9 -0
  630. package/bundled-skills/makepad-event-action/SKILL.md +9 -0
  631. package/bundled-skills/makepad-font/SKILL.md +8 -0
  632. package/bundled-skills/makepad-layout/SKILL.md +9 -0
  633. package/bundled-skills/makepad-platform/SKILL.md +8 -0
  634. package/bundled-skills/makepad-reference/SKILL.md +5 -3
  635. package/bundled-skills/makepad-shaders/SKILL.md +9 -0
  636. package/bundled-skills/makepad-skills/SKILL.md +11 -5
  637. package/bundled-skills/makepad-splash/SKILL.md +8 -0
  638. package/bundled-skills/makepad-widgets/SKILL.md +10 -0
  639. package/bundled-skills/manifest/SKILL.md +20 -113
  640. package/bundled-skills/markdown-rendering/SKILL.md +3 -3
  641. package/bundled-skills/market-sizing-analysis/SKILL.md +13 -24
  642. package/bundled-skills/market-sizing-analysis/examples/saas-market-sizing.md +20 -337
  643. package/bundled-skills/market-sizing-analysis/references/data-sources.md +10 -22
  644. package/bundled-skills/markstream-angular/SKILL.md +3 -1
  645. package/bundled-skills/markstream-nuxt/SKILL.md +3 -1
  646. package/bundled-skills/markstream-react/SKILL.md +5 -1
  647. package/bundled-skills/markstream-svelte/SKILL.md +3 -1
  648. package/bundled-skills/markstream-vue/SKILL.md +3 -1
  649. package/bundled-skills/markstream-vue2/SKILL.md +5 -1
  650. package/bundled-skills/markstream-vue2-cli/SKILL.md +5 -1
  651. package/bundled-skills/markstream-vue2-vite/SKILL.md +5 -1
  652. package/bundled-skills/matplotlib/SKILL.md +5 -0
  653. package/bundled-skills/matplotlib/UPSTREAM-LICENSE.txt +21 -0
  654. package/bundled-skills/matplotlib/UPSTREAM-NOTICE.md +16 -0
  655. package/bundled-skills/matplotlib/references/api_reference.md +412 -0
  656. package/bundled-skills/matplotlib/references/common_issues.md +563 -0
  657. package/bundled-skills/matplotlib/references/plot_types.md +476 -0
  658. package/bundled-skills/matplotlib/references/styling_guide.md +589 -0
  659. package/bundled-skills/matplotlib/scripts/plot_template.py +401 -0
  660. package/bundled-skills/matplotlib/scripts/style_configurator.py +412 -0
  661. package/bundled-skills/mcd-secret-menu-lab/SKILL.md +110 -0
  662. package/bundled-skills/mcp-server-security/SKILL.md +17 -11
  663. package/bundled-skills/mcp-server-security/references/details.md +51 -90
  664. package/bundled-skills/memory-forensics/SKILL.md +0 -1
  665. package/bundled-skills/mermaid-expert/SKILL.md +5 -4
  666. package/bundled-skills/minecraft-bukkit-pro/SKILL.md +0 -1
  667. package/bundled-skills/mirrord/SKILL.md +5 -3
  668. package/bundled-skills/ml-engineer/SKILL.md +0 -1
  669. package/bundled-skills/ml-pipeline-workflow/SKILL.md +10 -1
  670. package/bundled-skills/mlops-engineer/SKILL.md +0 -1
  671. package/bundled-skills/mobile-security-coder/SKILL.md +0 -1
  672. package/bundled-skills/monopoly/SKILL.md +12 -0
  673. package/bundled-skills/monopoly/security-checklist/SKILL.md +9 -7
  674. package/bundled-skills/monorepo-architect/SKILL.md +5 -4
  675. package/bundled-skills/monte-carlo-analyze-root-cause/SKILL.md +4 -0
  676. package/bundled-skills/monte-carlo-analyze-root-cause/UPSTREAM-LICENSE.txt +201 -0
  677. package/bundled-skills/monte-carlo-analyze-root-cause/UPSTREAM-NOTICE.md +19 -0
  678. package/bundled-skills/monte-carlo-analyze-root-cause/references/common-root-causes.md +79 -0
  679. package/bundled-skills/monte-carlo-analyze-root-cause/references/data-exploration.md +149 -0
  680. package/bundled-skills/monte-carlo-analyze-root-cause/references/etl-failure-investigation.md +67 -0
  681. package/bundled-skills/monte-carlo-analyze-root-cause/references/field-anomaly-investigation.md +107 -0
  682. package/bundled-skills/monte-carlo-analyze-root-cause/references/freshness-investigation.md +67 -0
  683. package/bundled-skills/monte-carlo-analyze-root-cause/references/intake-no-incident.md +67 -0
  684. package/bundled-skills/monte-carlo-analyze-root-cause/references/query-change-investigation.md +55 -0
  685. package/bundled-skills/monte-carlo-analyze-root-cause/references/schema-investigation.md +48 -0
  686. package/bundled-skills/monte-carlo-analyze-root-cause/references/volume-investigation.md +53 -0
  687. package/bundled-skills/monte-carlo-asset-health/SKILL.md +4 -0
  688. package/bundled-skills/monte-carlo-asset-health/UPSTREAM-LICENSE.txt +201 -0
  689. package/bundled-skills/monte-carlo-asset-health/UPSTREAM-NOTICE.md +12 -0
  690. package/bundled-skills/monte-carlo-asset-health/references/parameters.md +111 -0
  691. package/bundled-skills/monte-carlo-asset-health/references/workflows.md +132 -0
  692. package/bundled-skills/monte-carlo-monitoring-advisor/SKILL.md +3 -0
  693. package/bundled-skills/monte-carlo-monitoring-advisor/UPSTREAM-LICENSE.txt +201 -0
  694. package/bundled-skills/monte-carlo-monitoring-advisor/UPSTREAM-NOTICE.md +12 -0
  695. package/bundled-skills/monte-carlo-monitoring-advisor/references/agent-monitor-creation.md +471 -0
  696. package/bundled-skills/monte-carlo-monitoring-advisor/references/data-monitor-creation.md +272 -0
  697. package/bundled-skills/monte-carlo-performance-diagnosis/SKILL.md +3 -0
  698. package/bundled-skills/monte-carlo-performance-diagnosis/UPSTREAM-LICENSE.txt +201 -0
  699. package/bundled-skills/monte-carlo-performance-diagnosis/UPSTREAM-NOTICE.md +12 -0
  700. package/bundled-skills/monte-carlo-performance-diagnosis/references/investigation-tiers.md +110 -0
  701. package/bundled-skills/monte-carlo-performance-diagnosis/references/query-analysis.md +50 -0
  702. package/bundled-skills/monte-carlo-remediation/SKILL.md +3 -0
  703. package/bundled-skills/monte-carlo-remediation/UPSTREAM-LICENSE.txt +201 -0
  704. package/bundled-skills/monte-carlo-remediation/UPSTREAM-NOTICE.md +13 -0
  705. package/bundled-skills/monte-carlo-remediation/references/patterns.md +295 -0
  706. package/bundled-skills/monte-carlo-remediation/references/safety.md +160 -0
  707. package/bundled-skills/monte-carlo-remediation/references/tool-discovery.md +172 -0
  708. package/bundled-skills/monte-carlo-storage-cost-analysis/SKILL.md +3 -0
  709. package/bundled-skills/monte-carlo-storage-cost-analysis/UPSTREAM-LICENSE.txt +201 -0
  710. package/bundled-skills/monte-carlo-storage-cost-analysis/UPSTREAM-NOTICE.md +11 -0
  711. package/bundled-skills/monte-carlo-storage-cost-analysis/references/output-structure.md +93 -0
  712. package/bundled-skills/mtls-configuration/SKILL.md +0 -1
  713. package/bundled-skills/multi-cloud-architecture/SKILL.md +3 -1
  714. package/bundled-skills/multi-cloud-architecture/UPSTREAM-LICENSE.txt +21 -0
  715. package/bundled-skills/multi-cloud-architecture/UPSTREAM-NOTICE.md +12 -0
  716. package/bundled-skills/multi-cloud-architecture/references/multi-cloud-patterns.md +26 -0
  717. package/bundled-skills/multi-cloud-architecture/references/service-comparison.md +35 -0
  718. package/bundled-skills/nanobanana-ppt-skills/SKILL.md +13 -4
  719. package/bundled-skills/native-data-fetching/references/detailed-guide.md +42 -23
  720. package/bundled-skills/native-data-fetching/references/expo-router-loaders.md +36 -29
  721. package/bundled-skills/nerdzao-elite/SKILL.md +9 -5
  722. package/bundled-skills/nerdzao-elite-gemini-high/SKILL.md +7 -3
  723. package/bundled-skills/network-engineer/SKILL.md +0 -1
  724. package/bundled-skills/networkx/SKILL.md +3 -0
  725. package/bundled-skills/networkx/UPSTREAM-LICENSE.txt +21 -0
  726. package/bundled-skills/networkx/UPSTREAM-NOTICE.md +15 -0
  727. package/bundled-skills/networkx/references/algorithms.md +383 -0
  728. package/bundled-skills/networkx/references/generators.md +378 -0
  729. package/bundled-skills/networkx/references/graph-basics.md +283 -0
  730. package/bundled-skills/networkx/references/io.md +441 -0
  731. package/bundled-skills/networkx/references/visualization.md +529 -0
  732. package/bundled-skills/new-rails-project/SKILL.md +4 -2
  733. package/bundled-skills/news-sentiment-engine/SKILL.md +13 -28
  734. package/bundled-skills/nft-standards/SKILL.md +15 -1
  735. package/bundled-skills/nsfw-ai-spicyapi/SKILL.md +8 -0
  736. package/bundled-skills/nx-workspace-patterns/SKILL.md +0 -1
  737. package/bundled-skills/objection-preemptor/SKILL.md +16 -8
  738. package/bundled-skills/observability-monitoring-monitor-setup/SKILL.md +1 -1
  739. package/bundled-skills/obsidian-cli/SKILL.md +4 -2
  740. package/bundled-skills/odoo-module-developer/SKILL.md +4 -1
  741. package/bundled-skills/odoo-orm-expert/SKILL.md +4 -2
  742. package/bundled-skills/odw/SKILL.md +8 -0
  743. package/bundled-skills/offensive-osint/SKILL.md +76 -70
  744. package/bundled-skills/offensive-osint/UPSTREAM-LICENSE.txt +395 -0
  745. package/bundled-skills/offensive-osint/UPSTREAM-NOTICE.md +26 -0
  746. package/bundled-skills/offensive-osint/references/breach-and-credentials.md +130 -0
  747. package/bundled-skills/offensive-osint/references/dork-corpus.md +182 -0
  748. package/bundled-skills/offensive-osint/references/helpers-and-automation.md +266 -0
  749. package/bundled-skills/offensive-osint/references/identity-fabric.md +309 -0
  750. package/bundled-skills/offensive-osint/references/people-osint.md +107 -0
  751. package/bundled-skills/offensive-osint/references/probes-and-wordlists.md +1269 -0
  752. package/bundled-skills/offensive-osint/references/recon-stack.md +284 -0
  753. package/bundled-skills/offensive-osint/references/recon-techniques.md +343 -0
  754. package/bundled-skills/offensive-osint/references/saas-public-surfaces.md +140 -0
  755. package/bundled-skills/offensive-osint/references/secret-patterns.md +71 -0
  756. package/bundled-skills/offensive-osint/references/secret-validators.md +334 -0
  757. package/bundled-skills/offensive-osint/references/sector-notes.md +74 -0
  758. package/bundled-skills/offensive-osint/references/severity-matrix.md +112 -0
  759. package/bundled-skills/offensive-osint/references/specialized-osint.md +204 -0
  760. package/bundled-skills/offensive-osint/references/tooling-install.md +190 -0
  761. package/bundled-skills/offers/SKILL.md +1 -1
  762. package/bundled-skills/omp-delegate/SKILL.md +5 -1
  763. package/bundled-skills/omp-delegate/UPSTREAM-LICENSE.txt +21 -0
  764. package/bundled-skills/omp-delegate/UPSTREAM-NOTICE.md +13 -0
  765. package/bundled-skills/omp-delegate/scripts/relay.mjs +823 -0
  766. package/bundled-skills/on-call-handoff-patterns/SKILL.md +8 -6
  767. package/bundled-skills/onboarding/SKILL.md +1 -1
  768. package/bundled-skills/onboarding-cro/SKILL.md +7 -3
  769. package/bundled-skills/open-source-marketing/SKILL.md +1 -1
  770. package/bundled-skills/opencode-delegate/SKILL.md +5 -1
  771. package/bundled-skills/opencode-delegate/UPSTREAM-LICENSE.txt +21 -0
  772. package/bundled-skills/opencode-delegate/UPSTREAM-NOTICE.md +13 -0
  773. package/bundled-skills/opencode-delegate/scripts/relay.mjs +781 -0
  774. package/bundled-skills/page-cro/SKILL.md +14 -110
  775. package/bundled-skills/payment-integration/SKILL.md +0 -1
  776. package/bundled-skills/paypal-integration/SKILL.md +3 -1
  777. package/bundled-skills/pentest-tools/src-hunter/SKILL.md +8 -0
  778. package/bundled-skills/performance-engineer/SKILL.md +1 -1
  779. package/bundled-skills/performance-optimization/SKILL.md +8 -0
  780. package/bundled-skills/performance-testing-review-ai-review/SKILL.md +8 -1
  781. package/bundled-skills/performance-testing-review-multi-agent-review/SKILL.md +1 -1
  782. package/bundled-skills/php-pro/SKILL.md +0 -1
  783. package/bundled-skills/pi-delegate/SKILL.md +5 -1
  784. package/bundled-skills/pi-delegate/UPSTREAM-LICENSE.txt +21 -0
  785. package/bundled-skills/pi-delegate/UPSTREAM-NOTICE.md +13 -0
  786. package/bundled-skills/pi-delegate/scripts/relay.mjs +822 -0
  787. package/bundled-skills/pitch-psychologist/SKILL.md +19 -11
  788. package/bundled-skills/planning-and-task-breakdown/SKILL.md +8 -0
  789. package/bundled-skills/playwright-java/SKILL.md +14 -0
  790. package/bundled-skills/podcast-generation/SKILL.md +3 -0
  791. package/bundled-skills/podcast-generation/UPSTREAM-LICENSE.txt +21 -0
  792. package/bundled-skills/podcast-generation/UPSTREAM-NOTICE.md +13 -0
  793. package/bundled-skills/podcast-generation/references/architecture.md +87 -0
  794. package/bundled-skills/podcast-generation/references/code-examples.md +189 -0
  795. package/bundled-skills/podcast-generation/scripts/pcm_to_wav.py +73 -0
  796. package/bundled-skills/polars/SKILL.md +3 -0
  797. package/bundled-skills/polars/UPSTREAM-LICENSE.txt +21 -0
  798. package/bundled-skills/polars/UPSTREAM-NOTICE.md +16 -0
  799. package/bundled-skills/polars/references/best_practices.md +649 -0
  800. package/bundled-skills/polars/references/core_concepts.md +378 -0
  801. package/bundled-skills/polars/references/io_guide.md +557 -0
  802. package/bundled-skills/polars/references/operations.md +602 -0
  803. package/bundled-skills/polars/references/pandas_migration.md +417 -0
  804. package/bundled-skills/polars/references/transformations.md +549 -0
  805. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/SKILL.md +3 -0
  806. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/UPSTREAM-LICENSE.txt +21 -0
  807. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/UPSTREAM-NOTICE.md +18 -0
  808. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/references/amendments.md +146 -0
  809. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/references/protocol-spec.md +506 -0
  810. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/references/routing.md +227 -0
  811. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/references/templates.md +438 -0
  812. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/references/troubleshooting.md +216 -0
  813. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/scripts/init_polis.py +559 -0
  814. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/scripts/route_contract.py +19 -0
  815. package/bundled-skills/polis-protocol-a-self-optimizing-city-of-agents/templates/POLIS_CONSTITUTION.md +293 -0
  816. package/bundled-skills/posix-shell-pro/SKILL.md +0 -1
  817. package/bundled-skills/power-user-cultivation/SKILL.md +1 -1
  818. package/bundled-skills/presentation-deck/SKILL.md +4 -4
  819. package/bundled-skills/presentation-deck/references/related-skills.md +1 -1
  820. package/bundled-skills/price-psychology-strategist/SKILL.md +17 -9
  821. package/bundled-skills/pricing/SKILL.md +1 -1
  822. package/bundled-skills/product-marketing/SKILL.md +1 -1
  823. package/bundled-skills/prometheus-configuration/SKILL.md +11 -1
  824. package/bundled-skills/prompt-engineering-patterns/SKILL.md +0 -1
  825. package/bundled-skills/public-relations/SKILL.md +1 -1
  826. package/bundled-skills/pubmed-database/SKILL.md +10 -0
  827. package/bundled-skills/pypict-skill/SKILL.md +18 -5
  828. package/bundled-skills/python-testing-patterns/resources/implementation-playbook.md +13 -4
  829. package/bundled-skills/qiskit/SKILL.md +3 -0
  830. package/bundled-skills/qiskit/UPSTREAM-LICENSE.txt +21 -0
  831. package/bundled-skills/qiskit/UPSTREAM-NOTICE.md +18 -0
  832. package/bundled-skills/qiskit/references/algorithms.md +607 -0
  833. package/bundled-skills/qiskit/references/backends.md +433 -0
  834. package/bundled-skills/qiskit/references/circuits.md +197 -0
  835. package/bundled-skills/qiskit/references/patterns.md +533 -0
  836. package/bundled-skills/qiskit/references/primitives.md +277 -0
  837. package/bundled-skills/qiskit/references/setup.md +99 -0
  838. package/bundled-skills/qiskit/references/transpilation.md +286 -0
  839. package/bundled-skills/qiskit/references/visualization.md +415 -0
  840. package/bundled-skills/qoder-delegate/SKILL.md +5 -1
  841. package/bundled-skills/qoder-delegate/UPSTREAM-LICENSE.txt +21 -0
  842. package/bundled-skills/qoder-delegate/UPSTREAM-NOTICE.md +13 -0
  843. package/bundled-skills/qoder-delegate/scripts/relay.mjs +698 -0
  844. package/bundled-skills/quant-analyst/SKILL.md +0 -1
  845. package/bundled-skills/radare2/SKILL.md +9 -0
  846. package/bundled-skills/react-flow-node-ts/SKILL.md +3 -0
  847. package/bundled-skills/react-flow-node-ts/UPSTREAM-LICENSE.txt +21 -0
  848. package/bundled-skills/react-flow-node-ts/UPSTREAM-NOTICE.md +12 -0
  849. package/bundled-skills/react-flow-node-ts/assets/template.tsx +108 -0
  850. package/bundled-skills/react-flow-node-ts/assets/types.template.ts +34 -0
  851. package/bundled-skills/react-state-management/SKILL.md +0 -1
  852. package/bundled-skills/read-all-adrs/SKILL.md +3 -4
  853. package/bundled-skills/recsys-pipeline-architect/SKILL.md +8 -0
  854. package/bundled-skills/reference-builder/SKILL.md +0 -1
  855. package/bundled-skills/reverse-engineer-anything/SKILL.md +4 -0
  856. package/bundled-skills/riffkit/SKILL.md +22 -13
  857. package/bundled-skills/risk-manager/SKILL.md +0 -1
  858. package/bundled-skills/robius-app-architecture/SKILL.md +10 -0
  859. package/bundled-skills/robius-event-action/SKILL.md +10 -0
  860. package/bundled-skills/robius-matrix-integration/SKILL.md +10 -0
  861. package/bundled-skills/robius-state-management/SKILL.md +10 -0
  862. package/bundled-skills/robius-widget-patterns/SKILL.md +10 -0
  863. package/bundled-skills/ruby-pro/SKILL.md +0 -1
  864. package/bundled-skills/scala-pro/SKILL.md +0 -1
  865. package/bundled-skills/scanpy/SKILL.md +3 -0
  866. package/bundled-skills/scanpy/UPSTREAM-LICENSE.txt +21 -0
  867. package/bundled-skills/scanpy/UPSTREAM-NOTICE.md +15 -0
  868. package/bundled-skills/scanpy/assets/analysis_template.py +295 -0
  869. package/bundled-skills/scanpy/references/api_reference.md +251 -0
  870. package/bundled-skills/scanpy/references/plotting_guide.md +352 -0
  871. package/bundled-skills/scanpy/references/standard_workflow.md +206 -0
  872. package/bundled-skills/scanpy/scripts/qc_analysis.py +200 -0
  873. package/bundled-skills/scarcity-urgency-psychologist/SKILL.md +16 -8
  874. package/bundled-skills/score-eval/SKILL.md +29 -18
  875. package/bundled-skills/search-specialist/SKILL.md +0 -1
  876. package/bundled-skills/security-bluebook-builder/SKILL.md +9 -1
  877. package/bundled-skills/security-compliance-compliance-check/resources/implementation-playbook.md +46 -177
  878. package/bundled-skills/security-requirement-extraction/resources/implementation-playbook.md +8 -6
  879. package/bundled-skills/senior-fullstack/SKILL.md +24 -200
  880. package/bundled-skills/senior-fullstack/references/architecture_patterns.md +4 -100
  881. package/bundled-skills/senior-fullstack/references/development_workflows.md +4 -100
  882. package/bundled-skills/senior-fullstack/references/tech_stack_guide.md +4 -100
  883. package/bundled-skills/senior-fullstack/scripts/code_quality_analyzer.py +5 -13
  884. package/bundled-skills/senior-fullstack/scripts/fullstack_scaffolder.py +5 -13
  885. package/bundled-skills/senior-fullstack/scripts/project_scaffolder.py +5 -13
  886. package/bundled-skills/seo-authority-builder/SKILL.md +0 -1
  887. package/bundled-skills/seo-cannibalization-detector/SKILL.md +6 -2
  888. package/bundled-skills/seo-content/SKILL.md +8 -0
  889. package/bundled-skills/seo-content-auditor/SKILL.md +3 -1
  890. package/bundled-skills/seo-content-refresher/SKILL.md +8 -4
  891. package/bundled-skills/seo-directory-backlinks/SKILL.md +8 -0
  892. package/bundled-skills/seo-image-gen/SKILL.md +14 -0
  893. package/bundled-skills/seo-keyword-strategist/SKILL.md +0 -1
  894. package/bundled-skills/seo-meta-optimizer/SKILL.md +0 -1
  895. package/bundled-skills/seo-schema/SKILL.md +8 -0
  896. package/bundled-skills/seo-snippet-hunter/SKILL.md +0 -1
  897. package/bundled-skills/seo-structure-architect/SKILL.md +6 -2
  898. package/bundled-skills/sequence-psychologist/SKILL.md +16 -8
  899. package/bundled-skills/service-mesh-expert/SKILL.md +0 -1
  900. package/bundled-skills/service-mesh-observability/SKILL.md +0 -1
  901. package/bundled-skills/sharp-edges/SKILL.md +3 -0
  902. package/bundled-skills/sharp-edges/UPSTREAM-LICENSE.txt +427 -0
  903. package/bundled-skills/sharp-edges/UPSTREAM-NOTICE.md +26 -0
  904. package/bundled-skills/sharp-edges/references/auth-patterns.md +252 -0
  905. package/bundled-skills/sharp-edges/references/case-studies.md +274 -0
  906. package/bundled-skills/sharp-edges/references/config-patterns.md +333 -0
  907. package/bundled-skills/sharp-edges/references/crypto-apis.md +190 -0
  908. package/bundled-skills/sharp-edges/references/lang-c.md +205 -0
  909. package/bundled-skills/sharp-edges/references/lang-csharp.md +285 -0
  910. package/bundled-skills/sharp-edges/references/lang-go.md +270 -0
  911. package/bundled-skills/sharp-edges/references/lang-java.md +263 -0
  912. package/bundled-skills/sharp-edges/references/lang-javascript.md +269 -0
  913. package/bundled-skills/sharp-edges/references/lang-kotlin.md +265 -0
  914. package/bundled-skills/sharp-edges/references/lang-php.md +245 -0
  915. package/bundled-skills/sharp-edges/references/lang-python.md +274 -0
  916. package/bundled-skills/sharp-edges/references/lang-ruby.md +273 -0
  917. package/bundled-skills/sharp-edges/references/lang-rust.md +272 -0
  918. package/bundled-skills/sharp-edges/references/lang-swift.md +287 -0
  919. package/bundled-skills/sharp-edges/references/language-specific.md +588 -0
  920. package/bundled-skills/shellcheck-configuration/SKILL.md +0 -1
  921. package/bundled-skills/shipping-and-launch/SKILL.md +11 -0
  922. package/bundled-skills/skill-scanner/SKILL.md +23 -14
  923. package/bundled-skills/skill-scanner/UPSTREAM-LICENSE.txt +190 -0
  924. package/bundled-skills/skill-scanner/UPSTREAM-NOTICE.md +14 -0
  925. package/bundled-skills/skill-scanner/references/dangerous-code-patterns.md +194 -0
  926. package/bundled-skills/skill-scanner/references/permission-analysis.md +93 -0
  927. package/bundled-skills/skill-scanner/references/prompt-injection-patterns.md +157 -0
  928. package/bundled-skills/skill-scanner/scripts/scan_skill.py +800 -0
  929. package/bundled-skills/skill-seekers/SKILL.md +16 -20
  930. package/bundled-skills/slideops/SKILL.md +3 -0
  931. package/bundled-skills/slideops/UPSTREAM-LICENSE.txt +21 -0
  932. package/bundled-skills/slideops/UPSTREAM-NOTICE.md +16 -0
  933. package/bundled-skills/slideops/assets/template.html +536 -0
  934. package/bundled-skills/slideops/references/automation.md +185 -0
  935. package/bundled-skills/slideops/references/diagrams.md +92 -0
  936. package/bundled-skills/slideops/references/verification.md +124 -0
  937. package/bundled-skills/slideops/scripts/check.py +501 -0
  938. package/bundled-skills/slideops/scripts/cite.py +143 -0
  939. package/bundled-skills/social-proof-architect/SKILL.md +17 -9
  940. package/bundled-skills/spark-optimization/SKILL.md +0 -1
  941. package/bundled-skills/speckit-updater/SKILL.md +7 -0
  942. package/bundled-skills/speed/SKILL.md +16 -14
  943. package/bundled-skills/sred-project-organizer/SKILL.md +7 -0
  944. package/bundled-skills/startup-analyst/SKILL.md +0 -1
  945. package/bundled-skills/startup-business-analyst-business-case/SKILL.md +0 -1
  946. package/bundled-skills/startup-business-analyst-financial-projections/SKILL.md +0 -1
  947. package/bundled-skills/startup-business-analyst-market-opportunity/SKILL.md +0 -1
  948. package/bundled-skills/startup-financial-modeling/SKILL.md +16 -25
  949. package/bundled-skills/subject-line-psychologist/SKILL.md +16 -8
  950. package/bundled-skills/superpowers-lab/SKILL.md +15 -20
  951. package/bundled-skills/supply-chain-security/SKILL.md +6 -14
  952. package/bundled-skills/supply-chain-security/references/cicd-pipeline-security.md +3 -39
  953. package/bundled-skills/swiftui-ui-patterns/SKILL.md +4 -0
  954. package/bundled-skills/swiftui-ui-patterns/references/async-state.md +14 -8
  955. package/bundled-skills/swiftui-ui-patterns/references/controls.md +1 -1
  956. package/bundled-skills/swiftui-ui-patterns/references/form.md +22 -4
  957. package/bundled-skills/swiftui-ui-patterns/references/lightweight-clients.md +3 -3
  958. package/bundled-skills/swiftui-ui-patterns/references/list.md +2 -2
  959. package/bundled-skills/swiftui-ui-patterns/references/matched-transitions.md +3 -1
  960. package/bundled-skills/swiftui-ui-patterns/references/media.md +3 -0
  961. package/bundled-skills/swiftui-ui-patterns/references/overlay.md +8 -3
  962. package/bundled-skills/swiftui-ui-patterns/references/performance.md +2 -5
  963. package/bundled-skills/swiftui-ui-patterns/references/scroll-reveal.md +3 -1
  964. package/bundled-skills/swiftui-ui-patterns/references/searchable.md +23 -7
  965. package/bundled-skills/swiftui-ui-patterns/references/sheets.md +16 -10
  966. package/bundled-skills/swiftui-ui-patterns/references/split-views.md +4 -1
  967. package/bundled-skills/systematic-debugging/condition-based-waiting-example.ts +30 -144
  968. package/bundled-skills/systematic-debugging/condition-based-waiting.md +1 -1
  969. package/bundled-skills/tdd-orchestrator/SKILL.md +0 -1
  970. package/bundled-skills/team-composition-analysis/SKILL.md +9 -1
  971. package/bundled-skills/technical-tutorials/SKILL.md +1 -1
  972. package/bundled-skills/temporal-python-pro/SKILL.md +0 -1
  973. package/bundled-skills/temporal-python-testing/SKILL.md +0 -1
  974. package/bundled-skills/terraform-module-library/SKILL.md +11 -1
  975. package/bundled-skills/test-automator/SKILL.md +0 -1
  976. package/bundled-skills/testing-patterns/SKILL.md +8 -9
  977. package/bundled-skills/trust-calibrator/SKILL.md +16 -8
  978. package/bundled-skills/tune-monitor/SKILL.md +3 -0
  979. package/bundled-skills/tune-monitor/UPSTREAM-LICENSE.txt +201 -0
  980. package/bundled-skills/tune-monitor/UPSTREAM-NOTICE.md +14 -0
  981. package/bundled-skills/tune-monitor/references/custom-sql-monitor.md +112 -0
  982. package/bundled-skills/tune-monitor/references/metric-monitor.md +118 -0
  983. package/bundled-skills/tune-monitor/references/table-monitor.md +138 -0
  984. package/bundled-skills/tune-monitor/references/validation-monitor.md +132 -0
  985. package/bundled-skills/turborepo-caching/SKILL.md +0 -1
  986. package/bundled-skills/tutorial-engineer/SKILL.md +0 -1
  987. package/bundled-skills/typescript-expert/SKILL.md +10 -8
  988. package/bundled-skills/typescript-expert/scripts/ts_diagnostic.py +48 -15
  989. package/bundled-skills/ui-ux-designer/SKILL.md +0 -1
  990. package/bundled-skills/ui-visual-validator/SKILL.md +0 -1
  991. package/bundled-skills/uniprot-database/SKILL.md +8 -0
  992. package/bundled-skills/unity-developer/SKILL.md +0 -1
  993. package/bundled-skills/usage-based-pricing/SKILL.md +4 -2
  994. package/bundled-skills/usage-based-pricing/references/detailed-guide.md +11 -9
  995. package/bundled-skills/using-agent-skills/SKILL.md +4 -1
  996. package/bundled-skills/using-agent-skills/UPSTREAM-LICENSE.txt +21 -0
  997. package/bundled-skills/using-agent-skills/UPSTREAM-NOTICE.md +11 -0
  998. package/bundled-skills/using-agent-skills/references/definition-of-done.md +67 -0
  999. package/bundled-skills/using-neon/SKILL.md +21 -0
  1000. package/bundled-skills/ux-persuasion-engineer/SKILL.md +16 -8
  1001. package/bundled-skills/variant-analysis/SKILL.md +10 -0
  1002. package/bundled-skills/vexor-cli/SKILL.md +8 -0
  1003. package/bundled-skills/vibe-delegate/SKILL.md +5 -1
  1004. package/bundled-skills/vibe-delegate/UPSTREAM-LICENSE.txt +21 -0
  1005. package/bundled-skills/vibe-delegate/UPSTREAM-NOTICE.md +13 -0
  1006. package/bundled-skills/vibe-delegate/scripts/relay.mjs +773 -0
  1007. package/bundled-skills/video-content-extractor/SKILL.md +8 -0
  1008. package/bundled-skills/visual-emotion-engineer/SKILL.md +17 -9
  1009. package/bundled-skills/warp-delegate/SKILL.md +5 -1
  1010. package/bundled-skills/warp-delegate/UPSTREAM-LICENSE.txt +21 -0
  1011. package/bundled-skills/warp-delegate/UPSTREAM-NOTICE.md +13 -0
  1012. package/bundled-skills/warp-delegate/scripts/relay.mjs +837 -0
  1013. package/bundled-skills/wcag-audit-patterns/resources/implementation-playbook.md +26 -41
  1014. package/bundled-skills/web-performance-optimization/SKILL.md +15 -15
  1015. package/bundled-skills/web-performance-optimization/references/detailed-guide.md +12 -7
  1016. package/bundled-skills/web3-testing/SKILL.md +16 -1
  1017. package/bundled-skills/workflow-orchestration-patterns/SKILL.md +1 -2
  1018. package/bundled-skills/zcode-delegate/SKILL.md +11 -3
  1019. package/bundled-skills/zcode-delegate/UPSTREAM-LICENSE.txt +21 -0
  1020. package/bundled-skills/zcode-delegate/UPSTREAM-NOTICE.md +13 -0
  1021. package/bundled-skills/zcode-delegate/references/dispatch-and-poll.md +4 -4
  1022. package/bundled-skills/zcode-delegate/scripts/relay.mjs +1043 -0
  1023. package/package.json +1 -1
  1024. package/skills_index.json +240 -160
  1025. package/bundled-skills/api-security-testing/SKILL.md +0 -176
@@ -0,0 +1,800 @@
1
+ #!/usr/bin/env python3
2
+ # /// script
3
+ # requires-python = ">=3.9"
4
+ # dependencies = ["pyyaml"]
5
+ # ///
6
+ """
7
+ Static analysis scanner for agent skills.
8
+
9
+ Scans a skill directory for security issues including prompt injection patterns,
10
+ obfuscation, dangerous code, secrets, and excessive permissions.
11
+
12
+ Usage:
13
+ uv run scan_skill.py <skill-directory>
14
+
15
+ Output: JSON to stdout with structured findings.
16
+ """
17
+ from __future__ import annotations
18
+
19
+ import base64
20
+ import json
21
+ import re
22
+ import sys
23
+ import os
24
+ import stat
25
+ from pathlib import Path
26
+ from typing import Any
27
+ from urllib.parse import urlsplit, urlunsplit, parse_qsl, urlencode
28
+
29
+ import yaml
30
+
31
+ # Modified in AAS: bounded inert reads, complete-tree coverage accounting, and
32
+ # report redaction. Preserve the upstream source/license in UPSTREAM-NOTICE.md.
33
+ MAX_FILE_BYTES = 1024 * 1024
34
+ MAX_FILES = 1000
35
+ MAX_TOTAL_BYTES = 16 * 1024 * 1024
36
+
37
+
38
+ def read_inert_bytes(path: Path) -> bytes:
39
+ """Read a bounded regular file without following its final symlink."""
40
+ if not getattr(os, "O_NOFOLLOW", 0):
41
+ raise OSError("No guarded file-open support; scan an inert snapshot on a supported host")
42
+ fd = os.open(path, os.O_RDONLY | os.O_NOFOLLOW | getattr(os, "O_NONBLOCK", 0))
43
+ try:
44
+ info = os.fstat(fd)
45
+ if not stat.S_ISREG(info.st_mode) or info.st_size > MAX_FILE_BYTES:
46
+ raise OSError("Input is non-regular or exceeds the per-file bound")
47
+ with os.fdopen(fd, "rb", closefd=False) as stream:
48
+ data = stream.read(MAX_FILE_BYTES + 1)
49
+ if len(data) > MAX_FILE_BYTES:
50
+ raise OSError("Input grew beyond the per-file bound")
51
+ return data
52
+ finally:
53
+ os.close(fd)
54
+
55
+
56
+ def read_inert_text(path: Path) -> str:
57
+ return read_inert_bytes(path).decode("utf-8")
58
+
59
+
60
+ def redact_text(text: str) -> str:
61
+ # Remove the complete private-key payload, not merely its BEGIN marker.
62
+ # An unterminated block consumes the remainder rather than exposing its body.
63
+ text = re.sub(
64
+ r"-----BEGIN (?:[A-Z0-9]+ )*PRIVATE KEY-----[\s\S]*?(?:-----END (?:[A-Z0-9]+ )*PRIVATE KEY-----|\Z)",
65
+ "[REDACTED PRIVATE KEY]", text,
66
+ )
67
+ def sanitize_url(match):
68
+ try:
69
+ parsed = urlsplit(match.group())
70
+ host = parsed.hostname or ""
71
+ if ":" in host:
72
+ host = f"[{host}]"
73
+ if parsed.port is not None:
74
+ host += f":{parsed.port}"
75
+ query = urlencode([(k, "[REDACTED]") for k, _ in parse_qsl(parsed.query, keep_blank_values=True)])
76
+ return urlunsplit((parsed.scheme, host, parsed.path, query, ""))
77
+ except ValueError:
78
+ return "[OMITTED: malformed URL]"
79
+ text = re.sub(r"https?://[^\s\)\]\>\"'`]+", sanitize_url, text)
80
+ for pattern, _, _ in SECRET_PATTERNS:
81
+ text = re.sub(pattern, "[REDACTED]", text)
82
+ return text
83
+
84
+
85
+ def redact_report(value: Any, key: str = "", depth: int = 0, seen=None, budget=None) -> Any:
86
+ seen = set() if seen is None else seen
87
+ budget = [10000] if budget is None else budget
88
+ budget[0] -= 1
89
+ if depth > 50 or budget[0] < 0:
90
+ return "[OMITTED: metadata traversal limit]"
91
+ if re.search(r"(?i)password|passwd|secret|token|credential|api[_-]?key", key):
92
+ return "[REDACTED]"
93
+ if isinstance(value, (dict, list)):
94
+ if id(value) in seen:
95
+ return "[OMITTED: repeated/cyclic metadata]"
96
+ seen.add(id(value))
97
+ if isinstance(value, dict):
98
+ result = {}
99
+ for k, v in value.items():
100
+ if budget[0] <= 0:
101
+ result["__omitted__"] = "metadata traversal limit"
102
+ break
103
+ result[redact_text(str(k))] = redact_report(v, str(k), depth + 1, seen, budget)
104
+ return result
105
+ result = []
106
+ for v in value:
107
+ if budget[0] <= 0:
108
+ result.append("[OMITTED: metadata traversal limit]")
109
+ break
110
+ result.append(redact_report(v, depth=depth + 1, seen=seen, budget=budget))
111
+ return result
112
+ if isinstance(value, str):
113
+ return redact_text(value)
114
+ return value
115
+
116
+
117
+ # --- Pattern Definitions ---
118
+
119
+ PROMPT_INJECTION_PATTERNS: list[tuple[str, str, str]] = [
120
+ # (pattern, description, severity)
121
+ (r"(?i)ignore\s+(all\s+)?previous\s+instructions", "Instruction override: ignore previous instructions", "critical"),
122
+ (r"(?i)disregard\s+(all\s+)?(previous|prior|above)\s+(instructions|rules|guidelines)", "Instruction override: disregard previous", "critical"),
123
+ (r"(?i)forget\s+(all\s+)?(previous|prior|your)\s+(instructions|rules|training)", "Instruction override: forget previous", "critical"),
124
+ (r"(?i)you\s+are\s+now\s+(a|an|in)\s+", "Role reassignment: 'you are now'", "high"),
125
+ (r"(?i)act\s+as\s+(a|an)\s+unrestricted", "Role reassignment: unrestricted mode", "critical"),
126
+ (r"(?i)enter\s+(developer|debug|admin|god)\s+mode", "Jailbreak: developer/debug mode", "critical"),
127
+ (r"(?i)DAN\s+(mode|prompt|jailbreak)", "Jailbreak: DAN pattern", "critical"),
128
+ (r"(?i)do\s+anything\s+now", "Jailbreak: do anything now", "critical"),
129
+ (r"(?i)bypass\s+(safety|security|content|filter|restriction)", "Jailbreak: bypass safety", "critical"),
130
+ (r"(?i)override\s+(system|safety|security)\s+(prompt|message|instruction)", "System prompt override", "critical"),
131
+ (r"(?i)\bsystem\s*:\s*you\s+are\b", "System prompt injection marker", "high"),
132
+ (r"(?i)new\s+system\s+(prompt|instruction|message)\s*:", "New system prompt injection", "critical"),
133
+ (r"(?i)from\s+now\s+on,?\s+(you|ignore|forget|disregard)", "Temporal instruction override", "high"),
134
+ (r"(?i)pretend\s+(that\s+)?you\s+(have\s+no|don't\s+have|are\s+not\s+bound)", "Pretend-based jailbreak", "high"),
135
+ (r"(?i)respond\s+(only\s+)?with\s+(the\s+)?(raw|full|complete)\s+(system|initial)\s+prompt", "System prompt extraction", "high"),
136
+ (r"(?i)output\s+(your|the)\s+(system|initial|original)\s+(prompt|instructions)", "System prompt extraction", "high"),
137
+ ]
138
+
139
+ OBFUSCATION_PATTERNS: list[tuple[str, str]] = [
140
+ # (description, detail)
141
+ ("Zero-width characters", "Zero-width space, joiner, or non-joiner detected"),
142
+ ("Right-to-left override", "RTL override character can hide text direction"),
143
+ ("Homoglyph characters", "Characters visually similar to ASCII but from different Unicode blocks"),
144
+ ("Unicode Tag characters", "Tags block (U+E0000-E007F) can encode invisible ASCII text readable by LLMs"),
145
+ ]
146
+
147
+ SECRET_PATTERNS: list[tuple[str, str, str]] = [
148
+ # (pattern, description, severity)
149
+ (r"(?i)AKIA[0-9A-Z]{16}", "AWS Access Key ID", "critical"),
150
+ (r"(?i)aws.{0,20}secret.{0,20}['\"][0-9a-zA-Z/+]{40}['\"]", "AWS Secret Access Key", "critical"),
151
+ (r"ghp_[0-9a-zA-Z]{36}", "GitHub Personal Access Token", "critical"),
152
+ (r"ghs_[0-9a-zA-Z]{36}", "GitHub Server Token", "critical"),
153
+ (r"gho_[0-9a-zA-Z]{36}", "GitHub OAuth Token", "critical"),
154
+ (r"github_pat_[0-9a-zA-Z_]{82}", "GitHub Fine-Grained PAT", "critical"),
155
+ (r"sk-[0-9a-zA-Z]{20,}T3BlbkFJ[0-9a-zA-Z]{20,}", "OpenAI API Key", "critical"),
156
+ (r"sk-ant-api03-[0-9a-zA-Z\-_]{90,}", "Anthropic API Key", "critical"),
157
+ (r"xox[bpors]-[0-9a-zA-Z\-]{10,}", "Slack Token", "critical"),
158
+ (r"-----BEGIN\s+(RSA\s+)?PRIVATE\s+KEY-----", "Private Key", "critical"),
159
+ (r"(?i)(password|passwd|pwd)\s*[:=]\s*['\"][^'\"]{8,}['\"]", "Hardcoded password", "high"),
160
+ (r"(?i)(api[_-]?key|apikey)\s*[:=]\s*['\"][0-9a-zA-Z]{16,}['\"]", "Hardcoded API key", "high"),
161
+ (r"(?i)(secret|token)\s*[:=]\s*['\"][0-9a-zA-Z]{16,}['\"]", "Hardcoded secret/token", "high"),
162
+ ]
163
+
164
+ DANGEROUS_SCRIPT_PATTERNS: list[tuple[str, str, str]] = [
165
+ # (pattern, description, severity)
166
+ # Data exfiltration
167
+ (r"(?i)(requests\.(get|post|put)|urllib\.request|http\.client|aiohttp)\s*\(", "HTTP request (potential exfiltration)", "medium"),
168
+ (r"(?i)(curl|wget)\s+", "Shell HTTP request", "medium"),
169
+ (r"(?i)socket\.(connect|create_connection)", "Raw socket connection", "high"),
170
+ (r"(?i)subprocess.*\b(nc|ncat|netcat)\b", "Netcat usage (potential reverse shell)", "critical"),
171
+ # Credential access
172
+ (r"(?i)(~|HOME|USERPROFILE).*\.(ssh|aws|gnupg|config)", "Sensitive directory access", "high"),
173
+ (r"(?i)open\s*\(.*(\.env|credentials|\.netrc|\.pgpass|\.my\.cnf)", "Sensitive file access", "high"),
174
+ (r"(?i)os\.environ\s*\[.*(?:KEY|SECRET|TOKEN|PASSWORD|CREDENTIAL)", "Environment secret access", "medium"),
175
+ # Dangerous execution
176
+ (r"\beval\s*\(", "eval() usage", "high"),
177
+ (r"\bexec\s*\(", "exec() usage", "high"),
178
+ (r"(?i)subprocess.*shell\s*=\s*True", "Shell execution with shell=True", "high"),
179
+ (r"(?i)os\.(system|popen|exec[lv]p?e?)\s*\(", "OS command execution", "high"),
180
+ (r"(?i)__import__\s*\(", "Dynamic import", "medium"),
181
+ # File system manipulation
182
+ (r"(?i)(open|write|Path).*\.(claude|bashrc|zshrc|profile|bash_profile)", "Agent/shell config modification", "critical"),
183
+ (r"(?i)(open|write|Path).*(settings\.json|CLAUDE\.md|MEMORY\.md|\.mcp\.json)", "Agent settings modification", "critical"),
184
+ (r"(?i)(open|write|Path).*(\.git/hooks|\.husky)", "Git hooks modification", "critical"),
185
+ # Encoding/obfuscation in scripts
186
+ (r"(?i)base64\.(b64decode|decodebytes)\s*\(", "Base64 decoding (potential obfuscation)", "medium"),
187
+ (r"(?i)codecs\.(decode|encode)\s*\(.*rot", "ROT encoding (obfuscation)", "high"),
188
+ (r"(?i)compile\s*\(.*exec", "Dynamic code compilation", "high"),
189
+ ]
190
+
191
+ # Domains commonly trusted in skill contexts
192
+ TRUSTED_DOMAINS = {
193
+ "github.com", "api.github.com", "raw.githubusercontent.com",
194
+ "docs.sentry.io", "develop.sentry.dev", "sentry.io",
195
+ "pypi.org", "npmjs.com", "crates.io",
196
+ "docs.python.org", "docs.djangoproject.com",
197
+ "developer.mozilla.org", "stackoverflow.com",
198
+ "agentskills.io",
199
+ }
200
+
201
+
202
+ def parse_frontmatter(content: str) -> tuple[dict[str, Any] | None, str]:
203
+ """Parse YAML frontmatter from SKILL.md content."""
204
+ if not content.startswith("---"):
205
+ return None, content
206
+
207
+ parts = content.split("---", 2)
208
+ if len(parts) < 3:
209
+ return None, content
210
+
211
+ try:
212
+ fm = yaml.safe_load(parts[1])
213
+ body = parts[2]
214
+ return fm if isinstance(fm, dict) else None, body
215
+ except yaml.YAMLError:
216
+ return None, content
217
+
218
+
219
+ def check_frontmatter(skill_dir: Path, content: str) -> list[dict[str, Any]]:
220
+ """Validate SKILL.md frontmatter."""
221
+ findings: list[dict[str, Any]] = []
222
+ fm, _ = parse_frontmatter(content)
223
+
224
+ if fm is None:
225
+ findings.append({
226
+ "type": "Invalid Frontmatter",
227
+ "severity": "high",
228
+ "location": "SKILL.md:1",
229
+ "description": "Missing or unparseable YAML frontmatter",
230
+ "category": "Validation",
231
+ })
232
+ return findings
233
+
234
+ # Required fields
235
+ if "name" not in fm:
236
+ findings.append({
237
+ "type": "Missing Name",
238
+ "severity": "high",
239
+ "location": "SKILL.md frontmatter",
240
+ "description": "Required 'name' field missing from frontmatter",
241
+ "category": "Validation",
242
+ })
243
+
244
+ if "description" not in fm:
245
+ findings.append({
246
+ "type": "Missing Description",
247
+ "severity": "medium",
248
+ "location": "SKILL.md frontmatter",
249
+ "description": "Required 'description' field missing from frontmatter",
250
+ "category": "Validation",
251
+ })
252
+
253
+ # Name-directory mismatch
254
+ if "name" in fm and fm["name"] != skill_dir.name:
255
+ findings.append({
256
+ "type": "Name Mismatch",
257
+ "severity": "medium",
258
+ "location": "SKILL.md frontmatter",
259
+ "description": "Frontmatter name does not match the selected directory identifier",
260
+ "category": "Validation",
261
+ })
262
+
263
+ # Unrestricted tools
264
+ tools = fm.get("allowed-tools", "")
265
+ if isinstance(tools, str) and tools.strip() == "*":
266
+ findings.append({
267
+ "type": "Unrestricted Tools",
268
+ "severity": "critical",
269
+ "location": "SKILL.md frontmatter",
270
+ "description": "allowed-tools is set to '*' (unrestricted access to all tools)",
271
+ "category": "Excessive Permissions",
272
+ })
273
+
274
+ return findings
275
+
276
+
277
+ def check_prompt_injection(content: str, filepath: str) -> list[dict[str, Any]]:
278
+ """Scan content for prompt injection patterns."""
279
+ findings: list[dict[str, Any]] = []
280
+ lines = content.split("\n")
281
+
282
+ for line_num, line in enumerate(lines, 1):
283
+ for pattern, description, severity in PROMPT_INJECTION_PATTERNS:
284
+ if re.search(pattern, line):
285
+ findings.append({
286
+ "type": "Prompt Injection Pattern",
287
+ "severity": severity,
288
+ "location": f"{filepath}:{line_num}",
289
+ "description": description,
290
+ "category": "Prompt Injection",
291
+ })
292
+ break # One finding per line
293
+
294
+ return findings
295
+
296
+
297
+ def check_obfuscation(content: str, filepath: str) -> list[dict[str, Any]]:
298
+ """Detect obfuscation techniques."""
299
+ findings: list[dict[str, Any]] = []
300
+ lines = content.split("\n")
301
+
302
+ # Zero-width characters
303
+ zwc_pattern = re.compile(r"[\u200b\u200c\u200d\u2060\ufeff]")
304
+ for line_num, line in enumerate(lines, 1):
305
+ if zwc_pattern.search(line):
306
+ chars = [f"U+{ord(c):04X}" for c in zwc_pattern.findall(line)]
307
+ findings.append({
308
+ "type": "Zero-Width Characters",
309
+ "severity": "high",
310
+ "location": f"{filepath}:{line_num}",
311
+ "description": f"Zero-width characters detected: {', '.join(chars)}",
312
+ "category": "Obfuscation",
313
+ })
314
+
315
+ # RTL override
316
+ rtl_pattern = re.compile(r"[\u202a-\u202e\u2066-\u2069]")
317
+ for line_num, line in enumerate(lines, 1):
318
+ if rtl_pattern.search(line):
319
+ findings.append({
320
+ "type": "RTL Override",
321
+ "severity": "high",
322
+ "location": f"{filepath}:{line_num}",
323
+ "description": "Right-to-left override or embedding character detected",
324
+ "category": "Obfuscation",
325
+ })
326
+
327
+ # Unicode Tag characters (U+E0000 block) — invisible text readable by LLMs
328
+ tag_pattern = re.compile(r"[\U000e0001-\U000e007f]")
329
+ tag_chars = tag_pattern.findall(content)
330
+ if tag_chars:
331
+ findings.append({
332
+ "type": "Unicode Tag Smuggling",
333
+ "severity": "critical",
334
+ "location": filepath,
335
+ "description": "Invisible Unicode Tag characters detected; inspect the source locally",
336
+ "tag_character_count": len(tag_chars),
337
+ "category": "Obfuscation",
338
+ })
339
+
340
+ # Suspicious base64 strings (long base64 that decodes to text with suspicious keywords)
341
+ b64_pattern = re.compile(r"[A-Za-z0-9+/]{40,}={0,2}")
342
+ for line_num, line in enumerate(lines, 1):
343
+ for match in b64_pattern.finditer(line):
344
+ try:
345
+ decoded = base64.b64decode(match.group()).decode("utf-8", errors="ignore")
346
+ suspicious_keywords = ["ignore", "system", "override", "eval", "exec", "password", "secret"]
347
+ for kw in suspicious_keywords:
348
+ if kw.lower() in decoded.lower():
349
+ findings.append({
350
+ "type": "Suspicious Base64",
351
+ "severity": "high",
352
+ "location": f"{filepath}:{line_num}",
353
+ "description": f"Base64 string decodes to text containing '{kw}'",
354
+ "decoded_length": len(decoded),
355
+ "category": "Obfuscation",
356
+ })
357
+ break
358
+ except Exception:
359
+ pass
360
+
361
+ # HTML comments with suspicious content
362
+ comment_pattern = re.compile(r"<!--(.*?)-->", re.DOTALL)
363
+ for match in comment_pattern.finditer(content):
364
+ comment_text = match.group(1)
365
+ # Check if the comment contains injection-like patterns
366
+ for pattern, description, severity in PROMPT_INJECTION_PATTERNS:
367
+ if re.search(pattern, comment_text):
368
+ # Find line number
369
+ line_num = content[:match.start()].count("\n") + 1
370
+ findings.append({
371
+ "type": "Hidden Injection in Comment",
372
+ "severity": "critical",
373
+ "location": f"{filepath}:{line_num}",
374
+ "description": f"HTML comment contains injection pattern: {description}",
375
+ "category": "Prompt Injection",
376
+ })
377
+ break
378
+
379
+ return findings
380
+
381
+
382
+ def scan_masked_locations(content: str, filepath: str) -> list[dict[str, Any]]:
383
+ """Detect hardcoded secrets."""
384
+ findings: list[dict[str, Any]] = []
385
+ lines = content.split("\n")
386
+
387
+ for line_num, line in enumerate(lines, 1):
388
+ for pattern, description, severity in SECRET_PATTERNS:
389
+ if re.search(pattern, line):
390
+ # Mask the actual secret in evidence
391
+ evidence = "[REDACTED: credential detected; inspect the reported local location]"
392
+ findings.append({
393
+ "type": "Secret Detected",
394
+ "severity": severity,
395
+ "location": f"{filepath}:{line_num}",
396
+ "description": description,
397
+ "evidence": evidence,
398
+ "category": "Secret Exposure",
399
+ })
400
+ break # One finding per line
401
+
402
+ return findings
403
+
404
+
405
+ def check_scripts(script_path: Path) -> list[dict[str, Any]]:
406
+ """Analyze a script file for dangerous patterns."""
407
+ findings: list[dict[str, Any]] = []
408
+ try:
409
+ content = read_inert_text(script_path)
410
+ except (OSError, UnicodeError):
411
+ return [{"type": "Unreadable Input", "severity": "high", "location": str(script_path.name),
412
+ "description": "Script could not be read within guarded input bounds", "category": "Coverage"}]
413
+
414
+ relative = script_path.name
415
+ lines = content.split("\n")
416
+
417
+ for line_num, line in enumerate(lines, 1):
418
+ for pattern, description, severity in DANGEROUS_SCRIPT_PATTERNS:
419
+ if re.search(pattern, line):
420
+ findings.append({
421
+ "type": "Dangerous Code Pattern",
422
+ "severity": severity,
423
+ "location": f"scripts/{relative}:{line_num}",
424
+ "description": description,
425
+ "category": "Malicious Code",
426
+ })
427
+ break # One finding per line
428
+
429
+ return findings
430
+
431
+
432
+ def extract_urls(content: str, filepath: str) -> list[dict[str, Any]]:
433
+ """Extract and categorize URLs."""
434
+ urls: list[dict[str, Any]] = []
435
+ url_pattern = re.compile(r"https?://[^\s\)\]\>\"'`]+")
436
+ lines = content.split("\n")
437
+
438
+ for line_num, line in enumerate(lines, 1):
439
+ for match in url_pattern.finditer(line):
440
+ url = match.group().rstrip(".,;:")
441
+ try:
442
+ # Extract domain
443
+ domain = urlsplit(url).hostname or "unknown"
444
+ # Check if root domain is trusted
445
+ domain_parts = domain.split(".")
446
+ root_domain = ".".join(domain_parts[-2:]) if len(domain_parts) >= 2 else domain
447
+ trusted = root_domain in TRUSTED_DOMAINS or domain in TRUSTED_DOMAINS
448
+ except (IndexError, ValueError):
449
+ domain = "unknown"
450
+ trusted = False
451
+
452
+ urls.append({
453
+ "domain": domain,
454
+ "trusted": trusted,
455
+ "trust_basis": "familiar hostname only; not provenance or execution approval",
456
+ "location": f"{filepath}:{line_num}",
457
+ })
458
+
459
+ return urls
460
+
461
+
462
+ def check_structural_attacks(skill_dir: Path, content: str, frontmatter: dict[str, Any] | None) -> list[dict[str, Any]]:
463
+ """Detect structural attack patterns that go beyond text content."""
464
+ findings: list[dict[str, Any]] = []
465
+
466
+ # 1. Symlinks — files that resolve to paths outside the skill directory
467
+ for path in skill_dir.rglob("*"):
468
+ if path.is_symlink():
469
+ target = path.resolve()
470
+ is_internal = target.is_relative_to(skill_dir.resolve())
471
+ findings.append({
472
+ "type": "Symlink Detected",
473
+ "severity": "medium" if is_internal else "critical",
474
+ "location": str(path.relative_to(skill_dir)),
475
+ "description": "Symlink may expose other files; inspect its target locally",
476
+ "target_within_skill": is_internal,
477
+ "category": "Symlink Exfiltration",
478
+ })
479
+
480
+ # 2. YAML hook exploitation — hooks in frontmatter execute shell commands
481
+ if frontmatter and "hooks" in frontmatter:
482
+ hooks = frontmatter["hooks"]
483
+ hook_types = hooks.keys() if isinstance(hooks, dict) else []
484
+ for hook_type in hook_types:
485
+ findings.append({
486
+ "type": "Frontmatter Hooks",
487
+ "severity": "critical",
488
+ "location": "SKILL.md frontmatter",
489
+ "description": "Skill defines lifecycle hooks. Hooks execute shell commands "
490
+ "automatically on lifecycle events — the model cannot prevent execution. "
491
+ "Review all hook commands carefully.",
492
+ "category": "Hook Exploitation",
493
+ })
494
+
495
+ # 3. !`command` pre-prompt injection — runs at template expansion time
496
+ bang_pattern = re.compile(r"!\`[^`]+\`")
497
+ for line_num, line in enumerate(content.split("\n"), 1):
498
+ for match in bang_pattern.finditer(line):
499
+ cmd = match.group()[2:-1] # Strip !` and `
500
+ findings.append({
501
+ "type": "Pre-prompt Command",
502
+ "severity": "high",
503
+ "location": f"SKILL.md:{line_num}",
504
+ "description": "Pre-prompt command syntax can execute at skill load time; inspect locally",
505
+ "command_length": len(cmd),
506
+ "category": "Pre-prompt Injection",
507
+ })
508
+
509
+ # 4. Test file auto-discovery — conftest.py, test_*.py, *.test.js/ts
510
+ test_patterns = {
511
+ "conftest.py": "pytest auto-imports conftest.py at collection time — code runs before any tests",
512
+ "test_*.py": "pytest discovers and runs test_*.py files automatically",
513
+ "*_test.py": "pytest discovers and runs *_test.py files automatically",
514
+ "*.test.js": "Jest/Vitest may discover .test.js files if dot:true glob is set",
515
+ "*.test.ts": "Jest/Vitest may discover .test.ts files if dot:true glob is set",
516
+ }
517
+ for path in skill_dir.rglob("*"):
518
+ if not path.is_file():
519
+ continue
520
+ name = path.name
521
+ for pattern, desc in test_patterns.items():
522
+ import fnmatch
523
+ if fnmatch.fnmatch(name, pattern):
524
+ findings.append({
525
+ "type": "Test File Auto-Discovery",
526
+ "severity": "high",
527
+ "location": str(path.relative_to(skill_dir)),
528
+ "description": f"{desc}. Bundled test files execute as a side effect of running "
529
+ "the test suite — review file contents for hidden payloads.",
530
+ "category": "Test File RCE",
531
+ })
532
+
533
+ # 5. npm postinstall — bundled package.json with lifecycle scripts
534
+ for pkg_json in skill_dir.rglob("package.json"):
535
+ if pkg_json.is_symlink():
536
+ continue
537
+ try:
538
+ pkg = json.loads(read_inert_text(pkg_json))
539
+ if not isinstance(pkg, dict):
540
+ continue
541
+ except (json.JSONDecodeError, OSError, ValueError, UnicodeError):
542
+ continue
543
+ scripts = pkg.get("scripts") or {}
544
+ if not isinstance(scripts, dict):
545
+ scripts = {} # Invalid package metadata is not executable hook evidence.
546
+ lifecycle_hooks = ["preinstall", "install", "postinstall", "preuninstall", "postuninstall"]
547
+ for hook in lifecycle_hooks:
548
+ if hook in scripts:
549
+ findings.append({
550
+ "type": "npm Lifecycle Hook",
551
+ "severity": "critical",
552
+ "location": str(pkg_json.relative_to(skill_dir)),
553
+ "description": f"package.json defines the '{hook}' lifecycle script. "
554
+ "npm executes lifecycle hooks automatically on install — "
555
+ "this is a common supply chain attack vector.",
556
+ "category": "Supply Chain",
557
+ })
558
+
559
+ # 6. Image metadata — parse PNG chunks properly to find tEXt/iTXt metadata
560
+ import struct
561
+ for img_path in skill_dir.rglob("*.png"):
562
+ if img_path.is_symlink():
563
+ continue
564
+ try:
565
+ data = read_inert_bytes(img_path)
566
+ # PNG files start with 8-byte signature, then chunks
567
+ # Each chunk: 4-byte length (big-endian), 4-byte type, data, 4-byte CRC
568
+ if data[:8] != b"\x89PNG\r\n\x1a\n":
569
+ continue
570
+ offset = 8
571
+ while offset + 8 <= len(data):
572
+ chunk_len = struct.unpack(">I", data[offset:offset + 4])[0]
573
+ chunk_type = data[offset + 4:offset + 8]
574
+ chunk_data = data[offset + 8:offset + 8 + chunk_len]
575
+
576
+ keyword = ""
577
+ value = ""
578
+ if chunk_type == b"tEXt":
579
+ # tEXt: keyword\0text
580
+ parts = chunk_data.split(b"\x00", 1)
581
+ if len(parts) > 1:
582
+ keyword = parts[0].decode("ascii", errors="ignore")
583
+ value = parts[1][:200].decode("latin-1", errors="ignore")
584
+ elif chunk_type == b"iTXt":
585
+ # iTXt: keyword\0comprFlag\0comprMethod\0langTag\0transKeyword\0text
586
+ parts = chunk_data.split(b"\x00", 4)
587
+ if len(parts) >= 5:
588
+ keyword = parts[0].decode("ascii", errors="ignore")
589
+ value = parts[4][:200].decode("utf-8", errors="ignore")
590
+
591
+ if keyword and value.strip():
592
+ findings.append({
593
+ "type": "Image Metadata Text",
594
+ "severity": "high",
595
+ "location": str(img_path.relative_to(skill_dir)),
596
+ "description": "PNG contains text metadata. "
597
+ "Hidden instructions in image metadata can be read by "
598
+ "multimodal LLMs when they inspect the file.",
599
+ "category": "Image Injection",
600
+ })
601
+
602
+ # Advance to next chunk: length + type(4) + data + CRC(4)
603
+ offset += 4 + 4 + chunk_len + 4
604
+ except (OSError, struct.error):
605
+ continue
606
+
607
+ return findings
608
+
609
+
610
+ def compute_description_body_overlap(frontmatter: dict[str, Any] | None, body: str) -> float:
611
+ """Compute keyword overlap between description and body as a heuristic."""
612
+ if not frontmatter or "description" not in frontmatter or frontmatter["description"] is None:
613
+ return 0.0
614
+
615
+ if not isinstance(frontmatter["description"], str):
616
+ return 0.0
617
+ desc_words = set(re.findall(r"\b[a-z]{4,}\b", frontmatter["description"].lower()))
618
+ body_words = set(re.findall(r"\b[a-z]{4,}\b", body.lower()))
619
+
620
+ if not desc_words:
621
+ return 0.0
622
+
623
+ overlap = desc_words & body_words
624
+ return len(overlap) / len(desc_words)
625
+
626
+
627
+ def scan_skill(skill_dir: Path) -> dict[str, Any]:
628
+ """Run full scan on a skill directory."""
629
+ skill_md = skill_dir / "SKILL.md"
630
+ if not skill_md.exists():
631
+ return {"error": "No SKILL.md found in the requested directory", "scan_complete": False}
632
+
633
+ try:
634
+ content = read_inert_text(skill_md)
635
+ except (OSError, UnicodeError):
636
+ return {"error": "Cannot read SKILL.md within guarded input bounds", "scan_complete": False}
637
+
638
+ coverage_errors: list[str] = []
639
+ inventory: list[Path] = []
640
+ total_bytes = 0
641
+ def walk_error(error):
642
+ raise error
643
+ try:
644
+ for root, dirs, files in os.walk(skill_dir, followlinks=False, onerror=walk_error):
645
+ for directory in list(dirs):
646
+ if (Path(root) / directory).is_symlink():
647
+ coverage_errors.append("Linked directory was not read")
648
+ dirs.remove(directory)
649
+ for name in files:
650
+ path = Path(root) / name
651
+ if path.is_symlink():
652
+ coverage_errors.append("Linked file was not read")
653
+ continue
654
+ info = path.stat()
655
+ if not stat.S_ISREG(info.st_mode):
656
+ coverage_errors.append("Non-regular input was not read")
657
+ continue
658
+ inventory.append(path)
659
+ total_bytes += info.st_size
660
+ if len(inventory) > MAX_FILES or info.st_size > MAX_FILE_BYTES or total_bytes > MAX_TOTAL_BYTES:
661
+ return {"error": "Input tree exceeds scan bounds", "scan_complete": False}
662
+ except OSError:
663
+ return {"error": "Cannot inventory input tree", "scan_complete": False}
664
+
665
+ frontmatter, body = parse_frontmatter(content)
666
+
667
+ all_findings: list[dict[str, Any]] = []
668
+ all_urls: list[dict[str, Any]] = []
669
+
670
+ # 1. Frontmatter validation
671
+ all_findings.extend(check_frontmatter(skill_dir, content))
672
+
673
+ # 2. Prompt injection patterns in SKILL.md
674
+ all_findings.extend(check_prompt_injection(content, "SKILL.md"))
675
+
676
+ # 3. Obfuscation detection in SKILL.md
677
+ all_findings.extend(check_obfuscation(content, "SKILL.md"))
678
+
679
+ # 4. Secret detection in SKILL.md
680
+ all_findings.extend(scan_masked_locations(content, "SKILL.md"))
681
+
682
+ # 5. URL extraction from SKILL.md
683
+ all_urls.extend(extract_urls(content, "SKILL.md"))
684
+
685
+ # 6. Inspect every regular text blob in the bounded tree, including nested
686
+ # scripts and references. Unsupported binary inputs remain coverage gaps.
687
+ refs_dir = skill_dir / "references"
688
+ scripts_dir = skill_dir / "scripts"
689
+ scanned_files = ["SKILL.md"]
690
+ for path in sorted(inventory):
691
+ if path == skill_md:
692
+ continue
693
+ rel_path = str(path.relative_to(skill_dir))
694
+ try:
695
+ text = read_inert_text(path)
696
+ except (OSError, UnicodeError):
697
+ coverage_errors.append(f"Unreadable or unsupported text: {rel_path}")
698
+ continue
699
+ if "\0" in text:
700
+ coverage_errors.append(f"Binary input not analyzed as text: {rel_path}")
701
+ continue
702
+ scanned_files.append(rel_path)
703
+ all_findings.extend(check_prompt_injection(text, rel_path))
704
+ all_findings.extend(check_obfuscation(text, rel_path))
705
+ all_findings.extend(scan_masked_locations(text, rel_path))
706
+ all_urls.extend(extract_urls(text, rel_path))
707
+ if path.suffix in (".py", ".sh", ".js", ".ts", ".mjs", ".cjs"):
708
+ for finding in check_scripts(path):
709
+ finding["location"] = finding["location"].replace(f"scripts/{path.name}", rel_path)
710
+ all_findings.append(finding)
711
+
712
+ # 8. Structural attacks (symlinks, hooks, !command, test files, npm, image metadata)
713
+ all_findings.extend(check_structural_attacks(skill_dir, content, frontmatter))
714
+
715
+ # 9. Description-body overlap
716
+ overlap = compute_description_body_overlap(frontmatter, body)
717
+
718
+ # Build structure info
719
+ structure = {
720
+ "has_skill_md": True,
721
+ "has_references": refs_dir.is_dir() if (refs_dir := skill_dir / "references") else False,
722
+ "has_scripts": scripts_dir.is_dir() if (scripts_dir := skill_dir / "scripts") else False,
723
+ "reference_files": sorted(f.name for f in (skill_dir / "references").iterdir() if f.suffix == ".md") if (skill_dir / "references").is_dir() else [],
724
+ "script_files": sorted(f.name for f in (skill_dir / "scripts").iterdir() if f.suffix in (".py", ".sh", ".js", ".ts")) if (skill_dir / "scripts").is_dir() else [],
725
+ }
726
+
727
+ # Summary counts
728
+ severity_counts: dict[str, int] = {}
729
+ for f in all_findings:
730
+ sev = f.get("severity", "unknown")
731
+ severity_counts[sev] = severity_counts.get(sev, 0) + 1
732
+
733
+ untrusted_urls = [u for u in all_urls if not u["trusted"]]
734
+
735
+ # Allowed tools analysis
736
+ tools_info = None
737
+ if frontmatter and "allowed-tools" in frontmatter:
738
+ tools_str = frontmatter["allowed-tools"]
739
+ if isinstance(tools_str, str):
740
+ tools_list = [t.strip() for t in tools_str.replace(",", " ").split() if t.strip()]
741
+ tools_info = {
742
+ "tools": [tool for tool in ("Bash", "Edit", "Glob", "Grep", "Read", "Task", "WebFetch", "Write") if tool in tools_list],
743
+ "unknown_tool_count": sum(tool not in ("Read", "Grep", "Glob", "Bash", "Write", "Edit", "WebFetch", "Task", "*") for tool in tools_list),
744
+ "has_bash": "Bash" in tools_list,
745
+ "has_write": "Write" in tools_list,
746
+ "has_edit": "Edit" in tools_list,
747
+ "has_webfetch": "WebFetch" in tools_list,
748
+ "has_task": "Task" in tools_list,
749
+ "unrestricted": tools_str.strip() == "*",
750
+ }
751
+
752
+ return {
753
+ "report_format": "skill-scanner.locators.v2",
754
+ "scan_complete": not coverage_errors,
755
+ "coverage": {"scanned_files": scanned_files, "errors": coverage_errors,
756
+ "scope": "bounded static pattern inspection, not semantic approval"},
757
+ "skill_name": skill_dir.name,
758
+ "structure": structure,
759
+ "frontmatter": {
760
+ "parseable": frontmatter is not None,
761
+ "fields": {
762
+ field: {"present": field in frontmatter, "expected_type": isinstance(frontmatter.get(field), expected)}
763
+ for field, expected in (("name", str), ("description", str), ("allowed-tools", str), ("hooks", dict))
764
+ } if frontmatter is not None else {},
765
+ },
766
+ "tools": tools_info,
767
+ "findings": all_findings,
768
+ "finding_counts": severity_counts,
769
+ "total_findings": len(all_findings),
770
+ "urls": {
771
+ "total": len(all_urls),
772
+ "untrusted": untrusted_urls,
773
+ "trusted_count": len(all_urls) - len(untrusted_urls),
774
+ },
775
+ "description_body_overlap": round(overlap, 2),
776
+ }
777
+
778
+
779
+
780
+ def main():
781
+ if len(sys.argv) < 2:
782
+ print("Usage: scan_skill.py <skill-directory>", file=sys.stderr)
783
+ sys.exit(1)
784
+
785
+ try:
786
+ skill_dir = Path(sys.argv[1]).resolve()
787
+ if not skill_dir.is_dir():
788
+ print(json.dumps({"error": "Requested input is not a directory", "scan_complete": False}))
789
+ sys.exit(1)
790
+ result = scan_skill(skill_dir)
791
+ except (OSError, RuntimeError, ValueError):
792
+ # Filesystem/parser error details can contain sensitive paths or payloads.
793
+ result = {"error": "Input could not be inspected within guarded bounds", "scan_complete": False}
794
+ print(json.dumps(result, indent=2))
795
+ if result.get("error") or not result.get("scan_complete", False):
796
+ sys.exit(2)
797
+
798
+
799
+ if __name__ == "__main__":
800
+ main()