QwenClaw v2.0 - Complete Rebuild with ALL 81+ Skills
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"name": "slack-tools",
|
||||
"version": "2.0.3",
|
||||
"description": "Slack MCP integration for message search and channel operations with best practices skill.",
|
||||
"author": {
|
||||
"name": "Fatih Akyon"
|
||||
},
|
||||
"homepage": "https://github.com/fcakyon/claude-codex-settings#plugins",
|
||||
"repository": "https://github.com/fcakyon/claude-codex-settings",
|
||||
"license": "Apache-2.0"
|
||||
}
|
||||
13
skills/claude-codex-settings/plugins/slack-tools/.mcp.json
Normal file
13
skills/claude-codex-settings/plugins/slack-tools/.mcp.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"slack": {
|
||||
"command": "npx",
|
||||
"args": ["-y", "@ubie-oss/slack-mcp-server@0.1.4"],
|
||||
"env": {
|
||||
"NPM_CONFIG_//npm.pkg.github.com/:_authToken": "REPLACE_WITH_GITHUB_PAT",
|
||||
"NPM_CONFIG_@ubie-oss:registry": "https://npm.pkg.github.com/",
|
||||
"SLACK_BOT_TOKEN": "REPLACE_WITH_BOT_TOKEN",
|
||||
"SLACK_USER_TOKEN": "REPLACE_WITH_USER_TOKEN",
|
||||
"SLACK_SAFE_SEARCH": "true"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,162 @@
|
||||
---
|
||||
description: Configure Slack MCP tokens
|
||||
---
|
||||
|
||||
# Slack Tools Setup
|
||||
|
||||
**Source:** [ubie-oss/slack-mcp-server](https://github.com/ubie-oss/slack-mcp-server)
|
||||
|
||||
Configure the Slack MCP server with your tokens.
|
||||
|
||||
## Step 1: Check Current Status
|
||||
|
||||
Read the MCP configuration from `${CLAUDE_PLUGIN_ROOT}/.mcp.json`.
|
||||
|
||||
Check if Slack is configured:
|
||||
|
||||
- If any of these contain placeholder values, it needs configuration:
|
||||
- `slack.env.GITHUB_TOKEN` contains `REPLACE_WITH_GITHUB_PAT`
|
||||
- `slack.env.SLACK_BOT_TOKEN` contains `REPLACE_WITH_BOT_TOKEN`
|
||||
- `slack.env.SLACK_USER_TOKEN` contains `REPLACE_WITH_USER_TOKEN`
|
||||
- If all contain actual tokens (ghp\_, xoxb-, xoxp-), already configured
|
||||
|
||||
Report status:
|
||||
|
||||
- "Slack MCP is not configured - needs tokens"
|
||||
- OR "Slack MCP is already configured"
|
||||
|
||||
## Step 2: Show Setup Guide
|
||||
|
||||
Tell the user:
|
||||
|
||||
```
|
||||
To configure Slack MCP, you need 3 tokens:
|
||||
|
||||
1. GitHub PAT (ghp_...) - For npm package access
|
||||
Get it at: https://github.com/settings/tokens
|
||||
Required scope: read:packages
|
||||
|
||||
2. Bot Token (xoxb-...) - From your Slack app
|
||||
3. User Token (xoxp-...) - From your Slack app
|
||||
Get both at: https://api.slack.com/apps
|
||||
Required scopes: channels:history, channels:read, chat:write, users:read
|
||||
|
||||
Don't need Slack MCP? Disable it via /mcp command.
|
||||
```
|
||||
|
||||
## Step 3: Ask for GitHub PAT
|
||||
|
||||
Use AskUserQuestion:
|
||||
|
||||
- question: "Do you have your GitHub PAT ready?"
|
||||
- header: "GitHub PAT"
|
||||
- options:
|
||||
- label: "Yes, I have it"
|
||||
description: "I have my GitHub PAT ready to paste (starts with ghp\_)"
|
||||
- label: "No, skip for now"
|
||||
description: "I'll configure it later"
|
||||
|
||||
If user selects "No, skip for now":
|
||||
|
||||
- Tell them they can run `/slack-tools:setup` again when ready
|
||||
- Remind them they can disable Slack MCP via `/mcp` if not needed
|
||||
- Exit
|
||||
|
||||
If user selects "Yes" or provides token via "Other":
|
||||
|
||||
- If they provided token in "Other" response, use that
|
||||
- Otherwise, ask them to paste the token
|
||||
|
||||
## Step 4: Ask for Bot Token
|
||||
|
||||
Use AskUserQuestion:
|
||||
|
||||
- question: "Do you have your Slack Bot Token ready?"
|
||||
- header: "Bot Token"
|
||||
- options:
|
||||
- label: "Yes, I have it"
|
||||
description: "I have my Slack bot token ready (starts with xoxb-)"
|
||||
- label: "No, skip for now"
|
||||
description: "I'll configure it later"
|
||||
|
||||
If user selects "No, skip for now":
|
||||
|
||||
- Tell them they can run `/slack-tools:setup` again when ready
|
||||
- Exit
|
||||
|
||||
If user selects "Yes" or provides token via "Other":
|
||||
|
||||
- If they provided token in "Other" response, use that
|
||||
- Otherwise, ask them to paste the token
|
||||
|
||||
## Step 5: Ask for User Token
|
||||
|
||||
Use AskUserQuestion:
|
||||
|
||||
- question: "Do you have your Slack User Token ready?"
|
||||
- header: "User Token"
|
||||
- options:
|
||||
- label: "Yes, I have it"
|
||||
description: "I have my Slack user token ready (starts with xoxp-)"
|
||||
- label: "No, skip for now"
|
||||
description: "I'll configure it later"
|
||||
|
||||
If user selects "No, skip for now":
|
||||
|
||||
- Tell them they can run `/slack-tools:setup` again when ready
|
||||
- Exit
|
||||
|
||||
If user selects "Yes" or provides token via "Other":
|
||||
|
||||
- If they provided token in "Other" response, use that
|
||||
- Otherwise, ask them to paste the token
|
||||
|
||||
## Step 6: Validate Tokens
|
||||
|
||||
Validate the provided tokens:
|
||||
|
||||
- GitHub PAT must start with `ghp_`
|
||||
- Bot Token must start with `xoxb-`
|
||||
- User Token must start with `xoxp-`
|
||||
|
||||
If any invalid:
|
||||
|
||||
- Show error with specific token that failed validation
|
||||
- Ask if they want to try again or skip
|
||||
|
||||
## Step 7: Update Configuration
|
||||
|
||||
1. Read current `${CLAUDE_PLUGIN_ROOT}/.mcp.json`
|
||||
2. Create backup at `${CLAUDE_PLUGIN_ROOT}/.mcp.json.backup`
|
||||
3. Update these values:
|
||||
- `slack.env.GITHUB_TOKEN` to the GitHub PAT
|
||||
- `slack.env.SLACK_BOT_TOKEN` to the bot token
|
||||
- `slack.env.SLACK_USER_TOKEN` to the user token
|
||||
4. Write updated configuration back to `${CLAUDE_PLUGIN_ROOT}/.mcp.json`
|
||||
|
||||
## Step 8: Confirm Success
|
||||
|
||||
Tell the user:
|
||||
|
||||
```
|
||||
Slack MCP configured successfully!
|
||||
|
||||
IMPORTANT: Restart Claude Code for changes to take effect.
|
||||
- Exit Claude Code
|
||||
- Run `claude` again
|
||||
|
||||
To verify after restart, run /mcp and check that 'slack' server is connected.
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If Slack MCP fails after configuration:
|
||||
|
||||
```
|
||||
Common fixes:
|
||||
1. invalid_auth - Token expired or invalid, regenerate from api.slack.com
|
||||
2. missing_scope - Re-install app with required OAuth scopes
|
||||
3. Token format - Bot tokens start with xoxb-, user tokens with xoxp-
|
||||
4. Channel not found - Ensure bot is invited to the channel
|
||||
5. Rate limited - Wait and retry, reduce request frequency
|
||||
```
|
||||
@@ -0,0 +1,18 @@
|
||||
---
|
||||
name: setup
|
||||
description: This skill should be used when user encounters "Slack MCP error", "invalid_auth", "missing_scope", "Slack not working", "Slack token invalid", "channel_not_found", or needs help configuring Slack integration.
|
||||
---
|
||||
|
||||
# Slack Tools Setup
|
||||
|
||||
Run `/slack-tools:setup` to configure Slack MCP.
|
||||
|
||||
## Quick Fixes
|
||||
|
||||
- **invalid_auth** - Token expired, regenerate at api.slack.com
|
||||
- **missing_scope** - Re-install Slack app with required scopes
|
||||
- **channel_not_found** - Bot not invited to channel
|
||||
|
||||
## Don't Need Slack?
|
||||
|
||||
Disable via `/mcp` command to prevent errors.
|
||||
@@ -0,0 +1,75 @@
|
||||
---
|
||||
name: slack-usage
|
||||
description: This skill should be used when user asks to "search Slack for messages", "find Slack messages about X", "get channel history", "look up conversation in Slack", or "find what someone said in Slack".
|
||||
---
|
||||
|
||||
# Slack Usage Best Practices
|
||||
|
||||
## Critical Search Rule
|
||||
|
||||
**ALWAYS use `mcp__slack__slack_search_messages` first** for message searches. Only use `mcp__slack__slack_get_channel_history` when explicitly asked for recent channel history.
|
||||
|
||||
Search is more efficient and finds messages across all channels. Channel history only shows recent messages in one channel.
|
||||
|
||||
## Slack API Best Practices
|
||||
|
||||
### Rate Limiting
|
||||
|
||||
Slack APIs have rate limits (typically 1 request per second for most methods). When making multiple requests:
|
||||
|
||||
- Space out bulk operations
|
||||
- Handle rate limit errors gracefully
|
||||
- Cache results when possible
|
||||
|
||||
### Channel Types
|
||||
|
||||
- **Public channels** - Visible to all workspace members
|
||||
- **Private channels** - Invite-only, prefix with lock icon
|
||||
- **DMs** - Direct messages between users
|
||||
- **Group DMs** - Multi-person direct conversations
|
||||
|
||||
### Message Formatting
|
||||
|
||||
Format mentions and links properly:
|
||||
|
||||
- User mention: `<@USER_ID>`
|
||||
- Channel link: `<#CHANNEL_ID>`
|
||||
- URL with text: `<https://example.com|link text>`
|
||||
- Bold: `*text*`
|
||||
- Code: backticks for inline, triple backticks for blocks
|
||||
|
||||
### Threading Best Practices
|
||||
|
||||
- Use threads for discussions to keep channels clean
|
||||
- Reply in thread when responding to specific messages
|
||||
- Use "Also send to channel" sparingly (only for important updates)
|
||||
- Thread replies don't trigger channel notifications by default
|
||||
|
||||
### Bot vs User Tokens
|
||||
|
||||
- **Bot tokens (xoxb-)**: Actions appear as the bot, limited to channels bot is in
|
||||
- **User tokens (xoxp-)**: Actions appear as user, access to all user's channels
|
||||
- Search typically requires user token for full workspace access
|
||||
- Posting messages works with either token type
|
||||
|
||||
### Common Workflows
|
||||
|
||||
**Finding past discussions:**
|
||||
|
||||
1. Search with relevant keywords
|
||||
2. Filter by channel, user, or date if needed
|
||||
3. Get thread replies for full context
|
||||
|
||||
**Monitoring channels:**
|
||||
|
||||
1. Get channel history for recent activity
|
||||
2. Note message timestamps for threading
|
||||
3. React or reply as appropriate
|
||||
|
||||
## MCP Limitations
|
||||
|
||||
This MCP provides read and write access to Slack. Consider:
|
||||
|
||||
- Rate limits apply to all operations
|
||||
- Some admin operations not available
|
||||
- File uploads have size limits
|
||||
Reference in New Issue
Block a user