Install
$ agentstack add skill-allemaar-open-skills-human-merge ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
/human-merge
Many reports in, one decidable surface out. Each input may be excellent. The pile is still undecidable, because the reader cannot tell which claims are corroborated, which rest on one source wearing four hats, and which two reports quietly disagree.
> The complete style layer lives in human-output when that skill is > installed. Otherwise apply the portable style floor, stopping-point rule, > and checker contract in > [references/human-contract.md](references/human-contract.md). This file > carries only what exists because there is more than one report.
The four operations
These are the whole skill. Each has no single-input analogue, which is why nobody who wrote one of the inputs could have done it.
- Collapse correlated reports to one source. Reports are not sources.
- Name what is superseded — and whether a live decision already rests on
the dead figure.
- Classify each conflict before touching it. Most are not contradictions.
- Pool coverage. A hole no single report had appears only at merge time.
Anything else you are tempted to add is human-output restated. Leave it out.
The order the work happens
The sections below are reference, not a running order. Executed top to bottom they would grade confidence before counting sources, which is the error this skill exists to prevent. Run these ten steps in order. Three of the dependencies are load-bearing and named where they bite.
- Inventory. List every input: author, date, and the basis it states for
each claim. Nothing else can start until this exists — every later step reads from it, and a report whose basis you never asked for gets graded generously by default.
- Reconcile definitions. One word meaning two things manufactures both
false agreement and false conflict. Before any comparison, or steps 3 and 6 both run on sand.
- Same or different. Dedupe claims, so you are comparing findings rather
than sentences.
- Count sources, not reports. Run the five-key test per claim.
Independence before confidence — the label in step 7 is capped by the number this step returns, so doing it later means relabelling everything.
- Order the supersessions. Within one subject, attribute and scope only.
Then ask what already rests on the superseded figure.
- Classify each conflict. After steps 2 and 3, because most apparent
conflicts dissolve into a definition or a scope.
- Grade and label. Now, and only now, assign confirmed, judgement or
estimate.
- Combine, or park. The joint arithmetic, longhand; and the items that do
not combine, each with what would make it combinable.
- Pool the coverage. Walk the decision. Last, because the gap list has to
catch anything steps 1 to 8 named without a figure.
- Write it. Verdict, ledger, numeral trace.
The five relations
Every merge names each of these or says it does not apply. A merge that skips one is a summary, and a summary of six reports is a seventh report.
1. Superseded. Name the earlier report, its figure, the new figure, and the delta. Then the part everyone omits: say whether a decision already rests on the old figure. If one does, that is the verdict of the whole merge.
2. Same or different. Two reports naming one thing are not two findings. Say which it is. If they are one, drop the double count. If they are two, say whether fixing one fixes the other — two problems counted as one is how a fix gets under-sized.
3. Load-bearing. One report matters only because of another. A lease clause is dull until a payback period runs past it. Say which is the carrier and which is the load, and file the pair rather than the clause alone.
4. Together. The joint figure none of them states. Show the arithmetic from named inputs, longhand.
5. Does not combine. Different clock, different population, different unit, different confidence class. Park it, labelled, and say what would make it combinable. Forcing a fit is this skill's failure mode.
Independence: count sources, not reports
Two reports corroborate only if either could have been wrong while the other stayed right. Run the test on the claim, not on the report — one report can be independent on its first claim and derivative on its second.
Ask each report what its basis actually was, then match on five keys:
- They quote the same document.
- They interviewed the same person.
- They inherited the same brief, or the same corpus.
- One of them read the other.
- They are sibling agents run over one shared context.
The fifth key is the trap in agent fan-out. Siblings over one context are correlated by construction: their agreement carries no confirming weight and looks identical to genuine corroboration.
Then apply the counterfactual, in words: could report A have been wrong while report B stayed right? If no, they are one source.
If you dispatched the workers, their briefs are your best independence evidence. Read the briefs before the reports. Two workers sent the same context and the same question will agree, and the reports will not say so.
Self-merge. If you wrote some of the inputs, you are not independent of them. Say so in the ledger, and do not count your own report as corroborating your own conclusion.
The fallback, when independence cannot be resolved. Do not guess and do not count optimistically. Declare independence unknown, count those inputs as one source, cap the merged claim at estimate, and print the line:
> independence not established
Unknown independence is not independence. That sentence is the rule.
Access caps the label — it is not a second ladder
There is one ladder: the contract's confirmed, judgement, estimate. How a reporter knew a thing does not get its own scale beside that one; it sets a ceiling on where the claim can land. Two ladders is decode work, and the reader should never hold both.
| What the report states as its basis | Highest label the claim may reach | |---|---| | Observed or measured it themselves | confirmed | | Worked from primary records it did not produce, and names them | confirmed | | Worked from records it does not name | judgement | | Passing on what an interested party said about itself | judgement | | No stated basis | estimate, and never evidence on its own |
Print the basis in the same breath as the label — "(Confirmed; R5 inspected it)" — rather than in a legend the reader must scroll back to.
No numeric score. A single number invites averaging, and averaging is the failure this skill exists to prevent. A derived or modelled claim inherits its weakest parent's ceiling and adds nothing, so there is nothing left for a second scale to say.
As-of dates and scope boundaries travel with every value here as they do everywhere — that rule is human-output's, not restated. What is this file's: most false conflicts are two true claims about different scopes, which is why scope is a row in the conflict table below.
Merged confidence is a minimum, never an average
- Capped by the weakest input the conclusion actually rests on. Trace which
inputs it rests on. Strong inputs on other questions do not lift it.
- Agreement between dependent inputs raises nothing. Only independent
methods arriving at the same place raise the label a step.
- One unresolved reversing input caps the merge at estimate, however strong
everything else is.
- Coverage is part of confidence. Unexamined is not the same as fine.
Use the contract's three labels: confirmed, judgement, estimate.
Three forbidden moves
- Never average two numbers that disagree. The mean of a right answer and a
wrong one is a wrong answer with no author.
- Never drop the outlier. A lone dissent from the only Direct source is
often the most valuable report in the pile.
- Never attribute a claim to "the reports" collectively. That launders one
source's guess into the voice of all of them.
Classify the conflict before you touch it
| Type | Signature | What the merge does | |---|---|---| | Contradiction | Same subject, attribute and scope; incompatible values | Keep both. Name the resolving check. Never pick the confident one. | | Scope mismatch | Different site, period, population or wing | Not a conflict. Print both with their scopes attached. | | Vintage | Same claim, different as-of dates | Not a conflict. Lead with the newer; say the older existed and when it changed. | | Claim-type mismatch | One reports a quote, promise or plan; the other an observation | Not a conflict. The observed value drives the decision. | | Confidence-only | Same value, different certainty | Carry the lower confidence, and say which source was surer and on what access. | | Definitional | Same word, different meaning between reports | Not yet a conflict. Fix the definition, then re-compare. |
Order of arrival is evidence only within the same subject, attribute and scope. Later beats earlier when a newer reading replaces an older one about the same thing. Across different scopes, arrival order is not vintage at all — it is a scope mismatch wearing a date, and treating it as supersession overwrites a true claim with an unrelated one.
A live conflict belongs in the verdict sentence. If the reader would act differently depending on which report is right, that is the finding.
Pool the coverage
Walk the decision, not the reports, and ask which parts no input addressed. Each author saw their own gap and none saw the union. Print the union. Silence is not assent: a report that was never asked about a topic is a gap, not a vote, and the two must stay apart in every count you print. For the same reason, never write that nobody has ever done a thing when what you have is nobody in this set reporting it — absence of a report is not evidence of absence, and the phrasing has to say which one you hold.
The verdict test, and it is a hard one. Every fact named in the verdict either carries a figure or appears in the gap list. No exceptions. A fact strong enough to reach the verdict sentence and weak enough to have no number is precisely the one the reader will assume somebody priced. The merge's own central fact is the likeliest thing to be missing from a gap list assembled by walking the inputs, because it belongs to no single input — walk the verdict too, clause by clause, after the verdict is written.
The queue: reports that arrive over days
Inputs rarely land at once, and the reader acts mid-stream. So every merge after the first has a second job: say what the new report does to a decision already taken.
Three outcomes, and you must choose one out loud:
- Confirms it. Say so in one line and stop.
- Narrows it. The decision stands, its scope or its margin changes.
- Invalidates it. Lead with that. *"The figure your Wednesday decision
rested on is now wrong"* is the verdict, not a footnote to it.
Carry forward what the reader was told last time, so a correction reads as a correction rather than as a fresh opinion.
The ledger, and when the set is too big for one
The ledger is the merge's audit record, and it is a named artefact, not a mood. It is one row per merged claim carrying: the claim, which reports it came from, how many independent sources those reports collapse to, its label, and the report-and-section pointer that lets a reader return to the argument under it. Its closing summary — source collapses, contradictions, supersessions, parked items — is what the example prints in italics at the end. Whenever this file says "say so in the ledger", that row is where it goes. Sourcing a claim is human-output's rule; what is added here is the source count beside it, because that is the number a single-report writer never had to produce.
Beyond roughly a dozen inputs the ledger is itself a wall, and you must choose tiering or refusal rather than letting it grow. The criterion is whether the set partitions cleanly by decision:
- Tier it when the inputs fall into groups that each bear on one decision,
with few claims crossing a group boundary. Merge each group, then merge the merges, keeping pointers and source counts through both passes.
- Refuse and say the set needs splitting when the groups do not separate —
when the same claims are load-bearing in several groups at once, so any partition you draw cuts through a relation. Tiering there hides the crossing relation inside a pass nobody reads, which is worse than the wall.
A twenty-line ledger reproduces the problem in a smaller font.
When they do not combine
This is a legitimate deliverable, not a softer merge. A merge with zero combined claims is a valid output. Never manufacture a joint sentence to justify the skill having run.
The shape is exact:
- The refusal, first line, stated plainly.
- One named reason per parked item — not one reason for the set.
- What would make it combinable, per item.
- Then each finding in full, in decision order, with its own verdict, its
own grade, and its own back-pointer.
Worked example — a museum archive
The frozen inputs first, so every figure below can be checked against them.
The inputs, as received
R1 Conservation, 2026-02-10
Surveyed 4 of the 11 archive rooms, taking own readings:
rooms 3, 5, 7, 9. Relative humidity above the 60 per cent
ceiling in rooms 3, 5 and 7. The other 7 rooms were locked.
R2 Finance, 2026-03-06
Keep on site: new climate plant, EUR 610,000 to install and
EUR 48,000 a year to run. Move off site: EUR 90,000 removals
once, EUR 71,000 a year to lease. Lease price quoted by the
store operator; both capital figures from the same 2025
outline pricing note. Assumes the EUR 55,000 annual
conservation grant continues.
R3 Registrar, 2026-04-14
The store operator states its halls hold 55 per cent relative
humidity year round. Basis: the operator's brochure.
R4 Reader services, 2026-05-08
1,240 reader visits in 2025; 380 of those consulted archive
material. Off-site retrieval adds 2 working days per request.
R5 Building surveyor, 2026-05-20
Water ingress through the north range roof recorded in rooms
5 and 7 during February 2026. Own inspection.
R6 Finance addendum, 2026-06-30
The EUR 55,000 conservation grant was not renewed for 2027.
The 2027 budget submission was filed on 2026-04-30, carries the
grant as income, and is the standing submission; no revision
has been filed. Basis for the non-renewal: not stated.
The merged surface
> Moving off site is cheaper by EUR 290,000 over ten years but dearer for > ever after year 22.6, and no report says how long the museum intends to hold > this archive — so the ten-year frame may be the wrong one and the EUR > 290,000 with it. Two of the three damp rooms also have a leaking roof that > neither option fixes and that no report prices, and the standing 2027 budget > still counts a > EUR 55,000 grant that Finance now says was not renewed. Do not sign the > lease on these reports. > > Decision needed before the 2027 budget is reopened: refile the budget > without the grant, and commission an independent humidity reading at the > store. Both are prerequisites, not alternatives. > > No longer true: the EUR 55,000 grant — on Finance's own unattributed > word. R2 assumed the grant continues; R6 says it was not renewed for 2027. > R6 also says the 2027 submission was filed on 2026-04-30, carries the grant > as income, and is still the standing submission with no revision filed. The > non-renewal was reported on 2026-06-30, so the submission was filed two > months before the fact that breaks it was known, and the live document still > counts money Finance
…
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: allemaar
- Source: allemaar/open-skills
- License: Apache-2.0
- Homepage: https://allemaar.com
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.