@elizaos/skills 2.0.0-alpha.3

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 (371) hide show
  1. package/README.md +126 -0
  2. package/package.json +53 -0
  3. package/skills/1password/SKILL.md +70 -0
  4. package/skills/1password/references/cli-examples.md +29 -0
  5. package/skills/1password/references/get-started.md +17 -0
  6. package/skills/apple-notes/SKILL.md +77 -0
  7. package/skills/apple-reminders/SKILL.md +96 -0
  8. package/skills/bear-notes/SKILL.md +107 -0
  9. package/skills/bird/SKILL.md +224 -0
  10. package/skills/blogwatcher/SKILL.md +69 -0
  11. package/skills/blucli/SKILL.md +47 -0
  12. package/skills/bluebubbles/SKILL.md +131 -0
  13. package/skills/camsnap/SKILL.md +45 -0
  14. package/skills/canvas/SKILL.md +203 -0
  15. package/skills/clawhub/SKILL.md +77 -0
  16. package/skills/coding-agent/SKILL.md +284 -0
  17. package/skills/discord/SKILL.md +578 -0
  18. package/skills/eightctl/SKILL.md +50 -0
  19. package/skills/food-order/SKILL.md +48 -0
  20. package/skills/gemini/SKILL.md +43 -0
  21. package/skills/gifgrep/SKILL.md +79 -0
  22. package/skills/github/SKILL.md +77 -0
  23. package/skills/gog/SKILL.md +116 -0
  24. package/skills/goplaces/SKILL.md +52 -0
  25. package/skills/healthcheck/SKILL.md +245 -0
  26. package/skills/himalaya/SKILL.md +257 -0
  27. package/skills/himalaya/references/configuration.md +184 -0
  28. package/skills/himalaya/references/message-composition.md +199 -0
  29. package/skills/imsg/SKILL.md +74 -0
  30. package/skills/local-places/SERVER_README.md +101 -0
  31. package/skills/local-places/SKILL.md +102 -0
  32. package/skills/local-places/pyproject.toml +21 -0
  33. package/skills/local-places/src/local_places/__init__.py +2 -0
  34. package/skills/local-places/src/local_places/google_places.py +314 -0
  35. package/skills/local-places/src/local_places/main.py +65 -0
  36. package/skills/local-places/src/local_places/schemas.py +107 -0
  37. package/skills/mcporter/SKILL.md +61 -0
  38. package/skills/model-usage/SKILL.md +69 -0
  39. package/skills/model-usage/references/codexbar-cli.md +33 -0
  40. package/skills/model-usage/scripts/model_usage.py +310 -0
  41. package/skills/nano-banana-pro/SKILL.md +58 -0
  42. package/skills/nano-banana-pro/scripts/generate_image.py +184 -0
  43. package/skills/nano-pdf/SKILL.md +38 -0
  44. package/skills/notion/SKILL.md +172 -0
  45. package/skills/obsidian/SKILL.md +81 -0
  46. package/skills/openai-image-gen/SKILL.md +89 -0
  47. package/skills/openai-image-gen/scripts/gen.py +240 -0
  48. package/skills/openai-whisper/SKILL.md +38 -0
  49. package/skills/openai-whisper-api/SKILL.md +52 -0
  50. package/skills/openai-whisper-api/scripts/transcribe.sh +85 -0
  51. package/skills/openhue/SKILL.md +51 -0
  52. package/skills/oracle/SKILL.md +125 -0
  53. package/skills/ordercli/SKILL.md +78 -0
  54. package/skills/peekaboo/SKILL.md +190 -0
  55. package/skills/sag/SKILL.md +87 -0
  56. package/skills/security-ask-questions-if-underspecified/.claude-plugin/plugin.json +10 -0
  57. package/skills/security-ask-questions-if-underspecified/README.md +24 -0
  58. package/skills/security-ask-questions-if-underspecified/skills/ask-questions-if-underspecified/SKILL.md +85 -0
  59. package/skills/security-audit-context-building/.claude-plugin/plugin.json +10 -0
  60. package/skills/security-audit-context-building/README.md +58 -0
  61. package/skills/security-audit-context-building/commands/audit-context.md +21 -0
  62. package/skills/security-audit-context-building/skills/audit-context-building/SKILL.md +297 -0
  63. package/skills/security-audit-context-building/skills/audit-context-building/resources/COMPLETENESS_CHECKLIST.md +47 -0
  64. package/skills/security-audit-context-building/skills/audit-context-building/resources/FUNCTION_MICRO_ANALYSIS_EXAMPLE.md +355 -0
  65. package/skills/security-audit-context-building/skills/audit-context-building/resources/OUTPUT_REQUIREMENTS.md +71 -0
  66. package/skills/security-building-secure-contracts/.claude-plugin/plugin.json +10 -0
  67. package/skills/security-building-secure-contracts/README.md +241 -0
  68. package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/SKILL.md +284 -0
  69. package/skills/security-building-secure-contracts/skills/algorand-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +405 -0
  70. package/skills/security-building-secure-contracts/skills/audit-prep-assistant/SKILL.md +409 -0
  71. package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/SKILL.md +329 -0
  72. package/skills/security-building-secure-contracts/skills/cairo-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +722 -0
  73. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/SKILL.md +218 -0
  74. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/ASSESSMENT_CRITERIA.md +355 -0
  75. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/EXAMPLE_REPORT.md +248 -0
  76. package/skills/security-building-secure-contracts/skills/code-maturity-assessor/resources/REPORT_FORMAT.md +33 -0
  77. package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/SKILL.md +334 -0
  78. package/skills/security-building-secure-contracts/skills/cosmos-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +740 -0
  79. package/skills/security-building-secure-contracts/skills/guidelines-advisor/SKILL.md +252 -0
  80. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/ASSESSMENT_AREAS.md +329 -0
  81. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/DELIVERABLES.md +118 -0
  82. package/skills/security-building-secure-contracts/skills/guidelines-advisor/resources/EXAMPLE_REPORT.md +298 -0
  83. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/SKILL.md +161 -0
  84. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/EXAMPLE_REPORT.md +279 -0
  85. package/skills/security-building-secure-contracts/skills/secure-workflow-guide/resources/WORKFLOW_STEPS.md +132 -0
  86. package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/SKILL.md +389 -0
  87. package/skills/security-building-secure-contracts/skills/solana-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +669 -0
  88. package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/SKILL.md +298 -0
  89. package/skills/security-building-secure-contracts/skills/substrate-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +791 -0
  90. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/SKILL.md +362 -0
  91. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/ASSESSMENT_CATEGORIES.md +571 -0
  92. package/skills/security-building-secure-contracts/skills/token-integration-analyzer/resources/REPORT_TEMPLATES.md +141 -0
  93. package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/SKILL.md +388 -0
  94. package/skills/security-building-secure-contracts/skills/ton-vulnerability-scanner/resources/VULNERABILITY_PATTERNS.md +595 -0
  95. package/skills/security-burpsuite-project-parser/.claude-plugin/plugin.json +10 -0
  96. package/skills/security-burpsuite-project-parser/README.md +103 -0
  97. package/skills/security-burpsuite-project-parser/commands/burp-search.md +18 -0
  98. package/skills/security-burpsuite-project-parser/skills/SKILL.md +358 -0
  99. package/skills/security-burpsuite-project-parser/skills/scripts/burp-search.sh +99 -0
  100. package/skills/security-claude-in-chrome-troubleshooting/.claude-plugin/plugin.json +8 -0
  101. package/skills/security-claude-in-chrome-troubleshooting/README.md +31 -0
  102. package/skills/security-claude-in-chrome-troubleshooting/skills/claude-in-chrome-troubleshooting/SKILL.md +251 -0
  103. package/skills/security-constant-time-analysis/.claude-plugin/plugin.json +9 -0
  104. package/skills/security-constant-time-analysis/README.md +381 -0
  105. package/skills/security-constant-time-analysis/commands/ct-check.md +20 -0
  106. package/skills/security-constant-time-analysis/ct_analyzer/__init__.py +49 -0
  107. package/skills/security-constant-time-analysis/ct_analyzer/analyzer.py +1284 -0
  108. package/skills/security-constant-time-analysis/ct_analyzer/script_analyzers.py +3081 -0
  109. package/skills/security-constant-time-analysis/ct_analyzer/tests/__init__.py +1 -0
  110. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_analyzer.py +1397 -0
  111. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/bn_excerpt.js +205 -0
  112. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_constant_time.c +181 -0
  113. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.c +74 -0
  114. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.go +78 -0
  115. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/decompose_vulnerable.rs +92 -0
  116. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.cs +174 -0
  117. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.java +161 -0
  118. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.kt +181 -0
  119. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.php +140 -0
  120. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.py +252 -0
  121. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.rb +188 -0
  122. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.swift +199 -0
  123. package/skills/security-constant-time-analysis/ct_analyzer/tests/test_samples/vulnerable.ts +154 -0
  124. package/skills/security-constant-time-analysis/pyproject.toml +52 -0
  125. package/skills/security-constant-time-analysis/skills/constant-time-analysis/README.md +90 -0
  126. package/skills/security-constant-time-analysis/skills/constant-time-analysis/SKILL.md +219 -0
  127. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/compiled.md +129 -0
  128. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/javascript.md +136 -0
  129. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/kotlin.md +252 -0
  130. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/php.md +172 -0
  131. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/python.md +179 -0
  132. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/ruby.md +198 -0
  133. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/swift.md +288 -0
  134. package/skills/security-constant-time-analysis/skills/constant-time-analysis/references/vm-compiled.md +354 -0
  135. package/skills/security-constant-time-analysis/uv.lock +8 -0
  136. package/skills/security-culture-index/.claude-plugin/plugin.json +8 -0
  137. package/skills/security-culture-index/README.md +79 -0
  138. package/skills/security-culture-index/skills/interpreting-culture-index/SKILL.md +293 -0
  139. package/skills/security-culture-index/skills/interpreting-culture-index/references/anti-patterns.md +255 -0
  140. package/skills/security-culture-index/skills/interpreting-culture-index/references/conversation-starters.md +408 -0
  141. package/skills/security-culture-index/skills/interpreting-culture-index/references/interview-trait-signals.md +253 -0
  142. package/skills/security-culture-index/skills/interpreting-culture-index/references/motivators.md +158 -0
  143. package/skills/security-culture-index/skills/interpreting-culture-index/references/patterns-archetypes.md +147 -0
  144. package/skills/security-culture-index/skills/interpreting-culture-index/references/primary-traits.md +307 -0
  145. package/skills/security-culture-index/skills/interpreting-culture-index/references/secondary-traits.md +228 -0
  146. package/skills/security-culture-index/skills/interpreting-culture-index/references/team-composition.md +148 -0
  147. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/check_deps.py +108 -0
  148. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/__init__.py +20 -0
  149. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/constants.py +122 -0
  150. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/extract.py +187 -0
  151. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/models.py +16 -0
  152. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/culture_index/opencv_extractor.py +520 -0
  153. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/extract_pdf.py +237 -0
  154. package/skills/security-culture-index/skills/interpreting-culture-index/scripts/pyproject.toml +18 -0
  155. package/skills/security-culture-index/skills/interpreting-culture-index/templates/burnout-report.md +113 -0
  156. package/skills/security-culture-index/skills/interpreting-culture-index/templates/comparison-report.md +103 -0
  157. package/skills/security-culture-index/skills/interpreting-culture-index/templates/hiring-profile.md +127 -0
  158. package/skills/security-culture-index/skills/interpreting-culture-index/templates/individual-report.md +85 -0
  159. package/skills/security-culture-index/skills/interpreting-culture-index/templates/predicted-profile.md +165 -0
  160. package/skills/security-culture-index/skills/interpreting-culture-index/templates/team-report.md +109 -0
  161. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/analyze-team.md +188 -0
  162. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/coach-manager.md +267 -0
  163. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/compare-profiles.md +188 -0
  164. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/define-hiring-profile.md +220 -0
  165. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/detect-burnout.md +206 -0
  166. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/extract-from-pdf.md +121 -0
  167. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/interpret-individual.md +183 -0
  168. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/interview-debrief.md +234 -0
  169. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/mediate-conflict.md +306 -0
  170. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/plan-onboarding.md +322 -0
  171. package/skills/security-culture-index/skills/interpreting-culture-index/workflows/predict-from-interview.md +250 -0
  172. package/skills/security-differential-review/.claude-plugin/plugin.json +10 -0
  173. package/skills/security-differential-review/README.md +109 -0
  174. package/skills/security-differential-review/commands/diff-review.md +21 -0
  175. package/skills/security-differential-review/skills/differential-review/SKILL.md +220 -0
  176. package/skills/security-differential-review/skills/differential-review/adversarial.md +203 -0
  177. package/skills/security-differential-review/skills/differential-review/methodology.md +234 -0
  178. package/skills/security-differential-review/skills/differential-review/patterns.md +300 -0
  179. package/skills/security-differential-review/skills/differential-review/reporting.md +369 -0
  180. package/skills/security-dwarf-expert/.claude-plugin/plugin.json +10 -0
  181. package/skills/security-dwarf-expert/README.md +38 -0
  182. package/skills/security-dwarf-expert/skills/dwarf-expert/SKILL.md +93 -0
  183. package/skills/security-dwarf-expert/skills/dwarf-expert/reference/coding.md +31 -0
  184. package/skills/security-dwarf-expert/skills/dwarf-expert/reference/dwarfdump.md +50 -0
  185. package/skills/security-dwarf-expert/skills/dwarf-expert/reference/readelf.md +8 -0
  186. package/skills/security-entry-point-analyzer/.claude-plugin/plugin.json +10 -0
  187. package/skills/security-entry-point-analyzer/README.md +74 -0
  188. package/skills/security-entry-point-analyzer/commands/entry-points.md +18 -0
  189. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/SKILL.md +251 -0
  190. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/cosmwasm.md +182 -0
  191. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-aptos.md +107 -0
  192. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/move-sui.md +87 -0
  193. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solana.md +155 -0
  194. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/solidity.md +135 -0
  195. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/ton.md +185 -0
  196. package/skills/security-entry-point-analyzer/skills/entry-point-analyzer/references/vyper.md +141 -0
  197. package/skills/security-firebase-apk-scanner/.claude-plugin/plugin.json +10 -0
  198. package/skills/security-firebase-apk-scanner/README.md +85 -0
  199. package/skills/security-firebase-apk-scanner/commands/scan-apk.md +18 -0
  200. package/skills/security-firebase-apk-scanner/scanner.sh +1408 -0
  201. package/skills/security-firebase-apk-scanner/skills/firebase-apk-scanner/SKILL.md +197 -0
  202. package/skills/security-firebase-apk-scanner/skills/firebase-apk-scanner/references/vulnerabilities.md +803 -0
  203. package/skills/security-fix-review/.claude-plugin/plugin.json +13 -0
  204. package/skills/security-fix-review/README.md +118 -0
  205. package/skills/security-fix-review/commands/fix-review.md +24 -0
  206. package/skills/security-fix-review/skills/fix-review/SKILL.md +264 -0
  207. package/skills/security-fix-review/skills/fix-review/references/bug-detection.md +408 -0
  208. package/skills/security-fix-review/skills/fix-review/references/finding-matching.md +298 -0
  209. package/skills/security-fix-review/skills/fix-review/references/report-parsing.md +398 -0
  210. package/skills/security-insecure-defaults/.claude-plugin/plugin.json +10 -0
  211. package/skills/security-insecure-defaults/README.md +45 -0
  212. package/skills/security-insecure-defaults/skills/insecure-defaults/SKILL.md +117 -0
  213. package/skills/security-insecure-defaults/skills/insecure-defaults/references/examples.md +409 -0
  214. package/skills/security-modern-python/.claude-plugin/plugin.json +10 -0
  215. package/skills/security-modern-python/README.md +58 -0
  216. package/skills/security-modern-python/hooks/hooks.json +16 -0
  217. package/skills/security-modern-python/hooks/intercept-legacy-python.bats +388 -0
  218. package/skills/security-modern-python/hooks/intercept-legacy-python.sh +109 -0
  219. package/skills/security-modern-python/hooks/test_helper.bash +75 -0
  220. package/skills/security-modern-python/skills/modern-python/SKILL.md +333 -0
  221. package/skills/security-modern-python/skills/modern-python/references/dependabot.md +43 -0
  222. package/skills/security-modern-python/skills/modern-python/references/migration-checklist.md +141 -0
  223. package/skills/security-modern-python/skills/modern-python/references/pep723-scripts.md +259 -0
  224. package/skills/security-modern-python/skills/modern-python/references/prek.md +211 -0
  225. package/skills/security-modern-python/skills/modern-python/references/pyproject.md +254 -0
  226. package/skills/security-modern-python/skills/modern-python/references/ruff-config.md +240 -0
  227. package/skills/security-modern-python/skills/modern-python/references/security-setup.md +255 -0
  228. package/skills/security-modern-python/skills/modern-python/references/testing.md +284 -0
  229. package/skills/security-modern-python/skills/modern-python/references/uv-commands.md +200 -0
  230. package/skills/security-modern-python/skills/modern-python/templates/dependabot.yml +36 -0
  231. package/skills/security-modern-python/skills/modern-python/templates/pre-commit-config.yaml +66 -0
  232. package/skills/security-property-based-testing/.claude-plugin/plugin.json +9 -0
  233. package/skills/security-property-based-testing/README.md +47 -0
  234. package/skills/security-property-based-testing/skills/property-based-testing/README.md +88 -0
  235. package/skills/security-property-based-testing/skills/property-based-testing/SKILL.md +109 -0
  236. package/skills/security-property-based-testing/skills/property-based-testing/references/design.md +191 -0
  237. package/skills/security-property-based-testing/skills/property-based-testing/references/generating.md +200 -0
  238. package/skills/security-property-based-testing/skills/property-based-testing/references/libraries.md +130 -0
  239. package/skills/security-property-based-testing/skills/property-based-testing/references/refactoring.md +181 -0
  240. package/skills/security-property-based-testing/skills/property-based-testing/references/reviewing.md +209 -0
  241. package/skills/security-property-based-testing/skills/property-based-testing/references/strategies.md +124 -0
  242. package/skills/semgrep-rule-creator/.claude-plugin/plugin.json +8 -0
  243. package/skills/semgrep-rule-creator/README.md +43 -0
  244. package/skills/semgrep-rule-creator/commands/semgrep-rule.md +26 -0
  245. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/SKILL.md +168 -0
  246. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/quick-reference.md +203 -0
  247. package/skills/semgrep-rule-creator/skills/semgrep-rule-creator/references/workflow.md +240 -0
  248. package/skills/semgrep-rule-variant-creator/.claude-plugin/plugin.json +9 -0
  249. package/skills/semgrep-rule-variant-creator/README.md +86 -0
  250. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/SKILL.md +205 -0
  251. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/applicability-analysis.md +250 -0
  252. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/language-syntax-guide.md +324 -0
  253. package/skills/semgrep-rule-variant-creator/skills/semgrep-rule-variant-creator/references/workflow.md +518 -0
  254. package/skills/session-logs/SKILL.md +115 -0
  255. package/skills/sharp-edges/.claude-plugin/plugin.json +10 -0
  256. package/skills/sharp-edges/README.md +48 -0
  257. package/skills/sharp-edges/skills/sharp-edges/SKILL.md +292 -0
  258. package/skills/sharp-edges/skills/sharp-edges/references/auth-patterns.md +252 -0
  259. package/skills/sharp-edges/skills/sharp-edges/references/case-studies.md +274 -0
  260. package/skills/sharp-edges/skills/sharp-edges/references/config-patterns.md +333 -0
  261. package/skills/sharp-edges/skills/sharp-edges/references/crypto-apis.md +190 -0
  262. package/skills/sharp-edges/skills/sharp-edges/references/lang-c.md +205 -0
  263. package/skills/sharp-edges/skills/sharp-edges/references/lang-csharp.md +285 -0
  264. package/skills/sharp-edges/skills/sharp-edges/references/lang-go.md +270 -0
  265. package/skills/sharp-edges/skills/sharp-edges/references/lang-java.md +263 -0
  266. package/skills/sharp-edges/skills/sharp-edges/references/lang-javascript.md +269 -0
  267. package/skills/sharp-edges/skills/sharp-edges/references/lang-kotlin.md +265 -0
  268. package/skills/sharp-edges/skills/sharp-edges/references/lang-php.md +245 -0
  269. package/skills/sharp-edges/skills/sharp-edges/references/lang-python.md +274 -0
  270. package/skills/sharp-edges/skills/sharp-edges/references/lang-ruby.md +273 -0
  271. package/skills/sharp-edges/skills/sharp-edges/references/lang-rust.md +272 -0
  272. package/skills/sharp-edges/skills/sharp-edges/references/lang-swift.md +287 -0
  273. package/skills/sharp-edges/skills/sharp-edges/references/language-specific.md +588 -0
  274. package/skills/sherpa-onnx-tts/SKILL.md +103 -0
  275. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +178 -0
  276. package/skills/skill-creator/SKILL.md +370 -0
  277. package/skills/skill-creator/license.txt +202 -0
  278. package/skills/skill-creator/scripts/init_skill.py +378 -0
  279. package/skills/skill-creator/scripts/package_skill.py +111 -0
  280. package/skills/skill-creator/scripts/quick_validate.py +101 -0
  281. package/skills/slack/SKILL.md +144 -0
  282. package/skills/songsee/SKILL.md +49 -0
  283. package/skills/sonoscli/SKILL.md +46 -0
  284. package/skills/spec-to-code-compliance/.claude-plugin/plugin.json +10 -0
  285. package/skills/spec-to-code-compliance/README.md +67 -0
  286. package/skills/spec-to-code-compliance/commands/spec-compliance.md +22 -0
  287. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/SKILL.md +349 -0
  288. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/COMPLETENESS_CHECKLIST.md +69 -0
  289. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/IR_EXAMPLES.md +417 -0
  290. package/skills/spec-to-code-compliance/skills/spec-to-code-compliance/resources/OUTPUT_REQUIREMENTS.md +105 -0
  291. package/skills/spotify-player/SKILL.md +64 -0
  292. package/skills/static-analysis/.claude-plugin/plugin.json +8 -0
  293. package/skills/static-analysis/README.md +59 -0
  294. package/skills/static-analysis/skills/codeql/SKILL.md +315 -0
  295. package/skills/static-analysis/skills/sarif-parsing/SKILL.md +479 -0
  296. package/skills/static-analysis/skills/sarif-parsing/resources/jq-queries.md +162 -0
  297. package/skills/static-analysis/skills/sarif-parsing/resources/sarif_helpers.py +331 -0
  298. package/skills/static-analysis/skills/semgrep/SKILL.md +337 -0
  299. package/skills/summarize/SKILL.md +87 -0
  300. package/skills/testing-handbook-skills/.claude-plugin/plugin.json +8 -0
  301. package/skills/testing-handbook-skills/README.md +241 -0
  302. package/skills/testing-handbook-skills/scripts/pyproject.toml +8 -0
  303. package/skills/testing-handbook-skills/scripts/validate-skills.py +657 -0
  304. package/skills/testing-handbook-skills/skills/address-sanitizer/SKILL.md +341 -0
  305. package/skills/testing-handbook-skills/skills/aflpp/SKILL.md +640 -0
  306. package/skills/testing-handbook-skills/skills/atheris/SKILL.md +515 -0
  307. package/skills/testing-handbook-skills/skills/cargo-fuzz/SKILL.md +454 -0
  308. package/skills/testing-handbook-skills/skills/codeql/SKILL.md +549 -0
  309. package/skills/testing-handbook-skills/skills/constant-time-testing/SKILL.md +507 -0
  310. package/skills/testing-handbook-skills/skills/coverage-analysis/SKILL.md +607 -0
  311. package/skills/testing-handbook-skills/skills/fuzzing-dictionary/SKILL.md +297 -0
  312. package/skills/testing-handbook-skills/skills/fuzzing-obstacles/SKILL.md +426 -0
  313. package/skills/testing-handbook-skills/skills/harness-writing/SKILL.md +614 -0
  314. package/skills/testing-handbook-skills/skills/libafl/SKILL.md +625 -0
  315. package/skills/testing-handbook-skills/skills/libfuzzer/SKILL.md +795 -0
  316. package/skills/testing-handbook-skills/skills/ossfuzz/SKILL.md +426 -0
  317. package/skills/testing-handbook-skills/skills/ruzzy/SKILL.md +443 -0
  318. package/skills/testing-handbook-skills/skills/semgrep/SKILL.md +601 -0
  319. package/skills/testing-handbook-skills/skills/testing-handbook-generator/SKILL.md +372 -0
  320. package/skills/testing-handbook-skills/skills/testing-handbook-generator/agent-prompt.md +280 -0
  321. package/skills/testing-handbook-skills/skills/testing-handbook-generator/discovery.md +452 -0
  322. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/domain-skill.md +504 -0
  323. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/fuzzer-skill.md +454 -0
  324. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/technique-skill.md +527 -0
  325. package/skills/testing-handbook-skills/skills/testing-handbook-generator/templates/tool-skill.md +366 -0
  326. package/skills/testing-handbook-skills/skills/testing-handbook-generator/testing.md +482 -0
  327. package/skills/testing-handbook-skills/skills/wycheproof/SKILL.md +533 -0
  328. package/skills/things-mac/SKILL.md +86 -0
  329. package/skills/tmux/SKILL.md +135 -0
  330. package/skills/tmux/scripts/find-sessions.sh +112 -0
  331. package/skills/tmux/scripts/wait-for-text.sh +83 -0
  332. package/skills/trello/SKILL.md +95 -0
  333. package/skills/variant-analysis/.claude-plugin/plugin.json +8 -0
  334. package/skills/variant-analysis/README.md +41 -0
  335. package/skills/variant-analysis/commands/variants.md +23 -0
  336. package/skills/variant-analysis/skills/variant-analysis/METHODOLOGY.md +327 -0
  337. package/skills/variant-analysis/skills/variant-analysis/SKILL.md +142 -0
  338. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/cpp.ql +119 -0
  339. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/go.ql +69 -0
  340. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/java.ql +71 -0
  341. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/javascript.ql +63 -0
  342. package/skills/variant-analysis/skills/variant-analysis/resources/codeql/python.ql +80 -0
  343. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/cpp.yaml +98 -0
  344. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/go.yaml +63 -0
  345. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/java.yaml +61 -0
  346. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/javascript.yaml +60 -0
  347. package/skills/variant-analysis/skills/variant-analysis/resources/semgrep/python.yaml +72 -0
  348. package/skills/variant-analysis/skills/variant-analysis/resources/variant-report-template.md +75 -0
  349. package/skills/video-frames/SKILL.md +46 -0
  350. package/skills/video-frames/scripts/frame.sh +81 -0
  351. package/skills/voice-call/SKILL.md +45 -0
  352. package/skills/wacli/SKILL.md +72 -0
  353. package/skills/weather/SKILL.md +54 -0
  354. package/skills/yara-authoring/.claude-plugin/plugin.json +9 -0
  355. package/skills/yara-authoring/README.md +131 -0
  356. package/skills/yara-authoring/skills/yara-rule-authoring/SKILL.md +645 -0
  357. package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_Mac_ProtonRAT_Jan25.yar +99 -0
  358. package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_NPM_SupplyChain_Jan25.yar +170 -0
  359. package/skills/yara-authoring/skills/yara-rule-authoring/examples/MAL_Win_Remcos_Jan25.yar +103 -0
  360. package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_CRX_SuspiciousPermissions.yar +134 -0
  361. package/skills/yara-authoring/skills/yara-rule-authoring/examples/SUSP_JS_Obfuscation_Jan25.yar +185 -0
  362. package/skills/yara-authoring/skills/yara-rule-authoring/references/crx-module.md +214 -0
  363. package/skills/yara-authoring/skills/yara-rule-authoring/references/dex-module.md +383 -0
  364. package/skills/yara-authoring/skills/yara-rule-authoring/references/performance.md +333 -0
  365. package/skills/yara-authoring/skills/yara-rule-authoring/references/strings.md +433 -0
  366. package/skills/yara-authoring/skills/yara-rule-authoring/references/style-guide.md +257 -0
  367. package/skills/yara-authoring/skills/yara-rule-authoring/references/testing.md +399 -0
  368. package/skills/yara-authoring/skills/yara-rule-authoring/scripts/atom_analyzer.py +526 -0
  369. package/skills/yara-authoring/skills/yara-rule-authoring/scripts/pyproject.toml +25 -0
  370. package/skills/yara-authoring/skills/yara-rule-authoring/scripts/yara_lint.py +631 -0
  371. package/skills/yara-authoring/skills/yara-rule-authoring/workflows/rule-development.md +493 -0
