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,179 +0,0 @@
|
|
|
1
|
-
# Diff Review Template
|
|
2
|
-
|
|
3
|
-
Reach for this template when the playground is about reviewing code diffs: git commits, pull requests, and code changes with interactive line-by-line commenting for feedback.
|
|
4
|
-
|
|
5
|
-
## Layout
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
+-------------------+----------------------------------+
|
|
9
|
-
| | |
|
|
10
|
-
| Commit Header: | Diff Content |
|
|
11
|
-
| • Hash | (files with hunks) |
|
|
12
|
-
| • Message | with line numbers |
|
|
13
|
-
| • Author/Date | and +/- indicators |
|
|
14
|
-
| | |
|
|
15
|
-
+-------------------+----------------------------------+
|
|
16
|
-
| Prompt Output Panel (fixed bottom-right) |
|
|
17
|
-
| [ Copy All ] |
|
|
18
|
-
| Shows all comments formatted for prompt |
|
|
19
|
-
+------------------------------------------------------+
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
Diff review playgrounds lay out git diffs with syntax highlighting. Users click a line to attach a comment, and those comments feed into the generated prompt that drives the code review feedback.
|
|
23
|
-
|
|
24
|
-
## Control types for diff review
|
|
25
|
-
|
|
26
|
-
| Feature | Control | Behavior |
|
|
27
|
-
|---|---|---|
|
|
28
|
-
| Line commenting | Click any diff line | Opens textarea below the line |
|
|
29
|
-
| Comment indicator | Badge on commented lines | Shows which lines have feedback |
|
|
30
|
-
| Save/Cancel | Buttons in comment box | Persist or discard comment |
|
|
31
|
-
| Copy prompt | Button in prompt panel | Copies all comments to clipboard |
|
|
32
|
-
|
|
33
|
-
## Diff rendering
|
|
34
|
-
|
|
35
|
-
Turn the diff data into a structured shape before rendering:
|
|
36
|
-
|
|
37
|
-
```javascript
|
|
38
|
-
const diffData = [
|
|
39
|
-
{
|
|
40
|
-
file: "path/to/file.py",
|
|
41
|
-
hunks: [
|
|
42
|
-
{
|
|
43
|
-
header: "@@ -41,13 +41,13 @@ function context",
|
|
44
|
-
lines: [
|
|
45
|
-
{ type: "context", oldNum: 41, newNum: 41, content: "unchanged line" },
|
|
46
|
-
{ type: "deletion", oldNum: 42, newNum: null, content: "removed line" },
|
|
47
|
-
{ type: "addition", oldNum: null, newNum: 42, content: "added line" },
|
|
48
|
-
]
|
|
49
|
-
}
|
|
50
|
-
]
|
|
51
|
-
}
|
|
52
|
-
];
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
## Line type styling
|
|
56
|
-
|
|
57
|
-
| Type | Background | Text Color | Prefix |
|
|
58
|
-
|---|---|---|---|
|
|
59
|
-
| `context` | transparent | default | ` ` (space) |
|
|
60
|
-
| `addition` | green tint (#dafbe1 light / rgba(46,160,67,0.15) dark) | green (#1a7f37 light / #7ee787 dark) | `+` |
|
|
61
|
-
| `deletion` | red tint (#ffebe9 light / rgba(248,81,73,0.15) dark) | red (#cf222e light / #f85149 dark) | `-` |
|
|
62
|
-
| `hunk-header` | blue tint (#ddf4ff light) | blue (#0969da light) | `@@` |
|
|
63
|
-
|
|
64
|
-
## Comment system
|
|
65
|
-
|
|
66
|
-
Give every diff line its own unique id so comments can be tracked:
|
|
67
|
-
|
|
68
|
-
```javascript
|
|
69
|
-
const comments = {}; // { lineId: commentText }
|
|
70
|
-
|
|
71
|
-
function selectLine(lineId, lineEl) {
|
|
72
|
-
// Deselect previous
|
|
73
|
-
document.querySelectorAll('.diff-line.selected').forEach(el =>
|
|
74
|
-
el.classList.remove('selected'));
|
|
75
|
-
document.querySelectorAll('.comment-box.active').forEach(el =>
|
|
76
|
-
el.classList.remove('active'));
|
|
77
|
-
|
|
78
|
-
// Select new
|
|
79
|
-
lineEl.classList.add('selected');
|
|
80
|
-
document.getElementById(`comment-box-${lineId}`).classList.add('active');
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
function saveComment(lineId) {
|
|
84
|
-
const textarea = document.getElementById(`textarea-${lineId}`);
|
|
85
|
-
const comment = textarea.value.trim();
|
|
86
|
-
|
|
87
|
-
if (comment) {
|
|
88
|
-
comments[lineId] = comment;
|
|
89
|
-
} else {
|
|
90
|
-
delete comments[lineId];
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
renderDiff(); // Re-render to show comment indicator
|
|
94
|
-
updatePromptOutput();
|
|
95
|
-
}
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
## Prompt output format
|
|
99
|
-
|
|
100
|
-
Emit the comments in a structured code review layout:
|
|
101
|
-
|
|
102
|
-
```javascript
|
|
103
|
-
function updatePromptOutput() {
|
|
104
|
-
const commentKeys = Object.keys(comments);
|
|
105
|
-
|
|
106
|
-
if (commentKeys.length === 0) {
|
|
107
|
-
promptContent.innerHTML = '<span class="no-comments">Click on any line to add a comment...</span>';
|
|
108
|
-
return;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
let output = 'Code Review Comments:\n\n';
|
|
112
|
-
|
|
113
|
-
commentKeys.forEach(lineId => {
|
|
114
|
-
const lineEl = document.querySelector(`[data-line-id="${lineId}"]`);
|
|
115
|
-
const file = lineEl.dataset.file;
|
|
116
|
-
const lineNum = lineEl.dataset.lineNum;
|
|
117
|
-
const content = lineEl.dataset.content;
|
|
118
|
-
|
|
119
|
-
output += `📍 ${file}:${lineNum}\n`;
|
|
120
|
-
output += ` Code: ${content.trim()}\n`;
|
|
121
|
-
output += ` Comment: ${comments[lineId]}\n\n`;
|
|
122
|
-
});
|
|
123
|
-
|
|
124
|
-
promptContent.textContent = output;
|
|
125
|
-
}
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
## Data attributes for line elements
|
|
129
|
-
|
|
130
|
-
Stash metadata on each line element so the prompt can be built from it:
|
|
131
|
-
|
|
132
|
-
```html
|
|
133
|
-
<div class="diff-line addition"
|
|
134
|
-
data-line-id="0-1-5"
|
|
135
|
-
data-file="src/utils/handler.py"
|
|
136
|
-
data-line-num="45"
|
|
137
|
-
data-content="subagent_id = tracker.register()">
|
|
138
|
-
```
|
|
139
|
-
|
|
140
|
-
## Pre-populating with real data
|
|
141
|
-
|
|
142
|
-
To build a diff viewer around a specific commit:
|
|
143
|
-
|
|
144
|
-
1. Run `git show <commit> --format="%H%n%s%n%an%n%ad" -p`
|
|
145
|
-
2. Parse that output into the `diffData` structure
|
|
146
|
-
3. Surface the commit metadata in the header section
|
|
147
|
-
|
|
148
|
-
## Theme support
|
|
149
|
-
|
|
150
|
-
Cover both light and dark modes:
|
|
151
|
-
|
|
152
|
-
```css
|
|
153
|
-
/* Light mode */
|
|
154
|
-
body { background: #f6f8fa; color: #1f2328; }
|
|
155
|
-
.file-card { background: #ffffff; border: 1px solid #d0d7de; }
|
|
156
|
-
.diff-line.addition { background: #dafbe1; }
|
|
157
|
-
.diff-line.deletion { background: #ffebe9; }
|
|
158
|
-
|
|
159
|
-
/* Dark mode */
|
|
160
|
-
body { background: #0d1117; color: #c9d1d9; }
|
|
161
|
-
.file-card { background: #161b22; border: 1px solid #30363d; }
|
|
162
|
-
.diff-line.addition { background: rgba(46, 160, 67, 0.15); }
|
|
163
|
-
.diff-line.deletion { background: rgba(248, 81, 73, 0.15); }
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
## Interactive features
|
|
167
|
-
|
|
168
|
-
- **Hover hint:** Pop a "Click to comment" tooltip when a line is hovered
|
|
169
|
-
- **Comment indicator:** Mark lines that already hold a comment with a badge (💬)
|
|
170
|
-
- **Toast notification:** Flash "Copied to clipboard!" after a copy
|
|
171
|
-
- **Edit existing:** Let users go back and revise comments they've already saved
|
|
172
|
-
|
|
173
|
-
## Example topics
|
|
174
|
-
|
|
175
|
-
- Git commit review (single commit diff with line comments)
|
|
176
|
-
- Pull request review (multiple commits, file-level and line-level comments)
|
|
177
|
-
- Code diff comparison (before/after refactoring)
|
|
178
|
-
- Merge conflict resolution (showing both versions with annotations)
|
|
179
|
-
- Code audit (security review with findings per line)
|
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
# Document Critique Template
|
|
2
|
-
|
|
3
|
-
Reach for this template when the playground exists to review and critique documents: SKILL.md files, READMEs, specs, proposals, or any text that calls for structured feedback through an approve/reject/comment workflow.
|
|
4
|
-
|
|
5
|
-
## Layout
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
+---------------------------+--------------------+
|
|
9
|
-
| | |
|
|
10
|
-
| Document content | Suggestions panel |
|
|
11
|
-
| with line numbers | (filterable list) |
|
|
12
|
-
| and suggestion | • Approve |
|
|
13
|
-
| highlighting | • Reject |
|
|
14
|
-
| | • Comment |
|
|
15
|
-
| | |
|
|
16
|
-
+---------------------------+--------------------+
|
|
17
|
-
| Prompt output (approved + commented items) |
|
|
18
|
-
| [ Copy Prompt ] |
|
|
19
|
-
+------------------------------------------------+
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
## Key components
|
|
23
|
-
|
|
24
|
-
### Document panel (left)
|
|
25
|
-
- Show the whole document alongside line numbers
|
|
26
|
-
- Flag lines that carry suggestions with a colored left border
|
|
27
|
-
- Color-code by status: pending (amber), approved (green), rejected (red, dimmed)
|
|
28
|
-
- Clicking a suggestion card scrolls to the line it points at
|
|
29
|
-
|
|
30
|
-
### Suggestions panel (right)
|
|
31
|
-
- Filter tabs: All / Pending / Approved / Rejected
|
|
32
|
-
- A header tally showing how many sit in each status
|
|
33
|
-
- Every suggestion card carries:
|
|
34
|
-
- Its line reference (for example "Line 3" or "Lines 17-24")
|
|
35
|
-
- The suggestion text itself
|
|
36
|
-
- Action buttons: Approve / Reject / Comment (or Reset once a decision is made)
|
|
37
|
-
- An optional textarea for the user's own comments
|
|
38
|
-
|
|
39
|
-
### Prompt output (bottom)
|
|
40
|
-
- Builds a prompt strictly from approved suggestions plus user comments
|
|
41
|
-
- Splits into: Approved Improvements, Additional Feedback, Rejected (kept for context)
|
|
42
|
-
- Copy button with "Copied!" feedback
|
|
43
|
-
|
|
44
|
-
## State structure
|
|
45
|
-
|
|
46
|
-
```javascript
|
|
47
|
-
const suggestions = [
|
|
48
|
-
{
|
|
49
|
-
id: 1,
|
|
50
|
-
lineRef: "Line 3",
|
|
51
|
-
targetText: "description: Creates interactive...",
|
|
52
|
-
suggestion: "The description is too long. Consider shortening.",
|
|
53
|
-
category: "clarity", // clarity, completeness, performance, accessibility, ux
|
|
54
|
-
status: "pending", // pending, approved, rejected
|
|
55
|
-
userComment: ""
|
|
56
|
-
},
|
|
57
|
-
// ... more suggestions
|
|
58
|
-
];
|
|
59
|
-
|
|
60
|
-
let state = {
|
|
61
|
-
suggestions: [...],
|
|
62
|
-
activeFilter: "all",
|
|
63
|
-
activeSuggestionId: null
|
|
64
|
-
};
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Suggestion matching to lines
|
|
68
|
-
|
|
69
|
-
Tie suggestions back to document lines by parsing the lineRef:
|
|
70
|
-
|
|
71
|
-
```javascript
|
|
72
|
-
const suggestion = state.suggestions.find(s => {
|
|
73
|
-
const match = s.lineRef.match(/Line[s]?\s*(\d+)/);
|
|
74
|
-
if (match) {
|
|
75
|
-
const targetLine = parseInt(match[1]);
|
|
76
|
-
return Math.abs(targetLine - lineNum) <= 2; // fuzzy match nearby lines
|
|
77
|
-
}
|
|
78
|
-
return false;
|
|
79
|
-
});
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
## Document rendering
|
|
83
|
-
|
|
84
|
-
Deal with markdown-style formatting inline:
|
|
85
|
-
|
|
86
|
-
```javascript
|
|
87
|
-
// Skip ``` lines, wrap content in code-block-wrapper
|
|
88
|
-
if (line.startsWith('```')) {
|
|
89
|
-
inCodeBlock = !inCodeBlock;
|
|
90
|
-
// Open or close wrapper div
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// Headers
|
|
94
|
-
if (line.startsWith('# ')) renderedLine = `<h1>...</h1>`;
|
|
95
|
-
if (line.startsWith('## ')) renderedLine = `<h2>...</h2>`;
|
|
96
|
-
|
|
97
|
-
// Inline formatting (outside code blocks)
|
|
98
|
-
renderedLine = renderedLine.replace(/`([^`]+)`/g, '<code>$1</code>');
|
|
99
|
-
renderedLine = renderedLine.replace(/\*\*([^*]+)\*\*/g, '<strong>$1</strong>');
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
## Prompt output generation
|
|
103
|
-
|
|
104
|
-
Keep it to items that can be acted on:
|
|
105
|
-
|
|
106
|
-
```javascript
|
|
107
|
-
function updatePrompt() {
|
|
108
|
-
const approved = state.suggestions.filter(s => s.status === 'approved');
|
|
109
|
-
const withComments = state.suggestions.filter(s => s.userComment?.trim());
|
|
110
|
-
|
|
111
|
-
if (approved.length === 0 && withComments.length === 0) {
|
|
112
|
-
// Show placeholder
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
let prompt = 'Please update [DOCUMENT] with the following changes:\n\n';
|
|
117
|
-
|
|
118
|
-
if (approved.length > 0) {
|
|
119
|
-
prompt += '## Approved Improvements\n\n';
|
|
120
|
-
for (const s of approved) {
|
|
121
|
-
prompt += `**${s.lineRef}:** ${s.suggestion}`;
|
|
122
|
-
if (s.userComment?.trim()) {
|
|
123
|
-
prompt += `\n → User note: ${s.userComment.trim()}`;
|
|
124
|
-
}
|
|
125
|
-
prompt += '\n\n';
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
// Additional feedback from non-approved items with comments
|
|
130
|
-
// Rejected items listed for context only
|
|
131
|
-
}
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
## Styling highlights
|
|
135
|
-
|
|
136
|
-
```css
|
|
137
|
-
.doc-line.has-suggestion {
|
|
138
|
-
border-left: 3px solid #bf8700; /* amber for pending */
|
|
139
|
-
background: rgba(191, 135, 0, 0.08);
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
.doc-line.approved {
|
|
143
|
-
border-left-color: #1a7f37; /* green */
|
|
144
|
-
background: rgba(26, 127, 55, 0.08);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
.doc-line.rejected {
|
|
148
|
-
border-left-color: #cf222e; /* red */
|
|
149
|
-
background: rgba(207, 34, 46, 0.08);
|
|
150
|
-
opacity: 0.6;
|
|
151
|
-
}
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
## Pre-populating suggestions
|
|
155
|
-
|
|
156
|
-
When assembling a critique playground for a particular document:
|
|
157
|
-
|
|
158
|
-
1. Read through the document's contents
|
|
159
|
-
2. Review it and draft suggestions that include:
|
|
160
|
-
- Precise line references
|
|
161
|
-
- Clear suggestion text that can be acted on
|
|
162
|
-
- Category tags (clarity, completeness, performance, accessibility, ux)
|
|
163
|
-
3. Bake both the document content and the suggestions array straight into the HTML
|
|
164
|
-
|
|
165
|
-
## Example use cases
|
|
166
|
-
|
|
167
|
-
- SKILL.md review (skill definition quality, completeness, clarity)
|
|
168
|
-
- README critique (documentation quality, missing sections, unclear explanations)
|
|
169
|
-
- Spec review (requirements clarity, missing edge cases, ambiguity)
|
|
170
|
-
- Proposal feedback (structure, argumentation, missing context)
|
|
171
|
-
- Code comment review (docstring quality, inline comment usefulness)
|
package/skills/pptx/SKILL.md
DELETED
|
@@ -1,230 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: pptx
|
|
3
|
-
description: "Reach for this skill whenever a .pptx file appears in a task, whether as a source, a result, or both. Covers building slide decks, pitch decks, and presentations; opening, parsing, or pulling text out of any .pptx (including cases where that text feeds something else like a summary or email); revising or refreshing decks that already exist; merging or separating slide files; and handling templates, layouts, speaker notes, or comments. Activate it whenever someone says \"deck,\" \"slides,\" or \"presentation,\" or names a .pptx file, no matter what they intend to do with the result. Any time a .pptx must be opened, generated, or modified, this skill applies."
|
|
4
|
-
license: WormClaude
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# PPTX Skill
|
|
8
|
-
|
|
9
|
-
## Quick Reference
|
|
10
|
-
|
|
11
|
-
| Task | Guide |
|
|
12
|
-
|------|-------|
|
|
13
|
-
| Read/analyze content | `extract-text presentation.pptx` |
|
|
14
|
-
| Edit or create from template | Read [editing.md](editing.md) |
|
|
15
|
-
| Create from scratch | Read [pptxgenjs.md](pptxgenjs.md) |
|
|
16
|
-
|
|
17
|
-
---
|
|
18
|
-
|
|
19
|
-
## Reading Content
|
|
20
|
-
|
|
21
|
-
```bash
|
|
22
|
-
# Text extraction, one `## Slide N` section per slide
|
|
23
|
-
extract-text presentation.pptx
|
|
24
|
-
|
|
25
|
-
# Visual overview
|
|
26
|
-
python scripts/thumbnail.py presentation.pptx
|
|
27
|
-
|
|
28
|
-
# Raw XML
|
|
29
|
-
python scripts/office/unpack.py presentation.pptx unpacked/
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## Editing Workflow
|
|
35
|
-
|
|
36
|
-
**See [editing.md](editing.md) for the complete walkthrough.**
|
|
37
|
-
|
|
38
|
-
1. Analyze template with `thumbnail.py`
|
|
39
|
-
2. Unpack → manipulate slides → edit content → clean → pack
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## Creating from Scratch
|
|
44
|
-
|
|
45
|
-
**See [pptxgenjs.md](pptxgenjs.md) for the complete walkthrough.**
|
|
46
|
-
|
|
47
|
-
Reach for this path when there's no template or reference deck to work from.
|
|
48
|
-
|
|
49
|
-
---
|
|
50
|
-
|
|
51
|
-
## Design Ideas
|
|
52
|
-
|
|
53
|
-
**Avoid dull slides.** A white background with plain bullets impresses no one. Pull ideas from the list below for each slide.
|
|
54
|
-
|
|
55
|
-
### Before Starting
|
|
56
|
-
|
|
57
|
-
- **Pick a bold, content-informed color palette**: The palette should feel built specifically for THIS subject. If you could drop the same colors into an unrelated deck and they'd still fit, your choices aren't distinctive enough.
|
|
58
|
-
- **Dominance over equality**: Let one color carry the bulk of the weight (60-70%), backed by 1-2 supporting tones and a single sharp accent. Avoid weighting every color the same.
|
|
59
|
-
- **Dark/light contrast**: Use dark backgrounds on the title and closing slides and lighter ones for the body (a "sandwich" layout). Alternatively, go dark across the whole deck for a premium look.
|
|
60
|
-
- **Commit to a visual motif**: Settle on ONE signature element and reuse it — rounded photo frames, icons set in colored circles, a heavy border on one edge. Keep it consistent on every slide.
|
|
61
|
-
|
|
62
|
-
### Color Palettes
|
|
63
|
-
|
|
64
|
-
Match the colors to your subject rather than reaching for plain blue. Treat these palettes as starting points:
|
|
65
|
-
|
|
66
|
-
| Theme | Primary | Secondary | Accent |
|
|
67
|
-
|-------|---------|-----------|--------|
|
|
68
|
-
| **Midnight Executive** | `1E2761` (navy) | `CADCFC` (ice blue) | `FFFFFF` (white) |
|
|
69
|
-
| **Forest & Moss** | `2C5F2D` (forest) | `97BC62` (moss) | `F5F5F5` (cream) |
|
|
70
|
-
| **Coral Energy** | `F96167` (coral) | `F9E795` (gold) | `2F3C7E` (navy) |
|
|
71
|
-
| **Warm Terracotta** | `B85042` (terracotta) | `E7E8D1` (sand) | `A7BEAE` (sage) |
|
|
72
|
-
| **Ocean Gradient** | `065A82` (deep blue) | `1C7293` (teal) | `21295C` (midnight) |
|
|
73
|
-
| **Charcoal Minimal** | `36454F` (charcoal) | `F2F2F2` (off-white) | `212121` (black) |
|
|
74
|
-
| **Teal Trust** | `028090` (teal) | `00A896` (seafoam) | `02C39A` (mint) |
|
|
75
|
-
| **Berry & Cream** | `6D2E46` (berry) | `A26769` (dusty rose) | `ECE2D0` (cream) |
|
|
76
|
-
| **Sage Calm** | `84B59F` (sage) | `69A297` (eucalyptus) | `50808E` (slate) |
|
|
77
|
-
| **Cherry Bold** | `990011` (cherry) | `FCF6F5` (off-white) | `2F3C7E` (navy) |
|
|
78
|
-
|
|
79
|
-
### For Each Slide
|
|
80
|
-
|
|
81
|
-
**Give every slide a visual anchor** — an image, chart, icon, or shape. Slides that are only text don't stick.
|
|
82
|
-
|
|
83
|
-
**Layout options:**
|
|
84
|
-
- Two-column (text left, illustration on right)
|
|
85
|
-
- Icon + text rows (icon in colored circle, bold header, description below)
|
|
86
|
-
- 2x2 or 2x3 grid (image on one side, grid of content blocks on other)
|
|
87
|
-
- Half-bleed image (full left or right side) with content overlay
|
|
88
|
-
|
|
89
|
-
**Data display:**
|
|
90
|
-
- Large stat callouts (big numbers 60-72pt with small labels below)
|
|
91
|
-
- Comparison columns (before/after, pros/cons, side-by-side options)
|
|
92
|
-
- Timeline or process flow (numbered steps, arrows)
|
|
93
|
-
|
|
94
|
-
**Visual polish:**
|
|
95
|
-
- Icons in small colored circles next to section headers
|
|
96
|
-
- Italic accent text for key stats or taglines
|
|
97
|
-
|
|
98
|
-
### Typography
|
|
99
|
-
|
|
100
|
-
**Go for a distinctive font pairing** — skip the automatic Arial. Choose a header face with character and team it with a clean body face.
|
|
101
|
-
|
|
102
|
-
| Header Font | Body Font |
|
|
103
|
-
|-------------|-----------|
|
|
104
|
-
| Georgia | Calibri |
|
|
105
|
-
| Arial Black | Arial |
|
|
106
|
-
| Calibri | Calibri Light |
|
|
107
|
-
| Cambria | Calibri |
|
|
108
|
-
| Trebuchet MS | Calibri |
|
|
109
|
-
| Impact | Arial |
|
|
110
|
-
| Palatino | Garamond |
|
|
111
|
-
| Consolas | Calibri |
|
|
112
|
-
|
|
113
|
-
| Element | Size |
|
|
114
|
-
|---------|------|
|
|
115
|
-
| Slide title | 36-44pt bold |
|
|
116
|
-
| Section header | 20-24pt bold |
|
|
117
|
-
| Body text | 14-16pt |
|
|
118
|
-
| Captions | 10-12pt muted |
|
|
119
|
-
|
|
120
|
-
### Spacing
|
|
121
|
-
|
|
122
|
-
- 0.5" minimum margins
|
|
123
|
-
- 0.3-0.5" between content blocks
|
|
124
|
-
- Let the layout breathe—don't pack every inch
|
|
125
|
-
|
|
126
|
-
### Avoid (Common Mistakes)
|
|
127
|
-
|
|
128
|
-
- **Don't reuse one layout throughout** — alternate columns, cards, and callouts from slide to slide
|
|
129
|
-
- **Don't center body text** — keep paragraphs and lists left-aligned; reserve centering for titles
|
|
130
|
-
- **Don't skimp on size contrast** — push titles to 36pt+ so they separate from 14-16pt body copy
|
|
131
|
-
- **Don't fall back on blue** — choose colors tied to the actual subject
|
|
132
|
-
- **Don't mix spacing randomly** — settle on 0.3" or 0.5" gaps and stick with one
|
|
133
|
-
- **Don't polish a single slide and ignore the others** — either commit across the board or keep everything plain
|
|
134
|
-
- **Don't build text-only slides** — bring in images, icons, charts, or other visuals; steer clear of bare title + bullets
|
|
135
|
-
- **Don't overlook text box padding** — when lining up lines or shapes with text edges, set `margin: 0` on the text box or shift the shape to compensate for the padding
|
|
136
|
-
- **Don't use low-contrast elements** — both icons and text must stand out clearly from the background; avoid pale text on pale backgrounds or dark text on dark backgrounds
|
|
137
|
-
- **NEVER use accent lines under titles** — they're a telltale sign of AI-generated slides; rely on whitespace or background color instead
|
|
138
|
-
- **Don't add decorative full-width colored bars/rectangles** — header/footer bars, side ribbons, or colored stripes look like AI slop unless the user specifically asks for them
|
|
139
|
-
- **Don't reach for cream/beige backgrounds by default** — with no background specified, go with white (`FFFFFF`) or the user's brand colors; skip warm-neutral defaults like `F5F5DC`, `FAF0E6`, `FAEBD7`, `FFF8E1`
|
|
140
|
-
- **Don't ship text that spills out of its shape** — if it won't fit, shrink the font, break it across slides, or grow the container; never leave content clipped or running past its bounds
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
## QA (Required)
|
|
145
|
-
|
|
146
|
-
Expect the first render to carry a handful of genuine problems — overlaps, overflow, things out of alignment. Track those down, fix them, and then stop. Don't keep tweaking coordinates by tiny amounts or hunt for a flawless render.
|
|
147
|
-
|
|
148
|
-
Act instead of narrating: keep the chatter between tool calls to a minimum. Run the check, make the fix, keep going.
|
|
149
|
-
|
|
150
|
-
### Content QA
|
|
151
|
-
|
|
152
|
-
```bash
|
|
153
|
-
extract-text output.pptx
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
Look for dropped content, typos, and wrong ordering.
|
|
157
|
-
|
|
158
|
-
**With templates, scan for placeholder text left behind:**
|
|
159
|
-
|
|
160
|
-
```bash
|
|
161
|
-
extract-text output.pptx | grep -iE "\bx{3,}\b|lorem|ipsum|\bTODO|\[insert|this.*(page|slide).*layout"
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
If grep turns up matches, resolve them before calling the job done.
|
|
165
|
-
|
|
166
|
-
### Visual QA
|
|
167
|
-
|
|
168
|
-
**⚠️ USE SUBAGENTS** — even for just 2-3 slides. After staring at the code you'll perceive what you intended rather than what's actually rendered. A subagent comes in with fresh eyes.
|
|
169
|
-
|
|
170
|
-
Render the slides to images (see [Converting to Images](#converting-to-images)), then hand over this prompt:
|
|
171
|
-
|
|
172
|
-
```
|
|
173
|
-
Visually inspect these slides for user-visible defects.
|
|
174
|
-
|
|
175
|
-
Look for:
|
|
176
|
-
- Overlapping elements (text through shapes, lines through words, stacked elements)
|
|
177
|
-
- Text overflow or cut off at edges/box boundaries
|
|
178
|
-
- Decorative lines positioned for single-line text but title wrapped to two lines
|
|
179
|
-
- Source citations or footers colliding with content above
|
|
180
|
-
- Elements too close (< 0.3" gaps) or cards/sections nearly touching
|
|
181
|
-
- Uneven gaps (large empty area in one place, cramped in another)
|
|
182
|
-
- Insufficient margin from slide edges (< 0.5")
|
|
183
|
-
- Columns or similar elements not aligned consistently
|
|
184
|
-
- Low-contrast text (e.g., light gray text on cream-colored background)
|
|
185
|
-
- Low-contrast icons (e.g., dark icons on dark backgrounds without a contrasting circle)
|
|
186
|
-
- Text boxes too narrow causing excessive wrapping
|
|
187
|
-
- Leftover placeholder content
|
|
188
|
-
|
|
189
|
-
For each slide, list user-visible issues. Skip sub-pixel positioning and cosmetic nitpicks a viewer wouldn't notice.
|
|
190
|
-
|
|
191
|
-
Read and analyze these images — run `ls -1 "$PWD"/slide-*.jpg` and use the exact absolute paths it prints:
|
|
192
|
-
1. <absolute-path>/slide-N.jpg — (Expected: [brief description])
|
|
193
|
-
2. <absolute-path>/slide-N.jpg — (Expected: [brief description])
|
|
194
|
-
...
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
### Verification Loop
|
|
198
|
-
|
|
199
|
-
1. Build slides → render to images → inspect
|
|
200
|
-
2. **Start with text bounds** — for each text box, verify the rendered text stays inside its shape. Overflow is the most frequent defect and always shows up to the viewer.
|
|
201
|
-
3. Note any further problems you spot
|
|
202
|
-
4. Fix them
|
|
203
|
-
5. Re-check only the slides you changed
|
|
204
|
-
6. **Halt after a single fix-and-verify pass** unless a fresh *user-visible* defect surfaces (overlap, overflow, missing content). Don't loop over sub-pixel placement, small color adjustments, or anything a viewer wouldn't catch.
|
|
205
|
-
|
|
206
|
-
---
|
|
207
|
-
|
|
208
|
-
## Converting to Images
|
|
209
|
-
|
|
210
|
-
Turn a presentation into one image per slide for visual review:
|
|
211
|
-
|
|
212
|
-
```bash
|
|
213
|
-
python scripts/office/soffice.py --headless --convert-to pdf output.pptx
|
|
214
|
-
rm -f slide-*.jpg
|
|
215
|
-
pdftoppm -jpeg -r 150 output.pdf slide
|
|
216
|
-
ls -1 "$PWD"/slide-*.jpg
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
**Feed the absolute paths printed above straight into the view tool.** The `rm` wipes out leftover images from earlier runs. `pdftoppm` zero-pads according to the page count: `slide-1.jpg` for decks below 10 pages, `slide-01.jpg` for 10-99, and `slide-001.jpg` from 100 up.
|
|
220
|
-
|
|
221
|
-
**Once you've made fixes, run all four commands again** — the PDF has to be rebuilt from the updated `.pptx` before `pdftoppm` can pick up your changes.
|
|
222
|
-
|
|
223
|
-
---
|
|
224
|
-
|
|
225
|
-
## Dependencies
|
|
226
|
-
|
|
227
|
-
- `pip install Pillow` - thumbnail grids
|
|
228
|
-
- `npm install -g pptxgenjs` - building from scratch
|
|
229
|
-
- LibreOffice (`soffice`) - PDF conversion (set up automatically for sandboxed environments through `scripts/office/soffice.py`)
|
|
230
|
-
- Poppler (`pdftoppm`) - PDF to images
|