bps-kit 1.0.1 → 1.0.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 (368) hide show
  1. package/package.json +1 -1
  2. package/templates/.agents/agents/backend-specialist.md +263 -0
  3. package/templates/.agents/agents/code-archaeologist.md +106 -0
  4. package/templates/.agents/agents/database-architect.md +226 -0
  5. package/templates/.agents/agents/debugger.md +225 -0
  6. package/templates/.agents/agents/devops-engineer.md +242 -0
  7. package/templates/.agents/agents/documentation-writer.md +104 -0
  8. package/templates/.agents/agents/explorer-agent.md +73 -0
  9. package/templates/.agents/agents/frontend-specialist.md +593 -0
  10. package/templates/.agents/agents/game-developer.md +162 -0
  11. package/templates/.agents/agents/mobile-developer.md +377 -0
  12. package/templates/.agents/agents/orchestrator.md +416 -0
  13. package/templates/.agents/agents/penetration-tester.md +188 -0
  14. package/templates/.agents/agents/performance-optimizer.md +187 -0
  15. package/templates/.agents/agents/product-manager.md +112 -0
  16. package/templates/.agents/agents/product-owner.md +95 -0
  17. package/templates/.agents/agents/project-planner.md +406 -0
  18. package/templates/.agents/agents/qa-automation-engineer.md +103 -0
  19. package/templates/.agents/agents/security-auditor.md +170 -0
  20. package/templates/.agents/agents/seo-specialist.md +111 -0
  21. package/templates/.agents/agents/test-engineer.md +158 -0
  22. package/templates/.agents/rules/GEMINI.md +219 -0
  23. package/templates/.agents/scripts/auto_preview.py +148 -0
  24. package/templates/.agents/scripts/checklist.py +217 -0
  25. package/templates/.agents/scripts/session_manager.py +120 -0
  26. package/templates/.agents/scripts/verify_all.py +327 -0
  27. package/templates/.agents/workflows/brainstorm.md +113 -0
  28. package/templates/.agents/workflows/create.md +59 -0
  29. package/templates/.agents/workflows/debug.md +103 -0
  30. package/templates/.agents/workflows/deploy.md +176 -0
  31. package/templates/.agents/workflows/enhance.md +63 -0
  32. package/templates/.agents/workflows/orchestrate.md +237 -0
  33. package/templates/.agents/workflows/plan.md +89 -0
  34. package/templates/.agents/workflows/preview.md +81 -0
  35. package/templates/.agents/workflows/setup-brain.md +39 -0
  36. package/templates/.agents/workflows/status.md +86 -0
  37. package/templates/.agents/workflows/test.md +144 -0
  38. package/templates/.agents/workflows/ui-ux-pro-max.md +296 -0
  39. package/templates/skills_normal/api-patterns/scripts/api_validator.py +211 -0
  40. package/templates/skills_normal/database-design/scripts/schema_validator.py +172 -0
  41. package/templates/skills_normal/frontend-design/scripts/accessibility_checker.py +183 -0
  42. package/templates/skills_normal/frontend-design/scripts/ux_audit.py +722 -0
  43. package/templates/skills_normal/git-pushing/scripts/smart_commit.sh +19 -0
  44. package/templates/skills_normal/lint-and-validate/scripts/lint_runner.py +184 -0
  45. package/templates/skills_normal/lint-and-validate/scripts/type_coverage.py +173 -0
  46. package/templates/skills_normal/performance-profiling/scripts/lighthouse_audit.py +76 -0
  47. package/templates/skills_normal/senior-fullstack/scripts/code_quality_analyzer.py +114 -0
  48. package/templates/skills_normal/senior-fullstack/scripts/fullstack_scaffolder.py +114 -0
  49. package/templates/skills_normal/senior-fullstack/scripts/project_scaffolder.py +114 -0
  50. package/templates/skills_normal/seo-fundamentals/scripts/seo_checker.py +219 -0
  51. package/templates/skills_normal/testing-patterns/scripts/test_runner.py +219 -0
  52. package/templates/skills_normal/vulnerability-scanner/scripts/security_scan.py +458 -0
  53. package/templates/vault/007/scripts/config.py +472 -0
  54. package/templates/vault/007/scripts/full_audit.py +1306 -0
  55. package/templates/vault/007/scripts/quick_scan.py +481 -0
  56. package/templates/vault/007/scripts/requirements.txt +26 -0
  57. package/templates/vault/007/scripts/scanners/__init__.py +0 -0
  58. package/templates/vault/007/scripts/scanners/dependency_scanner.py +1305 -0
  59. package/templates/vault/007/scripts/scanners/injection_scanner.py +1104 -0
  60. package/templates/vault/007/scripts/scanners/secrets_scanner.py +1008 -0
  61. package/templates/vault/007/scripts/score_calculator.py +693 -0
  62. package/templates/vault/agent-orchestrator/scripts/match_skills.py +329 -0
  63. package/templates/vault/agent-orchestrator/scripts/orchestrate.py +304 -0
  64. package/templates/vault/agent-orchestrator/scripts/requirements.txt +1 -0
  65. package/templates/vault/agent-orchestrator/scripts/scan_registry.py +508 -0
  66. package/templates/vault/ai-studio-image/scripts/config.py +613 -0
  67. package/templates/vault/ai-studio-image/scripts/generate.py +630 -0
  68. package/templates/vault/ai-studio-image/scripts/prompt_engine.py +424 -0
  69. package/templates/vault/ai-studio-image/scripts/requirements.txt +4 -0
  70. package/templates/vault/ai-studio-image/scripts/templates.py +349 -0
  71. package/templates/vault/android_ui_verification/scripts/verify_ui.sh +32 -0
  72. package/templates/vault/apify-audience-analysis/reference/scripts/run_actor.js +363 -0
  73. package/templates/vault/apify-brand-reputation-monitoring/reference/scripts/run_actor.js +363 -0
  74. package/templates/vault/apify-competitor-intelligence/reference/scripts/run_actor.js +363 -0
  75. package/templates/vault/apify-content-analytics/reference/scripts/run_actor.js +363 -0
  76. package/templates/vault/apify-ecommerce/reference/scripts/package.json +3 -0
  77. package/templates/vault/apify-ecommerce/reference/scripts/run_actor.js +369 -0
  78. package/templates/vault/apify-influencer-discovery/reference/scripts/run_actor.js +363 -0
  79. package/templates/vault/apify-lead-generation/reference/scripts/run_actor.js +363 -0
  80. package/templates/vault/apify-market-research/reference/scripts/run_actor.js +363 -0
  81. package/templates/vault/apify-trend-analysis/reference/scripts/run_actor.js +363 -0
  82. package/templates/vault/apify-ultimate-scraper/reference/scripts/run_actor.js +363 -0
  83. package/templates/vault/audio-transcriber/scripts/install-requirements.sh +190 -0
  84. package/templates/vault/audio-transcriber/scripts/transcribe.py +486 -0
  85. package/templates/vault/claude-monitor/scripts/api_bench.py +240 -0
  86. package/templates/vault/claude-monitor/scripts/config.py +69 -0
  87. package/templates/vault/claude-monitor/scripts/health_check.py +362 -0
  88. package/templates/vault/claude-monitor/scripts/monitor.py +296 -0
  89. package/templates/vault/content-creator/scripts/brand_voice_analyzer.py +185 -0
  90. package/templates/vault/content-creator/scripts/seo_optimizer.py +419 -0
  91. package/templates/vault/context-agent/scripts/active_context.py +227 -0
  92. package/templates/vault/context-agent/scripts/compressor.py +149 -0
  93. package/templates/vault/context-agent/scripts/config.py +69 -0
  94. package/templates/vault/context-agent/scripts/context_loader.py +155 -0
  95. package/templates/vault/context-agent/scripts/context_manager.py +302 -0
  96. package/templates/vault/context-agent/scripts/models.py +103 -0
  97. package/templates/vault/context-agent/scripts/project_registry.py +132 -0
  98. package/templates/vault/context-agent/scripts/requirements.txt +6 -0
  99. package/templates/vault/context-agent/scripts/search.py +115 -0
  100. package/templates/vault/context-agent/scripts/session_parser.py +206 -0
  101. package/templates/vault/context-agent/scripts/session_summary.py +319 -0
  102. package/templates/vault/context-guardian/scripts/context_snapshot.py +229 -0
  103. package/templates/vault/docx/ooxml/scripts/pack.py +159 -0
  104. package/templates/vault/docx/ooxml/scripts/unpack.py +29 -0
  105. package/templates/vault/docx/ooxml/scripts/validate.py +69 -0
  106. package/templates/vault/docx/ooxml/scripts/validation/__init__.py +15 -0
  107. package/templates/vault/docx/ooxml/scripts/validation/base.py +951 -0
  108. package/templates/vault/docx/ooxml/scripts/validation/docx.py +274 -0
  109. package/templates/vault/docx/ooxml/scripts/validation/pptx.py +315 -0
  110. package/templates/vault/docx/ooxml/scripts/validation/redlining.py +279 -0
  111. package/templates/vault/docx/scripts/__init__.py +1 -0
  112. package/templates/vault/docx/scripts/document.py +1276 -0
  113. package/templates/vault/docx/scripts/templates/comments.xml +3 -0
  114. package/templates/vault/docx/scripts/templates/commentsExtended.xml +3 -0
  115. package/templates/vault/docx/scripts/templates/commentsExtensible.xml +3 -0
  116. package/templates/vault/docx/scripts/templates/commentsIds.xml +3 -0
  117. package/templates/vault/docx/scripts/templates/people.xml +3 -0
  118. package/templates/vault/docx/scripts/utilities.py +374 -0
  119. package/templates/vault/docx-official/ooxml/scripts/pack.py +159 -0
  120. package/templates/vault/docx-official/ooxml/scripts/unpack.py +29 -0
  121. package/templates/vault/docx-official/ooxml/scripts/validate.py +69 -0
  122. package/templates/vault/docx-official/ooxml/scripts/validation/__init__.py +15 -0
  123. package/templates/vault/docx-official/ooxml/scripts/validation/base.py +951 -0
  124. package/templates/vault/docx-official/ooxml/scripts/validation/docx.py +274 -0
  125. package/templates/vault/docx-official/ooxml/scripts/validation/pptx.py +315 -0
  126. package/templates/vault/docx-official/ooxml/scripts/validation/redlining.py +279 -0
  127. package/templates/vault/docx-official/scripts/__init__.py +1 -0
  128. package/templates/vault/docx-official/scripts/document.py +1276 -0
  129. package/templates/vault/docx-official/scripts/templates/comments.xml +3 -0
  130. package/templates/vault/docx-official/scripts/templates/commentsExtended.xml +3 -0
  131. package/templates/vault/docx-official/scripts/templates/commentsExtensible.xml +3 -0
  132. package/templates/vault/docx-official/scripts/templates/commentsIds.xml +3 -0
  133. package/templates/vault/docx-official/scripts/templates/people.xml +3 -0
  134. package/templates/vault/docx-official/scripts/utilities.py +374 -0
  135. package/templates/vault/geo-fundamentals/scripts/geo_checker.py +289 -0
  136. package/templates/vault/helm-chart-scaffolding/scripts/validate-chart.sh +244 -0
  137. package/templates/vault/i18n-localization/scripts/i18n_checker.py +241 -0
  138. package/templates/vault/instagram/scripts/account_setup.py +233 -0
  139. package/templates/vault/instagram/scripts/analyze.py +221 -0
  140. package/templates/vault/instagram/scripts/api_client.py +444 -0
  141. package/templates/vault/instagram/scripts/auth.py +411 -0
  142. package/templates/vault/instagram/scripts/comments.py +160 -0
  143. package/templates/vault/instagram/scripts/config.py +111 -0
  144. package/templates/vault/instagram/scripts/db.py +467 -0
  145. package/templates/vault/instagram/scripts/export.py +138 -0
  146. package/templates/vault/instagram/scripts/governance.py +233 -0
  147. package/templates/vault/instagram/scripts/hashtags.py +114 -0
  148. package/templates/vault/instagram/scripts/insights.py +170 -0
  149. package/templates/vault/instagram/scripts/media.py +65 -0
  150. package/templates/vault/instagram/scripts/messages.py +103 -0
  151. package/templates/vault/instagram/scripts/profile.py +58 -0
  152. package/templates/vault/instagram/scripts/publish.py +449 -0
  153. package/templates/vault/instagram/scripts/requirements.txt +5 -0
  154. package/templates/vault/instagram/scripts/run_all.py +189 -0
  155. package/templates/vault/instagram/scripts/schedule.py +189 -0
  156. package/templates/vault/instagram/scripts/serve_api.py +234 -0
  157. package/templates/vault/instagram/scripts/templates.py +155 -0
  158. package/templates/vault/junta-leiloeiros/scripts/db.py +216 -0
  159. package/templates/vault/junta-leiloeiros/scripts/export.py +137 -0
  160. package/templates/vault/junta-leiloeiros/scripts/requirements.txt +15 -0
  161. package/templates/vault/junta-leiloeiros/scripts/run_all.py +190 -0
  162. package/templates/vault/junta-leiloeiros/scripts/scraper/__init__.py +4 -0
  163. package/templates/vault/junta-leiloeiros/scripts/scraper/base_scraper.py +209 -0
  164. package/templates/vault/junta-leiloeiros/scripts/scraper/generic_scraper.py +110 -0
  165. package/templates/vault/junta-leiloeiros/scripts/scraper/jucap.py +110 -0
  166. package/templates/vault/junta-leiloeiros/scripts/scraper/juceac.py +72 -0
  167. package/templates/vault/junta-leiloeiros/scripts/scraper/juceal.py +72 -0
  168. package/templates/vault/junta-leiloeiros/scripts/scraper/juceb.py +68 -0
  169. package/templates/vault/junta-leiloeiros/scripts/scraper/jucec.py +63 -0
  170. package/templates/vault/junta-leiloeiros/scripts/scraper/jucema.py +211 -0
  171. package/templates/vault/junta-leiloeiros/scripts/scraper/jucemg.py +218 -0
  172. package/templates/vault/junta-leiloeiros/scripts/scraper/jucep.py +70 -0
  173. package/templates/vault/junta-leiloeiros/scripts/scraper/jucepa.py +74 -0
  174. package/templates/vault/junta-leiloeiros/scripts/scraper/jucepar.py +80 -0
  175. package/templates/vault/junta-leiloeiros/scripts/scraper/jucepe.py +78 -0
  176. package/templates/vault/junta-leiloeiros/scripts/scraper/jucepi.py +69 -0
  177. package/templates/vault/junta-leiloeiros/scripts/scraper/jucer.py +256 -0
  178. package/templates/vault/junta-leiloeiros/scripts/scraper/jucerja.py +170 -0
  179. package/templates/vault/junta-leiloeiros/scripts/scraper/jucern.py +71 -0
  180. package/templates/vault/junta-leiloeiros/scripts/scraper/jucesc.py +89 -0
  181. package/templates/vault/junta-leiloeiros/scripts/scraper/jucesp.py +233 -0
  182. package/templates/vault/junta-leiloeiros/scripts/scraper/jucetins.py +134 -0
  183. package/templates/vault/junta-leiloeiros/scripts/scraper/jucis_df.py +63 -0
  184. package/templates/vault/junta-leiloeiros/scripts/scraper/jucisrs.py +299 -0
  185. package/templates/vault/junta-leiloeiros/scripts/scraper/states.py +99 -0
  186. package/templates/vault/junta-leiloeiros/scripts/serve_api.py +164 -0
  187. package/templates/vault/junta-leiloeiros/scripts/web_scraper_fallback.py +233 -0
  188. package/templates/vault/last30days/scripts/last30days.py +521 -0
  189. package/templates/vault/last30days/scripts/lib/__init__.py +1 -0
  190. package/templates/vault/last30days/scripts/lib/cache.py +152 -0
  191. package/templates/vault/last30days/scripts/lib/dates.py +124 -0
  192. package/templates/vault/last30days/scripts/lib/dedupe.py +120 -0
  193. package/templates/vault/last30days/scripts/lib/env.py +149 -0
  194. package/templates/vault/last30days/scripts/lib/http.py +152 -0
  195. package/templates/vault/last30days/scripts/lib/models.py +175 -0
  196. package/templates/vault/last30days/scripts/lib/normalize.py +160 -0
  197. package/templates/vault/last30days/scripts/lib/openai_reddit.py +230 -0
  198. package/templates/vault/last30days/scripts/lib/reddit_enrich.py +232 -0
  199. package/templates/vault/last30days/scripts/lib/render.py +383 -0
  200. package/templates/vault/last30days/scripts/lib/schema.py +336 -0
  201. package/templates/vault/last30days/scripts/lib/score.py +311 -0
  202. package/templates/vault/last30days/scripts/lib/ui.py +324 -0
  203. package/templates/vault/last30days/scripts/lib/websearch.py +401 -0
  204. package/templates/vault/last30days/scripts/lib/xai_x.py +217 -0
  205. package/templates/vault/leiloeiro-avaliacao/scripts/governance.py +106 -0
  206. package/templates/vault/leiloeiro-avaliacao/scripts/requirements.txt +1 -0
  207. package/templates/vault/leiloeiro-edital/scripts/governance.py +106 -0
  208. package/templates/vault/leiloeiro-edital/scripts/requirements.txt +1 -0
  209. package/templates/vault/leiloeiro-ia/scripts/governance.py +106 -0
  210. package/templates/vault/leiloeiro-ia/scripts/requirements.txt +1 -0
  211. package/templates/vault/leiloeiro-juridico/scripts/governance.py +106 -0
  212. package/templates/vault/leiloeiro-juridico/scripts/requirements.txt +1 -0
  213. package/templates/vault/leiloeiro-mercado/scripts/governance.py +106 -0
  214. package/templates/vault/leiloeiro-mercado/scripts/requirements.txt +1 -0
  215. package/templates/vault/leiloeiro-risco/scripts/governance.py +106 -0
  216. package/templates/vault/leiloeiro-risco/scripts/requirements.txt +1 -0
  217. package/templates/vault/loki-mode/examples/todo-app-generated/backend/src/db/database.ts +24 -0
  218. package/templates/vault/loki-mode/examples/todo-app-generated/backend/src/db/db.ts +35 -0
  219. package/templates/vault/loki-mode/examples/todo-app-generated/backend/src/db/index.ts +2 -0
  220. package/templates/vault/loki-mode/examples/todo-app-generated/backend/src/db/migrations.ts +31 -0
  221. package/templates/vault/loki-mode/examples/todo-app-generated/backend/src/db/schema.sql +8 -0
  222. package/templates/vault/loki-mode/examples/todo-app-generated/backend/src/index.ts +44 -0
  223. package/templates/vault/loki-mode/examples/todo-app-generated/backend/src/routes/todos.ts +155 -0
  224. package/templates/vault/loki-mode/examples/todo-app-generated/backend/src/types/index.ts +35 -0
  225. package/templates/vault/loki-mode/examples/todo-app-generated/frontend/src/App.css +384 -0
  226. package/templates/vault/loki-mode/examples/todo-app-generated/frontend/src/App.tsx +81 -0
  227. package/templates/vault/loki-mode/examples/todo-app-generated/frontend/src/api/todos.ts +57 -0
  228. package/templates/vault/loki-mode/examples/todo-app-generated/frontend/src/components/ConfirmDialog.tsx +26 -0
  229. package/templates/vault/loki-mode/examples/todo-app-generated/frontend/src/components/EmptyState.tsx +8 -0
  230. package/templates/vault/loki-mode/examples/todo-app-generated/frontend/src/components/TodoForm.tsx +43 -0
  231. package/templates/vault/loki-mode/examples/todo-app-generated/frontend/src/components/TodoItem.tsx +36 -0
  232. package/templates/vault/loki-mode/examples/todo-app-generated/frontend/src/components/TodoList.tsx +27 -0
  233. package/templates/vault/loki-mode/examples/todo-app-generated/frontend/src/hooks/useTodos.ts +81 -0
  234. package/templates/vault/loki-mode/examples/todo-app-generated/frontend/src/index.css +48 -0
  235. package/templates/vault/loki-mode/examples/todo-app-generated/frontend/src/main.tsx +10 -0
  236. package/templates/vault/loki-mode/examples/todo-app-generated/frontend/src/vite-env.d.ts +1 -0
  237. package/templates/vault/loki-mode/scripts/export-to-vibe-kanban.sh +178 -0
  238. package/templates/vault/loki-mode/scripts/loki-wrapper.sh +281 -0
  239. package/templates/vault/loki-mode/scripts/take-screenshots.js +55 -0
  240. package/templates/vault/matematico-tao/scripts/complexity_analyzer.py +544 -0
  241. package/templates/vault/matematico-tao/scripts/dependency_graph.py +538 -0
  242. package/templates/vault/mcp-builder/scripts/connections.py +151 -0
  243. package/templates/vault/mcp-builder/scripts/evaluation.py +373 -0
  244. package/templates/vault/mcp-builder/scripts/example_evaluation.xml +22 -0
  245. package/templates/vault/mcp-builder/scripts/requirements.txt +2 -0
  246. package/templates/vault/mobile-design/scripts/mobile_audit.py +670 -0
  247. package/templates/vault/notebooklm/scripts/__init__.py +81 -0
  248. package/templates/vault/notebooklm/scripts/ask_question.py +256 -0
  249. package/templates/vault/notebooklm/scripts/auth_manager.py +358 -0
  250. package/templates/vault/notebooklm/scripts/browser_session.py +255 -0
  251. package/templates/vault/notebooklm/scripts/browser_utils.py +107 -0
  252. package/templates/vault/notebooklm/scripts/cleanup_manager.py +302 -0
  253. package/templates/vault/notebooklm/scripts/config.py +44 -0
  254. package/templates/vault/notebooklm/scripts/notebook_manager.py +410 -0
  255. package/templates/vault/notebooklm/scripts/run.py +102 -0
  256. package/templates/vault/notebooklm/scripts/setup_environment.py +204 -0
  257. package/templates/vault/pdf/scripts/check_bounding_boxes.py +70 -0
  258. package/templates/vault/pdf/scripts/check_bounding_boxes_test.py +226 -0
  259. package/templates/vault/pdf/scripts/check_fillable_fields.py +12 -0
  260. package/templates/vault/pdf/scripts/convert_pdf_to_images.py +35 -0
  261. package/templates/vault/pdf/scripts/create_validation_image.py +41 -0
  262. package/templates/vault/pdf/scripts/extract_form_field_info.py +152 -0
  263. package/templates/vault/pdf/scripts/fill_fillable_fields.py +114 -0
  264. package/templates/vault/pdf/scripts/fill_pdf_form_with_annotations.py +108 -0
  265. package/templates/vault/pdf-official/scripts/check_bounding_boxes.py +70 -0
  266. package/templates/vault/pdf-official/scripts/check_bounding_boxes_test.py +226 -0
  267. package/templates/vault/pdf-official/scripts/check_fillable_fields.py +12 -0
  268. package/templates/vault/pdf-official/scripts/convert_pdf_to_images.py +35 -0
  269. package/templates/vault/pdf-official/scripts/create_validation_image.py +41 -0
  270. package/templates/vault/pdf-official/scripts/extract_form_field_info.py +152 -0
  271. package/templates/vault/pdf-official/scripts/fill_fillable_fields.py +114 -0
  272. package/templates/vault/pdf-official/scripts/fill_pdf_form_with_annotations.py +108 -0
  273. package/templates/vault/planning-with-files/scripts/check-complete.sh +44 -0
  274. package/templates/vault/planning-with-files/scripts/init-session.sh +120 -0
  275. package/templates/vault/pptx/ooxml/scripts/pack.py +159 -0
  276. package/templates/vault/pptx/ooxml/scripts/unpack.py +29 -0
  277. package/templates/vault/pptx/ooxml/scripts/validate.py +69 -0
  278. package/templates/vault/pptx/ooxml/scripts/validation/__init__.py +15 -0
  279. package/templates/vault/pptx/ooxml/scripts/validation/base.py +951 -0
  280. package/templates/vault/pptx/ooxml/scripts/validation/docx.py +274 -0
  281. package/templates/vault/pptx/ooxml/scripts/validation/pptx.py +315 -0
  282. package/templates/vault/pptx/ooxml/scripts/validation/redlining.py +279 -0
  283. package/templates/vault/pptx/scripts/html2pptx.js +979 -0
  284. package/templates/vault/pptx/scripts/inventory.py +1020 -0
  285. package/templates/vault/pptx/scripts/rearrange.py +231 -0
  286. package/templates/vault/pptx/scripts/replace.py +385 -0
  287. package/templates/vault/pptx/scripts/thumbnail.py +450 -0
  288. package/templates/vault/pptx-official/ooxml/scripts/pack.py +159 -0
  289. package/templates/vault/pptx-official/ooxml/scripts/unpack.py +29 -0
  290. package/templates/vault/pptx-official/ooxml/scripts/validate.py +69 -0
  291. package/templates/vault/pptx-official/ooxml/scripts/validation/__init__.py +15 -0
  292. package/templates/vault/pptx-official/ooxml/scripts/validation/base.py +951 -0
  293. package/templates/vault/pptx-official/ooxml/scripts/validation/docx.py +274 -0
  294. package/templates/vault/pptx-official/ooxml/scripts/validation/pptx.py +315 -0
  295. package/templates/vault/pptx-official/ooxml/scripts/validation/redlining.py +279 -0
  296. package/templates/vault/pptx-official/scripts/html2pptx.js +979 -0
  297. package/templates/vault/pptx-official/scripts/inventory.py +1020 -0
  298. package/templates/vault/pptx-official/scripts/rearrange.py +231 -0
  299. package/templates/vault/pptx-official/scripts/replace.py +385 -0
  300. package/templates/vault/pptx-official/scripts/thumbnail.py +450 -0
  301. package/templates/vault/product-manager-toolkit/scripts/customer_interview_analyzer.py +441 -0
  302. package/templates/vault/product-manager-toolkit/scripts/rice_prioritizer.py +296 -0
  303. package/templates/vault/prompt-engineering-patterns/scripts/optimize-prompt.py +279 -0
  304. package/templates/vault/scripts/.skill_cache.json +7538 -0
  305. package/templates/vault/scripts/skill_search.py +228 -0
  306. package/templates/vault/senior-architect/scripts/architecture_diagram_generator.py +114 -0
  307. package/templates/vault/senior-architect/scripts/dependency_analyzer.py +114 -0
  308. package/templates/vault/senior-architect/scripts/project_architect.py +114 -0
  309. package/templates/vault/shopify-development/scripts/requirements.txt +19 -0
  310. package/templates/vault/shopify-development/scripts/shopify_graphql.py +428 -0
  311. package/templates/vault/shopify-development/scripts/shopify_init.py +441 -0
  312. package/templates/vault/shopify-development/scripts/tests/test_shopify_init.py +379 -0
  313. package/templates/vault/skill-creator/scripts/init_skill.py +303 -0
  314. package/templates/vault/skill-creator/scripts/package_skill.py +110 -0
  315. package/templates/vault/skill-creator/scripts/quick_validate.py +95 -0
  316. package/templates/vault/skill-installer/scripts/detect_skills.py +318 -0
  317. package/templates/vault/skill-installer/scripts/install_skill.py +1708 -0
  318. package/templates/vault/skill-installer/scripts/package_skill.py +417 -0
  319. package/templates/vault/skill-installer/scripts/requirements.txt +1 -0
  320. package/templates/vault/skill-installer/scripts/validate_skill.py +430 -0
  321. package/templates/vault/skill-sentinel/scripts/analyzers/__init__.py +13 -0
  322. package/templates/vault/skill-sentinel/scripts/analyzers/code_quality.py +247 -0
  323. package/templates/vault/skill-sentinel/scripts/analyzers/cross_skill.py +134 -0
  324. package/templates/vault/skill-sentinel/scripts/analyzers/dependencies.py +121 -0
  325. package/templates/vault/skill-sentinel/scripts/analyzers/documentation.py +189 -0
  326. package/templates/vault/skill-sentinel/scripts/analyzers/governance_audit.py +153 -0
  327. package/templates/vault/skill-sentinel/scripts/analyzers/performance.py +164 -0
  328. package/templates/vault/skill-sentinel/scripts/analyzers/security.py +189 -0
  329. package/templates/vault/skill-sentinel/scripts/config.py +158 -0
  330. package/templates/vault/skill-sentinel/scripts/cost_optimizer.py +146 -0
  331. package/templates/vault/skill-sentinel/scripts/db.py +354 -0
  332. package/templates/vault/skill-sentinel/scripts/governance.py +58 -0
  333. package/templates/vault/skill-sentinel/scripts/recommender.py +228 -0
  334. package/templates/vault/skill-sentinel/scripts/report_generator.py +224 -0
  335. package/templates/vault/skill-sentinel/scripts/requirements.txt +1 -0
  336. package/templates/vault/skill-sentinel/scripts/run_audit.py +290 -0
  337. package/templates/vault/skill-sentinel/scripts/scanner.py +271 -0
  338. package/templates/vault/stability-ai/scripts/config.py +266 -0
  339. package/templates/vault/stability-ai/scripts/generate.py +687 -0
  340. package/templates/vault/stability-ai/scripts/requirements.txt +4 -0
  341. package/templates/vault/stability-ai/scripts/styles.py +174 -0
  342. package/templates/vault/telegram/assets/boilerplate/nodejs/src/bot-client.ts +86 -0
  343. package/templates/vault/telegram/assets/boilerplate/nodejs/src/handlers.ts +79 -0
  344. package/templates/vault/telegram/assets/boilerplate/nodejs/src/index.ts +32 -0
  345. package/templates/vault/telegram/scripts/send_message.py +143 -0
  346. package/templates/vault/telegram/scripts/setup_project.py +103 -0
  347. package/templates/vault/telegram/scripts/test_bot.py +144 -0
  348. package/templates/vault/typescript-expert/scripts/ts_diagnostic.py +203 -0
  349. package/templates/vault/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
  350. package/templates/vault/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
  351. package/templates/vault/ui-ux-pro-max/scripts/core.py +257 -0
  352. package/templates/vault/ui-ux-pro-max/scripts/design_system.py +487 -0
  353. package/templates/vault/ui-ux-pro-max/scripts/search.py +76 -0
  354. package/templates/vault/videodb/scripts/ws_listener.py +204 -0
  355. package/templates/vault/web-artifacts-builder/scripts/bundle-artifact.sh +54 -0
  356. package/templates/vault/web-artifacts-builder/scripts/init-artifact.sh +322 -0
  357. package/templates/vault/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
  358. package/templates/vault/webapp-testing/scripts/with_server.py +106 -0
  359. package/templates/vault/whatsapp-cloud-api/assets/boilerplate/nodejs/src/index.ts +125 -0
  360. package/templates/vault/whatsapp-cloud-api/assets/boilerplate/nodejs/src/template-manager.ts +67 -0
  361. package/templates/vault/whatsapp-cloud-api/assets/boilerplate/nodejs/src/types.ts +216 -0
  362. package/templates/vault/whatsapp-cloud-api/assets/boilerplate/nodejs/src/webhook-handler.ts +173 -0
  363. package/templates/vault/whatsapp-cloud-api/assets/boilerplate/nodejs/src/whatsapp-client.ts +193 -0
  364. package/templates/vault/whatsapp-cloud-api/scripts/send_test_message.py +137 -0
  365. package/templates/vault/whatsapp-cloud-api/scripts/setup_project.py +118 -0
  366. package/templates/vault/whatsapp-cloud-api/scripts/validate_config.py +190 -0
  367. package/templates/vault/youtube-summarizer/scripts/extract-transcript.py +65 -0
  368. package/templates/vault/youtube-summarizer/scripts/install-dependencies.sh +28 -0
