What is this skill?

Fictional example

Showing whole replies. Click any marker to see its meaning.

These example conversations show what a Codex reply looks like with the response-preferences skill: one marker per meaning, colour on the important part, written to make sense on its own, underlined clues in each sentence, your own question quoted above each direct answer, and a closing topic reminder for when you return later.

What is this skill?

You

What does this skill actually do to your replies?

Assistant

Skill use: response-preferences reading the response format.

About: reading the reply style. Checking the skill’s markers, colours and scanning clues.

Assistant

What does this skill actually do to your replies?

Response Preferences gives replies a consistent visual format: markers, colours, underlined clues and a closing topic line.

The example export finished with no errors.

This viewer is a snapshot of the file.

The sample build is still pending review.

Save the project before restarting.

Install the skill, try it on a real reply, then change the markers to suit you.

27 unit tests passed, but marker sizing is not covered.

Example sentences only, not real results.

Section markers apply to the content below; inline markers apply beside them. Click any marker to read its meaning.

Reply partWhen it appears
ⓘ Underlined cluesEvery sentence
ⓘ Colour highlightsWhen useful
🫵 Your actionFavoured when something is needed from you or it is your turn next

The notification summary puts your question above a short answer; native banners need a separate optional integration.

About: the response format. Previewing its markers, colours, context links and closing reminder.

You

Where should I look when I come back to a long reply?

Assistant

Where should I look when I come back to a long reply?

Start with the coloured “About:” line at the bottom to recover the subject, then follow the finger to the main takeaway or your next action.

The quote above an answer repeats only the part of your message being answered, in your perspective. The answer names its subject, so it still makes sense if you skip that quote.

Underlined words give you scanning clues in every sentence. The first clue names the topic; later clues retain negatives and conditions, such as “not uploaded”.

About: returning to a long reply. Use the reminder for context, then the finger for the takeaway or next action.

You

What can I try on this website?

Assistant

What can I try on this website?

Click any marker to read its meaning, open a file in the editor, or copy an installation prompt for your agent.

The left sidebar separates the walkthrough from worked success and failure examples. The composer copies a question for your own agent; it does not invent a reply.

About: trying the skill’s features. Explore the example chats, edit a sample file or copy the setup prompt.

Install and customise

You

Can my agent install this for me?

Assistant

Can my agent install this for me?

Copy this prompt into Codex and ask your agent to install the skill, preserve existing changes and enable it for future replies.

Ask your agent
Install the Response Preferences skill from https://github.com/EthanSK/response-preferences in my Codex skills folder. First check if it is already installed, and preserve any local changes. Add "Use $response-preferences for all replies." to my global AGENTS.md without duplicating an existing instruction. Read the installed SKILL.md, then show me a short example reply and confirm what changed. Ask me before installing any future skill updates.

The installation prompt checks for an existing skill before changing it. If you use a custom Codex home, tell your agent that location.

About: installing Response Preferences. Copy the prompt to your agent, which checks existing files before setup.

You

I’d rather install it myself. What do I need?

Assistant

I’d rather install it myself. What do I need?

Clone the repository into your Codex skills folder, then add the activation line to your global or project AGENTS.md.

Git downloads the skill, and Python 3.9 or newer runs its helpers. You do not need Node or an API key to use the skill.

1 · Clone the skill
git clone https://github.com/EthanSK/response-preferences.git ~/.codex/skills/response-preferences

An existing destination folder makes this clone stop without replacing it. Compare your changes before updating it.

2 · Enable it in AGENTS.md
Use $response-preferences for all replies.

In your next Codex task, ask for a short example using response-preferences. If the format does not appear, ask the agent to read the installed SKILL.md and check the activation line.

About: manual skill installation. Clone the repo, add the activation line and check the format in a new task.

You

Can I change the style? Will it update itself?

Assistant

Can I change the style? Will it update itself?

Edit SKILL.md to change the style; your explicit preferences take priority, and updates ask for your agreement before installing.

The weekly update check runs when the agent uses the skill, with a shared date and lock. It starts no background service, preserves local edits and supports opting out.

The native notification sender is a separate optional integration. This public skill defines the short question and answer wording; installing it alone does not add macOS banners.

About: customising Response Preferences. Edit the rules yourself; updates ask first and notifications need a separate integration.

Files and message context

You

Can the link show me the exact part of a file?

Assistant

Can the link show me the exact part of a file?

Open this sample file to see a highlighted source passage, then switch between Preview, Edit and Split in the viewer.

The viewer is a snapshot of the file. It does not watch the original file; regenerate the viewer for a newer version.

