Agent skill

Slackdump

by rusq in rusq/slackdump

Collect the Slack conversation data from Slackdump Archive format.

AGPL-3.0Auto-check passed

Install Slackdump

skills CLI
$ npx skills add rusq/slackdump --skill slackdump -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install rusq/slackdump slackdump --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/rusq/slackdump.git skills-src && mkdir -p .claude/skills && cp -r skills-src/cmd/slackdump/internal/mcp/assets/skills/slackdump .claude/skills/slackdump && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
slackdump
GitHub stars
2.8k
Token cost
~2k tokens
SKILL.md length
916 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Collect the Slack conversation data from Slackdump Archive format.

  • Works in 6 steps: A directory with database: identified by… → A standalone database: identified by… → A chunk directory: identified by… → …
  • SKILL.md covers Accessing the Slackdump Data, What to pay attention to and If you're accessing database…
  • Calls sqlite3

What it does

Slackdump is an agent skill from rusq/slackdump. Collect the Slack conversation data from Slackdump Archive format.

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It works with Slack, SQLite and Model Context Protocol. The repository describes itself as: Save or export your private and public Slack messages, threads, files, and users locally without admin privileges. The licence is AGPL-3.0.

Example prompts

  • “/slackdump”

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. A directory with database: identified by slackdump_[YYYYMMDD]_[HHMMSS]/slackdump.sqlite
  2. A standalone database: identified by slackdump.sqlite
  3. A chunk directory: identified by slackdump_[YYYYMMDD]_[HHMMSS]/*.json.gz
  4. A dump directory: identified by slackdump_[YYYYMMDD]_[HHMMSS]/[CHANNEL_ID].json
  5. An export directory: identified by slackdump_[YYYYMMDD]_[HHMMSS]/dms.json
  6. An export or dump zip file: identified by

What it can do on your machine

Read from SKILL.md and the folder at commit 88e7c22. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • sqlite3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Slackdump loads about 2k tokens when it runs. Until then it costs about 19 tokens; SKILL.md has 916 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~19
When it runs · the whole SKILL.md, loaded when a task matches
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from rusq/slackdump at commit 88e7c22, republished under its AGPL-3.0 licence (© rusq). 916 words, ~1,976 tokens.

Download SKILL.mdSave it as .claude/skills/slackdump/SKILL.md (or your agent's skills folder).
name
slackdump
description
Collect the Slack conversation data from Slackdump Archive format.
metadata.audience
general
metadata.workflow
archive

Accessing the Slackdump Data

Flowchart:

Slackdump MCP available?
  yes → USE IT (stop here)
  no  ↓
Source has slackdump.sqlite?
  no  → REFUSE; tell user: slackdump convert -f database <source>
  yes ↓
SQLite MCP available?
  yes → USE IT (stop here)
  no  ↓
sqlite3 CLI available?
  yes → use sqlite3 CLI (slackdump-sqlite3 skill)
  no  → REFUSE to run

Use the "Slackdump" MCP if it is available. It is read-only and supports all type of Slackdump archives.

If you need to identify the source type, use the following guidance:

  • YYYYMMDD and HHMMSS represent the 24-hour format time when the slackdump was invoked to generate this archive (it is created as a first step);

  • Source types:

    1. A directory with database: identified by slackdump_[YYYYMMDD]_[HHMMSS]/slackdump.sqlite
    2. A standalone database: identified by slackdump.sqlite
    3. A chunk directory: identified by slackdump_[YYYYMMDD]_[HHMMSS]/*.json.gz
    4. A dump directory: identified by slackdump_[YYYYMMDD]_[HHMMSS]/[CHANNEL_ID].json
    5. An export directory: identified by slackdump_[YYYYMMDD]_[HHMMSS]/dms.json
    6. An export or dump zip file: identified by slackdump_[YYYYMMDD]_[HHMMSS].zip. In the ZIP file, the file structure is similar to dump and export directories described above.
  • If you need to understand the source structure in details, use "slackdump-source" skill.

IMPORTANT: You will be accessing the data in read-only mode. You must not UPDATE or DELETE or run any DML or DDL statements. Only SELECT and data-dictionary querying.

  • Database path might be given by the agent, otherwise look for slackdump.sqlite file. If there are several files like this in the current project, ask user to choose one of them.

  • If falling back to sqlite3 use the "slackdump-sqlite3" skill.

What to pay attention to

This section describes some data structure quirks that you need to be aware of in order to understand what you're dealing with.

Threads
  • Threads are nested conversations. Here's how a thread looks like:

    +- parent_message (ts=12345, thread_ts=12345, latest_reply=XXXX)
    | +-- parent_message (ts=12345, thread_ts=12345)    - conversations.replies endpoint returns the starter message, so it MIGHT be duplicated in the archive
    | +-- first_thread_message(ts=12346, thread_ts=12345)
    | +-- second_thread_message(ts=12355, thread_ts=12345)
    | +-- <...>
    | +-- n'th_thread_message(ts=XXXX, thread_ts=12345)
    +- next_non-threaded_message_in_the_channel (ts=24921, thread_ts=<empty>)
  • Note that the parent_message appears twice. One is returned during the conversations.history, and a duplicate is returned by conversation.replies endpoints. It might be duplicated in the archive.

  • In the channel there may be parent messages with deleted threads, latest_reply field will be set to a special zero-value "0000000000.000000", there will be no thread messages for such threads, so no need to call get_thread tool on MCP:

    +- parent_message (ts=23456, thread_ts=23456, latest_reply=0000000000.000000)
    |  // there will be no thread messages
    +- next_message (can be threaded or non threaded)
  • IS_PARENT=TRUE already implies the thread has replies — a thread-lead message with latest_reply = "0000000000.000000" is stored with IS_PARENT=FALSE. You do not need to additionally filter by latest_reply when looking for threads that have replies.

  • IS_PARENT=FALSE indicates a thread message that is not a parent message of a thread (thread reply message), or a parent message of a deleted thread.

  • Messages with subtype thread_broadcast ("also sent to channel") appear in both the channel history (CHUNK.TYPE_ID=0) and the thread (CHUNK.TYPE_ID=1). When counting or listing channel messages, filter them out to avoid double-counting:

    sql
    WHERE JSON_EXTRACT(DATA, '$.subtype') IS NOT 'thread_broadcast'
Files

Some messages may have non empty files array. A file has a "mode" field. Known file modes:

  • hosted: normal Slack-hosted file, downloadable;
  • snippet: code snippet hosted by Slack;
  • space: Slack canvas / huddle space document;
  • external: not hosted on Slack servers, is_external will be true, not downloadable;
  • tombstone: file was deleted, download_url will be empty;
  • hidden_by_limit: on free workspaces, Slack hides files uploaded 90+ days ago, download_url will be empty.

Only hosted, snippet, and space files are downloadable. The others (external, tombstone, hidden_by_limit) have no usable download URL.

NOTE: do not try to download, do the following:

  • If the directory with slackdump.sqlite has /__uploads subdirectory, find it using the following pattern /__uploads/[FILE_ID]/*.
  • Otherwise: files are not downloaded; WARN user that files are not present, and user can use slackdump tools redownload, if files are needed.
Show full SKILL.md (384 more words)Show less

If you're accessing database directly

Examine the database schema to understand the structure of the data:

  • Use Foreign Keys to JOIN tables.
  • Ignore V_* views (context: they are used by slackdump to track unprocessed threads during execution).

Key terms:

  • Session: stored in a SESSION table, and denotes a single slackdump execution. Each slackdump invocation on the archive creates a session. The following commands create a session entry:

    • slackdump archive - archival of data
    • slackdump resume - incremental archiving of data (adds to existing archive)
    • slackdump search - writes search results
    • slackdump convert - creates a session to store the data from the source format.

    A session interrupted mid-run (e.g. crash or network failure) will have FINISHED=FALSE. Data from such a session may be incomplete.

  • Chunk: stored in a CHUNK table. A "chunk" loosely maps to a single API call made by Slackdump when making an archive. When Slack endpoint returns some data, Slackdump creates a "chunk" entry, and then inserts the data into one of the linked database tables. For example: a call to Slack API endpoint "conversations.history" returns 100 messages. For this API call, a new CHUNK is inserted with TYPE_ID set to "MESSAGES" type. Then it will insert 100 rows into MESSAGE table. Each of these rows will be linked to this chunk.

    A chunk with FINAL=TRUE is the last API page for that channel or thread. If the last chunk for a channel has FINAL=FALSE, or no FINAL=TRUE chunk exists at all for it, the archive is incomplete for that channel.

  • Chunk Type: stored in a TYPES table. Chunk type is helpful to understand what type of API call was made and which table in database contains the data for that "chunk".

The same message (having the same MESSAGE.TS) can appear multiple times in different chunks and different sessions. You always need to fetch the latest version of the message (the one that belongs to the latest chunk, and the latest session).

Example:

Here's the flattened representation of the result that might be returned by:

sql
SELECT SESSION.ID, CHUNK.ID, MESSAGE.TS
FROM MESSAGE
JOIN CHUNK ON CHUNK.ID = MESSAGE.CHUNK_ID
JOIN SESSION ON SESSION.ID = CHUNK.SESSION_ID
WHERE MESSAGE.TS IN ('12345.678', '12345.890');
SESSION.IDCHUNK.IDMESSAGE.TS
14412345.678
14412345.890
210412345.678

In this case, message 12345.678 appears twice, first time in the first session, second time in the second session (which, most likely, a slackdump resume session). You should pick the latest version of the message (SESSION.ID = 2, CHUNK.ID=104).

© rusq, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in cmd/slackdump/internal/mcp/assets/skills/slackdump of rusq/slackdump.

Open the folder on GitHubat commit 88e7c22

Compare with similar skills

Slackdump next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Slackdump compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Slackdump this skillrusq/slackdump2.8k—~2kAutomated safety check: PassAGPL-3.0
MCP Server BuildershareAI-lab/learn-claude-code78k5 repos~1.2kAutomated safety check: PassMIT
ComposioComposioHQ/composio30k1 repos~1.7kAutomated safety check: PassMIT
Adding LLM MCP ToolsTriliumNext/Trilium38k—~2.5kAutomated safety check: PassAGPL-3.0
Agent Memorytigerless-labs/agent-memory2.4k—~1.2kAutomated safety check: PassMIT
Foremergenaw103/foremerge536—~2.4kAutomated safety check: PassApache-2.0

Similar skills

  • MCP Server Builder

    shareAI-lab/learn-claude-code

    Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.

    78k GitHub starsUsed in 5 repos~1.2k tokens
    Agent WorkflowsAuto-check passed
  • Composio

    ComposioHQ/composio

    Route and complete Composio work across Composio For You and Composio Platform.

    30k GitHub starsUsed in 1 repo~1.7k tokens
    Productivity & AutomationAuto-check passed
  • Adding LLM MCP Tools

    TriliumNext/Trilium

    A skill your agent uses when adding, changing, or reviewing an LLM/MCP tool in Trilium (the defineTools definitions under packages/trilium-core/src/services/llm/tools/ —…

    38k GitHub stars~2.5k tokensUpdated today
    Testing & QAAuto-check passed
  • Agent Memory

    tigerless-labs/agent-memory

    Read and write the shared long-term memory store. An agent skill from tigerless-labs/agent-memory.

    2.4k GitHub stars~1.2k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Foremerge

    naw103/foremerge

    Coordinate parallel coding agents with Foremerge's local Git-compatible CLI and MCP server.

    536 GitHub stars~2.4k tokensUpdated 3 days ago
    Agent WorkflowsAuto-check passed
  • Puppetmaster Agent Orchestration

    professorpalmer/Puppetmaster

    Operates and supervises Puppetmaster, a multi-agent orchestrator, through its MCP tools or CLI, picking the right verb for edits, reviews, audits and long-running jobs.

    467 GitHub stars~3.2k tokensUpdated today
    Agent WorkflowsAuto-check passed

More from rusq/slackdump

  • Pre Release

    rusq/slackdump

    Prepare this repository for a release. An agent skill from rusq/slackdump.

    2.8k GitHub stars~841 tokensUpdated 4 days ago
    Auto-check passed
  • Slackdump Source

    rusq/slackdump

    Explains the different Slackdump sources structure. An agent skill from rusq/slackdump.

    2.8k GitHub stars~876 tokensUpdated 4 days ago
    Auto-check passed
  • Slackdump Sqlite3

    rusq/slackdump

    Guidance for querying a Slackdump SQLite3 database directly via the sqlite3 CLI.

    2.8k GitHub stars~1.6k tokensUpdated 4 days ago
    Auto-check passed

Questions about Slackdump

What does Slackdump do?

Collect the Slack conversation data from Slackdump Archive format. Slackdump is an agent skill from rusq/slackdump. Collect the Slack conversation data from Slackdump Archive format.

How do I install Slackdump in Claude Code?

Run `npx skills add rusq/slackdump --skill slackdump -a claude-code`. Or copy the skill folder (cmd/slackdump/internal/mcp/assets/skills/slackdump in rusq/slackdump) into .claude/skills/slackdump in your project. Claude Code loads it when a task matches its description.

How do I install Slackdump in Codex?

Run `npx skills add rusq/slackdump --skill slackdump -a codex`. Or copy the skill folder (cmd/slackdump/internal/mcp/assets/skills/slackdump in rusq/slackdump) into .agents/skills/slackdump in your project. Codex loads it when a task matches its description.

Can I use Slackdump in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add rusq/slackdump --skill slackdump -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/slackdump, .gemini/skills/slackdump, .github/skills/slackdump and .opencode/skills/slackdump in your project.

What does Slackdump need to run?

Going by SKILL.md and its folder, Slackdump needs the command-line tools its instructions call (sqlite3).

Does Slackdump access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Slackdump safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Slackdump use?

Slackdump is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Slackdump use?

About 2k tokens (SKILL.md is roughly 7.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Slackdump?

Skills that share tags, products or a category with Slackdump: MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), Composio (ComposioHQ/composio, 30k stars), Adding LLM MCP Tools (TriliumNext/Trilium, 38k stars) and Agent Memory (tigerless-labs/agent-memory, 2.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Slackdump?

rusq (a GitHub user) maintains it in rusq/slackdump, which has 2,810 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 3, 2026.

Source: rusq/slackdump on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.