Skip to content

Commit 3c65ae7

Browse files
committed
Keep scribe option labels short enough for the overlay
Scribe still taught AskUserQuestion-style label-plus-description options, which the 48-character cap now rejects. Examples are short labels; routing and trade-offs go in the transcript. Changelog notes the wrap and the option-length cap.
1 parent dc4e79d commit 3c65ae7

2 files changed

Lines changed: 80 additions & 98 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,9 @@ parallel copies under `docs/` or `scripts/notes/`. At cut time: rename
2828
Bundled plugins disable only and stay listed. Claude marketplace plugins
2929
disable in settings without deleting `~/.claude`. The screen opens with a
3030
how-to header.
31+
- Operator-question and permission choice labels wrap instead of collapsing
32+
behind a middle ellipsis. `ask_operator` rejects option labels over 48
33+
characters so rationale stays in the transcript.
3134

3235
## [0.3.14] - 2026-09-03
3336

plugins/corbits-skills/skills/scribe/SKILL.md

Lines changed: 77 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,15 @@ Before processing input, locate the documentation files:
5050

5151
## Using the Question Tool
5252

53-
Throughout this skill, you will use `ask_operator` to interact with the user. `ask_operator` presents multiple-choice questions with predefined options.
53+
Throughout this skill, you will use `ask_operator` to interact with the user. It takes a short `question` and an array of short option labels (strings). The operator picks one, types a custom answer, or dismisses.
5454

5555
**Key mechanics:**
5656

57-
- You can present multiple questions in a single tool call (as an array of questions)
58-
- Each question has a header, question text, and multiple options
59-
- Each option has a label and description
60-
- Users can select one or multiple options (if `multiple: true`)
61-
- The tool automatically includes a "Type your own answer" option by default
62-
- Questions are answered together as a batch, but you should make options context-aware based on information you already have
57+
- Independent questions are parallel `ask_operator` calls in the same turn — not one call with a `questions` array
58+
- Options are short labels only. Put trade-offs, document routing, and "like [similar feature]" context in the transcript before the tool call
59+
- Do not invent `{ label, description }` objects, `header`, or `multiple: true` — those are not this tool
60+
- If the tool rejects a label as too long, put the essay in the transcript and retry with a shorter label
61+
- Make options context-aware based on information you already have
6362

6463
**When to provide context-aware options:**
6564

