Agent skill

Building Identity Federation With Saml Azure Ad

by mukul975 in mukul975/Anthropic-Cybersecurity-Skills

Configure SAML 2.0 identity federation between on-premises Active Directory (via AD FS or a third-party IdP) and Microsoft Entra ID, covering federation models (AD FS, password hash sync…

Apache-2.0Auto-check passedSecurity

Install Building Identity Federation With Saml Azure Ad

skills CLI
$ npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill building-identity-federation-with-saml-azure-ad -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install mukul975/Anthropic-Cybersecurity-Skills building-identity-federation-with-saml-azure-ad --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/mukul975/Anthropic-Cybersecurity-Skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/building-identity-federation-with-saml-azure-ad .claude/skills/building-identity-federation-with-saml-azure-ad && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
building-identity-federation-with-saml-azure-ad
GitHub stars
34k
Token cost
~2.5k tokens
SKILL.md length
523 words
Files
8 (incl. scripts, references, assets)
Skills in repo
644
Repo updated
First seen
Licence
Apache-2.0

At a glance

Configure SAML 2.0 identity federation between on-premises Active Directory (via AD FS or a third-party IdP) and Microsoft Entra ID, covering federation models (AD FS, password hash sync…

  • Works in 5 steps: Prepare AD FS Infrastructure → Configure Azure AD Federated Domain → Configure AD FS Claims Rules → …
  • Extending on-premises authentication authority to cloud resources
  • SKILL.md covers Overview, When to Use, Prerequisites and Core Concepts, plus 3 more sections
  • Runs Python scripts from its folder; reaches schemas.xmlsoap.org and nexus.microsoftonline-p.com

What it does

Building Identity Federation With Saml Azure Ad is an agent skill from mukul975/Anthropic-Cybersecurity-Skills. Configure SAML 2.0 identity federation between on-premises Active Directory (via AD FS or a third-party IdP) and Microsoft Entra ID, covering federation models (AD FS, password hash sync, pass-through auth, third-party IdP) and the SAML authentication flow. Use when extending on-premises authentication authority to cloud resources or designing hybrid identity SSO architecture for Entra ID.

Its SKILL.md is about 2.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including scripts, reference files and assets (for example `assets/template.md`, `references/api-reference.md` and `references/standards.md`).

It sits in Security, covering Authentication and Red teaming and adversary simulation. It works with Microsoft Entra ID. The repository describes itself as: 817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io…. The licence is Apache-2.0.

When your agent uses it

  • Extending on-premises authentication authority to cloud resources
  • Designing hybrid identity SSO architecture for Entra ID

Example prompts

  • “/building-identity-federation-with-saml-azure-ad”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Prepare AD FS Infrastructure
  2. Configure Azure AD Federated Domain
  3. Configure AD FS Claims Rules
  4. Configure Third-Party SaaS Federation
  5. Certificate Lifecycle Management

What it can do on your machine

Read from SKILL.md and the folder at commit 54a7988. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 2 files in scripts/ (Python), which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • schemas.xmlsoap.org
    • nexus.microsoftonline-p.com
    • schemas.microsoft.com

    Also links to:

    • learn.microsoft.com
    • docs.oasis-open.org

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Building Identity Federation With Saml Azure Ad loads about 2.5k tokens when it runs, and up to ~4.4k if it reads all its reference files. Until then it costs about 110 tokens; SKILL.md has 523 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~110
When it runs · the whole SKILL.md, loaded when a task matches
~2.5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from mukul975/Anthropic-Cybersecurity-Skills at commit 54a7988, republished under its Apache-2.0 licence (© mukul975). 523 words, ~2,488 tokens.

Download SKILL.mdSave it as .claude/skills/building-identity-federation-with-saml-azure-ad/SKILL.md (or your agent's skills folder). This skill also uses 7 other files; get the full folder from GitHub.
name
building-identity-federation-with-saml-azure-ad
description
Configure SAML 2.0 identity federation between on-premises Active Directory (via AD FS or a third-party IdP) and Microsoft Entra ID, covering federation models (AD FS, password hash sync, pass-through auth, third-party IdP) and the SAML authentication flow. Use when extending on-premises authentication authority to cloud resources or designing hybrid identity SSO architecture for Entra ID.
domain
cybersecurity
subdomain
identity-access-management
tags
saml, azure-ad, entra-id, federation, identity, sso, adfs, hybrid-identity
version
1.0
author
mahipal
license
Apache-2.0
nist_csf
PR.AA-01, PR.AA-02, PR.AA-05, PR.AA-06
mitre_attack
T1606.002, T1556.007, T1484.002, T1078.004, T1110.003
mitre_f3.version
1.1
mitre_f3.tactics
initial-access, positioning

Building Identity Federation with SAML Azure AD

Overview

Identity federation enables users authenticated by one identity provider to access resources managed by another without maintaining separate credentials. This skill covers establishing SAML 2.0 federation between an organization's on-premises Active Directory (via AD FS or third-party IdP) and Microsoft Entra ID (formerly Azure AD), as well as configuring federated SSO for third-party SaaS applications. Federation eliminates password synchronization concerns and keeps authentication authority on-premises while extending SSO to cloud resources.

When to Use

  • When deploying or configuring building identity federation with saml azure ad capabilities in your environment
  • When establishing security controls aligned to compliance requirements
  • When building or improving security architecture for this domain
  • When conducting security assessments that require this implementation

Prerequisites

  • On-premises Active Directory domain
  • AD FS 2019+ or third-party SAML IdP (Okta, Ping, etc.)
  • Microsoft Entra ID tenant (P1 or P2 license recommended)
  • Azure AD Connect (if using hybrid identity with password hash sync as backup)
  • Public TLS certificate for federation endpoint
  • DNS records for federation service name

Core Concepts

Federation Models
ModelAuthentication AuthorityUse Case
Federated (AD FS)On-premises AD FSRegulatory requirement to keep auth on-prem
Managed (PHS)Azure AD with password hash syncSimplest cloud auth, AD FS not needed
Managed (PTA)On-premises via pass-through agentCloud auth validated against on-prem AD
Third-Party FederationExternal IdP (Okta, Ping)Multi-IdP environment
SAML Federation Architecture
User → Cloud App (SP)
   │
   └── Redirect to Azure AD
          │
          ├── Azure AD checks federated domain
          │
          └── Redirect to on-premises AD FS
                 │
                 ├── AD FS authenticates against Active Directory
                 │
                 ├── AD FS issues SAML token
                 │
                 └── Token posted back to Azure AD
                        │
                        ├── Azure AD validates federation trust
                        │
                        ├── Azure AD issues its own token
                        │
                        └── User receives access token for cloud app
Federation Trust Components
ComponentDescription
Token-Signing CertificateX.509 certificate used by IdP to sign SAML assertions
Federation MetadataXML document describing IdP endpoints and capabilities
Relying Party TrustConfiguration in AD FS for each SP (Azure AD)
Claims RulesTransform AD attributes into SAML claims
Issuer URIUnique identifier for the IdP (entity ID)

Workflow

Step 1: Prepare AD FS Infrastructure
powershell
# Install AD FS role
Install-WindowsFeature ADFS-Federation -IncludeManagementTools

# Configure AD FS farm
Install-AdfsFarm `
    -CertificateThumbprint $certThumbprint `
    -FederationServiceDisplayName "Corp Federation Service" `
    -FederationServiceName "fs.corp.example.com" `
    -ServiceAccountCredential $gmsaCredential

# Verify AD FS is operational
Get-AdfsProperties | Select-Object HostName, Identifier, FederationPassiveAddress
Step 2: Configure Azure AD Federated Domain
powershell
# Install Microsoft Graph PowerShell module
Install-Module Microsoft.Graph -Scope CurrentUser

# Connect to Microsoft Graph
Connect-MgGraph -Scopes "Domain.ReadWrite.All"

# Convert managed domain to federated
# Using AD FS federation metadata URL
$domainId = "corp.example.com"
$federationConfig = @{
    issuerUri = "http://fs.corp.example.com/adfs/services/trust"
    metadataExchangeUri = "https://fs.corp.example.com/adfs/services/trust/mex"
    passiveSignInUri = "https://fs.corp.example.com/adfs/ls/"
    signOutUri = "https://fs.corp.example.com/adfs/ls/?wa=wsignout1.0"
    signingCertificate = $base64Cert
    preferredAuthenticationProtocol = "saml"
}

# Apply federation settings to domain
New-MgDomainFederationConfiguration -DomainId $domainId -BodyParameter $federationConfig
Step 3: Configure AD FS Claims Rules
powershell
# Add Relying Party Trust for Azure AD
Add-AdfsRelyingPartyTrust `
    -Name "Microsoft Office 365 Identity Platform" `
    -MetadataUrl "https://nexus.microsoftonline-p.com/federationmetadata/2007-06/federationmetadata.xml"

# Configure claim rules
$rules = @"
@RuleTemplate = "LdapClaims"
@RuleName = "Extract AD Attributes"
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname",
   Issuer == "AD AUTHORITY"]
=> issue(store = "Active Directory",
   types = ("http://schemas.xmlsoap.org/claims/UPN",
            "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress",
            "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname",
            "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname"),
   query = ";userPrincipalName,mail,givenName,sn;{0}",
   param = c.Value);

@RuleTemplate = "PassThroughClaims"
@RuleName = "Pass Through UPN as NameID"
c:[Type == "http://schemas.xmlsoap.org/claims/UPN"]
=> issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier",
   Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer,
   Value = c.Value,
   ValueType = c.ValueType,
   Properties["http://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"]
       = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent");
"@

Set-AdfsRelyingPartyTrust `
    -TargetName "Microsoft Office 365 Identity Platform" `
    -IssuanceTransformRules $rules
Show full SKILL.md (218 more words)Show less
Step 4: Configure Third-Party SaaS Federation

For each SaaS application that supports SAML SSO via Azure AD:

  1. Navigate to Microsoft Entra Admin Center > Enterprise Applications
  2. Add the application from the gallery (or create custom SAML)
  3. Configure Single Sign-On > SAML:
    • Identifier (Entity ID): Application's entity ID
    • Reply URL (ACS): Application's assertion consumer service URL
    • Sign-on URL: Application's login URL
  4. Map user attributes/claims:
    • NameID: user.userprincipalname (email format)
    • Additional claims as required by the application
  5. Download the Federation Metadata XML or certificate
  6. Configure the SaaS app with Azure AD's federation details
Step 5: Certificate Lifecycle Management

AD FS token-signing certificates expire and must be renewed:

powershell
# Check current certificate expiration
Get-AdfsCertificate -CertificateType Token-Signing | Select-Object Thumbprint, NotAfter

# AD FS supports auto-rollover (enabled by default)
Get-AdfsProperties | Select-Object AutoCertificateRollover

# If manual rotation is needed:
# 1. Add new certificate as secondary
Set-AdfsCertificate -CertificateType Token-Signing -Thumbprint $newThumbprint -IsPrimary $false
# 2. Update Azure AD with new certificate
# 3. Promote to primary
Set-AdfsCertificate -CertificateType Token-Signing -Thumbprint $newThumbprint -IsPrimary $true
# 4. Remove old certificate
Remove-AdfsCertificate -CertificateType Token-Signing -Thumbprint $oldThumbprint

Validation Checklist

  • AD FS farm operational with valid TLS and token-signing certificates
  • Azure AD domain configured as federated with correct metadata
  • Claims rules properly transform AD attributes to SAML assertions
  • Test user can authenticate through federation flow end-to-end
  • MFA enforced at AD FS or Azure AD conditional access level
  • Certificate auto-rollover enabled or manual rotation scheduled
  • Federation metadata endpoint publicly accessible
  • Smart lockout configured to prevent brute force
  • Extranet lockout policies configured on AD FS
  • Monitoring configured for AD FS health and certificate expiry
  • Disaster recovery: managed authentication fallback documented

References

© mukul975, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 7 other files (scripts, references, assets) in skills/building-identity-federation-with-saml-azure-ad of mukul975/Anthropic-Cybersecurity-Skills.

  • SKILL.md
  • LICENSE
  • assets/template.md
  • references/api-reference.md
  • references/standards.md
  • references/workflows.md
  • scripts/agent.py
  • scripts/process.py

Open the folder on GitHubat commit 54a7988

Compare with similar skills

Building Identity Federation With Saml Azure Ad next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Building Identity Federation With Saml Azure Ad compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Building Identity Federation With Saml Azure Ad this skillmukul975/Anthropic-Cybersecurity-Skills34k—~2.5kAutomated safety check: PassApache-2.0
App Registration PostureSCStelz/security-investigator249—~21kAutomated safety check: PassMIT
Sast Missingauthutkusen/sast-skills1.3k—~6kAutomated safety check: PassMIT
Defender For Identityvinayaklatthe/microsoft-security-skills175—~2kAutomated safety check: PassMIT
Msal Client CredentialsAzureAD/microsoft-authentication-library-for-dotnet1.5k—~1.1kAutomated safety check: PassMIT
Azure APIM Policy Authoringthomast1906/github-copilot-agent-skills202—~1.5kAutomated safety check: PassMIT

Similar skills

  • App Registration Posture

    SCStelz/security-investigator

    Audit Entra ID app registration and service principal security posture.

    249 GitHub stars~21k tokensUpdated 2 days ago
    SecurityAuto-check passed
  • Sast Missingauth

    utkusen/sast-skills

    Detect missing authentication and broken function-level authorization vulnerabilities in a codebase using a three-phase approach: recon (map endpoints and the role/permission system), batched verify…

    1.3k GitHub stars~6k tokensUpdated 6 mo ago
    SecurityAuto-check passed
  • Defender For Identity

    vinayaklatthe/microsoft-security-skills

    Guidance for Microsoft Defender for Identity (MDI) — identity threat detection (ITDR) across on-premises Active Directory, AD CS, AD FS, and Entra Connect using sensors.

    175 GitHub stars~2k tokensUpdated 3 mo ago
    SecurityAuto-check passed
  • Msal Client Credentials

    AzureAD/microsoft-authentication-library-for-dotnet

    Client Credentials Flow for service-to-service (daemon) authentication in MSAL.NET without user involvement

    1.5k GitHub stars~1.1k tokensUpdated 3 days ago
    Backend & APIsAuto-check passed
  • Azure APIM Policy Authoring

    thomast1906/github-copilot-agent-skills

    Generates Azure API Management policy XML for authentication, rate limiting, CORS, error handling and transformations, consulting Azure best-practice and documentation tools first.

    202 GitHub stars~1.5k tokensUpdated 3 days ago
    Backend & APIsAuto-check passed
  • Coercion Ntlm Relay

    ADScanPro/Claude-AD

    Authentication coercion (PetitPotam MS-EFSR, PrinterBug MS-RPRN, DFSCoerce MS-DFSNM) chained into NTLM relay (impacket ntlmrelayx) toward LDAP, AD CS web enrollment (ESC8), or SMB.

    211 GitHub stars~1.9k tokensUpdated 1 mo ago
    SecurityAuto-check passed

More from mukul975/Anthropic-Cybersecurity-Skills

All 644 skills in this repo
  • Campaign Attribution Evidence Analysis

    mukul975/Anthropic-Cybersecurity-Skills

    Weighs infrastructure, TTP, malware code and timing evidence with the Diamond Model and competing hypotheses to reach a confidence-rated attribution.

    34k GitHub stars~2.3k tokensUpdated 1 mo ago
    Auto-check passed
  • Go Malware Analysis in Ghidra

    mukul975/Anthropic-Cybersecurity-Skills

    Walks through reverse engineering Go-compiled malware in Ghidra: parsing buildinfo and pclntab, recovering stripped function names and extracting dependencies.

    34k GitHub stars~2.8k tokensUpdated 1 mo ago
    Auto-check passed
  • LNK and Jump List Forensics

    mukul975/Anthropic-Cybersecurity-Skills

    Guides forensic analysis of Windows LNK shortcut files and Jump Lists with LECmd, JLECmd and manual parsing to show file access and program execution.

    34k GitHub stars~2.8k tokensUpdated 1 mo ago
    Auto-check passed
  • Malware Persistence Analysis with Autoruns

    mukul975/Anthropic-Cybersecurity-Skills

    Hunts Windows malware persistence with Sysinternals Autoruns, covering run keys, services, scheduled tasks and drivers, with baseline comparison.

    34k GitHub stars~1.2k tokensUpdated 1 mo ago
    Auto-check passed
  • NTFS MFT Deleted File Recovery

    mukul975/Anthropic-Cybersecurity-Skills

    Guides a Windows forensic examination of the NTFS Master File Table to recover deleted-file evidence, build timelines and spot timestomping.

    34k GitHub stars~2.7k tokensUpdated 1 mo ago
    Auto-check passed
  • Network Covert Channel Analysis

    mukul975/Anthropic-Cybersecurity-Skills

    Detects DNS tunneling, ICMP exfiltration and HTTP-based covert channels in packet captures and DNS logs when hunting for hidden command-and-control traffic.

    34k GitHub stars~2k tokensUpdated 1 mo ago
    Auto-check passed

Questions about Building Identity Federation With Saml Azure Ad

What does Building Identity Federation With Saml Azure Ad do?

Configure SAML 2.0 identity federation between on-premises Active Directory (via AD FS or a third-party IdP) and Microsoft Entra ID, covering federation models (AD FS, password hash sync…. Building Identity Federation With Saml Azure Ad is an agent skill from mukul975/Anthropic-Cybersecurity-Skills.0 identity federation between on-premises Active Directory (via AD FS or a third-party IdP) and Microsoft Entra ID, covering federation models (AD FS, password hash sync, pass-through auth, third-party IdP) and the SAML authentication flow.

When should I use Building Identity Federation With Saml Azure Ad?

Building Identity Federation With Saml Azure Ad fits situations like: extending on-premises authentication authority to cloud resources; designing hybrid identity SSO architecture for Entra ID.

How do I install Building Identity Federation With Saml Azure Ad in Claude Code?

Run `npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill building-identity-federation-with-saml-azure-ad -a claude-code`. Or copy the skill folder (skills/building-identity-federation-with-saml-azure-ad in mukul975/Anthropic-Cybersecurity-Skills) into .claude/skills/building-identity-federation-with-saml-azure-ad in your project. Claude Code loads it when a task matches its description.

How do I install Building Identity Federation With Saml Azure Ad in Codex?

Run `npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill building-identity-federation-with-saml-azure-ad -a codex`. Or copy the skill folder (skills/building-identity-federation-with-saml-azure-ad in mukul975/Anthropic-Cybersecurity-Skills) into .agents/skills/building-identity-federation-with-saml-azure-ad in your project. Codex loads it when a task matches its description.

Can I use Building Identity Federation With Saml Azure Ad in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill building-identity-federation-with-saml-azure-ad -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/building-identity-federation-with-saml-azure-ad, .gemini/skills/building-identity-federation-with-saml-azure-ad, .github/skills/building-identity-federation-with-saml-azure-ad and .opencode/skills/building-identity-federation-with-saml-azure-ad in your project.

What does Building Identity Federation With Saml Azure Ad need to run?

Going by SKILL.md and its folder, Building Identity Federation With Saml Azure Ad needs Python for the scripts in its folder. Our summary lists: Python 3.

Does Building Identity Federation With Saml Azure Ad access the network?

SKILL.md names 5 domains. In commands or code: schemas.xmlsoap.org, nexus.microsoftonline-p.com and schemas.microsoft.com; the agent is likely to contact these when it follows the instructions. As links in the text: learn.microsoft.com and docs.oasis-open.org. This is read from the text; nothing was executed.

Is Building Identity Federation With Saml Azure Ad safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Building Identity Federation With Saml Azure Ad use?

Building Identity Federation With Saml Azure Ad is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Building Identity Federation With Saml Azure Ad use?

About 2.5k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.9k tokens, read only when the agent opens those files.

What are the alternatives to Building Identity Federation With Saml Azure Ad?

Skills that share tags, products or a category with Building Identity Federation With Saml Azure Ad: App Registration Posture (SCStelz/security-investigator, 249 stars), Sast Missingauth (utkusen/sast-skills, 1.3k stars), Defender For Identity (vinayaklatthe/microsoft-security-skills, 175 stars) and Msal Client Credentials (AzureAD/microsoft-authentication-library-for-dotnet, 1.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Building Identity Federation With Saml Azure Ad?

mukul975 (a GitHub user) maintains it in mukul975/Anthropic-Cybersecurity-Skills, which has 34,116 GitHub stars. The repository holds 644 skills in this directory. The repository was last updated on August 31, 2026.

Source: mukul975/Anthropic-Cybersecurity-Skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.