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.
- package/README.md +113 -0
- package/agents/_template/CLAUDE.md +18 -0
- package/agents/_template/agent.json +7 -0
- package/agents/platform/agentcreator/CLAUDE.md +300 -0
- package/agents/platform/appcreator/CLAUDE.md +158 -0
- package/agents/platform/gym/CLAUDE.md +486 -0
- package/agents/platform/gym/agent.json +40 -0
- package/agents/platform/gym/programs/agent-building/program.json +160 -0
- package/agents/platform/gym/programs/automations-mastery/program.json +129 -0
- package/agents/platform/gym/programs/getting-started/program.json +124 -0
- package/agents/platform/gym/programs/mcp-integrations/program.json +116 -0
- package/agents/platform/gym/programs/multi-model-strategy/program.json +115 -0
- package/agents/platform/gym/programs/prompt-engineering/program.json +136 -0
- package/agents/platform/gym/souls/alex.md +12 -0
- package/agents/platform/gym/souls/jordan.md +12 -0
- package/agents/platform/gym/souls/morgan.md +12 -0
- package/agents/platform/gym/souls/riley.md +12 -0
- package/agents/platform/gym/souls/sam.md +12 -0
- package/agents/platform/hub/CLAUDE.md +372 -0
- package/agents/platform/promptcreator/CLAUDE.md +130 -0
- package/agents/platform/skillcreator/CLAUDE.md +163 -0
- package/bin/cli.js +566 -0
- package/config.example.json +310 -0
- package/dist/agent-registry.d.ts +32 -0
- package/dist/agent-registry.d.ts.map +1 -0
- package/dist/agent-registry.js +144 -0
- package/dist/agent-registry.js.map +1 -0
- package/dist/channels/discord.d.ts +17 -0
- package/dist/channels/discord.d.ts.map +1 -0
- package/dist/channels/discord.js +114 -0
- package/dist/channels/discord.js.map +1 -0
- package/dist/channels/imessage.d.ts +23 -0
- package/dist/channels/imessage.d.ts.map +1 -0
- package/dist/channels/imessage.js +214 -0
- package/dist/channels/imessage.js.map +1 -0
- package/dist/channels/slack.d.ts +19 -0
- package/dist/channels/slack.d.ts.map +1 -0
- package/dist/channels/slack.js +167 -0
- package/dist/channels/slack.js.map +1 -0
- package/dist/channels/telegram.d.ts +19 -0
- package/dist/channels/telegram.d.ts.map +1 -0
- package/dist/channels/telegram.js +274 -0
- package/dist/channels/telegram.js.map +1 -0
- package/dist/channels/types.d.ts +44 -0
- package/dist/channels/types.d.ts.map +1 -0
- package/dist/channels/types.js +18 -0
- package/dist/channels/types.js.map +1 -0
- package/dist/channels/whatsapp.d.ts +23 -0
- package/dist/channels/whatsapp.d.ts.map +1 -0
- package/dist/channels/whatsapp.js +189 -0
- package/dist/channels/whatsapp.js.map +1 -0
- package/dist/config.d.ts +134 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +127 -0
- package/dist/config.js.map +1 -0
- package/dist/cron.d.ts +8 -0
- package/dist/cron.d.ts.map +1 -0
- package/dist/cron.js +35 -0
- package/dist/cron.js.map +1 -0
- package/dist/decrypt-keys.d.ts +7 -0
- package/dist/decrypt-keys.d.ts.map +1 -0
- package/dist/decrypt-keys.js +53 -0
- package/dist/decrypt-keys.js.map +1 -0
- package/dist/encrypt-keys.d.ts +8 -0
- package/dist/encrypt-keys.d.ts.map +1 -0
- package/dist/encrypt-keys.js +62 -0
- package/dist/encrypt-keys.js.map +1 -0
- package/dist/executor.d.ts +31 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +2009 -0
- package/dist/executor.js.map +1 -0
- package/dist/gemini-executor.d.ts +27 -0
- package/dist/gemini-executor.d.ts.map +1 -0
- package/dist/gemini-executor.js +160 -0
- package/dist/gemini-executor.js.map +1 -0
- package/dist/goals.d.ts +24 -0
- package/dist/goals.d.ts.map +1 -0
- package/dist/goals.js +189 -0
- package/dist/goals.js.map +1 -0
- package/dist/gym/activity-digest.d.ts +30 -0
- package/dist/gym/activity-digest.d.ts.map +1 -0
- package/dist/gym/activity-digest.js +506 -0
- package/dist/gym/activity-digest.js.map +1 -0
- package/dist/gym/dimension-scorer.d.ts +76 -0
- package/dist/gym/dimension-scorer.d.ts.map +1 -0
- package/dist/gym/dimension-scorer.js +236 -0
- package/dist/gym/dimension-scorer.js.map +1 -0
- package/dist/gym/gym-router.d.ts +7 -0
- package/dist/gym/gym-router.d.ts.map +1 -0
- package/dist/gym/gym-router.js +718 -0
- package/dist/gym/gym-router.js.map +1 -0
- package/dist/gym/index.d.ts +11 -0
- package/dist/gym/index.d.ts.map +1 -0
- package/dist/gym/index.js +11 -0
- package/dist/gym/index.js.map +1 -0
- package/dist/heartbeat.d.ts +21 -0
- package/dist/heartbeat.d.ts.map +1 -0
- package/dist/heartbeat.js +163 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +254 -0
- package/dist/index.js.map +1 -0
- package/dist/keystore.d.ts +22 -0
- package/dist/keystore.d.ts.map +1 -0
- package/dist/keystore.js +178 -0
- package/dist/keystore.js.map +1 -0
- package/dist/logger.d.ts +9 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +45 -0
- package/dist/logger.js.map +1 -0
- package/dist/memory/daily.d.ts +22 -0
- package/dist/memory/daily.d.ts.map +1 -0
- package/dist/memory/daily.js +82 -0
- package/dist/memory/daily.js.map +1 -0
- package/dist/memory/embeddings.d.ts +15 -0
- package/dist/memory/embeddings.d.ts.map +1 -0
- package/dist/memory/embeddings.js +154 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/index.d.ts +32 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +159 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/search.d.ts +21 -0
- package/dist/memory/search.d.ts.map +1 -0
- package/dist/memory/search.js +77 -0
- package/dist/memory/search.js.map +1 -0
- package/dist/memory/store.d.ts +23 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +144 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/ollama-executor.d.ts +17 -0
- package/dist/ollama-executor.d.ts.map +1 -0
- package/dist/ollama-executor.js +112 -0
- package/dist/ollama-executor.js.map +1 -0
- package/dist/openai-executor.d.ts +38 -0
- package/dist/openai-executor.d.ts.map +1 -0
- package/dist/openai-executor.js +197 -0
- package/dist/openai-executor.js.map +1 -0
- package/dist/router.d.ts +11 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +185 -0
- package/dist/router.js.map +1 -0
- package/dist/test-message.d.ts +2 -0
- package/dist/test-message.d.ts.map +1 -0
- package/dist/test-message.js +60 -0
- package/dist/test-message.js.map +1 -0
- package/dist/utils/imsg-db-reader.d.ts +24 -0
- package/dist/utils/imsg-db-reader.d.ts.map +1 -0
- package/dist/utils/imsg-db-reader.js +92 -0
- package/dist/utils/imsg-db-reader.js.map +1 -0
- package/dist/utils/imsg-rpc.d.ts +25 -0
- package/dist/utils/imsg-rpc.d.ts.map +1 -0
- package/dist/utils/imsg-rpc.js +149 -0
- package/dist/utils/imsg-rpc.js.map +1 -0
- package/dist/utils/message-formatter.d.ts +3 -0
- package/dist/utils/message-formatter.d.ts.map +1 -0
- package/dist/utils/message-formatter.js +69 -0
- package/dist/utils/message-formatter.js.map +1 -0
- package/dist/web-ui.d.ts +12 -0
- package/dist/web-ui.d.ts.map +1 -0
- package/dist/web-ui.js +5784 -0
- package/dist/web-ui.js.map +1 -0
- package/dist/whatsapp-chats.d.ts +2 -0
- package/dist/whatsapp-chats.d.ts.map +1 -0
- package/dist/whatsapp-chats.js +76 -0
- package/dist/whatsapp-chats.js.map +1 -0
- package/dist/whatsapp-login.d.ts +2 -0
- package/dist/whatsapp-login.d.ts.map +1 -0
- package/dist/whatsapp-login.js +90 -0
- package/dist/whatsapp-login.js.map +1 -0
- package/dist/wiki-sync.d.ts +21 -0
- package/dist/wiki-sync.d.ts.map +1 -0
- package/dist/wiki-sync.js +147 -0
- package/dist/wiki-sync.js.map +1 -0
- package/docs/AddNewAgentGuide.md +100 -0
- package/docs/AddNewMcpGuide.md +72 -0
- package/docs/Architecture.md +795 -0
- package/docs/CLAUDE-AI-SETUP.md +166 -0
- package/docs/Setup.md +297 -0
- package/docs/ai-gym-architecture.md +1040 -0
- package/docs/ai-gym-build-plan.md +343 -0
- package/docs/ai-gym-onboarding.md +122 -0
- package/docs/appcreator_plan.md +348 -0
- package/docs/platform-mcp-audit.md +320 -0
- package/docs/server-deployment-plan.md +503 -0
- package/docs/superpowers/plans/2026-03-25-marketplace.md +1281 -0
- package/docs/superpowers/specs/2026-03-25-marketplace-design.md +287 -0
- package/docs/user-guide.md +2016 -0
- package/mcp-catalog.json +628 -0
- package/package.json +63 -0
- package/public/MyAIforOne-logomark-512.svg +16 -0
- package/public/MyAIforOne-logomark-transparent.svg +15 -0
- package/public/activity.html +314 -0
- package/public/admin.html +1674 -0
- package/public/agent-dashboard.html +670 -0
- package/public/api-docs.html +1106 -0
- package/public/automations.html +722 -0
- package/public/canvas.css +223 -0
- package/public/canvas.js +588 -0
- package/public/changelog.html +231 -0
- package/public/gym.html +2766 -0
- package/public/home.html +1930 -0
- package/public/index.html +2809 -0
- package/public/lab.html +1643 -0
- package/public/library.html +1442 -0
- package/public/marketplace.html +1101 -0
- package/public/mcp-docs.html +441 -0
- package/public/mini.html +390 -0
- package/public/monitor.html +584 -0
- package/public/org.html +4304 -0
- package/public/projects.html +734 -0
- package/public/settings.html +645 -0
- package/public/tasks.html +932 -0
- package/public/trainers/alex.svg +12 -0
- package/public/trainers/jordan.svg +12 -0
- package/public/trainers/morgan.svg +12 -0
- package/public/trainers/riley.svg +12 -0
- package/public/trainers/sam.svg +12 -0
- package/public/user-guide.html +218 -0
- package/registry/agents.json +3 -0
- package/registry/apps.json +20 -0
- package/registry/installed-drafts.json +3 -0
- package/registry/mcps.json +1084 -0
- package/registry/prompts/personal/mcp-test-prompt.md +6 -0
- package/registry/prompts/personal/memory-recall.md +6 -0
- package/registry/prompts/platform/brainstorm.md +15 -0
- package/registry/prompts/platform/code-review.md +16 -0
- package/registry/prompts/platform/explain.md +16 -0
- package/registry/prompts.json +58 -0
- package/registry/skills/external/brainstorming.md +5 -0
- package/registry/skills/external/code-review.md +40 -0
- package/registry/skills/external/frontend-patterns.md +642 -0
- package/registry/skills/external/frontend-slides.md +184 -0
- package/registry/skills/external/systematic-debugging.md +5 -0
- package/registry/skills/external/tdd.md +328 -0
- package/registry/skills/external/verification-before-completion.md +5 -0
- package/registry/skills/external/writing-plans.md +5 -0
- package/registry/skills/platform/ai41_app_build.md +930 -0
- package/registry/skills/platform/ai41_app_deploy.md +168 -0
- package/registry/skills/platform/ai41_app_orchestrator.md +239 -0
- package/registry/skills/platform/ai41_app_patterns.md +359 -0
- package/registry/skills/platform/ai41_app_register.md +85 -0
- package/registry/skills/platform/ai41_app_scaffold.md +421 -0
- package/registry/skills/platform/ai41_app_verify.md +107 -0
- package/registry/skills/platform/opProjectCreate.md +239 -0
- package/registry/skills/platform/op_devbrowser.md +136 -0
- package/registry/skills/platform/sop_brandguidelines.md +103 -0
- package/registry/skills/platform/sop_docx.md +117 -0
- package/registry/skills/platform/sop_frontenddesign.md +44 -0
- package/registry/skills/platform/sop_frontenddesign_v2.md +659 -0
- package/registry/skills/platform/sop_mcpbuilder.md +133 -0
- package/registry/skills/platform/sop_pdf.md +172 -0
- package/registry/skills/platform/sop_pptx.md +133 -0
- package/registry/skills/platform/sop_skillcreator.md +104 -0
- package/registry/skills/platform/sop_themefactory.md +128 -0
- package/registry/skills/platform/sop_webapptesting.md +75 -0
- package/registry/skills/platform/sop_webartifactsbuilder.md +97 -0
- package/registry/skills/platform/sop_xlsx.md +134 -0
- package/registry/skills.json +1055 -0
- package/scripts/discover-chats.sh +11 -0
- package/scripts/install-service-windows.ps1 +87 -0
- package/scripts/install-service.sh +52 -0
- package/scripts/seed-registry.ts +195 -0
- package/scripts/test-send.sh +5 -0
- package/scripts/tray-indicator.ps1 +35 -0
- package/scripts/uninstall-service-windows.ps1 +23 -0
- package/scripts/uninstall-service.sh +15 -0
- package/scripts/xbar-myagent.5s.sh +32 -0
- package/server/mcp-server/dist/index.d.ts +11 -0
- package/server/mcp-server/dist/index.js +1332 -0
- package/server/mcp-server/dist/lib/api-client.d.ts +165 -0
- package/server/mcp-server/dist/lib/api-client.js +241 -0
- package/server/mcp-server/index.ts +1545 -0
- package/server/mcp-server/lib/api-client.ts +366 -0
- package/server/mcp-server/tsconfig.json +14 -0
- package/src/agent-registry.ts +180 -0
- package/src/channels/discord.ts +129 -0
- package/src/channels/imessage.ts +261 -0
- package/src/channels/slack.ts +208 -0
- package/src/channels/telegram.ts +307 -0
- package/src/channels/types.ts +62 -0
- package/src/channels/whatsapp.ts +227 -0
- package/src/config.ts +281 -0
- package/src/cron.ts +43 -0
- package/src/decrypt-keys.ts +60 -0
- package/src/encrypt-keys.ts +70 -0
- package/src/executor.ts +2190 -0
- package/src/gemini-executor.ts +212 -0
- package/src/goals.ts +240 -0
- package/src/gym/activity-digest.ts +546 -0
- package/src/gym/dimension-scorer.ts +297 -0
- package/src/gym/gym-router.ts +801 -0
- package/src/gym/index.ts +19 -0
- package/src/heartbeat.ts +220 -0
- package/src/index.ts +275 -0
- package/src/keystore.ts +190 -0
- package/src/logger.ts +51 -0
- package/src/memory/daily.ts +101 -0
- package/src/memory/embeddings.ts +185 -0
- package/src/memory/index.ts +218 -0
- package/src/memory/search.ts +124 -0
- package/src/memory/store.ts +189 -0
- package/src/ollama-executor.ts +126 -0
- package/src/openai-executor.ts +259 -0
- package/src/router.ts +230 -0
- package/src/test-message.ts +72 -0
- package/src/utils/imsg-db-reader.ts +109 -0
- package/src/utils/imsg-rpc.ts +178 -0
- package/src/utils/message-formatter.ts +90 -0
- package/src/web-ui.ts +5778 -0
- package/src/whatsapp-chats.ts +91 -0
- package/src/whatsapp-login.ts +110 -0
- package/src/wiki-sync.ts +199 -0
- 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')` |
|