Skip to content
Draft
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
83 changes: 72 additions & 11 deletions .github/workflows/readme-check.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,21 @@ on:
- "src/core/**"
- "package.json"
- "README.md"
push:
branches: [main]
paths:
- "src/cli/**"
- "src/core/**"
- "package.json"
workflow_dispatch:
# Run from Actions tab to test: use a branch that has an open PR, or run on default to see check result in the job log only.

jobs:
readme-check:
readme-check-pr:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
permissions:
contents: write
contents: read
pull-requests: write
issues: read
id-token: write
Expand All @@ -25,10 +32,8 @@ jobs:
uses: actions/checkout@v4
with:
fetch-depth: 1
token: ${{ secrets.GITHUB_TOKEN }}

- name: Run Claude README Check
id: claude-readme-check
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
Expand All @@ -47,13 +52,69 @@ jobs:
- Installation section: Package name and Node version mentioned must match package.json.
- Quick start: The example commands (e.g. base44 login, base44 create) must still exist as commands in the codebase.

PR number for this run (use this exact number in gh pr comment; if blank/empty, do not comment—print conclusion to the terminal only): ${{ github.event.pull_request.number }}
PR number: ${{ github.event.pull_request.number }}

RULES:
1. If everything matches: post a PR comment saying "README check ran. README is up to date."
2. If you find discrepancies: Do NOT update the file or push commits. Instead, post a PR comment listing the issues in a readable format. Use this template:

README check ran. **N issue(s) found:**
- Issue one description
- Issue two description

These will be fixed automatically when this PR is merged to main.

3. Post the comment with: gh pr comment <PR number> --body "<message>"
4. Do not paste full diffs or long suggestion lists. Keep each bullet to one sentence.
claude_args: '--allowed-tools Read Glob Grep "Bash(gh pr comment:*)"'
allowed_bots: 'claude[bot]'

readme-update-main:
if: github.event_name == 'push' || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
permissions:
contents: write
id-token: write

steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 1
ref: main
token: ${{ secrets.GITHUB_TOKEN }}

- name: Run Claude README Update
uses: anthropics/claude-code-action@v1
with:
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
prompt: |
You are checking whether README.md is still accurate after recent changes to main.

GROUND TRUTH (read from the repo):
1. Read src/cli/program.ts to get all registered commands. Note which are registered with { hidden: true } — those should NOT appear in the README command table.
2. For each command, read the corresponding factory file under src/cli/commands/ to get:
- Command name and subcommand names (e.g. "dashboard open", "site deploy")
- The .description() string for each command/subcommand
3. Read package.json for: the "name" field (install command) and "engines"."node" if present (Node.js requirement).

COMPARE AGAINST README.md:
- Command table: Every non-hidden command/subcommand must be listed. Descriptions in the table should match the code. Remove any row for a command that no longer exists.
- Installation section: Package name and Node version mentioned must match package.json.
- Quick start: The example commands (e.g. base44 login, base44 create) must still exist as commands in the codebase.

RULES:
1. If everything matches: If the PR number line above has a number, run: gh pr comment <that number> --body "README check ran. README is up to date." If it is empty (manual run), print "README check ran. README is up to date." to the terminal and exit.
2. If you find discrepancies: Update README.md with the correct content (use the Write tool). If the PR number line above has a number (i.e. this is a PR-triggered run), commit and push the fix: git config user.name "github-actions[bot]"; git config user.email "github-actions[bot]@users.noreply.github.com"; git add README.md; git commit -m "docs: update README to match CLI (command table, install, or quick start)"; git push. Then post one short comment with gh pr comment <that number> --body "..." summarizing what was fixed (e.g. "README check ran. N issue(s) found and applied: [brief list]. README.md has been updated in this branch."; escape the body for the shell). If the PR number is empty (manual/workflow_dispatch run), do NOT run git push. Instead, print the summary of discrepancies to the terminal so the user can review them.
3. The PR comment or terminal output must only state that the check ran and the conclusion. Do not paste full diffs or long suggestion lists.
claude_args: '--allowed-tools Read Glob Grep Write "Bash(gh pr comment:*)" "Bash(git config *)" "Bash(git add *)" "Bash(git commit *)" "Bash(git push *)"'
1. If everything matches: print "README is up to date." and exit.
2. If you find discrepancies: Update README.md with the correct content (use the Write tool). Then commit and push:
- git config user.name "github-actions[bot]"
- git config user.email "github-actions[bot]@users.noreply.github.com"
- git add README.md
- git commit with a message that lists what was fixed, e.g.:
docs: update README to match CLI

- Added missing eject command
- Updated deploy description to match code
- git push
3. Keep the commit message concise. Use a bullet list in the commit body for each fix.
claude_args: '--allowed-tools Read Glob Grep Write "Bash(git config *)" "Bash(git add *)" "Bash(git commit *)" "Bash(git push *)"'
allowed_bots: 'claude[bot]'
# See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md
# or https://code.claude.com/docs/en/cli-reference for available options
Loading