# I would like to talk to you about turning this into a writing skill, or adding it to the suite or...
## Retrieval Notes
- Session id: `019e1628-d835-7452-b711-8c5dc96a6fc0`
- Source: `Codex raw session`
- Last activity: `2026-05-16T10:54:06.884Z`
- Model: `gpt-5.5`
- CWD: `/Users/nickyoung`
## My Notes
<!-- Add your notes here. This section is preserved across syncs. -->
## Conversation
### User
I would like to talk to you about turning this into a writing skill, or adding it to the suite or inside of one of the deep writing mode skill suite. Please write or revise the following philosophical text in a dry, affectless, analytic style.
Do not make the prose sound “polished” in a generic academic way. Do not decorate transitions, perform the theory, over-explain the background, or write paragraphs that merely announce topics. The paragraph is the unit of argument. Every paragraph should have a function in the reasoning, regardless of where it appears in the paper.
Before writing each paragraph, silently identify what the paragraph must do. Then write it so that each sentence serves that function. A good paragraph should normally do some or all of the following: inherit a result or pressure point from the previous paragraph; state the question, claim, or distinction now at issue; identify the live options or possible mistake; explain why those options are live; and end by advancing the next move. Do not force this as a rigid template, but do not allow a paragraph to exist merely as exposition, throat-clearing, or scene-setting.
When opening a section, do not reintroduce the whole framework unless the argument requires it. Start from the result already established, state the question now raised, identify the candidate answers or pressure points, explain why they are tempting, and say what the section will test.
When developing a paragraph, do not substitute abstract signposting for argument. Prefer claims such as “The problem is…” or “This gives us two options…” to phrases such as “This raises important questions,” “It is worth noting,” “This framework allows us to see,” or “The following section explores.” If a sentence says that something is important, replace it with a sentence explaining what role it plays in the argument.
Avoid LLM-style academic prose: no generic praise, no decorative transitions, no inflated vocabulary, no vague evaluatives, no “crucial,” “significant,” “compelling,” “sophisticated,” “robust,” “nuanced,” or similar unless the word is doing specific argumentative work. Avoid phrases such as “it is important to note,” “it is worth emphasizing,” “this raises the question,” “in this context,” “at this juncture,” and “the framework developed here.” Keep the prose direct.
Use concrete argumentative pressure. If an interlocutor is being discussed, target a specific claim. If a distinction is introduced, explain what problem it solves. If an example is used, say exactly what it shows. If a conclusion is drawn, make clear what it follows from.
Do not bulk out paragraphs with lists of examples unless I ask for them. Do not introduce subsections unless I explicitly ask. Do not make the prose more dramatic, elegant, literary, or rhetorically forceful. The style should be controlled, plain, and argumentative.
If revising existing text, preserve the content, argumentative structure, examples, citations, and intended claims unless I explicitly ask you to cut or restructure. Improve the prose by making the argumentative function clearer, not by replacing my argument with a new one. Preserve pronouns, terminology, and citation style unless I instruct otherwise.
Before giving the final version, you may briefly state the function of the paragraph or passage if doing so will help. Then give the prose itself.
### Assistant
I’ll use the skill-creator guidance first, then glance at the existing deep writing mode setup so we can place this cleanly instead of letting it become another loose instruction blob.
### Assistant
The existing bundle already has two nearby pressure points: `nick-analytic-voice` governs imitation of your broader voice, and `anti-metacommentary` catches sentences that announce rather than argue. This new text looks narrower: a paragraph-level argumentative discipline for dry revision, not just “voice.”
### Assistant
Yes. I would make this a standalone writing skill, then add it to `deep-writing-mode` as an optional invoked skill, probably after `nick-analytic-voice` and before `anti-metacommentary`.
I would not bury it inside `nick-analytic-voice`. That skill describes your broader prose practice; this instruction is more specific: it governs dry analytic rewriting, paragraph function, and resistance to generic LLM academic prose. If folded into the voice skill, it may overconstrain cases where you want more essayistic or exploratory prose.
Suggested skill name: `dry-analytic-prose`
Suggested description:
```yaml
name: dry-analytic-prose
description: Use when Nick asks for philosophical prose in a dry, affectless, analytic style; when revising draft paragraphs for argumentative function; or when he asks to avoid generic academic polish, decorative transitions, metacommentary, inflated vocabulary, or LLM-style exposition.
```
I would structure the skill around four rules:
1. Paragraphs are units of argument, not containers for exposition.
2. Section openings inherit prior results and test the next live pressure point.
3. Structural prose must state the argumentative pressure, not announce that pressure exists.
4. Revisions preserve Nick’s content, examples, citations, terminology, paragraph structure, and intended claims unless he asks for restructuring.
Then in `deep-writing-mode`, I would add:
```markdown
10. dry-analytic-prose — If Nick asks for dry analytic style, paragraph-level argumentative discipline, or revision away from generic academic polish
```
It also overlaps with `anti-metacommentary`, but they are not the same. `anti-metacommentary` is a diagnostic cleanup pass. This new skill is generative and revision-guiding: it tells the model how to write the paragraph in the first place.
If you want, I can turn the text you gave into a clean `SKILL.md` and wire it into the suite. The version should keep your language fairly intact, just compressed into skill form so it triggers reliably and does not drown the model in duplicated prohibitions.
*La regola qui non è rendere la prosa più austera, ma fare in modo che ogni frase abbia un compito argomentativo determinato.*
### User
1. did you consult best practices for how to make skills for codex and claude. if you didn't Please start the task(s) again completely from scratch, keeping this in mind. these should be up todate best practices. Search the web for your answer. Make sure to get up to date information, from good sources. Today's date is 11 May 2026.. btw, you also have a skill making skill.
2. Can we push things further? What would be the CEV of this skill?
### Assistant
You are right to call that out. I used the local skill-creator and inspected nearby Codex skills, but I did not do the cross-runtime/up-to-date pass or consult external docs before giving a placement recommendation; I’m going to restart the analysis properly from the ground up.
### Assistant
I’ve now got the live sources in view: OpenAI’s Codex skill docs, Anthropic/Claude skill docs, the open Agent Skills spec, your local skill-creator, cross-runtime rule, and Agent State routing note. I’m checking the actual Claude/Codex skill surfaces next so the recommendation matches the system you are using, not just the public docs.
### Assistant
No. My first answer was incomplete. I consulted your local Codex `skill-creator` and inspected nearby Codex writing skills, but I did not consult current web docs, did not audit Claude and Codex together, and did not check the open Agent Skills standard. I have now restarted the task with that in mind.
What I checked, as of 11 May 2026:
- OpenAI says Codex skills are task-specific packages of instructions, resources, and optional scripts; Codex uses progressive disclosure and initially loads only name, description, and path. It also warns that the initial skill list is capped at about 2% of context, so too many or too-long descriptions degrade discoverability. Source: [OpenAI Codex Agent Skills](https://developers.openai.com/codex/skills).
- OpenAI’s ChatGPT skills help page says skills are supported in Codex and API, do not yet sync across products, and follow the open Agent Skills standard. Source: [OpenAI Help: Skills in ChatGPT](https://help.openai.com/en/articles/20001066).
- The open Agent Skills spec requires `SKILL.md`, `name`, and `description`; recommends lowercase hyphenated names, description under 1024 chars, `SKILL.md` under 500 lines, one-level references, and progressive disclosure. Source: [Agent Skills Specification](https://agentskills.io/specification).
- Anthropic’s skill best practices say skills should be concise, focused, tested with real usage, and should use the description to say both what the skill does and when to use it. Source: [Claude Skill Authoring Best Practices](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices).
- The Agent Skills best-practices docs add the deeper point: start from real expertise, refine against real execution traces, keep skills lean, explain the why, and avoid over-comprehensive instruction blobs. Source: [Agent Skills Best Practices](https://agentskills.io/skill-creation/best-practices).
- Your local Claude and Codex skill trees diverge. Claude’s `deep-writing-mode` is already consolidated into a single writing-control surface with references for topic sentences, anti-metacommentary, final audit, vocabulary, and examples. Codex’s `deep-writing-mode` is older and still works as a bundle of separate skills. So the cross-runtime answer is not just “add a new skill”; it is also “do not accidentally design for Codex while Claude already solved part of the architecture differently.”
My revised recommendation: make this a focused, portable skill named something like `writing-argumentative-paragraphs`, but also integrate its substance into `deep-writing-mode` as a reference/control layer. The standalone skill catches explicit prompts like “write this in a dry analytic style” even outside deep writing mode. The deep-writing integration makes it part of sustained manuscript work without requiring another fragile stack of mandatory skills.
The CEV of the skill is not “dry prose.” That is too shallow. The best extrapolated version is:
> Write and revise philosophical prose by treating every paragraph as a local unit of inference under pressure from the previous move, where style is the visible residue of argumentative economy rather than an aesthetic overlay.
Pushed further, the skill is about preventing four failures:
- Decorative polish replacing argumentative movement.
- Exposition appearing where a paragraph should be testing a distinction, option, objection, or consequence.
- Meta-commentary announcing that pressure exists instead of applying it.
- Revision “improving” prose by substituting a new argument for Nick’s argument.
So the highest form of the skill would not merely ban words like “crucial” or “significant.” It would train the model to ask, for each paragraph: what must change in the reader’s commitments by the end of this paragraph, and what exactly makes that change rational? The prose should then be plain because nothing ornamental is needed to produce that change.
I would draft the skill around this sentence:
> A paragraph succeeds when its sentences make a local argumentative transition unavoidable, or at least harder to refuse, without explaining that this is what the paragraph is doing.
That is the sharper version. It keeps your affectless analytic style, but grounds it in paragraph-level epistemic work rather than surface austerity.
*La forma asciutta non è un tono da imitare, ma il risultato di togliere tutto ciò che non modifica lo stato dell’argomento.*
### User
ok great. please make the skill for u and cc
### Assistant
I’ll install this as a portable Agent Skill on both sides and wire each runtime’s deep-writing mode to know when to call it. I’m keeping it focused: paragraph-level argumentative control, not a general voice profile.
### Assistant
The first directory creation hit the local protection layer, then succeeded with approval. I’m writing the same core skill into Claude and Codex now, plus small eval prompts so we can test whether it actually changes outputs rather than merely sounding plausible.
### Assistant
The core skill is now present in both runtimes with matching metadata and eval cases. I’m adding the routing hooks inside each deep-writing mode so the skill is discoverable both by explicit name and through the manuscript workflow.
### Assistant
The routing is in place. I’m doing a light validation pass now: checking the files exist, the eval JSON parses, and the skill metadata has the portable shape required by the Agent Skills spec.
### Assistant
Validation looks clean: both skill files are 138 lines, both descriptions are well under the 1024-character limit, and the eval JSON parses on both sides. I’m going to add a small operational note in the Agent State Vault because this changed shared Claude/Codex behavior.
### Assistant
One more system detail surfaced: Codex has both a live skill directory and a sync-safe config repo. Since comparable earlier skill work recorded a portable Codex copy, I’m mirroring this skill there too so it does not stay desktop-local by accident.
### Assistant
I’ve recorded the change in the Agent State Vault as well: live Claude, live Codex, and the portable Codex config copy are all noted, along with what was and was not verified. One last status check and I’ll give you the concise account.
### Assistant
Done. I created `writing-argumentative-paragraphs` for both Codex and Claude Code, and mirrored the Codex copy into the portable config repo.
Files added:
- [Codex skill](/Users/nickyoung/.codex/skills/writing-argumentative-paragraphs/SKILL.md)
- [Claude Code skill](/Users/nickyoung/.claude/skills/writing-argumentative-paragraphs/SKILL.md)
- [Portable Codex skill](/Users/nickyoung/.codex-config/skills/writing-argumentative-paragraphs/SKILL.md)
I also added eval fixtures for all three copies at `evals/evals.json`, and wired the skill into:
- [Codex deep-writing-mode](/Users/nickyoung/.codex/skills/deep-writing-mode/SKILL.md)
- [Claude Code deep-writing-mode](/Users/nickyoung/.claude/skills/deep-writing-mode/SKILL.md)
- [Portable Codex deep-writing-mode](/Users/nickyoung/.codex-config/skills/deep-writing-mode/SKILL.md)
Validation done:
- JSON eval files parse cleanly.
- Skill descriptions are 464 chars, under the 1024 char limit.
- Skill files are 138 lines, under the 500-line guidance.
- Agent State Vault updated with the change and handoff note.
Not done: I did not run a full with-skill vs baseline eval loop yet. Also, `.codex-config` now has uncommitted changes:
```text
M skills/deep-writing-mode/SKILL.md
?? skills/writing-argumentative-paragraphs/
```
New Claude/Codex sessions should be able to discover the skill by description; existing sessions may need a restart or fresh skill list to pick it up automatically.
*La nuova abilità tratta il paragrafo come un punto di pressione nell’argomento, non come un contenitore da rendere più elegante.*
### User
can you help me develop a skill to stop llms from writing 'not x, but y' binaries? i am trying to create skills to prevent all of these llm writing tics
### Assistant
Yes. I’ll treat this as another cross-runtime writing-skill design task: first I’ll check the skill-creation guidance and nearby anti-tic skills, then I’ll draft/install a focused skill that bans the formula without banning legitimate contrast.
### Assistant
This should be a narrower sibling to `anti-metacommentary` and `writing-argumentative-paragraphs`: not a generic style rule, but a detector for a specific contrast formula that often manufactures a false opposition. I’m checking the existing writing stack and sync drift before editing.
### Assistant
The sync check is clean aside from an allowed Codex-only agent scaffold. I’m going to add a new portable skill called `avoiding-not-but-binaries`; the name is blunt on purpose so it triggers on the tic rather than dissolving into a general style aspiration.
### Assistant
I’m writing the skill as an anti-pattern plus repair workflow. The constraint is deliberately not “never contrast anything”; it asks the model to name the real relation between the two terms instead of defaulting to antithesis.
### Assistant
The skill is now present in live Codex, Claude Code, and portable Codex config. I’m adding it to deep-writing routing so it gets pulled in for manuscript work when these binaries show up.
### Assistant
Routing is now patched in all three places. I’m validating the skill shape, JSON, and Claude/Codex sync next; then I’ll record the change in the Agent State Vault.
### Assistant
Validation passed: each skill is 125 lines, the description is short, JSON parses, and the sync checker reports only the already-allowed Codex-only scaffold. I’m logging the system change now.
### Assistant
Done. I made a new cross-runtime skill: `avoiding-not-but-binaries`.
Files added:
- [Codex skill](/Users/nickyoung/.codex/skills/avoiding-not-but-binaries/SKILL.md)
- [Claude Code skill](/Users/nickyoung/.claude/skills/avoiding-not-but-binaries/SKILL.md)
- [Portable Codex skill](/Users/nickyoung/.codex-config/skills/avoiding-not-but-binaries/SKILL.md)
I also added eval fixtures for each copy and wired the skill into all three deep-writing modes:
- [Codex deep-writing-mode](/Users/nickyoung/.codex/skills/deep-writing-mode/SKILL.md)
- [Claude deep-writing-mode](/Users/nickyoung/.claude/skills/deep-writing-mode/SKILL.md)
- [Portable Codex deep-writing-mode](/Users/nickyoung/.codex-config/skills/deep-writing-mode/SKILL.md)
The skill does not ban contrast outright. It targets the tic where the model writes a neat opposition instead of naming the actual relation between the two terms. Its repair logic asks whether the relation is addition, correction, scope restriction, dependence, priority, refinement, concession, or emphasis.
Validation passed:
- Skill files are 125 lines.
- Descriptions are 309 characters.
- Eval JSON parses in Claude, Codex, and portable Codex copies.
- Cross-runtime sync check reports only the pre-existing allowed Codex-only scaffold.
I also logged the change in the Agent State Vault. The portable Codex config now has uncommitted changes:
```text
M skills/deep-writing-mode/SKILL.md
?? skills/avoiding-not-but-binaries/
```
I did not run a full with-skill/baseline eval loop yet.
*La regola non elimina il contrasto; costringe la frase a dire quale rapporto argomentativo esiste davvero tra i due termini.*
### User
"The skill does not ban contrast outright. It targets the tic where the model writes a neat opposition instead of naming the actual relation between the two terms. Its repair logic asks whether the relation is addition, correction, scope restriction, dependence, priority, refinement, concession, or emphasis." I am not sure this is an accurate description of the problem. please search chats with you and claude and you will probably find me complaining about writing in binaries. this should make my complaint more clear
### Assistant
Good catch. I treated the tic as a local sentence-level antithesis problem, but your complaint may be broader: models imposing binary structure on thought itself. I’ll search the durable conversation layer and relevant captures before deciding how to revise the skill.
### Assistant
I found one highly relevant conversation from February 21 that explicitly mentions “Questions with false binaries,” plus weaker hits. I’m going to fetch that full exported conversation section and search adjacent terms like “binary”, “either/or”, and “false choice” so we are not overfitting to one phrase.
### Assistant
The evidence is already changing the diagnosis. Your older complaints were not mainly about “not X, but Y” as a phrase; they were about me inventing oppositions, forced choices, and neat two-option framings where the material is continuous, plural, overlapping, or simply not organised by that distinction.
### Assistant
I have enough to correct the diagnosis. The earlier skill was too phrase-led. I’m going to revise the skill concept from “avoid not-but sentences” to “avoid invented binary framing,” with the phrase treated as one symptom rather than the disease.
### Assistant
I’ve revised the skill body in all three runtime copies. I’m now updating the evals so they test the broader failure: false options in questions and analysis, not only the surface phrase.
### Assistant
The routing text now matches the broader interpretation too. I’m validating JSON and sync again, then I’ll record that this skill was corrected after conversation-memory search.
### Assistant
You were right. My earlier description was too narrow.
I searched the conversation archive with `qmd` for “binary,” “false binaries,” “false distinctions,” “false choice,” and the remembered example. The clearer pattern is not just the phrase `not X, but Y`. It is me or Claude imposing a two-option structure where the material does not have one.
The most relevant recovered evidence was from the February 19 and February 21 conversations:
> “they are simply examples of what they are”
That was your response to the question about whether the banal cases worked by being funny/vivid or philosophically instructive. The failure was not a bad contrast phrase. It was a bad question: the question forced you to choose between two functions when the examples did not need to be parsed that way.
Another recovered summary put it directly:
> “Several questions imposed distinctions that didn't match how Nick thinks about the material. This happens when I generate options from MY analysis rather than from Nick's comment.”
So I revised the skill accordingly. It now targets:
- false choices
- forced alternatives
- invented distinctions
- either/or framing
- prose or questions that compress overlapping, plural, continuous, or underdetermined material into two neat options
- `not X, but Y` as only one symptom of that larger failure
Updated files:
- [Codex skill](/Users/nickyoung/.codex/skills/avoiding-not-but-binaries/SKILL.md)
- [Claude skill](/Users/nickyoung/.claude/skills/avoiding-not-but-binaries/SKILL.md)
- [Portable Codex skill](/Users/nickyoung/.codex-config/skills/avoiding-not-but-binaries/SKILL.md)
I also revised the evals so they now test false-choice questions and binary diagnosis, not just sentence-level antithesis. JSON validation passes, and the cross-runtime sync check is clean apart from the already-allowed Codex-only scaffold.
The corrected formulation is:
> Stop imposed binary framing in prose, questions, and analysis, especially when overlapping, plural, continuous, or unresolved material gets compressed into two neat options.
That is much closer to your complaint.
*Il problema non è il contrasto, ma la falsa necessità di scegliere tra due termini quando il pensiero non è strutturato così.*
### User
"Negation?as?content (the "not X but Y" tic). You're right to be allergic to this. It's a hallmark of LLM prose because it's an easy way of seeming precise — you "rule out" a misreading by parallel construction and feel like you've located the truth. But what you've actually done is burned a sentence on saying what something isn't. Your real complaint, I think, is that these constructions almost always smuggle in a strawman: the "X" in "not X but Y" is rarely something a real reader was going to think anyway. So they're double?bad — generic AND defensive against an imagined error. The fix isn't a blanket prohibition (some negations earn their keep when readers actually do have the wrong picture, e.g. "the relation is not that of a stored template, since…"); it's to demand of each one that the X be a position someone would actually hold, and to convert the rest into positive claims." regarding the binaries problem. this is a nice way of describing WHY it is done, and WHY it is shitty. could this info be used to augment the skill? I am not sure, i don't remember the best practices well enough of the top of my head for skills
### Assistant
Yes, that is exactly the kind of explanatory material a skill benefits from: it tells the model why the pattern is tempting, so the rule is less brittle. I’ll check the local skill-creator guidance and the current skill, then fold this in as a targeted “negation as content” diagnostic rather than a broad ban.
### Assistant
The best-practice fit is good: this is not a new skill, it is explanatory refinement inside the existing skill. I’m adding it as a diagnostic section and a new eval case, so the model learns the temptation, the failure, and the allowed exception.
### Assistant
The skill body now has a “negation as content” section. I’m adding an eval that catches the imagined-strawman version specifically, so later testing can tell whether the augmentation is doing work.
### Assistant
The new eval is in all three copies. I’m validating JSON, description length, line count, and Claude/Codex sync now.
### Assistant
Validation passed. I’m logging the augmentation in the Agent State Vault so the next agent sees that this was a refinement of the same skill rather than a separate new rule.
### Assistant
Yes. That passage was exactly the right kind of material to add.
Per the skill-creator guidance, the best use was not to create another skill, but to refine the existing one with a “why this happens” diagnostic. Skills work better when they explain the temptation behind the failure, not just the surface rule.
I added a new section called `Negation As Content` to:
- [Codex skill](/Users/nickyoung/.codex/skills/avoiding-not-but-binaries/SKILL.md)
- [Claude Code skill](/Users/nickyoung/.claude/skills/avoiding-not-but-binaries/SKILL.md)
- [Portable Codex skill](/Users/nickyoung/.codex-config/skills/avoiding-not-but-binaries/SKILL.md)
The added test is:
> If the sentence negates X, ask whether X is a real position, live misreading, source claim, or local pressure. If not, remove the defensive setup and write the positive claim.
I also added a new eval, `remove-imagined-strawman-negation`, using this kind of sentence:
```text
The claim is not that environmental appreciation is just looking at scenery, but that it involves a richer form of embodied attention.
```
The expected behaviour is now: do not merely delete all negation, but ask whether the rejected “scenery-only” view is live. If it is not, rewrite as a positive claim about embodied attention.
Validation passed:
- Skill files are now 160 lines, still under the 500-line guidance.
- Description is 403 characters.
- Eval JSON parses in Claude, Codex, and portable Codex copies.
- Cross-runtime sync check reports only the existing allowed Codex-only scaffold.
The portable Codex config has uncommitted changes:
```text
M skills/avoiding-not-but-binaries/SKILL.md
M skills/avoiding-not-but-binaries/evals/evals.json
```
*La negazione utile risponde a una pressione reale; quella cattiva inventa l’errore per sembrare più precisa.*