[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6NWM3QKF24MG6PZX9KBHT6G":3,"skill-same:01M6NWM3QKF24MG6PZX9KBHT6G":69},{"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":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":6,"ownerHtmlUrl":53,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":54,"install":55,"resources":68},"01M6NWM3QKF24MG6PZX9KBHT6G","slack-automation",null,"Automate Slack workspace operations including messaging, search, channel management, and reaction workflows through Composio's Slack toolkit.","mattonweb\u002Fai-assistant-foundry","mattonweb","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2309734?v=4","01M6NQYCY846TKYN2ZCRS71WQ7","Matt Johnson","01M6NQYD2NPAQEFVD8TW9W0SVX",1,"MIT","https:\u002F\u002Fgithub.com\u002Fmattonweb\u002Fai-assistant-foundry\u002Fblob\u002Fmain\u002Fintegrate-slack\u002Fsickn33\u002Fslack-automation\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000005","邮件与沟通","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],"slack","automation","slack automation","workflows","toolkit","search","messaging","automate","workspace","management","operations","channel","community","composio","critical","2026-11-10 10:12:30",false,"---\nname: slack-automation\ndescription: \"Automate Slack workspace operations including messaging, search, channel management, and reaction workflows through Composio's Slack toolkit.\"\nrisk: critical\nsource: community\ndate_added: \"2026-02-27\"\n---\n\n# Slack Automation via Rube MCP\n\nAutomate Slack workspace operations including messaging, search, channel management, and reaction workflows through Composio's Slack toolkit.\n\n## Prerequisites\n\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active Slack connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `slack`\n- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas\n\n## Setup\n\n**Get Rube MCP**: Add `https:\u002F\u002Frube.app\u002Fmcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `slack`\n3. If connection is not ACTIVE, follow the returned auth link to complete Slack OAuth\n4. Confirm connection status shows ACTIVE before running any workflows\n\n## Core Workflows\n\n### 1. Send Messages to Channels\n\n**When to use**: User wants to post a message to a Slack channel or DM\n\n**Tool sequence**:\n1. `SLACK_FIND_CHANNELS` - Resolve channel name to channel ID [Prerequisite]\n2. `SLACK_LIST_ALL_CHANNELS` - Fallback if FIND_CHANNELS returns empty\u002Fambiguous results [Fallback]\n3. `SLACK_FIND_USERS` - Resolve user for DMs or @mentions [Optional]\n4. `SLACK_OPEN_DM` - Open\u002Freuse a DM channel if messaging a user directly [Optional]\n5. `SLACK_SEND_MESSAGE` - Post the message with resolved channel ID [Required]\n6. `SLACK_UPDATES_A_SLACK_MESSAGE` - Edit the posted message if corrections needed [Optional]\n\n**Key parameters**:\n- `channel`: Channel ID or name (without '#' prefix)\n- `markdown_text`: Preferred field for formatted messages (supports headers, bold, italic, code blocks)\n- `text`: Raw text fallback (deprecated in favor of markdown_text)\n- `thread_ts`: Timestamp of parent message to reply in a thread\n- `blocks`: Block Kit layout blocks (deprecated, use markdown_text)\n\n**Pitfalls**:\n- `SLACK_FIND_CHANNELS` requires `query` param; missing it errors with \"Invalid request data provided\"\n- `SLACK_SEND_MESSAGE` requires valid channel plus one of markdown_text\u002Ftext\u002Fblocks\u002Fattachments\n- Invalid block payloads return error=invalid_blocks (max 50 blocks)\n- Replies become top-level posts if `thread_ts` is omitted\n- Persist `response.data.channel` and `response.data.message.ts` from SEND_MESSAGE for edit\u002Fthread operations\n\n### 2. Search Messages and Conversations\n\n**When to use**: User wants to find specific messages across the workspace\n\n**Tool sequence**:\n1. `SLACK_FIND_CHANNELS` - Resolve channel for scoped search with `in:#channel` [Optional]\n2. `SLACK_FIND_USERS` - Resolve user for author filter with `from:@user` [Optional]\n3. `SLACK_SEARCH_MESSAGES` - Run keyword search across accessible conversations [Required]\n4. `SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION` - Expand threads for relevant hits [Required]\n\n**Key parameters**:\n- `query`: Search string supporting modifiers (`in:#channel`, `from:@user`, `before:YYYY-MM-DD`, `after:YYYY-MM-DD`, `has:link`, `has:file`)\n- `count`: Results per page (max 100), or total with auto_paginate=true\n- `sort`: 'score' (relevance) or 'timestamp' (chronological)\n- `sort_dir`: 'asc' or 'desc'\n\n**Pitfalls**:\n- Validation fails if `query` is missing\u002Fempty\n- `ok=true` can still mean no hits (`response.data.messages.total=0`)\n- Matches are under `response.data.messages.matches` (sometimes also `response.data_preview.messages.matches`)\n- `match.text` may be empty\u002Ftruncated; key info can appear in `matches[].attachments[]`\n- Thread expansion via FETCH_MESSAGE_THREAD can truncate when `response.data.has_more=true`; paginate via `response_metadata.next_cursor`\n\n### 3. Manage Channels and Users\n\n**When to use**: User wants to list channels, users, or workspace info\n\n**Tool sequence**:\n1. `SLACK_FETCH_TEAM_INFO` - Validate connectivity and get workspace identity [Required]\n2. `SLACK_LIST_ALL_CHANNELS` - Enumerate public channels [Required]\n3. `SLACK_LIST_CONVERSATIONS` - Include private channels and DMs [Optional]\n4. `SLACK_LIST_ALL_USERS` - List workspace members [Required]\n5. `SLACK_RETRIEVE_CONVERSATION_INFORMATION` - Get detailed channel metadata [Optional]\n6. `SLACK_LIST_USER_GROUPS_FOR_TEAM_WITH_OPTIONS` - List user groups [Optional]\n\n**Key parameters**:\n- `cursor`: Pagination cursor from `response_metadata.next_cursor`\n- `limit`: Results per page (default varies; set explicitly for large workspaces)\n- `types`: Channel types filter ('public_channel', 'private_channel', 'im', 'mpim')\n\n**Pitfalls**:\n- Workspace metadata is nested under `response.data.team`, not top-level\n- `SLACK_LIST_ALL_CHANNELS` returns public channels only; use `SLACK_LIST_CONVERSATIONS` for private\u002FIM coverage\n- `SLACK_LIST_ALL_USERS` can hit HTTP 429 rate limits; honor Retry-After header\n- Always paginate via `response_metadata.next_cursor` until empty; de-duplicate by `id`\n\n### 4. React to and Thread Messages\n\n**When to use**: User wants to add reactions or manage threaded conversations\n\n**Tool sequence**:\n1. `SLACK_SEARCH_MESSAGES` or `SLACK_FETCH_CONVERSATION_HISTORY` - Find the target message [Prerequisite]\n2. `SLACK_ADD_REACTION_TO_AN_ITEM` - Add an emoji reaction [Required]\n3. `SLACK_FETCH_ITEM_REACTIONS` - List reactions on a message [Optional]\n4. `SLACK_REMOVE_REACTION_FROM_ITEM` - Remove a reaction [Optional]\n5. `SLACK_SEND_MESSAGE` - Reply in thread using `thread_ts` [Optional]\n6. `SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION` - Read full thread [Optional]\n\n**Key parameters**:\n- `channel`: Channel ID where the message lives\n- `timestamp` \u002F `ts`: Message timestamp (unique identifier like '1234567890.123456')\n- `name`: Emoji name without colons (e.g., 'thumbsup', 'wave::skin-tone-3')\n- `thread_ts`: Parent message timestamp for threaded replies\n\n**Pitfalls**:\n- Reactions require exact channel ID + message timestamp pair\n- Emoji names use Slack's naming convention without colons\n- `SLACK_FETCH_CONVERSATION_HISTORY` only returns main channel timeline, NOT threaded replies\n- Use `SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION` with parent's `thread_ts` to get thread replies\n\n### 5. Schedule Messages\n\n**When to use**: User wants to schedule a message for future delivery\n\n**Tool sequence**:\n1. `SLACK_FIND_CHANNELS` - Resolve channel ID [Prerequisite]\n2. `SLACK_SCHEDULE_MESSAGE` - Schedule the message with `post_at` timestamp [Required]\n\n**Key parameters**:\n- `channel`: Resolved channel ID\n- `post_at`: Unix timestamp for delivery (up to 120 days in advance)\n- `text` \u002F `blocks`: Message content\n\n**Pitfalls**:\n- Scheduling is limited to 120 days in advance\n- `post_at` must be a Unix timestamp, not ISO 8601\n\n## Common Patterns\n\n### ID Resolution\nAlways resolve display names to IDs before operations:\n- **Channel name -> Channel ID**: `SLACK_FIND_CHANNELS` with `query` param\n- **User name -> User ID**: `SLACK_FIND_USERS` with `search_query` or `email`\n- **DM channel**: `SLACK_OPEN_DM` with resolved user IDs\n\n### Pagination\nMost list endpoints use cursor-based pagination:\n- Follow `response_metadata.next_cursor` until empty\n- Set explicit `limit` values (e.g., 100-200) for reliable paging\n- De-duplicate results by `id` across pages\n\n### Message Formatting\n- Prefer `markdown_text` over `text` or `blocks` for formatted messages\n- Use `\u003C@USER_ID>` format to mention users (not @username)\n- Use `\\n` for line breaks in markdown_text\n\n## Known Pitfalls\n\n- **Channel resolution**: `SLACK_FIND_CHANNELS` can return empty results if channel is private and bot hasn't been invited\n- **Rate limits**: `SLACK_LIST_ALL_USERS` and other list endpoints can hit HTTP 429; honor Retry-After header\n- **Nested responses**: Results may be nested under `response.data.results[0].response.data` in wrapped executions\n- **Thread vs channel**: `SLACK_FETCH_CONVERSATION_HISTORY` returns main timeline only; use `SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION` for thread replies\n- **Message editing**: Requires both `channel` and original message `ts`; persist these from SEND_MESSAGE response\n- **Search delays**: Recently posted messages may not appear in search results immediately\n- **Scope limitations**: Missing OAuth scopes can cause 403 errors; check with `SLACK_GET_APP_PERMISSION_SCOPES`\n\n## Quick Reference\n\n| Task | Tool Slug | Key Params |\n|------|-----------|------------|\n| Find channels | `SLACK_FIND_CHANNELS` | `query` |\n| List all channels | `SLACK_LIST_ALL_CHANNELS` | `limit`, `cursor`, `types` |\n| Send message | `SLACK_SEND_MESSAGE` | `channel`, `markdown_text` |\n| Edit message | `SLACK_UPDATES_A_SLACK_MESSAGE` | `channel`, `ts`, `markdown_text` |\n| Search messages | `SLACK_SEARCH_MESSAGES` | `query`, `count`, `sort` |\n| Get thread | `SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION` | `channel`, `ts` |\n| Add reaction | `SLACK_ADD_REACTION_TO_AN_ITEM` | `channel`, `name`, `timestamp` |\n| Find users | `SLACK_FIND_USERS` | `search_query` or `email` |\n| List users | `SLACK_LIST_ALL_USERS` | `limit`, `cursor` |\n| Open DM | `SLACK_OPEN_DM` | user IDs |\n| Schedule message | `SLACK_SCHEDULE_MESSAGE` | `channel`, `post_at`, `text` |\n| Get channel info | `SLACK_RETRIEVE_CONVERSATION_INFORMATION` | channel ID |\n| Channel history | `SLACK_FETCH_CONVERSATION_HISTORY` | `channel`, `oldest`, `latest` |\n| Workspace info | `SLACK_FETCH_TEAM_INFO` | (none) |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n","# Slack Automation via Rube MCP\n\nAutomate Slack workspace operations including messaging, search, channel management, and reaction workflows through Composio's Slack toolkit.\n\n## Prerequisites\n\n- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)\n- Active Slack connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `slack`\n- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas\n\n## Setup\n\n**Get Rube MCP**: Add `https:\u002F\u002Frube.app\u002Fmcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.\n\n1. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds\n2. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `slack`\n3. If connection is not ACTIVE, follow the returned auth link to complete Slack OAuth\n4. Confirm connection status shows ACTIVE before running any workflows\n\n## Core Workflows\n\n### 1. Send Messages to Channels\n\n**When to use**: User wants to post a message to a Slack channel or DM\n\n**Tool sequence**:\n1. `SLACK_FIND_CHANNELS` - Resolve channel name to channel ID [Prerequisite]\n2. `SLACK_LIST_ALL_CHANNELS` - Fallback if FIND_CHANNELS returns empty\u002Fambiguous results [Fallback]\n3. `SLACK_FIND_USERS` - Resolve user for DMs or @mentions [Optional]\n4. `SLACK_OPEN_DM` - Open\u002Freuse a DM channel if messaging a user directly [Optional]\n5. `SLACK_SEND_MESSAGE` - Post the message with resolved channel ID [Required]\n6. `SLACK_UPDATES_A_SLACK_MESSAGE` - Edit the posted message if corrections needed [Optional]\n\n**Key parameters**:\n- `channel`: Channel ID or name (without '#' prefix)\n- `markdown_text`: Preferred field for formatted messages (supports headers, bold, italic, code blocks)\n- `text`: Raw text fallback (deprecated in favor of markdown_text)\n- `thread_ts`: Timestamp of parent message to reply in a thread\n- `blocks`: Block Kit layout blocks (deprecated, use markdown_text)\n\n**Pitfalls**:\n- `SLACK_FIND_CHANNELS` requires `query` param; missing it errors with \"Invalid request data provided\"\n- `SLACK_SEND_MESSAGE` requires valid channel plus one of markdown_text\u002Ftext\u002Fblocks\u002Fattachments\n- Invalid block payloads return error=invalid_blocks (max 50 blocks)\n- Replies become top-level posts if `thread_ts` is omitted\n- Persist `response.data.channel` and `response.data.message.ts` from SEND_MESSAGE for edit\u002Fthread operations\n\n### 2. Search Messages and Conversations\n\n**When to use**: User wants to find specific messages across the workspace\n\n**Tool sequence**:\n1. `SLACK_FIND_CHANNELS` - Resolve channel for scoped search with `in:#channel` [Optional]\n2. `SLACK_FIND_USERS` - Resolve user for author filter with `from:@user` [Optional]\n3. `SLACK_SEARCH_MESSAGES` - Run keyword search across accessible conversations [Required]\n4. `SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION` - Expand threads for relevant hits [Required]\n\n**Key parameters**:\n- `query`: Search string supporting modifiers (`in:#channel`, `from:@user`, `before:YYYY-MM-DD`, `after:YYYY-MM-DD`, `has:link`, `has:file`)\n- `count`: Results per page (max 100), or total with auto_paginate=true\n- `sort`: 'score' (relevance) or 'timestamp' (chronological)\n- `sort_dir`: 'asc' or 'desc'\n\n**Pitfalls**:\n- Validation fails if `query` is missing\u002Fempty\n- `ok=true` can still mean no hits (`response.data.messages.total=0`)\n- Matches are under `response.data.messages.matches` (sometimes also `response.data_preview.messages.matches`)\n- `match.text` may be empty\u002Ftruncated; key info can appear in `matches[].attachments[]`\n- Thread expansion via FETCH_MESSAGE_THREAD can truncate when `response.data.has_more=true`; paginate via `response_metadata.next_cursor`\n\n### 3. Manage Channels and Users\n\n**When to use**: User wants to list channels, users, or workspace info\n\n**Tool sequence**:\n1. `SLACK_FETCH_TEAM_INFO` - Validate connectivity and get workspace identity [Required]\n2. `SLACK_LIST_ALL_CHANNELS` - Enumerate public channels [Required]\n3. `SLACK_LIST_CONVERSATIONS` - Include private channels and DMs [Optional]\n4. `SLACK_LIST_ALL_USERS` - List workspace members [Required]\n5. `SLACK_RETRIEVE_CONVERSATION_INFORMATION` - Get detailed channel metadata [Optional]\n6. `SLACK_LIST_USER_GROUPS_FOR_TEAM_WITH_OPTIONS` - List user groups [Optional]\n\n**Key parameters**:\n- `cursor`: Pagination cursor from `response_metadata.next_cursor`\n- `limit`: Results per page (default varies; set explicitly for large workspaces)\n- `types`: Channel types filter ('public_channel', 'private_channel', 'im', 'mpim')\n\n**Pitfalls**:\n- Workspace metadata is nested under `response.data.team`, not top-level\n- `SLACK_LIST_ALL_CHANNELS` returns public channels only; use `SLACK_LIST_CONVERSATIONS` for private\u002FIM coverage\n- `SLACK_LIST_ALL_USERS` can hit HTTP 429 rate limits; honor Retry-After header\n- Always paginate via `response_metadata.next_cursor` until empty; de-duplicate by `id`\n\n### 4. React to and Thread Messages\n\n**When to use**: User wants to add reactions or manage threaded conversations\n\n**Tool sequence**:\n1. `SLACK_SEARCH_MESSAGES` or `SLACK_FETCH_CONVERSATION_HISTORY` - Find the target message [Prerequisite]\n2. `SLACK_ADD_REACTION_TO_AN_ITEM` - Add an emoji reaction [Required]\n3. `SLACK_FETCH_ITEM_REACTIONS` - List reactions on a message [Optional]\n4. `SLACK_REMOVE_REACTION_FROM_ITEM` - Remove a reaction [Optional]\n5. `SLACK_SEND_MESSAGE` - Reply in thread using `thread_ts` [Optional]\n6. `SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION` - Read full thread [Optional]\n\n**Key parameters**:\n- `channel`: Channel ID where the message lives\n- `timestamp` \u002F `ts`: Message timestamp (unique identifier like '1234567890.123456')\n- `name`: Emoji name without colons (e.g., 'thumbsup', 'wave::skin-tone-3')\n- `thread_ts`: Parent message timestamp for threaded replies\n\n**Pitfalls**:\n- Reactions require exact channel ID + message timestamp pair\n- Emoji names use Slack's naming convention without colons\n- `SLACK_FETCH_CONVERSATION_HISTORY` only returns main channel timeline, NOT threaded replies\n- Use `SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION` with parent's `thread_ts` to get thread replies\n\n### 5. Schedule Messages\n\n**When to use**: User wants to schedule a message for future delivery\n\n**Tool sequence**:\n1. `SLACK_FIND_CHANNELS` - Resolve channel ID [Prerequisite]\n2. `SLACK_SCHEDULE_MESSAGE` - Schedule the message with `post_at` timestamp [Required]\n\n**Key parameters**:\n- `channel`: Resolved channel ID\n- `post_at`: Unix timestamp for delivery (up to 120 days in advance)\n- `text` \u002F `blocks`: Message content\n\n**Pitfalls**:\n- Scheduling is limited to 120 days in advance\n- `post_at` must be a Unix timestamp, not ISO 8601\n\n## Common Patterns\n\n### ID Resolution\nAlways resolve display names to IDs before operations:\n- **Channel name -> Channel ID**: `SLACK_FIND_CHANNELS` with `query` param\n- **User name -> User ID**: `SLACK_FIND_USERS` with `search_query` or `email`\n- **DM channel**: `SLACK_OPEN_DM` with resolved user IDs\n\n### Pagination\nMost list endpoints use cursor-based pagination:\n- Follow `response_metadata.next_cursor` until empty\n- Set explicit `limit` values (e.g., 100-200) for reliable paging\n- De-duplicate results by `id` across pages\n\n### Message Formatting\n- Prefer `markdown_text` over `text` or `blocks` for formatted messages\n- Use `\u003C@USER_ID>` format to mention users (not @username)\n- Use `\\n` for line breaks in markdown_text\n\n## Known Pitfalls\n\n- **Channel resolution**: `SLACK_FIND_CHANNELS` can return empty results if channel is private and bot hasn't been invited\n- **Rate limits**: `SLACK_LIST_ALL_USERS` and other list endpoints can hit HTTP 429; honor Retry-After header\n- **Nested responses**: Results may be nested under `response.data.results[0].response.data` in wrapped executions\n- **Thread vs channel**: `SLACK_FETCH_CONVERSATION_HISTORY` returns main timeline only; use `SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION` for thread replies\n- **Message editing**: Requires both `channel` and original message `ts`; persist these from SEND_MESSAGE response\n- **Search delays**: Recently posted messages may not appear in search results immediately\n- **Scope limitations**: Missing OAuth scopes can cause 403 errors; check with `SLACK_GET_APP_PERMISSION_SCOPES`\n\n## Quick Reference\n\n| Task | Tool Slug | Key Params |\n|------|-----------|------------|\n| Find channels | `SLACK_FIND_CHANNELS` | `query` |\n| List all channels | `SLACK_LIST_ALL_CHANNELS` | `limit`, `cursor`, `types` |\n| Send message | `SLACK_SEND_MESSAGE` | `channel`, `markdown_text` |\n| Edit message | `SLACK_UPDATES_A_SLACK_MESSAGE` | `channel`, `ts`, `markdown_text` |\n| Search messages | `SLACK_SEARCH_MESSAGES` | `query`, `count`, `sort` |\n| Get thread | `SLACK_FETCH_MESSAGE_THREAD_FROM_A_CONVERSATION` | `channel`, `ts` |\n| Add reaction | `SLACK_ADD_REACTION_TO_AN_ITEM` | `channel`, `name`, `timestamp` |\n| Find users | `SLACK_FIND_USERS` | `search_query` or `email` |\n| List users | `SLACK_LIST_ALL_USERS` | `limit`, `cursor` |\n| Open DM | `SLACK_OPEN_DM` | user IDs |\n| Schedule message | `SLACK_SCHEDULE_MESSAGE` | `channel`, `post_at`, `text` |\n| Get channel info | `SLACK_RETRIEVE_CONVERSATION_INFORMATION` | channel ID |\n| Channel history | `SLACK_FETCH_CONVERSATION_HISTORY` | `channel`, `oldest`, `latest` |\n| Workspace info | `SLACK_FETCH_TEAM_INFO` | (none) |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n",{"name":5,"risk":41,"source":39,"date_added":47,"description":7},"2026-02-27","main","d8518247cb8ab8b2dac57a6be33543ffd23b97c5","integrate-slack\u002Fsickn33\u002Fslack-automation",0,"https:\u002F\u002Fgithub.com\u002Fmattonweb\u002Fai-assistant-foundry","https:\u002F\u002Fgithub.com\u002Fmattonweb","2026-05-29 08:42:23",{"source":8,"skillName":5,"commands":56,"prompt":66,"zipAvailable":67},[57,60,63],{"tool":58,"command":59},"npx","npx skills add mattonweb\u002Fai-assistant-foundry --skill slack-automation",{"tool":61,"command":62},"bunx","bunx skills add mattonweb\u002Fai-assistant-foundry --skill slack-automation",{"tool":64,"command":65},"pnpm","pnpm dlx skills add mattonweb\u002Fai-assistant-foundry --skill slack-automation","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmattonweb\u002Fai-assistant-foundry\u002Fblob\u002Fmain\u002Fintegrate-slack\u002Fsickn33\u002Fslack-automation\u002FSKILL.md",true,[],[70,105,119,138,159,185],{"skillNo":71,"name":72,"nameZh":6,"description":73,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":74,"categories":75,"keywords":84,"publishedAt":42},"01M6P02DENRHN6KVGYC55FKASJ","writing-clearly-and-concisely","Use when writing prose humans will read—documentation, commit messages, error messages, explanations, reports, or UI text. Applies Strunk's timeless rules for clearer, stronger, more professional writing.","https:\u002F\u002Fgithub.com\u002Fmattonweb\u002Fai-assistant-foundry\u002Fblob\u002Fmain\u002Fwrite-technical\u002Fsoftaworks\u002Fwriting-clearly-and-concisely\u002FSKILL.md",[76,79],{"categoryNo":77,"categoryName":78,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104],"writing clearly and concisely","writing","concisely","text","for","more","timeless","error","professional","prose","reports","use","read","Rules","commit messages","messages","error messages","ui","documentation","commit",{"skillNo":106,"name":107,"nameZh":6,"description":108,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":109,"categories":110,"keywords":111,"publishedAt":42},"01M6P0286HZ8RWMFCCPC8HF7SC","crafting-effective-readmes","Use when writing or improving README files. Not all READMEs are the same — provides templates and guidance matched to your audience and project type.","https:\u002F\u002Fgithub.com\u002Fmattonweb\u002Fai-assistant-foundry\u002Fblob\u002Fmain\u002Fwrite-technical\u002Fsoftaworks\u002Fcrafting-effective-readmes\u002FSKILL.md",[],[112,113,86,114,115,96,116,117,118],"crafting effective readmes","README","templates","type","project","guidance","files",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":128,"publishedAt":42},"01M6P025A41BBTPWVTZ3GFQVG6","wiki-architect","You are a documentation architect that produces structured wiki catalogues and onboarding guides from codebases.","https:\u002F\u002Fgithub.com\u002Fmattonweb\u002Fai-assistant-foundry\u002Fblob\u002Fmain\u002Fwrite-technical\u002Fsickn33\u002Fwiki-architect\u002FSKILL.md",[125],{"categoryNo":126,"categoryName":127,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000038","人力资源",[129,130,131,132,133,134,135,136,39,137,103],"wiki","architect","wiki architect","unknown","you","documentation architect","guides","structured","onboarding",{"skillNo":139,"name":140,"nameZh":6,"description":141,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":142,"categories":143,"keywords":144,"publishedAt":42},"01M6P01NSKPXP77NWB4K0PXRK5","readme","You are an expert technical writer creating comprehensive project documentation. Your goal is to write a README.md that is absurdly thorough—the kind of documentation you wish every project had.","https:\u002F\u002Fgithub.com\u002Fmattonweb\u002Fai-assistant-foundry\u002Fblob\u002Fmain\u002Fwrite-technical\u002Fsickn33\u002Freadme\u002FSKILL.md",[],[113,145,146,147,133,148,149,116,150,151,48,152,153,154,155,156,103,157,158],"project documentation","tree","kind","expert","github","wish","writer","goal","write","technical writer","technical","https","write a readme","safe",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":165,"publishedAt":42},"01M6P01GP0NEN8KT3A3SA6ZFVE","ubiquitous-language","Extract a DDD-style ubiquitous language glossary from the current conversation, flagging ambiguities and proposing canonical terms. Saves to UBIQUITOUS_LANGUAGE.md. Use when user wants to define domain terms, build a glossary, harden terminology, create a ubiquitous language, or mentions \"domain model\" or \"DDD\".","https:\u002F\u002Fgithub.com\u002Fmattonweb\u002Fai-assistant-foundry\u002Fblob\u002Fmain\u002Fwrite-technical\u002Fmattpocock\u002Fubiquitous-language\u002FSKILL.md",[],[166,167,96,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184],"ubiquitous language","language","extract","user","glossary","model","terms","ddd","create","build","true","canonical","style","define","harden","domain model","domain","terminology","conversation",{"skillNo":186,"name":187,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":189,"categories":190,"keywords":193,"publishedAt":42},"01M6P01BJBP9XP4TDRT7QD1ZVA","technical-writing-style","Enforce clear, direct writing in software development documents including OKRs, PRDs, tech specs, architecture decision records (ADRs), git commit messages, PR descriptions, READMEs, changelogs, runbooks, incident postmortems, API docs, and onboarding guides. Trigger whenever a user asks to write, edit, revise, or review any of these document types. Also trigger when the user says writing \"sounds like AI\", \"feels robotic\", \"needs polish\", or asks to \"make it sound more natural\" in the context of technical or professional prose. Do not trigger for fiction, poetry, creative writing, academic papers, or legal documents unless the user explicitly asks for a more natural tone.","https:\u002F\u002Fgithub.com\u002Fmattonweb\u002Fai-assistant-foundry\u002Fblob\u002Fmain\u002Fwrite-technical\u002Fmattnebr\u002Ftechnical-writing-style\u002FSKILL.md",[191,192],{"categoryNo":77,"categoryName":78,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},[194,195,178,155,86,196,93,197,198,199,200,201,202,203,204,100,205,206,104,207],"writing style","technical writing style","technical writing","papers","types","runbooks","software development","incident","Poetry","decision","api","documents","architecture","review"]