myaiforone 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (315) hide show
  1. package/README.md +113 -0
  2. package/agents/_template/CLAUDE.md +18 -0
  3. package/agents/_template/agent.json +7 -0
  4. package/agents/platform/agentcreator/CLAUDE.md +300 -0
  5. package/agents/platform/appcreator/CLAUDE.md +158 -0
  6. package/agents/platform/gym/CLAUDE.md +486 -0
  7. package/agents/platform/gym/agent.json +40 -0
  8. package/agents/platform/gym/programs/agent-building/program.json +160 -0
  9. package/agents/platform/gym/programs/automations-mastery/program.json +129 -0
  10. package/agents/platform/gym/programs/getting-started/program.json +124 -0
  11. package/agents/platform/gym/programs/mcp-integrations/program.json +116 -0
  12. package/agents/platform/gym/programs/multi-model-strategy/program.json +115 -0
  13. package/agents/platform/gym/programs/prompt-engineering/program.json +136 -0
  14. package/agents/platform/gym/souls/alex.md +12 -0
  15. package/agents/platform/gym/souls/jordan.md +12 -0
  16. package/agents/platform/gym/souls/morgan.md +12 -0
  17. package/agents/platform/gym/souls/riley.md +12 -0
  18. package/agents/platform/gym/souls/sam.md +12 -0
  19. package/agents/platform/hub/CLAUDE.md +372 -0
  20. package/agents/platform/promptcreator/CLAUDE.md +130 -0
  21. package/agents/platform/skillcreator/CLAUDE.md +163 -0
  22. package/bin/cli.js +566 -0
  23. package/config.example.json +310 -0
  24. package/dist/agent-registry.d.ts +32 -0
  25. package/dist/agent-registry.d.ts.map +1 -0
  26. package/dist/agent-registry.js +144 -0
  27. package/dist/agent-registry.js.map +1 -0
  28. package/dist/channels/discord.d.ts +17 -0
  29. package/dist/channels/discord.d.ts.map +1 -0
  30. package/dist/channels/discord.js +114 -0
  31. package/dist/channels/discord.js.map +1 -0
  32. package/dist/channels/imessage.d.ts +23 -0
  33. package/dist/channels/imessage.d.ts.map +1 -0
  34. package/dist/channels/imessage.js +214 -0
  35. package/dist/channels/imessage.js.map +1 -0
  36. package/dist/channels/slack.d.ts +19 -0
  37. package/dist/channels/slack.d.ts.map +1 -0
  38. package/dist/channels/slack.js +167 -0
  39. package/dist/channels/slack.js.map +1 -0
  40. package/dist/channels/telegram.d.ts +19 -0
  41. package/dist/channels/telegram.d.ts.map +1 -0
  42. package/dist/channels/telegram.js +274 -0
  43. package/dist/channels/telegram.js.map +1 -0
  44. package/dist/channels/types.d.ts +44 -0
  45. package/dist/channels/types.d.ts.map +1 -0
  46. package/dist/channels/types.js +18 -0
  47. package/dist/channels/types.js.map +1 -0
  48. package/dist/channels/whatsapp.d.ts +23 -0
  49. package/dist/channels/whatsapp.d.ts.map +1 -0
  50. package/dist/channels/whatsapp.js +189 -0
  51. package/dist/channels/whatsapp.js.map +1 -0
  52. package/dist/config.d.ts +134 -0
  53. package/dist/config.d.ts.map +1 -0
  54. package/dist/config.js +127 -0
  55. package/dist/config.js.map +1 -0
  56. package/dist/cron.d.ts +8 -0
  57. package/dist/cron.d.ts.map +1 -0
  58. package/dist/cron.js +35 -0
  59. package/dist/cron.js.map +1 -0
  60. package/dist/decrypt-keys.d.ts +7 -0
  61. package/dist/decrypt-keys.d.ts.map +1 -0
  62. package/dist/decrypt-keys.js +53 -0
  63. package/dist/decrypt-keys.js.map +1 -0
  64. package/dist/encrypt-keys.d.ts +8 -0
  65. package/dist/encrypt-keys.d.ts.map +1 -0
  66. package/dist/encrypt-keys.js +62 -0
  67. package/dist/encrypt-keys.js.map +1 -0
  68. package/dist/executor.d.ts +31 -0
  69. package/dist/executor.d.ts.map +1 -0
  70. package/dist/executor.js +2009 -0
  71. package/dist/executor.js.map +1 -0
  72. package/dist/gemini-executor.d.ts +27 -0
  73. package/dist/gemini-executor.d.ts.map +1 -0
  74. package/dist/gemini-executor.js +160 -0
  75. package/dist/gemini-executor.js.map +1 -0
  76. package/dist/goals.d.ts +24 -0
  77. package/dist/goals.d.ts.map +1 -0
  78. package/dist/goals.js +189 -0
  79. package/dist/goals.js.map +1 -0
  80. package/dist/gym/activity-digest.d.ts +30 -0
  81. package/dist/gym/activity-digest.d.ts.map +1 -0
  82. package/dist/gym/activity-digest.js +506 -0
  83. package/dist/gym/activity-digest.js.map +1 -0
  84. package/dist/gym/dimension-scorer.d.ts +76 -0
  85. package/dist/gym/dimension-scorer.d.ts.map +1 -0
  86. package/dist/gym/dimension-scorer.js +236 -0
  87. package/dist/gym/dimension-scorer.js.map +1 -0
  88. package/dist/gym/gym-router.d.ts +7 -0
  89. package/dist/gym/gym-router.d.ts.map +1 -0
  90. package/dist/gym/gym-router.js +718 -0
  91. package/dist/gym/gym-router.js.map +1 -0
  92. package/dist/gym/index.d.ts +11 -0
  93. package/dist/gym/index.d.ts.map +1 -0
  94. package/dist/gym/index.js +11 -0
  95. package/dist/gym/index.js.map +1 -0
  96. package/dist/heartbeat.d.ts +21 -0
  97. package/dist/heartbeat.d.ts.map +1 -0
  98. package/dist/heartbeat.js +163 -0
  99. package/dist/heartbeat.js.map +1 -0
  100. package/dist/index.d.ts +2 -0
  101. package/dist/index.d.ts.map +1 -0
  102. package/dist/index.js +254 -0
  103. package/dist/index.js.map +1 -0
  104. package/dist/keystore.d.ts +22 -0
  105. package/dist/keystore.d.ts.map +1 -0
  106. package/dist/keystore.js +178 -0
  107. package/dist/keystore.js.map +1 -0
  108. package/dist/logger.d.ts +9 -0
  109. package/dist/logger.d.ts.map +1 -0
  110. package/dist/logger.js +45 -0
  111. package/dist/logger.js.map +1 -0
  112. package/dist/memory/daily.d.ts +22 -0
  113. package/dist/memory/daily.d.ts.map +1 -0
  114. package/dist/memory/daily.js +82 -0
  115. package/dist/memory/daily.js.map +1 -0
  116. package/dist/memory/embeddings.d.ts +15 -0
  117. package/dist/memory/embeddings.d.ts.map +1 -0
  118. package/dist/memory/embeddings.js +154 -0
  119. package/dist/memory/embeddings.js.map +1 -0
  120. package/dist/memory/index.d.ts +32 -0
  121. package/dist/memory/index.d.ts.map +1 -0
  122. package/dist/memory/index.js +159 -0
  123. package/dist/memory/index.js.map +1 -0
  124. package/dist/memory/search.d.ts +21 -0
  125. package/dist/memory/search.d.ts.map +1 -0
  126. package/dist/memory/search.js +77 -0
  127. package/dist/memory/search.js.map +1 -0
  128. package/dist/memory/store.d.ts +23 -0
  129. package/dist/memory/store.d.ts.map +1 -0
  130. package/dist/memory/store.js +144 -0
  131. package/dist/memory/store.js.map +1 -0
  132. package/dist/ollama-executor.d.ts +17 -0
  133. package/dist/ollama-executor.d.ts.map +1 -0
  134. package/dist/ollama-executor.js +112 -0
  135. package/dist/ollama-executor.js.map +1 -0
  136. package/dist/openai-executor.d.ts +38 -0
  137. package/dist/openai-executor.d.ts.map +1 -0
  138. package/dist/openai-executor.js +197 -0
  139. package/dist/openai-executor.js.map +1 -0
  140. package/dist/router.d.ts +11 -0
  141. package/dist/router.d.ts.map +1 -0
  142. package/dist/router.js +185 -0
  143. package/dist/router.js.map +1 -0
  144. package/dist/test-message.d.ts +2 -0
  145. package/dist/test-message.d.ts.map +1 -0
  146. package/dist/test-message.js +60 -0
  147. package/dist/test-message.js.map +1 -0
  148. package/dist/utils/imsg-db-reader.d.ts +24 -0
  149. package/dist/utils/imsg-db-reader.d.ts.map +1 -0
  150. package/dist/utils/imsg-db-reader.js +92 -0
  151. package/dist/utils/imsg-db-reader.js.map +1 -0
  152. package/dist/utils/imsg-rpc.d.ts +25 -0
  153. package/dist/utils/imsg-rpc.d.ts.map +1 -0
  154. package/dist/utils/imsg-rpc.js +149 -0
  155. package/dist/utils/imsg-rpc.js.map +1 -0
  156. package/dist/utils/message-formatter.d.ts +3 -0
  157. package/dist/utils/message-formatter.d.ts.map +1 -0
  158. package/dist/utils/message-formatter.js +69 -0
  159. package/dist/utils/message-formatter.js.map +1 -0
  160. package/dist/web-ui.d.ts +12 -0
  161. package/dist/web-ui.d.ts.map +1 -0
  162. package/dist/web-ui.js +5784 -0
  163. package/dist/web-ui.js.map +1 -0
  164. package/dist/whatsapp-chats.d.ts +2 -0
  165. package/dist/whatsapp-chats.d.ts.map +1 -0
  166. package/dist/whatsapp-chats.js +76 -0
  167. package/dist/whatsapp-chats.js.map +1 -0
  168. package/dist/whatsapp-login.d.ts +2 -0
  169. package/dist/whatsapp-login.d.ts.map +1 -0
  170. package/dist/whatsapp-login.js +90 -0
  171. package/dist/whatsapp-login.js.map +1 -0
  172. package/dist/wiki-sync.d.ts +21 -0
  173. package/dist/wiki-sync.d.ts.map +1 -0
  174. package/dist/wiki-sync.js +147 -0
  175. package/dist/wiki-sync.js.map +1 -0
  176. package/docs/AddNewAgentGuide.md +100 -0
  177. package/docs/AddNewMcpGuide.md +72 -0
  178. package/docs/Architecture.md +795 -0
  179. package/docs/CLAUDE-AI-SETUP.md +166 -0
  180. package/docs/Setup.md +297 -0
  181. package/docs/ai-gym-architecture.md +1040 -0
  182. package/docs/ai-gym-build-plan.md +343 -0
  183. package/docs/ai-gym-onboarding.md +122 -0
  184. package/docs/appcreator_plan.md +348 -0
  185. package/docs/platform-mcp-audit.md +320 -0
  186. package/docs/server-deployment-plan.md +503 -0
  187. package/docs/superpowers/plans/2026-03-25-marketplace.md +1281 -0
  188. package/docs/superpowers/specs/2026-03-25-marketplace-design.md +287 -0
  189. package/docs/user-guide.md +2016 -0
  190. package/mcp-catalog.json +628 -0
  191. package/package.json +63 -0
  192. package/public/MyAIforOne-logomark-512.svg +16 -0
  193. package/public/MyAIforOne-logomark-transparent.svg +15 -0
  194. package/public/activity.html +314 -0
  195. package/public/admin.html +1674 -0
  196. package/public/agent-dashboard.html +670 -0
  197. package/public/api-docs.html +1106 -0
  198. package/public/automations.html +722 -0
  199. package/public/canvas.css +223 -0
  200. package/public/canvas.js +588 -0
  201. package/public/changelog.html +231 -0
  202. package/public/gym.html +2766 -0
  203. package/public/home.html +1930 -0
  204. package/public/index.html +2809 -0
  205. package/public/lab.html +1643 -0
  206. package/public/library.html +1442 -0
  207. package/public/marketplace.html +1101 -0
  208. package/public/mcp-docs.html +441 -0
  209. package/public/mini.html +390 -0
  210. package/public/monitor.html +584 -0
  211. package/public/org.html +4304 -0
  212. package/public/projects.html +734 -0
  213. package/public/settings.html +645 -0
  214. package/public/tasks.html +932 -0
  215. package/public/trainers/alex.svg +12 -0
  216. package/public/trainers/jordan.svg +12 -0
  217. package/public/trainers/morgan.svg +12 -0
  218. package/public/trainers/riley.svg +12 -0
  219. package/public/trainers/sam.svg +12 -0
  220. package/public/user-guide.html +218 -0
  221. package/registry/agents.json +3 -0
  222. package/registry/apps.json +20 -0
  223. package/registry/installed-drafts.json +3 -0
  224. package/registry/mcps.json +1084 -0
  225. package/registry/prompts/personal/mcp-test-prompt.md +6 -0
  226. package/registry/prompts/personal/memory-recall.md +6 -0
  227. package/registry/prompts/platform/brainstorm.md +15 -0
  228. package/registry/prompts/platform/code-review.md +16 -0
  229. package/registry/prompts/platform/explain.md +16 -0
  230. package/registry/prompts.json +58 -0
  231. package/registry/skills/external/brainstorming.md +5 -0
  232. package/registry/skills/external/code-review.md +40 -0
  233. package/registry/skills/external/frontend-patterns.md +642 -0
  234. package/registry/skills/external/frontend-slides.md +184 -0
  235. package/registry/skills/external/systematic-debugging.md +5 -0
  236. package/registry/skills/external/tdd.md +328 -0
  237. package/registry/skills/external/verification-before-completion.md +5 -0
  238. package/registry/skills/external/writing-plans.md +5 -0
  239. package/registry/skills/platform/ai41_app_build.md +930 -0
  240. package/registry/skills/platform/ai41_app_deploy.md +168 -0
  241. package/registry/skills/platform/ai41_app_orchestrator.md +239 -0
  242. package/registry/skills/platform/ai41_app_patterns.md +359 -0
  243. package/registry/skills/platform/ai41_app_register.md +85 -0
  244. package/registry/skills/platform/ai41_app_scaffold.md +421 -0
  245. package/registry/skills/platform/ai41_app_verify.md +107 -0
  246. package/registry/skills/platform/opProjectCreate.md +239 -0
  247. package/registry/skills/platform/op_devbrowser.md +136 -0
  248. package/registry/skills/platform/sop_brandguidelines.md +103 -0
  249. package/registry/skills/platform/sop_docx.md +117 -0
  250. package/registry/skills/platform/sop_frontenddesign.md +44 -0
  251. package/registry/skills/platform/sop_frontenddesign_v2.md +659 -0
  252. package/registry/skills/platform/sop_mcpbuilder.md +133 -0
  253. package/registry/skills/platform/sop_pdf.md +172 -0
  254. package/registry/skills/platform/sop_pptx.md +133 -0
  255. package/registry/skills/platform/sop_skillcreator.md +104 -0
  256. package/registry/skills/platform/sop_themefactory.md +128 -0
  257. package/registry/skills/platform/sop_webapptesting.md +75 -0
  258. package/registry/skills/platform/sop_webartifactsbuilder.md +97 -0
  259. package/registry/skills/platform/sop_xlsx.md +134 -0
  260. package/registry/skills.json +1055 -0
  261. package/scripts/discover-chats.sh +11 -0
  262. package/scripts/install-service-windows.ps1 +87 -0
  263. package/scripts/install-service.sh +52 -0
  264. package/scripts/seed-registry.ts +195 -0
  265. package/scripts/test-send.sh +5 -0
  266. package/scripts/tray-indicator.ps1 +35 -0
  267. package/scripts/uninstall-service-windows.ps1 +23 -0
  268. package/scripts/uninstall-service.sh +15 -0
  269. package/scripts/xbar-myagent.5s.sh +32 -0
  270. package/server/mcp-server/dist/index.d.ts +11 -0
  271. package/server/mcp-server/dist/index.js +1332 -0
  272. package/server/mcp-server/dist/lib/api-client.d.ts +165 -0
  273. package/server/mcp-server/dist/lib/api-client.js +241 -0
  274. package/server/mcp-server/index.ts +1545 -0
  275. package/server/mcp-server/lib/api-client.ts +366 -0
  276. package/server/mcp-server/tsconfig.json +14 -0
  277. package/src/agent-registry.ts +180 -0
  278. package/src/channels/discord.ts +129 -0
  279. package/src/channels/imessage.ts +261 -0
  280. package/src/channels/slack.ts +208 -0
  281. package/src/channels/telegram.ts +307 -0
  282. package/src/channels/types.ts +62 -0
  283. package/src/channels/whatsapp.ts +227 -0
  284. package/src/config.ts +281 -0
  285. package/src/cron.ts +43 -0
  286. package/src/decrypt-keys.ts +60 -0
  287. package/src/encrypt-keys.ts +70 -0
  288. package/src/executor.ts +2190 -0
  289. package/src/gemini-executor.ts +212 -0
  290. package/src/goals.ts +240 -0
  291. package/src/gym/activity-digest.ts +546 -0
  292. package/src/gym/dimension-scorer.ts +297 -0
  293. package/src/gym/gym-router.ts +801 -0
  294. package/src/gym/index.ts +19 -0
  295. package/src/heartbeat.ts +220 -0
  296. package/src/index.ts +275 -0
  297. package/src/keystore.ts +190 -0
  298. package/src/logger.ts +51 -0
  299. package/src/memory/daily.ts +101 -0
  300. package/src/memory/embeddings.ts +185 -0
  301. package/src/memory/index.ts +218 -0
  302. package/src/memory/search.ts +124 -0
  303. package/src/memory/store.ts +189 -0
  304. package/src/ollama-executor.ts +126 -0
  305. package/src/openai-executor.ts +259 -0
  306. package/src/router.ts +230 -0
  307. package/src/test-message.ts +72 -0
  308. package/src/utils/imsg-db-reader.ts +109 -0
  309. package/src/utils/imsg-rpc.ts +178 -0
  310. package/src/utils/message-formatter.ts +90 -0
  311. package/src/web-ui.ts +5778 -0
  312. package/src/whatsapp-chats.ts +91 -0
  313. package/src/whatsapp-login.ts +110 -0
  314. package/src/wiki-sync.ts +199 -0
  315. package/tsconfig.json +19 -0
