Athenode

Settings per AI tool

This page lists the metadata fields that a skill or an agent of a plugin can set for each AI coding tool, with their values and where Athenode writes them when it installs the plugin. A plugin is a named bundle of what your AI tools work with: skills, agents, rules, MCP servers and plugin files. A skill is a reusable set of instructions that an AI tool loads when it is relevant, and an agent is a specialist that an AI tool can hand work to (a subagent in most AI tools).

The Metadata section of the editors

The editor of a skill and the editor of an agent each have a Metadata section. It starts with the common fields, which apply to every AI tool, and then has one part per AI tool, named by the tool's id, with the number of fields set in that part. A field set in one part reaches that AI tool only.

Type How you enter it What is written
On/off A switch true when on. Off removes the field.
Number A number The number
Choice A list of the allowed values, with Not set The value chosen
Text A text The text
List Values separated by commas For Claude Code, Codex and Cursor, the text as you entered it, such as Read, Grep, Glob. For every other AI tool, a list with one item per value.
JSON JSON text The value, in the format of the file. A value that is not valid JSON shows "Not valid JSON." and is not saved.

An emptied field is removed, and the AI tool's own default applies. A field you do not set is not written.

AI tool Part for skills Part for agents
Claude Code claudecode claudecode
Codex codexcli codexcli
Cursor cursor cursor
GitHub Copilot in the editor copilot copilot
GitHub Copilot CLI copilotcli copilotcli
OpenCode opencode opencode
Google Antigravity none antigravity-ide and antigravity-cli
Devin devin devin
JetBrains Junie none junie
Kiro kiro-cli kiro-ide for the Kiro editor, kiro-cli for Kiro CLI
Kilo Code kilo kilo
Factory Droid factorydroid factorydroid
Grok CLI grokcli none
Qoder none qoder
Command Code commandcode commandcode
Codewhale none codewhale
MiMo Code mimocode mimocode
ZCode zcode zcode
Mistral Vibe vibe vibe
Rovo Dev rovodev none
Zoo Code none zoocode
Pool none pool
Qwen Code qwencode qwencode
CodeBuddy Code codebuddy none
Augment Code none augmentcode
Goose none goose
Kimi Code kimi-code kimi-code
deepagents-cli deepagents deepagents
oh-my-pi omp none
Reasonix none reasonix
IBM Bob none bob

An AI tool with no part gets the name and the description of a skill or an agent, the common fields where the tool reads them, and the instructions.

Common fields

Field Applies to Type Meaning
description Skills and agents Text, required The Description of the editor. Every AI tool receives it.
disable-model-invocation Skills On/off When on, the AI tool does not load the skill by itself. The skill runs only when you run it.
user-invocable Skills On/off Whether you can run the skill yourself as a slash command

The two common fields of a skill reach the AI tools in these forms. A field of the same name in a tool's own part takes the place of the common field for that tool. The switch in the web UI sets a field to true or removes it. A value of false comes with a skill you import, or from your AI agent through the Athenode MCP server.

AI tool disable-model-invocation user-invocable
Claude Code, Cursor, GitHub Copilot, Factory Droid, Grok CLI, Command Code, Mistral Vibe, Qwen Code, CodeBuddy Code Written as disable-model-invocation Written as user-invocable
oh-my-pi Written as disable-model-invocation Not written
Kimi Code Written as disableModelInvocation Not written
Codex true writes allow_implicit_invocation: false under policy in the skill's agents/openai.yaml Not written
Devin true writes triggers with the value user false writes triggers with the value model. Both together write an empty triggers list.
Google Antigravity Not written false writes disable-slash-command: true
Every other AI tool Not written Not written

Skill fields per AI tool

Every field of a tool's part is written into the frontmatter of that tool's SKILL.md, under the field's name, unless the notes under the table say otherwise. A choice lists its values after the type.

