Skip to content

fix(skills): show every engine in the /skill list matrix - #85

Merged
ralyodio merged 1 commit into
moshcoder:mainfrom
clawedassistant26:fix/skill-list-omits-privacycode
Jul 30, 2026
Merged

fix(skills): show every engine in the /skill list matrix#85
ralyodio merged 1 commit into
moshcoder:mainfrom
clawedassistant26:fix/skill-list-omits-privacycode

Conversation

@clawedassistant26

Copy link
Copy Markdown
Contributor

/skill list prints the support matrix for every engine moshcode wraps. It is currently missing one.

The bug

printSkillTargets (src/integrations.mjs:109) prints the supported engines from SKILL_ENGINES, then the unsupported ones from a hardcoded ["codex", "opencode", "aider"]. ENGINES has six keys. Since privacycode was added (#74) it is in neither list, so it gets no row at all.

On main (df9d1e0), /skill list prints:

  skills  — install a skill everywhere with /skill install <git-url>
   ○ claude    skills supported
   ○ gemini    skills supported
   ○ codex     no skills primitive
   ○ opencode  no skills primitive
   ○ aider     no skills primitive

Five rows for six engines. privacycode is installable, has an alias (pc), and appears in /mcp list — but a user checking whether /skill install reaches it sees nothing, and cannot tell an unsupported engine from a name they typed wrong.

The fix

Derive the unsupported rows from Object.keys(ENGINES) minus SKILL_ENGINES. Four insertions, three of them the comment. privacycode is an opencode derivative so it genuinely has no skills primitive — the point is that it now says so instead of vanishing.

This also means the matrix cannot drift from the engine list again: the next engine added to ENGINES shows up automatically.

Tests

New test/support-matrix.test.mjs, 5 tests:

  • 3 cover the bug: every engine appears in /skill list exactly once; privacycode is marked no skills primitive; each row's label matches its SKILL_ENGINES membership.
  • 2 are controls over /mcp list, which pass both before and after this change. MCP_ENGINES already covers everything except the hardcoded aider row, so the MCP matrix is complete today. I left printMcpTargets alone and used it as proof that the change is scoped to the skills path.

Fail-before / pass-after (verified by restoring pristine integrations.mjs, not git stash): 3 fail / 2 pass unpatched, 5/5 patched.

Full suite: root npm test 204 → 209, 0 fail. apps/pwa 30/30, unchanged.

printSkillTargets listed the engines with no skills primitive from a
hardcoded ["codex", "opencode", "aider"]. ENGINES gained privacycode, so
`/skill list` printed 5 of the 6 supported engines and privacycode had no
row at all — the user could not tell whether skills were unsupported or
whether they had typed the name wrong.

Derive the unsupported rows from ENGINES minus SKILL_ENGINES instead, so
the matrix cannot drift from the engine list again.

The MCP matrix is already complete (MCP_ENGINES covers everything except
the hardcoded aider row); the two /mcp list tests are controls that pass
both before and after this change.
@ralyodio
ralyodio merged commit 3ec6a31 into moshcoder:main Jul 30, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants