@techwavedev/agi-agent-kit 1.3.6 → 1.4.2

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 (755) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/README.md +68 -46
  3. package/bin/init.js +27 -11
  4. package/package.json +1 -1
  5. package/templates/base/AGENTS.md +59 -0
  6. package/templates/base/README.md +7 -7
  7. package/templates/base/data/workflows.json +162 -0
  8. package/templates/base/execution/memory_manager.py +9 -10
  9. package/templates/base/execution/session_init.py +10 -6
  10. package/templates/skills/SKILLS_CATALOG.md +923 -914
  11. package/templates/skills/core/documentation/SKILL.md +33 -0
  12. package/templates/skills/core/documentation/scripts/__pycache__/analyze_code.cpython-312.pyc +0 -0
  13. package/templates/skills/core/documentation/scripts/__pycache__/detect_changes.cpython-312.pyc +0 -0
  14. package/templates/skills/core/documentation/scripts/__pycache__/generate_changelog.cpython-312.pyc +0 -0
  15. package/templates/skills/core/documentation/scripts/__pycache__/sync_docs.cpython-312.pyc +0 -0
  16. package/templates/skills/core/documentation/scripts/__pycache__/update_skill_docs.cpython-312.pyc +0 -0
  17. package/templates/skills/core/pdf-reader/SKILL.md +33 -0
  18. package/templates/skills/core/pdf-reader/scripts/__pycache__/extract_text.cpython-312.pyc +0 -0
  19. package/templates/skills/core/qdrant-memory/SKILL.md +33 -0
  20. package/templates/skills/core/qdrant-memory/scripts/__pycache__/benchmark_token_savings.cpython-312.pyc +0 -0
  21. package/templates/skills/core/qdrant-memory/scripts/__pycache__/bm25_index.cpython-312.pyc +0 -0
  22. package/templates/skills/core/qdrant-memory/scripts/__pycache__/embedding_utils.cpython-312.pyc +0 -0
  23. package/templates/skills/core/qdrant-memory/scripts/__pycache__/hybrid_search.cpython-312.pyc +0 -0
  24. package/templates/skills/core/qdrant-memory/scripts/__pycache__/init_collection.cpython-312.pyc +0 -0
  25. package/templates/skills/core/qdrant-memory/scripts/__pycache__/memory_retrieval.cpython-312.pyc +0 -0
  26. package/templates/skills/core/qdrant-memory/scripts/__pycache__/semantic_cache.cpython-312.pyc +0 -0
  27. package/templates/skills/core/qdrant-memory/scripts/__pycache__/test_skill.cpython-312.pyc +0 -0
  28. package/templates/skills/core/webcrawler/SKILL.md +33 -0
  29. package/templates/skills/core/webcrawler/scripts/__pycache__/crawl_docs.cpython-312.pyc +0 -0
  30. package/templates/skills/core/webcrawler/scripts/__pycache__/extract_page.cpython-312.pyc +0 -0
  31. package/templates/skills/core/webcrawler/scripts/__pycache__/filter_docs.cpython-312.pyc +0 -0
  32. package/templates/skills/extended/ai-agents/last30days/scripts/__pycache__/last30days.cpython-312.pyc +0 -0
  33. package/templates/skills/extended/ai-agents/last30days/scripts/lib/__pycache__/__init__.cpython-312.pyc +0 -0
  34. package/templates/skills/extended/ai-agents/last30days/scripts/lib/__pycache__/cache.cpython-312.pyc +0 -0
  35. package/templates/skills/extended/ai-agents/last30days/scripts/lib/__pycache__/dates.cpython-312.pyc +0 -0
  36. package/templates/skills/extended/ai-agents/last30days/scripts/lib/__pycache__/dedupe.cpython-312.pyc +0 -0
  37. package/templates/skills/extended/ai-agents/last30days/scripts/lib/__pycache__/env.cpython-312.pyc +0 -0
  38. package/templates/skills/extended/ai-agents/last30days/scripts/lib/__pycache__/http.cpython-312.pyc +0 -0
  39. package/templates/skills/extended/ai-agents/last30days/scripts/lib/__pycache__/models.cpython-312.pyc +0 -0
  40. package/templates/skills/extended/ai-agents/last30days/scripts/lib/__pycache__/normalize.cpython-312.pyc +0 -0
  41. package/templates/skills/extended/ai-agents/last30days/scripts/lib/__pycache__/openai_reddit.cpython-312.pyc +0 -0
  42. package/templates/skills/extended/ai-agents/last30days/scripts/lib/__pycache__/reddit_enrich.cpython-312.pyc +0 -0
  43. package/templates/skills/extended/ai-agents/last30days/scripts/lib/__pycache__/render.cpython-312.pyc +0 -0
  44. package/templates/skills/extended/ai-agents/last30days/scripts/lib/__pycache__/schema.cpython-312.pyc +0 -0
  45. package/templates/skills/extended/ai-agents/last30days/scripts/lib/__pycache__/score.cpython-312.pyc +0 -0
  46. package/templates/skills/extended/ai-agents/last30days/scripts/lib/__pycache__/ui.cpython-312.pyc +0 -0
  47. package/templates/skills/extended/ai-agents/last30days/scripts/lib/__pycache__/websearch.cpython-312.pyc +0 -0
  48. package/templates/skills/extended/ai-agents/last30days/scripts/lib/__pycache__/xai_x.cpython-312.pyc +0 -0
  49. package/templates/skills/extended/ai-agents/last30days/tests/__pycache__/__init__.cpython-312.pyc +0 -0
  50. package/templates/skills/extended/ai-agents/last30days/tests/__pycache__/test_cache.cpython-312.pyc +0 -0
  51. package/templates/skills/extended/ai-agents/last30days/tests/__pycache__/test_dates.cpython-312.pyc +0 -0
  52. package/templates/skills/extended/ai-agents/last30days/tests/__pycache__/test_dedupe.cpython-312.pyc +0 -0
  53. package/templates/skills/extended/ai-agents/last30days/tests/__pycache__/test_models.cpython-312.pyc +0 -0
  54. package/templates/skills/extended/ai-agents/last30days/tests/__pycache__/test_normalize.cpython-312.pyc +0 -0
  55. package/templates/skills/extended/ai-agents/last30days/tests/__pycache__/test_render.cpython-312.pyc +0 -0
  56. package/templates/skills/extended/ai-agents/last30days/tests/__pycache__/test_score.cpython-312.pyc +0 -0
  57. package/templates/skills/extended/ai-agents/voice-ai-engine-development/examples/__pycache__/complete_voice_engine.cpython-312.pyc +0 -0
  58. package/templates/skills/extended/ai-agents/voice-ai-engine-development/examples/__pycache__/gemini_agent_example.cpython-312.pyc +0 -0
  59. package/templates/skills/extended/ai-agents/voice-ai-engine-development/examples/__pycache__/interrupt_system_example.cpython-312.pyc +0 -0
  60. package/templates/skills/extended/ai-agents/voice-ai-engine-development/templates/__pycache__/base_worker_template.cpython-312.pyc +0 -0
  61. package/templates/skills/extended/ai-agents/voice-ai-engine-development/templates/__pycache__/multi_provider_factory_template.cpython-312.pyc +0 -0
  62. package/templates/skills/extended/ai-agents/youtube-summarizer/scripts/__pycache__/extract-transcript.cpython-312.pyc +0 -0
  63. package/templates/skills/extended/architecture/ddd-context-mapping/SKILL.md +85 -0
  64. package/templates/skills/extended/architecture/ddd-strategic-design/SKILL.md +85 -0
  65. package/templates/skills/extended/architecture/ddd-tactical-patterns/SKILL.md +86 -0
  66. package/templates/skills/extended/architecture/domain-driven-design/SKILL.md +107 -0
  67. package/templates/skills/extended/backend/dbos-golang/SKILL.md +167 -0
  68. package/templates/skills/extended/backend/dbos-python/SKILL.md +136 -0
  69. package/templates/skills/extended/backend/dbos-typescript/SKILL.md +145 -0
  70. package/templates/skills/extended/backend/laravel-expert/SKILL.md +219 -0
  71. package/templates/skills/extended/backend/senior-architect/scripts/__pycache__/architecture_diagram_generator.cpython-312.pyc +0 -0
  72. package/templates/skills/extended/backend/senior-architect/scripts/__pycache__/dependency_analyzer.cpython-312.pyc +0 -0
  73. package/templates/skills/extended/backend/senior-architect/scripts/__pycache__/project_architect.cpython-312.pyc +0 -0
  74. package/templates/skills/extended/blockchain/crypto-bd-agent/SKILL.md +282 -0
  75. package/templates/skills/extended/data/pdf/scripts/__pycache__/check_bounding_boxes.cpython-312.pyc +0 -0
  76. package/templates/skills/extended/data/pdf/scripts/__pycache__/check_bounding_boxes_test.cpython-312.pyc +0 -0
  77. package/templates/skills/extended/data/pdf/scripts/__pycache__/check_fillable_fields.cpython-312.pyc +0 -0
  78. package/templates/skills/extended/data/pdf/scripts/__pycache__/convert_pdf_to_images.cpython-312.pyc +0 -0
  79. package/templates/skills/extended/data/pdf/scripts/__pycache__/create_validation_image.cpython-312.pyc +0 -0
  80. package/templates/skills/extended/data/pdf/scripts/__pycache__/extract_form_field_info.cpython-312.pyc +0 -0
  81. package/templates/skills/extended/data/pdf/scripts/__pycache__/fill_fillable_fields.cpython-312.pyc +0 -0
  82. package/templates/skills/extended/data/pdf/scripts/__pycache__/fill_pdf_form_with_annotations.cpython-312.pyc +0 -0
  83. package/templates/skills/extended/data/pdf-official/scripts/__pycache__/check_bounding_boxes.cpython-312.pyc +0 -0
  84. package/templates/skills/extended/data/pdf-official/scripts/__pycache__/check_bounding_boxes_test.cpython-312.pyc +0 -0
  85. package/templates/skills/extended/data/pdf-official/scripts/__pycache__/check_fillable_fields.cpython-312.pyc +0 -0
  86. package/templates/skills/extended/data/pdf-official/scripts/__pycache__/convert_pdf_to_images.cpython-312.pyc +0 -0
  87. package/templates/skills/extended/data/pdf-official/scripts/__pycache__/create_validation_image.cpython-312.pyc +0 -0
  88. package/templates/skills/extended/data/pdf-official/scripts/__pycache__/extract_form_field_info.cpython-312.pyc +0 -0
  89. package/templates/skills/extended/data/pdf-official/scripts/__pycache__/fill_fillable_fields.cpython-312.pyc +0 -0
  90. package/templates/skills/extended/data/pdf-official/scripts/__pycache__/fill_pdf_form_with_annotations.cpython-312.pyc +0 -0
  91. package/templates/skills/extended/data/xlsx/__pycache__/recalc.cpython-312.pyc +0 -0
  92. package/templates/skills/extended/data/xlsx-official/__pycache__/recalc.cpython-312.pyc +0 -0
  93. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/0.cpython-312.pyc +0 -0
  94. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/1.cpython-312.pyc +0 -0
  95. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/10.cpython-312.pyc +0 -0
  96. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/100.cpython-312.pyc +0 -0
  97. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/101.cpython-312.pyc +0 -0
  98. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/102.cpython-312.pyc +0 -0
  99. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/103.cpython-312.pyc +0 -0
  100. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/104.cpython-312.pyc +0 -0
  101. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/105.cpython-312.pyc +0 -0
  102. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/106.cpython-312.pyc +0 -0
  103. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/107.cpython-312.pyc +0 -0
  104. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/108.cpython-312.pyc +0 -0
  105. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/109.cpython-312.pyc +0 -0
  106. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/11.cpython-312.pyc +0 -0
  107. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/110.cpython-312.pyc +0 -0
  108. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/111.cpython-312.pyc +0 -0
  109. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/112.cpython-312.pyc +0 -0
  110. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/113.cpython-312.pyc +0 -0
  111. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/114.cpython-312.pyc +0 -0
  112. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/115.cpython-312.pyc +0 -0
  113. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/116.cpython-312.pyc +0 -0
  114. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/117.cpython-312.pyc +0 -0
  115. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/118.cpython-312.pyc +0 -0
  116. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/119.cpython-312.pyc +0 -0
  117. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/12.cpython-312.pyc +0 -0
  118. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/120.cpython-312.pyc +0 -0
  119. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/121.cpython-312.pyc +0 -0
  120. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/122.cpython-312.pyc +0 -0
  121. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/123.cpython-312.pyc +0 -0
  122. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/124.cpython-312.pyc +0 -0
  123. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/125.cpython-312.pyc +0 -0
  124. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/126.cpython-312.pyc +0 -0
  125. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/127.cpython-312.pyc +0 -0
  126. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/128.cpython-312.pyc +0 -0
  127. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/129.cpython-312.pyc +0 -0
  128. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/13.cpython-312.pyc +0 -0
  129. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/130.cpython-312.pyc +0 -0
  130. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/131.cpython-312.pyc +0 -0
  131. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/132.cpython-312.pyc +0 -0
  132. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/133.cpython-312.pyc +0 -0
  133. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/134.cpython-312.pyc +0 -0
  134. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/135.cpython-312.pyc +0 -0
  135. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/136.cpython-312.pyc +0 -0
  136. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/137.cpython-312.pyc +0 -0
  137. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/138.cpython-312.pyc +0 -0
  138. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/139.cpython-312.pyc +0 -0
  139. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/14.cpython-312.pyc +0 -0
  140. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/140.cpython-312.pyc +0 -0
  141. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/141.cpython-312.pyc +0 -0
  142. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/142.cpython-312.pyc +0 -0
  143. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/143.cpython-312.pyc +0 -0
  144. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/144.cpython-312.pyc +0 -0
  145. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/145.cpython-312.pyc +0 -0
  146. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/146.cpython-312.pyc +0 -0
  147. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/147.cpython-312.pyc +0 -0
  148. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/148.cpython-312.pyc +0 -0
  149. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/149.cpython-312.pyc +0 -0
  150. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/15.cpython-312.pyc +0 -0
  151. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/150.cpython-312.pyc +0 -0
  152. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/151.cpython-312.pyc +0 -0
  153. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/152.cpython-312.pyc +0 -0
  154. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/153.cpython-312.pyc +0 -0
  155. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/154.cpython-312.pyc +0 -0
  156. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/155.cpython-312.pyc +0 -0
  157. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/156.cpython-312.pyc +0 -0
  158. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/157.cpython-312.pyc +0 -0
  159. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/158.cpython-312.pyc +0 -0
  160. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/159.cpython-312.pyc +0 -0
  161. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/16.cpython-312.pyc +0 -0
  162. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/160.cpython-312.pyc +0 -0
  163. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/161.cpython-312.pyc +0 -0
  164. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/162.cpython-312.pyc +0 -0
  165. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/163.cpython-312.pyc +0 -0
  166. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/17.cpython-312.pyc +0 -0
  167. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/18.cpython-312.pyc +0 -0
  168. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/19.cpython-312.pyc +0 -0
  169. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/2.cpython-312.pyc +0 -0
  170. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/20.cpython-312.pyc +0 -0
  171. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/21.cpython-312.pyc +0 -0
  172. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/22.cpython-312.pyc +0 -0
  173. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/23.cpython-312.pyc +0 -0
  174. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/24.cpython-312.pyc +0 -0
  175. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/25.cpython-312.pyc +0 -0
  176. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/26.cpython-312.pyc +0 -0
  177. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/27.cpython-312.pyc +0 -0
  178. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/28.cpython-312.pyc +0 -0
  179. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/29.cpython-312.pyc +0 -0
  180. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/3.cpython-312.pyc +0 -0
  181. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/30.cpython-312.pyc +0 -0
  182. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/31.cpython-312.pyc +0 -0
  183. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/32.cpython-312.pyc +0 -0
  184. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/33.cpython-312.pyc +0 -0
  185. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/34.cpython-312.pyc +0 -0
  186. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/35.cpython-312.pyc +0 -0
  187. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/36.cpython-312.pyc +0 -0
  188. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/37.cpython-312.pyc +0 -0
  189. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/38.cpython-312.pyc +0 -0
  190. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/39.cpython-312.pyc +0 -0
  191. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/4.cpython-312.pyc +0 -0
  192. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/40.cpython-312.pyc +0 -0
  193. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/41.cpython-312.pyc +0 -0
  194. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/42.cpython-312.pyc +0 -0
  195. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/43.cpython-312.pyc +0 -0
  196. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/44.cpython-312.pyc +0 -0
  197. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/45.cpython-312.pyc +0 -0
  198. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/46.cpython-312.pyc +0 -0
  199. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/47.cpython-312.pyc +0 -0
  200. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/48.cpython-312.pyc +0 -0
  201. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/49.cpython-312.pyc +0 -0
  202. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/5.cpython-312.pyc +0 -0
  203. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/50.cpython-312.pyc +0 -0
  204. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/51.cpython-312.pyc +0 -0
  205. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/52.cpython-312.pyc +0 -0
  206. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/53.cpython-312.pyc +0 -0
  207. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/54.cpython-312.pyc +0 -0
  208. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/55.cpython-312.pyc +0 -0
  209. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/56.cpython-312.pyc +0 -0
  210. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/57.cpython-312.pyc +0 -0
  211. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/58.cpython-312.pyc +0 -0
  212. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/59.cpython-312.pyc +0 -0
  213. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/6.cpython-312.pyc +0 -0
  214. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/60.cpython-312.pyc +0 -0
  215. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/61.cpython-312.pyc +0 -0
  216. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/62.cpython-312.pyc +0 -0
  217. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/63.cpython-312.pyc +0 -0
  218. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/64.cpython-312.pyc +0 -0
  219. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/65.cpython-312.pyc +0 -0
  220. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/66.cpython-312.pyc +0 -0
  221. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/67.cpython-312.pyc +0 -0
  222. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/68.cpython-312.pyc +0 -0
  223. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/69.cpython-312.pyc +0 -0
  224. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/7.cpython-312.pyc +0 -0
  225. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/70.cpython-312.pyc +0 -0
  226. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/71.cpython-312.pyc +0 -0
  227. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/72.cpython-312.pyc +0 -0
  228. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/73.cpython-312.pyc +0 -0
  229. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/74.cpython-312.pyc +0 -0
  230. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/75.cpython-312.pyc +0 -0
  231. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/76.cpython-312.pyc +0 -0
  232. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/77.cpython-312.pyc +0 -0
  233. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/78.cpython-312.pyc +0 -0
  234. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/79.cpython-312.pyc +0 -0
  235. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/8.cpython-312.pyc +0 -0
  236. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/80.cpython-312.pyc +0 -0
  237. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/81.cpython-312.pyc +0 -0
  238. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/82.cpython-312.pyc +0 -0
  239. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/83.cpython-312.pyc +0 -0
  240. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/84.cpython-312.pyc +0 -0
  241. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/85.cpython-312.pyc +0 -0
  242. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/86.cpython-312.pyc +0 -0
  243. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/87.cpython-312.pyc +0 -0
  244. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/88.cpython-312.pyc +0 -0
  245. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/89.cpython-312.pyc +0 -0
  246. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/9.cpython-312.pyc +0 -0
  247. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/90.cpython-312.pyc +0 -0
  248. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/91.cpython-312.pyc +0 -0
  249. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/92.cpython-312.pyc +0 -0
  250. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/93.cpython-312.pyc +0 -0
  251. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/94.cpython-312.pyc +0 -0
  252. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/95.cpython-312.pyc +0 -0
  253. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/96.cpython-312.pyc +0 -0
  254. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/97.cpython-312.pyc +0 -0
  255. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/98.cpython-312.pyc +0 -0
  256. package/templates/skills/extended/devops/loki-mode/benchmarks/results/2026-01-05-00-49-17/humaneval-solutions/__pycache__/99.cpython-312.pyc +0 -0
  257. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/0.cpython-312.pyc +0 -0
  258. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/1.cpython-312.pyc +0 -0
  259. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/10.cpython-312.pyc +0 -0
  260. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/100.cpython-312.pyc +0 -0
  261. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/101.cpython-312.pyc +0 -0
  262. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/102.cpython-312.pyc +0 -0
  263. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/103.cpython-312.pyc +0 -0
  264. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/104.cpython-312.pyc +0 -0
  265. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/105.cpython-312.pyc +0 -0
  266. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/106.cpython-312.pyc +0 -0
  267. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/107.cpython-312.pyc +0 -0
  268. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/108.cpython-312.pyc +0 -0
  269. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/109.cpython-312.pyc +0 -0
  270. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/11.cpython-312.pyc +0 -0
  271. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/110.cpython-312.pyc +0 -0
  272. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/111.cpython-312.pyc +0 -0
  273. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/112.cpython-312.pyc +0 -0
  274. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/113.cpython-312.pyc +0 -0
  275. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/114.cpython-312.pyc +0 -0
  276. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/115.cpython-312.pyc +0 -0
  277. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/116.cpython-312.pyc +0 -0
  278. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/117.cpython-312.pyc +0 -0
  279. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/118.cpython-312.pyc +0 -0
  280. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/119.cpython-312.pyc +0 -0
  281. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/12.cpython-312.pyc +0 -0
  282. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/120.cpython-312.pyc +0 -0
  283. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/121.cpython-312.pyc +0 -0
  284. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/122.cpython-312.pyc +0 -0
  285. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/123.cpython-312.pyc +0 -0
  286. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/124.cpython-312.pyc +0 -0
  287. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/125.cpython-312.pyc +0 -0
  288. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/126.cpython-312.pyc +0 -0
  289. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/127.cpython-312.pyc +0 -0
  290. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/128.cpython-312.pyc +0 -0
  291. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/129.cpython-312.pyc +0 -0
  292. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/13.cpython-312.pyc +0 -0
  293. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/130.cpython-312.pyc +0 -0
  294. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/131.cpython-312.pyc +0 -0
  295. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/132.cpython-312.pyc +0 -0
  296. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/133.cpython-312.pyc +0 -0
  297. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/134.cpython-312.pyc +0 -0
  298. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/135.cpython-312.pyc +0 -0
  299. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/136.cpython-312.pyc +0 -0
  300. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/137.cpython-312.pyc +0 -0
  301. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/138.cpython-312.pyc +0 -0
  302. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/139.cpython-312.pyc +0 -0
  303. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/14.cpython-312.pyc +0 -0
  304. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/140.cpython-312.pyc +0 -0
  305. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/141.cpython-312.pyc +0 -0
  306. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/142.cpython-312.pyc +0 -0
  307. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/143.cpython-312.pyc +0 -0
  308. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/144.cpython-312.pyc +0 -0
  309. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/145.cpython-312.pyc +0 -0
  310. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/146.cpython-312.pyc +0 -0
  311. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/147.cpython-312.pyc +0 -0
  312. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/148.cpython-312.pyc +0 -0
  313. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/149.cpython-312.pyc +0 -0
  314. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/15.cpython-312.pyc +0 -0
  315. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/150.cpython-312.pyc +0 -0
  316. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/151.cpython-312.pyc +0 -0
  317. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/152.cpython-312.pyc +0 -0
  318. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/153.cpython-312.pyc +0 -0
  319. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/154.cpython-312.pyc +0 -0
  320. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/155.cpython-312.pyc +0 -0
  321. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/156.cpython-312.pyc +0 -0
  322. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/157.cpython-312.pyc +0 -0
  323. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/158.cpython-312.pyc +0 -0
  324. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/159.cpython-312.pyc +0 -0
  325. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/16.cpython-312.pyc +0 -0
  326. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/160.cpython-312.pyc +0 -0
  327. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/161.cpython-312.pyc +0 -0
  328. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/162.cpython-312.pyc +0 -0
  329. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/163.cpython-312.pyc +0 -0
  330. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/17.cpython-312.pyc +0 -0
  331. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/18.cpython-312.pyc +0 -0
  332. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/19.cpython-312.pyc +0 -0
  333. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/2.cpython-312.pyc +0 -0
  334. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/20.cpython-312.pyc +0 -0
  335. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/21.cpython-312.pyc +0 -0
  336. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/22.cpython-312.pyc +0 -0
  337. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/23.cpython-312.pyc +0 -0
  338. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/24.cpython-312.pyc +0 -0
  339. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/25.cpython-312.pyc +0 -0
  340. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/26.cpython-312.pyc +0 -0
  341. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/27.cpython-312.pyc +0 -0
  342. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/28.cpython-312.pyc +0 -0
  343. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/29.cpython-312.pyc +0 -0
  344. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/3.cpython-312.pyc +0 -0
  345. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/30.cpython-312.pyc +0 -0
  346. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/31.cpython-312.pyc +0 -0
  347. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/32.cpython-312.pyc +0 -0
  348. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/33.cpython-312.pyc +0 -0
  349. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/34.cpython-312.pyc +0 -0
  350. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/35.cpython-312.pyc +0 -0
  351. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/36.cpython-312.pyc +0 -0
  352. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/37.cpython-312.pyc +0 -0
  353. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/38.cpython-312.pyc +0 -0
  354. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/39.cpython-312.pyc +0 -0
  355. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/4.cpython-312.pyc +0 -0
  356. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/40.cpython-312.pyc +0 -0
  357. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/41.cpython-312.pyc +0 -0
  358. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/42.cpython-312.pyc +0 -0
  359. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/43.cpython-312.pyc +0 -0
  360. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/44.cpython-312.pyc +0 -0
  361. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/45.cpython-312.pyc +0 -0
  362. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/46.cpython-312.pyc +0 -0
  363. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/47.cpython-312.pyc +0 -0
  364. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/48.cpython-312.pyc +0 -0
  365. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/49.cpython-312.pyc +0 -0
  366. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/5.cpython-312.pyc +0 -0
  367. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/50.cpython-312.pyc +0 -0
  368. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/51.cpython-312.pyc +0 -0
  369. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/52.cpython-312.pyc +0 -0
  370. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/53.cpython-312.pyc +0 -0
  371. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/54.cpython-312.pyc +0 -0
  372. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/55.cpython-312.pyc +0 -0
  373. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/56.cpython-312.pyc +0 -0
  374. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/57.cpython-312.pyc +0 -0
  375. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/58.cpython-312.pyc +0 -0
  376. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/59.cpython-312.pyc +0 -0
  377. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/6.cpython-312.pyc +0 -0
  378. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/60.cpython-312.pyc +0 -0
  379. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/61.cpython-312.pyc +0 -0
  380. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/62.cpython-312.pyc +0 -0
  381. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/63.cpython-312.pyc +0 -0
  382. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/64.cpython-312.pyc +0 -0
  383. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/65.cpython-312.pyc +0 -0
  384. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/66.cpython-312.pyc +0 -0
  385. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/67.cpython-312.pyc +0 -0
  386. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/68.cpython-312.pyc +0 -0
  387. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/69.cpython-312.pyc +0 -0
  388. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/7.cpython-312.pyc +0 -0
  389. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/70.cpython-312.pyc +0 -0
  390. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/71.cpython-312.pyc +0 -0
  391. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/72.cpython-312.pyc +0 -0
  392. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/73.cpython-312.pyc +0 -0
  393. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/74.cpython-312.pyc +0 -0
  394. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/75.cpython-312.pyc +0 -0
  395. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/76.cpython-312.pyc +0 -0
  396. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/77.cpython-312.pyc +0 -0
  397. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/78.cpython-312.pyc +0 -0
  398. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/79.cpython-312.pyc +0 -0
  399. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/8.cpython-312.pyc +0 -0
  400. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/80.cpython-312.pyc +0 -0
  401. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/81.cpython-312.pyc +0 -0
  402. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/82.cpython-312.pyc +0 -0
  403. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/83.cpython-312.pyc +0 -0
  404. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/84.cpython-312.pyc +0 -0
  405. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/85.cpython-312.pyc +0 -0
  406. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/86.cpython-312.pyc +0 -0
  407. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/87.cpython-312.pyc +0 -0
  408. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/88.cpython-312.pyc +0 -0
  409. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/89.cpython-312.pyc +0 -0
  410. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/9.cpython-312.pyc +0 -0
  411. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/90.cpython-312.pyc +0 -0
  412. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/91.cpython-312.pyc +0 -0
  413. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/92.cpython-312.pyc +0 -0
  414. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/93.cpython-312.pyc +0 -0
  415. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/94.cpython-312.pyc +0 -0
  416. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/95.cpython-312.pyc +0 -0
  417. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/96.cpython-312.pyc +0 -0
  418. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/97.cpython-312.pyc +0 -0
  419. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/98.cpython-312.pyc +0 -0
  420. package/templates/skills/extended/devops/loki-mode/benchmarks/results/humaneval-loki-solutions/__pycache__/99.cpython-312.pyc +0 -0
  421. package/templates/skills/extended/documentation/docx/ooxml/scripts/__pycache__/pack.cpython-312.pyc +0 -0
  422. package/templates/skills/extended/documentation/docx/ooxml/scripts/__pycache__/unpack.cpython-312.pyc +0 -0
  423. package/templates/skills/extended/documentation/docx/ooxml/scripts/__pycache__/validate.cpython-312.pyc +0 -0
  424. package/templates/skills/extended/documentation/docx/ooxml/scripts/validation/__pycache__/__init__.cpython-312.pyc +0 -0
  425. package/templates/skills/extended/documentation/docx/ooxml/scripts/validation/__pycache__/base.cpython-312.pyc +0 -0
  426. package/templates/skills/extended/documentation/docx/ooxml/scripts/validation/__pycache__/docx.cpython-312.pyc +0 -0
  427. package/templates/skills/extended/documentation/docx/ooxml/scripts/validation/__pycache__/pptx.cpython-312.pyc +0 -0
  428. package/templates/skills/extended/documentation/docx/ooxml/scripts/validation/__pycache__/redlining.cpython-312.pyc +0 -0
  429. package/templates/skills/extended/documentation/docx/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
  430. package/templates/skills/extended/documentation/docx/scripts/__pycache__/document.cpython-312.pyc +0 -0
  431. package/templates/skills/extended/documentation/docx/scripts/__pycache__/utilities.cpython-312.pyc +0 -0
  432. package/templates/skills/extended/documentation/product-manager-toolkit/scripts/__pycache__/customer_interview_analyzer.cpython-312.pyc +0 -0
  433. package/templates/skills/extended/documentation/product-manager-toolkit/scripts/__pycache__/rice_prioritizer.cpython-312.pyc +0 -0
  434. package/templates/skills/extended/frontend/pptx/ooxml/scripts/__pycache__/pack.cpython-312.pyc +0 -0
  435. package/templates/skills/extended/frontend/pptx/ooxml/scripts/__pycache__/unpack.cpython-312.pyc +0 -0
  436. package/templates/skills/extended/frontend/pptx/ooxml/scripts/__pycache__/validate.cpython-312.pyc +0 -0
  437. package/templates/skills/extended/frontend/pptx/ooxml/scripts/validation/__pycache__/__init__.cpython-312.pyc +0 -0
  438. package/templates/skills/extended/frontend/pptx/ooxml/scripts/validation/__pycache__/base.cpython-312.pyc +0 -0
  439. package/templates/skills/extended/frontend/pptx/ooxml/scripts/validation/__pycache__/docx.cpython-312.pyc +0 -0
  440. package/templates/skills/extended/frontend/pptx/ooxml/scripts/validation/__pycache__/pptx.cpython-312.pyc +0 -0
  441. package/templates/skills/extended/frontend/pptx/ooxml/scripts/validation/__pycache__/redlining.cpython-312.pyc +0 -0
  442. package/templates/skills/extended/frontend/pptx/scripts/__pycache__/inventory.cpython-312.pyc +0 -0
  443. package/templates/skills/extended/frontend/pptx/scripts/__pycache__/rearrange.cpython-312.pyc +0 -0
  444. package/templates/skills/extended/frontend/pptx/scripts/__pycache__/replace.cpython-312.pyc +0 -0
  445. package/templates/skills/extended/frontend/pptx/scripts/__pycache__/thumbnail.cpython-312.pyc +0 -0
  446. package/templates/skills/extended/frontend/react-flow-architect/SKILL.md +647 -0
  447. package/templates/skills/extended/frontend/senior-fullstack/scripts/__pycache__/code_quality_analyzer.cpython-312.pyc +0 -0
  448. package/templates/skills/extended/frontend/senior-fullstack/scripts/__pycache__/fullstack_scaffolder.cpython-312.pyc +0 -0
  449. package/templates/skills/extended/frontend/senior-fullstack/scripts/__pycache__/project_scaffolder.cpython-312.pyc +0 -0
  450. package/templates/skills/extended/frontend/ui-ux-pro-max/scripts/__pycache__/core.cpython-312.pyc +0 -0
  451. package/templates/skills/extended/frontend/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-312.pyc +0 -0
  452. package/templates/skills/extended/frontend/ui-ux-pro-max/scripts/__pycache__/search.cpython-312.pyc +0 -0
  453. package/templates/skills/extended/mobile/app-store-optimization/__pycache__/ab_test_planner.cpython-312.pyc +0 -0
  454. package/templates/skills/extended/mobile/app-store-optimization/__pycache__/aso_scorer.cpython-312.pyc +0 -0
  455. package/templates/skills/extended/mobile/app-store-optimization/__pycache__/competitor_analyzer.cpython-312.pyc +0 -0
  456. package/templates/skills/extended/mobile/app-store-optimization/__pycache__/keyword_analyzer.cpython-312.pyc +0 -0
  457. package/templates/skills/extended/mobile/app-store-optimization/__pycache__/launch_checklist.cpython-312.pyc +0 -0
  458. package/templates/skills/extended/mobile/app-store-optimization/__pycache__/localization_helper.cpython-312.pyc +0 -0
  459. package/templates/skills/extended/mobile/app-store-optimization/__pycache__/metadata_optimizer.cpython-312.pyc +0 -0
  460. package/templates/skills/extended/mobile/app-store-optimization/__pycache__/review_analyzer.cpython-312.pyc +0 -0
  461. package/templates/skills/extended/other/oss-hunter/bin/__pycache__/hunter.cpython-312.pyc +0 -0
  462. package/templates/skills/extended/other/typescript-expert/scripts/__pycache__/ts_diagnostic.cpython-312.pyc +0 -0
  463. package/templates/skills/extended/security/laravel-security-audit/SKILL.md +257 -0
  464. package/templates/skills/extended/workflow/slack-gif-creator/core/__pycache__/easing.cpython-312.pyc +0 -0
  465. package/templates/skills/extended/workflow/slack-gif-creator/core/__pycache__/frame_composer.cpython-312.pyc +0 -0
  466. package/templates/skills/extended/workflow/slack-gif-creator/core/__pycache__/gif_builder.cpython-312.pyc +0 -0
  467. package/templates/skills/extended/workflow/slack-gif-creator/core/__pycache__/validators.cpython-312.pyc +0 -0
  468. package/templates/skills/knowledge/ai-agents/notebooklm-rag/SKILL.md +35 -0
  469. package/templates/skills/knowledge/ai-agents/parallel-agents/SKILL.md +35 -0
  470. package/templates/skills/knowledge/ai-agents/prompt-engineering-patterns/scripts/__pycache__/optimize-prompt.cpython-312.pyc +0 -0
  471. package/templates/skills/knowledge/architecture/architecture/SKILL.md +35 -0
  472. package/templates/skills/knowledge/architecture/brainstorming/SKILL.md +35 -0
  473. package/templates/skills/knowledge/architecture/executing-plans/SKILL.md +35 -0
  474. package/templates/skills/knowledge/architecture/plan-writing/SKILL.md +35 -0
  475. package/templates/skills/knowledge/backend/api-design-principles/assets/__pycache__/rest-api-template.cpython-312.pyc +0 -0
  476. package/templates/skills/knowledge/backend/api-patterns/SKILL.md +34 -0
  477. package/templates/skills/knowledge/backend/api-patterns/scripts/__pycache__/api_validator.cpython-312.pyc +0 -0
  478. package/templates/skills/knowledge/backend/database-design/SKILL.md +35 -0
  479. package/templates/skills/knowledge/backend/database-design/scripts/__pycache__/schema_validator.cpython-312.pyc +0 -0
  480. package/templates/skills/knowledge/backend/nodejs-best-practices/SKILL.md +35 -0
  481. package/templates/skills/knowledge/backend/python-patterns/SKILL.md +35 -0
  482. package/templates/skills/knowledge/content/content-creator/scripts/__pycache__/brand_voice_analyzer.cpython-312.pyc +0 -0
  483. package/templates/skills/knowledge/content/content-creator/scripts/__pycache__/seo_optimizer.cpython-312.pyc +0 -0
  484. package/templates/skills/knowledge/content/geo-fundamentals/SKILL.md +34 -0
  485. package/templates/skills/knowledge/content/geo-fundamentals/scripts/__pycache__/geo_checker.cpython-312.pyc +0 -0
  486. package/templates/skills/knowledge/content/seo-fundamentals/scripts/__pycache__/seo_checker.cpython-312.pyc +0 -0
  487. package/templates/skills/knowledge/debugging/performance-profiling/SKILL.md +35 -0
  488. package/templates/skills/knowledge/debugging/performance-profiling/scripts/__pycache__/lighthouse_audit.cpython-312.pyc +0 -0
  489. package/templates/skills/knowledge/devops/bash-linux/SKILL.md +35 -0
  490. package/templates/skills/knowledge/devops/powershell-windows/SKILL.md +35 -0
  491. package/templates/skills/knowledge/devops/server-management/SKILL.md +35 -0
  492. package/templates/skills/knowledge/documentation/documentation-templates/SKILL.md +35 -0
  493. package/templates/skills/knowledge/frontend/design-md/SKILL.md +35 -0
  494. package/templates/skills/knowledge/frontend/frontend-design/SKILL.md +35 -0
  495. package/templates/skills/knowledge/frontend/frontend-design/scripts/__pycache__/accessibility_checker.cpython-312.pyc +0 -0
  496. package/templates/skills/knowledge/frontend/frontend-design/scripts/__pycache__/ux_audit.cpython-312.pyc +0 -0
  497. package/templates/skills/knowledge/frontend/nextjs-best-practices/SKILL.md +35 -0
  498. package/templates/skills/knowledge/frontend/react-components/SKILL.md +35 -0
  499. package/templates/skills/knowledge/frontend/react-patterns/SKILL.md +35 -0
  500. package/templates/skills/knowledge/frontend/stitch-loop/SKILL.md +35 -0
  501. package/templates/skills/knowledge/frontend/tailwind-patterns/SKILL.md +35 -0
  502. package/templates/skills/knowledge/gaming/game-development/2d-games/SKILL.md +35 -0
  503. package/templates/skills/knowledge/gaming/game-development/3d-games/SKILL.md +35 -0
  504. package/templates/skills/knowledge/gaming/game-development/SKILL.md +35 -0
  505. package/templates/skills/knowledge/gaming/game-development/game-art/SKILL.md +35 -0
  506. package/templates/skills/knowledge/gaming/game-development/game-audio/SKILL.md +35 -0
  507. package/templates/skills/knowledge/gaming/game-development/game-design/SKILL.md +35 -0
  508. package/templates/skills/knowledge/gaming/game-development/mobile-games/SKILL.md +35 -0
  509. package/templates/skills/knowledge/gaming/game-development/multiplayer/SKILL.md +35 -0
  510. package/templates/skills/knowledge/gaming/game-development/pc-games/SKILL.md +35 -0
  511. package/templates/skills/knowledge/gaming/game-development/vr-ar/SKILL.md +35 -0
  512. package/templates/skills/knowledge/gaming/game-development/web-games/SKILL.md +35 -0
  513. package/templates/skills/knowledge/i18n/i18n-localization/SKILL.md +35 -0
  514. package/templates/skills/knowledge/i18n/i18n-localization/scripts/__pycache__/i18n_checker.cpython-312.pyc +0 -0
  515. package/templates/skills/knowledge/mobile/mobile-design/SKILL.md +35 -0
  516. package/templates/skills/knowledge/mobile/mobile-design/scripts/__pycache__/mobile_audit.cpython-312.pyc +0 -0
  517. package/templates/skills/knowledge/security/red-team-tactics/SKILL.md +35 -0
  518. package/templates/skills/knowledge/security/vulnerability-scanner/SKILL.md +35 -0
  519. package/templates/skills/knowledge/security/vulnerability-scanner/scripts/__pycache__/security_scan.cpython-312.pyc +0 -0
  520. package/templates/skills/knowledge/testing/lint-and-validate/SKILL.md +34 -0
  521. package/templates/skills/knowledge/testing/lint-and-validate/scripts/__pycache__/lint_runner.cpython-312.pyc +0 -0
  522. package/templates/skills/knowledge/testing/lint-and-validate/scripts/__pycache__/type_coverage.cpython-312.pyc +0 -0
  523. package/templates/skills/knowledge/testing/tdd-workflow/SKILL.md +35 -0
  524. package/templates/skills/knowledge/testing/testing-patterns/scripts/__pycache__/test_runner.cpython-312.pyc +0 -0
  525. package/templates/skills/knowledge/testing/webapp-testing/SKILL.md +35 -0
  526. package/templates/skills/knowledge/testing/webapp-testing/scripts/__pycache__/playwright_runner.cpython-312.pyc +0 -0
  527. package/templates/skills/knowledge/workflow/app-builder/SKILL.md +35 -0
  528. package/templates/skills/knowledge/workflow/app-builder/templates/SKILL.md +35 -0
  529. package/templates/skills/knowledge/workflow/behavioral-modes/SKILL.md +35 -0
  530. package/templates/skills/knowledge/workflow/clean-code/SKILL.md +34 -0
  531. package/templates/skills/knowledge/workflow/deployment-procedures/SKILL.md +35 -0
  532. package/templates/skills/knowledge/workflow/intelligent-routing/SKILL.md +35 -0
  533. package/templates/skills/knowledge/workflow/plugin-discovery/SKILL.md +35 -0
  534. package/templates/skills/knowledge/workflow/plugin-discovery/scripts/__pycache__/platform_setup.cpython-312.pyc +0 -0
  535. package/templates/skills/knowledge/workflow/self-update/SKILL.md +35 -0
  536. package/templates/skills/knowledge/workflow/self-update/scripts/__pycache__/update_kit.cpython-312.pyc +0 -0
  537. package/templates/skills/knowledge/workflow/verification-before-completion/SKILL.md +35 -0
  538. package/templates/base/.agent/scripts/release_gate.py +0 -148
  539. package/templates/base/.agent/workflows/release-protocol.md +0 -43
  540. package/templates/skills/extended/ai-agents/internal-comms-anthropic/LICENSE.txt +0 -202
  541. package/templates/skills/extended/ai-agents/internal-comms-anthropic/SKILL.md +0 -73
  542. package/templates/skills/extended/ai-agents/internal-comms-anthropic/examples/3p-updates.md +0 -47
  543. package/templates/skills/extended/ai-agents/internal-comms-anthropic/examples/company-newsletter.md +0 -65
  544. package/templates/skills/extended/ai-agents/internal-comms-anthropic/examples/faq-answers.md +0 -30
  545. package/templates/skills/extended/ai-agents/internal-comms-anthropic/examples/general-comms.md +0 -16
  546. package/templates/skills/extended/ai-agents/skill-creator-ms/SKILL.md +0 -654
  547. package/templates/skills/extended/documentation/docx-official/LICENSE.txt +0 -30
  548. package/templates/skills/extended/documentation/docx-official/SKILL.md +0 -238
  549. package/templates/skills/extended/documentation/docx-official/docx-js.md +0 -350
  550. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  551. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  552. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  553. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  554. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  555. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  556. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  557. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  558. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  559. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  560. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  561. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  562. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  563. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  564. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  565. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  566. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  567. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  568. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  569. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  570. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  571. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  572. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  573. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  574. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  575. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  576. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  577. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  578. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  579. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  580. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  581. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/mce/mc.xsd +0 -75
  582. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
  583. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
  584. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
  585. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
  586. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
  587. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  588. package/templates/skills/extended/documentation/docx-official/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
  589. package/templates/skills/extended/documentation/docx-official/ooxml/scripts/__pycache__/pack.cpython-312.pyc +0 -0
  590. package/templates/skills/extended/documentation/docx-official/ooxml/scripts/__pycache__/unpack.cpython-312.pyc +0 -0
  591. package/templates/skills/extended/documentation/docx-official/ooxml/scripts/__pycache__/validate.cpython-312.pyc +0 -0
  592. package/templates/skills/extended/documentation/docx-official/ooxml/scripts/pack.py +0 -159
  593. package/templates/skills/extended/documentation/docx-official/ooxml/scripts/unpack.py +0 -29
  594. package/templates/skills/extended/documentation/docx-official/ooxml/scripts/validate.py +0 -69
  595. package/templates/skills/extended/documentation/docx-official/ooxml/scripts/validation/__init__.py +0 -15
  596. package/templates/skills/extended/documentation/docx-official/ooxml/scripts/validation/__pycache__/__init__.cpython-312.pyc +0 -0
  597. package/templates/skills/extended/documentation/docx-official/ooxml/scripts/validation/__pycache__/base.cpython-312.pyc +0 -0
  598. package/templates/skills/extended/documentation/docx-official/ooxml/scripts/validation/__pycache__/docx.cpython-312.pyc +0 -0
  599. package/templates/skills/extended/documentation/docx-official/ooxml/scripts/validation/__pycache__/pptx.cpython-312.pyc +0 -0
  600. package/templates/skills/extended/documentation/docx-official/ooxml/scripts/validation/__pycache__/redlining.cpython-312.pyc +0 -0
  601. package/templates/skills/extended/documentation/docx-official/ooxml/scripts/validation/base.py +0 -951
  602. package/templates/skills/extended/documentation/docx-official/ooxml/scripts/validation/docx.py +0 -274
  603. package/templates/skills/extended/documentation/docx-official/ooxml/scripts/validation/pptx.py +0 -315
  604. package/templates/skills/extended/documentation/docx-official/ooxml/scripts/validation/redlining.py +0 -279
  605. package/templates/skills/extended/documentation/docx-official/ooxml.md +0 -610
  606. package/templates/skills/extended/documentation/docx-official/scripts/__init__.py +0 -1
  607. package/templates/skills/extended/documentation/docx-official/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
  608. package/templates/skills/extended/documentation/docx-official/scripts/__pycache__/document.cpython-312.pyc +0 -0
  609. package/templates/skills/extended/documentation/docx-official/scripts/__pycache__/utilities.cpython-312.pyc +0 -0
  610. package/templates/skills/extended/documentation/docx-official/scripts/document.py +0 -1276
  611. package/templates/skills/extended/documentation/docx-official/scripts/templates/comments.xml +0 -3
  612. package/templates/skills/extended/documentation/docx-official/scripts/templates/commentsExtended.xml +0 -3
  613. package/templates/skills/extended/documentation/docx-official/scripts/templates/commentsExtensible.xml +0 -3
  614. package/templates/skills/extended/documentation/docx-official/scripts/templates/commentsIds.xml +0 -3
  615. package/templates/skills/extended/documentation/docx-official/scripts/templates/people.xml +0 -3
  616. package/templates/skills/extended/documentation/docx-official/scripts/utilities.py +0 -374
  617. package/templates/skills/extended/frontend/active-directory-attacks/SKILL.md +0 -424
  618. package/templates/skills/extended/frontend/active-directory-attacks/references/advanced-attacks.md +0 -382
  619. package/templates/skills/extended/frontend/brand-guidelines-anthropic/LICENSE.txt +0 -202
  620. package/templates/skills/extended/frontend/brand-guidelines-anthropic/SKILL.md +0 -114
  621. package/templates/skills/extended/frontend/brand-guidelines-community/LICENSE.txt +0 -202
  622. package/templates/skills/extended/frontend/brand-guidelines-community/SKILL.md +0 -114
  623. package/templates/skills/extended/frontend/burp-suite-testing/SKILL.md +0 -421
  624. package/templates/skills/extended/frontend/discord-bot-architect/SKILL.md +0 -318
  625. package/templates/skills/extended/frontend/event-sourcing-architect/SKILL.md +0 -99
  626. package/templates/skills/extended/frontend/event-store-design/SKILL.md +0 -490
  627. package/templates/skills/extended/frontend/html-injection-testing/SKILL.md +0 -539
  628. package/templates/skills/extended/frontend/hybrid-search-implementation/SKILL.md +0 -73
  629. package/templates/skills/extended/frontend/hybrid-search-implementation/resources/implementation-playbook.md +0 -567
  630. package/templates/skills/extended/frontend/istio-traffic-management/SKILL.md +0 -378
  631. package/templates/skills/extended/frontend/linux-privilege-escalation/SKILL.md +0 -545
  632. package/templates/skills/extended/frontend/mcp-builder-ms/SKILL.md +0 -344
  633. package/templates/skills/extended/frontend/memory-forensics/SKILL.md +0 -532
  634. package/templates/skills/extended/frontend/metasploit-framework/SKILL.md +0 -519
  635. package/templates/skills/extended/frontend/ml-engineer/SKILL.md +0 -209
  636. package/templates/skills/extended/frontend/mlops-engineer/SKILL.md +0 -260
  637. package/templates/skills/extended/frontend/monorepo-architect/SKILL.md +0 -102
  638. package/templates/skills/extended/frontend/monorepo-management/SKILL.md +0 -76
  639. package/templates/skills/extended/frontend/monorepo-management/resources/implementation-playbook.md +0 -621
  640. package/templates/skills/extended/frontend/pptx-official/LICENSE.txt +0 -30
  641. package/templates/skills/extended/frontend/pptx-official/SKILL.md +0 -525
  642. package/templates/skills/extended/frontend/pptx-official/html2pptx.md +0 -625
  643. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
  644. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
  645. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
  646. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
  647. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
  648. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
  649. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
  650. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
  651. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
  652. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
  653. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
  654. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
  655. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
  656. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
  657. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
  658. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
  659. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
  660. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
  661. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
  662. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
  663. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
  664. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
  665. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
  666. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
  667. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
  668. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
  669. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
  670. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
  671. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
  672. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
  673. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
  674. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/mce/mc.xsd +0 -75
  675. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/microsoft/wml-2010.xsd +0 -560
  676. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/microsoft/wml-2012.xsd +0 -67
  677. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/microsoft/wml-2018.xsd +0 -14
  678. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/microsoft/wml-cex-2018.xsd +0 -20
  679. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/microsoft/wml-cid-2016.xsd +0 -13
  680. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
  681. package/templates/skills/extended/frontend/pptx-official/ooxml/schemas/microsoft/wml-symex-2015.xsd +0 -8
  682. package/templates/skills/extended/frontend/pptx-official/ooxml/scripts/__pycache__/pack.cpython-312.pyc +0 -0
  683. package/templates/skills/extended/frontend/pptx-official/ooxml/scripts/__pycache__/unpack.cpython-312.pyc +0 -0
  684. package/templates/skills/extended/frontend/pptx-official/ooxml/scripts/__pycache__/validate.cpython-312.pyc +0 -0
  685. package/templates/skills/extended/frontend/pptx-official/ooxml/scripts/pack.py +0 -159
  686. package/templates/skills/extended/frontend/pptx-official/ooxml/scripts/unpack.py +0 -29
  687. package/templates/skills/extended/frontend/pptx-official/ooxml/scripts/validate.py +0 -69
  688. package/templates/skills/extended/frontend/pptx-official/ooxml/scripts/validation/__init__.py +0 -15
  689. package/templates/skills/extended/frontend/pptx-official/ooxml/scripts/validation/__pycache__/__init__.cpython-312.pyc +0 -0
  690. package/templates/skills/extended/frontend/pptx-official/ooxml/scripts/validation/__pycache__/base.cpython-312.pyc +0 -0
  691. package/templates/skills/extended/frontend/pptx-official/ooxml/scripts/validation/__pycache__/docx.cpython-312.pyc +0 -0
  692. package/templates/skills/extended/frontend/pptx-official/ooxml/scripts/validation/__pycache__/pptx.cpython-312.pyc +0 -0
  693. package/templates/skills/extended/frontend/pptx-official/ooxml/scripts/validation/__pycache__/redlining.cpython-312.pyc +0 -0
  694. package/templates/skills/extended/frontend/pptx-official/ooxml/scripts/validation/base.py +0 -951
  695. package/templates/skills/extended/frontend/pptx-official/ooxml/scripts/validation/docx.py +0 -274
  696. package/templates/skills/extended/frontend/pptx-official/ooxml/scripts/validation/pptx.py +0 -315
  697. package/templates/skills/extended/frontend/pptx-official/ooxml/scripts/validation/redlining.py +0 -279
  698. package/templates/skills/extended/frontend/pptx-official/ooxml.md +0 -427
  699. package/templates/skills/extended/frontend/pptx-official/scripts/__pycache__/inventory.cpython-312.pyc +0 -0
  700. package/templates/skills/extended/frontend/pptx-official/scripts/__pycache__/rearrange.cpython-312.pyc +0 -0
  701. package/templates/skills/extended/frontend/pptx-official/scripts/__pycache__/replace.cpython-312.pyc +0 -0
  702. package/templates/skills/extended/frontend/pptx-official/scripts/__pycache__/thumbnail.cpython-312.pyc +0 -0
  703. package/templates/skills/extended/frontend/pptx-official/scripts/html2pptx.js +0 -979
  704. package/templates/skills/extended/frontend/pptx-official/scripts/inventory.py +0 -1020
  705. package/templates/skills/extended/frontend/pptx-official/scripts/rearrange.py +0 -231
  706. package/templates/skills/extended/frontend/pptx-official/scripts/replace.py +0 -385
  707. package/templates/skills/extended/frontend/pptx-official/scripts/thumbnail.py +0 -450
  708. package/templates/skills/extended/frontend/quant-analyst/SKILL.md +0 -94
  709. package/templates/skills/extended/frontend/risk-metrics-calculation/SKILL.md +0 -74
  710. package/templates/skills/extended/frontend/risk-metrics-calculation/resources/implementation-playbook.md +0 -554
  711. package/templates/skills/extended/frontend/security-bluebook-builder/SKILL.md +0 -63
  712. package/templates/skills/extended/frontend/skill-creator/LICENSE.txt +0 -202
  713. package/templates/skills/extended/frontend/skill-creator/README.md +0 -270
  714. package/templates/skills/extended/frontend/skill-creator/SKILL.md +0 -634
  715. package/templates/skills/extended/frontend/skill-creator/references/output-patterns.md +0 -82
  716. package/templates/skills/extended/frontend/skill-creator/references/workflows.md +0 -28
  717. package/templates/skills/extended/frontend/skill-creator/scripts/__pycache__/init_skill.cpython-312.pyc +0 -0
  718. package/templates/skills/extended/frontend/skill-creator/scripts/__pycache__/package_skill.cpython-312.pyc +0 -0
  719. package/templates/skills/extended/frontend/skill-creator/scripts/__pycache__/quick_validate.cpython-312.pyc +0 -0
  720. package/templates/skills/extended/frontend/skill-creator/scripts/init_skill.py +0 -303
  721. package/templates/skills/extended/frontend/skill-creator/scripts/package_skill.py +0 -110
  722. package/templates/skills/extended/frontend/skill-creator/scripts/quick_validate.py +0 -95
  723. package/templates/skills/extended/frontend/telegram-bot-builder/SKILL.md +0 -295
  724. package/templates/skills/extended/frontend/using-superpowers/SKILL.md +0 -128
  725. package/templates/skills/extended/gaming/audio-transcriber/CHANGELOG.md +0 -137
  726. package/templates/skills/extended/gaming/audio-transcriber/README.md +0 -340
  727. package/templates/skills/extended/gaming/audio-transcriber/SKILL.md +0 -599
  728. package/templates/skills/extended/gaming/audio-transcriber/examples/basic-transcription.sh +0 -250
  729. package/templates/skills/extended/gaming/audio-transcriber/references/tools-comparison.md +0 -352
  730. package/templates/skills/extended/gaming/audio-transcriber/scripts/__pycache__/transcribe.cpython-312.pyc +0 -0
  731. package/templates/skills/extended/gaming/audio-transcriber/scripts/install-requirements.sh +0 -190
  732. package/templates/skills/extended/gaming/audio-transcriber/scripts/transcribe.py +0 -486
  733. package/templates/skills/extended/gaming/internal-comms-community/LICENSE.txt +0 -202
  734. package/templates/skills/extended/gaming/internal-comms-community/SKILL.md +0 -73
  735. package/templates/skills/extended/gaming/startup-business-analyst-market-opportunity/SKILL.md +0 -281
  736. package/templates/skills/knowledge/frontend/design-md/design-md/README.md +0 -34
  737. package/templates/skills/knowledge/frontend/design-md/design-md/SKILL.md +0 -193
  738. package/templates/skills/knowledge/frontend/design-md/design-md/examples/DESIGN.md +0 -154
  739. package/templates/skills/knowledge/frontend/react-components/react-components/README.md +0 -36
  740. package/templates/skills/knowledge/frontend/react-components/react-components/SKILL.md +0 -53
  741. package/templates/skills/knowledge/frontend/react-components/react-components/examples/gold-standard-card.tsx +0 -80
  742. package/templates/skills/knowledge/frontend/react-components/react-components/package-lock.json +0 -231
  743. package/templates/skills/knowledge/frontend/react-components/react-components/package.json +0 -16
  744. package/templates/skills/knowledge/frontend/react-components/react-components/resources/architecture-checklist.md +0 -15
  745. package/templates/skills/knowledge/frontend/react-components/react-components/resources/component-template.tsx +0 -37
  746. package/templates/skills/knowledge/frontend/react-components/react-components/resources/stitch-api-reference.md +0 -14
  747. package/templates/skills/knowledge/frontend/react-components/react-components/resources/style-guide.json +0 -27
  748. package/templates/skills/knowledge/frontend/react-components/react-components/scripts/fetch-stitch.sh +0 -30
  749. package/templates/skills/knowledge/frontend/react-components/react-components/scripts/validate.js +0 -68
  750. package/templates/skills/knowledge/frontend/stitch-loop/stitch-loop/README.md +0 -54
  751. package/templates/skills/knowledge/frontend/stitch-loop/stitch-loop/SKILL.md +0 -235
  752. package/templates/skills/knowledge/frontend/stitch-loop/stitch-loop/examples/SITE.md +0 -73
  753. package/templates/skills/knowledge/frontend/stitch-loop/stitch-loop/examples/next-prompt.md +0 -25
  754. package/templates/skills/knowledge/frontend/stitch-loop/stitch-loop/resources/baton-schema.md +0 -61
  755. package/templates/skills/knowledge/frontend/stitch-loop/stitch-loop/resources/site-template.md +0 -104