AI tool Fields
Claude Code (claudecode) allowed-tools list, argument-hint text, model choice of sonnet, opus, haiku, inherit, when_to_use text, arguments list, disallowed-tools list, effort choice of low, medium, high, xhigh, max, context choice of fork, agent text, hooks JSON, paths list, shell choice of bash, powershell
Codex (codexcli) allowed-tools list, argument-hint text, model choice of inherit, when_to_use text, arguments list, disallowed-tools list, model_reasoning_effort choice of low, medium, high, xhigh, paths list, policy JSON
Cursor (cursor) paths JSON, metadata JSON
GitHub Copilot in the editor (copilot) license text, allowed-tools list, argument-hint text, user-invocable on/off, disable-model-invocation on/off, context text
GitHub Copilot CLI (copilotcli) license text, allowed-tools list, argument-hint text, user-invocable on/off, disable-model-invocation on/off
OpenCode (opencode) allowed-tools list, license text, compatibility text, metadata JSON
Devin (devin) argument-hint text, model text, subagent text, agent text, allowed-tools list, permissions JSON, triggers list of user
Kiro (kiro-cli) license text, compatibility text, metadata JSON
Kilo Code (kilo) allowed-tools list, license text, compatibility text, metadata JSON
Factory Droid (factorydroid) disable-model-invocation on/off, user-invocable on/off, enabled on/off, allowed-tools list, license text, compatibility text, version text, metadata JSON
Grok CLI (grokcli) disable-model-invocation on/off, user-invocable on/off, paths list
Command Code (commandcode) license text, compatibility text, metadata JSON, disable-model-invocation on/off, user-invocable on/off
MiMo Code (mimocode) allowed-tools list, license text, compatibility text, metadata JSON
ZCode (zcode) when_to_use text, license text, metadata JSON
Mistral Vibe (vibe) license text, compatibility text, metadata JSON, user-invocable on/off, disable-model-invocation on/off, allowed-tools list
Rovo Dev (rovodev) allowed-tools list, license text, compatibility text, metadata JSON
Qwen Code (qwencode) priority number, paths list, allowedTools list, user-invocable on/off, disable-model-invocation on/off, model text, when_to_use text, argument-hint text, hooks JSON
CodeBuddy Code (codebuddy) disable-model-invocation on/off, user-invocable on/off
Kimi Code (kimi-code) type choice of prompt, inline, flow, whenToUse text, disableModelInvocation on/off, arguments list
deepagents-cli (deepagents) allowed-tools list, license text, compatibility text, metadata JSON
oh-my-pi (omp) allowed-tools list, disable-model-invocation on/off, license text, compatibility text, metadata JSON

Notes on how skill fields are written:

  • Codex writes policy into agents/openai.yaml in the skill's folder, and its other fields into the frontmatter of SKILL.md.
  • deepagents-cli and oh-my-pi receive allowed-tools as one text with the values separated by spaces.
  • Kiro has one skills folder for the Kiro editor and Kiro CLI, and both read the fields of the kiro-cli part.
  • GitHub Copilot in the editor and Copilot CLI share one skills folder, .github/skills. Each SKILL.md holds the fields of both parts. Where both parts set a field to different values, the copilot value is written and the plan of init or sync shows a warning that names the file and the field.
  • With Codex and Google Antigravity selected together, both read the skills folder .agents/skills, and each SKILL.md holds what both tools need. Where the two differ in a field, Codex's value is written and the plan warns.
  • Cursor writes every text of the frontmatter on one line, with line breaks replaced by spaces.

Agent fields per AI tool

