<?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>DEV Community: Vladislav Guzey</title>
    <description>The latest articles on DEV Community by Vladislav Guzey (@proflead).</description>
    <link>https://dev.to/proflead</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1014611%2F65dc9cbf-f195-47fb-bee6-5b12a8844e66.png</url>
      <title>DEV Community: Vladislav Guzey</title>
      <link>https://dev.to/proflead</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/proflead"/>
    <language>en</language>
    <item>
      <title>Codex Skill with a Clear Job</title>
      <dc:creator>Vladislav Guzey</dc:creator>
      <pubDate>Sun, 20 Sep 2026 13:40:55 +0000</pubDate>
      <link>https://dev.to/proflead/codex-skill-with-a-clear-job-3il2</link>
      <guid>https://dev.to/proflead/codex-skill-with-a-clear-job-3il2</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/proflead/build-a-small-codex-skill-with-a-clear-job-59cb" class="crayons-story__hidden-navigation-link"&gt;Build a Small Codex Skill with a Clear Job&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/proflead" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1014611%2F65dc9cbf-f195-47fb-bee6-5b12a8844e66.png" alt="proflead profile" class="crayons-avatar__image" width="726" height="749"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/proflead" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Vladislav Guzey
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Vladislav Guzey
                
                
              
              &lt;div id="story-author-preview-content-4700085" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/proflead" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1014611%2F65dc9cbf-f195-47fb-bee6-5b12a8844e66.png" class="crayons-avatar__image" alt="" width="726" height="749"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Vladislav Guzey&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/proflead/build-a-small-codex-skill-with-a-clear-job-59cb" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Sep 20&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/proflead/build-a-small-codex-skill-with-a-clear-job-59cb" id="article-link-4700085"&gt;
          Build a Small Codex Skill with a Clear Job
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/openai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;openai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/coding"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;coding&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/proflead/build-a-small-codex-skill-with-a-clear-job-59cb" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/proflead/build-a-small-codex-skill-with-a-clear-job-59cb#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>programming</category>
      <category>softwaredevelopment</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Build a Small Codex Skill with a Clear Job</title>
      <dc:creator>Vladislav Guzey</dc:creator>
      <pubDate>Sun, 20 Sep 2026 13:40:08 +0000</pubDate>
      <link>https://dev.to/proflead/build-a-small-codex-skill-with-a-clear-job-59cb</link>
      <guid>https://dev.to/proflead/build-a-small-codex-skill-with-a-clear-job-59cb</guid>
      <description>&lt;p&gt;A skill description helps Codex decide when to use that skill. If an invoice skill says it handles “business, money, customers, and documents,” it could match many requests that have nothing to do with invoices.&lt;/p&gt;

&lt;p&gt;Let's build a smaller example: a skill that creates Markdown invoice drafts from supplied billing data. It will have a clear trigger, a short set of rules, and practice data with totals we can check by hand.&lt;/p&gt;

&lt;p&gt;This follows the skill advice in OpenAI's &lt;a href="https://developers.openai.com/blog/rethinking-skills-and-prompts-for-gpt-6-astra" rel="noopener noreferrer"&gt;GPT-6 Astra guide&lt;/a&gt;. The example creates a local draft. It does not need a payment service, a PDF tool, or access to real customer records.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Define one job
&lt;/h2&gt;

&lt;p&gt;The skill's job is to create or update a Markdown invoice draft.&lt;/p&gt;

&lt;p&gt;It needs supplied billing details. It should preserve those details, calculate line totals, report missing fields, and save the result in a requested local folder.&lt;/p&gt;

&lt;p&gt;Compare these descriptions:&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="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Help with business, money, customers, and documents.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;description&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Create or revise Markdown invoice drafts from supplied billing data.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The second description gives Codex a useful reason to choose the skill. A request to summarize a customer meeting is outside that job.&lt;/p&gt;

&lt;p&gt;OpenAI's &lt;a href="https://learn.chatgpt.com/docs/build-skills" rel="noopener noreferrer"&gt;skills documentation&lt;/a&gt; explains that Codex starts with skill names and descriptions. It reads the full &lt;code&gt;SKILL.md&lt;/code&gt; when it selects a skill. Put the actual job near the start of the description.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Create the folder
&lt;/h2&gt;

&lt;p&gt;For a repository skill, create this structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.agents/skills/invoice-draft/
  SKILL.md
  references/
    invoice-fields.md
  examples/
    demo-billing.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;SKILL.md&lt;/code&gt; explains the workflow. The reference holds field and calculation rules. The example file provides practice input; ordinary invoice tasks do not need to read it.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://learn.chatgpt.com/docs/build-skills#where-to-save-skills" rel="noopener noreferrer"&gt;documented local skill locations&lt;/a&gt; include &lt;code&gt;.agents/skills/&lt;/code&gt; in a repository and &lt;code&gt;~/.agents/skills/&lt;/code&gt; for personal skills. This tutorial uses the repository location.&lt;/p&gt;

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

&lt;p&gt;Save the following in &lt;code&gt;.agents/skills/invoice-draft/SKILL.md&lt;/code&gt;:&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;invoice-draft&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;Create&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;or&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;revise&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;Markdown&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;invoice&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;drafts&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;from&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;supplied&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;billing&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;data."&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;

&lt;span class="gh"&gt;# Prepare an invoice draft&lt;/span&gt;

Read references/invoice-fields.md for required fields and
calculation rules.

Use the billing source named by the user. Read files in examples/
only when the user asks for a practice run using those files.

Preserve supplied names, dates, rates, currency, and payment details.
Use decimal arithmetic or integer minor units for money calculations.

If required data is missing, list it under "Missing information"
and keep the output marked as an incomplete draft.

Save a Markdown file in the requested local output folder.
Check the saved file against the input and calculation rules.

Finish by giving the file path, the checks performed, and any
missing information. Do not send or publish the invoice.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;“Integer minor units” means doing a calculation in cents for a currency such as USD. For example, USD 45.00 becomes 4,500 cents. This helps avoid small rounding errors from some number formats.&lt;/p&gt;

&lt;p&gt;The skill names a result and its checks. It leaves Codex free to choose how to read the source and create the Markdown file.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Add the field rules
&lt;/h2&gt;

&lt;p&gt;Save this in &lt;code&gt;references/invoice-fields.md&lt;/code&gt;:&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="gh"&gt;# Invoice draft rules&lt;/span&gt;

&lt;span class="gu"&gt;## Required input&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Invoice number.
&lt;span class="p"&gt;-&lt;/span&gt; Issue date and due date in YYYY-MM-DD form.
&lt;span class="p"&gt;-&lt;/span&gt; Supplier and customer names.
&lt;span class="p"&gt;-&lt;/span&gt; Currency.
&lt;span class="p"&gt;-&lt;/span&gt; At least one item with a description, quantity, and unit price.
&lt;span class="p"&gt;-&lt;/span&gt; A tax amount supplied by the user, including an explicit zero.
&lt;span class="p"&gt;-&lt;/span&gt; Payment instructions supplied by the user.

&lt;span class="gu"&gt;## Checks&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; Dates must be valid calendar dates.
&lt;span class="p"&gt;-&lt;/span&gt; The due date must not be earlier than the issue date.
&lt;span class="p"&gt;-&lt;/span&gt; Each quantity must be a positive whole number for this workflow.
&lt;span class="p"&gt;-&lt;/span&gt; Each unit price and tax amount must be zero or greater.
&lt;span class="p"&gt;-&lt;/span&gt; Use one currency per invoice. Report mixed currencies.
&lt;span class="p"&gt;-&lt;/span&gt; Line total = quantity multiplied by unit price.
&lt;span class="p"&gt;-&lt;/span&gt; Subtotal = sum of line totals.
&lt;span class="p"&gt;-&lt;/span&gt; Invoice total = subtotal plus the supplied tax amount.
&lt;span class="p"&gt;-&lt;/span&gt; Do not guess a missing tax amount or payment instruction.

&lt;span class="gu"&gt;## Output&lt;/span&gt;

Include an invoice heading, the supplied details, an item table,
the subtotal, tax amount, total, and payment instructions.

Label every output "Draft for review".
List missing fields or invalid values under "Missing information".
Do not report a complete invoice total while a needed value is missing.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These are rules for this small practice workflow. A real business may need more fields or different calculation rules. Add those from the business's approved requirements before using the skill for real work.&lt;/p&gt;

&lt;p&gt;The tax amount is an input here. The skill is not being asked to decide which tax rules apply.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Add practice data
&lt;/h2&gt;

&lt;p&gt;Save this in &lt;code&gt;examples/demo-billing.md&lt;/code&gt;:&lt;/p&gt;

&lt;h1&gt;
  
  
  Fictional billing data for a practice run
&lt;/h1&gt;

&lt;p&gt;Invoice number: DEMO-001&lt;br&gt;
Issue date: 2026-09-20&lt;br&gt;
Due date: 2026-10-04&lt;br&gt;
Supplier: Example Studio&lt;br&gt;
Customer: Sample Company&lt;br&gt;
Currency: USD&lt;br&gt;
Tax amount: 0.00&lt;br&gt;
Payment instructions: Practice invoice only. Do not make a payment.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Quantity&lt;/th&gt;
&lt;th&gt;Unit price&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Form layout review&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;45.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Written feedback&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;30.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The expected calculations are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Form layout review: 2 × USD 45.00 = USD 90.00.&lt;/li&gt;
&lt;li&gt;Written feedback: 1 × USD 30.00 = USD 30.00.&lt;/li&gt;
&lt;li&gt;Subtotal: USD 120.00.&lt;/li&gt;
&lt;li&gt;Supplied tax amount: USD 0.00.&lt;/li&gt;
&lt;li&gt;Invoice total: USD 120.00.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These numbers are expected results for the example. They let you check the output without asking another model to judge it.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Run the skill explicitly
&lt;/h2&gt;

&lt;p&gt;In Codex CLI, use the skill name in your prompt:&lt;/p&gt;

&lt;p&gt;$invoice-draft&lt;/p&gt;

&lt;p&gt;Use .agents/skills/invoice-draft/examples/demo-billing.md&lt;br&gt;
to create output/invoice-demo-001.md.&lt;/p&gt;

&lt;p&gt;Check the saved file and its calculations before finishing.&lt;br&gt;
This is a practice run with fictional data.&lt;/p&gt;

