{
  "schemaVersion": "1.0",
  "item": {
    "slug": "local-approvals",
    "name": "Local Approvals",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/shaiss/local-approvals",
    "canonicalUrl": "https://clawhub.ai/shaiss/local-approvals",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/local-approvals",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=local-approvals",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "cli.py",
      "core.py",
      "pending.json",
      "schemas/pending.json",
      "schemas/state.json",
      "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/local-approvals"
    },
    "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/local-approvals",
    "agentPageUrl": "https://openagent3.xyz/skills/local-approvals/agent",
    "manifestUrl": "https://openagent3.xyz/skills/local-approvals/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/local-approvals/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": "Local Approvals Skill",
        "body": "A local approval system that manages agent permissions with auto-approve lists and approval history tracking."
      },
      {
        "title": "Quick Start",
        "body": "# List pending requests\npython C:\\Users\\Shai\\.openclaw\\skills\\local-approvals\\cli.py list\n\n# Approve a request\npython C:\\Users\\Shai\\.openclaw\\skills\\local-approvals\\cli.py approve abc123\n\n# Deny a request\npython C:\\Users\\Shai\\.openclaw\\skills\\local-approvals\\cli.py deny abc123\n\n# Show approval history\npython C:\\Users\\Shai\\.openclaw\\skills\\local-approvals\\cli.py history\n\n# Reset an agent's categories\npython C:\\Users\\Shai\\.openclaw\\skills\\local-approvals\\cli.py reset assistant"
      },
      {
        "title": "approve(id)",
        "body": "Approve a pending request by ID.\n\npython cli.py approve <request_id> [--learn] [--reviewer <name>]\n\nOptions:\n\n--learn: Add the category to the agent's auto-approve list\n--reviewer: Who is approving (default: \"user\")\n\nExample:\n\npython cli.py approve abc123 --learn"
      },
      {
        "title": "deny(id)",
        "body": "Deny a pending request by ID.\n\npython cli.py deny <request_id> [--reviewer <name>]\n\nOptions:\n\n--reviewer: Who is denying (default: \"user\")\n\nExample:\n\npython cli.py deny abc123"
      },
      {
        "title": "list_pending()",
        "body": "List all pending requests, optionally filtered by agent.\n\npython cli.py list [--agent <agent_id>]\n\nOptions:\n\n--agent: Filter requests by agent ID\n\nExample:\n\npython cli.py list --agent assistant"
      },
      {
        "title": "show_history()",
        "body": "Show approval history from state.json.\n\npython cli.py history [--limit <number>]\n\nOptions:\n\n--limit: Maximum number of entries to show (default: 20)\n\nExample:\n\npython cli.py history --limit 50"
      },
      {
        "title": "reset_categories(agent)",
        "body": "Reset an agent's auto-approved categories list.\n\npython cli.py reset <agent_id>\n\nExample:\n\npython cli.py reset assistant"
      },
      {
        "title": "categories",
        "body": "Show auto-approved categories for one or all agents.\n\npython cli.py categories [--agent <agent_id>]\n\nOptions:\n\n--agent: Show categories for specific agent\n\nExample:\n\npython cli.py categories --agent planner"
      },
      {
        "title": "State Files",
        "body": "The skill maintains two JSON files in the state directory:\n\nstate.json: Auto-approve lists and approval history\npending.json: Pending approval requests\n\nLocation: ~/.openclaw/skills/local-approvals/"
      },
      {
        "title": "Core Functions",
        "body": "The core.py module provides the underlying functionality:\n\ncheck_auto_approve(agent, category) - Check if a category is auto-approved\nsubmit_request(agent, category, operation, reasoning) - Submit a pending request\nlearn_category(agent, category) - Add category to auto-approve list\nget_request(request_id) - Retrieve a request by ID\nupdate_request(request_id, decision, reviewer) - Update request with decision\nlist_pending(agent) - List pending requests\nget_agent_approvals(agent) - Get agent's auto-approved categories"
      },
      {
        "title": "Best Practices",
        "body": "Review before approving: Always check the operation and reasoning before approving\nUse auto-learn carefully: Only use --learn for trusted categories that you want to auto-approve\nCheck history regularly: Review history to understand approval patterns\nReset when needed: Use reset to clear an agent's auto-approve list if you suspect issues"
      },
      {
        "title": "Complete Workflow",
        "body": "# 1. Check what's pending\npython cli.py list\n\n# 2. Review the request details (output shows agent, category, operation, reasoning)\n# ID: abc123\n#   Agent:     assistant\n#   Category:  file_write\n#   Operation: Create config file\n#   Reasoning: Setting up new environment\n\n# 3. Approve and auto-learn this category for future\npython cli.py approve abc123 --learn\n\n# 4. Verify it was approved\npython cli.py list  # Should show no pending requests\n\n# 5. Check history\npython cli.py history\n\n# 6. View auto-approved categories\npython cli.py categories"
      },
      {
        "title": "Managing Categories",
        "body": "# View all auto-approved categories\npython cli.py categories\n\n# View categories for a specific agent\npython cli.py categories --agent assistant\n\n# Reset an agent's categories (clear all auto-approvals)\npython cli.py reset assistant"
      },
      {
        "title": "Integration",
        "body": "The CLI is designed to be used both interactively and programmatically. Exit codes:\n\n0: Success\n1: Error (request not found, agent not found, etc.)"
      },
      {
        "title": "Files",
        "body": "cli.py - Command-line interface (this file)\ncore.py - Core approval functions\nschemas/ - JSON schema definitions\nschemas/state.json - State schema template\nschemas/pending.json - Pending requests schema template"
      }
    ],
    "body": "Local Approvals Skill\n\nA local approval system that manages agent permissions with auto-approve lists and approval history tracking.\n\nQuick Start\n# List pending requests\npython C:\\Users\\Shai\\.openclaw\\skills\\local-approvals\\cli.py list\n\n# Approve a request\npython C:\\Users\\Shai\\.openclaw\\skills\\local-approvals\\cli.py approve abc123\n\n# Deny a request\npython C:\\Users\\Shai\\.openclaw\\skills\\local-approvals\\cli.py deny abc123\n\n# Show approval history\npython C:\\Users\\Shai\\.openclaw\\skills\\local-approvals\\cli.py history\n\n# Reset an agent's categories\npython C:\\Users\\Shai\\.openclaw\\skills\\local-approvals\\cli.py reset assistant\n\nCommands\napprove(id)\n\nApprove a pending request by ID.\n\npython cli.py approve <request_id> [--learn] [--reviewer <name>]\n\n\nOptions:\n\n--learn: Add the category to the agent's auto-approve list\n--reviewer: Who is approving (default: \"user\")\n\nExample:\n\npython cli.py approve abc123 --learn\n\ndeny(id)\n\nDeny a pending request by ID.\n\npython cli.py deny <request_id> [--reviewer <name>]\n\n\nOptions:\n\n--reviewer: Who is denying (default: \"user\")\n\nExample:\n\npython cli.py deny abc123\n\nlist_pending()\n\nList all pending requests, optionally filtered by agent.\n\npython cli.py list [--agent <agent_id>]\n\n\nOptions:\n\n--agent: Filter requests by agent ID\n\nExample:\n\npython cli.py list --agent assistant\n\nshow_history()\n\nShow approval history from state.json.\n\npython cli.py history [--limit <number>]\n\n\nOptions:\n\n--limit: Maximum number of entries to show (default: 20)\n\nExample:\n\npython cli.py history --limit 50\n\nreset_categories(agent)\n\nReset an agent's auto-approved categories list.\n\npython cli.py reset <agent_id>\n\n\nExample:\n\npython cli.py reset assistant\n\nAdditional Commands\ncategories\n\nShow auto-approved categories for one or all agents.\n\npython cli.py categories [--agent <agent_id>]\n\n\nOptions:\n\n--agent: Show categories for specific agent\n\nExample:\n\npython cli.py categories --agent planner\n\nState Files\n\nThe skill maintains two JSON files in the state directory:\n\nstate.json: Auto-approve lists and approval history\npending.json: Pending approval requests\n\nLocation: ~/.openclaw/skills/local-approvals/\n\nCore Functions\n\nThe core.py module provides the underlying functionality:\n\ncheck_auto_approve(agent, category) - Check if a category is auto-approved\nsubmit_request(agent, category, operation, reasoning) - Submit a pending request\nlearn_category(agent, category) - Add category to auto-approve list\nget_request(request_id) - Retrieve a request by ID\nupdate_request(request_id, decision, reviewer) - Update request with decision\nlist_pending(agent) - List pending requests\nget_agent_approvals(agent) - Get agent's auto-approved categories\nBest Practices\nReview before approving: Always check the operation and reasoning before approving\nUse auto-learn carefully: Only use --learn for trusted categories that you want to auto-approve\nCheck history regularly: Review history to understand approval patterns\nReset when needed: Use reset to clear an agent's auto-approve list if you suspect issues\nExamples\nComplete Workflow\n# 1. Check what's pending\npython cli.py list\n\n# 2. Review the request details (output shows agent, category, operation, reasoning)\n# ID: abc123\n#   Agent:     assistant\n#   Category:  file_write\n#   Operation: Create config file\n#   Reasoning: Setting up new environment\n\n# 3. Approve and auto-learn this category for future\npython cli.py approve abc123 --learn\n\n# 4. Verify it was approved\npython cli.py list  # Should show no pending requests\n\n# 5. Check history\npython cli.py history\n\n# 6. View auto-approved categories\npython cli.py categories\n\nManaging Categories\n# View all auto-approved categories\npython cli.py categories\n\n# View categories for a specific agent\npython cli.py categories --agent assistant\n\n# Reset an agent's categories (clear all auto-approvals)\npython cli.py reset assistant\n\nIntegration\n\nThe CLI is designed to be used both interactively and programmatically. Exit codes:\n\n0: Success\n1: Error (request not found, agent not found, etc.)\nFiles\ncli.py - Command-line interface (this file)\ncore.py - Core approval functions\nschemas/ - JSON schema definitions\nschemas/state.json - State schema template\nschemas/pending.json - Pending requests schema template"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/shaiss/local-approvals",
    "publisherUrl": "https://clawhub.ai/shaiss/local-approvals",
    "owner": "shaiss",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/local-approvals",
    "downloadUrl": "https://openagent3.xyz/downloads/local-approvals",
    "agentUrl": "https://openagent3.xyz/skills/local-approvals/agent",
    "manifestUrl": "https://openagent3.xyz/skills/local-approvals/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/local-approvals/agent.md"
  }
}