@@ -0,0 +1,228 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ skill_search.py — Find skills by keyword from installed skills
4
+ Usage: python3 skill_search.py "your search here"
5
+ python3 skill_search.py "authentication"
6
+ python3 skill_search.py "react component animation"
7
+ python3 skill_search.py --list (list all skill names)
8
+
9
+ Scans SKILL.md files in each skill directory for name/description.
10
+ Works without skills_index.json by reading SKILL.md frontmatter directly.
11
+ """
12
+ import json
13
+ import sys
14
+ import os
15
+ import re
16
+ from pathlib import Path
17
+
18
+ # Resolve paths relative to this script's location
19
+ SCRIPT_DIR = Path(__file__).parent
20
+ REPO_ROOT = SCRIPT_DIR.parent
21
+ SKILLS_DIR = REPO_ROOT # skills are direct children
22
+ INDEX_FILE = REPO_ROOT / "skills_index.json"
23
+ BUNDLES_FILE = REPO_ROOT / "data" / "bundles.json"
24
+ CACHE_FILE = SCRIPT_DIR / ".skill_cache.json"
25
+
26
+
27
+ def parse_skill_md(skill_dir: Path) -> dict:
28
+ """Extract name and description from SKILL.md frontmatter."""
29
+ skill_file = skill_dir / "SKILL.md"
30
+ if not skill_file.exists():
31
+ return None
32
+
33
+ try:
34
+ content = skill_file.read_text(encoding="utf-8", errors="replace")
35
+ except Exception:
36
+ return None
37
+
38
+ name = skill_dir.name
39
+ description = ""
40
+
41
+ # Try YAML frontmatter: ---\nkey: value\n---
42
+ fm_match = re.match(r"^---\s*\n(.*?)\n---", content, re.DOTALL)
43
+ if fm_match:
44
+ frontmatter = fm_match.group(1)
45
+ # Extract name
46
+ name_match = re.search(r"^name:\s*(.+)$", frontmatter, re.MULTILINE)
47
+ if name_match:
48
+ name = name_match.group(1).strip().strip("'\"")
49
+ # Extract description
50
+ desc_match = re.search(r"^description:\s*(.+)$", frontmatter, re.MULTILINE)
51
+ if desc_match:
52
+ description = desc_match.group(1).strip().strip("'\"")
53
+
54
+ # If no description from frontmatter, grab first meaningful paragraph
55
+ if not description:
56
+ lines = content.split("\n")
57
+ for line in lines:
58
+ line = line.strip()
59
+ if line and not line.startswith("#") and not line.startswith("---") and len(line) > 20:
60
+ description = line[:200]
61
+ break
62
+
63
+ return {
64
+ "name": name,
65
+ "description": description,
66
+ "path": skill_dir.name,
67
+ "dir": str(skill_dir),
68
+ }
69
+
70
+
71
+ def load_skills():
72
+ """Load skills from index file or scan directories."""
73
+ # Try skills_index.json first
74
+ if INDEX_FILE.exists():
75
+ try:
76
+ with open(INDEX_FILE, encoding="utf-8") as f:
77
+ data = json.load(f)
78
+ if isinstance(data, list):
79
+ return data
80
+ if isinstance(data, dict) and "skills" in data:
81
+ return data["skills"]
82
+ return list(data.values())
83
+ except Exception:
84
+ pass
85
+
86
+ # Try cache (rebuilt periodically)
87
+ if CACHE_FILE.exists():
88
+ try:
89
+ cache_stat = CACHE_FILE.stat()
90
+ import time
91
+ # Use cache if less than 1 hour old
92
+ if (time.time() - cache_stat.st_mtime) < 3600:
93
+ with open(CACHE_FILE, encoding="utf-8") as f:
94
+ return json.load(f)
95
+ except Exception:
96
+ pass
97
+
98
+ # Scan directories
99
+ print("🔄 Building skill index (first run may take a moment)...")
100
+ skills = []
101
+ if not SKILLS_DIR.exists():
102
+ print(f"❌ Skills directory not found: {SKILLS_DIR}")
103
+ sys.exit(1)
104
+
105
+ for item in sorted(SKILLS_DIR.iterdir()):
106
+ if item.is_dir() and not item.name.startswith(".") and item.name not in ("scripts", "data", "node_modules"):
107
+ skill = parse_skill_md(item)
108
+ if skill:
109
+ skills.append(skill)
110
+
111
+ # Cache for faster subsequent runs
112
+ try:
113
+ SCRIPT_DIR.mkdir(parents=True, exist_ok=True)
114
+ with open(CACHE_FILE, "w", encoding="utf-8") as f:
115
+ json.dump(skills, f, ensure_ascii=False, indent=2)
116
+ except Exception:
117
+ pass
118
+
119
+ return skills
120
+
121
+
122
+ def search(query: str, top_n: int = 10):
123
+ skills = load_skills()
124
+ terms = query.lower().split()
125
+
126
+ results = []
127
+ for skill in skills:
128
+ name = str(skill.get("name", "")).lower()
129
+ desc = str(skill.get("description", "")).lower()
130
+ path = str(skill.get("path", "")).lower()
131
+ full_text = f"{name} {desc} {path}"
132
+
133
+ # Score: name matches count double
134
+ score = sum(full_text.count(t) for t in terms)
135
+ score += sum(name.count(t) * 2 for t in terms)
136
+
137
+ # Bonus for exact name match
138
+ if query.lower() in name:
139
+ score += 10
140
+
141
+ if score > 0:
142
+ results.append((score, skill))
143
+
144
+ results.sort(key=lambda x: -x[0])
145
+
146
+ if not results:
147
+ print(f"\n🔍 Nenhuma skill encontrada para: '{query}'")
148
+ print(" Tente termos mais amplos, ex: 'auth', 'deploy', 'test', 'api'\n")
149
+ return
150
+
151
+ print(f"\n🎯 Top skills para '{query}':\n")
152
+ for score, skill in results[:top_n]:
153
+ path_val = skill.get("path", "")
154
+ name_val = skill.get("name", path_val)
155
+ desc_val = skill.get("description", "")
156
+ if len(desc_val) > 100:
157
+ desc_val = desc_val[:97] + "..."
158
+ print(f" 📌 {name_val}")
159
+ print(f" Invocar: \"Use the {path_val} skill to [sua tarefa]\"")
160
+ if desc_val:
161
+ print(f" Sobre: {desc_val}")
162
+ print()
163
+
164
+
165
+ def list_all():
166
+ skills = load_skills()
167
+ print(f"\n📋 Total de skills instaladas: {len(skills)}\n")
168
+ for skill in skills:
169
+ name = skill.get("name", skill.get("path", "?"))
170
+ desc = skill.get("description", "")
171
+ if len(desc) > 80:
172
+ desc = desc[:77] + "..."
173
+ print(f" • {name}")
174
+ if desc:
175
+ print(f" {desc}")
176
+ print()
177
+
178
+
179
+ def list_bundles():
180
+ if not BUNDLES_FILE.exists():
181
+ print("❌ bundles.json não encontrado.")
182
+ print(f" Caminho esperado: {BUNDLES_FILE}")
183
+ return
184
+ with open(BUNDLES_FILE, encoding="utf-8") as f:
185
+ data = json.load(f)
186
+ bundles = data if isinstance(data, list) else data.get("bundles", [])
187
+ print("\n📦 Bundles Disponíveis:\n")
188
+ for b in bundles:
189
+ name = b.get("name", "?")
190
+ desc = b.get("description", "")
191
+ skills_list = b.get("skills", [])
192
+ print(f" {name}")
193
+ if desc:
194
+ print(f" {desc}")
195
+ if skills_list:
196
+ skills_preview = ", ".join(skills_list[:5])
197
+ if len(skills_list) > 5:
198
+ skills_preview += f" (+{len(skills_list)-5} mais)"
199
+ print(f" Skills: {skills_preview}")
200
+ print()
201
+
202
+
203
+ def rebuild_cache():
204
+ """Force cache rebuild."""
205
+ if CACHE_FILE.exists():
206
+ CACHE_FILE.unlink()
207
+ skills = load_skills()
208
+ print(f"✅ Cache reconstruído com {len(skills)} skills.")
209
+
210
+
211
+ if __name__ == "__main__":
212
+ if len(sys.argv) < 2:
213
+ print("Uso: python3 skill_search.py \"termos de busca\"")
214
+ print(" python3 skill_search.py --bundles")
215
+ print(" python3 skill_search.py --list")
216
+ print(" python3 skill_search.py --rebuild")
217
+ sys.exit(0)
218
+
219
+ arg = sys.argv[1]
220
+ if arg in ("--bundles", "-b", "bundles"):
221
+ list_bundles()
222
+ elif arg in ("--list", "-l", "list"):
223
+ list_all()
224
+ elif arg in ("--rebuild", "-r", "rebuild"):
225
+ rebuild_cache()
226
+ else:
227
+ query = " ".join(sys.argv[1:])
228
+ search(query)
@@ -0,0 +1,114 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Architecture Diagram Generator
4
+ Automated tool for senior architect tasks
5
+ """
6
+
7
+ import os
8
+ import sys
9
+ import json
10
+ import argparse
11
+ from pathlib import Path
12
+ from typing import Dict, List, Optional
13
+
14
+ class ArchitectureDiagramGenerator:
15
+ """Main class for architecture diagram generator functionality"""
16
+
17
+ def __init__(self, target_path: str, verbose: bool = False):
18
+ self.target_path = Path(target_path)
19
+ self.verbose = verbose
20
+ self.results = {}
21
+
22
+ def run(self) -> Dict:
23
+ """Execute the main functionality"""
24
+ print(f"🚀 Running {self.__class__.__name__}...")
25
+ print(f"📁 Target: {self.target_path}")
26
+
27
+ try:
28
+ self.validate_target()
29
+ self.analyze()
30
+ self.generate_report()
31
+
32
+ print("✅ Completed successfully!")
33
+ return self.results
34
+
35
+ except Exception as e:
36
+ print(f"❌ Error: {e}")
37
+ sys.exit(1)
38
+
39
+ def validate_target(self):
40
+ """Validate the target path exists and is accessible"""
41
+ if not self.target_path.exists():
42
+ raise ValueError(f"Target path does not exist: {self.target_path}")
43
+
44
+ if self.verbose:
45
+ print(f"✓ Target validated: {self.target_path}")
46
+
47
+ def analyze(self):
48
+ """Perform the main analysis or operation"""
49
+ if self.verbose:
50
+ print("📊 Analyzing...")
51
+
52
+ # Main logic here
53
+ self.results['status'] = 'success'
54
+ self.results['target'] = str(self.target_path)
55
+ self.results['findings'] = []
56
+
57
+ # Add analysis results
58
+ if self.verbose:
59
+ print(f"✓ Analysis complete: {len(self.results.get('findings', []))} findings")
60
+
61
+ def generate_report(self):
62
+ """Generate and display the report"""
63
+ print("\n" + "="*50)
64
+ print("REPORT")
65
+ print("="*50)
66
+ print(f"Target: {self.results.get('target')}")
67
+ print(f"Status: {self.results.get('status')}")
68
+ print(f"Findings: {len(self.results.get('findings', []))}")
69
+ print("="*50 + "\n")
70
+
71
+ def main():
72
+ """Main entry point"""
73
+ parser = argparse.ArgumentParser(
74
+ description="Architecture Diagram Generator"
75
+ )
76
+ parser.add_argument(
77
+ 'target',
78
+ help='Target path to analyze or process'
79
+ )
80
+ parser.add_argument(
81
+ '--verbose', '-v',
82
+ action='store_true',
83
+ help='Enable verbose output'
84
+ )
85
+ parser.add_argument(
86
+ '--json',
87
+ action='store_true',
88
+ help='Output results as JSON'
89
+ )
90
+ parser.add_argument(
91
+ '--output', '-o',
92
+ help='Output file path'
93
+ )
94
+
95
+ args = parser.parse_args()
96
+
97
+ tool = ArchitectureDiagramGenerator(
98
+ args.target,
99
+ verbose=args.verbose
100
+ )
101
+
102
+ results = tool.run()
103
+
104
+ if args.json:
105
+ output = json.dumps(results, indent=2)
106
+ if args.output:
107
+ with open(args.output, 'w') as f:
108
+ f.write(output)
109
+ print(f"Results written to {args.output}")
110
+ else:
111
+ print(output)
112
+
113
+ if __name__ == '__main__':
114
+ main()
@@ -0,0 +1,114 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Dependency Analyzer
4
+ Automated tool for senior architect tasks
5
+ """
6
+
7
+ import os
8
+ import sys
9
+ import json
10
+ import argparse
11
+ from pathlib import Path
12
+ from typing import Dict, List, Optional
13
+
14
+ class DependencyAnalyzer:
15
+ """Main class for dependency analyzer functionality"""
16
+
17
+ def __init__(self, target_path: str, verbose: bool = False):
18
+ self.target_path = Path(target_path)
19
+ self.verbose = verbose
20
+ self.results = {}
21
+
22
+ def run(self) -> Dict:
23
+ """Execute the main functionality"""
24
+ print(f"🚀 Running {self.__class__.__name__}...")
25
+ print(f"📁 Target: {self.target_path}")
26
+
27
+ try:
28
+ self.validate_target()
29
+ self.analyze()
30
+ self.generate_report()
31
+
32
+ print("✅ Completed successfully!")
33
+ return self.results
34
+
35
+ except Exception as e:
36
+ print(f"❌ Error: {e}")
37
+ sys.exit(1)
38
+
39
+ def validate_target(self):
40
+ """Validate the target path exists and is accessible"""
41
+ if not self.target_path.exists():
42
+ raise ValueError(f"Target path does not exist: {self.target_path}")
43
+
44
+ if self.verbose:
45
+ print(f"✓ Target validated: {self.target_path}")
46
+
47
+ def analyze(self):
48
+ """Perform the main analysis or operation"""
49
+ if self.verbose:
50
+ print("📊 Analyzing...")
51
+
52
+ # Main logic here
53
+ self.results['status'] = 'success'
54
+ self.results['target'] = str(self.target_path)
55
+ self.results['findings'] = []
56
+
57
+ # Add analysis results
58
+ if self.verbose:
59
+ print(f"✓ Analysis complete: {len(self.results.get('findings', []))} findings")
60
+
61
+ def generate_report(self):
62
+ """Generate and display the report"""
63
+ print("\n" + "="*50)
64
+ print("REPORT")
65
+ print("="*50)
66
+ print(f"Target: {self.results.get('target')}")
67
+ print(f"Status: {self.results.get('status')}")
68
+ print(f"Findings: {len(self.results.get('findings', []))}")
69
+ print("="*50 + "\n")
70
+
71
+ def main():
72
+ """Main entry point"""
73
+ parser = argparse.ArgumentParser(
74
+ description="Dependency Analyzer"
75
+ )
76
+ parser.add_argument(
77
+ 'target',
78
+ help='Target path to analyze or process'
79
+ )
80
+ parser.add_argument(
81
+ '--verbose', '-v',
82
+ action='store_true',
83
+ help='Enable verbose output'
84
+ )
85
+ parser.add_argument(
86
+ '--json',
87
+ action='store_true',
88
+ help='Output results as JSON'
89
+ )
90
+ parser.add_argument(
91
+ '--output', '-o',
92
+ help='Output file path'
93
+ )
94
+
95
+ args = parser.parse_args()
96
+
97
+ tool = DependencyAnalyzer(
98
+ args.target,
99
+ verbose=args.verbose
100
+ )
101
+
102
+ results = tool.run()
103
+
104
+ if args.json:
105
+ output = json.dumps(results, indent=2)
106
+ if args.output:
107
+ with open(args.output, 'w') as f:
108
+ f.write(output)
109
+ print(f"Results written to {args.output}")
110
+ else:
111
+ print(output)
112
+
113
+ if __name__ == '__main__':
114
+ main()
@@ -0,0 +1,114 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Project Architect
4
+ Automated tool for senior architect tasks
5
+ """
6
+
7
+ import os
8
+ import sys
9
+ import json
10
+ import argparse
11
+ from pathlib import Path
12
+ from typing import Dict, List, Optional
13
+
14
+ class ProjectArchitect:
15
+ """Main class for project architect functionality"""
16
+
17
+ def __init__(self, target_path: str, verbose: bool = False):
18
+ self.target_path = Path(target_path)
19
+ self.verbose = verbose
20
+ self.results = {}
21
+
22
+ def run(self) -> Dict:
23
+ """Execute the main functionality"""
24
+ print(f"🚀 Running {self.__class__.__name__}...")
25
+ print(f"📁 Target: {self.target_path}")
26
+
27
+ try:
28
+ self.validate_target()
29
+ self.analyze()
30
+ self.generate_report()
31
+
32
+ print("✅ Completed successfully!")
33
+ return self.results
34
+
35
+ except Exception as e:
36
+ print(f"❌ Error: {e}")
37
+ sys.exit(1)
38
+
39
+ def validate_target(self):
40
+ """Validate the target path exists and is accessible"""
41
+ if not self.target_path.exists():
42
+ raise ValueError(f"Target path does not exist: {self.target_path}")
43
+
44
+ if self.verbose:
45
+ print(f"✓ Target validated: {self.target_path}")
46
+
47
+ def analyze(self):
48
+ """Perform the main analysis or operation"""
49
+ if self.verbose:
50
+ print("📊 Analyzing...")
51
+
52
+ # Main logic here
53
+ self.results['status'] = 'success'
54
+ self.results['target'] = str(self.target_path)
55
+ self.results['findings'] = []
56
+
57
+ # Add analysis results
58
+ if self.verbose:
59
+ print(f"✓ Analysis complete: {len(self.results.get('findings', []))} findings")
60
+
61
+ def generate_report(self):
62
+ """Generate and display the report"""
63
+ print("\n" + "="*50)
64
+ print("REPORT")
65
+ print("="*50)
66
+ print(f"Target: {self.results.get('target')}")
67
+ print(f"Status: {self.results.get('status')}")
68
+ print(f"Findings: {len(self.results.get('findings', []))}")
69
+ print("="*50 + "\n")
70
+
71
+ def main():
72
+ """Main entry point"""
73
+ parser = argparse.ArgumentParser(
74
+ description="Project Architect"
75
+ )
76
+ parser.add_argument(
77
+ 'target',
78
+ help='Target path to analyze or process'
79
+ )
80
+ parser.add_argument(
81
+ '--verbose', '-v',
82
+ action='store_true',
83
+ help='Enable verbose output'
84
+ )
85
+ parser.add_argument(
86
+ '--json',
87
+ action='store_true',
88
+ help='Output results as JSON'
89
+ )
90
+ parser.add_argument(
91
+ '--output', '-o',
92
+ help='Output file path'
93
+ )
94
+
95
+ args = parser.parse_args()
96
+
97
+ tool = ProjectArchitect(
98
+ args.target,
99
+ verbose=args.verbose
100
+ )
101
+
102
+ results = tool.run()
103
+
104
+ if args.json:
105
+ output = json.dumps(results, indent=2)
106
+ if args.output:
107
+ with open(args.output, 'w') as f:
108
+ f.write(output)
109
+ print(f"Results written to {args.output}")
110
+ else:
111
+ print(output)
112
+
113
+ if __name__ == '__main__':
114
+ main()
@@ -0,0 +1,19 @@
1
+ # Shopify Skill Dependencies
2
+ # Python 3.10+ required
3
+
4
+ # No Python package dependencies - uses only standard library
5
+
6
+ # Testing dependencies (dev)
7
+ pytest>=8.0.0
8
+ pytest-cov>=4.1.0
9
+ pytest-mock>=3.12.0
10
+
11
+ # Note: This script requires the Shopify CLI tool
12
+ # Install Shopify CLI:
13
+ # npm install -g @shopify/cli @shopify/theme
14
+ # or via Homebrew (macOS):
15
+ # brew tap shopify/shopify
16
+ # brew install shopify-cli
17
+ #
18
+ # Authenticate with:
19
+ # shopify auth login