@@ -0,0 +1,452 @@
1
+ # Discovery Workflow
2
+
3
+ Methodology for analyzing the Testing Handbook and identifying skill candidates.
4
+
5
+ **Quick Navigation:**
6
+ - [Phase 0: Locate Handbook](#phase-0-locate-handbook)
7
+ - [Phase 1: Handbook Analysis](#phase-1-handbook-analysis)
8
+ - [Phase 2: Plan Generation](#phase-2-plan-generation)
9
+ - [Phase 3: Prepare Generation Context](#phase-3-prepare-generation-context)
10
+
11
+ ## Progress Tracking
12
+
13
+ Use TodoWrite throughout discovery to track progress and give visibility to the user:
14
+
15
+ ```
16
+ Discovery phase todos:
17
+ - [ ] Locate handbook repository
18
+ - [ ] Scan /fuzzing/ sections
19
+ - [ ] Scan /static-analysis/ sections
20
+ - [ ] Scan /crypto/ sections
21
+ - [ ] Scan /web/ sections
22
+ - [ ] Build candidate list with types
23
+ - [ ] Resolve conflicts and edge cases
24
+ - [ ] Present plan to user
25
+ - [ ] Await user approval
26
+ ```
27
+
28
+ Mark each todo as `in_progress` when starting and `completed` when done. This helps users understand where you are in the process.
29
+
30
+ ## Phase 0: Locate Handbook
31
+
32
+ Before analysis, locate or obtain the Testing Handbook repository.
33
+
34
+ ### Step 1: Check Common Locations
35
+
36
+ ```bash
37
+ # Check common locations (simple version)
38
+ for dir in ./testing-handbook ../testing-handbook ~/testing-handbook; do
39
+ [ -d "$dir/content/docs" ] && handbook_path="$dir" && echo "✓ Found: $dir" && break
40
+ done
41
+ [ -z "$handbook_path" ] && echo "Handbook not found in common locations"
42
+ ```
43
+
44
+ ### Step 2: Ask User (if not found)
45
+
46
+ If handbook not found in common locations:
47
+ > "Where is the Testing Handbook repository located? (full path)"
48
+
49
+ ### Step 3: Clone as Last Resort (if user agrees)
50
+
51
+ ```bash
52
+ git clone --depth=1 https://github.com/trailofbits/testing-handbook.git
53
+ handbook_path="./testing-handbook"
54
+ ```
55
+
56
+ ### Set handbook_path Variable
57
+
58
+ Once located, set `handbook_path` and use it for all subsequent paths:
59
+ ```bash
60
+ handbook_path="/path/to/testing-handbook" # Set to actual location
61
+ ```
62
+
63
+ All paths below are relative to `{handbook_path}`.
64
+
65
+ ### Error Recovery
66
+
67
+ | Failure | Detection | Recovery |
68
+ |---------|-----------|----------|
69
+ | Handbook not in common locations | Step 1 finds nothing | Ask user for path (Step 2) |
70
+ | User doesn't know path | User says "I don't know" | Offer to clone (Step 3) |
71
+ | Clone fails (network/permissions) | git clone returns error | Report error, ask user to clone manually and provide path |
72
+ | `content/docs/` missing | Directory doesn't exist after locating | Invalid handbook - ask user to verify it's the correct repo |
73
+ | Handbook is outdated | User mentions old content | Suggest `git pull` in handbook directory |
74
+
75
+ ## Phase 1: Handbook Analysis
76
+
77
+ ### 1.1 Scan Directory Structure
78
+
79
+ Scan the handbook at:
80
+ ```
81
+ {handbook_path}/content/docs/
82
+ ```
83
+
84
+ Directory structure pattern:
85
+ ```
86
+ docs/
87
+ ├── fuzzing/
88
+ │ ├── _index.md # Section overview
89
+ │ ├── c-cpp/
90
+ │ │ ├── _index.md # Language subsection
91
+ │ │ ├── 10-libfuzzer/ # Tool directory
92
+ │ │ │ └── index.md
93
+ │ │ ├── 11-aflpp/
94
+ │ │ └── techniques/ # Shared techniques
95
+ │ └── rust/
96
+ ├── static-analysis/
97
+ │ ├── semgrep/
98
+ │ │ ├── _index.md
99
+ │ │ ├── 00-installation.md
100
+ │ │ ├── 10-advanced.md
101
+ │ │ ├── 20-ci.md
102
+ │ │ └── 99-resources.md
103
+ │ └── codeql/
104
+ ├── crypto/
105
+ │ ├── wycheproof/
106
+ │ └── constant_time_tool/
107
+ └── web/
108
+ └── burp/
109
+ ```
110
+
111
+ ### 1.2 Parse Frontmatter
112
+
113
+ Each markdown file has YAML frontmatter:
114
+
115
+ ```yaml
116
+ ---
117
+ title: "Semgrep"
118
+ weight: 2
119
+ summary: "Fast static analysis for finding bugs..."
120
+ bookCollapseSection: true
121
+ draft: false # Check this!
122
+ ---
123
+ ```
124
+
125
+ **Key fields:**
126
+ | Field | Purpose |
127
+ |-------|---------|
128
+ | `title` | Skill name candidate |
129
+ | `summary` | Skill description source |
130
+ | `weight` | Ordering (lower = more important) |
131
+ | `bookCollapseSection` | Indicates major section |
132
+ | `draft` | If `true`, skip this section |
133
+
134
+ ### 1.3 Identify Skill Candidates
135
+
136
+ **Decision Table:**
137
+
138
+ For each directory found, apply the first matching rule:
139
+
140
+ | Directory Pattern | Has | Skill Type | Action |
141
+ |-------------------|-----|------------|--------|
142
+ | `_index.md` with `bookCollapseSection: true` | - | Container | Scan children, don't create skill for container itself |
143
+ | `**/static-analysis/[name]/` | Numbered files (00-, 10-) | Tool | Create tool skill |
144
+ | `**/fuzzing/[lang]/[name]/` | `index.md` or numbered files | Fuzzer | Create fuzzer skill |
145
+ | `**/fuzzing/techniques/[name]/` | Any `.md` files | Technique | Create technique skill |
146
+ | `**/crypto/[name]/` | Any `.md` files | Domain | Create domain skill |
147
+ | `**/web/[name]/` | Numbered files or `_index.md` | Tool | Create tool skill (but check exclusions) |
148
+ | Named `techniques/` | Subdirectories | Container | Create one technique skill per subdirectory |
149
+ | Any other | Only `_index.md` | Skip | Not enough content |
150
+
151
+ **Hard Exclusions (GUI-only tools):**
152
+
153
+ Some handbook sections describe tools that require graphical user interfaces and cannot be operated by Claude. Skip these unconditionally:
154
+
155
+ | Section | Tool | Reason |
156
+ |---------|------|--------|
157
+ | `**/web/burp/` | Burp Suite | GUI-based HTTP proxy; requires visual interaction |
158
+
159
+ These tools are excluded because Claude cannot:
160
+ - Launch or interact with GUI applications
161
+ - Click buttons, navigate menus, or view visual elements
162
+ - Operate browser-based or desktop UI tools
163
+
164
+ For web security testing, prefer CLI-based alternatives documented elsewhere (e.g., `curl`, `httpie`, custom scripts).
165
+
166
+ **Classification priority** (when multiple patterns match):
167
+ 1. Most specific path wins (deeper = higher priority)
168
+ 2. Type preference: Tool > Fuzzer > Technique > Domain
169
+ 3. When in doubt, flag for user review in the plan
170
+
171
+ **Examples:**
172
+
173
+ | Path | Matches | Result |
174
+ |------|---------|--------|
175
+ | `/fuzzing/c-cpp/10-libfuzzer/` | Fuzzer pattern | `libfuzzer` (fuzzer) |
176
+ | `/static-analysis/semgrep/` | Tool pattern | `semgrep` (tool) |
177
+ | `/fuzzing/techniques/writing-harnesses/` | Technique pattern | `harness-writing` (technique) |
178
+ | `/crypto/wycheproof/` | Domain pattern | `wycheproof` (domain) |
179
+
180
+ ### 1.4 Build Candidate List
181
+
182
+ For each candidate, extract:
183
+
184
+ ```yaml
185
+ - name: libfuzzer
186
+ type: fuzzer
187
+ source: /docs/fuzzing/c-cpp/10-libfuzzer/
188
+ summary: "libFuzzer is a coverage-guided fuzzer..."
189
+ weight: 1
190
+ has_resources: true # Has 99-resources.md
191
+ related_sections:
192
+ - /docs/fuzzing/techniques/01-writing-harnesses/
193
+ - /docs/fuzzing/techniques/03-asan/
194
+ ```
195
+
196
+ ### 1.5 Candidate Prioritization
197
+
198
+ When many candidates exist, prioritize by:
199
+
200
+ | Priority | Criterion | Rationale |
201
+ |----------|-----------|-----------|
202
+ | 1 | Weight field (lower = higher) | Handbook author's intent |
203
+ | 2 | Content depth (more numbered files) | More complete documentation |
204
+ | 3 | Has resources file | External links add value |
205
+ | 4 | Core section (fuzzing, static-analysis) | Fundamental topics |
206
+ | 5 | Recently updated | More relevant content |
207
+
208
+ **Conflict resolution:**
209
+ - If multiple patterns match a section, use the **most specific** (deepest path wins)
210
+ - If a section could be multiple types, prefer: Tool > Fuzzer > Technique > Domain
211
+ - When in doubt, flag for user review in the plan
212
+
213
+ ## Phase 2: Plan Generation
214
+
215
+ ### 2.1 Plan Format
216
+
217
+ Present to user in this format:
218
+
219
+ ```markdown
220
+ # Skill Generation Plan
221
+
222
+ ## Summary
223
+ - **Handbook analyzed:** {handbook_path}
224
+ - **Total sections:** 25
225
+ - **Skills to generate:** 8
226
+ - **Sections to skip:** 2
227
+
228
+ ---
229
+
230
+ ## Skills to Generate
231
+
232
+ | # | Skill Name | Source Section | Type | Related Sections |
233
+ |---|------------|----------------|------|------------------|
234
+ | 1 | libfuzzer | /fuzzing/c-cpp/10-libfuzzer/ | Fuzzer | techniques/asan, techniques/harness |
235
+ | 2 | aflpp | /fuzzing/c-cpp/11-aflpp/ | Fuzzer | techniques/asan |
236
+ | 3 | cargo-fuzz | /fuzzing/rust/10-cargo-fuzz/ | Fuzzer | - |
237
+ | 4 | wycheproof | /crypto/wycheproof/ | Domain | - |
238
+ | 5 | fuzz-harness-writing | /fuzzing/techniques/01-writing-harnesses/ | Technique | - |
239
+ | 6 | coverage-analysis | /fuzzing/c-cpp/techniques/01-coverage/ | Technique | - |
240
+ | 7 | address-sanitizer | /fuzzing/techniques/03-asan/ | Technique | - |
241
+
242
+ ---
243
+
244
+ ## Skipped Sections
245
+
246
+ | Section | Reason |
247
+ |---------|--------|
248
+ | /docs/dynamic-analysis/ | `draft: true` in frontmatter |
249
+ | /docs/fuzzing/3-python.md | Single file, insufficient content |
250
+ | /docs/web/burp/ | GUI-only tool (excluded) |
251
+
252
+ ---
253
+
254
+ ## External Resources to Fetch
255
+
256
+ | Section | Resource Count | Source File |
257
+ |---------|---------------|-------------|
258
+ | Fuzzing | 5 | /fuzzing/91-resources.md |
259
+ | Semgrep | 3 | /static-analysis/semgrep/99-resources.md |
260
+ | CodeQL | 4 | /static-analysis/codeql/99-resources.md |
261
+
262
+ ---
263
+
264
+ ## Actions
265
+
266
+ - [ ] Confirm plan and proceed with generation
267
+ - [ ] Modify: Remove skill #X from plan
268
+ - [ ] Modify: Change skill #Y type
269
+ - [ ] Cancel generation
270
+ ```
271
+
272
+ Make the actions navigable and selectable if possible using built-in tool like TodoWrite.
273
+
274
+ ### 2.2 User Interaction
275
+
276
+ After presenting plan:
277
+
278
+ 1. Wait for user confirmation or modifications
279
+ 2. Apply any modifications to plan
280
+ 3. Proceed with generation only after explicit approval
281
+
282
+ **Acceptable modifications:**
283
+ - Remove skills from plan
284
+ - Change skill type
285
+ - Skip updates
286
+ - Add custom related sections
287
+ - Change skill names
288
+
289
+ ## Phase 3: Prepare Generation Context
290
+
291
+ This phase prepares everything needed for generation agents. It combines content aggregation with agent handoff preparation.
292
+
293
+ ### 3.1 Collect Content Per Skill
294
+
295
+ For each approved skill, collect content from:
296
+
297
+ 1. **Primary section:** Main `_index.md` or `index.md`
298
+ 2. **Numbered files:** `00-installation.md`, `10-advanced.md`, etc.
299
+ 3. **Related sections:** As specified in `related_sections`
300
+ 4. **Resources:** From `99-resources.md` (titles only)
301
+
302
+ ### 3.2 Content Processing Rules
303
+
304
+ Content processing rules are defined in the agent prompt template.
305
+
306
+ **Authoritative source:** [agent-prompt.md](agent-prompt.md#critical-rules)
307
+
308
+ The agent prompt contains:
309
+ - Hugo shortcode conversion table
310
+ - Code block preservation rules
311
+ - Image/video handling
312
+ - YAML frontmatter requirements
313
+ - Pre-write validation checklist
314
+ - **Line count splitting rules** (when to split large skills)
315
+
316
+ Do not duplicate these rules here. Generation agents receive them via the prompt template.
317
+
318
+ ### 3.3 External Resources
319
+
320
+ Extract from `99-resources.md` or `91-resources.md`:
321
+
322
+ ```markdown
323
+ ## Resources
324
+
325
+ - [Introduction to Semgrep](https://www.youtube.com/watch?v=...) - Trail of Bits Webinar
326
+ - [Semgrep Documentation](https://semgrep.dev/docs/) - Official docs
327
+ - [Custom Rules Guide](https://semgrep.dev/docs/writing-rules/) - Rule authoring
328
+ ```
329
+
330
+ **For non-video resources (documentation, blogs, guides):**
331
+ - Use WebFetch to retrieve content
332
+ - Extract key insights, techniques, code examples
333
+ - Summarize actionable information for the skill
334
+ - Include attribution with URL
335
+
336
+ **For video resources (YouTube, Vimeo, etc.):**
337
+ - Extract title and URL only
338
+ - Do NOT attempt to fetch video content
339
+ - Include brief description if available in handbook
340
+
341
+ **Video URL patterns to skip fetching:**
342
+ - `youtube.com`, `youtu.be`
343
+ - `vimeo.com`
344
+ - `*.mp4`, `*.webm`, `*.mov` direct links
345
+ - `twitch.tv`, `dailymotion.com`
346
+
347
+ ### 3.4 Edge Case Handling
348
+
349
+ | Situation | Detection | Action |
350
+ |-----------|-----------|--------|
351
+ | Empty handbook section | Directory exists but no `.md` files | Skip, add to "Skipped Sections" with reason |
352
+ | Draft content | `draft: true` in frontmatter | Skip entirely, do not include in plan |
353
+ | Missing `_index.md` | Directory has content but no index | Use first numbered file for metadata |
354
+ | Conflicting frontmatter | Different titles in `_index.md` vs content | Use `_index.md` values, note discrepancy |
355
+ | Missing resources file | No `99-resources.md` or `91-resources.md` | Omit Resources section from generated skill |
356
+ | Circular references | Section A references B, B references A | Include each once, note relationship |
357
+ | Very large section | >20 markdown files | Flag for splitting (see agent-prompt.md) |
358
+ | Incomplete section | `TODO` or placeholder text | Flag in plan for user decision |
359
+
360
+ ### 3.5 Build Per-Skill Package
361
+
362
+ Each skill generation agent receives variables that map directly to the agent prompt template:
363
+
364
+ ```yaml
365
+ # Agent prompt variables (see agent-prompt.md for full template)
366
+ name: "libfuzzer" # {name} - skill name (lowercase)
367
+ type: "fuzzer" # {type} - tool|fuzzer|technique|domain
368
+ pass: 1 # {pass} - 1=content only, 2=cross-refs only
369
+ handbook_path: "/path/to/testing-handbook" # {handbook_path} - absolute path
370
+ section_path: "fuzzing/c-cpp/10-libfuzzer" # {section_path} - relative to content/docs/
371
+ output_dir: "/path/to/skills/plugins/testing-handbook-skills/skills" # {output_dir}
372
+ template_path: "skills/testing-handbook-generator/templates/fuzzer-skill.md" # {template_path}
373
+ related_sections: "fuzzing/techniques/01-writing-harnesses, fuzzing/techniques/03-asan"
374
+ # ^ Use comma-separated list OR empty string "" if no related sections
375
+
376
+ # Metadata (for orchestrator tracking, not passed to agent)
377
+ metadata:
378
+ title: "libFuzzer" # From frontmatter
379
+ summary: "Coverage-guided fuzzer..." # From frontmatter
380
+ has_resources: true # Has 99-resources.md
381
+ estimated_lines: 350 # Approximate output size
382
+ ```
383
+
384
+ **Variable mapping to agent prompt:**
385
+
386
+ | Package Field | Agent Prompt Variable | Example |
387
+ |---------------|----------------------|---------|
388
+ | `name` | `{name}` | `libfuzzer` |
389
+ | `type` | `{type}` | `fuzzer` |
390
+ | `pass` | `{pass}` | `1` or `2` |
391
+ | `handbook_path` | `{handbook_path}` | `/path/to/testing-handbook` |
392
+ | `section_path` | `{section_path}` | `fuzzing/c-cpp/10-libfuzzer` |
393
+ | `output_dir` | `{output_dir}` | `/path/to/skills/plugins/testing-handbook-skills/skills` |
394
+ | `template_path` | `{template_path}` | `skills/testing-handbook-generator/templates/fuzzer-skill.md` |
395
+ | `related_sections` | `{related_sections}` | Comma-separated list or empty string |
396
+
397
+ **Building the package:**
398
+
399
+ ```bash
400
+ # Construct output_dir from current location
401
+ output_dir="$(cd .. && pwd)" # Parent of testing-handbook-generator
402
+
403
+ # Construct template_path from type
404
+ template_path="skills/testing-handbook-generator/templates/${type}-skill.md"
405
+
406
+ # Format related sections (empty string if none)
407
+ if [ ${#related_sections[@]} -eq 0 ]; then
408
+ related_sections=""
409
+ else
410
+ related_sections=$(IFS=', '; echo "${related_sections[*]}")
411
+ fi
412
+ ```
413
+
414
+ ### 3.6 Pre-Generation Validation
415
+
416
+ Before launching generation agents, verify:
417
+
418
+ ```
419
+ For each skill candidate:
420
+ ├─ Primary content exists and is non-empty
421
+ ├─ Frontmatter has title and summary
422
+ ├─ At least one code block present (for tool/fuzzer types)
423
+ ├─ No unresolved Hugo shortcodes in source content
424
+ ├─ Related sections (if any) are accessible
425
+ └─ Template file exists for skill type
426
+ ```
427
+
428
+ **If validation fails:**
429
+ - Log the specific failure
430
+ - Move candidate to "Skipped Sections" with reason
431
+ - Continue with remaining candidates
432
+
433
+ ### 3.7 Launch Generation
434
+
435
+ **Trigger conditions:**
436
+ - User has approved plan (explicit confirmation)
437
+ - All source paths verified accessible
438
+ - All per-skill packages prepared
439
+
440
+ **Launch sequence:**
441
+ 1. Launch Pass 1 agents in parallel (content generation)
442
+ 2. Wait for all Pass 1 agents to complete
443
+ 3. Run Pass 2 (cross-reference population) - see [SKILL.md](SKILL.md#two-pass-generation-phase-3)
444
+ 4. Run validator on all generated skills
445
+
446
+ ### 3.8 Success Criteria
447
+
448
+ Phase 3 complete when:
449
+ - [ ] All skill packages prepared with variables
450
+ - [ ] Pass 1 agents launched and completed
451
+ - [ ] Pass 2 cross-references populated
452
+ - [ ] All generated skills pass validation