{"id":"1515557f-e50f-4d5a-b584-8fd6e1c7260b","entityType":"agent","slug":"clawhub-skills-andyxinweiminicloud-update-signature-verifier","name":"update-signature-verifier","canonicalUrl":"https://www.xpersona.co/agent/clawhub-skills-andyxinweiminicloud-update-signature-verifier","canonicalPath":"/agent/clawhub-skills-andyxinweiminicloud-update-signature-verifier","generatedAt":"2026-10-10T09:26:46.716Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"description":"Helps verify the cryptographic integrity of skill updates by checking whether each version is signed by the same key as the original install, detecting key changes, signature gaps, and unsigned updates that may indicate a compromised or transferred skill. --- name: update-signature-verifier description: > Helps verify the cryptographic integrity of skill updates by checking whether each version is signed by the same key as the original install, detecting key changes, signature gaps, and unsigned updates that may indicate a compromised or transferred skill. version: 1.0.0 metadata: openclaw: requires: bins: [curl, python3] env: [] emoji: \"✍️\" --- Unsigned Updates Are t","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. Last updated 4/15/2026.","installCommand":"clawhub skill install skills:andyxinweiminicloud:update-signature-verifier","sourceUrl":"https://github.com/openclaw/skills/tree/main/skills/andyxinweiminicloud/update-signature-verifier","homepage":null,"primaryLinks":[{"label":"View on ClawHub","url":"https://github.com/openclaw/skills/tree/main/skills/andyxinweiminicloud/update-signature-verifier","kind":"source"}],"safetyScore":84,"overallRank":62,"popularityScore":50,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Helps verify the cryptographic integrity of skill updates by checking whether each version is signed by the same key as the original install, detecting key chan"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[{"label":"be","status":"self-declared"},{"label":"you","status":"self-declared"},{"label":"identify","status":"self-declared"},{"label":"issue","status":"self-declared"}],"verifiedCount":0,"selfDeclaredCount":5,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"},{"key":"be","type":"capability","support":"supported","confidenceSource":"profile","notes":"Declared in agent profile metadata"},{"key":"you","type":"capability","support":"supported","confidenceSource":"profile","notes":"Declared in agent profile metadata"},{"key":"identify","type":"capability","support":"supported","confidenceSource":"profile","notes":"Declared in agent profile metadata"},{"key":"issue","type":"capability","support":"supported","confidenceSource":"profile","notes":"Declared in agent profile metadata"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile capability:be|supported|profile capability:you|supported|profile capability:identify|supported|profile capability:issue|supported|profile"}},"adoption":{"evidence":{"source":"no-adoption-signals","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"No source adoption metrics were available."},"stars":null,"forks":null,"downloads":null,"packageName":null,"latestVersion":null,"tractionLabel":null},"release":{"evidence":{"source":"agent-index","verified":false,"confidence":"medium","updatedAt":"2026-02-25T03:36:51.277Z","emptyReason":null},"lastUpdatedAt":"2026-04-15T00:45:39.800Z","lastCrawledAt":"2026-02-25T03:36:51.277Z","lastIndexedAt":null,"nextCrawlAt":"2026-02-26T03:36:51.277Z","lastVerifiedAt":null,"highlights":[]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install skills:andyxinweiminicloud:update-signature-verifier","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skills-andyxinweiminicloud-update-signature-verifier/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skills-andyxinweiminicloud-update-signature-verifier/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skills-andyxinweiminicloud-update-signature-verifier/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-skills-andyxinweiminicloud-update-signature-verifier/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-skills-andyxinweiminicloud-update-signature-verifier/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-skills-andyxinweiminicloud-update-signature-verifier/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T09:26:46.716Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skills-andyxinweiminicloud-update-signature-verifier/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skills-andyxinweiminicloud-update-signature-verifier/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skills-andyxinweiminicloud-update-signature-verifier/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skills-andyxinweiminicloud-update-signature-verifier/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":null},"readme":"---\r\nname: update-signature-verifier\r\ndescription: >\r\n  Helps verify the cryptographic integrity of skill updates by checking\r\n  whether each version is signed by the same key as the original install,\r\n  detecting key changes, signature gaps, and unsigned updates that may\r\n  indicate a compromised or transferred skill.\r\nversion: 1.0.0\r\nmetadata:\r\n  openclaw:\r\n    requires:\r\n      bins: [curl, python3]\r\n      env: []\r\n    emoji: \"✍️\"\r\n---\r\n\r\n# Unsigned Updates Are the Trust Loophole Nobody Closes\r\n\r\n> Helps identify when skill updates break the cryptographic chain of custody established at install time — catching the class of supply chain attacks that enters through legitimate update channels.\r\n\r\n## Problem\r\n\r\nWhen you install a skill, you might verify the publisher's signature. When that skill updates two months later, does anyone check whether the update is signed by the same key? In most agent ecosystems, the answer is no. The install-time trust check doesn't extend to updates. A skill that was legitimately signed at installation can be silently transferred to a new publisher, updated from a compromised build pipeline, or modified without resigning — and all of this is invisible unless someone explicitly traces the chain of custody across every version.\r\n\r\nThis is not theoretical. Skills that accumulate users become valuable targets. The acquisition vector (buy the publisher account, gain access to the update channel) is simpler than compromising the skill directly. The trust you placed in version 1.0 doesn't automatically extend to version 1.4 if version 1.4 was signed by a different key.\r\n\r\n## What This Checks\r\n\r\nThis verifier examines update signature continuity across five dimensions:\r\n\r\n1. **Key continuity** — Is each version signed by the same cryptographic key as the original installation? A key change between versions is a high-signal event that warrants explicit verification — legitimate key rotations happen, but they should be announced\r\n2. **Signature presence per version** — Does every published version carry a signature, or did signing start and stop across the version history? Gaps in signing coverage are a red flag even if the current version is signed\r\n3. **Signing key provenance** — Is the signing key traceable to a publisher identity through a JWKS endpoint or key transparency log? Orphaned keys (present but unanchored) provide weaker trust anchoring than keys registered to verifiable identities\r\n4. **Unsigned update detection** — Any version that was published without a signature but then followed by signed versions deserves scrutiny — the unsigned version may be the one that was modified\r\n5. **Chain-of-custody continuity** — Can you trace an unbroken line of signed updates from version 1.0 to the current version? A chain with gaps is fragile in the same way an attestation chain with broken links is fragile\r\n\r\n## How to Use\r\n\r\n**Input**: Provide one of:\r\n- A skill identifier with version history to audit\r\n- A list of version-signing metadata (version, signing key fingerprint, signature timestamp)\r\n- Two specific versions to compare chain-of-custody\r\n\r\n**Output**: A signature continuity report containing:\r\n- Version-by-version signing key fingerprint comparison\r\n- Key change events with timestamps\r\n- Unsigned version detection\r\n- Chain-of-custody completeness rating: CONTINUOUS / GAPS / BROKEN / UNSIGNED\r\n- Recommended actions for each gap or anomaly\r\n\r\n## Example\r\n\r\n**Input**: Verify signature chain for `data-aggregator` skill, versions 1.0.0 through 1.3.2\r\n\r\n```\r\n✍️ UPDATE SIGNATURE VERIFICATION\r\n\r\nSkill: data-aggregator\r\nVersions audited: 1.0.0 → 1.1.0 → 1.2.0 → 1.3.0 → 1.3.1 → 1.3.2\r\nAudit timestamp: 2025-04-10T09:15:00Z\r\n\r\nVersion signing summary:\r\n  1.0.0: ✅ Signed — key: ed25519:a3f9c2 (publisher: original-dev)\r\n  1.1.0: ✅ Signed — key: ed25519:a3f9c2 (same key, continuous)\r\n  1.2.0: ⚠️ UNSIGNED — no signature field present\r\n  1.3.0: ✅ Signed — key: ed25519:b7d441 (NEW KEY — different from 1.1.0)\r\n  1.3.1: ✅ Signed — key: ed25519:b7d441 (continuous from 1.3.0)\r\n  1.3.2: ✅ Signed — key: ed25519:b7d441 (continuous)\r\n\r\nKey change detected:\r\n  Between 1.1.0 and 1.3.0: ed25519:a3f9c2 → ed25519:b7d441\r\n  Coincides with: unsigned version 1.2.0 in the gap\r\n  Key change announcement: Not found in publisher changelog\r\n  New key provenance: ed25519:b7d441 not registered in JWKS endpoint\r\n\r\nUnsigned version:\r\n  1.2.0: Published 2025-02-14, no signature\r\n  Content delta from 1.1.0: Dependency update + new outbound endpoint added\r\n\r\nChain-of-custody: BROKEN\r\n  Reasons:\r\n  1. Version 1.2.0 is unsigned\r\n  2. Key changed between 1.1.0 and 1.3.0 without announcement\r\n  3. Key change coincides with a version that added a new outbound endpoint\r\n  4. New signing key not registered in publisher's JWKS\r\n\r\nRisk assessment: HIGH\r\n  The combination of an unsigned version introducing new network behavior,\r\n  followed by a key rotation without announcement, matches the pattern of\r\n  a compromised or transferred skill that was re-signed by a new controller.\r\n\r\nRecommended actions:\r\n  1. Request publisher explanation for key change at 1.2.0→1.3.0 boundary\r\n  2. Audit the outbound endpoint added in 1.2.0 before trusting current version\r\n  3. Treat 1.3.x as signed by an unverified key until provenance is established\r\n  4. Consider pinning to 1.1.0 (last version with verified key) pending review\r\n```\r\n\r\n## Related Tools\r\n\r\n- **skill-update-delta-monitor** — Tracks behavioral changes in updates; update-signature-verifier checks whether updates are cryptographically authorized\r\n- **attestation-chain-auditor** — Validates the full trust chain; signing verifier focuses on the publisher-to-update link specifically\r\n- **publisher-identity-verifier** — Verifies publisher identity; signing verifier checks whether update authorship is consistent with that identity\r\n- **trust-decay-monitor** — Tracks trust freshness over time; signature gaps accelerate trust decay\r\n\r\n## Limitations\r\n\r\nThis verifier depends on the availability of per-version signing metadata, which many current skill marketplaces do not expose. Where version history lacks signing records, this tool can identify the absence of metadata but cannot reconstruct what signatures may have existed. Key change detection requires access to historical key fingerprints — if a marketplace only stores the current signing key, pre-change versions cannot be compared. A continuous chain of valid signatures from the same key does not confirm the skill is safe — a publisher whose key is compromised can issue malicious-but-validly-signed updates. Signing continuity establishes chain of custody, not trustworthiness of the content.\r\n","readmeExcerpt":"--- name: update-signature-verifier description: > Helps verify the cryptographic integrity of skill updates by checking whether each version is signed by the same key as the original install, detecting key changes, signature gaps, and unsigned updates that may indicate a compromised or transferred skill. version: 1.0.0 metadata: openclaw: requires: bins: [curl, python3] env: [] emoji: \"✍️\" --- Unsigned Updates Are t","codeSnippets":[],"executableExamples":[],"parameters":{},"dependencies":[],"permissions":[],"extractedFiles":[],"languages":["typescript"],"docsSourceLabel":"CLAWHUB","editorialOverview":"Helps verify the cryptographic integrity of skill updates by checking whether each version is signed by the same key as the original install, detecting key changes, signature gaps, and unsigned updates that may indicate a compromised or transferred skill. --- name: update-signature-verifier description: > Helps verify the cryptographic integrity of skill updates by checking whether each version is signed by the same key as the original install, detecting key changes, signature gaps, and unsigned updates that may indicate a compromised or transferred skill. version: 1.0.0 metadata: openclaw: requires: bins: [curl, python3] env: [] emoji: \"✍️\" --- Unsigned Updates Are t","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":407,"uniquenessScore":60,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-04-15T00:45:39.800Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T09:26:46.716Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}