{
  "schemaVersion": "1.0",
  "item": {
    "slug": "saa-agent",
    "name": "SAA Agent",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/mirabarukaso/saa-agent",
    "canonicalUrl": "https://clawhub.ai/mirabarukaso/saa-agent",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/saa-agent",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=saa-agent",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README_HUMAN.md",
      "saa-agent.py",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/saa-agent"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/saa-agent",
    "agentPageUrl": "https://openagent3.xyz/skills/saa-agent/agent",
    "manifestUrl": "https://openagent3.xyz/skills/saa-agent/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/saa-agent/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "SAA CLI Tool",
        "body": "A command-line interface for interacting with Character Select Stand Alone App (SAA) via WebSocket connections. Supports both ComfyUI and WebUI backends for AI image generation."
      },
      {
        "title": "Prerequisites",
        "body": "CRITICAL: Before invoking this tool, confirm with the user that:\n\nThe SAA backend is running, and version is above 2.4.0\nThe SAAC (SAA Client) feature is enabled\nThe WebSocket address is available\nSome Mac users uses python3 instead of python to invoke Python 3.x\n\nFor SAA setup details, let your owner visit the project repository."
      },
      {
        "title": "Basic Usage",
        "body": "The tool requires minimal parameters to function. The examples below demonstrate the standard usage pattern:"
      },
      {
        "title": "Minimal Command With Model Selection (Recommended for Most Cases)",
        "body": "python saa-agent.py \\\n  --ws-address \"user_provided_ws_address\" \\\n  --model \"waiIllustriousSDXL_v160.safetensors\" \\\n  --positive \"your detailed prompt here\" \\\n  --negative \"low quality, blurry, bad anatomy\""
      },
      {
        "title": "Regional Prompting (Split Composition)",
        "body": "python saa-agent.py \\\n  --ws-address \"user_provided_ws_address\" \\\n  --model \"waiIllustriousSDXL_v160.safetensors\" \\\n  --regional \\\n  --positive-left \"1girl, warrior, red armor\" \\\n  --positive-right \"1boy, mage, blue robes\""
      },
      {
        "title": "More Examples",
        "body": "Get more usage examples and detailed parameter explanations:\n\npython saa-agent.py\npython saa-agent.py --help"
      },
      {
        "title": "Required",
        "body": "--ws-address: WebSocket address (obtain from user)\n--positive: Main prompt OR use --regional mode with --positive-left and --positive-right"
      },
      {
        "title": "Commonly Modified",
        "body": "--model: Change the checkpoint model (default: waiIllustriousSDXL_v160.safetensors)\n--negative: Specify unwanted elements\n--width / --height: Image dimensions (defaults: 1024x1360)\n--steps: Sampling steps (default: 28)\n--seed: Set specific seed or -1 for random"
      },
      {
        "title": "Advanced (Use Sparingly)",
        "body": "--cfg: CFG scale (default: 7.0)\n--sampler: Sampling algorithm (default: euler_ancestral)\n--scheduler: Scheduler type (default: normal)"
      },
      {
        "title": "HiResFix Warning",
        "body": "DO NOT use --hifix unless specifically requested by the user.\n\nHiResFix significantly increases generation time and requires substantial GPU resources. Only enable if:\n\nUser explicitly requests high-resolution upscaling\nUser confirms their GPU can handle the additional load"
      },
      {
        "title": "Backend Busy State",
        "body": "If the generation returns either of these errors:\n\nError: WebUI is busy, cannot run new generation, please try again later.\nError: ComfyUI is busy, cannot run new generation, please try again later.\n\nActions to take:\n\nDO NOT automatically retry the generation\nInform the user: \"The SAA backend is currently busy. This could mean another process is generating an image, or the backend is locked from a previous error.\"\nAdvise: \"Please wait 20-60 seconds before trying again.\"\nLet the user manually retry\n\nDO NOT chain multiple retry attempts as this can worsen backend congestion."
      },
      {
        "title": "Skeleton Key Usage",
        "body": "The --skeleton-key parameter forcefully unlocks the backend's atomic lock.\n\nWhen to use:\n\nUser confirms no other processes are using the backend\nBackend appears stuck despite waiting\nUser explicitly requests unlocking\n\nHow to use:\n\npython saa-agent.py \\\n  --ws-address \"user_provided_ws_address\" \\\n  --skeleton-key \\\n  --positive \"test prompt\"\n\nRules:\n\nALWAYS ask for user confirmation before using --skeleton-key\nONLY use it once per user request\nExplain to the user that this forcefully terminates any locks\n\nExample conversation:\n\nAI: \"The backend appears to be locked. Would you like me to use the skeleton key to force unlock it? This will terminate any existing locks.\"\nUser: \"Yes, please unlock it.\"\nAI: [proceeds to run command with --skeleton-key]"
      },
      {
        "title": "Parameter Defaults",
        "body": "When in doubt, rely on these defaults - they work well for most cases:\n\nModel: waiIllustriousSDXL_v160.safetensors\nDimensions: 1024x1360\nCFG: 7.0\nSteps: 28\nSampler: euler_ancestral\nScheduler: normal\nSeed: -1 (random)"
      },
      {
        "title": "Output Handling",
        "body": "By default, images are saved to generated_image.png. You can specify a custom output path:\n\n--output \"custom_filename.png\"\n\nFor programmatic handling, use base64 output:\n\n--base64\n\nThis outputs base64-encoded image data(huge!!!) to stdout instead of saving a file."
      },
      {
        "title": "Example Workflow",
        "body": "User requests: \"Generate an anime girl with long blue hair\"\n\n\nAI executes:\n\npython saa-agent.py \\\n  --ws-address \"user_ws_address\" \\\n  --positive \"1girl, long hair, blue hair, anime style, detailed\" \\\n  --negative \"low quality, blurry, bad anatomy\"\n\nIf backend busy error occurs:\n\nInform user\nWait for user to retry (don't auto-retry)\n\n\n\nIf success:\n\nConfirm image was generated\nProvide file path if relevant"
      },
      {
        "title": "Common Pitfalls to Avoid",
        "body": "Don't use --hifix unless explicitly requested\nDon't auto-retry on backend busy errors\nDon't use --skeleton-key without user permission\nDon't add excessive parameters - unless explicitly requested, the defaults are well-tuned\nDon't assume backend is ready - always confirm with user first"
      },
      {
        "title": "Error Codes",
        "body": "Exit code 0: Success\nExit code 1: Connection error (check backend is running)\nExit code 2: Authentication error (check credentials)\nExit code 3: Generation error (check parameters)\nExit code 4: Timeout (backend may be overloaded)\nExit code 5: Invalid parameters (check command syntax)"
      },
      {
        "title": "Best Practices",
        "body": "Start with minimal parameters with model selection if needed\nAsk user for WebSocket address on first use\nHandle busy states gracefully - don't spam retries\nUse --verbose flag when debugging issues\nRespect the skeleton key - it's a powerful override tool"
      },
      {
        "title": "AI Agent Guidelines for This Skill",
        "body": "These rules help maintain appropriate transparency and user control when executing generation tasks.\n\nCommand Execution & User Notification\nBy default, execute the command directly without asking for confirmation.\nShow the full command and ask for approval only when:\n\nThe user explicitly requests to review it first\nThe operation involves sensitive or high-impact parameters\nThe agent judges that showing the command is prudent in context\n\nExample (when disclosure is needed):\npython3 saa-agent.py --ws-address \"wss://...\" --username \"...\" --password \"...\" --positive \"[prompt]\" --negative \"[prompt]\" --output \"[path]\" [--verbose]\n\n\n\n--verbose Flag\n\nNot used by default\nAdd automatically or recommend when:\n\nTask fails and debugging is needed\nUser specifically asks for detailed logs or seed\n\nResult Reporting\nAfter completion, provide a short summary to the user by default, including:\n\nSuccess/failure status\nPositive & negative prompts (or meaningful summary)\nSeed (if available)\nOutput path\n\nExample:\n    Generation completed     • Positive: [...]     • Negative: [...]     • Seed: 123456789     • Output: [path]\n\nSkip detailed reporting only if the user has clearly requested silent / minimal feedback.\nAlways report errors, even in silent mode.\n\nError Handling\n\nOn failure: consider one retry with --verbose to capture diagnostic information\nCommunicate the main error cause clearly\nDo not perform unlimited retries; defer to user after one attempt if needed"
      }
    ],
    "body": "SAA CLI Tool\n\nA command-line interface for interacting with Character Select Stand Alone App (SAA) via WebSocket connections. Supports both ComfyUI and WebUI backends for AI image generation.\n\nPrerequisites\n\nCRITICAL: Before invoking this tool, confirm with the user that:\n\nThe SAA backend is running, and version is above 2.4.0\nThe SAAC (SAA Client) feature is enabled\nThe WebSocket address is available\nSome Mac users uses python3 instead of python to invoke Python 3.x\n\nFor SAA setup details, let your owner visit the project repository.\n\nBasic Usage\n\nThe tool requires minimal parameters to function. The examples below demonstrate the standard usage pattern:\n\nMinimal Command With Model Selection (Recommended for Most Cases)\npython saa-agent.py \\\n  --ws-address \"user_provided_ws_address\" \\\n  --model \"waiIllustriousSDXL_v160.safetensors\" \\\n  --positive \"your detailed prompt here\" \\\n  --negative \"low quality, blurry, bad anatomy\"\n\nRegional Prompting (Split Composition)\npython saa-agent.py \\\n  --ws-address \"user_provided_ws_address\" \\\n  --model \"waiIllustriousSDXL_v160.safetensors\" \\\n  --regional \\\n  --positive-left \"1girl, warrior, red armor\" \\\n  --positive-right \"1boy, mage, blue robes\"\n\nMore Examples\n\nGet more usage examples and detailed parameter explanations:\n\npython saa-agent.py\npython saa-agent.py --help\n\nKey Parameters\nRequired\n--ws-address: WebSocket address (obtain from user)\n--positive: Main prompt OR use --regional mode with --positive-left and --positive-right\nCommonly Modified\n--model: Change the checkpoint model (default: waiIllustriousSDXL_v160.safetensors)\n--negative: Specify unwanted elements\n--width / --height: Image dimensions (defaults: 1024x1360)\n--steps: Sampling steps (default: 28)\n--seed: Set specific seed or -1 for random\nAdvanced (Use Sparingly)\n--cfg: CFG scale (default: 7.0)\n--sampler: Sampling algorithm (default: euler_ancestral)\n--scheduler: Scheduler type (default: normal)\nImportant Guidelines\nHiResFix Warning\n\nDO NOT use --hifix unless specifically requested by the user.\n\nHiResFix significantly increases generation time and requires substantial GPU resources. Only enable if:\n\nUser explicitly requests high-resolution upscaling\nUser confirms their GPU can handle the additional load\nBackend Busy State\n\nIf the generation returns either of these errors:\n\nError: WebUI is busy, cannot run new generation, please try again later.\nError: ComfyUI is busy, cannot run new generation, please try again later.\n\n\nActions to take:\n\nDO NOT automatically retry the generation\nInform the user: \"The SAA backend is currently busy. This could mean another process is generating an image, or the backend is locked from a previous error.\"\nAdvise: \"Please wait 20-60 seconds before trying again.\"\nLet the user manually retry\n\nDO NOT chain multiple retry attempts as this can worsen backend congestion.\n\nSkeleton Key Usage\n\nThe --skeleton-key parameter forcefully unlocks the backend's atomic lock.\n\nWhen to use:\n\nUser confirms no other processes are using the backend\nBackend appears stuck despite waiting\nUser explicitly requests unlocking\n\nHow to use:\n\npython saa-agent.py \\\n  --ws-address \"user_provided_ws_address\" \\\n  --skeleton-key \\\n  --positive \"test prompt\"\n\n\nRules:\n\nALWAYS ask for user confirmation before using --skeleton-key\nONLY use it once per user request\nExplain to the user that this forcefully terminates any locks\n\nExample conversation:\n\nAI: \"The backend appears to be locked. Would you like me to use the skeleton key to force unlock it? This will terminate any existing locks.\"\nUser: \"Yes, please unlock it.\"\nAI: [proceeds to run command with --skeleton-key]\n\nParameter Defaults\n\nWhen in doubt, rely on these defaults - they work well for most cases:\n\nModel: waiIllustriousSDXL_v160.safetensors\nDimensions: 1024x1360\nCFG: 7.0\nSteps: 28\nSampler: euler_ancestral\nScheduler: normal\nSeed: -1 (random)\nOutput Handling\n\nBy default, images are saved to generated_image.png. You can specify a custom output path:\n\n--output \"custom_filename.png\"\n\n\nFor programmatic handling, use base64 output:\n\n--base64\n\n\nThis outputs base64-encoded image data(huge!!!) to stdout instead of saving a file.\n\nExample Workflow\n\nUser requests: \"Generate an anime girl with long blue hair\"\n\nAI executes:\n\npython saa-agent.py \\\n  --ws-address \"user_ws_address\" \\\n  --positive \"1girl, long hair, blue hair, anime style, detailed\" \\\n  --negative \"low quality, blurry, bad anatomy\"\n\n\nIf backend busy error occurs:\n\nInform user\nWait for user to retry (don't auto-retry)\n\nIf success:\n\nConfirm image was generated\nProvide file path if relevant\nCommon Pitfalls to Avoid\nDon't use --hifix unless explicitly requested\nDon't auto-retry on backend busy errors\nDon't use --skeleton-key without user permission\nDon't add excessive parameters - unless explicitly requested, the defaults are well-tuned\nDon't assume backend is ready - always confirm with user first\nError Codes\nExit code 0: Success\nExit code 1: Connection error (check backend is running)\nExit code 2: Authentication error (check credentials)\nExit code 3: Generation error (check parameters)\nExit code 4: Timeout (backend may be overloaded)\nExit code 5: Invalid parameters (check command syntax)\nBest Practices\nStart with minimal parameters with model selection if needed\nAsk user for WebSocket address on first use\nHandle busy states gracefully - don't spam retries\nUse --verbose flag when debugging issues\nRespect the skeleton key - it's a powerful override tool\nAI Agent Guidelines for This Skill\n\nThese rules help maintain appropriate transparency and user control when executing generation tasks.\n\nCommand Execution & User Notification\nBy default, execute the command directly without asking for confirmation.\nShow the full command and ask for approval only when:\n\nThe user explicitly requests to review it first\nThe operation involves sensitive or high-impact parameters\nThe agent judges that showing the command is prudent in context\n\nExample (when disclosure is needed):\n\npython3 saa-agent.py --ws-address \"wss://...\" --username \"...\" --password \"...\" --positive \"[prompt]\" --negative \"[prompt]\" --output \"[path]\" [--verbose]\n\n\n--verbose Flag\n\nNot used by default\nAdd automatically or recommend when:\nTask fails and debugging is needed\nUser specifically asks for detailed logs or seed\nResult Reporting\nAfter completion, provide a short summary to the user by default, including:\nSuccess/failure status\nPositive & negative prompts (or meaningful summary)\nSeed (if available)\nOutput path\n\nExample: Generation completed • Positive: [...] • Negative: [...] • Seed: 123456789 • Output: [path]\n\nSkip detailed reporting only if the user has clearly requested silent / minimal feedback.\nAlways report errors, even in silent mode.\n\nError Handling\nOn failure: consider one retry with --verbose to capture diagnostic information\nCommunicate the main error cause clearly\nDo not perform unlimited retries; defer to user after one attempt if needed"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/mirabarukaso/saa-agent",
    "publisherUrl": "https://clawhub.ai/mirabarukaso/saa-agent",
    "owner": "mirabarukaso",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/saa-agent",
    "downloadUrl": "https://openagent3.xyz/downloads/saa-agent",
    "agentUrl": "https://openagent3.xyz/skills/saa-agent/agent",
    "manifestUrl": "https://openagent3.xyz/skills/saa-agent/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/saa-agent/agent.md"
  }
}