AI tool Fields
Claude Code (claudecode) tools list, model choice of sonnet, opus, haiku, inherit, color choice of red, blue, green, yellow, purple, orange, pink, cyan, maxTurns number, mcpServers JSON, hooks JSON, disallowedTools list, permissionMode choice of default, acceptEdits, auto, dontAsk, bypassPermissions, plan, manual, skills list, memory choice of user, project, local, background on/off, effort choice of low, medium, high, xhigh, max, isolation choice of worktree, initialPrompt text
Codex (codexcli) model choice of inherit, model_reasoning_effort choice of low, medium, high, xhigh, mcp_servers JSON, sandbox_mode choice of read-only, workspace-write, danger-full-access
Cursor (cursor) model choice of inherit, readonly on/off, is_background on/off, paths JSON, metadata JSON
GitHub Copilot in the editor (copilot) tools list
GitHub Copilot CLI (copilotcli) target text, tools list, model text, models list, modelPolicy choice of preferred, disable-model-invocation on/off, user-invocable on/off, mcp-servers JSON, metadata JSON
OpenCode (opencode) mode text, model text, temperature number, top_p number, prompt text, disable on/off, tools JSON, permission JSON
Google Antigravity (antigravity-ide, antigravity-cli) tools list, mainAgent on/off, subagent on/off, model text, commandExecutionPolicy text, mcpServers list, skills list, plugins list, hidden on/off, inheritMcp on/off
Devin (devin) model text, allowed-tools list, permissions JSON, max-nesting number
JetBrains Junie (junie) tools list, disallowedTools list, mcpServers list, model text, permissionMode text, reasoningLevel text, maxTurns number, skills list, allowPromptArgument on/off
Kiro editor (kiro-ide) tools list, model text, includeMcpJson on/off, includePowers on/off
Kiro CLI (kiro-cli) tools list, toolAliases JSON, toolSettings JSON, toolSchema JSON, hooks JSON, model text, mcpServers JSON, useLegacyMcpJson on/off, resources list, allowedTools list, includeMcpJson on/off
Kilo Code (kilo) mode text, displayName text, color text, model text, variant text, prompt text, deprecated on/off, native on/off, hidden on/off, disable on/off, top_p number, temperature number, steps number, permission JSON, options JSON
Factory Droid (factorydroid) model text, reasoningEffort text, tools list, mcpServers list
Qoder (qoder) model text, permissionMode text, color text, isolation text, tools list, disallowedTools list, skills list, maxTurns number, timeoutMins number, mcpServers JSON, hooks JSON
Command Code (commandcode) tools list, disallowedTools list, model text, reasoningEffort text, permissionMode text, maxTurns number, background on/off, showOutput on/off
Codewhale (codewhale) role_hint text, base_role text, loadout text, model text, provider text, reasoning_effort text
MiMo Code (mimocode) mode text, model text, prompt text, color text, variant text, temperature number, top_p number, disable on/off, hidden on/off, steps number, tools JSON, permission JSON
ZCode (zcode) model text, thoughtLevel text, color text, tools list, disallowedTools list, mcpServers list, maxTurns number, injectAgentsMd on/off
Mistral Vibe (vibe) agent_type choice of agent, subagent, display_name text, safety text, active_model text, compaction_prompt text, compaction_prompt_id text, enabled_tools list, disabled_tools list, tools JSON
Zoo Code (zoocode) whenToUse text, roleDefinition text, customInstructions text, groups JSON, allowedMcpServers list
Pool (pool) type choice of in_process, command, agent_server, instructions text, command text, agent_server text, args list, env JSON, session_config_options JSON, inherit_agent_config on/off, disabled on/off
Qwen Code (qwencode) model text, approvalMode text, color text, tools list, disallowedTools list, mcpServers list, maxTurns number, hooks JSON
Augment Code (augmentcode) color text, model text, tools list, disabled_tools list
Goose (goose) model text
Kimi Code (kimi-code) whenToUse text, override on/off, tools list, disallowedTools list, subagents list
deepagents-cli (deepagents) model text
Reasonix (reasonix) model text, effort text, color text, allowed-tools list
IBM Bob (bob) whenToUse text, roleDefinition text, customInstructions text, groups JSON, allowedSubagents list

Where an agent's fields are written

For most AI tools an agent is a Markdown file with the name, the description and the fields of the tool's part at the top and the prompt below. The tools that keep agents differently, or that add values of their own, are these:

AI tool The agent's file or entry
Codex .codex/agents/<name>.toml, with the fields at the top and the prompt in developer_instructions
Codewhale .codewhale/agents/<name>.toml, with display_name set to the agent's name and the prompt in [instructions]
Mistral Vibe .vibe/agents/<name>.toml, with agent_type set to subagent and display_name to the agent's name unless you set them, and the prompt in .vibe/prompts/<name>.md
Kiro CLI .kiro/agents/<name>.json, with the prompt in prompt. The kiro-ide part goes to .kiro/agents/<name>.md
GitHub Copilot .github/agents/<name>.agent.md for both parts, with tools written last as a list. Where both parts set a field to different values, the copilot value is written and the plan warns
Google Antigravity .agents/agents/<name>.md, with the fields of both parts. Where both set a field, the antigravity-cli value is written
OpenCode, MiMo Code mode is written as subagent unless you set it
Kilo Code mode is written as all unless you set it
Kimi Code ${agents_md} is added at the end of the prompt, so that the agent receives the plugin's rules, unless the prompt holds ${agents_md} or ${base_prompt} already
Zoo Code An entry in .roomodes with slug and name from the agent's name, roleDefinition set to the prompt and groups set to read, edit, command and mcp, unless you set them
IBM Bob An entry in .bob/custom_modes.yaml with slug and name from the agent's name, roleDefinition set to the prompt and groups set to read, edit, execute and mcp, unless you set them
Pool An entry under subagents.agents in .poolside/settings.yaml, with type set to in_process and instructions set to the prompt, unless you set them
Reasonix A skill, .reasonix/skills/<name>/SKILL.md, with invocation: manual and runAs: subagent

