npm/neonctlneon
unknown flag exits non-zero: exit 0 — SILENT FAILURE, a hallucinated flag reads as success
npm/neonctlagent trajectory
Awaiting three identical trials
Deterministic observations can identify likely friction, but they cannot license the claim that an agent passed or failed.
deterministic evidence · not the rank
Every check, its evidence, and the fix
N/A is excluded from both numerator and denominator. Open a check to inspect what the probe observed.
Legibility
can an agent learn this tool from its own surface?
failD1.1machine-readable schema (`schema` / `--describe` returns JSON)0/8
no capability document; agent must parse help prose
Add a `schema` or `--describe` command that prints the complete command, option, input, and output schema as JSON.
failD1.2exposes an MCP surface0/4
no
Expose the same command surface as MCP tools over stdio and make `tools/list` work without credentials.
passD1.3help contains usage examples3/3
yes
Structured I/O
is the output machine-parseable?
failD2.1documents a JSON output mode0/10
no machine-parseable output documented
Add and document `--json` or `--output json`, then keep its keys and types stable for scripts and agents.
passD2.2no ANSI escapes when the stream is piped5/5
clean
failD2.3has a quiet mode0/5
no
Add `--quiet` (or `--no-progress`) so stdout can contain only the requested result.
Non-blocking
does it ever hang when no human is present?
passD3.1does not hang when stdin is a non-delivering pipe8/8
ok
passD3.2--help does not hang4/4
ok
failD3.3documents a non-interactive escape hatch0/4
no
Document a non-interactive mode that supplies defaults or exits with an actionable error whenever input is missing.
passD3.4cold invocation under 3s4/4
0.41s
Context economy
how many tokens does it cost to use?
partialD4.1help fits an agent context budget3/8
4258 bytes (~1065 tokens)
Keep top-level help concise and move detail into subcommand help or machine-readable schema output.
passD4.2does not reprint full help on every mistake7/7
39 bytes
Safety rails
can an agent preview before it destroys?
failD6.1offers a dry-run0/5
no
Add `--dry-run` to mutating commands; validate locally and print the exact planned changes without making network calls.
failD6.2offers an explicit confirmation bypass0/5
no
Add an explicit `--yes` confirmation bypass that is safe to use only when every required value is supplied.
Error recovery
does a mistake produce an honest, actionable signal?
passD7.1unknown subcommand exits non-zero8/8
exit 1
failD7.2unknown flag exits non-zero0/8
exit 0 — SILENT FAILURE, a hallucinated flag reads as success
Reject unknown flags with a non-zero exit code; never silently ignore an agent-hallucinated option.
passD7.3error message is terse4/4
39 bytes
Cold credentials
can an agent get authenticated without a human?
failD9.1names its credential env var in its own help surface0/6
agent must already know the variable name; undiscoverable from --help
Name the supported credential environment variable in `--help`, including its precedence over config files.
failD9.2offers a no-account or temporary-account path0/8
no; the agent stops at the signup wall
Offer a documented temporary, guest, or claim-later path so a cold agent can complete one useful task without signup.
failD9.3does not launch a browser auth flow in a headless context0/6
launches a browser OAuth flow with no TTY
In headless mode, accept a token or device code and print a URL; never launch a browser or wait for an invisible callback.