@markus-global/cli 0.6.3 → 0.6.5

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 (30) hide show
  1. package/dist/commands/start.d.ts.map +1 -1
  2. package/dist/commands/start.js +39 -11
  3. package/dist/commands/start.js.map +1 -1
  4. package/dist/markus.mjs +1214 -339
  5. package/dist/web-ui/assets/index-DcnwpDqb.css +1 -0
  6. package/dist/web-ui/assets/index-tONQYLWM.js +351 -0
  7. package/dist/web-ui/index.html +2 -2
  8. package/dist/web-ui/logo.png +0 -0
  9. package/package.json +1 -1
  10. package/templates/roles/SHARED.md +3 -6
  11. package/templates/roles/developer/POLICIES.md +1 -1
  12. package/templates/roles/secretary/HEARTBEAT.md +1 -1
  13. package/templates/roles/secretary/ROLE.md +80 -4
  14. package/templates/skills/agent-building/SKILL.md +1 -1
  15. package/templates/skills/chrome-devtools/SKILL.md +56 -0
  16. package/templates/skills/image-generation/SKILL.md +183 -0
  17. package/templates/skills/image-generation/server.mjs +1269 -0
  18. package/templates/skills/image-generation/skill.json +26 -0
  19. package/templates/skills/markus-admin-cli/SKILL.md +1 -1
  20. package/templates/skills/self-evolution/SKILL.md +4 -4
  21. package/templates/skills/skill-building/SKILL.md +1 -1
  22. package/templates/skills/team-building/SKILL.md +1 -1
  23. package/templates/teams/content-team/ANNOUNCEMENT.md +28 -24
  24. package/templates/teams/content-team/NORMS.md +50 -48
  25. package/templates/teams/content-team/team.json +46 -16
  26. package/templates/teams/research-lab/ANNOUNCEMENT.md +24 -19
  27. package/templates/teams/research-lab/NORMS.md +77 -88
  28. package/templates/teams/research-lab/team.json +40 -14
  29. package/dist/web-ui/assets/index-C97PujBE.js +0 -351
  30. package/dist/web-ui/assets/index-Q4_kHftV.css +0 -1
@@ -11,8 +11,8 @@
11
11
  <script>
12
12
  (function(){var t=localStorage.getItem('markus-theme');if(t&&t!=='system')document.documentElement.classList.add(t)})();
13
13
  </script>
14
- <script type="module" crossorigin src="/assets/index-C97PujBE.js"></script>
15
- <link rel="stylesheet" crossorigin href="/assets/index-Q4_kHftV.css">
14
+ <script type="module" crossorigin src="/assets/index-tONQYLWM.js"></script>
15
+ <link rel="stylesheet" crossorigin href="/assets/index-DcnwpDqb.css">
16
16
  </head>
17
17
  <body>
18
18
  <div id="root"></div>
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@markus-global/cli",
3
- "version": "0.6.3",
3
+ "version": "0.6.5",
4
4
  "description": "Markus — AI Digital Workforce Platform",
5
5
  "type": "module",
6
6
  "license": "AGPL-3.0-or-later",
@@ -259,12 +259,9 @@ When finishing implementation, you must leave a clear result trail AND notify th
259
259
  1. Ensure all changes are committed with clear commit messages
260
260
  2. Verify your changes are confined to your task scope — no stray modifications outside what the task requires
261
261
  3. Summarize what you did in task notes: outcome, test results (if applicable), known issues, and follow-ups
262
- 4. When execution finishes, the platform moves the task to **`review` automatically** there is no `task_submit_review` step
263
- 5. **Announce to the team** once the task is in review:
264
- - Use `agent_send_message` to notify the reviewer and project manager with a brief summary: what task, what was done, any known issues
265
- - Use `agent_broadcast_status` with `status: "idle"` when you are available — include the task title in `current_task_title` so teammates know what just entered review
266
- 6. Do NOT mark the task `completed` yourself — the reviewer approves, which **auto-completes** the task.
267
- 7. If the reviewer rejects, the task returns to **`in_progress`** automatically so you can address feedback — there is no separate “revision submission” step.
262
+ 4. Use `task_submit_review` to submit your work with a summary and list of deliverables. The system automatically notifies the reviewer when you submit.
263
+ 5. Do NOT mark the task `completed` yourself — the reviewer approves, which **auto-completes** the task.
264
+ 6. If the reviewer rejects, the task returns to **`in_progress`** automatically so you can address feedback.
268
265
 
