Autonomous Agents Agentic Workflow
Apply Review Feedback — Autonomous Agents Agentic Workflow
Read review feedback, apply changes to existing PR, push updates
sidebutton install agents A software engineer agent uses this chain to act on reviewer comments on one of its existing PRs. It reads every unresolved review thread, understands the requested change, edits the affected files, runs the local test suite, and pushes updated commits. Each thread is either addressed with a fix or replied to with a rationale for not changing it.
The workflow is scoped strictly to the PR under review — it does not open new PRs or take on adjacent work. Run it whenever a human or QA agent has left feedback that needs developer action and the PR is still open.
The final ticket comment carries an explicit verdict token — FEEDBACK_APPLIED once every thread is addressed and pushed, or BLOCKED when a missing decision, credential, or access stops the work — so a portal playbook step can content-route on the outcome (metadata.verdicts).
Steps
- 1. Open a terminal
- title
- Agent: SE Followup
- cwd
- {{entry_path}}
terminal.open - 2. Run a terminal command
- cmd
- |
terminal.run
Workflow definition
schema_version: 1
id: agent_se_followup
title: "Apply Review Feedback"
description: "Read review feedback, apply changes to existing PR, push updates"
overview: |
A software engineer agent uses this chain to act on reviewer comments on one of its existing PRs. It reads every unresolved review thread, understands the requested change, edits the affected files, runs the local test suite, and pushes updated commits. Each thread is either addressed with a fix or replied to with a rationale for not changing it.
The workflow is scoped strictly to the PR under review — it does not open new PRs or take on adjacent work. Run it whenever a human or QA agent has left feedback that needs developer action and the PR is still open.
The final ticket comment carries an explicit verdict token — FEEDBACK_APPLIED once every thread is addressed and pushed, or BLOCKED when a missing decision, credential, or access stops the work — so a portal playbook step can content-route on the outcome (metadata.verdicts).
category:
level: pipeline
domain: engineering
metadata:
agent: true
role: se
# Gate-verdict vocabulary for portal playbook steps (PLAYBOOKS.md §5) — matched from the
# step's ticket comment; declaring it here is what makes this workflow content-routable.
verdicts: [FEEDBACK_APPLIED, BLOCKED]
params:
agentic_app:
type: string
default: "cc"
description: "Agent-app slug selecting the per-run env file ~/.agent-env.d/<slug> (AAP-C); 'cc'/subscription clears provider vars"
ticket_url:
type: string
description: "The ticket's URL — a Jira / Linear / Notion issue, or a SideButton portal issue (`/api/issues/<key>`)"
hint:
type: string
default: ""
description: "Optional extra instructions for the agent"
entry_path:
type: string
default: "~/workspace"
description: "Working directory for the agent"
steps:
- type: terminal.open
title: "Agent: SE Followup"
cwd: "{{entry_path}}"
- type: terminal.run
cmd: |
source ~/.agent-env
# AAP-C (SCRUM-1506) + AAP-17 (SCRUM-1653): clear EVERY provider var an agent-app can deliver so
# none hijacks/poisons a subscription run. A stray global ANTHROPIC_MODEL / ANTHROPIC_SMALL_FAST_MODEL
# needs no CLAUDE_CODE_USE_* flag, so the old ${!CLAUDE_CODE_USE_@} glob never caught it — it survived
# into the run and 404-ed aux/small-fast calls against api.anthropic.com. This explicit list mirrors
# AGENT_APP_ENV_KEYS 1:1 (the-assistant website/src/lib/cloud/agent-app-env.ts — the single source of
# truth; a parity test in each repo guards the two from drifting). Explicit over a glob: the union has
# non-ANTHROPIC_ members (AWS_REGION, AWS_PROFILE, CLOUD_ML_REGION, CLAUDE_CODE_MAX_OUTPUT_TOKENS) and
# a ${!AWS_@} glob would over-clear unrelated creds. Then source the per-run app env by slug when it
# exists; no file => subscription/default. base/19-secrets stages ~/.agent-env.d/<slug>.
unset \
ANTHROPIC_API_KEY ANTHROPIC_BASE_URL ANTHROPIC_AUTH_TOKEN CCR_CONFIG_B64 \
CLAUDE_CODE_USE_BEDROCK AWS_REGION AWS_PROFILE ANTHROPIC_MODEL \
ANTHROPIC_SMALL_FAST_MODEL_AWS_REGION ANTHROPIC_SMALL_FAST_MODEL CLAUDE_CODE_MAX_OUTPUT_TOKENS \
CLAUDE_CODE_USE_VERTEX CLOUD_ML_REGION ANTHROPIC_VERTEX_PROJECT_ID ANTHROPIC_VERTEX_BASE_URL \
CLAUDE_CODE_USE_FOUNDRY ANTHROPIC_FOUNDRY_RESOURCE ANTHROPIC_FOUNDRY_BASE_URL \
ANTHROPIC_DEFAULT_OPUS_MODEL ANTHROPIC_DEFAULT_SONNET_MODEL ANTHROPIC_DEFAULT_HAIKU_MODEL
if [ -f "$HOME/.agent-env.d/{{agentic_app}}" ]; then
source "$HOME/.agent-env.d/{{agentic_app}}"
fi
claude --dangerously-skip-permissions "$(cat <<'SB_PROMPT'
read ticket with attachments and focus on recent comments - {{ticket_url}}. if it fails, stop and report the error.
A `/api/issues/` URL is a SideButton portal ticket: read and comment on it over HTTPS with `SIDEBUTTON_AGENT_TOKEN` (see the portal-tickets section of your skill).
find the linked PR and read review comments to understand requested changes.
learn how to SE relevant parts, check out the existing branch, and apply the requested changes.
push updates to the PR.
{{hint}}
As your FINAL action, write ONE comment to the ticket with: each review item addressed (file refs), confirmation that changes are pushed, and a final verdict line carrying the exact token FEEDBACK_APPLIED. if a missing decision, credential, or access stops the work entirely, state what blocks you and end with the token BLOCKED instead. the upper-case token must appear verbatim - it is machine-matched by the portal gate.
UNATTENDED RUN — this is a dispatched job: nobody is watching this terminal and nobody will answer, so never call AskUserQuestion and never end your turn by putting a question to the operator. Apply the policy stated above and carry it out as written, including where carrying it out is destructive — the call to run this job was made when it was dispatched, and it is not yours to re-take. Where that policy leaves a genuine choice, make it yourself and keep going; only where it is genuinely SILENT, prefer the option that does not destroy work nobody can recreate. Say what you decided and what you skipped and why — but INSIDE the report this prompt already specifies: wherever a report shape, a token vocabulary or a last-line verdict is stated above, that format still binds exactly as written, and this clause adds no section, no token and nothing after the last line. Questions the deliverable is MEANT to contain are content, not an unanswered prompt. Asking does not pause the job either: an unanswered prompt is auto-answered from the option ordering once the unattended wait budget lapses (KAN-204), so asking only burns ~15 minutes of the run and hands a real decision to a default.
SB_PROMPT
)"