New to Claude Skills? Learn how to install them →

mukul975 on GitHub

Implementing Patch Management Workflow

Free

Streamline your software update process for security and compliance.

Get this skill

Free · Opens the source repo

What Implementing Patch Management Workflow does

The Implementing Patch Management Workflow skill provides a structured approach to managing software updates across an organization's IT infrastructure. By following a systematic process, this skill helps identify, test, deploy, and verify patches to remediate vulnerabilities effectively. It emphasizes reducing the attack surface while minimizing operational disruptions through structured testing and phased rollouts.

This skill is particularly useful for IT professionals and security teams who are responsible for maintaining the security and compliance of their systems. It integrates with various patch management tools such as WSUS, SCCM, Ansible, and Intune, allowing users to leverage existing infrastructure for patch deployment. The workflow encompasses all phases of the patch lifecycle, from discovery and assessment to deployment and verification, ensuring that updates are applied efficiently and securely.

The skill also includes detailed guidance on configuring patch sources, automating patch assessments, and implementing a phased rollout strategy. This phased approach, which involves testing in controlled environments before full deployment, helps mitigate risks associated with patching, such as system instability or downtime. By documenting compliance metrics and exceptions, users can maintain a clear record of their patch management activities, which is essential for audits and regulatory requirements.

Overall, the Implementing Patch Management Workflow skill is designed for organizations looking to enhance their patch management processes, ensuring that they can respond swiftly to vulnerabilities while maintaining system integrity and compliance with industry standards.

When to use it

Use this skill when establishing or improving your patch management processes to enhance security and compliance.

When not to use it

This skill may not be suitable for environments with limited patch management tools or where manual patching is preferred.

What you can build with it

Establishing Security Controls

Use this skill to implement patch management processes that align with compliance requirements and enhance security controls.

Automating Patch Assessments

Leverage the automated patch assessment scripts to quickly identify missing patches based on vulnerability scan results.

Improving Security Architecture

Integrate this skill into your security architecture to ensure systematic patch management and reduce vulnerabilities.

How to install Implementing Patch Management Workflow

View source

1. Install with the skills CLI

npx skills add mukul975/anthropic-cybersecurity-skills/implementing-patch-management-workflow --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by mukul975

Implementing Patch Management Workflow

Overview

Patch management is the systematic process of identifying, testing, deploying, and verifying software updates to remediate vulnerabilities across an organization's IT infrastructure. An effective patch management workflow reduces the attack surface while minimizing operational disruption through structured testing, approval gates, and phased rollouts.

When to Use

  • When deploying or configuring implementing patch management workflow 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

  • Vulnerability scan results identifying missing patches
  • Patch management tools (WSUS, SCCM/MECM, Ansible, Intune, Jamf)
  • Test environment mirroring production
  • Change management process (ITIL or equivalent)
  • Asset inventory with OS and application versions

Core Concepts

Patch Lifecycle Phases

  1. Discovery: Identify available patches from vendors and vulnerability scans
  2. Assessment: Evaluate patch applicability and risk
  3. Prioritization: Rank patches by severity, exploitability, and asset criticality
  4. Testing: Validate patches in non-production environment
  5. Approval: Change advisory board (CAB) review and approval
  6. Deployment: Phased rollout to production systems
  7. Verification: Confirm successful installation and no regressions
  8. Reporting: Document compliance metrics and exceptions

Patch Categories

  • Security Patches: Address CVEs and security vulnerabilities
  • Critical Updates: Non-security bug fixes affecting stability
  • Service Packs: Cumulative update collections
  • Feature Updates: New functionality (Windows feature updates, etc.)
  • Firmware Updates: BIOS/UEFI, NIC, storage controller firmware
  • Third-Party Patches: Adobe, Java, Chrome, Firefox, etc.

Deployment Rings (Phased Rollout)

