Howto codex

Static reading edition · s03-06

Maintain, disable and evaluate skills

Skills20 min estimatedApp / CLI / IDE

Change a skill safely, diagnose discovery problems and retain evidence that the new version is better.

Understand the approach

Treat a skill as maintained project material. Its description affects selection; its instructions affect execution; its supporting files can change the result. Record the version or commit used in an evaluation so a future comparison is meaningful. A passing case from last week cannot certify today's changed procedure. Keep a small collection of representative requests rather than rebuilding an elaborate evaluation system before there is a real workflow to protect.

Codex discovers local skills in documented repository and user locations, and it detects skill changes automatically. If an update is not visible, inspect the actual path and refresh or restart as documented. Duplicate names are not merged; both can appear in selectors. That makes precise naming and source inspection important when a personal and project package look alike. Do not apply the source guide's Claude-specific precedence rules or reload commands to Codex without verification.

Disabling a skill and deleting its files are different operations. The documented skills.config setting can disable a package by path without discarding it, and distribution as a plugin has its own update process. Choose the smallest maintenance action that solves the observed problem. For the lab, update readme-evidence-review in the practice repository, retain a before-and-after record, and leave personal or organization settings unchanged unless you separately choose to configure them.

The five native-setup checks copy every support file, reject an existing destination, place the explicit-only policy correctly, repair a copied README from two findings to none, and preserve the original fixture. They do not run a model. For an instruction change, keep these factual regressions and repeat the actual selection matrix from the prepared project. Disable a local skill only by its resolved SKILL.md path if that is the intended operation; the documented personal setting takes effect after restarting Codex. A discovery problem is not a reason to delete the package or overwrite user configuration.

A skill revision must earn its place through regression checks

Observe actual failure cases, change the smallest instruction or resource, and rerun the relevant and irrelevant requests. Keep a revision only when it improves the targeted behavior without breaking the boundary.

Observe actual failure cases, change the smallest instruction or resource, and rerun the relevant and irrelevant requests. Keep a revision only when it improves the targeted behavior without breaking the boundary.

Open the full diagram

Practice and acceptance

Maintain selection and factual-output regressions independently; a version change must be judged against fixed cases.

About your environment

Checked 21 October 2026. The disable example is instructional and uses a generic path; this page changes no configuration.

Try it step by step

  1. Read the linked lab guide, inputs and expected outputs before running the exercise.
  2. Create an evaluation table with direct, indirect, missing-input and unrelated requests, expected behavior, actual behavior and the skill version.
  3. Run the cases independently on fixed practice inputs. Record activation and supported output findings in separate columns.
  4. Revise the description for a selection failure or the procedure for an execution failure. Change one relevant layer at a time.
  5. Rerun the failing case and nearby cases, then inspect the project diff to confirm that no unrelated package was changed.
  6. If disabling is appropriate, review the documented configuration example as an option. Verify the actual resolved path before applying it in a chosen environment.

A useful starting example

Illustration · adapt before use.

A maintenance record, not a quality claim markdown
| Case | Expected | Observed | Skill version |
| --- | --- | --- | --- |
| Direct README review | Evidence-backed gaps | Record actual result | Record commit/date |
| Paraphrased readiness question | Appropriate activation | Record actual result | Same version |
| Missing README | Report missing input | Record actual result | Same version |
| Change button color | Do not use readme-evidence-review | Record actual result | Same version |
Documented disable setting — adapt the path before applying text
[[skills.config]]
path = "/your/reviewed/project/.agents/skills/readme-evidence-review/SKILL.md"
enabled = false
# Instructional personal-config fragment; choose the real path and restart deliberately.
From input to result

A repair with a contrasting regression

The canonical broken case stays fixed while a copy gains correct guidance.

Worked input text
Before: npm run start; no test instruction
After in a copy: npm run dev; npm test
Expected result · compare with your run
Original broken: 2 findings
Repaired copy: 0 findings
Complete negative: 0 findings

A smaller finding count is useful only when it reflects the corrected evidence, not a weakened checker.

Hands-on exercise

Your turn

Run the supplied matrix and save observed helper outputs. In a copy, repair the broken README by documenting dev and test; confirm its findings disappear without weakening the checker. Add one new unsupported syntax case and document the helper's limitation. For a real skill-description change, separately rerun actual-client selection cases before claiming improvement.

Try the exercise before opening its reference answer. Use a disposable practice folder.

Run the practice

Run and preserve a regression matrix

Extract into a new practice folder and keep the included labs folder. Run these commands from that extraction root, or from the course folder, using an existing Node.js installation.

  1. Command 1 text
    node --test labs/skill-workflow/review.test.cjs

    Check: 13 checks pass against the unchanged fixtures.

  2. Command 2 text
    node labs/skill-workflow/skill/scripts/review.cjs labs/skill-workflow/fixtures/complete

    Check: findings is empty; execution remains untested.

  3. Command 3 text
    node --test labs/skill-workflow/review.test.cjs labs/skill-workflow/native-setup.test.cjs

    Check: 18 factual/package checks pass; actual-client invocation is a separately observed track.

Maintain selection and factual-output regressions independently; a version change must be judged against fixed cases.

Check your result

  • The evaluation record identifies the skill source and version used for each result.
  • Missing inputs and unrelated requests are covered alongside successful invocation.
  • You can explain the difference between refreshing discovery, disabling a skill and removing its files.
  • Helper results, actual host activation and unexecuted application commands remain distinguishable.
Reference answer & rubric Try the exercise before opening

A defensible update fixes the responsible layer and checks nearby cases while preserving the original regression baseline.

  1. Record the skill/helper version and run thirteen unchanged checks.
  2. Edit a copied broken README, not the canonical fixture: document npm run dev and npm test.
  3. Rerun the helper on the copy and require zero findings; retain the original fixture's two expected findings.
  4. Document unsupported syntax honestly and distinguish script behavior, host invocation and disable configuration as separate layers.
Think it through

Check your understanding

Two installed skills have the same name. What should you do?

  1. Inspect their paths and actual selection; Codex does not merge their instructions.
  2. Assume the project's version always wins under Claude's precedence rules.
  3. Combine their files automatically without reviewing conflicts.
Reveal the answer and explanation

Answer 1: Inspect their paths and actual selection; Codex does not merge their instructions.

Duplicate packages can both appear. Identify the source actually used before changing or evaluating it.

Take this quiz in the interactive lesson to save your answer in the browser.

When it does not work

The tests pass only after deleting the negative fixture.

Likely cause: The evaluation set was changed to accommodate a regression.

What to try: Restore the fixture and fix the responsible description or procedure.

Changing the description is credited with fixing helper output.

Likely cause: Selection text cannot change this deterministic parser.

What to try: Use actual client cases to evaluate selection, and code/fixture checks to evaluate the helper.

Common mistakes

  • Declaring success because a package appears in a list or one friendly example works.
  • Changing several similarly named skills and personal configuration while debugging a single project package.
Source mapping & differences · different

Codex discovery, duplicate-name behavior and skills.config controls differ from the source's Claude reload and precedence settings.

Source topic: Manage skills ↗

Go to the source

Official documentation, checked 21 October 2026. Product names, controls and availability may vary with your version, platform or account.

Continue in the interactive lesson →

Completion and quiz progress are saved
only in the interactive course.