Repository navigation
Send a Session-Prompt Command in a Plain Message, Never in a Blocking Prompt - #3646
Conversation
… Prompt Split the "Communicating with the User" command bullet by where the command runs. A command run somewhere else stays in the question text. A command run at this session's own prompt goes in a plain message as a fenced block, the turn ends with no interactive prompt open, and the agent reads the result back on the user's next message. The two neighboring prompt bullets name this as their one exception, and the agent-conduct and session-handoff include copies are regenerated. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ask the user to reply once the command has run, hold any other question until that reply, and accept the command's output as a read-back where it changes no state. Drop the request-versus-question reason from the exception, which did not separate the two cases, and fix the password example and the "only" that the new half contradicted. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Open the plain message with the command rather than closing a report with it, carry any other question owed that turn as the numbered-list fallback, name typed input as what sends a command outside the session, and narrow the neighboring exceptions to replacing the interactive prompt only. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
|
A recorded local strict-review pass covers head |
Let a turn asking for a session-prompt command put every question it owes in that message, across the ask, blocked-work, and handoff bullets and the session-handoff skill's own fallback lines. State the order as the fenced block, then the numbered list, then any report, and say the block holds the `!` line itself. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
🟡 Changes recommended
GOVERNANCE.md still leaves the command format ambiguous by not defining the ordering of unrelated questions, limiting the exception to command-related questions, or requiring the executable ! prefix.
3 open issues
What changed in this PR
This pull request updates the user-communication rules so commands run at the current session prompt are sent in a plain fenced message rather than an interactive prompt, then verified on the user's next message. The governance change is propagated to the authored and generated skill copies.
Changes:
- Distinguishes commands run outside the session from Claude Code
!commands run at the session prompt. - Requires session-prompt commands to be followed by user confirmation and read-back verification.
- Regenerates the affected skill distributions and source digests.
- Three unresolved documentation findings remain in
GOVERNANCE.mdregarding unrelated questions, message ordering, and explicitly including the!prefix.
This pull request requires changes.
| File | Description |
|---|---|
GOVERNANCE.md |
Defines the revised command-delivery and verification rules. |
.github/skills/session-handoff/SKILL.md |
Regenerated GitHub session-handoff skill distribution. |
.github/skills/agent-conduct/SKILL.md |
Regenerated GitHub agent-conduct skill distribution. |
.claude-plugin/fleet-skills/skills/session-handoff/SKILL.md |
Regenerated Claude session-handoff skill distribution. |
.claude-plugin/fleet-skills/skills/agent-conduct/SKILL.md |
Regenerated Claude agent-conduct skill distribution. |
.claude-plugin/fleet-skills/.source-digests/session-handoff |
Updated session-handoff source digest. |
.claude-plugin/fleet-skills/.source-digests/agent-conduct |
Updated agent-conduct source digest. |
.agents/skills/session-handoff/SKILL.md |
Updated authored session-handoff skill include. |
.agents/skills/agent-conduct/SKILL.md |
Updated authored agent-conduct skill include. |
Review effort: Lite
Call the place a `!` line is typed the session's input line, so it no longer shares a word with the interactive prompt beside it. Keep an outside command in the prompt only where the turn opens one, and move the inserted numbered-list sentences so the existing "That is the fallback" and "It is nothing at all" sentences keep their referents. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #3646 +/- ##
===========================================
+ Coverage 81.60% 81.70% +0.09%
===========================================
Files 26 26
Lines 9070 9119 +49
===========================================
+ Hits 7402 7451 +49
Misses 1668 1668
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Only the first line of a pasted block reaches shell mode, so several commands for the session's input line join on one `!` line with `&&` rather than sitting as separate lines in the block. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
A recorded local strict-review pass covers head |
Open the command bullet with the test itself, typed input sends a command outside the session and every other one runs at the session's input line, rather than a circular "depends on where it runs". Say that `&&` stops at the first command that fails. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Widen the placement test from typed input alone to any command this session's environment cannot run, another host's included, give a command a place on a harness with no input line, and restore "The command" where a bare "It" read as the link. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
A recorded local strict-review pass covers head |
Send a command outside the session where the session cannot run it or cannot hold its effect, a launch-time variable among the examples, and use the input line only where that line can run a command. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Name the session's input line, not the agent's own tool, as what the placement test asks about, and let session-handoff step 4's go-ahead follow step 5 in a turn that asks for an input-line command. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
A recorded local strict-review pass covers head |
Widen the outside-session example from a typed password to any command waiting on typed input, and say session-handoff step 4 asks for the go-ahead, not the command, per step 5. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
A recorded local strict-review pass covers head |
…Session Prompt Rules (#3667) Promotes the changes merged into `develop` since promotion #3636 to `main`. - [#3640](#3640) Pins the validator's `uvx ruff` to a Dependabot-managed manifest. - [#3642](#3642) Counts Copilot findings under the unresolved bullet and the file table. - [#3644](#3644) Aligns the split comment copies and drops the stale counts. - [#3646](#3646) Sends a command meant for the session's input line in a plain message, never in a blocking prompt. - [#3648](#3648) Opens the attended session by cloning a hub checkout of the session's own. - [#3650](#3650) Reads a held package as installed in both Linux host scripts. - [#3652](#3652) States the PowerShell `-Help` and `-h` form in the command-line argument rules. - [#3654](#3654) Counts sentences in Markdown table cells for the sentence-length check. - [#3658](#3658) Splits a table row only at an unescaped pipe in the semicolon rule. - [#3660](#3660) Finds table cell boundaries before blanking code spans and quotations. - [#3662](#3662) Names a stale job record on a completed run in `pr_review.py`. - [#3665](#3665) Keeps a line holding code after a block comment's closer out of `comment-added`. Its squash commit on `develop` carries the pull request's original title, which names a heredoc reading. That reading was withdrawn before the merge on decision #3666, so a workflow `run:` heredoc body still reads as code. - [#3669](#3669) Counts each `[Pn]` marker in a Copilot Findings cell, so a second finding in one cell is no longer dropped from triage. It answers one of the two findings Copilot raised on this promotion. The other is declined with a parser probe in its thread. Closes #3616 Closes #3610 Closes #3622 Closes #3638 Closes #3604 Closes #3511 Closes #3602 Closes #3456 Closes #3655 Closes #3657 Closes #3362 Closes #1664 🤖 Generated with [Claude Code](https://claude.com/claude-code)

Summary
Splits the
GOVERNANCE.md"Communicating with the User" command bullet by where the command runs.!line on Claude Code, never goes in an interactive prompt, since an open prompt blocks the place it runs. It opens a plain message as a fenced block holding the!line. Any question the turn owes follows as a numbered list, then any report. The message asks the user to reply once it has run, the turn ends with no prompt open, and the agent reads back the state or output on the next message.session-handoffskill's own steps 4 and 5 and "The Parked Decision Queue" say the same.agent-conductandsession-handoffinclude copies are regenerated withscripts/build_dist.py.Closes on promotion: #3638
Local review findings
Every finding the earlier local passes raised was fixed in a later push. The last pass, over the current head, raised one
introducedfinding, declined with evidence below.introduced, declined: the pass asked for a fourth example, a command that never exits such as a foreground server, among the outside-session cases. The test sentence already states the property, "where this session's input line cannot run it or cannot hold its effect", and a process that outlives the line's run is one the line cannot hold. The examples after it illustrate that property rather than closing it. A fourth example adds length without changing what the rule decides.🤖 Generated with Claude Code