&lt;p&gt;OpenAI documents &lt;code&gt;$&lt;/code&gt; mentions and the &lt;code&gt;/skills&lt;/code&gt; command for selecting skills in the CLI. If a new skill does not appear, check the file name and metadata, then restart Codex if needed.&lt;/p&gt;

&lt;p&gt;Open the result. Confirm that it contains the supplied names and dates, both items, and a total of USD 120.00. The file should remain marked “Draft for review.”&lt;/p&gt;

&lt;p&gt;Also check that the final response points to the saved file. A correct invoice shown only in the chat would not meet the request to save it.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Check when Codex chooses the skill
&lt;/h2&gt;

&lt;p&gt;Explicit use checks whether the workflow works. You should also try requests without mentioning the skill name.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Request&lt;/th&gt;
&lt;th&gt;Intended match&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Create a Markdown invoice from this billing file.&lt;/td&gt;
&lt;td&gt;Use the skill.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Update the quantity on this invoice draft.&lt;/td&gt;
&lt;td&gt;Use the skill.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Summarize notes from a customer meeting.&lt;/td&gt;
&lt;td&gt;Do not choose it just because a customer is mentioned.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Build a React app for editing invoices.&lt;/td&gt;
&lt;td&gt;Treat this as a software task; this draft-writing skill does not cover the whole job.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Inspect what Codex selects. If the skill matches unrelated work, improve its description. If it misses a valid request, make the intended use clearer.&lt;/p&gt;

&lt;p&gt;Then test missing information. Copy the practice data to a new file and remove the currency or tax amount. The expected output should name the missing field and remain incomplete. It should not silently fill in a value.&lt;/p&gt;

&lt;h2&gt;
  
  
  Keep the skill small as it grows
&lt;/h2&gt;

&lt;p&gt;This skill has one output format. If you later support PDFs, add the tools and checks that PDF creation needs. Make it clear when that extra guidance should be read.&lt;/p&gt;

&lt;p&gt;OpenAI calls this approach progressive disclosure: load detailed instructions when they apply. For example, Markdown work should not require reading a long PDF export guide.&lt;/p&gt;

&lt;p&gt;You can also keep a very short skill in one file. The separate reference here shows how to keep reusable field rules in a named place. Create another file only when its contents have a clear purpose.&lt;/p&gt;

&lt;p&gt;Before sharing a revised skill, run the normal example, the missing-data example, and a request that should not match. Those three checks cover different ways the skill could fail.&lt;/p&gt;

&lt;h2&gt;
  
  
  Video and sources
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/FESNAh3gNyQ" width="710" height="399"&gt;
  &lt;/iframe&gt;
.&lt;/p&gt;

&lt;p&gt;My &lt;a href="https://youtu.be/FESNAh3gNyQ" rel="noopener noreferrer"&gt;video tutorial&lt;/a&gt; covers seven related improvements for prompts, skills, and &lt;code&gt;AGENTS.md&lt;/code&gt;. The &lt;a href="https://proflead.dev/posts/gpt-6-astra-codex-prompts-skills-agents-md/" rel="noopener noreferrer"&gt;full website article&lt;/a&gt; includes the broader instruction-audit prompt.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://learn.chatgpt.com/docs/build-skills" rel="noopener noreferrer"&gt;OpenAI: Skills&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developers.openai.com/blog/rethinking-skills-and-prompts-for-gpt-6-astra" rel="noopener noreferrer"&gt;OpenAI: Rethinking skills and prompts for GPT-6 Astra&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://learn.chatgpt.com/docs/prompting" rel="noopener noreferrer"&gt;OpenAI: Prompting&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>openai</category>
      <category>coding</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Codex Agents: The New Multi-Agent Dashboard Explained</title>
      <dc:creator>Vladislav Guzey</dc:creator>
      <pubDate>Sat, 22 Aug 2026 04:09:47 +0000</pubDate>
      <link>https://dev.to/proflead/codex-agents-the-new-multi-agent-dashboard-explained-4j88</link>
      <guid>https://dev.to/proflead/codex-agents-the-new-multi-agent-dashboard-explained-4j88</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/proflead/manage-multiple-openai-codex-cli-tasks-with-codex-agents-and-codex-queue-23b8" class="crayons-story__hidden-navigation-link"&gt;Manage Multiple OpenAI Codex CLI Tasks with codex agents and codex queue&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/proflead" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1014611%2F65dc9cbf-f195-47fb-bee6-5b12a8844e66.png" alt="proflead profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/proflead" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Vladislav Guzey
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Vladislav Guzey
                
                
              
              &lt;div id="story-author-preview-content-4458157" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/proflead" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1014611%2F65dc9cbf-f195-47fb-bee6-5b12a8844e66.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Vladislav Guzey&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/proflead/manage-multiple-openai-codex-cli-tasks-with-codex-agents-and-codex-queue-23b8" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Aug 22&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/proflead/manage-multiple-openai-codex-cli-tasks-with-codex-agents-and-codex-queue-23b8" id="article-link-4458157"&gt;
          Manage Multiple OpenAI Codex CLI Tasks with codex agents and codex queue
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/openai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;openai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/agents"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;agents&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/proflead/manage-multiple-openai-codex-cli-tasks-with-codex-agents-and-codex-queue-23b8" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/proflead/manage-multiple-openai-codex-cli-tasks-with-codex-agents-and-codex-queue-23b8#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>automation</category>
      <category>cli</category>
      <category>openai</category>
    </item>
    <item>
      <title>Manage Multiple OpenAI Codex CLI Tasks with codex agents and codex queue</title>
      <dc:creator>Vladislav Guzey</dc:creator>
      <pubDate>Sat, 22 Aug 2026 04:09:18 +0000</pubDate>
      <link>https://dev.to/proflead/manage-multiple-openai-codex-cli-tasks-with-codex-agents-and-codex-queue-23b8</link>
      <guid>https://dev.to/proflead/manage-multiple-openai-codex-cli-tasks-with-codex-agents-and-codex-queue-23b8</guid>
      <description>&lt;p&gt;&lt;strong&gt;🎥 Watch the demo:&lt;/strong&gt; &lt;a href="https://youtu.be/O_OCwzKPAHY" rel="noopener noreferrer"&gt;OpenAI Codex Agents Dashboard and &lt;code&gt;codex queue&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/O_OCwzKPAHY"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Running several Codex CLI tasks at once can turn your terminal tabs into a confusing task manager.&lt;/p&gt;

&lt;p&gt;Codex now provides two commands that solve different parts of this problem:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;codex agents&lt;/code&gt; shows your local tasks in one dashboard.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;codex queue&lt;/code&gt; sends a new message to an existing task.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is how to use them together.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;p&gt;Check your Codex version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update when necessary:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For an npm installation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @openai/codex@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Open the dashboard
&lt;/h2&gt;

&lt;p&gt;Run this in your normal terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex agents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe7rrvw8h4ejsjal39ho6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe7rrvw8h4ejsjal39ho6.png" alt="OpenAI Codex CLI Agents Dashboard" width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The dashboard groups tasks by project and reports three states:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Need input&lt;/td&gt;
&lt;td&gt;The task is blocked on your answer or approval&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Working&lt;/td&gt;
&lt;td&gt;The task is still running&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ready&lt;/td&gt;
&lt;td&gt;The current work is ready to review&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Inside a Codex session, return to the dashboard with:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Remember:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;shell:        codex agents
inside Codex: /agents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Rename important tasks
&lt;/h2&gt;

&lt;p&gt;Unique names are easier to search and target:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;frontend-accessibility
backend-rate-limits
docs-release-notes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Select a task and press &lt;code&gt;Ctrl+R&lt;/code&gt;, or rename it from the session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/rename backend-rate-limits
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Queue a message by name
&lt;/h2&gt;

&lt;p&gt;The syntax is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex queue &lt;span class="nt"&gt;--thread&lt;/span&gt; &amp;lt;NAME_OR_UUID&amp;gt; &lt;span class="nt"&gt;--message&lt;/span&gt; &amp;lt;TEXT&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex queue &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--thread&lt;/span&gt; &lt;span class="s2"&gt;"backend-rate-limits"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--message&lt;/span&gt; &lt;span class="s2"&gt;"Add a regression test for concurrent requests."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Use the full exact task name and quote both values.&lt;/p&gt;

&lt;h2&gt;
  
  
  Queue a message by session ID
&lt;/h2&gt;

&lt;p&gt;Open the task and run:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Copy the Session UUID:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;01a01234-abcd-7890-1234-123456789abc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then target it directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex queue &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--thread&lt;/span&gt; &lt;span class="s2"&gt;"01a01234-abcd-7890-1234-123456789abc"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--message&lt;/span&gt; &lt;span class="s2"&gt;"Run the full test suite before finishing."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Names are convenient for manual use. UUIDs are better for scripts and duplicated task names.&lt;/p&gt;

&lt;h2&gt;
  
  
  Attach an image
&lt;/h2&gt;

&lt;p&gt;You can include a visual reference:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex queue &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--thread&lt;/span&gt; &lt;span class="s2"&gt;"frontend-accessibility"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--message&lt;/span&gt; &lt;span class="s2"&gt;"Match the mobile header to this screenshot."&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--image&lt;/span&gt; &lt;span class="s2"&gt;"/path/to/header-reference.png"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Useful dashboard controls
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Up / Down: navigate tasks&lt;/li&gt;
&lt;li&gt;Enter: open a task&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Ctrl+F&lt;/code&gt;: search&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Ctrl+S&lt;/code&gt;: change grouping&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Ctrl+R&lt;/code&gt;: rename&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Ctrl+X&lt;/code&gt;: stop&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check the footer in your installed version because shortcuts may change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The command is not available
&lt;/h3&gt;

&lt;p&gt;Update Codex and open a new terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex update
codex &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The task cannot be found
&lt;/h3&gt;

&lt;p&gt;Use the exact quoted name or copy the UUID from &lt;code&gt;/status&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The dashboard is empty
&lt;/h3&gt;

&lt;p&gt;Check the installation, authentication, app-server connection, and thread inventory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex doctor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The message does not appear immediately
&lt;/h3&gt;

&lt;p&gt;A busy task may process the queued instruction after its current work reaches a safe point. Open it from the dashboard and inspect the transcript.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recommended workflow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;codex agents
  → rename important tasks
  → handle Need input
  → review Ready tasks
  → queue quick follow-ups
  → use UUIDs in scripts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the complete pattern: use the dashboard for visibility and &lt;code&gt;codex queue&lt;/code&gt; for delivery.&lt;/p&gt;

