Common Problems with Codex
A frequent issue with Codex is the tendency to design or implement things with loosely defined terms. In my experience, this is slightly less common with Claude, but with Codex, it was an issue in 5.5 and persists in 5.6. This is a countermeasure for that problem.
For example, a section of a research report had a heading called "Compression Point." Reading the body, the term fluctuated between three meanings: "when the conversation history reaches a set amount," "the threshold to start automatic summarization," and "the actual moment summarization begins." The writing was fluent and looked like a technical explanation. However, the moment a single term served as a starting condition, a value, and an event, the subject of the explanation became undefined. As a result, the research findings were sadly led in the wrong direction.
Triggered by this failure, I created a skill called semantic-generation. While the name sounds like a text generation technique, what I actually changed was the definition of words before writing the text.
Structure and Impact of the Problem
There is the issue that the Japanese term "Compression Point" is inherently unclear, but when Codex was pointed this out, it first tried to fix it as a lack of explanation and then as a heading expression issue. It did not immediately realize it had confused a starting condition with an execution event.
In the same session, something similar happened. Since the cause was not yet known, the plan was to conduct a test, isolate the cause from the results, and then choose a countermeasure. Codex summarized this as "collecting observations into one."
The target of collection was not the observations themselves. It was the values or records obtained from the test. Furthermore, collecting values was not the goal, but a means to isolate the cause.
By summarizing it into a short phrase, the following sequence disappeared:
- The cause is not yet known.
- Conduct a test.
- Isolate the cause from the results.
- Choose a countermeasure after isolation.
"Collecting observations into one" looks plausible. Because it looks plausible, it covers up unorganized parts and becomes the premise for subsequent design.
Correction Lists for Original Terms Cannot Stop It
When considering improvements, a proposal was made to record the correspondence between corrected words and meanings and carry them over to the next session.
What I want to stop is not "using a previously mistaken word again." It is placing a word first while the target is ambiguous and proceeding with thought based on that word. Even if you make a list of incorrect words, a different coined word will be born next time.
Therefore, instead of corrected words, I changed the policy to create candidate words before creating original terms at the beginning of every session.
Countermeasure) Force the Creation of a Candidate Word List Before Design
I decided to have the AI create a correspondence table for uniquely defined terms and then perform the design after loading that file.
The correspondence table has the following seven columns:
- Source
- Purpose
- Concrete Object
- Role
- Context
- Candidate Word
- Initial Definition
The order of the columns is significant. The candidate word is on the far right and cannot be filled until the concrete object and role are written.
If the candidate word were on the far left, one could write the word "Compression Point" first and then create an explanation that fits that word later. That would just reproduce the generation order I want to stop within the table.
Roles are also placed one per line. If you want to handle a starting condition and an event with the same word, you split the lines. Then, before the pressure to "finish it in one word," the fact that there are two objects being handled becomes visible.
By doing this, the generative AI itself can notice when words are becoming ambiguous, and I was able to actively prohibit the use of words while they remain ambiguous.
Summary
Generative AI is not good at keeping a blank space blank. Even if the target or purpose is not yet determined, it can continue the text if a plausible word is placed. That fluency can be dangerous in design.
semantic-generation is not a skill for finding good words. It is a skill to make the AI stop for a moment and choose appropriate words when it tries to use an original term.
What is the target? Is it a condition, a state, or an event? For what purpose is it handled, and what happens after what?
Only for lines written that far do we finally give a name at the end. At first glance, it seems like a detour, but it is shorter than rebuilding the entire design from a single word like "Compression Point."
semantic-generation skill
1---2name: semantic-generation3description: |4 A generation procedure where, before writing the target document (design materials, design from requirements, research reports, cause isolation plans, countermeasure plans, naming, summary of reasoning order), a correspondence table (referent table) is submitted first as an independent deliverable to fix the referent and role before the word.5 Triggers: Writing design materials, creating design documents, writing research reports, writing countermeasure plans, naming, deciding state names/condition names/type names/method names, summarizing reasoning order, referent table, correspondence table.6 DO NOT TRIGGER: Quoting user original text, simple mechanical editing, reusing existing names, fixed output, small talk, short sentences that can be written with established terms only.7---89# semantic-generation — Procedure to fix the target before the word1011If a word (often a coined word on the spot) is placed first while the target is ambiguous, and thinking proceeds based on that word, the discrepancy with the referent propagates to Japanese sentences, design sentences, and code identifiers without being corrected. This skill forces the sequence of "submitting the correspondence table independently first and writing the body as a copy of it."12Criteria for discipline are held by the [[referent-before-label]] rule.1314## Application Criteria1516Use when any of the following apply. If you cannot judge, treat it as applicable.17181. Writing design materials, design from requirements, research reports, cause isolation plans, or countermeasure plans.192. Naming (public specifications, state names, condition names, event names, type names for values or records, method names, boolean names).203. Attempting to summarize a reasoning order given by the user into short work labels.2122## Normal Flow2324### 1. Save the correspondence table as an independent deliverable first (Two-stage submission)2526Before writing a single character of the body, save the correspondence table as an independent file.2728- Save destination: `referent-table-<slug>.md` in the working directory (if the deliverable is under `output/`, place it in the same directory).29- Record the sha256 after saving (e.g., `shasum -a 256 <path>`). This record becomes evidence that "the correspondence table was created before the body." Simply placing the table at the beginning of the completed document does not prove the generation order.3031### 2. Format of the correspondence table (Column order change prohibited)3233| Source | Purpose | Concrete Object | Role | Context | Candidate Word | Initial Definition |3435- **The candidate word is fixed on the far right. Keep the candidate word column blank until the concrete object and role are filled.** This is to make the order of deciding the word first and attaching the target later impossible through the format.36- Choose the role from closed options: `Starting Condition / State / Event / Value / Record / Purpose / Means`. If the same word refers to multiple roles, split the lines.37- In "Context," write the reasoning order given by the user (e.g., Test → Isolation → Countermeasure) using the words from the original text. Do not mix with the role column.38- Tables are usually limited to 1–6 lines. If exceeded, split the table at boundaries where the meaning changes.39- Upon completion, confirm that the meaning is clear from the "Concrete Object" column alone, even if the candidate word column is hidden.4041### 3. Fill in the candidate words4243- Use user terminology and established terminology with the highest priority.44- When placing other new words, write "X refers to..." in the "Initial Definition" column. Do not introduce words for which a definition cannot be written; use the description of the concrete object as is in the body.4546### 4. Write the body as a copy of the correspondence table4748- Use only the words listed in the correspondence table as the central vocabulary of the body.49- Maintain the same correspondence across the three layers of Japanese sentences, design elements, and code identifiers (e.g., "History volume reaches 250K" = Starting Condition → Condition Name / "Auto-summarization starts" = Event → Event Name/Method Name / "Auto-summarization in progress" = State → State Name. Different roles should have different names).50- Do not use work labels (abstract noun phrases omitting purpose, target, and judgment) for frameworks or headings. If you want to use one, try writing the referent of that phrase in the table; if you can't, write it in concrete sentences.5152## Preliminary Actions in Case of Problems5354- If you realize you started writing the body without submitting a correspondence table, do not continue by adding the table later. Discard the body, resubmit the correspondence table independently, and then regenerate the body.55- If pointed out that one line of the table was incorrect (confusion of referent or role), do not add an explanation; rewrite the relevant line and then regenerate the corresponding part of the body.56- In environments where this skill cannot be loaded, save a table with at least 6 columns (Source, Purpose, Concrete Object, Role, Context, Candidate Word) as an independent file before starting the body.5758## Remarks5960- Do not include test inputs or expected answers for verification in the body of this skill (to maintain independence of verification. Tests are managed in fixtures in a separate directory).61- The goal is not to match against a list of incorrect terms. The matching target is the "correspondence table declared by the document itself."
referent-before-label rule
1# Fix the referent before the word23<!-- codex-runtime-summary -->4- IMPORTANT: For target documents (design sentences, research reports, countermeasure plans, naming, summary of reasoning order), write the body after independently submitting a correspondence table. Submitting the body without a correspondence table is prohibited. If you start writing without a table, discard the body and start over from the correspondence table.5- IMPORTANT: Do not use work labels (phrases wrapping unorganized work in abstract nouns) for frameworks or headings. Do not introduce new or coined words unless you can write an initial definition; decompose the target into concrete descriptions.6- IMPORTANT: Trigger the semantic-generation skill when starting a target document. Even if the skill cannot be used, save a correspondence table with at least 6 columns (Source, Purpose, Concrete Object, Role, Context, Candidate Word) as an independent deliverable first.7<!-- /codex-runtime-summary -->89If a word (often a coined word on the spot) is placed first while the target is ambiguous, and thinking proceeds based on that word, the discrepancy with the referent propagates to design sentences, state names, condition names, method names, and type names (as in the "Compression Point" and "Collecting observations into one" examples in TASK-52). This rule stops this generation process itself. Matching against a list of incorrect terms (word hunting) is not the countermeasure, because coined words cannot be enumerated. Criteria for word fluctuation are held by [[terminology]], and this rule holds the "procedure before placing the word."1011## Scope (Target Documents)1213Apply only to tasks falling under any of the following. If you cannot judge, apply it.14151. Writing design materials, design from requirements, research reports, cause isolation plans, or countermeasure plans.162. Naming (public specifications, state names, condition names, event names, type names for values or records, method names, boolean names).173. Attempting to summarize a reasoning order given by the user into short work labels.1819Do not apply to quoting user original text, simple mechanical editing, reusing existing names, fixed output, small talk, or short sentences that can be written with established terms only.2021## Constant Application (3 Prohibitions)2223- IMPORTANT: In target documents, do not submit the body without independently submitting a correspondence table (referent table). The correspondence table must be saved first in a separate file or a separate turn from the body, and the body is written after that (simply placing the table at the beginning of the completed document does not prove it was "made first").24- IMPORTANT: Do not use work labels for frameworks, headings, or conclusions. A work label refers to a phrase wrapping unorganized work in abstract nouns without purpose, target, or judgment (e.g., "Summarizing observations"). If you want to use one, try writing the target that phrase refers to in the correspondence table; if you can't, discard the phrase and write in concrete sentences.25- IMPORTANT: When introducing new words other than user terminology or established terminology, write a definition sentence "X refers to..." at the first occurrence. Do not introduce words for which a definition sentence cannot be written; write out the target as is in sentences.2627## Normal Flow28291. Determine if it falls under target documents (if in doubt, treat as applicable).302. Trigger the [[semantic-generation]] skill and save the correspondence table as an independent deliverable first.313. Write the body using only the words listed in the correspondence table as the central vocabulary, maintaining the same correspondence across Japanese sentences, design elements, and code identifiers.3233## Preliminary Actions in Case of Problems3435- If you realize you started writing the body without submitting a correspondence table for a target document, do not continue by adding the table later. Discard the body, resubmit the correspondence table independently, and then regenerate the body.36- In environments where the skill is not available, save a correspondence table with at least 6 columns (Source, Purpose, Concrete Object, Role, Context, Candidate Word) as an independent file in the working directory before starting the body.





