Skill v1.0.0
currentTrusted Publisher100/100version: "1.0.0" name: ghqr-report description: 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.
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 withseverity,category,issue,recommendation, and an optionallearn_moreURL
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_scantool to run a new scan:
- Pass
enterprises,organizations, orrepositoriesbased 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:
- [ ] Executive summary reflects actual issue counts
- [ ] Every category with at least one finding has its own section
- [ ] Every issue listed in the scan appears somewhere in the report
- [ ] Each finding in the 30/60/90 plan maps directly to a scan issue or recommendation
- [ ] No findings are duplicated across plan phases
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 RequiredThe following security areas **cannot be verified automatically** via the GitHubAPI 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 sprintmedium→ 60-day sprintlow+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.mdcategories)