--- 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: ```json { "generated_at": "", "summary": { "total_scanned": N, "non_compliant": N, "by_severity": {} }, "enterprises": { "": { "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": { "": { "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": { "": { "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: 1. 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 2. 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 ```markdown # 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 ### [Category Display Name] **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] --- --- ## 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]
Expand all findings | Severity | Category | Finding | Action | Learn More | |----------|----------|---------|--------|------------| | [sev] | [cat] | [issue] | [recommendation] | [learn_more URL as hyperlink, or blank if empty] |
``` --- ## 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: 1. **Always use real scan data** — never fabricate issues 2. **Include every category** that has at least one finding; skip categories with zero findings 3. **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 4. **Estimate effort** using S/M/L sizing for each action item 5. **List manual checks** that ghqr cannot automate (reference `references/MANUAL_CHECKS.md` categories)