nc://staff

v0.1.0Pinned
ThomSharktools/nodecode-staff: A roster of specialists the model assigns one-shot briefs to, a job board, and a handoff to a coworker. - a rewrite of leoresendedop-sys/grokbot-staff (MIT), credited to leoresendedop-sysc9a3d2f· 9 Nov1 commit
test1 filebridge.lisp7.0 KBcell.lisp23.4 KBspecialists.lisp7.0 KBstore.lisp6.7 KB

nodecode-staff

Staff: a roster of specialists the model hands one brief at a time, a board of the jobs it gave them, and an optional handoff to a coworker outside the process. A Nodecode rewrite of leoresendedop-sys/grokbot-staff by leoresendedop-sys.

A specialist is instructions, not a process: one brief is one side call on your own model, with that role's system prompt, and you get the answer back whole. No session starts, no tool runs inside it, and nothing is remembered except the job on the board. Six roles come built in -- a chief of staff, a SaaS analyst, a design researcher, a vision-agent architect, a computer-vision researcher and a social-conversation researcher -- and you can replace them with your own.

staff_assign One specialist answers one brief: specialist, task, and optional title and context. The job and its answer stay on the board.
staff_status The roster, the recent jobs and how a handoff is configured; with a job id, that job whole.
staff_delegate The brief handed to a coworker over your webhook and/or a shared folder. Answers an id at once.
staff_collect The answer back: read from the shared folder, or pasted.
staff_handoffs The handoffs, pending, done or failed.
/staff The same five, typed: /staff, /staff status [job_id], /staff <specialist> <task>, /staff delegate <task>, /staff handoffs, /staff collect <job_id> [result].

Get it

Tell the agent "add the staff cell", or run nodecode add nc://staff.

Set it up

Nothing to obtain: the specialists answer on the model the session is already on, so there is no key to paste. The staff section of ~/.nodecode/config.jsonc (/settings in a shell, or the file) carries the rest, and all of it is optional:

"staff": {
  "specialists": [
    { "id": "ops", "title": "Ops lead", "focus": "runs the week",
      "prompt": "You run operations. Give the plan as days, with what is due when." }
  ],
  "inbox_dir": "~/CoworkerInbox",          // a shared folder the coworker reads
  "webhook_url": "https://your.host/hook", // your own webhook routine, POSTed JSON
  "state_dir": "~/staff",                  // where the board is kept
  "webhook_timeout_seconds": 15,
  "max_output_tokens": 1200
}

A roster you write replaces the built-in team whole; an entry needs an id of lower-case letters, digits, - and _ (at most 40), and may carry title, focus and prompt. The webhook URL may also come from the GROKBOT_STAFF_WEBHOOK_URL environment variable, which the original plugin read, so an existing setup keeps working. Without state_dir the board is one file, staff/jobs.json, under the Nodecode home.

Use it

staff_assign(specialist: "chief", task: "Ship a pricing page for three tiers by Friday.")
staff_assign(specialist: "saas", task: "Price three tiers against the two competitors in the thread.",
             context: "We sell to teams of 5-50; the CFO wants a floor of 30 EUR a seat.")

The first restates the goal as work items and names the specialist for each; the second answers with the analyst's own reasoning. staff_status reads either answer again, and staff_status job_id=<id> reads one whole.

Work that will outlive the turn -- research, something scheduled, a job that needs a bot of its own -- goes out with staff_delegate:

staff_delegate(task: "Research the last two quarter's competitor launches and write a page.",
               specialist: "saas")

It answers an id at once. With inbox_dir set, the brief is written as handoffs/<id>.json in that folder; with webhook_url set, it is POSTed there as JSON (https only, plain http for a loopback host). staff_collect then reads results/<id>.json, .md or .txt from the same folder -- a .json answers its result or text member -- or takes the answer pasted as result. With neither configured, a handoff says what to set and sends nothing, rather than pretending to have sent it.

What it does not do

It does not run a specialist as an agent: no tools, no session, no memory past the brief. It does not retry a handoff, poll, or keep a background worker: a handoff is one POST and/or one file, and you collect when the coworker has answered. Nothing is sent anywhere but the webhook and folder you name, and the status answer shows a configured webhook as scheme://host/..., so a token in its path or query never lands in a transcript.

License

MIT, the original's. The specialist personas and the bridge's rules are leoresendedop-sys's, rewritten in Common Lisp: see NOTICE and LICENSE.

Add nc://staff

  1. 1

    Install Nodecode

    Once per machine.

    $ curl -fsSL https://nodecode.ai/install.sh | sh
  2. 2

    Add the cell

    Pinned at c9a3d2f.

    $ nodecode add nc://staff

    Or tell the agent add the staff cell.