&lt;p&gt;For the full live walkthrough, &lt;a href="https://youtu.be/O_OCwzKPAHY" rel="noopener noreferrer"&gt;watch the video tutorial on YouTube&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>openai</category>
      <category>agents</category>
      <category>programming</category>
    </item>
    <item>
      <title>DeepSeek Harness Tutorial: Run Your First Coding Agent with DeepSeek V4</title>
      <dc:creator>Vladislav Guzey</dc:creator>
      <pubDate>Sun, 16 Aug 2026 15:21:18 +0000</pubDate>
      <link>https://dev.to/proflead/deepseek-harness-tutorial-run-your-first-coding-agent-with-deepseek-v4-4nmp</link>
      <guid>https://dev.to/proflead/deepseek-harness-tutorial-run-your-first-coding-agent-with-deepseek-v4-4nmp</guid>
      <description>&lt;p&gt;DeepSeek Harness is an open-source agent runtime from DeepSeek.&lt;/p&gt;

&lt;p&gt;It is not a model. It is the application that connects a model to your project files, terminal, tools, permissions, and session history.&lt;/p&gt;

&lt;p&gt;We will use the DeepSeek cloud API. You do not need Ollama, a local model, or a powerful GPU.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;DeepSeek Harness is currently a developer preview. Commands and settings may change between versions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What Runs Locally?
&lt;/h2&gt;

&lt;p&gt;This tutorial uses the following setup:&lt;/p&gt;

&lt;p&gt;Your computer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;DeepSeek Harness&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Browser interface&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Source code&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Terminal commands&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;File changes&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;DeepSeek cloud:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DeepSeek V4 model&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Web UI is local, but repository context may be sent to the DeepSeek API when the model needs it.&lt;/p&gt;

&lt;p&gt;Do not use a confidential repository for your first test.&lt;/p&gt;

&lt;h2&gt;
  
  
  Requirements
&lt;/h2&gt;

&lt;p&gt;You need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;Node.js 22.19 or later&lt;/li&gt;
&lt;li&gt;npm and npx&lt;/li&gt;
&lt;li&gt;A DeepSeek API key&lt;/li&gt;
&lt;li&gt;API balance&lt;/li&gt;
&lt;li&gt;A browser&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The current repository supports Node.js &lt;code&gt;^22.19.0&lt;/code&gt; or Node.js &lt;code&gt;24+&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Check your versions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;node --version
npm --version
npx --version
git --version
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a new installation, Node.js 24 is a good choice.&lt;/p&gt;

&lt;p&gt;With NVM:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nvm &lt;span class="nb"&gt;install &lt;/span&gt;24
nvm use 24
nvm &lt;span class="nb"&gt;alias &lt;/span&gt;default 24
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a Demo Project&lt;/p&gt;

&lt;p&gt;Create a disposable project:&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;deepseek-harness-demo
&lt;span class="nb"&gt;cd &lt;/span&gt;deepseek-harness-demo
git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create calculator.js:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;multiply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The function contains a bug. It adds the numbers instead of multiplying them.&lt;/p&gt;

&lt;p&gt;Create calculator.test.js:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;test&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node:test&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;assert&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node:assert/strict&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;multiply&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./calculator.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;multiply returns the product of two numbers&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;equal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;multiply&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create package.json:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"deepseek-harness-demo"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"private"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"module"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"test"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node --test"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run the test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It should fail.&lt;/p&gt;

&lt;p&gt;Commit the initial state:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Add calculator with intentional bug"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A Git commit makes it easy to inspect and undo the agent's changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start DeepSeek Harness
&lt;/h2&gt;

&lt;p&gt;Remain inside the project folder 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;npx @deepseek-ai/dsh web
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The current official README uses this as the main Web UI command. The server normally starts on port &lt;code&gt;3080&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Open:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://127.0.0.1:3080
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep the terminal process running.&lt;/p&gt;

&lt;p&gt;When port &lt;code&gt;3080&lt;/code&gt; is unavailable, choose another port:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @deepseek-ai/dsh web &lt;span class="nt"&gt;--port&lt;/span&gt; 3081
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then open:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://127.0.0.1:3081
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Add Your DeepSeek API Key
&lt;/h2&gt;

&lt;p&gt;Inside the Web UI:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open &lt;strong&gt;Settings&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;Models&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Find the DeepSeek provider&lt;/li&gt;
&lt;li&gt;Paste your API key&lt;/li&gt;
&lt;li&gt;Save&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The built-in DeepSeek configuration does not require you to manually add a custom base URL.&lt;/p&gt;

&lt;p&gt;Harness stores the key through its local credential system. The settings keep a credential reference, while the browser receives a redacted description instead of the saved secret.&lt;/p&gt;

&lt;p&gt;Do not show this screen while recording a video.&lt;/p&gt;

&lt;h2&gt;
  
  
  Select a Model
&lt;/h2&gt;

&lt;p&gt;Return to the main interface and choose:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DeepSeek-V4-Flash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;DeepSeek-V4-Flash&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;deepseek-v4-flash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The official DeepSeek adapter currently advertises V4 Flash and V4 Pro by default.&lt;/p&gt;

&lt;p&gt;Start with Flash. Use Pro later for more difficult tasks.&lt;/p&gt;

&lt;p&gt;Create a new session after changing models. Existing sessions keep the model recorded in their own history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose the Workspace
&lt;/h2&gt;

&lt;p&gt;Click &lt;strong&gt;Choose workspace&lt;/strong&gt; and select the demo project.&lt;/p&gt;

&lt;p&gt;Run this command when you need the full path:&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;pwd&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A new Harness Web UI does not enable the message composer until you select a workspace.&lt;/p&gt;

&lt;h2&gt;
  
  
  Select Safe Permissions
&lt;/h2&gt;

&lt;p&gt;Choose the permission preset that uses:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;workspace-write
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and asks before sensitive operations.&lt;/p&gt;

&lt;p&gt;Avoid this preset during your first run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;danger-full-access
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The default &lt;code&gt;workspace-write&lt;/code&gt; preset combines workspace confinement with an approval policy of &lt;code&gt;ask&lt;/code&gt;. The default &lt;code&gt;danger-full-access&lt;/code&gt; preset combines broad access with &lt;code&gt;never&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Use a disposable project even with the safer option.&lt;/p&gt;

&lt;h2&gt;
  
  
  Give the Agent a Clear Task
&lt;/h2&gt;

&lt;p&gt;Paste this prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Inspect this repository.

Run the tests using:

npm test

Find the root cause of the failing test and fix it.

Requirements:
- Do not install packages.
- Do not access files outside this workspace.
- Make only the smallest necessary change.
- Run the tests again after changing the code.
- Inspect the final Git diff.
- Do not claim success unless all tests pass.
- Summarize exactly what you changed.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The expected workflow is:&lt;/p&gt;

&lt;p&gt;Read the source file&lt;br&gt;
Read the test&lt;br&gt;
Run npm test&lt;br&gt;
Find the incorrect + operator&lt;br&gt;
Replace it with *&lt;br&gt;
Run the test again&lt;br&gt;
Inspect the Git diff&lt;br&gt;
Return a summary&lt;/p&gt;

&lt;p&gt;Approve only actions that you understand.&lt;/p&gt;

&lt;p&gt;Verify the Result&lt;/p&gt;

&lt;p&gt;Do not trust the agent's final message without checking it.&lt;/p&gt;

&lt;p&gt;Run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;test&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then inspect the code change:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git diff
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The expected diff is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt; export function multiply(a, b) {
&lt;span class="gd"&gt;-  return a + b;
&lt;/span&gt;&lt;span class="gi"&gt;+  return a * b;
&lt;/span&gt; }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check the repository status:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only the intended file should be changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Agent Loop Works
&lt;/h2&gt;

&lt;p&gt;One model response is usually not enough for a coding task.&lt;/p&gt;

&lt;p&gt;Harness may run several steps:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User prompt
    ↓
Model request
    ↓
Tool call
    ↓
Permission check
    ↓
Local tool execution
    ↓
Tool result
    ↓
Another model request
    ↓
Final response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A step includes one model request and the tools called from that request. A turn can contain several steps.&lt;/p&gt;

&lt;p&gt;The durable session log can store user messages, assistant output, tool calls, tool results, and execution boundaries. Harness reconstructs model history from this event stream.&lt;/p&gt;

&lt;p&gt;This supports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Session resume&lt;/li&gt;
&lt;li&gt;Replay&lt;/li&gt;
&lt;li&gt;Forking&lt;/li&gt;
&lt;li&gt;Transcripts&lt;/li&gt;
&lt;li&gt;Debugging&lt;/li&gt;
&lt;li&gt;Persistence&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also helps you understand why the agent made a particular decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  What to Try Next
&lt;/h2&gt;

&lt;p&gt;After the small demo works, test a real but non-sensitive repository.&lt;/p&gt;

&lt;p&gt;A useful prompt is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Before changing files:
1. Read the relevant documentation.
2. Run the existing tests.
3. Explain the root cause.
4. Propose the smallest fix.

After I approve:
1. Apply the change.
2. Run the relevant tests.
3. Inspect the final diff.
4. Report remaining risks.

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Learn more about DeepSeek Harness on my website:&amp;nbsp;&lt;a href="https://proflead.dev/" rel="noopener noreferrer"&gt;https://proflead.dev/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>deepseek</category>
      <category>ai</category>
      <category>tutorial</category>
      <category>agents</category>
    </item>
    <item>
      <title>How to Prepare for the Next OpenAI Codex Ambassador Cohort</title>
      <dc:creator>Vladislav Guzey</dc:creator>
      <pubDate>Sat, 01 Aug 2026 15:34:31 +0000</pubDate>
      <link>https://dev.to/proflead/how-to-prepare-for-the-next-openai-codex-ambassador-cohort-3pa6</link>
      <guid>https://dev.to/proflead/how-to-prepare-for-the-next-openai-codex-ambassador-cohort-3pa6</guid>
      <description>&lt;p&gt;I am Vladislav Guzey (&lt;strong&gt;proflead&lt;/strong&gt;), an OpenAI Codex Ambassador in Chiang Mai, Thailand.&lt;/p&gt;

&lt;p&gt;If you are interested in a future Codex Ambassador cohort, the best preparation is not writing a perfect application. It is doing useful work for developers before the form opens.&lt;/p&gt;

