| name | testing-kickoff |
| description | Draft a testing kickoff email to a trading partner, engaging them to begin EDI test document exchange. Use this skill whenever a trade request has been accepted and configured and the next step is to notify or re-engage the partner to start testing. Reads the Intercom ticket for prior contact history and partner replies, pulls configuration details from Orderful (transaction types, EDI versions, guideline sets, comm channel), and produces a draft tailored to whether this is a first-touch or a thread continuation. Always requires human approval before sending. Also trigger for: "kick off testing with [partner]", "notify partner we're ready to test", "draft testing email for [ticket]", "re-engage [partner] for testing", "send testing kickoff for [customer] <> [partner]", "start testing on [partnership]".
|
Testing Kickoff Skill
Draft a testing kickoff email to a trading partner. The goal is a specific, ready-to-send
message that gives the partner everything they need to begin test document exchange — no
information requests, no setup questions, just a clear handoff into testing.
Always operate in chat. Deliver structured conversational output.
When to Use This Skill
This skill is manually triggered only. It is appropriate when:
- A trade request has been accepted and the partnership is active
- Configuration is complete (or substantially complete — comm channel and guidelines assigned)
- The next human action is to engage the partner to begin sending or receiving test documents
It is not appropriate when:
- Configuration is still incomplete (comm channel missing, no guideline set assigned)
- The partner has outstanding unanswered questions in the Intercom thread
- The ticket state is
outreach-queued and customer confirmation is still pending
Workflow
Always complete all four phases before presenting a draft. Never skip to drafting.
Phase 1 — Load the Ticket
Accept any of: Intercom conversation ID, ticket URL, customer name, partner name, or
partnership ID.
get_conversation(id: <conversation_id>)
Extract from the ticket:
custom_attributes.CustomerName, custom_attributes.PartnerName
custom_attributes.Partnership ID
custom_attributes.Partner Default Communication Channel Name/Type
ticket_custom_state_admin_label — ticket state
- All
conversation_parts — filter for:
part_type: "comment" → email thread (partner and Orderful messages)
part_type: "note" → internal notes (config decisions, context)
Label each comment part:
[PARTNER] — author.type === "user", not an @orderful.com address
[AUTO] — author.name === "Winston" (ignore for context purposes)
[ORDERFUL] — all other admins / @orderful.com senders
Strip HTML. Cap at 800 chars per part for summary purposes.
⚠️ Inline reply truncation check: If a partner message references "see below",
"answers in bold", "filled out inline", "answers in red" but the body is short with no
actual answers — flag this before drafting. Do not assume the information was not provided.
Phase 2 — Assess Prior Contact History
Determine which draft mode applies based on what you found in the ticket.
Mode A — No prior partner contact
Criteria: no [PARTNER] comment parts found, OR only [AUTO] messages present,
OR ticket state is config-only / best-guess-noted with no outreach thread.
This partner has never been contacted. Draft is a fresh introduction + testing kickoff.
Mode B — Prior contact exists, partner has replied
Criteria: one or more [PARTNER] comment parts present.
Extract from prior replies:
- Partner contact name (from sign-off or email header)
- Any details they provided (ISA IDs, connection preferences, questions asked)
- Tone and formality of their messages
- Any outstanding questions from either side — if unresolved questions exist, flag
before drafting and ask the user whether to address them in the kickoff email or
handle separately
Draft is a thread continuation — no re-introduction, reference the prior exchange,
build on established rapport.
Mode C — Prior Orderful outreach, no partner reply
Criteria: [ORDERFUL] messages exist but zero [PARTNER] replies.
Note the number of prior attempts and dates. Draft acknowledges the prior outreach
and pivots to testing readiness — warmer and more direct than a cold first touch,
but still re-establishes context since the partner hasn't engaged.
Phase 3 — Pull Configuration Details from Orderful
Use the Partnership ID from the ticket.
get_partnership(partnershipId: <id>)
get_account_context(organizationId: <customer org id>)
list_relationships(organizationId: <customer org id>, tradingPartnershipId: <id>)
Metabase fallback — if MCP unavailable:
SELECT * FROM PLATFORM_API_DBTRADING_PARTNERSHIPS WHERE id = '<partnership id>'
SELECT r.*, cc.name AS channel_name, cc.type AS channel_type,
gs.name AS guideline_set_name, gs.updated_at AS guideline_updated_at
FROM PLATFORM_API_DBRELATIONSHIPS r
LEFT JOIN PLATFORM_API_DBCOMMUNICATION_CHANNELS cc
ON cc.id = (r.config->>'communicationChannelId')::uuid
LEFT JOIN PLATFORM_API_DBGUIDELINE_SETS gs
ON gs.id = r.guideline_set_id
WHERE r.trading_partnership_id = '<partnership id>'
Extract per relationship:
| Field | Source | Purpose in email |
|---|
| Transaction type + direction | relationship or scenario steps | "Transaction types in scope" |
| EDI version | relationship data/ack settings | Listed per transaction |
| Guideline set name | guidelineSetId → guideline set record | "Guidelines" section |
Guideline set updated_at | guideline set record | "Last updated" date |
| Comm channel name + type | communicationChannelSettings → channel record | "Connection details" |
| Comm channel protocol/version | channel record fields | Listed in connection section |
For comm channel details, also fetch:
list_communication_channels(ownerId: <receiver org id>)
Metabase fallback:
SELECT * FROM PLATFORM_API_DBCOMMUNICATION_CHANNELS
WHERE owner_id = '<receiver org id>'
Configuration readiness check — before drafting, verify:
- Partnership
isActive = true
- At least one relationship is not in SETUP state
- At least one comm channel is assigned
- At least one guideline set is assigned
If any check fails, do not draft. Present a configuration gap summary and ask the
user to resolve before proceeding:
⚠️ Configuration not ready for testing kickoff
The following gaps were found:
- [e.g. No comm channel assigned on 2 of 3 relationships]
- [e.g. No guideline set assigned]
Resolve these before sending a testing kickoff. Use the trade-request-acceptance skill
to apply the missing configuration, then re-run this skill.
Phase 4 — Draft the Email
Build the draft using the mode determined in Phase 2 and the config details from Phase 3.
Draft structure (all modes)
Subject: [keep existing subject if thread continuation — never change it]
[new subject if fresh intro: "Testing Kickoff: [Customer] <> [Partner]"]
[Opening — mode-dependent, see below]
[Config summary block]
[Call to action]
[Sign-off]
Config summary block (same across all modes)
Here is a summary of what is configured on our end:
Transaction types:
- [Transaction type, direction, EDI version]
e.g. "850 Purchase Order (inbound) — X12 4010"
e.g. "856 Advance Ship Notice (outbound) — X12 4010"
e.g. "997 Functional Acknowledgement (both) — X12 4010"
Guidelines:
- [Guideline set name] (last updated [date])
Connection:
- [Channel type]: [channel name]
- [Protocol/version details if available]
- [Include Orderful AS2 details if channel type is AS2 — see Reference section]
Mode A — Fresh introduction opening
Hi [Partner contact or "EDI Team"],
[Customer] has completed setup on the Orderful platform and we are ready to begin
EDI testing. We would love to get test document exchange started with your team.
[Config summary block]
We are ready on our end whenever you are. Could you let us know a good time to begin,
or go ahead and send a test [first expected inbound transaction type] when ready?
Thank you so much for your help getting this going.
Winston | Orderful Outreach Team
Mode B — Thread continuation opening
Hi [Partner contact name — use actual name from prior replies],
Wanted to follow up on our earlier conversation. Configuration on the Orderful side
is now complete and we are ready to move into testing.
[Reference specific detail from prior exchange if relevant:
e.g. "You mentioned your team uses AS2 — we have that configured on our end."]
[Config summary block]
Could you let us know when your team is ready to begin, or send a test
[first expected inbound transaction type] whenever suits?
Winston | Orderful Outreach Team
Mode C — Prior outreach, no reply opening
Hi [Partner contact or "EDI Team"],
We have been in touch previously regarding [Customer]'s EDI connection on the
Orderful platform. We wanted to let you know that configuration is now complete
on our end and we are ready to begin testing whenever your team is available.
[Config summary block]
Please reach out or send a test [first expected inbound transaction type] whenever
you are ready to proceed.
Winston | Orderful Outreach Team
Draft rules
- Never change the subject line on a thread continuation — this breaks the email thread.
- Use the partner's actual name if found in prior replies. Never use a placeholder.
- No em dashes or hyphens as punctuation. Use a period or new sentence.
- One exclamation point maximum per email.
- Do not include the onboarding form URL — that was the info-gathering phase. This email is about testing.
- Do not ask for information in the kickoff email unless there is a genuine unresolved question flagged in Phase 2. Testing kickoffs are notifications, not requests.
- If unresolved partner questions were flagged — present the draft with a callout at the top noting what's outstanding and ask the user whether to address it inline or hold the kickoff until it's resolved.
Phase 5 — Present for Review
Present the output in this format before any action is taken:
## Testing Kickoff — [Customer] <> [Partner]
**Partnership ID:** [id]
**Ticket state:** [state label]
**Draft mode:** [A — fresh intro | B — thread continuation | C — prior outreach, no reply]
**Prior partner replies found:** [yes — [N] messages | no]
**Config verified:** [✅ ready | ⚠️ gaps noted above]
---
**Transaction types in scope:**
[list]
**Guidelines:** [name] (last updated [date])
**Connection:** [channel type — name]
---
**Draft email:**
[full draft]
---
**To send:** Confirm approval and I will post this as a reply in the Intercom ticket thread.
**To adjust:** Tell me what to change and I will revise before sending.
Never send without explicit human approval. Approval phrases: "looks good", "send it",
"go ahead", "approved", "yes". On approval, post as a reply in the Intercom conversation.
Reference — Orderful AS2 Details (include when channel type = AS2)
Add this block to the connection section of the config summary when the comm channel
is AS2 and this is a fresh introduction (Mode A or C). For thread continuations where
AS2 info was already shared, omit unless the partner asks.
Orderful AS2 connection details:
AS2 ID: ORDERFULAS2
AS2 URL: https://as2.orderful.com
Port: 443
Supported encryption: 3DES, AES128, AES192, AES256
Supported signing: SHA-1, SHA-256, SHA-384, SHA-512
Note: synchronous MDN only; async, compressed, and unencrypted not supported.
For IP allowlisting: https://docs.orderful.com/docs/ip-whitelisting
Reference — Expected Test Document Sequence
Use this to inform the call to action — reference the first expected inbound transaction
based on the transaction types in scope.
| Scenario | First expected inbound | Typical sequence |
|---|
| Retail (full) | 850 Purchase Order | 850 → 997 → 855 → 856 → 810 |
| Retail (PO + ASN only) | 850 Purchase Order | 850 → 997 → 856 |
| Invoicing only | 810 Invoice | 810 → 997 |
| Logistics (load tender) | 204 Load Tender | 204 → 990 → 214 |
| Acknowledgement only | any inbound | inbound → 997 |
If none of these match the transaction types in scope, default to: "send a test
[first inbound transaction type] when ready."
Orderful MCP Tool Reference
| Tool | Purpose |
|---|
get_conversation(id) | Full ticket with all conversation parts |
get_partnership(partnershipId) | Partnership status, isActive, org IDs |
get_account_context(organizationId) | Full nested: org → EDI accounts → partnerships → relationships → channels → guideline sets |
list_relationships(organizationId, tradingPartnershipId) | All relationships for a partnership |
list_communication_channels(ownerId) | Channels available to an org |
Never write to Orderful or Intercom until the human explicitly approves the draft.