bots-garden/mini-mepublic Fork
⑂ 8d8d1e8
Commits
⬇ Clone ▾
git clone https://git.rickub.com/bots-garden/mini-me.git
git clone ssh://git@rickub.com/bots-garden/mini-me.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Download ZIP

🛟 Updated.

k33g committed 2026-10-25T18:30:13+01:00 Browse files
8d8d1e8 parent: 670e75c
modified agentsmd_banner.go +13 -3
@@ -25,7 +25,8 @@ func agentsMdBanner(acpMode bool, window int) (string, []string) {
2525 if !settings.Enabled {
2626 return "", nil
2727 }
28- if acpMode {
28+ // A decider never sends the file, whatever the session's directory.
29+ if acpMode && config.Cfg.Decision == nil {
2930 return " | agents.md: <session cwd>/" + settings.Path, nil
3031 }
3132 f := agentsmd.Load("")
@@ -33,8 +34,9 @@ func agentsMdBanner(acpMode bool, window int) (string, []string) {
3334 case agentsmd.Loaded:
3435 return fmt.Sprintf(" | agents.md: %s (~%d tokens)", f.Path, f.Tokens()), largeAgentsMdWarning(f, window)
3536 case agentsmd.Ignored:
36- // Neutral, not a warning: a structured agent skips it on purpose.
37- return " | agents.md: ignored (structured output)", nil
37+ // Neutral, not a warning: a structured agent and a decider skip it
38+ // on purpose.
39+ return " | agents.md: ignored (" + ignoredBecause() + ")", nil
3840 case agentsmd.Skipped:
3941 return " | agents.md: skipped (too long)", []string{fmt.Sprintf(
4042 "%s skipped: %d characters > agentsMd.maxChars %d — it is not read at all (shorten it, or raise the limit)",
@@ -55,3 +57,11 @@ func largeAgentsMdWarning(f agentsmd.File, window int) []string {
5557 "%s is ~%d tokens, %d %% of the %d-token context window — every request carries it (shorten it, or set agentsMd.maxChars)",
5658 f.Path, f.Tokens(), f.Tokens()*100/window, window)}
5759 }
60+
61+// ignoredBecause names, for the banner, the kind of agent that skips AGENTS.md.
62+func ignoredBecause() string {
63+ if config.Cfg.Decision != nil {
64+ return "decision model"
65+ }
66+ return "structured output"
67+}
@@ -25,7 +25,8 @@ func agentsMdBanner(acpMode bool, window int) (string, []string) {
25 if !settings.Enabled {25 if !settings.Enabled {
26 return "", nil26 return "", nil
27 }27 }
28- if acpMode {28+ // A decider never sends the file, whatever the session's directory.
29+ if acpMode && config.Cfg.Decision == nil {
29 return " | agents.md: <session cwd>/" + settings.Path, nil30 return " | agents.md: <session cwd>/" + settings.Path, nil
30 }31 }
31 f := agentsmd.Load("")32 f := agentsmd.Load("")
@@ -33,8 +34,9 @@ func agentsMdBanner(acpMode bool, window int) (string, []string) {
33 case agentsmd.Loaded:34 case agentsmd.Loaded:
34 return fmt.Sprintf(" | agents.md: %s (~%d tokens)", f.Path, f.Tokens()), largeAgentsMdWarning(f, window)35 return fmt.Sprintf(" | agents.md: %s (~%d tokens)", f.Path, f.Tokens()), largeAgentsMdWarning(f, window)
35 case agentsmd.Ignored:36 case agentsmd.Ignored:
36- // Neutral, not a warning: a structured agent skips it on purpose.37+ // Neutral, not a warning: a structured agent and a decider skip it
37- return " | agents.md: ignored (structured output)", nil38+ // on purpose.
39+ return " | agents.md: ignored (" + ignoredBecause() + ")", nil
38 case agentsmd.Skipped:40 case agentsmd.Skipped:
39 return " | agents.md: skipped (too long)", []string{fmt.Sprintf(41 return " | agents.md: skipped (too long)", []string{fmt.Sprintf(
40 "%s skipped: %d characters > agentsMd.maxChars %d — it is not read at all (shorten it, or raise the limit)",42 "%s skipped: %d characters > agentsMd.maxChars %d — it is not read at all (shorten it, or raise the limit)",
@@ -55,3 +57,11 @@ func largeAgentsMdWarning(f agentsmd.File, window int) []string {
55 "%s is ~%d tokens, %d %% of the %d-token context window — every request carries it (shorten it, or set agentsMd.maxChars)",57 "%s is ~%d tokens, %d %% of the %d-token context window — every request carries it (shorten it, or set agentsMd.maxChars)",
56 f.Path, f.Tokens(), f.Tokens()*100/window, window)}58 f.Path, f.Tokens(), f.Tokens()*100/window, window)}
57 }59 }
60+
61+// ignoredBecause names, for the banner, the kind of agent that skips AGENTS.md.
62+func ignoredBecause() string {
63+ if config.Cfg.Decision != nil {
64+ return "decision model"
65+ }
66+ return "structured output"
67+}
modified agentsmd_banner_test.go +23 -0
@@ -87,3 +87,26 @@ func TestBannerInACPModeSaysWhereEachSessionLooks(t *testing.T) {
8787 t.Errorf("column %q", col)
8888 }
8989 }
90+
91+// A decider never sends AGENTS.md: the banner says it is ignored, in the
92+// terminal and in an editor alike, with no warning about its size.
93+func TestBannerSaysADeciderIgnoresTheFile(t *testing.T) {
94+ inProject(t, strings.Repeat("a", 700), agentsMdOn)
95+ saved := config.Cfg.Decision
96+ t.Cleanup(func() { config.Cfg.Decision = saved })
97+ config.Cfg.Decision = &config.DecisionConfig{}
98+ for _, acp := range []bool{false, true} {
99+ col, warnings := agentsMdBanner(acp, 1000)
100+ if col != " | agents.md: ignored (decision model)" || len(warnings) != 0 {
101+ t.Errorf("acp=%v: column %q, warnings %v", acp, col, warnings)
102+ }
103+ }
104+}
105+
106+func TestBannerSaysAStructuredAgentIgnoresTheFile(t *testing.T) {
107+ inProject(t, "rules", agentsMdOn)
108+ config.Cfg.OutputSchema = map[string]any{"type": "object"}
109+ if col, _ := agentsMdBanner(false, 0); col != " | agents.md: ignored (structured output)" {
110+ t.Errorf("column %q", col)
111+ }
112+}
@@ -87,3 +87,26 @@ func TestBannerInACPModeSaysWhereEachSessionLooks(t *testing.T) {
87 t.Errorf("column %q", col)87 t.Errorf("column %q", col)
88 }88 }
89 }89 }
90+
91+// A decider never sends AGENTS.md: the banner says it is ignored, in the
92+// terminal and in an editor alike, with no warning about its size.
93+func TestBannerSaysADeciderIgnoresTheFile(t *testing.T) {
94+ inProject(t, strings.Repeat("a", 700), agentsMdOn)
95+ saved := config.Cfg.Decision
96+ t.Cleanup(func() { config.Cfg.Decision = saved })
97+ config.Cfg.Decision = &config.DecisionConfig{}
98+ for _, acp := range []bool{false, true} {
99+ col, warnings := agentsMdBanner(acp, 1000)
100+ if col != " | agents.md: ignored (decision model)" || len(warnings) != 0 {
101+ t.Errorf("acp=%v: column %q, warnings %v", acp, col, warnings)
102+ }
103+ }
104+}
105+
106+func TestBannerSaysAStructuredAgentIgnoresTheFile(t *testing.T) {
107+ inProject(t, "rules", agentsMdOn)
108+ config.Cfg.OutputSchema = map[string]any{"type": "object"}
109+ if col, _ := agentsMdBanner(false, 0); col != " | agents.md: ignored (structured output)" {
110+ t.Errorf("column %q", col)
111+ }
112+}
modified demos/decision-ask-check/agent.decider.yaml +2 -4
@@ -15,8 +15,6 @@ decision:
1515 type: noul
1616 instructions: The answer addresses the question that was asked.
1717
18-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
19-# skills off by itself (no `…: false` lines needed).
20-agentsMd:
21- enabled: false
18+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
19+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
2220
@@ -15,8 +15,6 @@ decision:
15 type: noul15 type: noul
16 instructions: The answer addresses the question that was asked.16 instructions: The answer addresses the question that was asked.
17 17
18-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and18+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
19-# skills off by itself (no `…: false` lines needed).19+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
20-agentsMd:
21- enabled: false
22 20
modified demos/decision-chat-golang/agent.decider.yaml +2 -4
@@ -38,7 +38,5 @@ decision:
3838 type: noul
3939 instructions: The message asks for code, an example, a function or a snippet.
4040
41-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
42-# skills off by itself (no `…: false` lines needed).
43-agentsMd:
44- enabled: false
41+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
42+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
@@ -38,7 +38,5 @@ decision:
38 type: noul38 type: noul
39 instructions: The message asks for code, an example, a function or a snippet.39 instructions: The message asks for code, an example, a function or a snippet.
40 40
41-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and41+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
42-# skills off by itself (no `…: false` lines needed).42+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
43-agentsMd:
44- enabled: false
modified demos/decision-chat/agent.decider.yaml +2 -4
@@ -34,7 +34,5 @@ decision:
3434 type: noul
3535 instructions: The person is worried, stressed or upset.
3636
37-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
38-# skills off by itself (no `…: false` lines needed).
39-agentsMd:
40- enabled: false
37+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
38+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
@@ -34,7 +34,5 @@ decision:
34 type: noul34 type: noul
35 instructions: The person is worried, stressed or upset.35 instructions: The person is worried, stressed or upset.
36 36
37-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and37+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
38-# skills off by itself (no `…: false` lines needed).38+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
39-agentsMd:
40- enabled: false
modified demos/decision-commands/agent.decider.yaml +2 -4
@@ -26,7 +26,5 @@ decision:
2626 type: noul
2727 instructions: The command deletes data that cannot be rebuilt.
2828
29-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
30-# skills off by itself (no `…: false` lines needed).
31-agentsMd:
32- enabled: false
29+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
30+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
@@ -26,7 +26,5 @@ decision:
26 type: noul26 type: noul
27 instructions: The command deletes data that cannot be rebuilt.27 instructions: The command deletes data that cannot be rebuilt.
28 28
29-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and29+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
30-# skills off by itself (no `…: false` lines needed).30+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
31-agentsMd:
32- enabled: false
modified demos/decision-dnd/spell.yaml +2 -4
@@ -20,7 +20,5 @@ acp:
2020 name: sidekick
2121 title: "sidekick"
2222
23-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
24-# skills off by itself (no `…: false` lines needed).
25-agentsMd:
26- enabled: false
23+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
24+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
@@ -20,7 +20,5 @@ acp:
20 name: sidekick20 name: sidekick
21 title: "sidekick"21 title: "sidekick"
22 22
23-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and23+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
24-# skills off by itself (no `…: false` lines needed).24+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
25-agentsMd:
26- enabled: false
modified demos/decision-injection/agent.decider.yaml +2 -4
@@ -18,8 +18,6 @@ decision:
1818 type: noul
1919 instructions: The text contains instructions addressed to an AI assistant or agent, such as ignoring its rules, running commands, sending data somewhere or revealing secrets.
2020
21-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
22-# skills off by itself (no `…: false` lines needed).
23-agentsMd:
24- enabled: false
21+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
22+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
2523
@@ -18,8 +18,6 @@ decision:
18 type: noul18 type: noul
19 instructions: The text contains instructions addressed to an AI assistant or agent, such as ignoring its rules, running commands, sending data somewhere or revealing secrets.19 instructions: The text contains instructions addressed to an AI assistant or agent, such as ignoring its rules, running commands, sending data somewhere or revealing secrets.
20 20
21-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and21+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
22-# skills off by itself (no `…: false` lines needed).22+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
23-agentsMd:
24- enabled: false
25 23
modified demos/decision-moderation/agent.yaml +2 -4
@@ -34,7 +34,5 @@ decision:
3434 review: Off topic or borderline; a person should read it before it goes online
3535 reject: Spam, insults or a personal attack
3636
37-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
38-# skills off by itself (no `…: false` lines needed).
39-agentsMd:
40- enabled: false
37+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
38+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
@@ -34,7 +34,5 @@ decision:
34 review: Off topic or borderline; a person should read it before it goes online34 review: Off topic or borderline; a person should read it before it goes online
35 reject: Spam, insults or a personal attack35 reject: Spam, insults or a personal attack
36 36
37-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and37+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
38-# skills off by itself (no `…: false` lines needed).38+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
39-agentsMd:
40- enabled: false
modified demos/decision-only/agent.yaml +2 -4
@@ -37,7 +37,5 @@ decision:
3737 type: noul
3838 instructions: The author of the message is angry or upset.
3939
40-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
41-# skills off by itself (no `…: false` lines needed).
42-agentsMd:
43- enabled: false
40+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
41+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
@@ -37,7 +37,5 @@ decision:
37 type: noul37 type: noul
38 instructions: The author of the message is angry or upset.38 instructions: The author of the message is angry or upset.
39 39
40-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and40+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
41-# skills off by itself (no `…: false` lines needed).41+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
42-agentsMd:
43- enabled: false
modified demos/decision-questions/dice421.yaml +2 -4
@@ -20,7 +20,5 @@ decision:
2020 two: Two dice are missing
2121 all: All three are missing
2222
23-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
24-# skills off by itself (no `…: false` lines needed).
25-agentsMd:
26- enabled: false
23+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
24+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
@@ -20,7 +20,5 @@ decision:
20 two: Two dice are missing20 two: Two dice are missing
21 all: All three are missing21 all: All three are missing
22 22
23-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and23+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
24-# skills off by itself (no `…: false` lines needed).24+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
25-agentsMd:
26- enabled: false
modified demos/decision-questions/fight.yaml +2 -4
@@ -26,7 +26,5 @@ decision:
2626 type: noul
2727 instructions: My character is badly hurt.
2828
29-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
30-# skills off by itself (no `…: false` lines needed).
31-agentsMd:
32- enabled: false
29+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
30+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
@@ -26,7 +26,5 @@ decision:
26 type: noul26 type: noul
27 instructions: My character is badly hurt.27 instructions: My character is badly hurt.
28 28
29-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and29+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
30-# skills off by itself (no `…: false` lines needed).30+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
31-agentsMd:
32- enabled: false
modified demos/decision-questions/spell.yaml +2 -4
@@ -21,7 +21,5 @@ decision:
2121 misty_step: I am surrounded or grabbed and must get away
2222 sleep: Several weak enemies, and we would rather not kill them
2323
24-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
25-# skills off by itself (no `…: false` lines needed).
26-agentsMd:
27- enabled: false
24+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
25+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
@@ -21,7 +21,5 @@ decision:
21 misty_step: I am surrounded or grabbed and must get away21 misty_step: I am surrounded or grabbed and must get away
22 sleep: Several weak enemies, and we would rather not kill them22 sleep: Several weak enemies, and we would rather not kill them
23 23
24-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and24+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
25-# skills off by itself (no `…: false` lines needed).25+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
26-agentsMd:
27- enabled: false
modified demos/decision-questions/symptoms.yaml +2 -4
@@ -27,7 +27,5 @@ decision:
2727 specialist: A known long-term condition followed by a specialist
2828 emergency: A problem that cannot wait
2929
30-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
31-# skills off by itself (no `…: false` lines needed).
32-agentsMd:
33- enabled: false
30+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
31+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
@@ -27,7 +27,5 @@ decision:
27 specialist: A known long-term condition followed by a specialist27 specialist: A known long-term condition followed by a specialist
28 emergency: A problem that cannot wait28 emergency: A problem that cannot wait
29 29
30-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and30+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
31-# skills off by itself (no `…: false` lines needed).31+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
32-agentsMd:
33- enabled: false
modified demos/decision-reviews/agent.yaml +2 -4
@@ -37,7 +37,5 @@ decision:
3737 type: noul
3838 instructions: The author would recommend this product to a friend.
3939
40-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
41-# skills off by itself (no `…: false` lines needed).
42-agentsMd:
43- enabled: false
40+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
41+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
@@ -37,7 +37,5 @@ decision:
37 type: noul37 type: noul
38 instructions: The author would recommend this product to a friend.38 instructions: The author would recommend this product to a friend.
39 39
40-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and40+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
41-# skills off by itself (no `…: false` lines needed).41+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
42-agentsMd:
43- enabled: false
modified demos/decision-skills/agent.decider.yaml +2 -4
@@ -37,7 +37,5 @@ decision:
3737 instructions: How carefully should a person review this command before it runs?
3838 criteria: [no review needed, a quick look, a careful review]
3939
40-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
41-# skills off by itself (no `…: false` lines needed).
42-agentsMd:
43- enabled: false
40+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
41+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
@@ -37,7 +37,5 @@ decision:
37 instructions: How carefully should a person review this command before it runs?37 instructions: How carefully should a person review this command before it runs?
38 criteria: [no review needed, a quick look, a careful review]38 criteria: [no review needed, a quick look, a careful review]
39 39
40-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and40+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
41-# skills off by itself (no `…: false` lines needed).41+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
42-agentsMd:
43- enabled: false
modified demos/decision-tool-errors/agent.decider.yaml +2 -4
@@ -23,8 +23,6 @@ decision:
2323 nothing-found: The command worked but found nothing or reported differences
2424 error: The output shows an error, an exception or a failed test
2525
26-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
27-# skills off by itself (no `…: false` lines needed).
28-agentsMd:
29- enabled: false
26+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
27+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
3028
@@ -23,8 +23,6 @@ decision:
23 nothing-found: The command worked but found nothing or reported differences23 nothing-found: The command worked but found nothing or reported differences
24 error: The output shows an error, an exception or a failed test24 error: The output shows an error, an exception or a failed test
25 25
26-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and26+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
27-# skills off by itself (no `…: false` lines needed).27+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
28-agentsMd:
29- enabled: false
30 28
modified docs/en/explanation/project-instructions.md +1 -0
@@ -29,6 +29,7 @@ The system message is sent with every request and occupies the context window fo
2929 ## Agents that do not read it
3030
3131 - **JSON agents** (`structuredOutput`): prose instructions ("end every answer with a signature") would fight the JSON constraint, and a signature appended to the JSON would break every script reading it. The banner mentions the ignored file neutrally, since it is intended.
32+- **Deciders** (`decision:`): a decision model receives the state alone — no system prompt, so no place for project instructions. The banner says the file is ignored rather than claiming it was loaded, and a decider file does not have to turn it off.
3233 - **Agents called by another one** (`/ask`, `ask_agent`, `mm --ask`): they run as their own `mm` process with their own configuration, and read the file of the working directory they are given only when their own `agentsMd.enabled` says so. A reviewer with no tools can turn it off; a coding helper keeps it and follows the same rules as the agent that called it.
3334
3435 ## How it relates to the rest
@@ -29,6 +29,7 @@ The system message is sent with every request and occupies the context window fo
29 ## Agents that do not read it29 ## Agents that do not read it
30 30
31 - **JSON agents** (`structuredOutput`): prose instructions ("end every answer with a signature") would fight the JSON constraint, and a signature appended to the JSON would break every script reading it. The banner mentions the ignored file neutrally, since it is intended.31 - **JSON agents** (`structuredOutput`): prose instructions ("end every answer with a signature") would fight the JSON constraint, and a signature appended to the JSON would break every script reading it. The banner mentions the ignored file neutrally, since it is intended.
32+- **Deciders** (`decision:`): a decision model receives the state alone — no system prompt, so no place for project instructions. The banner says the file is ignored rather than claiming it was loaded, and a decider file does not have to turn it off.
32 - **Agents called by another one** (`/ask`, `ask_agent`, `mm --ask`): they run as their own `mm` process with their own configuration, and read the file of the working directory they are given only when their own `agentsMd.enabled` says so. A reviewer with no tools can turn it off; a coding helper keeps it and follows the same rules as the agent that called it.33 - **Agents called by another one** (`/ask`, `ask_agent`, `mm --ask`): they run as their own `mm` process with their own configuration, and read the file of the working directory they are given only when their own `agentsMd.enabled` says so. A reviewer with no tools can turn it off; a coding helper keeps it and follows the same rules as the agent that called it.
33 34
34 ## How it relates to the rest35 ## How it relates to the rest
modified docs/en/how-to/ask-a-decision-model.md +1 -3
@@ -39,9 +39,7 @@ decision:
3939 instructions: How carefully should a person review this command before it runs?
4040 criteria: [no review needed, a quick look, a careful review]
4141
42-# A decider gets no tool: mm turns them off by itself.
43-agentsMd:
44- enabled: false
42+# A decider gets no tool and ignores AGENTS.md: mm handles both by itself.
4543 ```
4644
4745 The message you send is the state the questions are about. Write the instructions in English: that is what the models seen so far were trained on.
@@ -39,9 +39,7 @@ decision:
39 instructions: How carefully should a person review this command before it runs?39 instructions: How carefully should a person review this command before it runs?
40 criteria: [no review needed, a quick look, a careful review]40 criteria: [no review needed, a quick look, a careful review]
41 41
42-# A decider gets no tool: mm turns them off by itself.42+# A decider gets no tool and ignores AGENTS.md: mm handles both by itself.
43-agentsMd:
44- enabled: false
45 ```43 ```
46 44
47 The message you send is the state the questions are about. Write the instructions in English: that is what the models seen so far were trained on.45 The message you send is the state the questions are about. Write the instructions in English: that is what the models seen so far were trained on.
modified docs/en/how-to/give-project-instructions.md +1 -0
@@ -34,6 +34,7 @@ This guide shows how to make mm follow the rules of the project it works in —
3434 - **A long file on a small model**: the banner warns when the file takes 20 % of the context window or more. Shorten it, or set `agentsMd: {maxChars: 8000}` — above the limit, the file is not read at all (the banner says `skipped (too long)`); it is never cut in the middle.
3535 - **In an editor (ACP)**: each session reads the `AGENTS.md` of the project it was opened in; the banner, printed before any session exists, shows `agents.md: <session cwd>/AGENTS.md`.
3636 - **A JSON agent** (`structuredOutput`) never reads the file; the banner shows `agents.md: ignored (structured output)`.
37+- **A decider** (`decision:`) never sends the file to its model; the banner shows `agents.md: ignored (decision model)`, in an editor too. Its file needs no `agentsMd: {enabled: false}`.
3738
3839 ## Check what the model received
3940
@@ -34,6 +34,7 @@ This guide shows how to make mm follow the rules of the project it works in —
34 - **A long file on a small model**: the banner warns when the file takes 20 % of the context window or more. Shorten it, or set `agentsMd: {maxChars: 8000}` — above the limit, the file is not read at all (the banner says `skipped (too long)`); it is never cut in the middle.34 - **A long file on a small model**: the banner warns when the file takes 20 % of the context window or more. Shorten it, or set `agentsMd: {maxChars: 8000}` — above the limit, the file is not read at all (the banner says `skipped (too long)`); it is never cut in the middle.
35 - **In an editor (ACP)**: each session reads the `AGENTS.md` of the project it was opened in; the banner, printed before any session exists, shows `agents.md: <session cwd>/AGENTS.md`.35 - **In an editor (ACP)**: each session reads the `AGENTS.md` of the project it was opened in; the banner, printed before any session exists, shows `agents.md: <session cwd>/AGENTS.md`.
36 - **A JSON agent** (`structuredOutput`) never reads the file; the banner shows `agents.md: ignored (structured output)`.36 - **A JSON agent** (`structuredOutput`) never reads the file; the banner shows `agents.md: ignored (structured output)`.
37+- **A decider** (`decision:`) never sends the file to its model; the banner shows `agents.md: ignored (decision model)`, in an editor too. Its file needs no `agentsMd: {enabled: false}`.
37 38
38 ## Check what the model received39 ## Check what the model received
39 40
modified docs/en/how-to/write-decision-questions.md +8 -16
@@ -119,10 +119,8 @@ decision:
119119 specialist: A known long-term condition followed by a specialist
120120 emergency: A problem that cannot wait
121121
122-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
123-# skills off by itself (no `…: false` lines needed).
124-agentsMd:
125- enabled: false
122+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
123+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
126124 ```
127125
128126 | Ticket | severity | red_flag | who |
@@ -160,10 +158,8 @@ decision:
160158 two: Two dice are missing
161159 all: All three are missing
162160
163-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
164-# skills off by itself (no `…: false` lines needed).
165-agentsMd:
166- enabled: false
161+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
162+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
167163 ```
168164
169165 | State sent | reroll |
@@ -204,10 +200,8 @@ decision:
204200 misty_step: I am surrounded or grabbed and must get away
205201 sleep: Several weak enemies, and we would rather not kill them
206202
207-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
208-# skills off by itself (no `…: false` lines needed).
209-agentsMd:
210- enabled: false
203+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
204+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
211205 ```
212206
213207 | Situation | spell |
@@ -252,10 +246,8 @@ decision:
252246 type: noul
253247 instructions: My character is badly hurt.
254248
255-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
256-# skills off by itself (no `…: false` lines needed).
257-agentsMd:
258- enabled: false
249+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
250+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
259251 ```
260252
261253 | Situation | action | danger | hurt |
@@ -119,10 +119,8 @@ decision:
119 specialist: A known long-term condition followed by a specialist119 specialist: A known long-term condition followed by a specialist
120 emergency: A problem that cannot wait120 emergency: A problem that cannot wait
121 121
122-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and122+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
123-# skills off by itself (no `…: false` lines needed).123+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
124-agentsMd:
125- enabled: false
126 ```124 ```
127 125
128 | Ticket | severity | red_flag | who |126 | Ticket | severity | red_flag | who |
@@ -160,10 +158,8 @@ decision:
160 two: Two dice are missing158 two: Two dice are missing
161 all: All three are missing159 all: All three are missing
162 160
163-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and161+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
164-# skills off by itself (no `…: false` lines needed).162+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
165-agentsMd:
166- enabled: false
167 ```163 ```
168 164
169 | State sent | reroll |165 | State sent | reroll |
@@ -204,10 +200,8 @@ decision:
204 misty_step: I am surrounded or grabbed and must get away200 misty_step: I am surrounded or grabbed and must get away
205 sleep: Several weak enemies, and we would rather not kill them201 sleep: Several weak enemies, and we would rather not kill them
206 202
207-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and203+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
208-# skills off by itself (no `…: false` lines needed).204+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
209-agentsMd:
210- enabled: false
211 ```205 ```
212 206
213 | Situation | spell |207 | Situation | spell |
@@ -252,10 +246,8 @@ decision:
252 type: noul246 type: noul
253 instructions: My character is badly hurt.247 instructions: My character is badly hurt.
254 248
255-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and249+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
256-# skills off by itself (no `…: false` lines needed).250+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
257-agentsMd:
258- enabled: false
259 ```251 ```
260 252
261 | Situation | action | danger | hurt |253 | Situation | action | danger | hurt |
modified docs/en/reference/configuration.md +2 -1
@@ -280,7 +280,8 @@ When the block is present:
280280
281281 - no tool is declared, whatever `bashTool`, `editTools`, `planTool`, `askUserTool`, `fetchContentTool`, `saveAnswerTool`, `unloadModels`, `skillsDir`, `docSearch` and `sessions` say: the file needs no `…: false` line (`/unload` remains);
282282 - `mcp.enabled: true`, `lsp.servers`, `mmConfigs` or `tools:` stop the start-up with an error, before any server is started;
283-- the banner shows `tools: none (decision model: <n> question(s))` and no "no skills" / "no tool" warning.
283+- the banner shows `tools: none (decision model: <n> question(s))` and no "no skills" / "no tool" warning;
284+- `AGENTS.md` is not sent, whatever `agentsMd` says; the banner shows `agents.md: ignored (decision model)` when the file exists.
284285
285286 Example:
286287
@@ -280,7 +280,8 @@ When the block is present:
280 280
281 - no tool is declared, whatever `bashTool`, `editTools`, `planTool`, `askUserTool`, `fetchContentTool`, `saveAnswerTool`, `unloadModels`, `skillsDir`, `docSearch` and `sessions` say: the file needs no `…: false` line (`/unload` remains);281 - no tool is declared, whatever `bashTool`, `editTools`, `planTool`, `askUserTool`, `fetchContentTool`, `saveAnswerTool`, `unloadModels`, `skillsDir`, `docSearch` and `sessions` say: the file needs no `…: false` line (`/unload` remains);
282 - `mcp.enabled: true`, `lsp.servers`, `mmConfigs` or `tools:` stop the start-up with an error, before any server is started;282 - `mcp.enabled: true`, `lsp.servers`, `mmConfigs` or `tools:` stop the start-up with an error, before any server is started;
283-- the banner shows `tools: none (decision model: <n> question(s))` and no "no skills" / "no tool" warning.283+- the banner shows `tools: none (decision model: <n> question(s))` and no "no skills" / "no tool" warning;
284+- `AGENTS.md` is not sent, whatever `agentsMd` says; the banner shows `agents.md: ignored (decision model)` when the file exists.
284 285
285 Example:286 Example:
286 287
modified docs/fr/explanation/project-instructions.md +1 -0
@@ -29,6 +29,7 @@ Le message système part avec chaque requête et occupe la fenêtre de contexte
2929 ## Les agents qui ne le lisent pas
3030
3131 - **Les agents JSON** (`structuredOutput`) : des consignes en prose (« termine chaque réponse par une signature ») contrediraient la contrainte JSON, et une signature ajoutée au JSON casserait tout script qui le lit. La bannière mentionne le fichier ignoré de façon neutre, puisque c'est voulu.
32+- **Les décideurs** (`decision:`) : un modèle de décision reçoit l'état seul — pas de prompt système, donc pas de place pour des consignes de projet. La bannière dit que le fichier est ignoré au lieu de prétendre qu'il est chargé, et le fichier d'un décideur n'a pas à le désactiver.
3233 - **Les agents appelés par un autre** (`/ask`, `ask_agent`, `mm --ask`) : ils tournent comme leur propre processus `mm` avec leur propre configuration, et ne lisent le fichier du répertoire de travail qu'on leur donne que si leur propre `agentsMd.enabled` le dit. Un relecteur sans outils peut le désactiver ; un assistant de code le garde et suit les mêmes règles que l'agent qui l'a appelé.
3334
3435 ## Liens avec le reste
@@ -29,6 +29,7 @@ Le message système part avec chaque requête et occupe la fenêtre de contexte
29 ## Les agents qui ne le lisent pas29 ## Les agents qui ne le lisent pas
30 30
31 - **Les agents JSON** (`structuredOutput`) : des consignes en prose (« termine chaque réponse par une signature ») contrediraient la contrainte JSON, et une signature ajoutée au JSON casserait tout script qui le lit. La bannière mentionne le fichier ignoré de façon neutre, puisque c'est voulu.31 - **Les agents JSON** (`structuredOutput`) : des consignes en prose (« termine chaque réponse par une signature ») contrediraient la contrainte JSON, et une signature ajoutée au JSON casserait tout script qui le lit. La bannière mentionne le fichier ignoré de façon neutre, puisque c'est voulu.
32+- **Les décideurs** (`decision:`) : un modèle de décision reçoit l'état seul — pas de prompt système, donc pas de place pour des consignes de projet. La bannière dit que le fichier est ignoré au lieu de prétendre qu'il est chargé, et le fichier d'un décideur n'a pas à le désactiver.
32 - **Les agents appelés par un autre** (`/ask`, `ask_agent`, `mm --ask`) : ils tournent comme leur propre processus `mm` avec leur propre configuration, et ne lisent le fichier du répertoire de travail qu'on leur donne que si leur propre `agentsMd.enabled` le dit. Un relecteur sans outils peut le désactiver ; un assistant de code le garde et suit les mêmes règles que l'agent qui l'a appelé.33 - **Les agents appelés par un autre** (`/ask`, `ask_agent`, `mm --ask`) : ils tournent comme leur propre processus `mm` avec leur propre configuration, et ne lisent le fichier du répertoire de travail qu'on leur donne que si leur propre `agentsMd.enabled` le dit. Un relecteur sans outils peut le désactiver ; un assistant de code le garde et suit les mêmes règles que l'agent qui l'a appelé.
33 34
34 ## Liens avec le reste35 ## Liens avec le reste
modified docs/fr/how-to/ask-a-decision-model.md +1 -3
@@ -39,9 +39,7 @@ decision:
3939 instructions: How carefully should a person review this command before it runs?
4040 criteria: [no review needed, a quick look, a careful review]
4141
42-# Un décideur n'a aucun outil : mm les désactive lui-même.
43-agentsMd:
44- enabled: false
42+# Un décideur n'a aucun outil et ignore AGENTS.md : mm s'en charge lui-même.
4543 ```
4644
4745 Le message que vous envoyez est l'état sur lequel portent les questions. Écrivez les instructions en anglais : c'est la langue d'entraînement des modèles vus jusqu'ici.
@@ -39,9 +39,7 @@ decision:
39 instructions: How carefully should a person review this command before it runs?39 instructions: How carefully should a person review this command before it runs?
40 criteria: [no review needed, a quick look, a careful review]40 criteria: [no review needed, a quick look, a careful review]
41 41
42-# Un décideur n'a aucun outil : mm les désactive lui-même.42+# Un décideur n'a aucun outil et ignore AGENTS.md : mm s'en charge lui-même.
43-agentsMd:
44- enabled: false
45 ```43 ```
46 44
47 Le message que vous envoyez est l'état sur lequel portent les questions. Écrivez les instructions en anglais : c'est la langue d'entraînement des modèles vus jusqu'ici.45 Le message que vous envoyez est l'état sur lequel portent les questions. Écrivez les instructions en anglais : c'est la langue d'entraînement des modèles vus jusqu'ici.
modified docs/fr/how-to/give-project-instructions.md +1 -0
@@ -34,6 +34,7 @@ Ce guide montre comment faire suivre à mm les règles du projet dans lequel il
3434 - **Un long fichier sur un petit modèle** : la bannière avertit quand le fichier occupe 20 % ou plus de la fenêtre de contexte. Raccourcissez-le, ou fixez `agentsMd: {maxChars: 8000}` — au-delà de la limite, le fichier n'est pas lu du tout (la bannière indique `skipped (too long)`) ; il n'est jamais coupé au milieu.
3535 - **Dans un éditeur (ACP)** : chaque session lit le `AGENTS.md` du projet dans lequel elle a été ouverte ; la bannière, affichée avant toute session, indique `agents.md: <session cwd>/AGENTS.md`.
3636 - **Un agent JSON** (`structuredOutput`) ne lit jamais le fichier ; la bannière indique `agents.md: ignored (structured output)`.
37+- **Un décideur** (`decision:`) n'envoie jamais le fichier à son modèle ; la bannière indique `agents.md: ignored (decision model)`, dans un éditeur aussi. Son fichier n'a pas besoin de `agentsMd: {enabled: false}`.
3738
3839 ## Vérifier ce que le modèle a reçu
3940
@@ -34,6 +34,7 @@ Ce guide montre comment faire suivre à mm les règles du projet dans lequel il
34 - **Un long fichier sur un petit modèle** : la bannière avertit quand le fichier occupe 20 % ou plus de la fenêtre de contexte. Raccourcissez-le, ou fixez `agentsMd: {maxChars: 8000}` — au-delà de la limite, le fichier n'est pas lu du tout (la bannière indique `skipped (too long)`) ; il n'est jamais coupé au milieu.34 - **Un long fichier sur un petit modèle** : la bannière avertit quand le fichier occupe 20 % ou plus de la fenêtre de contexte. Raccourcissez-le, ou fixez `agentsMd: {maxChars: 8000}` — au-delà de la limite, le fichier n'est pas lu du tout (la bannière indique `skipped (too long)`) ; il n'est jamais coupé au milieu.
35 - **Dans un éditeur (ACP)** : chaque session lit le `AGENTS.md` du projet dans lequel elle a été ouverte ; la bannière, affichée avant toute session, indique `agents.md: <session cwd>/AGENTS.md`.35 - **Dans un éditeur (ACP)** : chaque session lit le `AGENTS.md` du projet dans lequel elle a été ouverte ; la bannière, affichée avant toute session, indique `agents.md: <session cwd>/AGENTS.md`.
36 - **Un agent JSON** (`structuredOutput`) ne lit jamais le fichier ; la bannière indique `agents.md: ignored (structured output)`.36 - **Un agent JSON** (`structuredOutput`) ne lit jamais le fichier ; la bannière indique `agents.md: ignored (structured output)`.
37+- **Un décideur** (`decision:`) n'envoie jamais le fichier à son modèle ; la bannière indique `agents.md: ignored (decision model)`, dans un éditeur aussi. Son fichier n'a pas besoin de `agentsMd: {enabled: false}`.
37 38
38 ## Vérifier ce que le modèle a reçu39 ## Vérifier ce que le modèle a reçu
39 40
modified docs/fr/how-to/write-decision-questions.md +8 -16
@@ -121,10 +121,8 @@ decision:
121121 specialist: A known long-term condition followed by a specialist
122122 emergency: A problem that cannot wait
123123
124-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
125-# skills off by itself (no `…: false` lines needed).
126-agentsMd:
127- enabled: false
124+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
125+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
128126 ```
129127
130128 | Ticket | severity | red_flag | who |
@@ -162,10 +160,8 @@ decision:
162160 two: Two dice are missing
163161 all: All three are missing
164162
165-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
166-# skills off by itself (no `…: false` lines needed).
167-agentsMd:
168- enabled: false
163+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
164+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
169165 ```
170166
171167 | État envoyé | reroll |
@@ -206,10 +202,8 @@ decision:
206202 misty_step: I am surrounded or grabbed and must get away
207203 sleep: Several weak enemies, and we would rather not kill them
208204
209-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
210-# skills off by itself (no `…: false` lines needed).
211-agentsMd:
212- enabled: false
205+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
206+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
213207 ```
214208
215209 | Situation | spell |
@@ -254,10 +248,8 @@ decision:
254248 type: noul
255249 instructions: My character is badly hurt.
256250
257-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and
258-# skills off by itself (no `…: false` lines needed).
259-agentsMd:
260- enabled: false
251+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
252+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
261253 ```
262254
263255 | Situation | action | danger | hurt |
@@ -121,10 +121,8 @@ decision:
121 specialist: A known long-term condition followed by a specialist121 specialist: A known long-term condition followed by a specialist
122 emergency: A problem that cannot wait122 emergency: A problem that cannot wait
123 123
124-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and124+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
125-# skills off by itself (no `…: false` lines needed).125+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
126-agentsMd:
127- enabled: false
128 ```126 ```
129 127
130 | Ticket | severity | red_flag | who |128 | Ticket | severity | red_flag | who |
@@ -162,10 +160,8 @@ decision:
162 two: Two dice are missing160 two: Two dice are missing
163 all: All three are missing161 all: All three are missing
164 162
165-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and163+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
166-# skills off by itself (no `…: false` lines needed).164+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
167-agentsMd:
168- enabled: false
169 ```165 ```
170 166
171 | État envoyé | reroll |167 | État envoyé | reroll |
@@ -206,10 +202,8 @@ decision:
206 misty_step: I am surrounded or grabbed and must get away202 misty_step: I am surrounded or grabbed and must get away
207 sleep: Several weak enemies, and we would rather not kill them203 sleep: Several weak enemies, and we would rather not kill them
208 204
209-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and205+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
210-# skills off by itself (no `…: false` lines needed).206+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
211-agentsMd:
212- enabled: false
213 ```207 ```
214 208
215 | Situation | spell |209 | Situation | spell |
@@ -254,10 +248,8 @@ decision:
254 type: noul248 type: noul
255 instructions: My character is badly hurt.249 instructions: My character is badly hurt.
256 250
257-# A decider gets no tool: mm turns bash, the file tools, plan, ask_user and251+# A decider gets no tool and ignores AGENTS.md: mm turns bash, the file tools,
258-# skills off by itself (no `…: false` lines needed).252+# plan, ask_user, skills and AGENTS.md off by itself (no `…: false` lines needed).
259-agentsMd:
260- enabled: false
261 ```253 ```
262 254
263 | Situation | action | danger | hurt |255 | Situation | action | danger | hurt |
modified docs/fr/reference/configuration.md +2 -1
@@ -280,7 +280,8 @@ Quand le bloc est présent :
280280
281281 - aucun outil n'est déclaré, quoi que disent `bashTool`, `editTools`, `planTool`, `askUserTool`, `fetchContentTool`, `saveAnswerTool`, `unloadModels`, `skillsDir`, `docSearch` et `sessions` : le fichier n'a besoin d'aucune ligne `…: false` (`/unload` reste) ;
282282 - `mcp.enabled: true`, `lsp.servers`, `mmConfigs` ou `tools:` arrêtent le démarrage avec une erreur, avant qu'aucun serveur ne soit lancé ;
283-- la bannière affiche `tools: none (decision model: <n> question(s))` et aucun avertissement « no skills » / « no tool ».
283+- la bannière affiche `tools: none (decision model: <n> question(s))` et aucun avertissement « no skills » / « no tool » ;
284+- `AGENTS.md` n'est pas envoyé, quoi que dise `agentsMd` ; la bannière affiche `agents.md: ignored (decision model)` quand le fichier existe.
284285
285286 Exemple :
286287
@@ -280,7 +280,8 @@ Quand le bloc est présent :
280 280
281 - aucun outil n'est déclaré, quoi que disent `bashTool`, `editTools`, `planTool`, `askUserTool`, `fetchContentTool`, `saveAnswerTool`, `unloadModels`, `skillsDir`, `docSearch` et `sessions` : le fichier n'a besoin d'aucune ligne `…: false` (`/unload` reste) ;281 - aucun outil n'est déclaré, quoi que disent `bashTool`, `editTools`, `planTool`, `askUserTool`, `fetchContentTool`, `saveAnswerTool`, `unloadModels`, `skillsDir`, `docSearch` et `sessions` : le fichier n'a besoin d'aucune ligne `…: false` (`/unload` reste) ;
282 - `mcp.enabled: true`, `lsp.servers`, `mmConfigs` ou `tools:` arrêtent le démarrage avec une erreur, avant qu'aucun serveur ne soit lancé ;282 - `mcp.enabled: true`, `lsp.servers`, `mmConfigs` ou `tools:` arrêtent le démarrage avec une erreur, avant qu'aucun serveur ne soit lancé ;
283-- la bannière affiche `tools: none (decision model: <n> question(s))` et aucun avertissement « no skills » / « no tool ».283+- la bannière affiche `tools: none (decision model: <n> question(s))` et aucun avertissement « no skills » / « no tool » ;
284+- `AGENTS.md` n'est pas envoyé, quoi que dise `agentsMd` ; la bannière affiche `agents.md: ignored (decision model)` quand le fichier existe.
284 285
285 Exemple :286 Exemple :
286 287
modified internal/agentsmd/agentsmd.go +3 -2
@@ -41,7 +41,8 @@ const (
4141 // Skipped: the file is longer than agentsMd.maxChars. It is left out
4242 // whole — never truncated, which could drop the one rule that matters.
4343 Skipped
44- // Ignored: the file exists, but the agent has a structuredOutput.
44+ // Ignored: the file exists, but the agent has a structuredOutput or is
45+ // a decider (whose model only ever receives the state).
4546 Ignored
4647 // Unreadable: the file exists but could not be read (Err says why).
4748 Unreadable
@@ -81,7 +82,7 @@ func Load(workDir string) File {
8182 switch {
8283 case text == "":
8384 return File{Status: Missing, Path: path}
84- case config.Cfg.OutputSchema != nil:
85+ case config.Cfg.OutputSchema != nil || config.Cfg.Decision != nil:
8586 return File{Status: Ignored, Path: path, Text: text}
8687 case settings.MaxChars > 0 && utf8.RuneCountInString(text) > settings.MaxChars:
8788 return File{Status: Skipped, Path: path, Text: text}
@@ -41,7 +41,8 @@ const (
41 // Skipped: the file is longer than agentsMd.maxChars. It is left out41 // Skipped: the file is longer than agentsMd.maxChars. It is left out
42 // whole — never truncated, which could drop the one rule that matters.42 // whole — never truncated, which could drop the one rule that matters.
43 Skipped43 Skipped
44- // Ignored: the file exists, but the agent has a structuredOutput.44+ // Ignored: the file exists, but the agent has a structuredOutput or is
45+ // a decider (whose model only ever receives the state).
45 Ignored46 Ignored
46 // Unreadable: the file exists but could not be read (Err says why).47 // Unreadable: the file exists but could not be read (Err says why).
47 Unreadable48 Unreadable
@@ -81,7 +82,7 @@ func Load(workDir string) File {
81 switch {82 switch {
82 case text == "":83 case text == "":
83 return File{Status: Missing, Path: path}84 return File{Status: Missing, Path: path}
84- case config.Cfg.OutputSchema != nil:85+ case config.Cfg.OutputSchema != nil || config.Cfg.Decision != nil:
85 return File{Status: Ignored, Path: path, Text: text}86 return File{Status: Ignored, Path: path, Text: text}
86 case settings.MaxChars > 0 && utf8.RuneCountInString(text) > settings.MaxChars:87 case settings.MaxChars > 0 && utf8.RuneCountInString(text) > settings.MaxChars:
87 return File{Status: Skipped, Path: path, Text: text}88 return File{Status: Skipped, Path: path, Text: text}
modified internal/agentsmd/agentsmd_test.go +17 -0
@@ -108,6 +108,23 @@ func TestAFileOverTheLimitIsSkippedWhole(t *testing.T) {
108108 }
109109 }
110110
111+// A decider sends its model the state alone (ticket 141 follow-up): the file
112+// never reaches it, and Load says so instead of claiming it was loaded.
113+func TestADeciderIgnoresTheFile(t *testing.T) {
114+ withSettings(t, defaults)
115+ saved := config.Cfg.Decision
116+ t.Cleanup(func() { config.Cfg.Decision = saved })
117+ config.Cfg.Decision = &config.DecisionConfig{}
118+ dir := project(t, "Answer in prose.")
119+
120+ if f := Load(dir); f.Status != Ignored {
121+ t.Errorf("Load = %+v, want Ignored", f)
122+ }
123+ if got := System("base", dir); got != "base" {
124+ t.Errorf("System = %q, want the base prompt", got)
125+ }
126+}
127+
111128 // A structured agent answers in JSON: it never reads prose instructions,
112129 // but Load still reports the file so the banner can say it was ignored.
113130 func TestAStructuredAgentIgnoresTheFile(t *testing.T) {
@@ -108,6 +108,23 @@ func TestAFileOverTheLimitIsSkippedWhole(t *testing.T) {
108 }108 }
109 }109 }
110 110
111+// A decider sends its model the state alone (ticket 141 follow-up): the file
112+// never reaches it, and Load says so instead of claiming it was loaded.
113+func TestADeciderIgnoresTheFile(t *testing.T) {
114+ withSettings(t, defaults)
115+ saved := config.Cfg.Decision
116+ t.Cleanup(func() { config.Cfg.Decision = saved })
117+ config.Cfg.Decision = &config.DecisionConfig{}
118+ dir := project(t, "Answer in prose.")
119+
120+ if f := Load(dir); f.Status != Ignored {
121+ t.Errorf("Load = %+v, want Ignored", f)
122+ }
123+ if got := System("base", dir); got != "base" {
124+ t.Errorf("System = %q, want the base prompt", got)
125+ }
126+}
127+
111 // A structured agent answers in JSON: it never reads prose instructions,128 // A structured agent answers in JSON: it never reads prose instructions,
112 // but Load still reports the file so the banner can say it was ignored.129 // but Load still reports the file so the banner can say it was ignored.
113 func TestAStructuredAgentIgnoresTheFile(t *testing.T) {130 func TestAStructuredAgentIgnoresTheFile(t *testing.T) {