Members, roles, plans, chat
Members
dream member list
@ai/curie Marie Curie ai lead
@ai/lovelace Ada Lovelace ai ux
@ai/hopper Grace Hopper ai frontend
@ai/tesla Nikola Tesla ai backend
@ai/turing Alan Turing ai security
@ai/feynman Richard Feynman ai qa
you you person -
Every project starts with these; you are the owner. dream member init puts the defaults back.
dream member tree
you (owner)
@ai/curie (Marie Curie, ai, lead)
@ai/lovelace (Ada Lovelace, ai, ux)
@ai/hopper (Grace Hopper, ai, frontend)
@ai/tesla (Nikola Tesla, ai, backend)
@ai/turing (Alan Turing, ai, security)
@ai/feynman (Richard Feynman, ai, qa)
Who reports to whom.
dream member add @ai/noether -kind ai -role backend -skills go-team
{"id":"noether","handle":"@ai/noether","name":"noether","kind":"ai","roles":["backend"],"grants":{"skills":["go-team"]}}
Adds a member. Grants: -skills, -tools, -hooks, -rules, -guidelines (record ids). Also -name, -model, -session-limit.
| Command | Does |
|---|---|
dream member show @ai/tesla | one member, its roles and grants |
dream member edit <member> [flags] | change it |
dream member rename <member> <new-id> | rename it |
dream member rm <member> | remove it |
dream member assign <member> <role> | give it a role |
dream member unassign <member> <role> | take a role away |
Roles
dream role list
lead Lead @ai/curie
ux UX @ai/lovelace
frontend Frontend @ai/hopper
backend Backend @ai/tesla, @ai/noether
security Security @ai/turing
qa QA @ai/feynman
dream role add docs -title "Docs writer" -tools gofmt-check
dream role assign docs @ai/noether
@ai/noether: roles backend, docs
A role carries grants like a member. A member gets its own grants plus its roles'. role edit, role rm, role unassign change them.
Cards
dream card new -scope '*.go' -spec "add a sum function" "Add sum"
k-1 ready -: Add sum [*.go]
A card is a unit of work. A submit tied to it may only touch -scope.
dream card take k-1
dream change new sum -card k-1
dream submit -m "add sum"
k-1: Add sum
add a sum function
scope: *.go (a submit outside it is refused)
next: work in a workspace, dream save, then dream submit -m msg; the submit closes k-1. The take lapses after 30m0s without activity.
Takes the card, starts a change for it, lands it. The submit closes the card. A take lapses after 30 minutes without activity.
dream card list
ID STATE TEAM HOLDER MACHINE ACTIVE SCOPE GOAL
k-1 done - you - - *.go Add sum
| Command | Does |
|---|---|
dream card list | all cards: state, team, holder, machine, last activity, scope |
dream card new -team t ... | a card only team t's members are offered |
dream card next | take the oldest ready card your skills cover |
dream card show k-1 | one card with its notes |
dream card find <text> | cards by words or meaning |
dream card note k-1 "text" | add a note |
dream card done k-1 / card cancel k-1 -reason r | close it |
dream card handoff k-1 [member] | pass it on, or back to ready |
Plans
plan.json:
{"goal": "Add a sum command", "lanes": [
{"team": "tesla", "cards": [
{"goal": "Add sum()", "scope": ["*.go"]},
{"goal": "Add the sum CLI", "scope": ["cmd/**"], "needs": [0]}]},
{"team": "qa", "cards": [
{"goal": "Test sum", "scope": ["*_test.go"], "needs": [0]}]}]}
A lane's team is a member id (tesla) or a role (qa, its first holder). needs lists earlier cards by index (from 0, across lanes) or k-N.
dream plan new -file plan.json
p-1 draft: Add a sum command
team tesla
0. Add sum()
1. Add the sum CLI (needs 0)
team qa
2. Test sum (needs 0)
dream plan accept p-1
p-1 accepted: Add a sum command
team tesla
0. k-2
1. k-3 (needs 0)
team qa
2. k-4 (needs 0)
channel: #plan-app-p-1
Files the cards, puts them on each member's queue in order, and posts the plan in its channel.
dream plan queue
queue @ai/feynman
1. k-4 draft -: Test sum [*_test.go] (needs k-2)
queue @ai/tesla
*1. k-2 ready -: Add sum() [*.go]
2. k-3 draft -: Add the sum CLI [cmd/**] (needs k-2)
Each member's queue by rank; * is ready. A card turns ready when what it needs is done.
| Command | Does |
|---|---|
dream plan list / plan show p-1 / plan status p-1 | plans, one plan, its progress |
dream plan queue @ai/tesla | one member's queue |
dream plan queue -backlog | open cards on no queue |
dream plan assign k-1 @ai/tesla -rank 1 | put a card on a queue (rank 1 first) |
dream plan rank k-4 1 | move it in its queue |
dream plan unassign k-3 | take it off its queue |
dream plan next -member @ai/tesla | take the member's first ready card |
Chat
dream chat
channel:general 0 unread
channel:plan-app-p-1 0 unread
channel:team-qa 0 unread
channel:team-tesla 0 unread
Rooms with unread counts. A room is #name, card:<project>/k-N or dm:<id>,<id>.
dream chat post '#general' "@ai/tesla k-3 is unblocked"
m-4 note you 10-20 06:14 @ai/tesla k-3 is unblocked
Posts. @ai/<name> tags a member: a running one sees it at once; one that isn't running is woken by dream worker. -type question and -reply m-N are optional.
dream chat read '#general'
dream chat wait '#general'
The last messages (marks them read); wait for the next post in a room (default: any channel or your DMs).
dream chat wait -mentions -timeout 10m
channel:general m-13 tesla: @you k-3 needs a review
Waits until someone else's post tags you (@you, your team, your machine, @all) and prints it as one line. Your own posts don't wake it.
dream inbox list
i-3 open mention app @you ai/hopper is idle and ai/curie (lead) has no ready backlog card for it. Give it work: dream plan assign <card> hopper [-session new|keep], or dream plan draft <goal>
Mentions and asks waiting on you.
Next: AI work.