Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude/skills/setup-agent-team/discovery.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -372,7 +372,7 @@ Every teammate MUST follow this workflow using worktrees. NO exceptions.
`gh pr edit NUMBER --repo OpenRouterTeam/spawn --add-label "needs-team-review"`
8. **If PR cannot be created** (conflicts, etc.):
- Comment on the PR explaining WHY
- Close with: `gh pr close {number} --comment "Closing: {reason}\n\n-- discovery/AGENT-NAME"`
- Close with: `gh pr close {number} --delete-branch --comment "Closing: {reason}\n\n-- discovery/AGENT-NAME"`
- NEVER close a PR silently — every closed PR MUST have a comment
9. Clean up worktree: `git worktree remove WORKTREE_BASE_PLACEHOLDER/{branch-name}`

Expand All@@ -398,7 +398,7 @@ You MUST remain active until ALL of the following are true:
2. **All PRs are self-reviewed and labeled**: Run `gh pr list --repo OpenRouterTeam/spawn --state open --author @me` and confirm every PR from this cycle has a self-review comment and the `needs-team-review` label. Do NOT merge — PRs stay open for external review.
3. **All provider PRs are labeled**: Run `gh pr list --repo OpenRouterTeam/spawn --state open --json number,title,headRefName` and check for ANY open PRs related to cloud providers. For each:
- Ensure it has a self-review comment and `needs-team-review` label
- If not mergeable (conflicts) → close with comment: `gh pr close NUMBER --comment "Auto-closing: provider PR from interrupted cycle (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If not mergeable (conflicts) → close with comment: `gh pr close NUMBER --delete-branch --comment "Auto-closing: provider PR from interrupted cycle (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If mergeable → leave open with label for external review (do NOT merge)
4. **All worktrees are cleaned**: Run `git worktree list` and confirm only the main worktree exists. Run `rm -rf WORKTREE_BASE_PLACEHOLDER` and `git worktree prune`.
5. **All teammates are shut down**: Send `shutdown_request` to EVERY teammate. Wait for each to confirm. Do NOT exit while any teammate is still active.
Expand All@@ -410,7 +410,7 @@ You MUST remain active until ALL of the following are true:
3. **Sweep for leftover provider PRs**: `gh pr list --repo OpenRouterTeam/spawn --state open --json number,title,headRefName,mergeable`
- For each PR whose title or branch references a cloud/provider:
- If mergeable → ensure it has `needs-team-review` label and a self-review comment (do NOT merge)
- If not mergeable → close with `gh pr close NUMBER --comment "Auto-closing: stale provider PR (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If not mergeable → close with `gh pr close NUMBER --delete-branch --comment "Auto-closing: stale provider PR (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- Log every action taken
4. For each teammate, send a `shutdown_request` via SendMessage
5. Wait for all `shutdown_response` confirmations
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/setup-agent-team/qa-cycle.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -178,7 +178,7 @@ STALE_PRS=$(gh pr list --state open --label '' --json number,headRefName,updated
for pr_num in $STALE_PRS; do
if [[ -n "$pr_num" ]]; then
log "Closing stale QA PR #${pr_num}..."
gh pr close "$pr_num" --comment "Auto-closing: stale QA PR from a previous cycle.
gh pr close "$pr_num" --delete-branch --comment "Auto-closing: stale QA PR from a previous cycle.

-- qa/cycle" 2>&1 | tee -a "${LOG_FILE}" || true
fi
Expand Down
3 changes: 1 addition & 2 deletions .claude/skills/setup-agent-team/refactor.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -294,11 +294,10 @@ Create these teammates:
* A previous reviewer flagged it as stale, duplicate, or no-longer-relevant
If any of these apply:
```
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].

-- refactor/pr-maintainer"
```
Delete the branch: `git push origin --delete "$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')" 2>/dev/null || true`
Report to team lead and move on to the next PR.
- For EACH remaining open PR, evaluate and take the appropriate action:
* **Has merge conflicts**: rebase the PR branch onto main to resolve
Expand Down
12 changes: 3 additions & 9 deletions .claude/skills/setup-agent-team/security.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -467,11 +467,10 @@ Each pr-reviewer teammate must:
* A previous reviewer flagged the PR as stale, duplicate, or no-longer-relevant
If any of these apply, close the PR with a comment explaining why:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].

