Repository navigation
feedback: openspec feedback dumps full message into the title and leaves the body empty (see #1642) #1643
Description
Problem
openspec feedback can produce malformed GitHub issues. See #1642: a ~400‑character run‑on title and a body containing nothing but the metadata footer.
The cause is in src/commands/feedback.ts:
formatTitle(message)returns`Feedback: ${message}`— the entire<message>positional arg becomes the title, with no length cap and no newline stripping.formatBody(bodyText?)only ever contains the optional--bodytext plus metadata. Themessageis never written to the body.
So any caller that puts its full report into <message> and omits --body (common in headless/agent runs) gets a giant title and an empty body. The output quality depends entirely on the caller splitting title vs. body correctly, and nothing in the CLI enforces it.
Goal
Make the CLI produce a short, single‑line title and a detailed‑but‑simple body no matter how the caller passes its input, so no feedback content is ever lost or dumped into the title.
Proposed changes
All in src/commands/feedback.ts (plus spec/docs sync). Robust at the CLI level — not reliant on agent behavior.
-
Derive a clean title.
- Take the first line (or first sentence) of
<message>, collapse whitespace, strip newlines, and cap at ~72 chars with an ellipsis when longer. - Keep the
Feedback:prefix. - Titles are single‑line by construction.
- Take the first line (or first sentence) of
-
Always put the full
<message>in the body.- Body = full
<message>+ optional--bodydetail + metadata footer. - Guarantees the body always has substance, and nothing from
<message>is lost even when it was too long for the title.
- Body = full
-
Give the body a light, consistent structure.
- Simple sections (e.g.
## Summary, optional## Details) followed by the existing---metadata footer. - Keeps contents detailed but skimmable.
- Simple sections (e.g.
-
Sync the surfaces.
- Update the
cli-feedbackspec (openspec/specs/cli-feedback/spec.md) scenarios — the current "Simple feedback submission" scenario asserts the whole message becomes the title. - Update
docs/cli.mdand the/feedbackskill/workflow template (src/core/templates/workflows/feedback.ts) to reflect the title‑derivation behavior.
- Update the
Acceptance criteria
openspec feedback "<long multi-sentence message>"(no--body) → title is a short single line; the full message appears in the body.openspec feedback "short" --body "detail"→ short title; body contains both the message and the detail.- Titles never contain newlines and never exceed the cap.
- The manual‑fallback path (no
gh/ unauthenticated) prints the same cleaned title and body.
Reference
- Bad output: Feedback: Generated Claude Code skills/commands (openspec-ff-change, openspec-propose, openspec-apply-change, etc., v1.8.0) declare allowed-tools: Bash(openspec:*) only, but their own instructions require Write/Edit/Read to author or implement artifact and source files. Under --dangerously-skip-permissions in headless (claude --print) mode, this blocks every Write call with a permission error, so scaffold/apply steps silently fail (openspec new change succeeds via Bash, but proposal.md/design.md/tasks.md/specs/*.md are never written). Suggest generating allowed-tools: Bash(openspec:*), Read, Write, Edit instead. #1642
- Source:
src/commands/feedback.ts - Spec:
openspec/specs/cli-feedback/spec.md
Activity
clay-good commentedon Sep 25, 2026
Fixed on main by #1653, released in v1.11.0.
openspec feedbacknow collapses whitespace in the title and caps it at 72 characters with an ellipsis. The full message always goes in the body under## Summary, with--bodytext under## Details. Seesrc/commands/feedback.ts.