The source editor supports syntax highlighting, search and replace, line numbers and undo. Use Download copy to keep edits; saving directly requires a file you explicitly picked in a supported browser.

About: the Markdown and code viewer. Open a highlighted passage, edit its source and download a copy.

You

What does the little link next to my question do?

Assistant

What does the little link next to my question do?

The context link helps you recover your original message: a real viewer can include its exact text and attached images underneath.

Attached response annotations have a native Codex hover showing the selected text and your comment. Their annotation reference needs an actual attached annotation; it cannot hold arbitrary message text, so no fake path is needed for the same annotation.

The ordinary-message hover fallback uses original message text as a deliberately fake destination. It shows text on hover and does not open a file; this website uses working context viewers and jump links instead.

A hover popup cannot show images. Keep a separate real context file for attachments; private source text and embedded images stay private. Public examples on this site use synthetic content.

About: recovering message context. Use native annotation hovers when available, or a message viewer for text and images.

Export check

You

Can you check the export and tell me what I need to do?

Assistant

Checking the export code and the two runs that failed yesterday.

About: investigating video export failures. Checking the export code against yesterday’s two failed runs.

Read src/export/segment.ts

Ran npm test -- export 2 passed

Ran npm run export -- sample-3s.mp4

Assistant

Exporting the 3 s and 90 s sample clips, 1 of 2 finished.

About: testing the video export fix. Running the 3 s and 90 s clips; one of two has finished.

Ran npm run export -- sample-90s.mp4

Assistant

Can you check the export and tell me what I need to do?

Opens Your message: the exact original text with any attached images underneath, in the Markdown viewer. The native hover-only alternative puts the original text in a fake destination, with a leading slash; it cannot open a file. This demo keeps a working viewer link.

The export keeps every final frame. The segment-length fix is in place, and the only thing you need to do is restart the app before your next export.

Both sample exports finished with the correct final segment.

The manual playback check passed in the app, including the final frames.

The last segment was rounded down to 0 s whenever the clip length was not a multiple of the segment size, so short clips lost their final frames. The fix rounds the last segment up instead. Your existing project settings are unchanged.

StatusItemResult
✅ Passed3 s clip1 segment, 3 s
✅ Passed90 s clip30 segments, last one 3 s
🫵 Your actionRestart the appNeeded before the next export

Export fixes take effect after restarting the app. An export started now still uses the old rounding.

Save the project before restarting, because unsaved clips are discarded.

Restart the app, then re-export the short clip you noticed the problem on.

About: fixing the video export. Restart the app, then retry the short clip to use the verified fix.

Organise pinned chats

You

Why is there a chat named 2--------------------?

Assistant
Why is there a chat named 2--------------------?

A pinned chat can act as a separator. Ethan uses numbered rows of dashes to split his pinned chats into groups so the list is easier to scan.

This example separates the walkthrough chats from the worked examples. The separator is an ordinary chat with a distinctive name; it does not move or group other chats automatically.

Ask your agent to create a separator task named 2--------------------, then pin it and move it between your other pinned tasks.

About: organising pinned chats. Use a numbered separator task to make groups easier to spot.

Read the response format

You

Can you make this easier to follow?

Assistant

Can you make this easier to follow?

Opens Your message in the Markdown viewer, with the exact original text. The native hover-only alternative puts the original text in a fake destination, with a leading slash; it cannot open a file. This demo keeps a working viewer link.

Yes. This reply’s format now starts with the direct answer, keeps your question just above it, and marks each section with one fixed symbol, so you can jump to the part you want.

Working messages use small markers, including the brain beside a skill announcement. Final replies use large markers, so you can distinguish the finished answer at a glance.

Every marker keeps a single meaning: a tick is only a confirmed result, a snail only work still running, an eye only the start of a check. There are 20 global markers, and only user-approved project extensions add to the list, however fitting another emoji might look.

Colour is selected by meaning. Each coloured highlight makes sense on its own. You can start reading at its first word and understand it without the surrounding text. The rest of the explanation stays white. Red means you must read it, green marks the confirmed result, orange a warning.

Cyan highlights useful explanations of what changed or how the resulting system behaves, including the opening direct answer: Both Playlist types share one visual row. Green highlights explicit confirmed success: The clipping bug is fixed. A completion reply does not make every descriptive sentence green. Keep both colours selective and self-contained.

Final completion statements use green, including committed, merged, saved and deployed outcomes: The change is committed. Automated tests and lint stay uncoloured; a passing check alone does not mean the task is finished.

