@taloswork/ose-shared 0.1.10 → 0.1.12
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/package.json +3 -3
- package/skills/document/SKILL.md +143 -215
- package/skills/document/art-directions/base.css +27 -2
- package/skills/document/art-directions/cinematic-depth.css +3 -1
- package/skills/document/art-directions/collage-paper.css +5 -1
- package/skills/document/art-directions/editorial-cut.css +5 -1
- package/skills/document/art-directions/geometric-pop.css +6 -0
- package/skills/document/art-directions/gradient-mesh.css +5 -1
- package/skills/document/art-directions/illustrated-doodle.css +5 -0
- package/skills/document/art-directions/luxury-ornament.css +4 -1
- package/skills/document/art-directions/maximalist-blocks.css +6 -0
- package/skills/document/art-directions/technical-grid.css +4 -0
- package/skills/document/assets/fonts/fonts.json +2 -2
- package/skills/document/assets/pdf-fonts/NotoSansSC-PDF-Bold.ttf +0 -0
- package/skills/document/assets/pdf-fonts/NotoSansSC-PDF-Regular.ttf +0 -0
- package/skills/document/assets/pdf-fonts/OFL.txt +93 -0
- package/skills/document/assets/pdf-fonts/README.md +35 -0
- package/skills/document/assets/tessdata/LICENSE-Apache-2.0.txt +202 -0
- package/skills/document/assets/tessdata/README.md +21 -0
- package/skills/document/assets/tessdata/chi_sim.traineddata.gz +0 -0
- package/skills/document/assets/tessdata/eng.traineddata.gz +0 -0
- package/skills/document/bin/deck-build.cjs +2311 -41
- package/skills/document/bin/deck-chart.cjs +762 -0
- package/skills/document/bin/deck-plan.cjs +802 -0
- package/skills/document/bin/deck-qa.cjs +984 -249
- package/skills/document/bin/deck-scenario.cjs +1346 -0
- package/skills/document/bin/doc-convert.cjs +130 -39
- package/skills/document/bin/doc-fill.cjs +73121 -170
- package/skills/document/bin/doc-gen.cjs +625 -68
- package/skills/document/bin/doc-run.cjs +162 -24
- package/skills/document/bin/doc-scan.cjs +13 -0
- package/skills/document/bin/doc-text.cjs +13 -0
- package/skills/document/bin/doc-validate.cjs +718 -23
- package/skills/document/bin/doc-xml.cjs +9 -5
- package/skills/document/bin/docx-annotate.cjs +95 -19
- package/skills/document/bin/fontkit.cjs +1 -0
- package/skills/document/bin/html2pptx.cjs +1372 -121
- package/skills/document/bin/ocr-worker.cjs +1 -0
- package/skills/document/bin/ocr.cjs +131 -40
- package/skills/document/bin/pdf-form.cjs +674 -177
- package/skills/document/bin/pdf-images.cjs +13 -0
- package/skills/document/bin/pdf-ops.cjs +634 -199
- package/skills/document/bin/pdf-render.cjs +19 -3
- package/skills/document/bin/pdf-tables.cjs +13 -0
- package/skills/document/bin/pptx-clone.cjs +3 -3
- package/skills/document/bin/pptx-slide.cjs +3 -3
- package/skills/document/bin/xlsx-query.cjs +192 -61
- package/skills/document/bin-reference.md +56 -33
- package/skills/document/content-pipeline.md +129 -242
- package/skills/document/deck-design.md +355 -638
- package/skills/document/layouts/README.md +46 -33
- package/skills/document/layouts/capacity.json +1 -0
- package/skills/document/layouts/slots.json +1 -1
- package/skills/document/layouts/toc-panel.tpl +1 -1
- package/skills/document/motion/README.md +3 -2
- package/skills/document/office.md +3 -3
- package/skills/document/packs/board-brief/backdrop.html +2 -0
- package/skills/document/packs/board-brief/pack.css +2 -1
- package/skills/document/packs/mckinsey-photo/backdrop.html +2 -0
- package/skills/document/packs/mckinsey-photo/pack.css +2 -1
- package/skills/document/packs/press-room/backdrop.html +2 -0
- package/skills/document/packs/press-room/pack.css +2 -1
- package/skills/document/packs/prismatic-3d/backdrop.html +2 -0
- package/skills/document/packs/prismatic-3d/pack.css +4 -1
- package/skills/document/pdf.md +53 -49
- package/skills/document/rewrite.md +241 -308
- package/skills/document/scenarios.json +1290 -0
- package/skills/document/scenarios.schema.json +103 -0
- package/skills/document/styles/README.md +15 -25
- package/skills/document/styles/_contract-defaults.css +25 -1
- package/skills/document/styles/anthropic/skin.css +6 -3
- package/skills/document/styles/apple/skin.css +4 -3
- package/skills/document/styles/bistro-warm/backdrop.html +2 -0
- package/skills/document/styles/bistro-warm/skin.css +4 -1
- package/skills/document/styles/black-gold/skin.css +6 -5
- package/skills/document/styles/bold-clash/backdrop.html +2 -0
- package/skills/document/styles/bold-clash/skin.css +2 -1
- package/skills/document/styles/branding/skin.css +4 -4
- package/skills/document/styles/campus-teal/backdrop.html +2 -0
- package/skills/document/styles/campus-teal/skin.css +2 -1
- package/skills/document/styles/cinereel/skin.css +7 -3
- package/skills/document/styles/clinic-care/backdrop.html +2 -0
- package/skills/document/styles/clinic-care/skin.css +2 -1
- package/skills/document/styles/cool/skin.css +6 -5
- package/skills/document/styles/dark-glass/backdrop.html +2 -0
- package/skills/document/styles/dark-glass/skin.css +2 -1
- package/skills/document/styles/gov-brief/backdrop.html +2 -0
- package/skills/document/styles/gov-brief/skin.css +2 -1
- package/skills/document/styles/grid-tech/backdrop.html +2 -0
- package/skills/document/styles/grid-tech/skin.css +2 -1
- package/skills/document/styles/hand-drawn/skin.css +3 -3
- package/skills/document/styles/ivory-gold/skin.css +7 -6
- package/skills/document/styles/legal-slate/backdrop.html +2 -0
- package/skills/document/styles/legal-slate/skin.css +2 -1
- package/skills/document/styles/magazine-ink/skin.css +4 -3
- package/skills/document/styles/mckinsey/skin.css +2 -1
- package/skills/document/styles/memphis/backdrop.html +2 -0
- package/skills/document/styles/memphis/skin.css +2 -1
- package/skills/document/styles/mono/skin.css +6 -2
- package/skills/document/styles/neon-cyber/backdrop.html +2 -0
- package/skills/document/styles/neon-cyber/skin.css +2 -1
- package/skills/document/styles/olive-gold/skin.css +7 -6
- package/skills/document/styles/organic-earth/backdrop.html +2 -0
- package/skills/document/styles/organic-earth/skin.css +2 -1
- package/skills/document/styles/pastel-saas/backdrop.html +2 -0
- package/skills/document/styles/pastel-saas/skin.css +2 -1
- package/skills/document/styles/portfolio-noir/backdrop.html +2 -0
- package/skills/document/styles/portfolio-noir/skin.css +2 -1
- package/skills/document/styles/retro-press/backdrop.html +2 -0
- package/skills/document/styles/retro-press/skin.css +2 -1
- package/skills/document/styles/sport-arena/backdrop.html +2 -0
- package/skills/document/styles/sport-arena/skin.css +4 -1
- package/skills/document/styles/swiss-grid/skin.css +10 -5
- package/skills/document/styles/wedding-blush/backdrop.html +2 -0
- package/skills/document/styles/wedding-blush/skin.css +4 -1
- package/skills/document/theme-system.md +85 -77
- package/skills/document/themes/README.md +7 -5
- package/skills/document/vision.md +8 -5
- package/skills/document/xlsx.md +15 -25
- package/skills/cozy-static-svg/SKILL.md +0 -76
- package/skills/cozy-static-svg/references/approved-preview.png +0 -0
- package/skills/cozy-static-svg/references/cross-platform.md +0 -73
- package/skills/cozy-static-svg/references/moon_keeps_watch.svg +0 -229
- package/skills/cozy-static-svg/references/style-anchor.md +0 -271
- package/skills/cozy-static-svg/scripts/artkit.py +0 -321
- package/skills/cozy-static-svg/scripts/to_png.py +0 -333
|
@@ -1 +1 @@
|
|
|
1
|
-
{"banner-columns":{"slots":["banner","col1_title","b1","b2","col2_title","b3","b4","col3_title","b5"],"chart":false},"bento":{"slots":["eyebrow","title","big_title","big_num","big_unit","big_body","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","card4_title","card4_body","footer","pageno"],"chart":false},"big-stat":{"slots":["eyebrow","title","stat","unit","lead","note","footer","pageno"],"chart":false},"blocks-2x2":{"slots":["eyebrow","title","intro","block1_title","block1_body","block2_title","block2_body","block3_title","block3_body","block4_title","block4_body","quote","quote_attr","refs","footer","pageno"],"chart":false},"brand-values":{"slots":["eyebrow","title","footer","pageno"],"rows":{"values":["name","body"]},"chart":false},"business-model":{"slots":["eyebrow","title","tag","stream1_label","stream1_value","stream1_body","stream2_label","stream2_value","stream2_body","stream3_label","stream3_value","stream3_body","econ1_label","econ1","econ2_label","econ2","footer","pageno"],"chart":false},"cards-3":{"slots":["eyebrow","title","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","footer","pageno"],"chart":false},"cards-grid":{"slots":["eyebrow","title","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","card4_title","card4_body","card5_title","card5_body","card6_title","card6_body","footer","pageno"],"chart":false},"chart-full":{"slots":["eyebrow","title","lead","source","footer","pageno"],"chart":true},"chart-kpi":{"slots":["eyebrow","title","kpi1_num","kpi1_unit","kpi1_label","kpi2_num","kpi2_unit","kpi2_label","footer","pageno"],"chart":true},"color-palette":{"slots":["eyebrow","title","footer","pageno"],"rows":{"swatches":["name","hex"]},"chart":false},"comparison":{"slots":["eyebrow","title","colA_title","dim1","colA_v1","dim2","colA_v2","dim3","colA_v3","badge","colB_title","colB_v1","colB_v2","colB_v3","colC_title","colC_v1","colC_v2","colC_v3","footer","pageno"],"chart":false},"concept-hub":{"slots":["eyebrow","title","center_title","center_body","node1_title","node1_body","node2_title","node2_body","node3_title","node3_body","node4_title","node4_body","footer","pageno"],"chart":false},"cover-centered":{"slots":["eyebrow","title","subtitle","meta"],"chart":false},"cover-image":{"slots":["image_label","eyebrow","title","subtitle"],"chart":false},"cover-minimal":{"slots":["title","subtitle","meta"],"chart":false},"cover-statement":{"slots":["eyebrow","statement","meta"],"chart":false},"cover":{"slots":["eyebrow","title","subtitle","presenter","date"],"chart":false},"customer-proof":{"slots":["eyebrow","title","quote","person","role","metric1_label","metric1","metric2_label","metric2","logo1","logo2","logo3","logo4","footer","pageno"],"chart":false},"data-table":{"slots":["eyebrow","title","col0","col1","col2","col3","r1_key","r1c1","r1c2","r1c3","r2_key","r2c1","r2c2","r2c3","r3_key","r3c1","r3c2","r3c3","r4_key","r4c1","r4c2","r4c3","footer","pageno"],"chart":false},"dos-donts":{"slots":["eyebrow","do_head","do1","do2","do3","do4","dont_head","dont1","dont2","dont3","dont4","footer","pageno"],"chart":false},"editorial-panel":{"slots":["eyebrow","title","lead1","lead2","quote","quote_attr","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","card4_title","card4_body","list_title","list1","list2","list3","list4","note"],"chart":false},"ending-contact":{"slots":["eyebrow","title","email","phone","web","addr"],"chart":false},"ending":{"slots":["eyebrow","title","sub","contact"],"chart":false},"funding-ask":{"slots":["eyebrow","round","ask","runway","title","use1","pct1","use2","pct2","use3","pct3","footer","pageno"],"chart":false},"funnel":{"slots":["eyebrow","title","s1_label","s1_val","s2_label","s2_val","s3_label","s3_val","s4_label","s4_val","rate_label","rate","footer","pageno"],"chart":false},"gantt":{"slots":["eyebrow","title","footer","pageno"],"rows":{"cols":["label"],"tasks":["name","from","to"]},"chart":false},"hero":{"slots":["eyebrow","title","sub"],"chart":false},"icon-row":{"slots":["eyebrow","title","item1_title","item1_body","item2_title","item2_body","item3_title","item3_body","item4_title","item4_body","footer","pageno"],"chart":false},"image-full":{"slots":["image_label","eyebrow","title","caption","pageno"],"chart":false},"image-grid":{"slots":["eyebrow","title","img1_label","img1_title","img1_body","img2_label","img2_title","img2_body","img3_label","img3_title","img3_body","footer","pageno"],"chart":false},"image-left":{"slots":["eyebrow","title","image_label","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","footer","pageno"],"chart":false},"list":{"slots":["eyebrow","title","item1_title","item1_desc","item2_title","item2_desc","item3_title","item3_desc","item4_title","item4_desc","footer","pageno"],"chart":false},"logo-guidelines":{"slots":["eyebrow","title","wordmark","tagline","v1_label","v2_label","v3_label","footer","pageno"],"chart":false},"map-distribution":{"slots":["eyebrow","title","footer","pageno"],"rows":{"pins":["x","y"],"regions":["name","pct"]},"chart":false},"map-quad":{"slots":["title","q1_num","q1_unit","q1_label","q1_note","q2_num","q2_unit","q2_label","q2_note","q3_num","q3_unit","q3_label","q3_note","q4_num","q4_unit","q4_label","q4_note","footer","pageno"],"chart":false},"market-rings":{"slots":["eyebrow","title","body","growth","tam_label","tam","sam_label","sam","som_label","som","footer","pageno"],"chart":false},"matrix-2x2":{"slots":["eyebrow","title","q1_title","q1_body","q2_title","q2_body","q3_title","q3_body","q4_title","q4_body","footer","pageno"],"chart":false},"numbered-brief":{"slots":["title","para1","para2","quote","source","right_title","item1_title","item2_title","item3_title","item4_title","source_label","source_note","pageno"],"chart":false},"org-tree":{"slots":["eyebrow","title","top","dept1_title","dept1_body","dept2_title","dept2_body","dept3_title","dept3_body","footer","pageno"],"chart":false},"pitch-problem":{"slots":["eyebrow","title","stat_label","stat","stat_note","point1_title","point1_body","point2_title","point2_body","point3_title","point3_body","footer","pageno"],"chart":false},"pitch-solution":{"slots":["badge","title","lead","pillar1_title","pillar1_body","pillar2_title","pillar2_body","pillar3_title","pillar3_body","footer","pageno"],"chart":false},"pricing-tiers":{"slots":["eyebrow","title","tier1","price1","unit1","tier1_title","tier1_body","featured","tier2","price2","unit2","tier2_title","tier2_body","tier3","price3","unit3","tier3_title","tier3_body","footer","pageno"],"chart":false},"problem-solution-banner":{"slots":["problem_label","problem_body","image_label","solution_body","solution_label"],"chart":false},"problem-solution":{"slots":["eyebrow","title","problem_title","problem_1","problem_2","problem_3","solution_title","solution_1","solution_2","solution_3","footer","pageno"],"chart":false},"product-device":{"slots":["eyebrow","title","body","feature1","feature2","feature3","media_label","screen_title","screen_note","footer","pageno"],"chart":false},"pyramid":{"slots":["eyebrow","title","level1","level2","level3","level4","footer","pageno"],"chart":false},"quote-aside":{"slots":["quote","source","footer","pageno"],"chart":false},"quote":{"slots":["eyebrow","quote","source","footer","pageno"],"chart":false},"radar":{"slots":["eyebrow","title","footer","pageno"],"rows":{"metrics":["name","score"]},"chart":"derived"},"ring-progress":{"slots":["eyebrow","title","footer","pageno"],"rows":{"rings":["label","pct","note"]},"chart":false},"section-fullbleed":{"slots":["image_label","desc","index","title"],"chart":false},"section-image":{"slots":["index","eyebrow","title","desc","image_label","footer","pageno"],"chart":false},"section-stat":{"slots":["eyebrow","title","desc","stat","unit","stat_label","footer","pageno"],"chart":false},"section":{"slots":["index","eyebrow","title","desc","footer","pageno"],"chart":false},"split-two-col":{"slots":["eyebrow","title","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","image_label","footer","pageno"],"chart":false},"stats-chart":{"slots":["brand1","brand2","brand3","title","note"],"chart":true},"steps-serpentine":{"slots":["eyebrow","title","step1_title","step1_body","step2_title","step2_body","step3_title","step3_body","step4_title","step4_body","step5_title","step5_body","step6_title","step6_body","step7_title","step7_body","step8_title","step8_body"],"chart":false},"steps-vertical":{"slots":["eyebrow","title","footer","pageno"],"rows":{"steps":["name","body"]},"chart":false},"steps":{"slots":["eyebrow","title","step1_title","step1_body","step2_title","step2_body","step3_title","step3_body","step4_title","step4_body","footer","pageno"],"chart":false},"team-founders":{"slots":["eyebrow","title","lead","f1_initials","f1_name","f1_role","f1_bio","f2_initials","f2_name","f2_role","f2_bio","f3_initials","f3_name","f3_role","f3_bio","footer","pageno"],"chart":false},"team-row":{"slots":["eyebrow","title","footer","pageno"],"rows":{"members":["name","role"]},"chart":false},"three-kpi":{"slots":["eyebrow","title","kpi1_num","kpi1_unit","kpi1_name","kpi1_desc","kpi2_num","kpi2_unit","kpi2_name","kpi2_desc","kpi3_num","kpi3_unit","kpi3_name","kpi3_desc","footer","pageno"],"chart":false},"timeline":{"slots":["eyebrow","title","item1_date","item1_title","item1_desc","item2_date","item2_title","item2_desc","item3_date","item3_title","item3_desc","item4_date","item4_title","item4_desc","footer","pageno"],"chart":false},"title-meta":{"slots":["index","eyebrow","title","subtitle","meta"],"chart":false},"title":{"slots":["eyebrow","title"],"chart":false},"toc-agenda":{"slots":["eyebrow","title","item1_title","item1_dur","item2_title","item2_dur","item3_title","item3_dur","item4_title","item4_dur","item5_title","item5_dur","footer","pageno"],"chart":false},"toc-editorial":{"slots":["item1_title","item1_desc","item2_title","item2_desc","item3_title","item3_desc","item4_title","item4_desc","title","desc","footer","pageno"],"chart":false},"toc-panel":{"slots":["brand1","brand2","brand3","title"],"rows":{"entries":["name","desc"]},"chart":false},"toc":{"slots":["eyebrow","title","item1_title","item1_desc","item2_title","item2_desc","item3_title","item3_desc","item4_title","item4_desc","footer","pageno"],"chart":false},"traction-milestones":{"slots":["eyebrow","title","metric1_label","metric1","metric2_label","metric2","metric3_label","metric3","m1_date","m1","m2_date","m2","m3_date","m3","m4_date","m4","footer","pageno"],"chart":false},"transition":{"slots":["eyebrow","number","title"],"chart":false},"two-kpi":{"slots":["eyebrow","title","kpi1_num","kpi1_unit","kpi1_label","kpi2_num","kpi2_unit","kpi2_label","footer","pageno"],"chart":false},"type-specimen":{"slots":["eyebrow","title","specimen","font_name","weights","heading_label","heading_sample","body_label","body_sample","charset","footer","pageno"],"chart":false},"versus":{"slots":["eyebrow","title","before_title","before_num","before_body","after_title","after_num","after_body","footer","pageno"],"chart":false}}
|
|
1
|
+
{"banner-columns":{"slots":["banner","col1_title","b1","b2","col2_title","b3","b4","col3_title","b5"],"chart":false},"bento":{"slots":["eyebrow","title","big_title","big_num","big_unit","big_body","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","card4_title","card4_body","footer","pageno"],"chart":false},"big-stat":{"slots":["eyebrow","title","stat","unit","lead","note","footer","pageno"],"chart":false},"blocks-2x2":{"slots":["eyebrow","title","intro","block1_title","block1_body","block2_title","block2_body","block3_title","block3_body","block4_title","block4_body","quote","quote_attr","refs","footer","pageno"],"chart":false},"brand-values":{"slots":["eyebrow","title","footer","pageno"],"rows":{"values":["name","body"]},"chart":false},"business-model":{"slots":["eyebrow","title","tag","stream1_label","stream1_value","stream1_body","stream2_label","stream2_value","stream2_body","stream3_label","stream3_value","stream3_body","econ1_label","econ1","econ2_label","econ2","footer","pageno"],"chart":false},"cards-3":{"slots":["eyebrow","title","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","footer","pageno"],"chart":false},"cards-grid":{"slots":["eyebrow","title","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","card4_title","card4_body","card5_title","card5_body","card6_title","card6_body","footer","pageno"],"chart":false},"chart-full":{"slots":["eyebrow","title","lead","source","footer","pageno"],"chart":true},"chart-kpi":{"slots":["eyebrow","title","kpi1_num","kpi1_unit","kpi1_label","kpi2_num","kpi2_unit","kpi2_label","footer","pageno"],"chart":true},"color-palette":{"slots":["eyebrow","title","footer","pageno"],"rows":{"swatches":["name","hex"]},"chart":false},"comparison":{"slots":["eyebrow","title","colA_title","dim1","colA_v1","dim2","colA_v2","dim3","colA_v3","badge","colB_title","colB_v1","colB_v2","colB_v3","colC_title","colC_v1","colC_v2","colC_v3","footer","pageno"],"chart":false},"concept-hub":{"slots":["eyebrow","title","center_title","center_body","node1_title","node1_body","node2_title","node2_body","node3_title","node3_body","node4_title","node4_body","footer","pageno"],"chart":false},"cover-centered":{"slots":["eyebrow","title","subtitle","meta"],"chart":false},"cover-image":{"slots":["image_label","eyebrow","title","subtitle"],"chart":false},"cover-minimal":{"slots":["title","subtitle","meta"],"chart":false},"cover-statement":{"slots":["eyebrow","statement","meta"],"chart":false},"cover":{"slots":["eyebrow","title","subtitle","presenter","date"],"chart":false},"customer-proof":{"slots":["eyebrow","title","quote","person","role","metric1_label","metric1","metric2_label","metric2","logo1","logo2","logo3","logo4","footer","pageno"],"chart":false},"data-table":{"slots":["eyebrow","title","col0","col1","col2","col3","r1_key","r1c1","r1c2","r1c3","r2_key","r2c1","r2c2","r2c3","r3_key","r3c1","r3c2","r3c3","r4_key","r4c1","r4c2","r4c3","footer","pageno"],"chart":false},"dos-donts":{"slots":["eyebrow","do_head","do1","do2","do3","do4","dont_head","dont1","dont2","dont3","dont4","footer","pageno"],"chart":false},"editorial-panel":{"slots":["eyebrow","title","lead1","lead2","quote","quote_attr","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","card4_title","card4_body","list_title","list1","list2","list3","list4","note"],"chart":false},"ending-contact":{"slots":["eyebrow","title","email","phone","web","addr"],"chart":false},"ending":{"slots":["eyebrow","title","sub","contact"],"chart":false},"funding-ask":{"slots":["eyebrow","round","ask","runway","title","use1","pct1","use2","pct2","use3","pct3","footer","pageno"],"chart":false},"funnel":{"slots":["eyebrow","title","s1_label","s1_val","s2_label","s2_val","s3_label","s3_val","s4_label","s4_val","rate_label","rate","footer","pageno"],"chart":false},"gantt":{"slots":["eyebrow","title","footer","pageno"],"rows":{"cols":["label"],"tasks":["name","from","to"]},"chart":false},"hero":{"slots":["eyebrow","title","sub"],"chart":false},"icon-row":{"slots":["eyebrow","title","item1_title","item1_body","item2_title","item2_body","item3_title","item3_body","item4_title","item4_body","footer","pageno"],"chart":false},"image-full":{"slots":["image_label","eyebrow","title","caption","pageno"],"chart":false},"image-grid":{"slots":["eyebrow","title","img1_label","img1_title","img1_body","img2_label","img2_title","img2_body","img3_label","img3_title","img3_body","footer","pageno"],"chart":false},"image-left":{"slots":["eyebrow","title","image_label","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","footer","pageno"],"chart":false},"list":{"slots":["eyebrow","title","item1_title","item1_desc","item2_title","item2_desc","item3_title","item3_desc","item4_title","item4_desc","footer","pageno"],"chart":false},"logo-guidelines":{"slots":["eyebrow","title","wordmark","tagline","v1_label","v2_label","v3_label","footer","pageno"],"chart":false},"map-distribution":{"slots":["eyebrow","title","footer","pageno"],"rows":{"pins":["x","y"],"regions":["name","pct"]},"chart":false},"map-quad":{"slots":["title","q1_num","q1_unit","q1_label","q1_note","q2_num","q2_unit","q2_label","q2_note","q3_num","q3_unit","q3_label","q3_note","q4_num","q4_unit","q4_label","q4_note","footer","pageno"],"chart":false},"market-rings":{"slots":["eyebrow","title","body","growth","tam_label","tam","sam_label","sam","som_label","som","footer","pageno"],"chart":false},"matrix-2x2":{"slots":["eyebrow","title","q1_title","q1_body","q2_title","q2_body","q3_title","q3_body","q4_title","q4_body","footer","pageno"],"chart":false},"numbered-brief":{"slots":["title","para1","para2","quote","source","right_title","item1_title","item2_title","item3_title","item4_title","source_label","source_note","pageno"],"chart":false},"org-tree":{"slots":["eyebrow","title","top","dept1_title","dept1_body","dept2_title","dept2_body","dept3_title","dept3_body","footer","pageno"],"chart":false},"pitch-problem":{"slots":["eyebrow","title","stat_label","stat","stat_note","point1_title","point1_body","point2_title","point2_body","point3_title","point3_body","footer","pageno"],"chart":false},"pitch-solution":{"slots":["badge","title","lead","pillar1_title","pillar1_body","pillar2_title","pillar2_body","pillar3_title","pillar3_body","footer","pageno"],"chart":false},"pricing-tiers":{"slots":["eyebrow","title","tier1","price1","unit1","tier1_title","tier1_body","featured","tier2","price2","unit2","tier2_title","tier2_body","tier3","price3","unit3","tier3_title","tier3_body","footer","pageno"],"chart":false},"problem-solution-banner":{"slots":["problem_label","problem_body","image_label","solution_body","solution_label"],"chart":false},"problem-solution":{"slots":["eyebrow","title","problem_title","problem_1","problem_2","problem_3","solution_title","solution_1","solution_2","solution_3","footer","pageno"],"chart":false},"product-device":{"slots":["eyebrow","title","body","feature1","feature2","feature3","media_label","screen_title","screen_note","footer","pageno"],"chart":false},"pyramid":{"slots":["eyebrow","title","level1","level2","level3","level4","footer","pageno"],"chart":false},"quote-aside":{"slots":["quote","source","footer","pageno"],"chart":false},"quote":{"slots":["eyebrow","quote","source","footer","pageno"],"chart":false},"radar":{"slots":["eyebrow","title","footer","pageno"],"rows":{"metrics":["name","score"]},"chart":"derived"},"ring-progress":{"slots":["eyebrow","title","footer","pageno"],"rows":{"rings":["label","pct","note"]},"chart":false},"section-fullbleed":{"slots":["image_label","desc","index","title"],"chart":false},"section-image":{"slots":["index","eyebrow","title","desc","image_label","footer","pageno"],"chart":false},"section-stat":{"slots":["eyebrow","title","desc","stat","unit","stat_label","footer","pageno"],"chart":false},"section":{"slots":["index","eyebrow","title","desc","footer","pageno"],"chart":false},"split-two-col":{"slots":["eyebrow","title","card1_title","card1_body","card2_title","card2_body","card3_title","card3_body","image_label","footer","pageno"],"chart":false},"stats-chart":{"slots":["brand1","brand2","brand3","title","note"],"chart":true},"steps-serpentine":{"slots":["eyebrow","title","step1_title","step1_body","step2_title","step2_body","step3_title","step3_body","step4_title","step4_body","step5_title","step5_body","step6_title","step6_body","step7_title","step7_body","step8_title","step8_body"],"chart":false},"steps-vertical":{"slots":["eyebrow","title","footer","pageno"],"rows":{"steps":["name","body"]},"chart":false},"steps":{"slots":["eyebrow","title","step1_title","step1_body","step2_title","step2_body","step3_title","step3_body","step4_title","step4_body","footer","pageno"],"chart":false},"team-founders":{"slots":["eyebrow","title","lead","f1_initials","f1_name","f1_role","f1_bio","f2_initials","f2_name","f2_role","f2_bio","f3_initials","f3_name","f3_role","f3_bio","footer","pageno"],"chart":false},"team-row":{"slots":["eyebrow","title","footer","pageno"],"rows":{"members":["name","role"]},"chart":false},"three-kpi":{"slots":["eyebrow","title","kpi1_num","kpi1_unit","kpi1_name","kpi1_desc","kpi2_num","kpi2_unit","kpi2_name","kpi2_desc","kpi3_num","kpi3_unit","kpi3_name","kpi3_desc","footer","pageno"],"chart":false},"timeline":{"slots":["eyebrow","title","item1_date","item1_title","item1_desc","item2_date","item2_title","item2_desc","item3_date","item3_title","item3_desc","item4_date","item4_title","item4_desc","footer","pageno"],"chart":false},"title-meta":{"slots":["index","eyebrow","title","subtitle","meta"],"chart":false},"title":{"slots":["eyebrow","title"],"chart":false},"toc-agenda":{"slots":["eyebrow","title","item1_title","item1_dur","item2_title","item2_dur","item3_title","item3_dur","item4_title","item4_dur","item5_title","item5_dur","footer","pageno"],"chart":false},"toc-editorial":{"slots":["item1_title","item1_desc","item2_title","item2_desc","item3_title","item3_desc","item4_title","item4_desc","title","desc","footer","pageno"],"chart":false},"toc-panel":{"slots":["brand1","brand2","brand3","image_label","title"],"rows":{"entries":["name","desc"]},"chart":false},"toc":{"slots":["eyebrow","title","item1_title","item1_desc","item2_title","item2_desc","item3_title","item3_desc","item4_title","item4_desc","footer","pageno"],"chart":false},"traction-milestones":{"slots":["eyebrow","title","metric1_label","metric1","metric2_label","metric2","metric3_label","metric3","m1_date","m1","m2_date","m2","m3_date","m3","m4_date","m4","footer","pageno"],"chart":false},"transition":{"slots":["eyebrow","number","title"],"chart":false},"two-kpi":{"slots":["eyebrow","title","kpi1_num","kpi1_unit","kpi1_label","kpi2_num","kpi2_unit","kpi2_label","footer","pageno"],"chart":false},"type-specimen":{"slots":["eyebrow","title","specimen","font_name","weights","heading_label","heading_sample","body_label","body_sample","charset","footer","pageno"],"chart":false},"versus":{"slots":["eyebrow","title","before_title","before_num","before_body","after_title","after_num","after_body","footer","pageno"],"chart":false}}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- layouts/toc-panel — structure-only. role=toc. 左大标题+插图 / 右深色面板目录. rows.entries{name,desc} — 3–5 chapters spread down the panel. -->
|
|
2
2
|
<section class="slide" data-layout="toc-panel" style="position:relative;width:1280px;height:720px;overflow:hidden"><div class="slide-backdrop"></div>
|
|
3
3
|
<div class="toc-topbar" style="position:absolute;left:80px;right:80px;top:34px;display:flex;justify-content:space-between;align-items:center;font-size:calc(15px * var(--type-scale,1));font-weight:700"><span class="toc-brand">{{brand1|公司名称}}</span><span class="toc-brand">{{brand2|战略评审}}</span><span class="toc-brand">{{brand3|2026-03-15}}</span></div>
|
|
4
|
-
<div class="surface" style="position:absolute;left:calc(96px * var(--space-scale,1));top:150px;width:300px;height:280px;display:flex;align-items:center;justify-content:center;border-radius:var(--card-radius)"><span class="surface-label" style="font-size:calc(14px * var(--type-scale,1))"
|
|
4
|
+
<div class="surface" style="position:absolute;left:calc(96px * var(--space-scale,1));top:150px;width:300px;height:280px;display:flex;align-items:center;justify-content:center;border-radius:var(--card-radius)"><span class="surface-label" style="font-size:calc(14px * var(--type-scale,1))">{{image_label|插图占位}}</span></div>
|
|
5
5
|
<h1 class="cover-title" style="position:absolute;left:calc(92px * var(--space-scale,1));top:456px;font-size:calc(76px * var(--type-scale,1));line-height:1.02;letter-spacing:-1px">{{title|目录}}</h1>
|
|
6
6
|
<div class="panel" style="position:absolute;left:700px;right:80px;top:96px;bottom:56px;border-radius:var(--card-radius);padding:56px 60px;display:flex;flex-direction:column;justify-content:space-between">
|
|
7
7
|
{{#entries}}<div class="panel-item"><div class="panel-item-title" style="font-size:calc(30px * var(--type-scale,1));font-weight:800;letter-spacing:.5px">{{name|占位章节}}</div><p class="panel-item-desc" style="font-size:calc(19px * var(--type-scale,1));margin-top:8px">{{desc|简述本节要讨论的内容。}}</p></div>{{/entries}}
|
|
@@ -25,7 +25,8 @@ cover · zoom · split · morph。
|
|
|
25
25
|
## 烤字的族不能给标题派入场
|
|
26
26
|
|
|
27
27
|
把标题烤进背景图的族(`--talos-bake:1`),那些字到 pptx 里是扁平像素,挂在其上的
|
|
28
|
-
`data-anim` 会被**静默丢弃**。`deck-layouts.test.ts` 的闸门 6
|
|
29
|
-
|
|
28
|
+
`data-anim` 会被**静默丢弃**。`deck-layouts.test.ts` 的闸门 6 硬管这条:凡是 skin.css
|
|
29
|
+
给标题写了 `--talos-bake:1` 的族(黑金、橄榄金、奶油青铜、奶油珊瑚、纸感手绘、黑白胶片、
|
|
30
|
+
暖米绿意,以及多数生成族),预设只派给 `.cover-sub`
|
|
30
31
|
`.card` `.stat-lead` 这类仍是文字的元素。落地当天它真的响过两次(`organic-earth` 与
|
|
31
32
|
一次针对本目录预设的变异验证)。
|
|
@@ -12,9 +12,9 @@ prompt carries a `delivery="file"` pointer at that sidecar. So:
|
|
|
12
12
|
|
|
13
13
|
- **Generate** a .docx → `doc-gen` (read **rewrite.md**); a deck → the deck path
|
|
14
14
|
(SKILL.md → deck-design.md; `doc-gen` makes no decks).
|
|
15
|
-
- **Edit** an existing .docx / .pptx → **rewrite.md**: `doc-xml replace` for
|
|
16
|
-
`doc-fill`
|
|
17
|
-
`docx-annotate` for comments and tracked changes.
|
|
15
|
+
- **Edit** an existing .docx / .pptx → **rewrite.md**: `doc-xml replace` for .docx
|
|
16
|
+
text (.pptx text: `doc-fill` tokens or raw XML), `doc-fill` for `{{tokens}}`,
|
|
17
|
+
`pptx-slide` / `pptx-clone` for slides, `docx-annotate` for comments and tracked changes.
|
|
18
18
|
- Everything visual (a diagram/chart that matters) → if you can see images, look
|
|
19
19
|
at the original (see vision.md).
|
|
20
20
|
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
<!-- generated by scripts/ppt-tpl/gen-skin.mjs — signature: corner-marks -->
|
|
2
2
|
<div style="position:absolute;inset:0;background:#F4FAFF"></div>
|
|
3
|
+
<div class="sig-layer" data-signature="corner-marks" style="position:absolute;inset:0;pointer-events:none">
|
|
3
4
|
<div style="position:absolute;left:56px;top:56px;border-left:2px solid var(--accent);border-top:2px solid var(--accent);width:34px;height:34px;pointer-events:none"></div>
|
|
4
5
|
<div style="position:absolute;right:56px;bottom:56px;border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);width:34px;height:34px;pointer-events:none"></div>
|
|
6
|
+
</div>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
手改会在下次生成时丢失:要改就改 family.json。 */
|
|
3
3
|
:root{
|
|
4
4
|
--space-scale:0.96; --type-scale:0.94;
|
|
5
|
-
--accent:#075F8B; --c1:#075F8B; --c2:#634E8E; --c3:#913C61; --c4:#8E4430; --chart-1:#075F8B;
|
|
5
|
+
--accent:#075F8B; --c1:#075F8B; --c2:#634E8E; --c3:#913C61; --c4:#8E4430; --chart-1:#075F8B; --series-1:#075F8B; --series-2:#8570B3; --series-3:#76234A; --series-4:#9E533E;
|
|
6
6
|
--title:#202930; --body:#4B5156; --muted:#767D82; --foot:#767D82;
|
|
7
7
|
--hair:#C8D3DC; --card-radius:4px;
|
|
8
8
|
--font-head:'Archivo','Noto Sans SC',sans-serif;
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
.deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
|
|
15
15
|
.rule,.rule-foot{background:var(--hair)}
|
|
16
16
|
.eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700}
|
|
17
|
+
.slide:is([data-layout="cover-image"],[data-layout="image-full"],[data-layout="section-fullbleed"]) .eyebrow{color:#B5CFDC}
|
|
17
18
|
.accent-bar{background:var(--accent)}
|
|
18
19
|
.deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700}
|
|
19
20
|
.cover-sub,.ending-sub,.section-desc{color:var(--muted)}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
<!-- generated by scripts/ppt-tpl/gen-skin.mjs — signature: crop-marks -->
|
|
2
2
|
<div style="position:absolute;inset:0;background:#FAFDFF"></div>
|
|
3
|
+
<div class="sig-layer" data-signature="crop-marks" style="position:absolute;inset:0;pointer-events:none">
|
|
3
4
|
<div style="position:absolute;left:44px;top:44px;border-left:1px solid var(--hair);border-top:1px solid var(--hair);width:26px;height:26px;pointer-events:none"></div>
|
|
4
5
|
<div style="position:absolute;right:44px;top:44px;border-right:1px solid var(--hair);border-top:1px solid var(--hair);width:26px;height:26px;pointer-events:none"></div>
|
|
5
6
|
<div style="position:absolute;left:44px;bottom:44px;border-left:1px solid var(--hair);border-bottom:1px solid var(--hair);width:26px;height:26px;pointer-events:none"></div>
|
|
6
7
|
<div style="position:absolute;right:44px;bottom:44px;border-right:1px solid var(--hair);border-bottom:1px solid var(--hair);width:26px;height:26px;pointer-events:none"></div>
|
|
8
|
+
</div>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
手改会在下次生成时丢失:要改就改 family.json。 */
|
|
3
3
|
:root{
|
|
4
4
|
--space-scale:0.88; --type-scale:0.95;
|
|
5
|
-
--accent:#1074A7; --c1:#1074A7; --c2:#645DD4; --c3:#C22B93; --c4:#D02841; --chart-1:#1074A7;
|
|
5
|
+
--accent:#1074A7; --c1:#1074A7; --c2:#645DD4; --c3:#C22B93; --c4:#D02841; --chart-1:#1074A7; --series-1:#1074A7; --series-2:#7874ED; --series-3:#C73197; --series-4:#B20E30;
|
|
6
6
|
--title:#003044; --body:#375366; --muted:#687987; --foot:#687987;
|
|
7
7
|
--hair:#CFDCE6; --card-radius:4px;
|
|
8
8
|
--font-head:'IBM Plex Sans','Noto Sans SC',sans-serif;
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
.deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
|
|
15
15
|
.rule,.rule-foot{background:var(--hair)}
|
|
16
16
|
.eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700}
|
|
17
|
+
.slide:is([data-layout="cover-image"],[data-layout="image-full"],[data-layout="section-fullbleed"]) .eyebrow{color:#B7D5E5}
|
|
17
18
|
.accent-bar{background:var(--accent)}
|
|
18
19
|
.deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700}
|
|
19
20
|
.cover-sub,.ending-sub,.section-desc{color:var(--muted)}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
<!-- generated by scripts/ppt-tpl/gen-skin.mjs — signature: header-band -->
|
|
2
2
|
<div style="position:absolute;inset:0;background:#FDF5F0"></div>
|
|
3
|
+
<div class="sig-layer" data-signature="header-band" style="position:absolute;inset:0;pointer-events:none">
|
|
3
4
|
<div style="position:absolute;left:0;right:0;top:0;height:5px;background:var(--accent);opacity:.92;pointer-events:none"></div>
|
|
4
5
|
<div style="position:absolute;left:0;top:0;width:60px;height:16px;background:var(--accent);pointer-events:none"></div>
|
|
6
|
+
</div>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
手改会在下次生成时丢失:要改就改 family.json。 */
|
|
3
3
|
:root{
|
|
4
4
|
--space-scale:1; --type-scale:1;
|
|
5
|
-
--accent:#C12E4C; --c1:#C12E4C; --c2:#896103; --c3:#0B7927; --c4:#117379; --chart-1:#C12E4C;
|
|
5
|
+
--accent:#C12E4C; --c1:#C12E4C; --c2:#896103; --c3:#0B7927; --c4:#117379; --chart-1:#C12E4C; --series-1:#C12E4C; --series-2:#845F0F; --series-3:#2C8E3C; --series-4:#116A70;
|
|
6
6
|
--title:#26201D; --body:#564F4B; --muted:#827B76; --foot:#827B76;
|
|
7
7
|
--hair:#CBBFB7; --card-radius:4px;
|
|
8
8
|
--font-head:'Bodoni Moda','Songti SC',sans-serif;
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
.deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
|
|
15
15
|
.rule,.rule-foot{background:var(--hair)}
|
|
16
16
|
.eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700}
|
|
17
|
+
.slide:is([data-layout="cover-image"],[data-layout="image-full"],[data-layout="section-fullbleed"]) .eyebrow{color:#ECC0C9}
|
|
17
18
|
.accent-bar{background:var(--accent)}
|
|
18
19
|
.deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700;--talos-bake:1}
|
|
19
20
|
.cover-sub,.ending-sub,.section-desc{color:var(--muted)}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
<!-- generated by scripts/ppt-tpl/gen-skin.mjs — signature: diagonal-band -->
|
|
2
2
|
<div style="position:absolute;inset:0;background:#270E28"></div>
|
|
3
|
+
<div class="sig-layer" data-signature="diagonal-band" style="position:absolute;inset:0;pointer-events:none">
|
|
3
4
|
<div style="position:absolute;right:-60px;top:-40px;width:260px;height:820px;background:var(--accent);opacity:.14;transform:rotate(18deg);pointer-events:none"></div>
|
|
4
5
|
<div style="position:absolute;right:96px;top:-40px;width:2px;height:820px;background:var(--accent);opacity:.5;transform:rotate(18deg);pointer-events:none"></div>
|
|
6
|
+
</div>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
手改会在下次生成时丢失:要改就改 family.json。 */
|
|
3
3
|
:root{
|
|
4
4
|
--space-scale:0.98; --type-scale:1.06;
|
|
5
|
-
--accent:#E168CF; --c1:#E168CF; --c2:#8E88FA; --c3:#099DEE; --c4:#1FA3C4; --chart-1:#E168CF;
|
|
5
|
+
--accent:#E168CF; --c1:#E168CF; --c2:#8E88FA; --c3:#099DEE; --c4:#1FA3C4; --chart-1:#E168CF; --series-1:#E168CF; --series-2:#8E88FA; --series-3:#0C6AA1; --series-4:#29A9CA;
|
|
6
6
|
--title:#F8F1FA; --body:#C8BDCC; --muted:#938898; --foot:#938898;
|
|
7
7
|
--hair:#523A52; --card-radius:4px;
|
|
8
8
|
--font-head:'Big Shoulders Display','Noto Sans SC',sans-serif;
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
.deck-header,.deck-footer,.deck-pageno{color:var(--muted)}
|
|
15
15
|
.rule,.rule-foot{background:var(--hair)}
|
|
16
16
|
.eyebrow{color:var(--accent);letter-spacing:.22em;font-weight:700}
|
|
17
|
+
.slide:is([data-layout="cover-image"],[data-layout="image-full"],[data-layout="section-fullbleed"]) .eyebrow{color:#F6D2F1}
|
|
17
18
|
.accent-bar{background:var(--accent)}
|
|
18
19
|
.deck-title,.cover-title,.section-title,.ending-title{color:var(--title);font-family:var(--font-head);font-weight:700;--talos-bake:1}
|
|
19
20
|
.cover-sub,.ending-sub,.section-desc{color:var(--muted)}
|
|
@@ -26,3 +27,5 @@
|
|
|
26
27
|
.kpi-num,.stat-num{color:var(--title);font-family:var(--font-head);--talos-bake:1}
|
|
27
28
|
.kpi-label,.stat-unit{color:var(--muted)} .stat-lead{color:var(--title)} .stat-note{color:var(--body)}
|
|
28
29
|
.media-frame,.media-cutout{border-radius:0;clip-path:polygon(12% 0,100% 0,88% 100%,0 82%);border:1px solid var(--accent)}
|
|
30
|
+
.slide[data-layout]:not([data-layout^="cover"],[data-layout^="section"],[data-layout^="title"],[data-layout^="ending"],[data-layout="hero"],[data-layout="transition"]) .slide-backdrop:has(> .theme-art-layer) > .sig-layer > *{translate:230px 0}
|
|
31
|
+
.slide[data-layout]:not([data-layout^="cover"],[data-layout^="section"],[data-layout^="title"],[data-layout^="ending"],[data-layout="hero"],[data-layout="transition"]) .slide-backdrop:has(> .theme-art-layer) > .sig-layer{-webkit-mask-image:var(--decor-safe-mask);mask-image:var(--decor-safe-mask)}
|
package/skills/document/pdf.md
CHANGED
|
@@ -1,54 +1,58 @@
|
|
|
1
1
|
# PDF (L3)
|
|
2
2
|
|
|
3
|
-
Default to the **text layer
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
`
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
5. **
|
|
19
|
-
|
|
3
|
+
Default to the **text layer** (the `<file>.txt` sidecar you already read, or `doc-text`);
|
|
4
|
+
render pages only when the content is visual.
|
|
5
|
+
|
|
6
|
+
## Read: text first, escalate on evidence
|
|
7
|
+
|
|
8
|
+
1. `bin/doc-scan.cjs file.pdf` → cheap per-page signals (`textChars`, `imageCoverage`,
|
|
9
|
+
`mathHint`, `tableHint`, `scanned`).
|
|
10
|
+
2. Read intent: summarize/translate → text; formulas/tables/figures/layout → visual;
|
|
11
|
+
unsure → start with text.
|
|
12
|
+
3. Per page: `scanned` OR high `imageCoverage` OR (visual intent AND a math/table hint)
|
|
13
|
+
→ `bin/pdf-render.cjs file.pdf <page>` and look (vision.md); else
|
|
14
|
+
`bin/doc-text.cjs file.pdf`.
|
|
15
|
+
4. **Self-correct:** text garbled or missing where the answer should be (a formula's
|
|
16
|
+
symbols shredded, a table collapsed into one line, a page with almost no characters)
|
|
17
|
+
→ render THAT page and look.
|
|
18
|
+
5. **Formulas:** no extractor emits LaTeX. Render the page (keep scale 2) and transcribe
|
|
19
|
+
to LaTeX from the image. Rebuilding into a doc/deck: emit the LaTeX as text, or render
|
|
20
|
+
the formula to an image and place that.
|
|
21
|
+
6. **Tables:** `bin/pdf-tables.cjs file.pdf [page]` recovers text-layer tables as rows.
|
|
22
|
+
Missing, garbled, ruled or scanned → render the page and read it visually; for data you
|
|
23
|
+
must compute on, an .xlsx from the user is exact.
|
|
24
|
+
7. **Figures as files** (e.g. rebuilding a deck): `bin/pdf-images.cjs file.pdf [pages]`
|
|
25
|
+
extracts embedded images at native resolution; vector pages yield nothing → render.
|
|
20
26
|
|
|
21
27
|
## Boundaries / failure
|
|
22
28
|
|
|
23
|
-
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
outline around every field, then `pdf-render` the page and LOOK — every value
|
|
54
|
-
inside its box, nothing clipped.
|
|
29
|
+
- **Vision unavailable** (text-only model): text, or OCR a rendered page (vision.md),
|
|
30
|
+
and state the limitation plainly — never return an empty summary silently. A
|
|
31
|
+
text-only model cannot recover formulas.
|
|
32
|
+
- Very large PDFs: render only the pages you need — never bulk-render.
|
|
33
|
+
- Corrupt PDF → `doc-scan`/`doc-text` exit non-zero; report the error. A
|
|
34
|
+
password-protected PDF exits 1 (`PDF is password-protected … decrypt first`) from
|
|
35
|
+
every reader and editor: ask for the password and `pdf-ops decrypt` it.
|
|
36
|
+
|
|
37
|
+
## Forms and flat-PDF filling
|
|
38
|
+
|
|
39
|
+
1. `bin/pdf-form.cjs list in.pdf` → field names and types; `fill in.pdf values.json
|
|
40
|
+
out.pdf [--flatten]` with `{"<field>": "text", "<checkbox>": true}` (unknown names
|
|
41
|
+
come back in `skipped`).
|
|
42
|
+
2. A flat PDF (no fields) → `bin/pdf-ops.cjs stamp in.pdf stamps.json out.pdf` with
|
|
43
|
+
`[{"page": 1, "x": 72, "y": 700, "text": "…", "size"?: 11}]` (points, origin bottom-left).
|
|
44
|
+
3. **Chinese works:** fill, `stamp` and `watermark` draw CJK text in the bundled Noto
|
|
45
|
+
Sans SC. A character it lacks (emoji, rare extension hanzi) exits 1 naming it —
|
|
46
|
+
replace it; never drop text silently.
|
|
47
|
+
4. **Verify visually (mandatory when you can see images):** `bin/pdf-form.cjs overlay
|
|
48
|
+
filled.pdf boxed.pdf` outlines every field in red; `pdf-render` each filled page and
|
|
49
|
+
LOOK — every value inside its box, nothing clipped or overlapping. Misplaced → adjust
|
|
50
|
+
and refill. A text-only model states the fill is visually unverified.
|
|
51
|
+
|
|
52
|
+
## Page ops and passwords
|
|
53
|
+
|
|
54
|
+
`bin/pdf-ops.cjs merge | split | rotate | watermark` keep every page verbatim
|
|
55
|
+
(bin-reference.md "Fill and edit"). `encrypt <in> <out> <user-pw> [owner-pw]` is
|
|
56
|
+
AES-256 — run `doc-validate` and render BEFORE encrypting (an encrypted PDF fails
|
|
57
|
+
`doc-validate`). `decrypt <in> <password> <out>` exits non-zero on a wrong password —
|
|
58
|
+
never guess passwords; `""` decrypts an owner-password-only PDF.
|