agentsclimarketplace

Converge

Skill KhurrumMahmood/senior-vibe-engineer/.claude/skills/converge

Router-first engineering skills for AI coding agents: deliberate refactoring, architectural hygiene, ADRs, and bounded multi-language tooling.

Install
npx -y skills add KhurrumMahmood/senior-vibe-engineer --skill converge

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

After-phase convergence gate. Models the work-in-progress as a small value graph (every dimension must hold at once for "done"), then emits a fixed verdict — phase_status (advance/repair/branch/park/discard), strongest/weakest nodes, the single next necessary step, why that step, the success gate, the stop condition, and an explicit do-not-do-next list. Routes effort toward the next NECESSARY move instead of the next available one; refuses fan-out. Advisory and read-only against production code.

SKILL.md

9.3 KB, as published. Nobody here has run it

/converge — after-phase convergence gate

After a phase of work, do the next necessary thing, not the next available interesting thing. This skill is the structured pass that makes that choice explicit: name the value dimensions that must ALL hold for the work to be done, find the weakest one, and emit a fixed verdict with a stop condition and a do-not-do-next list. A verdict missing the stop condition or the do-not-do-next list does not count as a convergence gate.

How success is judged

  • The run emits the fixed JSON verdict shape with every named field: phase_status, strongest_nodes, weakest_nodes, next_step, why_this_step, success_gate, stop_condition, and do_not_do_next.
  • Every node assessment cites artifact truth: a quoted artifact line, report row, diff hunk, or command output. Assertions without pasted evidence count as weak nodes.
  • The skill does not execute next_step or mutate production code; it emits the verdict, names the handoff, and stops.
  • For substantial phases or --report, the run writes reports/converge/scan-<TS>/verdict.json and verdict.md, then logs effectiveness with bucket key status_<phase_status> using the verdict's actual phase_status value.

Stage 1 — Name the value graph

Establish the small set of value dimensions for THIS work. Default engineering graph (use when the caller supplies none):

nodeholds when
correctthe change does what was intended; failures reproduced then fixed
wired-inthe change is reachable from the real entry points — not built but unplugged
guardeda test / lint / hook exists so the fixed problem cannot silently return
no-parallel-pathno second writer / duplicate mechanism was introduced alongside the old one
demonstratedthe outcome is shown at the output boundary (run, render, report), not asserted

The caller may override with --graph dim1,dim2,… or by naming dimensions in prose. Honesty rule: a graph that omits a real dimension will pass work that is not done. If a dimension feels missing while assessing, add it — do not squeeze evidence into the wrong node.

Stage 2 — Assess each node with evidence

For every node, find the strongest available artifact and quote it: a test run transcript, a diff hunk, a report row, a rendered-output path plus observed result, or a grep output proving call sites. Evidence is the quoted artifact or command output itself, not the assessor's assertion that the artifact exists. Rules:

  • Unknown counts as weak. A node nobody checked is a weak node, not a passing one.
  • Authorship is not evidence. Do not advance a node on the author's assertion alone — this gate is self-assessed (the same actor judges and is judged), so bias the call toward repair whenever evidence is thin.
  • Read what exists (reports under reports/, test output, the diff); do not re-execute expensive scans just to feed the gate.

Stage 3 — Emit the verdict

Fixed shape — every field, every time:

{
  "phase_status": "advance | repair | branch | park | discard",
  "strongest_nodes": ["…"],
  "weakest_nodes": ["…"],
  "next_step": "the single next necessary action",
  "why_this_step": "names the weakest node this step closes",
  "success_gate": "the observable evidence that will prove next_step worked",
  "stop_condition": "the observable condition under which work on this thread stops",
  "do_not_do_next": ["the tempting-but-not-necessary moves to refuse now"]
}

Status vocabulary (total — pick exactly one):

  • advance — the phase passed its gate; move to the next-weakest node.
  • repair — promising, but a specific node is weak; fix THAT before anything new.
  • branch — multiple genuinely distinct routes exist and choosing now would discard value; split deliberately (and surface the fork to /decide if it is material).
  • park — useful later, not necessary now; shelve explicitly (/track-idea) so it is neither lost nor pursued prematurely.
  • discard — expensive or clever but advances no value node; stop.

Render the verdict in the conversation as the JSON block plus one short paragraph of plain-language justification. For substantial phases, or when invoked with --report, also write it to reports/converge/scan-<TS>/verdict.json (with the paragraph in verdict.md) and append an effectiveness record:

TS=$(date +%Y%m%d-%H%M%S)
mkdir -p "reports/converge/scan-${TS}" && ln -sfn "scan-${TS}" reports/converge/latest
# after writing verdict.json / verdict.md, log one record keyed by the status:
PHASE_STATUS=$(python3 -c "import json, pathlib; print(json.loads(pathlib.Path('reports/converge/scan-${TS}/verdict.json').read_text())['phase_status'])")
STATUS_BUCKET="status_${PHASE_STATUS}"
python3 scripts/log_effectiveness.py --skill converge --scan-id "scan-${TS}" \
  --target "<thread or phase name>" --findings-total 1 \
  --buckets "{\"${STATUS_BUCKET}\": 1}"

Stage 4 — Enforce the verdict's discipline

  • The next_step is ONE action. If two feel necessary, the weaker-node one wins; the other goes to do_not_do_next or park.
  • stop_condition must be observable ("the suite passes and the report regenerates in CI"), never aspirational ("when it feels solid").
  • do_not_do_next is a refusal list, not a backlog — entries are moves that are tempting now; parking-worthy items go through /track-idea instead.
  • Do not execute the next step inside this skill. Emit, hand off, stop.

When things go sideways

SymptomAction
A node has no artifact, report row, diff hunk, or command output to citeMark that node weak, set phase_status: repair, and make the evidence gap the next_step
phase_status is not one of advance, repair, branch, park, discardTreat the verdict as invalid; fix the JSON before writing verdict.json or logging effectiveness
Two next steps both look necessaryPick the step that closes the weakest node; put the other in do_not_do_next, or use phase_status: branch if they are genuinely distinct routes
--report was requested but reports/converge/scan-<TS>/ cannot be writtenEmit the inline verdict, state that report artifacts were not written, and do not claim verdict.json, verdict.md, or effectiveness logging happened
The caller wants the named next_step executed immediatelyStop after the verdict and hand off to the named skill or workflow; execution is outside /converge

Known limits

  • Self-assessed gate. Until outcome/reader telemetry exists, the judge and the judged are the same actor (ADR 0031's named limit). The Stage 2 bias rules are the mitigation, not a cure.
  • First implementation — the verdict shape is committed; the default graph and the bias rules are expected to be tuned by dogfood use.

Source decision: core:value-graph-next-step-router (ADR 0031) — provenance, not required reading; do not load the ADR during execution.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.