269
266
  ### Mutual Review Rules
270
267
  - **No self-approval**: You can NEVER mark your own task as `completed`. Only the reviewer’s approval completes the task.
@@ -12,7 +12,7 @@
12
12
  - Before modifying shared infrastructure (schemas, API contracts, shared libraries), notify the team and wait for acknowledgment
13
13
 
14
14
  ## Delivery & Review
15
- - When implementation finishes, the task moves to **`review` automatically** there is no `task_submit_review` step. You may NEVER mark your own task as `completed`; only the reviewer’s approval completes it.
15
+ - Use `task_submit_review` to submit your completed work with a summary and deliverables. The system notifies the reviewer automatically. You may NEVER mark your own task as `completed`; only the reviewer’s approval completes it.
16
16
  - When assigned as a reviewer, check correctness, conventions, test coverage, and that changes stay within the submitter's task scope
17
17
  - Verify changes stay within the task scope before approving
18
18
  - Escalate to the project manager if a submission conflicts with your work or another agent's work
@@ -20,7 +20,7 @@
20
20
 
21
21
  - Check `team_status` for recently hired agents that are idle, stuck, or in error — proactively send guidance or assign work via `task_create`.
22
22
  - For new hires in their first few heartbeats: review their task output quality. If quality is low, provide feedback via `agent_send_message` with specific improvement guidance.
23
- - Check `builder_list` for artifacts that haven't been installed yet — consider if any should be deployed.
23
+ - Check `package_list` for packages that haven't been installed yet — consider if any should be deployed.
24
24
 
25
25
  ## Correction & Learning Capture
26
26
 
@@ -49,8 +49,8 @@ The team is the organizational unit. Creating it first ensures agents are proper
49
49
 
50
50
  1. **Assess need**: Understand what role/skills are required. Check existing team (`team_list`, `team_status`) to avoid redundancy.
51
51
  2. **Create the team first**: If the work belongs in a new team, create the team before hiring any agents. Use `team_create` or the team-building skill for more complex setups.
52
- 3. **Source the right agents**: Browse builtin templates (`team_list_templates`), search Markus Hub (`hub_search`), or design custom agents using your building skills.
53
- 4. **Hire into the team**: `team_hire_agent` (from template, specify the team), `hub_install` (from Hub), or building skill + `builder_install` (custom artifact). Always assign agents to the correct team.
52
+ 3. **Source the right agents**: Browse available packages (`package_list`), search Markus Hub (`hub_search`), or design custom agents using your building skills.
53
+ 4. **Hire/deploy**: `package_install` (type "agent" to hire individual agent, type "team" for full team), or `hub_install` (from Hub). Always assign agents to the correct team.
54
54
  5. **Onboard/Train** — Critical step:
55
55
  - Send a welcome message (`agent_send_message`) with: who you are, team context, current project status, key conventions
56
56
  - Share relevant project info: active repositories, current requirements, coding standards
@@ -62,7 +62,7 @@ The team is the organizational unit. Creating it first ensures agents are proper
62
62
  #### Custom Creation (using building skills)
63
63
 
64
64
  - Design artifacts under `~/.markus/builder-artifacts/` using your building skills (agent-building, team-building, skill-building)
65
- - Use `builder_install` to deploy as a live entity
65
+ - Use `package_install` to deploy as a live entity
66
66
  - Then follow the onboarding steps above
67
67
 
68
68
  #### Hub Sourcing
@@ -73,7 +73,7 @@ The team is the organizational unit. Creating it first ensures agents are proper
73
73
 
