Help us improve
Share bugs, ideas, or general feedback.
From matrix-communication
Use when communicating via Matrix chat, notifying teams, or managing E2EE. Triggers on #room:server references, Matrix URLs, and chat requests.
npx claudepluginhub netresearch/claude-code-marketplace --plugin matrix-communicationHow this skill is triggered โ by the user, by Claude, or both
Slash command
/matrix-communication:matrix-communicationThis skill is limited to the following tools:
The summary Claude sees in its skill listing โ used to decide when to auto-load this skill
Matrix rooms: send, read, download media. **Always use `*-e2ee.py` scripts.**
LICENSEREADME.mdevals/evals.jsonreferences/api-reference.mdreferences/e2ee-guide.mdreferences/messaging-guide.mdreferences/setup-guide.mdscripts/_lib/__init__.pyscripts/_lib/config.pyscripts/_lib/deps.pyscripts/_lib/e2ee.pyscripts/_lib/formatting.pyscripts/_lib/http.pyscripts/_lib/rooms.pyscripts/_lib/test_formatting.pyscripts/_lib/utils.pyscripts/matrix-doctor.pyscripts/matrix-download-e2ee.pyscripts/matrix-e2ee-setup.pyscripts/matrix-e2ee-verify.pyGuides using Bun as JavaScript runtime, package manager, bundler, and test runner. Covers choosing Bun vs Node, Node migration, and Vercel deployment support.
Share bugs, ideas, or general feedback.
Matrix rooms: send, read, download media. Always use *-e2ee.py scripts.
Bash ! rule: Prepend set +H && when arguments contain !
ROOM: name (test), ID (!abc:server), or alias (#room:server).
# Send (E2EE)
set +H && uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-send-e2ee.py ROOM "message"
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-send-e2ee.py ROOM "message" --no-prefix
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-send-e2ee.py ROOM "is deploying" --emote
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-send-e2ee.py ROOM "๐ฆ Release: โฆ" --notice # unattended automation; no auto-reply loops
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-send-e2ee.py ROOM "reply" --thread '$rootEventId'
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-send-e2ee.py ROOM "reply" --reply '$eventId'
# Read (E2EE) โ JSON includes media URL/info for m.image/m.file/m.video/m.audio
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-read-e2ee.py ROOM --limit 10
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-read-e2ee.py ROOM --limit 20 --json
# Download media (E2EE) โ decrypts and saves by event ID
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-download-e2ee.py ROOM '$eventId' --output /tmp
# Edit / Delete / React
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-edit-e2ee.py ROOM '$eventId' "new text"
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-redact.py ROOM '$eventId' "reason"
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-react.py ROOM '$eventId' "โ
"
# Rooms
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-rooms.py
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-rooms.py --search ops
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-resolve.py "#room:server"
# E2EE management
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-e2ee-setup.py --status
MATRIX_PASSWORD="pass" uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-e2ee-setup.py
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-e2ee-verify.py --timeout 180
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-fetch-keys.py ROOM --sync-time 60
uv run ${CLAUDE_SKILL_DIR}/scripts/matrix-key-backup.py --recovery-key "EsTj ..." --import-keys
# Health check (uses python3, not uv run)
python3 ${CLAUDE_SKILL_DIR}/scripts/matrix-doctor.py --install
| Operation | E2EE (preferred) | Non-E2EE Fallback |
|---|---|---|
| Send | matrix-send-e2ee.py | matrix-send.py |
| Read | matrix-read-e2ee.py | matrix-read.py |
| Edit | matrix-edit-e2ee.py | matrix-edit.py |
| Download | matrix-download-e2ee.py | โ |
| React | matrix-react.py | (same) |
| Delete | matrix-redact.py | (same) |
Other: matrix-rooms.py, matrix-resolve.py, matrix-e2ee-setup.py, matrix-e2ee-verify.py, matrix-fetch-keys.py, matrix-key-backup.py, matrix-doctor.py.
~/.config/matrix/config.json โ required: homeserver, user_id. Optional: access_token
| Error | Solution |
|---|---|
M_FORBIDDEN | Join room first in Element |
M_UNKNOWN_TOKEN | Get new token from Element |
M_LIMIT_EXCEEDED | Wait and retry |
Could not find room | matrix-rooms.py to list rooms |
[Unable to decrypt] | matrix-key-backup.py --recovery-key "..." --import-keys |
libolm not found | apt install libolm-dev / brew install libolm |
matrix-nio not found | python3 ${CLAUDE_SKILL_DIR}/scripts/matrix-doctor.py --install |
Invalid password | Use env var: MATRIX_PASSWORD="pass" uv run ... |
signature failed | Dedicated device via matrix-e2ee-setup.py |
*-e2ee.pyset +H โ ! in messages gets mangled by bash--import-keys โ key backup doesn't save without itMATRIX_PASSWORD env varreferences/setup-guide.md โ setupreferences/e2ee-guide.md โ E2EE, key recovery, verificationreferences/messaging-guide.md โ formatting, reactionsreferences/api-reference.md โ Matrix API