diff --git a/.github/workflows/readme-check.yml b/.github/workflows/readme-check.yml new file mode 100644 index 0000000..5f51bee --- /dev/null +++ b/.github/workflows/readme-check.yml @@ -0,0 +1,56 @@ +name: README Check + +on: + pull_request: + types: [opened, synchronize, ready_for_review, reopened] + paths: + - "skills/**" + - "README.md" + - "CONTRIBUTING.md" + 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: + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + issues: read + id-token: write + + steps: + - name: Checkout repository + 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 }} + prompt: | + You are checking whether README.md is still accurate after the changes in this PR. + + GROUND TRUTH (read from the repo): + 1. List all directories directly under skills/ (e.g. skills/base44-cli/, skills/base44-sdk/). Each directory that contains a SKILL.md is a published skill. + 2. For each skill, read its SKILL.md and extract the YAML frontmatter fields: + - `name` — the skill identifier + - `description` — the skill description (take only the first sentence or a concise summary, max ~20 words, to match the README table style) + 3. Check that CONTRIBUTING.md and LICENSE files exist at the repo root (these are linked from the README). + + COMPARE AGAINST README.md: + - Available skills table: Every skill directory under skills/ that has a SKILL.md must have a row in the "Available skills" table. The link should point to skills//SKILL.md. The description should be a concise summary that reflects the skill's frontmatter description. Any row for a skill that no longer exists must be removed. + - Installation section: The install command must reference `base44/skills` (the repo path). + - Links: The CONTRIBUTING.md and LICENSE links at the bottom must point to files that exist in the repo. + + 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 }} + + RULES: + 1. If everything matches: If the PR number line above has a number, run: gh pr comment --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 skills (skill table, install, or links)"; git push. Then post one short comment with gh pr comment --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 *)"' + allowed_bots: 'claude[bot]'