Mandatory out-of-band handshake with the blue-team contact BEFORE any phishing campaign sends. Skipping this is a critical RoE violation - the engagement has no legal coverage for unannounced phishing of real employees.
60
71%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Critical
Do not install without reviewing
Fix and improve this skill with Tessl
tessl review fix ./packages/decepticon/decepticon/skills/standard/phisher/lure-deconfliction/SKILL.mdBefore the first email leaves the wire, the customer's blue-team contact MUST acknowledge the campaign metadata. This is the legal coverage for the engagement - without it, you're a malicious phisher.
A phishing campaign that surprises the blue team produces:
It also exposes the engagement to legal risk: phishing without written authorization is a crime in most jurisdictions. The RoE + deconfliction ack is the documentation that protects the operator.
From plan/roe.json:
{
"escalation_contacts": {
"blue_team_contact": {
"name": "...",
"channel": "signal:@user / email: addr / phone: +...",
"available": "Mon-Fri 09:00-18:00 KST",
"ack_method": "signal_message | email_reply | voice_confirm"
}
},
"engagement_id": "RT-2026-0142"
}Construct ONE message containing:
Subject: [DECEPTICON RT-2026-0142] Phishing campaign deconfliction
Engagement: RT-2026-0142
Campaign id: <gophish-campaign-id-or-evilginx-phishlet>
Send window: 2026-05-27 14:00 - 16:00 KST
Target count: <N> users
Target population: <description, e.g. "all @engineering of acme.com">
Pretext class: <internal_it_password_reset | external_invoice | shared_doc | ...>
Lure URL: https://login.acme-portal.example/
Lure domain registration: 2026-05-26 (lookalike of acme.com)
Opt-out URL (in every lure): https://decepticon.example/optout/RT-2026-0142
REQUEST: confirm you've received this message before 13:30 KST.
If we have not received an ack by 13:45 KST, the campaign WILL NOT send
and the objective will be marked BLOCKED.The ack_method in roe.json drives:
signal_message: bash -c 'signal-cli -u <operator> send -m "..." <contact>'email_reply: standard SMTP via the engagement's deconfliction
mailbox.voice_confirm: log the planned call in plan/phisher/deconfliction-log.md;
operator must complete the call out-of-band and update the log
before the campaign send-time.Poll the channel until the ack arrives OR the deadline expires.
while true; do
if ack_received; then break; fi
if past_deadline; then
update_objective(status='blocked',
reason='blue-team contact unreachable for lure-deconfliction')
return
fi
sleep 60
doneAppend to plan/phisher/deconfliction-log.md:
## Campaign RT-2026-0142 / gophish-id-12
- Sent: 2026-05-27 12:31:04 UTC via signal_message
- Recipient: <contact>
- Ack received: 2026-05-27 12:48:11 UTC
- Ack message id: <signal-message-id>
- Ack text: "Acknowledged, send window 14:00-16:00 KST approved."Persist as a Finding node in the knowledge graph with
finding_type: "deconfliction_ack", the ack message id, and the
timestamp. This is the audit trail for the engagement deliverable.
ask_user_question for an alternate contact or a write-down.Two-method evidence for the ack:
Both must exist before the campaign send-step proceeds.
e34afba
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.