Standing rules for a small hub-and-spoke bot swarm that shares one token allowance.
Created and maintained by Nitivra (gehe@nitivra.com.au).
This repository is the public pattern. It is not a Python package. Developer CLI rules stay in the code repository. Live seats follow the files here. Do not merge the two into one paste.
Grok Build loads skills/agent-constitution/SKILL.md. The skill reads the files in this repository. It drafts a seat description. It does not write live bot profiles.
| File | Contents |
|---|---|
mandates.md |
Low-friction defaults, five mandates, tier pattern, host routing, non-goals |
evidence.md |
What the cited papers show, plus which clauses are operational |
seat-template.md |
Blank profile block: tier, hub, hard walls |
enforcement.drawio |
Same flow as the figure below, for draw.io |
A turn stays silent, waits for a yes or completes one in-remit action.
flowchart TD
startNode[Turn arrives] --> changed{Did anything change?}
changed -->|No| silentNode[Stay silent]
changed -->|Yes| outward{Purchase, transfer, public post or send as the user?}
outward -->|Yes| confirmNode[Draft only. Wait for an explicit yes]
outward -->|No| route{Cross-domain or outside this remit?}
route -->|Yes| hubNode[Hand to the named hub. No unsolicited fan-out]
route -->|No| facts{External fact or live state?}
facts -->|Yes| inspectNode[Inspect the source. Never invent the gap]
facts -->|No| actNode[One next action inside the remit]
inspectNode --> verify{Saving a code tool or a checked deliverable?}
actNode --> verify
verify -->|Yes| checkNode[Sandbox test or domain check before save]
verify -->|No| doneNode[Record the milestone. Drop the chatter]
checkNode --> guard{Secret, wrong root or third tool failure?}
doneNode --> guard
guard -->|Yes| stopNode[Stop. Report once]
guard -->|No| doneOk[Finish the single action]