Repository navigation
refactor(droid-control): read atoms as files, not listed skills - #53
Merged
Merged
Conversation
The ten atom skills (terminal-use, capture, compose, verify, ...) were
listed in every session's skill catalog even though only droid-control's
routing loads them. That cost about 1,700 characters of the listing
budget in every session with the plugin installed and pushed other
skills' descriptions out of it.
Atoms now live at skills/droid-control/atoms/<atom>/ATOM.md, which skill
discovery does not scan, and droid-control reads them by absolute path
through ${DROID_PLUGIN_ROOT}. The loader expands that variable to the
installed cache path, so the paths hold for any home directory, scope,
or cache version. Marking the atoms disable-model-invocation instead
would rely on the Skill tool not enforcing a flag whose documented
contract says it blocks the tool.
Bump the plugin to 1.2.0.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
What
droid-control's ten atoms (
terminal-use,true-input,browser-use,desktop-use,droid-cli,pty-capture,capture,compose,verify,showcase) are no longer skills. They move toskills/droid-control/atoms/<atom>/ATOM.md, anddroid-controlreads them by absolute path. A session with the plugin installed now lists one skill instead of eleven, which frees about 1,680 characters of the skill listing.Why
The CLI caps the skill listing at 1.5% of the compaction limit: 21,000 characters at 350k, and 15,000 at the 250k default. A skill whose description doesn't fit is listed as a bare name, and droids rarely load a bare name. The atoms used about 1,680 characters, although each description said "not invoked directly" and only droid-control's routing loads them. In a factory-mono session that space came out of the user's own skills: 55 of them were listed without descriptions.
How
Skill discovery stops at a directory that has a
SKILL.md, and the atom files are namedATOM.md, so no loader lists them. Ground rule 3 indroid-control/SKILL.mdnow says atoms are files:${DROID_PLUGIN_ROOT}/skills/droid-control/atoms/<atom>/ATOM.md, and never use the Skill tool for one.The plugin loader expands
${DROID_PLUGIN_ROOT}in skill bodies to the installed path. The atom paths therefore hold for~/.factoryor~/.factory-dev, for user, project, or org scope, and for any cache version. Theplatforms/*.mddocs were already loaded this way.Adding
disable-model-invocation: truewould also hide the atoms. The Skill tool would then still load them only becauseSkillExecutordoesn't enforce that flag, while the flag's documented contract says it blocks the tool. That would break as soon as the flag is enforced.Related Issue
No ticket. This came up while measuring skill-listing budget use for Factory-AI/factory-mono#24262.
Reviewer Guide
Diff shape: 16 renames that only drop frontmatter, routing wording in
droid-control/SKILL.mdand the three commands, and path updates in the docs.Review depth: Standard. It changes how prompts route to atoms, and that routing was verified in live sessions.
Read order:
plugins/droid-control/skills/droid-control/SKILL.md: ground rule 3 and the new Atoms index.plugins/droid-control/commands/*.md: "read listed atoms".plugins/droid-control/ARCHITECTURE.md: the atoms section and platform paths.Open for pushback:
atoms/<atom>/ATOM.mdkeeps each atom's relativeplatforms/links unchanged. A flatatoms/<atom>.mdlayout would be shorter, but those links would need rewriting.Risk & Impact
platforms/*.mdfiles already worked this way.user-invocable: falsealready hid the atoms from slash commands. Nothing in this repo, factory-mono, or ain3sh/.agents names them as skills.Verification
Behavior verified @
07208ee: The plugin was installed through a local marketplace at project scope, into a cache path that contains spaces (~/.factory/plugins/cache/dc atoms mp-…/droid-control-…/e48ab4de515c/). Three models (Opus 5.5, GPT-6.1 Sol, GLM 5.3 Flash) were each asked to plan a single-clip htop demo through droid-control and stop before launching anything.terminal-use,capture,compose,verify(Sol through the Skill tool, Opus by reading the SKILL.md files)atoms/<atom>/ATOM.mdin the installed cache, on all three modelstctldroid-controland 10 atomsdroid-controlonlyNot tested: Recording and rendering, because
tctlandrender-showcase.share unchanged. Windows and macOS hosts.Standard validators: droid-control tests pass (17 passed, 3 skipped). The
check-skillsworkflow script passes locally, and every relative Markdown link under the plugin resolves.