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.
Collect the Slack conversation data from Slackdump Archive format.
$ npx skills add rusq/slackdump --skill slackdump -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install rusq/slackdump slackdump --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "slackdump" agent skill from https://github.com/rusq/slackdump/tree/master/cmd/slackdump/internal/mcp/assets/skills/slackdump into .claude/skills/slackdump/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "slackdump", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/rusq/slackdump/tree/master/cmd/slackdump/internal/mcp/assets/skills/slackdumpType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add rusq/slackdump --skill slackdump -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install rusq/slackdump slackdump --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rusq/slackdump.git skills-src && mkdir -p .agents/skills && cp -r skills-src/cmd/slackdump/internal/mcp/assets/skills/slackdump .agents/skills/slackdump && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "slackdump" agent skill from https://github.com/rusq/slackdump/tree/master/cmd/slackdump/internal/mcp/assets/skills/slackdump into .agents/skills/slackdump/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "slackdump", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add rusq/slackdump --skill slackdump -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install rusq/slackdump slackdump --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rusq/slackdump.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/cmd/slackdump/internal/mcp/assets/skills/slackdump .cursor/skills/slackdump && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "slackdump" agent skill from https://github.com/rusq/slackdump/tree/master/cmd/slackdump/internal/mcp/assets/skills/slackdump into .cursor/skills/slackdump/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "slackdump", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/rusq/slackdump.git --path cmd/slackdump/internal/mcp/assets/skills/slackdump--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add rusq/slackdump --skill slackdump -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install rusq/slackdump slackdump --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rusq/slackdump.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/cmd/slackdump/internal/mcp/assets/skills/slackdump .gemini/skills/slackdump && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "slackdump" agent skill from https://github.com/rusq/slackdump/tree/master/cmd/slackdump/internal/mcp/assets/skills/slackdump into .gemini/skills/slackdump/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "slackdump", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install rusq/slackdump slackdumpInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add rusq/slackdump --skill slackdump -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/rusq/slackdump.git skills-src && mkdir -p .github/skills && cp -r skills-src/cmd/slackdump/internal/mcp/assets/skills/slackdump .github/skills/slackdump && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "slackdump" agent skill from https://github.com/rusq/slackdump/tree/master/cmd/slackdump/internal/mcp/assets/skills/slackdump into .github/skills/slackdump/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "slackdump", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add rusq/slackdump --skill slackdump -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install rusq/slackdump slackdump --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rusq/slackdump.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/cmd/slackdump/internal/mcp/assets/skills/slackdump .opencode/skills/slackdump && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "slackdump" agent skill from https://github.com/rusq/slackdump/tree/master/cmd/slackdump/internal/mcp/assets/skills/slackdump into .opencode/skills/slackdump/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "slackdump", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
slackdumpCollect 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.
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.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 88e7c22. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
sqlite3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from rusq/slackdump at commit 88e7c22, republished under its AGPL-3.0 licence (© rusq). 916 words, ~1,976 tokens.
.claude/skills/slackdump/SKILL.md (or your agent's skills folder).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 runUse 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:
slackdump_[YYYYMMDD]_[HHMMSS]/slackdump.sqliteslackdump.sqliteslackdump_[YYYYMMDD]_[HHMMSS]/*.json.gzslackdump_[YYYYMMDD]_[HHMMSS]/[CHANNEL_ID].jsonslackdump_[YYYYMMDD]_[HHMMSS]/dms.jsonslackdump_[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.
This section describes some data structure quirks that you need to be aware of in order to understand what you're dealing with.
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:
WHERE JSON_EXTRACT(DATA, '$.subtype') IS NOT 'thread_broadcast'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:
slackdump.sqlite has /__uploads subdirectory,
find it using the following pattern
/__uploads/[FILE_ID]/*.slackdump tools redownload, if files are needed.Examine the database schema to understand the structure of the data:
JOIN tables.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 dataslackdump resume - incremental archiving of data (adds to existing
archive)slackdump search - writes search resultsslackdump 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:
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.ID | CHUNK.ID | MESSAGE.TS |
|---|---|---|
| 1 | 44 | 12345.678 |
| 1 | 44 | 12345.890 |
| 2 | 104 | 12345.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
Just SKILL.md in cmd/slackdump/internal/mcp/assets/skills/slackdump of rusq/slackdump.
Open the folder on GitHubat commit 88e7c22
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Slackdump this skillrusq/slackdump | 2.8k | — | ~2k | Automated safety check: Pass | AGPL-3.0 | |
| MCP Server BuildershareAI-lab/learn-claude-code | 78k | 5 repos | ~1.2k | Automated safety check: Pass | MIT | |
| ComposioComposioHQ/composio | 30k | 1 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Adding LLM MCP ToolsTriliumNext/Trilium | 38k | — | ~2.5k | Automated safety check: Pass | AGPL-3.0 | |
| Agent Memorytigerless-labs/agent-memory | 2.4k | — | ~1.2k | Automated safety check: Pass | MIT | |
| Foremergenaw103/foremerge | 536 | — | ~2.4k | Automated safety check: Pass | Apache-2.0 |
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.
ComposioHQ/composio
Route and complete Composio work across Composio For You and Composio Platform.
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/ —…
tigerless-labs/agent-memory
Read and write the shared long-term memory store. An agent skill from tigerless-labs/agent-memory.
naw103/foremerge
Coordinate parallel coding agents with Foremerge's local Git-compatible CLI and MCP server.
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.
rusq/slackdump
Prepare this repository for a release. An agent skill from rusq/slackdump.
rusq/slackdump
Explains the different Slackdump sources structure. An agent skill from rusq/slackdump.
rusq/slackdump
Guidance for querying a Slackdump SQLite3 database directly via the sqlite3 CLI.
Works with
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.
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.
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.
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.
Going by SKILL.md and its folder, Slackdump needs the command-line tools its instructions call (sqlite3).
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.
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.
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.
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.
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.
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.