[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6FHHGSW65SPP4C3Q3TB2HYC":3,"skill-same:01M6FHHGSW65SPP4C3Q3TB2HYC":61},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":6,"ownerHtmlUrl":45,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":46,"install":47,"resources":60},"01M6FHHGSW65SPP4C3Q3TB2HYC","resend-inbound",null,"Use when receiving emails with Resend - setting up inbound domains, processing email.received webhooks, retrieving email content\u002Fattachments, or forwarding received emails.","kbarbel640-del\u002Fskills","kbarbel640-del","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F255315490?v=4","01M6CJPPQGCCESXMG3K7BBGQ5J","01M6CJPPX2PB2BCZERFVM2C2B3",1,"MIT","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fchristina-de-martinez\u002Fresend-skills\u002Fresend-inbound\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000005","邮件与沟通","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34],"resend","resend inbound","content","email","attachments","use","up","webhooks","emails","domains","processing","with","2026-11-10 10:12:30",false,"---\nname: resend-inbound\ndescription: Use when receiving emails with Resend - setting up inbound domains, processing email.received webhooks, retrieving email content\u002Fattachments, or forwarding received emails.\n---\n\n# Receive Emails with Resend\n\n## Overview\n\nResend processes incoming emails for your domain and sends webhook events to your endpoint. **Webhooks contain metadata only** - you must call separate APIs to retrieve email body and attachments.\n\n## Quick Start\n\n1. **Configure receiving domain** - Use Resend's `.resend.app` domain or add MX record for custom domain\n2. **Set up webhook** - Subscribe to `email.received` event\n3. **Retrieve content** - Call Receiving API for body, Attachments API for files\n\n## Domain Setup\n\n### Option 1: Resend-Managed Domain (Fastest)\n\nUse your auto-generated address: `\u003Canything>@\u003Cyour-id>.resend.app`\n\nNo DNS configuration needed. Find your address in Dashboard → Emails → Receiving → \"Receiving address\".\n\n### Option 2: Custom Domain\n\nAdd MX record to receive at `\u003Canything>@yourdomain.com`.\n\n| Setting | Value |\n|---------|-------|\n| **Type** | MX |\n| **Host** | Your domain or subdomain |\n| **Value** | Provided in Resend dashboard |\n| **Priority** | 10 (**lowest number** wins a conflict, but typically only multiples of 10 are used) |\n\n**Critical:** Your MX record must have the lowest priority value, or emails won't route to Resend.\n\n### Subdomain Recommendation\n\nIf you already have MX records (e.g., Google Workspace, Microsoft 365):\n\n| Approach | Result |\n|----------|--------|\n| **Use subdomain** (recommended) | `support.acme.com` → Resend, `acme.com` → existing provider |\n| **Use root domain** | All email routes to Resend (breaks existing email) |\n\n```\n# Example: receive at support.acme.com without affecting acme.com\nsupport.acme.com.  MX  10  \u003Cresend-mx-value>\n```\n\nIf you set up Resend to receive email on a root domain, *all* traffic will be routed to Resend, not to any other mailbox. It's crucial, then, to use a subdomain with inbound emails.\n\n## Webhook Setup\n\n### Subscribe to `email.received`\n\nDashboard → Webhooks → Add Webhook → Select `email.received`\n\nFor local development, use tunneling (ngrok, VS Code Port Forwarding):\n```bash\nngrok http 3000\n# Use https:\u002F\u002Fabc123.ngrok.io\u002Fapi\u002Fwebhook as endpoint\n```\n\n### Webhook Payload Structure\n\n**Important:** Payload contains metadata only, not email body or attachment content.\n\n```json\n{\n  \"type\": \"email.received\",\n  \"created_at\": \"2024-02-22T23:41:12.126Z\",\n  \"data\": {\n    \"email_id\": \"a1b2c3d4-...\",\n    \"from\": \"sender@example.com\",\n    \"to\": [\"support@acme.com\"],\n    \"cc\": [],\n    \"bcc\": [],\n    \"subject\": \"Question about my order\",\n    \"attachments\": [\n      {\n        \"id\": \"att_abc123\",\n        \"filename\": \"receipt.pdf\",\n        \"content_type\": \"application\u002Fpdf\"\n      }\n    ]\n  }\n}\n```\n\n### Verify Webhook Signatures\n\nAlways verify signatures to prevent spoofed events:\n\n```typescript\nimport { Resend } from 'resend';\n\nconst resend = new Resend(process.env.RESEND_API_KEY);\n\nexport async function POST(req: Request) {\n  const payload = await req.text();\n\n  const event = resend.webhooks.verify({\n    payload,\n    headers: {\n      'svix-id': req.headers.get('svix-id'),\n      'svix-timestamp': req.headers.get('svix-timestamp'),\n      'svix-signature': req.headers.get('svix-signature'),\n    },\n    secret: process.env.RESEND_WEBHOOK_SECRET,\n  });\n\n  if (event.type === 'email.received') {\n    \u002F\u002F Process the email\n  }\n\n  return new Response('OK', { status: 200 });\n}\n```\n\n## Retrieving Email Content\n\nWebhooks exclude email body and headers. Call the Receiving API to get them:\n\n```typescript\nif (event.type === 'email.received') {\n  const { data: email } = await resend.emails.receiving.get(\n    event.data.email_id\n  );\n\n  console.log(email.html);    \u002F\u002F HTML body\n  console.log(email.text);    \u002F\u002F Plain text body\n  console.log(email.headers); \u002F\u002F Email headers\n}\n```\n\n**Why this design?** Serverless environments have request body size limits. Separating content retrieval supports large emails and attachments.\n\n## Handling Attachments\n\n### Get Attachment Metadata and Download URLs\n\n```typescript\nconst { data: attachments } = await resend.emails.receiving.attachments.list({\n  emailId: event.data.email_id,\n});\n\nfor (const attachment of attachments) {\n  console.log(attachment.filename);\n  console.log(attachment.download_url);  \u002F\u002F Valid for 1 hour\n  console.log(attachment.expires_at);\n}\n```\n\n### Download Attachment Content\n\n```typescript\nconst response = await fetch(attachment.download_url);\nconst buffer = await response.arrayBuffer();\n\n\u002F\u002F Save to storage, process, etc.\nawait saveToStorage(attachment.filename, buffer);\n```\n\n**Important:** `download_url` expires after 1 hour. Call the API again for a fresh URL if needed.\n\n## Forwarding Emails\n\nComplete workflow to receive and forward an email with attachments:\n\n```typescript\nimport { Resend } from 'resend';\n\nconst resend = new Resend(process.env.RESEND_API_KEY);\n\nexport async function POST(req: Request) {\n  const payload = await req.text();\n  const event = resend.webhooks.verify({ \u002F* ... *\u002F });\n\n  if (event.type === 'email.received') {\n    \u002F\u002F 1. Get email content\n    const { data: email } = await resend.emails.receiving.get(\n      event.data.email_id\n    );\n\n    \u002F\u002F 2. Get attachments (if any)\n    const { data: attachmentList } = await resend.emails.receiving.attachments.list({\n      emailId: event.data.email_id,\n    });\n\n    \u002F\u002F 3. Download and encode attachments\n    const attachments = await Promise.all(\n      attachmentList.map(async (att) => {\n        const res = await fetch(att.download_url);\n        const buffer = Buffer.from(await res.arrayBuffer());\n        return {\n          filename: att.filename,\n          content: buffer.toString('base64'),\n        };\n      })\n    );\n\n    \u002F\u002F 4. Forward the email\n    await resend.emails.send({\n      from: 'Support System \u003Csystem@acme.com>',\n      to: ['team@acme.com'],\n      subject: `Fwd: ${email.subject}`,\n      html: email.html,\n      text: email.text,\n      attachments,\n    });\n  }\n\n  return new Response('OK', { status: 200 });\n}\n```\n\n## Routing by Recipient\n\nAll emails to your domain arrive at the same webhook. Route based on the `to` field:\n\n```typescript\nif (event.type === 'email.received') {\n  const recipient = event.data.to[0];\n\n  if (recipient.includes('support@')) {\n    await handleSupportEmail(event.data);\n  } else if (recipient.includes('billing@')) {\n    await handleBillingEmail(event.data);\n  } else {\n    await handleUnknownEmail(event.data);\n  }\n}\n```\n\n## Common Mistakes\n\n| Mistake | Fix |\n|---------|-----|\n| Expecting body in webhook payload | Webhook has metadata only - call `resend.emails.receiving.get()` for body |\n| MX record not lowest priority | Ensure Resend's MX has lowest number (highest priority) |\n| Adding MX to root domain with existing email | Use subdomain to avoid breaking existing email service |\n| Using expired download_url | URLs expire after 1 hour - call attachments API again for fresh URL |\n| Not verifying webhook signatures | Always verify - attackers can send fake events |\n| Forgetting to return 200 OK | Resend retries on non-200 responses |\n\n## Storage Note\n\nResend stores received emails even if:\n- Webhook isn't configured yet\n- Webhook endpoint is down\n\nView all received emails in Dashboard → Emails → Receiving tab.\n","# Receive Emails with Resend\n\n## Overview\n\nResend processes incoming emails for your domain and sends webhook events to your endpoint. **Webhooks contain metadata only** - you must call separate APIs to retrieve email body and attachments.\n\n## Quick Start\n\n1. **Configure receiving domain** - Use Resend's `.resend.app` domain or add MX record for custom domain\n2. **Set up webhook** - Subscribe to `email.received` event\n3. **Retrieve content** - Call Receiving API for body, Attachments API for files\n\n## Domain Setup\n\n### Option 1: Resend-Managed Domain (Fastest)\n\nUse your auto-generated address: `\u003Canything>@\u003Cyour-id>.resend.app`\n\nNo DNS configuration needed. Find your address in Dashboard → Emails → Receiving → \"Receiving address\".\n\n### Option 2: Custom Domain\n\nAdd MX record to receive at `\u003Canything>@yourdomain.com`.\n\n| Setting | Value |\n|---------|-------|\n| **Type** | MX |\n| **Host** | Your domain or subdomain |\n| **Value** | Provided in Resend dashboard |\n| **Priority** | 10 (**lowest number** wins a conflict, but typically only multiples of 10 are used) |\n\n**Critical:** Your MX record must have the lowest priority value, or emails won't route to Resend.\n\n### Subdomain Recommendation\n\nIf you already have MX records (e.g., Google Workspace, Microsoft 365):\n\n| Approach | Result |\n|----------|--------|\n| **Use subdomain** (recommended) | `support.acme.com` → Resend, `acme.com` → existing provider |\n| **Use root domain** | All email routes to Resend (breaks existing email) |\n\n```\n# Example: receive at support.acme.com without affecting acme.com\nsupport.acme.com.  MX  10  \u003Cresend-mx-value>\n```\n\nIf you set up Resend to receive email on a root domain, *all* traffic will be routed to Resend, not to any other mailbox. It's crucial, then, to use a subdomain with inbound emails.\n\n## Webhook Setup\n\n### Subscribe to `email.received`\n\nDashboard → Webhooks → Add Webhook → Select `email.received`\n\nFor local development, use tunneling (ngrok, VS Code Port Forwarding):\n```bash\nngrok http 3000\n# Use https:\u002F\u002Fabc123.ngrok.io\u002Fapi\u002Fwebhook as endpoint\n```\n\n### Webhook Payload Structure\n\n**Important:** Payload contains metadata only, not email body or attachment content.\n\n```json\n{\n  \"type\": \"email.received\",\n  \"created_at\": \"2024-02-22T23:41:12.126Z\",\n  \"data\": {\n    \"email_id\": \"a1b2c3d4-...\",\n    \"from\": \"sender@example.com\",\n    \"to\": [\"support@acme.com\"],\n    \"cc\": [],\n    \"bcc\": [],\n    \"subject\": \"Question about my order\",\n    \"attachments\": [\n      {\n        \"id\": \"att_abc123\",\n        \"filename\": \"receipt.pdf\",\n        \"content_type\": \"application\u002Fpdf\"\n      }\n    ]\n  }\n}\n```\n\n### Verify Webhook Signatures\n\nAlways verify signatures to prevent spoofed events:\n\n```typescript\nimport { Resend } from 'resend';\n\nconst resend = new Resend(process.env.RESEND_API_KEY);\n\nexport async function POST(req: Request) {\n  const payload = await req.text();\n\n  const event = resend.webhooks.verify({\n    payload,\n    headers: {\n      'svix-id': req.headers.get('svix-id'),\n      'svix-timestamp': req.headers.get('svix-timestamp'),\n      'svix-signature': req.headers.get('svix-signature'),\n    },\n    secret: process.env.RESEND_WEBHOOK_SECRET,\n  });\n\n  if (event.type === 'email.received') {\n    \u002F\u002F Process the email\n  }\n\n  return new Response('OK', { status: 200 });\n}\n```\n\n## Retrieving Email Content\n\nWebhooks exclude email body and headers. Call the Receiving API to get them:\n\n```typescript\nif (event.type === 'email.received') {\n  const { data: email } = await resend.emails.receiving.get(\n    event.data.email_id\n  );\n\n  console.log(email.html);    \u002F\u002F HTML body\n  console.log(email.text);    \u002F\u002F Plain text body\n  console.log(email.headers); \u002F\u002F Email headers\n}\n```\n\n**Why this design?** Serverless environments have request body size limits. Separating content retrieval supports large emails and attachments.\n\n## Handling Attachments\n\n### Get Attachment Metadata and Download URLs\n\n```typescript\nconst { data: attachments } = await resend.emails.receiving.attachments.list({\n  emailId: event.data.email_id,\n});\n\nfor (const attachment of attachments) {\n  console.log(attachment.filename);\n  console.log(attachment.download_url);  \u002F\u002F Valid for 1 hour\n  console.log(attachment.expires_at);\n}\n```\n\n### Download Attachment Content\n\n```typescript\nconst response = await fetch(attachment.download_url);\nconst buffer = await response.arrayBuffer();\n\n\u002F\u002F Save to storage, process, etc.\nawait saveToStorage(attachment.filename, buffer);\n```\n\n**Important:** `download_url` expires after 1 hour. Call the API again for a fresh URL if needed.\n\n## Forwarding Emails\n\nComplete workflow to receive and forward an email with attachments:\n\n```typescript\nimport { Resend } from 'resend';\n\nconst resend = new Resend(process.env.RESEND_API_KEY);\n\nexport async function POST(req: Request) {\n  const payload = await req.text();\n  const event = resend.webhooks.verify({ \u002F* ... *\u002F });\n\n  if (event.type === 'email.received') {\n    \u002F\u002F 1. Get email content\n    const { data: email } = await resend.emails.receiving.get(\n      event.data.email_id\n    );\n\n    \u002F\u002F 2. Get attachments (if any)\n    const { data: attachmentList } = await resend.emails.receiving.attachments.list({\n      emailId: event.data.email_id,\n    });\n\n    \u002F\u002F 3. Download and encode attachments\n    const attachments = await Promise.all(\n      attachmentList.map(async (att) => {\n        const res = await fetch(att.download_url);\n        const buffer = Buffer.from(await res.arrayBuffer());\n        return {\n          filename: att.filename,\n          content: buffer.toString('base64'),\n        };\n      })\n    );\n\n    \u002F\u002F 4. Forward the email\n    await resend.emails.send({\n      from: 'Support System \u003Csystem@acme.com>',\n      to: ['team@acme.com'],\n      subject: `Fwd: ${email.subject}`,\n      html: email.html,\n      text: email.text,\n      attachments,\n    });\n  }\n\n  return new Response('OK', { status: 200 });\n}\n```\n\n## Routing by Recipient\n\nAll emails to your domain arrive at the same webhook. Route based on the `to` field:\n\n```typescript\nif (event.type === 'email.received') {\n  const recipient = event.data.to[0];\n\n  if (recipient.includes('support@')) {\n    await handleSupportEmail(event.data);\n  } else if (recipient.includes('billing@')) {\n    await handleBillingEmail(event.data);\n  } else {\n    await handleUnknownEmail(event.data);\n  }\n}\n```\n\n## Common Mistakes\n\n| Mistake | Fix |\n|---------|-----|\n| Expecting body in webhook payload | Webhook has metadata only - call `resend.emails.receiving.get()` for body |\n| MX record not lowest priority | Ensure Resend's MX has lowest number (highest priority) |\n| Adding MX to root domain with existing email | Use subdomain to avoid breaking existing email service |\n| Using expired download_url | URLs expire after 1 hour - call attachments API again for fresh URL |\n| Not verifying webhook signatures | Always verify - attackers can send fake events |\n| Forgetting to return 200 OK | Resend retries on non-200 responses |\n\n## Storage Note\n\nResend stores received emails even if:\n- Webhook isn't configured yet\n- Webhook endpoint is down\n\nView all received emails in Dashboard → Emails → Receiving tab.\n",{"name":5,"description":7},"main","e7e336ac628c3e3bd771aff1aaa469c93778f94a","skills\u002Fchristina-de-martinez\u002Fresend-skills\u002Fresend-inbound",0,"https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del","2026-08-23 22:39:37",{"source":8,"skillName":5,"commands":48,"prompt":58,"zipAvailable":59},[49,52,55],{"tool":50,"command":51},"npx","npx skills add kbarbel640-del\u002Fskills --skill resend-inbound",{"tool":53,"command":54},"bunx","bunx skills add kbarbel640-del\u002Fskills --skill resend-inbound",{"tool":56,"command":57},"pnpm","pnpm dlx skills add kbarbel640-del\u002Fskills --skill resend-inbound","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fchristina-de-martinez\u002Fresend-skills\u002Fresend-inbound\u002FSKILL.md",true,[],[62,91,117,138,144,164],{"skillNo":63,"name":64,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":73,"publishedAt":35},"01M6G8J55967D6281ACMKAKTEQ","crowd-prompting","A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzzadrian\u002Fcrowd-prompting\u002FSKILL.md",[68],{"categoryNo":69,"categoryName":70,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[74,75,76,34,77,78,79,80,81,82,83,84,85,86,87,88,89,25,90],"crowd prompting","prompting","api","tokens","domain","world","prompts","operations","instructions","text","tool","system","improve","productivity","marketplace","https","ai agents",{"skillNo":92,"name":93,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":100,"publishedAt":35},"01M6G8J0PKPAYVET6BWE8W4C26","dilemm-ai","Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzyori\u002Fdilemm-ai\u002FSKILL.md",[97],{"categoryNo":98,"categoryName":99,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发",[101,76,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,80,28],"dilemm ai","arena","analyze","browser","openclaw agent","create","automation","browser automation","bot","openclaw","design","strategy","headless","compete","submit","matchmaking",{"skillNo":118,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":121,"categories":122,"keywords":126,"publishedAt":35},"01M6G8HWAF3K9SW7NP3Z83CPJ6","arxiv-paper-reviews","Interact with arXiv Crawler API to fetch papers, read reviews, and submit comments. Use when working with arXiv papers, fetching paper lists by date\u002Fcategory\u002Finterest, viewing paper details with comments, or submitting paper reviews via API at http:\u002F\u002F150.158.152.82:8000.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Fweak-accept\u002FSKILL.md",[123],{"categoryNo":124,"categoryName":125,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000021","资料检索与研究",[127,128,129,130,131,132,133,34,134,115,28,135,76,136,137],"arxiv paper reviews","reviews","arxiv","paper","crawler","papers","comments","fetch","read","http","via",{"skillNo":139,"name":119,"nameZh":6,"description":120,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":143,"publishedAt":35},"01M6G8HQJ7N7WMY6YV7D7SSJ16","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[142],{"categoryNo":124,"categoryName":125,"taxonomyType":20,"taxonomyTypeDesc":21},[130,129,128,127,137,132,133,34,131,115,28,134,135,76,136],{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":35},"01M6G8HM95Y64JNVFC2HN4E2BG","git-summary","Get a quick summary of the current Git repository including status, recent commits, branches, and contributors.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fzweack\u002Fgit-summary\u002FSKILL.md",[],[151,152,153,154,155,156,157,158,159,160,161,162,163],"git","summary","git summary","commits","repository","win32","status","linux","contributors","true","quick","get","branches",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":174,"publishedAt":35},"01M6G8HGEGF05CNEJCGVYFSC4R","agent-constitution","Interact with AgentConstitution governance contracts on Base Sepolia. Check compliance, read rules, log actions, query governance state.","https:\u002F\u002Fgithub.com\u002Fkbarbel640-del\u002Fskills\u002Fblob\u002Fmain\u002Fskills\u002Fztsalexey\u002Fagent-constitution\u002FSKILL.md",[170,171],{"categoryNo":98,"categoryName":99,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":172,"categoryName":173,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000037","律师与法务",[175,176,177,178,34,179,180,40,181,135,182,183,184,185,186,89,187,188,189],"agent constitution","constitution","contracts","tree","query","base","log","check","Rules","projects","compliance","actions","state","governance","github"]