-- security/pr-reviewer"
\`\`\`
Delete the branch: \`git push origin --delete "\$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')" 2>/dev/null || true\`
Report to team lead and STOP — skip further review.

3. **Staleness check** — Before doing security review, check:
Expand DownExpand Up@@ -503,21 +502,16 @@ PR #NUMBER was auto-closed due to staleness + merge conflicts, but the change it
\`\`\`
- Then close the PR with a comment referencing the new issue:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Auto-closing: this PR has been stale for >48h with merge conflicts. The change is still valid — filed ISSUE_URL to track re-implementation.
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Auto-closing: this PR has been stale for >48h with merge conflicts. The change is still valid — filed ISSUE_URL to track re-implementation.

-- security/pr-reviewer"
\`\`\`
- **If the PR is trivial, outdated, or no longer relevant**, close without filing an issue:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Auto-closing: this PR has been stale for >48h with merge conflicts and the changes are no longer relevant. Please reopen or create a fresh PR if still needed.
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Auto-closing: this PR has been stale for >48h with merge conflicts and the changes are no longer relevant. Please reopen or create a fresh PR if still needed.

-- security/pr-reviewer"
\`\`\`
- Then delete the branch:
\`\`\`bash
BRANCH=\$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')
git push origin --delete "\${BRANCH}" 2>/dev/null || true
\`\`\`
- Report to team lead: "PR #NUMBER closed (stale+conflicts), follow-up issue filed: ISSUE_URL" (or "no follow-up needed") and STOP — skip security review.
* Is \`updatedAt\` > 48 hours ago but NO conflicts?
- The PR is stale but mergeable — still do the security review below (it may be fine to merge).
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude/skills/setup-agent-team/discovery.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -372,7 +372,7 @@ Every teammate MUST follow this workflow using worktrees. NO exceptions.
`gh pr edit NUMBER --repo OpenRouterTeam/spawn --add-label "needs-team-review"`
8. **If PR cannot be created** (conflicts, etc.):
- Comment on the PR explaining WHY
- Close with: `gh pr close {number} --comment "Closing: {reason}\n\n-- discovery/AGENT-NAME"`
- Close with: `gh pr close {number} --delete-branch --comment "Closing: {reason}\n\n-- discovery/AGENT-NAME"`
- NEVER close a PR silently — every closed PR MUST have a comment
9. Clean up worktree: `git worktree remove WORKTREE_BASE_PLACEHOLDER/{branch-name}`

Expand All@@ -398,7 +398,7 @@ You MUST remain active until ALL of the following are true:
2. **All PRs are self-reviewed and labeled**: Run `gh pr list --repo OpenRouterTeam/spawn --state open --author @me` and confirm every PR from this cycle has a self-review comment and the `needs-team-review` label. Do NOT merge — PRs stay open for external review.
3. **All provider PRs are labeled**: Run `gh pr list --repo OpenRouterTeam/spawn --state open --json number,title,headRefName` and check for ANY open PRs related to cloud providers. For each:
- Ensure it has a self-review comment and `needs-team-review` label
- If not mergeable (conflicts) → close with comment: `gh pr close NUMBER --comment "Auto-closing: provider PR from interrupted cycle (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If not mergeable (conflicts) → close with comment: `gh pr close NUMBER --delete-branch --comment "Auto-closing: provider PR from interrupted cycle (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If mergeable → leave open with label for external review (do NOT merge)
4. **All worktrees are cleaned**: Run `git worktree list` and confirm only the main worktree exists. Run `rm -rf WORKTREE_BASE_PLACEHOLDER` and `git worktree prune`.
5. **All teammates are shut down**: Send `shutdown_request` to EVERY teammate. Wait for each to confirm. Do NOT exit while any teammate is still active.
Expand All@@ -410,7 +410,7 @@ You MUST remain active until ALL of the following are true:
3. **Sweep for leftover provider PRs**: `gh pr list --repo OpenRouterTeam/spawn --state open --json number,title,headRefName,mergeable`
- For each PR whose title or branch references a cloud/provider:
- If mergeable → ensure it has `needs-team-review` label and a self-review comment (do NOT merge)
- If not mergeable → close with `gh pr close NUMBER --comment "Auto-closing: stale provider PR (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If not mergeable → close with `gh pr close NUMBER --delete-branch --comment "Auto-closing: stale provider PR (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- Log every action taken
4. For each teammate, send a `shutdown_request` via SendMessage
5. Wait for all `shutdown_response` confirmations
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/setup-agent-team/qa-cycle.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -178,7 +178,7 @@ STALE_PRS=$(gh pr list --state open --label '' --json number,headRefName,updated
for pr_num in $STALE_PRS; do
if [[ -n "$pr_num" ]]; then
log "Closing stale QA PR #${pr_num}..."
gh pr close "$pr_num" --comment "Auto-closing: stale QA PR from a previous cycle.
gh pr close "$pr_num" --delete-branch --comment "Auto-closing: stale QA PR from a previous cycle.

-- qa/cycle" 2>&1 | tee -a "${LOG_FILE}" || true
fi
Expand Down
3 changes: 1 addition & 2 deletions .claude/skills/setup-agent-team/refactor.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -294,11 +294,10 @@ Create these teammates:
* A previous reviewer flagged it as stale, duplicate, or no-longer-relevant
If any of these apply:
```
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].

-- refactor/pr-maintainer"
```
Delete the branch: `git push origin --delete "$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')" 2>/dev/null || true`
Report to team lead and move on to the next PR.
- For EACH remaining open PR, evaluate and take the appropriate action:
* **Has merge conflicts**: rebase the PR branch onto main to resolve
Expand Down
12 changes: 3 additions & 9 deletions .claude/skills/setup-agent-team/security.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -467,11 +467,10 @@ Each pr-reviewer teammate must:
* A previous reviewer flagged the PR as stale, duplicate, or no-longer-relevant
If any of these apply, close the PR with a comment explaining why:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].

-- security/pr-reviewer"
\`\`\`
Delete the branch: \`git push origin --delete "\$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')" 2>/dev/null || true\`
Report to team lead and STOP — skip further review.

3. **Staleness check** — Before doing security review, check:
Expand DownExpand Up@@ -503,21 +502,16 @@ PR #NUMBER was auto-closed due to staleness + merge conflicts, but the change it
\`\`\`
- Then close the PR with a comment referencing the new issue:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Auto-closing: this PR has been stale for >48h with merge conflicts. The change is still valid — filed ISSUE_URL to track re-implementation.
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Auto-closing: this PR has been stale for >48h with merge conflicts. The change is still valid — filed ISSUE_URL to track re-implementation.

-- security/pr-reviewer"
\`\`\`
- **If the PR is trivial, outdated, or no longer relevant**, close without filing an issue:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Auto-closing: this PR has been stale for >48h with merge conflicts and the changes are no longer relevant. Please reopen or create a fresh PR if still needed.
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Auto-closing: this PR has been stale for >48h with merge conflicts and the changes are no longer relevant. Please reopen or create a fresh PR if still needed.

-- security/pr-reviewer"
\`\`\`
- Then delete the branch:
\`\`\`bash
BRANCH=\$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')
git push origin --delete "\${BRANCH}" 2>/dev/null || true
\`\`\`
- Report to team lead: "PR #NUMBER closed (stale+conflicts), follow-up issue filed: ISSUE_URL" (or "no follow-up needed") and STOP — skip security review.
* Is \`updatedAt\` > 48 hours ago but NO conflicts?
- The PR is stale but mergeable — still do the security review below (it may be fine to merge).
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude/skills/setup-agent-team/discovery.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -372,7 +372,7 @@ Every teammate MUST follow this workflow using worktrees. NO exceptions.
`gh pr edit NUMBER --repo OpenRouterTeam/spawn --add-label "needs-team-review"`
8. **If PR cannot be created** (conflicts, etc.):
- Comment on the PR explaining WHY
- Close with: `gh pr close {number} --comment "Closing: {reason}\n\n-- discovery/AGENT-NAME"`
- Close with: `gh pr close {number} --delete-branch --comment "Closing: {reason}\n\n-- discovery/AGENT-NAME"`
- NEVER close a PR silently — every closed PR MUST have a comment
9. Clean up worktree: `git worktree remove WORKTREE_BASE_PLACEHOLDER/{branch-name}`

Expand All@@ -398,7 +398,7 @@ You MUST remain active until ALL of the following are true:
2. **All PRs are self-reviewed and labeled**: Run `gh pr list --repo OpenRouterTeam/spawn --state open --author @me` and confirm every PR from this cycle has a self-review comment and the `needs-team-review` label. Do NOT merge — PRs stay open for external review.
3. **All provider PRs are labeled**: Run `gh pr list --repo OpenRouterTeam/spawn --state open --json number,title,headRefName` and check for ANY open PRs related to cloud providers. For each:
- Ensure it has a self-review comment and `needs-team-review` label
- If not mergeable (conflicts) → close with comment: `gh pr close NUMBER --comment "Auto-closing: provider PR from interrupted cycle (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If not mergeable (conflicts) → close with comment: `gh pr close NUMBER --delete-branch --comment "Auto-closing: provider PR from interrupted cycle (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If mergeable → leave open with label for external review (do NOT merge)
4. **All worktrees are cleaned**: Run `git worktree list` and confirm only the main worktree exists. Run `rm -rf WORKTREE_BASE_PLACEHOLDER` and `git worktree prune`.
5. **All teammates are shut down**: Send `shutdown_request` to EVERY teammate. Wait for each to confirm. Do NOT exit while any teammate is still active.
Expand All@@ -410,7 +410,7 @@ You MUST remain active until ALL of the following are true:
3. **Sweep for leftover provider PRs**: `gh pr list --repo OpenRouterTeam/spawn --state open --json number,title,headRefName,mergeable`
- For each PR whose title or branch references a cloud/provider:
- If mergeable → ensure it has `needs-team-review` label and a self-review comment (do NOT merge)
- If not mergeable → close with `gh pr close NUMBER --comment "Auto-closing: stale provider PR (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If not mergeable → close with `gh pr close NUMBER --delete-branch --comment "Auto-closing: stale provider PR (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- Log every action taken
4. For each teammate, send a `shutdown_request` via SendMessage
5. Wait for all `shutdown_response` confirmations
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/setup-agent-team/qa-cycle.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -178,7 +178,7 @@ STALE_PRS=$(gh pr list --state open --label '' --json number,headRefName,updated
for pr_num in $STALE_PRS; do
if [[ -n "$pr_num" ]]; then
log "Closing stale QA PR #${pr_num}..."
gh pr close "$pr_num" --comment "Auto-closing: stale QA PR from a previous cycle.
gh pr close "$pr_num" --delete-branch --comment "Auto-closing: stale QA PR from a previous cycle.

-- qa/cycle" 2>&1 | tee -a "${LOG_FILE}" || true
fi
Expand Down
3 changes: 1 addition & 2 deletions .claude/skills/setup-agent-team/refactor.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -294,11 +294,10 @@ Create these teammates:
* A previous reviewer flagged it as stale, duplicate, or no-longer-relevant
If any of these apply:
```
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].

-- refactor/pr-maintainer"
```
Delete the branch: `git push origin --delete "$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')" 2>/dev/null || true`
Report to team lead and move on to the next PR.
- For EACH remaining open PR, evaluate and take the appropriate action:
* **Has merge conflicts**: rebase the PR branch onto main to resolve
Expand Down
12 changes: 3 additions & 9 deletions .claude/skills/setup-agent-team/security.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -467,11 +467,10 @@ Each pr-reviewer teammate must:
* A previous reviewer flagged the PR as stale, duplicate, or no-longer-relevant
If any of these apply, close the PR with a comment explaining why:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].

-- security/pr-reviewer"
\`\`\`
Delete the branch: \`git push origin --delete "\$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')" 2>/dev/null || true\`
Report to team lead and STOP — skip further review.

3. **Staleness check** — Before doing security review, check:
Expand DownExpand Up@@ -503,21 +502,16 @@ PR #NUMBER was auto-closed due to staleness + merge conflicts, but the change it
\`\`\`
- Then close the PR with a comment referencing the new issue:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Auto-closing: this PR has been stale for >48h with merge conflicts. The change is still valid — filed ISSUE_URL to track re-implementation.
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Auto-closing: this PR has been stale for >48h with merge conflicts. The change is still valid — filed ISSUE_URL to track re-implementation.

-- security/pr-reviewer"
\`\`\`
- **If the PR is trivial, outdated, or no longer relevant**, close without filing an issue:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Auto-closing: this PR has been stale for >48h with merge conflicts and the changes are no longer relevant. Please reopen or create a fresh PR if still needed.
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Auto-closing: this PR has been stale for >48h with merge conflicts and the changes are no longer relevant. Please reopen or create a fresh PR if still needed.

-- security/pr-reviewer"
\`\`\`
- Then delete the branch:
\`\`\`bash
BRANCH=\$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')
git push origin --delete "\${BRANCH}" 2>/dev/null || true
\`\`\`
- Report to team lead: "PR #NUMBER closed (stale+conflicts), follow-up issue filed: ISSUE_URL" (or "no follow-up needed") and STOP — skip security review.
* Is \`updatedAt\` > 48 hours ago but NO conflicts?
- The PR is stale but mergeable — still do the security review below (it may be fine to merge).
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude/skills/setup-agent-team/discovery.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -372,7 +372,7 @@ Every teammate MUST follow this workflow using worktrees. NO exceptions.
`gh pr edit NUMBER --repo OpenRouterTeam/spawn --add-label "needs-team-review"`
8. **If PR cannot be created** (conflicts, etc.):
- Comment on the PR explaining WHY
- Close with: `gh pr close {number} --comment "Closing: {reason}\n\n-- discovery/AGENT-NAME"`
- Close with: `gh pr close {number} --delete-branch --comment "Closing: {reason}\n\n-- discovery/AGENT-NAME"`
- NEVER close a PR silently — every closed PR MUST have a comment
9. Clean up worktree: `git worktree remove WORKTREE_BASE_PLACEHOLDER/{branch-name}`

Expand All@@ -398,7 +398,7 @@ You MUST remain active until ALL of the following are true:
2. **All PRs are self-reviewed and labeled**: Run `gh pr list --repo OpenRouterTeam/spawn --state open --author @me` and confirm every PR from this cycle has a self-review comment and the `needs-team-review` label. Do NOT merge — PRs stay open for external review.
3. **All provider PRs are labeled**: Run `gh pr list --repo OpenRouterTeam/spawn --state open --json number,title,headRefName` and check for ANY open PRs related to cloud providers. For each:
- Ensure it has a self-review comment and `needs-team-review` label
- If not mergeable (conflicts) → close with comment: `gh pr close NUMBER --comment "Auto-closing: provider PR from interrupted cycle (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If not mergeable (conflicts) → close with comment: `gh pr close NUMBER --delete-branch --comment "Auto-closing: provider PR from interrupted cycle (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If mergeable → leave open with label for external review (do NOT merge)
4. **All worktrees are cleaned**: Run `git worktree list` and confirm only the main worktree exists. Run `rm -rf WORKTREE_BASE_PLACEHOLDER` and `git worktree prune`.
5. **All teammates are shut down**: Send `shutdown_request` to EVERY teammate. Wait for each to confirm. Do NOT exit while any teammate is still active.
Expand All@@ -410,7 +410,7 @@ You MUST remain active until ALL of the following are true:
3. **Sweep for leftover provider PRs**: `gh pr list --repo OpenRouterTeam/spawn --state open --json number,title,headRefName,mergeable`
- For each PR whose title or branch references a cloud/provider:
- If mergeable → ensure it has `needs-team-review` label and a self-review comment (do NOT merge)
- If not mergeable → close with `gh pr close NUMBER --comment "Auto-closing: stale provider PR (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If not mergeable → close with `gh pr close NUMBER --delete-branch --comment "Auto-closing: stale provider PR (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- Log every action taken
4. For each teammate, send a `shutdown_request` via SendMessage
5. Wait for all `shutdown_response` confirmations
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/setup-agent-team/qa-cycle.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -178,7 +178,7 @@ STALE_PRS=$(gh pr list --state open --label '' --json number,headRefName,updated
for pr_num in $STALE_PRS; do
if [[ -n "$pr_num" ]]; then
log "Closing stale QA PR #${pr_num}..."
gh pr close "$pr_num" --comment "Auto-closing: stale QA PR from a previous cycle.
gh pr close "$pr_num" --delete-branch --comment "Auto-closing: stale QA PR from a previous cycle.

-- qa/cycle" 2>&1 | tee -a "${LOG_FILE}" || true
fi
Expand Down
3 changes: 1 addition & 2 deletions .claude/skills/setup-agent-team/refactor.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -294,11 +294,10 @@ Create these teammates:
* A previous reviewer flagged it as stale, duplicate, or no-longer-relevant
If any of these apply:
```
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].

-- refactor/pr-maintainer"
```
Delete the branch: `git push origin --delete "$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')" 2>/dev/null || true`
Report to team lead and move on to the next PR.
- For EACH remaining open PR, evaluate and take the appropriate action:
* **Has merge conflicts**: rebase the PR branch onto main to resolve
Expand Down
12 changes: 3 additions & 9 deletions .claude/skills/setup-agent-team/security.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -467,11 +467,10 @@ Each pr-reviewer teammate must:
* A previous reviewer flagged the PR as stale, duplicate, or no-longer-relevant
If any of these apply, close the PR with a comment explaining why:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].

-- security/pr-reviewer"
\`\`\`
Delete the branch: \`git push origin --delete "\$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')" 2>/dev/null || true\`
Report to team lead and STOP — skip further review.

3. **Staleness check** — Before doing security review, check:
Expand DownExpand Up@@ -503,21 +502,16 @@ PR #NUMBER was auto-closed due to staleness + merge conflicts, but the change it
\`\`\`
- Then close the PR with a comment referencing the new issue:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Auto-closing: this PR has been stale for >48h with merge conflicts. The change is still valid — filed ISSUE_URL to track re-implementation.
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Auto-closing: this PR has been stale for >48h with merge conflicts. The change is still valid — filed ISSUE_URL to track re-implementation.

-- security/pr-reviewer"
\`\`\`
- **If the PR is trivial, outdated, or no longer relevant**, close without filing an issue:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Auto-closing: this PR has been stale for >48h with merge conflicts and the changes are no longer relevant. Please reopen or create a fresh PR if still needed.
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Auto-closing: this PR has been stale for >48h with merge conflicts and the changes are no longer relevant. Please reopen or create a fresh PR if still needed.

-- security/pr-reviewer"
\`\`\`
- Then delete the branch:
\`\`\`bash
BRANCH=\$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')
git push origin --delete "\${BRANCH}" 2>/dev/null || true
\`\`\`
- Report to team lead: "PR #NUMBER closed (stale+conflicts), follow-up issue filed: ISSUE_URL" (or "no follow-up needed") and STOP — skip security review.
* Is \`updatedAt\` > 48 hours ago but NO conflicts?
- The PR is stale but mergeable — still do the security review below (it may be fine to merge).
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude/skills/setup-agent-team/discovery.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -372,7 +372,7 @@ Every teammate MUST follow this workflow using worktrees. NO exceptions.
`gh pr edit NUMBER --repo OpenRouterTeam/spawn --add-label "needs-team-review"`
8. **If PR cannot be created** (conflicts, etc.):
- Comment on the PR explaining WHY
- Close with: `gh pr close {number} --comment "Closing: {reason}\n\n-- discovery/AGENT-NAME"`
- Close with: `gh pr close {number} --delete-branch --comment "Closing: {reason}\n\n-- discovery/AGENT-NAME"`
- NEVER close a PR silently — every closed PR MUST have a comment
9. Clean up worktree: `git worktree remove WORKTREE_BASE_PLACEHOLDER/{branch-name}`

Expand All@@ -398,7 +398,7 @@ You MUST remain active until ALL of the following are true:
2. **All PRs are self-reviewed and labeled**: Run `gh pr list --repo OpenRouterTeam/spawn --state open --author @me` and confirm every PR from this cycle has a self-review comment and the `needs-team-review` label. Do NOT merge — PRs stay open for external review.
3. **All provider PRs are labeled**: Run `gh pr list --repo OpenRouterTeam/spawn --state open --json number,title,headRefName` and check for ANY open PRs related to cloud providers. For each:
- Ensure it has a self-review comment and `needs-team-review` label
- If not mergeable (conflicts) → close with comment: `gh pr close NUMBER --comment "Auto-closing: provider PR from interrupted cycle (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If not mergeable (conflicts) → close with comment: `gh pr close NUMBER --delete-branch --comment "Auto-closing: provider PR from interrupted cycle (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If mergeable → leave open with label for external review (do NOT merge)
4. **All worktrees are cleaned**: Run `git worktree list` and confirm only the main worktree exists. Run `rm -rf WORKTREE_BASE_PLACEHOLDER` and `git worktree prune`.
5. **All teammates are shut down**: Send `shutdown_request` to EVERY teammate. Wait for each to confirm. Do NOT exit while any teammate is still active.
Expand All@@ -410,7 +410,7 @@ You MUST remain active until ALL of the following are true:
3. **Sweep for leftover provider PRs**: `gh pr list --repo OpenRouterTeam/spawn --state open --json number,title,headRefName,mergeable`
- For each PR whose title or branch references a cloud/provider:
- If mergeable → ensure it has `needs-team-review` label and a self-review comment (do NOT merge)
- If not mergeable → close with `gh pr close NUMBER --comment "Auto-closing: stale provider PR (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If not mergeable → close with `gh pr close NUMBER --delete-branch --comment "Auto-closing: stale provider PR (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- Log every action taken
4. For each teammate, send a `shutdown_request` via SendMessage
5. Wait for all `shutdown_response` confirmations
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/setup-agent-team/qa-cycle.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -178,7 +178,7 @@ STALE_PRS=$(gh pr list --state open --label '' --json number,headRefName,updated
for pr_num in $STALE_PRS; do
if [[ -n "$pr_num" ]]; then
log "Closing stale QA PR #${pr_num}..."
gh pr close "$pr_num" --comment "Auto-closing: stale QA PR from a previous cycle.
gh pr close "$pr_num" --delete-branch --comment "Auto-closing: stale QA PR from a previous cycle.

-- qa/cycle" 2>&1 | tee -a "${LOG_FILE}" || true
fi
Expand Down
3 changes: 1 addition & 2 deletions .claude/skills/setup-agent-team/refactor.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -294,11 +294,10 @@ Create these teammates:
* A previous reviewer flagged it as stale, duplicate, or no-longer-relevant
If any of these apply:
```
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].

-- refactor/pr-maintainer"
```
Delete the branch: `git push origin --delete "$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')" 2>/dev/null || true`
Report to team lead and move on to the next PR.
- For EACH remaining open PR, evaluate and take the appropriate action:
* **Has merge conflicts**: rebase the PR branch onto main to resolve
Expand Down
12 changes: 3 additions & 9 deletions .claude/skills/setup-agent-team/security.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -467,11 +467,10 @@ Each pr-reviewer teammate must:
* A previous reviewer flagged the PR as stale, duplicate, or no-longer-relevant
If any of these apply, close the PR with a comment explaining why:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].

-- security/pr-reviewer"
\`\`\`
Delete the branch: \`git push origin --delete "\$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')" 2>/dev/null || true\`
Report to team lead and STOP — skip further review.

3. **Staleness check** — Before doing security review, check:
Expand DownExpand Up@@ -503,21 +502,16 @@ PR #NUMBER was auto-closed due to staleness + merge conflicts, but the change it
\`\`\`
- Then close the PR with a comment referencing the new issue:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Auto-closing: this PR has been stale for >48h with merge conflicts. The change is still valid — filed ISSUE_URL to track re-implementation.
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Auto-closing: this PR has been stale for >48h with merge conflicts. The change is still valid — filed ISSUE_URL to track re-implementation.

-- security/pr-reviewer"
\`\`\`
- **If the PR is trivial, outdated, or no longer relevant**, close without filing an issue:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Auto-closing: this PR has been stale for >48h with merge conflicts and the changes are no longer relevant. Please reopen or create a fresh PR if still needed.
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Auto-closing: this PR has been stale for >48h with merge conflicts and the changes are no longer relevant. Please reopen or create a fresh PR if still needed.

-- security/pr-reviewer"
\`\`\`
- Then delete the branch:
\`\`\`bash
BRANCH=\$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')
git push origin --delete "\${BRANCH}" 2>/dev/null || true
\`\`\`
- Report to team lead: "PR #NUMBER closed (stale+conflicts), follow-up issue filed: ISSUE_URL" (or "no follow-up needed") and STOP — skip security review.
* Is \`updatedAt\` > 48 hours ago but NO conflicts?
- The PR is stale but mergeable — still do the security review below (it may be fine to merge).
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude/skills/setup-agent-team/discovery.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -372,7 +372,7 @@ Every teammate MUST follow this workflow using worktrees. NO exceptions.
`gh pr edit NUMBER --repo OpenRouterTeam/spawn --add-label "needs-team-review"`
8. **If PR cannot be created** (conflicts, etc.):
- Comment on the PR explaining WHY
- Close with: `gh pr close {number} --comment "Closing: {reason}\n\n-- discovery/AGENT-NAME"`
- Close with: `gh pr close {number} --delete-branch --comment "Closing: {reason}\n\n-- discovery/AGENT-NAME"`
- NEVER close a PR silently — every closed PR MUST have a comment
9. Clean up worktree: `git worktree remove WORKTREE_BASE_PLACEHOLDER/{branch-name}`

Expand All@@ -398,7 +398,7 @@ You MUST remain active until ALL of the following are true:
2. **All PRs are self-reviewed and labeled**: Run `gh pr list --repo OpenRouterTeam/spawn --state open --author @me` and confirm every PR from this cycle has a self-review comment and the `needs-team-review` label. Do NOT merge — PRs stay open for external review.
3. **All provider PRs are labeled**: Run `gh pr list --repo OpenRouterTeam/spawn --state open --json number,title,headRefName` and check for ANY open PRs related to cloud providers. For each:
- Ensure it has a self-review comment and `needs-team-review` label
- If not mergeable (conflicts) → close with comment: `gh pr close NUMBER --comment "Auto-closing: provider PR from interrupted cycle (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If not mergeable (conflicts) → close with comment: `gh pr close NUMBER --delete-branch --comment "Auto-closing: provider PR from interrupted cycle (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If mergeable → leave open with label for external review (do NOT merge)
4. **All worktrees are cleaned**: Run `git worktree list` and confirm only the main worktree exists. Run `rm -rf WORKTREE_BASE_PLACEHOLDER` and `git worktree prune`.
5. **All teammates are shut down**: Send `shutdown_request` to EVERY teammate. Wait for each to confirm. Do NOT exit while any teammate is still active.
Expand All@@ -410,7 +410,7 @@ You MUST remain active until ALL of the following are true:
3. **Sweep for leftover provider PRs**: `gh pr list --repo OpenRouterTeam/spawn --state open --json number,title,headRefName,mergeable`
- For each PR whose title or branch references a cloud/provider:
- If mergeable → ensure it has `needs-team-review` label and a self-review comment (do NOT merge)
- If not mergeable → close with `gh pr close NUMBER --comment "Auto-closing: stale provider PR (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If not mergeable → close with `gh pr close NUMBER --delete-branch --comment "Auto-closing: stale provider PR (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- Log every action taken
4. For each teammate, send a `shutdown_request` via SendMessage
5. Wait for all `shutdown_response` confirmations
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/setup-agent-team/qa-cycle.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -178,7 +178,7 @@ STALE_PRS=$(gh pr list --state open --label '' --json number,headRefName,updated
for pr_num in $STALE_PRS; do
if [[ -n "$pr_num" ]]; then
log "Closing stale QA PR #${pr_num}..."
gh pr close "$pr_num" --comment "Auto-closing: stale QA PR from a previous cycle.
gh pr close "$pr_num" --delete-branch --comment "Auto-closing: stale QA PR from a previous cycle.

-- qa/cycle" 2>&1 | tee -a "${LOG_FILE}" || true
fi
Expand Down
3 changes: 1 addition & 2 deletions .claude/skills/setup-agent-team/refactor.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -294,11 +294,10 @@ Create these teammates:
* A previous reviewer flagged it as stale, duplicate, or no-longer-relevant
If any of these apply:
```
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].

-- refactor/pr-maintainer"
```
Delete the branch: `git push origin --delete "$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')" 2>/dev/null || true`
Report to team lead and move on to the next PR.
- For EACH remaining open PR, evaluate and take the appropriate action:
* **Has merge conflicts**: rebase the PR branch onto main to resolve
Expand Down
12 changes: 3 additions & 9 deletions .claude/skills/setup-agent-team/security.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -467,11 +467,10 @@ Each pr-reviewer teammate must:
* A previous reviewer flagged the PR as stale, duplicate, or no-longer-relevant
If any of these apply, close the PR with a comment explaining why:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].

-- security/pr-reviewer"
\`\`\`
Delete the branch: \`git push origin --delete "\$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')" 2>/dev/null || true\`
Report to team lead and STOP — skip further review.

3. **Staleness check** — Before doing security review, check:
Expand DownExpand Up@@ -503,21 +502,16 @@ PR #NUMBER was auto-closed due to staleness + merge conflicts, but the change it
\`\`\`
- Then close the PR with a comment referencing the new issue:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Auto-closing: this PR has been stale for >48h with merge conflicts. The change is still valid — filed ISSUE_URL to track re-implementation.
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Auto-closing: this PR has been stale for >48h with merge conflicts. The change is still valid — filed ISSUE_URL to track re-implementation.

-- security/pr-reviewer"
\`\`\`
- **If the PR is trivial, outdated, or no longer relevant**, close without filing an issue:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Auto-closing: this PR has been stale for >48h with merge conflicts and the changes are no longer relevant. Please reopen or create a fresh PR if still needed.
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Auto-closing: this PR has been stale for >48h with merge conflicts and the changes are no longer relevant. Please reopen or create a fresh PR if still needed.

-- security/pr-reviewer"
\`\`\`
- Then delete the branch:
\`\`\`bash
BRANCH=\$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')
git push origin --delete "\${BRANCH}" 2>/dev/null || true
\`\`\`
- Report to team lead: "PR #NUMBER closed (stale+conflicts), follow-up issue filed: ISSUE_URL" (or "no follow-up needed") and STOP — skip security review.
* Is \`updatedAt\` > 48 hours ago but NO conflicts?
- The PR is stale but mergeable — still do the security review below (it may be fine to merge).
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude/skills/setup-agent-team/discovery.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -372,7 +372,7 @@ Every teammate MUST follow this workflow using worktrees. NO exceptions.
`gh pr edit NUMBER --repo OpenRouterTeam/spawn --add-label "needs-team-review"`
8. **If PR cannot be created** (conflicts, etc.):
- Comment on the PR explaining WHY
- Close with: `gh pr close {number} --comment "Closing: {reason}\n\n-- discovery/AGENT-NAME"`
- Close with: `gh pr close {number} --delete-branch --comment "Closing: {reason}\n\n-- discovery/AGENT-NAME"`
- NEVER close a PR silently — every closed PR MUST have a comment
9. Clean up worktree: `git worktree remove WORKTREE_BASE_PLACEHOLDER/{branch-name}`

Expand All@@ -398,7 +398,7 @@ You MUST remain active until ALL of the following are true:
2. **All PRs are self-reviewed and labeled**: Run `gh pr list --repo OpenRouterTeam/spawn --state open --author @me` and confirm every PR from this cycle has a self-review comment and the `needs-team-review` label. Do NOT merge — PRs stay open for external review.
3. **All provider PRs are labeled**: Run `gh pr list --repo OpenRouterTeam/spawn --state open --json number,title,headRefName` and check for ANY open PRs related to cloud providers. For each:
- Ensure it has a self-review comment and `needs-team-review` label
- If not mergeable (conflicts) → close with comment: `gh pr close NUMBER --comment "Auto-closing: provider PR from interrupted cycle (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If not mergeable (conflicts) → close with comment: `gh pr close NUMBER --delete-branch --comment "Auto-closing: provider PR from interrupted cycle (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If mergeable → leave open with label for external review (do NOT merge)
4. **All worktrees are cleaned**: Run `git worktree list` and confirm only the main worktree exists. Run `rm -rf WORKTREE_BASE_PLACEHOLDER` and `git worktree prune`.
5. **All teammates are shut down**: Send `shutdown_request` to EVERY teammate. Wait for each to confirm. Do NOT exit while any teammate is still active.
Expand All@@ -410,7 +410,7 @@ You MUST remain active until ALL of the following are true:
3. **Sweep for leftover provider PRs**: `gh pr list --repo OpenRouterTeam/spawn --state open --json number,title,headRefName,mergeable`
- For each PR whose title or branch references a cloud/provider:
- If mergeable → ensure it has `needs-team-review` label and a self-review comment (do NOT merge)
- If not mergeable → close with `gh pr close NUMBER --comment "Auto-closing: stale provider PR (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If not mergeable → close with `gh pr close NUMBER --delete-branch --comment "Auto-closing: stale provider PR (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- Log every action taken
4. For each teammate, send a `shutdown_request` via SendMessage
5. Wait for all `shutdown_response` confirmations
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/setup-agent-team/qa-cycle.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -178,7 +178,7 @@ STALE_PRS=$(gh pr list --state open --label '' --json number,headRefName,updated
for pr_num in $STALE_PRS; do
if [[ -n "$pr_num" ]]; then
log "Closing stale QA PR #${pr_num}..."
gh pr close "$pr_num" --comment "Auto-closing: stale QA PR from a previous cycle.
gh pr close "$pr_num" --delete-branch --comment "Auto-closing: stale QA PR from a previous cycle.

-- qa/cycle" 2>&1 | tee -a "${LOG_FILE}" || true
fi
Expand Down
3 changes: 1 addition & 2 deletions .claude/skills/setup-agent-team/refactor.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -294,11 +294,10 @@ Create these teammates:
* A previous reviewer flagged it as stale, duplicate, or no-longer-relevant
If any of these apply:
```
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].

-- refactor/pr-maintainer"
```
Delete the branch: `git push origin --delete "$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')" 2>/dev/null || true`
Report to team lead and move on to the next PR.
- For EACH remaining open PR, evaluate and take the appropriate action:
* **Has merge conflicts**: rebase the PR branch onto main to resolve
Expand Down
12 changes: 3 additions & 9 deletions .claude/skills/setup-agent-team/security.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -467,11 +467,10 @@ Each pr-reviewer teammate must:
* A previous reviewer flagged the PR as stale, duplicate, or no-longer-relevant
If any of these apply, close the PR with a comment explaining why:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].

-- security/pr-reviewer"
\`\`\`
Delete the branch: \`git push origin --delete "\$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')" 2>/dev/null || true\`
Report to team lead and STOP — skip further review.

3. **Staleness check** — Before doing security review, check:
Expand DownExpand Up@@ -503,21 +502,16 @@ PR #NUMBER was auto-closed due to staleness + merge conflicts, but the change it
\`\`\`
- Then close the PR with a comment referencing the new issue:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Auto-closing: this PR has been stale for >48h with merge conflicts. The change is still valid — filed ISSUE_URL to track re-implementation.
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Auto-closing: this PR has been stale for >48h with merge conflicts. The change is still valid — filed ISSUE_URL to track re-implementation.

-- security/pr-reviewer"
\`\`\`
- **If the PR is trivial, outdated, or no longer relevant**, close without filing an issue:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Auto-closing: this PR has been stale for >48h with merge conflicts and the changes are no longer relevant. Please reopen or create a fresh PR if still needed.
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Auto-closing: this PR has been stale for >48h with merge conflicts and the changes are no longer relevant. Please reopen or create a fresh PR if still needed.

-- security/pr-reviewer"
\`\`\`
- Then delete the branch:
\`\`\`bash
BRANCH=\$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')
git push origin --delete "\${BRANCH}" 2>/dev/null || true
\`\`\`
- Report to team lead: "PR #NUMBER closed (stale+conflicts), follow-up issue filed: ISSUE_URL" (or "no follow-up needed") and STOP — skip security review.
* Is \`updatedAt\` > 48 hours ago but NO conflicts?
- The PR is stale but mergeable — still do the security review below (it may be fine to merge).
Expand Down
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .claude/skills/setup-agent-team/discovery.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -372,7 +372,7 @@ Every teammate MUST follow this workflow using worktrees. NO exceptions.
`gh pr edit NUMBER --repo OpenRouterTeam/spawn --add-label "needs-team-review"`
8. **If PR cannot be created** (conflicts, etc.):
- Comment on the PR explaining WHY
- Close with: `gh pr close {number} --comment "Closing: {reason}\n\n-- discovery/AGENT-NAME"`
- Close with: `gh pr close {number} --delete-branch --comment "Closing: {reason}\n\n-- discovery/AGENT-NAME"`
- NEVER close a PR silently — every closed PR MUST have a comment
9. Clean up worktree: `git worktree remove WORKTREE_BASE_PLACEHOLDER/{branch-name}`

Expand All@@ -398,7 +398,7 @@ You MUST remain active until ALL of the following are true:
2. **All PRs are self-reviewed and labeled**: Run `gh pr list --repo OpenRouterTeam/spawn --state open --author @me` and confirm every PR from this cycle has a self-review comment and the `needs-team-review` label. Do NOT merge — PRs stay open for external review.
3. **All provider PRs are labeled**: Run `gh pr list --repo OpenRouterTeam/spawn --state open --json number,title,headRefName` and check for ANY open PRs related to cloud providers. For each:
- Ensure it has a self-review comment and `needs-team-review` label
- If not mergeable (conflicts) → close with comment: `gh pr close NUMBER --comment "Auto-closing: provider PR from interrupted cycle (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If not mergeable (conflicts) → close with comment: `gh pr close NUMBER --delete-branch --comment "Auto-closing: provider PR from interrupted cycle (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If mergeable → leave open with label for external review (do NOT merge)
4. **All worktrees are cleaned**: Run `git worktree list` and confirm only the main worktree exists. Run `rm -rf WORKTREE_BASE_PLACEHOLDER` and `git worktree prune`.
5. **All teammates are shut down**: Send `shutdown_request` to EVERY teammate. Wait for each to confirm. Do NOT exit while any teammate is still active.
Expand All@@ -410,7 +410,7 @@ You MUST remain active until ALL of the following are true:
3. **Sweep for leftover provider PRs**: `gh pr list --repo OpenRouterTeam/spawn --state open --json number,title,headRefName,mergeable`
- For each PR whose title or branch references a cloud/provider:
- If mergeable → ensure it has `needs-team-review` label and a self-review comment (do NOT merge)
- If not mergeable → close with `gh pr close NUMBER --comment "Auto-closing: stale provider PR (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- If not mergeable → close with `gh pr close NUMBER --delete-branch --comment "Auto-closing: stale provider PR (unmergeable). Please reopen if still needed.\n\n-- discovery/team-lead"`
- Log every action taken
4. For each teammate, send a `shutdown_request` via SendMessage
5. Wait for all `shutdown_response` confirmations
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/setup-agent-team/qa-cycle.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -178,7 +178,7 @@ STALE_PRS=$(gh pr list --state open --label '' --json number,headRefName,updated
for pr_num in $STALE_PRS; do
if [[ -n "$pr_num" ]]; then
log "Closing stale QA PR #${pr_num}..."
gh pr close "$pr_num" --comment "Auto-closing: stale QA PR from a previous cycle.
gh pr close "$pr_num" --delete-branch --comment "Auto-closing: stale QA PR from a previous cycle.

-- qa/cycle" 2>&1 | tee -a "${LOG_FILE}" || true
fi
Expand Down
3 changes: 1 addition & 2 deletions .claude/skills/setup-agent-team/refactor.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -294,11 +294,10 @@ Create these teammates:
* A previous reviewer flagged it as stale, duplicate, or no-longer-relevant
If any of these apply:
```
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].

-- refactor/pr-maintainer"
```
Delete the branch: `git push origin --delete "$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')" 2>/dev/null || true`
Report to team lead and move on to the next PR.
- For EACH remaining open PR, evaluate and take the appropriate action:
* **Has merge conflicts**: rebase the PR branch onto main to resolve
Expand Down
12 changes: 3 additions & 9 deletions .claude/skills/setup-agent-team/security.sh
Original file line numberDiff line numberDiff line change
Expand Up@@ -467,11 +467,10 @@ Each pr-reviewer teammate must:
* A previous reviewer flagged the PR as stale, duplicate, or no-longer-relevant
If any of these apply, close the PR with a comment explaining why:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Closing: [reason — e.g., superseded by #NNN / duplicate of #NNN / author abandoned].

-- security/pr-reviewer"
\`\`\`
Delete the branch: \`git push origin --delete "\$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')" 2>/dev/null || true\`
Report to team lead and STOP — skip further review.

3. **Staleness check** — Before doing security review, check:
Expand DownExpand Up@@ -503,21 +502,16 @@ PR #NUMBER was auto-closed due to staleness + merge conflicts, but the change it
\`\`\`
- Then close the PR with a comment referencing the new issue:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Auto-closing: this PR has been stale for >48h with merge conflicts. The change is still valid — filed ISSUE_URL to track re-implementation.
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Auto-closing: this PR has been stale for >48h with merge conflicts. The change is still valid — filed ISSUE_URL to track re-implementation.

-- security/pr-reviewer"
\`\`\`
- **If the PR is trivial, outdated, or no longer relevant**, close without filing an issue:
\`\`\`bash
gh pr close NUMBER --repo OpenRouterTeam/spawn --comment "Auto-closing: this PR has been stale for >48h with merge conflicts and the changes are no longer relevant. Please reopen or create a fresh PR if still needed.
gh pr close NUMBER --repo OpenRouterTeam/spawn --delete-branch --comment "Auto-closing: this PR has been stale for >48h with merge conflicts and the changes are no longer relevant. Please reopen or create a fresh PR if still needed.

-- security/pr-reviewer"
\`\`\`
- Then delete the branch:
\`\`\`bash
BRANCH=\$(gh pr view NUMBER --repo OpenRouterTeam/spawn --json headRefName --jq '.headRefName')
git push origin --delete "\${BRANCH}" 2>/dev/null || true
\`\`\`
- Report to team lead: "PR #NUMBER closed (stale+conflicts), follow-up issue filed: ISSUE_URL" (or "no follow-up needed") and STOP — skip security review.
* Is \`updatedAt\` > 48 hours ago but NO conflicts?
- The PR is stale but mergeable — still do the security review below (it may be fine to merge).
Expand Down