Goals
Use this skill to run a lightweight /goals workflow inside a Codex thread. Treat goals as the shared source of truth for what the user wants accomplished, what is in progress, and what remains.
When the work involves writing, reviewing, or refactoring code, combine this skill with $karpathy-guidelines: keep changes simple and surgical, surface assumptions, and make each goal verifiable.
This skill also incorporates goal-shaping practices from Matt Pocock's engineering skills collection: https://github.com/mattpocock/skills.git
Core Behavior
When the user asks for goals or uses /goals:
- Show the current goal list if one exists in the thread.
- If no goal list exists, create one from the current user request and visible context.
- Keep goals concise, action-oriented, and testable.
- Use statuses:
pending, in_progress, completed, and blocked.
- Keep at most one goal
in_progress unless the work is explicitly parallel.
- Update goals whenever the scope changes, a milestone is completed, or a blocker appears.
- Do not turn tiny one-step tasks into ceremony. A single sentence is enough when the task is simple.
Prefer the built-in update_plan tool when available and the work has multiple steps. Otherwise, present a compact Markdown checklist.
Karpathy Mix-In
For coding tasks, shape goals around verifiable success criteria:
- Convert vague asks into observable outcomes.
- Prefer the smallest change that satisfies the user request.
- Add no speculative flexibility, abstractions, or adjacent cleanup goals.
- Include assumptions only when they affect implementation choices.
- Tie each implementation goal to a check: test, type check, lint, manual reproduction, screenshot, or inspected behavior.
- Every changed line should trace back to a goal or its verification.
Example:
**Goals**
- [~] in_progress: Reproduce the export failure -> verify with the failing flow or test
- [ ] pending: Patch the export path with the smallest scoped change -> verify with focused test
- [ ] pending: Confirm CSV export still works -> verify with existing or manual CSV check
Matt Pocock Mix-In
For non-trivial engineering work, shape goals around alignment, shared language, vertical slices, and feedback loops.
Alignment First
- If the request branches into multiple plausible designs, run a short grilling pass before locking goals.
- Ask one decisive question at a time and include your recommended answer.
- If the answer can be discovered from the codebase, inspect the code instead of asking.
- Turn the resolved answer into a goal or an assumption only when it changes the work.
Shared Language
- Prefer terms already defined in project docs such as
CONTEXT.md, CONTEXT-MAP.md, and docs/adr/.
- If the user's wording conflicts with the project's glossary or code, call that out before finalizing goals.
- For persistent project goals, use the project's domain language so future agents and humans can search and act on the list.
- Add documentation goals only when the user asked for persistent artifacts or when a clarified term/decision must be captured.
Vertical Slices
- Break larger work into tracer-bullet goals: thin end-to-end slices that are independently demoable or verifiable.
- Prefer goals that cross the necessary layers for one behavior over horizontal goals like "update schema", "update API", and "update UI" as separate isolated tracks.
- Mark user-dependent decisions as
blocked or explicitly HITL in the wording; keep agent-runnable work concrete and AFK-friendly.
Feedback Loops
- Treat the feedback loop as part of the goal, not an afterthought.
- For features, prefer behavior-first tests through public interfaces and a red-green-refactor rhythm when TDD is appropriate.
- For bugs, goals should usually follow: build/reuse a repro loop, reproduce, minimize, hypothesize, instrument, fix, regression-test, clean up.
- If no reliable verification loop exists, make creating one the active goal before changing production code.
Architecture Awareness
- When the relevant area is unfamiliar, include a goal to zoom out: map the modules, callers, and existing decisions before editing.
- Prefer goals that deepen or preserve useful modules: small interfaces, behavior behind the interface, and tests at the interface.
- Do not turn architecture curiosity into scope creep; only add refactor goals when they are required for the user's outcome or explicitly requested.
Handoff
- If work pauses or must move to another session, summarize active, completed, blocked, assumptions, and the next verification step.
- Do not duplicate content already captured in persistent docs, issues, PRDs, ADRs, commits, or diffs; reference those artifacts instead.
Goal Format
Use this shape for user-visible goal lists:
**Goals**
- [ ] pending: Inspect the current implementation
- [~] in_progress: Implement the requested behavior
- [x] completed: Run focused verification
- [!] blocked: Waiting on missing credentials
Use these check markers consistently:
[ ] for pending
[~] for in_progress
[x] for completed
[!] for blocked
When using update_plan, map the same items to tool statuses and keep the wording almost identical.
Creating Goals
When creating goals from a request:
- Extract the user's intended outcome, not just the literal wording.
- Include investigation only when it is necessary to make a safe change.
- Include implementation goals for each meaningful work phase.
- Include verification when behavior, code, or generated assets are changed.
- Avoid generic goals like "understand the request" or "provide final answer".
Example:
User: "Fix the dashboard export bug and make sure CSV still works."
Good goals:
- Inspect export flow and reproduce the failure
- Fix dashboard export behavior
- Verify dashboard export and CSV export paths
Poor goals:
- Understand the bug
- Modify files
- Tell the user what changed
Updating Goals
Update goals as work progresses:
- Mark a goal
in_progress before actively working on it.
- Mark it
completed only after the relevant work is actually done.
- Add a goal if new required work appears.
- Split a goal if it becomes too broad to track.
- Mark a goal
blocked with a short reason when progress depends on missing input, credentials, unavailable services, or an external failure.
- Remove or rewrite goals only when the user's intent changes or the existing wording is misleading.
When the user says things like "mark that done", "drop that", "add X", or "what is left", apply the update directly and show the revised list.
During Coding Work
For code changes:
- Start with a short goal list when the task has more than one meaningful step.
- Keep the active goal aligned with the next concrete action.
- Mention goal progress in brief commentary updates during long tasks.
- After edits, make verification explicit: tests, linting, type checks, manual browser checks, or a clear note that verification could not be run.
- In the final response, summarize completed goals and any remaining blocked or deferred items.
Do not let the goal list replace engineering judgment. Still read the codebase, protect user changes, follow existing project patterns, and avoid touching unrelated code.
Persistence
By default, goals live in the current conversation context. If the user asks for persistent project goals, write or update a repository file such as GOALS.md, .codex/goals.md, or the path they name. Before creating a new persistent file in a repo, prefer .codex/goals.md unless the project already has a goals, roadmap, or planning document.
Persistent goal files should include:
# Goals
## Active
- [ ] ...
## Completed
- [x] ...
## Blocked
- [!] ...
Keep persistent files tidy and avoid storing transient implementation chatter.
Response Style
Keep goals useful and low-friction:
- Be concise.
- Use concrete verbs.
- Preserve the user's language when it captures intent well.
- Ask a question only when the goal cannot be inferred safely.
- Avoid over-planning exploratory or conversational requests.
- When the user asks only to see goals, do not start implementation.
1---2name: goals3description: Maintain a Claude-Code-style goals workflow for Codex, mixed with Karpathy-style and Matt Pocock-style goal-driven engineering discipline. Use when the user asks for /goals, goals, task goals, a running checklist, objective tracking, progress tracking, goal-first work, "keep track of what we are doing", "show goals", "update goals", "mark done", "what is left", or wants Codex to create, revise, persist, or summarize active work goals during a thread.4---56# Goals78Use this skill to run a lightweight `/goals` workflow inside a Codex thread. Treat goals as the shared source of truth for what the user wants accomplished, what is in progress, and what remains.910When the work involves writing, reviewing, or refactoring code, combine this skill with `$karpathy-guidelines`: keep changes simple and surgical, surface assumptions, and make each goal verifiable.1112This skill also incorporates goal-shaping practices from Matt Pocock's engineering skills collection: https://github.com/mattpocock/skills.git1314## Core Behavior1516When the user asks for goals or uses `/goals`:17181. Show the current goal list if one exists in the thread.192. If no goal list exists, create one from the current user request and visible context.203. Keep goals concise, action-oriented, and testable.214. Use statuses: `pending`, `in_progress`, `completed`, and `blocked`.225. Keep at most one goal `in_progress` unless the work is explicitly parallel.236. Update goals whenever the scope changes, a milestone is completed, or a blocker appears.247. Do not turn tiny one-step tasks into ceremony. A single sentence is enough when the task is simple.2526Prefer the built-in `update_plan` tool when available and the work has multiple steps. Otherwise, present a compact Markdown checklist.2728## Karpathy Mix-In2930For coding tasks, shape goals around verifiable success criteria:3132- Convert vague asks into observable outcomes.33- Prefer the smallest change that satisfies the user request.34- Add no speculative flexibility, abstractions, or adjacent cleanup goals.35- Include assumptions only when they affect implementation choices.36- Tie each implementation goal to a check: test, type check, lint, manual reproduction, screenshot, or inspected behavior.37- Every changed line should trace back to a goal or its verification.3839Example:4041```markdown42**Goals**43- [~] in_progress: Reproduce the export failure -> verify with the failing flow or test44- [ ] pending: Patch the export path with the smallest scoped change -> verify with focused test45- [ ] pending: Confirm CSV export still works -> verify with existing or manual CSV check46```4748## Matt Pocock Mix-In4950For non-trivial engineering work, shape goals around alignment, shared language, vertical slices, and feedback loops.5152### Alignment First5354- If the request branches into multiple plausible designs, run a short grilling pass before locking goals.55- Ask one decisive question at a time and include your recommended answer.56- If the answer can be discovered from the codebase, inspect the code instead of asking.57- Turn the resolved answer into a goal or an assumption only when it changes the work.5859### Shared Language6061- Prefer terms already defined in project docs such as `CONTEXT.md`, `CONTEXT-MAP.md`, and `docs/adr/`.62- If the user's wording conflicts with the project's glossary or code, call that out before finalizing goals.63- For persistent project goals, use the project's domain language so future agents and humans can search and act on the list.64- Add documentation goals only when the user asked for persistent artifacts or when a clarified term/decision must be captured.6566### Vertical Slices6768- Break larger work into tracer-bullet goals: thin end-to-end slices that are independently demoable or verifiable.69- Prefer goals that cross the necessary layers for one behavior over horizontal goals like "update schema", "update API", and "update UI" as separate isolated tracks.70- Mark user-dependent decisions as `blocked` or explicitly HITL in the wording; keep agent-runnable work concrete and AFK-friendly.7172### Feedback Loops7374- Treat the feedback loop as part of the goal, not an afterthought.75- For features, prefer behavior-first tests through public interfaces and a red-green-refactor rhythm when TDD is appropriate.76- For bugs, goals should usually follow: build/reuse a repro loop, reproduce, minimize, hypothesize, instrument, fix, regression-test, clean up.77- If no reliable verification loop exists, make creating one the active goal before changing production code.7879### Architecture Awareness8081- When the relevant area is unfamiliar, include a goal to zoom out: map the modules, callers, and existing decisions before editing.82- Prefer goals that deepen or preserve useful modules: small interfaces, behavior behind the interface, and tests at the interface.83- Do not turn architecture curiosity into scope creep; only add refactor goals when they are required for the user's outcome or explicitly requested.8485### Handoff8687- If work pauses or must move to another session, summarize active, completed, blocked, assumptions, and the next verification step.88- Do not duplicate content already captured in persistent docs, issues, PRDs, ADRs, commits, or diffs; reference those artifacts instead.8990## Goal Format9192Use this shape for user-visible goal lists:9394```markdown95**Goals**96- [ ] pending: Inspect the current implementation97- [~] in_progress: Implement the requested behavior98- [x] completed: Run focused verification99- [!] blocked: Waiting on missing credentials100```101102Use these check markers consistently:103104- `[ ]` for `pending`105- `[~]` for `in_progress`106- `[x]` for `completed`107- `[!]` for `blocked`108109When using `update_plan`, map the same items to tool statuses and keep the wording almost identical.110111## Creating Goals112113When creating goals from a request:1141151. Extract the user's intended outcome, not just the literal wording.1162. Include investigation only when it is necessary to make a safe change.1173. Include implementation goals for each meaningful work phase.1184. Include verification when behavior, code, or generated assets are changed.1195. Avoid generic goals like "understand the request" or "provide final answer".120121Example:122123User: "Fix the dashboard export bug and make sure CSV still works."124125Good goals:126127- Inspect export flow and reproduce the failure128- Fix dashboard export behavior129- Verify dashboard export and CSV export paths130131Poor goals:132133- Understand the bug134- Modify files135- Tell the user what changed136137## Updating Goals138139Update goals as work progresses:140141- Mark a goal `in_progress` before actively working on it.142- Mark it `completed` only after the relevant work is actually done.143- Add a goal if new required work appears.144- Split a goal if it becomes too broad to track.145- Mark a goal `blocked` with a short reason when progress depends on missing input, credentials, unavailable services, or an external failure.146- Remove or rewrite goals only when the user's intent changes or the existing wording is misleading.147148When the user says things like "mark that done", "drop that", "add X", or "what is left", apply the update directly and show the revised list.149150## During Coding Work151152For code changes:1531541. Start with a short goal list when the task has more than one meaningful step.1552. Keep the active goal aligned with the next concrete action.1563. Mention goal progress in brief commentary updates during long tasks.1574. After edits, make verification explicit: tests, linting, type checks, manual browser checks, or a clear note that verification could not be run.1585. In the final response, summarize completed goals and any remaining blocked or deferred items.159160Do not let the goal list replace engineering judgment. Still read the codebase, protect user changes, follow existing project patterns, and avoid touching unrelated code.161162## Persistence163164By default, goals live in the current conversation context. If the user asks for persistent project goals, write or update a repository file such as `GOALS.md`, `.codex/goals.md`, or the path they name. Before creating a new persistent file in a repo, prefer `.codex/goals.md` unless the project already has a goals, roadmap, or planning document.165166Persistent goal files should include:167168```markdown169# Goals170171## Active172- [ ] ...173174## Completed175- [x] ...176177## Blocked178- [!] ...179```180181Keep persistent files tidy and avoid storing transient implementation chatter.182183## Response Style184185Keep goals useful and low-friction:186187- Be concise.188- Use concrete verbs.189- Preserve the user's language when it captures intent well.190- Ask a question only when the goal cannot be inferred safely.191- Avoid over-planning exploratory or conversational requests.192- When the user asks only to see goals, do not start implementation.