docs: add community-organizer protocol spec

Defines the vocabulary, NIP-52 event shapes, NIP-72 community model,
and lifecycle for a chat-captured + Nostr-stored community organizer
spanning the `tracker` maubot plugin (forthcoming) and renderers like
inky-impression.

Reuses existing standards (RFC 5545 VTODO, NIP-52, NIP-72,
ActivityStreams vocab) instead of inventing new event kinds, so other
communities can adopt the same shape and renderers interop across
implementations. Spec lands before any plugin code so the contract
isn't an after-the-fact derivation from the implementation.

CLAUDE.md + README now point at the spec as the source of truth for
verb/event/tag changes — future sessions update the spec first, not
the plugin code.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Padreug 2026-05-24 15:12:37 +02:00
commit 1f195fb36d
3 changed files with 685 additions and 4 deletions

View file

@ -11,6 +11,17 @@ castle hosts; the actual plugin code lives here.
|---|---|
| [`journal/`](./journal/) | Farm-journal bot. `!journal <text>` records what you did, scoped per-user/room/timestamp. `!journal show [@user]` and `!journal today` query back. |
## Community Organizer protocol
`docs/community-organizer-spec.md` defines the protocol the plugins in
this repo (and companion renderers like
[`inky-impression`](https://git.atitlan.io/aiolabs/inky-impression)) use
to coordinate community life — tasks, journals, reminders, shopping
lists — over Matrix capture + Nostr storage. Designed to be adopted by
other communities; reuses NIP-52 + NIP-72 instead of inventing new
event kinds. Read it before changing verb behavior or event shapes in
any plugin.
## Building a plugin
A `.mbp` is just a zip containing `maubot.yaml` + the plugin's Python