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.
- package/dist/theme.js +1 -1
- package/dist/tui.js +6 -1
- package/package.json +1 -1
- package/skills/build-mcp-app/SKILL.md +0 -393
- package/skills/build-mcp-app/references/abuse-protection.md +0 -60
- package/skills/build-mcp-app/references/apps-sdk-messages.md +0 -227
- package/skills/build-mcp-app/references/directory-checklist.md +0 -18
- package/skills/build-mcp-app/references/iframe-sandbox.md +0 -164
- package/skills/build-mcp-app/references/payload-budgeting.md +0 -54
- package/skills/build-mcp-app/references/widget-templates.md +0 -249
- package/skills/build-mcp-server/SKILL.md +0 -222
- package/skills/build-mcp-server/references/auth.md +0 -108
- package/skills/build-mcp-server/references/deploy-cloudflare-workers.md +0 -106
- package/skills/build-mcp-server/references/elicitation.md +0 -129
- package/skills/build-mcp-server/references/remote-http-scaffold.md +0 -211
- package/skills/build-mcp-server/references/resources-and-prompts.md +0 -122
- package/skills/build-mcp-server/references/server-capabilities.md +0 -164
- package/skills/build-mcp-server/references/tool-design.md +0 -189
- package/skills/build-mcp-server/references/versions.md +0 -25
- package/skills/build-mcpb/SKILL.md +0 -200
- package/skills/build-mcpb/references/local-security.md +0 -149
- package/skills/build-mcpb/references/manifest-schema.md +0 -156
- package/skills/docx/script/__init__.py +0 -1
- package/skills/docx/script/accept_chages.py +0 -135
- package/skills/docx/script/comment.py +0 -318
- package/skills/docx/script/office/helpers/__init__.py +0 -0
- package/skills/docx/script/office/helpers/merge_runs.py +0 -199
- package/skills/docx/script/office/helpers/simplify_redlines.py +0 -197
- package/skills/docx/script/office/pack.py +0 -159
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/skills/docx/script/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/skills/docx/script/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/skills/docx/script/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/skills/docx/script/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/skills/docx/script/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/skills/docx/script/office/schemas/mce/mc.xsd +0 -75
- package/skills/docx/script/office/schemas/microsoft/wml-2010.xsd +0 -560
- package/skills/docx/script/office/schemas/microsoft/wml-2012.xsd +0 -67
- package/skills/docx/script/office/schemas/microsoft/wml-2018.xsd +0 -14
- package/skills/docx/script/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/skills/docx/script/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/skills/docx/script/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/skills/docx/script/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/skills/docx/script/office/soffice.py +0 -183
- package/skills/docx/script/office/unpack.py +0 -132
- package/skills/docx/script/office/validate.py +0 -117
- package/skills/docx/script/office/validators/__init__.py +0 -15
- package/skills/docx/script/office/validators/base.py +0 -851
- package/skills/docx/script/office/validators/docx.py +0 -446
- package/skills/docx/script/office/validators/pptx.py +0 -275
- package/skills/docx/script/office/validators/redlining.py +0 -247
- package/skills/docx/script/templates/comments.xml +0 -3
- package/skills/docx/script/templates/commentsExtended.xml +0 -3
- package/skills/docx/script/templates/commentsExtensible.xml +0 -3
- package/skills/docx/script/templates/commentsIds.xml +0 -3
- package/skills/docx/script/templates/people.xml +0 -3
- package/skills/docx/skill.md +0 -593
- package/skills/explain.md +0 -14
- package/skills/frontend-design/SKILL.md +0 -42
- package/skills/pdf/FORMS.md +0 -294
- package/skills/pdf/REFERENCE.md +0 -612
- package/skills/pdf/SKILL.md +0 -314
- package/skills/pdf/scripts/check_bounding_boxes.py +0 -65
- package/skills/pdf/scripts/check_fillable_fields.py +0 -11
- package/skills/pdf/scripts/convert_pdf_to_images.py +0 -33
- package/skills/pdf/scripts/create_validation_image.py +0 -37
- package/skills/pdf/scripts/extract_form_field_info.py +0 -122
- package/skills/pdf/scripts/extract_form_structure.py +0 -115
- package/skills/pdf/scripts/fill_fillable_fields.py +0 -98
- package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +0 -107
- package/skills/playground/SKILL.md +0 -77
- package/skills/playground/templates/code-map.md +0 -158
- package/skills/playground/templates/concept-map.md +0 -73
- package/skills/playground/templates/data-explorer.md +0 -67
- package/skills/playground/templates/design-playground.md +0 -67
- package/skills/playground/templates/diff-review.md +0 -179
- package/skills/playground/templates/document-critique.md +0 -171
- package/skills/pptx/SKILL.md +0 -230
- package/skills/pptx/editing.md +0 -205
- package/skills/pptx/pptxgenjs.md +0 -437
- package/skills/pptx/scripts/__init__.py +0 -0
- package/skills/pptx/scripts/add_slide.py +0 -195
- package/skills/pptx/scripts/clean.py +0 -286
- package/skills/pptx/scripts/office/helpers/__init__.py +0 -0
- package/skills/pptx/scripts/office/helpers/merge_runs.py +0 -199
- package/skills/pptx/scripts/office/helpers/simplify_redlines.py +0 -197
- package/skills/pptx/scripts/office/pack.py +0 -159
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/skills/pptx/scripts/office/schemas/mce/mc.xsd +0 -75
- package/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
- package/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
- package/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
- package/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/skills/pptx/scripts/office/soffice.py +0 -183
- package/skills/pptx/scripts/office/unpack.py +0 -132
- package/skills/pptx/scripts/office/validate.py +0 -117
- package/skills/pptx/scripts/office/validators/__init__.py +0 -15
- package/skills/pptx/scripts/office/validators/base.py +0 -851
- package/skills/pptx/scripts/office/validators/docx.py +0 -446
- package/skills/pptx/scripts/office/validators/pptx.py +0 -275
- package/skills/pptx/scripts/office/validators/redlining.py +0 -247
- package/skills/pptx/scripts/thumbnail.py +0 -289
- package/skills/recon.md +0 -16
- package/skills/security-audit/SKILL.md +0 -26
- package/skills/talent-creator/SKILL.md +0 -486
- package/skills/talent-creator/agents/analyzer.md +0 -274
- package/skills/talent-creator/agents/comparator.md +0 -202
- package/skills/talent-creator/agents/grader.md +0 -223
- package/skills/talent-creator/assets/eval_review.html +0 -146
- package/skills/talent-creator/eval-viewer/generate_review.py +0 -471
- package/skills/talent-creator/eval-viewer/viewer.html +0 -1325
- package/skills/talent-creator/references/schemas.md +0 -430
- package/skills/talent-creator/scripts/__init__.py +0 -0
- package/skills/talent-creator/scripts/aggregate_benchmark.py +0 -401
- package/skills/talent-creator/scripts/generate_report.py +0 -326
- package/skills/talent-creator/scripts/improve_description.py +0 -247
- package/skills/talent-creator/scripts/package_skill.py +0 -136
- package/skills/talent-creator/scripts/quick_validate.py +0 -146
- package/skills/talent-creator/scripts/run_eval.py +0 -310
- package/skills/talent-creator/scripts/run_loop.py +0 -328
- package/skills/talent-creator/scripts/utils.py +0 -47
- package/skills/xlsx/SKILL.md +0 -300
- package/skills/xlsx/scripts/office/helpers/__init__.py +0 -0
- package/skills/xlsx/scripts/office/helpers/merge_runs.py +0 -199
- package/skills/xlsx/scripts/office/helpers/simplify_redlines.py +0 -197
- package/skills/xlsx/scripts/office/pack.py +0 -159
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/skills/xlsx/scripts/office/schemas/mce/mc.xsd +0 -75
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/skills/xlsx/scripts/office/soffice.py +0 -183
- package/skills/xlsx/scripts/office/unpack.py +0 -132
- package/skills/xlsx/scripts/office/validate.py +0 -117
- package/skills/xlsx/scripts/office/validators/__init__.py +0 -15
- package/skills/xlsx/scripts/office/validators/base.py +0 -851
- package/skills/xlsx/scripts/office/validators/docx.py +0 -446
- package/skills/xlsx/scripts/office/validators/pptx.py +0 -275
- package/skills/xlsx/scripts/office/validators/redlining.py +0 -247
- 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.
|