Skip to main content
Glama

Record a decision

vivac_decide

Record a decision with its reason and each ruled-out alternative to prevent the same option being proposed again by people who missed the discussion.

Instructions

Record a decision, with the reason it was made and every alternative that lost. Call it the moment a choice is actually settled, not before and not long after: the alternatives are optional in the schema and not in practice, because without them the same option gets proposed again in a month by whoever was not in the room. When the project has pillars or rules, name in against the ones this was judged against, each with a sentence: a pillar judged in silence reads the same as one skipped.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
refNoPaths or identifiers this decision is about.
rootNoBorn at the root, with no parent, instead of under the focus. Refused together with parent.
titleYesThe decision, in a few words.
blocksNoIts parent cannot close while this one is still open.
parentNoThe node it hangs from. Defaults to the current focus, or the root if there is none.
reasonYesWhy this and not something else. A decision with no reason is a datum, not a decision.
againstNoA pillar or rule this was judged against and a sentence on how it holds, as one entry: "r12: the write path stays local". Repeat for each one. vivac checks that the pillar or rule exists and still governs; the sentence is not judged.
governsNoGlobs of files this decision's work is expected to touch.
supersedesNoAn earlier decision this one retires.
alternativeNoAn option that was ruled out. Repeat for each one.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.17.1

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover only the safety profile (readOnly=false, destructive=false, idempotent=false, openWorld=false), consistent with a write tool. The description adds behavior not in the annotations: vivac validates that each named pillar/rule 'exists and still governs' while the accompanying sentence is not judged — useful validation semantics for the `against` field. It does not discuss what happens on supersession or duplicate titles, so it isn't exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and timing rule, with the rationale ('proposed again in a month') following rather than leading. The closing line — 'a pillar judged in silence reads the same as one skipped' — is rhetorical but earns its place as a memorable rule of thumb; the surrounding prose is slightly dense but not padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, no-output-schema write tool with 100% schema coverage, the description supplies what the schema cannot: when to call it, why the soft-required fields matter, and how the `against` entries are validated. The remaining fields (ref, root, parent, governs, supersedes) are self-documented in the schema, so nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 and the schema already carries most field meaning. The description still adds real value beyond it by explaining that `alternative` is behaviorally mandatory despite being schema-optional, and by clarifying the intended content of `against` (a pillar id plus one sentence on how it holds).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'Record a decision, with the reason it was made and every alternative that lost.' That is unambiguous and tells an agent exactly what artifact gets produced, and the 'decision vs datum' framing subtly separates it from a plain note tool. It stops short of naming which sibling to prefer (vivac_note, vivac_declare), so a 4 rather than a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit timing rule — 'the moment a choice is actually settled, not before and not long after' — plus the operative constraint that alternatives are 'optional in the schema and not in practice,' with the consequence spelled out (the same option gets re-proposed in a month). This is exactly the when-to-use guidance an agent needs, including the counter-intuitive case where a schema-optional field is effectively required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.