myagent-ai 1.0.0

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.
Files changed (486) hide show
  1. package/Dockerfile +30 -0
  2. package/README.md +333 -0
  3. package/agents/__init__.py +6 -0
  4. package/agents/__pycache__/main_agent.cpython-312.pyc +0 -0
  5. package/agents/base.py +115 -0
  6. package/agents/main_agent.py +695 -0
  7. package/agents/memory_agent.py +313 -0
  8. package/agents/tool_agent.py +248 -0
  9. package/chatbot/__init__.py +5 -0
  10. package/chatbot/base.py +124 -0
  11. package/chatbot/discord_bot.py +146 -0
  12. package/chatbot/feishu_bot.py +548 -0
  13. package/chatbot/manager.py +164 -0
  14. package/chatbot/qq_bot.py +189 -0
  15. package/chatbot/telegram_bot.py +167 -0
  16. package/chatbot/wechat_bot.py +558 -0
  17. package/communication/__init__.py +66 -0
  18. package/communication/channel.py +576 -0
  19. package/communication/crypto.py +347 -0
  20. package/communication/manager.py +397 -0
  21. package/communication/peer.py +156 -0
  22. package/config.py +464 -0
  23. package/core/__init__.py +10 -0
  24. package/core/config_broadcast.py +276 -0
  25. package/core/llm.py +878 -0
  26. package/core/logger.py +241 -0
  27. package/core/task_queue.py +362 -0
  28. package/core/utils.py +184 -0
  29. package/executor/__init__.py +4 -0
  30. package/executor/__pycache__/engine.cpython-312.pyc +0 -0
  31. package/executor/engine.py +1215 -0
  32. package/groups/__init__.py +15 -0
  33. package/groups/manager.py +724 -0
  34. package/knowledge/__init__.py +4 -0
  35. package/knowledge/rag.py +444 -0
  36. package/main.py +801 -0
  37. package/memory/__init__.py +4 -0
  38. package/memory/manager.py +840 -0
  39. package/organization/__init__.py +4 -0
  40. package/organization/manager.py +350 -0
  41. package/package.json +58 -0
  42. package/requirements.txt +59 -0
  43. package/setup.py +40 -0
  44. package/skills/ASR/LICENSE.txt +21 -0
  45. package/skills/ASR/SKILL.md +580 -0
  46. package/skills/ASR/scripts/asr.ts +27 -0
  47. package/skills/LLM/LICENSE.txt +21 -0
  48. package/skills/LLM/SKILL.md +856 -0
  49. package/skills/LLM/scripts/chat.ts +32 -0
  50. package/skills/TTS/LICENSE.txt +21 -0
  51. package/skills/TTS/SKILL.md +735 -0
  52. package/skills/TTS/tts.ts +25 -0
  53. package/skills/VLM/LICENSE.txt +21 -0
  54. package/skills/VLM/SKILL.md +588 -0
  55. package/skills/VLM/scripts/vlm.ts +57 -0
  56. package/skills/__init__.py +5 -0
  57. package/skills/agent-browser/SKILL.md +328 -0
  58. package/skills/ai-news-collectors/SKILL.md +157 -0
  59. package/skills/ai-news-collectors/_meta.json +6 -0
  60. package/skills/ai-news-collectors/references/sources.md +128 -0
  61. package/skills/aminer-open-academic/SKILL.md +312 -0
  62. package/skills/aminer-open-academic/_meta.json +6 -0
  63. package/skills/aminer-open-academic/evals/evals.json +46 -0
  64. package/skills/aminer-open-academic/references/api-catalog.md +1032 -0
  65. package/skills/aminer-open-academic/scripts/__pycache__/aminer_client.cpython-312.pyc +0 -0
  66. package/skills/aminer-open-academic/scripts/aminer_client.py +875 -0
  67. package/skills/auto-target-tracker/SKILL.md +317 -0
  68. package/skills/base.py +147 -0
  69. package/skills/blog-writer/2024-02-17-radical-transparency-sales.md +35 -0
  70. package/skills/blog-writer/2024-02-17-raycast-spotlight-superpowers.md +33 -0
  71. package/skills/blog-writer/2024-02-17-short-form-content-marketing.md +47 -0
  72. package/skills/blog-writer/2024-02-17-typing-speed-benefits.md +33 -0
  73. package/skills/blog-writer/2024-03-14-effective-ai-prompts.md +55 -0
  74. package/skills/blog-writer/2024-11-08-ai-revolutionizing-entry-level-sales.md +43 -0
  75. package/skills/blog-writer/2025-11-12-why-ai-art-is-useless.md +49 -0
  76. package/skills/blog-writer/README.md +2 -0
  77. package/skills/blog-writer/SKILL.md +158 -0
  78. package/skills/blog-writer/__pycache__/manage_examples.cpython-312.pyc +0 -0
  79. package/skills/blog-writer/_meta.json +6 -0
  80. package/skills/blog-writer/manage_examples.py +90 -0
  81. package/skills/blog-writer/style-guide.md +160 -0
  82. package/skills/browser_skill.py +146 -0
  83. package/skills/coding-agent/SKILL.md +120 -0
  84. package/skills/coding-agent/_meta.json +6 -0
  85. package/skills/coding-agent/criteria.md +48 -0
  86. package/skills/coding-agent/execution.md +42 -0
  87. package/skills/coding-agent/memory-template.md +38 -0
  88. package/skills/coding-agent/planning.md +31 -0
  89. package/skills/coding-agent/state.md +60 -0
  90. package/skills/coding-agent/verification.md +39 -0
  91. package/skills/content-strategy/SKILL.md +181 -0
  92. package/skills/content-strategy/_meta.json +6 -0
  93. package/skills/contentanalysis/ExtractWisdom/SKILL.md +229 -0
  94. package/skills/contentanalysis/ExtractWisdom/Workflows/Extract.md +60 -0
  95. package/skills/contentanalysis/SKILL.md +14 -0
  96. package/skills/docx/CHANGELOG.md +85 -0
  97. package/skills/docx/LICENSE.txt +30 -0
  98. package/skills/docx/SKILL.md +455 -0
  99. package/skills/docx/docx-js.md +681 -0
  100. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  101. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  102. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  103. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  104. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  105. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  106. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  107. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  108. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  109. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  110. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  111. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  112. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  113. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  114. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  115. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  116. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  117. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  118. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  119. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  120. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  121. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  122. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  123. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  124. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  125. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  126. package/skills/docx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  127. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  128. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  129. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  130. package/skills/docx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  131. package/skills/docx/ooxml/schemas/mce/mc.xsd +75 -0
  132. package/skills/docx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  133. package/skills/docx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  134. package/skills/docx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  135. package/skills/docx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  136. package/skills/docx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  137. package/skills/docx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  138. package/skills/docx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  139. package/skills/docx/ooxml/scripts/__pycache__/pack.cpython-312.pyc +0 -0
  140. package/skills/docx/ooxml/scripts/__pycache__/unpack.cpython-312.pyc +0 -0
  141. package/skills/docx/ooxml/scripts/__pycache__/validate.cpython-312.pyc +0 -0
  142. package/skills/docx/ooxml/scripts/pack.py +159 -0
  143. package/skills/docx/ooxml/scripts/unpack.py +29 -0
  144. package/skills/docx/ooxml/scripts/validate.py +69 -0
  145. package/skills/docx/ooxml/scripts/validation/__init__.py +15 -0
  146. package/skills/docx/ooxml/scripts/validation/__pycache__/__init__.cpython-312.pyc +0 -0
  147. package/skills/docx/ooxml/scripts/validation/__pycache__/base.cpython-312.pyc +0 -0
  148. package/skills/docx/ooxml/scripts/validation/__pycache__/docx.cpython-312.pyc +0 -0
  149. package/skills/docx/ooxml/scripts/validation/__pycache__/pptx.cpython-312.pyc +0 -0
  150. package/skills/docx/ooxml/scripts/validation/__pycache__/redlining.cpython-312.pyc +0 -0
  151. package/skills/docx/ooxml/scripts/validation/base.py +951 -0
  152. package/skills/docx/ooxml/scripts/validation/docx.py +274 -0
  153. package/skills/docx/ooxml/scripts/validation/pptx.py +315 -0
  154. package/skills/docx/ooxml/scripts/validation/redlining.py +279 -0
  155. package/skills/docx/ooxml.md +615 -0
  156. package/skills/docx/scripts/__init__.py +1 -0
  157. package/skills/docx/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
  158. package/skills/docx/scripts/__pycache__/add_toc_placeholders.cpython-312.pyc +0 -0
  159. package/skills/docx/scripts/__pycache__/document.cpython-312.pyc +0 -0
  160. package/skills/docx/scripts/__pycache__/utilities.cpython-312.pyc +0 -0
  161. package/skills/docx/scripts/add_toc_placeholders.py +220 -0
  162. package/skills/docx/scripts/document.py +1302 -0
  163. package/skills/docx/scripts/templates/comments.xml +3 -0
  164. package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  165. package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  166. package/skills/docx/scripts/templates/commentsIds.xml +3 -0
  167. package/skills/docx/scripts/templates/people.xml +3 -0
  168. package/skills/docx/scripts/utilities.py +374 -0
  169. package/skills/dream-interpreter/SKILL.md +88 -0
  170. package/skills/dream-interpreter/assets/example_asset.txt +24 -0
  171. package/skills/dream-interpreter/references/api_reference.md +34 -0
  172. package/skills/dream-interpreter/references/interpretation-guide.md +83 -0
  173. package/skills/dream-interpreter/references/output-schema.md +65 -0
  174. package/skills/dream-interpreter/references/questioning-strategy.md +62 -0
  175. package/skills/dream-interpreter/references/visual-mapping.md +81 -0
  176. package/skills/dream-interpreter/scripts/__pycache__/example.cpython-312.pyc +0 -0
  177. package/skills/dream-interpreter/scripts/example.py +19 -0
  178. package/skills/dream-interpreter/skill.json +7 -0
  179. package/skills/file_skill.py +246 -0
  180. package/skills/finance/Finance_API_Doc.md +445 -0
  181. package/skills/finance/SKILL.md +53 -0
  182. package/skills/fullstack-dev/SKILL.md +205 -0
  183. package/skills/get-fortune-analysis/SKILL.md +370 -0
  184. package/skills/get-fortune-analysis/lunar_python.py +91 -0
  185. package/skills/gift-evaluator/SKILL.md +83 -0
  186. package/skills/gift-evaluator/__pycache__/html_tools.cpython-312.pyc +0 -0
  187. package/skills/gift-evaluator/html_tools.py +268 -0
  188. package/skills/image-edit/LICENSE.txt +21 -0
  189. package/skills/image-edit/SKILL.md +896 -0
  190. package/skills/image-edit/scripts/image-edit.ts +36 -0
  191. package/skills/image-generation/LICENSE.txt +21 -0
  192. package/skills/image-generation/SKILL.md +583 -0
  193. package/skills/image-generation/scripts/image-generation.ts +28 -0
  194. package/skills/image-understand/LICENSE.txt +21 -0
  195. package/skills/image-understand/SKILL.md +855 -0
  196. package/skills/image-understand/scripts/image-understand.ts +41 -0
  197. package/skills/interview-designer/README.md +70 -0
  198. package/skills/interview-designer/SKILL.md +53 -0
  199. package/skills/interview-designer/_meta.json +6 -0
  200. package/skills/interview-designer/references/design_rationale.md +43 -0
  201. package/skills/interview-designer/templates/interview_guide_template.md +62 -0
  202. package/skills/market-research-reports/SKILL.md +901 -0
  203. package/skills/market-research-reports/assets/FORMATTING_GUIDE.md +428 -0
  204. package/skills/market-research-reports/assets/market_report_template.tex +1380 -0
  205. package/skills/market-research-reports/assets/market_research.sty +564 -0
  206. package/skills/market-research-reports/references/data_analysis_patterns.md +548 -0
  207. package/skills/market-research-reports/references/report_structure_guide.md +999 -0
  208. package/skills/market-research-reports/references/visual_generation_guide.md +1077 -0
  209. package/skills/market-research-reports/scripts/__pycache__/generate_market_visuals.cpython-312.pyc +0 -0
  210. package/skills/market-research-reports/scripts/generate_market_visuals.py +529 -0
  211. package/skills/marketing-mode/README.md +49 -0
  212. package/skills/marketing-mode/SKILL.md +693 -0
  213. package/skills/marketing-mode/_meta.json +6 -0
  214. package/skills/marketing-mode/mode-prompt.md +39 -0
  215. package/skills/marketing-mode/skill.json +51 -0
  216. package/skills/mindfulness-meditation/SKILL.md +65 -0
  217. package/skills/mindfulness-meditation/_meta.json +6 -0
  218. package/skills/multi-search-engine/CHANGELOG.md +15 -0
  219. package/skills/multi-search-engine/CHANNELLOG.md +48 -0
  220. package/skills/multi-search-engine/SKILL.md +78 -0
  221. package/skills/multi-search-engine/_meta.json +6 -0
  222. package/skills/multi-search-engine/config.json +14 -0
  223. package/skills/multi-search-engine/metadata.json +7 -0
  224. package/skills/multi-search-engine/references/international-search.md +651 -0
  225. package/skills/pdf/LICENSE.txt +30 -0
  226. package/skills/pdf/SKILL.md +1534 -0
  227. package/skills/pdf/forms.md +205 -0
  228. package/skills/pdf/reference.md +765 -0
  229. package/skills/pdf/scripts/__pycache__/add_zai_metadata.cpython-312.pyc +0 -0
  230. package/skills/pdf/scripts/__pycache__/check_bounding_boxes.cpython-312.pyc +0 -0
  231. package/skills/pdf/scripts/__pycache__/check_bounding_boxes_test.cpython-312.pyc +0 -0
  232. package/skills/pdf/scripts/__pycache__/check_fillable_fields.cpython-312.pyc +0 -0
  233. package/skills/pdf/scripts/__pycache__/convert_pdf_to_images.cpython-312.pyc +0 -0
  234. package/skills/pdf/scripts/__pycache__/create_validation_image.cpython-312.pyc +0 -0
  235. package/skills/pdf/scripts/__pycache__/extract_form_field_info.cpython-312.pyc +0 -0
  236. package/skills/pdf/scripts/__pycache__/fill_fillable_fields.cpython-312.pyc +0 -0
  237. package/skills/pdf/scripts/__pycache__/fill_pdf_form_with_annotations.cpython-312.pyc +0 -0
  238. package/skills/pdf/scripts/__pycache__/sanitize_code.cpython-312.pyc +0 -0
  239. package/skills/pdf/scripts/add_zai_metadata.py +172 -0
  240. package/skills/pdf/scripts/check_bounding_boxes.py +70 -0
  241. package/skills/pdf/scripts/check_bounding_boxes_test.py +226 -0
  242. package/skills/pdf/scripts/check_fillable_fields.py +12 -0
  243. package/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
  244. package/skills/pdf/scripts/create_validation_image.py +41 -0
  245. package/skills/pdf/scripts/extract_form_field_info.py +152 -0
  246. package/skills/pdf/scripts/fill_fillable_fields.py +114 -0
  247. package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  248. package/skills/pdf/scripts/sanitize_code.py +110 -0
  249. package/skills/podcast-generate/LICENSE.txt +21 -0
  250. package/skills/podcast-generate/SKILL.md +198 -0
  251. package/skills/podcast-generate/generate.ts +661 -0
  252. package/skills/podcast-generate/package.json +30 -0
  253. package/skills/podcast-generate/readme.md +177 -0
  254. package/skills/podcast-generate/test_data/segments.jsonl +3 -0
  255. package/skills/podcast-generate/tsconfig.json +26 -0
  256. package/skills/pptx/LICENSE.txt +30 -0
  257. package/skills/pptx/SKILL.md +507 -0
  258. package/skills/pptx/html2pptx.md +625 -0
  259. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  260. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  261. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  262. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  263. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  264. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  265. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  266. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  267. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  268. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  269. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  270. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  271. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  272. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  273. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  274. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  275. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  276. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  277. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  278. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  279. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  280. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  281. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  282. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  283. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  284. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  285. package/skills/pptx/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  286. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  287. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  288. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  289. package/skills/pptx/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  290. package/skills/pptx/ooxml/schemas/mce/mc.xsd +75 -0
  291. package/skills/pptx/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
  292. package/skills/pptx/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
  293. package/skills/pptx/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
  294. package/skills/pptx/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
  295. package/skills/pptx/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
  296. package/skills/pptx/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  297. package/skills/pptx/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
  298. package/skills/pptx/ooxml/scripts/__pycache__/pack.cpython-312.pyc +0 -0
  299. package/skills/pptx/ooxml/scripts/__pycache__/unpack.cpython-312.pyc +0 -0
  300. package/skills/pptx/ooxml/scripts/__pycache__/validate.cpython-312.pyc +0 -0
  301. package/skills/pptx/ooxml/scripts/pack.py +159 -0
  302. package/skills/pptx/ooxml/scripts/unpack.py +29 -0
  303. package/skills/pptx/ooxml/scripts/validate.py +69 -0
  304. package/skills/pptx/ooxml/scripts/validation/__init__.py +15 -0
  305. package/skills/pptx/ooxml/scripts/validation/__pycache__/__init__.cpython-312.pyc +0 -0
  306. package/skills/pptx/ooxml/scripts/validation/__pycache__/base.cpython-312.pyc +0 -0
  307. package/skills/pptx/ooxml/scripts/validation/__pycache__/docx.cpython-312.pyc +0 -0
  308. package/skills/pptx/ooxml/scripts/validation/__pycache__/pptx.cpython-312.pyc +0 -0
  309. package/skills/pptx/ooxml/scripts/validation/__pycache__/redlining.cpython-312.pyc +0 -0
  310. package/skills/pptx/ooxml/scripts/validation/base.py +951 -0
  311. package/skills/pptx/ooxml/scripts/validation/docx.py +274 -0
  312. package/skills/pptx/ooxml/scripts/validation/pptx.py +315 -0
  313. package/skills/pptx/ooxml/scripts/validation/redlining.py +279 -0
  314. package/skills/pptx/ooxml.md +427 -0
  315. package/skills/pptx/scripts/__pycache__/inventory.cpython-312.pyc +0 -0
  316. package/skills/pptx/scripts/__pycache__/inventory.cpython-313.pyc +0 -0
  317. package/skills/pptx/scripts/__pycache__/rearrange.cpython-312.pyc +0 -0
  318. package/skills/pptx/scripts/__pycache__/replace.cpython-312.pyc +0 -0
  319. package/skills/pptx/scripts/__pycache__/thumbnail.cpython-312.pyc +0 -0
  320. package/skills/pptx/scripts/html2pptx.js +1044 -0
  321. package/skills/pptx/scripts/inventory.py +1020 -0
  322. package/skills/pptx/scripts/rearrange.py +231 -0
  323. package/skills/pptx/scripts/replace.py +385 -0
  324. package/skills/pptx/scripts/thumbnail.py +450 -0
  325. package/skills/qingyan-research/SKILL.md +294 -0
  326. package/skills/qingyan-research/__pycache__/generate_html.cpython-312.pyc +0 -0
  327. package/skills/qingyan-research/generate_html.py +33 -0
  328. package/skills/registry.py +344 -0
  329. package/skills/search_skill.py +228 -0
  330. package/skills/seo-content-writer/SKILL.md +661 -0
  331. package/skills/seo-content-writer/_meta.json +6 -0
  332. package/skills/seo-content-writer/references/content-structure-templates.md +875 -0
  333. package/skills/seo-content-writer/references/title-formulas.md +339 -0
  334. package/skills/skill-creator/LICENSE.txt +202 -0
  335. package/skills/skill-creator/SKILL.md +485 -0
  336. package/skills/skill-creator/agents/analyzer.md +274 -0
  337. package/skills/skill-creator/agents/comparator.md +202 -0
  338. package/skills/skill-creator/agents/grader.md +223 -0
  339. package/skills/skill-creator/assets/eval_review.html +146 -0
  340. package/skills/skill-creator/eval-viewer/__pycache__/generate_review.cpython-312.pyc +0 -0
  341. package/skills/skill-creator/eval-viewer/generate_review.py +471 -0
  342. package/skills/skill-creator/eval-viewer/viewer.html +1325 -0
  343. package/skills/skill-creator/references/schemas.md +430 -0
  344. package/skills/skill-creator/scripts/__init__.py +0 -0
  345. package/skills/skill-creator/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
  346. package/skills/skill-creator/scripts/__pycache__/aggregate_benchmark.cpython-312.pyc +0 -0
  347. package/skills/skill-creator/scripts/__pycache__/generate_report.cpython-312.pyc +0 -0
  348. package/skills/skill-creator/scripts/__pycache__/improve_description.cpython-312.pyc +0 -0
  349. package/skills/skill-creator/scripts/__pycache__/package_skill.cpython-312.pyc +0 -0
  350. package/skills/skill-creator/scripts/__pycache__/quick_validate.cpython-312.pyc +0 -0
  351. package/skills/skill-creator/scripts/__pycache__/run_eval.cpython-312.pyc +0 -0
  352. package/skills/skill-creator/scripts/__pycache__/run_loop.cpython-312.pyc +0 -0
  353. package/skills/skill-creator/scripts/__pycache__/utils.cpython-312.pyc +0 -0
  354. package/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
  355. package/skills/skill-creator/scripts/generate_report.py +326 -0
  356. package/skills/skill-creator/scripts/improve_description.py +236 -0
  357. package/skills/skill-creator/scripts/package_skill.py +136 -0
  358. package/skills/skill-creator/scripts/quick_validate.py +103 -0
  359. package/skills/skill-creator/scripts/run_eval.py +310 -0
  360. package/skills/skill-creator/scripts/run_loop.py +328 -0
  361. package/skills/skill-creator/scripts/utils.py +47 -0
  362. package/skills/skill-finder-cn/SKILL.md +66 -0
  363. package/skills/skill-finder-cn/_meta.json +6 -0
  364. package/skills/skill-finder-cn/package.json +5 -0
  365. package/skills/skill-finder-cn/scripts/search.sh +15 -0
  366. package/skills/skill-vetter/SKILL.md +137 -0
  367. package/skills/stock-analysis-skill/SKILL.md +156 -0
  368. package/skills/stock-analysis-skill/package.json +21 -0
  369. package/skills/stock-analysis-skill/src/analyzer.ts +264 -0
  370. package/skills/stock-analysis-skill/src/dataFetcher.ts +130 -0
  371. package/skills/stock-analysis-skill/src/dividend.ts +226 -0
  372. package/skills/stock-analysis-skill/src/index.ts +327 -0
  373. package/skills/stock-analysis-skill/src/rumorScanner.ts +200 -0
  374. package/skills/stock-analysis-skill/src/types.ts +167 -0
  375. package/skills/stock-analysis-skill/src/watchlist.ts +292 -0
  376. package/skills/stock-analysis-skill/tsconfig.json +15 -0
  377. package/skills/storyboard-manager/SKILL.md +532 -0
  378. package/skills/storyboard-manager/index.js +9 -0
  379. package/skills/storyboard-manager/package.json +11 -0
  380. package/skills/storyboard-manager/references/character_development.md +232 -0
  381. package/skills/storyboard-manager/references/story_structures.md +148 -0
  382. package/skills/storyboard-manager/scripts/__pycache__/consistency_checker.cpython-312.pyc +0 -0
  383. package/skills/storyboard-manager/scripts/__pycache__/timeline_tracker.cpython-312.pyc +0 -0
  384. package/skills/storyboard-manager/scripts/consistency_checker.py +391 -0
  385. package/skills/storyboard-manager/scripts/timeline_tracker.py +352 -0
  386. package/skills/system_skill.py +249 -0
  387. package/skills/ui-ux-pro-max/SKILL.md +43 -0
  388. package/skills/ui-ux-pro-max/_meta.json +6 -0
  389. package/skills/ui-ux-pro-max/assets/data/charts.csv +26 -0
  390. package/skills/ui-ux-pro-max/assets/data/colors.csv +97 -0
  391. package/skills/ui-ux-pro-max/assets/data/icons.csv +101 -0
  392. package/skills/ui-ux-pro-max/assets/data/landing.csv +31 -0
  393. package/skills/ui-ux-pro-max/assets/data/products.csv +97 -0
  394. package/skills/ui-ux-pro-max/assets/data/react-performance.csv +45 -0
  395. package/skills/ui-ux-pro-max/assets/data/stacks/astro.csv +54 -0
  396. package/skills/ui-ux-pro-max/assets/data/stacks/flutter.csv +53 -0
  397. package/skills/ui-ux-pro-max/assets/data/stacks/html-tailwind.csv +56 -0
  398. package/skills/ui-ux-pro-max/assets/data/stacks/jetpack-compose.csv +53 -0
  399. package/skills/ui-ux-pro-max/assets/data/stacks/nextjs.csv +53 -0
  400. package/skills/ui-ux-pro-max/assets/data/stacks/nuxt-ui.csv +51 -0
  401. package/skills/ui-ux-pro-max/assets/data/stacks/nuxtjs.csv +59 -0
  402. package/skills/ui-ux-pro-max/assets/data/stacks/react-native.csv +52 -0
  403. package/skills/ui-ux-pro-max/assets/data/stacks/react.csv +54 -0
  404. package/skills/ui-ux-pro-max/assets/data/stacks/shadcn.csv +61 -0
  405. package/skills/ui-ux-pro-max/assets/data/stacks/svelte.csv +54 -0
  406. package/skills/ui-ux-pro-max/assets/data/stacks/swiftui.csv +51 -0
  407. package/skills/ui-ux-pro-max/assets/data/stacks/vue.csv +50 -0
  408. package/skills/ui-ux-pro-max/assets/data/styles.csv +68 -0
  409. package/skills/ui-ux-pro-max/assets/data/typography.csv +58 -0
  410. package/skills/ui-ux-pro-max/assets/data/ui-reasoning.csv +101 -0
  411. package/skills/ui-ux-pro-max/assets/data/ux-guidelines.csv +100 -0
  412. package/skills/ui-ux-pro-max/assets/data/web-interface.csv +31 -0
  413. package/skills/ui-ux-pro-max/data/charts.csv +26 -0
  414. package/skills/ui-ux-pro-max/data/colors.csv +97 -0
  415. package/skills/ui-ux-pro-max/data/icons.csv +101 -0
  416. package/skills/ui-ux-pro-max/data/landing.csv +31 -0
  417. package/skills/ui-ux-pro-max/data/products.csv +97 -0
  418. package/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  419. package/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -0
  420. package/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  421. package/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  422. package/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  423. package/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  424. package/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  425. package/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  426. package/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  427. package/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  428. package/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  429. package/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  430. package/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  431. package/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  432. package/skills/ui-ux-pro-max/data/styles.csv +68 -0
  433. package/skills/ui-ux-pro-max/data/typography.csv +58 -0
  434. package/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  435. package/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  436. package/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  437. package/skills/ui-ux-pro-max/references/upstream-README.md +488 -0
  438. package/skills/ui-ux-pro-max/references/upstream-skill-content.md +288 -0
  439. package/skills/ui-ux-pro-max/scripts/__init__.py +0 -0
  440. package/skills/ui-ux-pro-max/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
  441. package/skills/ui-ux-pro-max/scripts/__pycache__/core.cpython-312.pyc +0 -0
  442. package/skills/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-312.pyc +0 -0
  443. package/skills/ui-ux-pro-max/scripts/__pycache__/search.cpython-312.pyc +0 -0
  444. package/skills/ui-ux-pro-max/scripts/core.py +253 -0
  445. package/skills/ui-ux-pro-max/scripts/design_system.py +1071 -0
  446. package/skills/ui-ux-pro-max/scripts/search.py +111 -0
  447. package/skills/video-generation/LICENSE.txt +21 -0
  448. package/skills/video-generation/SKILL.md +1082 -0
  449. package/skills/video-generation/scripts/video.ts +168 -0
  450. package/skills/video-understand/LICENSE.txt +21 -0
  451. package/skills/video-understand/SKILL.md +916 -0
  452. package/skills/video-understand/scripts/video-understand.ts +41 -0
  453. package/skills/visual-design-foundations/SKILL.md +318 -0
  454. package/skills/visual-design-foundations/references/color-systems.md +417 -0
  455. package/skills/visual-design-foundations/references/spacing-iconography.md +425 -0
  456. package/skills/visual-design-foundations/references/typography-systems.md +432 -0
  457. package/skills/web-reader/LICENSE.txt +21 -0
  458. package/skills/web-reader/SKILL.md +1140 -0
  459. package/skills/web-reader/scripts/web-reader.ts +37 -0
  460. package/skills/web-search/LICENSE.txt +21 -0
  461. package/skills/web-search/SKILL.md +912 -0
  462. package/skills/web-search/scripts/web_search.ts +44 -0
  463. package/skills/web-shader-extractor/SKILL.md +145 -0
  464. package/skills/web-shader-extractor/references/config-extraction.md +50 -0
  465. package/skills/web-shader-extractor/references/encoded-definitions.md +53 -0
  466. package/skills/web-shader-extractor/references/extraction-workflow.md +61 -0
  467. package/skills/web-shader-extractor/references/porting-strategy.md +164 -0
  468. package/skills/web-shader-extractor/references/shader-injection.md +126 -0
  469. package/skills/web-shader-extractor/references/shaders-com.md +190 -0
  470. package/skills/web-shader-extractor/references/tech-signatures.md +54 -0
  471. package/skills/web-shader-extractor/references/tsl-extraction.md +41 -0
  472. package/skills/web-shader-extractor/references/unicorn-studio.md +353 -0
  473. package/skills/web-shader-extractor/scripts/fetch-rendered-dom.mjs +153 -0
  474. package/skills/web-shader-extractor/scripts/scan-bundle.sh +76 -0
  475. package/skills/writing-plans/SKILL.md +116 -0
  476. package/skills/writing-plans/_meta.json +6 -0
  477. package/skills/xlsx/LICENSE.txt +30 -0
  478. package/skills/xlsx/SKILL.md +496 -0
  479. package/skills/xlsx/__pycache__/recalc.cpython-312.pyc +0 -0
  480. package/skills/xlsx/recalc.py +178 -0
  481. package/start.sh +36 -0
  482. package/web/__init__.py +1 -0
  483. package/web/__pycache__/api_server.cpython-312.pyc +0 -0
  484. package/web/api_server.py +2043 -0
  485. package/web/ui/chat.html +3235 -0
  486. package/web/ui/index.html +458 -0
