cue-ai 0.9.2 → 0.9.3
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/CHANGELOG.md +4 -3
- package/README.md +148 -170
- package/bin/cue-learnings +30 -4
- package/bin/cue-review-progress +0 -0
- package/bin/cue-review-watch +0 -0
- package/dist/cue.js +4328 -3108
- package/package.json +1 -1
- package/plugins/cue/commands/cue-switch.md +1 -1
- package/plugins/cue/commands/cue.md +1 -1
- package/profiles/backend/profile.yaml +4 -0
- package/profiles/browser/profile.yaml +4 -0
- package/profiles/career/profile.yaml +2 -13
- package/profiles/commerce/profile.yaml +0 -2
- package/profiles/coolify/profile.yaml +0 -1
- package/profiles/core/profile.yaml +78 -11
- package/profiles/dash-merge-test/profile.yaml +6 -1
- package/profiles/designer/profile.yaml +9 -1
- package/profiles/dropshipping/profile.yaml +69 -0
- package/profiles/frontend/profile.yaml +4 -0
- package/profiles/google-ads/profile.yaml +34 -0
- package/profiles/google-analytics/profile.yaml +34 -0
- package/profiles/google-drive/profile.yaml +34 -0
- package/profiles/gstack/profile.yaml +117 -29
- package/profiles/marketing/profile.yaml +0 -1
- package/profiles/media/README.md +70 -0
- package/profiles/media/profile.yaml +104 -0
- package/profiles/nano-banana/profile.yaml +52 -0
- package/profiles/ops/profile.yaml +1 -2
- package/profiles/secops/profile.yaml +3 -0
- package/profiles/skill-writer/profile.yaml +15 -0
- package/profiles/video/profile.yaml +3 -0
- package/profiles/web-frontend-base/profile.yaml +6 -0
- package/profiles/webshop/profile.yaml +0 -1
- package/profiles/webshop-google/profile.yaml +1 -0
- package/profiles/x-growth-bot/profile.yaml +2 -0
- package/resources/icons/generate-icons.py +2 -128
- package/resources/mcps/configs/claude.sanitized.json +88 -20
- package/resources/mcps/configs/claude_runtime.sanitized.json +40 -1
- package/resources/mcps/configs/codex.sanitized.json +29 -0
- package/resources/skills/skills/career/job-hunter/LICENSE +21 -0
- package/resources/skills/skills/career/job-hunter/README.md +323 -0
- package/resources/skills/skills/career/job-hunter/SKILL.md +91 -0
- package/resources/skills/skills/career/job-hunter/agents/README.md +96 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-assessment-prep.md +195 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-ats-scan.md +155 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-bias-audit.md +224 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-cover-letter.md +69 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-decode-jd.md +117 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-fit-score.md +183 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-linkedin-audit.md +74 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-linkedin-scrape.md +255 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-portfolio-brief.md +123 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-reality-check.md +164 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-reference-prep.md +150 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-rejection-analysis.md +172 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-resume.md +70 -0
- package/resources/skills/skills/career/job-hunter/agents/apply-skills-gap-filler.md +109 -0
- package/resources/skills/skills/career/job-hunter/agents/career-internal.md +94 -0
- package/resources/skills/skills/career/job-hunter/agents/career-linkedin-content.md +173 -0
- package/resources/skills/skills/career/job-hunter/agents/career-linkedin-scanner.md +262 -0
- package/resources/skills/skills/career/job-hunter/agents/career-network-message.md +108 -0
- package/resources/skills/skills/career/job-hunter/agents/career-promote.md +102 -0
- package/resources/skills/skills/career/job-hunter/agents/career-review.md +71 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-debrief.md +117 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-mock.md +171 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-panel-decoder.md +152 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-prep.md +184 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-question-bank.md +133 -0
- package/resources/skills/skills/career/job-hunter/agents/interview-research.md +148 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-compare.md +117 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-counteroffer.md +144 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-deadline-manager.md +148 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-negotiate.md +126 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-schedule.md +99 -0
- package/resources/skills/skills/career/job-hunter/agents/offer-thankyou.md +80 -0
- package/resources/skills/skills/career/job-hunter/agents/search-company-research.md +146 -0
- package/resources/skills/skills/career/job-hunter/agents/search-follow-up.md +129 -0
- package/resources/skills/skills/career/job-hunter/agents/search-ghost-job-detector.md +152 -0
- package/resources/skills/skills/career/job-hunter/agents/search-inbox-scan.md +193 -0
- package/resources/skills/skills/career/job-hunter/agents/search-interview-scorecard.md +164 -0
- package/resources/skills/skills/career/job-hunter/agents/search-jobs.md +149 -0
- package/resources/skills/skills/career/job-hunter/agents/search-momentum-check.md +194 -0
- package/resources/skills/skills/career/job-hunter/agents/search-outreach.md +85 -0
- package/resources/skills/skills/career/job-hunter/agents/search-referral-finder.md +124 -0
- package/resources/skills/skills/career/job-hunter/agents/search-salary.md +96 -0
- package/resources/skills/skills/career/job-hunter/agents/search-send-email.md +109 -0
- package/resources/skills/skills/career/job-hunter/agents/search-tracker-update.md +127 -0
- package/resources/skills/skills/career/job-hunter/inputs/README.md +26 -0
- package/resources/skills/skills/career/job-hunter/inputs/apply-linkedin-url.txt +8 -0
- package/resources/skills/skills/career/job-hunter/inputs/interview-context.md +24 -0
- package/resources/skills/skills/career/job-hunter/inputs/job-description.md +20 -0
- package/resources/skills/skills/career/job-hunter/inputs/job-search-criteria.md +36 -0
- package/resources/skills/skills/career/job-hunter/inputs/my-linkedin.md +24 -0
- package/resources/skills/skills/career/job-hunter/inputs/my-resume.md +28 -0
- package/resources/skills/skills/career/job-hunter/inputs/search-outreach-target.md +24 -0
- package/resources/skills/skills/career/job-hunter/rules/README.md +37 -0
- package/resources/skills/skills/career/job-hunter/rules/writing-rules.md +81 -0
- package/resources/skills/skills/design/banana/SKILL.md +375 -0
- package/resources/skills/skills/design/banana/references/cost-tracking.md +47 -0
- package/resources/skills/skills/design/banana/references/gemini-models.md +236 -0
- package/resources/skills/skills/design/banana/references/mcp-tools.md +145 -0
- package/resources/skills/skills/design/banana/references/post-processing.md +192 -0
- package/resources/skills/skills/design/banana/references/presets.md +69 -0
- package/resources/skills/skills/design/banana/references/prompt-engineering.md +481 -0
- package/resources/skills/skills/design/banana/scripts/batch.py +97 -0
- package/resources/skills/skills/design/banana/scripts/cost_tracker.py +191 -0
- package/resources/skills/skills/design/banana/scripts/edit.py +159 -0
- package/resources/skills/skills/design/banana/scripts/generate.py +168 -0
- package/resources/skills/skills/design/banana/scripts/presets.py +154 -0
- package/resources/skills/skills/design/banana/scripts/setup_mcp.py +151 -0
- package/resources/skills/skills/design/banana/scripts/validate_setup.py +133 -0
- package/resources/skills/skills/gstack/ship/SKILL.md +13 -0
- package/resources/skills/skills/media/3d-logo-animation/SKILL.md +59 -0
- package/resources/skills/skills/media/action-figure-generator/SKILL.md +48 -0
- package/resources/skills/skills/media/ad-creative/SKILL.md +79 -0
- package/resources/skills/skills/media/ai-clipping/SKILL.md +194 -0
- package/resources/skills/skills/media/ai-clipping/scripts/run-ai-clipping.sh +200 -0
- package/resources/skills/skills/media/ai-fight-scene/SKILL.md +132 -0
- package/resources/skills/skills/media/amazon-product-listing/SKILL.md +68 -0
- package/resources/skills/skills/media/animal-video-generator/SKILL.md +59 -0
- package/resources/skills/skills/media/award-ceremony-video/SKILL.md +87 -0
- package/resources/skills/skills/media/blog-header/SKILL.md +61 -0
- package/resources/skills/skills/media/brand-kit/SKILL.md +72 -0
- package/resources/skills/skills/media/brochures/SKILL.md +65 -0
- package/resources/skills/skills/media/cartoon-dance-animation/SKILL.md +62 -0
- package/resources/skills/skills/media/character-story-video/SKILL.md +84 -0
- package/resources/skills/skills/media/chibi-collage-effect/SKILL.md +63 -0
- package/resources/skills/skills/media/cinema-director/SKILL.md +93 -0
- package/resources/skills/skills/media/cinema-director/scripts/generate-film.sh +78 -0
- package/resources/skills/skills/media/color-analysis-board/SKILL.md +71 -0
- package/resources/skills/skills/media/core-edit/SKILL.md +48 -0
- package/resources/skills/skills/media/core-edit/edit-image.sh +54 -0
- package/resources/skills/skills/media/core-edit/enhance-image.sh +191 -0
- package/resources/skills/skills/media/core-edit/lipsync.sh +144 -0
- package/resources/skills/skills/media/core-edit/video-effects.sh +193 -0
- package/resources/skills/skills/media/core-media/SKILL.md +49 -0
- package/resources/skills/skills/media/core-media/create-music.sh +169 -0
- package/resources/skills/skills/media/core-media/generate-image.sh +161 -0
- package/resources/skills/skills/media/core-media/generate-video.sh +137 -0
- package/resources/skills/skills/media/core-media/image-to-video.sh +228 -0
- package/resources/skills/skills/media/core-media/schema_data.json +18708 -0
- package/resources/skills/skills/media/core-media/upload.sh +41 -0
- package/resources/skills/skills/media/core-platform/SKILL.md +41 -0
- package/resources/skills/skills/media/core-platform/check-result.sh +37 -0
- package/resources/skills/skills/media/core-platform/setup.sh +31 -0
- package/resources/skills/skills/media/couple-grid-creator/SKILL.md +47 -0
- package/resources/skills/skills/media/design-guide/SKILL.md +73 -0
- package/resources/skills/skills/media/drone-style-video/SKILL.md +61 -0
- package/resources/skills/skills/media/fashion-try-on/SKILL.md +61 -0
- package/resources/skills/skills/media/floor-plan-rendering/SKILL.md +56 -0
- package/resources/skills/skills/media/freeze-effect-video/SKILL.md +100 -0
- package/resources/skills/skills/media/giant-product-showcase/SKILL.md +61 -0
- package/resources/skills/skills/media/instagram-post/SKILL.md +58 -0
- package/resources/skills/skills/media/interior-design/SKILL.md +61 -0
- package/resources/skills/skills/media/interior-design-visualizer/SKILL.md +57 -0
- package/resources/skills/skills/media/jewelry-product-video/SKILL.md +61 -0
- package/resources/skills/skills/media/kdenlive/SKILL.md +106 -0
- package/resources/skills/skills/media/kdenlive/scripts/assemble.sh +57 -0
- package/resources/skills/skills/media/kdenlive/scripts/common.sh +30 -0
- package/resources/skills/skills/media/kdenlive/scripts/inspect.sh +19 -0
- package/resources/skills/skills/media/kdenlive/scripts/reframe.sh +22 -0
- package/resources/skills/skills/media/kdenlive/scripts/render.sh +16 -0
- package/resources/skills/skills/media/kdenlive/scripts/title-card.sh +25 -0
- package/resources/skills/skills/media/keyboard-art-maker/SKILL.md +44 -0
- package/resources/skills/skills/media/logo-branding/SKILL.md +70 -0
- package/resources/skills/skills/media/logo-creator/SKILL.md +80 -0
- package/resources/skills/skills/media/logo-creator/scripts/create-logo.sh +38 -0
- package/resources/skills/skills/media/logo-generator/SKILL.md +56 -0
- package/resources/skills/skills/media/multi-angle-reshoot/SKILL.md +70 -0
- package/resources/skills/skills/media/multi-angle-shots/SKILL.md +73 -0
- package/resources/skills/skills/media/music-video/SKILL.md +61 -0
- package/resources/skills/skills/media/nano-banana/SKILL.md +80 -0
- package/resources/skills/skills/media/nano-banana/scripts/generate-nano-art.sh +54 -0
- package/resources/skills/skills/media/one-shot-video/SKILL.md +56 -0
- package/resources/skills/skills/media/photo-pack-generator/SKILL.md +205 -0
- package/resources/skills/skills/media/photo-pack-generator/scripts/generate-pack.sh +241 -0
- package/resources/skills/skills/media/product-ad-cinematic/SKILL.md +78 -0
- package/resources/skills/skills/media/product-campaign/SKILL.md +76 -0
- package/resources/skills/skills/media/product-showcase-video/SKILL.md +60 -0
- package/resources/skills/skills/media/product-video-ad-maker/SKILL.md +59 -0
- package/resources/skills/skills/media/rednote-cover/SKILL.md +57 -0
- package/resources/skills/skills/media/seedance-2/SKILL.md +632 -0
- package/resources/skills/skills/media/seedance-2/scripts/generate-seedance.sh +701 -0
- package/resources/skills/skills/media/selfie-with-celebrities/SKILL.md +64 -0
- package/resources/skills/skills/media/social-media-video/SKILL.md +277 -0
- package/resources/skills/skills/media/social-media-video/scripts/run-social-video.sh +316 -0
- package/resources/skills/skills/media/social-pack/SKILL.md +58 -0
- package/resources/skills/skills/media/storyboard/SKILL.md +57 -0
- package/resources/skills/skills/media/storyboard-to-cooking-video/SKILL.md +143 -0
- package/resources/skills/skills/media/talking-baby-video/SKILL.md +57 -0
- package/resources/skills/skills/media/ugc-ads-workflow/SKILL.md +70 -0
- package/resources/skills/skills/media/ugc-lifestyle-try-on/SKILL.md +65 -0
- package/resources/skills/skills/media/ugc-video-factory/SKILL.md +134 -0
- package/resources/skills/skills/media/ui-design/SKILL.md +81 -0
- package/resources/skills/skills/media/ui-design/scripts/generate-mockup.sh +49 -0
- package/resources/skills/skills/media/url-to-design/SKILL.md +61 -0
- package/resources/skills/skills/media/workflow/SKILL.md +197 -0
- package/resources/skills/skills/media/workflow/scripts/discover-workflow.sh +18 -0
- package/resources/skills/skills/media/workflow/scripts/generate-workflow.sh +33 -0
- package/resources/skills/skills/media/workflow/scripts/interactive-run.sh +16 -0
- package/resources/skills/skills/media/workflow/scripts/list-workflows.sh +20 -0
- package/resources/skills/skills/media/workflow/scripts/run-workflow.sh +34 -0
- package/resources/skills/skills/media/youtube-shorts/SKILL.md +173 -0
- package/resources/skills/skills/media/youtube-shorts/scripts/run-youtube-shorts.sh +141 -0
- package/resources/skills/skills/media/youtube-thumbnail/SKILL.md +66 -0
- package/resources/skills/skills/meta/cue-developer/references/architecture.md +2 -2
- package/resources/skills/skills/meta/cue-usage/SKILL.md +1 -1
- package/resources/skills/skills/meta/profile-fit-monitor/SKILL.md +2 -2
- package/resources/skills/skills/meta/profile-optimizer/SKILL.md +1 -1
- package/resources/skills/skills/meta/profile-suggest/SKILL.md +7 -7
- package/resources/skills/skills/meta/profile-summon/SKILL.md +159 -0
- package/resources/skills/skills/meta/profile-summon/evals/evals.json +53 -0
- package/resources/skills/skills/meta/save-profile/SKILL.md +1 -1
- package/resources/skills/skills/meta/skill-reviewer/SKILL.md +3 -0
- package/resources/skills/skills/meta/skill-reviewer/references/tdd-for-skills.md +55 -0
- package/resources/skills/skills/research/find-skills/SKILL.md +1 -1
- package/resources/skills/skills/review/code-review-deep/SKILL.md +20 -0
- package/resources/skills/skills/security/trivy-scan/SKILL.md +139 -0
- package/resources/skills/skills/security/trivy-scan/scripts/ensure-trivy.sh +21 -0
- package/resources/skills/skills/tools/ccusage/SKILL.md +142 -0
- package/src/commands/_index.ts +8 -0
- package/src/commands/ai.ts +2 -2
- package/src/commands/auto-detect.test.ts +74 -0
- package/src/commands/auto-detect.ts +9 -7
- package/src/commands/cli.test.ts +20 -4
- package/src/commands/cli.ts +36 -20
- package/src/commands/create-profile.ts +2 -2
- package/src/commands/debug.ts +2 -2
- package/src/commands/discover.ts +14 -4
- package/src/commands/export-docker.ts +1 -1
- package/src/commands/features-batch1.test.ts +1 -1
- package/src/commands/gates.ts +1 -1
- package/src/commands/import-profile.ts +1 -1
- package/src/commands/init.ts +15 -11
- package/src/commands/install.test.ts +192 -0
- package/src/commands/install.ts +610 -0
- package/src/commands/launch-handoff.e2e.test.ts +33 -1
- package/src/commands/launch.e2e.test.ts +15 -10
- package/src/commands/launch.ts +73 -116
- package/src/commands/materialize.ts +2 -2
- package/src/commands/prune.ts +1 -1
- package/src/commands/security-audit.ts +1 -1
- package/src/commands/shell.ts +7 -7
- package/src/commands/skill-report.ts +1 -1
- package/src/commands/skills.ts +3 -3
- package/src/commands/snapshot.ts +2 -2
- package/src/commands/summon.test.ts +116 -0
- package/src/commands/summon.ts +338 -0
- package/src/commands/trigger-gaps.ts +1 -1
- package/src/commands/use.ts +47 -3
- package/src/commands/watch-live.ts +5 -5
- package/src/commands/watch.ts +8 -8
- package/src/index.ts +2 -0
- package/src/lib/active-sessions.test.ts +3 -3
- package/src/lib/active-sessions.ts +4 -4
- package/src/lib/auto-detect.test.ts +172 -8
- package/src/lib/auto-detect.ts +191 -136
- package/src/lib/codex-persona-parity.test.ts +58 -0
- package/src/lib/companion-detect.test.ts +43 -1
- package/src/lib/companion-detect.ts +35 -0
- package/src/lib/credentials-sync.test.ts +121 -1
- package/src/lib/credentials-sync.ts +95 -1
- package/src/lib/cwd-resolver.test.ts +8 -8
- package/src/lib/cwd-resolver.ts +2 -2
- package/src/lib/dashboard-merge.test.ts +9 -4
- package/src/lib/dashboard-server.ts +1 -1
- package/src/lib/picker.test.ts +1 -1
- package/src/lib/picker.ts +5 -5
- package/src/lib/profile-merge.test.ts +8 -0
- package/src/lib/profile-names.test.ts +3 -3
- package/src/lib/runtime-install.ts +166 -0
- package/src/lib/runtime-materializer.test.ts +137 -0
- package/src/lib/runtime-materializer.ts +105 -2
- package/src/lib/skill-router.test.ts +38 -0
- package/src/lib/skill-router.ts +65 -4
- package/profiles/eu-tender-research/README.md +0 -48
- package/profiles/eu-tender-research/logo.png +0 -0
- package/profiles/eu-tender-research/profile.yaml +0 -108
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: muapi-ui-design
|
|
3
|
+
version: 0.1.0
|
|
4
|
+
description: Generate high-fidelity UI/UX mockups for mobile and web apps using Atomic Design principles — creates wireframes and design systems via muapi.ai
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 🎨 UI/UX Design Mockup Skill
|
|
8
|
+
|
|
9
|
+
**A specialized skill for AI Agents to architect high-fidelity digital interfaces.**
|
|
10
|
+
The UI/UX Design skill translates product requirements into technical design specifications for high-fidelity mockups, wireframes, and design systems.
|
|
11
|
+
|
|
12
|
+
## Core Competencies
|
|
13
|
+
|
|
14
|
+
1. **Atomic Design Orchestration**: Structuring interfaces from Atoms (buttons) to Organisms (headers) for system consistency.
|
|
15
|
+
2. **Platform-Specific Layouts**: Designing for responsive breakpoints across Mobile (iOS/Android) and Web (SaaS/E-commerce).
|
|
16
|
+
3. **Design System Integration**: Specifying typography scales, spacing tokens, and color palettes (Hex/HSL).
|
|
17
|
+
4. **Heuristic Awareness**: Ensuring designs follow established usability principles (Nielsen's 10 Heuristics).
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## 🏗️ Technical Specification
|
|
22
|
+
|
|
23
|
+
### 1. Intent Mapping Table
|
|
24
|
+
|
|
25
|
+
| Creative Intent | Style | Layout Pattern | Focus |
|
|
26
|
+
| :--- | :--- | :--- | :--- |
|
|
27
|
+
| **Enterprise SaaS** | Modern/Clean | Dashboard/Grid | Data Density |
|
|
28
|
+
| **Consumer App** | Glassmorphism | F-Pattern / Cards | Visual Flair |
|
|
29
|
+
| **E-commerce** | Minimalist | Z-Pattern / Product Grid | Conversion |
|
|
30
|
+
| **Portfolio** | Brutalist | Asymmetric | Identity |
|
|
31
|
+
| **Utility/Tool** | Neomorphism | Control Panel | Tactile Feedback |
|
|
32
|
+
|
|
33
|
+
### 2. Design Tokens & Variables
|
|
34
|
+
- `Typography`: Geometric Sans (Inter/Roboto) for tech; Serif (Playfair) for luxury.
|
|
35
|
+
- `Spacing`: 8pt grid system for consistent rhythmic spacing.
|
|
36
|
+
- `Color`: High-contrast accessible palettes (WCAG 2.1 compliant).
|
|
37
|
+
- `Elevation`: Shadow-based depth vs. Flat design layers.
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 🧠 Prompt Optimization Protocol (Agent Instruction)
|
|
42
|
+
|
|
43
|
+
**Before calling the script, the Agent MUST expand the user's requirements into a Design Specification:**
|
|
44
|
+
|
|
45
|
+
1. **ATOMIC STRUCTURE**: Mention specific components (Atoms): *Glassmorphic buttons*, *Input fields with 4px radius*, *Iconic sidebars*.
|
|
46
|
+
2. **HIERARCHY**: Use layout patterns: *F-Pattern* for content-heavy sites, *Z-Pattern* for landing pages, *Grid-based Dashboards*.
|
|
47
|
+
3. **TYPOGRAPHY & TOKENS**: Injected design tokens: *Inter Sans-serif*, *8pt spacing system*, *WCAG high-contrast colors*.
|
|
48
|
+
4. **NO SKEUOMORPHISM**: Ensure the prompt enforces *Flat Design* or *Glassmorphism* to avoid "photograph-of-screen" results.
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## 🚀 Protocol: Using the UI Designer
|
|
53
|
+
|
|
54
|
+
### Step 1: Define the Product Brief
|
|
55
|
+
Provide the agent with a feature list and target audience.
|
|
56
|
+
|
|
57
|
+
### Step 2: Invoke the Script
|
|
58
|
+
The `generate-mockup.sh` script expands the brief using internal knowledge of design systems.
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
# Designing a Fintech Mobile App
|
|
62
|
+
bash scripts/generate-mockup.sh \
|
|
63
|
+
--desc "crypto wallet home with price charts" \
|
|
64
|
+
--platform mobile \
|
|
65
|
+
--theme dark \
|
|
66
|
+
--style glassmorphism
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## ⚠️ Constraints & Guardrails
|
|
72
|
+
|
|
73
|
+
- **Device Realism**: **MANDATORY** - Do not show hands, physical phones, or desks. Generate pure UI/UX mockups only.
|
|
74
|
+
- **Accessibility**: Avoid low-contrast text on bright backgrounds.
|
|
75
|
+
- **Complexity**: Keep "Atoms" consistent across a single page generation.
|
|
76
|
+
- **Text Rendering**: Use Flux for legible headers; specify placeholder text for smaller body copy.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## ⚙️ Implementation Details
|
|
81
|
+
This skill translates a high-level `DESCRIPTION` into a `UX_BRIEF` that specifies layout patterns, design tokens, and aesthetic constraints for the `core/media/generate-image.sh` primitive.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Expert Skill: UI/UX Design Mockup Generator
|
|
3
|
+
# Translates product requirements into design system directives.
|
|
4
|
+
|
|
5
|
+
PLATFORM="mobile"
|
|
6
|
+
STYLE="modern"
|
|
7
|
+
THEME="light"
|
|
8
|
+
DESCRIPTION=""
|
|
9
|
+
|
|
10
|
+
while [[ $# -gt 0 ]]; do
|
|
11
|
+
case $1 in
|
|
12
|
+
--platform) PLATFORM="$2"; shift 2 ;;
|
|
13
|
+
--style) STYLE="$2"; shift 2 ;;
|
|
14
|
+
--theme) THEME="$2"; shift 2 ;;
|
|
15
|
+
--desc) DESCRIPTION="$2"; shift 2 ;;
|
|
16
|
+
*) shift ;;
|
|
17
|
+
esac
|
|
18
|
+
done
|
|
19
|
+
|
|
20
|
+
if [ -z "$DESCRIPTION" ]; then
|
|
21
|
+
echo "Usage: bash generate-mockup.sh --desc 'travel app' [--platform mobile|web] [--style glassmorphism|brutalist] [--theme light|dark]"
|
|
22
|
+
exit 1
|
|
23
|
+
fi
|
|
24
|
+
|
|
25
|
+
# Design System Logic
|
|
26
|
+
if [ "$PLATFORM" == "mobile" ]; then
|
|
27
|
+
AR_FLAG="--aspect-ratio 9:16"
|
|
28
|
+
LAYOUT="Card-based, bottom navigation bar, 8pt grid system"
|
|
29
|
+
SYSTEM="iOS Human Interface Guidelines style"
|
|
30
|
+
else
|
|
31
|
+
AR_FLAG="--aspect-ratio 16:9"
|
|
32
|
+
LAYOUT="Sidebar navigation, grid layout, F-pattern hierarchy"
|
|
33
|
+
SYSTEM="Modern SaaS Design System style"
|
|
34
|
+
fi
|
|
35
|
+
|
|
36
|
+
# Technical UX Brief
|
|
37
|
+
EXPERT_PROMPT="[UX_BRIEF]
|
|
38
|
+
PLATFORM: $PLATFORM
|
|
39
|
+
CONTEXT: $DESCRIPTION
|
|
40
|
+
DESIGN_SYSTEM: $SYSTEM, $THEME mode
|
|
41
|
+
STYLE_TOKENS: $STYLE aesthetic, geometric sans-serif (Inter), high-contrast accessibility
|
|
42
|
+
LAYOUT_PATTERN: $LAYOUT, professional whitespace, vector icons
|
|
43
|
+
[EXECUTE] Generate a high-fidelity flat UI mockup. NO hands, NO physical devices, NO background clutter. Pure digital interface only."
|
|
44
|
+
|
|
45
|
+
# Call Core Primitive
|
|
46
|
+
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
47
|
+
CORE_SCRIPT="$SCRIPT_DIR/../../core-media/generate-image.sh"
|
|
48
|
+
|
|
49
|
+
bash "$CORE_SCRIPT" --prompt "$EXPERT_PROMPT" --model flux-dev $AR_FLAG --json
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: muapi-url-to-design
|
|
3
|
+
name: muapi-url-to-design
|
|
4
|
+
version: "1.0.0"
|
|
5
|
+
description: Analyze a website URL and generate a redesigned, improved UI — recreate the visual design with modern aesthetics, better hierarchy, and fresh brand direction.
|
|
6
|
+
acceptLicenseTerms: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
# URL to Design
|
|
11
|
+
|
|
12
|
+
**Analyze a website URL and generate a redesigned, improved UI — recreate the visual design with modern aesthetics, better hierarchy, and fresh brand direction.**
|
|
13
|
+
|
|
14
|
+
## Inputs
|
|
15
|
+
|
|
16
|
+
| Name | Type | Required | Default | Description |
|
|
17
|
+
|:---|:---|:---|:---|:---|
|
|
18
|
+
| `url` | text | yes | — | The website URL to analyze and redesign (e.g. "https://example.com/pricing"). |
|
|
19
|
+
| `page_type` | text | no | landing page | Type of page — "landing page", "pricing page", "product page", "dashboard", "about page". |
|
|
20
|
+
| `redesign_style` | text | no | modern, minimal, premium, dark mode | The target visual style for the redesign (e.g. "glassmorphism, vibrant gradient", "clean corporate, light mode"). |
|
|
21
|
+
| `keep_brand` | text | no | yes | Whether to keep existing brand colors/logo — "yes" or "no" (fully reimagine). |
|
|
22
|
+
| `screenshot` | image_url | no | — | Optional screenshot of the current page if URL cannot be crawled. |
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## Steps
|
|
26
|
+
|
|
27
|
+
### Phase A — Redesign Generation
|
|
28
|
+
|
|
29
|
+
Submit the plan with TWO parallel steps:
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
1. **Full-page redesign mockup** — If `{{screenshot}}` is provided, use `muapi image edit` (model=`gpt4o-edit`); otherwise use `muapi image generate` (model=`gpt4o-text-to-image`):
|
|
33
|
+
- Prompt: `Professional UI/UX redesign of a {{page_type}} for the website at {{url}}. {{redesign_style}} design. Modern web design, 2025 aesthetic. Includes: hero section with clear headline and CTA button, features/benefits section, social proof, clean footer. Pixel-perfect, Figma-quality mockup. Desktop viewport, 1440px width design.`
|
|
34
|
+
- If `{{keep_brand}}` is "no", add: `Completely reimagined brand identity, new color palette.`
|
|
35
|
+
- Aspect ratio: 9:16 (tall to show full page sections)
|
|
36
|
+
|
|
37
|
+
2. **Mobile version mockup** — `muapi image generate` (model=`bytedance-seedream-v4.5`):
|
|
38
|
+
- Prompt: `Mobile-first responsive redesign of the same {{page_type}} — {{redesign_style}} style. iPhone 15 Pro frame, scrollable layout. Clean mobile navigation, thumb-friendly CTAs, optimized for 390px width. Modern 2025 mobile UI design.`
|
|
39
|
+
- Aspect ratio: 9:19.5
|
|
40
|
+
|
|
41
|
+
After generation:
|
|
42
|
+
- Present both desktop and mobile mockups side by side
|
|
43
|
+
- Provide a written summary of design improvements made
|
|
44
|
+
- Offer to generate specific sections (hero, pricing cards, testimonials) as separate assets
|
|
45
|
+
|
|
46
|
+
## Notes
|
|
47
|
+
- If the URL is unreachable, ask the user to provide a screenshot or describe the current design.
|
|
48
|
+
- Always improve: typography hierarchy, whitespace, CTA visibility, and mobile responsiveness.
|
|
49
|
+
|
|
50
|
+
## Trigger Keywords
|
|
51
|
+
|
|
52
|
+
`url to design`, `redesign website`, `website redesign`, `ui redesign`, `landing page design`, `page redesign`, `website to design`, `convert url to design`
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Notes for the Executing Agent
|
|
58
|
+
|
|
59
|
+
- This recipe is LLM-orchestrated: read each phase, gather any missing inputs from the user, then call `muapi` CLI commands. Use `muapi auth configure` first if `MUAPI_API_KEY` is unset.
|
|
60
|
+
- For model IDs without a CLI alias yet, fall back to the raw endpoint via `curl -X POST https://api.muapi.ai/api/v1/<endpoint> -H "x-api-key: $MUAPI_API_KEY" -H 'content-type: application/json' -d '{...}'` and poll with `muapi predict wait <request_id>`.
|
|
61
|
+
- Substitute `{{input_name}}` placeholders with the user's actual inputs before issuing each call.
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: muapi-workflow
|
|
3
|
+
version: 0.1.0
|
|
4
|
+
description: Build, run, and visualize multi-step AI generation workflows. The AI architect translates natural language descriptions into connected node graphs — chain image generation, video creation, enhancement, and editing into automated pipelines.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# AI Workflow Builder
|
|
8
|
+
|
|
9
|
+
Chain any combination of muapi.ai generation steps into automated pipelines. The AI architect converts your plain-language description into a runnable node graph.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
Always ensure the `muapi` CLI is up-to-date before running any commands. Reinstall from source at the start of every session:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pip install --upgrade /path/to/muapi-cli
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Replace `/path/to/muapi-cli` with the actual path to the `muapi-cli` directory in the workspace (the directory containing `pyproject.toml`).
|
|
20
|
+
|
|
21
|
+
## Core Operations
|
|
22
|
+
|
|
23
|
+
1. **Generate** (`generate-workflow.sh`) — AI architect creates a workflow from a description
|
|
24
|
+
2. **Discover** (`discover-workflow.sh`) — Find a relevant existing workflow by natural language
|
|
25
|
+
3. **Edit** (`generate-workflow.sh --workflow-id`) — Modify an existing workflow with a prompt
|
|
26
|
+
4. **Interactive Run** (`interactive-run.sh`) — Prompt for inputs and execute a workflow
|
|
27
|
+
5. **Run** (`run-workflow.sh`) — Execute a workflow, poll node-by-node, collect outputs
|
|
28
|
+
6. **CLI** (`muapi workflow`) — Full CRUD + visualization directly from the terminal
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Agent Guided Discovery & Selection
|
|
33
|
+
|
|
34
|
+
As an AI agent, you have the ability to read and understand the purpose of available workflows to select the best one for the user's task (e.g., "create a UGC video").
|
|
35
|
+
|
|
36
|
+
1. **Discover**: Fetch the catalog of available workflows and their descriptions in JSON format.
|
|
37
|
+
```bash
|
|
38
|
+
muapi workflow discover --output-json
|
|
39
|
+
```
|
|
40
|
+
2. **Match (Internal Reasoning)**: Use your LLM capabilities to analyze the `name`, `category`, and `description` fields of the returned workflows. Find the best match for the user's intent.
|
|
41
|
+
3. **Analyze**: If you find a promising candidate, inspect its structure to ensure it has the necessary nodes and parameters.
|
|
42
|
+
```bash
|
|
43
|
+
muapi workflow get <workflow_id>
|
|
44
|
+
```
|
|
45
|
+
**CRITICAL RULE**: The output of `muapi workflow get` will include an "API Inputs" table. You MUST read this table to understand what inputs are required.
|
|
46
|
+
4. **Choose & Confirm & Prompt User**:
|
|
47
|
+
- If one workflow is a perfect match, you MUST ask the user to provide the exact values for the required API inputs before executing it. **Never invent or guess input values (like prompts, URLs, etc.) on your own.**
|
|
48
|
+
- If multiple workflows are highly relevant, present the options to the user with their descriptions and ask them to confirm which one to use, and also ask for the required inputs.
|
|
49
|
+
- If no workflow matches the user's complex request, offer to **architect** a new one using `muapi workflow create`.
|
|
50
|
+
|
|
51
|
+
### Example Agent Reasoning
|
|
52
|
+
> "The user wants a product promo video. I fetched the catalog using `discover`. I see two potential workflows:
|
|
53
|
+
> 1. `wf_123`: 'Product promo with background music'
|
|
54
|
+
> 2. `wf_456`: 'Simple video gen'
|
|
55
|
+
> I will analyze `wf_123` with `get`. It has the required nodes. I will suggest `wf_123` or just run it if the match is precise."
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## Protocol: Building a Workflow
|
|
60
|
+
|
|
61
|
+
### Step 1 — Describe your pipeline
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
muapi workflow create "take a text prompt, generate an image with flux-dev, then upscale it to 4K"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
The architect returns a workflow with a unique ID and a node graph. Save the ID.
|
|
68
|
+
|
|
69
|
+
### Step 2 — Inspect and visualize
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Rich ASCII node graph in the terminal
|
|
73
|
+
muapi workflow get <workflow_id>
|
|
74
|
+
|
|
75
|
+
# Or raw JSON
|
|
76
|
+
muapi workflow get <workflow_id> --output-json
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Step 3 — Run it
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Run with specific inputs
|
|
83
|
+
muapi workflow execute <workflow_id> \
|
|
84
|
+
--input "node1.prompt=a glowing crystal cave at midnight"
|
|
85
|
+
|
|
86
|
+
# Use --download to pull results locally
|
|
87
|
+
muapi workflow execute <workflow_id> \
|
|
88
|
+
--input "node1.prompt=a sunset" \
|
|
89
|
+
--download ./outputs
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Step 4 — Discovery (Optional)
|
|
93
|
+
If you want to reuse an existing workflow instead of creating a new one:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
# Search by keywords
|
|
97
|
+
muapi workflow discover "ugc video"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Step 5 — Interactive Execution
|
|
101
|
+
Run a workflow and have the CLI prompt you for each required input:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
muapi workflow run-interactive <workflow_id>
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Workflow Examples
|
|
110
|
+
|
|
111
|
+
### Image Pipelines
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
# Text → Image → Upscale
|
|
115
|
+
muapi workflow create "take a text prompt, generate with flux-dev, upscale the result"
|
|
116
|
+
|
|
117
|
+
# Text → Image → Background removal → Product shot
|
|
118
|
+
muapi workflow create "generate a product image with hidream, remove background, create professional product shot"
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Video Pipelines
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# Text → Video
|
|
125
|
+
muapi workflow create "generate a 10-second cinematic video from a text prompt using kling-master"
|
|
126
|
+
|
|
127
|
+
# Image → Video → Lipsync
|
|
128
|
+
muapi workflow create "animate an input image with seedance, then apply lipsync from an audio file"
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Editing an Existing Workflow
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
# Add a step
|
|
137
|
+
muapi workflow edit <id> --prompt "add a face-swap step after the image generation"
|
|
138
|
+
|
|
139
|
+
# Swap a model
|
|
140
|
+
muapi workflow edit <id> --prompt "change the video model from kling to veo3"
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## CLI Reference
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# List all your workflows
|
|
149
|
+
muapi workflow list
|
|
150
|
+
|
|
151
|
+
# Browse templates
|
|
152
|
+
muapi workflow templates
|
|
153
|
+
|
|
154
|
+
# Generate new workflow
|
|
155
|
+
muapi workflow create "text → flux image → upscale → face swap"
|
|
156
|
+
|
|
157
|
+
# Visualize a workflow
|
|
158
|
+
muapi workflow get <id>
|
|
159
|
+
|
|
160
|
+
# Execute with inputs
|
|
161
|
+
muapi workflow execute <id> --input "node1.prompt=a sunset"
|
|
162
|
+
|
|
163
|
+
# Monitor a run
|
|
164
|
+
muapi workflow status <run_id>
|
|
165
|
+
|
|
166
|
+
# Get outputs
|
|
167
|
+
muapi workflow outputs <run_id> --download ./results
|
|
168
|
+
|
|
169
|
+
# Edit with AI
|
|
170
|
+
muapi workflow edit <id> --prompt "add lipsync at the end"
|
|
171
|
+
|
|
172
|
+
# Rename / delete
|
|
173
|
+
muapi workflow rename <id> --name "Product Pipeline v2"
|
|
174
|
+
muapi workflow delete <id>
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## MCP Tools (for AI agents)
|
|
180
|
+
|
|
181
|
+
| Tool | Description |
|
|
182
|
+
|------|-------------|
|
|
183
|
+
| `muapi_workflow_list` | List user's workflows |
|
|
184
|
+
| `muapi_workflow_create` | AI architect: prompt → workflow |
|
|
185
|
+
| `muapi_workflow_get` | Get workflow definition + node graph |
|
|
186
|
+
| `muapi_workflow_execute` | Run with specific inputs |
|
|
187
|
+
| `muapi_workflow_status` | Node-by-node run status |
|
|
188
|
+
| `muapi_workflow_outputs` | Final output URLs |
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Constraints
|
|
193
|
+
|
|
194
|
+
- Workflows can contain any combination of muapi.ai nodes (image, video, audio, enhance, edit)
|
|
195
|
+
- Node outputs are automatically wired as inputs to downstream nodes
|
|
196
|
+
- `--sync` mode waits up to 120s for generation; use `--async` for complex workflows and poll separately
|
|
197
|
+
- Run timeouts: 10 minutes maximum per workflow execution
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Assistant Skill: Discover Relevant Workflow
|
|
3
|
+
# Thin wrapper around muapi CLI.
|
|
4
|
+
|
|
5
|
+
QUERY=""
|
|
6
|
+
LIMIT=5
|
|
7
|
+
|
|
8
|
+
while [[ $# -gt 0 ]]; do
|
|
9
|
+
case $1 in
|
|
10
|
+
--query|-q) QUERY="$2"; shift 2 ;;
|
|
11
|
+
--limit) LIMIT="$2"; shift 2 ;;
|
|
12
|
+
*) shift ;;
|
|
13
|
+
esac
|
|
14
|
+
done
|
|
15
|
+
|
|
16
|
+
if [ -z "$QUERY" ]; then echo "Error: --query is required" >&2; exit 1; fi
|
|
17
|
+
|
|
18
|
+
muapi workflow discover "$QUERY" --limit "$LIMIT"
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Expert Skill: AI Workflow Architect
|
|
3
|
+
# Thin wrapper around muapi CLI.
|
|
4
|
+
|
|
5
|
+
PROMPT=""
|
|
6
|
+
WORKFLOW_ID="" # Set to edit an existing workflow
|
|
7
|
+
ASYNC=false
|
|
8
|
+
VIEW=false
|
|
9
|
+
JSON_ONLY=false
|
|
10
|
+
|
|
11
|
+
while [[ $# -gt 0 ]]; do
|
|
12
|
+
case $1 in
|
|
13
|
+
--prompt|-p) PROMPT="$2"; shift 2 ;;
|
|
14
|
+
--workflow-id|-w) WORKFLOW_ID="$2"; shift 2 ;;
|
|
15
|
+
--async) ASYNC=true; shift ;;
|
|
16
|
+
--view) VIEW=true; shift ;;
|
|
17
|
+
--json) JSON_ONLY=true; shift ;;
|
|
18
|
+
*) shift ;;
|
|
19
|
+
esac
|
|
20
|
+
done
|
|
21
|
+
|
|
22
|
+
if [ -z "$PROMPT" ]; then echo "Error: --prompt is required" >&2; exit 1; fi
|
|
23
|
+
|
|
24
|
+
ARGS=()
|
|
25
|
+
[ "$ASYNC" = true ] && ARGS+=("--async")
|
|
26
|
+
[ "$VIEW" = true ] && ARGS+=("--view")
|
|
27
|
+
[ "$JSON_ONLY" = true ] && ARGS+=("--output-json")
|
|
28
|
+
|
|
29
|
+
if [ -n "$WORKFLOW_ID" ]; then
|
|
30
|
+
muapi workflow edit "$WORKFLOW_ID" --prompt "$PROMPT" "${ARGS[@]}"
|
|
31
|
+
else
|
|
32
|
+
muapi workflow create "$PROMPT" "${ARGS[@]}"
|
|
33
|
+
fi
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Assistant Skill: Interactive Workflow Runner
|
|
3
|
+
# Thin wrapper around muapi CLI.
|
|
4
|
+
|
|
5
|
+
WORKFLOW_ID=""
|
|
6
|
+
|
|
7
|
+
while [[ $# -gt 0 ]]; do
|
|
8
|
+
case $1 in
|
|
9
|
+
--workflow-id|-w) WORKFLOW_ID="$2"; shift 2 ;;
|
|
10
|
+
*) shift ;;
|
|
11
|
+
esac
|
|
12
|
+
done
|
|
13
|
+
|
|
14
|
+
if [ -z "$WORKFLOW_ID" ]; then echo "Error: --workflow-id is required" >&2; exit 1; fi
|
|
15
|
+
|
|
16
|
+
muapi workflow run-interactive "$WORKFLOW_ID"
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Assistant Skill: List Workflows
|
|
3
|
+
# Thin wrapper around muapi CLI.
|
|
4
|
+
|
|
5
|
+
JSON_ONLY=false
|
|
6
|
+
LIMIT=20
|
|
7
|
+
|
|
8
|
+
while [[ $# -gt 0 ]]; do
|
|
9
|
+
case $1 in
|
|
10
|
+
--json) JSON_ONLY=true; shift ;;
|
|
11
|
+
--limit) LIMIT="$2"; shift 2 ;;
|
|
12
|
+
*) shift ;;
|
|
13
|
+
esac
|
|
14
|
+
done
|
|
15
|
+
|
|
16
|
+
if [ "$JSON_ONLY" = true ]; then
|
|
17
|
+
muapi workflow list --output-json
|
|
18
|
+
else
|
|
19
|
+
muapi workflow list | head -n $((LIMIT + 5))
|
|
20
|
+
fi
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Expert Skill: Run & Visualize an AI Workflow
|
|
3
|
+
# Thin wrapper around muapi CLI.
|
|
4
|
+
|
|
5
|
+
WORKFLOW_ID=""
|
|
6
|
+
INPUT_ARGS=()
|
|
7
|
+
WEBHOOK=""
|
|
8
|
+
ASYNC=false
|
|
9
|
+
DOWNLOAD_DIR=""
|
|
10
|
+
|
|
11
|
+
while [[ $# -gt 0 ]]; do
|
|
12
|
+
case $1 in
|
|
13
|
+
--workflow-id|-w) WORKFLOW_ID="$2"; shift 2 ;;
|
|
14
|
+
--input|-i) INPUT_ARGS+=("$2"); shift 2 ;;
|
|
15
|
+
--webhook) WEBHOOK="$2"; shift 2 ;;
|
|
16
|
+
--async) ASYNC=true; shift ;;
|
|
17
|
+
--download|-d) DOWNLOAD_DIR="$2"; shift 2 ;;
|
|
18
|
+
*) shift ;;
|
|
19
|
+
esac
|
|
20
|
+
done
|
|
21
|
+
|
|
22
|
+
if [ -z "$WORKFLOW_ID" ]; then echo "Error: --workflow-id is required" >&2; exit 1; fi
|
|
23
|
+
|
|
24
|
+
ARGS=()
|
|
25
|
+
for ITEM in "${INPUT_ARGS[@]}"; do ARGS+=("--input" "$ITEM"); done
|
|
26
|
+
[ -n "$WEBHOOK" ] && ARGS+=("--webhook" "$WEBHOOK")
|
|
27
|
+
[ "$ASYNC" = true ] && ARGS+=("--no-wait")
|
|
28
|
+
[ -n "$DOWNLOAD_DIR" ] && ARGS+=("--download" "$DOWNLOAD_DIR")
|
|
29
|
+
|
|
30
|
+
if [ ${#INPUT_ARGS[@]} -gt 0 ]; then
|
|
31
|
+
muapi workflow execute "$WORKFLOW_ID" "${ARGS[@]}"
|
|
32
|
+
else
|
|
33
|
+
muapi workflow run "$WORKFLOW_ID" "${ARGS[@]}"
|
|
34
|
+
fi
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
---
|
|
2
|
+
slug: muapi-youtube-shorts
|
|
3
|
+
name: muapi-youtube-shorts
|
|
4
|
+
version: "2.0.0"
|
|
5
|
+
description: Auto-generate viral 9:16 YouTube Shorts (or TikTok / Reels clips) from a long-form video. Thin platform-aware wrapper around the AI Clipping skill — picks sensible defaults for short-form social platforms (9:16, 30–60s sweet spot) and delegates the actual highlight extraction + crop to muapi.ai's `/ai-clipping` endpoint.
|
|
6
|
+
acceptLicenseTerms: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# YouTube Shorts Generator
|
|
10
|
+
|
|
11
|
+
**Long video → ranked vertical short clips, tuned for short-form social.**
|
|
12
|
+
|
|
13
|
+
This skill is a platform-aware preset over the [AI Clipping](../../edit/ai-clipping/) primitive. It picks the right aspect ratio and clip count for the target platform and delegates highlight extraction, dedupe, and face-tracked auto-crop to muapi.ai's managed `/ai-clipping` endpoint.
|
|
14
|
+
|
|
15
|
+
Reference implementation: https://github.com/SamurAIGPT/AI-Youtube-Shorts-Generator
|
|
16
|
+
Underlying API: https://muapi.ai/playground/ai-clipping
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## When to Use This vs. AI Clipping
|
|
21
|
+
|
|
22
|
+
| Use this skill when… | Use [AI Clipping](../../edit/ai-clipping/) directly when… |
|
|
23
|
+
|:---|:---|
|
|
24
|
+
| Target is YouTube Shorts / TikTok / Reels | You want full control over aspect / count |
|
|
25
|
+
| You want platform-tuned defaults | You want raw timestamps (`--coords-only`) |
|
|
26
|
+
| You'd rather pass `--platform tiktok` than think about ratios | You're integrating into a custom renderer |
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Agent Execution Protocol
|
|
31
|
+
|
|
32
|
+
### Step 1 — Collect Inputs
|
|
33
|
+
|
|
34
|
+
| Input | Default | Notes |
|
|
35
|
+
|:---|:---|:---|
|
|
36
|
+
| `--source` | — | YouTube URL, hosted mp4 URL, or local file |
|
|
37
|
+
| `--platform` | `shorts` | `shorts` \| `tiktok` \| `reels` \| `feed` (sets ratio + count defaults) |
|
|
38
|
+
| `--num-clips` | platform default | Override clip count |
|
|
39
|
+
| `--aspect-ratio` | platform default | Override aspect ratio |
|
|
40
|
+
|
|
41
|
+
If the user gave only a URL, run with platform defaults — don't block.
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
### Step 2 — Verify Prerequisites
|
|
46
|
+
|
|
47
|
+
- `muapi-cli` installed and authed (`muapi auth configure`)
|
|
48
|
+
- `MUAPI_API_KEY` available
|
|
49
|
+
|
|
50
|
+
That's it. Transcription, highlight ranking, dedupe, and cropping all run server-side — no `ffmpeg`, no Python, no Whisper, no LLM keys needed locally.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
### Step 3 — Run the Pipeline
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
bash library/social/youtube-shorts/scripts/run-youtube-shorts.sh \
|
|
58
|
+
--source "<YOUTUBE_URL>" \
|
|
59
|
+
--platform shorts \
|
|
60
|
+
--num-clips 5 \
|
|
61
|
+
--view
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The script:
|
|
65
|
+
1. Resolves the source (uploads local files to muapi CDN if needed).
|
|
66
|
+
2. Picks platform defaults if `--aspect-ratio` / `--num-clips` aren't passed.
|
|
67
|
+
3. Calls `muapi edit clipping` (the `/ai-clipping` endpoint) with the chosen params.
|
|
68
|
+
4. Polls until done, prints a ranked summary, optionally downloads / opens clips.
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## What Happens Server-Side
|
|
73
|
+
|
|
74
|
+
The `/ai-clipping` endpoint runs the full pipeline:
|
|
75
|
+
|
|
76
|
+
- **Transcribes** the audio.
|
|
77
|
+
- **Ranks highlights** through a virality framework — hook moments, emotional peaks, opinion bombs, revelation moments, conflict, quotable lines, story peaks, practical value.
|
|
78
|
+
- **Dedupes** overlapping candidates by score.
|
|
79
|
+
- **Top-N selects** and **face-tracks** vertical crops.
|
|
80
|
+
|
|
81
|
+
Each clip ships with score (0–100), opening hook line, and a one-sentence "why it works" reason.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Platform Defaults
|
|
86
|
+
|
|
87
|
+
| Platform | Flag | Aspect | Default clips | Notes |
|
|
88
|
+
|:---|:---|:---|:---|:---|
|
|
89
|
+
| YouTube Shorts | `--platform shorts` | `9:16` | 3 | Hook in first 1s |
|
|
90
|
+
| TikTok | `--platform tiktok` | `9:16` | 5 | Higher energy, longer ok |
|
|
91
|
+
| Instagram Reels | `--platform reels` | `9:16` | 3 | Hook in first 1s |
|
|
92
|
+
| Instagram Feed | `--platform feed` | `1:1` | 3 | Static-feel works well |
|
|
93
|
+
|
|
94
|
+
Override any default with `--aspect-ratio` / `--num-clips`.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Quick Invocation Patterns
|
|
99
|
+
|
|
100
|
+
**Single video, defaults:**
|
|
101
|
+
```bash
|
|
102
|
+
bash run-youtube-shorts.sh --source "https://youtube.com/watch?v=VIDEO_ID"
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**TikTok preset — 5 clips, view in player:**
|
|
106
|
+
```bash
|
|
107
|
+
bash run-youtube-shorts.sh --source "<URL>" --platform tiktok --view
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
**Square Instagram feed clips:**
|
|
111
|
+
```bash
|
|
112
|
+
bash run-youtube-shorts.sh --source "<URL>" --platform feed --num-clips 3
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**Batch — `urls.txt` with one URL per line:**
|
|
116
|
+
```bash
|
|
117
|
+
xargs -a urls.txt -I{} bash run-youtube-shorts.sh --source "{}"
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Async submit (returns request_id, poll later):**
|
|
121
|
+
```bash
|
|
122
|
+
REQUEST_ID=$(bash run-youtube-shorts.sh --source "<URL>" --async --output-json - | jq -r '.request_id')
|
|
123
|
+
muapi predict wait "$REQUEST_ID" --download ./outputs
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## Output Schema
|
|
129
|
+
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"source_video_url": "...",
|
|
133
|
+
"shorts": [
|
|
134
|
+
{
|
|
135
|
+
"title": "The one mistake that cost me $50K",
|
|
136
|
+
"start_time": 124.3,
|
|
137
|
+
"end_time": 187.6,
|
|
138
|
+
"score": 92,
|
|
139
|
+
"hook_sentence": "Nobody talks about this, but it killed my first startup...",
|
|
140
|
+
"virality_reason": "Opens with a number + regret, peaks on a contrarian lesson",
|
|
141
|
+
"clip_url": "https://.../short_1.mp4"
|
|
142
|
+
}
|
|
143
|
+
]
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
When reporting back, surface for each clip: rank, score, time range, title, hook, and clip URL.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Common Mistakes to Avoid
|
|
152
|
+
|
|
153
|
+
1. **Wrong aspect ratio for the platform** — Shorts / TikTok / Reels are `9:16`. The platform preset handles this; only override if you know why.
|
|
154
|
+
2. **Padding to hit `--num-clips`** — if the API returns fewer survivors, return what you have. Don't ship low-score filler.
|
|
155
|
+
3. **Re-running on a 404'd clip URL** — re-fetch the same `request_id` with `muapi predict wait <id>` rather than re-clipping.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Failure Modes
|
|
160
|
+
|
|
161
|
+
- **API key missing or rejected** — surface the error; don't fabricate a key.
|
|
162
|
+
- **Job timed out** — bump `--poll-timeout` and retry.
|
|
163
|
+
- **Source URL not reachable** — upload the file via `muapi upload file` and pass the returned URL.
|
|
164
|
+
- **Fewer clips returned than requested** — source had fewer rankable highlights. Return what came back with a note.
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Done Criteria
|
|
169
|
+
|
|
170
|
+
The skill is done when:
|
|
171
|
+
1. `result.shorts` has up to `num_clips` entries, each with a working `clip_url`.
|
|
172
|
+
2. The user has been shown the ranked list (score, time range, title, hook, URL).
|
|
173
|
+
3. If `--output-json` was set, the file exists and parses.
|