Skip to content

Send a Session-Prompt Command in a Plain Message, Never in a Blocking Prompt - #3646

Merged
ptr727 merged 11 commits into
developfrom
feature/auto-3638
Oct 30, 2026
Merged

ptr727 merged 11 commits into
developfrom
feature/auto-3638

Conversation

@ptr727

@ptr727 ptr727 commented Oct 30, 2026 •

Copy link
Copy Markdown
Owner

Summary

Splits the GOVERNANCE.md "Communicating with the User" command bullet by where the command runs.

  • The bullet opens with a placement test. A command runs outside this session where this session's input line cannot run it or cannot hold its effect, such as one waiting on typed input, one meant for another host, or one setting a variable the session reads at launch. Every other one runs at the session's input line, where that line can run a command.
  • A command run outside the session stays in the question's own text, as before.
  • A command run at the session's input line, a ! 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.
  • The "Ask every question", "Raise work blocked on the user", and parked-queue handoff bullets each name such a turn as an exception that carries its questions in that message. The session-handoff skill's own steps 4 and 5 and "The Parked Decision Queue" say the same.
  • The agent-conduct and session-handoff include copies are regenerated with scripts/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 introduced finding, declined with evidence below.

  1. 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

ptr727 and others added 3 commits October 30, 2026 00:06
… 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>
Copilot AI lite review requested due to automatic review settings October 30, 2026 07:13
@coderabbitai

coderabbitai Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ptr727

ptr727 commented Oct 30, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head f9d60d8d76d32b20da1688dab509a8b8f884366b, the content this pull request carries at that commit against develop, and it recorded 3 findings.

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>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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.md regarding 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

Comment thread GOVERNANCE.md Resolved
Comment thread GOVERNANCE.md Resolved
Comment thread GOVERNANCE.md Resolved
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

codecov Bot commented Oct 30, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.70%. Comparing base (b38e084) to head (f091795).
⚠️ Report is 22 commits behind head on develop.

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              
Flag Coverage Δ
python-3.13 81.70% <ø> (+0.09%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

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>
@ptr727

ptr727 commented Oct 30, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head 15804970d37c06449dfa689e267a6aae4d3a0496, the content this pull request carries at that commit against develop, and it recorded 2 findings.

ptr727 and others added 2 commits October 30, 2026 00:23
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>
@ptr727

ptr727 commented Oct 30, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head 6816072f6531a918981100d33eb9ce42e8217c00, the content this pull request carries at that commit against develop, and it recorded 2 findings.

ptr727 and others added 2 commits October 30, 2026 00:29
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>
@ptr727

ptr727 commented Oct 30, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head 1b97c3bc6068dac4df43143798a3a8ac36ed7c86, the content this pull request carries at that commit against develop, and it recorded 2 findings.

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>
@ptr727

ptr727 commented Oct 30, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head f091795b6fdeef838bfbd63661aaaf58af728383, the content this pull request carries at that commit against develop, and it recorded 1 finding.

@ptr727
ptr727 merged commit d15cbf8 into develop Oct 30, 2026
13 checks passed
@ptr727
ptr727 deleted the feature/auto-3638 branch October 30, 2026 07:52
ptr727 added a commit that referenced this pull request Oct 30, 2026
…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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants