[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EZNK53CWF9AV9KD4VFFESB":3,"skill-same:01M6EZNK53CWF9AV9KD4VFFESB":91},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":69,"commitSha":70,"skillDirectory":71,"forksCount":72,"repositoryHtmlUrl":73,"repositoryHomepageUrl":6,"ownerHtmlUrl":74,"ownerBlogUrl":6,"ownerDescription":75,"updatedAt":76,"install":77,"resources":90},"01M6EZNK53CWF9AV9KD4VFFESB","posse-distribution-architecture",null,"Implement POSSE (Publish on Own Site, Syndicate Elsewhere) content distribution with canonical URLs, cross-platform syndication, backfeed collection, and resilient delivery. Covers multi-platform publishing automation and IndieWeb patterns. Triggers on POSSE implementation, content syndication architecture, or IndieWeb publishing requests.","luokai0\u002Fai-agent-skills-by-luo-kai","luokai0","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F266954973?v=4","01M6E16VNT42JB8B3X3254QWJ7","luo kai","01M6E16VTFVP6S5XJF1V1MPV90",14,"MIT","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F21-external-registries\u002F18-organvm-skills\u002Fintegrations\u002Fposse-distribution-architecture\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"posse distribution architecture","architecture","distribution","publishing","advanced","with","multi","triggers","platform","social","api-integration","implement","Media","api","social-media","collection","pipeline","publish","resilience","automation","2026-11-10 10:12:30",false,"---\nname: posse-distribution-architecture\ndescription: Implement POSSE (Publish on Own Site, Syndicate Elsewhere) content distribution with canonical URLs, cross-platform syndication, backfeed collection, and resilient delivery. Covers multi-platform publishing automation and IndieWeb patterns. Triggers on POSSE implementation, content syndication architecture, or IndieWeb publishing requests.\nlicense: MIT\ncomplexity: advanced\ntime_to_learn: 30min\ntags:\n  - posse\n  - syndication\n  - indieweb\n  - content-distribution\n  - cross-platform\ngovernance_phases: [build]\norgan_affinity: [organ-vii]\ntriggers: [user-asks-about-posse, context:content-syndication, context:indieweb, context:cross-platform-publishing]\ncomplements: [resilience-patterns, social-media-api-integration, essay-publishing-pipeline, content-distribution]\n---\n\n# POSSE Distribution Architecture\n\nPublish on your own site first, then syndicate everywhere else — with resilience.\n\n## POSSE Principle\n\n```\nYour Site (canonical) ──→ Platform A (syndicated copy)\n         │               ├─→ Platform B (syndicated copy)\n         │               ├─→ Platform C (syndicated copy)\n         │               └─→ Newsletter (syndicated copy)\n         │\n         ←── Backfeed (likes, comments, reshares from platforms)\n```\n\n**Why POSSE over platform-first:**\n- Own your canonical URL and content\n- Platform changes don't destroy your archive\n- Canonical URL gets SEO benefit\n- Single source of truth for corrections\n\n## Architecture\n\n### Core Components\n\n```python\nfrom dataclasses import dataclass, field\nfrom datetime import datetime\nfrom enum import Enum\n\nclass SyndicationStatus(str, Enum):\n    PENDING = \"pending\"\n    PUBLISHED = \"published\"\n    FAILED = \"failed\"\n    RETRYING = \"retrying\"\n\n@dataclass\nclass CanonicalContent:\n    id: str\n    title: str\n    body: str\n    canonical_url: str\n    published_at: datetime\n    content_type: str  # \"essay\", \"note\", \"photo\", \"event\"\n    tags: list[str] = field(default_factory=list)\n    syndications: dict[str, SyndicationStatus] = field(default_factory=dict)\n\n@dataclass\nclass SyndicationTarget:\n    platform: str\n    adapter: \"PlatformAdapter\"\n    enabled: bool = True\n    format_rules: dict = field(default_factory=dict)\n```\n\n### Distribution Pipeline\n\n```python\nclass POSSEDistributor:\n    def __init__(self, targets: list[SyndicationTarget]):\n        self.targets = {t.platform: t for t in targets if t.enabled}\n\n    async def distribute(self, content: CanonicalContent) -> dict[str, str]:\n        results = {}\n        for platform, target in self.targets.items():\n            try:\n                adapted = target.adapter.adapt(content)\n                syndication_url = await target.adapter.publish(adapted)\n                content.syndications[platform] = SyndicationStatus.PUBLISHED\n                results[platform] = syndication_url\n            except RateLimitError:\n                content.syndications[platform] = SyndicationStatus.RETRYING\n                await self.queue_retry(platform, content)\n            except Exception as e:\n                content.syndications[platform] = SyndicationStatus.FAILED\n                results[platform] = f\"FAILED: {e}\"\n        return results\n```\n\n### Content Adaptation\n\n```python\nfrom abc import ABC, abstractmethod\n\nclass PlatformAdapter(ABC):\n    @abstractmethod\n    def adapt(self, content: CanonicalContent) -> dict:\n        \"\"\"Transform content for platform constraints.\"\"\"\n\n    @abstractmethod\n    async def publish(self, adapted: dict) -> str:\n        \"\"\"Publish and return syndication URL.\"\"\"\n\nclass BlueskyAdapter(PlatformAdapter):\n    MAX_LENGTH = 300\n\n    def adapt(self, content: CanonicalContent) -> dict:\n        if content.content_type == \"essay\":\n            text = f\"{content.title}\\n\\n{content.body[:200]}...\\n\\n{content.canonical_url}\"\n        else:\n            text = content.body[:self.MAX_LENGTH - len(content.canonical_url) - 2]\n            text = f\"{text}\\n\\n{content.canonical_url}\"\n        return {\"text\": text[:self.MAX_LENGTH], \"tags\": content.tags[:8]}\n\nclass NewsletterAdapter(PlatformAdapter):\n    def adapt(self, content: CanonicalContent) -> dict:\n        return {\n            \"subject\": content.title,\n            \"html\": render_email_template(content),\n            \"canonical_url\": content.canonical_url,\n        }\n\nclass DevToAdapter(PlatformAdapter):\n    def adapt(self, content: CanonicalContent) -> dict:\n        return {\n            \"title\": content.title,\n            \"body_markdown\": content.body,\n            \"canonical_url\": content.canonical_url,\n            \"tags\": content.tags[:4],\n            \"published\": True,\n        }\n```\n\n## Resilient Delivery\n\n### Retry Queue\n\n```python\nimport asyncio\nfrom collections import defaultdict\n\nclass RetryQueue:\n    def __init__(self, max_retries: int = 3, base_delay: float = 60):\n        self.max_retries = max_retries\n        self.base_delay = base_delay\n        self.queue: list[tuple[str, CanonicalContent, int]] = []\n\n    async def add(self, platform: str, content: CanonicalContent, attempt: int = 0):\n        self.queue.append((platform, content, attempt))\n\n    async def process(self, distributor: POSSEDistributor):\n        while self.queue:\n            platform, content, attempt = self.queue.pop(0)\n            if attempt >= self.max_retries:\n                log.error(\"syndication_abandoned\", platform=platform, content_id=content.id)\n                continue\n\n            delay = self.base_delay * (2 ** attempt)\n            await asyncio.sleep(delay)\n\n            target = distributor.targets.get(platform)\n            if not target:\n                continue\n\n            try:\n                adapted = target.adapter.adapt(content)\n                url = await target.adapter.publish(adapted)\n                content.syndications[platform] = SyndicationStatus.PUBLISHED\n            except Exception:\n                await self.add(platform, content, attempt + 1)\n```\n\n### Circuit Breaker per Platform\n\n```python\nclass PlatformCircuitBreaker:\n    def __init__(self):\n        self.circuits: dict[str, CircuitBreaker] = {}\n\n    def get(self, platform: str) -> CircuitBreaker:\n        if platform not in self.circuits:\n            self.circuits[platform] = CircuitBreaker(\n                failure_threshold=3,\n                recovery_timeout=300,  # 5 minutes\n            )\n        return self.circuits[platform]\n\n    async def publish(self, platform: str, adapter: PlatformAdapter, content: dict) -> str:\n        circuit = self.get(platform)\n        return await circuit.call(adapter.publish, content)\n```\n\n## Backfeed Collection\n\n```python\nasync def collect_backfeed(syndication_urls: dict[str, str]) -> list[dict]:\n    backfeed = []\n    for platform, url in syndication_urls.items():\n        try:\n            adapter = get_adapter(platform)\n            metrics = await adapter.get_metrics(url)\n            backfeed.append({\n                \"platform\": platform,\n                \"url\": url,\n                \"likes\": metrics.get(\"likes\", 0),\n                \"reposts\": metrics.get(\"reposts\", 0),\n                \"comments\": metrics.get(\"comments\", []),\n            })\n        except Exception:\n            pass  # Backfeed is best-effort\n    return backfeed\n```\n\n## Syndication Manifest\n\n```yaml\n# syndication-manifest.yaml\ncontent:\n  - id: essay-2026-03-20-architecture\n    canonical_url: https:\u002F\u002Fexample.com\u002Fessays\u002Farchitecture\n    published_at: 2026-03-20T10:00:00Z\n    syndications:\n      bluesky:\n        status: published\n        url: https:\u002F\u002Fbsky.app\u002Fprofile\u002F...\u002Fpost\u002F...\n        published_at: 2026-03-20T10:01:00Z\n      devto:\n        status: published\n        url: https:\u002F\u002Fdev.to\u002Fauthor\u002Farticle\n        published_at: 2026-03-20T10:02:00Z\n      newsletter:\n        status: published\n        campaign_id: \"abc123\"\n        published_at: 2026-03-20T10:05:00Z\n    backfeed:\n      total_likes: 42\n      total_reposts: 8\n      total_comments: 3\n      last_collected: 2026-03-20T22:00:00Z\n```\n\n## Anti-Patterns\n\n- **Platform-first publishing** — Always publish on own site first; canonical URL is sacred\n- **No canonical URL** — Every syndicated copy must link back to the original\n- **Synchronous distribution** — Publish locally first, syndicate asynchronously\n- **No retry logic** — Platforms have outages; queue and retry failed syndications\n- **Identical content everywhere** — Adapt format and length per platform\n- **Ignoring backfeed** — Engagement data from platforms enriches the canonical record\n","# POSSE Distribution Architecture\n\nPublish on your own site first, then syndicate everywhere else — with resilience.\n\n## POSSE Principle\n\n```\nYour Site (canonical) ──→ Platform A (syndicated copy)\n         │               ├─→ Platform B (syndicated copy)\n         │               ├─→ Platform C (syndicated copy)\n         │               └─→ Newsletter (syndicated copy)\n         │\n         ←── Backfeed (likes, comments, reshares from platforms)\n```\n\n**Why POSSE over platform-first:**\n- Own your canonical URL and content\n- Platform changes don't destroy your archive\n- Canonical URL gets SEO benefit\n- Single source of truth for corrections\n\n## Architecture\n\n### Core Components\n\n```python\nfrom dataclasses import dataclass, field\nfrom datetime import datetime\nfrom enum import Enum\n\nclass SyndicationStatus(str, Enum):\n    PENDING = \"pending\"\n    PUBLISHED = \"published\"\n    FAILED = \"failed\"\n    RETRYING = \"retrying\"\n\n@dataclass\nclass CanonicalContent:\n    id: str\n    title: str\n    body: str\n    canonical_url: str\n    published_at: datetime\n    content_type: str  # \"essay\", \"note\", \"photo\", \"event\"\n    tags: list[str] = field(default_factory=list)\n    syndications: dict[str, SyndicationStatus] = field(default_factory=dict)\n\n@dataclass\nclass SyndicationTarget:\n    platform: str\n    adapter: \"PlatformAdapter\"\n    enabled: bool = True\n    format_rules: dict = field(default_factory=dict)\n```\n\n### Distribution Pipeline\n\n```python\nclass POSSEDistributor:\n    def __init__(self, targets: list[SyndicationTarget]):\n        self.targets = {t.platform: t for t in targets if t.enabled}\n\n    async def distribute(self, content: CanonicalContent) -> dict[str, str]:\n        results = {}\n        for platform, target in self.targets.items():\n            try:\n                adapted = target.adapter.adapt(content)\n                syndication_url = await target.adapter.publish(adapted)\n                content.syndications[platform] = SyndicationStatus.PUBLISHED\n                results[platform] = syndication_url\n            except RateLimitError:\n                content.syndications[platform] = SyndicationStatus.RETRYING\n                await self.queue_retry(platform, content)\n            except Exception as e:\n                content.syndications[platform] = SyndicationStatus.FAILED\n                results[platform] = f\"FAILED: {e}\"\n        return results\n```\n\n### Content Adaptation\n\n```python\nfrom abc import ABC, abstractmethod\n\nclass PlatformAdapter(ABC):\n    @abstractmethod\n    def adapt(self, content: CanonicalContent) -> dict:\n        \"\"\"Transform content for platform constraints.\"\"\"\n\n    @abstractmethod\n    async def publish(self, adapted: dict) -> str:\n        \"\"\"Publish and return syndication URL.\"\"\"\n\nclass BlueskyAdapter(PlatformAdapter):\n    MAX_LENGTH = 300\n\n    def adapt(self, content: CanonicalContent) -> dict:\n        if content.content_type == \"essay\":\n            text = f\"{content.title}\\n\\n{content.body[:200]}...\\n\\n{content.canonical_url}\"\n        else:\n            text = content.body[:self.MAX_LENGTH - len(content.canonical_url) - 2]\n            text = f\"{text}\\n\\n{content.canonical_url}\"\n        return {\"text\": text[:self.MAX_LENGTH], \"tags\": content.tags[:8]}\n\nclass NewsletterAdapter(PlatformAdapter):\n    def adapt(self, content: CanonicalContent) -> dict:\n        return {\n            \"subject\": content.title,\n            \"html\": render_email_template(content),\n            \"canonical_url\": content.canonical_url,\n        }\n\nclass DevToAdapter(PlatformAdapter):\n    def adapt(self, content: CanonicalContent) -> dict:\n        return {\n            \"title\": content.title,\n            \"body_markdown\": content.body,\n            \"canonical_url\": content.canonical_url,\n            \"tags\": content.tags[:4],\n            \"published\": True,\n        }\n```\n\n## Resilient Delivery\n\n### Retry Queue\n\n```python\nimport asyncio\nfrom collections import defaultdict\n\nclass RetryQueue:\n    def __init__(self, max_retries: int = 3, base_delay: float = 60):\n        self.max_retries = max_retries\n        self.base_delay = base_delay\n        self.queue: list[tuple[str, CanonicalContent, int]] = []\n\n    async def add(self, platform: str, content: CanonicalContent, attempt: int = 0):\n        self.queue.append((platform, content, attempt))\n\n    async def process(self, distributor: POSSEDistributor):\n        while self.queue:\n            platform, content, attempt = self.queue.pop(0)\n            if attempt >= self.max_retries:\n                log.error(\"syndication_abandoned\", platform=platform, content_id=content.id)\n                continue\n\n            delay = self.base_delay * (2 ** attempt)\n            await asyncio.sleep(delay)\n\n            target = distributor.targets.get(platform)\n            if not target:\n                continue\n\n            try:\n                adapted = target.adapter.adapt(content)\n                url = await target.adapter.publish(adapted)\n                content.syndications[platform] = SyndicationStatus.PUBLISHED\n            except Exception:\n                await self.add(platform, content, attempt + 1)\n```\n\n### Circuit Breaker per Platform\n\n```python\nclass PlatformCircuitBreaker:\n    def __init__(self):\n        self.circuits: dict[str, CircuitBreaker] = {}\n\n    def get(self, platform: str) -> CircuitBreaker:\n        if platform not in self.circuits:\n            self.circuits[platform] = CircuitBreaker(\n                failure_threshold=3,\n                recovery_timeout=300,  # 5 minutes\n            )\n        return self.circuits[platform]\n\n    async def publish(self, platform: str, adapter: PlatformAdapter, content: dict) -> str:\n        circuit = self.get(platform)\n        return await circuit.call(adapter.publish, content)\n```\n\n## Backfeed Collection\n\n```python\nasync def collect_backfeed(syndication_urls: dict[str, str]) -> list[dict]:\n    backfeed = []\n    for platform, url in syndication_urls.items():\n        try:\n            adapter = get_adapter(platform)\n            metrics = await adapter.get_metrics(url)\n            backfeed.append({\n                \"platform\": platform,\n                \"url\": url,\n                \"likes\": metrics.get(\"likes\", 0),\n                \"reposts\": metrics.get(\"reposts\", 0),\n                \"comments\": metrics.get(\"comments\", []),\n            })\n        except Exception:\n            pass  # Backfeed is best-effort\n    return backfeed\n```\n\n## Syndication Manifest\n\n```yaml\n# syndication-manifest.yaml\ncontent:\n  - id: essay-2026-03-20-architecture\n    canonical_url: https:\u002F\u002Fexample.com\u002Fessays\u002Farchitecture\n    published_at: 2026-03-20T10:00:00Z\n    syndications:\n      bluesky:\n        status: published\n        url: https:\u002F\u002Fbsky.app\u002Fprofile\u002F...\u002Fpost\u002F...\n        published_at: 2026-03-20T10:01:00Z\n      devto:\n        status: published\n        url: https:\u002F\u002Fdev.to\u002Fauthor\u002Farticle\n        published_at: 2026-03-20T10:02:00Z\n      newsletter:\n        status: published\n        campaign_id: \"abc123\"\n        published_at: 2026-03-20T10:05:00Z\n    backfeed:\n      total_likes: 42\n      total_reposts: 8\n      total_comments: 3\n      last_collected: 2026-03-20T22:00:00Z\n```\n\n## Anti-Patterns\n\n- **Platform-first publishing** — Always publish on own site first; canonical URL is sacred\n- **No canonical URL** — Every syndicated copy must link back to the original\n- **Synchronous distribution** — Publish locally first, syndicate asynchronously\n- **No retry logic** — Platforms have outages; queue and retry failed syndications\n- **Identical content everywhere** — Adapt format and length per platform\n- **Ignoring backfeed** — Engagement data from platforms enriches the canonical record\n",{"name":5,"tags":49,"license":15,"triggers":55,"complexity":28,"complements":60,"description":7,"time_to_learn":64,"organ_affinity":65,"governance_phases":67},[50,51,52,53,54],"posse","syndication","indieweb","content-distribution","cross-platform",[56,57,58,59],"user-asks-about-posse","context:content-syndication","context:indieweb","context:cross-platform-publishing",[61,62,63,53],"resilience-patterns","social-media-api-integration","essay-publishing-pipeline","30min",[66],"organ-vii",[68],"build","main","4d2fb89cdfb75f3f6fd3c6c5ec9ad90ea129eb3c","ai-agent-skills\u002F21-external-registries\u002F18-organvm-skills\u002Fintegrations\u002Fposse-distribution-architecture",2,"https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai","https:\u002F\u002Fgithub.com\u002Fluokai0","a solo builder.","2026-05-06 04:29:04",{"source":8,"skillName":5,"commands":78,"prompt":88,"zipAvailable":89},[79,82,85],{"tool":80,"command":81},"npx","npx skills add luokai0\u002Fai-agent-skills-by-luo-kai --skill posse-distribution-architecture",{"tool":83,"command":84},"bunx","bunx skills add luokai0\u002Fai-agent-skills-by-luo-kai --skill posse-distribution-architecture",{"tool":86,"command":87},"pnpm","pnpm dlx skills add luokai0\u002Fai-agent-skills-by-luo-kai --skill posse-distribution-architecture","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F21-external-registries\u002F18-organvm-skills\u002Fintegrations\u002Fposse-distribution-architecture\u002FSKILL.md",true,[],[92,118,135,164,196,230],{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":44},"01M6F2SKTE208174C7S7JJCZC7","write-contracts","Generates secure Aptos Move V2 smart contracts with Object model, Digital Asset integration, security patterns, and storage type guidance. Includes comprehensive storage decision framework for optimal data structure selection. Triggers on: 'write contract', 'create NFT collection', 'build marketplace', 'implement minting', 'generate Move module', 'create token contract', 'build DAO', 'implement staking'. Ask storage questions when: 'store', 'track', 'registry', 'mapping', 'list', 'collection'.","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fwrite-contracts\u002FSKILL.md",[],[99,100,101,102,103,104,105,39,106,107,108,109,110,111,112,113,114,115,116,117],"write","contracts","write contracts","storage","secure","create","generate","model","decision","ask","smart-contracts","selection","objects","structure","nft","token","aptos","critical","move",{"skillNo":119,"name":120,"nameZh":6,"description":121,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":44},"01M6F2RFXJ6T9MKW0A7N7GM45B","web-search","通用网络搜索技能，支持多引擎搜索（百度、必应、DuckDuckGo），无需API密钥即可获取实时信息","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fweb-search-ex-skill\u002FSKILL.md",[],[125,126,127,128,129,130,131,132,133,134],"web","search","web search","搜索","baidu","bing","duckduckgo","百度","多引擎","internet",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":146,"publishedAt":44},"01M6F2K968G1FZEZFPW2E6B222","solo-build","Execute implementation plan tasks with TDD workflow, auto-commit, and phase gates. Use when user says \"build it\", \"start building\", \"execute plan\", \"implement tasks\", \"ship it\", or references a track ID. Do NOT use for planning (use \u002Fplan) or scaffolding (use \u002Fscaffold).","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fsolo-build\u002FSKILL.md",[141],{"categoryNo":142,"categoryName":143,"taxonomyType":144,"taxonomyTypeDesc":145},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[68,147,148,149,150,151,152,153,126,154,155,156,99,157,158,159,160,161,162,163],"solo","solo build","MCP","workflow","commit","tasks","code","Bash","plan","read","auto","references","context7","query","scaffolding","ship it","project",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":176,"publishedAt":44},"01M6F2GKN39SGHSPWYB3662YC8","react-email","Use when building HTML email templates with React components, adding a visual email editor to an application using the React Email visual editor, rendering emails to HTML, or sending emails with Resend. Covers welcome emails, password resets, notifications, order confirmations, newsletters, transactional emails, and the embeddable email editor component.","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Freact-email-skills\u002FSKILL.md",[170,173],{"categoryNo":171,"categoryName":172,"taxonomyType":144,"taxonomyTypeDesc":145},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":174,"categoryName":175,"taxonomyType":144,"taxonomyTypeDesc":145},"01JBSEEDCAT000000000000009","前端开发",[177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,29],"react","email","react email","github","editor","components","react components","component","welcome","https","notifications","password","node","use","html","resend","visual","emails","rendering",{"skillNo":197,"name":198,"nameZh":6,"description":199,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":200,"categories":201,"keywords":212,"publishedAt":44},"01M6F2FBVGVDFSG8SSFJGXA40C","APITester Agent-Driven API Testing","Test API endpoints and document responses. Define tests in plain English, run them, get formatted results. Agent-driven Postman alternative.","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fopenclaw-api-tester\u002FSKILL.md",[202,205,208,209],{"categoryNo":203,"categoryName":204,"taxonomyType":144,"taxonomyTypeDesc":145},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":206,"categoryName":207,"taxonomyType":144,"taxonomyTypeDesc":145},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":142,"categoryName":143,"taxonomyType":144,"taxonomyTypeDesc":145},{"categoryNo":210,"categoryName":211,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000030","开发工程师",[213,37,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229],"testing","api testing","driven","APITester Agent Driven API Testing","test","run","postman","results","plain english","tester","endpoints","document","get","define","tests","english","api-tester",{"skillNo":231,"name":232,"nameZh":6,"description":233,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":234,"categories":235,"keywords":236,"publishedAt":44},"01M6F273Y3NGAPVJZ608BC0G9G","hubspot-implementation-plan","Generate a phased implementation plan from a HubSpot audit report. Creates prioritized, sequenced cleanup processes with effort estimates, dependencies, and automation feasibility. Use after running \u002Fhubspot-audit.","https:\u002F\u002Fgithub.com\u002Fluokai0\u002Fai-agent-skills-by-luo-kai\u002Fblob\u002Fmain\u002Fai-agent-skills\u002F22-clawhub-skills\u002Fhubspot-implementation-plan\u002FSKILL.md",[],[155,237,238,239,43,240,241,105,242,243,244,245,246,190,247,248,29,249],"implementation","hubspot","hubspot implementation plan","feasibility","cleanup","planning","report","audit","audit report","phased implementation","dependencies","processes","hubspot audit"]