&lt;p&gt;This guide explains the role, the current program status, and a practical preparation plan you can start now.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Status checked August 1, 2026:&lt;/strong&gt; applications are paused while OpenAI supports the current cohort. OpenAI plans to open another cohort, but it has not announced a date. Use the &lt;a href="https://developers.openai.com/community/codex-ambassadors" rel="noopener noreferrer"&gt;official Codex Ambassadors page&lt;/a&gt; as the source of truth.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What is a Codex Ambassador?
&lt;/h2&gt;

&lt;p&gt;The OpenAI Codex Ambassador Program is a global community program. It brings together people who help developers learn and build with Codex.&lt;/p&gt;

&lt;p&gt;The program is relevant to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Developer meetup organizers&lt;/li&gt;
&lt;li&gt;Open-source maintainers and contributors&lt;/li&gt;
&lt;li&gt;Student community leaders&lt;/li&gt;
&lt;li&gt;Workshop teachers&lt;/li&gt;
&lt;li&gt;Codex power users who support other builders&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You do not need to be a full-time content creator or have a large audience. A useful GitHub project, a clear tutorial, or a small hands-on workshop can show meaningful community impact.&lt;/p&gt;

&lt;h2&gt;
  
  
  The ambassador role as a simple loop
&lt;/h2&gt;

&lt;p&gt;I think about the work as a four-step loop:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Listen to builders
      ↓
Create an event or resource
      ↓
Help people use it
      ↓
Share lessons and feedback
      ↺
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each part improves the next one.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Listen to builders
&lt;/h3&gt;

&lt;p&gt;Find out what people actually need. New developers may need installation help. Experienced engineers may want code review, testing, migration, or automation examples. Open-source maintainers may care about issue triage and contributor workflows.&lt;/p&gt;

&lt;p&gt;Do not choose an event topic only because it sounds impressive. Choose it because it removes a real obstacle.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Create something practical
&lt;/h3&gt;

&lt;p&gt;Ambassador contributions may include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Meetups and workshops&lt;/li&gt;
&lt;li&gt;Hackathons or build days&lt;/li&gt;
&lt;li&gt;Tutorials and videos&lt;/li&gt;
&lt;li&gt;Open-source repositories&lt;/li&gt;
&lt;li&gt;Codex skills and agents&lt;/li&gt;
&lt;li&gt;Prompt and workflow examples&lt;/li&gt;
&lt;li&gt;Event notes and learning materials&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reusable resources are especially useful. A workshop helps the people in the room. A public repository or guide can also help the next group.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Support people while they build
&lt;/h3&gt;

&lt;p&gt;A good technical event should include time for participants to use the tool. A 60-minute talk with no practice may be interesting, but it does not show whether people can apply the ideas.&lt;/p&gt;

&lt;p&gt;For a beginner workshop, I like a structure similar to this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;10 min  — explain the task and expected result
15 min  — demonstrate one complete workflow
30 min  — participants build with support
15 min  — demos, questions, and feedback
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The exact timing can change. The important point is to give builders enough time to try, fail safely, ask questions, and continue.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Share honest feedback
&lt;/h3&gt;

&lt;p&gt;Ambassadors can report what developers find useful, confusing, or difficult. This feedback gives the Codex team context from different cities, countries, skill levels, and working environments.&lt;/p&gt;

&lt;p&gt;Useful feedback is specific. “People liked it” is less helpful than “five beginners could not understand where project instructions should live, so we added a short setup exercise.”&lt;/p&gt;

&lt;h2&gt;
  
  
  What support is listed?
&lt;/h2&gt;

&lt;p&gt;OpenAI currently describes support including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Codex and API credits for ambassador activities and events&lt;/li&gt;
&lt;li&gt;Adaptable starter kits&lt;/li&gt;
&lt;li&gt;Collaboration with ambassadors and the Codex team&lt;/li&gt;
&lt;li&gt;Invitations to selected future events&lt;/li&gt;
&lt;li&gt;Exclusive swag&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Support can change between cohorts. Verify the exact details when a new application round opens.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the time commitment?
&lt;/h2&gt;

&lt;p&gt;The current expectation is about &lt;strong&gt;two to four hours per week&lt;/strong&gt; and at least &lt;strong&gt;one contribution each month&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Treat this as regular community work, not a single application task. Some weeks may be quiet. Event weeks may require more preparation.&lt;/p&gt;

&lt;p&gt;Before applying, ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can I contribute consistently?&lt;/li&gt;
&lt;li&gt;Do I have a community or audience I understand?&lt;/li&gt;
&lt;li&gt;Can I complete at least one realistic activity each month?&lt;/li&gt;
&lt;li&gt;Can I listen to feedback instead of only promoting my own ideas?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A five-part preparation plan
&lt;/h2&gt;

&lt;p&gt;The following is my personal advice, not an official OpenAI checklist.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Build with Codex
&lt;/h3&gt;

&lt;p&gt;Use Codex on something real: a personal project, work task, open-source issue, workshop example, or automation.&lt;/p&gt;

&lt;p&gt;Keep a small record:&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="gu"&gt;## Project&lt;/span&gt;
What did I build or change?

&lt;span class="gu"&gt;## Workflow&lt;/span&gt;
How did I use Codex?

&lt;span class="gu"&gt;## Result&lt;/span&gt;
What worked?

&lt;span class="gu"&gt;## Lesson&lt;/span&gt;
What would I teach another developer?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Three strong examples are enough to begin.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Publish one reusable resource
&lt;/h3&gt;

&lt;p&gt;Choose a problem you understand and create one resource that solves it. This could be a short DEV post, GitHub example, video, Codex skill, or workshop worksheet.&lt;/p&gt;

&lt;p&gt;Make it easy to verify:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;State the goal.&lt;/li&gt;
&lt;li&gt;List requirements.&lt;/li&gt;
&lt;li&gt;Show the workflow.&lt;/li&gt;
&lt;li&gt;Explain common mistakes.&lt;/li&gt;
&lt;li&gt;Include the final result.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Help a small group
&lt;/h3&gt;

&lt;p&gt;You do not need to begin with a conference. Invite a local developer group, student club, online community, or several colleagues.&lt;/p&gt;

&lt;p&gt;Run a small session and collect questions. Those questions often reveal what your next tutorial should explain.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Define your local focus
&lt;/h3&gt;

&lt;p&gt;Write one sentence in this format:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I help &lt;strong&gt;[specific group]&lt;/strong&gt; use Codex for &lt;strong&gt;[specific need]&lt;/strong&gt; through &lt;strong&gt;[realistic activity]&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I help university students in Chiang Mai learn practical coding-agent workflows through monthly beginner workshops.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is clearer than “I want to grow AI worldwide.”&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Propose one first-month contribution
&lt;/h3&gt;

&lt;p&gt;Keep it small enough to complete:&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="na"&gt;audience&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;20 local developers&lt;/span&gt;
&lt;span class="na"&gt;format&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;90-minute hands-on workshop&lt;/span&gt;
&lt;span class="na"&gt;topic&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;using Codex to understand and improve an existing repository&lt;/span&gt;
&lt;span class="na"&gt;result&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;each participant completes one reviewed change&lt;/span&gt;
&lt;span class="na"&gt;follow_up&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;publish notes and example files&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Specific plans are easier to understand and deliver.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned from an event in Thailand
&lt;/h2&gt;

&lt;p&gt;On July 18, 2026, I hosted an OpenAI Build Week community meetup in Chiang Mai. Developers, founders, students, and AI-curious creators explored Codex across the app, CLI, IDE, and cloud.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpiorc783spvyyoyagzcl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpiorc783spvyyoyagzcl.jpg" alt="Community builders collaborating at OpenAI Build Week Chiang Mai" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My main lesson was simple: different experience levels can work well in one room when the activity has a clear goal and people are encouraged to help one another.&lt;/p&gt;

&lt;p&gt;If you are in Thailand, follow my &lt;a href="https://proflead.dev/codex/" rel="noopener noreferrer"&gt;Codex events and resources page&lt;/a&gt; for future meetups, workshops, hackathons, recaps, and tutorials. You can also see &lt;a href="https://developers.openai.com/community/codex-ambassadors?ambassador=vladislav-viktorovich-guzey" rel="noopener noreferrer"&gt;my official OpenAI Ambassador profile&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frequently asked questions
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Do I need previous event experience?
&lt;/h3&gt;

&lt;p&gt;Existing community experience is useful, but professional event experience is not required. Builders who are ready to start bringing people together locally may also be a fit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Can several people apply from one city?
&lt;/h3&gt;

&lt;p&gt;Yes. The program is about supporting a community, not reserving a city for one person.&lt;/p&gt;

&lt;h3&gt;
  
  
  Do I need to be an expert programmer?
&lt;/h3&gt;

&lt;p&gt;OpenAI does not list a required degree, job title, or fixed number of coding years. Practical Codex experience and the ability to help builders are more relevant.&lt;/p&gt;

&lt;h3&gt;
  
  
  When will applications reopen?
&lt;/h3&gt;

&lt;p&gt;No reopening date has been announced. Check the &lt;a href="https://developers.openai.com/community/codex-ambassadors" rel="noopener noreferrer"&gt;official program page&lt;/a&gt; instead of relying on an old application link.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developers.openai.com/community/codex-ambassadors" rel="noopener noreferrer"&gt;Official Codex Ambassadors page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.openai.com/community/meetups" rel="noopener noreferrer"&gt;Official Codex Meetups&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developers.openai.com/community" rel="noopener noreferrer"&gt;OpenAI developer community&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/proflead/codex-skills-library" rel="noopener noreferrer"&gt;Codex Skills Library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/proflead/codex-agents-library" rel="noopener noreferrer"&gt;Codex Agents Library&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://proflead.dev/posts/openai-codex-ambassador-program/" rel="noopener noreferrer"&gt;My complete Codex Ambassador guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application form may be paused, but your preparation can start today: build something real, document the workflow, help a small group, and listen carefully to what developers need.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>OpenAI Codex Subagents Tutorial for Beginners</title>
      <dc:creator>Vladislav Guzey</dc:creator>
      <pubDate>Thu, 02 Jul 2026 14:41:53 +0000</pubDate>
      <link>https://dev.to/proflead/openai-codex-subagents-tutorial-for-beginners-1amj</link>
      <guid>https://dev.to/proflead/openai-codex-subagents-tutorial-for-beginners-1amj</guid>
      <description>&lt;p&gt;Hey devs! When you use Codex, putting too many tasks into a single conversation makes the model slow, confused, and unreliable. To solve this problem, I highly recommend using&amp;nbsp;&lt;strong&gt;subagents&lt;/strong&gt;&amp;nbsp;(or Custom Agents).&lt;/p&gt;

