{
  "schemaVersion": "1.0",
  "item": {
    "slug": "1password-ui",
    "name": "1Password Web UI",
    "source": "tencent",
    "type": "skill",
    "category": "其他",
    "sourceUrl": "https://clawhub.ai/maverick-software/1password-ui",
    "canonicalUrl": "https://clawhub.ai/maverick-software/1password-ui",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/1password-ui",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=1password-ui",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "CHANGELOG.md",
      "INSTALL_INSTRUCTIONS.md",
      "package.json",
      "scripts/op-helper.py",
      "reference/1password-settings.ts"
    ],
    "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/1password-ui"
    },
    "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/1password-ui",
    "agentPageUrl": "https://openagent3.xyz/skills/1password-ui/agent",
    "manifestUrl": "https://openagent3.xyz/skills/1password-ui/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/1password-ui/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": "1Password UI Extension",
        "body": "Adds a 1Password tab to the OpenClaw Control dashboard under the Tools group. Browse vaults, manage credential mappings for skills, and handle authentication — all from the web UI."
      },
      {
        "title": "Features",
        "body": "FeatureDescriptionDashboard Tab\"1Password\" under Tools in sidebarConnection StatusSee signed-in account, CLI/Connect modeSign In FlowAuthenticate directly from the UIDocker SupportWorks with 1Password Connect for containersCredential MappingsMap 1Password items to skill configs"
      },
      {
        "title": "Agent Installation Prompt",
        "body": "To install this skill, give your agent this prompt:\n\nInstall the 1password-ui skill from ClawHub.\n\nThe skill is at: ~/clawd/skills/1password-ui/\nFollow INSTALL_INSTRUCTIONS.md step by step.\n\nSummary of changes needed:\n1. Copy 1password-backend.ts to src/gateway/server-methods/1password.ts\n2. Register handlers in server-methods.ts\n3. Add \"1password\" tab to navigation.ts (TAB_GROUPS, Tab type, TAB_PATHS, icon, title, subtitle)\n4. Add state variables to app.ts\n5. Copy 1password-views.ts to ui/src/ui/views/1password.ts\n6. Add view rendering to app-render.ts\n7. Add tab loading to app-settings.ts\n8. Build and restart: pnpm build && pnpm ui:build && clawdbot gateway restart"
      },
      {
        "title": "For Local Installations (Ubuntu/Windows/macOS)",
        "body": "1Password CLI (op):\n# macOS/Linux\nbrew install 1password-cli\n\n# Or from https://1password.com/downloads/command-line/\n\n\n\nCLI Integration enabled in 1Password app:\n\nSettings → Developer → \"Integrate with 1Password CLI\" ✓"
      },
      {
        "title": "For Docker Installations",
        "body": "See Docker Setup below."
      },
      {
        "title": "Sign In",
        "body": "Open OpenClaw Dashboard → Tools → 1Password\nClick Sign In with 1Password\nAuthorize in the 1Password app popup (or run op signin in terminal)\nStatus shows \"Connected\" with your account"
      },
      {
        "title": "Credential Mappings",
        "body": "Once signed in, you can map 1Password items to skills:\n\nSkills like Pipedream can read credentials from 1Password\nMappings are stored in ~/clawd/config/1password-mappings.json\nFormat: { \"skillId\": { \"item\": \"Item Name\", \"vault\": \"Private\", \"fields\": {...} } }"
      },
      {
        "title": "Example: Pipedream with 1Password",
        "body": "# Store Pipedream credentials in 1Password\nop item create --category=\"API Credential\" --title=\"Pipedream Connect\" \\\n  --vault=\"Private\" \\\n  \"client_id[text]=your_client_id\" \\\n  \"client_secret[password]=your_client_secret\" \\\n  \"project_id[text]=proj_xxxxx\"\n\n# Use in token refresh\nPIPEDREAM_1PASSWORD_ITEM=\"Pipedream Connect\" python3 ~/clawd/scripts/pipedream-token-refresh.py"
      },
      {
        "title": "Gateway RPC Methods",
        "body": "MethodDescription1password.statusGet CLI/Connect status, signed-in account1password.signinTrigger sign-in flow1password.signoutSign out of current session1password.vaultsList available vaults1password.itemsList items in a vault1password.getItemGet item field structure (not values)1password.readSecretRead a secret (backend only)1password.mappings.listGet skill → 1Password mappings1password.mappings.setCreate/update a mapping1password.mappings.deleteRemove a mapping1password.mappings.testTest if a mapping works"
      },
      {
        "title": "Docker Setup (1Password Connect)",
        "body": "For Docker-based OpenClaw installations, use 1Password Connect instead of the CLI."
      },
      {
        "title": "Step 1: Deploy 1Password Connect",
        "body": "# docker-compose.yml\nservices:\n  op-connect-api:\n    image: 1password/connect-api:latest\n    ports:\n      - \"8080:8080\"\n    volumes:\n      - ./1password-credentials.json:/home/opuser/.op/1password-credentials.json:ro\n      - op-data:/home/opuser/.op/data\n\n  op-connect-sync:\n    image: 1password/connect-sync:latest\n    volumes:\n      - ./1password-credentials.json:/home/opuser/.op/1password-credentials.json:ro\n      - op-data:/home/opuser/.op/data\n\nvolumes:\n  op-data:"
      },
      {
        "title": "Step 2: Get Credentials",
        "body": "Go to my.1password.com → Integrations → Secrets Automation\nCreate a Connect server\nDownload 1password-credentials.json\nCreate an access token"
      },
      {
        "title": "Step 3: Configure OpenClaw",
        "body": "services:\n  clawdbot:\n    environment:\n      - OP_CONNECT_HOST=http://op-connect-api:8080\n      - OP_CONNECT_TOKEN=your-access-token\n\nThe UI automatically detects Connect mode."
      },
      {
        "title": "Files Included",
        "body": "1password-ui/\n├── SKILL.md                      # This file\n├── INSTALL_INSTRUCTIONS.md       # Step-by-step installation\n├── CHANGELOG.md                  # Version history\n├── package.json                  # Skill metadata\n├── reference/\n│   ├── 1password-backend.ts      # Gateway RPC handlers\n│   ├── 1password-views.ts        # UI view (Lit template)\n│   ├── 1password-settings.ts     # Tab loading logic\n│   └── 1password-plugin.ts       # Plugin registration (optional)\n└── scripts/\n    └── op-helper.py              # CLI/Connect bridge for skills"
      },
      {
        "title": "✅ Safe by Design",
        "body": "AspectImplementationSecrets not in UIgetItem and items return field names only, never valuesNo network installersNo curl | sh or remote scripts — all code is localManual installationRequires explicit code edits, no automated patchingMapping file perms1password-mappings.json should be 0600 (contains references, not secrets)CLI authUses 1Password app integration for biometric auth when available"
      },
      {
        "title": "⚠️ Documented Risks",
        "body": "RiskMitigationreadSecret RPC availableThe 1password.readSecret method IS exposed via gateway RPC. This is intentional — skills need to read secrets. Security relies on: (1) 1Password requiring user auth, (2) gateway access control (loopback-only by default).Gateway exposureAll 1password.* methods are RPC calls. If you expose your gateway to the network, protect it with authentication.Connect tokenIn Docker mode, OP_CONNECT_TOKEN grants vault access. Keep it secure like any API key."
      },
      {
        "title": "File Security",
        "body": "# Recommended permissions for mapping file\nchmod 600 ~/clawd/config/1password-mappings.json"
      },
      {
        "title": "\"1Password CLI Not Found\"",
        "body": "brew install 1password-cli\n# or download from 1password.com/downloads/command-line/"
      },
      {
        "title": "\"Not signed in\"",
        "body": "op signin\nop whoami  # verify"
      },
      {
        "title": "Sign-in fails / \"authorization denied\"",
        "body": "Unlock the 1Password app\nEnable CLI integration: Settings → Developer → \"Integrate with 1Password CLI\""
      },
      {
        "title": "Docker: \"connection refused\"",
        "body": "docker ps | grep op-connect  # check containers running"
      },
      {
        "title": "Docker: \"401 unauthorized\"",
        "body": "Verify OP_CONNECT_TOKEN is set correctly\nCheck token hasn't expired"
      },
      {
        "title": "Support",
        "body": "ClawHub: clawhub.ai/skills/1password-ui\n1Password CLI: developer.1password.com/docs/cli\n1Password Connect: developer.1password.com/docs/connect\nOpenClaw Discord: discord.com/invite/clawd"
      },
      {
        "title": "v1.1.0 (2025-02-11)",
        "body": "Full working implementation with dashboard UI\nSign-in flow from web interface\nCLI and Connect mode support\nCredential mapping system"
      },
      {
        "title": "v1.0.0 (2025-02-11)",
        "body": "Initial release with reference implementations"
      }
    ],
    "body": "1Password UI Extension\n\nAdds a 1Password tab to the OpenClaw Control dashboard under the Tools group. Browse vaults, manage credential mappings for skills, and handle authentication — all from the web UI.\n\nFeatures\nFeature\tDescription\nDashboard Tab\t\"1Password\" under Tools in sidebar\nConnection Status\tSee signed-in account, CLI/Connect mode\nSign In Flow\tAuthenticate directly from the UI\nDocker Support\tWorks with 1Password Connect for containers\nCredential Mappings\tMap 1Password items to skill configs\nAgent Installation Prompt\n\nTo install this skill, give your agent this prompt:\n\nInstall the 1password-ui skill from ClawHub.\n\nThe skill is at: ~/clawd/skills/1password-ui/\nFollow INSTALL_INSTRUCTIONS.md step by step.\n\nSummary of changes needed:\n1. Copy 1password-backend.ts to src/gateway/server-methods/1password.ts\n2. Register handlers in server-methods.ts\n3. Add \"1password\" tab to navigation.ts (TAB_GROUPS, Tab type, TAB_PATHS, icon, title, subtitle)\n4. Add state variables to app.ts\n5. Copy 1password-views.ts to ui/src/ui/views/1password.ts\n6. Add view rendering to app-render.ts\n7. Add tab loading to app-settings.ts\n8. Build and restart: pnpm build && pnpm ui:build && clawdbot gateway restart\n\nPrerequisites\nFor Local Installations (Ubuntu/Windows/macOS)\n\n1Password CLI (op):\n\n# macOS/Linux\nbrew install 1password-cli\n\n# Or from https://1password.com/downloads/command-line/\n\n\nCLI Integration enabled in 1Password app:\n\nSettings → Developer → \"Integrate with 1Password CLI\" ✓\nFor Docker Installations\n\nSee Docker Setup below.\n\nUsage\nSign In\nOpen OpenClaw Dashboard → Tools → 1Password\nClick Sign In with 1Password\nAuthorize in the 1Password app popup (or run op signin in terminal)\nStatus shows \"Connected\" with your account\nCredential Mappings\n\nOnce signed in, you can map 1Password items to skills:\n\nSkills like Pipedream can read credentials from 1Password\nMappings are stored in ~/clawd/config/1password-mappings.json\nFormat: { \"skillId\": { \"item\": \"Item Name\", \"vault\": \"Private\", \"fields\": {...} } }\nExample: Pipedream with 1Password\n# Store Pipedream credentials in 1Password\nop item create --category=\"API Credential\" --title=\"Pipedream Connect\" \\\n  --vault=\"Private\" \\\n  \"client_id[text]=your_client_id\" \\\n  \"client_secret[password]=your_client_secret\" \\\n  \"project_id[text]=proj_xxxxx\"\n\n# Use in token refresh\nPIPEDREAM_1PASSWORD_ITEM=\"Pipedream Connect\" python3 ~/clawd/scripts/pipedream-token-refresh.py\n\nGateway RPC Methods\nMethod\tDescription\n1password.status\tGet CLI/Connect status, signed-in account\n1password.signin\tTrigger sign-in flow\n1password.signout\tSign out of current session\n1password.vaults\tList available vaults\n1password.items\tList items in a vault\n1password.getItem\tGet item field structure (not values)\n1password.readSecret\tRead a secret (backend only)\n1password.mappings.list\tGet skill → 1Password mappings\n1password.mappings.set\tCreate/update a mapping\n1password.mappings.delete\tRemove a mapping\n1password.mappings.test\tTest if a mapping works\nDocker Setup (1Password Connect)\n\nFor Docker-based OpenClaw installations, use 1Password Connect instead of the CLI.\n\nStep 1: Deploy 1Password Connect\n# docker-compose.yml\nservices:\n  op-connect-api:\n    image: 1password/connect-api:latest\n    ports:\n      - \"8080:8080\"\n    volumes:\n      - ./1password-credentials.json:/home/opuser/.op/1password-credentials.json:ro\n      - op-data:/home/opuser/.op/data\n\n  op-connect-sync:\n    image: 1password/connect-sync:latest\n    volumes:\n      - ./1password-credentials.json:/home/opuser/.op/1password-credentials.json:ro\n      - op-data:/home/opuser/.op/data\n\nvolumes:\n  op-data:\n\nStep 2: Get Credentials\nGo to my.1password.com → Integrations → Secrets Automation\nCreate a Connect server\nDownload 1password-credentials.json\nCreate an access token\nStep 3: Configure OpenClaw\nservices:\n  clawdbot:\n    environment:\n      - OP_CONNECT_HOST=http://op-connect-api:8080\n      - OP_CONNECT_TOKEN=your-access-token\n\n\nThe UI automatically detects Connect mode.\n\nFiles Included\n1password-ui/\n├── SKILL.md                      # This file\n├── INSTALL_INSTRUCTIONS.md       # Step-by-step installation\n├── CHANGELOG.md                  # Version history\n├── package.json                  # Skill metadata\n├── reference/\n│   ├── 1password-backend.ts      # Gateway RPC handlers\n│   ├── 1password-views.ts        # UI view (Lit template)\n│   ├── 1password-settings.ts     # Tab loading logic\n│   └── 1password-plugin.ts       # Plugin registration (optional)\n└── scripts/\n    └── op-helper.py              # CLI/Connect bridge for skills\n\nSecurity Considerations\n✅ Safe by Design\nAspect\tImplementation\nSecrets not in UI\tgetItem and items return field names only, never values\nNo network installers\tNo curl | sh or remote scripts — all code is local\nManual installation\tRequires explicit code edits, no automated patching\nMapping file perms\t1password-mappings.json should be 0600 (contains references, not secrets)\nCLI auth\tUses 1Password app integration for biometric auth when available\n⚠️ Documented Risks\nRisk\tMitigation\nreadSecret RPC available\tThe 1password.readSecret method IS exposed via gateway RPC. This is intentional — skills need to read secrets. Security relies on: (1) 1Password requiring user auth, (2) gateway access control (loopback-only by default).\nGateway exposure\tAll 1password.* methods are RPC calls. If you expose your gateway to the network, protect it with authentication.\nConnect token\tIn Docker mode, OP_CONNECT_TOKEN grants vault access. Keep it secure like any API key.\nFile Security\n# Recommended permissions for mapping file\nchmod 600 ~/clawd/config/1password-mappings.json\n\nTroubleshooting\n\"1Password CLI Not Found\"\nbrew install 1password-cli\n# or download from 1password.com/downloads/command-line/\n\n\"Not signed in\"\nop signin\nop whoami  # verify\n\nSign-in fails / \"authorization denied\"\nUnlock the 1Password app\nEnable CLI integration: Settings → Developer → \"Integrate with 1Password CLI\"\nDocker: \"connection refused\"\ndocker ps | grep op-connect  # check containers running\n\nDocker: \"401 unauthorized\"\nVerify OP_CONNECT_TOKEN is set correctly\nCheck token hasn't expired\nSupport\nClawHub: clawhub.ai/skills/1password-ui\n1Password CLI: developer.1password.com/docs/cli\n1Password Connect: developer.1password.com/docs/connect\nOpenClaw Discord: discord.com/invite/clawd\nChangelog\nv1.1.0 (2025-02-11)\nFull working implementation with dashboard UI\nSign-in flow from web interface\nCLI and Connect mode support\nCredential mapping system\nv1.0.0 (2025-02-11)\nInitial release with reference implementations"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/maverick-software/1password-ui",
    "publisherUrl": "https://clawhub.ai/maverick-software/1password-ui",
    "owner": "maverick-software",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/1password-ui",
    "downloadUrl": "https://openagent3.xyz/downloads/1password-ui",
    "agentUrl": "https://openagent3.xyz/skills/1password-ui/agent",
    "manifestUrl": "https://openagent3.xyz/skills/1password-ui/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/1password-ui/agent.md"
  }
}