@@ -68,52 +67,32 @@ Throughout this skill, you will use `ask_operator` to interact with the user. `a
6867
- Use project-specific terminology from existing documents
6968
- When no patterns exist (empty/minimal documents), provide general options as fallbacks
7069

71-
**Example invocation:**
72-
73-
```json
74-
{
75-
"questions": [
76-
{
77-
"header": "Document classification",
78-
"question": "Is 'fast and reliable' a user-facing promise or a system design requirement?",
79-
"options": [
80-
{
81-
"label": "User-facing promise",
82-
"description": "Add to PRODUCT.md like other user benefits"
83-
},
84-
{
85-
"label": "System design requirement",
86-
"description": "Add to ARCHITECTURE.md with latency targets"
87-
},
88-
{
89-
"label": "Both",
90-
"description": "It's a user promise AND a technical constraint"
91-
}
92-
]
93-
},
94-
{
95-
"header": "Performance target",
96-
"question": "Does 'fast' have a concrete target?",
97-
"options": [
98-
{
99-
"label": "Under 5 seconds",
100-
"description": "Similar to report generation target"
101-
},
102-
{
103-
"label": "Different target",
104-
"description": "Specify a different performance goal"
105-
},
106-
{
107-
"label": "No specific target",
108-
"description": "Keep it qualitative for now"
109-
}
110-
]
111-
}
70+
**Example:** transcript first, then two parallel calls.
71+
72+
PRODUCT.md already treats "reports" as a user-facing benefit; ARCHITECTURE.md has latency targets for other services.
73+
74+
```
75+
ask_operator({
76+
question: "Is 'fast and reliable' a user-facing promise or a system design requirement?",
77+
options: [
78+
"User-facing promise",
79+
"System design requirement",
80+
"Both"
11281
]
113-
}
82+
})
83+
84+
ask_operator({
85+
question: "Does 'fast' have a concrete target?",
86+
options: [
87+
"Under 5 seconds",
88+
"Different target",
89+
"No specific target"
90+
]
91+
})
11492
```
11593

116-
The tool returns the selected options as an array of labels (e.g., `["Both", "Under 5 seconds"]`).
94+
Each call returns the selected label (or the operator's custom text).
95+
11796

11897
## Execution Steps
11998

@@ -180,20 +159,20 @@ If the input is ambiguous or spans multiple categories, do not simply ask "which
180159

181160
**If documents have content with patterns to reference:**
182161

183-
- When user mentions "fast and reliable", reference existing performance promises or design constraints:
184-
- "User-facing promise (add to PRODUCT.md like [similar feature])"
185-
- "System design requirement (add to ARCHITECTURE.md with latency targets)"
186-
- "Both - it's a user promise AND a technical constraint"
187-
- When user mentions a component name, reference similar components:
188-
- "[Component] is user-facing (like [similar component] in PRODUCT.md)"
189-
- "[Component] is an internal abstraction (add to ARCHITECTURE.md)"
162+
- When user mentions "fast and reliable", reference existing performance promises or design constraints in the transcript, then ask with short labels:
163+
- "User-facing promise"
164+
- "System design requirement"
165+
- "Both"
166+
- When user mentions a component name, reference similar components in the transcript, then ask:
167+
- "User-facing"
168+
- "Internal abstraction"
190169

191170
**If documents are empty/minimal (no patterns to reference):**
192171

193172
- Provide general options without specific references:
194-
- "User-facing promise (add to PRODUCT.md)"
195-
- "System design requirement (add to ARCHITECTURE.md)"
196-
- "Both - it's a user promise AND a technical constraint"
173+
- "User-facing promise"
174+
- "System design requirement"
175+
- "Both"
197176

198177
3. Route each extracted piece to its appropriate document. A single user statement may result in updates to multiple documents.
199178

@@ -239,11 +218,11 @@ If you just added an export service to ARCHITECTURE.md, and PRODUCT.md has no me
239218
Use `ask_operator` with:
240219

241220
- Question 1: "Should PRODUCT.md describe data export as a user-facing capability?"
242-
- **If PRODUCT.md has similar features**: "Add export as data access capability (like reports feature)" / "Add as part of reporting feature"
243-
- **If PRODUCT.md is minimal**: "Yes, add as new user-facing capability" / "No, exports are internal only"
221+
- **If PRODUCT.md has similar features**: "Add as data-access capability" / "Fold into reporting"
222+
- **If PRODUCT.md is minimal**: "Yes, add as user-facing" / "No, internal only"
244223
- Question 2: "How should IMPLEMENTATION.md describe export generation?"
245-
- **If IMPLEMENTATION.md describes other services**: "Similar to [existing service], using [library]" / "Different approach (specify details)"
246-
- **If IMPLEMENTATION.md is minimal**: "Specify library/technology used" / "Defer implementation details for now"
224+
- **If IMPLEMENTATION.md describes other services**: "Same approach as [service]" / "Different approach"
225+
- **If IMPLEMENTATION.md is minimal**: "Name the library" / "Defer for now"
247226

248227
For each question the user answers, update the corresponding document before proceeding.
249228

@@ -265,14 +244,14 @@ Use `ask_operator` to present 2-4 probing questions as a batch. Focus on non-obv
265244
If you just added an export service to ARCHITECTURE.md:
266245

267246
- Question 1: "What happens when an export fails mid-generation?"
268-
- **If other services have retry logic**: "Automatic retry (like [existing service])" / "User must re-trigger" / "Saved as partial export for resume"
269-
- **If no retry patterns exist**: "Automatic retry" / "User must re-trigger" / "Partial export saved for resume"
247+
- **If other services have retry logic**: "Automatic retry, like [service]" / "User must re-trigger" / "Save partial for resume"
248+
- **If no retry patterns exist**: "Automatic retry" / "User must re-trigger" / "Save partial for resume"
270249
- Question 2: "Are there size or rate limits on exports?"
271-
- **If similar features have limits**: "Same limits as [similar feature]" / "Different limits (specify)" / "No hard limits - best effort"
272-
- **If no limits documented**: "10k rows / 100MB max" / "No hard limits - best effort" / "To be determined"
250+
- **If similar features have limits**: "Same limits as [feature]" / "Different limits" / "No hard limits"
251+
- **If no limits documented**: "10k rows / 100MB max" / "No hard limits" / "To be determined"
273252
- Question 3: "Who has permission to trigger exports?"
274-
- **If docs mention role-based access**: "Any authenticated user" / "Only admin/owner roles" / "Configurable per workspace"
275-
- **If auth not documented**: "Any authenticated user" / "Role-restricted (specify roles)" / "To be determined"
253+
- **If docs mention role-based access**: "Any authenticated user" / "Admin/owner only" / "Configurable per workspace"
254+
- **If auth not documented**: "Any authenticated user" / "Role-restricted" / "To be determined"
276255

277256
Update the document with any answers the user provides. If the user declines to answer, move on without pressing.
278257

@@ -310,12 +289,12 @@ Instead of asking "which document?", use `ask_operator` to decompose. After read
310289
Use `ask_operator`:
311290

312291
- Question 1: "Is 'fast and reliable' a promise to users or a system design requirement?"
313-
- Option 1: "User-facing promise (add to PRODUCT.md like other user benefits)"
314-
- Option 2: "System design requirement (add to ARCHITECTURE.md with latency targets)"
315-
- Option 3: "Both - it's a user promise AND a technical constraint"
292+
- Option 1: "User-facing promise"
293+
- Option 2: "System design requirement"
294+
- Option 3: "Both"
316295
- Question 2: "Does 'fast' have a concrete target?"
317-
- Option 1: "Yes - under 5 seconds (similar to report generation target)"
318-
- Option 2: "Yes - but different target (specify)"
296+
- Option 1: "Under 5 seconds"
297+
- Option 2: "Different target"
319298
- Option 3: "No specific target yet"
320299

321300
If the user selects "Both" and "under 5 seconds", this produces two updates:
@@ -332,13 +311,13 @@ After updating, scribe reads the other documents and finds that PRODUCT.md has n
332311
Use `ask_operator`:
333312

334313
- Question 1: "Should PRODUCT.md describe notifications as a user-facing capability?"
335-
- Option 1: "Yes - add as new notifications feature (users receive updates via email/SMS/push)"
336-
- Option 2: "Yes - integrate with existing 'alerts' feature (notifications are how alerts are delivered)"
337-
- Option 3: "No - notifications are internal only, not user-facing"
314+
- Option 1: "Add as a user-facing feature"
315+
- Option 2: "Fold into existing alerts"
316+
- Option 3: "Internal only"
338317
- Question 2: "Should IMPLEMENTATION.md specify the notification providers?"
339-
- Option 1: "Yes - using [provider] (similar to how we document other integrations)"
340-
- Option 2: "Yes - but different providers (specify which)"
341-
- Option 3: "Not yet - still evaluating options"
318+
- Option 1: "Yes — name the provider"
319+
- Option 2: "Yes different providers"
320+
- Option 3: "Not yet"
342321

343322
### Gap Detection (Step 5)
344323

@@ -349,17 +328,17 @@ After updating, scribe scans the section and identifies gaps. From reading ARCHI
349328
Use `ask_operator`:
350329

351330
- Question 1: "What happens when a refresh token is revoked?"
352-
- Option 1: "User signed out immediately (like session invalidation elsewhere in the system)"
353-
- Option 2: "User signed out at next request (deferred enforcement)"
331+
- Option 1: "Signed out immediately"
332+
- Option 2: "Signed out at next request"
354333
- Option 3: "Configurable per deployment"
355334
- Question 2: "Is there a maximum session duration?"
356-
- Option 1: "Yes - 30 days (similar to other timeout values in the docs)"
357-
- Option 2: "Yes - but different duration (specify)"
358-
- Option 3: "No hard limit - refresh tokens last indefinitely until revoked"
335+
- Option 1: "30 days"
336+
- Option 2: "Different duration"
337+
- Option 3: "No hard limit"
359338
- Question 3: "How are tokens stored on the client side?"
360-
- Option 1: "Same as [other sensitive data] - in secure storage"
361-
- Option 2: "Different approach (specify storage mechanism)"
362-
- Option 3: "Client implementation decision - not specified in architecture"
339+
- Option 1: "Same as other secrets"
340+
- Option 2: "Different storage"
341+
- Option 3: "Client decides"
363342

364343
## Error Handling
365344

@@ -370,8 +349,8 @@ If the target document does not exist, use `ask_operator` to ask the user if the
370349
Question: "The [DOCUMENT].md file does not exist. Should I create it?"
371350
Options:
372351

373-
- "Yes, create [DOCUMENT].md (will contain [brief description based on document type])"
374-
- "No, use a different document instead"
352+
- "Yes, create it"
353+
- "Use a different document"
375354

376355
### Content conflicts
377356

@@ -380,9 +359,9 @@ If the new content contradicts existing content, use `ask_operator` to flag it w
380359
Question: "This conflicts with existing content in [DOCUMENT].md: '[existing content]'. How should I resolve this?"
381360
Options based on the nature of the conflict:
382361

383-
- "Replace old content with new (new information supersedes old)"
384-
- "Keep both with clarification (they represent different aspects/contexts)"
385-
- "Merge the two (combine into comprehensive description)"
362+
- "Replace with the new content"
363+
- "Keep both, with clarification"
364+
- "Merge the two"
386365

387366
### Unclear scope
388367

@@ -391,7 +370,7 @@ If the input is too broad or vague to place in a specific document, use `ask_ope
391370
Question: "I'm not sure where '[user input]' belongs. Can you help me place it?"
392371
Options based on what aspects you can detect:
393372

394-
- "PRODUCT.md ([specific user-facing aspect you detected])"
395-
- "ARCHITECTURE.md ([specific structural aspect you detected])"
396-
- "IMPLEMENTATION.md ([specific technical aspect you detected])"
397-
- "Multiple documents (it spans several concerns)"
373+
- "PRODUCT.md"
374+
- "ARCHITECTURE.md"
375+
- "IMPLEMENTATION.md"
376+
- "Multiple documents"

0 commit comments

Comments
 (0)