Skip to main content
Glama

Keep a lesson learned here

godot_lesson_add
Idempotent

Store a reusable lesson from this project so godot_check and godot_lessons surface your fix the next time the same Godot message or question appears.

Instructions

Keep a lesson you learned in this project, so Godotwright (and the next session) knows it: when the same Godot message or question comes back, godot_check and godot_lessons show your fix. Write it in general words: title is the lesson in one line, fix what to do; add symptom, cause, error (the Godot message as printed, kept as a template), topic, tags, rules and test when you can. Names of this project (classes, nodes, files, its title), paths, links, e-mail addresses, codes, keys and source code are replaced before anything is stored; a lesson that is mostly names is refused with what to change. The same title again updates that lesson. It writes only to the local learning file and is never sent; godotwright lessons export prints these lessons for a person to propose for everyone. Add one whenever a fix took more than one try, and not for what a review rule already reports. Returns the stored lesson and what was replaced; an error when it is refused or learning is off.

Input Schema

NameRequiredDescriptionDefault
fixYeswhat to do instead
tagsNowords to find it by
testNohow to test it
causeNowhy, in Godot terms
errorNothe Godot message it explains, as printed
rulesNoreview or model rule ids it belongs to
titleYesthe lesson in one line, e.g. 'A body placed on a moving deck must start at the deck speed'
topicNodefault gdscript
symptomNowhat went wrong, as it showed

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.2.2

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare non-read-only, idempotent, non-destructive, closed-world; the description adds substantially more: redaction of names/paths/links/emails/keys/source before storage, refusal for name-heavy lessons, dedup-by-title behavior, local-only storage never sent anywhere, and the error conditions (refused, learning off). This is behavior an agent cannot infer from the annotations.

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?

Front-loaded with the core action and the payoff, with no filler sentences. It is a dense single block covering purpose, field guidance, privacy, dedup, side effects and return values — all relevant, though splitting privacy/return details would aid scanning.

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?

With nine parameters and no output schema, the description covers what is returned ('the stored lesson and what was replaced'), the failure modes, the privacy transformation, and the upsert rule. An agent has everything needed to call it correctly and interpret the result.

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 coverage is 100%, so the baseline is 3, but the description adds guidance the schema lacks: write in general words, title is one line, fix is what to do instead, and `error` should be 'the Godot message as printed, kept as a template'. It also states which fields are optional and worth filling 'when you can'.

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?

States a specific verb and resource — keep/store a lesson learned in this project — and distinguishes itself from godot_lessons (which shows lessons) and godot_check. The upsert semantics ('same title again updates that lesson') further sharpen what the call does.

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?

Explicitly says when to use it ('Add one whenever a fix took more than one try') and when not to ('not for what a review rule already reports'), and names the sibling tools whose output it feeds (godot_check, godot_lessons).

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