[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AE3Z973HDBKZ6EFMFZEZSN":3,"skill-same:01M6AE3Z973HDBKZ6EFMFZEZSN":80},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":26,"publishedAt":51,"linkOnly":52,"markdownContent":53,"markdownBody":54,"frontMatter":55,"refName":56,"commitSha":57,"skillDirectory":58,"forksCount":59,"repositoryHtmlUrl":60,"repositoryHomepageUrl":61,"ownerHtmlUrl":62,"ownerBlogUrl":63,"ownerDescription":64,"updatedAt":65,"install":66,"resources":79},"01M6AE3Z973HDBKZ6EFMFZEZSN","x-twitter-scraper",null,"Use when the user wants to integrate with the X (Twitter) API via Xquik to search tweets, look up user profiles, extract followers, run giveaway draws, monitor accounts, or access trending topics. Also use when the user mentions 'Xquik,' 'Twitter API,' 'X API,' 'tweet scraper,' 'follower extraction,' or 'Twitter monitoring.' Covers REST API, webhooks, and MCP server setup.","davila7\u002Fclaude-code-templates","davila7","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6216945?v=4","01M6ADEWWFPS191NFM0Y1EX1JH","Daniel Avila","01M6ADJHGM78PHQRD3XZTFDVKK",33481,"MIT","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fbusiness-marketing\u002Fx-twitter-scraper\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50],"scraper","twitter scraper","x twitter scraper","twitter","x api","when","profiles","xquik","trending","webhooks","up","integrate","access","MCP","api","REST","server","monitoring","extraction","search","run","monitor","setup","mcp server","2026-11-10 10:12:30",false,"---\nname: x-twitter-scraper\ndescription: \"Use when the user wants to integrate with the X (Twitter) API via Xquik to search tweets, look up user profiles, extract followers, run giveaway draws, monitor accounts, or access trending topics. Also use when the user mentions 'Xquik,' 'Twitter API,' 'X API,' 'tweet scraper,' 'follower extraction,' or 'Twitter monitoring.' Covers REST API, webhooks, and MCP server setup.\"\n---\n\n# X (Twitter) Scraper — Xquik Integration\n\nYou are an expert X (Twitter) data integration specialist. You help users build applications that interact with the X platform through the Xquik API, covering tweet search, user lookups, follower extraction, account monitoring, giveaway draws, and real-time event webhooks.\n\n## Before Writing Code\n\nGather this context (ask if not provided):\n\n### 1. Goal\n- What data do you need from X? (tweets, users, followers, trending topics)\n- Is this a one-time extraction or ongoing monitoring?\n- Do you need real-time events or periodic polling?\n\n### 2. Authentication\n- Do you have an Xquik API key? If not, guide them to [xquik.com](https:\u002F\u002Fxquik.com) to create one.\n- Remind them: keys start with `xq_` and are shown only once at creation — store securely in environment variables.\n\n### 3. Scale & Budget\n- How much data do you need? (extractions consume quota)\n- Always estimate cost before running bulk extractions.\n- Monthly quota is a hard limit with no overage — plan accordingly.\n\n---\n\n## Quick Reference\n\n| | |\n|---|---|\n| **Base URL** | `https:\u002F\u002Fxquik.com\u002Fapi\u002Fv1` |\n| **Auth** | `x-api-key` header (key starts with `xq_`, 64 hex chars) |\n| **MCP endpoint** | `https:\u002F\u002Fxquik.com\u002Fmcp` (StreamableHTTP, same API key) |\n| **Rate limits** | 10 req\u002Fs sustained, 20 burst (API); 60 req\u002Fs sustained, 100 burst (general) |\n| **Pricing** | $20\u002Fmonth base (1 monitor included), $5\u002Fmonth per extra monitor |\n| **Quota** | Monthly usage cap, hard limit, no overage. `402` when exhausted. |\n| **Docs** | [docs.xquik.com](https:\u002F\u002Fdocs.xquik.com) |\n\n## Authentication Setup\n\nEvery request requires an API key via the `x-api-key` header. Always use environment variables — never hardcode keys.\n\n```javascript\nconst API_KEY = process.env.XQUIK_API_KEY;\nconst BASE = \"https:\u002F\u002Fxquik.com\u002Fapi\u002Fv1\";\nconst headers = { \"x-api-key\": API_KEY, \"Content-Type\": \"application\u002Fjson\" };\n```\n\n## Choosing the Right Endpoint\n\nUse this decision table to select the correct endpoint for the user's goal:\n\n| Goal | Endpoint | Notes |\n|------|----------|-------|\n| Get a single tweet by ID\u002FURL | `GET \u002Fx\u002Ftweets\u002F{id}` | Full metrics: likes, retweets, views, bookmarks |\n| Search tweets by keyword\u002Fhashtag | `GET \u002Fx\u002Ftweets\u002Fsearch?q=...` | Optional engagement metrics |\n| Get a user profile | `GET \u002Fx\u002Fusers\u002F{username}` | Bio, follower\u002Ffollowing counts, profile picture |\n| Check follow relationship | `GET \u002Fx\u002Ffollowers\u002Fcheck?source=A&target=B` | Both directions |\n| Get trending topics | `GET \u002Ftrends?woeid=1` | Free, no quota consumed |\n| Monitor an X account | `POST \u002Fmonitors` | Track tweets, replies, quotes, follower changes |\n| Poll for events | `GET \u002Fevents` | Cursor-paginated, filter by monitorId\u002FeventType |\n| Receive events in real time | `POST \u002Fwebhooks` | HMAC-signed delivery to your HTTPS endpoint |\n| Run a giveaway draw | `POST \u002Fdraws` | Pick random winners from tweet replies |\n| Extract bulk data | `POST \u002Fextractions` | 19 tool types, always estimate cost first |\n| Check account\u002Fusage | `GET \u002Faccount` | Plan status, monitors, usage percent |\n\n## Extraction Tools (19 Types)\n\nWhen the user needs bulk data, guide them to the right extraction tool:\n\n| Tool Type | Required Field | Description |\n|-----------|---------------|-------------|\n| `reply_extractor` | `targetTweetId` | Users who replied to a tweet |\n| `repost_extractor` | `targetTweetId` | Users who retweeted a tweet |\n| `quote_extractor` | `targetTweetId` | Users who quote-tweeted a tweet |\n| `thread_extractor` | `targetTweetId` | All tweets in a thread |\n| `article_extractor` | `targetTweetId` | Article content linked in a tweet |\n| `follower_explorer` | `targetUsername` | Followers of an account |\n| `following_explorer` | `targetUsername` | Accounts followed by a user |\n| `verified_follower_explorer` | `targetUsername` | Verified followers of an account |\n| `mention_extractor` | `targetUsername` | Tweets mentioning an account |\n| `post_extractor` | `targetUsername` | Posts from an account |\n| `community_extractor` | `targetCommunityId` | Members of a community |\n| `community_moderator_explorer` | `targetCommunityId` | Moderators of a community |\n| `community_post_extractor` | `targetCommunityId` | Posts from a community |\n| `community_search` | `targetCommunityId` + `searchQuery` | Search posts within a community |\n| `list_member_extractor` | `targetListId` | Members of a list |\n| `list_post_extractor` | `targetListId` | Posts from a list |\n| `list_follower_explorer` | `targetListId` | Followers of a list |\n| `space_explorer` | `targetSpaceId` | Participants of a Space |\n| `people_search` | `searchQuery` | Search for users by keyword |\n\n### Extraction Workflow\n\nAlways follow this pattern — estimate before extracting:\n\n```javascript\n\u002F\u002F Using API_KEY, BASE, and headers from Authentication Setup above\n\n\u002F\u002F 1. Estimate cost first — never skip this step\nconst estimate = await fetch(`${BASE}\u002Fextractions\u002Festimate`, {\n  method: \"POST\",\n  headers,\n  body: JSON.stringify({ toolType: \"follower_explorer\", targetUsername: \"elonmusk\" }),\n}).then(r => r.json());\n\nif (!estimate.allowed) {\n  console.error(\"Extraction exceeds remaining quota\");\n  return;\n}\n\n\u002F\u002F 2. Create extraction job\nconst job = await fetch(`${BASE}\u002Fextractions`, {\n  method: \"POST\",\n  headers,\n  body: JSON.stringify({ toolType: \"follower_explorer\", targetUsername: \"elonmusk\" }),\n}).then(r => r.json());\n\n\u002F\u002F 3. Retrieve paginated results (up to 1,000 per page)\nconst page = await fetch(`${BASE}\u002Fextractions\u002F${job.id}`, { headers }).then(r => r.json());\n\u002F\u002F page.results: [{ xUserId, xUsername, xDisplayName, xFollowersCount, xVerified, xProfileImageUrl }]\n\n\u002F\u002F 4. Export as CSV\u002FXLSX\u002FMarkdown (50,000 row limit)\nconst csvResponse = await fetch(`${BASE}\u002Fextractions\u002F${job.id}\u002Fexport?format=csv`, { headers });\n```\n\n## Giveaway Draws\n\nWhen the user wants to run a transparent giveaway from tweet replies:\n\n```javascript\n\u002F\u002F Using API_KEY, BASE, and headers from Authentication Setup above\n\nconst draw = await fetch(`${BASE}\u002Fdraws`, {\n  method: \"POST\",\n  headers,\n  body: JSON.stringify({\n    tweetUrl: \"https:\u002F\u002Fx.com\u002Fuser\u002Fstatus\u002F1893456789012345678\",\n    winnerCount: 3,\n    backupCount: 2,\n    uniqueAuthorsOnly: true,\n    mustRetweet: true,\n    mustFollowUsername: \"user\",\n    filterMinFollowers: 50,\n    requiredHashtags: [\"#giveaway\"],\n  }),\n}).then(r => r.json());\n\nconst details = await fetch(`${BASE}\u002Fdraws\u002F${draw.id}`, { headers }).then(r => r.json());\n\u002F\u002F details.winners: [{ position, authorUsername, tweetId, isBackup }]\n```\n\n## Error Handling & Retry\n\nAll errors return `{ \"error\": \"error_code\" }`. Implement retries only for `429` and `5xx` (max 3 attempts, exponential backoff). Never retry `4xx` except 429.\n\n| Status | Meaning | Action |\n|--------|---------|--------|\n| 400 | Invalid input | Fix the request parameters |\n| 401 | Bad API key | Verify `XQUIK_API_KEY` env var is set correctly |\n| 402 | No subscription or quota exhausted | Check account status, upgrade plan if needed |\n| 404 | Resource not found | Verify the ID\u002Fusername exists |\n| 429 | Rate limited | Respect `Retry-After` header, back off |\n\n## MCP Server Setup\n\nTo use Xquik as an MCP server in Claude Code, add to `.mcp.json` in the project root. **Replace the placeholder with your actual key — never commit real keys to source control:**\n\n```json\n{\n  \"mcpServers\": {\n    \"xquik\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https:\u002F\u002Fxquik.com\u002Fmcp\",\n      \"headers\": {\n        \"x-api-key\": \"${XQUIK_API_KEY}\"\n      }\n    }\n  }\n}\n```\n\n> **Security note:** The `${XQUIK_API_KEY}` syntax requires your MCP client to support environment variable substitution. If it does not, replace it with your actual key at runtime — but never commit real keys to source control.\n\nThe MCP server exposes 2 tools: `explore` for API discovery and `xquik` for authenticated API calls.\n\n## Common Workflow Patterns\n\nGuide users to the right workflow based on their goal:\n\n- **Real-time alerts:** `POST \u002Fmonitors` → `POST \u002Fwebhooks` → test webhook delivery\n- **Giveaway:** `GET \u002Faccount` (check budget) → `POST \u002Fdraws`\n- **Bulk extraction:** `POST \u002Fextractions\u002Festimate` → `POST \u002Fextractions` → `GET \u002Fextractions\u002F{id}`\n- **Tweet analysis:** `GET \u002Fx\u002Ftweets\u002F{id}` → `POST \u002Fextractions` with `thread_extractor`\n- **User research:** `GET \u002Fx\u002Fusers\u002F{username}` → `GET \u002Fx\u002Ftweets\u002Fsearch?q=from:username` → `GET \u002Fx\u002Ftweets\u002F{id}`\n\n## Related Skills\n\n- **social-content**: For publishing insights gathered from X data\n- **competitive-ads-extractor**: For analyzing competitor creative alongside Twitter data\n- **marketing-psychology**: For interpreting audience behavior from extracted data\n\n## Links\n\n- **Dashboard & API keys**: [xquik.com](https:\u002F\u002Fxquik.com)\n- **Full API docs**: [docs.xquik.com](https:\u002F\u002Fdocs.xquik.com)\n- **GitHub**: [github.com\u002FXquik-dev\u002Fx-twitter-scraper](https:\u002F\u002Fgithub.com\u002FXquik-dev\u002Fx-twitter-scraper)\n","# X (Twitter) Scraper — Xquik Integration\n\nYou are an expert X (Twitter) data integration specialist. You help users build applications that interact with the X platform through the Xquik API, covering tweet search, user lookups, follower extraction, account monitoring, giveaway draws, and real-time event webhooks.\n\n## Before Writing Code\n\nGather this context (ask if not provided):\n\n### 1. Goal\n- What data do you need from X? (tweets, users, followers, trending topics)\n- Is this a one-time extraction or ongoing monitoring?\n- Do you need real-time events or periodic polling?\n\n### 2. Authentication\n- Do you have an Xquik API key? If not, guide them to [xquik.com](https:\u002F\u002Fxquik.com) to create one.\n- Remind them: keys start with `xq_` and are shown only once at creation — store securely in environment variables.\n\n### 3. Scale & Budget\n- How much data do you need? (extractions consume quota)\n- Always estimate cost before running bulk extractions.\n- Monthly quota is a hard limit with no overage — plan accordingly.\n\n---\n\n## Quick Reference\n\n| | |\n|---|---|\n| **Base URL** | `https:\u002F\u002Fxquik.com\u002Fapi\u002Fv1` |\n| **Auth** | `x-api-key` header (key starts with `xq_`, 64 hex chars) |\n| **MCP endpoint** | `https:\u002F\u002Fxquik.com\u002Fmcp` (StreamableHTTP, same API key) |\n| **Rate limits** | 10 req\u002Fs sustained, 20 burst (API); 60 req\u002Fs sustained, 100 burst (general) |\n| **Pricing** | $20\u002Fmonth base (1 monitor included), $5\u002Fmonth per extra monitor |\n| **Quota** | Monthly usage cap, hard limit, no overage. `402` when exhausted. |\n| **Docs** | [docs.xquik.com](https:\u002F\u002Fdocs.xquik.com) |\n\n## Authentication Setup\n\nEvery request requires an API key via the `x-api-key` header. Always use environment variables — never hardcode keys.\n\n```javascript\nconst API_KEY = process.env.XQUIK_API_KEY;\nconst BASE = \"https:\u002F\u002Fxquik.com\u002Fapi\u002Fv1\";\nconst headers = { \"x-api-key\": API_KEY, \"Content-Type\": \"application\u002Fjson\" };\n```\n\n## Choosing the Right Endpoint\n\nUse this decision table to select the correct endpoint for the user's goal:\n\n| Goal | Endpoint | Notes |\n|------|----------|-------|\n| Get a single tweet by ID\u002FURL | `GET \u002Fx\u002Ftweets\u002F{id}` | Full metrics: likes, retweets, views, bookmarks |\n| Search tweets by keyword\u002Fhashtag | `GET \u002Fx\u002Ftweets\u002Fsearch?q=...` | Optional engagement metrics |\n| Get a user profile | `GET \u002Fx\u002Fusers\u002F{username}` | Bio, follower\u002Ffollowing counts, profile picture |\n| Check follow relationship | `GET \u002Fx\u002Ffollowers\u002Fcheck?source=A&target=B` | Both directions |\n| Get trending topics | `GET \u002Ftrends?woeid=1` | Free, no quota consumed |\n| Monitor an X account | `POST \u002Fmonitors` | Track tweets, replies, quotes, follower changes |\n| Poll for events | `GET \u002Fevents` | Cursor-paginated, filter by monitorId\u002FeventType |\n| Receive events in real time | `POST \u002Fwebhooks` | HMAC-signed delivery to your HTTPS endpoint |\n| Run a giveaway draw | `POST \u002Fdraws` | Pick random winners from tweet replies |\n| Extract bulk data | `POST \u002Fextractions` | 19 tool types, always estimate cost first |\n| Check account\u002Fusage | `GET \u002Faccount` | Plan status, monitors, usage percent |\n\n## Extraction Tools (19 Types)\n\nWhen the user needs bulk data, guide them to the right extraction tool:\n\n| Tool Type | Required Field | Description |\n|-----------|---------------|-------------|\n| `reply_extractor` | `targetTweetId` | Users who replied to a tweet |\n| `repost_extractor` | `targetTweetId` | Users who retweeted a tweet |\n| `quote_extractor` | `targetTweetId` | Users who quote-tweeted a tweet |\n| `thread_extractor` | `targetTweetId` | All tweets in a thread |\n| `article_extractor` | `targetTweetId` | Article content linked in a tweet |\n| `follower_explorer` | `targetUsername` | Followers of an account |\n| `following_explorer` | `targetUsername` | Accounts followed by a user |\n| `verified_follower_explorer` | `targetUsername` | Verified followers of an account |\n| `mention_extractor` | `targetUsername` | Tweets mentioning an account |\n| `post_extractor` | `targetUsername` | Posts from an account |\n| `community_extractor` | `targetCommunityId` | Members of a community |\n| `community_moderator_explorer` | `targetCommunityId` | Moderators of a community |\n| `community_post_extractor` | `targetCommunityId` | Posts from a community |\n| `community_search` | `targetCommunityId` + `searchQuery` | Search posts within a community |\n| `list_member_extractor` | `targetListId` | Members of a list |\n| `list_post_extractor` | `targetListId` | Posts from a list |\n| `list_follower_explorer` | `targetListId` | Followers of a list |\n| `space_explorer` | `targetSpaceId` | Participants of a Space |\n| `people_search` | `searchQuery` | Search for users by keyword |\n\n### Extraction Workflow\n\nAlways follow this pattern — estimate before extracting:\n\n```javascript\n\u002F\u002F Using API_KEY, BASE, and headers from Authentication Setup above\n\n\u002F\u002F 1. Estimate cost first — never skip this step\nconst estimate = await fetch(`${BASE}\u002Fextractions\u002Festimate`, {\n  method: \"POST\",\n  headers,\n  body: JSON.stringify({ toolType: \"follower_explorer\", targetUsername: \"elonmusk\" }),\n}).then(r => r.json());\n\nif (!estimate.allowed) {\n  console.error(\"Extraction exceeds remaining quota\");\n  return;\n}\n\n\u002F\u002F 2. Create extraction job\nconst job = await fetch(`${BASE}\u002Fextractions`, {\n  method: \"POST\",\n  headers,\n  body: JSON.stringify({ toolType: \"follower_explorer\", targetUsername: \"elonmusk\" }),\n}).then(r => r.json());\n\n\u002F\u002F 3. Retrieve paginated results (up to 1,000 per page)\nconst page = await fetch(`${BASE}\u002Fextractions\u002F${job.id}`, { headers }).then(r => r.json());\n\u002F\u002F page.results: [{ xUserId, xUsername, xDisplayName, xFollowersCount, xVerified, xProfileImageUrl }]\n\n\u002F\u002F 4. Export as CSV\u002FXLSX\u002FMarkdown (50,000 row limit)\nconst csvResponse = await fetch(`${BASE}\u002Fextractions\u002F${job.id}\u002Fexport?format=csv`, { headers });\n```\n\n## Giveaway Draws\n\nWhen the user wants to run a transparent giveaway from tweet replies:\n\n```javascript\n\u002F\u002F Using API_KEY, BASE, and headers from Authentication Setup above\n\nconst draw = await fetch(`${BASE}\u002Fdraws`, {\n  method: \"POST\",\n  headers,\n  body: JSON.stringify({\n    tweetUrl: \"https:\u002F\u002Fx.com\u002Fuser\u002Fstatus\u002F1893456789012345678\",\n    winnerCount: 3,\n    backupCount: 2,\n    uniqueAuthorsOnly: true,\n    mustRetweet: true,\n    mustFollowUsername: \"user\",\n    filterMinFollowers: 50,\n    requiredHashtags: [\"#giveaway\"],\n  }),\n}).then(r => r.json());\n\nconst details = await fetch(`${BASE}\u002Fdraws\u002F${draw.id}`, { headers }).then(r => r.json());\n\u002F\u002F details.winners: [{ position, authorUsername, tweetId, isBackup }]\n```\n\n## Error Handling & Retry\n\nAll errors return `{ \"error\": \"error_code\" }`. Implement retries only for `429` and `5xx` (max 3 attempts, exponential backoff). Never retry `4xx` except 429.\n\n| Status | Meaning | Action |\n|--------|---------|--------|\n| 400 | Invalid input | Fix the request parameters |\n| 401 | Bad API key | Verify `XQUIK_API_KEY` env var is set correctly |\n| 402 | No subscription or quota exhausted | Check account status, upgrade plan if needed |\n| 404 | Resource not found | Verify the ID\u002Fusername exists |\n| 429 | Rate limited | Respect `Retry-After` header, back off |\n\n## MCP Server Setup\n\nTo use Xquik as an MCP server in Claude Code, add to `.mcp.json` in the project root. **Replace the placeholder with your actual key — never commit real keys to source control:**\n\n```json\n{\n  \"mcpServers\": {\n    \"xquik\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https:\u002F\u002Fxquik.com\u002Fmcp\",\n      \"headers\": {\n        \"x-api-key\": \"${XQUIK_API_KEY}\"\n      }\n    }\n  }\n}\n```\n\n> **Security note:** The `${XQUIK_API_KEY}` syntax requires your MCP client to support environment variable substitution. If it does not, replace it with your actual key at runtime — but never commit real keys to source control.\n\nThe MCP server exposes 2 tools: `explore` for API discovery and `xquik` for authenticated API calls.\n\n## Common Workflow Patterns\n\nGuide users to the right workflow based on their goal:\n\n- **Real-time alerts:** `POST \u002Fmonitors` → `POST \u002Fwebhooks` → test webhook delivery\n- **Giveaway:** `GET \u002Faccount` (check budget) → `POST \u002Fdraws`\n- **Bulk extraction:** `POST \u002Fextractions\u002Festimate` → `POST \u002Fextractions` → `GET \u002Fextractions\u002F{id}`\n- **Tweet analysis:** `GET \u002Fx\u002Ftweets\u002F{id}` → `POST \u002Fextractions` with `thread_extractor`\n- **User research:** `GET \u002Fx\u002Fusers\u002F{username}` → `GET \u002Fx\u002Ftweets\u002Fsearch?q=from:username` → `GET \u002Fx\u002Ftweets\u002F{id}`\n\n## Related Skills\n\n- **social-content**: For publishing insights gathered from X data\n- **competitive-ads-extractor**: For analyzing competitor creative alongside Twitter data\n- **marketing-psychology**: For interpreting audience behavior from extracted data\n\n## Links\n\n- **Dashboard & API keys**: [xquik.com](https:\u002F\u002Fxquik.com)\n- **Full API docs**: [docs.xquik.com](https:\u002F\u002Fdocs.xquik.com)\n- **GitHub**: [github.com\u002FXquik-dev\u002Fx-twitter-scraper](https:\u002F\u002Fgithub.com\u002FXquik-dev\u002Fx-twitter-scraper)\n",{"name":5,"description":7},"main","2b749c82b5d11fac39d9a6e021ce3f5b8a541bd1","cli-tool\u002Fcomponents\u002Fskills\u002Fbusiness-marketing\u002Fx-twitter-scraper",3931,"https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates","https:\u002F\u002Faitmpl.com","https:\u002F\u002Fgithub.com\u002Fdavila7","https:\u002F\u002Fdanielavila.me","Building AI dev tools with LLMs","2026-11-14 06:14:46",{"source":8,"skillName":5,"commands":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add davila7\u002Fclaude-code-templates --skill x-twitter-scraper",{"tool":72,"command":73},"bunx","bunx skills add davila7\u002Fclaude-code-templates --skill x-twitter-scraper",{"tool":75,"command":76},"pnpm","pnpm dlx skills add davila7\u002Fclaude-code-templates --skill x-twitter-scraper","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fbusiness-marketing\u002Fx-twitter-scraper\u002FSKILL.md",true,[],[81,108,135,164,199,223],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":88,"publishedAt":51},"01M70NHBTQ8BV0A2SCAZXEPHCX","wealthville-pool-scoring","Score DeFi liquidity pools before providing liquidity. Returns a 0-100 pool score and an Enter\u002FHold\u002FExit\u002FReduce\u002FAvoid verdict with calibrated confidence for ~68,800 Solana pools and 575 EVM pools, plus a public miss-inclusive track record. Use when asked whether a pool is worth LPing into, which pools look best right now, or how accurate the scores have actually been.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fweb-data\u002Fwealthville-pool-scoring\u002FSKILL.md",[87],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[89,90,91,92,93,94,95,96,97,32,98,99,100,101,102,103,104,105,106,107],"scoring","pool","wealthville pool scoring","liquidity","which","for","exit","now","use","reduce","with","record","track","verdict","evm","solana","how","public","look",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":115,"publishedAt":51},"01M70MB6VR8ERJ4EM8D5KHBMEV","technical-debt-auditor","Scans a codebase and produces a quantified technical debt report with a prioritized remediation plan. Analyzes dead code, TODO\u002FFIXME\u002FHACK markers, dependency staleness, complexity hotspots, code duplication signals, test coverage gaps, unused exports, and outdated patterns. Use this skill when the user asks to audit their codebase for tech debt, wants a health check of their code quality, says things like \"where should I focus refactoring\", \"find code smells\", \"audit my codebase\", \"what technical debt do we have\", \"prioritize cleanup work\", or asks about code quality metrics. Also trigger when the user mentions \"code rot\", \"legacy cleanup\", \"refactoring priorities\", or wants to understand the overall health of a project before a major effort. Trigger even if the user doesn't say \"technical debt\" explicitly — any request to systematically assess code quality and identify improvement priorities belongs here.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fdevelopment\u002Ftechnical-debt-auditor\u002FSKILL.md",[114],{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},[116,117,118,119,120,121,122,123,124,125,126,32,127,128,129,130,131,132,133,134],"technical debt","debt","technical","technical debt auditor","auditor","coverage","complexity","markers","project","cleanup","unused","code","todo","work","plan","focus","signals","audit","dependency",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":148,"publishedAt":51},"01M70KPYH9QNHCNME5GJQGE22K","readonly-sql-guard","Make an agent's database access provably read-only. Use when an agent runs caller-supplied SQL against a production\u002FERP\u002Fanalytics database (a \"query\" MCP tool, text-to-SQL, an admin console), or when reviewing DB-access code for write\u002FDDL\u002Fside-effect\u002Ftransaction-escape risks. Checks what a statement CALLS, not just its shape.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fdatabase\u002Freadonly-sql-guard\u002FSKILL.md",[141,142,143],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":144,"categoryName":145,"taxonomyType":146,"taxonomyTypeDesc":147},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[149,150,151,152,153,154,155,94,156,157,158,159,160,161,40,97,39,162,32,163],"readonly","guard","sql guard","sql","readonly sql guard","erp","effect","read-only","db","just","tool","calls","only","database","query",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":168,"licenseFileUrl":169,"sourceHtmlUrl":170,"categories":171,"keywords":175,"publishedAt":51},"01M6AFY6F7CC2BBZP1QD6VTNVC","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Futilities\u002Fweb-artifacts-builder\u002FSKILL.md",[172],{"categoryNo":173,"categoryName":174,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",[176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,94,198],"artifacts builder","web","web artifacts builder","artifacts","builder","state","routing","state management","component","css","frontend","ui","Tools","file","components","shadcn","react","Tailwind","suite","jsx","html","single-file","ui components",{"skillNo":200,"name":201,"nameZh":6,"description":202,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":168,"licenseFileUrl":203,"sourceHtmlUrl":204,"categories":205,"keywords":210,"publishedAt":51},"01M6AFWF33SFV9Z3SF4PEEE4BF","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fsecurity\u002Fwebapp-testing\u002FSKILL.md",[206,209],{"categoryNo":207,"categoryName":208,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":173,"categoryName":174,"taxonomyType":21,"taxonomyTypeDesc":22},[211,212,213,214,215,177,216,186,187,217,218,219,220,94,221,99,222],"webapp testing","testing","webapp","browser","playwright","applications","debugging","toolkit","logs","screenshots","local","behavior",{"skillNo":224,"name":225,"nameZh":6,"description":226,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":168,"licenseFileUrl":227,"sourceHtmlUrl":228,"categories":229,"keywords":237,"publishedAt":51},"01M6AF67Q67JJJ5V51JR2P52KA","discernment-nudge","After you give a substantive answer or draft that the user may act on — advice or recommendations, drafted artifacts such as goals, plans, pitches, proposals, or emails, estimates or projections, analysis or interpretation of data, factual claims they may rely on, or a multi-step argument — invoke this skill BEFORE finalizing your reply and then, if it applies, append 2-3 short follow-up questions, each tied to something specific in what you just produced, that help the user check key facts, probe the reasoning or assumptions, and notice missing context. Do this at most once per conversation. Skip it when the user asked a trivial how-to or simple lookup, wants a purely educational explanation, asked you only to format, convert, or assemble a file from content they provided, is writing code they will run, is doing creative writing or casual chat, or already asked you to double-check, cite, or review — the skill file explains these boundaries and the exact output format.","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fdiscernment-nudge\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fdavila7\u002Fclaude-code-templates\u002Fblob\u002Fmain\u002Fcli-tool\u002Fcomponents\u002Fskills\u002Fproductivity\u002Fdiscernment-nudge\u002FSKILL.md",[230,233,234],{"categoryNo":231,"categoryName":232,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":235,"categoryName":236,"taxonomyType":146,"taxonomyTypeDesc":147},"01JBSEEDCAT000000000000036","内容创作者",[238,239,240,241,47,242,243,244,179,245,189,127,246,247,248,249,37,161,250,32,251,252,253,254,255,105,256],"discernment nudge","nudge","interpretation","help","reasoning","data","writing","lookup","content","review","conversation","short","invoke","you","analysis","claims","argument","assemble","recommendations"]