Borago Board logo Borago Board

Home / Docs / Tutorials

Plan a feature with chat, then run the cards

Talk a feature through in Borago Board's chat, let it read the repository, approve the tasks it proposes, and watch the queue run them in the declared order.

A run in Borago Board has no session resume, so a task that discovers a missing decision halfway through pays for a discarded run and a second one. Chat moves that discovery to before anything runs. This tutorial takes one feature from a sentence to a set of ordered cards. The chat reads the repository, proposes tasks with their order, you keep the ones you want, and the queue runs them so that nothing starts before the work it depends on is done.

You will build

A conversation in the chat panel that has read the project's code, about four approved tasks in the Planning column, each later one carrying a Depends on: line with a task mention chip, and the same tasks run by the queue in dependency order.

You need

  • A project with a repository, a running container and a working provider, see Creating a project and Choosing an AI provider.
  • Plan tasks by chatting ticked on the project's AI Roles tab, which is the default. The Chat role there picks the model the conversation uses.
  • A feature in mind that touches more than one part of the code. The example below adds a CSV export to a list page. Change the wording to fit your project.

Steps

1. Open the chat

With the project selected, press the round button at the bottom right of the board, or the toolbar button whose tooltip reads Plan tasks with AI. A panel with that heading docks in the corner.

What happens. The panel floats over the board rather than blocking it, so you can read the cards while you talk. Clicking the board does not close it. Your draft and the open conversation are kept per project and come back when you reopen the panel.

2. Grant it the repository and describe the feature

Type the message below, adapted to your project, and press Enter. Start it with @/, followed by a space.

@/ I want to add a CSV export to the orders page. Read how the page loads
and filters its data first. The export should use exactly the filters the
page is showing, download a file named orders-YYYY-MM-DD.csv, and come with
a test. Ask me anything you need to decide before we split it up.

A Thinking line shows while the reply is written. Answer its questions in the same box until the shape of the work is clear.

What happens. @/ is the grant. With it in the conversation, the chat may search, read and list files inside the project container through read-only tools, within a bounded budget per message. It cannot write, run commands or change anything. The grant lasts for the whole conversation because the mention stays in it, and deleting the mention removes it. @/src/orders/ would point it at a place to start, but a path is a hint, never a fence. Without a @/ mention nothing is read and nothing is spent on reading. The container must be running. Every turn and every reading round is priced at the Chat role's model and counts toward the project's cost budget.

3. Ask for about four ordered tasks

Send one more message, then press Create tasks:

When you propose the tasks, aim for about four, each one finished and
tested on its own, and say which ones must wait for another to be done.

A Working out the tasks line shows, then a list headed with the count, such as 4 tasks proposed. Edit or deselect before creating.

What happens. Each description is written to stand on its own, and never contains the conversation, because a description is re-read on every turn of the run that follows. Where one task must follow another, the chat declares the order. If the conversation is not yet concrete, the panel says Nothing concrete to create yet. Keep talking it through. and you carry on talking. At most 8 tasks are proposed at once, and the chat may propose fewer than you asked for, as the next step explains.

4. Read the sizes and the models

Read the line above the list. It says which model the tasks were sized for and what the chat aimed at, for example few, large tasks, or small, tightly scoped tasks. Some rows carry a model name with the words chosen for this task and a link, Use the project default.

What happens. Size depends on the model that will run the tasks. There is no session resume, so every task pays again to read the code it works on, and the chat sizes the tasks with that in mind. A row can also carry a model chosen for that one task. A row with no model chip runs on the project default. Press Use the project default on any row to undo the choice.

5. Re-ask at another size if you want

If the list is not about four tasks, press Fewer, bigger or More, smaller beside the sizing line.

What happens. Each press asks again at the next grain, from the same conversation, for one more model call. A button is hidden when there is no grain further in that direction. The order is worked out again with the new list.

6. Deselect one and approve

Edit any title or description in place. Untick the proposal you are least sure of. Press Create 3 tasks. The button's number is the count still ticked.

What happens. Nothing reaches the board until you press that button. The tasks are created exactly as shown, owned by the board, in the Planning column, and a note is added to the conversation recording what came out of it. Tasks created from chat are not sent to the pre-run review, because the board does not review its own output. The order was worked out for the whole list and follows the tasks you keep. A task that depended on the one you unticked loses that dependency, because the unticked task is never created. Its other dependencies still point at the right tasks.

7. See the order on the cards

Open each new card. A task that must wait ends with a line such as Depends on: followed by a task mention, for example @#14, drawn as a chip. Clicking the chip opens that task.

What happens. The order is an ordinary task mention in the description, the same thing you would type yourself, so it is visible, it syncs with the description, and it is removed by deleting the line. The chat's order is a suggestion made visible, never a hidden rule. A mention of a task that no longer exists counts for nothing rather than holding the card for ever.

8. Move the cards to To Do and watch the order

Move all three cards to To Do, by dragging them or by opening each and pressing Move to Todo. Put the dependent card at the top of the column on purpose.

What happens. The queue runs one task per project at a time, taking the To Do cards in the order they sit in the column. A card whose prerequisite is not finished is passed over, and shows Waiting for with the prerequisite's number as a chip. So the first card that can start does, even though the dependent one is above it. When a task reaches Done, the queue looks again, and the waiting card starts once everything it names is finished. Done, Canceled or closed satisfy a prerequisite. Blocked does not, because a blocked prerequisite is the clearest sign the work that depends on it is not ready. If every card in To Do is waiting, for example because a prerequisite was left in Planning, the column shows a banner headed Auto-run paused - waiting on a prerequisite naming the task it waits for. Move that task to To Do, and the queue carries on. Pressing a card's own run button is never held by a prerequisite. Only the queue is.

Check it worked

The three tasks end in Done, in an order where each ran after the tasks named in its Depends on: line. Each finished card goes to the top of the Done column, so the last to finish is on top. The task dialog's history shows when each run started and finished. The conversation is still in the chat panel with a note listing what was created, and New conversation starts the next one.

Where to go next

Related: Chat to tasks, Writing tasks the agent can do, The queue and its holds, Cost and usage, Run tasks on a local model with Ollama

Source as Markdown: /docs/tutorials/plan-with-chat.md · Updated 2026-10-07 · Was this right? Tell us