From e60014f74c4f3b1ef36198859f584ce087ca178d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 12 May 2026 11:22:35 +0000 Subject: [PATCH] docs(agent-team): document fail-loud dispatch input contract and pr_number hardening MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mirrors the fixes from #69 (fail loud on missing dispatch inputs, harden optional implementer pr_number) in the user-facing README: - Expand the "Input propagation" gotcha to describe the two failure modes (state:blocked comment when issue_number is present; missing_data / report_incomplete when it is absent) and call out that unresolved template literals are treated the same as missing values. - Add a "pr_number handling" gotcha documenting that blank *or* unresolved literal → new branch, not an update to an existing PR. Also fix a broken link in CONTRIBUTING.md: the "Publishing" section it pointed to was removed in v0.2 and never replaced. Co-Authored-By: Claude Sonnet 4.6 --- CONTRIBUTING.md | 2 +- catalog/agent-team/README.md | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1c2721e..bd968b3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -112,4 +112,4 @@ Branch naming conventions: ## Publishing (maintainers only) -See the [Publishing section of the README](README.md#publishing) for the steps to submit the plugin to the Claude plugin registry. +Submit the plugin to the Claude plugin registry by updating both `.claude-plugin/marketplace.json` and the entries on [claude-plugins.dev](https://claude-plugins.dev) and [ClaudePluginHub](https://claudepluginhub.com). Bump the version in `.claude-plugin/plugin.json` and tag the release before submitting. diff --git a/catalog/agent-team/README.md b/catalog/agent-team/README.md index 5490837..7bb6fef 100644 --- a/catalog/agent-team/README.md +++ b/catalog/agent-team/README.md @@ -111,7 +111,13 @@ Then apply the OAuth token tweak to each `.lock.yml` per [`skills/install-workfl - **Concurrency**: each workflow uses `concurrency: group: agent-team-issue-${issue_number}` so only one role runs at a time per issue. - **Max iterations**: default 3 (reviewer kickback → implementer). The counter lives on the `iteration` input passed through the dispatch chain, bumped exclusively by the reviewer on kickback. -- **Input propagation**: planner / implementer / reviewer must fail loudly if required `workflow_dispatch` inputs are missing. Do not rely on label search or recent-activity inference as a fallback. +- **Input propagation**: planner / implementer / reviewer fail loudly when required `workflow_dispatch` inputs are missing **or** arrive as an unresolved template literal (e.g. the string `${{ github.event.inputs.issue_number }}`). Failure behaviour: + - `issue_number` is present → adds `state:blocked` to the issue and posts `🛑 agent-team: workflow_dispatch inputs were not propagated. Re-dispatch with valid inputs.` + - `issue_number` is absent → calls `missing_data` / `report_incomplete` with reason `workflow_dispatch inputs were not propagated`. + + Never infer a missing value from labels or recent activity — always re-dispatch with explicit inputs. + +- **`pr_number` handling (implementer only)**: `pr_number` is optional (defaults to `""`). If the value is blank *or* is the unresolved literal `${{ github.event.inputs.pr_number }}`, the implementer creates a new branch and PR. Only a real PR number routes the run to push updates onto an existing PR branch. - **Non-UI only**: no screenshot capture. Reviewer validates via tests/CI status + reading the diff. - **Cost**: a single task can easily spend 4× the tokens of a monolithic workflow. Set `timeout-minutes` conservatively and monitor the first few runs. - **No auto-merge**: the reviewer approves but never merges. Humans merge.