Passante A Passante publication

En Passante

In Passing
Field Kit

Every rule needs a named category file

Group agent rules by the situation that activates them, and give each group a file whose name says when to open it.

What happened

On 2026-09-06, a set of agent instructions came close to shipping as one undifferentiated list, with accommodation, git safety and routing rules sharing a single home, and they had to be pulled into separately named files before any rule could be located by the situation that triggers it.

2026-09-06 A coding agent · markdown rule files measured: none recorded
3 prompts, in order
  1. Classify every rule by its trigger Your agent instructions are one long mixed list.
  2. Route each rule to a named file You have candidate groups and need real file names.
  3. Prove the split survives a lookup Files are split and you need evidence the names work.

1Classify every rule by its trigger

Run it when
Your agent instructions are one long mixed list.
It asks you for
The full rule text, pasted verbatim, plus the agent's common situations.
You get back
A rule count, candidate groups with scope sentences, and a rule-to-group table.
It refuses if
You paste a summary of the rules instead of the rules.
copy this into a model
<stance>
The rule block is the subject here. You act as an editor who sorts behavioural instructions by the moment they apply, not by how firmly they are worded. A list that mixes repository safety with output formatting gives an agent no way to tell which lines govern the task in front of it. The common error in this work is inventing categories that describe tone, such as important or style, which tell a reader nothing about when to open the file. Sort by trigger. Each group must answer one question: what situation makes these rules relevant.
</stance>

<inputs>

1. Paste the full current rule text, exactly as the agent receives it.
2. List the situations this agent handles most often.
3. State whether the rules live in one file or several today.
Wait for all three answers. Do not guess at missing rule text. If an input is absent, ask once and stop.
</inputs>

<method>

1. Split the pasted text into atomic rules. One rule is one instruction with one trigger. Report the total count.
2. For each rule, write the situation that activates it. Use the original wording where possible.
3. Group rules whose activating situations match. Name each group after the situation.
4. Put any rule with an unclear trigger into an unplaced list. Do not force it into a group.
5. Flag any rule that states two instructions. Propose a split into two rules.
6. Compare each pair of groups. If they share most of their triggers, propose a merge.
7. Report any rule that appears twice in different words. Quote both versions.

</method>

<deliver>

- Total rule count before grouping
- Candidate groups, each with a one-sentence scope
- Rule-to-group table
- Unplaced rules, quoted verbatim
- Duplicates and double-barrelled rules

</deliver>

<refuse>

- Do not invent rules the pasted text does not contain.
- Do not drop a rule to make a group look tidy.
- Do not name a group by importance, urgency or priority.
- Stop if the pasted text is a description of the rules rather than the rules. Say so plainly.
- If fewer than two distinct triggers appear, report that grouping is not warranted. Do not manufacture categories to fill a diagram.
- When a rule's trigger stays unclear after step 2, leave it unplaced. Do not assign it on a guess.

</refuse>

2Route each rule to a named file

Run it when
You have candidate groups and need real file names.
It asks you for
The grouping output and any naming constraints from your tooling.
You get back
Proposed files with scope sentences, an assignment table, and overlap tie-breaks.
It refuses if
The assigned rule total differs from the input total.
copy this into a model
<stance>
Category names are the interface. An agent opens a file because the name promises the answer, so a file called misc or general is never opened on purpose. The mistake worth naming here is a category set built to cover the rules already written rather than the situations the agent meets. Scope sentences come first. Names follow from them. A name that cannot be derived from a one-sentence scope is a name nobody will trust mid-task.
</stance>

<inputs>

1. Paste the grouping output, including the rule-to-group table.
2. List the situations this agent handles.
3. State any constraint on file names or locations from your tooling.
Wait for the grouping table. Do not design categories from a description of the rules.
</inputs>

<method>

1. For each group, write one scope sentence. State the situation that sends a reader to this file.
2. Derive the file name from the scope. Use a lowercase noun phrase, such as git-safety or routing.
3. Assign every rule to exactly one file. Report any rule you cannot place.
4. Compare each pair of scope sentences. Where a rule could sit in two files, state the tie-break.
5. Reject any name that would collect leftovers. Keep unplaced rules in an open list instead.
6. Count rules per file. Flag a file holding a single rule. Ask whether it belongs elsewhere.
7. Total the assigned rules. Compare that total with the input count and report the difference.
8. If a scope cannot be written without listing the rules inside, say the grouping is unstable. Stop there.

</method>

<deliver>

- Proposed files, with one scope sentence each
- Assignment table, rule to file
- Overlaps and the tie-break for each
- Rules still unplaced
- Rule count per file, and the assigned total against the input total

</deliver>

<refuse>

- Do not create a catch-all file under any name.
- Do not reword a rule's meaning while moving it.
- Do not emit a file list without a scope sentence per file.
- Stop if the assigned total differs from the input total. Report the gap and name the missing rules.
- Say so when a category exists only to balance the structure.
- Do not proceed on a group whose scope you had to invent. Return it for reclassification.

</refuse>

3Prove the split survives a lookup

Run it when
Files are split and you need evidence the names work.
It asks you for
File names, scope sentences, rule text per file, and five real tasks.
You get back
A lookup table of hits and misses, duplicated phrases, and a verdict.
It refuses if
Fewer than five real tasks arrive, or rule text is missing.
copy this into a model
<stance>
A reorganisation proves itself at retrieval time. The question is whether a reader facing a real task opens the right file on the first attempt. The failure mode to watch is a split that reads well as a table of contents and answers nothing mid-task. Names are tested by use. Treat every scenario as a blind lookup against the names and scopes alone, and score it before any rule text is read.
</stance>

<inputs>

1. Paste the file names with their scope sentences.
2. Paste the full rule text for each file.
3. List five to ten real tasks this agent performs.
4. State the rule count from before the split.
Wait for the task list. Scenarios you invent do not test these names.
</inputs>

<method>

1. For each task, read only the names and scopes. Name the one file you would open. Record that choice.
2. Open the chosen file. State whether the governing rule is inside. Mark the task hit or miss.
3. For each miss, name the file that held the rule. Say what the scope sentence failed to signal.
4. Search each rule's distinctive phrase across all files. Report any phrase found in more than one file.
5. Total the rules across files. Compare with the pre-split count and report any difference.
6. Note any task that needs two files. A task needing three suggests the split is wrong.
7. Where the names leave a choice genuinely open, record the lookup as ambiguous. Do not score it a hit.

</method>

<deliver>

- Lookup table: task, file chosen, hit or miss
- Misses, each with the scope sentence at fault
- Phrases duplicated across files
- Rule count before and after the split
- Verdict: the names hold, or these named revisions are required

</deliver>

<refuse>

- Do not score a lookup after reading the rule text. Names and scopes only.
- Do not add tasks of your own to raise the hit rate.
- Do not report a pass while any rule is missing from the count.
- Stop if the rule text per file is unavailable. The lookup cannot be checked without it.
- Say so when fewer than five real tasks arrive. Name the shortfall and wait.
- Do not rewrite a scope sentence in this step. Report the fault and leave the edit to the owner.

</refuse>
How you know it worked

Pick five tasks the agent really performs. Show a reader only the file names and scope sentences. Ask which single file they would open for each task. Then open it and see whether the governing rule is inside. Count the hits.

from a real incident, 2026-09-06 · stack A coding agent · markdown rule files · verified by none recorded · agent-rulesinstructionsmaintainability

← every Field Kit