Skip to main content

Ask the product lead instead of guessing

Raise a thread from your terminal when the plan doesn't answer something, and read the answer when it comes.

Written by Jack Meyers

When the plan doesn't answer a product question, don't let your coding agent guess. A guess builds the wrong thing, and someone has to find it later. Raise a thread instead. Your product lead answers it in Grove, and your agent reads the answer.

Raise a thread for a product decision: what the product should do, or what the user should see. Decide technical questions yourself.

Raise a thread

grove thread raise P-003 --message "Can a customer move a visit to a different pro?"

Or ask your agent: "Ask the product lead in Grove whether a customer can move a visit to a different pro."

A thread can be about:

About

Add

The whole project

Nothing more.

One document

--document requirements.md

One passage in a document

--document requirements.md --quote "A visit can be moved at most twice."

For an initiative, use --initiative <slug> in place of the project ID.

The message can be any length, in Markdown. Grove keeps it exactly as written.

When it works, Grove prints Posted, the thread's ID, and a link.

Quote a passage

Quote the words as the document shows them, not the Markdown source. Write the scope is fixed, not the **scope** is fixed.

  • If the words appear exactly once, the thread is attached to that passage. Grove prints Anchored.

  • If the words aren't found, or appear more than once, the thread is still created, but not attached to the passage. Grove prints UNANCHORED and why. Don't raise it again.

If the words appear more than once, add --quote-before or --quote-after with the text just before or after them.

To test a raise without posting anything, add --dry-run.

Nobody is notified

Grove doesn't send a notification when you raise a thread. Your product lead sees it on their Queue and on the project's Threads page, as Unanswered. If it's urgent, send them the link Grove printed.

Who wrote it

When your coding agent writes the post, it adds --agent with its own name, such as --agent Claude. The post then shows as "Claude (on behalf of Sam)." Leave --agent off only when you typed the message yourself.

Read the answer

grove thread list P-003
grove thread show <thread ID>
  • grove thread list lists the project's threads: what each is about, whether it's open or settled, and how many posts it has.

  • grove thread show prints one thread with every post.

The last post in a settled thread is the answer. If the answer changes the plan, your product lead updates the plan too. Run grove project sync P-003 to get it.

Reply or close

grove thread reply <thread ID> --message "Done: the move screen now shows only this pro's times."
grove thread settle <thread ID> --message "Decided: same pro only."
  • A reply reopens a closed thread.

  • Posts can't be edited or deleted. Don't reply just to say "thanks."

  • Close a thread only when the decision is made.

If something goes wrong

  • Rejected: the thread wasn't created. Running the same command again fails the same way. Fix it first.

  • UNKNOWN: Grove couldn't tell if the thread was created. Run grove thread list P-003 before you try again. Raising it twice creates two threads.

Related articles

Did this answer your question?