From b1e5ef7cc37021635b36f986a740844651a18bb2 Mon Sep 17 00:00:00 2001 From: Gunju Kim Date: Thu, 12 Mar 2026 04:52:10 +0000 Subject: [PATCH 1/6] Add open-source maintainer toolkit example (examples/09-oss-maintainer-kit) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add a drop-in, comment-triggered toolkit for AI-assisted open-source maintenance. Includes five TaskSpawners covering the full maintainer workflow: - triage-spawner: /bot triage — classify and prioritize issues - worker-spawner: /bot fix — pick up issues and create PRs - pr-responder-spawner: /bot update — address PR review feedback - stale-issue-spawner: cron — weekly stale issue cleanup - contributor-guide-spawner: /bot guide — onboarding help Also includes shared Workspace, AgentConfig, and Secret templates. Updates the examples README table to list the new example. Co-Authored-By: Claude Opus 4.6 --- examples/09-oss-maintainer-kit/README.md | 96 +++++++++++++++++++ .../09-oss-maintainer-kit/agentconfig.yaml | 20 ++++ .../contributor-guide-spawner.yaml | 42 ++++++++ .../credentials-secret.yaml | 7 ++ .../github-token-secret.yaml | 7 ++ .../pr-responder-spawner.yaml | 51 ++++++++++ .../stale-issue-spawner.yaml | 36 +++++++ .../09-oss-maintainer-kit/triage-spawner.yaml | 47 +++++++++ .../09-oss-maintainer-kit/worker-spawner.yaml | 45 +++++++++ examples/09-oss-maintainer-kit/workspace.yaml | 8 ++ examples/README.md | 1 + 11 files changed, 360 insertions(+) create mode 100644 examples/09-oss-maintainer-kit/README.md create mode 100644 examples/09-oss-maintainer-kit/agentconfig.yaml create mode 100644 examples/09-oss-maintainer-kit/contributor-guide-spawner.yaml create mode 100644 examples/09-oss-maintainer-kit/credentials-secret.yaml create mode 100644 examples/09-oss-maintainer-kit/github-token-secret.yaml create mode 100644 examples/09-oss-maintainer-kit/pr-responder-spawner.yaml create mode 100644 examples/09-oss-maintainer-kit/stale-issue-spawner.yaml create mode 100644 examples/09-oss-maintainer-kit/triage-spawner.yaml create mode 100644 examples/09-oss-maintainer-kit/worker-spawner.yaml create mode 100644 examples/09-oss-maintainer-kit/workspace.yaml diff --git a/examples/09-oss-maintainer-kit/README.md b/examples/09-oss-maintainer-kit/README.md new file mode 100644 index 0000000..aad4040 --- /dev/null +++ b/examples/09-oss-maintainer-kit/README.md @@ -0,0 +1,96 @@ +# 09 — Open-Source Maintainer Kit + +A drop-in toolkit of comment-triggered TaskSpawners that automate common +open-source maintenance tasks: issue triage, auto-fix, PR feedback loops, +stale issue cleanup, and contributor onboarding. + +## Use Case + +Maintainers type `/bot triage`, `/bot fix`, `/bot update`, or `/bot guide` on +any issue or PR. Kelos picks up the comment and spawns an agent Task +automatically. No label taxonomy required — just comments. + +This is a **multi-agent orchestration** example: five TaskSpawners coordinate +the full issue-to-PR-to-review lifecycle. + +## Resources + +| File | Kind | Purpose | +|------|------|---------| +| `github-token-secret.yaml` | Secret | GitHub token for cloning, PR creation, and polling | +| `credentials-secret.yaml` | Secret | Anthropic API key for the agent | +| `workspace.yaml` | Workspace | Git repository to clone into each Task | +| `agentconfig.yaml` | AgentConfig | Shared instructions for all agents | +| `triage-spawner.yaml` | TaskSpawner | `/bot triage` — classify and prioritize issues | +| `worker-spawner.yaml` | TaskSpawner | `/bot fix` — pick up issues and create PRs | +| `pr-responder-spawner.yaml` | TaskSpawner | `/bot update` — address PR review feedback | +| `stale-issue-spawner.yaml` | TaskSpawner | Cron — weekly stale issue cleanup | +| `contributor-guide-spawner.yaml` | TaskSpawner | `/bot guide` — onboarding help for contributors | + +## How It Works + +``` +Maintainer comments "/bot triage" on issue + └── triage-spawner → agent classifies, labels, and comments + +Maintainer comments "/bot fix" on issue + └── worker-spawner → agent creates branch, implements fix, opens PR + +Reviewer comments "/bot update" on PR + └── pr-responder-spawner → agent addresses review feedback, pushes to branch + +Every Monday at 9am + └── stale-issue-spawner → agent reviews inactive issues, posts updates + +Maintainer comments "/bot guide" on good-first-issue + └── contributor-guide-spawner → agent posts a contributor guide comment +``` + +## Steps + +1. **Edit the secrets** — replace placeholders in `github-token-secret.yaml` + and `credentials-secret.yaml` with your real tokens. + +2. **Edit `workspace.yaml`** — set your repository URL. + +3. **Review `agentconfig.yaml`** — customize the instructions for your project. + +4. **Apply the resources:** + +```bash +kubectl apply -f examples/09-oss-maintainer-kit/ +``` + +5. **Verify the spawners are running:** + +```bash +kubectl get taskspawners -w +``` + +6. **Test it** — comment `/bot triage` on an open issue in your repository. + The TaskSpawner picks it up on the next poll and creates a Task. + +7. **Watch spawned Tasks:** + +```bash +kubectl get tasks -w +``` + +8. **Cleanup:** + +```bash +kubectl delete -f examples/09-oss-maintainer-kit/ +``` + +## Customization + +- **Swap agent type** — change `type` in any spawner's `taskTemplate` to use + `codex`, `gemini`, or another supported agent. +- **Add label filters** — add `labels` or `excludeLabels` to any spawner to + narrow which issues/PRs it responds to. +- **Adjust concurrency** — increase `maxConcurrency` for higher throughput or + decrease it to limit resource usage. +- **Change the trigger comment** — replace `/bot triage` with any prefix your + team prefers (e.g., `/kelos triage`, `/ai triage`). +- **Layer in label-based triggers** — for projects with an existing label + taxonomy, you can remove `triggerComment` and use `labels` instead. diff --git a/examples/09-oss-maintainer-kit/agentconfig.yaml b/examples/09-oss-maintainer-kit/agentconfig.yaml new file mode 100644 index 0000000..e210236 --- /dev/null +++ b/examples/09-oss-maintainer-kit/agentconfig.yaml @@ -0,0 +1,20 @@ +apiVersion: kelos.dev/v1alpha1 +kind: AgentConfig +metadata: + name: oss-maintainer-agent +spec: + agentsMD: | + # Open Source Maintainer Agent + + You are running in an ephemeral container. Persist work through + PRs, issues, or comments — file system changes disappear after completion. + + ## Communication + - Be welcoming and respectful to all contributors + - Use clear, concise language + - Link to relevant documentation when possible + + ## Standards + - Check for existing issues/PRs before creating new ones + - Keep changes minimal and focused + - Follow the project's existing conventions (check CONTRIBUTING.md, Makefile, etc.) diff --git a/examples/09-oss-maintainer-kit/contributor-guide-spawner.yaml b/examples/09-oss-maintainer-kit/contributor-guide-spawner.yaml new file mode 100644 index 0000000..6a9557b --- /dev/null +++ b/examples/09-oss-maintainer-kit/contributor-guide-spawner.yaml @@ -0,0 +1,42 @@ +apiVersion: kelos.dev/v1alpha1 +kind: TaskSpawner +metadata: + name: oss-contributor-guide +spec: + when: + githubIssues: + state: open + triggerComment: /bot guide + excludeComments: + - /bot done + maxConcurrency: 2 + taskTemplate: + type: claude-code + model: sonnet + workspaceRef: + name: my-project + credentials: + type: api-key + secretRef: + name: agent-credentials + agentConfigRef: + name: oss-maintainer-agent + promptTemplate: | + Help potential contributors get started with issue #{{.Number}}. + + Issue: {{.Title}} + {{.Body}} + + Steps: + 1. Understand what needs to be done + 2. Explore the codebase to find relevant files and code paths + 3. Post a contributor guide comment that includes: + - Which files to look at (with line references) + - The expected approach (high-level steps) + - How to test the changes locally + - Links to relevant documentation or similar past PRs + + Rules: + - Write for someone who may have never contributed to this project + - Include concrete file paths and function names + - If the issue is too complex for a first-time contributor, say so diff --git a/examples/09-oss-maintainer-kit/credentials-secret.yaml b/examples/09-oss-maintainer-kit/credentials-secret.yaml new file mode 100644 index 0000000..51e2cd3 --- /dev/null +++ b/examples/09-oss-maintainer-kit/credentials-secret.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Secret +metadata: + name: agent-credentials +type: Opaque +stringData: + ANTHROPIC_API_KEY: "" # TODO: paste your Anthropic API key diff --git a/examples/09-oss-maintainer-kit/github-token-secret.yaml b/examples/09-oss-maintainer-kit/github-token-secret.yaml new file mode 100644 index 0000000..138c5c2 --- /dev/null +++ b/examples/09-oss-maintainer-kit/github-token-secret.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Secret +metadata: + name: github-token +type: Opaque +stringData: + GITHUB_TOKEN: "" # TODO: paste a GitHub PAT with repo permissions diff --git a/examples/09-oss-maintainer-kit/pr-responder-spawner.yaml b/examples/09-oss-maintainer-kit/pr-responder-spawner.yaml new file mode 100644 index 0000000..8713f3f --- /dev/null +++ b/examples/09-oss-maintainer-kit/pr-responder-spawner.yaml @@ -0,0 +1,51 @@ +apiVersion: kelos.dev/v1alpha1 +kind: TaskSpawner +metadata: + name: oss-pr-responder +spec: + when: + githubPullRequests: + state: open + draft: false + triggerComment: /bot update + excludeComments: + - /bot needs-input + maxConcurrency: 2 + taskTemplate: + type: claude-code + model: opus + workspaceRef: + name: my-project + credentials: + type: api-key + secretRef: + name: agent-credentials + agentConfigRef: + name: oss-maintainer-agent + branch: "{{.Branch}}" + promptTemplate: | + You are updating an existing PR in response to review feedback. + + PR #{{.Number}}: {{.Title}} + Branch: {{.Branch}} + Review state: {{.ReviewState}} + + {{if .ReviewComments}} + Inline review comments: + {{.ReviewComments}} + {{end}} + {{if .Comments}} + PR conversation: + {{.Comments}} + {{end}} + + Steps: + 1. Check out the existing branch and read the current diff + 2. Address each review comment with minimal, focused changes + 3. Run tests to verify your changes + 4. Commit and push to the same branch + 5. Post a comment summarizing what you changed + + Rules: + - Make incremental changes — do NOT rewrite from scratch + - If you need maintainer input, post "/bot needs-input" and explain why diff --git a/examples/09-oss-maintainer-kit/stale-issue-spawner.yaml b/examples/09-oss-maintainer-kit/stale-issue-spawner.yaml new file mode 100644 index 0000000..e676a97 --- /dev/null +++ b/examples/09-oss-maintainer-kit/stale-issue-spawner.yaml @@ -0,0 +1,36 @@ +apiVersion: kelos.dev/v1alpha1 +kind: TaskSpawner +metadata: + name: oss-stale-cleanup +spec: + when: + cron: + schedule: "0 9 * * 1" # Every Monday at 9am + maxConcurrency: 1 + taskTemplate: + type: claude-code + model: sonnet + workspaceRef: + name: my-project + credentials: + type: api-key + secretRef: + name: agent-credentials + agentConfigRef: + name: oss-maintainer-agent + promptTemplate: | + Review open issues with no activity in 90+ days. + + Steps: + 1. List issues with no recent activity using gh CLI + 2. For each stale issue: + - Check if the issue is still relevant + - Check if a PR already addresses it + - If clearly outdated, comment explaining why and suggest closing + - If unclear, ask the reporter for an update + 3. Process at most 5 issues per run to avoid noise + + Rules: + - Never close issues directly — only comment + - Be respectful — someone may still care about the issue + - Skip issues with "pinned" or "keep-open" labels diff --git a/examples/09-oss-maintainer-kit/triage-spawner.yaml b/examples/09-oss-maintainer-kit/triage-spawner.yaml new file mode 100644 index 0000000..c59787e --- /dev/null +++ b/examples/09-oss-maintainer-kit/triage-spawner.yaml @@ -0,0 +1,47 @@ +apiVersion: kelos.dev/v1alpha1 +kind: TaskSpawner +metadata: + name: oss-triage +spec: + when: + githubIssues: + state: open + triggerComment: /bot triage + excludeComments: + - /bot done + maxConcurrency: 4 + taskTemplate: + type: claude-code + model: sonnet + workspaceRef: + name: my-project + credentials: + type: api-key + secretRef: + name: agent-credentials + agentConfigRef: + name: oss-maintainer-agent + promptTemplate: | + You are an issue triage agent for an open-source project. + + Analyze issue #{{.Number}}: {{.Title}} + + {{.Body}} + {{if .Comments}} + Comments: + {{.Comments}} + {{end}} + + Tasks: + 1. Classify the issue (bug, feature request, question, documentation) + 2. Check if this is a duplicate of any open issue + 3. Assess severity and priority + 4. If it's a question, provide a helpful answer directly + 5. Post a triage comment with your analysis + 6. Apply appropriate labels if the project uses them + + Rules: + - Be welcoming — this may be someone's first open-source interaction + - For duplicates, link to the original issue and suggest closing + - For questions answered in docs, link to the relevant documentation + - Do NOT close issues — only comment and label diff --git a/examples/09-oss-maintainer-kit/worker-spawner.yaml b/examples/09-oss-maintainer-kit/worker-spawner.yaml new file mode 100644 index 0000000..0d18af6 --- /dev/null +++ b/examples/09-oss-maintainer-kit/worker-spawner.yaml @@ -0,0 +1,45 @@ +apiVersion: kelos.dev/v1alpha1 +kind: TaskSpawner +metadata: + name: oss-worker +spec: + when: + githubIssues: + state: open + triggerComment: /bot fix + excludeComments: + - /bot needs-input + maxConcurrency: 2 + taskTemplate: + type: claude-code + model: opus + workspaceRef: + name: my-project + credentials: + type: api-key + secretRef: + name: agent-credentials + agentConfigRef: + name: oss-maintainer-agent + branch: "bot/fix-{{.Number}}" + promptTemplate: | + Fix issue #{{.Number}}: {{.Title}} + + {{.Body}} + {{if .Comments}} + Comments: + {{.Comments}} + {{end}} + + Steps: + 1. Understand the issue from the description and comments + 2. Explore the codebase to find the relevant code + 3. Implement a minimal, focused fix + 4. Run tests if a test command is documented + 5. Create a PR referencing the issue + + Rules: + - Keep changes minimal — fix only what the issue asks for + - Do not refactor surrounding code + - If you cannot fix it confidently, comment on the issue explaining why + and post "/bot needs-input" diff --git a/examples/09-oss-maintainer-kit/workspace.yaml b/examples/09-oss-maintainer-kit/workspace.yaml new file mode 100644 index 0000000..77dff49 --- /dev/null +++ b/examples/09-oss-maintainer-kit/workspace.yaml @@ -0,0 +1,8 @@ +apiVersion: kelos.dev/v1alpha1 +kind: Workspace +metadata: + name: my-project +spec: + repo: https://github.com/owner/repo.git # TODO: replace with your repository URL + secretRef: + name: github-token diff --git a/examples/README.md b/examples/README.md index 405a43a..a3a39f1 100644 --- a/examples/README.md +++ b/examples/README.md @@ -19,6 +19,7 @@ Ready-to-use patterns and YAML manifests for orchestrating AI agents with Kelos. | [06-fork-workflow](06-fork-workflow/) | Discover upstream issues and work in a fork | | [07-task-pipeline](07-task-pipeline/) | Chain Tasks with `dependsOn` and pass results between stages | | [08-task-with-kelos-skill](08-task-with-kelos-skill/) | Give an agent the Kelos skill for authoring and debugging resources | +| [09-oss-maintainer-kit](09-oss-maintainer-kit/) | Drop-in toolkit for AI-assisted open-source maintenance with comment-triggered agents | ## How to Use From 925811d9ef09d51c3f8d32128b7f82c21927c171 Mon Sep 17 00:00:00 2001 From: Gunju Kim Date: Thu, 12 Mar 2026 05:30:18 +0000 Subject: [PATCH 2/6] Add /bot done stop signals to prevent spawner re-triggering Each issue-triggered spawner now instructs the agent to post "/bot done" after completing its task, and the worker-spawner adds "/bot done" to its excludeComments list. This prevents the spawner from creating duplicate tasks on subsequent poll cycles. Co-Authored-By: Claude Opus 4.6 --- examples/09-oss-maintainer-kit/contributor-guide-spawner.yaml | 2 ++ examples/09-oss-maintainer-kit/triage-spawner.yaml | 2 ++ examples/09-oss-maintainer-kit/worker-spawner.yaml | 3 +++ 3 files changed, 7 insertions(+) diff --git a/examples/09-oss-maintainer-kit/contributor-guide-spawner.yaml b/examples/09-oss-maintainer-kit/contributor-guide-spawner.yaml index 6a9557b..cf4b9b0 100644 --- a/examples/09-oss-maintainer-kit/contributor-guide-spawner.yaml +++ b/examples/09-oss-maintainer-kit/contributor-guide-spawner.yaml @@ -40,3 +40,5 @@ spec: - Write for someone who may have never contributed to this project - Include concrete file paths and function names - If the issue is too complex for a first-time contributor, say so + - After posting the guide, post "/bot done" as a separate comment on + the issue so the spawner does not re-trigger diff --git a/examples/09-oss-maintainer-kit/triage-spawner.yaml b/examples/09-oss-maintainer-kit/triage-spawner.yaml index c59787e..a14c4e6 100644 --- a/examples/09-oss-maintainer-kit/triage-spawner.yaml +++ b/examples/09-oss-maintainer-kit/triage-spawner.yaml @@ -45,3 +45,5 @@ spec: - For duplicates, link to the original issue and suggest closing - For questions answered in docs, link to the relevant documentation - Do NOT close issues — only comment and label + - After completing triage, post "/bot done" as a separate comment on + the issue so the spawner does not re-trigger diff --git a/examples/09-oss-maintainer-kit/worker-spawner.yaml b/examples/09-oss-maintainer-kit/worker-spawner.yaml index 0d18af6..9b2fd01 100644 --- a/examples/09-oss-maintainer-kit/worker-spawner.yaml +++ b/examples/09-oss-maintainer-kit/worker-spawner.yaml @@ -9,6 +9,7 @@ spec: triggerComment: /bot fix excludeComments: - /bot needs-input + - /bot done maxConcurrency: 2 taskTemplate: type: claude-code @@ -43,3 +44,5 @@ spec: - Do not refactor surrounding code - If you cannot fix it confidently, comment on the issue explaining why and post "/bot needs-input" + - After successfully creating the PR, post "/bot done" as a separate + comment on the issue so the spawner does not re-trigger From 1fa25eb31cbc8bad221e8aad0e980f59663bd488 Mon Sep 17 00:00:00 2001 From: Gunju Kim Date: Thu, 12 Mar 2026 06:08:30 +0000 Subject: [PATCH 3/6] Add code review spawner to OSS maintainer kit Add a new code-review-spawner.yaml that triggers on /bot review comments on open PRs. The agent reviews the diff for correctness, bugs, security issues, test coverage, and style, then posts inline review comments. This fills the gap between creating a PR (worker) and responding to review feedback (pr-responder). Update README to document the new spawner and reflect six total TaskSpawners. Co-Authored-By: Claude Opus 4.6 --- examples/09-oss-maintainer-kit/README.md | 16 ++++-- .../code-review-spawner.yaml | 57 +++++++++++++++++++ 2 files changed, 67 insertions(+), 6 deletions(-) create mode 100644 examples/09-oss-maintainer-kit/code-review-spawner.yaml diff --git a/examples/09-oss-maintainer-kit/README.md b/examples/09-oss-maintainer-kit/README.md index aad4040..d0f88dd 100644 --- a/examples/09-oss-maintainer-kit/README.md +++ b/examples/09-oss-maintainer-kit/README.md @@ -1,16 +1,16 @@ # 09 — Open-Source Maintainer Kit A drop-in toolkit of comment-triggered TaskSpawners that automate common -open-source maintenance tasks: issue triage, auto-fix, PR feedback loops, -stale issue cleanup, and contributor onboarding. +open-source maintenance tasks: issue triage, auto-fix, code review, PR +feedback loops, stale issue cleanup, and contributor onboarding. ## Use Case -Maintainers type `/bot triage`, `/bot fix`, `/bot update`, or `/bot guide` on -any issue or PR. Kelos picks up the comment and spawns an agent Task -automatically. No label taxonomy required — just comments. +Maintainers type `/bot triage`, `/bot fix`, `/bot review`, `/bot update`, or +`/bot guide` on any issue or PR. Kelos picks up the comment and spawns an +agent Task automatically. No label taxonomy required — just comments. -This is a **multi-agent orchestration** example: five TaskSpawners coordinate +This is a **multi-agent orchestration** example: six TaskSpawners coordinate the full issue-to-PR-to-review lifecycle. ## Resources @@ -23,6 +23,7 @@ the full issue-to-PR-to-review lifecycle. | `agentconfig.yaml` | AgentConfig | Shared instructions for all agents | | `triage-spawner.yaml` | TaskSpawner | `/bot triage` — classify and prioritize issues | | `worker-spawner.yaml` | TaskSpawner | `/bot fix` — pick up issues and create PRs | +| `code-review-spawner.yaml` | TaskSpawner | `/bot review` — automated code review on PRs | | `pr-responder-spawner.yaml` | TaskSpawner | `/bot update` — address PR review feedback | | `stale-issue-spawner.yaml` | TaskSpawner | Cron — weekly stale issue cleanup | | `contributor-guide-spawner.yaml` | TaskSpawner | `/bot guide` — onboarding help for contributors | @@ -36,6 +37,9 @@ Maintainer comments "/bot triage" on issue Maintainer comments "/bot fix" on issue └── worker-spawner → agent creates branch, implements fix, opens PR +Maintainer comments "/bot review" on PR + └── code-review-spawner → agent reviews the diff and posts review comments + Reviewer comments "/bot update" on PR └── pr-responder-spawner → agent addresses review feedback, pushes to branch diff --git a/examples/09-oss-maintainer-kit/code-review-spawner.yaml b/examples/09-oss-maintainer-kit/code-review-spawner.yaml new file mode 100644 index 0000000..08a52bb --- /dev/null +++ b/examples/09-oss-maintainer-kit/code-review-spawner.yaml @@ -0,0 +1,57 @@ +apiVersion: kelos.dev/v1alpha1 +kind: TaskSpawner +metadata: + name: oss-code-reviewer +spec: + when: + githubPullRequests: + state: open + draft: false + triggerComment: /bot review + excludeComments: + - /bot done + maxConcurrency: 2 + taskTemplate: + type: claude-code + model: opus + workspaceRef: + name: my-project + credentials: + type: api-key + secretRef: + name: agent-credentials + agentConfigRef: + name: oss-maintainer-agent + branch: "{{.Branch}}" + promptTemplate: | + You are a code reviewer for an open-source project. + + PR #{{.Number}}: {{.Title}} + Branch: {{.Branch}} + + {{if .Comments}} + PR conversation: + {{.Comments}} + {{end}} + + Steps: + 1. Check out the PR branch and read the full diff against the base branch + 2. Understand the intent of the changes from the PR description and comments + 3. Review the code for: + - Correctness — does the code do what it claims? + - Bugs — potential nil dereferences, race conditions, off-by-one errors + - Security — injection, leaked credentials, unsafe operations + - Tests — are changes adequately tested? + - Style — does the code follow the project's existing conventions? + 4. Post a review comment summarizing your findings + 5. If there are specific issues, use inline review comments on the relevant lines + 6. After posting the review, post "/bot done" as a separate comment on + the PR so the spawner does not re-trigger + + Rules: + - Focus on substantive issues — do not nitpick formatting or style preferences + that are not part of the project's established conventions + - Acknowledge what the PR does well before listing issues + - If the code looks good, say so — not every review needs to request changes + - Be constructive — suggest fixes, not just problems + - If you need more context, post "/bot needs-input" and explain what you need From d1b9b65c977ea7834a3063168e2f4d6a331cee5b Mon Sep 17 00:00:00 2001 From: Gunju Kim Date: Thu, 12 Mar 2026 06:09:19 +0000 Subject: [PATCH 4/6] Add /bot needs-input to code-review-spawner excludeComments For consistency with other spawners that reference /bot needs-input in their prompt rules, add it to excludeComments so the spawner does not re-trigger after the agent requests more context. Co-Authored-By: Claude Opus 4.6 --- examples/09-oss-maintainer-kit/code-review-spawner.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/09-oss-maintainer-kit/code-review-spawner.yaml b/examples/09-oss-maintainer-kit/code-review-spawner.yaml index 08a52bb..2c2b493 100644 --- a/examples/09-oss-maintainer-kit/code-review-spawner.yaml +++ b/examples/09-oss-maintainer-kit/code-review-spawner.yaml @@ -10,6 +10,7 @@ spec: triggerComment: /bot review excludeComments: - /bot done + - /bot needs-input maxConcurrency: 2 taskTemplate: type: claude-code From 65a7618f079c8fd4964963cd6538539e8089ea29 Mon Sep 17 00:00:00 2001 From: Gunju Kim Date: Thu, 12 Mar 2026 06:13:07 +0000 Subject: [PATCH 5/6] Add /bot done stop signal to pr-responder-spawner Per maintainer feedback, the pr-responder should also post /bot done after completing its update. Maintainers can resume with another /bot update comment when needed. Co-Authored-By: Claude Opus 4.6 --- examples/09-oss-maintainer-kit/pr-responder-spawner.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/examples/09-oss-maintainer-kit/pr-responder-spawner.yaml b/examples/09-oss-maintainer-kit/pr-responder-spawner.yaml index 8713f3f..974beb3 100644 --- a/examples/09-oss-maintainer-kit/pr-responder-spawner.yaml +++ b/examples/09-oss-maintainer-kit/pr-responder-spawner.yaml @@ -10,6 +10,7 @@ spec: triggerComment: /bot update excludeComments: - /bot needs-input + - /bot done maxConcurrency: 2 taskTemplate: type: claude-code @@ -49,3 +50,5 @@ spec: Rules: - Make incremental changes — do NOT rewrite from scratch - If you need maintainer input, post "/bot needs-input" and explain why + - After completing the update, post "/bot done" as a separate comment on + the PR so the spawner does not re-trigger From 4b14a14ea7e9c74195bbf65acea97acfbbdf015e Mon Sep 17 00:00:00 2001 From: Gunju Kim Date: Mon, 16 Mar 2026 22:24:22 +0000 Subject: [PATCH 6/6] Fix consistency issues in OSS maintainer kit examples Add missing /bot needs-input to excludeComments in triage-spawner and contributor-guide-spawner to match other spawners and prevent re-triggering. Standardize excludeComments ordering across all spawners. Add missing ref: main to workspace.yaml to match other example conventions. Co-Authored-By: Claude Opus 4.6 --- examples/09-oss-maintainer-kit/code-review-spawner.yaml | 2 +- examples/09-oss-maintainer-kit/contributor-guide-spawner.yaml | 1 + examples/09-oss-maintainer-kit/triage-spawner.yaml | 1 + examples/09-oss-maintainer-kit/workspace.yaml | 1 + 4 files changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/09-oss-maintainer-kit/code-review-spawner.yaml b/examples/09-oss-maintainer-kit/code-review-spawner.yaml index 2c2b493..09347c4 100644 --- a/examples/09-oss-maintainer-kit/code-review-spawner.yaml +++ b/examples/09-oss-maintainer-kit/code-review-spawner.yaml @@ -9,8 +9,8 @@ spec: draft: false triggerComment: /bot review excludeComments: - - /bot done - /bot needs-input + - /bot done maxConcurrency: 2 taskTemplate: type: claude-code diff --git a/examples/09-oss-maintainer-kit/contributor-guide-spawner.yaml b/examples/09-oss-maintainer-kit/contributor-guide-spawner.yaml index cf4b9b0..037b79d 100644 --- a/examples/09-oss-maintainer-kit/contributor-guide-spawner.yaml +++ b/examples/09-oss-maintainer-kit/contributor-guide-spawner.yaml @@ -8,6 +8,7 @@ spec: state: open triggerComment: /bot guide excludeComments: + - /bot needs-input - /bot done maxConcurrency: 2 taskTemplate: diff --git a/examples/09-oss-maintainer-kit/triage-spawner.yaml b/examples/09-oss-maintainer-kit/triage-spawner.yaml index a14c4e6..0d24b53 100644 --- a/examples/09-oss-maintainer-kit/triage-spawner.yaml +++ b/examples/09-oss-maintainer-kit/triage-spawner.yaml @@ -8,6 +8,7 @@ spec: state: open triggerComment: /bot triage excludeComments: + - /bot needs-input - /bot done maxConcurrency: 4 taskTemplate: diff --git a/examples/09-oss-maintainer-kit/workspace.yaml b/examples/09-oss-maintainer-kit/workspace.yaml index 77dff49..5e15e16 100644 --- a/examples/09-oss-maintainer-kit/workspace.yaml +++ b/examples/09-oss-maintainer-kit/workspace.yaml @@ -4,5 +4,6 @@ metadata: name: my-project spec: repo: https://github.com/owner/repo.git # TODO: replace with your repository URL + ref: main secretRef: name: github-token