RingEnvironment% of FleetSoak TimePurpose
Ring 0Lab/TestN/A24-48 hrsFunctional validation
Ring 1IT Early Adopters5%48-72 hrsReal-world pilot
Ring 2Business Pilot15%5-7 daysBroader compatibility
Ring 3General Deployment50%7-14 daysMain rollout
Ring 4Mission Critical30%After Ring 3Final deployment

Workflow

Step 1: Configure Patch Sources

# WSUS (Windows Server Update Services)
# Configure WSUS server to sync with Microsoft Update
# Via PowerShell on WSUS server:
Install-WindowsFeature -Name UpdateServices -IncludeManagementTools
& "C:\Program Files\Update Services\Tools\WsusUtil.exe" postinstall CONTENT_DIR=D:\WSUS

# Configure GPO for WSUS clients
# Computer Configuration > Administrative Templates > Windows Components > Windows Update
# Specify intranet Microsoft update service location: http://wsus-server:8530
# Ansible: Configure patch repositories for Linux
# roles/patch-management/tasks/configure_repos.yml
---
- name: Configure RHEL patch repository
  yum_repository:
    name: rhel-patches
    description: RHEL Security Patches
    baseurl: https://satellite.corp.local/pulp/repos/patches
    gpgcheck: yes
    gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
    enabled: yes

- name: Configure Ubuntu patch sources
  apt_repository:
    repo: "deb https://apt-mirror.corp.local/ubuntu {{ ansible_distribution_release }}-security main"
    state: present
  when: ansible_os_family == "Debian"

Step 2: Automated Patch Assessment

# patch_assessment.py - Correlate vulnerability scans with available patches
import subprocess
import platform
import json

def get_windows_pending_patches():
    """Query Windows Update for pending patches via PowerShell."""
    ps_cmd = """
    $Session = New-Object -ComObject Microsoft.Update.Session
    $Searcher = $Session.CreateUpdateSearcher()
    $Results = $Searcher.Search("IsInstalled=0 AND Type='Software'")
    $Results.Updates | ForEach-Object {
        [PSCustomObject]@{
            Title = $_.Title
            KB = ($_.KBArticleIDs -join ',')
            Severity = $_.MsrcSeverity
            Size = [math]::Round($_.MaxDownloadSize / 1MB, 2)
            Published = $_.LastDeploymentChangeTime.ToString('yyyy-MM-dd')
            CVE = ($_.CveIDs -join ',')
        }
    } | ConvertTo-Json
    """
    result = subprocess.run(
        ["powershell", "-Command", ps_cmd],
        capture_output=True, text=True, timeout=120
    )
    return json.loads(result.stdout) if result.stdout.strip() else []

def get_linux_pending_patches():
    """Query package manager for available security updates."""
    if platform.system() != "Linux":
        return []

    # Try apt (Debian/Ubuntu)
    try:
        result = subprocess.run(
            ["apt", "list", "--upgradable"],
            capture_output=True, text=True, timeout=60
        )
        packages = []
        for line in result.stdout.strip().split("\n")[1:]:
            if line:
                parts = line.split("/")
                packages.append({
                    "package": parts[0],
                    "available_version": parts[1].split()[0] if len(parts) > 1 else "",
                    "source": "apt"
                })
        return packages
    except FileNotFoundError:
        pass

    # Try yum/dnf (RHEL/CentOS)
    try:
        result = subprocess.run(
            ["dnf", "updateinfo", "list", "security", "--available"],
            capture_output=True, text=True, timeout=60
        )
        packages = []
        for line in result.stdout.strip().split("\n"):
            parts = line.split()
            if len(parts) >= 3:
                packages.append({
                    "advisory": parts[0],
                    "severity": parts[1],
                    "package": parts[2],
                    "source": "dnf"
                })
        return packages
    except FileNotFoundError:
        return []

Step 3: Patch Testing Automation

