[Feature]: support disable-model-invocation in SKILL.md frontmatter
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 78/100
- Type d'issue
- Fonctionnalité
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- typescript
- Domaine
- backend, developer-experience
Piste de recherche
Start with parseSkillFrontmatter() in packages/local-runtime/src/skills/builtin.ts, then trace filterInjectableRegistrySkills() in registry-family.ts and its catalog and by-name callers in registry-operations.ts. Add the new frontmatter behavior while preserving the separate listed: false behavior. Done means the acceptance criteria pass for catalog visibility, skill(name) loading, and absent or false values; update the skills documentation.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
disable-model-invocation is supported by Claude Code and pi, and Codex ships an equivalent under a different name (policy.allow_implicit_invocation in agents/openai.yaml). mcode currently has no way to express "hide this skill from the model, but keep /name working" — listed: false removes the skill from both the prompt catalog and the skill tool's lookup path.
Current behavior
packages/local-runtime/src/skills/builtin.ts parses only four frontmatter fields:
function parseSkillFrontmatter(content: string): {
name?: string;
description?: string;
listed?: boolean;
requires_beta?: string;
}
Both the prompt catalog and the by-name read path go through the same filter, filterInjectableRegistrySkills() in packages/local-runtime/src/skills/registry-family.ts:
export function filterInjectableRegistrySkills(entries, options) {
return filterSkillsVisibleToAgent(entries, options)
.filter((entry) => entry.frontmatter.listed !== false)
// ...ambiguity / allowedSkillNames / betaFlags / injectableBuiltinSkillNames
}
renderLocalSkillsCatalog()(registry-operations.ts:236) calls it to build<available_skills>.readRegistrySkillByName()(registry-operations.ts:285) calls it to resolveskill(name).
So listed: false hides the skill from the model and makes the tool fail with Local skill not found: <name> (packages/agent-tools/src/desktop/local-skill.ts). requiresBeta behaves the same way: it gates loading, not just rendering.
The nearest thing to a render-only switch is injectableBuiltinSkillNames, but because it lives in the same filter, a skill left out of that allowlist is also unloadable by name — and it only applies to rootKind builtin/agent, so external skills are unaffected.
Why this matters
| Harness | Field | Location |
|---|---|---|
| Claude Code | disable-model-invocation: true |
SKILL.md frontmatter |
| pi | disable-model-invocation: true |
SKILL.md frontmatter |
| Codex | policy.allow_implicit_invocation: false |
agents/openai.yaml |
| mcode | — | — |
A skill shared across harnesses silently changes semantics: manual-only in Claude Code / pi, auto-triggered in mcode. Since mcode ignores unknown frontmatter keys without warning, a single SKILL.md cannot behave correctly everywhere.
Codex has the same gap in its own docs: the bundled skill-creator skill documents disable-model-invocation: true in SKILL.md, but codex-rs/skills/src/parser.rs only reads name, description and metadata.short-description — so the documented field has no effect there either. Both projects would benefit from the same small change.
Suggested implementation
pi already separates the two paths — it filters only at prompt-render time and leaves the load path untouched (third_party/pi-mono/packages/coding-agent/src/core/skills.ts, vendored here):
// Skills with disableModelInvocation=true are excluded from the prompt
const visibleSkills = skills.filter((s) => !s.disableModelInvocation);
The equivalent for mcode would be:
- Add
disable_model_invocation?: booleantoparseSkillFrontmatter()and to the registry entry type inpackages/local-runtime/src/skills/builtin.ts. - Split the
listedcheck out offilterInjectableRegistrySkills()so the catalog renderer can use a variant that keepsdisable_model_invocationskills out of<available_skills>whilereadRegistrySkillByName()continues to resolve them. - Document the field in the skills docs.
listed: false should keep its current meaning (hidden from both paths, including manual invocation) — the new field would be additive.
Acceptance criteria
- A skill with
disable-model-invocation: truedoes not appear in<available_skills>. skill(name)still loads that skill and returns its content.listed: falsestill hides the skill from both paths.disable-model-invocation: false(or absent) behaves exactly as today.
Environment
- mcode
0.7.1(@minimax-ai/code) - Files inspected:
packages/local-runtime/src/skills/{builtin.ts,registry-family.ts,registry-operations.ts},packages/agent-tools/src/desktop/local-skill.ts
- Langage dominant
- TypeScript
- Étoiles
- 2.1k
- Forks
- 271
- Merge moyen
- 12 h 15 min
- PR mergées (30 j)
- 41
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de MiniMax-AI/minimax-code
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
MiniMax-AI/minimax-code#507 ·
Les mainteneurs répondent en général sous 1 jour
-
bug needs-triage tui
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
MiniMax-AI/minimax-code#481 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
bug cli documentation needs-triage
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
MiniMax-AI/minimax-code#299 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
desktop
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
MiniMax-AI/minimax-code#554 ·
Les mainteneurs répondent en général sous 1 jour
-
desktop
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 15/100
MiniMax-AI/minimax-code#552 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de MiniMax-AI/minimax-code
Issues similaires
-
b:minor bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
software-mansion/argent#1698 ·
Les mainteneurs répondent en général sous 1 jour
-
e2e-failure ready-to-code
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
redhat-developer/rhdh-plugin-export-overlays#4624 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
better-auth/better-auth#12132 · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
-
automation missing-model model-sync provider:tinfoil
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
anomalyco/models.dev#12053 ·
Les mainteneurs répondent en général sous 1 jour
-
o8 next debug build aborts on Glass to Dark appearance switch (nil identifier messaged before check)Ouvertebug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
hurttlocker/o8#5112 ·