Compare commits

..

3 Commits

Author SHA1 Message Date
Noah Zweben MacBook
e5bd3dfed1 Use collaborator permission check instead of org membership 2026-01-06 19:16:31 -08:00
Noah Zweben
76334d1f67 Add write permissions for external PR workflow (#143)
* Add write permissions for external PR workflow

* Use pulls.createReview instead of issues.createComment

* Revert to issues.createComment with proper permissions
2026-01-06 17:09:02 -08:00
Noah Zweben
44328beed4 Rename ralph-wiggum plugin to ralph-loop per legal guidance (#142)
- Rename plugin from "ralph-wiggum" to "ralph-loop" to avoid trademark concerns
- Update all internal references to use "Ralph Loop" as the prominent name
- Keep explanatory text noting it "implements the Ralph Wiggum technique" (allowed)
- Rename plugin directory from plugins/ralph-wiggum to plugins/ralph-loop
- Update marketplace.json with new plugin name and source path
- Update plugin-dev documentation references

This change follows legal's recommendation to replace "Wiggum" with "Loop"
in the plugin name while still explaining the technique origin.

Slack thread: https://anthropic.slack.com/archives/C09KU300P7F/p1767741142753959

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-06 15:22:54 -08:00

View File

@@ -4,26 +4,34 @@ on:
pull_request_target: pull_request_target:
types: [opened] types: [opened]
permissions:
pull-requests: write
issues: write
jobs: jobs:
check-membership: check-membership:
if: vars.DISABLE_EXTERNAL_PR_CHECK != 'true' if: vars.DISABLE_EXTERNAL_PR_CHECK != 'true'
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Check if author is org member - name: Check if author has write access
uses: actions/github-script@v7 uses: actions/github-script@v7
with: with:
script: | script: |
const org = 'anthropics';
const author = context.payload.pull_request.user.login; const author = context.payload.pull_request.user.login;
try { const { data } = await github.rest.repos.getCollaboratorPermissionLevel({
await github.rest.orgs.checkMembershipForUser({ owner: context.repo.owner,
org: org, repo: context.repo.repo,
username: author username: author
}); });
console.log(`${author} is an org member, allowing PR`);
} catch (e) { if (['admin', 'write'].includes(data.permission)) {
if (e.status === 404) { console.log(`${author} has ${data.permission} access, allowing PR`);
return;
}
console.log(`${author} has ${data.permission} access, closing PR`);
await github.rest.issues.createComment({ await github.rest.issues.createComment({
owner: context.repo.owner, owner: context.repo.owner,
repo: context.repo.repo, repo: context.repo.repo,
@@ -37,7 +45,3 @@ jobs:
pull_number: context.payload.pull_request.number, pull_number: context.payload.pull_request.number,
state: 'closed' state: 'closed'
}); });
console.log(`Closed PR from external contributor: ${author}`);
}
}