ghqr-report

star 495

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.

microsoft By microsoft schedule Updated 2/24/2026

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 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

# 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:

  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)
Install via CLI
npx skills add https://github.com/microsoft/ghqr --skill ghqr-report
Repository Details
star Stars 495
call_split Forks 29
navigation Branch main
article Path SKILL.md
More from Creator