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,442 +1,442 @@
|
|
|
1
|
-
# StockPulse - Commercial Product Roadmap
|
|
2
|
-
|
|
3
|
-
## Vision
|
|
4
|
-
|
|
5
|
-
Transform the stock-analysis skill into **StockPulse**, a commercial mobile app for retail investors with AI-powered stock and crypto analysis, portfolio tracking, and personalized alerts.
|
|
6
|
-
|
|
7
|
-
## Technical Decisions
|
|
8
|
-
|
|
9
|
-
- **Mobile:** Flutter (iOS + Android cross-platform)
|
|
10
|
-
- **Backend:** Python FastAPI on AWS (ECS/Lambda)
|
|
11
|
-
- **Database:** PostgreSQL (RDS) + Redis (ElastiCache)
|
|
12
|
-
- **Auth:** AWS Cognito or Firebase Auth
|
|
13
|
-
- **Monetization:** Freemium + Subscription ($9.99/mo or $79.99/yr)
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## Architecture Overview
|
|
18
|
-
|
|
19
|
-
```
|
|
20
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
21
|
-
│ MOBILE APP (Flutter) │
|
|
22
|
-
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
23
|
-
│ │Dashboard │ │Portfolio │ │ Analysis │ │ Alerts │ │
|
|
24
|
-
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
|
|
25
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
26
|
-
│ HTTPS/REST
|
|
27
|
-
▼
|
|
28
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
29
|
-
│ API GATEWAY (AWS) │
|
|
30
|
-
│ Rate Limiting, Auth, Caching │
|
|
31
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
32
|
-
│
|
|
33
|
-
▼
|
|
34
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
35
|
-
│ BACKEND (FastAPI on ECS) │
|
|
36
|
-
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
37
|
-
│ │ Auth Service │ │ Analysis API │ │ Portfolio API│ │
|
|
38
|
-
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
|
39
|
-
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
40
|
-
│ │ Alerts Svc │ │ Subscription │ │ User Service │ │
|
|
41
|
-
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
|
42
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
43
|
-
│
|
|
44
|
-
┌─────────────────────┼─────────────────────┐
|
|
45
|
-
▼ ▼ ▼
|
|
46
|
-
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
|
47
|
-
│ PostgreSQL │ │ Redis │ │ S3 │
|
|
48
|
-
│ (RDS) │ │ (ElastiCache)│ │ (Reports) │
|
|
49
|
-
└──────────────┘ └──────────────┘ └──────────────┘
|
|
50
|
-
|
|
51
|
-
BACKGROUND WORKERS (Lambda/ECS)
|
|
52
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
53
|
-
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
54
|
-
│ │Price Updater │ │Alert Checker │ │Daily Reports │ │
|
|
55
|
-
│ │ (5 min) │ │ (1 min) │ │ (Daily) │ │
|
|
56
|
-
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
|
57
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## Feature Tiers
|
|
63
|
-
|
|
64
|
-
### Free Tier
|
|
65
|
-
- 1 portfolio (max 10 assets)
|
|
66
|
-
- Basic stock/crypto analysis
|
|
67
|
-
- Daily market summary
|
|
68
|
-
- Limited to 5 analyses/day
|
|
69
|
-
- Ads displayed
|
|
70
|
-
|
|
71
|
-
### Premium ($9.99/mo)
|
|
72
|
-
- Unlimited portfolios & assets
|
|
73
|
-
- Full 8-dimension analysis
|
|
74
|
-
- Real-time price alerts
|
|
75
|
-
- Push notifications
|
|
76
|
-
- Period reports (daily/weekly/monthly)
|
|
77
|
-
- No ads
|
|
78
|
-
- Priority support
|
|
79
|
-
|
|
80
|
-
### Pro ($19.99/mo) - Future
|
|
81
|
-
- API access
|
|
82
|
-
- Custom watchlists
|
|
83
|
-
- Advanced screeners
|
|
84
|
-
- Export to CSV/PDF
|
|
85
|
-
- Portfolio optimization suggestions
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
## Development Phases
|
|
90
|
-
|
|
91
|
-
### Phase 1: Backend API
|
|
92
|
-
|
|
93
|
-
**Goal:** Convert Python scripts to production REST API
|
|
94
|
-
|
|
95
|
-
#### Tasks:
|
|
96
|
-
1. **Project Setup**
|
|
97
|
-
- FastAPI project structure
|
|
98
|
-
- Docker containerization
|
|
99
|
-
- CI/CD pipeline (GitHub Actions)
|
|
100
|
-
- AWS infrastructure (Terraform)
|
|
101
|
-
|
|
102
|
-
2. **Core API Endpoints**
|
|
103
|
-
```
|
|
104
|
-
POST /auth/register
|
|
105
|
-
POST /auth/login
|
|
106
|
-
POST /auth/refresh
|
|
107
|
-
|
|
108
|
-
GET /analysis/{ticker}
|
|
109
|
-
POST /analysis/batch
|
|
110
|
-
|
|
111
|
-
GET /portfolios
|
|
112
|
-
POST /portfolios
|
|
113
|
-
PUT /portfolios/{id}
|
|
114
|
-
DELETE /portfolios/{id}
|
|
115
|
-
|
|
116
|
-
GET /portfolios/{id}/assets
|
|
117
|
-
POST /portfolios/{id}/assets
|
|
118
|
-
PUT /portfolios/{id}/assets/{ticker}
|
|
119
|
-
DELETE /portfolios/{id}/assets/{ticker}
|
|
120
|
-
|
|
121
|
-
GET /portfolios/{id}/performance?period=weekly
|
|
122
|
-
GET /portfolios/{id}/summary
|
|
123
|
-
|
|
124
|
-
GET /alerts
|
|
125
|
-
POST /alerts
|
|
126
|
-
DELETE /alerts/{id}
|
|
127
|
-
|
|
128
|
-
GET /user/subscription
|
|
129
|
-
POST /user/subscription/upgrade
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
3. **Database Schema**
|
|
133
|
-
```sql
|
|
134
|
-
users (id, email, password_hash, created_at, subscription_tier)
|
|
135
|
-
portfolios (id, user_id, name, created_at, updated_at)
|
|
136
|
-
assets (id, portfolio_id, ticker, asset_type, quantity, cost_basis)
|
|
137
|
-
alerts (id, user_id, ticker, condition, threshold, enabled)
|
|
138
|
-
analysis_cache (ticker, data, expires_at)
|
|
139
|
-
subscriptions (id, user_id, stripe_id, status, expires_at)
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
4. **Refactor Existing Code**
|
|
143
|
-
- Extract `analyze_stock.py` into modules:
|
|
144
|
-
- `analysis/earnings.py`
|
|
145
|
-
- `analysis/fundamentals.py`
|
|
146
|
-
- `analysis/sentiment.py`
|
|
147
|
-
- `analysis/crypto.py`
|
|
148
|
-
- `analysis/market_context.py`
|
|
149
|
-
- Add async support throughout
|
|
150
|
-
- Implement proper caching (Redis)
|
|
151
|
-
- Rate limiting per user tier
|
|
152
|
-
|
|
153
|
-
#### Files to Create:
|
|
154
|
-
```
|
|
155
|
-
backend/
|
|
156
|
-
├── app/
|
|
157
|
-
│ ├── main.py # FastAPI app
|
|
158
|
-
│ ├── config.py # Settings
|
|
159
|
-
│ ├── models/ # SQLAlchemy models
|
|
160
|
-
│ ├── schemas/ # Pydantic schemas
|
|
161
|
-
│ ├── routers/ # API routes
|
|
162
|
-
│ │ ├── auth.py
|
|
163
|
-
│ │ ├── analysis.py
|
|
164
|
-
│ │ ├── portfolios.py
|
|
165
|
-
│ │ └── alerts.py
|
|
166
|
-
│ ├── services/ # Business logic
|
|
167
|
-
│ │ ├── analysis/ # Refactored from analyze_stock.py
|
|
168
|
-
│ │ ├── portfolio.py
|
|
169
|
-
│ │ └── alerts.py
|
|
170
|
-
│ └── workers/ # Background tasks
|
|
171
|
-
├── tests/
|
|
172
|
-
├── Dockerfile
|
|
173
|
-
├── docker-compose.yml
|
|
174
|
-
└── requirements.txt
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
---
|
|
178
|
-
|
|
179
|
-
### Phase 2: Flutter Mobile App
|
|
180
|
-
|
|
181
|
-
**Goal:** Build polished cross-platform mobile app
|
|
182
|
-
|
|
183
|
-
#### Screens:
|
|
184
|
-
1. **Onboarding** - Welcome, feature highlights, sign up/login
|
|
185
|
-
2. **Dashboard** - Market overview, portfolio summary, alerts
|
|
186
|
-
3. **Analysis** - Search ticker, view full analysis, save to portfolio
|
|
187
|
-
4. **Portfolio** - List portfolios, asset breakdown, P&L chart
|
|
188
|
-
5. **Alerts** - Manage price alerts, notification settings
|
|
189
|
-
6. **Settings** - Account, subscription, preferences
|
|
190
|
-
|
|
191
|
-
#### Key Flutter Packages:
|
|
192
|
-
```yaml
|
|
193
|
-
dependencies:
|
|
194
|
-
flutter_bloc: ^8.0.0 # State management
|
|
195
|
-
dio: ^5.0.0 # HTTP client
|
|
196
|
-
go_router: ^12.0.0 # Navigation
|
|
197
|
-
fl_chart: ^0.65.0 # Charts
|
|
198
|
-
firebase_messaging: ^14.0.0 # Push notifications
|
|
199
|
-
in_app_purchase: ^3.0.0 # Subscriptions
|
|
200
|
-
shared_preferences: ^2.0.0
|
|
201
|
-
flutter_secure_storage: ^9.0.0
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
#### App Structure:
|
|
205
|
-
```
|
|
206
|
-
lib/
|
|
207
|
-
├── main.dart
|
|
208
|
-
├── app/
|
|
209
|
-
│ ├── routes.dart
|
|
210
|
-
│ └── theme.dart
|
|
211
|
-
├── features/
|
|
212
|
-
│ ├── auth/
|
|
213
|
-
│ │ ├── bloc/
|
|
214
|
-
│ │ ├── screens/
|
|
215
|
-
│ │ └── widgets/
|
|
216
|
-
│ ├── dashboard/
|
|
217
|
-
│ ├── analysis/
|
|
218
|
-
│ ├── portfolio/
|
|
219
|
-
│ ├── alerts/
|
|
220
|
-
│ └── settings/
|
|
221
|
-
├── core/
|
|
222
|
-
│ ├── api/
|
|
223
|
-
│ ├── models/
|
|
224
|
-
│ └── utils/
|
|
225
|
-
└── shared/
|
|
226
|
-
└── widgets/
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
---
|
|
230
|
-
|
|
231
|
-
### Phase 3: Infrastructure & DevOps
|
|
232
|
-
|
|
233
|
-
**Goal:** Production-ready cloud infrastructure
|
|
234
|
-
|
|
235
|
-
#### AWS Services:
|
|
236
|
-
- **ECS Fargate** - Backend containers
|
|
237
|
-
- **RDS PostgreSQL** - Database
|
|
238
|
-
- **ElastiCache Redis** - Caching
|
|
239
|
-
- **S3** - Static assets, reports
|
|
240
|
-
- **CloudFront** - CDN
|
|
241
|
-
- **Cognito** - Authentication
|
|
242
|
-
- **SES** - Email notifications
|
|
243
|
-
- **SNS** - Push notifications
|
|
244
|
-
- **CloudWatch** - Monitoring
|
|
245
|
-
- **WAF** - Security
|
|
246
|
-
|
|
247
|
-
#### Terraform Modules:
|
|
248
|
-
```
|
|
249
|
-
infrastructure/
|
|
250
|
-
├── main.tf
|
|
251
|
-
├── variables.tf
|
|
252
|
-
├── modules/
|
|
253
|
-
│ ├── vpc/
|
|
254
|
-
│ ├── ecs/
|
|
255
|
-
│ ├── rds/
|
|
256
|
-
│ ├── elasticache/
|
|
257
|
-
│ └── cognito/
|
|
258
|
-
└── environments/
|
|
259
|
-
├── dev/
|
|
260
|
-
├── staging/
|
|
261
|
-
└── prod/
|
|
262
|
-
```
|
|
263
|
-
|
|
264
|
-
#### Estimated Monthly Costs (Production):
|
|
265
|
-
| Service | Est. Cost |
|
|
266
|
-
|---------|-----------|
|
|
267
|
-
| ECS Fargate (2 tasks) | $50-100 |
|
|
268
|
-
| RDS (db.t3.small) | $30-50 |
|
|
269
|
-
| ElastiCache (cache.t3.micro) | $15-25 |
|
|
270
|
-
| S3 + CloudFront | $10-20 |
|
|
271
|
-
| Other (Cognito, SES, etc.) | $20-30 |
|
|
272
|
-
| **Total** | **$125-225/mo** |
|
|
273
|
-
|
|
274
|
-
---
|
|
275
|
-
|
|
276
|
-
### Phase 4: Payments & Subscriptions
|
|
277
|
-
|
|
278
|
-
**Goal:** Integrate Stripe for subscriptions
|
|
279
|
-
|
|
280
|
-
#### Implementation:
|
|
281
|
-
1. Stripe subscription products (Free, Premium, Pro)
|
|
282
|
-
2. In-app purchase for iOS/Android
|
|
283
|
-
3. Webhook handlers for subscription events
|
|
284
|
-
4. Grace period handling
|
|
285
|
-
5. Receipt validation
|
|
286
|
-
|
|
287
|
-
#### Stripe Integration:
|
|
288
|
-
```python
|
|
289
|
-
# Backend webhook handler
|
|
290
|
-
@router.post("/webhooks/stripe")
|
|
291
|
-
async def stripe_webhook(request: Request):
|
|
292
|
-
event = stripe.Webhook.construct_event(...)
|
|
293
|
-
|
|
294
|
-
if event.type == "customer.subscription.updated":
|
|
295
|
-
update_user_tier(event.data.object)
|
|
296
|
-
elif event.type == "customer.subscription.deleted":
|
|
297
|
-
downgrade_to_free(event.data.object)
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
---
|
|
301
|
-
|
|
302
|
-
### Phase 5: Push Notifications & Alerts
|
|
303
|
-
|
|
304
|
-
**Goal:** Real-time price alerts and notifications
|
|
305
|
-
|
|
306
|
-
#### Alert Types:
|
|
307
|
-
- Price above/below threshold
|
|
308
|
-
- Percentage change (daily)
|
|
309
|
-
- Earnings announcement
|
|
310
|
-
- Breaking news (geopolitical)
|
|
311
|
-
- Portfolio performance
|
|
312
|
-
|
|
313
|
-
#### Implementation:
|
|
314
|
-
- Firebase Cloud Messaging (FCM)
|
|
315
|
-
- Background worker checks alerts every minute
|
|
316
|
-
- Rate limit: max 10 alerts/day per free user
|
|
317
|
-
|
|
318
|
-
---
|
|
319
|
-
|
|
320
|
-
### Phase 6: Analytics & Monitoring
|
|
321
|
-
|
|
322
|
-
**Goal:** Track usage, errors, business metrics
|
|
323
|
-
|
|
324
|
-
#### Tools:
|
|
325
|
-
- **Mixpanel/Amplitude** - Product analytics
|
|
326
|
-
- **Sentry** - Error tracking
|
|
327
|
-
- **CloudWatch** - Infrastructure metrics
|
|
328
|
-
- **Custom dashboard** - Business KPIs
|
|
329
|
-
|
|
330
|
-
#### Key Metrics:
|
|
331
|
-
- DAU/MAU
|
|
332
|
-
- Conversion rate (free → premium)
|
|
333
|
-
- Churn rate
|
|
334
|
-
- API response times
|
|
335
|
-
- Analysis accuracy feedback
|
|
336
|
-
|
|
337
|
-
---
|
|
338
|
-
|
|
339
|
-
## Security Considerations
|
|
340
|
-
|
|
341
|
-
1. **Authentication**
|
|
342
|
-
- JWT tokens with refresh rotation
|
|
343
|
-
- OAuth2 (Google, Apple Sign-In)
|
|
344
|
-
- 2FA optional for premium users
|
|
345
|
-
|
|
346
|
-
2. **Data Protection**
|
|
347
|
-
- Encrypt PII at rest (RDS encryption)
|
|
348
|
-
- TLS 1.3 for all API traffic
|
|
349
|
-
- No plaintext passwords
|
|
350
|
-
|
|
351
|
-
3. **API Security**
|
|
352
|
-
- Rate limiting per tier
|
|
353
|
-
- Input validation (Pydantic)
|
|
354
|
-
- SQL injection prevention (SQLAlchemy ORM)
|
|
355
|
-
- CORS configuration
|
|
356
|
-
|
|
357
|
-
4. **Compliance**
|
|
358
|
-
- Privacy policy
|
|
359
|
-
- Terms of service
|
|
360
|
-
- GDPR data export/deletion
|
|
361
|
-
- Financial disclaimer (not investment advice)
|
|
362
|
-
|
|
363
|
-
---
|
|
364
|
-
|
|
365
|
-
## Risks & Mitigations
|
|
366
|
-
|
|
367
|
-
| Risk | Impact | Mitigation |
|
|
368
|
-
|------|--------|------------|
|
|
369
|
-
| Yahoo Finance rate limits | High | Implement caching, use paid API fallback |
|
|
370
|
-
| App store rejection | Medium | Follow guidelines, proper disclaimers |
|
|
371
|
-
| Data accuracy issues | High | Clear disclaimers, data validation |
|
|
372
|
-
| Security breach | Critical | Security audit, penetration testing |
|
|
373
|
-
| Low conversion rate | Medium | A/B testing, feature gating |
|
|
374
|
-
|
|
375
|
-
---
|
|
376
|
-
|
|
377
|
-
## Success Metrics (Year 1)
|
|
378
|
-
|
|
379
|
-
| Metric | Target |
|
|
380
|
-
|--------|--------|
|
|
381
|
-
| App downloads | 10,000+ |
|
|
382
|
-
| DAU | 1,000+ |
|
|
383
|
-
| Premium subscribers | 500+ |
|
|
384
|
-
| Monthly revenue | $5,000+ |
|
|
385
|
-
| App store rating | 4.5+ stars |
|
|
386
|
-
| Churn rate | <5%/month |
|
|
387
|
-
|
|
388
|
-
---
|
|
389
|
-
|
|
390
|
-
## Next Steps (Immediate)
|
|
391
|
-
|
|
392
|
-
1. **Validate idea** - User interviews, landing page
|
|
393
|
-
2. **Design** - Figma mockups for key screens
|
|
394
|
-
3. **Backend MVP** - Core API endpoints
|
|
395
|
-
4. **Flutter prototype** - Basic app with analysis feature
|
|
396
|
-
5. **Beta testing** - TestFlight/Google Play beta
|
|
397
|
-
|
|
398
|
-
---
|
|
399
|
-
|
|
400
|
-
## Repository Structure (Final)
|
|
401
|
-
|
|
402
|
-
```
|
|
403
|
-
stockpulse/
|
|
404
|
-
├── backend/ # FastAPI backend
|
|
405
|
-
│ ├── app/
|
|
406
|
-
│ ├── tests/
|
|
407
|
-
│ ├── Dockerfile
|
|
408
|
-
│ └── requirements.txt
|
|
409
|
-
├── mobile/ # Flutter app
|
|
410
|
-
│ ├── lib/
|
|
411
|
-
│ ├── test/
|
|
412
|
-
│ ├── ios/
|
|
413
|
-
│ ├── android/
|
|
414
|
-
│ └── pubspec.yaml
|
|
415
|
-
├── infrastructure/ # Terraform
|
|
416
|
-
│ ├── modules/
|
|
417
|
-
│ └── environments/
|
|
418
|
-
├── docs/ # Documentation
|
|
419
|
-
│ ├── api/
|
|
420
|
-
│ └── architecture/
|
|
421
|
-
└── scripts/ # Utility scripts
|
|
422
|
-
```
|
|
423
|
-
|
|
424
|
-
---
|
|
425
|
-
|
|
426
|
-
## Timeline Summary (Planning Only)
|
|
427
|
-
|
|
428
|
-
| Phase | Duration | Dependencies |
|
|
429
|
-
|-------|----------|--------------|
|
|
430
|
-
| 1. Backend API | 4-6 weeks | - |
|
|
431
|
-
| 2. Flutter App | 6-8 weeks | Phase 1 |
|
|
432
|
-
| 3. Infrastructure | 2-3 weeks | Phase 1 |
|
|
433
|
-
| 4. Payments | 2 weeks | Phase 2, 3 |
|
|
434
|
-
| 5. Notifications | 2 weeks | Phase 2, 3 |
|
|
435
|
-
| 6. Analytics | 1 week | Phase 2 |
|
|
436
|
-
| **Total** | **17-22 weeks** | |
|
|
437
|
-
|
|
438
|
-
This is a planning document. No fixed timeline - execute phases as resources allow.
|
|
439
|
-
|
|
440
|
-
---
|
|
441
|
-
|
|
442
|
-
**Disclaimer:** This tool is for informational purposes only and does NOT constitute financial advice.
|
|
1
|
+
# StockPulse - Commercial Product Roadmap
|
|
2
|
+
|
|
3
|
+
## Vision
|
|
4
|
+
|
|
5
|
+
Transform the stock-analysis skill into **StockPulse**, a commercial mobile app for retail investors with AI-powered stock and crypto analysis, portfolio tracking, and personalized alerts.
|
|
6
|
+
|
|
7
|
+
## Technical Decisions
|
|
8
|
+
|
|
9
|
+
- **Mobile:** Flutter (iOS + Android cross-platform)
|
|
10
|
+
- **Backend:** Python FastAPI on AWS (ECS/Lambda)
|
|
11
|
+
- **Database:** PostgreSQL (RDS) + Redis (ElastiCache)
|
|
12
|
+
- **Auth:** AWS Cognito or Firebase Auth
|
|
13
|
+
- **Monetization:** Freemium + Subscription ($9.99/mo or $79.99/yr)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Architecture Overview
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
21
|
+
│ MOBILE APP (Flutter) │
|
|
22
|
+
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
23
|
+
│ │Dashboard │ │Portfolio │ │ Analysis │ │ Alerts │ │
|
|
24
|
+
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │
|
|
25
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
26
|
+
│ HTTPS/REST
|
|
27
|
+
▼
|
|
28
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
29
|
+
│ API GATEWAY (AWS) │
|
|
30
|
+
│ Rate Limiting, Auth, Caching │
|
|
31
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
32
|
+
│
|
|
33
|
+
▼
|
|
34
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
35
|
+
│ BACKEND (FastAPI on ECS) │
|
|
36
|
+
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
37
|
+
│ │ Auth Service │ │ Analysis API │ │ Portfolio API│ │
|
|
38
|
+
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
|
39
|
+
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
40
|
+
│ │ Alerts Svc │ │ Subscription │ │ User Service │ │
|
|
41
|
+
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
|
42
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
43
|
+
│
|
|
44
|
+
┌─────────────────────┼─────────────────────┐
|
|
45
|
+
▼ ▼ ▼
|
|
46
|
+
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
|
|
47
|
+
│ PostgreSQL │ │ Redis │ │ S3 │
|
|
48
|
+
│ (RDS) │ │ (ElastiCache)│ │ (Reports) │
|
|
49
|
+
└──────────────┘ └──────────────┘ └──────────────┘
|
|
50
|
+
|
|
51
|
+
BACKGROUND WORKERS (Lambda/ECS)
|
|
52
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
53
|
+
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
54
|
+
│ │Price Updater │ │Alert Checker │ │Daily Reports │ │
|
|
55
|
+
│ │ (5 min) │ │ (1 min) │ │ (Daily) │ │
|
|
56
|
+
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
|
57
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Feature Tiers
|
|
63
|
+
|
|
64
|
+
### Free Tier
|
|
65
|
+
- 1 portfolio (max 10 assets)
|
|
66
|
+
- Basic stock/crypto analysis
|
|
67
|
+
- Daily market summary
|
|
68
|
+
- Limited to 5 analyses/day
|
|
69
|
+
- Ads displayed
|
|
70
|
+
|
|
71
|
+
### Premium ($9.99/mo)
|
|
72
|
+
- Unlimited portfolios & assets
|
|
73
|
+
- Full 8-dimension analysis
|
|
74
|
+
- Real-time price alerts
|
|
75
|
+
- Push notifications
|
|
76
|
+
- Period reports (daily/weekly/monthly)
|
|
77
|
+
- No ads
|
|
78
|
+
- Priority support
|
|
79
|
+
|
|
80
|
+
### Pro ($19.99/mo) - Future
|
|
81
|
+
- API access
|
|
82
|
+
- Custom watchlists
|
|
83
|
+
- Advanced screeners
|
|
84
|
+
- Export to CSV/PDF
|
|
85
|
+
- Portfolio optimization suggestions
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## Development Phases
|
|
90
|
+
|
|
91
|
+
### Phase 1: Backend API
|
|
92
|
+
|
|
93
|
+
**Goal:** Convert Python scripts to production REST API
|
|
94
|
+
|
|
95
|
+
#### Tasks:
|
|
96
|
+
1. **Project Setup**
|
|
97
|
+
- FastAPI project structure
|
|
98
|
+
- Docker containerization
|
|
99
|
+
- CI/CD pipeline (GitHub Actions)
|
|
100
|
+
- AWS infrastructure (Terraform)
|
|
101
|
+
|
|
102
|
+
2. **Core API Endpoints**
|
|
103
|
+
```
|
|
104
|
+
POST /auth/register
|
|
105
|
+
POST /auth/login
|
|
106
|
+
POST /auth/refresh
|
|
107
|
+
|
|
108
|
+
GET /analysis/{ticker}
|
|
109
|
+
POST /analysis/batch
|
|
110
|
+
|
|
111
|
+
GET /portfolios
|
|
112
|
+
POST /portfolios
|
|
113
|
+
PUT /portfolios/{id}
|
|
114
|
+
DELETE /portfolios/{id}
|
|
115
|
+
|
|
116
|
+
GET /portfolios/{id}/assets
|
|
117
|
+
POST /portfolios/{id}/assets
|
|
118
|
+
PUT /portfolios/{id}/assets/{ticker}
|
|
119
|
+
DELETE /portfolios/{id}/assets/{ticker}
|
|
120
|
+
|
|
121
|
+
GET /portfolios/{id}/performance?period=weekly
|
|
122
|
+
GET /portfolios/{id}/summary
|
|
123
|
+
|
|
124
|
+
GET /alerts
|
|
125
|
+
POST /alerts
|
|
126
|
+
DELETE /alerts/{id}
|
|
127
|
+
|
|
128
|
+
GET /user/subscription
|
|
129
|
+
POST /user/subscription/upgrade
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
3. **Database Schema**
|
|
133
|
+
```sql
|
|
134
|
+
users (id, email, password_hash, created_at, subscription_tier)
|
|
135
|
+
portfolios (id, user_id, name, created_at, updated_at)
|
|
136
|
+
assets (id, portfolio_id, ticker, asset_type, quantity, cost_basis)
|
|
137
|
+
alerts (id, user_id, ticker, condition, threshold, enabled)
|
|
138
|
+
analysis_cache (ticker, data, expires_at)
|
|
139
|
+
subscriptions (id, user_id, stripe_id, status, expires_at)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
4. **Refactor Existing Code**
|
|
143
|
+
- Extract `analyze_stock.py` into modules:
|
|
144
|
+
- `analysis/earnings.py`
|
|
145
|
+
- `analysis/fundamentals.py`
|
|
146
|
+
- `analysis/sentiment.py`
|
|
147
|
+
- `analysis/crypto.py`
|
|
148
|
+
- `analysis/market_context.py`
|
|
149
|
+
- Add async support throughout
|
|
150
|
+
- Implement proper caching (Redis)
|
|
151
|
+
- Rate limiting per user tier
|
|
152
|
+
|
|
153
|
+
#### Files to Create:
|
|
154
|
+
```
|
|
155
|
+
backend/
|
|
156
|
+
├── app/
|
|
157
|
+
│ ├── main.py # FastAPI app
|
|
158
|
+
│ ├── config.py # Settings
|
|
159
|
+
│ ├── models/ # SQLAlchemy models
|
|
160
|
+
│ ├── schemas/ # Pydantic schemas
|
|
161
|
+
│ ├── routers/ # API routes
|
|
162
|
+
│ │ ├── auth.py
|
|
163
|
+
│ │ ├── analysis.py
|
|
164
|
+
│ │ ├── portfolios.py
|
|
165
|
+
│ │ └── alerts.py
|
|
166
|
+
│ ├── services/ # Business logic
|
|
167
|
+
│ │ ├── analysis/ # Refactored from analyze_stock.py
|
|
168
|
+
│ │ ├── portfolio.py
|
|
169
|
+
│ │ └── alerts.py
|
|
170
|
+
│ └── workers/ # Background tasks
|
|
171
|
+
├── tests/
|
|
172
|
+
├── Dockerfile
|
|
173
|
+
├── docker-compose.yml
|
|
174
|
+
└── requirements.txt
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
### Phase 2: Flutter Mobile App
|
|
180
|
+
|
|
181
|
+
**Goal:** Build polished cross-platform mobile app
|
|
182
|
+
|
|
183
|
+
#### Screens:
|
|
184
|
+
1. **Onboarding** - Welcome, feature highlights, sign up/login
|
|
185
|
+
2. **Dashboard** - Market overview, portfolio summary, alerts
|
|
186
|
+
3. **Analysis** - Search ticker, view full analysis, save to portfolio
|
|
187
|
+
4. **Portfolio** - List portfolios, asset breakdown, P&L chart
|
|
188
|
+
5. **Alerts** - Manage price alerts, notification settings
|
|
189
|
+
6. **Settings** - Account, subscription, preferences
|
|
190
|
+
|
|
191
|
+
#### Key Flutter Packages:
|
|
192
|
+
```yaml
|
|
193
|
+
dependencies:
|
|
194
|
+
flutter_bloc: ^8.0.0 # State management
|
|
195
|
+
dio: ^5.0.0 # HTTP client
|
|
196
|
+
go_router: ^12.0.0 # Navigation
|
|
197
|
+
fl_chart: ^0.65.0 # Charts
|
|
198
|
+
firebase_messaging: ^14.0.0 # Push notifications
|
|
199
|
+
in_app_purchase: ^3.0.0 # Subscriptions
|
|
200
|
+
shared_preferences: ^2.0.0
|
|
201
|
+
flutter_secure_storage: ^9.0.0
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
#### App Structure:
|
|
205
|
+
```
|
|
206
|
+
lib/
|
|
207
|
+
├── main.dart
|
|
208
|
+
├── app/
|
|
209
|
+
│ ├── routes.dart
|
|
210
|
+
│ └── theme.dart
|
|
211
|
+
├── features/
|
|
212
|
+
│ ├── auth/
|
|
213
|
+
│ │ ├── bloc/
|
|
214
|
+
│ │ ├── screens/
|
|
215
|
+
│ │ └── widgets/
|
|
216
|
+
│ ├── dashboard/
|
|
217
|
+
│ ├── analysis/
|
|
218
|
+
│ ├── portfolio/
|
|
219
|
+
│ ├── alerts/
|
|
220
|
+
│ └── settings/
|
|
221
|
+
├── core/
|
|
222
|
+
│ ├── api/
|
|
223
|
+
│ ├── models/
|
|
224
|
+
│ └── utils/
|
|
225
|
+
└── shared/
|
|
226
|
+
└── widgets/
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
### Phase 3: Infrastructure & DevOps
|
|
232
|
+
|
|
233
|
+
**Goal:** Production-ready cloud infrastructure
|
|
234
|
+
|
|
235
|
+
#### AWS Services:
|
|
236
|
+
- **ECS Fargate** - Backend containers
|
|
237
|
+
- **RDS PostgreSQL** - Database
|
|
238
|
+
- **ElastiCache Redis** - Caching
|
|
239
|
+
- **S3** - Static assets, reports
|
|
240
|
+
- **CloudFront** - CDN
|
|
241
|
+
- **Cognito** - Authentication
|
|
242
|
+
- **SES** - Email notifications
|
|
243
|
+
- **SNS** - Push notifications
|
|
244
|
+
- **CloudWatch** - Monitoring
|
|
245
|
+
- **WAF** - Security
|
|
246
|
+
|
|
247
|
+
#### Terraform Modules:
|
|
248
|
+
```
|
|
249
|
+
infrastructure/
|
|
250
|
+
├── main.tf
|
|
251
|
+
├── variables.tf
|
|
252
|
+
├── modules/
|
|
253
|
+
│ ├── vpc/
|
|
254
|
+
│ ├── ecs/
|
|
255
|
+
│ ├── rds/
|
|
256
|
+
│ ├── elasticache/
|
|
257
|
+
│ └── cognito/
|
|
258
|
+
└── environments/
|
|
259
|
+
├── dev/
|
|
260
|
+
├── staging/
|
|
261
|
+
└── prod/
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
#### Estimated Monthly Costs (Production):
|
|
265
|
+
| Service | Est. Cost |
|
|
266
|
+
|---------|-----------|
|
|
267
|
+
| ECS Fargate (2 tasks) | $50-100 |
|
|
268
|
+
| RDS (db.t3.small) | $30-50 |
|
|
269
|
+
| ElastiCache (cache.t3.micro) | $15-25 |
|
|
270
|
+
| S3 + CloudFront | $10-20 |
|
|
271
|
+
| Other (Cognito, SES, etc.) | $20-30 |
|
|
272
|
+
| **Total** | **$125-225/mo** |
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
### Phase 4: Payments & Subscriptions
|
|
277
|
+
|
|
278
|
+
**Goal:** Integrate Stripe for subscriptions
|
|
279
|
+
|
|
280
|
+
#### Implementation:
|
|
281
|
+
1. Stripe subscription products (Free, Premium, Pro)
|
|
282
|
+
2. In-app purchase for iOS/Android
|
|
283
|
+
3. Webhook handlers for subscription events
|
|
284
|
+
4. Grace period handling
|
|
285
|
+
5. Receipt validation
|
|
286
|
+
|
|
287
|
+
#### Stripe Integration:
|
|
288
|
+
```python
|
|
289
|
+
# Backend webhook handler
|
|
290
|
+
@router.post("/webhooks/stripe")
|
|
291
|
+
async def stripe_webhook(request: Request):
|
|
292
|
+
event = stripe.Webhook.construct_event(...)
|
|
293
|
+
|
|
294
|
+
if event.type == "customer.subscription.updated":
|
|
295
|
+
update_user_tier(event.data.object)
|
|
296
|
+
elif event.type == "customer.subscription.deleted":
|
|
297
|
+
downgrade_to_free(event.data.object)
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
---
|
|
301
|
+
|
|
302
|
+
### Phase 5: Push Notifications & Alerts
|
|
303
|
+
|
|
304
|
+
**Goal:** Real-time price alerts and notifications
|
|
305
|
+
|
|
306
|
+
#### Alert Types:
|
|
307
|
+
- Price above/below threshold
|
|
308
|
+
- Percentage change (daily)
|
|
309
|
+
- Earnings announcement
|
|
310
|
+
- Breaking news (geopolitical)
|
|
311
|
+
- Portfolio performance
|
|
312
|
+
|
|
313
|
+
#### Implementation:
|
|
314
|
+
- Firebase Cloud Messaging (FCM)
|
|
315
|
+
- Background worker checks alerts every minute
|
|
316
|
+
- Rate limit: max 10 alerts/day per free user
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
### Phase 6: Analytics & Monitoring
|
|
321
|
+
|
|
322
|
+
**Goal:** Track usage, errors, business metrics
|
|
323
|
+
|
|
324
|
+
#### Tools:
|
|
325
|
+
- **Mixpanel/Amplitude** - Product analytics
|
|
326
|
+
- **Sentry** - Error tracking
|
|
327
|
+
- **CloudWatch** - Infrastructure metrics
|
|
328
|
+
- **Custom dashboard** - Business KPIs
|
|
329
|
+
|
|
330
|
+
#### Key Metrics:
|
|
331
|
+
- DAU/MAU
|
|
332
|
+
- Conversion rate (free → premium)
|
|
333
|
+
- Churn rate
|
|
334
|
+
- API response times
|
|
335
|
+
- Analysis accuracy feedback
|
|
336
|
+
|
|
337
|
+
---
|
|
338
|
+
|
|
339
|
+
## Security Considerations
|
|
340
|
+
|
|
341
|
+
1. **Authentication**
|
|
342
|
+
- JWT tokens with refresh rotation
|
|
343
|
+
- OAuth2 (Google, Apple Sign-In)
|
|
344
|
+
- 2FA optional for premium users
|
|
345
|
+
|
|
346
|
+
2. **Data Protection**
|
|
347
|
+
- Encrypt PII at rest (RDS encryption)
|
|
348
|
+
- TLS 1.3 for all API traffic
|
|
349
|
+
- No plaintext passwords
|
|
350
|
+
|
|
351
|
+
3. **API Security**
|
|
352
|
+
- Rate limiting per tier
|
|
353
|
+
- Input validation (Pydantic)
|
|
354
|
+
- SQL injection prevention (SQLAlchemy ORM)
|
|
355
|
+
- CORS configuration
|
|
356
|
+
|
|
357
|
+
4. **Compliance**
|
|
358
|
+
- Privacy policy
|
|
359
|
+
- Terms of service
|
|
360
|
+
- GDPR data export/deletion
|
|
361
|
+
- Financial disclaimer (not investment advice)
|
|
362
|
+
|
|
363
|
+
---
|
|
364
|
+
|
|
365
|
+
## Risks & Mitigations
|
|
366
|
+
|
|
367
|
+
| Risk | Impact | Mitigation |
|
|
368
|
+
|------|--------|------------|
|
|
369
|
+
| Yahoo Finance rate limits | High | Implement caching, use paid API fallback |
|
|
370
|
+
| App store rejection | Medium | Follow guidelines, proper disclaimers |
|
|
371
|
+
| Data accuracy issues | High | Clear disclaimers, data validation |
|
|
372
|
+
| Security breach | Critical | Security audit, penetration testing |
|
|
373
|
+
| Low conversion rate | Medium | A/B testing, feature gating |
|
|
374
|
+
|
|
375
|
+
---
|
|
376
|
+
|
|
377
|
+
## Success Metrics (Year 1)
|
|
378
|
+
|
|
379
|
+
| Metric | Target |
|
|
380
|
+
|--------|--------|
|
|
381
|
+
| App downloads | 10,000+ |
|
|
382
|
+
| DAU | 1,000+ |
|
|
383
|
+
| Premium subscribers | 500+ |
|
|
384
|
+
| Monthly revenue | $5,000+ |
|
|
385
|
+
| App store rating | 4.5+ stars |
|
|
386
|
+
| Churn rate | <5%/month |
|
|
387
|
+
|
|
388
|
+
---
|
|
389
|
+
|
|
390
|
+
## Next Steps (Immediate)
|
|
391
|
+
|
|
392
|
+
1. **Validate idea** - User interviews, landing page
|
|
393
|
+
2. **Design** - Figma mockups for key screens
|
|
394
|
+
3. **Backend MVP** - Core API endpoints
|
|
395
|
+
4. **Flutter prototype** - Basic app with analysis feature
|
|
396
|
+
5. **Beta testing** - TestFlight/Google Play beta
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
## Repository Structure (Final)
|
|
401
|
+
|
|
402
|
+
```
|
|
403
|
+
stockpulse/
|
|
404
|
+
├── backend/ # FastAPI backend
|
|
405
|
+
│ ├── app/
|
|
406
|
+
│ ├── tests/
|
|
407
|
+
│ ├── Dockerfile
|
|
408
|
+
│ └── requirements.txt
|
|
409
|
+
├── mobile/ # Flutter app
|
|
410
|
+
│ ├── lib/
|
|
411
|
+
│ ├── test/
|
|
412
|
+
│ ├── ios/
|
|
413
|
+
│ ├── android/
|
|
414
|
+
│ └── pubspec.yaml
|
|
415
|
+
├── infrastructure/ # Terraform
|
|
416
|
+
│ ├── modules/
|
|
417
|
+
│ └── environments/
|
|
418
|
+
├── docs/ # Documentation
|
|
419
|
+
│ ├── api/
|
|
420
|
+
│ └── architecture/
|
|
421
|
+
└── scripts/ # Utility scripts
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
---
|
|
425
|
+
|
|
426
|
+
## Timeline Summary (Planning Only)
|
|
427
|
+
|
|
428
|
+
| Phase | Duration | Dependencies |
|
|
429
|
+
|-------|----------|--------------|
|
|
430
|
+
| 1. Backend API | 4-6 weeks | - |
|
|
431
|
+
| 2. Flutter App | 6-8 weeks | Phase 1 |
|
|
432
|
+
| 3. Infrastructure | 2-3 weeks | Phase 1 |
|
|
433
|
+
| 4. Payments | 2 weeks | Phase 2, 3 |
|
|
434
|
+
| 5. Notifications | 2 weeks | Phase 2, 3 |
|
|
435
|
+
| 6. Analytics | 1 week | Phase 2 |
|
|
436
|
+
| **Total** | **17-22 weeks** | |
|
|
437
|
+
|
|
438
|
+
This is a planning document. No fixed timeline - execute phases as resources allow.
|
|
439
|
+
|
|
440
|
+
---
|
|
441
|
+
|
|
442
|
+
**Disclaimer:** This tool is for informational purposes only and does NOT constitute financial advice.
|