What is this skill?
Fictional exampleShowing 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, selected self-contained colour, short underlined clues, your own question in rainbow colours above each direct answer, and a closing topic reminder for when you return later. Waiting messages name the actual condition—for example, “when Agent Flow isn’t recording”—instead of saying only “a safe moment”.
What is this skill?
What does this skill actually do to your replies?
Skill use: response-preferences ↗ — reading the response format.
What does this skill actually do ↗
↗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 part | When it appears |
|---|---|
| ⓘ Scanning clues | Short underlines or self-contained colour |
| ⓘ Important table rows | Colour and underline the key information |
| 🫵 Your action | Your input is needed before work can continue |
The notification summary puts the exact current chat name above a short answer; native banners need a separate optional integration.
About: the response format. Previewing its markers, colours, context links and closing reminder.
Coverage since last final reply: 1 user message; 1/1 requests and steers addressed.
Where should I look when I come back to a long reply?
Where should I look when I come back ↗
↗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 rainbow 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.
Short underlined words help you scan a reply. Important bold words are underlined too; bold alone does not replace the scanning cue. Choose phrases that carry the claim, including its verb when needed: “audit covers all enabled APIs” explains more than “enabled APIs”. The agent chooses the amount of emphasis that suits the content. Later clues retain negatives and conditions, such as “not uploaded”. A self-contained colour highlight can serve the same purpose.
About: returning to a long reply. Use the reminder for context, then the finger for the takeaway or next action.
Coverage since last final reply: 1 user message; 1/1 requests and steers addressed.
What can I try on this website?
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.
Coverage since last final reply: 1 user message; 1/1 requests and steers addressed.
Install and customise
Can my agent install this for me?
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.
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.
Coverage since last final reply: 1 user message; 1/1 requests and steers addressed.
I’d rather install it myself. What do I need?
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.
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.
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.
Coverage since last final reply: 1 user message; 1/1 requests and steers addressed.
Can I change the style? Will it update itself?
- Can I change the style?
- Will it update itself?
Can I change the style? ↗
↗↗ These two questions share one answer: 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 exact chat-title and short 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.
Coverage since last final reply: 1 user message; 2/2 requests and steers addressed.
Files and message context
Can the link show me the exact part of a file?
Can the link show me the exact part ↗
↗Open this sample file to see a highlighted source passage, then switch between Preview, Edit and Split in the viewer.
When I point out text to inspect, the link highlights that passage in the original Markdown, including during read-only audits.
This public demo is a snapshot. Installed local links read and save the original file through one shared viewer; clean views update after external edits.
New local viewers match your saved Codex appearance. This demo uses Linear Dark and offline Inter; local settings stay out of public demos.
The source editor supports syntax highlighting, search and replace, line numbers and undo. Local code links can highlight a whole line range, including its line-number gutter, with --line 65 --end-line 85. 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.
Coverage since last final reply: 1 user message; 1/1 requests and steers addressed.
What does the little link next to my question do?
What does the little link ↗
↗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.
Coverage since last final reply: 1 user message; 1/1 requests and steers addressed.
Export check
Can you check the export and tell me what I need to do?
Checking the export code and the two runs that failed yesterday.
Read src/export/segment.ts
Ran npm test -- export 2 passed
Ran npm run export -- sample-3s.mp4
Exporting the 3 s and 90 s sample clips, 1 of 2 finished.
Ran npm run export -- sample-90s.mp4
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.
| Status | Item | Result |
|---|---|---|
| ✅ Passed | 3 s clip | 1 segment, 3 s |
| ✅ Passed | 90 s clip | 30 segments, last one 3 s |
| 🫵 Your action | Restart the app | Needed 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.
Coverage since last final reply: 1 user message; 2/2 requests and steers addressed.
Organise pinned chats
Why is there a chat named 2--------------------?
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.
Coverage since last final reply: 1 user message; 1/1 requests and steers addressed.
Read the response format
Can you make this easier to follow?
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. A direct answer to you stays large in working messages too, so responses aimed at you stand out.
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.
Your question reminder uses rainbow colours, starting one position further along a repeating 24-colour cycle for each new quote, with one word per colour in a reminder of around 60–80 characters that can wrap naturally. When one answer contains several quoted questions, one helper run gives each a consecutive starting colour. The fixed recipe keeps your meaning and perspective; these colours identify your question and do not mean success or failure.
Each other-model invocation gets a short cyan Models line once at its start and once at its end, naming the model and its role. Repeated progress, polling and later reuse of the same result omit it, as do replies using only the chat model. Required final footers and the About reminder still follow it. It only reports what other models actually did.
A muted-lavender topic reminder closes only the final assistant reply, with question coverage immediately underneath. It names the overall subject and useful action, problem or next step, so you can recover the context without rereading. Working commentary, progress updates and skill announcements have neither footer; final replies say replied to in this reply. Your listed questions stay above their answers.
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.
Let the agent choose what to underline and how much emphasis suits the response. The goal is to convey the important details someone skimming needs.
The skill-update decisions remain agent-based: a helper tracks the date, and the agent checks the repository.
The content determines the amount of underlining, with no fixed quota per sentence or paragraph. Cues read coherently together, preserving negatives and conditions such as “not uploaded”. Underlines and self-contained colour highlights both support this reading goal.
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
(3/10) 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.
Models: Claude Opus 5.5 reviewed the example layout. Findings: Codex 2; Opus 3; shared 1.
About: making replies easier to scan. The examples show markers, context, emphasis and short highlights that help avoid clipping.
Coverage since last final reply: 1 user message; 1/1 requests and steers addressed.
Your annotation: Can I still see my short question below the full annotation without extra space?
Separate each annotation with a divider.
The rainbow reminder names what you were talking about so it makes sense when you return later. Keep your wording where possible, but lightly clarify a pronoun using the known subject: Can we pause the whole hidden component at once? is clearer than if it's like a one-time thing. Keep the exact original wording in the annotation context and source; do not guess an uncertain subject or insert the answer.
The full annotation context and the short rainbow question work together, including follow-up clarifications. A native annotation popup does not replace the three labelled fields. The agent drafts those fields first and rereads the core every 10 assistant messages, including commentary, and before each final reply; review replies also refresh their review contracts. The optional diagnostic’s --require-annotation-context flag checks Agent Flow answers without native references. These instructions and checks cannot guarantee model obedience.
Clarify a term or limitation where it first appears, including in every annotation answer. For example: “The panel stays attached — Angular can still update it while it is hidden; its subscriptions need their own pause. More clarification below.” A later section can add detail, but must not supply an explanation needed to understand the earlier answer.
Every single question gets an explicit answer, including earlier unanswered follow-ups. Related questions may share one answer and several reply symbols, but each question is listed. Under About, only the final reply reports user messages since the previous final reply and how many requests or steers are addressed. Counts come from comparing the questions with the actual draft, not counting question marks or selected excerpts. An explicit unknown/blocker is a reply, not completed work. A newer correction does not replace older questions. If an answer seems missing, read the original message and actual earlier reply before making claims. This adds no automatic repair hook or guarantee of model obedience.
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 without extra space?
Can I still see my short question below the full annotation without extra space? ↗
↗The short question stays below the full annotation context, directly above the answer, so you can skip the bigger block.
The same three context labels apply when you select an earlier reply and add your own comment. If you select “The export is pending” and ask “Why is it pending?”, those become Earlier response and Your annotation. The same applies to Agent Flow code selections and coloured or escaped context tags, even without a native annotation link. For selected code, Earlier response identifies the code source. Before sending, the agent matches each relevant selection to your comment and checks all three fields before the answer; keeping only Problem at hand or the rainbow question does not pass. A highlight made only while reading does not become a question. This replaces a separate square-bracket context note; native annotation links are never invented.
Problem at hand: Distinguish adjacent annotation answers.
Earlier response: Both answers ran together.
Your annotation: Separate each annotation with a divider.
Separate each annotation ↗
↗A horizontal divider separates distinct annotation answers, including Agent Flow selections. Keep each answer's context, short question and response together; related annotations can share a section.
About: replying to annotations. Keep context together and separate distinct answers with dividers.
Coverage since last final reply: 1 user message; 2/2 requests and steers addressed.
Which skill is doing this, and can I install it myself?
Skill use: response-preferences ↗ because you asked which skill formats these replies.
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.
Coverage since last final reply: 1 user message; 2/2 requests and steers addressed.
Nightly backup
Run the nightly backup and tell me if the flaky upload test is fixed now.
Ran python3 scripts/backup.py --pack
Packing the backup: 1,240 of 3,000 files (41%).
Ran python3 scripts/backup.py --upload exit 1
Ran npm test -- upload 1 failed
Read src/auth/token.ts
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.
Coverage since last final reply: 1 user message; 2/2 requests and steers addressed.