dream docs

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.

CommandDoes
dream member show @ai/teslaone 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
CommandDoes
dream card listall cards: state, team, holder, machine, last activity, scope
dream card new -team t ...a card only team t's members are offered
dream card nexttake the oldest ready card your skills cover
dream card show k-1one 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 rclose 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.

CommandDoes
dream plan list / plan show p-1 / plan status p-1plans, one plan, its progress
dream plan queue @ai/teslaone member's queue
dream plan queue -backlogopen cards on no queue
dream plan assign k-1 @ai/tesla -rank 1put a card on a queue (rank 1 first)
dream plan rank k-4 1move it in its queue
dream plan unassign k-3take it off its queue
dream plan next -member @ai/teslatake 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.