Compare commits

...

4 Commits

Author SHA1 Message Date
Bryan Thompson
a1d0fa6d93 Update coderabbit plugin source URL 2026-04-28 07:22:26 -05:00
Tobin South
18113ade5c Add adobe-for-creativity plugin (#1625)
Adobe's Creative Cloud skills for image editing, design automation,
background removal, vectorization, and retouching. Points at the
plugins/creative-cloud/adobe-for-creativity subdir of adobe/skills.
2026-04-28 06:43:59 -05:00
Octavian Guzu
99832739a1 Merge pull request #1621 from anthropics/fix/validate-frontmatter-shell-injection
Harden validate-frontmatter workflow
2026-04-28 11:41:07 +01:00
Dickson Tsai
068a59e000 Fix shell injection in validate-frontmatter workflow
The 'Validate frontmatter' step interpolated step output directly into a
double-quoted shell string, allowing a fork PR that adds a file named
e.g. agents/$(curl ...).md to execute arbitrary commands on the runner.

- Pass the file list via env: and reference as "$FILES" so the shell
  never re-evaluates the contents
- Pass PR number via env: for consistency (no ${{ }} inside run:)
- Gate the job on same-repo PRs only, since fork PRs are auto-closed by
  close-external-prs.yml anyway

Impact was bounded (fork PRs get a read-only token with no secrets), but
this closes the RCE-on-runner vector entirely.
2026-04-27 17:38:18 -07:00
2 changed files with 28 additions and 6 deletions

View File

@@ -33,6 +33,21 @@
},
"homepage": "https://github.com/SalesforceAIResearch/agentforce-adlc"
},
{
"name": "adobe-for-creativity",
"description": "Harness Adobe's creative AI-powered tools to edit images, automate design workflows, and bring creative visions to life — from background removal to vectorization and professional retouching.",
"author": {
"name": "Adobe"
},
"category": "design",
"source": {
"source": "git-subdir",
"url": "https://github.com/adobe/skills.git",
"path": "plugins/creative-cloud/adobe-for-creativity",
"ref": "main"
},
"homepage": "https://github.com/adobe/skills/tree/main/plugins/creative-cloud/adobe-for-creativity"
},
{
"name": "adspirer-ads-agent",
"description": "Cross-platform ad management for Google Ads, Meta Ads, TikTok Ads, and LinkedIn Ads. 91 tools for keyword research, campaign creation, performance analysis, and budget optimization.",
@@ -509,9 +524,9 @@
"category": "productivity",
"source": {
"source": "url",
"url": "https://github.com/coderabbitai/claude-plugin.git"
"url": "https://github.com/coderabbitai/skills.git"
},
"homepage": "https://github.com/coderabbitai/claude-plugin.git"
"homepage": "https://github.com/coderabbitai/skills"
},
{
"name": "commit-commands",

View File

@@ -9,6 +9,10 @@ on:
jobs:
validate:
# Fork PRs are auto-closed by close-external-prs.yml, so skip validation
# for them entirely. This also prevents untrusted filenames from forks
# from ever reaching the shell steps below.
if: github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
@@ -20,16 +24,19 @@ jobs:
- name: Get changed frontmatter files
id: changed
env:
GH_TOKEN: ${{ github.token }}
PR_NUMBER: ${{ github.event.pull_request.number }}
run: |
# Use diff-filter=AMRC to exclude deleted files (D) - only Added, Modified, Renamed, Copied
FILES=$(gh pr diff ${{ github.event.pull_request.number }} --name-only --diff-filter=AMRC | grep -E '(agents/.*\.md|skills/.*/SKILL\.md|commands/.*\.md)$' || true)
FILES=$(gh pr diff "$PR_NUMBER" --name-only --diff-filter=AMRC | grep -E '(agents/.*\.md|skills/.*/SKILL\.md|commands/.*\.md)$' || true)
echo "files<<EOF" >> "$GITHUB_OUTPUT"
echo "$FILES" >> "$GITHUB_OUTPUT"
echo "EOF" >> "$GITHUB_OUTPUT"
env:
GH_TOKEN: ${{ github.token }}
- name: Validate frontmatter
if: steps.changed.outputs.files != ''
env:
FILES: ${{ steps.changed.outputs.files }}
run: |
echo "${{ steps.changed.outputs.files }}" | xargs bun .github/scripts/validate-frontmatter.ts
printf '%s\n' "$FILES" | xargs bun .github/scripts/validate-frontmatter.ts