$npx -y skills add avalonreset/legends-github --skill github-auditGitHub repo health audit with 0-100 scoring across README, metadata, legal, community, releases, SEO. Single, remote, or portfolio mode.
| 1 | # GitHub Audit -- Repository Health Scoring |
| 2 | |
| 3 | Primary data-gathering skill. Produces the richest dataset that other skills consume. |
| 4 | |
| 5 | ## Modes |
| 6 | |
| 7 | - `github-audit` -- Audit the repo in the current directory |
| 8 | - `github-audit <owner/repo>` -- Audit a specific remote repo |
| 9 | - `github-audit <username>` -- Audit entire portfolio (all public repos) |
| 10 | |
| 11 | ## Headless Scope |
| 12 | |
| 13 | The deterministic script entrypoint currently covers local repo audits only: |
| 14 | |
| 15 | ```bash |
| 16 | python3 scripts/run_headless.py audit --path /path/to/repo |
| 17 | ``` |
| 18 | |
| 19 | Remote repo audits and portfolio audits remain conversational skill flows for |
| 20 | now. Do not imply the headless runner supports them unless that script contract |
| 21 | has been extended. |
| 22 | |
| 23 | ## Process (GARE Pattern) |
| 24 | |
| 25 | ### 1. Gather (Comprehensive Data Collection) |
| 26 | |
| 27 | **Step 0 -- Check shared data cache:** |
| 28 | Before running a full audit, check `.github-audit/audit-data.json`. |
| 29 | Reference: `github/references/shared-data-cache.md` for schemas. |
| 30 | |
| 31 | - If `audit-data.json` exists and is from today: offer the user a choice -- |
| 32 | "Cached audit scores found from earlier today. Reuse them or re-run fresh?" |
| 33 | If the user says reuse, skip to Step 3 (Recommend) with cached scores. |
| 34 | - If `repo-context.json` exists: use it for repo type, intent, language instead |
| 35 | of re-querying `gh repo view`. |
| 36 | - If cache is stale or user says "re-run" / "refresh": proceed with full gather below. |
| 37 | |
| 38 | This step collects ALL data before any analysis. Be thorough -- agents cannot |
| 39 | make their own API calls, so they depend entirely on the data you provide here. |
| 40 | |
| 41 | **For local/specific repo, run ALL of these:** |
| 42 | |
| 43 | ```bash |
| 44 | # 1. Repo metadata (use repositoryTopics, not topics) |
| 45 | gh repo view {owner}/{repo} --json name,description,url,homepageUrl,repositoryTopics,visibility,defaultBranchRef,licenseInfo,stargazerCount,forkCount,watchers,primaryLanguage,createdAt,updatedAt,isArchived,isFork,parent,hasIssuesEnabled,hasWikiEnabled,hasDiscussionsEnabled,isSecurityPolicyEnabled,usesCustomOpenGraphImage |
| 46 | |
| 47 | # 2. Recent activity |
| 48 | gh api repos/{owner}/{repo}/commits --jq '.[0].commit.committer.date' 2>/dev/null |
| 49 | |
| 50 | # 3. Releases (with titles and dates) |
| 51 | gh release list --repo {owner}/{repo} --limit 5 |
| 52 | |
| 53 | # 4. README -- read the FULL content, not just check existence |
| 54 | gh api repos/{owner}/{repo}/readme --jq '.content' | base64 -d |
| 55 | |
| 56 | # 5. Community files -- check EACH ONE individually |
| 57 | # Root-level files: |
| 58 | gh api repos/{owner}/{repo}/contents/CONTRIBUTING.md --jq '.name' 2>/dev/null |
| 59 | gh api repos/{owner}/{repo}/contents/CODE_OF_CONDUCT.md --jq '.name' 2>/dev/null |
| 60 | gh api repos/{owner}/{repo}/contents/SECURITY.md --jq '.name' 2>/dev/null |
| 61 | gh api repos/{owner}/{repo}/contents/CITATION.cff --jq '.name' 2>/dev/null |
| 62 | gh api repos/{owner}/{repo}/contents/CODEOWNERS --jq '.name' 2>/dev/null |
| 63 | gh api repos/{owner}/{repo}/contents/CHANGELOG.md --jq '.name' 2>/dev/null |
| 64 | gh api repos/{owner}/{repo}/contents/.gitattributes --jq '.name' 2>/dev/null |
| 65 | gh api repos/{owner}/{repo}/contents/SUPPORT.md --jq '.name' 2>/dev/null |
| 66 | |
| 67 | # 6. .github directory contents (top level) |
| 68 | gh api repos/{owner}/{repo}/contents/.github --jq '.[].name' 2>/dev/null |
| 69 | |
| 70 | # 7. Issue templates listing |
| 71 | gh api repos/{owner}/{repo}/contents/.github/ISSUE_TEMPLATE --jq '.[].name' 2>/dev/null |
| 72 | |
| 73 | # 8. PR template check |
| 74 | gh api repos/{owner}/{repo}/contents/.github/PULL_REQUEST_TEMPLATE.md --jq '.name' 2>/dev/null |
| 75 | |
| 76 | # 9. Workflows listing (for CI detection) |
| 77 | gh api repos/{owner}/{repo}/contents/.github/workflows --jq '.[].name' 2>/dev/null |
| 78 | |
| 79 | # 10. Devcontainer check |
| 80 | gh api repos/{owner}/{repo}/contents/.devcontainer/devcontainer.json --jq '.name' 2>/dev/null |
| 81 | |
| 82 | # 11. Dependabot check |
| 83 | gh api repos/{owner}/{repo}/contents/.github/dependabot.yml --jq '.name' 2>/dev/null |
| 84 | |
| 85 | # 12. Release config check |
| 86 | gh api repos/{owner}/{repo}/contents/.github/release.yml --jq '.name' 2>/dev/null |
| 87 | |
| 88 | # 13. Funding check |
| 89 | gh api repos/{owner}/{repo}/contents/.github/FUNDING.yml --jq '.name' 2>/dev/null |
| 90 | |
| 91 | # 14. SECURITY.md content (for legal agent quality assessment) |
| 92 | gh api repos/{owner}/{repo}/contents/SECURITY.md --jq '.content' 2>/dev/null | base64 -d 2>/dev/null |
| 93 | |
| 94 | # 15. CITATION.cff content (for legal agent validation) |
| 95 | gh api repos/{owner}/{repo}/contents/CITATION.cff --jq '.content' 2>/dev/null | base64 -d 2>/dev/null |
| 96 | |
| 97 | # 16. CHANGELOG.md first 50 lines (for releases agent) |
| 98 | gh api repos/{owner}/{repo}/contents/CHANGELOG.md --jq '.content' 2>/dev/null | base64 -d 2>/dev/null | head -50 |
| 99 | |
| 100 | # 17. CONTRIBUTING.md content (for community agent quality assessment) |
| 101 | gh api repos/{owner}/{repo}/contents/CONTRIBUTING.md --jq '.content' 2>/dev/null | base64 -d 2>/dev/null |
| 102 | |
| 103 | # 18. PR template content (for community agent quality assessment) |
| 104 | gh api repos/{owner}/{repo}/contents/.github/PULL_REQUEST_TEMPLATE.md --jq '.content' 2>/dev/null | base64 -d 2>/dev/null |
| 105 | |
| 106 | # 19. LICENSE file content -- first 20 lines (for legal agent copyright verification) |
| 107 | gh |