{
  "schemaVersion": "1.0",
  "item": {
    "slug": "jules-cli",
    "name": "Jules CLI",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ajstafford/jules-cli",
    "canonicalUrl": "https://clawhub.ai/ajstafford/jules-cli",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/jules-cli",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=jules-cli",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "references/usage.md",
      "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",
      "slug": "jules-cli",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-04T14:54:03.037Z",
      "expiresAt": "2026-05-11T14:54:03.037Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=jules-cli",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=jules-cli",
        "contentDisposition": "attachment; filename=\"jules-cli-1.0.2.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "jules-cli"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/jules-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/jules-cli",
    "agentPageUrl": "https://openagent3.xyz/skills/jules-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/jules-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/jules-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": "Overview",
        "body": "This skill enables the agent to interact with the jules CLI. It supports task assignment, session monitoring, and result integration."
      },
      {
        "title": "Usage Guidelines (CRITICAL)",
        "body": "To prevent excessive and inappropriate session creation, you must follow these rules:\n\nLocal First: If you can solve the task locally within your current environment (e.g., editing files, running tests, small refactors), do not use Jules.\nComplexity Threshold: Only use Jules for tasks that are:\n\nLarge-scale: Touching many files or requiring significant architectural changes.\nIsolated: Benefiting from a clean, remote environment to avoid local dependency issues.\nExploratory: Tasks where the solution isn't immediately obvious and requires iteration in a VM.\n\n\nNo Proliferation (One at a Time):\n\nNever create multiple sessions for the same task.\nNever use a loop or parallel execution to spin up several sessions at once.\nWait for a session to complete and inspect the results before deciding if another session is needed.\n\n\nNo \"Small\" Tasks: Do not submit tasks like \"Add a comment\", \"Change a variable name\", or \"Fix a typo\"."
      },
      {
        "title": "Security Guidelines",
        "body": "To ensure safe execution of CLI commands, you must adhere to the following security practices:\n\nInput Validation: Before running any command, validate that:\n\nRepository names follow the owner/repo format (alphanumeric, dots, hyphens, and underscores).\nSession IDs are alphanumeric (typically hyphens and underscores are also allowed).\n\n\nQuoting: Always wrap shell placeholders in double quotes (e.g., \"<repo>\").\nNo Inline Injection: Never embed user-provided data directly into script strings (like python3 -c). Use environment variables to pass such data safely.\nSanitization: Ensure task descriptions do not contain malicious shell characters if passed directly to the shell."
      },
      {
        "title": "Safety Controls",
        "body": "Approval Required (MANDATORY): You must ask for explicit user approval before running any of the following commands:\n\njules remote new: Since this creates a remote session/VM.\njules remote pull --apply: Since this modifies the local codebase.\njules teleport: Since this clones and modifies the environment.\n\n\nVerification: Always run jules remote list --session before creating a new one to ensure you don't already have a pending session for the same repository.\nCredentials: If jules login is required, explain why to the user and wait for their confirmation before proceeding."
      },
      {
        "title": "Core Workflow (Manual Control)",
        "body": "Prefer using the CLI directly to maintain situational awareness."
      },
      {
        "title": "1. Pre-flight Check",
        "body": "Verify repository access and format.\n\njules remote list --repo\n\nNote: Ensure the repo format is GITHUB_USERNAME/REPO."
      },
      {
        "title": "2. Submit Task",
        "body": "Create a session and capture the Session ID.\n\n# Capture the output to get the ID\n# Replace <repo> and task description with validated inputs\njules remote new --repo \"<repo>\" --session \"Detailed task description\" < /dev/null"
      },
      {
        "title": "3. Monitor Progress",
        "body": "List sessions and look for your ID. Use this robust one-liner to check the status (it handles statuses with spaces like \"In Progress\"):\n\nCheck Status (Safe Method):\n\n# Use an environment variable to pass the Session ID safely to Python\nexport JULES_SESSION_ID=\"<SESSION_ID>\"\njules remote list --session | python3 -c \"\nimport sys, re, os\nsession_id = os.environ.get('JULES_SESSION_ID', '')\nif not session_id: sys.exit(0)\nfor line in sys.stdin:\n    line = line.strip()\n    if line.startswith(session_id):\n        # Extract status (the last column after multiple spaces)\n        print(re.split(r'\\s{2,}', line)[-1])\n\"\nunset JULES_SESSION_ID"
      },
      {
        "title": "4. Integrate Results",
        "body": "Once the status is Completed, pull and apply the changes.\n\n# Replace <SESSION_ID> with the validated Session ID\njules remote pull --session \"<SESSION_ID>\" --apply < /dev/null"
      },
      {
        "title": "Error Handling & Troubleshooting",
        "body": "Repository Not Found: Verify format with jules remote list --repo. It must match the GitHub path.\nTTY Errors: Always use < /dev/null for non-interactive automation with the raw jules command.\nCredentials: If you see login errors, ensure HOME is set correctly or run jules login."
      },
      {
        "title": "Command Reference",
        "body": "CommandPurposejules remote list --repoVerify available repositories and their exact names.jules remote list --sessionList active and past sessions to check status.jules remote newCreate a new coding task.jules remote pullApply changes from a completed session.jules teleport \"<id>\"Clone and apply changes (useful for fresh environments)."
      }
    ],
    "body": "Jules CLI Skill\nOverview\n\nThis skill enables the agent to interact with the jules CLI. It supports task assignment, session monitoring, and result integration.\n\nUsage Guidelines (CRITICAL)\n\nTo prevent excessive and inappropriate session creation, you must follow these rules:\n\nLocal First: If you can solve the task locally within your current environment (e.g., editing files, running tests, small refactors), do not use Jules.\nComplexity Threshold: Only use Jules for tasks that are:\nLarge-scale: Touching many files or requiring significant architectural changes.\nIsolated: Benefiting from a clean, remote environment to avoid local dependency issues.\nExploratory: Tasks where the solution isn't immediately obvious and requires iteration in a VM.\nNo Proliferation (One at a Time):\nNever create multiple sessions for the same task.\nNever use a loop or parallel execution to spin up several sessions at once.\nWait for a session to complete and inspect the results before deciding if another session is needed.\nNo \"Small\" Tasks: Do not submit tasks like \"Add a comment\", \"Change a variable name\", or \"Fix a typo\".\nSecurity Guidelines\n\nTo ensure safe execution of CLI commands, you must adhere to the following security practices:\n\nInput Validation: Before running any command, validate that:\nRepository names follow the owner/repo format (alphanumeric, dots, hyphens, and underscores).\nSession IDs are alphanumeric (typically hyphens and underscores are also allowed).\nQuoting: Always wrap shell placeholders in double quotes (e.g., \"<repo>\").\nNo Inline Injection: Never embed user-provided data directly into script strings (like python3 -c). Use environment variables to pass such data safely.\nSanitization: Ensure task descriptions do not contain malicious shell characters if passed directly to the shell.\nSafety Controls\nApproval Required (MANDATORY): You must ask for explicit user approval before running any of the following commands:\njules remote new: Since this creates a remote session/VM.\njules remote pull --apply: Since this modifies the local codebase.\njules teleport: Since this clones and modifies the environment.\nVerification: Always run jules remote list --session before creating a new one to ensure you don't already have a pending session for the same repository.\nCredentials: If jules login is required, explain why to the user and wait for their confirmation before proceeding.\nCore Workflow (Manual Control)\n\nPrefer using the CLI directly to maintain situational awareness.\n\n1. Pre-flight Check\n\nVerify repository access and format.\n\njules remote list --repo\n\n\nNote: Ensure the repo format is GITHUB_USERNAME/REPO.\n\n2. Submit Task\n\nCreate a session and capture the Session ID.\n\n# Capture the output to get the ID\n# Replace <repo> and task description with validated inputs\njules remote new --repo \"<repo>\" --session \"Detailed task description\" < /dev/null\n\n3. Monitor Progress\n\nList sessions and look for your ID. Use this robust one-liner to check the status (it handles statuses with spaces like \"In Progress\"):\n\nCheck Status (Safe Method):\n\n# Use an environment variable to pass the Session ID safely to Python\nexport JULES_SESSION_ID=\"<SESSION_ID>\"\njules remote list --session | python3 -c \"\nimport sys, re, os\nsession_id = os.environ.get('JULES_SESSION_ID', '')\nif not session_id: sys.exit(0)\nfor line in sys.stdin:\n    line = line.strip()\n    if line.startswith(session_id):\n        # Extract status (the last column after multiple spaces)\n        print(re.split(r'\\s{2,}', line)[-1])\n\"\nunset JULES_SESSION_ID\n\n4. Integrate Results\n\nOnce the status is Completed, pull and apply the changes.\n\n# Replace <SESSION_ID> with the validated Session ID\njules remote pull --session \"<SESSION_ID>\" --apply < /dev/null\n\nError Handling & Troubleshooting\nRepository Not Found: Verify format with jules remote list --repo. It must match the GitHub path.\nTTY Errors: Always use < /dev/null for non-interactive automation with the raw jules command.\nCredentials: If you see login errors, ensure HOME is set correctly or run jules login.\nCommand Reference\nCommand\tPurpose\njules remote list --repo\tVerify available repositories and their exact names.\njules remote list --session\tList active and past sessions to check status.\njules remote new\tCreate a new coding task.\njules remote pull\tApply changes from a completed session.\njules teleport \"<id>\"\tClone and apply changes (useful for fresh environments)."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ajstafford/jules-cli",
    "publisherUrl": "https://clawhub.ai/ajstafford/jules-cli",
    "owner": "ajstafford",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/jules-cli",
    "downloadUrl": "https://openagent3.xyz/downloads/jules-cli",
    "agentUrl": "https://openagent3.xyz/skills/jules-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/jules-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/jules-cli/agent.md"
  }
}