wormclaude 1.0.119 → 1.0.121

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 (232) hide show
  1. package/dist/theme.js +1 -1
  2. package/dist/tui.js +6 -1
  3. package/package.json +1 -1
  4. package/skills/build-mcp-app/SKILL.md +0 -393
  5. package/skills/build-mcp-app/references/abuse-protection.md +0 -60
  6. package/skills/build-mcp-app/references/apps-sdk-messages.md +0 -227
  7. package/skills/build-mcp-app/references/directory-checklist.md +0 -18
  8. package/skills/build-mcp-app/references/iframe-sandbox.md +0 -164
  9. package/skills/build-mcp-app/references/payload-budgeting.md +0 -54
  10. package/skills/build-mcp-app/references/widget-templates.md +0 -249
  11. package/skills/build-mcp-server/SKILL.md +0 -222
  12. package/skills/build-mcp-server/references/auth.md +0 -108
  13. package/skills/build-mcp-server/references/deploy-cloudflare-workers.md +0 -106
  14. package/skills/build-mcp-server/references/elicitation.md +0 -129
  15. package/skills/build-mcp-server/references/remote-http-scaffold.md +0 -211
  16. package/skills/build-mcp-server/references/resources-and-prompts.md +0 -122
  17. package/skills/build-mcp-server/references/server-capabilities.md +0 -164
  18. package/skills/build-mcp-server/references/tool-design.md +0 -189
  19. package/skills/build-mcp-server/references/versions.md +0 -25
  20. package/skills/build-mcpb/SKILL.md +0 -200
  21. package/skills/build-mcpb/references/local-security.md +0 -149
  22. package/skills/build-mcpb/references/manifest-schema.md +0 -156
  23. package/skills/docx/script/__init__.py +0 -1
  24. package/skills/docx/script/accept_chages.py +0 -135
  25. package/skills/docx/script/comment.py +0 -318
  26. package/skills/docx/script/office/helpers/__init__.py +0 -0
  27. package/skills/docx/script/office/helpers/merge_runs.py +0 -199
  28. package/skills/docx/script/office/helpers/simplify_redlines.py +0 -197
  29. package/skills/docx/script/office/pack.py +0 -159
  30. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  31. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  32. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  33. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  34. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  35. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  36. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  37. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  38. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  39. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  40. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  41. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  42. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  43. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  44. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  45. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  46. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  47. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  48. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  49. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  50. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  51. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  52. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  53. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  54. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  55. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  56. package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  57. package/skills/docx/script/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  58. package/skills/docx/script/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  59. package/skills/docx/script/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  60. package/skills/docx/script/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  61. package/skills/docx/script/office/schemas/mce/mc.xsd +0 -75
  62. package/skills/docx/script/office/schemas/microsoft/wml-2010.xsd +0 -560
  63. package/skills/docx/script/office/schemas/microsoft/wml-2012.xsd +0 -67
  64. package/skills/docx/script/office/schemas/microsoft/wml-2018.xsd +0 -14
  65. package/skills/docx/script/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
  66. package/skills/docx/script/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
  67. package/skills/docx/script/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  68. package/skills/docx/script/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
  69. package/skills/docx/script/office/soffice.py +0 -183
  70. package/skills/docx/script/office/unpack.py +0 -132
  71. package/skills/docx/script/office/validate.py +0 -117
  72. package/skills/docx/script/office/validators/__init__.py +0 -15
  73. package/skills/docx/script/office/validators/base.py +0 -851
  74. package/skills/docx/script/office/validators/docx.py +0 -446
  75. package/skills/docx/script/office/validators/pptx.py +0 -275
  76. package/skills/docx/script/office/validators/redlining.py +0 -247
  77. package/skills/docx/script/templates/comments.xml +0 -3
  78. package/skills/docx/script/templates/commentsExtended.xml +0 -3
  79. package/skills/docx/script/templates/commentsExtensible.xml +0 -3
  80. package/skills/docx/script/templates/commentsIds.xml +0 -3
  81. package/skills/docx/script/templates/people.xml +0 -3
  82. package/skills/docx/skill.md +0 -593
  83. package/skills/explain.md +0 -14
  84. package/skills/frontend-design/SKILL.md +0 -42
  85. package/skills/pdf/FORMS.md +0 -294
  86. package/skills/pdf/REFERENCE.md +0 -612
  87. package/skills/pdf/SKILL.md +0 -314
  88. package/skills/pdf/scripts/check_bounding_boxes.py +0 -65
  89. package/skills/pdf/scripts/check_fillable_fields.py +0 -11
  90. package/skills/pdf/scripts/convert_pdf_to_images.py +0 -33
  91. package/skills/pdf/scripts/create_validation_image.py +0 -37
  92. package/skills/pdf/scripts/extract_form_field_info.py +0 -122
  93. package/skills/pdf/scripts/extract_form_structure.py +0 -115
  94. package/skills/pdf/scripts/fill_fillable_fields.py +0 -98
  95. package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -107
  96. package/skills/playground/SKILL.md +0 -77
  97. package/skills/playground/templates/code-map.md +0 -158
  98. package/skills/playground/templates/concept-map.md +0 -73
  99. package/skills/playground/templates/data-explorer.md +0 -67
  100. package/skills/playground/templates/design-playground.md +0 -67
  101. package/skills/playground/templates/diff-review.md +0 -179
  102. package/skills/playground/templates/document-critique.md +0 -171
  103. package/skills/pptx/SKILL.md +0 -230
  104. package/skills/pptx/editing.md +0 -205
  105. package/skills/pptx/pptxgenjs.md +0 -437
  106. package/skills/pptx/scripts/__init__.py +0 -0
  107. package/skills/pptx/scripts/add_slide.py +0 -195
  108. package/skills/pptx/scripts/clean.py +0 -286
  109. package/skills/pptx/scripts/office/helpers/__init__.py +0 -0
  110. package/skills/pptx/scripts/office/helpers/merge_runs.py +0 -199
  111. package/skills/pptx/scripts/office/helpers/simplify_redlines.py +0 -197
  112. package/skills/pptx/scripts/office/pack.py +0 -159
  113. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  114. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  115. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  116. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  117. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  118. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  119. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  120. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  121. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  122. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  123. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  124. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  125. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  126. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  127. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  128. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  129. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  130. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  131. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  132. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  133. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  134. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  135. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  136. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  137. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  138. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  139. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  140. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  141. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  142. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  143. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  144. package/skills/pptx/scripts/office/schemas/mce/mc.xsd +0 -75
  145. package/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
  146. package/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
  147. package/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
  148. package/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
  149. package/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
  150. package/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  151. package/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
  152. package/skills/pptx/scripts/office/soffice.py +0 -183
  153. package/skills/pptx/scripts/office/unpack.py +0 -132
  154. package/skills/pptx/scripts/office/validate.py +0 -117
  155. package/skills/pptx/scripts/office/validators/__init__.py +0 -15
  156. package/skills/pptx/scripts/office/validators/base.py +0 -851
  157. package/skills/pptx/scripts/office/validators/docx.py +0 -446
  158. package/skills/pptx/scripts/office/validators/pptx.py +0 -275
  159. package/skills/pptx/scripts/office/validators/redlining.py +0 -247
  160. package/skills/pptx/scripts/thumbnail.py +0 -289
  161. package/skills/recon.md +0 -16
  162. package/skills/security-audit/SKILL.md +0 -26
  163. package/skills/talent-creator/SKILL.md +0 -486
  164. package/skills/talent-creator/agents/analyzer.md +0 -274
  165. package/skills/talent-creator/agents/comparator.md +0 -202
  166. package/skills/talent-creator/agents/grader.md +0 -223
  167. package/skills/talent-creator/assets/eval_review.html +0 -146
  168. package/skills/talent-creator/eval-viewer/generate_review.py +0 -471
  169. package/skills/talent-creator/eval-viewer/viewer.html +0 -1325
  170. package/skills/talent-creator/references/schemas.md +0 -430
  171. package/skills/talent-creator/scripts/__init__.py +0 -0
  172. package/skills/talent-creator/scripts/aggregate_benchmark.py +0 -401
  173. package/skills/talent-creator/scripts/generate_report.py +0 -326
  174. package/skills/talent-creator/scripts/improve_description.py +0 -247
  175. package/skills/talent-creator/scripts/package_skill.py +0 -136
  176. package/skills/talent-creator/scripts/quick_validate.py +0 -146
  177. package/skills/talent-creator/scripts/run_eval.py +0 -310
  178. package/skills/talent-creator/scripts/run_loop.py +0 -328
  179. package/skills/talent-creator/scripts/utils.py +0 -47
  180. package/skills/xlsx/SKILL.md +0 -300
  181. package/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
  182. package/skills/xlsx/scripts/office/helpers/merge_runs.py +0 -199
  183. package/skills/xlsx/scripts/office/helpers/simplify_redlines.py +0 -197
  184. package/skills/xlsx/scripts/office/pack.py +0 -159
  185. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  186. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  187. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  188. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  189. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  190. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  191. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  192. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  193. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  194. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  195. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  196. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  197. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  198. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  199. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  200. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  201. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  202. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  203. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  204. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  205. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  206. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  207. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  208. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  209. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  210. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  211. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  212. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  213. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  214. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  215. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  216. package/skills/xlsx/scripts/office/schemas/mce/mc.xsd +0 -75
  217. package/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
  218. package/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
  219. package/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
  220. package/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
  221. package/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
  222. package/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  223. package/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
  224. package/skills/xlsx/scripts/office/soffice.py +0 -183
  225. package/skills/xlsx/scripts/office/unpack.py +0 -132
  226. package/skills/xlsx/scripts/office/validate.py +0 -117
  227. package/skills/xlsx/scripts/office/validators/__init__.py +0 -15
  228. package/skills/xlsx/scripts/office/validators/base.py +0 -851
  229. package/skills/xlsx/scripts/office/validators/docx.py +0 -446
  230. package/skills/xlsx/scripts/office/validators/pptx.py +0 -275
  231. package/skills/xlsx/scripts/office/validators/redlining.py +0 -247
  232. package/skills/xlsx/scripts/recalc.py +0 -184
