{"id":"8a94f61d-bae8-4cfc-a2f9-d7c75bb973d2","entityType":"agent","slug":"clawhub-skills-10madh-linkedin-followup","name":"linkedin-followup","canonicalUrl":"https://www.xpersona.co/agent/clawhub-skills-10madh-linkedin-followup","canonicalPath":"/agent/clawhub-skills-10madh-linkedin-followup","generatedAt":"2026-10-10T07:54:52.101Z","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":"Manage LinkedIn outreach leads from Google Sheets — search by name, read live conversation threads, update status, and send contextual follow-up messages. Use after linkedin-dm to move leads through the pipeline (Sent → Replied → Call Scheduled → Demo Done → Closed). --- name: linkedin-followup description: Manage LinkedIn outreach leads from Google Sheets — search by name, read live conversation threads, update status, and send contextual follow-up messages. Use after linkedin-dm to move leads through the pipeline (Sent → Replied → Call Scheduled → Demo Done → Closed). metadata: { \"openclaw\": { \"emoji\": \"🔁\", \"requires\": { \"bins\": [\"gog\"] }, \"skills\": [\"gog\"], \"tags\": [\"linkedin","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. Last updated 4/15/2026.","installCommand":"clawhub skill install skills:10madh:linkedin-followup","sourceUrl":"https://github.com/openclaw/skills/tree/main/skills/10madh/linkedin-followup","homepage":null,"primaryLinks":[{"label":"View on ClawHub","url":"https://github.com/openclaw/skills/tree/main/skills/10madh/linkedin-followup","kind":"source"}],"safetyScore":84,"overallRank":62,"popularityScore":50,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Manage LinkedIn outreach leads from Google Sheets — search by name, read live conversation threads, update status, and send contextual follow-up messages. Use a"},"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"}],"verifiedCount":0,"selfDeclaredCount":2,"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"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile capability:be|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-25T06:16:29.331Z","emptyReason":null},"lastUpdatedAt":"2026-04-15T00:45:39.800Z","lastCrawledAt":"2026-02-25T06:16:29.331Z","lastIndexedAt":null,"nextCrawlAt":"2026-02-26T06:16:29.331Z","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:10madh:linkedin-followup","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-10madh-linkedin-followup/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skills-10madh-linkedin-followup/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skills-10madh-linkedin-followup/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-skills-10madh-linkedin-followup/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-skills-10madh-linkedin-followup/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-skills-10madh-linkedin-followup/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-10T07:54:52.101Z"}},"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-10madh-linkedin-followup/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skills-10madh-linkedin-followup/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skills-10madh-linkedin-followup/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skills-10madh-linkedin-followup/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":"---\nname: linkedin-followup\ndescription: Manage LinkedIn outreach leads from Google Sheets — search by name, read live conversation threads, update status, and send contextual follow-up messages. Use after linkedin-dm to move leads through the pipeline (Sent → Replied → Call Scheduled → Demo Done → Closed).\nmetadata:\n  {\n    \"openclaw\": {\n      \"emoji\": \"🔁\",\n      \"requires\": { \"bins\": [\"gog\"] },\n      \"skills\": [\"gog\"],\n      \"tags\": [\"linkedin\", \"crm\", \"outreach\", \"sales\", \"follow-up\"]\n    }\n  }\n---\n\n# linkedin-followup\n\nManage ongoing LinkedIn conversations from a central Google Sheet CRM. Read threads, draft context-aware replies, send messages, and keep the sheet updated — all from one skill.\n\n---\n\n## Pre-flight Checklist\n\nBefore doing anything:\n\n1. **Sheet ID** — Confirm the CRM sheet ID (from `linkedin-dm` setup). Default: `1eEZDGcr1dIbSC782mNkxvD7pVrF8rOFySWCVZ1RXkhM`, tab: `Sheet1` (or `Outreach` if renamed).\n2. **gog auth** — Run `gog auth list`. If no tokens: see [gog auth setup](#gog-auth-setup) below.\n3. **Browser** — Open the openclaw browser profile and confirm LinkedIn is logged in. Navigate to `/feed/` first.\n4. **Mode** — Identify which mode the user wants (see [Modes](#modes)).\n\n---\n\n## Sheet Schema\n\nThe CRM sheet uses these columns (A–P):\n\n| Col | Field | Notes |\n|---|---|---|\n| A | Date Sent | ISO date |\n| B | Person Name | Full name |\n| C | Role / Title | |\n| D | Company | |\n| E | LinkedIn URL | Profile URL |\n| F | Relationship Hook | Hook used in opener |\n| G | Opener Sent | Message 1 text |\n| H | Pitch Sent | Message 2 text |\n| I | Campaign | Batch label |\n| J | Status | Current pipeline stage |\n| K | Notes | Context and history |\n| L | Last Updated | ISO timestamp |\n| M | Last Reply Date | When they last replied |\n| N | Last Reply (preview) | First 200 chars of their last reply |\n| O | Conversation Log | Full thread (see format below) |\n| P | Next Action | What to do next (agent or human) |\n\n**Status values:**\n`Sent` → `Replied` → `Call Scheduled` → `Demo Done` → `Follow Up Sent` → `No Response` → `Closed Won` → `Closed Lost`\n\n**Conversation Log format** (column O):\n```\n[2026-02-13 17:05 SENT] Hey Rishabh, we both had stints at CRED...\n[2026-02-13 17:05 SENT] I'm building an AI calling agent...\n[2026-02-15 09:30 RECEIVED] Hey! Sounds interesting, tell me more.\n[2026-02-15 09:45 SENT] Happy to show you a live demo — are you free Thursday?\n```\n\nIf columns M–P don't exist yet, add them first:\n```bash\ngog sheets update <SHEET_ID> \"Sheet1!M1:P1\" \\\n  --values-json '[[\"Last Reply Date\",\"Last Reply (preview)\",\"Conversation Log\",\"Next Action\"]]' \\\n  --input USER_ENTERED\n```\n\n---\n\n## Modes\n\n### Mode 1 — Quick Status Update\n\nUser says: *\"Mark Rishabh as Replied\"* or *\"Rishabh got back to me, he's interested\"*\n\n1. **Find the row** — Search the sheet for the person:\n   ```bash\n   gog sheets get <SHEET_ID> \"Sheet1!A:P\" --json\n   ```\n   Match by name (col B) or LinkedIn URL (col E). Get the row number.\n\n2. **Update status** (col J) and last updated (col L):\n   ```bash\n   gog sheets update <SHEET_ID> \"Sheet1!J<ROW>:L<ROW>\" \\\n     --values-json '[[\"Replied\",\"\",\"<ISO_TIMESTAMP>\"]]' \\\n     --input USER_ENTERED\n   ```\n\n3. If the user provides reply content, also update:\n   - Col M: Last Reply Date\n   - Col N: Last Reply preview (first 200 chars)\n   - Col O: Append to Conversation Log\n   - Col P: Next Action (what should happen next)\n\n4. Confirm update to user.\n\n---\n\n### Mode 2 — Full Follow-up (Read + Draft + Send)\n\nUser says: *\"Follow up with Rishabh\"* or *\"Send a follow-up to everyone who replied\"*\n\n#### Step 1 — Load the person's data from sheet\n\n```bash\ngog sheets get <SHEET_ID> \"Sheet1!A:P\" --json\n```\nFind their row. Load: Name, Company, Role, LinkedIn URL, Opener Sent, Pitch Sent, Status, Notes, Conversation Log, Next Action.\n\n#### Step 2 — Navigate to their LinkedIn profile\n\n**Always go to feed first** (anti-detection):\n```\nhttps://www.linkedin.com/feed/\n```\nWait 2–4 seconds. Then navigate to their profile URL (col E).\n\n#### Step 3 — Open message thread and read conversation\n\nClick the **Message** button on their profile. Wait for the conversation bubble to load.\n\nScrape the full thread with JavaScript:\n```javascript\nconst events = Array.from(document.querySelectorAll('.msg-s-message-list__event'));\nconst messages = [];\nevents.forEach(el => {\n  const groups = el.querySelectorAll('.msg-s-event-listitem');\n  groups.forEach(g => {\n    const nameEl = g.closest('.msg-s-message-group')?.querySelector('.msg-s-message-group__profile-link');\n    const bodyEl = g.querySelector('.msg-s-event-listitem__body');\n    const timeEl = g.closest('.msg-s-message-group')?.querySelector('.msg-s-message-group__timestamp');\n    if (bodyEl?.textContent?.trim()) {\n      messages.push({\n        sender: nameEl?.textContent?.trim() || 'unknown',\n        time: timeEl?.textContent?.trim() || '',\n        text: bodyEl.textContent.trim()\n      });\n    }\n  });\n});\nreturn JSON.stringify(messages);\n```\n\nIf the thread is empty or not loading, scroll up in the conversation bubble to load older messages.\n\n#### Step 4 — Analyse the conversation\n\nWith the full thread loaded + their profile data, determine:\n\n- **What did they say last?** — Identify the most recent message from them.\n- **What's the intent?** — Interested / wants more info / asked a question / cold / objection / not interested.\n- **What's the right next message?** — See [Response Playbook](#response-playbook) below.\n- **Tone** — Mirror their tone (casual vs formal, brief vs detailed).\n\n#### Step 5 — Draft the follow-up\n\nWrite a response that:\n- **Directly addresses** what they said last\n- **Doesn't re-pitch** unless they asked for it\n- **Moves toward a specific action** (demo, call, intro, forward to team)\n- Is **brief** — 2–4 sentences max\n- Feels human, not templated\n\nShow the draft to the user and ask for approval before sending:\n\n> **Draft reply to [Name]:**\n> [message]\n>\n> Send this? (y / edit / skip)\n\n#### Step 6 — Send the message\n\nSame JS evaluate method as linkedin-dm:\n```javascript\nconst active = document.querySelector('.msg-overlay-conversation-bubble--is-active .msg-form__contenteditable');\nif (active) { active.focus(); document.execCommand('insertText', false, '<message>'); }\n```\nThen find and click Send.\n\n#### Step 7 — Update the sheet\n\nAfter sending:\n```bash\ngog sheets update <SHEET_ID> \"Sheet1!J<ROW>:P<ROW>\" \\\n  --values-json '[[\"<new_status>\",\"<last_reply_date>\",\"<last_reply_preview>\",\"<updated_conversation_log>\",\"<next_action>\",\"<ISO_TIMESTAMP>\"]]' \\\n  --input USER_ENTERED\n```\n\n---\n\n### Mode 3 — Batch Review\n\nUser says: *\"Who needs a follow-up?\"* or *\"Check my outreach\"*\n\n1. Load all rows from the sheet.\n2. Filter by status and time:\n   - **`Sent` older than 3 days** → candidate for \"No Response\" or gentle follow-up\n   - **`Replied`** → needs a response\n   - **`Follow Up Sent` older than 5 days** → consider \"No Response\"\n   - **`Call Scheduled`** → check if call happened, update status\n3. Present a table of candidates:\n   ```\n   Name             Status    Last Updated    Suggested Action\n   Rishabh Nayan    Replied   2026-02-14      Reply to their message\n   Shorya Saini     Sent      2026-02-10      Follow-up nudge (4 days)\n   Shantam Mohata   Sent      2026-02-13      Too soon (today)\n   ```\n4. User picks who to action, then enter Mode 2 for each.\n\n---\n\n## Response Playbook\n\nUse these as a guide — always adapt to the actual conversation:\n\n| They said | Intent | Your move |\n|---|---|---|\n| \"Sounds interesting, tell me more\" | Curious | Short explanation + offer a specific demo slot |\n| \"How does it work?\" | Exploring | 2-line description + invite to a 15-min call |\n| \"We already use [X]\" | Objection | Acknowledge, explain differentiation, offer demo |\n| \"Send me more details\" | Soft interest | Share a Loom/deck/link + follow up in 2 days |\n| \"Not relevant right now\" | Soft no | Respect it, leave door open: \"No worries, I'll ping you in a few months\" |\n| \"Who else is using it?\" | Trust-building | Share a relevant use case, offer intro to a user |\n| [No reply in 4 days] | Silence | Light nudge: \"Hey [Name], just checking — any thoughts?\" |\n| [No reply in 8 days] | Cold | One final message, then mark No Response |\n\n---\n\n## Anti-Detection Rules\n\nSame rules as linkedin-dm:\n- Always go to `/feed/` before navigating to a profile\n- Wait 2–4 seconds after loading feed\n- Max **15–20 messages per session** (combined sends across follow-ups)\n- Space out follow-ups: don't ping multiple people in rapid succession\n- Natural delays between typing and sending (1–2 seconds)\n\n---\n\n## gog Auth Setup\n\nIf `gog auth list` returns empty, the user needs to set up Google OAuth credentials:\n\n1. Go to [console.cloud.google.com](https://console.cloud.google.com)\n2. Create a project (or select existing)\n3. Enable **Google Sheets API** (APIs & Services → Library)\n4. Create OAuth credentials: APIs & Services → Credentials → Create → OAuth client ID → Desktop App\n5. Download `client_secret_<id>.json`\n6. Run:\n   ```bash\n   gog auth credentials set /path/to/client_secret.json\n   gog auth add your@gmail.com --services sheets\n   ```\n7. A browser window will open — log in and grant access\n8. Verify: `gog auth list`\n\n**Fallback (no gog):** All sheet reads/writes can be done manually via browser — open the sheet in the openclaw browser and update cells directly. Less automated but functional.\n\n---\n\n## Session Limits\n\n- Max 15–20 follow-up messages per session\n- Log every send immediately to sheet (don't batch)\n- If gog is unavailable, log to local `linkedin_followup_log.json` and sync to sheet next session\n","readmeExcerpt":"--- name: linkedin-followup description: Manage LinkedIn outreach leads from Google Sheets — search by name, read live conversation threads, update status, and send contextual follow-up messages. Use after linkedin-dm to move leads through the pipeline (Sent → Replied → Call Scheduled → Demo Done → Closed). metadata: { \"openclaw\": { \"emoji\": \"🔁\", \"requires\": { \"bins\": [\"gog\"] }, \"skills\": [\"gog\"], \"tags\": [\"linkedin","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"[2026-02-13 17:05 SENT] Hey Rishabh, we both had stints at CRED...\n[2026-02-13 17:05 SENT] I'm building an AI calling agent...\n[2026-02-15 09:30 RECEIVED] Hey! Sounds interesting, tell me more.\n[2026-02-15 09:45 SENT] Happy to show you a live demo — are you free Thursday?"},{"language":"bash","snippet":"gog sheets update <SHEET_ID> \"Sheet1!M1:P1\" \\\n  --values-json '[[\"Last Reply Date\",\"Last Reply (preview)\",\"Conversation Log\",\"Next Action\"]]' \\\n  --input USER_ENTERED"},{"language":"bash","snippet":"gog sheets get <SHEET_ID> \"Sheet1!A:P\" --json"},{"language":"bash","snippet":"gog sheets update <SHEET_ID> \"Sheet1!J<ROW>:L<ROW>\" \\\n     --values-json '[[\"Replied\",\"\",\"<ISO_TIMESTAMP>\"]]' \\\n     --input USER_ENTERED"},{"language":"bash","snippet":"gog sheets get <SHEET_ID> \"Sheet1!A:P\" --json"},{"language":"text","snippet":"https://www.linkedin.com/feed/"}],"parameters":{},"dependencies":[],"permissions":[],"extractedFiles":[],"languages":["typescript"],"docsSourceLabel":"CLAWHUB","editorialOverview":"Manage LinkedIn outreach leads from Google Sheets — search by name, read live conversation threads, update status, and send contextual follow-up messages. Use after linkedin-dm to move leads through the pipeline (Sent → Replied → Call Scheduled → Demo Done → Closed). --- name: linkedin-followup description: Manage LinkedIn outreach leads from Google Sheets — search by name, read live conversation threads, update status, and send contextual follow-up messages. Use after linkedin-dm to move leads through the pipeline (Sent → Replied → Call Scheduled → Demo Done → Closed). metadata: { \"openclaw\": { \"emoji\": \"🔁\", \"requires\": { \"bins\": [\"gog\"] }, \"skills\": [\"gog\"], \"tags\": [\"linkedin","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":391,"uniquenessScore":64,"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-10T07:54:52.101Z","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"}]}}}