@@ -1,979 +0,0 @@
1
- /**
2
- * html2pptx - Convert HTML slide to pptxgenjs slide with positioned elements
3
- *
4
- * USAGE:
5
- * const pptx = new pptxgen();
6
- * pptx.layout = 'LAYOUT_16x9'; // Must match HTML body dimensions
7
- *
8
- * const { slide, placeholders } = await html2pptx('slide.html', pptx);
9
- * slide.addChart(pptx.charts.LINE, data, placeholders[0]);
10
- *
11
- * await pptx.writeFile('output.pptx');
12
- *
13
- * FEATURES:
14
- * - Converts HTML to PowerPoint with accurate positioning
15
- * - Supports text, images, shapes, and bullet lists
16
- * - Extracts placeholder elements (class="placeholder") with positions
17
- * - Handles CSS gradients, borders, and margins
18
- *
19
- * VALIDATION:
20
- * - Uses body width/height from HTML for viewport sizing
21
- * - Throws error if HTML dimensions don't match presentation layout
22
- * - Throws error if content overflows body (with overflow details)
23
- *
24
- * RETURNS:
25
- * { slide, placeholders } where placeholders is an array of { id, x, y, w, h }
26
- */
27
-
28
- const { chromium } = require('playwright');
29
- const path = require('path');
30
- const sharp = require('sharp');
31
-
32
- const PT_PER_PX = 0.75;
33
- const PX_PER_IN = 96;
34
- const EMU_PER_IN = 914400;
35
-
36
- // Helper: Get body dimensions and check for overflow
37
- async function getBodyDimensions(page) {
38
- const bodyDimensions = await page.evaluate(() => {
39
- const body = document.body;
40
- const style = window.getComputedStyle(body);
41
-
42
- return {
43
- width: parseFloat(style.width),
44
- height: parseFloat(style.height),
45
- scrollWidth: body.scrollWidth,
46
- scrollHeight: body.scrollHeight
47
- };
48
- });
49
-
50
- const errors = [];
51
- const widthOverflowPx = Math.max(0, bodyDimensions.scrollWidth - bodyDimensions.width - 1);
52
- const heightOverflowPx = Math.max(0, bodyDimensions.scrollHeight - bodyDimensions.height - 1);
53
-
54
- const widthOverflowPt = widthOverflowPx * PT_PER_PX;
55
- const heightOverflowPt = heightOverflowPx * PT_PER_PX;
56
-
57
- if (widthOverflowPt > 0 || heightOverflowPt > 0) {
58
- const directions = [];
59
- if (widthOverflowPt > 0) directions.push(`${widthOverflowPt.toFixed(1)}pt horizontally`);
60
- if (heightOverflowPt > 0) directions.push(`${heightOverflowPt.toFixed(1)}pt vertically`);
61
- const reminder = heightOverflowPt > 0 ? ' (Remember: leave 0.5" margin at bottom of slide)' : '';
62
- errors.push(`HTML content overflows body by ${directions.join(' and ')}${reminder}`);
63
- }
64
-
65
- return { ...bodyDimensions, errors };
66
- }
67
-
68
- // Helper: Validate dimensions match presentation layout
69
- function validateDimensions(bodyDimensions, pres) {
70
- const errors = [];
71
- const widthInches = bodyDimensions.width / PX_PER_IN;
72
- const heightInches = bodyDimensions.height / PX_PER_IN;
73
-
74
- if (pres.presLayout) {
75
- const layoutWidth = pres.presLayout.width / EMU_PER_IN;
76
- const layoutHeight = pres.presLayout.height / EMU_PER_IN;
77
-
78
- if (Math.abs(layoutWidth - widthInches) > 0.1 || Math.abs(layoutHeight - heightInches) > 0.1) {
79
- errors.push(
80
- `HTML dimensions (${widthInches.toFixed(1)}" × ${heightInches.toFixed(1)}") ` +
81
- `don't match presentation layout (${layoutWidth.toFixed(1)}" × ${layoutHeight.toFixed(1)}")`
82
- );
83
- }
84
- }
85
- return errors;
86
- }
87
-
88
- function validateTextBoxPosition(slideData, bodyDimensions) {
89
- const errors = [];
90
- const slideHeightInches = bodyDimensions.height / PX_PER_IN;
91
- const minBottomMargin = 0.5; // 0.5 inches from bottom
92
-
93
- for (const el of slideData.elements) {
94
- // Check text elements (p, h1-h6, list)
95
- if (['p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'list'].includes(el.type)) {
96
- const fontSize = el.style?.fontSize || 0;
97
- const bottomEdge = el.position.y + el.position.h;
98
- const distanceFromBottom = slideHeightInches - bottomEdge;
99
-
100
- if (fontSize > 12 && distanceFromBottom < minBottomMargin) {
101
- const getText = () => {
102
- if (typeof el.text === 'string') return el.text;
103
- if (Array.isArray(el.text)) return el.text.find(t => t.text)?.text || '';
104
- if (Array.isArray(el.items)) return el.items.find(item => item.text)?.text || '';
105
- return '';
106
- };
107
- const textPrefix = getText().substring(0, 50) + (getText().length > 50 ? '...' : '');
108
-
109
- errors.push(
110
- `Text box "${textPrefix}" ends too close to bottom edge ` +
111
- `(${distanceFromBottom.toFixed(2)}" from bottom, minimum ${minBottomMargin}" required)`
112
- );
113
- }
114
- }
115
- }
116
-
117
- return errors;
118
- }
119
-
120
- // Helper: Add background to slide
121
- async function addBackground(slideData, targetSlide, tmpDir) {
122
- if (slideData.background.type === 'image' && slideData.background.path) {
123
- let imagePath = slideData.background.path.startsWith('file://')
124
- ? slideData.background.path.replace('file://', '')
125
- : slideData.background.path;
126
- targetSlide.background = { path: imagePath };
127
- } else if (slideData.background.type === 'color' && slideData.background.value) {
128
- targetSlide.background = { color: slideData.background.value };
129
- }
130
- }
131
-
132
- // Helper: Add elements to slide
133
- function addElements(slideData, targetSlide, pres) {
134
- for (const el of slideData.elements) {
135
- if (el.type === 'image') {
136
- let imagePath = el.src.startsWith('file://') ? el.src.replace('file://', '') : el.src;
137
- targetSlide.addImage({
138
- path: imagePath,
139
- x: el.position.x,
140
- y: el.position.y,
141
- w: el.position.w,
142
- h: el.position.h
143
- });
144
- } else if (el.type === 'line') {
145
- targetSlide.addShape(pres.ShapeType.line, {
146
- x: el.x1,
147
- y: el.y1,
148
- w: el.x2 - el.x1,
149
- h: el.y2 - el.y1,
150
- line: { color: el.color, width: el.width }
151
- });
152
- } else if (el.type === 'shape') {
153
- const shapeOptions = {
154
- x: el.position.x,
155
- y: el.position.y,
156
- w: el.position.w,
157
- h: el.position.h,
158
- shape: el.shape.rectRadius > 0 ? pres.ShapeType.roundRect : pres.ShapeType.rect
159
- };
160
-
161
- if (el.shape.fill) {
162
- shapeOptions.fill = { color: el.shape.fill };
163
- if (el.shape.transparency != null) shapeOptions.fill.transparency = el.shape.transparency;
164
- }
165
- if (el.shape.line) shapeOptions.line = el.shape.line;
166
- if (el.shape.rectRadius > 0) shapeOptions.rectRadius = el.shape.rectRadius;
167
- if (el.shape.shadow) shapeOptions.shadow = el.shape.shadow;
168
-
169
- targetSlide.addText(el.text || '', shapeOptions);
170
- } else if (el.type === 'list') {
171
- const listOptions = {
172
- x: el.position.x,
173
- y: el.position.y,
174
- w: el.position.w,
175
- h: el.position.h,
176
- fontSize: el.style.fontSize,
177
- fontFace: el.style.fontFace,
178
- color: el.style.color,
179
- align: el.style.align,
180
- valign: 'top',
181
- lineSpacing: el.style.lineSpacing,
182
- paraSpaceBefore: el.style.paraSpaceBefore,
183
- paraSpaceAfter: el.style.paraSpaceAfter,
184
- margin: el.style.margin
185
- };
186
- if (el.style.margin) listOptions.margin = el.style.margin;
187
- targetSlide.addText(el.items, listOptions);
188
- } else {
189
- // Check if text is single-line (height suggests one line)
190
- const lineHeight = el.style.lineSpacing || el.style.fontSize * 1.2;
191
- const isSingleLine = el.position.h <= lineHeight * 1.5;
192
-
193
- let adjustedX = el.position.x;
194
- let adjustedW = el.position.w;
195
-
196
- // Make single-line text 2% wider to account for underestimate
197
- if (isSingleLine) {
198
- const widthIncrease = el.position.w * 0.02;
199
- const align = el.style.align;
200
-
201
- if (align === 'center') {
202
- // Center: expand both sides
203
- adjustedX = el.position.x - (widthIncrease / 2);
204
- adjustedW = el.position.w + widthIncrease;
205
- } else if (align === 'right') {
206
- // Right: expand to the left
207
- adjustedX = el.position.x - widthIncrease;
208
- adjustedW = el.position.w + widthIncrease;
209
- } else {
210
- // Left (default): expand to the right
211
- adjustedW = el.position.w + widthIncrease;
212
- }
213
- }
214
-
215
- const textOptions = {
216
- x: adjustedX,
217
- y: el.position.y,
218
- w: adjustedW,
219
- h: el.position.h,
220
- fontSize: el.style.fontSize,
221
- fontFace: el.style.fontFace,
222
- color: el.style.color,
223
- bold: el.style.bold,
224
- italic: el.style.italic,
225
- underline: el.style.underline,
226
- valign: 'top',
227
- lineSpacing: el.style.lineSpacing,
228
- paraSpaceBefore: el.style.paraSpaceBefore,
229
- paraSpaceAfter: el.style.paraSpaceAfter,
230
- inset: 0 // Remove default PowerPoint internal padding
231
- };
232
-
233
- if (el.style.align) textOptions.align = el.style.align;
234
- if (el.style.margin) textOptions.margin = el.style.margin;
235
- if (el.style.rotate !== undefined) textOptions.rotate = el.style.rotate;
236
- if (el.style.transparency !== null && el.style.transparency !== undefined) textOptions.transparency = el.style.transparency;
237
-
238
- targetSlide.addText(el.text, textOptions);
239
- }
240
- }
241
- }
242
-
243
- // Helper: Extract slide data from HTML page
244
- async function extractSlideData(page) {
245
- return await page.evaluate(() => {
246
- const PT_PER_PX = 0.75;
247
- const PX_PER_IN = 96;
248
-
249
- // Fonts that are single-weight and should not have bold applied
250
- // (applying bold causes PowerPoint to use faux bold which makes text wider)
251
- const SINGLE_WEIGHT_FONTS = ['impact'];
252
-
253
- // Helper: Check if a font should skip bold formatting
254
- const shouldSkipBold = (fontFamily) => {
255
- if (!fontFamily) return false;
256
- const normalizedFont = fontFamily.toLowerCase().replace(/['"]/g, '').split(',')[0].trim();
257
- return SINGLE_WEIGHT_FONTS.includes(normalizedFont);
258
- };
259
-
260
- // Unit conversion helpers
261
- const pxToInch = (px) => px / PX_PER_IN;
262
- const pxToPoints = (pxStr) => parseFloat(pxStr) * PT_PER_PX;
263
- const rgbToHex = (rgbStr) => {
264
- // Handle transparent backgrounds by defaulting to white
265
- if (rgbStr === 'rgba(0, 0, 0, 0)' || rgbStr === 'transparent') return 'FFFFFF';
266
-
267
- const match = rgbStr.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)/);
268
- if (!match) return 'FFFFFF';
269
- return match.slice(1).map(n => parseInt(n).toString(16).padStart(2, '0')).join('');
270
- };
271
-
272
- const extractAlpha = (rgbStr) => {
273
- const match = rgbStr.match(/rgba\((\d+),\s*(\d+),\s*(\d+),\s*([\d.]+)\)/);
274
- if (!match || !match[4]) return null;
275
- const alpha = parseFloat(match[4]);
276
- return Math.round((1 - alpha) * 100);
277
- };
278
-
279
- const applyTextTransform = (text, textTransform) => {
280
- if (textTransform === 'uppercase') return text.toUpperCase();
281
- if (textTransform === 'lowercase') return text.toLowerCase();
282
- if (textTransform === 'capitalize') {
283
- return text.replace(/\b\w/g, c => c.toUpperCase());
284
- }
285
- return text;
286
- };
287
-
288
- // Extract rotation angle from CSS transform and writing-mode
289
- const getRotation = (transform, writingMode) => {
290
- let angle = 0;
291
-
292
- // Handle writing-mode first
293
- // PowerPoint: 90° = text rotated 90° clockwise (reads top to bottom, letters upright)
294
- // PowerPoint: 270° = text rotated 270° clockwise (reads bottom to top, letters upright)
295
- if (writingMode === 'vertical-rl') {
296
- // vertical-rl alone = text reads top to bottom = 90° in PowerPoint
297
- angle = 90;
298
- } else if (writingMode === 'vertical-lr') {
299
- // vertical-lr alone = text reads bottom to top = 270° in PowerPoint
300
- angle = 270;
301
- }
302
-
303
- // Then add any transform rotation
304
- if (transform && transform !== 'none') {
305
- // Try to match rotate() function
306
- const rotateMatch = transform.match(/rotate\((-?\d+(?:\.\d+)?)deg\)/);
307
- if (rotateMatch) {
308
- angle += parseFloat(rotateMatch[1]);
309
- } else {
310
- // Browser may compute as matrix - extract rotation from matrix
311
- const matrixMatch = transform.match(/matrix\(([^)]+)\)/);
312
- if (matrixMatch) {
313
- const values = matrixMatch[1].split(',').map(parseFloat);
314
- // matrix(a, b, c, d, e, f) where rotation = atan2(b, a)
315
- const matrixAngle = Math.atan2(values[1], values[0]) * (180 / Math.PI);
316
- angle += Math.round(matrixAngle);
317
- }
318
- }
319
- }
320
-
321
- // Normalize to 0-359 range
322
- angle = angle % 360;
323
- if (angle < 0) angle += 360;
324
-
325
- return angle === 0 ? null : angle;
326
- };
327
-
328
- // Get position/dimensions accounting for rotation
329
- const getPositionAndSize = (el, rect, rotation) => {
330
- if (rotation === null) {
331
- return { x: rect.left, y: rect.top, w: rect.width, h: rect.height };
332
- }
333
-
334
- // For 90° or 270° rotations, swap width and height
335
- // because PowerPoint applies rotation to the original (unrotated) box
336
- const isVertical = rotation === 90 || rotation === 270;
337
-
338
- if (isVertical) {
339
- // The browser shows us the rotated dimensions (tall box for vertical text)
340
- // But PowerPoint needs the pre-rotation dimensions (wide box that will be rotated)
341
- // So we swap: browser's height becomes PPT's width, browser's width becomes PPT's height
342
- const centerX = rect.left + rect.width / 2;
343
- const centerY = rect.top + rect.height / 2;
344
-
345
- return {
346
- x: centerX - rect.height / 2,
347
- y: centerY - rect.width / 2,
348
- w: rect.height,
349
- h: rect.width
350
- };
351
- }
352
-
353
- // For other rotations, use element's offset dimensions
354
- const centerX = rect.left + rect.width / 2;
355
- const centerY = rect.top + rect.height / 2;
356
- return {
357
- x: centerX - el.offsetWidth / 2,
358
- y: centerY - el.offsetHeight / 2,
359
- w: el.offsetWidth,
360
- h: el.offsetHeight
361
- };
362
- };
363
-
364
- // Parse CSS box-shadow into PptxGenJS shadow properties
365
- const parseBoxShadow = (boxShadow) => {
366
- if (!boxShadow || boxShadow === 'none') return null;
367
-
368
- // Browser computed style format: "rgba(0, 0, 0, 0.3) 2px 2px 8px 0px [inset]"
369
- // CSS format: "[inset] 2px 2px 8px 0px rgba(0, 0, 0, 0.3)"
370
-
371
- const insetMatch = boxShadow.match(/inset/);
372
-
373
- // IMPORTANT: PptxGenJS/PowerPoint doesn't properly support inset shadows
374
- // Only process outer shadows to avoid file corruption
375
- if (insetMatch) return null;
376
-
377
- // Extract color first (rgba or rgb at start)
378
- const colorMatch = boxShadow.match(/rgba?\([^)]+\)/);
379
-
380
- // Extract numeric values (handles both px and pt units)
381
- const parts = boxShadow.match(/([-\d.]+)(px|pt)/g);
382
-
383
- if (!parts || parts.length < 2) return null;
384
-
385
- const offsetX = parseFloat(parts[0]);
386
- const offsetY = parseFloat(parts[1]);
387
- const blur = parts.length > 2 ? parseFloat(parts[2]) : 0;
388
-
389
- // Calculate angle from offsets (in degrees, 0 = right, 90 = down)
390
- let angle = 0;
391
- if (offsetX !== 0 || offsetY !== 0) {
392
- angle = Math.atan2(offsetY, offsetX) * (180 / Math.PI);
393
- if (angle < 0) angle += 360;
394
- }
395
-
396
- // Calculate offset distance (hypotenuse)
397
- const offset = Math.sqrt(offsetX * offsetX + offsetY * offsetY) * PT_PER_PX;
398
-
399
- // Extract opacity from rgba
400
- let opacity = 0.5;
401
- if (colorMatch) {
402
- const opacityMatch = colorMatch[0].match(/[\d.]+\)$/);
403
- if (opacityMatch) {
404
- opacity = parseFloat(opacityMatch[0].replace(')', ''));
405
- }
406
- }
407
-
408
- return {
409
- type: 'outer',
410
- angle: Math.round(angle),
411
- blur: blur * 0.75, // Convert to points
412
- color: colorMatch ? rgbToHex(colorMatch[0]) : '000000',
413
- offset: offset,
414
- opacity
415
- };
416
- };
417
-
418
- // Parse inline formatting tags (<b>, <i>, <u>, <strong>, <em>, <span>) into text runs
419
- const parseInlineFormatting = (element, baseOptions = {}, runs = [], baseTextTransform = (x) => x) => {
420
- let prevNodeIsText = false;
421
-
422
- element.childNodes.forEach((node) => {
423
- let textTransform = baseTextTransform;
424
-
425
- const isText = node.nodeType === Node.TEXT_NODE || node.tagName === 'BR';
426
- if (isText) {
427
- const text = node.tagName === 'BR' ? '\n' : textTransform(node.textContent.replace(/\s+/g, ' '));
428
- const prevRun = runs[runs.length - 1];
429
- if (prevNodeIsText && prevRun) {
430
- prevRun.text += text;
431
- } else {
432
- runs.push({ text, options: { ...baseOptions } });
433
- }
434
-
435
- } else if (node.nodeType === Node.ELEMENT_NODE && node.textContent.trim()) {
436
- const options = { ...baseOptions };
437
- const computed = window.getComputedStyle(node);
438
-
439
- // Handle inline elements with computed styles
440
- if (node.tagName === 'SPAN' || node.tagName === 'B' || node.tagName === 'STRONG' || node.tagName === 'I' || node.tagName === 'EM' || node.tagName === 'U') {
441
- const isBold = computed.fontWeight === 'bold' || parseInt(computed.fontWeight) >= 600;
442
- if (isBold && !shouldSkipBold(computed.fontFamily)) options.bold = true;
443
- if (computed.fontStyle === 'italic') options.italic = true;
444
- if (computed.textDecoration && computed.textDecoration.includes('underline')) options.underline = true;
445
- if (computed.color && computed.color !== 'rgb(0, 0, 0)') {
446
- options.color = rgbToHex(computed.color);
447
- const transparency = extractAlpha(computed.color);
448
- if (transparency !== null) options.transparency = transparency;
449
- }
450
- if (computed.fontSize) options.fontSize = pxToPoints(computed.fontSize);
451
-
452
- // Apply text-transform on the span element itself
453
- if (computed.textTransform && computed.textTransform !== 'none') {
454
- const transformStr = computed.textTransform;
455
- textTransform = (text) => applyTextTransform(text, transformStr);
456
- }
457
-
458
- // Validate: Check for margins on inline elements
459
- if (computed.marginLeft && parseFloat(computed.marginLeft) > 0) {
460
- errors.push(`Inline element <${node.tagName.toLowerCase()}> has margin-left which is not supported in PowerPoint. Remove margin from inline elements.`);
461
- }
462
- if (computed.marginRight && parseFloat(computed.marginRight) > 0) {
463
- errors.push(`Inline element <${node.tagName.toLowerCase()}> has margin-right which is not supported in PowerPoint. Remove margin from inline elements.`);
464
- }
465
- if (computed.marginTop && parseFloat(computed.marginTop) > 0) {
466
- errors.push(`Inline element <${node.tagName.toLowerCase()}> has margin-top which is not supported in PowerPoint. Remove margin from inline elements.`);
467
- }
468
- if (computed.marginBottom && parseFloat(computed.marginBottom) > 0) {
469
- errors.push(`Inline element <${node.tagName.toLowerCase()}> has margin-bottom which is not supported in PowerPoint. Remove margin from inline elements.`);
470
- }
471
-
472
- // Recursively process the child node. This will flatten nested spans into multiple runs.
473
- parseInlineFormatting(node, options, runs, textTransform);
474
- }
475
- }
476
-
477
- prevNodeIsText = isText;
478
- });
479
-
480
- // Trim leading space from first run and trailing space from last run
481
- if (runs.length > 0) {
482
- runs[0].text = runs[0].text.replace(/^\s+/, '');
483
- runs[runs.length - 1].text = runs[runs.length - 1].text.replace(/\s+$/, '');
484
- }
485
-
486
- return runs.filter(r => r.text.length > 0);
487
- };
488
-
489
- // Extract background from body (image or color)
490
- const body = document.body;
491
- const bodyStyle = window.getComputedStyle(body);
492
- const bgImage = bodyStyle.backgroundImage;
493
- const bgColor = bodyStyle.backgroundColor;
494
-
495
- // Collect validation errors
496
- const errors = [];
497
-
498
- // Validate: Check for CSS gradients
499
- if (bgImage && (bgImage.includes('linear-gradient') || bgImage.includes('radial-gradient'))) {
500
- errors.push(
501
- 'CSS gradients are not supported. Use Sharp to rasterize gradients as PNG images first, ' +
502
- 'then reference with background-image: url(\'gradient.png\')'
503
- );
504
- }
505
-
506
- let background;
507
- if (bgImage && bgImage !== 'none') {
508
- // Extract URL from url("...") or url(...)
509
- const urlMatch = bgImage.match(/url\(["']?([^"')]+)["']?\)/);
510
- if (urlMatch) {
511
- background = {
512
- type: 'image',
513
- path: urlMatch[1]
514
- };
515
- } else {
516
- background = {
517
- type: 'color',
518
- value: rgbToHex(bgColor)
519
- };
520
- }
521
- } else {
522
- background = {
523
- type: 'color',
524
- value: rgbToHex(bgColor)
525
- };
526
- }
527
-
528
- // Process all elements
529
- const elements = [];
530
- const placeholders = [];
531
- const textTags = ['P', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'UL', 'OL', 'LI'];
532
- const processed = new Set();
533
-
534
- document.querySelectorAll('*').forEach((el) => {
535
- if (processed.has(el)) return;
536
-
537
- // Validate text elements don't have backgrounds, borders, or shadows
538
- if (textTags.includes(el.tagName)) {
539
- const computed = window.getComputedStyle(el);
540
- const hasBg = computed.backgroundColor && computed.backgroundColor !== 'rgba(0, 0, 0, 0)';
541
- const hasBorder = (computed.borderWidth && parseFloat(computed.borderWidth) > 0) ||
542
- (computed.borderTopWidth && parseFloat(computed.borderTopWidth) > 0) ||
543
- (computed.borderRightWidth && parseFloat(computed.borderRightWidth) > 0) ||
544
- (computed.borderBottomWidth && parseFloat(computed.borderBottomWidth) > 0) ||
545
- (computed.borderLeftWidth && parseFloat(computed.borderLeftWidth) > 0);
546
- const hasShadow = computed.boxShadow && computed.boxShadow !== 'none';
547
-
548
- if (hasBg || hasBorder || hasShadow) {
549
- errors.push(
550
- `Text element <${el.tagName.toLowerCase()}> has ${hasBg ? 'background' : hasBorder ? 'border' : 'shadow'}. ` +
551
- 'Backgrounds, borders, and shadows are only supported on <div> elements, not text elements.'
552
- );
553
- return;
554
- }
555
- }
556
-
557
- // Extract placeholder elements (for charts, etc.)
558
- if (el.className && el.className.includes('placeholder')) {
559
- const rect = el.getBoundingClientRect();
560
- if (rect.width === 0 || rect.height === 0) {
561
- errors.push(
562
- `Placeholder "${el.id || 'unnamed'}" has ${rect.width === 0 ? 'width: 0' : 'height: 0'}. Check the layout CSS.`
563
- );
564
- } else {
565
- placeholders.push({
566
- id: el.id || `placeholder-${placeholders.length}`,
567
- x: pxToInch(rect.left),
568
- y: pxToInch(rect.top),
569
- w: pxToInch(rect.width),
570
- h: pxToInch(rect.height)
571
- });
572
- }
573
- processed.add(el);
574
- return;
575
- }
576
-
577
- // Extract images
578
- if (el.tagName === 'IMG') {
579
- const rect = el.getBoundingClientRect();
580
- if (rect.width > 0 && rect.height > 0) {
581
- elements.push({
582
- type: 'image',
583
- src: el.src,
584
- position: {
585
- x: pxToInch(rect.left),
586
- y: pxToInch(rect.top),
587
- w: pxToInch(rect.width),
588
- h: pxToInch(rect.height)
589
- }
590
- });
591
- processed.add(el);
592
- return;
593
- }
594
- }
595
-
596
- // Extract DIVs with backgrounds/borders as shapes
597
- const isContainer = el.tagName === 'DIV' && !textTags.includes(el.tagName);
598
- if (isContainer) {
599
- const computed = window.getComputedStyle(el);
600
- const hasBg = computed.backgroundColor && computed.backgroundColor !== 'rgba(0, 0, 0, 0)';
601
-
602
- // Validate: Check for unwrapped text content in DIV
603
- for (const node of el.childNodes) {
604
- if (node.nodeType === Node.TEXT_NODE) {
605
- const text = node.textContent.trim();
606
- if (text) {
607
- errors.push(
608
- `DIV element contains unwrapped text "${text.substring(0, 50)}${text.length > 50 ? '...' : ''}". ` +
609
- 'All text must be wrapped in <p>, <h1>-<h6>, <ul>, or <ol> tags to appear in PowerPoint.'
610
- );
611
- }
612
- }
613
- }
614
-
615
- // Check for background images on shapes
616
- const bgImage = computed.backgroundImage;
617
- if (bgImage && bgImage !== 'none') {
618
- errors.push(
619
- 'Background images on DIV elements are not supported. ' +
620
- 'Use solid colors or borders for shapes, or use slide.addImage() in PptxGenJS to layer images.'
621
- );
622
- return;
623
- }
624
-
625
- // Check for borders - both uniform and partial
626
- const borderTop = computed.borderTopWidth;
627
- const borderRight = computed.borderRightWidth;
628
- const borderBottom = computed.borderBottomWidth;
629
- const borderLeft = computed.borderLeftWidth;
630
- const borders = [borderTop, borderRight, borderBottom, borderLeft].map(b => parseFloat(b) || 0);
631
- const hasBorder = borders.some(b => b > 0);
632
- const hasUniformBorder = hasBorder && borders.every(b => b === borders[0]);
633
- const borderLines = [];
634
-
635
- if (hasBorder && !hasUniformBorder) {
636
- const rect = el.getBoundingClientRect();
637
- const x = pxToInch(rect.left);
638
- const y = pxToInch(rect.top);
639
- const w = pxToInch(rect.width);
640
- const h = pxToInch(rect.height);
641
-
642
- // Collect lines to add after shape (inset by half the line width to center on edge)
643
- if (parseFloat(borderTop) > 0) {
644
- const widthPt = pxToPoints(borderTop);
645
- const inset = (widthPt / 72) / 2; // Convert points to inches, then half
646
- borderLines.push({
647
- type: 'line',
648
- x1: x, y1: y + inset, x2: x + w, y2: y + inset,
649
- width: widthPt,
650
- color: rgbToHex(computed.borderTopColor)
651
- });
652
- }
653
- if (parseFloat(borderRight) > 0) {
654
- const widthPt = pxToPoints(borderRight);
655
- const inset = (widthPt / 72) / 2;
656
- borderLines.push({
657
- type: 'line',
658
- x1: x + w - inset, y1: y, x2: x + w - inset, y2: y + h,
659
- width: widthPt,
660
- color: rgbToHex(computed.borderRightColor)
661
- });
662
- }
663
- if (parseFloat(borderBottom) > 0) {
664
- const widthPt = pxToPoints(borderBottom);
665
- const inset = (widthPt / 72) / 2;
666
- borderLines.push({
667
- type: 'line',
668
- x1: x, y1: y + h - inset, x2: x + w, y2: y + h - inset,
669
- width: widthPt,
670
- color: rgbToHex(computed.borderBottomColor)
671
- });
672
- }
673
- if (parseFloat(borderLeft) > 0) {
674
- const widthPt = pxToPoints(borderLeft);
675
- const inset = (widthPt / 72) / 2;
676
- borderLines.push({
677
- type: 'line',
678
- x1: x + inset, y1: y, x2: x + inset, y2: y + h,
679
- width: widthPt,
680
- color: rgbToHex(computed.borderLeftColor)
681
- });
682
- }
683
- }
684
-
685
- if (hasBg || hasBorder) {
686
- const rect = el.getBoundingClientRect();
687
- if (rect.width > 0 && rect.height > 0) {
688
- const shadow = parseBoxShadow(computed.boxShadow);
689
-
690
- // Only add shape if there's background or uniform border
691
- if (hasBg || hasUniformBorder) {
692
- elements.push({
693
- type: 'shape',
694
- text: '', // Shape only - child text elements render on top
695
- position: {
696
- x: pxToInch(rect.left),
697
- y: pxToInch(rect.top),
698
- w: pxToInch(rect.width),
699
- h: pxToInch(rect.height)
700
- },
701
- shape: {
702
- fill: hasBg ? rgbToHex(computed.backgroundColor) : null,
703
- transparency: hasBg ? extractAlpha(computed.backgroundColor) : null,
704
- line: hasUniformBorder ? {
705
- color: rgbToHex(computed.borderColor),
706
- width: pxToPoints(computed.borderWidth)
707
- } : null,
708
- // Convert border-radius to rectRadius (in inches)
709
- // % values: 50%+ = circle (1), <50% = percentage of min dimension
710
- // pt values: divide by 72 (72pt = 1 inch)
711
- // px values: divide by 96 (96px = 1 inch)
712
- rectRadius: (() => {
713
- const radius = computed.borderRadius;
714
- const radiusValue = parseFloat(radius);
715
- if (radiusValue === 0) return 0;
716
-
717
- if (radius.includes('%')) {
718
- if (radiusValue >= 50) return 1;
719
- // Calculate percentage of smaller dimension
720
- const minDim = Math.min(rect.width, rect.height);
721
- return (radiusValue / 100) * pxToInch(minDim);
722
- }
723
-
724
- if (radius.includes('pt')) return radiusValue / 72;
725
- return radiusValue / PX_PER_IN;
726
- })(),
727
- shadow: shadow
728
- }
729
- });
730
- }
731
-
732
- // Add partial border lines
733
- elements.push(...borderLines);
734
-
735
- processed.add(el);
736
- return;
737
- }
738
- }
739
- }
740
-
741
- // Extract bullet lists as single text block
742
- if (el.tagName === 'UL' || el.tagName === 'OL') {
743
- const rect = el.getBoundingClientRect();
744
- if (rect.width === 0 || rect.height === 0) return;
745
-
746
- const liElements = Array.from(el.querySelectorAll('li'));
747
- const items = [];
748
- const ulComputed = window.getComputedStyle(el);
749
- const ulPaddingLeftPt = pxToPoints(ulComputed.paddingLeft);
750
-
751
- // Split: margin-left for bullet position, indent for text position
752
- // margin-left + indent = ul padding-left
753
- const marginLeft = ulPaddingLeftPt * 0.5;
754
- const textIndent = ulPaddingLeftPt * 0.5;
755
-
756
- liElements.forEach((li, idx) => {
757
- const isLast = idx === liElements.length - 1;
758
- const runs = parseInlineFormatting(li, { breakLine: false });
759
- // Clean manual bullets from first run
760
- if (runs.length > 0) {
761
- runs[0].text = runs[0].text.replace(/^[•\-\*▪▸]\s*/, '');
762
- runs[0].options.bullet = { indent: textIndent };
763
- }
764
- // Set breakLine on last run
765
- if (runs.length > 0 && !isLast) {
766
- runs[runs.length - 1].options.breakLine = true;
767
- }
768
- items.push(...runs);
769
- });
770
-
771
- const computed = window.getComputedStyle(liElements[0] || el);
772
-
773
- elements.push({
774
- type: 'list',
775
- items: items,
776
- position: {
777
- x: pxToInch(rect.left),
778
- y: pxToInch(rect.top),
779
- w: pxToInch(rect.width),
780
- h: pxToInch(rect.height)
781
- },
782
- style: {
783
- fontSize: pxToPoints(computed.fontSize),
784
- fontFace: computed.fontFamily.split(',')[0].replace(/['"]/g, '').trim(),
785
- color: rgbToHex(computed.color),
786
- transparency: extractAlpha(computed.color),
787
- align: computed.textAlign === 'start' ? 'left' : computed.textAlign,
788
- lineSpacing: computed.lineHeight && computed.lineHeight !== 'normal' ? pxToPoints(computed.lineHeight) : null,
789
- paraSpaceBefore: 0,
790
- paraSpaceAfter: pxToPoints(computed.marginBottom),
791
- // PptxGenJS margin array is [left, right, bottom, top]
792
- margin: [marginLeft, 0, 0, 0]
793
- }
794
- });
795
-
796
- liElements.forEach(li => processed.add(li));
797
- processed.add(el);
798
- return;
799
- }
800
-
801
- // Extract text elements (P, H1, H2, etc.)
802
- if (!textTags.includes(el.tagName)) return;
803
-
804
- const rect = el.getBoundingClientRect();
805
- const text = el.textContent.trim();
806
- if (rect.width === 0 || rect.height === 0 || !text) return;
807
-
808
- // Validate: Check for manual bullet symbols in text elements (not in lists)
809
- if (el.tagName !== 'LI' && /^[•\-\*▪▸○●◆◇■□]\s/.test(text.trimStart())) {
810
- errors.push(
811
- `Text element <${el.tagName.toLowerCase()}> starts with bullet symbol "${text.substring(0, 20)}...". ` +
812
- 'Use <ul> or <ol> lists instead of manual bullet symbols.'
813
- );
814
- return;
815
- }
816
-
817
- const computed = window.getComputedStyle(el);
818
- const rotation = getRotation(computed.transform, computed.writingMode);
819
- const { x, y, w, h } = getPositionAndSize(el, rect, rotation);
820
-
821
- const baseStyle = {
822
- fontSize: pxToPoints(computed.fontSize),
823
- fontFace: computed.fontFamily.split(',')[0].replace(/['"]/g, '').trim(),
824
- color: rgbToHex(computed.color),
825
- align: computed.textAlign === 'start' ? 'left' : computed.textAlign,
826
- lineSpacing: pxToPoints(computed.lineHeight),
827
- paraSpaceBefore: pxToPoints(computed.marginTop),
828
- paraSpaceAfter: pxToPoints(computed.marginBottom),
829
- // PptxGenJS margin array is [left, right, bottom, top] (not [top, right, bottom, left] as documented)
830
- margin: [
831
- pxToPoints(computed.paddingLeft),
832
- pxToPoints(computed.paddingRight),
833
- pxToPoints(computed.paddingBottom),
834
- pxToPoints(computed.paddingTop)
835
- ]
836
- };
837
-
838
- const transparency = extractAlpha(computed.color);
839
- if (transparency !== null) baseStyle.transparency = transparency;
840
-
841
- if (rotation !== null) baseStyle.rotate = rotation;
842
-
843
- const hasFormatting = el.querySelector('b, i, u, strong, em, span, br');
844
-
845
- if (hasFormatting) {
846
- // Text with inline formatting
847
- const transformStr = computed.textTransform;
848
- const runs = parseInlineFormatting(el, {}, [], (str) => applyTextTransform(str, transformStr));
849
-
850
- // Adjust lineSpacing based on largest fontSize in runs
851
- const adjustedStyle = { ...baseStyle };
852
- if (adjustedStyle.lineSpacing) {
853
- const maxFontSize = Math.max(
854
- adjustedStyle.fontSize,
855
- ...runs.map(r => r.options?.fontSize || 0)
856
- );
857
- if (maxFontSize > adjustedStyle.fontSize) {
858
- const lineHeightMultiplier = adjustedStyle.lineSpacing / adjustedStyle.fontSize;
859
- adjustedStyle.lineSpacing = maxFontSize * lineHeightMultiplier;
860
- }
861
- }
862
-
863
- elements.push({
864
- type: el.tagName.toLowerCase(),
865
- text: runs,
866
- position: { x: pxToInch(x), y: pxToInch(y), w: pxToInch(w), h: pxToInch(h) },
867
- style: adjustedStyle
868
- });
869
- } else {
870
- // Plain text - inherit CSS formatting
871
- const textTransform = computed.textTransform;
872
- const transformedText = applyTextTransform(text, textTransform);
873
-
874
- const isBold = computed.fontWeight === 'bold' || parseInt(computed.fontWeight) >= 600;
875
-
876
- elements.push({
877
- type: el.tagName.toLowerCase(),
878
- text: transformedText,
879
- position: { x: pxToInch(x), y: pxToInch(y), w: pxToInch(w), h: pxToInch(h) },
880
- style: {
881
- ...baseStyle,
882
- bold: isBold && !shouldSkipBold(computed.fontFamily),
883
- italic: computed.fontStyle === 'italic',
884
- underline: computed.textDecoration.includes('underline')
885
- }
886
- });
887
- }
888
-
889
- processed.add(el);
890
- });
891
-
892
- return { background, elements, placeholders, errors };
893
- });
894
- }
895
-
896
- async function html2pptx(htmlFile, pres, options = {}) {
897
- const {
898
- tmpDir = process.env.TMPDIR || '/tmp',
899
- slide = null
900
- } = options;
901
-
902
- try {
903
- // Use Chrome on macOS, default Chromium on Unix
904
- const launchOptions = { env: { TMPDIR: tmpDir } };
905
- if (process.platform === 'darwin') {
906
- launchOptions.channel = 'chrome';
907
- }
908
-
909
- const browser = await chromium.launch(launchOptions);
910
-
911
- let bodyDimensions;
912
- let slideData;
913
-
914
- const filePath = path.isAbsolute(htmlFile) ? htmlFile : path.join(process.cwd(), htmlFile);
915
- const validationErrors = [];
916
-
917
- try {
918
- const page = await browser.newPage();
919
- page.on('console', (msg) => {
920
- // Log the message text to your test runner's console
921
- console.log(`Browser console: ${msg.text()}`);
922
- });
923
-
924
- await page.goto(`file://${filePath}`);
925
-
926
- bodyDimensions = await getBodyDimensions(page);
927
-
928
- await page.setViewportSize({
929
- width: Math.round(bodyDimensions.width),
930
- height: Math.round(bodyDimensions.height)
931
- });
932
-
933
- slideData = await extractSlideData(page);
934
- } finally {
935
- await browser.close();
936
- }
937
-
938
- // Collect all validation errors
939
- if (bodyDimensions.errors && bodyDimensions.errors.length > 0) {
940
- validationErrors.push(...bodyDimensions.errors);
941
- }
942
-
943
- const dimensionErrors = validateDimensions(bodyDimensions, pres);
944
- if (dimensionErrors.length > 0) {
945
- validationErrors.push(...dimensionErrors);
946
- }
947
-
948
- const textBoxPositionErrors = validateTextBoxPosition(slideData, bodyDimensions);
949
- if (textBoxPositionErrors.length > 0) {
950
- validationErrors.push(...textBoxPositionErrors);
951
- }
952
-
953
- if (slideData.errors && slideData.errors.length > 0) {
954
- validationErrors.push(...slideData.errors);
955
- }
956
-
957
- // Throw all errors at once if any exist
958
- if (validationErrors.length > 0) {
959
- const errorMessage = validationErrors.length === 1
960
- ? validationErrors[0]
961
- : `Multiple validation errors found:\n${validationErrors.map((e, i) => ` ${i + 1}. ${e}`).join('\n')}`;
962
- throw new Error(errorMessage);
963
- }
964
-
965
- const targetSlide = slide || pres.addSlide();
966
-
967
- await addBackground(slideData, targetSlide, tmpDir);
968
- addElements(slideData, targetSlide, pres);
969
-
970
- return { slide: targetSlide, placeholders: slideData.placeholders };
971
- } catch (error) {
972
- if (!error.message.startsWith(htmlFile)) {
973
- throw new Error(`${htmlFile}: ${error.message}`);
974
- }
975
- throw error;
976
- }
977
- }
978
-
979
- module.exports = html2pptx;