From 147ff73dfe25349de0f3d75b7be226ff3e5dc347 Mon Sep 17 00:00:00 2001 From: tend-agent <270458913+tend-agent@users.noreply.github.com> Date: Tue, 1 Sep 2026 13:02:18 +0000 Subject: [PATCH 1/2] fix(code-review): stop the inline pass reading as the session's final output MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Output section is phrased for a subagent invocation — "return the findings to the caller". Run inline, which is what happens when the session spawns no subagent, there is no separate caller: the session is the caller, so "return to the caller" collapses into "emit as my message", and a session that has just produced its deliverable ends the turn. The review is never posted and the findings survive only in the session log. Name the inline case in the output contract: the findings are handed to the caller's next step, not to the reader. Add the reciprocal at the call site so step 5 names step 6 as what follows. --- plugins/tend-ci-runner/skills/code-review/SKILL.md | 2 ++ plugins/tend-ci-runner/skills/review/SKILL.md | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/tend-ci-runner/skills/code-review/SKILL.md b/plugins/tend-ci-runner/skills/code-review/SKILL.md index 1becb9ab..5727ebd2 100644 --- a/plugins/tend-ci-runner/skills/code-review/SKILL.md +++ b/plugins/tend-ci-runner/skills/code-review/SKILL.md @@ -94,3 +94,5 @@ On a core-logic change, take one more pass as a fresh reviewer holding the verif Return the findings to the caller as a list of at most 10 (at most 4 for a peripheral change), ranked most-severe first, each with `file`, `line`, `summary`, `failure_scenario`, and its verdict. If nothing survives verification, say so in one line. Don't call the `ReportFindings` tool and don't publish an artifact — the caller owns the output. Tell the caller which mode ran (fanned-out angles with a subagent verify, or a single inline pass) so it can weigh the findings — context for the caller, not content for the review it posts. + +**Running inline, this is a sub-step, not the answer.** When the pass runs in the caller's own session rather than a subagent, there is no separate caller to return to — "return the findings" means hand them to the caller's next step and continue there. A session that emits them as its final message ends with the caller's work unfinished and nothing posted, leaving the findings reachable only from the session log. diff --git a/plugins/tend-ci-runner/skills/review/SKILL.md b/plugins/tend-ci-runner/skills/review/SKILL.md index c76c46c1..c8ae22de 100644 --- a/plugins/tend-ci-runner/skills/review/SKILL.md +++ b/plugins/tend-ci-runner/skills/review/SKILL.md @@ -193,7 +193,7 @@ Scale its depth to how core the change is: - Peripheral or mechanical (config, dependency bumps, test-only, docs that don't assert how the code behaves): tell it the change is peripheral, so it runs the short angle set in one pass. - The project's core logic, or prose asserting how it behaves: tell it the change is core, so it fans the angles out and sweeps for gaps. Prose is checked by reading the code it describes, so a one-line Markdown diff can still be core. -What counts as core is repo-specific; let the project's own guidance (CLAUDE.md, a repo review skill) or your judgment decide. Both passes feed one verdict: fold its findings into the review you submit in step 6. It only reports back — it never posts a review, comment, or commit of its own, so the dedup and single-review path is preserved. +What counts as core is repo-specific; let the project's own guidance (CLAUDE.md, a repo review skill) or your judgment decide. Both passes feed one verdict: fold its findings into the review you submit in step 6. It only reports back — it never posts a review, comment, or commit of its own, so the dedup and single-review path is preserved. Its findings are not the review: when it returns, continue to step 6. ### 6. Submit From 8bbc18edfb6cd35560f5508d015e63755d0d828b Mon Sep 17 00:00:00 2001 From: tend-agent <270458913+tend-agent@users.noreply.github.com> Date: Tue, 1 Sep 2026 13:14:46 +0000 Subject: [PATCH 2/2] fix(code-review): key the sub-step rule on the caller, not on inline-ness The bolded lead-in read as unconditional for any inline run, but a directly-invoked `code-review` also runs inline with no caller to continue into. Combined with the file's opening "return findings; don't act on them" rule, that left the direct-invocation mode with no permitted way to finish. Key the condition on having a caller and name what the direct mode does. --- plugins/tend-ci-runner/skills/code-review/SKILL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/tend-ci-runner/skills/code-review/SKILL.md b/plugins/tend-ci-runner/skills/code-review/SKILL.md index 5727ebd2..5f5112da 100644 --- a/plugins/tend-ci-runner/skills/code-review/SKILL.md +++ b/plugins/tend-ci-runner/skills/code-review/SKILL.md @@ -95,4 +95,4 @@ Return the findings to the caller as a list of at most 10 (at most 4 for a perip Tell the caller which mode ran (fanned-out angles with a subagent verify, or a single inline pass) so it can weigh the findings — context for the caller, not content for the review it posts. -**Running inline, this is a sub-step, not the answer.** When the pass runs in the caller's own session rather than a subagent, there is no separate caller to return to — "return the findings" means hand them to the caller's next step and continue there. A session that emits them as its final message ends with the caller's work unfinished and nothing posted, leaving the findings reachable only from the session log. +**Running from a caller skill, this is a sub-step, not the answer.** When the pass runs in the caller's own session rather than a subagent, there is no separate caller to return to — "return the findings" means hand them to the caller's next step and continue there. A session that emits them as its final message ends with the caller's work unfinished and nothing posted, leaving the findings reachable only from the session log. Invoked directly, with no caller, the findings *are* the answer.