GitHub Quick Review — Executive Report Skill
Expert guidance for transforming ghqr scan JSON output into a structured executive report with findings by category and a prioritized 30/60/90-day remediation plan.
Overview
This skill enables agents to:
- Trigger a ghqr scan (or consume an existing scan result) for an enterprise, organization, or repository
- Produce a polished executive summary with overall best practices posture and key KPIs
- Generate one dedicated section per validated category with its issues and recommendations
- Build a prioritized remediation roadmap split into 30, 60, and 90-day milestones
When to Use This Skill
Trigger this skill when the user asks for:
- "Generate a report", "executive report", "best practices report", or "posture report"
- "Remediation plan", "action plan", "30/60/90 plan"
- "What are the findings from the ghqr scan?"
- "Show me the issues and how to fix them"
Data Sources
The ghqr JSON output contains the following top-level structure:
{
"generated_at": "<RFC3339 timestamp>",
"summary": { "total_scanned": N, "non_compliant": N, "by_severity": {} },
"enterprises": {
"<slug>": {
"ghas_settings": {
"advanced_security": "enabled|disabled|not_set",
"secret_scanning": "enabled|disabled|not_set",
"secret_scanning_push_protection": "enabled|disabled|not_set",
"dependabot_alerts": "enabled|disabled|not_set",
"dependabot_security_updates": "enabled|disabled|not_set",
"dependency_graph": "enabled|disabled|not_set",
"secret_scanning_non_provider_patterns": "enabled|disabled|not_set"
},
"evaluation": { "recommendations": [] }
}
},
"organizations": {
"<name>": {
"settings": {
"security": {
"advanced_security_enabled_for_new_repos": true,
"secret_scanning_enabled_for_new_repos": true,
"secret_scanning_push_protection_enabled_for_new_repos": true,
"dependabot_alerts_enabled_for_new_repos": true,
"dependabot_security_updates_enabled_for_new_repos": true,
"dependency_graph_enabled_for_new_repos": true
}
},
"evaluation": { "recommendations": [] }
}
},
"repositories": { "<owner/name>": { "evaluation": { "recommendations": [] } } }
}
Each evaluation object contains:
recommendations[]: all findings (both hard issues and advisory items), each with severity, category, issue, recommendation, and an optional learn_more URL
Severity Levels
| Severity |
Meaning |
critical |
Immediate risk, must fix now |
high |
Serious gap, fix within 30 days |
medium |
Important improvement, fix within 60 days |
low |
Minor gap, fix within 90 days |
info |
Advisory only |
Categories Validated by ghqr
| Category |
Description |
security |
Enterprise GHAS policy defaults; org-wide secret scanning, push protection, and GHAS defaults for new repos; org-level open code scanning and secret scanning alerts |
branch_protection |
Branch rules, required reviews, status checks |
access_control |
Collaborator permissions, deploy keys, admin access |
copilot_security |
Public code suggestions, content exclusions |
copilot_cost |
Seat utilization, inactive seats |
copilot_features |
IDE chat, CLI, platform chat enablement |
copilot_models |
Allowed/blocked model configuration |
copilot_mcp |
MCP server policy |
copilot_extensions |
Extension allowlist |
actions |
Workflow permissions, allowed actions, SHA pinning |
community |
SECURITY.md, CODEOWNERS, contributing guidelines |
dependencies |
Enterprise/org Dependabot alert defaults for new repos; Dependabot security updates defaults; aggregate open Dependabot alerts by severity |
permissions |
Default repo permissions, member privileges |
deployment |
Environment protection rules |
maintenance |
Stale branches, archived repos, empty repos |
risk |
Repository criticality, public visibility |
features |
Advanced Security, wiki, issue tracker |
Workflow
Phase 1 — Acquire Scan Data
If the user provides a scan result file path or JSON, use it directly. Otherwise:
- Use the
ghqr_scan tool to run a new scan:
- Pass
enterprises, organizations, or repositories based on the user's scope
- The tool returns a file URI pointing to the JSON output
- Read the JSON output file to load the scan data
Phase 2 — Build the Report
Produce the full report in Markdown following the Report Template below. Populate every section with real data from the scan; never invent findings.
Phase 3 — Validate Completeness
Before delivering the report, verify:
Report Template
# GitHub Assessment Report — [Enterprise/Organization/Repository Name]
**Scope:** [Enterprise / Organization / Repository]
**Generated:** [Date]
**Scan Coverage:** [N enterprises / N organizations / N repositories]
---
## Executive Summary
> One paragraph (4–6 sentences) for a non-technical audience. State the overall
> security posture, the number of critical and high findings, the biggest
> risk areas, and the top improvement opportunity.
### Posture Scorecard
| Entity | Type | Critical | High | Medium | Low | Info |
|--------|------|----------|------|--------|-----|------|
| [name] | org | 0 | 2 | 3 | 1 | 4 |
| [repo] | repo | 1 | 1 | 2 | 0 | 2 |
### Overall Risk Distribution
| Severity | Count | % of Total |
|----------|-------|-----------|
| 🔴 Critical | N | X% |
| 🟠 High | N | X% |
| 🟡 Medium | N | X% |
| 🟢 Low | N | X% |
| ℹ️ Info | N | X% |
---
## Findings by Subject
<!-- Repeat this block for every category that has at least one issue or recommendation -->
### [Category Display Name] <!-- e.g. "Security — Dependabot & Code Scanning" -->
**Risk Level:** [Critical / High / Medium / Low]
**Affected Entities:** [list of org/repo names]
#### Findings
| Severity | Entity | Finding | Action | Learn More |
|----------|--------|---------|--------|------------|
| 🔴 Critical | org/repo | [issue text from scan] | [recommendation text] | [link from `learn_more`] |
| 🟠 High | org/repo | [issue text] | [recommendation text] | [link from `learn_more`] |
#### Why This Matters
[2–3 sentences explaining the business/security risk of this category in plain language]
---
<!-- Categories with zero findings are omitted -->
---
## Remediation Plan
### 30-Day Sprint — Immediate Actions 🔴
> Address all **critical** and **high** severity issues. These represent the
> highest risk to your organization and should be resolved within the first month.
| Priority | Entity | Action | Category | Effort | Owner |
|----------|--------|--------|----------|--------|-------|
| 1 | [entity] | [specific fix] | [category] | [S/M/L] | [team] |
| 2 | [entity] | [specific fix] | [category] | [S/M/L] | [team] |
**Expected outcome:** [Risk reduction summary]
---
### 60-Day Sprint — High-Priority Improvements 🟠
> Address all **medium** severity issues and any high-effort critical/high fixes
> that couldn't be completed in the 30-day sprint.
| Priority | Entity | Action | Category | Effort | Owner |
|----------|--------|--------|----------|--------|-------|
| 1 | [entity] | [specific fix] | [category] | [S/M/L] | [team] |
**Expected outcome:** [Risk reduction summary]
---
### 90-Day Sprint — Strategic Hardening 🟡
> Address all **low** severity issues, implement process improvements, and
> establish ongoing governance controls.
| Priority | Entity | Action | Category | Effort | Owner |
|----------|--------|--------|----------|--------|-------|
| 1 | [entity] | [specific fix] | [category] | [S/M/L] | [team] |
**Expected outcome:** [Risk reduction summary]
---
## Manual Checks Required
The following security areas **cannot be verified automatically** via the GitHub
API and require manual review:
| Area | What to Check | Where |
|------|--------------|-------|
| Audit log streaming | Connected to SIEM | Enterprise → Settings → Audit log |
| Secret scanning alerts | Open critical alerts reviewed and resolved | Repo → Security → Secret scanning |
| Secret scanning: custom patterns | Org/enterprise-level custom patterns defined | Org → Settings → Code security → Secret scanning |
| Secret scanning: bypass requests | Bypass request reviewers configured for push protection | Org → Settings → Code security → Secret scanning |
| Code scanning: default setup | Default setup enabled on all active repos (no workflow required) | Repo → Settings → Code security → Code scanning |
| Code scanning: alert triage | Open high/critical code scanning alerts reviewed | Repo → Security → Code scanning |
| Code scanning: tool coverage | All relevant languages covered by a scanning tool | Repo → Security → Code scanning |
| Dependency review | dependency-review-action present in PR workflows | Repo → `.github/workflows/` |
| Actions: self-hosted runners | Present on public repos | Repo → Settings → Actions → Runners |
| Branch protection: enforce admins | Enabled | Repo → Settings → Branches |
| Environment protection rules | Reviewers configured | Repo → Settings → Environments |
| SAML SSO enforcement & SCIM | SSO enforced; SCIM provisioning active | Org → Settings → Authentication Security |
| IP Allow List | Configured and enabled | Org → Settings → Authentication Security |
| Org webhooks | SSL verification enabled, shared secret set on all hooks | Org → Settings → Webhooks |
| Org-level rulesets | At least one ruleset defined for repo governance | Org → Settings → Rules → Rulesets |
---
## Appendix — Full Issue List
### [Entity Name]
<details>
<summary>Expand all findings</summary>
| Severity | Category | Finding | Action | Learn More |
|----------|----------|---------|--------|------------|
| [sev] | [cat] | [issue] | [recommendation] | [learn_more URL as hyperlink, or blank if empty] |
</details>
Category Display Name Mapping
When rendering category names in the report use these human-readable titles:
| Raw category |
Display name |
security |
Security — Vulnerability Management |
branch_protection |
Branch Protection |
access_control |
Access Control & Permissions |
copilot_security |
GitHub Copilot — Security & Compliance |
copilot_cost |
GitHub Copilot — Cost & Seat Utilization |
copilot_features |
GitHub Copilot — Feature Enablement |
copilot_models |
GitHub Copilot — Model Policy |
copilot_mcp |
GitHub Copilot — MCP Configuration |
copilot_extensions |
GitHub Copilot — Extensions |
actions |
GitHub Actions — Workflow Security |
community |
Community Health & Documentation |
dependencies |
Dependency Management |
permissions |
Member & Repository Permissions |
deployment |
Deployment & Environment Controls |
maintenance |
Repository Maintenance |
risk |
Visibility & Risk Exposure |
features |
Advanced Security Features |
Effort Sizing Guide
When populating the Effort column in the plan tables:
| Label |
Definition |
| S — Small |
Single setting toggle or one-click configuration; < 1 hour |
| M — Medium |
Requires creating a file, policy, or workflow; 1–4 hours |
| L — Large |
Requires team coordination, design decision, or phased rollout; 1+ days |
Output Requirements
The agent MUST:
- Always use real scan data — never fabricate issues
- Include every category that has at least one finding; skip categories with zero findings
- Map every finding to exactly one plan phase based on its severity:
critical + high → 30-day sprint
medium → 60-day sprint
low + info → 90-day sprint
- Estimate effort using S/M/L sizing for each action item
- List manual checks that ghqr cannot automate (reference
references/MANUAL_CHECKS.md categories)
1---2name: ghqr-report3description: Generate an executive assessment report from GitHub Quick Review (ghqr) scan data. Produces an executive summary, a dedicated section per validated subject with all findings, and a prioritized 30/60/90-day remediation plan. Use when the user asks for a report, executive summary, best practices posture overview, or a remediation roadmap from ghqr scan results.4---56# GitHub Quick Review — Executive Report Skill78Expert guidance for transforming ghqr scan JSON output into a structured executive report with findings by category and a prioritized 30/60/90-day remediation plan.910## Overview1112This skill enables agents to:13- Trigger a ghqr scan (or consume an existing scan result) for an enterprise, organization, or repository14- Produce a polished executive summary with overall best practices posture and key KPIs15- Generate one dedicated section per validated category with its issues and recommendations16- Build a prioritized remediation roadmap split into 30, 60, and 90-day milestones1718## When to Use This Skill1920Trigger this skill when the user asks for:21- "Generate a report", "executive report", "best practices report", or "posture report"22- "Remediation plan", "action plan", "30/60/90 plan"23- "What are the findings from the ghqr scan?"24- "Show me the issues and how to fix them"2526## Data Sources2728The ghqr JSON output contains the following top-level structure:2930```json31{32 "generated_at": "<RFC3339 timestamp>",33 "summary": { "total_scanned": N, "non_compliant": N, "by_severity": {} },34 "enterprises": {35 "<slug>": {36 "ghas_settings": {37 "advanced_security": "enabled|disabled|not_set",38 "secret_scanning": "enabled|disabled|not_set",39 "secret_scanning_push_protection": "enabled|disabled|not_set",40 "dependabot_alerts": "enabled|disabled|not_set",41 "dependabot_security_updates": "enabled|disabled|not_set",42 "dependency_graph": "enabled|disabled|not_set",43 "secret_scanning_non_provider_patterns": "enabled|disabled|not_set"44 },45 "evaluation": { "recommendations": [] }46 }47 },48 "organizations": {49 "<name>": {50 "settings": {51 "security": {52 "advanced_security_enabled_for_new_repos": true,53 "secret_scanning_enabled_for_new_repos": true,54 "secret_scanning_push_protection_enabled_for_new_repos": true,55 "dependabot_alerts_enabled_for_new_repos": true,56 "dependabot_security_updates_enabled_for_new_repos": true,57 "dependency_graph_enabled_for_new_repos": true58 }59 },60 "evaluation": { "recommendations": [] }61 }62 },63 "repositories": { "<owner/name>": { "evaluation": { "recommendations": [] } } }64}65```6667Each `evaluation` object contains:68- `recommendations[]`: all findings (both hard issues and advisory items), each with `severity`, `category`, `issue`, `recommendation`, and an optional `learn_more` URL6970### Severity Levels71| Severity | Meaning |72|----------|---------|73| `critical` | Immediate risk, must fix now |74| `high` | Serious gap, fix within 30 days |75| `medium` | Important improvement, fix within 60 days |76| `low` | Minor gap, fix within 90 days |77| `info` | Advisory only |7879### Categories Validated by ghqr80| Category | Description |81|----------|-------------|82| `security` | Enterprise GHAS policy defaults; org-wide secret scanning, push protection, and GHAS defaults for new repos; org-level open code scanning and secret scanning alerts |83| `branch_protection` | Branch rules, required reviews, status checks |84| `access_control` | Collaborator permissions, deploy keys, admin access |85| `copilot_security` | Public code suggestions, content exclusions |86| `copilot_cost` | Seat utilization, inactive seats |87| `copilot_features` | IDE chat, CLI, platform chat enablement |88| `copilot_models` | Allowed/blocked model configuration |89| `copilot_mcp` | MCP server policy |90| `copilot_extensions` | Extension allowlist |91| `actions` | Workflow permissions, allowed actions, SHA pinning |92| `community` | SECURITY.md, CODEOWNERS, contributing guidelines |93| `dependencies` | Enterprise/org Dependabot alert defaults for new repos; Dependabot security updates defaults; aggregate open Dependabot alerts by severity |94| `permissions` | Default repo permissions, member privileges |95| `deployment` | Environment protection rules |96| `maintenance` | Stale branches, archived repos, empty repos |97| `risk` | Repository criticality, public visibility |98| `features` | Advanced Security, wiki, issue tracker |99100## Workflow101102### Phase 1 — Acquire Scan Data103104If the user provides a scan result file path or JSON, use it directly. Otherwise:1051061. Use the `ghqr_scan` tool to run a new scan:107 - Pass `enterprises`, `organizations`, or `repositories` based on the user's scope108 - The tool returns a file URI pointing to the JSON output1092. Read the JSON output file to load the scan data110111### Phase 2 — Build the Report112113Produce the full report in Markdown following the **Report Template** below. Populate every section with real data from the scan; never invent findings.114115### Phase 3 — Validate Completeness116117Before delivering the report, verify:118- [ ] Executive summary reflects actual issue counts119- [ ] Every category with at least one finding has its own section120- [ ] Every issue listed in the scan appears somewhere in the report121- [ ] Each finding in the 30/60/90 plan maps directly to a scan issue or recommendation122- [ ] No findings are duplicated across plan phases123124---125126## Report Template127128```markdown129# GitHub Assessment Report — [Enterprise/Organization/Repository Name]130131**Scope:** [Enterprise / Organization / Repository]132**Generated:** [Date]133**Scan Coverage:** [N enterprises / N organizations / N repositories]134135---136137## Executive Summary138139> One paragraph (4–6 sentences) for a non-technical audience. State the overall140> security posture, the number of critical and high findings, the biggest141> risk areas, and the top improvement opportunity.142143### Posture Scorecard144145| Entity | Type | Critical | High | Medium | Low | Info |146|--------|------|----------|------|--------|-----|------|147| [name] | org | 0 | 2 | 3 | 1 | 4 |148| [repo] | repo | 1 | 1 | 2 | 0 | 2 |149150### Overall Risk Distribution151152| Severity | Count | % of Total |153|----------|-------|-----------|154| 🔴 Critical | N | X% |155| 🟠 High | N | X% |156| 🟡 Medium | N | X% |157| 🟢 Low | N | X% |158| ℹ️ Info | N | X% |159160---161162## Findings by Subject163164<!-- Repeat this block for every category that has at least one issue or recommendation -->165166### [Category Display Name] <!-- e.g. "Security — Dependabot & Code Scanning" -->167168**Risk Level:** [Critical / High / Medium / Low] 169**Affected Entities:** [list of org/repo names]170171#### Findings172173| Severity | Entity | Finding | Action | Learn More |174|----------|--------|---------|--------|------------|175| 🔴 Critical | org/repo | [issue text from scan] | [recommendation text] | [link from `learn_more`] |176| 🟠 High | org/repo | [issue text] | [recommendation text] | [link from `learn_more`] |177178#### Why This Matters179180[2–3 sentences explaining the business/security risk of this category in plain language]181182---183184<!-- Categories with zero findings are omitted -->185186---187188## Remediation Plan189190### 30-Day Sprint — Immediate Actions 🔴191192> Address all **critical** and **high** severity issues. These represent the193> highest risk to your organization and should be resolved within the first month.194195| Priority | Entity | Action | Category | Effort | Owner |196|----------|--------|--------|----------|--------|-------|197| 1 | [entity] | [specific fix] | [category] | [S/M/L] | [team] |198| 2 | [entity] | [specific fix] | [category] | [S/M/L] | [team] |199200**Expected outcome:** [Risk reduction summary]201202---203204### 60-Day Sprint — High-Priority Improvements 🟠205206> Address all **medium** severity issues and any high-effort critical/high fixes207> that couldn't be completed in the 30-day sprint.208209| Priority | Entity | Action | Category | Effort | Owner |210|----------|--------|--------|----------|--------|-------|211| 1 | [entity] | [specific fix] | [category] | [S/M/L] | [team] |212213**Expected outcome:** [Risk reduction summary]214215---216217### 90-Day Sprint — Strategic Hardening 🟡218219> Address all **low** severity issues, implement process improvements, and220> establish ongoing governance controls.221222| Priority | Entity | Action | Category | Effort | Owner |223|----------|--------|--------|----------|--------|-------|224| 1 | [entity] | [specific fix] | [category] | [S/M/L] | [team] |225226**Expected outcome:** [Risk reduction summary]227228---229230## Manual Checks Required231232The following security areas **cannot be verified automatically** via the GitHub233API and require manual review:234235| Area | What to Check | Where |236|------|--------------|-------|237| Audit log streaming | Connected to SIEM | Enterprise → Settings → Audit log |238| Secret scanning alerts | Open critical alerts reviewed and resolved | Repo → Security → Secret scanning |239| Secret scanning: custom patterns | Org/enterprise-level custom patterns defined | Org → Settings → Code security → Secret scanning |240| Secret scanning: bypass requests | Bypass request reviewers configured for push protection | Org → Settings → Code security → Secret scanning |241| Code scanning: default setup | Default setup enabled on all active repos (no workflow required) | Repo → Settings → Code security → Code scanning |242| Code scanning: alert triage | Open high/critical code scanning alerts reviewed | Repo → Security → Code scanning |243| Code scanning: tool coverage | All relevant languages covered by a scanning tool | Repo → Security → Code scanning |244| Dependency review | dependency-review-action present in PR workflows | Repo → `.github/workflows/` |245| Actions: self-hosted runners | Present on public repos | Repo → Settings → Actions → Runners |246| Branch protection: enforce admins | Enabled | Repo → Settings → Branches |247| Environment protection rules | Reviewers configured | Repo → Settings → Environments |248| SAML SSO enforcement & SCIM | SSO enforced; SCIM provisioning active | Org → Settings → Authentication Security |249| IP Allow List | Configured and enabled | Org → Settings → Authentication Security |250| Org webhooks | SSL verification enabled, shared secret set on all hooks | Org → Settings → Webhooks |251| Org-level rulesets | At least one ruleset defined for repo governance | Org → Settings → Rules → Rulesets |252253---254255## Appendix — Full Issue List256257### [Entity Name]258259<details>260<summary>Expand all findings</summary>261262| Severity | Category | Finding | Action | Learn More |263|----------|----------|---------|--------|------------|264| [sev] | [cat] | [issue] | [recommendation] | [learn_more URL as hyperlink, or blank if empty] |265266</details>267```268269---270271## Category Display Name Mapping272273When rendering category names in the report use these human-readable titles:274275| Raw category | Display name |276|--------------|-------------|277| `security` | Security — Vulnerability Management |278| `branch_protection` | Branch Protection |279| `access_control` | Access Control & Permissions |280| `copilot_security` | GitHub Copilot — Security & Compliance |281| `copilot_cost` | GitHub Copilot — Cost & Seat Utilization |282| `copilot_features` | GitHub Copilot — Feature Enablement |283| `copilot_models` | GitHub Copilot — Model Policy |284| `copilot_mcp` | GitHub Copilot — MCP Configuration |285| `copilot_extensions` | GitHub Copilot — Extensions |286| `actions` | GitHub Actions — Workflow Security |287| `community` | Community Health & Documentation |288| `dependencies` | Dependency Management |289| `permissions` | Member & Repository Permissions |290| `deployment` | Deployment & Environment Controls |291| `maintenance` | Repository Maintenance |292| `risk` | Visibility & Risk Exposure |293| `features` | Advanced Security Features |294295## Effort Sizing Guide296297When populating the **Effort** column in the plan tables:298299| Label | Definition |300|-------|-----------|301| S — Small | Single setting toggle or one-click configuration; < 1 hour |302| M — Medium | Requires creating a file, policy, or workflow; 1–4 hours |303| L — Large | Requires team coordination, design decision, or phased rollout; 1+ days |304305## Output Requirements306307The agent MUST:3081. **Always use real scan data** — never fabricate issues3092. **Include every category** that has at least one finding; skip categories with zero findings3103. **Map every finding to exactly one plan phase** based on its severity:311 - `critical` + `high` → 30-day sprint312 - `medium` → 60-day sprint313 - `low` + `info` → 90-day sprint3144. **Estimate effort** using S/M/L sizing for each action item3155. **List manual checks** that ghqr cannot automate (reference `references/MANUAL_CHECKS.md` categories)