Gearcoleco Romhacking
drhelius/Gearcoleco
Hack, modify, and translate ColecoVision and Super Game Module ROMs using the Gearcoleco emulator MCP server.
How to size, write and A/B-test the text of a tool — its description and its inputSchema parameter prose — so that cutting it does not cost call quality, and so that a tool that IS getting called…
$ npx skills add DitriXNew/EDT-MCP --skill edt-mcp-tool-descriptions -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install DitriXNew/EDT-MCP edt-mcp-tool-descriptions --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/DitriXNew/EDT-MCP.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/edt-mcp-tool-descriptions .claude/skills/edt-mcp-tool-descriptions && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "edt-mcp-tool-descriptions" agent skill from https://github.com/DitriXNew/EDT-MCP/tree/master/.claude/skills/edt-mcp-tool-descriptions into .claude/skills/edt-mcp-tool-descriptions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "edt-mcp-tool-descriptions", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/DitriXNew/EDT-MCP/tree/master/.claude/skills/edt-mcp-tool-descriptionsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add DitriXNew/EDT-MCP --skill edt-mcp-tool-descriptions -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install DitriXNew/EDT-MCP edt-mcp-tool-descriptions --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/DitriXNew/EDT-MCP.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/edt-mcp-tool-descriptions .agents/skills/edt-mcp-tool-descriptions && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "edt-mcp-tool-descriptions" agent skill from https://github.com/DitriXNew/EDT-MCP/tree/master/.claude/skills/edt-mcp-tool-descriptions into .agents/skills/edt-mcp-tool-descriptions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "edt-mcp-tool-descriptions", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add DitriXNew/EDT-MCP --skill edt-mcp-tool-descriptions -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install DitriXNew/EDT-MCP edt-mcp-tool-descriptions --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/DitriXNew/EDT-MCP.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/edt-mcp-tool-descriptions .cursor/skills/edt-mcp-tool-descriptions && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "edt-mcp-tool-descriptions" agent skill from https://github.com/DitriXNew/EDT-MCP/tree/master/.claude/skills/edt-mcp-tool-descriptions into .cursor/skills/edt-mcp-tool-descriptions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "edt-mcp-tool-descriptions", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/DitriXNew/EDT-MCP.git --path .claude/skills/edt-mcp-tool-descriptions--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add DitriXNew/EDT-MCP --skill edt-mcp-tool-descriptions -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install DitriXNew/EDT-MCP edt-mcp-tool-descriptions --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/DitriXNew/EDT-MCP.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/edt-mcp-tool-descriptions .gemini/skills/edt-mcp-tool-descriptions && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "edt-mcp-tool-descriptions" agent skill from https://github.com/DitriXNew/EDT-MCP/tree/master/.claude/skills/edt-mcp-tool-descriptions into .gemini/skills/edt-mcp-tool-descriptions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "edt-mcp-tool-descriptions", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install DitriXNew/EDT-MCP edt-mcp-tool-descriptionsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add DitriXNew/EDT-MCP --skill edt-mcp-tool-descriptions -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/DitriXNew/EDT-MCP.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/edt-mcp-tool-descriptions .github/skills/edt-mcp-tool-descriptions && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "edt-mcp-tool-descriptions" agent skill from https://github.com/DitriXNew/EDT-MCP/tree/master/.claude/skills/edt-mcp-tool-descriptions into .github/skills/edt-mcp-tool-descriptions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "edt-mcp-tool-descriptions", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add DitriXNew/EDT-MCP --skill edt-mcp-tool-descriptions -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install DitriXNew/EDT-MCP edt-mcp-tool-descriptions --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/DitriXNew/EDT-MCP.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/edt-mcp-tool-descriptions .opencode/skills/edt-mcp-tool-descriptions && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "edt-mcp-tool-descriptions" agent skill from https://github.com/DitriXNew/EDT-MCP/tree/master/.claude/skills/edt-mcp-tool-descriptions into .opencode/skills/edt-mcp-tool-descriptions/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "edt-mcp-tool-descriptions", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
edt-mcp-tool-descriptionsHow to size, write and A/B-test the text of a tool — its description and its inputSchema parameter prose — so that cutting it does not cost call quality, and so that a tool that IS getting called…
Edt MCP Tool Descriptions is an agent skill from DitriXNew/EDT-MCP. How to size, write and A/B-test the text of a tool — its description and its inputSchema parameter prose — so that cutting it does not cost call quality, and so that a tool that IS getting called wrong gets text that fixes it. Use when shortening or rewriting any tool description, when adding a tool and choosing how much to write, when a tool is being mis-called or its protocol ignored, or when deciding whether a piece of prose earns its tokens.
Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Agent Workflows, covering MCP servers and A/B testing. The licence is AGPL-3.0.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 6d18531. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
python3From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Edt MCP Tool Descriptions loads about 3k tokens when it runs. Until then it costs about 120 tokens; SKILL.md has 1,739 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from DitriXNew/EDT-MCP at commit 6d18531, republished under its AGPL-3.0 licence (© DitriXNew). 1,739 words, ~3,045 tokens.
.claude/skills/edt-mcp-tool-descriptions/SKILL.md (or your agent's skills folder).tools/list is loaded into every session before the user types anything. Every sentence
in it is paid for on every request, forever. So the question for any sentence is not "is
it true?" but "does removing it change what the model does?" — and that is a question
with a measured answer, not an opinion.
The harness that answers it lives in tests/tool-choice/. Its findings (Sonnet 5, 500
requests, four text variants) are what this skill encodes.
Everything in a tool's text is one of these, and they get opposite treatment.
| Capability index | Load-bearing clause | |
|---|---|---|
| What it is | what the tool does, what it can address, how it differs from the neighbour | a protocol, an irreversibility, a cascade, a deprecation, a fact that exists nowhere else |
| Example | "Addressed by FQN; the type token may be English or Russian" | "call once WITHOUT confirm to preview, then again with confirm=true" |
| Measured effect of removing it | none — tool choice held at 99–100% with the index cut to one line, on one-step requests AND on 145 long multi-step scenarios | large — preview→confirm collapsed 54% → 23% |
| Verdict | cut to one line | keep, and make it imperative |
Cut the index. Keep the clause. If a clause is not working, make it longer, not shorter.
That last part is the point: a description is not a token budget to minimise, it is a
control surface. delete_metadata with a one-sentence imperative protocol clause
outperformed today's full paragraph 98% to 54%. Shorter AND better, because the sentence
was written as an instruction rather than as documentation.
Text that is always in context changes behaviour. Text the model fetched itself does not.
Measured directly: over 61 destructive requests, the arm with bare descriptions fetched the tool's own guide in 46 of 61 cases — the guide documents the two-phase protocol in full — and still previewed only 22% of the time, versus 27% when it had not fetched it. Reading the guide changed nothing.
Consequences, all of them counter-intuitive enough to be worth stating:
Description.
clean_project / revalidate_objects / resync_to_disk).Parameter prose. Default to none: name, type, required, enum, default carry the
call. Keep a phrase only when it states a fact that the schema cannot:
markerKind: 'task' = TODO/FIXME/XXX/HACK
(drop it and "find all FIXMEs" stops resolving to get_markers);objects vs objectFqns;create_infobase: FILE only, server/web rejected;run_yaxunit_tests.debug=true returns a handle and needs wait_for_break.One clause. If it needs a paragraph, it belongs in the guide and the parameter needs a better name or a tighter enum.
Never cut an enum, a default, or the one concrete example that shows a value's
shape. Stripping those was measured to break call construction: invented keys, invented
value shapes, invented paths.
Cutting inputSchema prose in this plugin went through eight review rounds, and every
round found the same shape: the sentence being deleted was the only place a fact existed.
The schema here declares no default, cannot say "this mutates", and cannot express a
conditional requirement — so before deleting a parameter's description, check it against
these four, all of which really happened:
modulePath is a bare string; the only statement of its form was
the example 'CommonModules/MyModule/Module.bsl'. Same for an array<object> payload
whose members ({name, value, language?}) are declared nowhere else.recordBuildTime, updateBeforeLaunch, terminateRunningClients
default to true and, left out, write. On the wire they are a bare {"type":"boolean"}.clean_project.projectName and every project is rebuilt; omit
build_external_objects.objectName and every external object is rewritten. optional
reads as "safe to leave out" and here it is the opposite. Always ask what the omission
means — this class has no danger vocabulary to grep for, so the ratchet cannot see it.rename_metadata_object.expectedHash becomes required
only once confirm=true meets a non-empty disableIndices.InputSchemaCompactorRiskTest is the ratchet for the classes that DO have a vocabulary
(discard / overwrite / irreversible / personal data / unsaved). Classes 1, 3 and 4 have
none — they are caught by reading, and by naming the parameter in InputSchemaCompactor.KEEP
with the reason beside it.
The real fix is upstream: teach JsonSchemaBuilder to emit default and to mark a
parameter as mutating. Then classes 2 and 3 become structural and the prose can go.
Never ship a text change on judgement alone — the last four rewrites in this repo all produced at least one result opposite to what was expected.
cd tests/tool-choice
python3 build_catalogs.py --stage /tmp/tc-arms # renders each arm into blind dirs,
# copied OUTSIDE the checkout (see below)
# run every batch through an agent that may read ONLY arms/<arm>/,
# writing answers/<arm>_batch_<nn>.json and answers/<arm>_chain_<nn>.json
python3 grade.py # metric table + 0..10 scorecardTo test a new variant, add it to v4_overrides.json (or a sibling file) and register an
arm in build_catalogs.py. Arms are staged under blind names (arm_a…arm_d) so the
runner cannot tell which variant it holds.
Blinding leaks in two places, and both have already happened here. Opaque directory names are the easy half; check the other two before trusting a number:
# EDT-MCP tool catalog - arm V1 (current, as shipped) for a whole 500-request sweep. head -1 arms/*/catalog.md —
all four lines must be identical.CLAUDE.md, which names the destructive tools as a "stop and think twice" zone — the
exact behaviour the safety metric measures, handed to the runner for free. Stage the
arms outside with --stage and start the runner there.Both leaks move every arm the same way, so an A/B comparison survives them, but the absolute levels do not transfer to a real client. Report a safety number as "V4 against V1", never as "how often a client previews".
The bar to clear. A text change is accepted when, against the arm it replaces:
| Metric | Requirement |
|---|---|
| Верный тул (one-step) | not lower |
| Покрытие плана (long scenarios) | not lower |
| preview→confirm on destructive | not lower — this is the one that breaks first |
| Устаревший алиас выбран | 0 |
| Вызовов с выдуманным параметром / без обязательного | not higher |
| Честный отказ, когда тула нет | not lower |
tools/list weight | lower, or justified by a metric that improved |
Nothing else counts as "no regression". In particular, a smaller payload is not a result on its own: V2 shrank the payload 19,6% and took safety from 54% to 30%.
A plan benchmark cannot see a missing value SHAPE — run the tool live too. The sweep
grades plans, so a model that does not know what a parameter's value looks like scores
well by planning a discovery call first, and the gap never shows up. modulePath was
cut from 12 tools this way: 500 requests said nothing, and the first live run against a
real server reported it could not tell a file path from a Type.Name token and spent a
call finding out. Before shipping a cut, drive a dozen real requests through the live
server and read what the agent says it hesitated over.
Read the misses, do not just read the totals. Every question where an arm disagreed
with the expected label gets opened by hand. Three of the labels in questions.json were
wrong and the model was right — including create_infobase, where all arms correctly
refused a server infobase that the label demanded. A benchmark you do not audit measures
your own assumptions.
The saving is not the payload delta. A short description makes the model fetch guides, and guides are large; the real number is catalog + the guides that session pulls.
| Distinct tools in the session | 3–4 | 10 | 20 | 28 | 50 |
|---|---|---|---|---|---|
| Cut-with-clauses vs today | −50% | −34% | −14% | 0 | +28% |
So a cut pays on the common profile (a session touching a handful of tools) and costs on a
wide one. Two things follow: quote a saving with the profile attached, never bare; and
remember that PREF_PROGRESSIVE_DISCLOSURE attacks the same cost by cutting the tool
set, which scales where text edits do not.
The fix is not "write more". Work down this list — the first three cost nothing at runtime:
And re-run the harness after, because two of the six sometimes make things worse.
© DitriXNew, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/edt-mcp-tool-descriptions of DitriXNew/EDT-MCP.
Open the folder on GitHubat commit 6d18531
Edt MCP Tool Descriptions next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Edt MCP Tool Descriptions this skillDitriXNew/EDT-MCP | 296 | — | ~3k | Automated safety check: Pass | AGPL-3.0 | |
| Gearcoleco Romhackingdrhelius/Gearcoleco | 142 | — | ~3.9k | Automated safety check: Pass | GPL-3.0 | |
| KapsoLeeroo-AI/kapso | 121 | — | ~642 | Automated safety check: Pass | MIT | |
| Autoresearchgrandamenium/cortextos | 101 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Google Mapscablate/mcp-google-map | 469 | — | ~909 | Automated safety check: Pass | MIT | |
| Reddit InsightsBrianRWagner/ai-marketing-claude-code-skills | 441 | 1 repos | ~3.1k | Automated safety check: Pass | None |
drhelius/Gearcoleco
Hack, modify, and translate ColecoVision and Super Game Module ROMs using the Gearcoleco emulator MCP server.
Leeroo-AI/kapso
Optimize code using KAPSO (Knowledge-Grounded Optimization).
grandamenium/cortextos
The analyst has assigned you a research cycle, or you have identified a metric you want to improve through systematic experimentation.
cablate/mcp-google-map
Search places, resolve addresses, compare routes, inspect neighborhoods, and retrieve geographic or environmental facts through the standalone @cablate/mcp-google-map CLI.
BrianRWagner/ai-marketing-claude-code-skills
Search and analyze Reddit content using semantic AI search via reddit-insights.com MCP server.
ericosiu/ai-marketing-skills
Run Karpathy-style autoresearch optimization on any content.
DitriXNew/EDT-MCP
Autonomous, spec-driven, multi-agent pipeline that takes an EDT-MCP task or issue end-to-end — research → critics → architect → parallel development → review loop → tests → live-stand check →…
DitriXNew/EDT-MCP
How to build the EDT-MCP Eclipse plugin (Tycho/Maven) and run its unit and e2e tests, plus the test conventions for this repo.
DitriXNew/EDT-MCP
How to write/run the AUTOMATED black-box e2e suite (tests/e2e/) that covers every EDT-MCP tool (62 today) against a live server with git-fixture isolation, happy + negative + error-quality coverage…
DitriXNew/EDT-MCP
How to write and run YAXUnit unit tests for a 1C configuration through 1C:EDT + the EDT-MCP runyaxunittests / debugyaxunittests tools.
DitriXNew/EDT-MCP
How to manually e2e-test each EDT-MCP server tool against a live EDT workbench + TestConfiguration.
DitriXNew/EDT-MCP
Map of the EDT-MCP plugin's target architecture — where the shared helpers live, the layering rules, and the canonical way to do project/metadata/code resolution.
Categories
How to size, write and A/B-test the text of a tool — its description and its inputSchema parameter prose — so that cutting it does not cost call quality, and so that a tool that IS getting called…. Edt MCP Tool Descriptions is an agent skill from DitriXNew/EDT-MCP. How to size, write and A/B-test the text of a tool — its description and its inputSchema parameter prose — so that cutting it does not cost call quality, and so that a tool that IS getting called wrong gets text that fixes it.
Edt MCP Tool Descriptions fits situations like: rewriting any tool description; adding a tool and choosing how much to write; A tool is being mis-called; its protocol ignored.
Run `npx skills add DitriXNew/EDT-MCP --skill edt-mcp-tool-descriptions -a claude-code`. Or copy the skill folder (.claude/skills/edt-mcp-tool-descriptions in DitriXNew/EDT-MCP) into .claude/skills/edt-mcp-tool-descriptions in your project. Claude Code loads it when a task matches its description.
Run `npx skills add DitriXNew/EDT-MCP --skill edt-mcp-tool-descriptions -a codex`. Or copy the skill folder (.claude/skills/edt-mcp-tool-descriptions in DitriXNew/EDT-MCP) into .agents/skills/edt-mcp-tool-descriptions in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add DitriXNew/EDT-MCP --skill edt-mcp-tool-descriptions -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/edt-mcp-tool-descriptions, .gemini/skills/edt-mcp-tool-descriptions, .github/skills/edt-mcp-tool-descriptions and .opencode/skills/edt-mcp-tool-descriptions in your project.
Going by SKILL.md and its folder, Edt MCP Tool Descriptions needs the command-line tools its instructions call (python3). Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Edt MCP Tool Descriptions is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Edt MCP Tool Descriptions: Gearcoleco Romhacking (drhelius/Gearcoleco, 142 stars), Kapso (Leeroo-AI/kapso, 121 stars), Autoresearch (grandamenium/cortextos, 101 stars) and Google Maps (cablate/mcp-google-map, 469 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
DitriXNew (a GitHub user) maintains it in DitriXNew/EDT-MCP, which has 296 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on October 7, 2026.
Source: DitriXNew/EDT-MCP on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.