agentleFS
jeremylongshorejeremylongshore/claude-code-slack-channel/skills/configure/SKILL.md

configure

Skill43 starsChanged 7 months agoApache-2.0View on GitHub

Configure Slack channel tokens (bot token + app-level token). Use when writing or rotating the Slack bot and app-level tokens for the slack-channel plugin. Trigger with "/slack-channel:configure", "configure slack tokens", or "set up my slack bot token".

  • Reads credentials

43 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use calendar, setup and 2 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • jacobraskSkill

    calendar

    Interact with Apple Calendar via AppleScript. Use when the user asks to check calendar, view events, create events, manage schedule, find free time, or list calendars. Triggers include "my calendar", "my schedule", "calendar events", "create event", "add to calendar", "what's on my calendar", "free time", "available slots", "upcoming events", "today's events". Requires macOS with Calendar.app.

    Also in 3 projects that use this

  • VercelSkill

    setup

    Set up Vercel CLI and project configuration. Use when the user says "set up Vercel", "configure Vercel", "link to Vercel", or "vercel init".

    Also in 7 projects that use this

  • AnthropicSkill

    status

    Case status summary by audience — client-facing (plain language), internal (for the professor), or court-ready (formal caption format per local rules). Same facts, different framing and depth. Use when a student needs to update the client, brief the professor, or prepare a court status report.

    Also in 3 projects that use this

  • Microsoft AzureSkill

    build

    Build the TypeSpec Rust emitter from source. Run this after cloning the repo, after pulling changes, or when TypeScript source files have been modified.

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

7 rules. 0 are common, 3 are distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 43 edited versions we read keep these.

  • 3

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Read references/official-auth.md when creating, rotating, revoking, or diagnosing either token type.

    line 53
  2. Distinctive:

    If either token is missing or has the wrong prefix, show this error and stop:

    line 62
  3. Distinctive:

    Create the state directory if it doesn't exist, then make the directory owner-only before writing any secret-bearing file:

    line 72
  4. Very specific:

    Write this complete content to ~/.claude/channels/slack/.env.tmp:

    line 90
  5. Distinctive:

    Never echo the tokens back in the confirmation message

    line 161
  6. Very specific:

    Never log tokens to stdout or any file other than .env

    line 162
  7. Very specific:

    Always set 0600 on the candidate before atomically moving it into place

    line 164

“Common” is measured: kept by at least 6 in 10 of the 43 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

/slack-channel:configure

Overview

Configure the Slack channel with its bot and app-level tokens. This is the only token-writing path: validate prefixes, write .env with owner-only permissions, never echo secrets, and return control to the install walkthrough.

Prerequisites

  • A Slack app already created (via /slack-channel:install Step 1 or manually at api.slack.com/apps) with:
    • the Bot User OAuth Token (xoxb-...) from OAuth & Permissions, and
    • the App-Level Token (xapp-..., scope connections:write) from Socket Mode settings.
  • A writable home directory — state lives at ~/.claude/channels/slack/.

Usage

Pass both tokens as arguments, bot token first. Obtain them directly from the Slack app dashboard and avoid shell history or shared transcripts:

/slack-channel:configure <xoxb-bot-token> <xapp-app-token>

Authentication

  • The xoxb- Bot User OAuth Token represents the installed bot and authorizes Web API calls within its granted bot scopes.
  • The xapp- app-level token represents the Slack app and requires connections:write to open the Socket Mode WebSocket.
  • Prefix checks establish token type, not validity. install doctor verifies liveness against Slack without printing the credential.
  • Store tokens only in ~/.claude/channels/slack/.env; never commit them or include them in output, logs, screenshots, or issue reports.

Read references/official-auth.md when creating, rotating, revoking, or diagnosing either token type.

