<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Volodymyr Nehir</title>
    <description>The latest articles on Forem by Volodymyr Nehir (@volodymyr_nehir).</description>
    <link>https://forem.com/volodymyr_nehir</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3875006%2Fb3e095fa-1ea0-45ac-a9c0-884bb3ebb938.jpeg</url>
      <title>Forem: Volodymyr Nehir</title>
      <link>https://forem.com/volodymyr_nehir</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/volodymyr_nehir"/>
    <language>en</language>
    <item>
      <title>How to Build Custom Skills for Antigravity Using Agent Skills Standard</title>
      <dc:creator>Volodymyr Nehir</dc:creator>
      <pubDate>Tue, 14 Apr 2026 16:48:53 +0000</pubDate>
      <link>https://forem.com/volodymyr_nehir/how-to-build-custom-skills-for-antigravity-using-agent-skills-standard-4ab9</link>
      <guid>https://forem.com/volodymyr_nehir/how-to-build-custom-skills-for-antigravity-using-agent-skills-standard-4ab9</guid>
      <description>&lt;p&gt;While many AI CLI tools rely on manual slash-commands (like &lt;code&gt;/test&lt;/code&gt; or &lt;code&gt;/deploy&lt;/code&gt;), &lt;strong&gt;Antigravity&lt;/strong&gt; takes a different approach: full autonomy. &lt;/p&gt;

&lt;p&gt;In Antigravity, you don't trigger skills manually. Instead, the agent uses &lt;em&gt;progressive disclosure&lt;/em&gt;—it reads the metadata of your available skills and autonomously activates the right one at the right time based on your prompt.&lt;/p&gt;

&lt;p&gt;To achieve this, Antigravity strictly follows the open &lt;strong&gt;Agent Skills standard&lt;/strong&gt;. Here is how you can build a custom, highly focused skill for your autonomous agent.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Choose Where to Save Your Skill
&lt;/h2&gt;

&lt;p&gt;You can create skills that apply to a specific project workspace or globally across your machine.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Workspace-specific (Project Level):&lt;/strong&gt; Save your skill folder at &lt;code&gt;&amp;lt;workspace-root&amp;gt;/.agents/skills/&amp;lt;skill-folder&amp;gt;/&lt;/code&gt;. This is perfect for project-specific workflows like custom testing conventions or deployment pipelines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Global (User Level):&lt;/strong&gt; Save your skill at &lt;code&gt;~/.gemini/antigravity/skills/&amp;lt;skill-folder&amp;gt;/&lt;/code&gt;. Use this for general-purpose utilities you want the agent to remember everywhere.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;(Note: Antigravity defaults to &lt;code&gt;.agents/skills&lt;/code&gt;, but maintains backward compatibility with older &lt;code&gt;.agent/skills&lt;/code&gt; directories).&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Create the Directory Structure
&lt;/h2&gt;

&lt;p&gt;Create a new folder for your skill. While only the &lt;code&gt;SKILL.md&lt;/code&gt; file is strictly mandatory, a robust skill folder usually looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-autonomous-skill/
├── SKILL.md       # Required: The brain (metadata and instructions)
├── scripts/       # Optional: Executable helper scripts (Bash, Python, Node)
├── examples/      # Optional: Reference implementations for the AI
└── resources/     # Optional: Templates and static assets
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Write the SKILL.md File
&lt;/h2&gt;

&lt;p&gt;Every skill must begin with a YAML frontmatter block, followed by the main Markdown instructions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;generate-python-tests&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Generates unit tests for Python code using pytest conventions.&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Instructions&lt;/span&gt;
When this skill is activated, follow these specific testing conventions...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;🔥 Crucial Step:&lt;/strong&gt; The &lt;code&gt;description&lt;/code&gt; field is the most important part of this file. Because Antigravity operates autonomously, it uses this exact description to decide &lt;em&gt;when&lt;/em&gt; to activate the skill. Write it in the third person and use clear keywords. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Below the frontmatter, write the step-by-step guidance, strict rules, checklists, and patterns the agent must follow.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Antigravity Best Practices for AI Engineers
&lt;/h2&gt;

