Skip to content

update dependencies #40

update dependencies

update dependencies #40

Workflow file for this run

name: Documentation Sync with Claude Code
on:
pull_request:
types: [opened, synchronize, edited]
jobs:
sync-docs:
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
id-token: write
steps:
- name: Checkout source repository
uses: actions/checkout@v4
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: Get changed files
id: changed-files
run: |
git fetch origin ${{ github.event.pull_request.base.ref }}
git diff --name-only origin/${{ github.event.pull_request.base.ref }}...HEAD > changed_files.txt
echo "Changed files:"
cat changed_files.txt
grep '^docs/.*\.md$' changed_files.txt > docs_changed.txt || echo "No docs changed"
- name: Get file contents and diffs
id: get-diffs
run: |
mkdir -p /tmp/diffs
touch /tmp/diffs/changes.txt
# Capture all changed files and their diffs
while IFS= read -r file; do
echo "=== $file ===" >> /tmp/diffs/changes.txt
git diff origin/${{ github.event.pull_request.base.ref }}...HEAD -- "$file" >> /tmp/diffs/changes.txt
echo -e "\n\n" >> /tmp/diffs/changes.txt
done < changed_files.txt
# Always run - let Claude decide if docs are needed
echo "skip=false" >> $GITHUB_OUTPUT
- name: Checkout cloudflare-docs repository
if: steps.get-diffs.outputs.skip != 'true'
uses: actions/checkout@v4
with:
repository: cloudflare/cloudflare-docs
token: ${{ secrets.AGENTS_GITHUB_TOKEN }}
path: cloudflare-docs
- name: Create branch in cloudflare-docs
if: steps.get-diffs.outputs.skip != 'true'
run: |
cd cloudflare-docs
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git checkout -b sync-docs-pr-${{ github.event.pull_request.number }}
- name: Create prompt for Claude Code
if: steps.get-diffs.outputs.skip != 'true'
id: create-prompt
run: |
cat > /tmp/claude_prompt.md << EOF
# Intelligent Documentation Sync Task
## Context
- **Source Repository:** ${{ github.repository }}
- **Original PR:** #${{ github.event.pull_request.number }}
- **PR Title:** ${{ github.event.pull_request.title }}
- **PR Description:**
${{ github.event.pull_request.body }}
## Changed Files and Diffs
$(cat /tmp/diffs/changes.txt)
## Your Task: Evaluate and Act
You have access to two repositories:
1. The current directory (our main repo at ${{ github.repository }})
2. ./cloudflare-docs (already cloned with branch sync-docs-pr-${{ github.event.pull_request.number }} checked out)
**Step 1: Evaluate if Documentation Sync is Needed**
Please review the changes in this PR and determine if they require documentation updates in cloudflare-docs:
- **DO sync if:**
- Documentation files in docs/ were directly changed
- New public API features or functions were added
- Breaking changes that affect user-facing behavior
- New configuration options or environment variables
- New examples or usage patterns that should be documented
- Bug fixes that clarify documented behavior
- **DO NOT sync if:**
- Only internal code refactoring with no behavior changes
- Test-only changes
- CI/workflow changes
- Minor typo fixes in code comments
- Internal dependency updates with no API changes
**Step 2: If Documentation Sync is Needed**
If you determine documentation updates are required, YOU MUST COMPLETE ALL STEPS:
1. Navigate to ./cloudflare-docs (already cloned, branch sync-docs-pr-${{ github.event.pull_request.number }} checked out)
2. Adapt changes for cloudflare-docs repository structure and style
3. Create or update the appropriate markdown files
4. Ensure content follows cloudflare-docs conventions
5. **CRITICAL - Commit changes:**
Run: `cd cloudflare-docs && git add . && git commit -m "Sync docs from PR #${{ github.event.pull_request.number }}: ${{ github.event.pull_request.title }}"`
6. **CRITICAL - Push to remote:**
Run: `cd cloudflare-docs && git push origin sync-docs-pr-${{ github.event.pull_request.number }}`
7. **CRITICAL - Create PR in cloudflare-docs:**
Run: `gh pr create --repo cloudflare/cloudflare-docs --base main --head sync-docs-pr-${{ github.event.pull_request.number }} --title "📚 Sync docs from ${{ github.repository }}#${{ github.event.pull_request.number }}: ${{ github.event.pull_request.title }}" --body "🤖 Automated sync from https://github.com/${{ github.repository }}/pull/${{ github.event.pull_request.number }}"`
8. **CRITICAL - Comment on original PR (or edit existing comment):**
Get the docs PR URL, then create or update comment:
```bash
DOCS_PR_URL=$(gh pr list --repo cloudflare/cloudflare-docs --head sync-docs-pr-${{ github.event.pull_request.number }} --json url --jq '.[0].url')
# Check if bot comment already exists (look for comments from github-actions bot containing "Documentation sync")
EXISTING_COMMENT_ID=$(gh pr view ${{ github.event.pull_request.number }} --repo ${{ github.repository }} --json comments --jq '.comments[] | select(.author.login == "github-actions" and (.body | contains("Documentation sync"))) | .id' | head -1)
COMMENT_BODY="📚 **Documentation sync PR:** $DOCS_PR_URL\n\n_This comment will be updated as the PR changes._"
if [ -n "$EXISTING_COMMENT_ID" ]; then
# Edit existing comment
gh api --method PATCH /repos/${{ github.repository }}/issues/comments/$EXISTING_COMMENT_ID -f body="$COMMENT_BODY"
else
# Create new comment
gh pr comment ${{ github.event.pull_request.number }} --repo ${{ github.repository }} --body "$COMMENT_BODY"
fi
```
⚠️ THE TASK IS NOT COMPLETE UNTIL ALL 8 STEPS ARE DONE. Do not stop after editing files.
## Documentation Writing Guidelines (Diátaxis Framework)
When writing the documentation content, adapt your approach based on what changed:
**For a single function/method:**
- **Reference**: Technical description - signature, parameters, return types, behavior
- **Example**: Concise code snippet showing usage in context
- **Use cases**: Brief bullets on when/why to use it (if not obvious)
- **DO NOT** create separate "how-to" sections - integrate examples into the reference
**For new features/workflows (multiple related functions):**
- **Reference**: Complete API docs for all functions
- **How-to guide**: Step-by-step guide for real-world tasks
- **Explanation**: Architecture, design decisions, alternatives
**For breaking changes:**
- **Reference**: Updated API documentation
- **How-to**: Migration guide (before/after)
- **Explanation**: Why changed, implications
**Key principles:**
- Single functions = reference + example (concise)
- Multi-step workflows = separate how-to guides
- Keep reference neutral and factual
- Don't overexplain simple functions
**Step 3: Provide Clear Output**
Clearly state your decision:
- If syncing: Explain what documentation changes you're making and why
- If not syncing: Explain why documentation updates aren't needed for this PR
## Important Notes
- Use the GH_TOKEN environment variable for authentication with gh CLI
- Adapt paths, links, and references as needed for cloudflare-docs structure
- Follow existing patterns in the cloudflare-docs repository
- Be conservative but thorough - when in doubt, create the sync PR for human review
Begin your evaluation now.
EOF
echo "prompt<<PROMPT_EOF" >> $GITHUB_OUTPUT
cat /tmp/claude_prompt.md >> $GITHUB_OUTPUT
echo "PROMPT_EOF" >> $GITHUB_OUTPUT
- name: Run Claude Code to create adapted PR
if: steps.get-diffs.outputs.skip != 'true'
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
github_token: ${{ secrets.GITHUB_TOKEN }}
prompt: ${{ steps.create-prompt.outputs.prompt }}
claude_args: "--allowed-tools Bash,Edit"
env:
GH_TOKEN: ${{ secrets.AGENTS_GITHUB_TOKEN }}