@@ -0,0 +1,43 @@
1
+ # AI is Revolutionizing Entry Level Sales & Marketing
2
+
3
+ ## AI is Revolutionizing Entry Level Sales & Marketing
4
+
5
+ ### A Revolution in Sales & Marketing
6
+
7
+ Artificial intelligence (AI) has begun to reshape the landscape of entry level sales and marketing jobs in unprecedented ways. As AI technology advances, it has become a driving force behind increased efficiency, personalization, and overall improvements in the sales and marketing industries. This shift is redefining the roles of sales and marketing professionals, and causing companies to rethink their strategies for hiring and training.
8
+
9
+ ### Automation and Efficiency: Streamlining the Sales Process
10
+
11
+ One of the most significant impacts of AI on entry level sales jobs is the increased level of automation. AI-powered tools and software can now handle repetitive and mundane tasks, allowing sales professionals to focus on more high-value activities. This shift has led to increased efficiency in the sales process and has paved the way for more strategic and targeted approaches to reaching potential customers.
12
+
13
+ Examples of AI automation in sales include lead scoring, email automation, and CRM systems that can track and analyze customer interactions. By using AI to automate these tasks, entry level sales professionals can focus on building relationships and closing deals, ultimately driving more revenue for their organizations.
14
+
15
+ ### Personalization: Tailoring Marketing Efforts to Individual Customers
16
+
17
+ In the world of marketing, AI has played a crucial role in enabling personalization at scale. By analyzing vast amounts of data and identifying patterns, AI-powered tools can create tailored marketing campaigns that resonate with individual customers. This level of personalization has become essential in today's competitive landscape, where consumers expect personalized experiences from the brands they engage with.
18
+
19
+ For entry level marketing professionals, this means a shift away from one-size-fits-all marketing strategies. Instead, they must learn to use AI-driven tools to create targeted campaigns that speak to the unique needs and preferences of their audience. This approach not only helps companies build stronger relationships with their customers but also drives higher conversion rates and increased customer loyalty.
20
+
21
+ ### Predictive Analytics: Guiding Decision-Making in Sales & Marketing
22
+
23
+ Another way AI is transforming entry level sales and marketing jobs is through the use of predictive analytics. AI algorithms can analyze historical data to identify trends and make predictions about future outcomes, allowing sales and marketing professionals to make data-driven decisions.
24
+
25
+ For example, AI-powered sales forecasting tools can help sales reps prioritize leads and focus on the most promising opportunities. In marketing, predictive analytics can be used to optimize ad spending, segment customers, and identify the most effective channels for reaching specific audiences. By leveraging AI in this way, entry level professionals can become more strategic in their approach and drive better results for their organizations.
26
+
27
+ ### Chatbots and Conversational AI: Enhancing Customer Engagement
28
+
29
+ Chatbots and conversational AI have become increasingly popular in both sales and marketing as a way to engage with customers and prospects. These AI-driven tools can handle routine customer inquiries, provide personalized product recommendations, and even assist with lead qualification.
30
+
31
+ For entry level sales and marketing professionals, the rise of chatbots and conversational AI means a shift in focus. Rather than handling all customer interactions themselves, they must learn to work alongside these AI-powered tools to provide a seamless and cohesive customer experience.
32
+
33
+ ### Upskilling and Reskilling: Preparing for the Future of Sales & Marketing
34
+
35
+ As AI continues to reshape entry level sales and marketing jobs, professionals in these fields must adapt their skill sets to remain competitive. This includes learning how to use AI-driven tools and software, as well as developing a deeper understanding of data analytics and customer behavior.
36
+
37
+ Companies and educational institutions are recognizing this need and are offering training programs and resources to help sales and marketing professionals upskill and reskill. By investing in their own professional development, entry level sales ensure they remain relevant and valuable in the ever-evolving world of AI-driven sales and marketing.
38
+
39
+ ### The Future of Entry Level Sales & Marketing Jobs in the Age of AI
40
+
41
+ As AI continues to transform the sales and marketing landscape, the roles and responsibilities of entry level professionals in these fields will continue to evolve. While some tasks may become automated, there will be a growing demand for skilled professionals who can harness the power of AI to drive more effective and personalized sales and marketing strategies.
42
+
43
+ To succeed in this new era, entry level sales and marketing professionals must embrace AI as a valuable tool that can enhance their work and help them achieve better results. By staying ahead of the latest AI trends and developments, and continuously adapting their skills and knowledge, they can position themselves for long-term success in the rapidly changing world of sales and marketing.
@@ -0,0 +1,49 @@
1
+ # Why AI Art & Media Is Useless
2
+
3
+ ## Why AI Art & Media Is Useless
4
+
5
+ As someone who works in AI and genuinely believes in the value and power of LLMs to make professionals more useful and valuable, I can confidently say that I hate everything about AI image/video/music generation. It is useless and only serves one purpose: to replace creative professionals and the work they do.
6
+
7
+ ### The Scope of the Problem
8
+
9
+ To be a bit more precise about my hatred for AI media, I need to be clear that I don't hate AI. I've spent the last three-plus years devoting my entire professional life to leveraging AI tools to help professionals do their jobs more effectively. That said, from the moment I was exposed to AI art, I had the same initial reaction as most: a flood of anxiety and uncanniness, which I knew instantly I didn't like.
10
+
11
+ Leveraging an LLM to automate task creation from new emails I receive simply replaces something I spend 30 minutes doing every morning and allows it to occur in the background, producing the same output I would have arrived at. That's just helpful.
12
+
13
+ I am not an artist, but if I decided to start using AI to create all the graphics for a client, I wouldn't be improving anything that I currently do. I would just be replacing a potential job for someone who does art professionally.
14
+
15
+ The fundamental difference here is when a professional uses AI to improve the efficiency or quality of something they already do, it functions as a tool. When someone with no art experience uses AI to create art, it's not improving anything. It's simply replacing something that already exists with something worse.
16
+
17
+ ### The "Democratization" Lie
18
+
19
+ Access to the ability to create art is not the same as having the ability to create art. The moment everyone began conflating the ability to produce an output with the creator itself, they've already swallowed the Kool-Aid. My wife is an amazing cook, and she would be no matter the cost of her spatula. However, if I purchased the greatest spatula in history, I would still be a crappy cook.
20
+
21
+ Now let's talk about vibe coding, which is fundamentally different from image generation. I have learned more about writing code and development in the past year by using AI than I ever have. This is because things frequently do not work and therefore I have to go learn new information.
22
+
23
+ The key difference here is that vibe coding allows me to leverage my current knowledge as well as gain new knowledge, whereas generating an image simply produces an output that I have no ability to improve on. The reason I can't improve it is because simply going and looking up a bunch of information on how to create art will not make me a better artist.
24
+
25
+ ### The Collapse of Quality
26
+
27
+ Another important factor to understand here is that AI art isn't producing the worst work or the best work. It's producing the *median* of everything it has been trained on (actual artists' work). This is incredibly dangerous. It's essentially producing a blob of an over-generalized consensus on what looks "good." That doesn't work when you amalgamate every style and genre of art in order to produce something. This is not creative. This is aggregative.
28
+
29
+ Another problem here isn't that AI can't make art. Everything it makes is, by design, is just good enough. Therefore, this hits dead center in the sweet spot for what massive corporations are looking for. Why pay a junior designer to iterate on multiple concepts when an AI can generate you 200 versions of something that are all "good enough"?
30
+
31
+ ### Creativity Is Disappearing
32
+
33
+ Creating art obviously requires creativity, however, using AI tools simply requires knowledge. These are two very different things. Creativity isn't an output, it's an artist's struggle through years as they hone their craft and improve their abilities. It's thousands of micro-decisions that aren't just learned, but practiced over many years.
34
+
35
+ This matters because creative work embodies meaning and emotion that come from the artist. When AI generates an image, it remixes thousands of tokens to approximate what the user requested. Crafting an advanced prompt is a legitimate skill, prompt engineering, but it's not the same as creating art. These skills should never be conflated.
36
+
37
+ ### What Should We Do?
38
+
39
+ First, we need laws to stop major AI labs—particularly OpenAI and Google AI—from collecting human-made art as training data for their image generation models. We need strong regulation requiring artists to **opt in** before their work can be collected and trained on.
40
+
41
+ Second, we need more AI leaders to step up and stop this before it's too late. For example, Anthropic (makers of Claude) has never released an image generation model. That doesn't mean Claude can't be used to create websites or other graphic design work, but creating a UI or navigation menu is entirely different from painting on canvas.
42
+
43
+ ### AI Art Hurts the Future Potential of AI
44
+
45
+ It's clear that most people don't find AI art pleasing—they actively dislike it. With every piece of AI art slop that lands on Twitter or Instagram, the long-term reputation of AI as a useful tool for professionals takes another hit.
46
+
47
+ For years now, public sentiment toward AI has been declining. There's one culprit: AI-generated art and media. People who aren't knowledgeable about AI don't distinguish between media generation and other use cases that are actually valuable. This reduces the chances they'll ever consider the benefits of AI as a tool.
48
+
49
+ It's my sincere hope that we stop this race to the bottom before we get there. We should take all the resources and effort put toward AI media generation and redirect them toward leveraging AI as a tool for medical breakthroughs, building technology, and conducting research more efficiently.
@@ -0,0 +1,2 @@
1
+ # Blog-writer
2
+ Blog writing skill for Tom Panos's distinctive voice - direct, conversational, and grounded in personal experience. Handles workflow from research through Notion publication.
@@ -0,0 +1,158 @@
1
+ ---
2
+ name: blog-writer
3
+ description: This skill should be used when writing blog posts, articles, or long-form content in the writer's distinctive writing style. It produces authentic, opinionated content that matches the writer's voice—direct, conversational, and grounded in personal experience. The skill handles the complete workflow from research review through Notion publication. Use this skill for drafting blog posts, thought leadership pieces, or any writing meant to reflect the writer's perspective on AI, productivity, sales, marketing, or technology topics.
4
+ ---
5
+
6
+ # Blog Writer
7
+
8
+ ## Overview
9
+
10
+ This skill enables writing blog posts and articles that authentically capture the writer's distinctive voice and style. It draws on examples of the writer's published work to produce content that is direct, opinionated, conversational, and grounded in practical experience. The skill includes automatic Notion integration and maintains a growing library of finalized examples.
11
+
12
+ ## When to Use This Skill
13
+
14
+ Trigger this skill when:
15
+ - The user requests blog post or article writing in "my style" or "like my other posts"
16
+ - Drafting thought leadership content on AI, productivity, marketing, or technology
17
+ - Creating articles that need the writer's authentic voice and perspective
18
+ - The user provides research materials, links, or notes to incorporate into writing
19
+
20
+ ## Core Responsibilities
21
+
22
+ 1. **Follow the writer's Writing Style**: Match voice, word choice, structure, and length of example posts in `references/blog-examples/`
23
+ 2. **Incorporate Research**: Review and integrate any information, research material, or links provided by the user
24
+ 3. **Follow User Instructions**: Adhere closely to the user's specific requests for topic, angle, and emphasis
25
+ 4. **Produce Authentic Writing**: Create content that reads as genuinely the writer's voice, not generic AI-generated content
26
+
27
+ ## Workflow
28
+
29
+ ### Phase 1: Gather Information
30
+
31
+ Request from the user:
32
+ - Topic or subject matter
33
+ - Any specific angle or thesis to explore
34
+ - Research materials, links, or notes (if available)
35
+ - Target length preference (default: 800-1500 words)
36
+
37
+ Review all provided materials thoroughly before beginning to write.
38
+
39
+ ### Phase 2: Draft the Content
40
+
41
+ Reference the style guide at `references/style-guide.md` and examples in `references/blog-examples/` for calibration.
42
+
43
+ When writing:
44
+ 1. Start with a strong opening statement establishing the thesis
45
+ 2. Use personal voice and first-person perspective where natural
46
+ 3. Include relevant personal anecdotes or professional experience if applicable
47
+ 4. Structure with clear subheadings (###) every 2-3 paragraphs
48
+ 5. Keep paragraphs short (2-4 sentences)
49
+ 6. Weave in research materials naturally, not as block quotes
50
+ 7. End with reflection, call-to-action, or forward-looking statement
51
+
52
+ ### Phase 3: Review and Iterate
53
+
54
+ Present the draft and gather feedback. Iterate until the user confirms satisfaction.
55
+
56
+ ### Phase 4: Publish to Notion (REQUIRED)
57
+
58
+ When the draft is complete (even if not yet finalized), publish to the TS Notes database.
59
+
60
+ **Notion Publication Details:**
61
+ - Database: "TS Notes" (data source ID: `04a872be-8bed-4f43-a448-3dfeebc0df21`)
62
+ - **Type property**: `Writing`
63
+ - **Project(s) property**: Link to "My Writing" project (page URL: `https://www.notion.so/2a5b4629bb3780189199f3c496980c0c`)
64
+ - **Note property**: The title of the blog post
65
+ - **Content**: The full blog post content in Notion-flavored Markdown
66
+
67
+ **Example Notion API call properties:**
68
+ ```json
69
+ {
70
+ "Note": "Blog Post Title Here",
71
+ "Type": "Writing",
72
+ "Project(s)": "[\"https://www.notion.so/2a5b4629bb3780189199f3c496980c0c\"]"
73
+ }
74
+ ```
75
+
76
+ **CRITICAL**: The outcome is considered a **failure** if the content is not added to Notion. Always publish to Notion as part of the workflow, even for drafts.
77
+
78
+ ### Phase 5: Finalize to Examples Library (Post-Outcome)
79
+
80
+ When the user confirms the draft is **final**:
81
+
82
+ 1. Save the finalized post to `references/blog-examples/` with filename format:
83
+ ```
84
+ YYYY-MM-DD-slug-title.md
85
+ ```
86
+ Example: `2025-11-25-why-ai-art-is-useless.md`
87
+
88
+ 2. Check the examples library count:
89
+ - If exceeding 20 examples, ask user permission to remove the 5 oldest
90
+ - Sort by filename date prefix to identify oldest files
91
+
92
+ The post-outcome is considered **successful** when the final draft is saved to the skill folder.
93
+
94
+ ## Success Criteria
95
+
96
+ | Outcome | Success | Failure |
97
+ |---------|---------|---------|
98
+ | Primary | User receives requested content AND it is added to TS Notes with Type=Writing and Project=My Writing | Content delivered but NOT added to Notion |
99
+ | Post-outcome | Final draft saved to `references/blog-examples/` | Final draft not saved when user confirms it's final |
100
+
101
+ ## the writer's Writing Style Profile
102
+
103
+ ### Voice & Tone
104
+ - **Direct and opinionated**: State positions clearly, even contrarian ones
105
+ - **Conversational**: Write like speaking to a colleague—accessible without being simplistic
106
+ - **First-person when sharing experience**: Use "I" naturally for personal insights
107
+ - **Authentic skepticism**: Willing to criticize trends when warranted
108
+
109
+ ### Structure Patterns
110
+ - **Strong opening thesis**: Open with a clear, often bold statement
111
+ - **Subheadings throughout**: Use `###` format liberally to break up content
112
+ - **Short paragraphs**: Rarely more than 3-4 sentences
113
+ - **Personal anecdotes woven in**: Illustrate points with real examples
114
+ - **Practical takeaways**: Provide actionable insights, not just theory
115
+ - **Reflective conclusion**: End with call-to-action or forward-looking hope
116
+
117
+ ### Length & Format
118
+ - Target: 800-1500 words
119
+ - Markdown format with headers and emphasis
120
+ - Minimal bullet points in prose—prefer flowing sentences
121
+
122
+ ### Vocabulary Markers
123
+ - Uses "leverage" for tools/technology
124
+ - Says "that said" for transitions
125
+ - Comfortable with direct statements like "this is useless" or "boy was I wrong"
126
+ - Uses contractions naturally (I've, doesn't, won't)
127
+ - Avoids corporate jargon while maintaining professionalism
128
+
129
+ ### Thematic Elements
130
+ - AI as tool, not replacement
131
+ - Practical over theoretical
132
+ - Human-centered technology
133
+ - Honest assessment of what works and what doesn't
134
+
135
+ ## Resources
136
+
137
+ ### references/style-guide.md
138
+ Quick reference for the writer's writing patterns, vocabulary preferences, and structural conventions.
139
+
140
+ ### references/blog-examples/
141
+ Contains example blog posts demonstrating the writer's writing style. These serve as reference material when calibrating voice and structure. New finalized posts expand this library over time.
142
+
143
+ ## Notion API Reference
144
+
145
+ To create a page in TS Notes:
146
+
147
+ ```
148
+ Database data source ID: 04a872be-8bed-4f43-a448-3dfeebc0df21
149
+
150
+ Properties:
151
+ - "Note": (title) - The blog post title
152
+ - "Type": "Writing"
153
+ - "Project(s)": ["https://www.notion.so/2a5b4629bb3780189199f3c496980c0c"]
154
+
155
+ Content: Full blog post in Notion-flavored Markdown
156
+ ```
157
+
158
+ The "My Writing" project page ID is: `2a5b4629-bb37-8018-9199-f3c496980c0c`
@@ -0,0 +1,6 @@
1
+ {
2
+ "ownerId": "kn722nva0z7svbapne80p8e8jd7zwmk7",
3
+ "slug": "blog-writer",
4
+ "version": "0.1.0",
5
+ "publishedAt": 1769361436760
6
+ }
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Utility script for managing the blog examples library.
4
+ Helps identify old examples to prune when the library exceeds the limit.
5
+ """
6
+
7
+ import os
8
+ import sys
9
+ from datetime import datetime
10
+ from pathlib import Path
11
+
12
+ EXAMPLES_DIR = Path(__file__).parent.parent / "references" / "blog-examples"
13
+ MAX_EXAMPLES = 20
14
+ PRUNE_COUNT = 5
15
+
16
+
17
+ def list_examples():
18
+ """List all blog examples sorted by date (oldest first)."""
19
+ examples = []
20
+ for f in EXAMPLES_DIR.glob("*.md"):
21
+ # Extract date from filename (YYYY-MM-DD-slug.md)
22
+ try:
23
+ date_str = f.stem[:10]
24
+ date = datetime.strptime(date_str, "%Y-%m-%d")
25
+ examples.append((date, f.name))
26
+ except ValueError:
27
+ # Skip files that don't match the naming convention
28
+ continue
29
+
30
+ return sorted(examples, key=lambda x: x[0])
31
+
32
+
33
+ def check_library():
34
+ """Check library status and recommend pruning if needed."""
35
+ examples = list_examples()
36
+ count = len(examples)
37
+
38
+ print(f"Blog Examples Library Status")
39
+ print(f"=" * 40)
40
+ print(f"Total examples: {count}")
41
+ print(f"Maximum allowed: {MAX_EXAMPLES}")
42
+ print()
43
+
44
+ if count > MAX_EXAMPLES:
45
+ print(f"⚠️ Library exceeds limit by {count - MAX_EXAMPLES} files")
46
+ print(f"Recommend removing the {PRUNE_COUNT} oldest examples:")
47
+ print()
48
+ for i, (date, name) in enumerate(examples[:PRUNE_COUNT]):
49
+ print(f" {i+1}. {name} ({date.strftime('%B %d, %Y')})")
50
+ else:
51
+ print(f"✓ Library is within limits ({MAX_EXAMPLES - count} slots available)")
52
+
53
+ print()
54
+ print("All examples (oldest first):")
55
+ print("-" * 40)
56
+ for date, name in examples:
57
+ print(f" {name}")
58
+
59
+
60
+ def prune_oldest(dry_run=True):
61
+ """Remove the oldest examples to bring library under limit."""
62
+ examples = list_examples()
63
+ count = len(examples)
64
+
65
+ if count <= MAX_EXAMPLES:
66
+ print("Library is within limits. No pruning needed.")
67
+ return
68
+
69
+ to_remove = examples[:PRUNE_COUNT]
70
+
71
+ if dry_run:
72
+ print(f"DRY RUN - Would remove {len(to_remove)} files:")
73
+ else:
74
+ print(f"Removing {len(to_remove)} oldest files:")
75
+
76
+ for date, name in to_remove:
77
+ filepath = EXAMPLES_DIR / name
78
+ if dry_run:
79
+ print(f" Would remove: {name}")
80
+ else:
81
+ filepath.unlink()
82
+ print(f" Removed: {name}")
83
+
84
+
85
+ if __name__ == "__main__":
86
+ if len(sys.argv) > 1 and sys.argv[1] == "prune":
87
+ dry_run = "--execute" not in sys.argv
88
+ prune_oldest(dry_run=dry_run)
89
+ else:
90
+ check_library()
@@ -0,0 +1,160 @@
1
+ # Tom Panos Writing Style Guide
2
+
3
+ ## Quick Reference
4
+
5
+ ### Opening Lines
6
+ Start with a strong thesis or personal statement. Examples from Tom's posts:
7
+
8
+ - "As someone who works in AI and genuinely believes in the value and power of LLMs to make professionals more useful and valuable, I can confidently say that I hate everything about AI image/video/music generation."
9
+ - "I recently rediscovered Raycast and wanted to try it again after a few years."
10
+ - "About a year ago I decided I wanted to become a faster typer..."
11
+ - "Artificial intelligence (AI) has begun to reshape the landscape of entry level sales and marketing jobs in unprecedented ways."
12
+ - "In an AI-driven era, mastering communication with tools like ChatGPT is crucial."
13
+ - "Radical transparency is a commitment to engaging prospects, clients, investors, and colleagues with complete candor..."
14
+ - "Over the past decade, our youngest generations have been fighting a losing battle against the impact that short-form algorithms..."
15
+
16
+ ### Transition Phrases
17
+ - "That said..."
18
+ - "The fundamental difference here is..."
19
+ - "Another important factor to understand here is..."
20
+ - "This matters because..."
21
+ - "For example..."
22
+ - "The real kicker is..."
23
+ - "To be a bit more precise..."
24
+ - "Now let's talk about..."
25
+ - "The key difference here is..."
26
+
27
+ ### Closing Patterns
28
+ - **Forward-looking hope**: "It's my sincere hope that we stop this race to the bottom before we get there."
29
+ - **Call to action**: "So, how about giving it a shot and seeing where it takes you?"
30
+ - **Summary reflection**: "The impact of artificial intelligence on entry level sales and marketing jobs is profound..."
31
+ - **Practical encouragement**: "Check it out via Growth Language's recommended apps library"
32
+ - **Big picture synthesis**: "Short-form content has irreversibly changed the landscape of marketing and storytelling."
33
+
34
+ ### Vocabulary Preferences
35
+
36
+ **Use these naturally:**
37
+ - "leverage" (for using tools)
38
+ - "game-changer"
39
+ - "impactful"
40
+ - "workflows"
41
+ - "professionals"
42
+ - "countless times daily"
43
+ - contractions (I've, doesn't, won't, that's, I'd)
44
+
45
+ **Phrases that sound like Tom:**
46
+ - "I can confidently say..."
47
+ - "Boy was I wrong!"
48
+ - "I decided to..."
49
+ - "I've spent the last..."
50
+ - "My [wife/experience/journey]..."
51
+ - "It's still hard to believe, but..."
52
+ - "This is incredibly dangerous."
53
+ - "This just doesn't work when..."
54
+
55
+ **Avoid:**
56
+ - Excessive corporate jargon
57
+ - Passive voice when active works
58
+ - Hedging language when making a clear point
59
+ - Over-qualified statements
60
+ - Generic AI-sounding phrases
61
+
62
+ ### Paragraph Length
63
+ - 2-4 sentences typical
64
+ - Single sentence paragraphs for emphasis
65
+ - Break at natural thought transitions
66
+ - Never more than 5 sentences in one paragraph
67
+
68
+ ### Header Frequency
69
+ - New subheader every 150-250 words
70
+ - Use ### for most subheaders within a post
71
+ - Use ## for major section breaks
72
+ - Headers should be descriptive, not clickbait
73
+
74
+ ### Structural Template
75
+
76
+ ```markdown
77
+ # [Bold, Direct Title]
78
+
79
+ [Opening paragraph with strong thesis - 2-3 sentences establishing position]
80
+
81
+ ### [First Subheading - Context or Problem]
82
+
83
+ [2-3 short paragraphs developing the point]
84
+ [Personal anecdote or example if relevant]
85
+
86
+ ### [Second Subheading - Analysis or Explanation]
87
+
88
+ [Continue developing argument]
89
+ [Include practical implications]
90
+ [Real-world examples]
91
+
92
+ ### [Third Subheading - Deeper Exploration]
93
+
94
+ [Further exploration or counterarguments addressed]
95
+ [Specific details or data points]
96
+
97
+ ### [Fourth Subheading - Solutions or Implications]
98
+
99
+ [What to do about it]
100
+ [Practical recommendations]
101
+
102
+ ### [Conclusion Subheading like "What Should We Do?" or "Conclusion"]
103
+
104
+ [Reflection, call-to-action, or forward-looking statement]
105
+ [Often includes personal hope or belief]
106
+ ```
107
+
108
+ ### Topics Tom Writes About
109
+ - AI tools and their practical applications
110
+ - Productivity software and workflows (Raycast, Notion, etc.)
111
+ - Sales and marketing strategy
112
+ - Technology criticism (when warranted)
113
+ - Personal development and skills (typing speed, prompt engineering)
114
+ - The future of work
115
+ - Brain science applied to business
116
+ - Short-form content and media trends
117
+
118
+ ### Key Beliefs to Reflect
119
+ 1. **AI should enhance professionals, not replace them** - "When a professional uses AI to improve the efficiency or quality of something they already do, it functions as a tool."
120
+ 2. **Practical application matters more than theory** - Always include real examples and actionable insights
121
+ 3. **Technology should serve human needs** - Human-centered perspective on all tech topics
122
+ 4. **Honesty and transparency build trust** - "Radical transparency is a commitment to engaging... with complete candor"
123
+ 5. **Continuous learning is valuable** - Personal growth stories like typing speed improvement
124
+ 6. **Quality over quantity in content** - Critique of short-form content's impact on depth
125
+ 7. **Skepticism of hype is healthy** - Willing to call out things that don't work
126
+
127
+ ### Handling Controversial Takes
128
+
129
+ Tom isn't afraid to take strong positions:
130
+ - "I hate everything about AI image/video/music generation. It is useless."
131
+ - "AI art isn't producing the worst work or the best work. It's producing the *median*."
132
+ - Clear identification of problems: "The 'Democratization' Lie"
133
+
134
+ When writing controversial takes:
135
+ 1. Establish credibility first ("As someone who works in AI...")
136
+ 2. Be precise about the scope of criticism
137
+ 3. Acknowledge what DOES work
138
+ 4. Provide concrete reasoning, not just opinion
139
+ 5. End with constructive suggestions
140
+
141
+ ### Personal Experience Integration
142
+
143
+ Tom weaves personal stories naturally:
144
+ - "About a year ago I decided I wanted to become a faster typer... I started at around 80 WPM... A year in and I've hit 150."
145
+ - "My wife is an amazing cook, and she would be no matter the cost of her spatula."
146
+ - "I recently rediscovered Raycast and wanted to try it again after a few years."
147
+
148
+ When including personal experience:
149
+ 1. Keep it relevant to the main point
150
+ 2. Include specific details (numbers, timeframes)
151
+ 3. Connect back to broader implications
152
+ 4. Don't overdo it—one or two per post is enough
153
+
154
+ ### Formatting Notes
155
+
156
+ - Use `*italics*` for emphasis on key terms
157
+ - Use `**bold**` sparingly, mainly for key takeaways
158
+ - Lists only when actually listing items (not for general prose)
159
+ - Include images/screenshots where they add value
160
+ - End with "More posts like this" section linking to related content
@@ -0,0 +1,146 @@
1
+ """
2
+ skills/browser_skill.py - 浏览器操作技能
3
+ =========================================
4
+ 提供浏览器自动化操作功能(使用 Playwright)。
5
+ """
6
+ from __future__ import annotations
7
+
8
+ from typing import Optional, List
9
+
10
+ from core.logger import get_logger
11
+ from skills.base import Skill, SkillResult, SkillParameter
12
+
13
+ logger = get_logger("myagent.skills.browser")
14
+
15
+
16
+ class BrowserOpenSkill(Skill):
17
+ """打开网页"""
18
+ name = "browser_open"
19
+ description = "使用无头浏览器打开指定 URL,返回页面内容"
20
+ category = "browser"
21
+ parameters = [
22
+ SkillParameter("url", "string", "要打开的 URL", required=True),
23
+ SkillParameter("wait", "integer", "等待时间(毫秒)", required=False, default=3000),
24
+ SkillParameter("screenshot", "boolean", "是否截图", required=False, default=False),
25
+ ]
26
+
27
+ async def execute(self, url: str = "", wait: int = 3000,
28
+ screenshot: bool = False, **kwargs) -> SkillResult:
29
+ try:
30
+ from playwright.async_api import async_playwright
31
+
32
+ async with async_playwright() as p:
33
+ browser = await p.chromium.launch(headless=True)
34
+ page = await browser.new_page()
35
+
36
+ await page.goto(url, wait_until="networkidle", timeout=30000)
37
+ if wait > 0:
38
+ await page.wait_for_timeout(wait)
39
+
40
+ # 提取页面内容
41
+ title = await page.title()
42
+ content = await page.content()
43
+ # 纯文本
44
+ text = await page.evaluate("() => document.body.innerText")
45
+
46
+ result_data = {
47
+ "url": url,
48
+ "title": title,
49
+ "text_content": text[:15000],
50
+ }
51
+
52
+ # 截图
53
+ if screenshot:
54
+ ss_path = f"/tmp/screenshot_{url.replace('/', '_')[:50]}.png"
55
+ await page.screenshot(path=ss_path, full_page=True)
56
+ result_data["screenshot_path"] = ss_path
57
+
58
+ await browser.close()
59
+
60
+ return SkillResult(
61
+ success=True,
62
+ data=result_data,
63
+ message=f"已打开: {title} ({len(text)} 字符)",
64
+ files=result_data.get("screenshot_path", []),
65
+ )
66
+ except ImportError:
67
+ return SkillResult(
68
+ success=False,
69
+ error="请安装 Playwright: pip install playwright && playwright install chromium",
70
+ )
71
+ except Exception as e:
72
+ return SkillResult(success=False, error=f"浏览器操作失败: {e}")
73
+
74
+
75
+ class BrowserClickSkill(Skill):
76
+ """点击页面元素"""
77
+ name = "browser_click"
78
+ description = "在浏览器页面中点击指定元素"
79
+ category = "browser"
80
+ parameters = [
81
+ SkillParameter("selector", "string", "CSS 选择器", required=True),
82
+ SkillParameter("url", "string", "页面 URL(如果未打开)", required=False, default=""),
83
+ ]
84
+
85
+ async def execute(self, selector: str = "", url: str = "", **kwargs) -> SkillResult:
86
+ try:
87
+ from playwright.async_api import async_playwright
88
+
89
+ async with async_playwright() as p:
90
+ browser = await p.chromium.launch(headless=True)
91
+ page = await browser.new_page()
92
+
93
+ if url:
94
+ await page.goto(url, wait_until="networkidle", timeout=30000)
95
+
96
+ await page.click(selector, timeout=10000)
97
+ await page.wait_for_timeout(2000)
98
+
99
+ text = await page.evaluate("() => document.body.innerText")
100
+ title = await page.title()
101
+
102
+ await browser.close()
103
+
104
+ return SkillResult(
105
+ success=True,
106
+ data={"title": title, "text": text[:10000]},
107
+ message=f"已点击: {selector}",
108
+ )
109
+ except Exception as e:
110
+ return SkillResult(success=False, error=str(e))
111
+
112
+
113
+ class BrowserFillSkill(Skill):
114
+ """填写表单"""
115
+ name = "browser_fill"
116
+ description = "在浏览器页面中填写表单字段"
117
+ category = "browser"
118
+ parameters = [
119
+ SkillParameter("selector", "string", "输入框 CSS 选择器", required=True),
120
+ SkillParameter("value", "string", "要填写的值", required=True),
121
+ SkillParameter("url", "string", "页面 URL", required=False, default=""),
122
+ ]
123
+
124
+ async def execute(self, selector: str = "", value: str = "",
125
+ url: str = "", **kwargs) -> SkillResult:
126
+ try:
127
+ from playwright.async_api import async_playwright
128
+
129
+ async with async_playwright() as p:
130
+ browser = await p.chromium.launch(headless=True)
131
+ page = await browser.new_page()
132
+
133
+ if url:
134
+ await page.goto(url, wait_until="networkidle", timeout=30000)
135
+
136
+ await page.fill(selector, value, timeout=10000)
137
+ await page.wait_for_timeout(1000)
138
+
139
+ await browser.close()
140
+
141
+ return SkillResult(
142
+ success=True,
143
+ message=f"已填写 {selector} = {value[:50]}",
144
+ )
145
+ except Exception as e:
146
+ return SkillResult(success=False, error=str(e))