Instructions

  1. Parse the two arguments from $ARGUMENTS:
    • First token must start with xoxb- (Bot User OAuth Token)
    • Second token must start with xapp- (App-Level Token)
  2. If either token is missing or has the wrong prefix, show this error and stop:

    Error: Two tokens required.
      - Bot token (starts with xoxb-) from OAuth & Permissions
      - App token (starts with xapp-) from Socket Mode settings
    
    Usage: /slack-channel:configure xoxb-... xapp-...
  3. Create the state directory if it doesn't exist, then make the directory owner-only before writing any secret-bearing file:

    mkdir -p ~/.claude/channels/slack
    # 0700 = owner may read/write/traverse; no group or other access
    chmod 700 ~/.claude/channels/slack
  4. Pre-create the fixed candidate path with owner-only permissions, then use Write to replace its complete contents. This makes the file 0600 from the instant it exists, independent of the process umask:

    # 0600 = owner read/write; no group or other access
    install -m 600 /dev/null ~/.claude/channels/slack/.env.tmp

    Write this complete content to ~/.claude/channels/slack/.env.tmp:

    SLACK_BOT_TOKEN=<bot-token>
    SLACK_APP_TOKEN=<app-token>
  5. Set the candidate file to owner-only, then atomically replace .env. If Write, chmod, or mv fails before replacement, remove only the exact candidate path ~/.claude/channels/slack/.env.tmp; leave the prior .env untouched.

    # 0600 = owner read/write; no group or other access
    chmod 600 ~/.claude/channels/slack/.env.tmp
    mv ~/.claude/channels/slack/.env.tmp ~/.claude/channels/slack/.env
  6. Confirm success:
    Slack channel configured.
    
    Start Claude with the Slack channel:
      claude --channels plugin:slack-channel@claude-code-plugins
    
    Or for development:
      claude --dangerously-load-development-channels server:slack
    
    Next: opt in a channel and pick its interaction mode with
    /slack-channel:access channel <id>  (defaults to mention-to-engage;
    pass --ambient for a dedicated bot channel). See ACCESS.md "Interaction modes".

Output

  • On success: ~/.claude/channels/slack/.env atomically replaced with both tokens and mode 0600, plus the confirmation block above (server start command and the pointer to channel opt-in). Tokens are never echoed.
  • On failure: the two-token usage error from step 2 and no file changes.

Error Handling

  • Missing token or wrong prefix — show the step-2 error block and stop; nothing is written. Bot tokens must start with xoxb-, app tokens with xapp-.
  • Tokens swapped — the prefix check catches it; re-run with the bot token first.
  • Existing .env — re-running atomically replaces it; this is the supported token-rotation path (rotation happens at api.slack.com/apps).
  • Write, permission, or move failure — remove only the fixed candidate ~/.claude/channels/slack/.env.tmp, leave the previous .env intact, and report only the failed stage without printing values.
  • Revoked/invalid tokens — this skill only validates prefixes, not liveness. If the server later fails auth, run /slack-channel:install doctor (checks 4–5 test both tokens live against the Slack API).

Examples

Both flows are the same command — the second run simply overwrites .env:

# First-time setup (illustrative placeholders, not live credentials)
/slack-channel:configure xoxb-WORKSPACE-EXAMPLE xapp-APP-EXAMPLE

# Rotation after regenerating tokens in the Slack UI — same command, overwrites .env
/slack-channel:configure xoxb-NEW-TOKEN xapp-NEW-TOKEN

Security

  • Never echo the tokens back in the confirmation message
  • Never log tokens to stdout or any file other than .env
  • Secure the state directory as 0700 before writing the candidate
  • Always set 0600 on the candidate before atomically moving it into place

Safety justification

rm is permitted only to clean the single fixed candidate path ~/.claude/channels/slack/.env.tmp after a failed rotation. Never pass a variable, glob, directory, recursive flag, or any other path to rm; never remove the previous .env.

Resources

  • skills/install/SKILL.md — the full install lifecycle that delegates to this skill (Step 3) and the doctor that verifies token liveness
  • skills/access/SKILL.md — the next step after configuring: channel opt-in and pairing
  • ACCESS.md — interaction modes referenced in the confirmation message
  • README.md — quick start, including Node.js and Docker server alternatives

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.