diff --git a/autoplan/SKILL.md b/autoplan/SKILL.md index 5346f1d43..e882752d7 100644 --- a/autoplan/SKILL.md +++ b/autoplan/SKILL.md @@ -374,7 +374,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -407,6 +407,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -454,6 +460,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/canary/SKILL.md b/canary/SKILL.md index 08d4d7369..7f9b698ea 100644 --- a/canary/SKILL.md +++ b/canary/SKILL.md @@ -366,7 +366,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -399,6 +399,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -446,6 +452,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/codex/SKILL.md b/codex/SKILL.md index 33228ff9b..655967265 100644 --- a/codex/SKILL.md +++ b/codex/SKILL.md @@ -369,7 +369,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -402,6 +402,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -449,6 +455,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/context-restore/SKILL.md b/context-restore/SKILL.md index 59b40e82c..4793c06d2 100644 --- a/context-restore/SKILL.md +++ b/context-restore/SKILL.md @@ -370,7 +370,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -403,6 +403,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -450,6 +456,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/context-save/SKILL.md b/context-save/SKILL.md index a1eb24595..e5ce89c12 100644 --- a/context-save/SKILL.md +++ b/context-save/SKILL.md @@ -369,7 +369,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -402,6 +402,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -449,6 +455,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/cso/SKILL.md b/cso/SKILL.md index a08d7e9fe..67394d2cc 100644 --- a/cso/SKILL.md +++ b/cso/SKILL.md @@ -372,7 +372,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -405,6 +405,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -452,6 +458,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/design-consultation/SKILL.md b/design-consultation/SKILL.md index 83eed0a2d..9b98a0744 100644 --- a/design-consultation/SKILL.md +++ b/design-consultation/SKILL.md @@ -392,7 +392,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -425,6 +425,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -472,6 +478,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/design-html/SKILL.md b/design-html/SKILL.md index a480bd62c..35849939b 100644 --- a/design-html/SKILL.md +++ b/design-html/SKILL.md @@ -373,7 +373,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -406,6 +406,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -453,6 +459,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/design-review/SKILL.md b/design-review/SKILL.md index 645453162..840a17a4f 100644 --- a/design-review/SKILL.md +++ b/design-review/SKILL.md @@ -370,7 +370,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -403,6 +403,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -450,6 +456,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/design-shotgun/SKILL.md b/design-shotgun/SKILL.md index 3386d18fa..256b870fe 100644 --- a/design-shotgun/SKILL.md +++ b/design-shotgun/SKILL.md @@ -387,7 +387,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -420,6 +420,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -467,6 +473,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/devex-review/SKILL.md b/devex-review/SKILL.md index 7ef324b3e..ad35475c2 100644 --- a/devex-review/SKILL.md +++ b/devex-review/SKILL.md @@ -372,7 +372,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -405,6 +405,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -452,6 +458,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/diagram/SKILL.md b/diagram/SKILL.md index 9e5a41066..de23e3a1e 100644 --- a/diagram/SKILL.md +++ b/diagram/SKILL.md @@ -367,7 +367,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -400,6 +400,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -447,6 +453,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/document-generate/SKILL.md b/document-generate/SKILL.md index 30846fc4d..b141a9b29 100644 --- a/document-generate/SKILL.md +++ b/document-generate/SKILL.md @@ -372,7 +372,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -405,6 +405,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -452,6 +458,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/document-release/SKILL.md b/document-release/SKILL.md index b95873625..49ec3a6ae 100644 --- a/document-release/SKILL.md +++ b/document-release/SKILL.md @@ -370,7 +370,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -403,6 +403,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -450,6 +456,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/health/SKILL.md b/health/SKILL.md index e68199dec..d538de0b2 100644 --- a/health/SKILL.md +++ b/health/SKILL.md @@ -368,7 +368,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -401,6 +401,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -448,6 +454,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/investigate/SKILL.md b/investigate/SKILL.md index 5d54b4256..fa5180e75 100644 --- a/investigate/SKILL.md +++ b/investigate/SKILL.md @@ -407,7 +407,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -440,6 +440,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -487,6 +493,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/ios-clean/SKILL.md b/ios-clean/SKILL.md index 6c466896b..25aeffeba 100644 --- a/ios-clean/SKILL.md +++ b/ios-clean/SKILL.md @@ -370,7 +370,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -403,6 +403,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -450,6 +456,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/ios-design-review/SKILL.md b/ios-design-review/SKILL.md index 904da7589..4cb20cb6f 100644 --- a/ios-design-review/SKILL.md +++ b/ios-design-review/SKILL.md @@ -372,7 +372,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -405,6 +405,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -452,6 +458,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/ios-fix/SKILL.md b/ios-fix/SKILL.md index 3ddae1ac0..f81a76ac9 100644 --- a/ios-fix/SKILL.md +++ b/ios-fix/SKILL.md @@ -373,7 +373,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -406,6 +406,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -453,6 +459,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/ios-qa/SKILL.md b/ios-qa/SKILL.md index 24624be5f..31b3e2231 100644 --- a/ios-qa/SKILL.md +++ b/ios-qa/SKILL.md @@ -376,7 +376,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -409,6 +409,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -456,6 +462,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/ios-sync/SKILL.md b/ios-sync/SKILL.md index 95e0bca0a..a8bb2a1dc 100644 --- a/ios-sync/SKILL.md +++ b/ios-sync/SKILL.md @@ -370,7 +370,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -403,6 +403,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -450,6 +456,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/land-and-deploy/SKILL.md b/land-and-deploy/SKILL.md index 54ebf52c0..d9d9ede68 100644 --- a/land-and-deploy/SKILL.md +++ b/land-and-deploy/SKILL.md @@ -365,7 +365,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -398,6 +398,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -445,6 +451,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/landing-report/SKILL.md b/landing-report/SKILL.md index 8f7e6e210..4095b3c64 100644 --- a/landing-report/SKILL.md +++ b/landing-report/SKILL.md @@ -366,7 +366,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -399,6 +399,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -446,6 +452,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/learn/SKILL.md b/learn/SKILL.md index a0c6ae053..83277fe64 100644 --- a/learn/SKILL.md +++ b/learn/SKILL.md @@ -368,7 +368,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -401,6 +401,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -448,6 +454,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/office-hours/SKILL.md b/office-hours/SKILL.md index 83161b8ca..edf663703 100644 --- a/office-hours/SKILL.md +++ b/office-hours/SKILL.md @@ -403,7 +403,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -436,6 +436,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -483,6 +489,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/open-gstack-browser/SKILL.md b/open-gstack-browser/SKILL.md index 28fb1ddb2..90178eaff 100644 --- a/open-gstack-browser/SKILL.md +++ b/open-gstack-browser/SKILL.md @@ -365,7 +365,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -398,6 +398,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -445,6 +451,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/pair-agent/SKILL.md b/pair-agent/SKILL.md index eed9d171a..20453a8cf 100644 --- a/pair-agent/SKILL.md +++ b/pair-agent/SKILL.md @@ -367,7 +367,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -400,6 +400,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -447,6 +453,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/plan-ceo-review/SKILL.md b/plan-ceo-review/SKILL.md index 3d3208bee..879626484 100644 --- a/plan-ceo-review/SKILL.md +++ b/plan-ceo-review/SKILL.md @@ -397,7 +397,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -430,6 +430,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -477,6 +483,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/plan-design-review/SKILL.md b/plan-design-review/SKILL.md index e81f7f12a..daa4bb0bb 100644 --- a/plan-design-review/SKILL.md +++ b/plan-design-review/SKILL.md @@ -369,7 +369,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -402,6 +402,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -449,6 +455,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/plan-devex-review/SKILL.md b/plan-devex-review/SKILL.md index 20a32da8b..b103264a4 100644 --- a/plan-devex-review/SKILL.md +++ b/plan-devex-review/SKILL.md @@ -375,7 +375,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -408,6 +408,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -455,6 +461,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/plan-eng-review/SKILL.md b/plan-eng-review/SKILL.md index 5557a33fa..45c7bbc79 100644 --- a/plan-eng-review/SKILL.md +++ b/plan-eng-review/SKILL.md @@ -373,7 +373,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -406,6 +406,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -453,6 +459,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/plan-tune/SKILL.md b/plan-tune/SKILL.md index f49b66fac..71817dfaa 100644 --- a/plan-tune/SKILL.md +++ b/plan-tune/SKILL.md @@ -378,7 +378,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -411,6 +411,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -458,6 +464,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/qa-only/SKILL.md b/qa-only/SKILL.md index 801a935c0..dc5fdc554 100644 --- a/qa-only/SKILL.md +++ b/qa-only/SKILL.md @@ -368,7 +368,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -401,6 +401,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -448,6 +454,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/qa/SKILL.md b/qa/SKILL.md index c1ac10253..391717349 100644 --- a/qa/SKILL.md +++ b/qa/SKILL.md @@ -374,7 +374,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -407,6 +407,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -454,6 +460,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/retro/SKILL.md b/retro/SKILL.md index 3fbc44726..ce9e9378a 100644 --- a/retro/SKILL.md +++ b/retro/SKILL.md @@ -385,7 +385,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -418,6 +418,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -465,6 +471,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/review/SKILL.md b/review/SKILL.md index 5f26e2e42..877e9e792 100644 --- a/review/SKILL.md +++ b/review/SKILL.md @@ -370,7 +370,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -403,6 +403,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -450,6 +456,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/scrape/SKILL.md b/scrape/SKILL.md index dc965ec5f..dc321e5a5 100644 --- a/scrape/SKILL.md +++ b/scrape/SKILL.md @@ -366,7 +366,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -399,6 +399,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -446,6 +452,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/scripts/resolvers/preamble/generate-ask-user-format.ts b/scripts/resolvers/preamble/generate-ask-user-format.ts index 533c002c0..933f5f181 100644 --- a/scripts/resolvers/preamble/generate-ask-user-format.ts +++ b/scripts/resolvers/preamble/generate-ask-user-format.ts @@ -39,7 +39,7 @@ Layout: a \`D\` title + a one-line note to reply with a letter (in Conductor ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's \`question\` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. \`\`\` D @@ -72,6 +72,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- \`question\` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both \`question\` and \`options[].description\`. Prefer putting option-specific trade-offs in \`options[].description\`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -119,6 +125,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] \`question\` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between \`question\` and \`options[].description\` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless \`CONDUCTOR_SESSION: true\` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + \`(recommended)\` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \\u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/setup-deploy/SKILL.md b/setup-deploy/SKILL.md index 3465dc564..f71df46a7 100644 --- a/setup-deploy/SKILL.md +++ b/setup-deploy/SKILL.md @@ -369,7 +369,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -402,6 +402,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -449,6 +455,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/setup-gbrain/SKILL.md b/setup-gbrain/SKILL.md index a3892f1c9..37dbabdf2 100644 --- a/setup-gbrain/SKILL.md +++ b/setup-gbrain/SKILL.md @@ -368,7 +368,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -401,6 +401,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -448,6 +454,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/ship/SKILL.md b/ship/SKILL.md index eadffaa8f..82a91586b 100644 --- a/ship/SKILL.md +++ b/ship/SKILL.md @@ -370,7 +370,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -403,6 +403,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -450,6 +456,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/skillify/SKILL.md b/skillify/SKILL.md index 7cb434d0c..fba5c49bf 100644 --- a/skillify/SKILL.md +++ b/skillify/SKILL.md @@ -366,7 +366,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -399,6 +399,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -446,6 +452,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/spec/SKILL.md b/spec/SKILL.md index 0894e98d1..0b202c3a9 100644 --- a/spec/SKILL.md +++ b/spec/SKILL.md @@ -367,7 +367,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -400,6 +400,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -447,6 +453,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any @@ -1437,7 +1447,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -1470,6 +1480,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -1517,6 +1533,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/sync-gbrain/SKILL.md b/sync-gbrain/SKILL.md index 02055bb6f..f268c7890 100644 --- a/sync-gbrain/SKILL.md +++ b/sync-gbrain/SKILL.md @@ -368,7 +368,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -401,6 +401,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -448,6 +454,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/test/fixtures/golden/claude-ship-SKILL.md b/test/fixtures/golden/claude-ship-SKILL.md index eadffaa8f..82a91586b 100644 --- a/test/fixtures/golden/claude-ship-SKILL.md +++ b/test/fixtures/golden/claude-ship-SKILL.md @@ -370,7 +370,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -403,6 +403,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -450,6 +456,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/test/fixtures/golden/codex-ship-SKILL.md b/test/fixtures/golden/codex-ship-SKILL.md index d99630c4b..6c9c7cf5b 100644 --- a/test/fixtures/golden/codex-ship-SKILL.md +++ b/test/fixtures/golden/codex-ship-SKILL.md @@ -356,7 +356,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -389,6 +389,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -436,6 +442,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/test/fixtures/golden/factory-ship-SKILL.md b/test/fixtures/golden/factory-ship-SKILL.md index a2acad24f..67920a0cf 100644 --- a/test/fixtures/golden/factory-ship-SKILL.md +++ b/test/fixtures/golden/factory-ship-SKILL.md @@ -358,7 +358,7 @@ Layout: a `D` title + a one-line note to reply with a letter (in Conductor th ### Format -Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. +Every AskUserQuestion decision has two parts: a markdown decision brief before the call, then a compact tool_use payload. Do not pack the full brief into the tool's `question` string. Every AskUserQuestion is a decision brief and must be sent as tool_use, not prose — unless the documented failure fallback above applies (interactive session + the call is unavailable/erroring), in which case the prose fallback is the correct output. ``` D @@ -391,6 +391,12 @@ Effort both-scales: when an option involves effort, label both human-team and CC Net line closes the tradeoff. Per-skill instructions may add stricter rules. +Tool payload rules: +- `question` is only the decision prompt: one sentence, no newlines, <=80 chars. +- Background, regrounding, ELI10, stakes, recommendation, pros/cons, and trade-off tables stay in the markdown brief before the tool call. +- Ask one decision per tool call when possible; batch at most two related questions/tabs. Sequence independent decisions instead of sending 3+ tabs. +- Do not duplicate the same trade-off text in both `question` and `options[].description`. Prefer putting option-specific trade-offs in `options[].description`. + ### Handling 5+ options — split, never drop AskUserQuestion caps every call at **4 options**. With 5+ real options, NEVER @@ -438,6 +444,10 @@ Before calling AskUserQuestion, verify: - [ ] (recommended) label on one option (even for neutral-posture) - [ ] Dual-scale effort labels on effort-bearing options (human / CC) - [ ] Net line closes the decision +- [ ] `question` is one sentence, no newlines, <=80 chars +- [ ] Tool call has no more than two related questions/tabs +- [ ] No duplicated trade-off text between `question` and `options[].description` +- [ ] You wrote the brief, then called the tool_use payload - [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: prose with the mandatory triad — issue ELI10, per-choice Completeness, Recommendation + `(recommended)` — and a "reply with a letter" instruction, then STOP) - [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped - [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any diff --git a/test/gen-skill-docs.test.ts b/test/gen-skill-docs.test.ts index 2fb783ffd..cf214662f 100644 --- a/test/gen-skill-docs.test.ts +++ b/test/gen-skill-docs.test.ts @@ -334,6 +334,17 @@ describe('gen-skill-docs', () => { expect(content).toContain('not function names'); }); + // #1208: the compact-payload rules must reach generated tier 2+ SKILL.md so + // panel hosts (VSCode) render readable question cards. + test('tier 2+ skills keep AskUserQuestion panel payloads compact', () => { + const content = fs.readFileSync(path.join(ROOT, 'cso', 'SKILL.md'), 'utf-8'); + expect(content).toContain("Do not pack the full brief into the tool's `question` string"); + expect(content).toContain('`question` is only the decision prompt'); + expect(content).toContain('<=80 chars'); + expect(content).toContain('batch at most two related questions/tabs'); + expect(content).toContain('No duplicated trade-off text'); + }); + test('tier 1 skills do NOT contain AskUserQuestion format', () => { // Use benchmark (tier 1) instead of root — root SKILL.md gets overwritten by Codex test setup const content = fs.readFileSync(path.join(ROOT, 'benchmark', 'SKILL.md'), 'utf-8'); diff --git a/test/resolver-ask-user-format.test.ts b/test/resolver-ask-user-format.test.ts index 0b498af0a..e0013c635 100644 --- a/test/resolver-ask-user-format.test.ts +++ b/test/resolver-ask-user-format.test.ts @@ -105,10 +105,35 @@ describe('generateAskUserFormat — v1.7.0.0 Pros/Cons format', () => { expect(out).toMatch(/not a[\s\S]*question|not[\s\S]*interactive/i); }); + // #1208: keep the tool_use payload compact so the question card stays + // readable in panel hosts (VSCode). The full brief belongs in markdown + // before the call, not inside the tool's `question` string. + test('keeps long decision briefs out of the tool question field', () => { + expect(out).toMatch(/Do not pack the full brief into the tool's `question` string/); + expect(out).toMatch(/`question` is only the decision prompt/); + expect(out).toMatch(/<=80 chars/); + expect(out).toMatch(/no newlines/); + }); + + test('limits batched AskUserQuestion tabs for panel readability', () => { + expect(out).toMatch(/batch at most two related questions\/tabs/i); + expect(out).toMatch(/Sequence independent decisions/i); + }); + + test('forbids duplicate trade-off text in question and option descriptions', () => { + expect(out).toMatch(/Do not duplicate the same trade-off text/); + expect(out).toMatch(/options\[\]\.description/); + }); + test('includes self-check before emitting', () => { expect(out).toContain('Self-check before emitting'); expect(out).toMatch(/D header present/); expect(out).toMatch(/Net line closes/); + // #1208 self-check items for compact payloads. + expect(out).toMatch(/`question` is one sentence/); + expect(out).toMatch(/no more than two related questions\/tabs/); + expect(out).toMatch(/No duplicated trade-off text/); + expect(out).toMatch(/wrote the brief, then called the tool_use payload/); }); test('documents D-numbering as model-level not runtime state', () => {