A muted-lavender topic reminder ends every message, including working updates, with two short sentences. The first sentence gives the overview; the second adds the specific action, problem or next step, so you can recover the context without rereading the reply. Your quoted question stays above its answer.

Only the final reply has an attention finger: usually one, favouring 🫵 when something is needed from you or it is your turn next, and 👉 when it is mainly “here is the main information”. These are preferences, not absolute rules; two fingers can help with distinct important items. Working updates have no attention fingers.

Underlined scanning cues start each paragraph by naming what the details are about, so a later cue makes sense when you glance back.

The skill-update decisions remain agent-based: a helper tracks the date, and the agent checks the repository.

Each sentence still highlights useful clues, without underlining everything. Negatives and conditions stay with the words they qualify; “not uploaded” must not become just “uploaded”.

The return arrow stays beside the opening answer, even when a table or list follows. Other markers sit above a multi-block section with a visible ⌄ chevron, and apply until the next marker.

The icon only marks tests, so the text always says the status.

The same symbol covers exploring options and outlining steps.

Install the skill, try it on a real reply, then change the markers to suit you.

In a hurry, read only the ⮑ line; the other sections are there when you want the detail.

Added beyond your request

The release-notes draft from earlier in this task was reformatted the same way, so both documents read consistently.

The release is still pending. The dependency needs another review before publication. Short highlights help avoid clipped LaTeX text; the supporting detail stays in ordinary wrapping prose.

About: making replies easier to scan. The examples show markers, context, emphasis and short highlights that help avoid clipping.

You

Your annotation: Can I still see my short question below the full annotation?

Assistant

Problem at hand: Keep the short question visible.
Earlier response: The full annotation replaces the short question.
Your annotation: Can I still see my short question below the full annotation?

Can I still see my short question below the full annotation?

The short question stays below the full annotation context, directly above the answer, so you can skip the bigger block.

About: replying to annotations. Keep the short question below the full context so either can orient you.

You

Which skill is doing this, and can I install it myself?

Assistant

Skill use: response-preferences because you asked which skill formats these replies.

About: the response-format skill. Reading Response Preferences to explain which rules format these replies.

Assistant

Can I install it myself?

Jumps to your message above. In a real reply this ↗ opens a small local file headed Your message; a separate hover-only control can show original text through a fake destination, but cannot open it.

Yes, the response-preferences skill installs with one git clone into your Codex skills folder and one line in your AGENTS.md.

git clone https://github.com/EthanSK/response-preferences.git ~/.codex/skills/response-preferences

To activate response preferences, add Use $response-preferences for all replies. to your global or project AGENTS.md. Python 3.9+ generates the viewers and message-context files; no Node build is needed to use it.

Response Preferences uses Ethan’s formatting choices. Edit SKILL.md to change them for yourself. The rules are agent instructions, so they cannot guarantee that a model always follows them.

About: installing the response style. Clone the skill, activate it in AGENTS.md and edit its defaults if needed.

Nightly backup

You

Run the nightly backup and tell me if the flaky upload test is fixed now.

Ran python3 scripts/backup.py --pack

Assistant

Packing the backup: 1,240 of 3,000 files (41%).

About: packing the nightly backup. The archive has 1,240 of 3,000 files so far; uploading comes later.

Ran python3 scripts/backup.py --upload exit 1

Ran npm test -- upload 1 failed

Read src/auth/token.ts

Assistant

Is the flaky upload test fixed now?

Jumps to your message above; the excerpt keeps your wording and drops the part about running the backup. In a real reply this ↗ opens a small local file headed Your message.

No. The upload test is not flaky, it has a real bug: it only passes when an earlier test left a cached token. Tonight’s backup upload failed for a separate reason.

The backup was packed but not uploaded, so there is no off-site copy from tonight.

The token test (upload.test.ts) reads the token from a cache written by the previous test file, so on its own, or run first, it fails every time. The cause is in src/auth/token.ts, which only refreshes when a cache file already exists.

The pack step reported 3,000 files, but the archive holds 2,998: two zero-byte lock files are skipped without any log line.

The upload failed because the storage provider is returning 503 for the whole region; the upload needs the provider to recover.

I could not tell if the 503s began before or after the token change, because the provider’s status page has no history.

Fixing the token refresh tonight makes the test independent of order, but touches shared auth code two days before release. Skipping the test instead keeps the release small and leaves the bug in place.

Fix the token refresh: it is a five-line change, and the test then proves it.

Decide if the token fix goes into this release, and choose when I should retry the upload.

About: the failed nightly backup. The upload and token test need attention before the release decision.

Nothing to type here: this demo shows fixed example replies. To get them in your own Codex, install the skill.