Check that every merge variable in a sequence resolves against the fields actually present on the rows, before the campaign sends...
An unresolved merge variable is the quietest failure in outbound. It does not raise an error and it does not stop the send. It renders as nothing, leaving a sentence that reads like a bug, and it is only visible after the email has gone. This skill compares the variables used in the copy against the fields present on the rows and reports the gaps before the send rather than after.
This skill needs no account, API key or paid service. It works from the files, exports and answers you give it, in any agent that reads SKILL.md.
Before doing anything else, read whichever of these exist at the project root and use them instead of asking the user to repeat themselves:
ICP.mdIf none exist, do the work from what the user gives you, then offer to write the missing file so the next skill in the pack starts warmer.
This skill needs no live data tool. It works from the files, exports and answers you give it, so it runs the same in any agent with no setup.
scripts/check-output.py before you return it.This skill does not send email or write to a CRM. If the user asks it to, stop first: show what would be sent or written and wait for an explicit yes.
A variable table with used, matched, fallback present, and the rendered sample. Plus a go or no go line.
Save the output to a file and run python3 scripts/check-output.py <file>. The
contract it checks is scripts/output-contract.json.
COMPLETE: return the output.INCOMPLETE: do not present the output as finished. Fill what you can, run
the check again, and if parts stay missing, return the output under the heading
Incomplete with every reason the check printed.cold-email-sequence-systemsequencer-campaign-configcold-email-structure-checkerShips in the cold-email-system pack.