Context
Skills registered in the marketplace may need API keys or config values (e.g. an LLM skill needs OPENAI_API_KEY). Currently there's no way to declare or validate these at registration time — missing config is only discovered at invocation.
What to implement
Registration: requiredEnv field
POST /api/skills/register accepts optional requiredEnv: string[] — an array of env var names the skill needs.
Validation at registration
Server checks process.env[key] !== undefined for each entry. If any are missing, return:
{ "ok": false, "error": "missing_env", "missing": ["OPENAI_API_KEY"] }
Listing: surface missing deps
GET /api/skills includes { requiredEnv: string[], envSatisfied: boolean } per skill. Agents can filter for only skills with envSatisfied: true.
Acceptance criteria
Context
Skills registered in the marketplace may need API keys or config values (e.g. an LLM skill needs
OPENAI_API_KEY). Currently there's no way to declare or validate these at registration time — missing config is only discovered at invocation.What to implement
Registration:
requiredEnvfieldPOST /api/skills/registeraccepts optionalrequiredEnv: string[]— an array of env var names the skill needs.Validation at registration
Server checks
process.env[key] !== undefinedfor each entry. If any are missing, return:{ "ok": false, "error": "missing_env", "missing": ["OPENAI_API_KEY"] }Listing: surface missing deps
GET /api/skillsincludes{ requiredEnv: string[], envSatisfied: boolean }per skill. Agents can filter for only skills withenvSatisfied: true.Acceptance criteria
envSatisfied: falsewhen a var was present at registration but removed laterenvSatisfied: falsereturns 503 witherror: "skill_config_unavailable"