&lt;p&gt;Think of it like this: instead of forcing one agent to do everything, you act as the manager running a team. You can have one subagent write front-end code, another write back-end code, and another review the code-all working in parallel at the exact same time. And this is what we cover in today’s article ;).&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;What Are Codex Subagents?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A subagent is a separate Codex agent thread that the parent Codex session can spawn for a focused task. Subagents are useful when a job can be split into independent or specialized work: code review, security audit, documentation research, frontend debugging, test generation, or implementation planning.&lt;/p&gt;

&lt;p&gt;Codex includes built-in agents such as &lt;code&gt;**default**&lt;/code&gt;, &lt;code&gt;**worker**&lt;/code&gt;, and &lt;code&gt;**explorer**&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo5qobr6mgp27350xgki0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo5qobr6mgp27350xgki0.png" alt="Codex includes built-in agents" width="700" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Built-in Agents I Use
&lt;/h3&gt;

&lt;p&gt;Codex already comes with a few basic agents built right in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Default Agent:&lt;/strong&gt;&amp;nbsp;This is your general fallback agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Worker Agent:&lt;/strong&gt;&amp;nbsp;Focuses strictly on implementation and bug fixes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explorer Agent:&lt;/strong&gt;&amp;nbsp;Best for reading, searching, and understanding your existing codebase.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also define custom agents as TOML files. Each custom agent has its own name, description, instructions, and optional model, reasoning, sandbox, MCP, and skill settings.&lt;/p&gt;

&lt;p&gt;Subagents are not spawned automatically just because files exist. In normal use, ask Codex explicitly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Spawn security_auditor to review this authentication change &lt;span class="k"&gt;for &lt;/span&gt;OWASP risks.  
Spawn python_expert to refactor this module with &lt;span class="nb"&gt;type &lt;/span&gt;hints and pytest tests.  
Spawn orchestrator to plan this full-stack feature and recommend specialist handoffs.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why I Use subagents (And Why You Should Too)
&lt;/h2&gt;

&lt;p&gt;Using sub-agents gives you three massive advantages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;No Context Overload:&lt;/strong&gt;&amp;nbsp;Even large context window LLMs have limits. Sub-agents keep your chat clean because each agent only looks at its specific task.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Speed:&lt;/strong&gt;&amp;nbsp;Because multiple agents work in parallel, your tasks get done much faster.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Specialization:&lt;/strong&gt;&amp;nbsp;Different tasks need different thinking. With sub-agents, you can assign different models, unique instructions, and specific tools to each job.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where Custom Agents Live
&lt;/h2&gt;

&lt;p&gt;Codex supports two common install locations:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5x1jubgqtky5jkni0bcv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5x1jubgqtky5jkni0bcv.png" alt="Where Custom Agents Live" width="700" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For public libraries and team repos, use project-scoped agents so they clone with the repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;.codex/  
  config.toml  
  agents/  
    python_expert.toml  
    security_auditor.toml  
    orchestrator.toml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dot directories are hidden in many file explorers. If you do not see&amp;nbsp;&lt;code&gt;.codex&lt;/code&gt;, use:&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;ls&lt;/span&gt; &lt;span class="nt"&gt;-la&lt;/span&gt;  
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-la&lt;/span&gt; .codex/agents
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  How to Set Up Your Custom Sub-agents
&lt;/h2&gt;

&lt;p&gt;When you find yourself repeating the same workflow many times, it’s time to build a&amp;nbsp;&lt;strong&gt;Custom Agent&lt;/strong&gt;. You can set these up directly inside your terminal, VS Code, or whatever IDE you prefer.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Create the Folder Structure
&lt;/h3&gt;

&lt;p&gt;Go to your project folder and create a directory structure that looks exactly like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;your-project/  
│  
└── .codex/  
    ├── config.toml  
    └── agents/  
        ├── backend_developer.toml  
        └── code_reviewer.toml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;(Tip: If you want these agents to be accessible across your entire computer for all projects, place them in your home directory at&lt;/em&gt;&amp;nbsp;&lt;code&gt;_~/.codex/agents/_&lt;/code&gt;&amp;nbsp;&lt;em&gt;instead).&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Configure Global Settings (&lt;code&gt;config.toml&lt;/code&gt;)
&lt;/h3&gt;

&lt;p&gt;Open your&amp;nbsp;&lt;code&gt;config.toml&lt;/code&gt;&amp;nbsp;file to set up the global boundaries for your team. Here is the configuration I recommend:&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="o"&gt;[&lt;/span&gt;agents]  
max_threads &lt;span class="o"&gt;=&lt;/span&gt; 6  
max_depth &lt;span class="o"&gt;=&lt;/span&gt; 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;max_threads&lt;/code&gt;&amp;nbsp;controls how many agent threads can be open concurrently.&amp;nbsp;&lt;code&gt;max_depth = 1&lt;/code&gt;&amp;nbsp;is a good default because it allows direct child agents but prevents recursive fan-out that can become expensive and hard to reason about.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Write Your Custom Agent Files
&lt;/h3&gt;

&lt;p&gt;Inside your&amp;nbsp;&lt;code&gt;.codex/agents/&lt;/code&gt;&amp;nbsp;folder, create files using readable, clear names. We will use these exact file names to call the agents in our prompts later.&lt;/p&gt;

&lt;h3&gt;
  
  
  Important fields explained
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;name&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The identifier Codex uses when spawning the agent. Keep it stable and easy to type. This library uses lowercase&amp;nbsp;&lt;code&gt;underscore_case&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python_expert  
security_auditor  
frontend_developer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;description&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tells humans and Codex when this agent should be used. Make it specific. A weak description says:&lt;/p&gt;

&lt;p&gt;Helps with code.&lt;/p&gt;

&lt;p&gt;A stronger description says:&lt;/p&gt;

&lt;p&gt;Use when you need read-only pull request review focused on correctness,&lt;br&gt;&lt;br&gt;
regressions, security risks, and missing tests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;developer_instructions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The agent’s core behavior. Include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Role and specialty.&lt;/li&gt;
&lt;li&gt;What to prioritize, and what to avoid.&lt;/li&gt;
&lt;li&gt;How to report results.&lt;/li&gt;
&lt;li&gt;Whether it should edit files or stay read-only.&lt;/li&gt;
&lt;li&gt;How it should handle missing context or validation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;model &amp;amp; model_reasoning_effort&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use stronger models and higher reasoning for review, security, architecture, orchestration, and difficult debugging. Use smaller or faster models for routine implementation, documentation, and focused exploration. If you omit model fields, the agent inherits the parent Codex session settings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;sandbox_mode&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use&amp;nbsp;&lt;code&gt;read-only&lt;/code&gt;&amp;nbsp;for agents that inspect and report without changing files; use&amp;nbsp;&lt;code&gt;workspace-write&lt;/code&gt;&amp;nbsp;for agents that implement code or documentation changes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sandbox_mode &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"read-only"&lt;/span&gt;

sandbox_mode &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"workspace-write"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Subagents still inherit the parent session’s approval policy and live runtime overrides, so the parent session remains the final control point.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;nickname_candidates&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Display labels for spawned agent threads. They do not change the real agent's name. Use simple ASCII names with letters, digits, spaces, hyphens, or underscores.&lt;/p&gt;

&lt;p&gt;nickname_candidates = ["Atlas", "Delta", "Echo"]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example 1:&lt;/strong&gt;&amp;nbsp;&lt;code&gt;**security_auditor.toml**&lt;/code&gt;&amp;nbsp;Open the file and define the properties. The most important parts to include are the name, description, and developer instructions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;name &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"security_auditor"&lt;/span&gt;  
description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Use when you need read-only security review, OWASP risk analysis, dependency risk triage, or credential-handling review."&lt;/span&gt;  
model &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"gpt-5.4"&lt;/span&gt;  
model_reasoning_effort &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"high"&lt;/span&gt;  
sandbox_mode &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"read-only"&lt;/span&gt;  
nickname_candidates &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"Security Auditor"&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt;  
developer_instructions &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"""  
You are the Codex custom subagent &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;security_auditor&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="s2"&gt;.  

Review code like a security owner. Stay read-only. Prioritize exploitable vulnerabilities, auth and access-control flaws, injection risks, data exposure, insecure secrets handling, and dependency risk.  

Lead with concrete findings ordered by severity. Include affected files or symbols, impact, and remediation. Avoid style-only comments.  
"""&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example 2:&lt;/strong&gt;&amp;nbsp;&lt;code&gt;**python_expert.toml**&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;name &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"python_expert"&lt;/span&gt;  
description &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"Use when you need modern Python implementation, refactoring, type hints, pytest tests, or framework-specific Python guidance."&lt;/span&gt;  
developer_instructions &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"""  
You are the Codex custom subagent &lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;python_expert&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="s2"&gt;.  

Focus on modern Python. Prefer type hints, explicit error handling, pathlib, small functions, and pytest coverage. Follow the parent Codex session's repository instructions and approval policy.  

When editing code, keep changes scoped to the Python task. When you cannot run validation, state the exact command the parent should run.  
"""&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;My Pro-Tip on Budgeting:&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;&lt;em&gt;If you are on a pay-as-you-go plan, defining the&lt;/em&gt;&amp;nbsp;&lt;code&gt;_model_&lt;/code&gt;&amp;nbsp;&lt;em&gt;property is incredibly useful. You can set up a cheaper model for low-effort tasks and save expensive, high-reasoning models for complex tasks!&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Shortcut: The Codex Agents Library
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw01q8gaxulxpydt0vnt6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fw01q8gaxulxpydt0vnt6.png" alt="Shortcut: The Codex Agents Library" width="700" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you don’t want to create these from scratch, you don’t have to. I have a library containing around 36 different pre-made agents. You can simply download a file-like the&amp;nbsp;&lt;code&gt;front_end_developer&lt;/code&gt;&amp;nbsp;agent-and drop it straight into your project's&amp;nbsp;&lt;code&gt;agents&lt;/code&gt;&amp;nbsp;folder using VS Code.&lt;/p&gt;

