sophhub 0.4.19 → 0.4.21
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/README.md +199 -187
- package/agents/ai-cs-admin/.config.json +51 -51
- package/agents/ai-cs-admin/AGENTS.md +293 -293
- package/agents/ai-cs-admin/HEARTBEAT.md +18 -18
- package/agents/ai-cs-qa/.config.json +47 -47
- package/agents/ai-cs-qa/BOOTSTRAP.md +22 -22
- package/agents/ai-cs-qa/scripts/setup_links.sh +39 -39
- package/agents/beauty/.config.json +17 -17
- package/agents/beauty/AGENTS.md +234 -234
- package/agents/beauty/BOOTSTRAP.md +55 -55
- package/agents/beauty/HEARTBEAT.md +5 -5
- package/agents/beauty/IDENTITY.md +5 -5
- package/agents/beauty/MEMORY.md +44 -44
- package/agents/beauty/SOUL.md +64 -64
- package/agents/beauty/TOOLS.md +160 -160
- package/agents/beauty/USER.md +114 -114
- package/agents/intern-admin/.config.json +60 -60
- package/agents/intern-admin/AGENTS.md +267 -267
- package/agents/intern-admin/BOOTSTRAP.md +21 -21
- package/agents/intern-admin/HEARTBEAT.md +3 -3
- package/agents/intern-admin/IDENTITY.md +6 -6
- package/agents/intern-admin/MEMORY.md +21 -21
- package/agents/intern-admin/SOUL.md +23 -23
- package/agents/intern-admin/TOOLS.md +93 -93
- package/agents/intern-admin/USER.md +16 -16
- package/agents/intern-admin/scripts/init_workspace.sh +27 -27
- package/agents/intern-qa/.config.json +46 -46
- package/agents/intern-qa/AGENTS.md +303 -303
- package/agents/intern-qa/BOOTSTRAP.md +16 -16
- package/agents/intern-qa/HEARTBEAT.md +3 -3
- package/agents/intern-qa/IDENTITY.md +6 -6
- package/agents/intern-qa/MEMORY.md +22 -22
- package/agents/intern-qa/SOUL.md +24 -24
- package/agents/intern-qa/TOOLS.md +24 -24
- package/agents/intern-qa/USER.md +27 -27
- package/agents/intern-qa/scripts/setup_links.sh +54 -54
- package/agents/parent-toddler/.config.json +37 -37
- package/agents/parent-toddler/AGENTS.md +51 -51
- package/agents/parent-toddler/BOOTSTRAP.md +55 -55
- package/agents/parent-toddler/HEARTBEAT.md +5 -5
- package/agents/parent-toddler/IDENTITY.md +5 -5
- package/agents/parent-toddler/MEMORY.md +22 -22
- package/agents/parent-toddler/SOUL.md +35 -35
- package/agents/parent-toddler/TOOLS.md +31 -31
- package/agents/parent-toddler/USER.md +44 -44
- package/agents/vip-admin/.config.json +51 -51
- package/agents/vip-admin/AGENTS.md +314 -314
- package/agents/vip-admin/BOOTSTRAP.md +21 -21
- package/agents/vip-admin/HEARTBEAT.md +19 -19
- package/agents/vip-admin/IDENTITY.md +6 -6
- package/agents/vip-admin/MEMORY.md +30 -30
- package/agents/vip-admin/SOUL.md +25 -25
- package/agents/vip-admin/TOOLS.md +108 -108
- package/agents/vip-admin/USER.md +31 -31
- package/agents/vip-qa/.config.json +58 -58
- package/agents/vip-qa/AGENTS.md +319 -319
- package/agents/vip-qa/BOOTSTRAP.md +73 -73
- package/agents/vip-qa/HEARTBEAT.md +23 -23
- package/agents/vip-qa/IDENTITY.md +7 -7
- package/agents/vip-qa/MEMORY.md +23 -23
- package/agents/vip-qa/SOUL.md +34 -34
- package/agents/vip-qa/TOOLS.md +41 -41
- package/agents/vip-qa/USER.md +16 -16
- package/agents/vip-qa/scripts/setup_links.sh +39 -39
- package/bin/sophhub.js +25 -25
- package/package.json +35 -33
- package/skills/agent-install/skill.json +34 -34
- package/skills/agent-install/src/SKILL.md +240 -240
- package/skills/agent-install/src/pyproject.toml +6 -6
- package/skills/agent-install/src/scripts/backup_agent.py +120 -120
- package/skills/agent-install/src/scripts/check_installed.py +479 -479
- package/skills/agent-install/src/scripts/common.py +568 -568
- package/skills/agent-install/src/scripts/copy_agent_files.py +59 -59
- package/skills/agent-install/src/scripts/list_agents.py +285 -285
- package/skills/agent-install/src/scripts/resolve_install_params.py +90 -90
- package/skills/agent-install/src/scripts/update_agent_md.py +76 -76
- package/skills/agent-install/src/scripts/update_openclaw.py +193 -193
- package/skills/agent-install/src/scripts/verify_download.py +148 -148
- package/skills/aippt/skill.json +20 -20
- package/skills/aippt/src/SKILL.md +235 -235
- package/skills/aippt/src/pyproject.toml +8 -8
- package/skills/aippt/src/scripts/auth.py +122 -122
- package/skills/aippt/src/scripts/ppt.py +361 -361
- package/skills/aippt/src/scripts/provider_docmee.py +299 -299
- package/skills/beauty-salon-inventory/skill.json +16 -16
- package/skills/beauty-salon-inventory/src/SKILL.md +69 -69
- package/skills/beauty-salon-inventory/src/scripts/init_salon_inventory.py +39 -39
- package/skills/beauty-salon-inventory/src/scripts/init_salon_inventory.sh +4 -4
- package/skills/beauty-salon-inventory/src/scripts/salon_inventory_cli.py +244 -244
- package/skills/beauty-salon-marketing/skill.json +10 -10
- package/skills/beauty-salon-marketing/src/SKILL.md +36 -36
- package/skills/beauty-salon-marketing/src/playbooks/beauty-salon-festival.md +19 -19
- package/skills/beauty-salon-marketing/src/playbooks/beauty-salon-segment.md +18 -18
- package/skills/beauty-salon-marketing/src/scripts/beauty_marketing_cli.py +99 -99
- package/skills/beauty-salon-marketing/src/scripts/member_segment.py +114 -114
- package/skills/beauty-salon-member-appointment/skill.json +10 -10
- package/skills/beauty-salon-member-appointment/src/SKILL.md +36 -36
- package/skills/beauty-salon-member-appointment/src/pyproject.toml +9 -9
- package/skills/beauty-salon-member-appointment/src/scripts/run_e2e_smoke.py +160 -160
- package/skills/beauty-salon-member-appointment/src/src/member_appt_cli/__init__.py +1 -1
- package/skills/beauty-salon-member-appointment/src/src/member_appt_cli/__main__.py +4 -4
- package/skills/beauty-salon-member-appointment/src/src/member_appt_cli/cli.py +921 -921
- package/skills/beauty-salon-member-appointment/src/src/member_appt_cli/db.py +30 -30
- package/skills/beauty-salon-membership/skill.json +20 -20
- package/skills/beauty-salon-membership/src/SKILL.md +67 -67
- package/skills/beauty-salon-product-service/skill.json +12 -12
- package/skills/beauty-salon-product-service/src/SKILL.md +42 -42
- package/skills/beauty-salon-product-service/src/pyproject.toml +9 -9
- package/skills/beauty-salon-product-service/src/src/product_service_cli/__init__.py +1 -1
- package/skills/beauty-salon-product-service/src/src/product_service_cli/__main__.py +4 -4
- package/skills/beauty-salon-product-service/src/src/product_service_cli/cli.py +329 -329
- package/skills/beauty-salon-product-service/src/src/product_service_cli/db.py +29 -29
- package/skills/beauty-salon-staff/skill.json +10 -10
- package/skills/beauty-salon-staff/src/SKILL.md +37 -37
- package/skills/beauty-salon-staff/src/pyproject.toml +9 -9
- package/skills/beauty-salon-staff/src/src/staff_cli/__init__.py +1 -1
- package/skills/beauty-salon-staff/src/src/staff_cli/__main__.py +4 -4
- package/skills/beauty-salon-staff/src/src/staff_cli/cli.py +479 -479
- package/skills/beauty-salon-staff/src/src/staff_cli/db.py +28 -28
- package/skills/beauty-salon-suite/skill.json +13 -13
- package/skills/beauty-salon-suite/src/SKILL.md +18 -18
- package/skills/beauty-salon-suite/src/beauty_db/__init__.py +2 -2
- package/skills/beauty-salon-suite/src/beauty_db/db.py +249 -249
- package/skills/beauty-salon-traffic/skill.json +20 -20
- package/skills/beauty-salon-traffic/src/SKILL.md +84 -84
- package/skills/bing-image-search/skill.json +20 -20
- package/skills/bing-image-search/src/SKILL.md +105 -105
- package/skills/bot-api-status/skill.json +44 -44
- package/skills/bot-api-status/src/SKILL.md +99 -99
- package/skills/bot-api-status/src/pyproject.toml +5 -5
- package/skills/bot-api-status/src/scripts/secret.py +496 -496
- package/skills/bot-secret/skill.json +35 -35
- package/skills/bot-secret/src/SKILL.md +51 -51
- package/skills/bot-secret/src/pyproject.toml +5 -5
- package/skills/bot-secret/src/scripts/secret.py +120 -120
- package/skills/cake-flower-holiday-campaign/skill.json +20 -20
- package/skills/cake-flower-holiday-campaign/src/SKILL.md +68 -68
- package/skills/cake-flower-order-sop/skill.json +20 -20
- package/skills/cake-flower-order-sop/src/SKILL.md +65 -65
- package/skills/claw-agent-get-send/skill.json +32 -32
- package/skills/claw-agent-get-send/src/SKILL.md +43 -43
- package/skills/claw-agent-get-send/src/pyproject.toml +5 -5
- package/skills/claw-agent-get-send/src/scripts/appia_claw.py +379 -379
- package/skills/compact-context/skill.json +20 -20
- package/skills/compact-context/src/SKILL.md +133 -133
- package/skills/compact-context/src/scripts/check.sh +381 -381
- package/skills/compact-context/src/scripts/set-keep-recent.mjs +1337 -1337
- package/skills/compact-context/src/scripts/setup.sh +96 -96
- package/skills/consensus/skill.json +20 -20
- package/skills/consensus/src/SKILL.md +93 -93
- package/skills/deepwiki/skill.json +20 -20
- package/skills/deepwiki/src/SKILL.md +45 -45
- package/skills/deepwiki/src/_meta.json +5 -5
- package/skills/deepwiki/src/scripts/deepwiki.js +135 -135
- package/skills/didi-ride/skill.json +20 -20
- package/skills/didi-ride/src/SKILL.md +309 -309
- package/skills/didi-ride/src/_meta.json +5 -5
- package/skills/didi-ride/src/assets/PREFERENCE.md +58 -58
- package/skills/didi-ride/src/package.json +15 -15
- package/skills/didi-ride/src/references/api_references.md +171 -171
- package/skills/didi-ride/src/references/error_handling.md +68 -68
- package/skills/didi-ride/src/references/setup.md +73 -73
- package/skills/didi-ride/src/references/workflow.md +150 -150
- package/skills/feishu-bitable/skill.json +20 -20
- package/skills/feishu-bitable/src/CHECKLIST.md +149 -149
- package/skills/feishu-bitable/src/README.md +177 -177
- package/skills/feishu-bitable/src/SKILL.md +113 -113
- package/skills/feishu-bitable/src/_meta.json +5 -5
- package/skills/feishu-bitable/src/api.js +380 -380
- package/skills/feishu-bitable/src/bin/cli.js +283 -283
- package/skills/feishu-bitable/src/description.md +142 -142
- package/skills/feishu-bitable/src/examples/create-records.json +51 -51
- package/skills/feishu-bitable/src/examples/create-table.json +63 -63
- package/skills/feishu-bitable/src/package-lock.json +324 -324
- package/skills/feishu-bitable/src/package.json +32 -32
- package/skills/feishu-bitable/src/publish-config.json +13 -13
- package/skills/feishu-bitable/src/test-simple.js +60 -60
- package/skills/feishu-bitable/src/utils.js +260 -260
- package/skills/feishu-notes-assistant-universal/skill.json +20 -20
- package/skills/feishu-notes-assistant-universal/src/README.md +55 -55
- package/skills/feishu-notes-assistant-universal/src/SKILL.md +159 -159
- package/skills/feishu-notes-assistant-universal/src/scripts/_resolve_lark_cli.py +58 -58
- package/skills/feishu-notes-assistant-universal/src/scripts/openclaw_meeting_minutes.py +462 -462
- package/skills/feishu-notes-assistant-universal/src/scripts/openclaw_notes_crud.py +547 -547
- package/skills/feishu-notes-assistant-universal/src/scripts/openclaw_notes_crud_test.py +181 -181
- package/skills/feishu-notes-assistant-universal/src/scripts/run_meeting_minutes.py +80 -80
- package/skills/feishu-notes-assistant-universal/src/scripts/run_meeting_minutes.sh +5 -5
- package/skills/feishu-notes-assistant-universal/src/scripts/run_note_crud.py +32 -32
- package/skills/feishu-notes-assistant-universal/src/scripts/run_note_crud.sh +5 -5
- package/skills/flight-booking/skill.json +36 -36
- package/skills/flight-booking/src/SKILL.md +288 -288
- package/skills/flight-booking/src/scripts/flight_booking.py +1237 -1237
- package/skills/flyai/skill.json +20 -20
- package/skills/flyai/src/SKILL.md +119 -119
- package/skills/flyai/src/references/fliggy-fast-search.md +53 -53
- package/skills/flyai/src/references/search-flight.md +89 -89
- package/skills/flyai/src/references/search-hotels.md +57 -57
- package/skills/flyai/src/references/search-poi.md +48 -48
- package/skills/google-maps/skill.json +20 -20
- package/skills/google-maps/src/SKILL.md +237 -237
- package/skills/google-maps/src/_meta.json +5 -5
- package/skills/google-maps/src/lib/map_helper.py +912 -912
- package/skills/image-classify/skill.json +42 -42
- package/skills/image-classify/src/SKILL.md +368 -368
- package/skills/image-classify/src/references/config.json +4 -4
- package/skills/image-classify/src/scripts/face_search.py +1276 -1276
- package/skills/image-description/skill.json +34 -34
- package/skills/image-description/src/SKILL.md +33 -33
- package/skills/image-description/src/pyproject.toml +8 -8
- package/skills/image-description/src/scripts/ana_image.py +112 -112
- package/skills/image-identify-world/skill.json +20 -20
- package/skills/image-identify-world/src/SKILL.md +40 -40
- package/skills/image-identify-world/src/pyproject.toml +8 -8
- package/skills/image-identify-world/src/scripts/identify_world.py +115 -115
- package/skills/insurance-policy-review/skill.json +27 -27
- package/skills/insurance-policy-review/src/SKILL.md +75 -75
- package/skills/insurance-sales-playbook/skill.json +20 -20
- package/skills/insurance-sales-playbook/src/SKILL.md +58 -58
- package/skills/inventory-management/skill.json +20 -20
- package/skills/inventory-management/src/SKILL.md +241 -241
- package/skills/inventory-management/src/scripts/inventory.py +1844 -1844
- package/skills/large-task-router/skill.json +20 -20
- package/skills/large-task-router/src/SKILL.md +79 -79
- package/skills/large-task-router/src/templates/plan.md +74 -74
- package/skills/lawding-contract-review/skill.json +20 -20
- package/skills/lawding-contract-review/src/SKILL.md +284 -284
- package/skills/lawding-contract-review/src/references/legal-language-library.md +1385 -1385
- package/skills/lawding-contract-review/src/scripts/build_reminders.py +471 -471
- package/skills/lawding-contract-review/src/scripts/register_contract_cron.py +457 -457
- package/skills/md2pdf-converter/skill.json +20 -20
- package/skills/md2pdf-converter/src/SKILL.md +244 -244
- package/skills/md2pdf-converter/src/_meta.json +5 -5
- package/skills/md2pdf-converter/src/scripts/generate_emoji_mapping.py +74 -74
- package/skills/md2pdf-converter/src/scripts/md2pdf-local.sh +291 -291
- package/skills/notes-hub-assistant/skill.json +20 -20
- package/skills/notes-hub-assistant/src/SKILL.md +233 -233
- package/skills/notes-hub-assistant/src/scripts/_resolve_lark_cli.py +48 -48
- package/skills/notes-hub-assistant/src/scripts/openclaw_meeting_minutes.py +473 -473
- package/skills/notes-hub-assistant/src/scripts/openclaw_notes_crud.py +596 -596
- package/skills/notes-hub-assistant/src/scripts/openclaw_wolai_notes_crud.py +364 -364
- package/skills/notes-hub-assistant/src/scripts/run_meeting_minutes.py +79 -79
- package/skills/notes-hub-assistant/src/scripts/run_note_crud.py +37 -37
- package/skills/notes-hub-assistant/src/scripts/run_notionbot.py +36 -36
- package/skills/notes-hub-assistant/src/scripts/run_wolai_note_crud.py +27 -27
- package/skills/schedule-reminder/skill.json +20 -20
- package/skills/schedule-reminder/src/SKILL.md +619 -619
- package/skills/schedule-reminder/src/schedule_template.md +68 -68
- package/skills/schedule-reminder/src/scripts/append_event.py +204 -204
- package/skills/schedule-reminder/src/scripts/create_reminders.sh +163 -163
- package/skills/schedule-reminder/src/scripts/daily_activate.sh +175 -175
- package/skills/schedule-reminder/src/scripts/parse_schedule.py +704 -704
- package/skills/schedule-reminder/src/scripts/setup.sh +242 -242
- package/skills/schedule-reminder/src//347/224/250/346/210/267/346/214/207/345/215/227.md +311 -311
- package/skills/sessions-analysis/skill.json +34 -34
- package/skills/sessions-analysis/src/SKILL.md +81 -81
- package/skills/sessions-analysis/src/pyproject.toml +5 -5
- package/skills/sessions-analysis/src/scripts/ana_logs.py +205 -205
- package/skills/share-skill/skill.json +20 -20
- package/skills/share-skill/src/SKILL.md +261 -261
- package/skills/share-skill/src/scripts/share_skill_to_friend.py +1031 -1031
- package/skills/skill-creator/skill.json +20 -20
- package/skills/skill-creator/src/SKILL.md +370 -370
- package/skills/skill-creator/src/license.txt +202 -202
- package/skills/skill-creator/src/scripts/init_skill.py +378 -378
- package/skills/skill-creator/src/scripts/package_skill.py +111 -111
- package/skills/skill-creator/src/scripts/quick_validate.py +101 -101
- package/skills/skillhub/skill.json +27 -27
- package/skills/skillhub/src/SKILL.md +121 -121
- package/skills/sophnet-age-appearance/skill.json +20 -20
- package/skills/sophnet-age-appearance/src/SKILL.md +83 -83
- package/skills/sophnet-age-appearance/src/pyproject.toml +10 -10
- package/skills/sophnet-age-appearance/src/scripts/age_appearance.py +395 -395
- package/skills/sophnet-age-appearance/src/scripts/age_face_crop.py +313 -313
- package/skills/sophnet-bot-client/skill.json +20 -20
- package/skills/sophnet-bot-client/src/SKILL.md +255 -255
- package/skills/sophnet-bot-client/src/pyproject.toml +13 -13
- package/skills/sophnet-bot-client/src/scripts/bot_client_proxy.py +165 -165
- package/skills/sophnet-bot-client/src/scripts/bot_client_safe.sh +29 -29
- package/skills/sophnet-bot-client/src/scripts/bot_client_setup.py +502 -502
- package/skills/sophnet-bot-client/src/tests/test_bot_client_proxy.py +255 -255
- package/skills/sophnet-bot-client/src/tests/test_bot_client_setup.py +679 -679
- package/skills/sophnet-bot-client/src/uv.lock +8 -8
- package/skills/sophnet-customer-management/skill.json +20 -20
- package/skills/sophnet-customer-management/src/SKILL.md +270 -270
- package/skills/sophnet-customer-management/src/pyproject.toml +15 -15
- package/skills/sophnet-customer-management/src/src/customer_mgmt_cli/__init__.py +2 -2
- package/skills/sophnet-customer-management/src/src/customer_mgmt_cli/__main__.py +5 -5
- package/skills/sophnet-customer-management/src/src/customer_mgmt_cli/cli.py +67 -67
- package/skills/sophnet-customer-management/src/src/customer_mgmt_cli/commands/__init__.py +2 -2
- package/skills/sophnet-customer-management/src/src/customer_mgmt_cli/commands/customer.py +60 -60
- package/skills/sophnet-customer-management/src/src/customer_mgmt_cli/commands/export_file.py +18 -18
- package/skills/sophnet-customer-management/src/src/customer_mgmt_cli/commands/import_file.py +15 -15
- package/skills/sophnet-customer-management/src/src/customer_mgmt_cli/commands/reminder.py +26 -26
- package/skills/sophnet-customer-management/src/src/customer_mgmt_cli/commands/schema.py +28 -28
- package/skills/sophnet-customer-management/src/src/customer_mgmt_cli/config.py +54 -54
- package/skills/sophnet-customer-management/src/src/customer_mgmt_core/__init__.py +2 -2
- package/skills/sophnet-customer-management/src/src/customer_mgmt_core/exporter.py +85 -85
- package/skills/sophnet-customer-management/src/src/customer_mgmt_core/models.py +84 -84
- package/skills/sophnet-customer-management/src/src/customer_mgmt_core/normalizer.py +144 -144
- package/skills/sophnet-customer-management/src/src/customer_mgmt_core/parser.py +241 -241
- package/skills/sophnet-customer-management/src/src/customer_mgmt_core/query.py +109 -109
- package/skills/sophnet-customer-management/src/src/customer_mgmt_core/reminder.py +121 -121
- package/skills/sophnet-customer-management/src/src/customer_mgmt_core/repository.py +397 -397
- package/skills/sophnet-customer-management/src/src/customer_mgmt_core/schema.py +106 -106
- package/skills/sophnet-customer-management/src/src/customer_mgmt_core/service.py +565 -565
- package/skills/sophnet-customer-management/src/uv.lock +48 -48
- package/skills/sophnet-customized-marketing/skill.json +28 -28
- package/skills/sophnet-customized-marketing/src/SKILL.md +144 -144
- package/skills/sophnet-customized-marketing/src/playbooks/campaign-planning.md +187 -187
- package/skills/sophnet-customized-marketing/src/playbooks/content-generation.md +124 -124
- package/skills/sophnet-customized-marketing/src/playbooks/marketing-calendar.md +59 -59
- package/skills/sophnet-customized-marketing/src/playbooks/multi-channel-bundle.md +94 -94
- package/skills/sophnet-customized-marketing/src/playbooks/poster-generation.md +182 -182
- package/skills/sophnet-customized-marketing/src/playbooks/style-profile-workflow.md +103 -103
- package/skills/sophnet-customized-marketing/src/pyproject.toml +8 -8
- package/skills/sophnet-customized-marketing/src/references/campaign-mechanics.md +168 -168
- package/skills/sophnet-customized-marketing/src/references/content-safety.md +26 -26
- package/skills/sophnet-customized-marketing/src/references/marketing-date-checklist.md +99 -99
- package/skills/sophnet-customized-marketing/src/references/platform-writing-guidelines.md +88 -88
- package/skills/sophnet-customized-marketing/src/references/quality-checklist.md +44 -44
- package/skills/sophnet-customized-marketing/src/scripts/generate_poster.py +572 -572
- package/skills/sophnet-customized-marketing/src/scripts/style_profile.py +215 -215
- package/skills/sophnet-dailynews/skill.json +20 -20
- package/skills/sophnet-dailynews/src/SKILL.md +179 -179
- package/skills/sophnet-dailynews/src/cache.json +150 -150
- package/skills/sophnet-dailynews/src/sources.json +230 -230
- package/skills/sophnet-docx/skill.json +20 -20
- package/skills/sophnet-docx/src/SKILL.md +463 -463
- package/skills/sophnet-docx/src/package-lock.json +208 -208
- package/skills/sophnet-docx/src/package.json +16 -16
- package/skills/sophnet-docx/src/pyproject.toml +11 -11
- package/skills/sophnet-docx/src/scripts/__init__.py +1 -1
- package/skills/sophnet-docx/src/scripts/accept_changes.py +135 -135
- package/skills/sophnet-docx/src/scripts/comment.py +318 -318
- package/skills/sophnet-docx/src/scripts/ensure_uv_env.sh +68 -68
- package/skills/sophnet-docx/src/scripts/office/helpers/merge_runs.py +199 -199
- package/skills/sophnet-docx/src/scripts/office/helpers/simplify_redlines.py +197 -197
- package/skills/sophnet-docx/src/scripts/office/pack.py +159 -159
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -1499
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -146
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -1085
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -11
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -3081
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -23
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -185
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -287
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -1676
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -28
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -144
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -174
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -25
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -18
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -59
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -56
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -195
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -582
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -25
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -4439
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -570
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -509
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -12
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -108
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -96
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -3646
- package/skills/sophnet-docx/src/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -116
- package/skills/sophnet-docx/src/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -42
- package/skills/sophnet-docx/src/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -50
- package/skills/sophnet-docx/src/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -49
- package/skills/sophnet-docx/src/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -33
- package/skills/sophnet-docx/src/scripts/office/schemas/mce/mc.xsd +75 -75
- package/skills/sophnet-docx/src/scripts/office/schemas/microsoft/wml-2010.xsd +560 -560
- package/skills/sophnet-docx/src/scripts/office/schemas/microsoft/wml-2012.xsd +67 -67
- package/skills/sophnet-docx/src/scripts/office/schemas/microsoft/wml-2018.xsd +14 -14
- package/skills/sophnet-docx/src/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -20
- package/skills/sophnet-docx/src/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -13
- package/skills/sophnet-docx/src/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -4
- package/skills/sophnet-docx/src/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -8
- package/skills/sophnet-docx/src/scripts/office/soffice.py +183 -183
- package/skills/sophnet-docx/src/scripts/office/unpack.py +132 -132
- package/skills/sophnet-docx/src/scripts/office/validate.py +111 -111
- package/skills/sophnet-docx/src/scripts/office/validators/__init__.py +15 -15
- package/skills/sophnet-docx/src/scripts/office/validators/base.py +847 -847
- package/skills/sophnet-docx/src/scripts/office/validators/docx.py +446 -446
- package/skills/sophnet-docx/src/scripts/office/validators/pptx.py +275 -275
- package/skills/sophnet-docx/src/scripts/office/validators/redlining.py +247 -247
- package/skills/sophnet-docx/src/scripts/templates/comments.xml +3 -3
- package/skills/sophnet-docx/src/scripts/templates/commentsExtended.xml +3 -3
- package/skills/sophnet-docx/src/scripts/templates/commentsExtensible.xml +3 -3
- package/skills/sophnet-docx/src/scripts/templates/commentsIds.xml +3 -3
- package/skills/sophnet-docx/src/scripts/templates/people.xml +3 -3
- package/skills/sophnet-docx/src/scripts/upload_file.sh +96 -96
- package/skills/sophnet-docx/src/uv.lock +320 -320
- package/skills/sophnet-face-search/skill.json +20 -20
- package/skills/sophnet-face-search/src/SKILL.md +115 -115
- package/skills/sophnet-face-search/src/pyproject.toml +11 -11
- package/skills/sophnet-face-search/src/scripts/face_search.py +335 -335
- package/skills/sophnet-face-search/src/uv.lock +508 -508
- package/skills/sophnet-id-photo/skill.json +20 -20
- package/skills/sophnet-id-photo/src/SKILL.md +107 -107
- package/skills/sophnet-id-photo/src/pyproject.toml +10 -10
- package/skills/sophnet-id-photo/src/scripts/id_photo.py +540 -540
- package/skills/sophnet-id-photo/src/scripts/id_photo_compliance.py +215 -215
- package/skills/sophnet-id-photo/src/scripts/id_photo_face_crop.py +313 -313
- package/skills/sophnet-image-edit/skill.json +20 -20
- package/skills/sophnet-image-edit/src/SKILL.md +140 -140
- package/skills/sophnet-image-edit/src/pyproject.toml +9 -9
- package/skills/sophnet-image-edit/src/scripts/edit_and_preview.sh +68 -68
- package/skills/sophnet-image-edit/src/scripts/edit_image.py +279 -279
- package/skills/sophnet-image-edit/src/uv.lock +234 -234
- package/skills/sophnet-image-generate/skill.json +20 -20
- package/skills/sophnet-image-generate/src/SKILL.md +62 -62
- package/skills/sophnet-image-generate/src/pyproject.toml +9 -9
- package/skills/sophnet-image-generate/src/scripts/generate_image.py +156 -156
- package/skills/sophnet-image-generate/src/uv.lock +234 -234
- package/skills/sophnet-image-ocr/skill.json +20 -20
- package/skills/sophnet-image-ocr/src/SKILL.md +167 -167
- package/skills/sophnet-image-ocr/src/pyproject.toml +13 -13
- package/skills/sophnet-image-ocr/src/scripts/ocr.py +225 -225
- package/skills/sophnet-image-ocr/src/uv.lock +234 -234
- package/skills/sophnet-infinite-talk/skill.json +20 -20
- package/skills/sophnet-infinite-talk/src/SKILL.md +140 -140
- package/skills/sophnet-infinite-talk/src/pyproject.toml +9 -9
- package/skills/sophnet-infinite-talk/src/scripts/gen.py +172 -172
- package/skills/sophnet-oss/skill.json +27 -27
- package/skills/sophnet-oss/src/SKILL.md +118 -118
- package/skills/sophnet-oss/src/pyproject.toml +8 -8
- package/skills/sophnet-oss/src/scripts/upload_file.py +43 -43
- package/skills/sophnet-pdf/skill.json +20 -20
- package/skills/sophnet-pdf/src/SKILL.md +413 -413
- package/skills/sophnet-pdf/src/forms.md +297 -297
- package/skills/sophnet-pdf/src/pyproject.toml +14 -14
- package/skills/sophnet-pdf/src/reference.md +611 -611
- package/skills/sophnet-pdf/src/scripts/check_bounding_boxes.py +65 -65
- package/skills/sophnet-pdf/src/scripts/check_fillable_fields.py +11 -11
- package/skills/sophnet-pdf/src/scripts/convert_pdf_to_images.py +33 -33
- package/skills/sophnet-pdf/src/scripts/create_validation_image.py +37 -37
- package/skills/sophnet-pdf/src/scripts/enhance_tutorial.py +557 -557
- package/skills/sophnet-pdf/src/scripts/ensure_uv_env.sh +68 -68
- package/skills/sophnet-pdf/src/scripts/extract_form_field_info.py +122 -122
- package/skills/sophnet-pdf/src/scripts/extract_form_structure.py +115 -115
- package/skills/sophnet-pdf/src/scripts/extract_pdf_content.py +34 -34
- package/skills/sophnet-pdf/src/scripts/fill_fillable_fields.py +98 -98
- package/skills/sophnet-pdf/src/scripts/fill_pdf_form_with_annotations.py +107 -107
- package/skills/sophnet-pdf/src/scripts/upload_file.sh +88 -88
- package/skills/sophnet-pdf/src/uv.lock +537 -537
- package/skills/sophnet-qa-install/skill.json +27 -27
- package/skills/sophnet-qa-install/src/SKILL.md +210 -210
- package/skills/sophnet-qa-install/src/pyproject.toml +6 -6
- package/skills/sophnet-qa-install/src/scripts/backup_md.py +35 -35
- package/skills/sophnet-qa-install/src/scripts/check_installed.py +143 -143
- package/skills/sophnet-qa-install/src/scripts/update_config.py +142 -142
- package/skills/sophnet-qa-install/src/scripts/update_md.py +73 -73
- package/skills/sophnet-schedule/skill.json +20 -20
- package/skills/sophnet-schedule/src/ARCHITECTURE.md +321 -321
- package/skills/sophnet-schedule/src/IMPROVEMENTS.md +145 -145
- package/skills/sophnet-schedule/src/SKILL.md +1050 -1050
- package/skills/sophnet-schedule/src/_meta.json +6 -6
- package/skills/sophnet-schedule/src/api/models.py +245 -245
- package/skills/sophnet-schedule/src/apps/add_event.py +237 -237
- package/skills/sophnet-schedule/src/apps/check_reminders.py +112 -112
- package/skills/sophnet-schedule/src/apps/check_roc.py +246 -246
- package/skills/sophnet-schedule/src/apps/generate_daily_plan.py +342 -342
- package/skills/sophnet-schedule/src/apps/import_events.py +216 -216
- package/skills/sophnet-schedule/src/apps/monitor_calendar_changes.py +140 -140
- package/skills/sophnet-schedule/src/apps/register_tasks.py +169 -169
- package/skills/sophnet-schedule/src/apps/sync_roc_to_gcal.py +174 -174
- package/skills/sophnet-schedule/src/compat.py +66 -66
- package/skills/sophnet-schedule/src/config/reminder_rules.yaml +96 -96
- package/skills/sophnet-schedule/src/config/roc_events.yaml +44 -44
- package/skills/sophnet-schedule/src/config/settings.py +133 -133
- package/skills/sophnet-schedule/src/config/task_registry.yaml +92 -92
- package/skills/sophnet-schedule/src/docs/FRONTEND_INTEGRATION_GUIDE.md +437 -437
- package/skills/sophnet-schedule/src/gcal/client.py +374 -374
- package/skills/sophnet-schedule/src/gcal/models.py +91 -91
- package/skills/sophnet-schedule/src/requirements.txt +6 -6
- package/skills/sophnet-schedule/src/scripts/setup_gcal_token.py +85 -85
- package/skills/sophnet-schedule/src/server.py +669 -669
- package/skills/sophnet-schedule/src/services/calendar_backend.py +139 -139
- package/skills/sophnet-schedule/src/services/conflict_detector.py +96 -96
- package/skills/sophnet-schedule/src/services/datetime_utils.py +117 -117
- package/skills/sophnet-schedule/src/services/event_classifier.py +100 -100
- package/skills/sophnet-schedule/src/services/event_diff.py +160 -160
- package/skills/sophnet-schedule/src/services/google_integration.py +500 -500
- package/skills/sophnet-schedule/src/services/job_store.py +100 -100
- package/skills/sophnet-schedule/src/services/local_event_store.py +266 -266
- package/skills/sophnet-schedule/src/services/reminder_planner.py +116 -116
- package/skills/sophnet-schedule/src/services/runtime_utils.py +31 -31
- package/skills/sophnet-schedule/src/services/table_parser.py +286 -286
- package/skills/sophnet-schedule/src/services/task_builder.py +167 -167
- package/skills/sophnet-schedule/src/services/time_window.py +72 -72
- package/skills/sophnet-sticker-edit/skill.json +27 -27
- package/skills/sophnet-sticker-edit/src/SKILL.md +80 -80
- package/skills/sophnet-sticker-edit/src/pyproject.toml +9 -9
- package/skills/sophnet-sticker-edit/src/scripts/edit_sticker_image.py +403 -403
- package/skills/sophnet-stock/skill.json +20 -20
- package/skills/sophnet-stock/src/App-Plan.md +442 -442
- package/skills/sophnet-stock/src/README.md +214 -214
- package/skills/sophnet-stock/src/SKILL.md +236 -236
- package/skills/sophnet-stock/src/TODO.md +394 -394
- package/skills/sophnet-stock/src/_meta.json +5 -5
- package/skills/sophnet-stock/src/docs/ARCHITECTURE.md +408 -408
- package/skills/sophnet-stock/src/docs/CONCEPT.md +233 -233
- package/skills/sophnet-stock/src/docs/HOT_SCANNER.md +288 -288
- package/skills/sophnet-stock/src/docs/README.md +95 -95
- package/skills/sophnet-stock/src/docs/USAGE.md +465 -465
- package/skills/sophnet-stock/src/scripts/analyze_stock.py +2565 -2565
- package/skills/sophnet-stock/src/scripts/dividends.py +365 -365
- package/skills/sophnet-stock/src/scripts/hot_scanner.py +582 -582
- package/skills/sophnet-stock/src/scripts/portfolio.py +548 -548
- package/skills/sophnet-stock/src/scripts/rumor_scanner.py +342 -342
- package/skills/sophnet-stock/src/scripts/test_stock_analysis.py +409 -409
- package/skills/sophnet-stock/src/scripts/watchlist.py +336 -336
- package/skills/sophnet-training-install/skill.json +27 -27
- package/skills/sophnet-training-install/src/SKILL.md +211 -211
- package/skills/sophnet-training-install/src/pyproject.toml +6 -6
- package/skills/sophnet-training-install/src/scripts/backup_md.py +35 -35
- package/skills/sophnet-training-install/src/scripts/check_installed.py +144 -144
- package/skills/sophnet-training-install/src/scripts/update_config.py +142 -142
- package/skills/sophnet-training-install/src/scripts/update_md.py +73 -73
- package/skills/sophnet-tts/skill.json +20 -20
- package/skills/sophnet-tts/src/SKILL.md +79 -79
- package/skills/sophnet-tts/src/pyproject.toml +9 -9
- package/skills/sophnet-tts/src/scripts/gen_tts.py +130 -130
- package/skills/sophnet-video-generate/skill.json +37 -37
- package/skills/sophnet-video-generate/src/SKILL.md +117 -117
- package/skills/sophnet-video-generate/src/scripts/gen_video.py +321 -321
- package/skills/sophnet-xlsx/skill.json +20 -20
- package/skills/sophnet-xlsx/src/SKILL.md +399 -399
- package/skills/sophnet-xlsx/src/pyproject.toml +11 -11
- package/skills/sophnet-xlsx/src/scripts/ensure_uv_env.sh +68 -68
- package/skills/sophnet-xlsx/src/scripts/office/helpers/merge_runs.py +199 -199
- package/skills/sophnet-xlsx/src/scripts/office/helpers/simplify_redlines.py +197 -197
- package/skills/sophnet-xlsx/src/scripts/office/pack.py +159 -159
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -1499
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -146
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -1085
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -11
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -3081
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -23
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -185
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -287
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -1676
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -28
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -144
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -174
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -25
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -18
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -59
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -56
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -195
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -582
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -25
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -4439
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -570
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -509
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -12
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -108
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -96
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -3646
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -116
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -42
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -50
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -49
- package/skills/sophnet-xlsx/src/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -33
- package/skills/sophnet-xlsx/src/scripts/office/schemas/mce/mc.xsd +75 -75
- package/skills/sophnet-xlsx/src/scripts/office/schemas/microsoft/wml-2010.xsd +560 -560
- package/skills/sophnet-xlsx/src/scripts/office/schemas/microsoft/wml-2012.xsd +67 -67
- package/skills/sophnet-xlsx/src/scripts/office/schemas/microsoft/wml-2018.xsd +14 -14
- package/skills/sophnet-xlsx/src/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -20
- package/skills/sophnet-xlsx/src/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -13
- package/skills/sophnet-xlsx/src/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -4
- package/skills/sophnet-xlsx/src/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -8
- package/skills/sophnet-xlsx/src/scripts/office/soffice.py +183 -183
- package/skills/sophnet-xlsx/src/scripts/office/unpack.py +132 -132
- package/skills/sophnet-xlsx/src/scripts/office/validate.py +111 -111
- package/skills/sophnet-xlsx/src/scripts/office/validators/__init__.py +15 -15
- package/skills/sophnet-xlsx/src/scripts/office/validators/base.py +847 -847
- package/skills/sophnet-xlsx/src/scripts/office/validators/docx.py +446 -446
- package/skills/sophnet-xlsx/src/scripts/office/validators/pptx.py +275 -275
- package/skills/sophnet-xlsx/src/scripts/office/validators/redlining.py +247 -247
- package/skills/sophnet-xlsx/src/scripts/recalc.py +184 -184
- package/skills/sophnet-xlsx/src/scripts/upload_file.sh +96 -96
- package/skills/sophnet-xlsx/src/uv.lock +319 -319
- package/skills/ui-ux-pro-max/skill.json +20 -20
- package/skills/ui-ux-pro-max/src/SKILL.md +377 -377
- package/skills/ui-ux-pro-max/src/data/icons.csv +101 -101
- package/skills/ui-ux-pro-max/src/data/react-performance.csv +45 -45
- package/skills/ui-ux-pro-max/src/data/stacks/astro.csv +54 -54
- package/skills/ui-ux-pro-max/src/data/stacks/jetpack-compose.csv +53 -53
- package/skills/ui-ux-pro-max/src/data/stacks/nuxt-ui.csv +51 -51
- package/skills/ui-ux-pro-max/src/data/stacks/nuxtjs.csv +59 -59
- package/skills/ui-ux-pro-max/src/data/stacks/shadcn.csv +61 -61
- package/skills/ui-ux-pro-max/src/data/typography.csv +57 -57
- package/skills/ui-ux-pro-max/src/data/ui-reasoning.csv +101 -101
- package/skills/ui-ux-pro-max/src/data/web-interface.csv +31 -31
- package/skills/ui-ux-pro-max/src/scripts/core.py +253 -253
- package/skills/ui-ux-pro-max/src/scripts/design_system.py +1067 -1067
- package/skills/video-understand/skill.json +20 -20
- package/skills/video-understand/src/SKILL.md +79 -79
- package/skills/video-understand/src/scripts/video_understand.py +204 -204
- package/skills/weather/skill.json +19 -19
- package/skills/weather/src/SKILL.md +112 -112
- package/skills/web-scraper/skill.json +20 -20
- package/skills/web-scraper/src/SKILL.md +101 -101
- package/skills/web-scraper/src/scripts/scrape.py +270 -270
- package/skills/website-builder/skill.json +20 -20
- package/skills/website-builder/src/SKILL.md +266 -266
- package/skills/website-builder/src/scripts/deploy_site.sh +46 -46
- package/skills/wechat-article-publisher/skill.json +20 -20
- package/skills/wechat-article-publisher/src/SKILL.md +60 -60
- package/skills/wechat-article-publisher/src/config.json +6 -6
- package/skills/wechat-article-publisher/src/pyproject.toml +12 -12
- package/skills/wechat-article-publisher/src/scripts/publish_wechat.py +825 -825
- package/skills/xiaohongshu/skill.json +20 -20
- package/skills/xiaohongshu/src/SKILL.md +91 -91
- package/skills/xiaohongshu/src/_meta.json +5 -5
- package/skills/xiaohongshu/src/assets/card.html +216 -216
- package/skills/xiaohongshu/src/assets/cover.html +82 -82
- package/skills/xiaohongshu/src/assets/example.md +84 -84
- package/skills/xiaohongshu/src/assets/styles.css +318 -318
- package/skills/xiaohongshu/src/scripts/render_xhs_v2.py +737 -737
- package/skills/xiaohongshu/src/scripts/sign_server.py +158 -158
- package/skills/xiaohongshu/src/scripts/stealth.min.js +6 -6
- package/skills/xiaohongshu/src/scripts/xhs_tool.py +186 -186
- package/skills/xiaohongshu/src/workflow.py +185 -185
- package/src/commands/agent.js +112 -112
- package/src/commands/download.js +101 -101
- package/src/commands/info.js +58 -58
- package/src/commands/list.js +71 -71
- package/src/utils/agents.js +36 -36
- package/src/utils/config.js +22 -22
- package/src/utils/paths.js +31 -31
- package/src/utils/versions.js +57 -57
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "md2pdf-converter",
|
|
3
|
-
"version": "2.0.0",
|
|
4
|
-
"types": [
|
|
5
|
-
"store"
|
|
6
|
-
],
|
|
7
|
-
"displayName": "Markdown 转 PDF(离线)",
|
|
8
|
-
"description": "使用 Pandoc 与 WeasyPrint 将 Markdown 转为 PDF,支持中文与彩色表情;可离线使用(需先完成依赖与 Twemoji 缓存)。",
|
|
9
|
-
"changelog": [
|
|
10
|
-
{
|
|
11
|
-
"version": "2.0.0",
|
|
12
|
-
"date": "2026-04-14",
|
|
13
|
-
"changes": [
|
|
14
|
-
"初次提交"
|
|
15
|
-
]
|
|
16
|
-
}
|
|
17
|
-
],
|
|
18
|
-
"createdAt": "2026-04-14",
|
|
19
|
-
"updatedAt": "2026-04-14"
|
|
20
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "md2pdf-converter",
|
|
3
|
+
"version": "2.0.0",
|
|
4
|
+
"types": [
|
|
5
|
+
"store"
|
|
6
|
+
],
|
|
7
|
+
"displayName": "Markdown 转 PDF(离线)",
|
|
8
|
+
"description": "使用 Pandoc 与 WeasyPrint 将 Markdown 转为 PDF,支持中文与彩色表情;可离线使用(需先完成依赖与 Twemoji 缓存)。",
|
|
9
|
+
"changelog": [
|
|
10
|
+
{
|
|
11
|
+
"version": "2.0.0",
|
|
12
|
+
"date": "2026-04-14",
|
|
13
|
+
"changes": [
|
|
14
|
+
"初次提交"
|
|
15
|
+
]
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"createdAt": "2026-04-14",
|
|
19
|
+
"updatedAt": "2026-04-14"
|
|
20
|
+
}
|
|
@@ -1,244 +1,244 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: md2pdf-converter
|
|
3
|
-
description: Offline Markdown to PDF converter with full Unicode support using Pandoc + WeasyPrint + local Twemoji cache. Use when user needs to convert Markdown documents to PDF with Chinese fonts and colorful emojis, or work offline after initial setup.
|
|
4
|
-
metadata:
|
|
5
|
-
{
|
|
6
|
-
"openclaw":
|
|
7
|
-
{
|
|
8
|
-
"emoji": "📄",
|
|
9
|
-
"requires": { "bins": ["pandoc", "python3", "wget"] },
|
|
10
|
-
"install":
|
|
11
|
-
[
|
|
12
|
-
{
|
|
13
|
-
"id": "apt-pandoc",
|
|
14
|
-
"kind": "apt",
|
|
15
|
-
"package": "pandoc",
|
|
16
|
-
"bins": ["pandoc"],
|
|
17
|
-
"label": "Install Pandoc (apt)",
|
|
18
|
-
},
|
|
19
|
-
{
|
|
20
|
-
"id": "apt-weasyprint",
|
|
21
|
-
"kind": "apt",
|
|
22
|
-
"package": "python3-weasyprint",
|
|
23
|
-
"bins": ["weasyprint"],
|
|
24
|
-
"label": "Install WeasyPrint (apt)",
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
"id": "apt-fonts",
|
|
28
|
-
"kind": "apt",
|
|
29
|
-
"package": "fonts-arphic-uming",
|
|
30
|
-
"bins": [],
|
|
31
|
-
"label": "Install Chinese fonts (apt)",
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"id": "pip-weasyprint",
|
|
35
|
-
"kind": "pip",
|
|
36
|
-
"package": "weasyprint",
|
|
37
|
-
"bins": ["weasyprint"],
|
|
38
|
-
"label": "Install WeasyPrint (pip)",
|
|
39
|
-
},
|
|
40
|
-
],
|
|
41
|
-
},
|
|
42
|
-
}
|
|
43
|
-
---
|
|
44
|
-
|
|
45
|
-
# Markdown to PDF Converter (Complete Version)
|
|
46
|
-
|
|
47
|
-
## Overview
|
|
48
|
-
|
|
49
|
-
Convert Markdown documents to professional PDFs with **FULL Unicode support**, Chinese fonts, and **colorful emojis** (3660 emojis including all variants). Uses Pandoc + WeasyPrint with a local Twemoji cache to work offline after first run.
|
|
50
|
-
|
|
51
|
-
## Quick Start
|
|
52
|
-
|
|
53
|
-
Convert a Markdown file to PDF:
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
bash scripts/md2pdf-local.sh input.md output.pdf
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
**First run only:** Downloads ~150MB emoji resources (Twemoji 14.0.0) from GitHub. Subsequent runs work offline.
|
|
60
|
-
|
|
61
|
-
**Example:**
|
|
62
|
-
|
|
63
|
-
```bash
|
|
64
|
-
bash scripts/md2pdf-local.sh report.md report.pdf
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Features
|
|
68
|
-
|
|
69
|
-
- ✅ **Full Unicode support** (Chinese, Japanese, Korean)
|
|
70
|
-
- ✅ **Complete emoji support** (Twemoji 14.0.0, 3660 colorful PNGs)
|
|
71
|
-
- ✅ **All emoji variants** (skin tones, hair styles, regional flags, etc.)
|
|
72
|
-
- ✅ **Offline operation** after initial setup
|
|
73
|
-
- ✅ **Professional PDF layout** with page numbers
|
|
74
|
-
- ✅ **Code highlighting**, tables, blockquotes
|
|
75
|
-
- ✅ **Accurate emoji mapping** via Python pre-generated lookup table
|
|
76
|
-
|
|
77
|
-
## Technical Details
|
|
78
|
-
|
|
79
|
-
### Dependencies
|
|
80
|
-
|
|
81
|
-
- **Pandoc** - Universal document converter
|
|
82
|
-
- **WeasyPrint** - CSS-to-PDF renderer
|
|
83
|
-
- **Python 3** - For emoji mapping generation
|
|
84
|
-
- **wget** - For emoji download (first run only)
|
|
85
|
-
|
|
86
|
-
### How It Works
|
|
87
|
-
|
|
88
|
-
1. **First run**: Downloads Twemoji 14.0.0 to `~/.cache/md2pdf/emojis/`
|
|
89
|
-
2. **Python script**: Generates emoji → filename mapping table (`emoji_mapping.json`)
|
|
90
|
-
3. **Pandoc**: Converts Markdown to HTML with a Lua filter that replaces emoji characters with local image references
|
|
91
|
-
4. **WeasyPrint**: Renders HTML to PDF using:
|
|
92
|
-
- AR PL UMing CN for Chinese characters
|
|
93
|
-
- Local emoji images (PNG, 72x72px, colorful)
|
|
94
|
-
- Professional CSS styling
|
|
95
|
-
|
|
96
|
-
### Emoji Cache Location
|
|
97
|
-
|
|
98
|
-
```
|
|
99
|
-
~/.cache/md2pdf/
|
|
100
|
-
├── emojis/ # 3660 colorful PNG files
|
|
101
|
-
│ ├── 0023-fe0f-20e3.png
|
|
102
|
-
│ ├── 1f600.png
|
|
103
|
-
│ └── ...
|
|
104
|
-
└── emoji_mapping.json # Emoji to filename mapping
|
|
105
|
-
{
|
|
106
|
-
"🙀": "1f600.png",
|
|
107
|
-
"⌛": "0023-fe0f-20e3.png",
|
|
108
|
-
...
|
|
109
|
-
}
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
### Emoji Mapping
|
|
113
|
-
|
|
114
|
-
The Python script `generate_emoji_mapping.py` scans all Twemoji files and creates a precise mapping from emoji characters to PNG filenames. This ensures accurate emoji replacement even for complex variants like skin tones and regional indicators.
|
|
115
|
-
|
|
116
|
-
### Fonts
|
|
117
|
-
|
|
118
|
-
**Primary Chinese font**: AR PL UMing CN
|
|
119
|
-
|
|
120
|
-
**Fallback**: Noto Sans SC, Noto Sans CJK SC, Microsoft YaHei
|
|
121
|
-
|
|
122
|
-
**Monospace**: Menlo, Monaco
|
|
123
|
-
|
|
124
|
-
## Version History
|
|
125
|
-
|
|
126
|
-
### v2.0 (Current)
|
|
127
|
-
- ✅ Switched to **Twemoji 14.0.0** (complete version)
|
|
128
|
-
- ✅ **3660 colorful emojis** (including all variants)
|
|
129
|
-
- ✅ **Python pre-generated mapping** for accurate emoji replacement
|
|
130
|
-
- ✅ Fixed black-and-white emoji display issue
|
|
131
|
-
- ✅ Proper support for emoji variants (skin tones, hair styles, etc.)
|
|
132
|
-
|
|
133
|
-
### v1.0 (Previous)
|
|
134
|
-
- Used emoji-datasource-google (~2000-3000 emojis)
|
|
135
|
-
- Simple hex-based filename matching (inaccurate for variants)
|
|
136
|
-
- Some emojis displayed as Unicode characters (black-and-white)
|
|
137
|
-
|
|
138
|
-
## Troubleshooting
|
|
139
|
-
|
|
140
|
-
### Font Issues
|
|
141
|
-
|
|
142
|
-
If Chinese characters display incorrectly, ensure AR PL UMing CN is installed:
|
|
143
|
-
|
|
144
|
-
```bash
|
|
145
|
-
# Ubuntu/Debian
|
|
146
|
-
sudo apt-get install fonts-arphic-uming
|
|
147
|
-
|
|
148
|
-
# Check if installed
|
|
149
|
-
fc-list | grep "AR PL UMing"
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
### Emoji Not Showing
|
|
153
|
-
|
|
154
|
-
1. Check if emoji cache exists: `ls ~/.cache/md2pdf/emojis/`
|
|
155
|
-
2. Check if mapping exists: `ls ~/.cache/md2pdf/emoji_mapping.json`
|
|
156
|
-
3. If missing, delete cache and re-run: `rm -rf ~/.cache/md2pdf`
|
|
157
|
-
4. Verify emoji file exists: `ls ~/.cache/md2pdf/emojis/1f600.png`
|
|
158
|
-
|
|
159
|
-
### Emoji Displaying as Black-and-White
|
|
160
|
-
|
|
161
|
-
This issue has been **FIXED** in v2.0. If you still see black-and-white emojis:
|
|
162
|
-
|
|
163
|
-
1. Verify you're using the v2.0 script:
|
|
164
|
-
```bash
|
|
165
|
-
grep "TWEMOJI_VERSION" scripts/md2pdf-local.sh
|
|
166
|
-
# Should show: TWEMOJI_VERSION="14.0.0"
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
2. Clear cache and regenerate:
|
|
170
|
-
```bash
|
|
171
|
-
rm -rf ~/.cache/md2pdf
|
|
172
|
-
bash scripts/md2pdf-local.sh test.md test.pdf
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
### WeasyPrint Errors
|
|
176
|
-
|
|
177
|
-
Install missing dependencies:
|
|
178
|
-
|
|
179
|
-
```bash
|
|
180
|
-
# Ubuntu/Debian
|
|
181
|
-
sudo apt-get install python3-weasyprint
|
|
182
|
-
|
|
183
|
-
# Or via pip
|
|
184
|
-
pip3 install weasyprint
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
### Python Script Errors
|
|
188
|
-
|
|
189
|
-
If `generate_emoji_mapping.py` fails:
|
|
190
|
-
|
|
191
|
-
```bash
|
|
192
|
-
# Check Python version
|
|
193
|
-
python3 --version
|
|
194
|
-
# Should be Python 3.6+
|
|
195
|
-
|
|
196
|
-
# Check emoji cache
|
|
197
|
-
ls ~/.cache/md2pdf/emojis
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
## Resources
|
|
201
|
-
|
|
202
|
-
### scripts/
|
|
203
|
-
|
|
204
|
-
**md2pdf-local.sh** - Main conversion script with automatic emoji caching and mapping
|
|
205
|
-
|
|
206
|
-
**generate_emoji_mapping.py** - Python script to generate emoji lookup table
|
|
207
|
-
|
|
208
|
-
**Usage**: Direct execution from any location (uses absolute paths):
|
|
209
|
-
|
|
210
|
-
```bash
|
|
211
|
-
bash /path/to/skills/md2pdf-converter/scripts/md2pdf-local.sh input.md output.pdf
|
|
212
|
-
```
|
|
213
|
-
|
|
214
|
-
**Key Features**:
|
|
215
|
-
- Automatic Twemoji download and caching
|
|
216
|
-
- Python pre-generated emoji mapping (accurate)
|
|
217
|
-
- Lua filter for emoji replacement
|
|
218
|
-
- CSS styling for professional output
|
|
219
|
-
- Temporary file cleanup (automatic)
|
|
220
|
-
|
|
221
|
-
## Comparison: v1.0 vs v2.0
|
|
222
|
-
|
|
223
|
-
| Feature | v1.0 (Old) | v2.0 (New) |
|
|
224
|
-
|---------|----------------|---------------|
|
|
225
|
-
| Emoji Source | emoji-datasource-google | Twemoji 14.0.0 |
|
|
226
|
-
| Emoji Count | ~2000-3000 | 3660 |
|
|
227
|
-
| Color Display | ❌ Unstable | ✅ Stable |
|
|
228
|
-
| Variants Support | ❌ Incomplete | ✅ Complete |
|
|
229
|
-
| Mapping Accuracy | ⚠️ Low | ✅ High |
|
|
230
|
-
| Offline Support | ✅ After first run | ✅ After first run |
|
|
231
|
-
| First Run Size | ~68MB | ~150MB |
|
|
232
|
-
|
|
233
|
-
## Performance
|
|
234
|
-
|
|
235
|
-
- **First run**: ~150MB download, 10-30 seconds (depending on network)
|
|
236
|
-
- **Subsequent runs**: Offline, seconds-level conversion
|
|
237
|
-
- **Memory usage**: ~150MB for emoji cache
|
|
238
|
-
- **PDF generation**: 1-5 seconds per page
|
|
239
|
-
|
|
240
|
-
## Limitations
|
|
241
|
-
|
|
242
|
-
- Missing emojis (newer than Twemoji 14.0.0) will display as Unicode characters
|
|
243
|
-
- First run requires internet connection (for Twemoji download)
|
|
244
|
-
- Emoji cache size: ~150MB (3660 PNG files at 72x72px)
|
|
1
|
+
---
|
|
2
|
+
name: md2pdf-converter
|
|
3
|
+
description: Offline Markdown to PDF converter with full Unicode support using Pandoc + WeasyPrint + local Twemoji cache. Use when user needs to convert Markdown documents to PDF with Chinese fonts and colorful emojis, or work offline after initial setup.
|
|
4
|
+
metadata:
|
|
5
|
+
{
|
|
6
|
+
"openclaw":
|
|
7
|
+
{
|
|
8
|
+
"emoji": "📄",
|
|
9
|
+
"requires": { "bins": ["pandoc", "python3", "wget"] },
|
|
10
|
+
"install":
|
|
11
|
+
[
|
|
12
|
+
{
|
|
13
|
+
"id": "apt-pandoc",
|
|
14
|
+
"kind": "apt",
|
|
15
|
+
"package": "pandoc",
|
|
16
|
+
"bins": ["pandoc"],
|
|
17
|
+
"label": "Install Pandoc (apt)",
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "apt-weasyprint",
|
|
21
|
+
"kind": "apt",
|
|
22
|
+
"package": "python3-weasyprint",
|
|
23
|
+
"bins": ["weasyprint"],
|
|
24
|
+
"label": "Install WeasyPrint (apt)",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "apt-fonts",
|
|
28
|
+
"kind": "apt",
|
|
29
|
+
"package": "fonts-arphic-uming",
|
|
30
|
+
"bins": [],
|
|
31
|
+
"label": "Install Chinese fonts (apt)",
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "pip-weasyprint",
|
|
35
|
+
"kind": "pip",
|
|
36
|
+
"package": "weasyprint",
|
|
37
|
+
"bins": ["weasyprint"],
|
|
38
|
+
"label": "Install WeasyPrint (pip)",
|
|
39
|
+
},
|
|
40
|
+
],
|
|
41
|
+
},
|
|
42
|
+
}
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
# Markdown to PDF Converter (Complete Version)
|
|
46
|
+
|
|
47
|
+
## Overview
|
|
48
|
+
|
|
49
|
+
Convert Markdown documents to professional PDFs with **FULL Unicode support**, Chinese fonts, and **colorful emojis** (3660 emojis including all variants). Uses Pandoc + WeasyPrint with a local Twemoji cache to work offline after first run.
|
|
50
|
+
|
|
51
|
+
## Quick Start
|
|
52
|
+
|
|
53
|
+
Convert a Markdown file to PDF:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
bash scripts/md2pdf-local.sh input.md output.pdf
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**First run only:** Downloads ~150MB emoji resources (Twemoji 14.0.0) from GitHub. Subsequent runs work offline.
|
|
60
|
+
|
|
61
|
+
**Example:**
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
bash scripts/md2pdf-local.sh report.md report.pdf
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Features
|
|
68
|
+
|
|
69
|
+
- ✅ **Full Unicode support** (Chinese, Japanese, Korean)
|
|
70
|
+
- ✅ **Complete emoji support** (Twemoji 14.0.0, 3660 colorful PNGs)
|
|
71
|
+
- ✅ **All emoji variants** (skin tones, hair styles, regional flags, etc.)
|
|
72
|
+
- ✅ **Offline operation** after initial setup
|
|
73
|
+
- ✅ **Professional PDF layout** with page numbers
|
|
74
|
+
- ✅ **Code highlighting**, tables, blockquotes
|
|
75
|
+
- ✅ **Accurate emoji mapping** via Python pre-generated lookup table
|
|
76
|
+
|
|
77
|
+
## Technical Details
|
|
78
|
+
|
|
79
|
+
### Dependencies
|
|
80
|
+
|
|
81
|
+
- **Pandoc** - Universal document converter
|
|
82
|
+
- **WeasyPrint** - CSS-to-PDF renderer
|
|
83
|
+
- **Python 3** - For emoji mapping generation
|
|
84
|
+
- **wget** - For emoji download (first run only)
|
|
85
|
+
|
|
86
|
+
### How It Works
|
|
87
|
+
|
|
88
|
+
1. **First run**: Downloads Twemoji 14.0.0 to `~/.cache/md2pdf/emojis/`
|
|
89
|
+
2. **Python script**: Generates emoji → filename mapping table (`emoji_mapping.json`)
|
|
90
|
+
3. **Pandoc**: Converts Markdown to HTML with a Lua filter that replaces emoji characters with local image references
|
|
91
|
+
4. **WeasyPrint**: Renders HTML to PDF using:
|
|
92
|
+
- AR PL UMing CN for Chinese characters
|
|
93
|
+
- Local emoji images (PNG, 72x72px, colorful)
|
|
94
|
+
- Professional CSS styling
|
|
95
|
+
|
|
96
|
+
### Emoji Cache Location
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
~/.cache/md2pdf/
|
|
100
|
+
├── emojis/ # 3660 colorful PNG files
|
|
101
|
+
│ ├── 0023-fe0f-20e3.png
|
|
102
|
+
│ ├── 1f600.png
|
|
103
|
+
│ └── ...
|
|
104
|
+
└── emoji_mapping.json # Emoji to filename mapping
|
|
105
|
+
{
|
|
106
|
+
"🙀": "1f600.png",
|
|
107
|
+
"⌛": "0023-fe0f-20e3.png",
|
|
108
|
+
...
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### Emoji Mapping
|
|
113
|
+
|
|
114
|
+
The Python script `generate_emoji_mapping.py` scans all Twemoji files and creates a precise mapping from emoji characters to PNG filenames. This ensures accurate emoji replacement even for complex variants like skin tones and regional indicators.
|
|
115
|
+
|
|
116
|
+
### Fonts
|
|
117
|
+
|
|
118
|
+
**Primary Chinese font**: AR PL UMing CN
|
|
119
|
+
|
|
120
|
+
**Fallback**: Noto Sans SC, Noto Sans CJK SC, Microsoft YaHei
|
|
121
|
+
|
|
122
|
+
**Monospace**: Menlo, Monaco
|
|
123
|
+
|
|
124
|
+
## Version History
|
|
125
|
+
|
|
126
|
+
### v2.0 (Current)
|
|
127
|
+
- ✅ Switched to **Twemoji 14.0.0** (complete version)
|
|
128
|
+
- ✅ **3660 colorful emojis** (including all variants)
|
|
129
|
+
- ✅ **Python pre-generated mapping** for accurate emoji replacement
|
|
130
|
+
- ✅ Fixed black-and-white emoji display issue
|
|
131
|
+
- ✅ Proper support for emoji variants (skin tones, hair styles, etc.)
|
|
132
|
+
|
|
133
|
+
### v1.0 (Previous)
|
|
134
|
+
- Used emoji-datasource-google (~2000-3000 emojis)
|
|
135
|
+
- Simple hex-based filename matching (inaccurate for variants)
|
|
136
|
+
- Some emojis displayed as Unicode characters (black-and-white)
|
|
137
|
+
|
|
138
|
+
## Troubleshooting
|
|
139
|
+
|
|
140
|
+
### Font Issues
|
|
141
|
+
|
|
142
|
+
If Chinese characters display incorrectly, ensure AR PL UMing CN is installed:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
# Ubuntu/Debian
|
|
146
|
+
sudo apt-get install fonts-arphic-uming
|
|
147
|
+
|
|
148
|
+
# Check if installed
|
|
149
|
+
fc-list | grep "AR PL UMing"
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Emoji Not Showing
|
|
153
|
+
|
|
154
|
+
1. Check if emoji cache exists: `ls ~/.cache/md2pdf/emojis/`
|
|
155
|
+
2. Check if mapping exists: `ls ~/.cache/md2pdf/emoji_mapping.json`
|
|
156
|
+
3. If missing, delete cache and re-run: `rm -rf ~/.cache/md2pdf`
|
|
157
|
+
4. Verify emoji file exists: `ls ~/.cache/md2pdf/emojis/1f600.png`
|
|
158
|
+
|
|
159
|
+
### Emoji Displaying as Black-and-White
|
|
160
|
+
|
|
161
|
+
This issue has been **FIXED** in v2.0. If you still see black-and-white emojis:
|
|
162
|
+
|
|
163
|
+
1. Verify you're using the v2.0 script:
|
|
164
|
+
```bash
|
|
165
|
+
grep "TWEMOJI_VERSION" scripts/md2pdf-local.sh
|
|
166
|
+
# Should show: TWEMOJI_VERSION="14.0.0"
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
2. Clear cache and regenerate:
|
|
170
|
+
```bash
|
|
171
|
+
rm -rf ~/.cache/md2pdf
|
|
172
|
+
bash scripts/md2pdf-local.sh test.md test.pdf
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
### WeasyPrint Errors
|
|
176
|
+
|
|
177
|
+
Install missing dependencies:
|
|
178
|
+
|
|
179
|
+
```bash
|
|
180
|
+
# Ubuntu/Debian
|
|
181
|
+
sudo apt-get install python3-weasyprint
|
|
182
|
+
|
|
183
|
+
# Or via pip
|
|
184
|
+
pip3 install weasyprint
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Python Script Errors
|
|
188
|
+
|
|
189
|
+
If `generate_emoji_mapping.py` fails:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# Check Python version
|
|
193
|
+
python3 --version
|
|
194
|
+
# Should be Python 3.6+
|
|
195
|
+
|
|
196
|
+
# Check emoji cache
|
|
197
|
+
ls ~/.cache/md2pdf/emojis
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
## Resources
|
|
201
|
+
|
|
202
|
+
### scripts/
|
|
203
|
+
|
|
204
|
+
**md2pdf-local.sh** - Main conversion script with automatic emoji caching and mapping
|
|
205
|
+
|
|
206
|
+
**generate_emoji_mapping.py** - Python script to generate emoji lookup table
|
|
207
|
+
|
|
208
|
+
**Usage**: Direct execution from any location (uses absolute paths):
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
bash /path/to/skills/md2pdf-converter/scripts/md2pdf-local.sh input.md output.pdf
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
**Key Features**:
|
|
215
|
+
- Automatic Twemoji download and caching
|
|
216
|
+
- Python pre-generated emoji mapping (accurate)
|
|
217
|
+
- Lua filter for emoji replacement
|
|
218
|
+
- CSS styling for professional output
|
|
219
|
+
- Temporary file cleanup (automatic)
|
|
220
|
+
|
|
221
|
+
## Comparison: v1.0 vs v2.0
|
|
222
|
+
|
|
223
|
+
| Feature | v1.0 (Old) | v2.0 (New) |
|
|
224
|
+
|---------|----------------|---------------|
|
|
225
|
+
| Emoji Source | emoji-datasource-google | Twemoji 14.0.0 |
|
|
226
|
+
| Emoji Count | ~2000-3000 | 3660 |
|
|
227
|
+
| Color Display | ❌ Unstable | ✅ Stable |
|
|
228
|
+
| Variants Support | ❌ Incomplete | ✅ Complete |
|
|
229
|
+
| Mapping Accuracy | ⚠️ Low | ✅ High |
|
|
230
|
+
| Offline Support | ✅ After first run | ✅ After first run |
|
|
231
|
+
| First Run Size | ~68MB | ~150MB |
|
|
232
|
+
|
|
233
|
+
## Performance
|
|
234
|
+
|
|
235
|
+
- **First run**: ~150MB download, 10-30 seconds (depending on network)
|
|
236
|
+
- **Subsequent runs**: Offline, seconds-level conversion
|
|
237
|
+
- **Memory usage**: ~150MB for emoji cache
|
|
238
|
+
- **PDF generation**: 1-5 seconds per page
|
|
239
|
+
|
|
240
|
+
## Limitations
|
|
241
|
+
|
|
242
|
+
- Missing emojis (newer than Twemoji 14.0.0) will display as Unicode characters
|
|
243
|
+
- First run requires internet connection (for Twemoji download)
|
|
244
|
+
- Emoji cache size: ~150MB (3660 PNG files at 72x72px)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
{
|
|
2
|
-
"ownerId": "kn738t1fd03w3rjwg0dwkxpvjx810m1v",
|
|
3
|
-
"slug": "md2pdf-converter",
|
|
4
|
-
"version": "2.0.0",
|
|
5
|
-
"publishedAt": 1771124542046
|
|
1
|
+
{
|
|
2
|
+
"ownerId": "kn738t1fd03w3rjwg0dwkxpvjx810m1v",
|
|
3
|
+
"slug": "md2pdf-converter",
|
|
4
|
+
"version": "2.0.0",
|
|
5
|
+
"publishedAt": 1771124542046
|
|
6
6
|
}
|