@@ -0,0 +1,75 @@
1
+ ---
2
+ name: sop_webapptesting
3
+ description: Python Playwright-based automation toolkit for testing local web applications. Use when testing web apps, automating browser interactions, or validating UI functionality.
4
+ ---
5
+
6
+ # Web Application Testing Toolkit
7
+
8
+ This toolkit provides Python Playwright-based automation for testing local web applications.
9
+
10
+ ## Key Workflow Principle
11
+
12
+ **Reconnaissance-Then-Action Pattern**: Take screenshots or inspect the DOM *after* calling `page.wait_for_load_state('networkidle')` on dynamic applications. Don't inspect the DOM before waiting for `networkidle` on dynamic apps.
13
+
14
+ ## Decision Process
15
+
16
+ 1. First determine if the application is static HTML
17
+ 2. If dynamic, establish whether the server is already running
18
+ 3. Use `scripts/with_server.py` to manage server lifecycles
19
+
20
+ ## Usage Example
21
+
22
+ For a frontend running on port 5173:
23
+
24
+ ```bash
25
+ python scripts/with_server.py --server "npm run dev" --port 5173 -- python your_automation.py
26
+ ```
27
+
28
+ The automation script itself contains only Playwright logic, assuming the server is already running and accessible.
29
+
30
+ ## Best Practices
31
+
32
+ - Treat bundled scripts as "black boxes"
33
+ - Use `--help` with scripts before using them
34
+ - Use synchronous Playwright APIs
35
+ - Employ descriptive selectors (text-based, role-based, or CSS)
36
+ - Implement appropriate waits before DOM inspection or element interaction
37
+
38
+ ## Selector Strategy
39
+
40
+ Prefer selectors in this order:
41
+ 1. **Text-based**: `page.get_by_text("Submit")`
42
+ 2. **Role-based**: `page.get_by_role("button", name="Submit")`
43
+ 3. **Test IDs**: `page.get_by_test_id("submit-btn")`
44
+ 4. **CSS selectors**: `page.locator(".submit-button")`
45
+
46
+ ## Common Patterns
47
+
48
+ ### Wait for Page Load
49
+ ```python
50
+ page.goto("http://localhost:5173")
51
+ page.wait_for_load_state('networkidle')
52
+ ```
53
+
54
+ ### Screenshot After Action
55
+ ```python
56
+ page.click("button#submit")
57
+ page.wait_for_load_state('networkidle')
58
+ page.screenshot(path="after_submit.png")
59
+ ```
60
+
61
+ ### Element Discovery
62
+ ```python
63
+ # Find all buttons
64
+ buttons = page.locator("button").all()
65
+ for btn in buttons:
66
+ print(btn.text_content())
67
+ ```
68
+
69
+ ## Reference Examples
70
+
71
+ Check the `examples/` directory for:
72
+ - Element discovery patterns
73
+ - Static HTML automation
74
+ - Console logging capture
75
+ - Form interaction patterns
@@ -0,0 +1,97 @@
1
+ ---
2
+ name: sop_webartifactsbuilder
3
+ description: Suite of tools for creating elaborate, multi-component HTML artifacts using React, Tailwind CSS, and shadcn/ui. Use for complex artifacts requiring state management, routing, or shadcn/ui components.
4
+ ---
5
+
6
+ # Web Artifacts Builder
7
+
8
+ Build powerful frontend artifacts with React 18 + TypeScript + Vite + Tailwind CSS + shadcn/ui.
9
+
10
+ ## Quick Start
11
+
12
+ ### Step 1: Initialize Project
13
+
14
+ ```bash
15
+ bash scripts/init-artifact.sh <project-name>
16
+ cd <project-name>
17
+ ```
18
+
19
+ This creates a fully configured project with:
20
+ - React + TypeScript (via Vite)
21
+ - Tailwind CSS 3.4.1 with shadcn/ui theming
22
+ - Path aliases (`@/`) configured
23
+ - 40+ shadcn/ui components pre-installed
24
+ - All Radix UI dependencies included
25
+ - Parcel configured for bundling
26
+
27
+ ### Step 2: Develop Your Artifact
28
+
29
+ Edit the generated files to build your artifact.
30
+
31
+ ### Step 3: Bundle to Single HTML File
32
+
33
+ ```bash
34
+ bash scripts/bundle-artifact.sh
35
+ ```
36
+
37
+ Creates `bundle.html` - a self-contained artifact with all JavaScript, CSS, and dependencies inlined.
38
+
39
+ ### Step 4: Share Artifact
40
+
41
+ Share the bundled HTML file in conversation.
42
+
43
+ ## Design Guidelines
44
+
45
+ **CRITICAL**: Avoid "AI slop" aesthetics:
46
+ - NO excessive centered layouts
47
+ - NO purple gradients
48
+ - NO uniform rounded corners
49
+ - NO Inter font everywhere
50
+
51
+ ### Typography
52
+ Choose distinctive, characterful fonts. Pair a display font with a refined body font.
53
+
54
+ ### Color & Theme
55
+ Commit to a cohesive palette using CSS variables. Dominant colors with sharp accents work better than timid, evenly-distributed palettes.
56
+
57
+ ### Motion
58
+ Focus on high-impact moments:
59
+ - Staggered page-load reveals (animation-delay)
60
+ - Scroll-triggered interactions
61
+ - Surprising hover states
62
+
63
+ ### Composition
64
+ - Asymmetry and overlap
65
+ - Diagonal flow
66
+ - Grid-breaking elements
67
+ - Generous negative space OR controlled density
68
+
69
+ ### Backgrounds & Details
70
+ Create atmosphere:
71
+ - Gradient meshes
72
+ - Noise textures
73
+ - Geometric patterns
74
+ - Layered transparencies
75
+ - Dramatic shadows
76
+ - Decorative borders
77
+ - Grain overlays
78
+
79
+ ## shadcn/ui Components
80
+
81
+ Reference: https://ui.shadcn.com/docs/components
82
+
83
+ All components are pre-installed. Import like:
84
+ ```tsx
85
+ import { Button } from "@/components/ui/button"
86
+ import { Card, CardContent, CardHeader } from "@/components/ui/card"
87
+ ```
88
+
89
+ ## Bundle Script Details
90
+
91
+ What `bundle-artifact.sh` does:
92
+ 1. Installs bundling dependencies (parcel, html-inline)
93
+ 2. Creates `.parcelrc` config with path alias support
94
+ 3. Builds with Parcel (no source maps)
95
+ 4. Inlines all assets into single HTML
96
+
97
+ **Requirements**: Your project must have an `index.html` in the root directory.
@@ -0,0 +1,134 @@
1
+ ---
2
+ name: sop_xlsx
3
+ description: Comprehensive spreadsheet creation, editing, and analysis for .xlsx, .xlsm, .csv, and .tsv formats. Use for Excel operations, formula construction, data formatting, and financial modeling.
4
+ ---
5
+
6
+ # XLSX Processing Guide
7
+
8
+ ## Key Requirements
9
+
10
+ **Zero Formula Errors**: All Excel deliverables must contain no errors (#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?).
11
+
12
+ **Template Preservation**: When modifying existing files, match established formatting and conventions.
13
+
14
+ ## Financial Model Standards
15
+
16
+ ### Color Conventions
17
+ | Color | Usage |
18
+ |-------|-------|
19
+ | Blue text | Hardcoded inputs and scenario variables |
20
+ | Black text | All formulas and calculations |
21
+ | Green text | Cross-sheet worksheet links |
22
+ | Red text | External file references |
23
+ | Yellow background | Key assumptions requiring attention |
24
+
25
+ ### Number Formatting
26
+ - Years: Text strings ("2024")
27
+ - Currency: `$#,##0` with unit headers
28
+ - Zeros: Display as "-"
29
+ - Percentages: `0.0%` format
30
+ - Multiples: `0.0x` format
31
+ - Negatives: Parentheses `(123)`
32
+
33
+ ### Formula Rules
34
+ - Place assumptions in separate cells and reference them
35
+ - Never hardcode values in formulas
36
+ - Document hardcoded values with source citations
37
+
38
+ ## Implementation
39
+
40
+ ### Basic Operations with openpyxl
41
+
42
+ ```python
43
+ from openpyxl import load_workbook, Workbook
44
+
45
+ # Load existing file (preserves formulas)
46
+ wb = load_workbook('input.xlsx')
47
+ ws = wb.active
48
+
49
+ # Read cell
50
+ value = ws['A1'].value
51
+
52
+ # Write cell
53
+ ws['B2'] = 'Hello'
54
+ ws['C3'] = 42
55
+ ws['D4'] = '=SUM(A1:A10)'
56
+
57
+ # Save
58
+ wb.save('output.xlsx')
59
+ ```
60
+
61
+ ### Create New Workbook
62
+
63
+ ```python
64
+ wb = Workbook()
65
+ ws = wb.active
66
+ ws.title = "Data"
67
+
68
+ # Add headers
69
+ headers = ['Name', 'Value', 'Date']
70
+ for col, header in enumerate(headers, 1):
71
+ ws.cell(row=1, column=col, value=header)
72
+
73
+ # Add data
74
+ ws.append(['Item 1', 100, '2024-01-15'])
75
+ ws.append(['Item 2', 200, '2024-01-16'])
76
+
77
+ wb.save('new_workbook.xlsx')
78
+ ```
79
+
80
+ ### Formatting
81
+
82
+ ```python
83
+ from openpyxl.styles import Font, Fill, PatternFill, Alignment
84
+
85
+ # Bold header
86
+ ws['A1'].font = Font(bold=True, size=12)
87
+
88
+ # Background color
89
+ ws['A1'].fill = PatternFill(start_color='FFFF00', fill_type='solid')
90
+
91
+ # Alignment
92
+ ws['A1'].alignment = Alignment(horizontal='center')
93
+
94
+ # Number format
95
+ ws['B2'].number_format = '$#,##0.00'
96
+ ws['C3'].number_format = '0.0%'
97
+ ```
98
+
99
+ ## Formula Recalculation
100
+
101
+ **Use Excel formulas, not hardcoded Python calculations.**
102
+
103
+ After creating or modifying spreadsheets, recalculate formulas:
104
+
105
+ ```bash
106
+ python recalc.py output.xlsx 30
107
+ ```
108
+
109
+ The script:
110
+ 1. Configures LibreOffice
111
+ 2. Recalculates all formulas
112
+ 3. Returns JSON indicating any errors with locations
113
+
114
+ ## Verification Checklist
115
+
116
+ Before delivery:
117
+ - [ ] Test sample cell references
118
+ - [ ] Confirm column mappings (column 64 = BL)
119
+ - [ ] Remember Excel uses 1-based indexing
120
+ - [ ] Check for division-by-zero scenarios
121
+ - [ ] Validate all cell references exist
122
+ - [ ] Run recalculation script
123
+
124
+ ## Quick Reference
125
+
126
+ | Task | Method |
127
+ |------|--------|
128
+ | Load file | `load_workbook('file.xlsx')` |
129
+ | Read cell | `ws['A1'].value` |
130
+ | Write cell | `ws['A1'] = value` |
131
+ | Add formula | `ws['A1'] = '=SUM(B1:B10)'` |
132
+ | Format number | `ws['A1'].number_format = '$#,##0'` |
133
+ | Bold text | `ws['A1'].font = Font(bold=True)` |
134
+ | Save | `wb.save('output.xlsx')` |