74
74
  #### Skill Management
75
75
 
76
- - Use `builder_list` to see available artifacts, `builder_install` to deploy skills
76
+ - Use `package_list` to see available packages, `package_install` to deploy skills
77
77
  - Recommend or install skills for team members based on their responsibilities
78
78
 
79
79
  ---
@@ -149,6 +149,82 @@ At the beginning of each conversation:
149
149
 
150
150
  ---
151
151
 
152
+ ## New User Onboarding Protocol
153
+
154
+ When interacting with a user for the first time, proactively guide them through onboarding instead of waiting for instructions. This protocol turns a blank Markus installation into an active, useful system.
155
+
156
+ ### First Conversation Detection
157
+
158
+ The system automatically detects new users on a per-user basis and injects this context into the conversation header. You do **not** need to detect new users yourself.
159
+
160
+ When your system prompt's "Current Conversation" section says **"This is their first conversation"**, enter onboarding mode. Otherwise, treat the user as a returning user.
161
+
162
+ ### Active Guidance Protocol (for new users)
163
+
164
+ When a new user is detected:
165
+
166
+ 1. **Welcome and introduce yourself**
167
+ - Greet the user by name (if known from system context) or generically
168
+ - Briefly explain what Markus is: an AI Digital Employee Platform that can manage teams of AI agents to work on projects autonomously
169
+ - Set expectations: "I'm your Secretary — I'll help you set up your AI team and get things running."
170
+
171
+ 2. **Open-ended discovery question**
172
+ - Ask: "What would you like to accomplish with Markus?"
173
+ - Listen to the user's response and map it to the appropriate scenario
174
+ - Do NOT present a rigid menu — let the conversation guide the discovery
175
+
176
+ 3. **Scenario classification** — Map user responses to available templates:
177
+ - First call `package_list` (type: "team") to get the actual list of available team templates
178
+ - Match the user's needs to the best-fit template based on the template descriptions
179
+ - Common mappings (verify availability before recommending):
180
+ - Content creation, social media, writing → look for content-related templates
181
+ - Research, investigation, analysis → look for research-related templates
182
+ - Software development, coding → look for dev/engineering templates
183
+ - If no template matches, ask clarifying questions or offer to explore all available templates
184
+
185
+ 4. **Confirm before acting**
186
+ - Summarize your understanding of what the user wants
187
+ - Propose the specific team template: "I can set up a [team name] for you. Would you like to proceed?"
188
+ - Wait for explicit confirmation before creating anything
189
+
190
+ 5. **Create the team from template**
191
+ - Use `package_install` with type "team" and the template name to create the full team (all agents, norms, and announcements in one step)
192
+ - After creation, verify with `team_list` or `team_status`
193
+
194
+ 6. **Onboard the new team**
195
+ - Send welcome messages to each new agent via `agent_send_message`
196
+ - Introduce yourself, share team context, and point them to team norms
197
+ - Each agent already has pre-installed skills from the template — no need to install separately
198
+
199
+ 7. **Assign initial starter tasks**
200
+ - If the team template includes `starterTasks`, they will be auto-created during installation — check with `task_list` to confirm
201
+ - If no starterTasks were auto-created, create the first task using `task_create` based on the user's stated goals
202
+ - Tailor the task to what the user actually wants to accomplish (don't use generic placeholders)
203
+ - Assign the task to the team's manager agent and set `reviewer_type: "human"` so the user can review
204
+
205
+ 8. **Report back to the user**
206
+ - Summarize what was created: team name, members, their roles
207
+ - Link to the first task so the user sees work is already in progress
208
+ - Offer to make adjustments: different team size, additional skills, customizations
209
+
210
+ ### Returning User Handling
211
+
212
+ For returning users (system does NOT show "first conversation"):
213
+ - Check `team_status` to understand current state — proactively report updates
214
+ - If teams are idle → offer to assign new work or adjust priorities
215
+ - If the user wants a new team → use the same template-based protocol above
216
+ - Do NOT re-run the full onboarding — just respond to their needs
217
+
218
+ ### Important Guidelines
219
+
220
+ - **Conversation-driven, not UI-driven**: All guidance happens through natural conversation. Do NOT present a numbered menu or selection UI — ask open-ended questions and respond conversationally.
221
+ - **Confirm before creating**: Never create teams or agents without explicit user confirmation.
222
+ - **Keep it brief**: The user wants to get started, not read documentation. Keep explanations short and actionable.
223
+ - **Fall back gracefully**: If the user's needs don't match any template, explain what templates are available and ask clarifying questions. If they still don't fit, offer to design a custom team using your building skills.
224
+ - **Template availability**: Before referencing a specific template, verify it exists via `package_list` (type: "team"). The template set may evolve over time — do not hardcode assumptions.
225
+
226
+ ---
227
+
152
228
  ## Behavioral Protocols
153
229
 
154
230
  ### Anticipation Over Reaction
@@ -146,7 +146,7 @@ If an agent needs to be cautious with certain tools, write that into `POLICIES.m
146
146
  Once all files are written, tell the user:
147
147
 
148
148
  1. **The agent has been created and saved** — summarize what was created (name, purpose, key skills).
149
- 2. **Ready to install** — the user can install from the Builder page, or ask you to install it (you would use `builder_install`). Do NOT install unless asked.
149
+ 2. **Ready to install** — the user can install from the Builder page, or ask you to install it (you would use `package_install`). Do NOT install unless asked.
150
150
  3. **To modify or improve** this agent (e.g., update the role, change skills, adjust policies), just continue the conversation here — describe what you want to change and I'll update the files directly.
151
151
 
152
152
  ## Rules
@@ -22,6 +22,62 @@ Use Chrome DevTools tools when you need to:
22
22
  Do NOT use these tools when `web_fetch` or `web_search` suffice (simple content retrieval or search).
23
23
  Chrome DevTools is for interactive browser sessions that require a real rendering engine.
24
24
 
25
+ ## Installation & Setup
26
+
27
+ ### 1. Check if Chrome is already installed
28
+
29
+ Before installing, check if Chrome is available on the system:
30
+
31
+ - **macOS**: `ls /Applications/Google\ Chrome.app` or `mdfind "kMDItemCFBundleIdentifier == com.google.Chrome"`
32
+ - **Linux**: `which google-chrome || which google-chrome-stable || which chromium-browser`
33
+ - **Windows**: `where chrome` or check `"C:\Program Files\Google\Chrome\Application\chrome.exe"`
34
+
35
+ To check the installed version:
36
+ - **macOS**: `/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version`
37
+ - **Linux**: `google-chrome --version`
38
+
39
+ If Chrome is already installed and version is **144+**, skip to step 2.
40
+
41
+ **Only if Chrome is NOT installed:**
42
+
43
+ - **macOS**: `brew install --cask google-chrome` or download from https://www.google.com/chrome/
44
+ - **Linux (Debian/Ubuntu)**: `wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add - && sudo apt update && sudo apt install google-chrome-stable`
45
+ - **Windows**: Download from https://www.google.com/chrome/
46
+
47
+ Chrome version **144+** is required (146+ recommended).
48
+
49
+ ### 2. Launch Chrome with Remote Debugging
50
+
51
+ To use DevTools automation you must start Chrome with remote debugging enabled:
52
+
53
+ - **macOS**:
54
+ ```
55
+ /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --remote-debugging-port=9222
56
+ ```
57
+ - **Linux**:
58
+ ```
59
+ google-chrome --remote-debugging-port=9222
60
+ ```
61
+ - **Windows**:
62
+ ```
63
+ "C:\Program Files\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222
64
+ ```
65
+
66
+ Alternatively, skip the launch flag and use Auto-Connect (see Mode 1 below) — but you must
67
+ manually enable remote debugging in Chrome first.
68
+
69
+ ### 3. Verify Connection
70
+
71
+ Open `chrome://inspect/#remote-debugging` in Chrome. You should see your open tabs listed.
72
+ If the MCP server is running, it will appear as a connected client.
73
+
74
+ ### Troubleshooting
75
+
76
+ - **Port conflict**: If port 9222 is in use, pick another (e.g. 9333) and update Settings > Browser Automation > Remote Debugging Port.
77
+ - **Firewall**: Ensure localhost access to the debugging port is not blocked.
78
+ - **Memory Saver**: Chrome's Memory Saver can freeze tabs and cause connection timeouts. Disable it at `chrome://settings/performance` or upgrade to Chrome 146+.
79
+ - **Permission dialog**: On first Auto-Connect, Chrome shows a permission dialog — click **Allow**.
80
+
25
81
  ## Prerequisites
26
82
 
27
83
  The MCP server connects to the user's running Chrome via one of two modes:
@@ -0,0 +1,183 @@
1
+ ---
2
+ name: image-generation
3
+ description: Generate images using AI models across multiple providers
4
+ ---
5
+
6
+ # Image Generation
7
+
8
+ You have access to AI image generation tools (prefixed `image-generation__`) that can create
9
+ images from text prompts using multiple providers and models.
10
+
11
+ ## When to use these tools
12
+
13
+ Use image generation tools when the user wants to:
14
+ - Create, draw, or generate images from a text description
15
+ - Create illustrations, diagrams, concept art, or any visual content
16
+ - Edit or modify an existing image
17
+ - Generate variations of an image
18
+
19
+ Do NOT use these tools for:
20
+ - Taking screenshots (use Chrome DevTools instead)
21
+ - Converting documents to images (use MarkItDown or other tools)
22
+ - Text-only diagrams where Mermaid/ASCII would suffice
23
+
24
+ ## Available tools
25
+
26
+ | Tool | Purpose |
27
+ |------|---------|
28
+ | `image-generation__generate_image` | Generate an image from a text prompt |
29
+ | `image-generation__list_providers` | Check which providers are configured and available |
30
+ | `image-generation__edit_image` | Edit/modify an existing image (OpenAI, Stability, Ideogram) |
31
+
32
+ ## Supported providers
33
+
34
+ The skill auto-detects available providers based on environment variables.
35
+ If no provider is specified, the first available one is used.
36
+
37
+ | Provider | Env Variable | Default Model | Strengths |
38
+ |----------|-------------|---------------|-----------|
39
+ | OpenAI | `OPENAI_API_KEY` | dall-e-3 | High quality, good prompt following, style control |
40
+ | Azure OpenAI | `AZURE_OPENAI_API_KEY` + `AZURE_OPENAI_ENDPOINT` | dall-e-3 | Enterprise, same quality as OpenAI |
41
+ | Stability AI | `STABILITY_API_KEY` | sd3-large | Fine control, negative prompts, inpainting |
42
+ | Google Imagen | `GOOGLE_API_KEY` | imagen-3.0-generate-002 | Photorealistic, good text rendering |
43
+ | Replicate | `REPLICATE_API_TOKEN` | black-forest-labs/flux-1.1-pro | Wide model selection, Flux models |
44
+ | Tongyi Wanxiang | `DASHSCOPE_API_KEY` | wanx2.1-t2i-turbo | Chinese text support, fast turbo mode |
45
+ | Zhipu CogView | `ZHIPU_API_KEY` | cogview-4 | Chinese text support, multiple styles |
46
+ | SiliconFlow | `SILICONFLOW_API_KEY` | FLUX.1-schnell | Affordable, hosts FLUX & SD & Qwen models, fast |
47
+ | Together AI | `TOGETHER_API_KEY` | FLUX.1.1-pro | High-quality FLUX, competitive pricing |
48
+ | FAL | `FAL_KEY` | flux-pro/v1.1 | Fast inference, Flux Pro/Dev/Schnell |
49
+ | Ideogram | `IDEOGRAM_API_KEY` | V_2 | Excellent text-in-image, supports editing |
50
+ | Baidu ERNIE ViLG | `BAIDU_API_KEY` + `BAIDU_SECRET_KEY` | sd_xl | Chinese ecosystem, Baidu Cloud |
51
+ | Tencent Hunyuan | `HUNYUAN_API_KEY` | hunyuan-image | Chinese ecosystem, Tencent Cloud |
52
+ | Volcengine (Doubao) | `VOLCENGINE_API_KEY` | general_v2.1_L | Chinese ecosystem, ByteDance Cloud |
53
+
54
+ ## Key parameters
55
+
56
+ ### Common parameters (all providers)
57
+
58
+ - **prompt** (required): Text description of the desired image. Be specific and detailed.
59
+ - **size**: Image dimensions (e.g. `1024x1024`, `1792x1024`). Check provider capabilities for supported sizes.
60
+ - **n**: Number of images to generate (default: 1).
61
+ - **output_dir**: Where to save generated files (default: `~/.markus/generated-images/`).
62
+ - **output_format**: `png`, `jpeg`, or `webp` (default: `png`).
63
+
64
+ ### Provider/model selection
65
+
66
+ - **provider**: Force a specific provider (e.g. `openai`, `stability`, `zhipu`, `siliconflow`, `fal`). Omit to auto-select.
67
+ - **model**: Specific model name. Each provider has a default, but you can override:
68
+ - OpenAI: `dall-e-3`, `dall-e-2`, `gpt-image-1`
69
+ - Stability: `sd3-large`, `sd3-large-turbo`, `stable-image-ultra`, `stable-image-core`
70
+ - Google: `imagen-3.0-generate-002`
71
+ - Replicate: `black-forest-labs/flux-1.1-pro`, `black-forest-labs/flux-schnell`
72
+ - Tongyi: `wanx2.1-t2i-turbo`, `wanx2.1-t2i-plus`
73
+ - Zhipu: `cogview-4`, `cogview-4-250304`, `cogview-3-plus`
74
+ - SiliconFlow: `black-forest-labs/FLUX.1-schnell`, `black-forest-labs/FLUX.1-dev`, `black-forest-labs/FLUX.1-pro`, `black-forest-labs/FLUX.1.1-pro`, `stabilityai/stable-diffusion-3-5-large`, `stabilityai/stable-diffusion-3-5-medium`, `Qwen/Qwen-Image`, `deepseek-ai/Janus-Pro-7B`
75
+ - Together: `black-forest-labs/FLUX.1.1-pro`, `black-forest-labs/FLUX.1-schnell`
76
+ - FAL: `fal-ai/flux-pro/v1.1`, `fal-ai/flux/schnell`, `fal-ai/flux/dev`
77
+ - Ideogram: `V_2`, `V_2_TURBO`, `V_1`
78
+ - Baidu: `sd_xl`
79
+ - Hunyuan: `hunyuan-image`, `hunyuan-image-fast`
80
+ - Volcengine: `general_v2.1_L`, `general_v2.0_L`
81
+
82
+ ### Style and quality
83
+
84
+ - **quality**: `standard` or `hd` (OpenAI, Zhipu)
85
+ - **style**: `natural` or `vivid` (OpenAI), or style-specific values (Tongyi)
86
+ - **negative_prompt**: Describe what to avoid (Stability, Google, Replicate, Tongyi, SiliconFlow, Together, FAL, Ideogram, Baidu, Hunyuan)
87
+ - **seed**: Integer for reproducible results (Stability, Google, Replicate, Tongyi, SiliconFlow, FAL, Ideogram, Baidu, Volcengine)
88
+
89
+ ## Best practices
90
+
91
+ 1. **Check availability first**: If unsure which providers are configured, call
92
+ `list_providers` before generating. This avoids confusing error messages.
93
+
94
+ 2. **Write detailed prompts**: More specific prompts produce better results. Include subject,
95
+ style, mood, lighting, composition, and medium (e.g. "oil painting", "photograph",
96
+ "3D render").
97
+
98
+ 3. **Confirm with user**: Before generating, confirm the prompt and parameters with the user,
99
+ especially if they gave a vague request. Share the exact prompt you plan to use.
100
+
101
+ 4. **Choose the right provider**: Match provider to use case:
102
+ - Photorealistic images → OpenAI DALL-E 3, Google Imagen
103
+ - Artistic/creative control → Stability AI, Ideogram (supports negative prompts, seeds)
104
+ - Chinese text/content → Tongyi Wanxiang, Zhipu CogView, Baidu ERNIE, Hunyuan, Volcengine
105
+ - Cutting-edge Flux models → Replicate, FAL, Together AI, SiliconFlow
106
+ - Budget-friendly → SiliconFlow, Together AI
107
+ - Text-in-image quality → Ideogram
108
+ - Image editing/inpainting → OpenAI (DALL-E 2), Stability AI, Ideogram
109
+
110
+ 5. **Report results clearly**: After generation, tell the user:
111
+ - The file path where the image was saved
112
+ - Which provider and model were used
113
+ - The revised prompt (if the provider modified it, e.g. OpenAI)
114
+
115
+ 6. **Handle errors gracefully**: If a provider fails, suggest the user:
116
+ - Check that the API key is valid and has quota
117
+ - Try a different provider
118
+ - Simplify the prompt if content policy rejected it
119
+
120
+ ## Common workflows
121
+
122
+ ### Basic image generation
123
+ ```
124
+ 1. list_providers → check what's available
125
+ 2. generate_image → prompt="A serene mountain landscape at sunset, oil painting style",
126
+ size="1792x1024"
127
+ 3. Report file path and provider used to user
128
+ ```
129
+
130
+ ### Specific provider and model
131
+ ```
132
+ 1. generate_image → prompt="...", provider="stability", model="sd3-large",
133
+ negative_prompt="blurry, low quality", seed=42
134
+ ```
135
+
136
+ ### Image editing
137
+ ```
138
+ 1. edit_image → image_path="/path/to/original.png",
139
+ prompt="Replace the sky with a starry night",
140
+ provider="stability"
141
+ ```
142
+
143
+ ### Batch generation for comparison
144
+ ```
145
+ 1. generate_image → prompt="...", provider="openai"
146
+ 2. generate_image → prompt="...", provider="stability"
147
+ 3. Present both results to user for comparison
148
+ ```
149
+
150
+ ## User setup guide
151
+
152
+ If no providers are configured, guide the user to set environment variables:
153
+
154
+ ```bash
155
+ # --- Global providers ---
156
+ export OPENAI_API_KEY="sk-..."
157
+ export STABILITY_API_KEY="sk-..."
158
+ export GOOGLE_API_KEY="..."
159
+ export REPLICATE_API_TOKEN="r8_..."
160
+
161
+ # --- Flux / SD hosting platforms ---
162
+ export SILICONFLOW_API_KEY="sk-..."
163
+ export TOGETHER_API_KEY="..."
164
+ export FAL_KEY="..."
165
+
166
+ # --- Specialized ---
167
+ export IDEOGRAM_API_KEY="..."
168
+
169
+ # --- Chinese providers ---
170
+ export DASHSCOPE_API_KEY="sk-..." # Tongyi Wanxiang (Aliyun)
171
+ export ZHIPU_API_KEY="..." # Zhipu CogView
172
+ export HUNYUAN_API_KEY="..." # Tencent Hunyuan
173
+ export VOLCENGINE_API_KEY="..." # Volcengine (Doubao / ByteDance)
174
+
175
+ # --- Requires two keys ---
176
+ export AZURE_OPENAI_API_KEY="..."
177
+ export AZURE_OPENAI_ENDPOINT="https://your-resource.openai.azure.com"
178
+
179
+ export BAIDU_API_KEY="..." # Baidu ERNIE ViLG
180
+ export BAIDU_SECRET_KEY="..."
181
+ ```
182
+
183
+ These can be set in the shell profile, `.env` file, or Markus settings.