jev-skill-suggestion
v0.1.0Keeps the skill listing out of the context window and lets TypeSafe's Jev, a System One decision model, pick at most one skill per prompt from the skills' descriptions, the way TypeSafe's skill-suggestion cookbook does: one request ranks every skill and asks whether the prompt needs a skill at all, a second re-reads the top three with their SKILL.md and can reject them all. The winner's SKILL.md is attached to the prompt, so the skills can be hidden from the model altogether (/jev-skill-suggestion:setup makes them user-invocable-only and /context counts them at 0). Falls back to the engine's built-in classifier when no key is set.
By claude-code-templatesLicense: MIT31.6k GitHub starsUpdated 2 hours ago
Directory evidence
- Runtimes
- Claude Code
- Parsed components
- 0 skill or MCP entries
- Source updated
- Sep 24, 2026
- Manifest status
- Canonical path parsed
The directory validates manifest shape and source location. It does not execute the plugin or provide a security endorsement. Review the indexing methodology →
Install jev-skill-suggestion for Claude Code
claude plugin marketplace add IchenDEV/agent-plugin-mkt
claude plugin marketplace update agent-plugin-marketplace
claude plugin install jev-skill-suggestion@agent-plugin-marketplacePaste and run these commands in a terminal with Claude Code. They add and refresh the PluginsMP catalog, then install this plugin.
The installer fetches third-party code from the source repository shown on this page. This directory validates manifest structure and source location, but does not perform a security audit; review the manifest, components, and source before installing.
Get the source manually
git clone https://github.com/davila7/claude-code-templatesClone the source repository, then follow its setup instructions to add the plugin to a compatible client. The plugin root is cli-tool/components/mods/productivity/jev-skill-suggestion/.
Plugin files
└── .claude-plugin/plugin.json
Plugin manifests1
{
"name": "jev-skill-suggestion",
"version": "0.1.0",
"description": "Keeps the skill listing out of the context window and lets TypeSafe's Jev, a System One decision model, pick at most one skill per prompt from the skills' descriptions, the way TypeSafe's skill-suggestion cookbook does: one request ranks every skill and asks whether the prompt needs a skill at all, a second re-reads the top three with their SKILL.md and can reject them all. The winner's SKILL.md is attached to the prompt, so the skills can be hidden from the model altogether (/jev-skill-suggestion:setup makes them user-invocable-only and /context counts them at 0). Falls back to the engine's built-in classifier when no key is set.",
"author": {
"name": "claude-code-templates",
"url": "https://www.aitmpl.com"
},
"repository": "https://github.com/davila7/claude-code-templates",
"license": "MIT",
"keywords": [
"mod",
"function-hooks",
"productivity",
"skills",
"context"
],
"userConfig": {
"typesafeApiKey": {
"type": "string",
"title": "TypeSafe API key",
"description": "Key for TypeSafe's own API; preferred over the Gateway, since only it reports a calibrated confidence",
"default": "",
"sensitive": true
},
"gatewayApiKey": {
"type": "string",
"title": "Vercel AI Gateway API key",
"description": "Key for the AI Gateway; with none set the engine's built-in classifier is used instead",
"default": "",
"sensitive": true
},
"provider": {
"type": "string",
"title": "Backend",
"description": "Which backend to use; \"auto\" picks TypeSafe when its key is set, then the Gateway, then the built-in classifier",
"default": "auto",
"options": [
"auto",
"typesafe",
"gateway",
"builtin"
]
},
"typesafeBaseUrl": {
"type": "string",
"title": "TypeSafe base URL",
"description": "Base URL of TypeSafe's own API; empty uses https://api.typesafe.ai",
"default": ""
},
"typesafeModel": {
"type": "string",
"title": "TypeSafe model",
"description": "Decision model on TypeSafe's own API; empty uses jev-latest",
"default": ""
},
"gatewayBaseUrl": {
"type": "string",
"title": "AI Gateway base URL",
"description": "Base URL of the AI Gateway; empty uses https://ai-gateway.vercel.sh/v4/ai",
"default": ""
},
"gatewayModel": {
"type": "string",
"title": "AI Gateway model",
"description": "Decision model on the AI Gateway; empty uses typesafe-ai/jev",
"default": ""
},
"inject": {
"type": "string",
"title": "How the chosen skill reaches the model",
"description": "\"content\" attaches the skill's SKILL.md to the prompt, so it loads even when the engine lists it as user-invocable-only or off; \"suggest\" only names it and the model loads it with the Skill tool",
"default": "content",
"options": [
"content",
"suggest"
]
},
"hideListing": {
"type": "boolean",
"title": "Hide the skill listing",
"description": "Leave the engine's skill listing out of the main conversation's context; off keeps the listing and only adds the suggestion",
"default": true
},
"rerank": {
"type": "boolean",
"title": "Re-read the shortlist",
"description": "Send a second request that re-reads the top skills with their full description and SKILL.md opening, and can reject them all; off suggests the top of the ranking alone",
"default": true
},
"shortlist": {
"type": "number",
"title": "Shortlist size",
"description": "How many of the ranking the second request re-reads",
"default": 3
},
"gateThreshold": {
"type": "number",
"title": "Needs-a-skill threshold",
"description": "Mean of the three request nouls (acts on the user's system, would follow a documented procedure, prose does not suffice) under which nothing is suggested",
"default": 0.3
},
"fitsThreshold": {
"type": "number",
"title": "Fits threshold",
"description": "A shortlist whose best per-skill \"does this fit\" noul is under this is dropped entirely",
"default": 0.3
},
"excerptChars": {
"type": "number",
"title": "SKILL.md excerpt",
"description": "How many characters of each shortlisted skill's body the second request reads",
"default": 700
},
"alwaysListed": {
"type": "string",
"title": "Always listed",
"description": "Comma-separated skill names that stay in the listing whatever the prompt (the model can still see and call them)",
"default": ""
},
"neverSuggested": {
"type": "string",
"title": "Never suggested",
"description": "Comma-separated skill names the decision model is never offered; they stay reachable by typing /name",
"default": ""
},
"timeoutMs": {
"type": "number",
"title": "Latency budget (ms)",
"description": "How long to wait for a decision before letting the prompt through without a suggestion",
"default": 800
},
"logDecisions": {
"type": "boolean",
"title": "Log decisions",
"description": "Write each selection to the session log",
"default": true
}
}
}For maintainers
If you maintain this plugin, link to this source-backed listing from your README so users can review its manifest and indexed components.
[jev-skill-suggestion on Agent Plugins Marketplace](https://pluginsmp.com/plugins/jev-skill-suggestion)