# Ansible playbook: test_patches.yml
---
- name: Test Patches in Lab Environment
  hosts: test_servers
  become: yes
  vars:
    rollback_snapshot: "pre-patch-{{ ansible_date_time.date }}"

  tasks:
    - name: Create VM snapshot before patching
      community.vmware.vmware_guest_snapshot:
        hostname: "{{ vcenter_host }}"
        username: "{{ vcenter_user }}"
        password: "{{ vcenter_pass }}"
        datacenter: "{{ datacenter }}"
        name: "{{ inventory_hostname }}"
        snapshot_name: "{{ rollback_snapshot }}"
        state: present
      delegate_to: localhost

    - name: Apply security patches (RHEL/CentOS)
      dnf:
        name: "*"
        state: latest
        security: yes
        update_cache: yes
      when: ansible_os_family == "RedHat"
      register: patch_result

    - name: Apply security patches (Ubuntu/Debian)
      apt:
        upgrade: dist
        update_cache: yes
        only_upgrade: yes
      when: ansible_os_family == "Debian"
      register: patch_result

    - name: Reboot if required
      reboot:
        reboot_timeout: 600
        msg: "Rebooting for patch installation"
      when: patch_result.changed

    - name: Run post-patch validation
      include_tasks: validate_services.yml

    - name: Report patch results
      debug:
        msg: "Patching {{ 'succeeded' if patch_result.changed else 'no updates' }} on {{ inventory_hostname }}"

Step 4: Production Deployment

# deploy_patches.yml - Phased production rollout
---
- name: Ring 1 - IT Early Adopters
  hosts: ring1_hosts
  serial: "25%"
  max_fail_percentage: 10
  become: yes
  tasks:
    - import_tasks: apply_patches.yml
    - import_tasks: validate_services.yml
    - name: Wait for soak period
      pause:
        hours: 48
      run_once: true

- name: Ring 2 - Business Pilot
  hosts: ring2_hosts
  serial: "20%"
  max_fail_percentage: 5
  become: yes
  tasks:
    - import_tasks: apply_patches.yml
    - import_tasks: validate_services.yml

- name: Ring 3 - General Deployment
  hosts: ring3_hosts
  serial: "10%"
  max_fail_percentage: 3
  become: yes
  tasks:
    - import_tasks: apply_patches.yml
    - import_tasks: validate_services.yml

Step 5: Verification and Reporting

Run a post-patch vulnerability scan to confirm patch installation:

# Trigger post-patch verification scan
curl -k -X POST "https://nessus:8834/scans/$VERIFY_SCAN_ID/launch" \
  -H "X-Cookie: token=$TOKEN"

# Compare pre-patch and post-patch results
# Expecting reduction in vulnerabilities matching deployed patches

Patch Management SLAs

SeveritySLA (Internet-Facing)SLA (Internal)SLA (Air-Gapped)
Critical (CVSS 9+)48 hours7 days14 days
High (CVSS 7-8.9)7 days14 days30 days
Medium (CVSS 4-6.9)30 days30 days60 days
Low (CVSS 0.1-3.9)90 days90 days90 days

Best Practices

  1. Maintain current asset inventory to ensure complete patch coverage
  2. Test all patches in a non-production environment before deployment
  3. Use phased rollouts with automatic rollback capabilities
  4. Coordinate patch windows with change management process
  5. Track patch compliance metrics and report to leadership
  6. Automate where possible to reduce manual effort and human error
  7. Maintain exception documentation for systems that cannot be patched
  8. Include third-party application patching (not just OS patches)

Common Pitfalls

  • Patching only operating systems and ignoring third-party applications
  • No rollback plan if patches cause service disruption
  • Treating all patches with equal urgency (no risk-based prioritization)
  • Manual patch processes that cannot scale
  • No post-patch verification to confirm successful installation
  • Ignoring firmware and BIOS updates

Related Skills

  • prioritizing-vulnerabilities-with-cvss-scoring
  • implementing-vulnerability-remediation-sla
  • implementing-continuous-vulnerability-monitoring

Frequently asked questions about Implementing Patch Management Workflow

Similar skills