Matrix administration
Use when administering a Synapse / Matrix homeserver — list or snapshot all rooms, rate room health (public, unencrypted, orphaned), render a Graphviz map of the room/space tree, force-join users, promote room admins, harden rooms (add-to-space + restrict + encrypt), deactivate Matrix users (with GDPR erase), find biggest rooms by DB size, audit where a user is admin or member, replay join/leave timelines, or search unencrypted history. Trigger on any '/_synapse/admin', server-wide room operation, Matrix user offboarding, or anything requiring a homeserver-admin token — even without 'admin API' in the prompt. Companion to matrix-communication.From its SKILL.md
npx -y skills add netresearch/matrix-skill --skill matrix-administrationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as (MIT AND CC-BY-SA-4.0). See LICENSE-MIT and LICENSE-CC-BY-SA-4.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
4.5 KB, 968 tokens by cl100k_base, as published. Nobody here has run it
Matrix Administration
Stdlib-only Python wrappers around the Synapse Admin API and the Client-Server API. Reads ~/.config/matrix/config.json (the same file matrix-communication uses).
Quick Reference
S=skills/matrix-administration/scripts
python3 $S/synapse-fetch-rooms.py [--server :example.com]
python3 $S/synapse-rate-rooms.py --space '!home:srv' [--language de]
python3 $S/synapse-graph.py --space '!home:srv'
python3 $S/synapse-biggest-rooms.py [-n 10]
python3 $S/synapse-join-room.py '!room:srv' '@user:srv'
python3 $S/synapse-make-admin.py '!room:srv' '@user:srv'
python3 $S/synapse-add-to-space.py '!room:srv' '!space:srv'
python3 $S/synapse-migrate-room.py '!room:srv' '@admin:srv' '!space:srv'
python3 $S/synapse-deactivate-user.py '@user:srv' # DESTRUCTIVE
python3 $S/synapse-user-rooms.py '@user:srv'
python3 $S/synapse-user-admin-rooms.py '@user:srv'
python3 $S/synapse-room-member-flow.py '!room:srv'
python3 $S/synapse-search.py '!room:srv' '@bot:srv' deploy
Scripts
| Script | Purpose |
|---|---|
synapse-fetch-rooms.py | Snapshot all rooms + state → rooms.json |
synapse-rate-rooms.py | Health checks (EN/DE) on rooms.json |
synapse-graph.py | Render rooms.json → Graphviz .dot + .svg |
synapse-biggest-rooms.py | Top-N rooms by DB size |
synapse-join-room.py | Force-join a user |
synapse-make-admin.py | Promote to PL 100 |
synapse-add-to-space.py | Send m.space.child |
synapse-migrate-room.py | Add to space + restrict + encrypt |
synapse-deactivate-user.py | Destructive deactivation (--erase for GDPR) |
synapse-user-admin-rooms.py | Local: rooms where user is PL 100 |
synapse-user-rooms.py | Local: rooms a user belongs to |
synapse-room-member-flow.py | Join/leave timeline |
synapse-search.py | Unencrypted history search |
Setup
~/.config/matrix/config.json (respects $XDG_CONFIG_HOME):
{
"homeserver": "https://matrix.example.com",
"admin_token": "syt_admin_…",
"room_filter": ":example.com",
"default_space_id": "!home:example.com",
"home_space_ids": ["!home:example.com"]
}
homeserver and either admin_token or access_token (server-admin) are required. The other fields are optional. Env fallbacks: MATRIX_USER_ID, MATRIX_SPACE_ID, LANGUAGE=en|de, NO_COLOR.
Safety
The token is server-admin. Read references/safety-guide.md before any destructive op.
synapse-deactivate-user.pyis irreversible.synapse-migrate-room.pyenables encryption (one-way) and restricts joins; power-level changes restored on exit including Ctrl-C.synapse-make-admin.pyraises PL 100 permanently.synapse-search.pycannot read E2EE — empty ≠ no messages.rooms.jsonexposes user IDs; never commit it.
References
references/synapse-admin-api.md— endpoints + upstream docsreferences/room-health-checks.md— rules + remediationreferences/room-graph-pipeline.md— Docker dashboard recipereferences/safety-guide.md— destructive-op checklist- Source: netresearch/matrix-skill
What ships with it: 27 files
83.1 KB alongside SKILL.md, 20 of them executable
evals/
- evals.json4.5 KB
references/
- room-graph-pipeline.md2.8 KB
- room-health-checks.md2.8 KB
- safety-guide.md3.3 KB
- synapse-admin-api.md3.9 KB
scripts/
- _lib/admin_http.pyruns4.8 KB
- _lib/colors.pyruns1.1 KB
- _lib/condensing.pyruns4.1 KB
- _lib/config.pyruns2.5 KB
- _lib/__init__.pyruns850 B
- _lib/pretty_bytes.pyruns1.4 KB
- _lib/rating.pyruns6.3 KB
- synapse-add-to-space.pyruns2.0 KB
- synapse-biggest-rooms.pyruns1.8 KB
- synapse-deactivate-user.pyruns2.6 KB
- synapse-fetch-rooms.pyruns3.1 KB
- synapse-graph.pyruns5.5 KB
- synapse-join-room.pyruns1.3 KB
- synapse-make-admin.pyruns1.4 KB
- synapse-migrate-room.pyruns9.9 KB
- synapse-rate-rooms.pyruns2.9 KB
- synapse-room-member-flow.pyruns3.6 KB
- synapse-search.pyruns2.7 KB
- synapse-user-admin-rooms.pyruns2.1 KB
- synapse-user-rooms.pyruns1.6 KB