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
🎁 Evidencia visual = reward extra
- Si tu PR incluye video demo o capturas de pantalla mostrando la funcionalidad pedida funcionando end-to-end, va a ser considerado para rewards de GrantFox en esta issue. No es obligatorio, pero suma mucho para la evaluación.
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"🎁 Evidencia visual = reward extra