&lt;p&gt;Codex Agents Library:&amp;nbsp;&lt;a href="https://github.com/proflead/codex-agents-library" rel="noopener noreferrer"&gt;https://github.com/proflead/codex-agents-library&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Run Subagents in the Terminal
&lt;/h2&gt;

&lt;p&gt;Now that everything is configured, let’s launch Codex and look at how to control your new team.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Calling a Single Agent
&lt;/h3&gt;

&lt;p&gt;To spawn a custom agent, you must explicitly call it by its name inside your prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Spawn code_reviewer to review this branch against main &lt;span class="k"&gt;for &lt;/span&gt;correctness,   
regressions, and missing tests. Report findings only.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Codex will analyze your folder, find the front-end agent, and successfully assign the task to it.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Running Agents in Parallel
&lt;/h3&gt;

&lt;p&gt;Because we allowed up to 6 concurrent threads in our config, you can call multiple agents at once to handle separate tasks simultaneously:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Review this PR with parallel subagents. Spawn code_reviewer &lt;span class="k"&gt;for &lt;/span&gt;correctness,   
security_auditor &lt;span class="k"&gt;for &lt;/span&gt;exploitable risks, test_generator &lt;span class="k"&gt;for &lt;/span&gt;coverage gaps,   
and performance_optimizer &lt;span class="k"&gt;for &lt;/span&gt;latency or memory issues. Wait &lt;span class="k"&gt;for &lt;/span&gt;all results   
and summarize findings by severity.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will see both agents trigger and start working side-by-side in real-time.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Managing the Session
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Check Status:&lt;/strong&gt;&amp;nbsp;Type the&amp;nbsp;&lt;code&gt;**/agent**&lt;/code&gt;&amp;nbsp;command in your session terminal. This lists every active sub-agent currently running.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Granular Control:&lt;/strong&gt;&amp;nbsp;You can actually step inside the thread of a single active agent to give it specific, isolated instructions without confusing the other agents.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Watch out for Git Branches:&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;&lt;em&gt;By default, sub-agents do not create separate working branches; they will dump all changes straight onto your&lt;/em&gt;&amp;nbsp;&lt;code&gt;_main_&lt;/code&gt;&amp;nbsp;&lt;em&gt;branch. If you want to keep things clean, explicitly tell them in your prompt:&lt;/em&gt;&amp;nbsp;"create a separate branch before you start the job."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  5 Critical Mistakes I Want You to Avoid
&lt;/h2&gt;

&lt;p&gt;As you start experimenting with sub-agents, please keep these five classic beginner traps in mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Using Agents Without a Clear Plan:&lt;/strong&gt;&amp;nbsp;If you just say&amp;nbsp;&lt;em&gt;“use sub-agents to fix my app,”&lt;/em&gt;&amp;nbsp;your manager agent has to guess too much. Be highly specific about who does what.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spawning Too Many Agents:&lt;/strong&gt;&amp;nbsp;More agents do not mean better output. Spawning too many just increases your API costs, adds background noise, and creates general confusion.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Letting Multiple Agents Edit Related Files at the Same Time:&lt;/strong&gt;&amp;nbsp;This is a major trap. It can create&amp;nbsp;&lt;strong&gt;semantic conflicts&lt;/strong&gt;-meaning your code breaks logically even if Git doesn’t show a traditional merge conflict.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Trusting AI-Generated Tests Too Much:&lt;/strong&gt;&amp;nbsp;AI-written tests sometimes test the&amp;nbsp;&lt;em&gt;implementation&lt;/em&gt;&amp;nbsp;rather than the&amp;nbsp;&lt;em&gt;behavior&lt;/em&gt;. Always review the tests yourself.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Giving Agents Early Access to Sensitive Areas:&lt;/strong&gt;&amp;nbsp;Never let a sub-agent handle production secrets, deployment scripts, database migrations, or infrastructure changes without a human reviewing it first.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At the end of the day, subagents are incredibly powerful tools to speed up your development, but you are still completely responsible for the final code!&lt;/p&gt;

&lt;h2&gt;
  
  
  Codex Subagents: Video Tutorial
&lt;/h2&gt;

&lt;p&gt;Watch my full step-by-step tutorial about Codex agents on YouTube:&lt;br&gt;
  &lt;iframe src="https://www.youtube.com/embed/xItvCoWNPVo"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Watch on YouTube:&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;&lt;a href="https://youtu.be/xItvCoWNPVo" rel="noopener noreferrer"&gt;&lt;strong&gt;&lt;em&gt;Codex Subagents&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cheers, proflead! ;)&lt;/p&gt;

</description>
      <category>openai</category>
      <category>coding</category>
      <category>programming</category>
      <category>ai</category>
    </item>
    <item>
      <title>Codex /goal is the Most Powerful AI Coding Feature You're Not Using</title>
      <dc:creator>Vladislav Guzey</dc:creator>
      <pubDate>Wed, 20 May 2026 12:37:26 +0000</pubDate>
      <link>https://dev.to/proflead/codex-goal-is-the-most-powerful-ai-coding-feature-youre-not-using-2nh</link>
      <guid>https://dev.to/proflead/codex-goal-is-the-most-powerful-ai-coding-feature-youre-not-using-2nh</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/proflead/openai-codex-goal-your-code-ships-itself-while-you-sleep-3kk8" class="crayons-story__hidden-navigation-link"&gt;OpenAI Codex /goal: Your Code Ships Itself While You Sleep&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/proflead" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1014611%2F65dc9cbf-f195-47fb-bee6-5b12a8844e66.png" alt="proflead profile" class="crayons-avatar__image" width="726" height="749"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/proflead" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Vladislav Guzey
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Vladislav Guzey
                
              
              &lt;div id="story-author-preview-content-3709405" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/proflead" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1014611%2F65dc9cbf-f195-47fb-bee6-5b12a8844e66.png" class="crayons-avatar__image" alt="" width="726" height="749"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Vladislav Guzey&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/proflead/openai-codex-goal-your-code-ships-itself-while-you-sleep-3kk8" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 20&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/proflead/openai-codex-goal-your-code-ships-itself-while-you-sleep-3kk8" id="article-link-3709405"&gt;
          OpenAI Codex /goal: Your Code Ships Itself While You Sleep
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/openai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;openai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/vibecoding"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;vibecoding&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/coding"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;coding&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/proflead/openai-codex-goal-your-code-ships-itself-while-you-sleep-3kk8" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;2&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/proflead/openai-codex-goal-your-code-ships-itself-while-you-sleep-3kk8#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>OpenAI Codex /goal: Your Code Ships Itself While You Sleep</title>
      <dc:creator>Vladislav Guzey</dc:creator>
      <pubDate>Wed, 20 May 2026 12:36:51 +0000</pubDate>
      <link>https://dev.to/proflead/openai-codex-goal-your-code-ships-itself-while-you-sleep-3kk8</link>
      <guid>https://dev.to/proflead/openai-codex-goal-your-code-ships-itself-while-you-sleep-3kk8</guid>
      <description>&lt;p&gt;AI coding assistants are becoming better every day. But most still work one prompt at a time. You ask something, get an answer, and then guide the next step manually.&lt;/p&gt;

&lt;p&gt;The new &lt;code&gt;/goal&lt;/code&gt; command in OpenAI Codex changes this workflow.&lt;/p&gt;

&lt;p&gt;Instead of asking for isolated answers, you can give Codex a long-term objective with clear success conditions. Codex can investigate, write code, run tests, and continue working toward the result over multiple steps.&lt;/p&gt;

&lt;p&gt;In this guide, you’ll learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What &lt;code&gt;/goal&lt;/code&gt; does&lt;/li&gt;
&lt;li&gt;How it works&lt;/li&gt;
&lt;li&gt;How to enable it&lt;/li&gt;
&lt;li&gt;Real examples&lt;/li&gt;
&lt;li&gt;Best practices&lt;/li&gt;
&lt;li&gt;Common mistakes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What Is the &lt;code&gt;/goal&lt;/code&gt; Command in Codex?
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;/goal&lt;/code&gt; command lets you define a persistent objective for Codex.&lt;/p&gt;

&lt;p&gt;Instead of treating every message as a separate request, Codex keeps working toward the same result until:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The goal is completed&lt;/li&gt;
&lt;li&gt;You pause it&lt;/li&gt;
&lt;li&gt;You clear it&lt;/li&gt;
&lt;li&gt;It gets blocked&lt;/li&gt;
&lt;li&gt;Resource limits are reached&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of it like giving an AI developer a task and letting it continue working without repeating instructions.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the Goal Lifecycle Works
&lt;/h2&gt;

&lt;p&gt;Goals usually follow a simple workflow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffep1q9pjm4me4c7hv81y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffep1q9pjm4me4c7hv81y.png" alt="How the Goal Lifecycle Works" width="700" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Define the objective
&lt;/h3&gt;

&lt;p&gt;You tell Codex what should happen.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;/goal Reduce dashboard page load time below 2 seconds&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Codex investigates and plans
&lt;/h3&gt;

&lt;p&gt;Codex may:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read files&lt;/li&gt;
&lt;li&gt;Analyze code&lt;/li&gt;
&lt;li&gt;Check dependencies&lt;/li&gt;
&lt;li&gt;Search for issues&lt;/li&gt;
&lt;li&gt;Plan next actions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Execute and verify
&lt;/h3&gt;

&lt;p&gt;Codex can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write code&lt;/li&gt;
&lt;li&gt;Run tests&lt;/li&gt;
&lt;li&gt;Refactor functions&lt;/li&gt;
&lt;li&gt;Validate changes&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4: Complete or pause
&lt;/h3&gt;

&lt;p&gt;Once conditions are met, the goal can be finished.&lt;/p&gt;

&lt;p&gt;You can also pause and resume work later.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0gz8pxgu0t739ausq2bx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0gz8pxgu0t739ausq2bx.png" alt="You can also pause and resume work later" width="700" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Codex /goal example&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Use &lt;code&gt;/goal&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Goals work best for tasks that require multiple steps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Good use cases:
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Performance optimization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/goal Reduce homepage loading time  &lt;/p&gt;

&lt;p&gt;Constraints:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep existing UI
&lt;/li&gt;
&lt;li&gt;Keep Lighthouse score above 90
&lt;/li&gt;
&lt;li&gt;Target loading under 2 seconds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Finding difficult bugs&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/goal Investigate memory leaks in analytics.ts  &lt;/p&gt;

