← MergifyCONTENT HISTORY

Update to Mergify

Snapshot Sep 30, 2026 · 23:16 UTC · version 1.0.0

Collection source: not recorded for this historical snapshot.

WHAT CHANGED · RULE-BASED ANALYSIS

First saved snapshot

No earlier snapshot is available to establish a change.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Use Mergify merge protections to control when PRs merge — PR dependencies (Depends-On header), delayed merges (Merge-After header), and scheduled freezes (CLI). ALWAYS use this skill when managing merge freezes, deployment windows, temporarily blocking merges, setting up PR dependencies, blocking a PR on another PR, coordinating cross-repo merges, scheduling a merge for a specific time, or adding Depends-On or Merge-After headers to PRs. Triggers on freeze, scheduled freeze, merge freeze, deployment freeze, halt merges, depends on, dependency, block merge, merge after, merge later, schedule merge, delayed merge, cross-repo, merge protection.",
  "included_files": [],
  "name": "mergify-merge-protections",
  "skill_md_contents": "---\nname: mergify-merge-protections\ndescription: Use Mergify merge protections to control when PRs merge — PR dependencies (Depends-On header), delayed merges (Merge-After header), and scheduled freezes (CLI). ALWAYS use this skill when managing merge freezes, deployment windows, temporarily blocking merges, setting up PR dependencies, blocking a PR on another PR, coordinating cross-repo merges, scheduling a merge for a specific time, or adding Depends-On or Merge-After headers to PRs. Triggers on freeze, scheduled freeze, merge freeze, deployment freeze, halt merges, depends on, dependency, block merge, merge after, merge later, schedule merge, delayed merge, cross-repo, merge protection.\n---\n\n# Mergify Merge Protections\n\nMerge protections control when PRs are allowed to merge:\n\n| Protection | Scope | How |\n|------------|-------|-----|\n| **Depends-On** | Per-PR dependency chain | `Depends-On:` header in PR body |\n| **Merge-After** | Per-PR time gate | `Merge-After:` header in PR body |\n| **Scheduled Freezes** | Repository-wide or conditional | CLI commands (`mergify freeze`) |\n\n`Depends-On` and `Merge-After` are built-in — just add the header to the PR description (or commit message body when using `mergify stack push`) and Mergify enforces them automatically, no `.mergify.yml` configuration needed. Freezes are managed via CLI commands.\n\n## Depends-On\n\nBlock a PR from merging until one or more other PRs are merged first.\n\n### Syntax\n\nAdd one or more `Depends-On:` lines to the PR body:\n\n```\nDepends-On: #123\nDepends-On: https://github.com/org/other-repo/pull/456\nDepends-On: org/other-repo#789\n```\n\nAll three formats are supported — use `#NNN` for same-repo, full URL or `org/repo#NNN` for cross-repo.\n\n### Rules\n\n- All referenced PRs must be in repositories with Mergify enabled\n- All referenced PRs must belong to the same GitHub organization\n- Circular dependencies and self-references are silently ignored\n- Multiple `Depends-On:` lines are allowed (one per line)\n\n### With `mergify stack push`\n\nThe stack tool **automatically** adds `Depends-On: #NNN` between consecutive PRs in a stack. For dependencies *outside* the stack (cross-repo or unrelated PRs), add the header manually to the **commit message body** — it will be copied to the PR description on push.\n\n### When to suggest\n\n- Feature spanning multiple repos (e.g., API change + client update)\n- Schema migration must merge before application code\n- Shared library update must land before consumers\n\n## Merge-After\n\nPostpone merging until a specified date and time.\n\n### Syntax\n\nAdd a `Merge-After:` line to the PR body:\n\n```\nMerge-After: 2025-09-01T09:00:00Z\n```\n\n### Supported timestamp formats (ISO 8601)\n\n```\nMerge-After: 2025-09-01                          # date only (midnight UTC)\nMerge-After: 2025-09-01T09:00:00                 # no timezone (assumed UTC)\nMerge-After: 2025-09-01T09:00:00Z                # explicit UTC\nMerge-After: 2025-09-01T09:00:00+02:00           # with UTC offset\nMerge-After: 2025-09-01T09:00:00[Europe/Paris]   # with IANA timezone\n```\n\nIf no timezone is specified, UTC is assumed.\n\n### When to suggest\n\n- Coordinated release: multiple PRs should merge together at a specific time\n- Merge during a maintenance window or off-peak hours\n- Embargo: PR is ready but should not ship before a date\n\n### Combining Depends-On and Merge-After\n\nBoth headers can be used together on the same PR:\n\n```\nThis PR updates the billing API to support the new pricing model.\n\nDepends-On: org/billing-service#42\nMerge-After: 2025-06-15T10:00:00[US/Eastern]\n```\n\nThe PR will not merge until PR #42 in `billing-service` is merged **and** the specified time has passed.\n\n## Scheduled Freezes\n\nScheduled freezes temporarily halt merging of pull requests matching specific conditions. Use them for deployment windows, incident response, maintenance periods, or any situation where merges should be paused.\n\n## Commands\n\n```bash\nmergify freeze list                       # List all scheduled freezes\nmergify freeze list --json                # Machine-readable JSON output\nmergify freeze create OPTIONS             # Create a new scheduled freeze\nmergify freeze update FREEZE_ID OPTIONS   # Update an existing freeze\nmergify freeze delete FREEZE_ID           # Delete a freeze\n```\n\n## Authentication\n\nAll commands require a Mergify credential. Run `mergify auth login` once, or:\n- `--token` / `-t` (env: `MERGIFY_TOKEN`) -- Mergify credential. Falls back to the credential `mergify auth login` stored, then to `GITHUB_TOKEN` / `gh auth token`, both deprecated for the Mergify API.\n- `--repository` / `-r` -- Repository full name (auto-detected from git remote)\n- `--api-url` / `-u` (env: `MERGIFY_API_URL`) -- Mergify API URL (default: `https://api.mergify.com`)\n\n## Creating a Freeze\n\n```bash\n# Emergency freeze (starts now, no end time)\nmergify freeze create \\\n  --reason \"Production incident - halting all merges\" \\\n  --timezone \"US/Eastern\"\n\n# Scheduled maintenance window\nmergify freeze create \\\n  --reason \"Weekend deployment freeze\" \\\n  --timezone \"Europe/Paris\" \\\n  --start \"2024-12-20T18:00:00\" \\\n  --end \"2024-12-23T08:00:00\"\n\n# Freeze with conditions (only freeze merges to main)\nmergify freeze create \\\n  --reason \"Release freeze for v2.0\" \\\n  --timezone \"UTC\" \\\n  -c \"base=main\"\n\n# Freeze with exclusions (allow hotfix PRs through)\nmergify freeze create \\\n  --reason \"Code freeze\" \\\n  --timezone \"UTC\" \\\n  -c \"base=main\" \\\n  -e \"label=hotfix\"\n```\n\n**Required options:**\n- `--reason` -- Human-readable reason for the freeze\n- `--timezone` -- IANA timezone name (e.g., `Europe/Paris`, `US/Eastern`, `UTC`)\n\n**Optional options:**\n- `--start` -- Start time in ISO 8601 format (default: now)\n- `--end` -- End time in ISO 8601 format (default: no end, emergency freeze)\n- `--condition` / `-c` -- Matching condition (repeatable, e.g., `-c 'base=main'`)\n- `--exclude` / `-e` -- Exclude condition (repeatable, e.g., `-e 'label=hotfix'`)\n\n## Listing Freezes\n\n```bash\n# Table view\nmergify freeze list\n\n# JSON output for scripting\nmergify freeze list --json\n```\n\nThe table shows: ID, reason, start/end times with timezone, matching conditions, and active/scheduled status.\n\n## Updating a Freeze\n\n```bash\n# Extend a freeze\nmergify freeze update FREEZE_ID --end \"2024-12-24T08:00:00\"\n\n# Change the reason\nmergify freeze update FREEZE_ID --reason \"Extended: waiting for hotfix\"\n\n# Set exclusions (replaces the full exclusion list, does not append)\nmergify freeze update FREEZE_ID -e \"label=emergency\"\n```\n\nThe `FREEZE_ID` is the UUID shown in `mergify freeze list`.\n\n## Deleting a Freeze\n\n```bash\n# Delete a scheduled (not yet active) freeze\nmergify freeze delete FREEZE_ID\n\n# Delete an active freeze (reason required)\nmergify freeze delete FREEZE_ID --reason \"Incident resolved\"\n```\n\nIf the freeze is currently active, a `--reason` for deletion is required.\n\n## Common Patterns\n\n### Emergency freeze during an incident\n```bash\n# Stop all merges immediately\nmergify freeze create \\\n  --reason \"Incident #1234 - API outage\" \\\n  --timezone UTC\n\n# Once resolved, delete the freeze\nmergify freeze list --json  # Get the freeze ID\nmergify freeze delete FREEZE_UUID --reason \"Incident #1234 resolved\"\n```\n\n### Recurring deployment window\nCreate the freeze before each deployment window and delete it after:\n```bash\nmergify freeze create \\\n  --reason \"Deploy window\" \\\n  --timezone \"US/Pacific\" \\\n  --start \"2024-12-20T14:00:00\" \\\n  --end \"2024-12-20T16:00:00\"\n```\n\n### Freeze with exceptions for critical fixes\n```bash\nmergify freeze create \\\n  --reason \"Sprint freeze\" \\\n  --timezone UTC \\\n  -c \"base=main\" \\\n  -e \"label=hotfix\" \\\n  -e \"label=security\"\n```\n"
}

SHA-256 of public snapshot: 0d575545dea8e9c0c7b670ee8682ce4ea4bb9b177301527a196aa168de233624