{
  "schemaVersion": "1.0",
  "item": {
    "slug": "bricks-cli",
    "name": "BRICKS CLI",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/jhen0409/bricks-cli",
    "canonicalUrl": "https://clawhub.ai/jhen0409/bricks-cli",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/bricks-cli",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=bricks-cli",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "rules/use-desktop-acp.md",
      "rules/connect-local-device.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-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.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/bricks-cli"
    },
    "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/bricks-cli",
    "agentPageUrl": "https://openagent3.xyz/skills/bricks-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/bricks-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/bricks-cli/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": "BRICKS CLI",
        "body": "CLI for BRICKS Workspace API — manage devices, apps, modules, and media."
      },
      {
        "title": "Installation (if not yet)",
        "body": "# Validate installed\nwhich bricks\n\n# npm\nnpm i -g @fugood/bricks-cli\n# Bun\nbun add -g @fugood/bricks-cli"
      },
      {
        "title": "Authentication",
        "body": "# Login with one-time passcode (get from https://control.bricks.tools)\nbricks auth login <passcode>\n\n# Check auth status\nbricks auth status\n\n# Switch profiles\nbricks auth list\nbricks auth use <profile>"
      },
      {
        "title": "Global --auth-profile Flag",
        "body": "Use -ap or --auth-profile to override the active profile for any command, without switching the stored profile:\n\n# Run any command as a specific profile\nbricks -ap staging device list\nbricks --auth-profile production app list\n\n# Also applies to login — saves token to the specified profile\nbricks -ap staging auth login <passcode>\n\nPriority: --auth-profile flag > BRICKS_PROFILE env > stored current profile."
      },
      {
        "title": "List & Info",
        "body": "# List all devices\nbricks device list\nbricks device list -j              # JSON output\nbricks device list -k \"lobby\"      # Filter by keyword\n\n# Get device details\nbricks device get <device-id>\nbricks device get <device-id> -j   # JSON output"
      },
      {
        "title": "Control",
        "body": "# Refresh device (reload app)\nbricks device refresh <device-id>\n\n# Clear device cache\nbricks device clear-cache <device-id>\n\n# Send control command\nbricks device control <device-id> <type>\nbricks device control <device-id> <type> -p '{\"key\":\"value\"}'"
      },
      {
        "title": "Screenshot",
        "body": "# Take and save screenshot\nbricks device screenshot <device-id>\nbricks device screenshot <device-id> -o /tmp/screen.png\n\n# Fetch existing screenshot (no new capture)\nbricks device screenshot <device-id> --no-take"
      },
      {
        "title": "Monitor (Interactive-tty needed)",
        "body": "# Monitor all devices (polls every 60s)\nbricks device monitor\n\n# Monitor specific group\nbricks device monitor -g <group-id>\n\n# Custom interval\nbricks device monitor -i 30"
      },
      {
        "title": "Device Groups",
        "body": "# List groups\nbricks group list\n\n# Get group details\nbricks group get <group-id>\n\n# List devices in group with status\nbricks group devices <group-id>\n\n# Dispatch action to all devices in group\nbricks group dispatch <group-id> <action>\n\n# Refresh all devices in group\nbricks group refresh <group-id>\n\n# Monitor group\nbricks group monitor <group-id>"
      },
      {
        "title": "Applications",
        "body": "# Create a new application\nbricks app new -n \"My App\"\nbricks app new -n \"My App\" -d \"Description\" --layout-width 192 --layout-height 108\nbricks app new -n \"My App\" --example <key>     # Create from example template\nbricks app new -n \"My App\" --init -y           # Create + initialize local project\nbricks app new -n \"My App\" -j                  # JSON output\n\n# List apps\nbricks app list\n\n# Get app details\nbricks app get <app-id>\n\n# Update app\nbricks app update <app-id>\n\n# Validate config against BRICKS schema\nbricks app check-config ./config.json\nbricks app check-config ./config.json -j       # JSON output\n\n# Bind devices to app\nbricks app bind <app-id>\n\n# Quick property edit\nbricks app short-edit <app-id>\n\n# Pull source files\nbricks app project-pull <app-id>\n\n# Initialize local project from app\nbricks app project-init <app-id>\nbricks app project-init <app-id> -o ./my-app\nbricks app project-init <app-id> -y          # Skip prompts, use defaults\nbricks app project-init <app-id> --no-git    # Skip git init"
      },
      {
        "title": "Modules",
        "body": "# Create a new module\nbricks module new -n \"My Module\"\nbricks module new -n \"My Module\" --public --allow-modify\nbricks module new -n \"My Module\" --init -y     # Create + initialize local project\nbricks module new -n \"My Module\" -j            # JSON output\n\nbricks module list\nbricks module get <module-id>\nbricks module update <module-id>\nbricks module short-edit <module-id>\nbricks module release <module-id>\n\n# Initialize local project from module\nbricks module project-init <module-id>\nbricks module project-init <module-id> -o ./my-module -y"
      },
      {
        "title": "Project Init Options",
        "body": "Both app and module support these flags:\n\n-o, --output <dir> — output directory\n-y, --yes — skip prompts, use defaults\n--no-git — skip git initialization\n--no-install — skip bun install\n--no-github-actions — skip GitHub Actions workflow\n--no-agents — skip AGENTS.md\n--no-claude — skip CLAUDE.md\n--gemini — include GEMINI.md (off by default)"
      },
      {
        "title": "Media Flow",
        "body": "bricks media boxes              # List media boxes\nbricks media box <box-id>       # Box details\nbricks media files <box-id>     # Files in box (shows ready status)\nbricks media file <file-id>     # File details (shows ready status)\n\n# Upload files to a media box\nbricks media upload <box-id> ./photo.jpg\nbricks media upload <box-id> ./img1.jpg ./img2.png      # Multiple files\nbricks media upload <box-id> ./photos/*.jpg -j           # JSON output\n\n# Upload with tags and description\nbricks media upload <box-id> ./file.pdf -t docs -t report -d \"Monthly report\"\n\n# Upload with image processing options\nbricks media upload <box-id> ./banner.jpg --image-version 250x250:FILL --image-version 800x600:BOUNDED\nbricks media upload <box-id> ./logo.png --image-version-type png\n\n# Upload with AI analysis\nbricks media upload <box-id> ./photo.jpg --enable-ai-analysis\nbricks media upload <box-id> ./photo.jpg --ai-instruction \"Describe the scene\"\n\n# Control concurrency\nbricks media upload <box-id> ./files/* --concurrency 5"
      },
      {
        "title": "Config",
        "body": "bricks config show              # Show current config\nbricks config endpoint          # Show API endpoint\nbricks config endpoint beta     # Switch to beta endpoint"
      },
      {
        "title": "Interactive Mode (Interactive-tty needed)",
        "body": "bricks interactive    # or: bricks i"
      },
      {
        "title": "DevTools (LAN Discovery)",
        "body": "# Scan LAN for DevTools servers via UDP broadcast\nbricks devtools scan\nbricks devtools scan -t 5000           # Custom timeout (ms)\nbricks devtools scan -j                # JSON output\nbricks devtools scan --verify          # Verify each server via HTTP\n\n# Show connection URLs for a device\nbricks devtools open <address>\nbricks devtools open <address> -p 19853   # Custom port\nbricks devtools open <address> --verify   # Verify reachable first\n\nDevices must have \"Enable LAN Discovery\" turned on in Advanced Settings (on by default)."
      },
      {
        "title": "MCP Server",
        "body": "bricks mcp start      # Start MCP server (STDIO mode)"
      },
      {
        "title": "Bridging Device MCP to Local CLI",
        "body": "Use mcporter to bridge a device's MCP endpoint as a local MCP server (STDIO), so tools like Claude Code can connect to it:\n\n# Bridge a device's MCP endpoint (requires passcode as Bearer token)\nnpx mcporter --url http://<device-ip>:19851/mcp --header \"Authorization: Bearer <passcode>\""
      },
      {
        "title": "ACP Bridge (Desktop App)",
        "body": "Connect external ACP clients to the running BRICKS Project Desktop app (docs).\n\n# Start the bridge (requires desktop app running with ACP enabled in Settings)\nbricks desktop-acp-bridge\n\nThe bridge pipes ACP JSON-RPC over stdio ↔ the desktop app's Unix socket (~/.bricks-project-desktop/acp.sock). It shares the desktop app's settings, sessions, and MCP state.\n\nSee rule use-desktop-acp for full usage with acpx and OpenClaw."
      },
      {
        "title": "Rules",
        "body": "connect-local-device — Deploy the current app to a local LAN device, then monitor status, debug, and run automations via MCP\nuse-desktop-acp — Connect to the BRICKS Project Desktop agent via ACP for headless prompting, session management, and multi-agent orchestration"
      },
      {
        "title": "Tips",
        "body": "Use -j or --json on most commands for JSON output\nDevice IDs are UUIDs — use device list to find them\nGet workspace token from: https://control.bricks.tools → Workspace Settings → API Token"
      }
    ],
    "body": "BRICKS CLI\n\nCLI for BRICKS Workspace API — manage devices, apps, modules, and media.\n\nInstallation (if not yet)\n# Validate installed\nwhich bricks\n\n# npm\nnpm i -g @fugood/bricks-cli\n# Bun\nbun add -g @fugood/bricks-cli\n\nAuthentication\n# Login with one-time passcode (get from https://control.bricks.tools)\nbricks auth login <passcode>\n\n# Check auth status\nbricks auth status\n\n# Switch profiles\nbricks auth list\nbricks auth use <profile>\n\nGlobal --auth-profile Flag\n\nUse -ap or --auth-profile to override the active profile for any command, without switching the stored profile:\n\n# Run any command as a specific profile\nbricks -ap staging device list\nbricks --auth-profile production app list\n\n# Also applies to login — saves token to the specified profile\nbricks -ap staging auth login <passcode>\n\n\nPriority: --auth-profile flag > BRICKS_PROFILE env > stored current profile.\n\nDevice Management\nList & Info\n# List all devices\nbricks device list\nbricks device list -j              # JSON output\nbricks device list -k \"lobby\"      # Filter by keyword\n\n# Get device details\nbricks device get <device-id>\nbricks device get <device-id> -j   # JSON output\n\nControl\n# Refresh device (reload app)\nbricks device refresh <device-id>\n\n# Clear device cache\nbricks device clear-cache <device-id>\n\n# Send control command\nbricks device control <device-id> <type>\nbricks device control <device-id> <type> -p '{\"key\":\"value\"}'\n\nScreenshot\n# Take and save screenshot\nbricks device screenshot <device-id>\nbricks device screenshot <device-id> -o /tmp/screen.png\n\n# Fetch existing screenshot (no new capture)\nbricks device screenshot <device-id> --no-take\n\nMonitor (Interactive-tty needed)\n# Monitor all devices (polls every 60s)\nbricks device monitor\n\n# Monitor specific group\nbricks device monitor -g <group-id>\n\n# Custom interval\nbricks device monitor -i 30\n\nDevice Groups\n# List groups\nbricks group list\n\n# Get group details\nbricks group get <group-id>\n\n# List devices in group with status\nbricks group devices <group-id>\n\n# Dispatch action to all devices in group\nbricks group dispatch <group-id> <action>\n\n# Refresh all devices in group\nbricks group refresh <group-id>\n\n# Monitor group\nbricks group monitor <group-id>\n\nApplications\n# Create a new application\nbricks app new -n \"My App\"\nbricks app new -n \"My App\" -d \"Description\" --layout-width 192 --layout-height 108\nbricks app new -n \"My App\" --example <key>     # Create from example template\nbricks app new -n \"My App\" --init -y           # Create + initialize local project\nbricks app new -n \"My App\" -j                  # JSON output\n\n# List apps\nbricks app list\n\n# Get app details\nbricks app get <app-id>\n\n# Update app\nbricks app update <app-id>\n\n# Validate config against BRICKS schema\nbricks app check-config ./config.json\nbricks app check-config ./config.json -j       # JSON output\n\n# Bind devices to app\nbricks app bind <app-id>\n\n# Quick property edit\nbricks app short-edit <app-id>\n\n# Pull source files\nbricks app project-pull <app-id>\n\n# Initialize local project from app\nbricks app project-init <app-id>\nbricks app project-init <app-id> -o ./my-app\nbricks app project-init <app-id> -y          # Skip prompts, use defaults\nbricks app project-init <app-id> --no-git    # Skip git init\n\nModules\n# Create a new module\nbricks module new -n \"My Module\"\nbricks module new -n \"My Module\" --public --allow-modify\nbricks module new -n \"My Module\" --init -y     # Create + initialize local project\nbricks module new -n \"My Module\" -j            # JSON output\n\nbricks module list\nbricks module get <module-id>\nbricks module update <module-id>\nbricks module short-edit <module-id>\nbricks module release <module-id>\n\n# Initialize local project from module\nbricks module project-init <module-id>\nbricks module project-init <module-id> -o ./my-module -y\n\nProject Init Options\n\nBoth app and module support these flags:\n\n-o, --output <dir> — output directory\n-y, --yes — skip prompts, use defaults\n--no-git — skip git initialization\n--no-install — skip bun install\n--no-github-actions — skip GitHub Actions workflow\n--no-agents — skip AGENTS.md\n--no-claude — skip CLAUDE.md\n--gemini — include GEMINI.md (off by default)\nMedia Flow\nbricks media boxes              # List media boxes\nbricks media box <box-id>       # Box details\nbricks media files <box-id>     # Files in box (shows ready status)\nbricks media file <file-id>     # File details (shows ready status)\n\n# Upload files to a media box\nbricks media upload <box-id> ./photo.jpg\nbricks media upload <box-id> ./img1.jpg ./img2.png      # Multiple files\nbricks media upload <box-id> ./photos/*.jpg -j           # JSON output\n\n# Upload with tags and description\nbricks media upload <box-id> ./file.pdf -t docs -t report -d \"Monthly report\"\n\n# Upload with image processing options\nbricks media upload <box-id> ./banner.jpg --image-version 250x250:FILL --image-version 800x600:BOUNDED\nbricks media upload <box-id> ./logo.png --image-version-type png\n\n# Upload with AI analysis\nbricks media upload <box-id> ./photo.jpg --enable-ai-analysis\nbricks media upload <box-id> ./photo.jpg --ai-instruction \"Describe the scene\"\n\n# Control concurrency\nbricks media upload <box-id> ./files/* --concurrency 5\n\nConfig\nbricks config show              # Show current config\nbricks config endpoint          # Show API endpoint\nbricks config endpoint beta     # Switch to beta endpoint\n\nInteractive Mode (Interactive-tty needed)\nbricks interactive    # or: bricks i\n\nDevTools (LAN Discovery)\n# Scan LAN for DevTools servers via UDP broadcast\nbricks devtools scan\nbricks devtools scan -t 5000           # Custom timeout (ms)\nbricks devtools scan -j                # JSON output\nbricks devtools scan --verify          # Verify each server via HTTP\n\n# Show connection URLs for a device\nbricks devtools open <address>\nbricks devtools open <address> -p 19853   # Custom port\nbricks devtools open <address> --verify   # Verify reachable first\n\n\nDevices must have \"Enable LAN Discovery\" turned on in Advanced Settings (on by default).\n\nMCP Server\nbricks mcp start      # Start MCP server (STDIO mode)\n\nBridging Device MCP to Local CLI\n\nUse mcporter to bridge a device's MCP endpoint as a local MCP server (STDIO), so tools like Claude Code can connect to it:\n\n# Bridge a device's MCP endpoint (requires passcode as Bearer token)\nnpx mcporter --url http://<device-ip>:19851/mcp --header \"Authorization: Bearer <passcode>\"\n\nACP Bridge (Desktop App)\n\nConnect external ACP clients to the running BRICKS Project Desktop app (docs).\n\n# Start the bridge (requires desktop app running with ACP enabled in Settings)\nbricks desktop-acp-bridge\n\n\nThe bridge pipes ACP JSON-RPC over stdio ↔ the desktop app's Unix socket (~/.bricks-project-desktop/acp.sock). It shares the desktop app's settings, sessions, and MCP state.\n\nSee rule use-desktop-acp for full usage with acpx and OpenClaw.\n\nRules\nconnect-local-device — Deploy the current app to a local LAN device, then monitor status, debug, and run automations via MCP\nuse-desktop-acp — Connect to the BRICKS Project Desktop agent via ACP for headless prompting, session management, and multi-agent orchestration\nTips\nUse -j or --json on most commands for JSON output\nDevice IDs are UUIDs — use device list to find them\nGet workspace token from: https://control.bricks.tools → Workspace Settings → API Token"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/jhen0409/bricks-cli",
    "publisherUrl": "https://clawhub.ai/jhen0409/bricks-cli",
    "owner": "jhen0409",
    "version": "0.1.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/bricks-cli",
    "downloadUrl": "https://openagent3.xyz/downloads/bricks-cli",
    "agentUrl": "https://openagent3.xyz/skills/bricks-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/bricks-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/bricks-cli/agent.md"
  }
}