&lt;p&gt;Constraints:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep existing architecture
&lt;/li&gt;
&lt;li&gt;Add tests if needed
&lt;/li&gt;
&lt;li&gt;Clearly label uncertain findings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Writing test coverage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/goal Create unit tests for auth.ts  &lt;/p&gt;

&lt;p&gt;Constraints:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reach at least 90% coverage
&lt;/li&gt;
&lt;li&gt;Do not modify business logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Large refactoring work&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/goal Refactor payment module  &lt;/p&gt;

&lt;p&gt;Constraints:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Preserve API behavior
&lt;/li&gt;
&lt;li&gt;Keep tests passing
&lt;/li&gt;
&lt;li&gt;Improve readability&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  When NOT to Use &lt;code&gt;/goal&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;Goals are not the right tool for every task.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0tr4cfkjjchjedzndrpx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0tr4cfkjjchjedzndrpx.png" alt="When NOT to Use" width="352" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Avoid using &lt;code&gt;/goal&lt;/code&gt; for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One-line edits&lt;/li&gt;
&lt;li&gt;Quick explanations&lt;/li&gt;
&lt;li&gt;Small bug fixes&lt;/li&gt;
&lt;li&gt;Short code reviews&lt;/li&gt;
&lt;li&gt;Questions with one answer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bad example:&lt;/p&gt;

&lt;p&gt;/goal Make this code better&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this is bad:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;“Better” has no clear finish line.&lt;/p&gt;

&lt;p&gt;Codex may continue making changes without knowing when to stop.&lt;/p&gt;

&lt;p&gt;Better version:&lt;/p&gt;

&lt;p&gt;/goal Refactor user-service.ts  &lt;/p&gt;

&lt;p&gt;Constraints:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep API unchanged
&lt;/li&gt;
&lt;li&gt;Improve readability
&lt;/li&gt;
&lt;li&gt;Keep tests passing&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Enable &lt;code&gt;/goal&lt;/code&gt; in Codex
&lt;/h2&gt;

&lt;p&gt;Update Codex:&lt;/p&gt;

&lt;p&gt;npm install -g @openai/codex@latest&lt;/p&gt;

&lt;p&gt;Verify installation:&lt;/p&gt;

&lt;p&gt;codex --version&lt;/p&gt;

&lt;p&gt;Some Codex versions may require enabling goal-related features. In order to do that find the config.toml file and add this line:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4rx8qyp8gwo6m09chfo6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4rx8qyp8gwo6m09chfo6.png" alt="Verify installation" width="700" height="45"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;[features]&lt;br&gt;&lt;br&gt;
goals = true&lt;/p&gt;
&lt;h2&gt;
  
  
  Goal Commands
&lt;/h2&gt;

&lt;p&gt;Create a goal:&lt;/p&gt;

&lt;p&gt;/goal Finish dashboard migration&lt;/p&gt;

&lt;p&gt;Check current goal:&lt;/p&gt;

&lt;p&gt;/goal&lt;/p&gt;

&lt;p&gt;Pause:&lt;/p&gt;

&lt;p&gt;/goal pause&lt;/p&gt;

&lt;p&gt;Resume:&lt;/p&gt;

&lt;p&gt;/goal resume&lt;/p&gt;

&lt;p&gt;Clear:&lt;/p&gt;

&lt;p&gt;/goal clear&lt;/p&gt;
&lt;h2&gt;
  
  
  Good vs Bad Goal Prompts
&lt;/h2&gt;
&lt;h2&gt;
  
  
  Bad
&lt;/h2&gt;

&lt;p&gt;/goal Refactor this code and make it better&lt;/p&gt;

&lt;p&gt;Problems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No measurable result&lt;/li&gt;
&lt;li&gt;No constraints&lt;/li&gt;
&lt;li&gt;No finish line&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Good
&lt;/h2&gt;

&lt;p&gt;/goal Optimize database queries in db.ts  &lt;/p&gt;

&lt;p&gt;Constraints:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep schema unchanged
&lt;/li&gt;
&lt;li&gt;Cover all execution paths with tests
&lt;/li&gt;
&lt;li&gt;Target execution time below 50ms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why it works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clear objective&lt;/li&gt;
&lt;li&gt;Defined limits&lt;/li&gt;
&lt;li&gt;Measurable result&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Permission and Safety Tips
&lt;/h2&gt;

&lt;p&gt;Codex may ask for confirmation before actions that can change files or execute commands.&lt;/p&gt;

&lt;p&gt;Before running long autonomous tasks:&lt;/p&gt;
&lt;h3&gt;
  
  
  Keep Git clean
&lt;/h3&gt;

&lt;p&gt;Create a new branch:&lt;/p&gt;

&lt;p&gt;git checkout -b codex-experiment&lt;/p&gt;
&lt;h3&gt;
  
  
  Commit before running goals
&lt;/h3&gt;

&lt;p&gt;git add .&lt;br&gt;&lt;br&gt;
git commit -m "Clean starting point"&lt;/p&gt;
&lt;h3&gt;
  
  
  Avoid sensitive environments
&lt;/h3&gt;

&lt;p&gt;Do not run autonomous tasks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;On production systems&lt;/li&gt;
&lt;li&gt;With exposed secrets&lt;/li&gt;
&lt;li&gt;On important system folders&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Best Practices
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Define a clear finish line
&lt;/h3&gt;

&lt;p&gt;Bad:&lt;/p&gt;

&lt;p&gt;/goal Improve performance&lt;/p&gt;

&lt;p&gt;Better:&lt;/p&gt;

&lt;p&gt;/goal Reduce API response time below 150ms&lt;/p&gt;
&lt;h3&gt;
  
  
  Define constraints
&lt;/h3&gt;

&lt;p&gt;Tell Codex what should not change.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep API unchanged&lt;/li&gt;
&lt;li&gt;Keep tests passing&lt;/li&gt;
&lt;li&gt;Do not change database schema&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Do not hide uncertainty
&lt;/h3&gt;

&lt;p&gt;If data may be unavailable:&lt;/p&gt;

&lt;p&gt;If metrics cannot be collected, label results as estimated.&lt;/p&gt;
&lt;h3&gt;
  
  
  Use measurable targets
&lt;/h3&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Response time under 100ms&lt;/li&gt;
&lt;li&gt;95% test coverage&lt;/li&gt;
&lt;li&gt;Lighthouse score above 90&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Video Tutorial
&lt;/h2&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/ePGrgs1-DsY"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Watch on YouTube:&lt;/em&gt; &lt;a href="https://youtu.be/ePGrgs1-DsY" rel="noopener noreferrer"&gt;&lt;em&gt;Codex /goal explained&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;/goal&lt;/code&gt; command changes Codex from a prompt-response tool into a longer-running coding workflow.&lt;/p&gt;

&lt;p&gt;Instead of repeating instructions every few minutes, you give Codex a clear objective, define constraints, and let evidence decide when work is complete.&lt;/p&gt;

&lt;p&gt;Give it a shot and share your feedback in the comments under my YouTube video! ;)&lt;/p&gt;

&lt;p&gt;Cheers, proflead! ;)&lt;/p&gt;

</description>
      <category>openai</category>
      <category>ai</category>
      <category>vibecoding</category>
      <category>coding</category>
    </item>
    <item>
      <title>Build Your First AI Agent with Google CLI (Step-by-Step)</title>
      <dc:creator>Vladislav Guzey</dc:creator>
      <pubDate>Wed, 29 Apr 2026 14:27:17 +0000</pubDate>
      <link>https://dev.to/proflead/build-your-first-ai-agent-with-google-cli-step-by-step-4cp8</link>
      <guid>https://dev.to/proflead/build-your-first-ai-agent-with-google-cli-step-by-step-4cp8</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/proflead/what-is-google-agents-cli-full-beginner-guide-mnk" class="crayons-story__hidden-navigation-link"&gt;What is Google Agents CLI? Full Beginner Guide&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/proflead" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1014611%2F65dc9cbf-f195-47fb-bee6-5b12a8844e66.png" alt="proflead profile" class="crayons-avatar__image" width="726" height="749"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/proflead" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Vladislav Guzey
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Vladislav Guzey
                
              
              &lt;div id="story-author-preview-content-3587136" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/proflead" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1014611%2F65dc9cbf-f195-47fb-bee6-5b12a8844e66.png" class="crayons-avatar__image" alt="" width="726" height="749"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Vladislav Guzey&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/proflead/what-is-google-agents-cli-full-beginner-guide-mnk" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 29&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/proflead/what-is-google-agents-cli-full-beginner-guide-mnk" id="article-link-3587136"&gt;
          What is Google Agents CLI? Full Beginner Guide
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/google"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;google&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/googlecloud"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;googlecloud&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/tutorial"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;tutorial&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/proflead/what-is-google-agents-cli-full-beginner-guide-mnk" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/proflead/what-is-google-agents-cli-full-beginner-guide-mnk#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>agents</category>
      <category>ai</category>
      <category>beginners</category>
      <category>cli</category>
    </item>
    <item>
      <title>What is Google Agents CLI? Full Beginner Guide</title>
      <dc:creator>Vladislav Guzey</dc:creator>
      <pubDate>Wed, 29 Apr 2026 14:26:11 +0000</pubDate>
      <link>https://dev.to/proflead/what-is-google-agents-cli-full-beginner-guide-mnk</link>
      <guid>https://dev.to/proflead/what-is-google-agents-cli-full-beginner-guide-mnk</guid>
      <description>&lt;p&gt;Google recently released the&amp;nbsp;&lt;a href="https://google.github.io/agents-cli/" rel="noopener noreferrer"&gt;&lt;strong&gt;Agentic CLI&lt;/strong&gt;&lt;/a&gt;, a powerful tool that makes building, testing, and deploying AI agents faster and more intuitive. I think it’s super useful, so I'll walk you through the entire lifecycle of an AI agent using the CLI.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the Google Agents CLI?
&lt;/h2&gt;

&lt;p&gt;Before we dive into the code, let’s understand the “why.” Usually, building an AI agent requires a lot of “glue code”, the messy scripts that connect an LLM (Large Language Model) to external tools or databases.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj15lzskg4edacdx9tt81.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj15lzskg4edacdx9tt81.png" alt="What is the Google Agents CLI" width="700" height="431"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Agents CLI removes this friction. Agents CLI is an official Google tool for creating, evaluating, and deploying agents built with Google’s Agent Development Kit (ADK). It acts as the programmatic backbone of the Agent Development Lifecycle (ADLC) on Google Cloud.&lt;/p&gt;

