Skip to content
Back to skills

Forge Reconcile

ASecurity

Master agent for Update Pipeline stage ② (Reconcile). Reads the context bundle from a reconcile_run row, reasons over the change, produces one of four verdicts (no-op | apply | apply-with-adaptation | escalate), writes the candidate body, and records the verdict via forge_reconcile. Used by the internal reconcile pipeline — not user-invocable.

  • 5 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 22, 2026
ai-agentsgoapi

Works with

  • terminal
  • api

Security analysis

A100/100

Scanned September 22, 2026

npx -y skills add SidCorp-co/forge --skill forge-reconcile --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Forge Reconcile?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Forge Reconcile
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sidcorp-co-forge-reconcile/badge)](https://www.skillsdirectory.com/skills/sidcorp-co-forge-reconcile)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: forge-reconcile
description: "Master agent for Update Pipeline stage ② (Reconcile). Reads the context bundle from a reconcile_run row, reasons over the change, produces one of four verdicts (no-op | apply | apply-with-adaptation | escalate), writes the candidate body, and records the verdict via forge_reconcile. Used by the internal reconcile pipeline — not user-invocable."
user_invocable: false
---

# Forge Reconcile — Master Agent

Update Pipeline stage ② (Reconcile). You are the Master agent responsible for determining whether and how an update packet's change should be applied to this project's adopted skill body.

## Your one job

Read the context bundle from the reconcile_run row (via `forge_reconcile action=get`), reason carefully, and call `forge_reconcile action=record_verdict` with exactly ONE of the four verdicts below.

You MUST record a verdict before this job ends — leaving the run in `running` state is a permanent stall.

## Step 1 — Load the bundle

Call `forge_reconcile action=get` with the `runId` from your job payload (`jobs.payload.reconcileRunId`).

The `bundle` field is self-describing — read the keys. Three things you could NOT infer from them:

- **`runningBody`** is the body *observed on the project's device*, not the copy Forge stores. If the
  two differ, the observed one is what actually runs.
- **`mustNotBreak`** is absolute. Every entry came from an incident.
- **`invariantSet`** is a hard constraint on your candidate body, not background reading.

Field-by-field reference, the C1–C5 refusal contract and worked examples:
`forge_guide get update-pipeline-reconcile`, or fetch `/api/guides/update-pipeline-reconcile.md`.

## Step 2 — Reason (do this IN WRITING, in your rationale)

Your `rationale` must address all four of these explicitly:

1. **Story → How**: How does the `change` implement the `story`? Is the change coherent with the stated intent?
2. **Charter → How**: Does the change conflict with any entry in the `charter`? If yes, explain the conflict and whether the new packet overrides it.
3. **Invariants → Still satisfied**: Does the `runningBody` + change still satisfy every item in `invariantSet`? Work through each invariant.
4. **mustNotBreak → Preserved**: Does the candidate body preserve every assertion in `mustNotBreak`?

## Step 3 — Choose a verdict

| Verdict | When to use |
|---|---|
| `no-op` | The running body already incorporates the change — no edit needed. |
| `apply` | The change applies cleanly to the running body without violating charter/invariants. Write the full candidate body as a straightforward edit. |
| `apply-with-adaptation` | The change's intent is sound but the running body has project-specific differences (from charter) that require adaptation. Adapt the change to preserve the project's intentional differences while still incorporating the update's core intent. `intentClass=invariant` changes MUST be incorporated even with adaptation. |
| `escalate` | The change cannot be safely applied: it contradicts a non-revertable charter entry, violates an invariant, or requires owner judgment that is beyond automated reasoning. |

Rules:
- `intentClass=invariant`: must produce `apply` or `apply-with-adaptation` (escalate only for genuine contradiction with mustNotBreak).
- `intentClass=procedure`: may produce any verdict.
- `intentClass=enhancement`: prefer `no-op` or `apply` when the enhancement fits; `apply-with-adaptation` when it needs shaping; `escalate` only for clear contradictions.
- When in doubt, escalate. A false `apply` is worse than a false `escalate`.

## Step 4 — For apply/apply-with-adaptation: write the candidate body

Produce the FULL skill body (not a diff). The candidate body:
- Incorporates the change's intent from the packet
- Preserves every non-revertable charter entry (mustNotBreak)
- Satisfies every item in invariantSet
- For `apply-with-adaptation`: respects the project's intentional differences (charter entries)

Do NOT hallucinate information not present in the bundle. Do NOT invent invariants. Every claim in your rationale must trace back to a bundle item.

## Step 4.5 — Declare the gate

You also declare whether this change may publish automatically. No server rule stands behind you —
no pattern match, no fail-safe default. What you declare is what happens.

Judge the **diff** between `runningBody` and your `candidateBody`, not the packet's description of it.

- **`auto`** — the diff only ADDS, and relaxes nothing. Publishes on a passing verifier majority.
- **`human`** — anything else: it removes or weakens a bar, changes a merge target or terminal
  transition, touches auth or permissions, or you are simply not certain.

`escalate` is a verdict, not a gate; escalating still means `human`. And there is **no automatic
revert** — a wrong `auto` reaches every runner, recoverable only by a manual step back to
`lastGoodBody`. `human` costs someone a few minutes. When unsure, declare `human`.

## Step 5 — Record your verdict

Call `forge_reconcile action=record_verdict` with:
- `runId`: from your job payload
- `verdict`: one of `no-op | apply | apply-with-adaptation | escalate`
- `gate`: `auto` or `human`, per Step 4.5 (required on every verdict)
- `candidateBody`: the full candidate body (required for apply/apply-with-adaptation; omit for no-op/escalate)
- `rationale`: your written reasoning from Step 2, plus one line naming why you chose that gate (required for all verdicts)

After recording, your job is done. Do NOT attempt to write the skill body yourself — `record_verdict` hands off to the verifier pipeline.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.