From 904417f49140af1366aa97db9afc5b1ba060a4b3 Mon Sep 17 00:00:00 2001 From: Developers Digest <124798203+developersdigest@users.noreply.github.com> Date: Tue, 10 Mar 2026 09:47:26 -0400 Subject: [PATCH 1/2] Add Claude skill sync workflow --- .github/workflows/sync-claude-skills.yml | 66 ++++++++++++++++++++++++ .github/workflows/sync-plugin.yml | 12 ++--- 2 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 .github/workflows/sync-claude-skills.yml diff --git a/.github/workflows/sync-claude-skills.yml b/.github/workflows/sync-claude-skills.yml new file mode 100644 index 0000000..d245c8f --- /dev/null +++ b/.github/workflows/sync-claude-skills.yml @@ -0,0 +1,66 @@ +name: Sync Firecrawl Skill to Claude Plugin + +on: + push: + branches: [main] + paths: + - 'skills/firecrawl-cli/**' + workflow_dispatch: + +jobs: + sync: + runs-on: ubuntu-latest + steps: + - name: Checkout CLI repo + uses: actions/checkout@v4 + with: + path: cli + + - name: Clone target repo + env: + TOKEN: ${{ secrets.FIRECRAWL_SKILLS_SYNC }} + run: | + git clone https://x-access-token:${TOKEN}@github.com/firecrawl/firecrawl-claude-plugin.git target 2>/dev/null || { + mkdir target && cd target && git init + git remote add origin https://x-access-token:${TOKEN}@github.com/firecrawl/firecrawl-claude-plugin.git + } + + - name: Sync firecrawl skill + env: + GH_TOKEN: ${{ secrets.FIRECRAWL_SKILLS_SYNC }} + run: | + cd target + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + rm -rf skills/firecrawl-cli + mkdir -p skills/firecrawl-cli + cp -R ../cli/skills/firecrawl-cli/. skills/firecrawl-cli/ + + git add -A + if git diff --cached --quiet; then + echo "No changes to sync" + exit 0 + fi + + SHORT_SHA="${GITHUB_SHA:0:7}" + COMMIT_URL="https://github.com/${GITHUB_REPOSITORY}/commit/${GITHUB_SHA}" + + if ! git rev-parse HEAD >/dev/null 2>&1; then + git checkout -b main + git commit -m "sync firecrawl skill from firecrawl/cli (${SHORT_SHA})" + git push origin main + else + BRANCH="sync/claude-skill-${SHORT_SHA}" + git checkout -b "$BRANCH" + git commit -m "sync firecrawl skill from firecrawl/cli (${SHORT_SHA})" + git push origin "$BRANCH" + PR_URL=$(gh pr create \ + --repo firecrawl/firecrawl-claude-plugin \ + --title "sync firecrawl skill (${SHORT_SHA})" \ + --body "Automated sync of \`skills/firecrawl-cli\` from [firecrawl/cli@${SHORT_SHA}](${COMMIT_URL}) into \`skills/firecrawl-cli\`." \ + --base main \ + --head "$BRANCH") + echo "Created PR: $PR_URL" + gh pr merge --repo firecrawl/firecrawl-claude-plugin --auto --merge --delete-branch "$PR_URL" + fi diff --git a/.github/workflows/sync-plugin.yml b/.github/workflows/sync-plugin.yml index b3ca88c..1c2c285 100644 --- a/.github/workflows/sync-plugin.yml +++ b/.github/workflows/sync-plugin.yml @@ -1,4 +1,4 @@ -name: Sync to Claude Plugin +name: Sync Claude Plugin Config on: push: @@ -36,16 +36,12 @@ jobs: uses: actions/checkout@v4 with: repository: firecrawl/firecrawl-claude-plugin - token: ${{ secrets.PLUGIN_REPO_PAT }} + token: ${{ secrets.FIRECRAWL_SKILLS_SYNC }} path: plugin - - name: Copy files + - name: Copy plugin config if: steps.version.outputs.changed == 'true' run: | - # Sync skill files - rm -rf plugin/skills/firecrawl-cli - cp -r cli/skills/firecrawl-cli plugin/skills/firecrawl-cli - # Sync plugin config cp cli/.claude-plugin/plugin.json plugin/.claude-plugin/plugin.json cp cli/.claude-plugin/marketplace.json plugin/.claude-plugin/marketplace.json @@ -73,4 +69,4 @@ jobs: --base main \ --head "$BRANCH" env: - GH_TOKEN: ${{ secrets.PLUGIN_REPO_PAT }} + GH_TOKEN: ${{ secrets.FIRECRAWL_SKILLS_SYNC }} From 596b27f78de4f57e18c1c504a86c26c452818278 Mon Sep 17 00:00:00 2001 From: Developers Digest <124798203+developersdigest@users.noreply.github.com> Date: Tue, 10 Mar 2026 09:53:17 -0400 Subject: [PATCH 2/2] Unify Claude plugin sync workflow --- .github/workflows/sync-claude-skills.yml | 66 ---------------- .github/workflows/sync-plugin.yml | 95 ++++++++++++------------ 2 files changed, 47 insertions(+), 114 deletions(-) delete mode 100644 .github/workflows/sync-claude-skills.yml diff --git a/.github/workflows/sync-claude-skills.yml b/.github/workflows/sync-claude-skills.yml deleted file mode 100644 index d245c8f..0000000 --- a/.github/workflows/sync-claude-skills.yml +++ /dev/null @@ -1,66 +0,0 @@ -name: Sync Firecrawl Skill to Claude Plugin - -on: - push: - branches: [main] - paths: - - 'skills/firecrawl-cli/**' - workflow_dispatch: - -jobs: - sync: - runs-on: ubuntu-latest - steps: - - name: Checkout CLI repo - uses: actions/checkout@v4 - with: - path: cli - - - name: Clone target repo - env: - TOKEN: ${{ secrets.FIRECRAWL_SKILLS_SYNC }} - run: | - git clone https://x-access-token:${TOKEN}@github.com/firecrawl/firecrawl-claude-plugin.git target 2>/dev/null || { - mkdir target && cd target && git init - git remote add origin https://x-access-token:${TOKEN}@github.com/firecrawl/firecrawl-claude-plugin.git - } - - - name: Sync firecrawl skill - env: - GH_TOKEN: ${{ secrets.FIRECRAWL_SKILLS_SYNC }} - run: | - cd target - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - - rm -rf skills/firecrawl-cli - mkdir -p skills/firecrawl-cli - cp -R ../cli/skills/firecrawl-cli/. skills/firecrawl-cli/ - - git add -A - if git diff --cached --quiet; then - echo "No changes to sync" - exit 0 - fi - - SHORT_SHA="${GITHUB_SHA:0:7}" - COMMIT_URL="https://github.com/${GITHUB_REPOSITORY}/commit/${GITHUB_SHA}" - - if ! git rev-parse HEAD >/dev/null 2>&1; then - git checkout -b main - git commit -m "sync firecrawl skill from firecrawl/cli (${SHORT_SHA})" - git push origin main - else - BRANCH="sync/claude-skill-${SHORT_SHA}" - git checkout -b "$BRANCH" - git commit -m "sync firecrawl skill from firecrawl/cli (${SHORT_SHA})" - git push origin "$BRANCH" - PR_URL=$(gh pr create \ - --repo firecrawl/firecrawl-claude-plugin \ - --title "sync firecrawl skill (${SHORT_SHA})" \ - --body "Automated sync of \`skills/firecrawl-cli\` from [firecrawl/cli@${SHORT_SHA}](${COMMIT_URL}) into \`skills/firecrawl-cli\`." \ - --base main \ - --head "$BRANCH") - echo "Created PR: $PR_URL" - gh pr merge --repo firecrawl/firecrawl-claude-plugin --auto --merge --delete-branch "$PR_URL" - fi diff --git a/.github/workflows/sync-plugin.yml b/.github/workflows/sync-plugin.yml index 1c2c285..bf63e59 100644 --- a/.github/workflows/sync-plugin.yml +++ b/.github/workflows/sync-plugin.yml @@ -1,10 +1,12 @@ -name: Sync Claude Plugin Config +name: Sync to Claude Plugin on: push: branches: [main] paths: - - '.claude-plugin/plugin.json' + - 'skills/firecrawl-cli/**' + - '.claude-plugin/**' + workflow_dispatch: jobs: sync: @@ -13,60 +15,57 @@ jobs: - name: Checkout CLI repo uses: actions/checkout@v4 with: - fetch-depth: 2 path: cli - - name: Check if version changed - id: version - run: | - cd cli - OLD=$(git show HEAD~1:.claude-plugin/plugin.json 2>/dev/null | jq -r '.version' 2>/dev/null || echo "") - NEW=$(jq -r '.version' .claude-plugin/plugin.json) - if [ "$OLD" = "$NEW" ]; then - echo "Version unchanged ($NEW), skipping sync" - echo "changed=false" >> $GITHUB_OUTPUT - else - echo "Version changed: $OLD → $NEW" - echo "changed=true" >> $GITHUB_OUTPUT - echo "version=$NEW" >> $GITHUB_OUTPUT - fi - - - name: Checkout Plugin repo - if: steps.version.outputs.changed == 'true' - uses: actions/checkout@v4 - with: - repository: firecrawl/firecrawl-claude-plugin - token: ${{ secrets.FIRECRAWL_SKILLS_SYNC }} - path: plugin - - - name: Copy plugin config - if: steps.version.outputs.changed == 'true' + - name: Clone target repo + env: + TOKEN: ${{ secrets.FIRECRAWL_SKILLS_SYNC }} run: | - # Sync plugin config - cp cli/.claude-plugin/plugin.json plugin/.claude-plugin/plugin.json - cp cli/.claude-plugin/marketplace.json plugin/.claude-plugin/marketplace.json + git clone https://x-access-token:${TOKEN}@github.com/firecrawl/firecrawl-claude-plugin.git plugin 2>/dev/null || { + mkdir plugin && cd plugin && git init + git remote add origin https://x-access-token:${TOKEN}@github.com/firecrawl/firecrawl-claude-plugin.git + } - - name: Create PR - if: steps.version.outputs.changed == 'true' + - name: Sync Claude plugin files + env: + GH_TOKEN: ${{ secrets.FIRECRAWL_SKILLS_SYNC }} run: | cd plugin - VERSION="${{ steps.version.outputs.version }}" - BRANCH="sync/cli-v${VERSION}" - git checkout -b "$BRANCH" + git config user.name "github-actions[bot]" + git config user.email "github-actions[bot]@users.noreply.github.com" + + rm -rf skills/firecrawl-cli + mkdir -p skills/firecrawl-cli + cp -R ../cli/skills/firecrawl-cli/. skills/firecrawl-cli/ + + mkdir -p .claude-plugin + cp ../cli/.claude-plugin/plugin.json .claude-plugin/plugin.json + cp ../cli/.claude-plugin/marketplace.json .claude-plugin/marketplace.json + git add -A if git diff --cached --quiet; then echo "No changes to sync" exit 0 fi - git config user.name "github-actions[bot]" - git config user.email "github-actions[bot]@users.noreply.github.com" - git commit -m "Sync from firecrawl/cli — v${VERSION}" - git push origin "$BRANCH" - gh pr create \ - --repo firecrawl/firecrawl-claude-plugin \ - --title "Sync CLI changes → v${VERSION}" \ - --body "Automated sync from [firecrawl/cli](https://github.com/firecrawl/cli) main branch (v${VERSION})." \ - --base main \ - --head "$BRANCH" - env: - GH_TOKEN: ${{ secrets.FIRECRAWL_SKILLS_SYNC }} + + SHORT_SHA="${GITHUB_SHA:0:7}" + COMMIT_URL="https://github.com/${GITHUB_REPOSITORY}/commit/${GITHUB_SHA}" + + if ! git rev-parse HEAD >/dev/null 2>&1; then + git checkout -b main + git commit -m "sync Claude plugin from firecrawl/cli (${SHORT_SHA})" + git push origin main + else + BRANCH="sync/claude-plugin-${SHORT_SHA}" + git checkout -b "$BRANCH" + git commit -m "sync Claude plugin from firecrawl/cli (${SHORT_SHA})" + git push origin "$BRANCH" + PR_URL=$(gh pr create \ + --repo firecrawl/firecrawl-claude-plugin \ + --title "sync Claude plugin (${SHORT_SHA})" \ + --body "Automated sync of \`skills/firecrawl-cli\` and \`.claude-plugin\` from [firecrawl/cli@${SHORT_SHA}](${COMMIT_URL})." \ + --base main \ + --head "$BRANCH") + echo "Created PR: $PR_URL" + gh pr merge --repo firecrawl/firecrawl-claude-plugin --auto --merge --delete-branch "$PR_URL" + fi