@@ -1,289 +0,0 @@
1
- """Create thumbnail grids from PowerPoint presentation slides.
2
-
3
- Creates a grid layout of slide thumbnails for quick visual analysis.
4
- Labels each thumbnail with its XML filename (e.g., slide1.xml).
5
- Hidden slides are shown with a placeholder pattern.
6
-
7
- Usage:
8
- python thumbnail.py input.pptx [output_prefix] [--cols N]
9
-
10
- Examples:
11
- python thumbnail.py presentation.pptx
12
- # Creates: thumbnails.jpg
13
-
14
- python thumbnail.py template.pptx grid --cols 4
15
- # Creates: grid.jpg (or grid-1.jpg, grid-2.jpg for large decks)
16
- """
17
-
18
- import argparse
19
- import subprocess
20
- import sys
21
- import tempfile
22
- import zipfile
23
- from pathlib import Path
24
-
25
- import defusedxml.minidom
26
- from office.soffice import get_soffice_env
27
- from PIL import Image, ImageDraw, ImageFont
28
-
29
- THUMBNAIL_WIDTH = 300
30
- CONVERSION_DPI = 100
31
- MAX_COLS = 6
32
- DEFAULT_COLS = 3
33
- JPEG_QUALITY = 95
34
- GRID_PADDING = 20
35
- BORDER_WIDTH = 2
36
- FONT_SIZE_RATIO = 0.10
37
- LABEL_PADDING_RATIO = 0.4
38
-
39
-
40
- def main():
41
- parser = argparse.ArgumentParser(
42
- description="Create thumbnail grids from PowerPoint slides."
43
- )
44
- parser.add_argument("input", help="Input PowerPoint file (.pptx)")
45
- parser.add_argument(
46
- "output_prefix",
47
- nargs="?",
48
- default="thumbnails",
49
- help="Output prefix for image files (default: thumbnails)",
50
- )
51
- parser.add_argument(
52
- "--cols",
53
- type=int,
54
- default=DEFAULT_COLS,
55
- help=f"Number of columns (default: {DEFAULT_COLS}, max: {MAX_COLS})",
56
- )
57
-
58
- args = parser.parse_args()
59
-
60
- cols = min(args.cols, MAX_COLS)
61
- if args.cols > MAX_COLS:
62
- print(f"Warning: Columns limited to {MAX_COLS}")
63
-
64
- input_path = Path(args.input)
65
- if not input_path.exists() or input_path.suffix.lower() != ".pptx":
66
- print(f"Error: Invalid PowerPoint file: {args.input}", file=sys.stderr)
67
- sys.exit(1)
68
-
69
- output_path = Path(f"{args.output_prefix}.jpg")
70
-
71
- try:
72
- slide_info = get_slide_info(input_path)
73
-
74
- with tempfile.TemporaryDirectory() as temp_dir:
75
- temp_path = Path(temp_dir)
76
- visible_images = convert_to_images(input_path, temp_path)
77
-
78
- if not visible_images and not any(s["hidden"] for s in slide_info):
79
- print("Error: No slides found", file=sys.stderr)
80
- sys.exit(1)
81
-
82
- slides = build_slide_list(slide_info, visible_images, temp_path)
83
-
84
- grid_files = create_grids(slides, cols, THUMBNAIL_WIDTH, output_path)
85
-
86
- print(f"Created {len(grid_files)} grid(s):")
87
- for grid_file in grid_files:
88
- print(f" {grid_file}")
89
-
90
- except Exception as e:
91
- print(f"Error: {e}", file=sys.stderr)
92
- sys.exit(1)
93
-
94
-
95
- def get_slide_info(pptx_path: Path) -> list[dict]:
96
- with zipfile.ZipFile(pptx_path, "r") as zf:
97
- rels_content = zf.read("ppt/_rels/presentation.xml.rels").decode("utf-8")
98
- rels_dom = defusedxml.minidom.parseString(rels_content)
99
-
100
- rid_to_slide = {}
101
- for rel in rels_dom.getElementsByTagName("Relationship"):
102
- rid = rel.getAttribute("Id")
103
- target = rel.getAttribute("Target")
104
- rel_type = rel.getAttribute("Type")
105
- if "slide" in rel_type and target.startswith("slides/"):
106
- rid_to_slide[rid] = target.replace("slides/", "")
107
-
108
- pres_content = zf.read("ppt/presentation.xml").decode("utf-8")
109
- pres_dom = defusedxml.minidom.parseString(pres_content)
110
-
111
- slides = []
112
- for sld_id in pres_dom.getElementsByTagName("p:sldId"):
113
- rid = sld_id.getAttribute("r:id")
114
- if rid in rid_to_slide:
115
- hidden = sld_id.getAttribute("show") == "0"
116
- slides.append({"name": rid_to_slide[rid], "hidden": hidden})
117
-
118
- return slides
119
-
120
-
121
- def build_slide_list(
122
- slide_info: list[dict],
123
- visible_images: list[Path],
124
- temp_dir: Path,
125
- ) -> list[tuple[Path, str]]:
126
- if visible_images:
127
- with Image.open(visible_images[0]) as img:
128
- placeholder_size = img.size
129
- else:
130
- placeholder_size = (1920, 1080)
131
-
132
- slides = []
133
- visible_idx = 0
134
-
135
- for info in slide_info:
136
- if info["hidden"]:
137
- placeholder_path = temp_dir / f"hidden-{info['name']}.jpg"
138
- placeholder_img = create_hidden_placeholder(placeholder_size)
139
- placeholder_img.save(placeholder_path, "JPEG")
140
- slides.append((placeholder_path, f"{info['name']} (hidden)"))
141
- else:
142
- if visible_idx < len(visible_images):
143
- slides.append((visible_images[visible_idx], info["name"]))
144
- visible_idx += 1
145
-
146
- return slides
147
-
148
-
149
- def create_hidden_placeholder(size: tuple[int, int]) -> Image.Image:
150
- img = Image.new("RGB", size, color="#F0F0F0")
151
- draw = ImageDraw.Draw(img)
152
- line_width = max(5, min(size) // 100)
153
- draw.line([(0, 0), size], fill="#CCCCCC", width=line_width)
154
- draw.line([(size[0], 0), (0, size[1])], fill="#CCCCCC", width=line_width)
155
- return img
156
-
157
-
158
- def convert_to_images(pptx_path: Path, temp_dir: Path) -> list[Path]:
159
- pdf_path = temp_dir / f"{pptx_path.stem}.pdf"
160
-
161
- result = subprocess.run(
162
- [
163
- "soffice",
164
- "--headless",
165
- "--convert-to",
166
- "pdf",
167
- "--outdir",
168
- str(temp_dir),
169
- str(pptx_path),
170
- ],
171
- capture_output=True,
172
- text=True,
173
- env=get_soffice_env(),
174
- )
175
- if result.returncode != 0 or not pdf_path.exists():
176
- raise RuntimeError("PDF conversion failed")
177
-
178
- result = subprocess.run(
179
- [
180
- "pdftoppm",
181
- "-jpeg",
182
- "-r",
183
- str(CONVERSION_DPI),
184
- str(pdf_path),
185
- str(temp_dir / "slide"),
186
- ],
187
- capture_output=True,
188
- text=True,
189
- )
190
- if result.returncode != 0:
191
- raise RuntimeError("Image conversion failed")
192
-
193
- return sorted(temp_dir.glob("slide-*.jpg"))
194
-
195
-
196
- def create_grids(
197
- slides: list[tuple[Path, str]],
198
- cols: int,
199
- width: int,
200
- output_path: Path,
201
- ) -> list[str]:
202
- max_per_grid = cols * (cols + 1)
203
- grid_files = []
204
-
205
- for chunk_idx, start_idx in enumerate(range(0, len(slides), max_per_grid)):
206
- end_idx = min(start_idx + max_per_grid, len(slides))
207
- chunk_slides = slides[start_idx:end_idx]
208
-
209
- grid = create_grid(chunk_slides, cols, width)
210
-
211
- if len(slides) <= max_per_grid:
212
- grid_filename = output_path
213
- else:
214
- stem = output_path.stem
215
- suffix = output_path.suffix
216
- grid_filename = output_path.parent / f"{stem}-{chunk_idx + 1}{suffix}"
217
-
218
- grid_filename.parent.mkdir(parents=True, exist_ok=True)
219
- grid.save(str(grid_filename), quality=JPEG_QUALITY)
220
- grid_files.append(str(grid_filename))
221
-
222
- return grid_files
223
-
224
-
225
- def create_grid(
226
- slides: list[tuple[Path, str]],
227
- cols: int,
228
- width: int,
229
- ) -> Image.Image:
230
- font_size = int(width * FONT_SIZE_RATIO)
231
- label_padding = int(font_size * LABEL_PADDING_RATIO)
232
-
233
- with Image.open(slides[0][0]) as img:
234
- aspect = img.height / img.width
235
- height = int(width * aspect)
236
-
237
- rows = (len(slides) + cols - 1) // cols
238
- grid_w = cols * width + (cols + 1) * GRID_PADDING
239
- grid_h = rows * (height + font_size + label_padding * 2) + (rows + 1) * GRID_PADDING
240
-
241
- grid = Image.new("RGB", (grid_w, grid_h), "white")
242
- draw = ImageDraw.Draw(grid)
243
-
244
- try:
245
- font = ImageFont.load_default(size=font_size)
246
- except Exception:
247
- font = ImageFont.load_default()
248
-
249
- for i, (img_path, slide_name) in enumerate(slides):
250
- row, col = i // cols, i % cols
251
- x = col * width + (col + 1) * GRID_PADDING
252
- y_base = (
253
- row * (height + font_size + label_padding * 2) + (row + 1) * GRID_PADDING
254
- )
255
-
256
- label = slide_name
257
- bbox = draw.textbbox((0, 0), label, font=font)
258
- text_w = bbox[2] - bbox[0]
259
- draw.text(
260
- (x + (width - text_w) // 2, y_base + label_padding),
261
- label,
262
- fill="black",
263
- font=font,
264
- )
265
-
266
- y_thumbnail = y_base + label_padding + font_size + label_padding
267
-
268
- with Image.open(img_path) as img:
269
- img.thumbnail((width, height), Image.Resampling.LANCZOS)
270
- w, h = img.size
271
- tx = x + (width - w) // 2
272
- ty = y_thumbnail + (height - h) // 2
273
- grid.paste(img, (tx, ty))
274
-
275
- if BORDER_WIDTH > 0:
276
- draw.rectangle(
277
- [
278
- (tx - BORDER_WIDTH, ty - BORDER_WIDTH),
279
- (tx + w + BORDER_WIDTH - 1, ty + h + BORDER_WIDTH - 1),
280
- ],
281
- outline="gray",
282
- width=BORDER_WIDTH,
283
- )
284
-
285
- return grid
286
-
287
-
288
- if __name__ == "__main__":
289
- main()
package/skills/recon.md DELETED
@@ -1,16 +0,0 @@
1
- ---
2
- name: recon
3
- description: hedefte pasif kesif yap
4
- context: fork
5
- ---
6
- Verilen hedef uzerinde SADECE pasif kesif (OSINT) yap — hedefe dogrudan saldirgan trafik gonderme. Yetkili bir degerlendirme baglaminda calistigini varsay.
7
-
8
- Toplanacaklar:
9
- - **Alan adi / DNS**: whois (sahip, kayit tarihi, ad sunuculari), A/AAAA/MX/TXT/NS kayitlari, SPF/DMARC.
10
- - **Subdomain'ler**: pasif kaynaklardan (sertifika seffafligi/crt.sh, public DNS veri setleri). Brute-force YAPMA.
11
- - **IP / ASN**: hangi blok, hosting/CDN saglayicisi, acik kaynaklardaki gecmis kayitlar.
12
- - **Teknoloji izleri**: pasif parmak izi (HTTP basliklari acik kaynaklarda, builtwith tarzi veriler, public JS).
13
- - **Maruz kalan varliklar**: public kod depolari, sizan kimlik bilgileri, pastebin/leak, dizinler, eski/arsiv sayfalar (wayback).
14
- - **Insan/organizasyon**: public calisan/e-posta formatlari (yalnizca acik kaynaklardan, sosyal muhendislik icin degil).
15
-
16
- Cikti: bulgulari kategorize edilmis, kaynagiyla birlikte ozetle. Saldiri yuzeyi acisindan one cikan noktalari ve bir sonraki (yetkili, aktif) adimda nereye bakilmasi gerektigini belirt. Pasif sinirin disina cikma.
@@ -1,26 +0,0 @@
1
- ---
2
- name: security-audit
3
- description: Pentest ve kod guvenlik analizi
4
- whenToUse: kod guvenligi, zafiyet taramasi veya pentest istendiginde
5
- context: fork
6
- autoInvoke: true
7
- tools: Read,Grep,Bash
8
- ---
9
- Bir kod tabaninda guvenlik denetimi (audit) yap. Yetkili bir inceleme baglamindasin; amac zafiyetleri bulup somut duzeltme onermek.
10
-
11
- Yontem:
12
- 1. **Kapsami cikar**: Glob/Read ile dilleri, cerceveleri, giris noktalarini (HTTP route'lari, CLI, job'lar), dis baglantilari (DB, dosya, ag, shell, deserialization) belirle.
13
- 2. **Guven sinirlarini izle**: kullanici/dis girdinin nereye aktigini Grep ile ara — SQL, HTML/render, OS komutu, dosya yolu, redirect, template, eval.
14
- 3. **Sinif sinif tara** ve her bulguyu kanitla (dosya:satir):
15
- - Injection: SQLi, komut enjeksiyonu, SSTI, LDAP/NoSQL.
16
- - XSS / cikti kodlama eksikligi, tehlikeli `innerHTML`/`render`.
17
- - Erisim kontrolu: IDOR, eksik authz, guvenlik-belirsizlikle (security by obscurity).
18
- - Auth/oturum: zayif token, JWT dogrulama hatasi, parola saklama (duz/ MD5).
19
- - Sirlar: kodda gomulu API key/parola/.env sizintisi.
20
- - Path traversal / guvensiz dosya islemleri / guvensiz deserialization.
21
- - SSRF, acik redirect, CORS yanlis yapilandirmasi.
22
- - Bagimlilik: bilinen zafiyetli/eski paketler.
23
- 4. **Onceliklendir**: her bulgu icin Kritik/Yuksek/Orta/Dusuk + gercek etki (saldirgan ne kazanir).
24
- 5. **Duzeltme ver**: her bulgu icin somut, guvenli kod ornegi.
25
-
26
- Cikti: kisa ozet + bulgu listesi (konum, sinif, siddet, etki, duzeltme). Tahminde bulunma; iddiani kodla destekle. Yikici komut calistirma — sadece oku/ara/analiz et.