&lt;p&gt;To ensure your skill works perfectly without manual intervention, adhere to these architectural guidelines:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Keep skills hyper-focused:&lt;/strong&gt; A skill should do &lt;em&gt;one&lt;/em&gt; thing exceptionally well. Do not create a "do-everything" skill. Break disparate tasks down into multiple smaller skills.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Treat scripts as black boxes:&lt;/strong&gt; If your skill bundles executable scripts, do not force the AI to read the raw source code. Instruct the agent to run the script with a &lt;code&gt;--help&lt;/code&gt; flag first. This saves context tokens and keeps the AI focused on execution.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provide decision trees:&lt;/strong&gt; For complex skills, include a decision tree in your Markdown body (e.g., &lt;em&gt;"If error X occurs, do Y. If state Z is true, do W"&lt;/em&gt;). This gives the autonomous agent a clear path to resolve blockers without asking you for help.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Trigger It? You Don't.
&lt;/h2&gt;

&lt;p&gt;You do not need to manually trigger the skill. When a conversation starts, Antigravity automatically discovers available skills and activates the full instructions whenever it deems the skill relevant to your prompt. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;(If you ever need to force its activation, simply mention the skill's name in your natural language prompt).&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>antigravity</category>
      <category>gemini</category>
      <category>agents</category>
    </item>
    <item>
      <title>How to Build Custom Commands for Claude Code Using Agent Skills Standard</title>
      <dc:creator>Volodymyr Nehir</dc:creator>
      <pubDate>Mon, 13 Apr 2026 16:55:07 +0000</pubDate>
      <link>https://forem.com/volodymyr_nehir/build-custom-commands-for-claude-code-using-agent-skills-standard-pfd</link>
      <guid>https://forem.com/volodymyr_nehir/build-custom-commands-for-claude-code-using-agent-skills-standard-pfd</guid>
      <description>&lt;p&gt;If you are using &lt;strong&gt;Claude Code&lt;/strong&gt;, you might have noticed a major shift: custom commands have officially been merged into the open &lt;strong&gt;Agent Skills standard&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;While legacy commands placed in &lt;code&gt;.claude/commands/&lt;/code&gt; will still work, the recommended approach is to build your custom tools as &lt;em&gt;Skills&lt;/em&gt;. Why? Because this standard allows you to bundle supporting files, executable scripts, and use advanced configurations like pre-processing shell commands before the LLM even sees them.&lt;/p&gt;

&lt;p&gt;Here is a definitive, step-by-step guide to building powerful custom commands (slash-commands like &lt;code&gt;/deploy&lt;/code&gt;) using the new standard.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. Choose a Location and Create the Directory
&lt;/h2&gt;

&lt;p&gt;First, decide whether your command should be global (across all projects) or project-specific:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Personal (Global):&lt;/strong&gt; &lt;code&gt;~/.claude/skills/&amp;lt;skill-name&amp;gt;/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project-specific:&lt;/strong&gt; &lt;code&gt;.claude/skills/&amp;lt;skill-name&amp;gt;/&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's create a deploy command. Open your terminal and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; .claude/skills/deploy/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Create the SKILL.md File (The Brain)
&lt;/h2&gt;

&lt;p&gt;Every command requires a &lt;code&gt;SKILL.md&lt;/code&gt; file. The top of this file must include a YAML frontmatter block to define metadata.&lt;/p&gt;

&lt;p&gt;Here is what you need to know about the fields:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;name&lt;/code&gt;: This dictates your console command. Setting &lt;code&gt;name: deploy&lt;/code&gt; creates the &lt;code&gt;/deploy&lt;/code&gt; command.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;description&lt;/code&gt;: Crucial for the AI to understand the tool's purpose.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;disable-model-invocation: true&lt;/code&gt;: &lt;strong&gt;Do not skip this.&lt;/strong&gt; This prevents Claude from running the workflow on its own initiative, ensuring it &lt;em&gt;only&lt;/em&gt; executes when you explicitly type the &lt;code&gt;/slash-command&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;argument-hint&lt;/code&gt;: Shows up in the UI autocomplete (e.g., &lt;code&gt;[branch-name]&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Write the Task Content &amp;amp; Handle Arguments
&lt;/h2&gt;

&lt;p&gt;Below the frontmatter, write the Markdown instructions. For custom commands, these are usually step-by-step instructions.&lt;/p&gt;

&lt;p&gt;You can dynamically handle user input using variables:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;$ARGUMENTS&lt;/code&gt;: Injects everything typed after the slash command. (e.g., If you run &lt;code&gt;/deploy staging&lt;/code&gt;, &lt;code&gt;$ARGUMENTS&lt;/code&gt; becomes &lt;code&gt;staging&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Index-based variables:&lt;/strong&gt; Use &lt;code&gt;$0&lt;/code&gt;, &lt;code&gt;$1&lt;/code&gt;, etc., to grab specific words from the input.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. 🤯 The Killer Feature: Dynamic Context (The &lt;code&gt;!&lt;/code&gt; syntax)
&lt;/h2&gt;

&lt;p&gt;This is where the Agent Skills standard shines. If your command needs real-time data &lt;em&gt;before&lt;/em&gt; Claude starts processing, you can use the &lt;code&gt;!&lt;/code&gt; command syntax.&lt;/p&gt;

&lt;p&gt;When you include a shell command preceded by an exclamation mark (e.g., &lt;code&gt;! git log -1&lt;/code&gt;), Claude Code executes the command immediately in the background and &lt;strong&gt;substitutes the placeholder with the actual terminal output&lt;/strong&gt; before sending the prompt to the model. This saves tokens, reduces latency, and prevents hallucinations.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Add Supporting Scripts (Optional)
&lt;/h2&gt;

&lt;p&gt;Unlike legacy commands, Skills allow you to bundle multiple files. You can keep your &lt;code&gt;SKILL.md&lt;/code&gt; clean and place complex logic in subdirectories like &lt;code&gt;scripts/&lt;/code&gt;, &lt;code&gt;references/&lt;/code&gt;, or &lt;code&gt;assets/&lt;/code&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💡 Pro Tip for Scripts:&lt;/strong&gt; Use the &lt;code&gt;${CLAUDE_SKILL_DIR}&lt;/code&gt; variable in your instructions. This ensures the path to your script is resolved correctly, regardless of which directory the user was in when they invoked the command.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Example: A Complete Deployment Command
&lt;/h2&gt;

&lt;p&gt;Here is what a production-ready &lt;code&gt;.claude/skills/deploy/SKILL.md&lt;/code&gt; file looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;deploy&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Builds the project and deploys it to the specified environment.&lt;/span&gt;
&lt;span class="na"&gt;disable-model-invocation&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="na"&gt;argument-hint&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;environment-name&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;allowed-tools&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;Bash&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

You are executing my custom deploy command.
Target environment: $ARGUMENTS

Step 1: Run the bundled build script.
Execute the following: &lt;span class="sb"&gt;`bash ${CLAUDE_SKILL_DIR}/scripts/build.sh $0`&lt;/span&gt;

Step 2: Read the latest commit to verify what we are deploying: 
&lt;span class="sb"&gt;`! git log -1 --oneline`&lt;/span&gt;

Step 3: Confirm the build was successful, analyze the git log, and summarize the deployment process for the user.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once this file is saved, Claude Code automatically discovers it. You can immediately jump into your terminal and run &lt;code&gt;/deploy production&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Are you migrating your legacy CLI scripts to Agent Skills yet? Let me know what custom commands you are building in the comments!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>claudecode</category>
      <category>agents</category>
      <category>skills</category>
    </item>
    <item>
      <title>How to Build Custom Commands for Codex Using Agent Skills Standard</title>
      <dc:creator>Volodymyr Nehir</dc:creator>
      <pubDate>Sun, 12 Apr 2026 22:43:53 +0000</pubDate>
      <link>https://forem.com/volodymyr_nehir/how-to-build-custom-commands-for-codex-using-agent-skills-standard-13jf</link>
      <guid>https://forem.com/volodymyr_nehir/how-to-build-custom-commands-for-codex-using-agent-skills-standard-13jf</guid>
      <description>&lt;p&gt;If you are using &lt;strong&gt;Codex&lt;/strong&gt; (whether the CLI, IDE extension, or the standalone app), building custom commands relies on the open &lt;strong&gt;Agent Skills framework&lt;/strong&gt;. This framework allows you to package instructions, resources, and optional scripts to extend Codex with highly specific capabilities. &lt;/p&gt;

&lt;p&gt;In the Codex ecosystem, custom commands and skills are essentially the same thing. Here is the step-by-step process for building one.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Create the Directory Structure
&lt;/h2&gt;

&lt;p&gt;A skill is defined by a dedicated folder. You have two options to create it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Easy Way:&lt;/strong&gt; Use Codex's built-in creator by running &lt;code&gt;$skill-creator&lt;/code&gt; in your prompt. It will interactively ask you what the skill does, when it should trigger, and generate the folder for you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Manual Way:&lt;/strong&gt; If you prefer setting it up yourself, your directory can contain the following structure:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-skill/
├── SKILL.md             # Required: Contains metadata and AI instructions
├── scripts/             # Optional: Executable code (e.g., Node.js, bash)
├── references/          # Optional: Documentation context for the AI
├── assets/              # Optional: Templates and static resources
└── agents/openai.yaml   # Optional: Appearance and dependency configs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Write the SKILL.md File
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;SKILL.md&lt;/code&gt; file is the brain of your command. It requires metadata at the top (Name and Description) followed by instructions.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;💡 Pro Tip: Understand "Progressive Disclosure"&lt;/strong&gt;&lt;br&gt;
Codex uses a technique called progressive disclosure. It reads &lt;em&gt;only&lt;/em&gt; the descriptions of all available skills first to decide if a skill matches your current prompt. Write descriptions with clear boundaries and strict scopes so Codex knows exactly when to trigger it without wasting token context!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here is how you structure it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;my-skill&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Strict&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;scope&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;of&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;what&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;this&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;command&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;does."&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Instructions&lt;/span&gt;
When this command is invoked, follow these exact steps...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Choose Where to Save the Command
&lt;/h2&gt;

&lt;p&gt;Codex automatically detects skill changes based on where you save the folder. Choose the scope that fits your workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project/Repo Level:&lt;/strong&gt; Save in &lt;code&gt;$CWD/.agents/skills&lt;/code&gt;, &lt;code&gt;$CWD/../.agents/skills&lt;/code&gt;, or &lt;code&gt;$REPO_ROOT/.agents/skills&lt;/code&gt;. Perfect for repository-specific scripts (like a microservice deployer).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;User Level (Global):&lt;/strong&gt; Save in &lt;code&gt;$HOME/.agents/skills&lt;/code&gt;. This makes the command available to you personally across &lt;em&gt;any&lt;/em&gt; project you open.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Admin/System Level:&lt;/strong&gt; Save in &lt;code&gt;/etc/codex/skills&lt;/code&gt;. This makes the command available as a default tool to every user on that specific machine.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. Configure Invocation Behavior (Optional)
&lt;/h2&gt;

&lt;p&gt;By default, Codex can trigger your skill either &lt;strong&gt;explicitly&lt;/strong&gt; (when you call its name) or &lt;strong&gt;implicitly&lt;/strong&gt; (when your natural language prompt matches the description). &lt;/p&gt;

&lt;p&gt;If you want this to act &lt;em&gt;strictly&lt;/em&gt; as a manual command (preventing the AI from running it autonomously), create an &lt;code&gt;agents/openai.yaml&lt;/code&gt; file inside your skill directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# agents/openai.yaml&lt;/span&gt;
&lt;span class="na"&gt;allow_implicit_invocation&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5. Use Your Command
&lt;/h2&gt;

&lt;p&gt;Once your files are saved, Codex detects them automatically (restart Codex if it doesn't). You can now trigger your workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Explicitly (Manual):&lt;/strong&gt; Run &lt;code&gt;/skills&lt;/code&gt; to see your list, or type &lt;code&gt;$&lt;/code&gt; followed by your skill name (e.g., &lt;code&gt;$my-skill&lt;/code&gt;) directly in your prompt.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Implicitly (Autonomous):&lt;/strong&gt; If &lt;code&gt;allow_implicit_invocation&lt;/code&gt; is true, simply type a prompt that matches your &lt;code&gt;SKILL.md&lt;/code&gt; description, and Codex will seamlessly load the instructions and execute the task!&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>chatgpt</category>
      <category>agents</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Build Custom Commands for Gemini CLI and Antigravity</title>
      <dc:creator>Volodymyr Nehir</dc:creator>
      <pubDate>Sun, 12 Apr 2026 15:45:20 +0000</pubDate>
      <link>https://forem.com/volodymyr_nehir/how-to-build-custom-commands-for-gemini-cli-and-antigravity-49mb</link>
      <guid>https://forem.com/volodymyr_nehir/how-to-build-custom-commands-for-gemini-cli-and-antigravity-49mb</guid>
      <description>&lt;p&gt;In the rapidly evolving world of AI CLI tools like Gemini CLI and Antigravity, the way we interact with autonomous agents is changing. Instead of writing complex, platform-specific plugins, custom commands are now officially merged with and built as Agent Skills.&lt;/p&gt;

&lt;p&gt;This means that to create a custom command (which you can trigger via a slash command like &lt;code&gt;/my-command&lt;/code&gt;), you simply need to create a skill using the open Agent Skills standard. Because tools like Gemini CLI and Antigravity share this open standard, you can build your command once in a global directory, and all compatible agents will be able to discover and use it.&lt;/p&gt;

&lt;p&gt;Here is a step-by-step guide on how to build a custom command using this modern approach.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create the Directory Structure
Commands are defined by a directory containing a &lt;code&gt;SKILL.md&lt;/code&gt; file. You can create this folder either locally for a specific project or globally for cross-agent compatibility.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For a project-specific command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; .gemini/skills/my-command/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a global command (available to all compatible agents on your machine):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.agents/skills/my-command/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a antigravity:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.gemini/antigravity/skills/my-command/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Create the SKILL.md Definition File
Inside your new directory, create a &lt;code&gt;SKILL.md&lt;/code&gt; file. To define how the command is invoked, you must start the file with a YAML frontmatter block.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The name field in this block is what dictates your slash command. For example, setting name: &lt;code&gt;my-command&lt;/code&gt; creates the &lt;code&gt;/my-command&lt;/code&gt; console command.&lt;/p&gt;

&lt;p&gt;Here is the exact boilerplate you need:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;my-command&lt;/span&gt;
&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;A&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;brief&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;description&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;of&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;what&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;this&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;command&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;does."&lt;/span&gt;
&lt;span class="na"&gt;argument-hint&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;optional-arguments&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;span class="na"&gt;disable-model-invocation&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Instructions&lt;/span&gt;
You are helping to execute my custom command.
User input: $ARGUMENTS

Step 1. Do the following tasks...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Pro Tip: Setting &lt;code&gt;disable-model-invocation: true&lt;/code&gt;is highly recommended for custom commands. This prevents the AI agent from triggering the workflow on its own and ensures the script only runs when you explicitly type the command. You can also use the &lt;code&gt;$ARGUMENTS&lt;/code&gt; variable to automatically pass anything you type after the slash command directly into the agent's prompt.&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Add Execution Logic (Optional)
If your command requires the agent to execute specific code (like an audit script, a database migration, or a deployment script), you can bundle those scripts inside a &lt;code&gt;scripts/&lt;/code&gt; subfolder within your command's directory.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For instance, you could create &lt;code&gt;.gemini/skills/my-command/scripts/action.js.&lt;/code&gt; You can then instruct the agent in your &lt;code&gt;SKILL.md&lt;/code&gt; file to execute that specific file using built-in agent tools like &lt;code&gt;run_shell_command.&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Verify and Use Your Command
AI CLI tools like Gemini CLI automatically scan your directories to discover new skills and commands on the fly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To verify that your new command was registered successfully, simply type the following in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/skills list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To run your custom command, just type &lt;code&gt;/my-command&lt;/code&gt; (or whatever name you defined in the YAML block) directly in the chat session.&lt;/p&gt;

&lt;p&gt;Have you started building custom Agent Skills for your CLI workflows yet? Let me know what commands you are creating in the comments below!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>gemini</category>
      <category>agents</category>
      <category>antigravity</category>
    </item>
  </channel>
</rss>
