Skip to main content
Glama

arno.declare_command

Destructive

Declare reusable commands in .arno/commands.json to run them later with run_command. Replace or remove named commands; the file is reviewed like any change.

Instructions

Declare a named command in .arno/commands.json — a reproduction, a benchmark — to run with run_command in this and later sessions; the file is reviewed like any change. Declaring an existing name replaces it; do not redeclare one just to run it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
runNoShell command to run from the workspace root.
kindNoOptional: lint or codegen; check with that kind runs it.
nameYesCommand name: lowercase letters, digits, ':', '_' or '-'.
removeNoDelete the named command instead of declaring it.
descriptionNoOptional note on what the command is for.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.0.12

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses the key destructive behavior—'Declaring an existing name replaces it'—which goes beyond the destructiveHint annotation. It also notes the file is 'reviewed like any change', implying persistence and code-review implications. This is useful behavioral context.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that states purpose, scope, and caution without any waste. It is efficient and immediately conveys the tool's core function and constraints.

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

Completeness4/5

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

The tool has 5 parameters but only 1 required, and the description covers the essential behavioral aspects: persistence, replacement, and the caution against unnecessary redeclaration. It does not describe return values, but no output schema exists, and for a side-effect-heavy tool the main concerns are addressed. It is complete enough for an agent to call correctly.

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

Parameters3/5

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

Schema coverage is 100% with all parameters described. The description adds context about the 'name' parameter (replacement behavior) but does not elaborate on other params. Since the schema already explains them, the description provides minimal extra value beyond the overall purpose.

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

Purpose5/5

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

The description clearly states the action ('Declare a named command') and the target resource ('.arno/commands.json'), and differentiates it from run_command by noting the command is for later use. It also gives context (reproduction, benchmark) that helps an agent understand its role.

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

Usage Guidelines4/5

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

It explicitly says the command is 'to run with run_command in this and later sessions', indicating when to use it, and warns 'do not redeclare one just to run it', which is a clear when-not. It doesn't name alternative tools, but the context makes the intended use unambiguous.

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