Cursor, Google Antigravity, Grok CLI, Command Code, ZCode, Rovo Dev, Qwen Code, CodeBuddy Code, Augment Code, Kimi Code and oh-my-pi write every text of an agent's frontmatter on one line, with line breaks replaced by spaces. Files installed per tool gives every path.

Hooks of skills and agents

A hook runs a command, or another action the AI tool offers, when the agent or the skill reaches an event. The value is JSON in the AI tool's own format for hooks, and Athenode writes it into the skill's or the agent's file.

Field Skills Agents
hooks in claudecode Yes Yes
hooks in qwencode Yes Yes
hooks in qoder No Yes
hooks in kiro-cli No Yes, in the agent's JSON file

Add hooks to an agent shows a Claude Code example.

MCP servers of one agent

These fields give an agent MCP servers of its own, next to the MCP servers of the plugin. A list field names servers that are configured elsewhere. A JSON field can also define a server for the agent alone.

AI tool Field Value
Claude Code mcpServers in claudecode JSON: a list of server names and objects that each define one server
Codex mcp_servers in codexcli JSON: the servers by name, written as tables of the agent's TOML file
GitHub Copilot CLI mcp-servers in copilotcli JSON
Kiro CLI mcpServers in kiro-cli JSON
Qoder mcpServers in qoder JSON
Google Antigravity mcpServers in antigravity-ide and antigravity-cli List of server names
JetBrains Junie mcpServers in junie List of server names
Factory Droid mcpServers in factorydroid List of server names
ZCode mcpServers in zcode List of server names
Qwen Code mcpServers in qwencode List of server names
Zoo Code allowedMcpServers in zoocode List of server names

Three on/off fields decide whether an agent also gets the project's MCP configuration: includeMcpJson for Kiro, useLegacyMcpJson for Kiro CLI and inheritMcp for Google Antigravity.

A server defined in an mcpServers field holds tokens and keys as ${VAR} references. Athenode refuses to save a literal value under an env or header name that looks like a secret, such as a token, key or password. A server that a Claude Code agent defines for itself cannot take the name of an MCP server of the plugin. A reference is written as you enter it, so use the form the AI tool reads. Give an agent its own MCP servers shows a Claude Code example.

Fields in a plugin package

Seven AI tools can receive the plugin as a plugin package, the package that a tool loads a plugin from, named after the plugin's slug. A package reads the fields as the files do, with these differences:

AI tool What the plugin package takes
Claude Code The claudecode fields of skills and agents, except the agent fields hooks, mcpServers and permissionMode
Qoder The claudecode fields, then the qoder fields, which win where both set a field. The agent fields hooks, mcpServers and permissionMode are left out
CodeBuddy Code The claudecode fields, then the codebuddy fields, which win where both set a field. The agent fields hooks, mcpServers and permissionMode are left out
GitHub Copilot The copilotcli fields, then the copilot fields, which win where both set a field
Google Antigravity The same fields as the files
Factory Droid The name and the description of skills and agents, and no other field
Mistral Vibe The name and the description of skills, and the name, description and prompt of agents

When an agent field is left out, the plan of init or sync names the field and the agent under "Warnings". The field reaches the tool whenever it receives the plugin as files. Mistral Vibe takes an agent into its plugin package when the description has at most 300 characters and the prompt at most 65,536 characters. A longer agent is listed under "Not installed" with the reason, and you shorten its description or prompt to install it.

In the tool lists of Claude Code and Qoder, such as tools and allowed-tools, write the tools of an MCP server of the plugin as mcp__<server> or mcp__<server>__<tool>. When the plugin package holds that server, Athenode writes them as mcp__plugin_<slug>_<server>, the name those tools give a server of a plugin package.

Set fields from your AI tool

Your AI agent sets the same fields through the tools skills_create, skills_update, agents_create and agents_update of the Athenode MCP server, or when you ask /atn:manage. A field of a tool's part is named with the part first, such as claudecode.model, and a common field by its name alone. Fields that take JSON are set in the web UI. Run athenode sync after a change, so that the installed files follow.