&lt;h3&gt;
  
  
  Skills packaged for agents
&lt;/h3&gt;

&lt;p&gt;Agents CLI bundles seven “skills” that teach coding agents how to perform each step of the ADLC:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd7nc829nw3y5dhgqg5du.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd7nc829nw3y5dhgqg5du.png" alt="Skills packaged for agents" width="680" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your coding agent can call these skills directly once installed. Alternatively, a human developer can run the same commands manually (see “Human Mode” below).&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Install Google Agents CLI?
&lt;/h2&gt;

&lt;p&gt;To get started, you need a clean environment. The CLI relies on a few modern web and data tools. Follow these steps to ensure everything is ready:&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python &amp;amp; PIP:&lt;/strong&gt;&amp;nbsp;The backbone of most AI development.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;python3 python3-pip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node.js &amp;amp; NPM:&lt;/strong&gt;&amp;nbsp;Required for the CLI’s interface and deployment features.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;nodejs npm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;UV:&lt;/strong&gt;&amp;nbsp;A lightning-fast Python package installer that the Agents CLI uses under the hood.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;uv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Installation Steps
&lt;/h3&gt;

&lt;p&gt;Create a Virtual Environment: It is always a good idea to keep your projects separate so they don’t interfere with each other.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-m&lt;/span&gt; venv agent-env  
&lt;span class="nb"&gt;source &lt;/span&gt;agent-env/bin/activate  &lt;span class="c"&gt;# On Windows use `agent-env\Scripts\activate`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI is distributed through&amp;nbsp;&lt;a href="https://docs.astral.sh/uv/" rel="noopener noreferrer"&gt;uv&lt;/a&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uvx google-agents-cli setup
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI supports macOS and Linux; native Windows is currently unsupported (use WSL 2 instead).&lt;/p&gt;

&lt;h3&gt;
  
  
  Authentication
&lt;/h3&gt;

&lt;p&gt;Agents CLI picks up your credentials automatically if you are already authenticated with the&amp;nbsp;&lt;strong&gt;gcloud&lt;/strong&gt;&amp;nbsp;CLI. When running locally without gcloud, you can set a&amp;nbsp;&lt;strong&gt;Gemini API key&lt;/strong&gt;:&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;export &lt;/span&gt;&lt;span class="nv"&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"your‑key"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For detailed authentication scenarios (service accounts, A2A roles etc.) refer to the&amp;nbsp;&lt;a href="https://google.github.io/agents-cli/guide/authentication/" rel="noopener noreferrer"&gt;Authentication guide&lt;/a&gt;. The important point is that your coding agent inherits whatever credentials your shell has; you do not need to embed secrets in code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Your First “Weather” Agent
&lt;/h2&gt;

&lt;p&gt;The fastest way to learn is by doing. The CLI comes with a “boilerplate” or template system to get you moving in seconds.&lt;/p&gt;

&lt;p&gt;Run the following command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;agent-cli create my-first-agent  
&lt;span class="nb"&gt;cd &lt;/span&gt;my-first-agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Install Dependencies
&lt;/h3&gt;

&lt;p&gt;Inside your new project folder, you need to install the specific libraries required for this agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;agent-cli &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Playground
&lt;/h3&gt;

&lt;p&gt;One of the best features of this CLI is the Playground. Instead of testing your agent in a black-and-white terminal, you can launch a local web interface.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;agent-cli playground
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you run this, you’ll get a local URL (usually&amp;nbsp;&lt;code&gt;http://127.0.0.1:8000&lt;/code&gt;). Open it in your browser, select your agent from the menu, and start chatting. By default, this agent is configured to handle weather requests.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkx6igv9zhjlw0dsbmn1z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkx6igv9zhjlw0dsbmn1z.png" alt="The Playground" width="700" height="572"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you are ready to evaluate, call:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;agents-cli &lt;span class="nb"&gt;eval &lt;/span&gt;run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Deploy AI Agents
&lt;/h3&gt;

&lt;p&gt;When you run&amp;nbsp;&lt;code&gt;agent-cli deploy&lt;/code&gt;, you usually have two choices:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Cloud Run:&lt;/strong&gt;&amp;nbsp;This treats your agent like a standard web application. It’s great if you want total control over the server.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent Runtime:&lt;/strong&gt;&amp;nbsp;This is a specialized environment built specifically for AI. It handles things like Memory (remembering what the user said earlier) and Orchestration (managing multiple agents working together) automatically.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The Deployment Process
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Ensure you have a&amp;nbsp;&lt;strong&gt;Google Cloud Project&lt;/strong&gt;&amp;nbsp;set up.&lt;/li&gt;
&lt;li&gt;Enable billing in the Cloud Console.&lt;/li&gt;
&lt;li&gt;Run the command:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Deploy to the configured target (Agent Runtime, Cloud Run or GKE)  &lt;/span&gt;
agents-cli deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to register your agent with Gemini Enterprise, run this 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="c"&gt;# Register your deployed agent with Gemini Enterprise  &lt;/span&gt;
agents-cli publish gemini-enterprise
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It allows you to use your agent directly from&amp;nbsp;&lt;a href="https://gemini.google.com/" rel="noopener noreferrer"&gt;https://gemini.google.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Almost all commands accept flags such as&amp;nbsp;&lt;code&gt;--project&lt;/code&gt;,&amp;nbsp;&lt;code&gt;--region&lt;/code&gt;,&amp;nbsp;&lt;code&gt;--datastore&lt;/code&gt;,&amp;nbsp;&lt;code&gt;--cicd-runner&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code&gt;--deployment-target&lt;/code&gt;&amp;nbsp;so that you can customize the environment. Use&amp;nbsp;&lt;code&gt;agents-cli --help&lt;/code&gt;&amp;nbsp;the&amp;nbsp;&lt;a href="https://google.github.io/agents-cli/cli/" rel="noopener noreferrer"&gt;CLI reference&lt;/a&gt;&amp;nbsp;for full details.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Agents CLI Key Commands Cheat Sheet&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;agent-cli setup&lt;/strong&gt;&amp;nbsp;Installs the core environment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;agent-cli create [name]&lt;/strong&gt;&amp;nbsp;Starts a new agent project&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;agent-cli playground&lt;/strong&gt;&amp;nbsp;Launches the web testing interface&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;agent-cli eval run&lt;/strong&gt;&amp;nbsp;Checks if your agent is performing correctly&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;agent-cli deploy&lt;/strong&gt;&amp;nbsp;Pushes your agent to Google Cloud&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Building an agent with your coding assistant
&lt;/h2&gt;

&lt;p&gt;After installation, open your coding assistant (Codex, Claude Code, Gemini CLI, or Copilot) and verify that the Agents CLI skills are visible:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fddxxvg1i5g0y5olu88d8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fddxxvg1i5g0y5olu88d8.png" alt="Building an agent with your coding assistant" width="700" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You should see&amp;nbsp;&lt;code&gt;google‑agents‑cli‑workflow&lt;/code&gt;&amp;nbsp;and the other packaged skills. From there, you can instruct the agent using natural language. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Build a support agent that answers questions from our docs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Gemini CLI (or Claude Code, Codex, etc.) will call the CLI skills to scaffold the project, install dependencies, evaluate performance, and prepare deployment. This pattern works with any agent platform that supports skills installation.&lt;/p&gt;

&lt;p&gt;If you're happy with the result, simply call&amp;nbsp;&lt;strong&gt;deploy&lt;/strong&gt;&amp;nbsp;command and your agent will be live:&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="c"&gt;# Deploy to the configured target (Agent Runtime, Cloud Run or GKE)  &lt;/span&gt;
agents-cli deploy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Video Tutorial: Agents CLI Explained
&lt;/h2&gt;

&lt;p&gt;In this video, I’ll show you how to use Google Agents CLI to build, test, and deploy AI agents from scratch.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/C-0DIcFVt4Q"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Watch on YouTube:&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;&lt;a href="https://youtu.be/C-0DIcFVt4Q" rel="noopener noreferrer"&gt;&lt;strong&gt;&lt;em&gt;Agents CLI Explained&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Google’s new agent‑oriented CLIs demonstrate how the command line is becoming a universal interface for both human operators and AI agents. Agents CLI offers a comprehensive, officially supported pathway to turn ideas into production‑ready agents on Google Cloud.&lt;/p&gt;

&lt;p&gt;Give it a shot and share with me what you build!&lt;/p&gt;

&lt;p&gt;Cheers, proflead! ;)&lt;/p&gt;

</description>
      <category>ai</category>
      <category>google</category>
      <category>googlecloud</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>GitHub Copilot AI Agents: The Complete Technical Deep Dive</title>
      <dc:creator>Vladislav Guzey</dc:creator>
      <pubDate>Sun, 19 Apr 2026 15:07:53 +0000</pubDate>
      <link>https://dev.to/proflead/github-copilot-ai-agents-the-complete-technical-deep-dive-44p4</link>
      <guid>https://dev.to/proflead/github-copilot-ai-agents-the-complete-technical-deep-dive-44p4</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/proflead/github-copilot-ai-agents-the-complete-technical-deep-dive-m86" class="crayons-story__hidden-navigation-link"&gt;GitHub Copilot AI Agents: The Secret to 10x Engineering in 2026&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/proflead" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1014611%2F65dc9cbf-f195-47fb-bee6-5b12a8844e66.png" alt="proflead profile" class="crayons-avatar__image" width="726" height="749"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/proflead" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Vladislav Guzey
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Vladislav Guzey
                
              
              &lt;div id="story-author-preview-content-3523011" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/proflead" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1014611%2F65dc9cbf-f195-47fb-bee6-5b12a8844e66.png" class="crayons-avatar__image" alt="" width="726" height="749"&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Vladislav Guzey&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/proflead/github-copilot-ai-agents-the-complete-technical-deep-dive-m86" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Apr 19&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/proflead/github-copilot-ai-agents-the-complete-technical-deep-dive-m86" id="article-link-3523011"&gt;
          GitHub Copilot AI Agents: The Secret to 10x Engineering in 2026
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/proflead/github-copilot-ai-agents-the-complete-technical-deep-dive-m86" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="24" height="24"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;5&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/proflead/github-copilot-ai-agents-the-complete-technical-deep-dive-m86#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success crayons-icon c-btn__icon"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
  </channel>
</rss>
