Before using this skill, ensure you have the CREO4U_SKILL_API_KEY environment variable set.
Option 1: Provide API Key during installation
bash
export CREO4U_SKILL_API_KEY="your_api_key_here"
Option 2: If not provided, the skill will prompt for it
CREO4U_SKILL_API_KEY is already set in your environment, the skill will use it directlyOnce installed, all CLI commands will automatically use the CREO4U_SKILL_API_KEY environment variable — no need to pass --token or any API key parameter.
语构 is a chat-driven full-stack application builder. Users describe what they want in natural language and 语构 generates a production-ready web application, including frontend UI, backend services, database schema, and a live development environment.
This skill enables AI agents to interact with the 语构 platform to create, iterate, publish, and deploy applications.
All platform operations must be executed through the CLI script:
bash
python scripts/yugoo_cli.py [global options] <command> [command options]
IMPORTANT: Argument Order — Global options ( --token, --base-url, --insecure, --timeout) must appear BEFORE the subcommand. Placing them after the subcommand will cause a parse error.
bash
# ✅ Correct — global options before subcommand
python scripts/yugoo_cli.py --token TOKEN create --name "My App"
# ❌ Wrong — global options after subcommand
python scripts/yugoo_cli.py create --token TOKEN --name "My App"
Note: The
--insecureflag disables TLS certificate verification. Only use it in controlled test environments — never for production or when transmitting real API keys.
Do not call platform APIs directly. Always use the CLI commands provided by this skill.
Use this skill whenever the user wants to:
Do not use this skill for unrelated programming tasks.
Trigger this skill if the request includes concepts such as:
Examples that should route to this skill:
Describe the core functionality in 1-2 sentences:
text
"Build a todo app where users can add tasks, mark them complete, and delete them"
"Create a dashboard to display sales data with charts and filters"
"Build a landing page for a SaaS product with pricing section and contact form"
✅ Correct - Single Focus:
text
"Fix the submit button not responding on the contact form"
"Optimize the loading speed of the data table"
"Add error handling for invalid email input"
"Fix the date picker not showing correct format"
✅ Correct - Two Related Changes:
text
"Fix the login button styling and add a loading indicator"
"Optimize the database query and add caching for faster response"
"Fix the mobile layout and adjust the navigation menu"
❌ WRONG - Too Complex (DO NOT use):
text
"Fix the login button, optimize the database, add user authentication, redesign the homepage, and deploy to production"
When sending messages to the chat API:
Request TypeMax ItemsBug fixes1-2 related bugsFeature additions1-2 related featuresOptimizations1-2 related optimizationsUI changes1-2 related components
Rationale: 语构 platform works best with focused, incremental changes. Complex multi-part requests may result in incomplete implementation or unexpected behavior.
For complex requirements, break them into multiple chat messages:
bash
# Round 1: Build basic structure
chat -c $CID -m "Build a todo app with add and list features" --watch
# Round 2: Add one feature
chat -c $CID -m "Add delete functionality to todo items" --watch
# Round 3: Add another feature
chat -c $CID -m "Add edit functionality and local storage" --watch
# Round 4: Polish
chat -c $CID -m "Improve the UI styling and add animations" --watch
Describe what the application should do in one or two sentences:
text
"Build a todo app where users can add tasks, mark them complete, and delete them"
"Create a dashboard to display sales data with charts and filters"
Avoid:
For iterative modifications, keep requests brief — only describe the change needed, not the full application again.
For bug fixes or optimizations, limit to 1-2 related changes per request. See Application Development Description Guidelines for details.
The platform handles technical decisions automatically.
The chat command accepts an optional --model-choice parameter that selects which model the Task agent uses for this message. The Pilot agent always uses the platform default and is not affected by this flag.
ValueMeaning_(omitted)_ or autoSmart routing — platform picks the best modeleconomyPreset: cheaper / faster modelsadvancePreset: balanced cost vs. capabilityexpertPreset: highest-capability models<model-id>A concrete model id from python scripts/yugoo_cli.py models (e.g. claude-sonnet-4-6)
Format constraint: ^[A-Za-z0-9._\-]+$, max length 80.
bash
# Discover available choices
python scripts/yugoo_cli.py models
# Pick a preset
python scripts/yugoo_cli.py chat -c $CID -m "Build a SaaS landing page" --model-choice expert --watch
# Pin a concrete model id
python scripts/yugoo_cli.py chat -c $CID -m "Add e2e tests" --model-choice claude-sonnet-4-6 --watch
expert preset.economy preset to save credits.For most cases, leave it unset (smart routing).
The CLI script is stateless. It does not store workflow state between calls.
Application workflow state is maintained by the 语构 platform and must be tracked via:
conversation_id — the unique session identifiermessage_id — identifies a specific message/generation runAgents must pass the appropriate identifiers when continuing conversations or checking results.
语构 applications follow a standard lifecycle:
For a new application:
chat request describing the productAfter an application has been created:
chat with the same conversation_idPublishing deploys the application to production:
publish command to trigger deploymentpublish --wait to auto-poll until deployment completes语构 provides URLs during the lifecycle:
After the application is created, access it at:
text
https://preview-{conversation_id}.creo4u.com/
This URL is for:
After publishing succeeds, the application is accessible at:
text
https://preview-{conversation_id}.creo4u.com/
This is the public production URL of the deployed application.
Share this URL only after publishing completes successfully.
text
create → chat --watch → publish --wait → urls
text
chat --watch → result → chat --watch → result → ...
text
publish --wait → urls
text
unpublish
text
copy → chat --watch → result → publish --wait
text
market-list → clone-market → chat --watch → result → publish --wait
text
versions → restore-version → chat --watch → finalize-version
text
upload --file → chat --attachment OSS_PATH --watch → publish --wait → urls
text
chat --file /path/to/requirements.txt --watch → result → publish --wait → urls
bash
# Step 1: Create a conversation
CONV=$(python scripts/yugoo_cli.py create --name "Todo App")
CID=$(echo $CONV | python -c "import sys,json; print(json.load(sys.stdin)['conversation_id'])")
# Step 2: Send development instructions and watch progress
# The poll_completed snapshot contains cost/time in assistant messages
python scripts/yugoo_cli.py chat \
-c $CID \
-m "Build a todo app with add, complete, and delete features" \
--watch
# Step 3: Publish the application (auto-wait for completion)
python scripts/yugoo_cli.py publish -c $CID --wait
# Step 4: Get the production URL
python scripts/yugoo_cli.py urls -c $CID
Note: All commands automatically use the CREO4U_SKILL_API_KEY environment variable for authentication.
Create a new conversation.
bash
python scripts/yugoo_cli.py create [--name NAME]
ParameterDefaultDescription--name``New ConversationConversation name
Output: JSON with conversation_id, name, status, created_at.
Upload a local file as a chat attachment. The file is uploaded to OSS and the returned oss_path can be passed to chat --attachment.
bash
python scripts/yugoo_cli.py upload --file /path/to/file
ParameterRequiredDescription--fileYesLocal file path to upload (max 50MB)
Output: JSON with oss_path, filename, file_md5, size_bytes.
json
{"oss_path": "chat/attachments/123/abc123def456/document.pdf", "filename": "document.pdf", "file_md5": "abc123def456...", "size_bytes": 1048576}
Example — Upload then chat with attachment:
bash
# Step 1: Upload the file
UPLOAD=$(python scripts/yugoo_cli.py upload --file design.png)
OSS_PATH=$(echo $UPLOAD | python -c "import sys,json; print(json.load(sys.stdin)['oss_path'])")
# Step 2: Send message with attachment
python scripts/yugoo_cli.py chat -c $CID -m "参考这个设计图来实现页面" --attachment "$OSS_PATH" --watch
Send a message and optionally watch for completion via polling. This is the primary workflow command.
bash
python scripts/yugoo_cli.py chat -c CID -m "message" [--watch] [--attachment OSS_PATH]
python scripts/yugoo_cli.py chat -c CID -f /path/to/file [--watch]
ParameterRequiredDescription-c, --conversation-idNoConversation ID (omit to auto-create)-m, --contentNo*Message content (use - to read from stdin)-f, --fileNo*Read message content from a local file path-w, --watchNoPoll for completion after sending message (15s interval)--agent-nameNoSpecific agent to handle the message--contextNoJSON string for additional context--attachmentNoOSS path of uploaded attachment (repeatable for multiple files)--model-choiceNoModel selection for the Task agent. Accepts a preset ( auto | economy | advance | expert) or a concrete model id from the models command. Omit (or pass auto) to use smart routing. Only affects the Task agent; the Pilot agent always uses the platform default.
*Either --content or --file is required. --file takes priority if both are provided.
Output without --watch: Single JSON line with message_id, conversation_id.
Output with --watch: Polling mode with completion status
json
{"event": "message_accepted", "message_id": "...", "conversation_id": "..."}
{"event": "poll", "iteration": 1, "state": "pending"}
{"event": "poll", "iteration": 2, "state": "running"}
{"event": "poll_completed", "iteration": 3, "state": "completed", "snapshot": {...}}
Important:
--watch for most cases — it sends the message AND polls for completion in one command.--file to send a local file's content as the message — useful for long requirement documents or pre-written prompts.--content - to read long prompts from stdin.upload command first to get oss_path, then pass it via --attachment.--model-choice to override the default model routing (see Model Selection).Example — pick a model preset:
bash
# Use the high-capability "expert" preset for the Task agent
python scripts/yugoo_cli.py chat -c $CID -m "Refactor the auth flow" --model-choice expert --watch
# Use a concrete model id (look it up via the `models` command first)
python scripts/yugoo_cli.py chat -c $CID -m "Add tests" --model-choice claude-sonnet-4-6 --watch
List available model presets and concrete model ids for use with chat --model-choice. This is a public endpoint and does not consume credit.
bash
python scripts/yugoo_cli.py models
Output:
json
{
"presets": [
{"id": "auto", "display_name": "Auto", "description": "Smart routing", "is_default": true, "first_model": "...", "fallback_chain": ["..."]},
{"id": "economy", "display_name": "Economy", "description": "Cheaper, faster models", "first_model": "...", "fallback_chain": ["..."]},
{"id": "advance", "display_name": "Advance", "description": "Balanced", "first_model": "...", "fallback_chain": ["..."]},
{"id": "expert", "display_name": "Expert", "description": "Highest capability", "first_model": "...", "fallback_chain": ["..."]}
],
"models": [
{"id": "claude-sonnet-4-6", "display_name": "Claude Sonnet 4.6", "series": "claude", "price_tier": "advance", "is_latest": true, "enabled": true, "context_window": 200000}
],
"default_choice": "auto"
}
When to use:
id (e.g. expert) or a concrete model id (e.g. claude-sonnet-4-6) to chat --model-choice.Trigger deployment to production.
bash
python scripts/yugoo_cli.py publish -c CID [--wait]
ParameterRequiredDescription-c, --conversation-idYesConversation ID to publish-w, --waitNoAuto-poll publish status until published or failed
Examples:
1. Publish and manually check status:
bash
python scripts/yugoo_cli.py publish -c $CID
2. Publish and auto-wait for completion (recommended):
bash
python scripts/yugoo_cli.py publish -c $CID --wait
Important:
--wait flag to avoid manual pollingCheck the status of a deployment.
bash
python scripts/yugoo_cli.py publish-status -c CID
ParameterRequiredDescription-c, --conversation-idYesConversation ID
Output: JSON with status: created, publishing, published, or failed
Usage Pattern:
bash
# Publish and auto-wait for completion (recommended)
python scripts/yugoo_cli.py publish -c $CID --wait
# Or check status manually
python scripts/yugoo_cli.py publish-status -c $CID
Tip: Use publish --wait to avoid manual polling.
Take down a deployed application (removes the public production URL).
bash
python scripts/yugoo_cli.py unpublish -c CID
ParameterRequiredDescription-c, --conversation-idYesConversation ID to unpublish
Example:
bash
python scripts/yugoo_cli.py unpublish -c $CID
Important:
publish the application again later to restore the deploymentGet the full conversation snapshot (all messages and state).
bash
python scripts/yugoo_cli.py messages -c CID
Output: Complete snapshot JSON with all runs, messages, panels, and metadata.
Extract structured development results from the conversation snapshot. This is the recommended way to get results after a chat --watch completes.
bash
python scripts/yugoo_cli.py result -c CID [--message-id MID]
ParameterRequiredDescription-c, --conversation-idYesConversation ID--message-idNoSpecific message run (default: latest)
Output:
json
{
"conversation_id": "...",
"message_id": "...",
"status": "completed",
"summary": "Built a full-stack todo application...",
"files_generated": ["src/App.tsx", "backend/main.py"],
"files_modified": ["package.json"],
"assistant_messages": ["..."],
"tasks": [
{"task_id": "...", "title": "Generate frontend code", "status": "completed", "type": "streaming_multi_file"}
],
"error": null,
"token_usage": {"prompt_tokens": 1234, "completion_tokens": 5678, "total_tokens": 6912},
"credit_usage": 100,
"started_at": 1705771805000,
"completed_at": 1705771900000
}
Stop message generation in progress.
bash
python scripts/yugoo_cli.py stop -c CID --message-id MID
Start or restart the conversation runtime (container environment).
bash
python scripts/yugoo_cli.py start-runtime -c CID
Use this after a container has been reclaimed due to inactivity.
List conversations with pagination and filtering.
bash
python scripts/yugoo_cli.py list [--limit N] [--offset N] [--keyword KW] [--sort-by FIELD] [--sort-order asc|desc]
Get conversation details.
bash
python scripts/yugoo_cli.py get -c CID
Terminate a conversation.
bash
python scripts/yugoo_cli.py delete -c CID
Check sandbox services health (frontend, backend, sandbox interface).
bash
python scripts/yugoo_cli.py health -c CID
Output:
json
{
"frontend": {"ready": true, "status_code": 200, "message": "Frontend service is ready"},
"backend": {"ready": true, "status_code": 200, "message": "Backend service is ready"},
"sandbox": {"ready": true, "status_code": 200, "message": "Sandbox service is ready"},
"all_ready": true
}
Get sandbox, preview, and backend URLs for the development environment.
bash
python scripts/yugoo_cli.py urls -c CID
Output:
json
{"sandbox_url": "https://sandbox-xxx.domain.com", "preview_url": "https://preview-xxx.domain.com", "backend_url": "https://backend-xxx.domain.com"}
Download workspace as a zip file.
bash
python scripts/yugoo_cli.py download -c CID
Output: JSON with download_url, filename, size_mb, md5.
List all saved versions for a conversation.
bash
python scripts/yugoo_cli.py versions -c CID [--sort-order asc|desc]
ParameterRequiredDescription-c, --conversation-idYesConversation ID--sort-orderNoSort direction: asc (oldest first) or desc (newest first, default)
Output: JSON with conversation_id, current_version, versions array (each with version, timestamp, is_wip, is_published, description, from_version), and total count.
Example:
bash
python scripts/yugoo_cli.py versions -c $CID
# Output: {"conversation_id": "...", "current_version": 3, "versions": [...], "total": 3}
Get the current active version number and its metadata.
bash
python scripts/yugoo_cli.py current-version -c CID
ParameterRequiredDescription-c, --conversation-idYesConversation ID
Output: JSON with conversation_id, current_version, is_wip, from_version, description.
Switch workspace to a specific version. This changes the active codebase and restarts the sandbox.
bash
python scripts/yugoo_cli.py restore-version -c CID --version N
ParameterRequiredDescription-c, --conversation-idYesConversation ID--versionYesVersion number to switch to
Output: JSON with success, version, mode ( tag or wip), message.
Important:
chat to continue development from that version.Create a deep copy of an existing conversation (own application).
bash
python scripts/yugoo_cli.py copy -c CID [--new-name NAME] [--wait]
ParameterRequiredDescription-c, --conversation-idYesSource conversation ID--new-nameNoName for the copy (default: "{original name}(副本)")-w, --waitNoAuto-poll copy status until workspace is ready (5s interval, max 10 minutes)
Output: JSON with conversation_id, name, status, created_at of the new conversation.
Important:
--wait to block until workspace files are fully copiedExample:
bash
# Copy an existing app (without waiting)
NEW=$(python scripts/yugoo_cli.py copy -c $CID --new-name "My App V2")
NEW_CID=$(echo $NEW | python -c "import sys,json; print(json.load(sys.stdin)['conversation_id'])")
# Copy and wait for workspace to be ready
NEW=$(python scripts/yugoo_cli.py copy -c $CID --new-name "My App V2" --wait)
NEW_CID=$(echo $NEW | python -c "import sys,json; print(json.load(sys.stdin)['conversation_id'])")
# Iterate on the copy
python scripts/yugoo_cli.py chat -c $NEW_CID -m "Add dark mode support" --watch
Browse and search the app market.
bash
python scripts/yugoo_cli.py market-list [--limit N] [--offset N] [--keyword KW] [--category-id ID] [--sort-by FIELD]
ParameterRequiredDescription--limitNoMax results (default: 20)--offsetNoPagination offset (default: 0)--keywordNoSearch keyword--category-idNoFilter by category ID--sort-byNoSort field (e.g. view_count, clone_count, created_at)
Output: JSON with items array containing market item details (item_id, title, description, clone_count, view_count, etc.) and pagination info.
Example:
bash
# Search for todo apps
python scripts/yugoo_cli.py market-list --keyword "todo"
# Browse most popular apps
python scripts/yugoo_cli.py market-list --sort-by view_count --limit 10
Clone an app from the app market into your conversation list.
bash
python scripts/yugoo_cli.py clone-market --item-id ITEM_ID
ParameterRequiredDescription--item-idYesMarket item ID to clone
Output: JSON with conversation_id, cloned_code, cloned_prd, cloned_history, message_count.
Important:
Example - Clone from Market and Iterate:
bash
# Step 1: Browse market
python scripts/yugoo_cli.py market-list --keyword "dashboard"
# Step 2: Clone the app (use item_id from market-list result)
CLONE=$(python scripts/yugoo_cli.py clone-market --item-id $ITEM_ID)
CID=$(echo $CLONE | python -c "import sys,json; print(json.load(sys.stdin)['conversation_id'])")
# Step 3: Customize the cloned app
python scripts/yugoo_cli.py chat -c $CID -m "Change the color scheme to dark blue" --watch
# Step 4: Publish your customized version
python scripts/yugoo_cli.py publish -c $CID --wait
Delete a WIP (work-in-progress) version and revert to the previous version.
bash
python scripts/yugoo_cli.py delete-version -c CID --version N
ParameterRequiredDescription-c, --conversation-idYesConversation ID--versionYesVersion number to delete
Output: JSON with success, version, reverted_to_version, message.
Important:
Finalize (lock) the current WIP version, making it a permanent checkpoint.
bash
python scripts/yugoo_cli.py finalize-version -c CID
ParameterRequiredDescription-c, --conversation-idYesConversation ID
Output: JSON with success, version, from_version, message.
Important:
Update the description of a specific version.
bash
python scripts/yugoo_cli.py update-version-desc -c CID --version N --description "description text"
ParameterRequiredDescription-c, --conversation-idYesConversation ID--versionYesVersion number--descriptionYesNew description text
Output: JSON with success, version, description, message.
Rename a conversation.
bash
python scripts/yugoo_cli.py rename -c CID --name "New Name"
Get message-level spending (cost and time) for a conversation. Supports filtering by message_id to query a single message's cost and duration.
bash
python scripts/yugoo_cli.py spending -c CID [--message-id MID] [--limit N] [--offset N]
ParameterRequiredDescription-c, --conversation-idYesConversation ID--message-idNoFilter by specific message ID--limitNoMax results (default: 50)--offsetNoPagination offset (default: 0)
Output:
json
{
"session_id": "202501201430-a1b2c3d4",
"app_name": "My Web App",
"total_cost": "1500",
"total": 1,
"items": [
{
"message_id": "msg-001",
"message_preview": "Build a login page...",
"total_cost": "300",
"record_count": 3,
"first_billing_at": "2025-01-20T14:30:00",
"last_billing_at": "2025-01-20T14:35:00",
"started_at": "2025-01-20T14:30:00",
"finished_at": "2025-01-20T14:35:00",
"duration_seconds": 300.0
}
],
"limit": 20,
"offset": 0
}
Fields:
total_cost: Total credits consumed for the entire conversation (integer string)items[].total_cost: Credits consumed per message/development rounditems[].started_at / finished_at: Start and end timestamps of the development rounditems[].duration_seconds: Duration of the development round in secondsitems[].first_billing_at / last_billing_at: Time range of billing for each roundEvery stdout line is a complete, self-contained JSON object. This enables piping to jq for filtering and line-by-line processing by AI agents.
The chat and publish commands with --watch use polling to monitor progress:
Polling stops automatically when the run reaches completed or failed state.
Recommendation: Use --wait flag for publish command to auto-poll status.
Resume polling for a message that is still in progress (after a poll_timeout).
bash
python scripts/yugoo_cli.py poll -c CID --message-id MID
ParameterRequiredDescription-c, --conversation-idYesConversation ID--message-idYesMessage ID to poll
Output: Same as chat --watch — emits poll events and ends with poll_completed or poll_timeout.
You MUST follow these rules strictly when using chat --watch:
Single request timeout is 10 minutes: Each chat --watch or poll command polls for up to 10 minutes. If the development is not done, the CLI emits a poll_timeout event and exits. This is normal — development can take longer than 10 minutes.
On poll_timeout, you MUST retry using the poll command: When you receive a poll_timeout event, immediately run the poll command with the same conversation_id and message_id to resume monitoring. Do NOT treat poll_timeout as a failure or stop.
Maximum 6 retries (1 hour total): You may retry the poll command up to 6 times (including the initial chat --watch). This ensures a maximum total timeout of 1 hour (6 × 10 min). If all 6 attempts time out, then treat it as a genuine timeout and report to the user.
Retry flow: text
chat --watch (attempt 1, up to 10 min)
→ poll_timeout? → poll (attempt 2, up to 10 min)
→ poll_timeout? → poll (attempt 3, up to 10 min)
→ poll_timeout? → poll (attempt 4, up to 10 min)
→ poll_timeout? → poll (attempt 5, up to 10 min)
→ poll_timeout? → poll (attempt 6, up to 10 min)
→ poll_timeout? → report timeout to user
Example: bash
# Initial request
python scripts/yugoo_cli.py chat -c $CID -m "Build a complex app" --watch
# If poll_timeout, resume with poll:
python scripts/yugoo_cli.py poll -c $CID --message-id $MID
# Repeat poll up to 5 more times if needed
Wait for ALL tasks to complete: The polling only ends with poll_completed when every task and phase in the development pipeline has finished (status = completed or failed). Do NOT consider the operation done just because an assistant message appeared or a partial result was returned.
Do NOT stop polling on intermediate messages: During development, the platform may return intermediate status messages such as:
These are progress updates, NOT completion signals. You MUST continue waiting for the poll_completed event. Never interpret these messages as the final result.
poll_completed means truly done:
poll_completed → Development finished. Proceed to result and spending.poll_timeout → Not finished yet. Retry with poll command (up to 6 total attempts).All HTTP errors produce JSON on stderr:
json
{"error": {"error": "CONVERSATION_NOT_FOUND", "message": "Conversation not found"}, "status_code": 404}
Common error codes:
StatusErrorMeaning402INSUFFICIENT_CREDITUser has insufficient credit404CONVERSATION_NOT_FOUNDConversation does not exist409CONVERSATION_IN_PROGRESSAnother message is being processed409WIP_VERSION_CONFLICTVersion conflict during message send409PUBLISH_IN_PROGRESSAnother publish is being processed501NOT_IMPLEMENTEDFeature not available in current mode
If the conversation is locked (409), wait a few seconds and retry.
Use copy to create an independent copy of your existing application, then iterate on it:
bash
# Copy the app
NEW=$(python scripts/yugoo_cli.py copy -c $CID --new-name "Todo App V2")
NEW_CID=$(echo $NEW | python -c "import sys,json; print(json.load(sys.stdin)['conversation_id'])")
# Develop on the copy
python scripts/yugoo_cli.py chat -c $NEW_CID -m "Add user authentication" --watch
# Publish the new version
python scripts/yugoo_cli.py publish -c $NEW_CID --wait
Use market-list to find apps, then clone-market to clone into your workspace:
bash
# Browse the market
python scripts/yugoo_cli.py market-list --keyword "ecommerce" --limit 5
# Clone an app (use item_id from market-list output)
CLONE=$(python scripts/yugoo_cli.py clone-market --item-id $ITEM_ID)
CID=$(echo $CLONE | python -c "import sys,json; print(json.load(sys.stdin)['conversation_id'])")
# Customize the cloned app
python scripts/yugoo_cli.py chat -c $CID -m "Replace product catalog with my inventory" --watch
# Get results and publish
python scripts/yugoo_cli.py result -c $CID
python scripts/yugoo_cli.py publish -c $CID --wait
python scripts/yugoo_cli.py urls -c $CID
Versions allow you to create checkpoints, switch between states, and safely experiment.
bash
# List all versions
python scripts/yugoo_cli.py versions -c $CID
# Check current version
python scripts/yugoo_cli.py current-version -c $CID
# Switch to an earlier version
python scripts/yugoo_cli.py restore-version -c $CID --version 2
After development, finalize the current WIP version to create a permanent checkpoint:
bash
# Develop features
python scripts/yugoo_cli.py chat -c $CID -m "Add payment integration" --watch
# Lock the version as a stable checkpoint
python scripts/yugoo_cli.py finalize-version -c $CID
# Add a description to the version
python scripts/yugoo_cli.py update-version-desc -c $CID --version 3 --description "Added payment integration with Stripe"
If a development round didn't go well, delete the WIP version to revert:
bash
# Check current version (e.g., version 4, WIP)
python scripts/yugoo_cli.py current-version -c $CID
# Delete the WIP version and revert to previous
python scripts/yugoo_cli.py delete-version -c $CID --version 4
# Now back at version 3 — try again
python scripts/yugoo_cli.py chat -c $CID -m "Add payment integration using a different approach" --watch
Agents should handle the following situations:
conversation_idIf workflow state is unclear, inspect the conversation or use result command before taking the next action.
Pro Tips:
--help when unsure about parameters--wait flag with publish to simplify deploymentconversation_id from create responsechat directly for modificationsProduction preview URL format:
text
https://preview-{conversation_id}.creo4u.com/
Example publish command:
bash
python scripts/yugoo_cli.py publish -c $CID --wait
--watch with chat for the common case — it sends the message and polls for completion.--wait with publish to auto-poll deployment status.result after completion to get a clean summary without parsing poll events.--file with chat to send a local file's content as the message, useful for long requirement documents or pre-written prompts.--content - flag reads message content from stdin, useful for long prompts.conversation_id is abbreviated as -c in all commands for convenience.result output for status: "failed" and error field to detect failures.health to verify the sandbox is ready before sending development instructions.start-runtime to restart a container that was reclaimed due to inactivity.After an application is built, do NOT manually inspect the generated code files.
After chat --watch (or poll) completes with poll_completed:
spending command with --message-id:bash
python scripts/yugoo_cli.py spending -c "$CID" --message-id "$MID"
Extract from the response:
items[0].total_cost (Credits)items[0].duration_seconds (seconds)bash
python scripts/yugoo_cli.py publish -c "$CID" --wait
python scripts/yugoo_cli.py urls -c "$CID"
Then respond with the following fixed format (do NOT change field names or order):
text
**Application Summary**: [one-line description of what was built and key features]
**Preview URL**: https://preview-{conversation_id}.creo4u.com/
**Publish URL**: [url field from publish command output]
**Publish Status**: [published / failed]
**Development Cost**: [N] Credits
**Development Time**: [N]s
IMPORTANT: Always publish after development completes. Never skip any field. Always include both Preview URL and Publish URL.