Skip to content

Build your extension

Everything you see in the marketplace was published by someone. It could be you. The road has five stretches: create → test → package → publish → maintain, and the app walks all of them with you.

  1. The extensions gallery has a creation tab. Start by picking the kind: MCP server, skill, plugin, agent or team.

    You don’t start from a blank page: each kind starts from a template that already works. On top of it you fill in the name, description, icon and the credentials your extension will need.

    And the model helps: describe in your own words what you want it to do and it generates the whole skeleton, manifest included. You review it and adjust.

  2. The extension is installed locally and runs right there. You see its tools, you see what it returns and you see its errors with the full text.

  3. Packaging writes the manifest: version, requirements, supported platforms, declared permissions and the names of the credentials it asks for. The package’s SHA-256 checksum is added too, so whoever installs it can check they are getting exactly what you published.

    If you package an agent you already have configured (the option to publish this agent, from its own card), the app strips your credentials: the names of what has to be connected travel with it, never their values. Your API key stays on your machine.

  4. You identify yourself with your Context Code account — the same one you sign into the app with; there is no separate publishing account.

    The entry stays under review until an administrator approves it. Once approved it becomes published and shows up in everyone’s gallery. If it is rejected, it goes back to draft with the reason written down, which you get to read.

    draft ──▶ under review ──▶ published ──▶ withdrawn
    │
    └──▶ draft (rejected, with the reason)
  5. Publishing a new version puts it back under review: every version gets looked at. You can withdraw your extension whenever you want; it stops being offered for new installs.

    Your listing shows how many installs it has racked up. It is a rough counter, just to give you a sense of the reach.

Creating an extension: pick the kind, start from a template that already works, and let the model generate the skeleton.

The manifest is the document that describes your extension. It is what the gallery reads to draw the listing, and what the app reads to install it.

This agent writes financial reports. Note three things: modeloRecomendado is the model its author considers best, alternativas includes at least one local option ("local": true, with the context-forge provider) so it can be used at no cost, and under mcp only the names of the credentials travel, never their values.

{
"formato": 1,
"permisos": ["lectura-archivos", "red"],
"agente": {
"rol": "Financial report analyst",
"instrucciones": "Read the quarter's figures, compare them with the previous quarter and write a report with an executive summary, a table of figures and three conclusions. Never invent a number: if data is missing, say so.",
"tono": "Sober and direct, no spare adjectives.",
"queSabeHacer": [
"Compare two periods and explain the variances",
"Write the executive summary for management",
"Spot figures that don't add up and flag them"
],
"modeloRecomendado": {
"proveedor": "anthropic",
"modelo": "claude-sonnet-4-5",
"local": false
},
"alternativas": [
{ "proveedor": "openai", "modelo": "gpt-5", "local": false },
{ "proveedor": "context-forge", "modelo": "qwen3-27b-instruct", "local": true }
],
"herramientas": ["leer_archivo", "escribir_archivo", "buscar"],
"permisos": ["lectura-archivos"],
"habilidades": ["redaccion-informes"],
"mcp": [
{ "id": "postgres", "credenciales": ["POSTGRES_URL"] },
{ "id": "hoja-calculo", "credenciales": ["SHEETS_TOKEN"] }
],
"planPrevio": true,
"delegaEnSubagentes": false,
"limiteGastoSugerido": "2.00",
"ejemplos": [
"Prepare the third-quarter report from the data in the database",
"Compare this month's sales with the same month last year",
"Review this report and tell me which figures don't add up"
]
}
}
  • rol, instrucciones and tono are the agent’s identity: who it is and how it speaks.
  • queSabeHacer is the list shown on the listing, so it can be grasped at a glance.
  • herramientas, permisos, habilidades and mcp are what it needs in order to work. All of it is shown to the user before installing.
  • planPrevio says whether it proposes a plan before acting; delegaEnSubagentes, whether it opens helper agents; limiteGastoSugerido, how much it is sensible to let it spend per task.
  • ejemplos are the requests shown on the listing to fire off with one click.

A social media team: a campaign coordinator hands out the work and each agent writes for its own network.

{
"formato": 1,
"equipo": {
"coordinador": {
"nombre": "Campaign coordinator",
"rol": "Takes the campaign message, decides what goes out on each network, hands out the work and checks that everything tells the same story before signing off."
},
"agentes": [
{
"id": "redes-instagram",
"nombre": "Instagram agent",
"rol": "Writes short, visual captions, suggests the image and picks the hashtags."
},
{
"id": "redes-x",
"nombre": "X agent",
"rol": "Condenses the message into very short posts and prepares a thread when something needs developing."
},
{
"id": "redes-linkedin",
"nombre": "LinkedIn agent",
"rol": "Writes in a professional register, with the reasoning behind the announcement and a restrained call to action."
}
],
"repartoTareas": "The coordinator creates one task per network from the campaign message, sends it to its agent, collects the drafts, checks they don't contradict each other and returns the package ready for review."
}
}
  • Identifier in lowercase with hyphens: redes-instagram, not Redes Instagram or redes_instagram.
  • An agent must always offer a local model alternative. Nobody should need a subscription just to try your agent.
  • Never upload credentials. The names of what has to be connected travel with the package; the values stay on each user’s machine. A package with a key inside is rejected.
  • Official and Verified are granted only by the Context Code team, never by the author. Don’t put them in your manifest.
  • Everything from outside goes through review before becoming public. No exceptions, and on every new version.