microsoft/handoff-brief-generator
Creates comprehensive handoff documentation for sales reps going on vacation or transitioning deals. Generates structured briefs with deal status, activities, next steps, contacts, and risks. Use when user says "I'm going on vacation", "create handoff brief", "coverage brief for my deals", "vacation handoff", "out of office brief", "transition my deals", or "backup documentation".
npx skills add https://github.com/microsoft/dataverse-business-skills --skill handoff-brief-generator
When a sales rep goes on vacation or needs to hand off deals temporarily, the backup needs to quickly understand the status of each deal. This skill automatically generates comprehensive handoff briefs from Dataverse data, ensuring smooth coverage and no deals fall through the cracks.
When user says "I'm going on vacation - create a handoff brief for my backup on active deals":
1.1 Get User Context:
1.2 Query Active Opportunities:
SELECT opportunityid, name, customerid, accountid, estimatedvalue,
estimatedclosedate, salesstage, stepname, closeprobability,
budgetstatus, need, purchasetimeframe, decisionmaker,
description, currentsituation, customerneed,
msdyn_forecastcategory, msdyn_opportunityscore,
createdon, modifiedon, statecode
FROM opportunity
WHERE ownerid = '[user_id]'
AND statecode = 0
ORDER BY estimatedclosedate ASC
2.1 Get Account Information:
SELECT accountid, name, telephone1, emailaddress1,
address1_city, address1_stateorprovince,
industrycode, numberofemployees, primarycontactid
FROM account
WHERE accountid = '[opportunity.accountid]'
2.2 Get Key Contacts:
SELECT contactid, fullname, jobtitle, emailaddress1, telephone1,
mobilephone, accountrolecode, msdyn_decisioninfluencetag
FROM contact
WHERE accountid = '[accountid]'
AND statecode = 0
ORDER BY accountrolecode
2.3 Get Recent Activities (Last 30 Days):
SELECT activityid, activitytypecode, subject, description,
createdon, actualend, statecode, statuscode
FROM activitypointer
WHERE regardingobjectid = '[opportunityid]'
AND createdon >= '[30_days_ago]'
ORDER BY createdon DESC
2.4 Get Open Tasks:
SELECT activityid, subject, description, scheduledend,
prioritycode, statecode, statuscode
FROM task
WHERE regardingobjectid = '[opportunityid]'
AND statecode = 0
ORDER BY scheduledend ASC
2.5 Get Scheduled Appointments:
SELECT activityid, subject, description, scheduledstart, scheduledend,
location, ownerid
FROM appointment
WHERE regardingobjectid = '[opportunityid]'
AND scheduledstart >= '[today]'
AND statecode IN (0, 3)
ORDER BY scheduledstart ASC
For each appointment, fetch attendees via activityparty:
SELECT partyid, participationtypemask
FROM activityparty
WHERE activityid = '[activityid]'
Note: requiredattendees and optionalattendees are not selectable columns; attendee lookups are stored in the activityparty table.
2.6 Get Recent Notes:
SELECT annotationid, subject, notetext, createdon
FROM annotation
WHERE objectid = '[opportunityid]'
AND createdon >= '[30_days_ago]'
ORDER BY createdon DESC
3.1 Calculate Urgency Level:
| Factor | Urgent | Moderate | Low |
|--------|--------|----------|-----|
| Close Date | Within coverage period | Within 30 days | 30+ days out |
| Stage | Close | Propose | Qualify/Develop |
| Scheduled Activities | Meetings during vacation | Tasks due | Nothing scheduled |
| Deal Size | Top 20% of pipeline | Average | Below average |
| Forecast Category | Committed | Best Case | Pipeline |
3.2 Identify Potential Risks:
3.3 Flag Urgent Items:
URGENT flag if:
- Close date during vacation period
- Meeting scheduled during vacation
- Pending action that can't wait
- Critical response expected from customer
- Proposal review scheduled
Output Format:
════════════════════════════════════════════════════════════════
SALES HANDOFF BRIEF
════════════════════════════════════════════════════════════════
Prepared for: [Backup Name]
Prepared by: [Sales Rep Name]
Coverage Period: [Start Date] - [End Date]
Generated: [Current Date/Time]
════════════════════════════════════════════════════════════════
EXECUTIVE SUMMARY
════════════════════════════════════════════════════════════════
Total Active Opportunities: [N]
Total Pipeline Value: $[X]
Urgent Items: [N] (require action during coverage)
Scheduled Meetings: [N] (need attendance/rescheduling)
COVERAGE PRIORITIES:
🔴 Urgent (Action Required): [N] deals
🟡 Important (Monitor Closely): [N] deals
🟢 Standard (Check if contacted): [N] deals
════════════════════════════════════════════════════════════════
🔴 URGENT - ACTION REQUIRED
════════════════════════════════════════════════════════════════
────────────────────────────────────────────────────────────────
DEAL #1: Contoso Enterprise Platform
────────────────────────────────────────────────────────────────
SNAPSHOT:
• Account: Contoso Corporation
• Value: $150,000
• Stage: Close
• Close Date: [Date - during vacation]
• Probability: 75%
• Forecast: Committed
WHY IT'S URGENT:
⚠️ Contract signature expected [Date]
⚠️ Final negotiation call scheduled [Date]
⚠️ Legal review completing this week
CURRENT STATUS:
We've completed the proposal review with the evaluation team. They've
selected us over [Competitor]. Sarah Chen (VP Operations) gave verbal
commitment. Waiting on legal review of contract and final signature
from CFO.
WHAT'S HAPPENED RECENTLY:
[Date] - Contract sent to legal for review
[Date] - Proposal accepted, moving to contract
[Date] - Final presentation to executive team
[Date] - Technical validation completed
WHAT'S NEXT:
1. [Date] - Legal review call (YOU NEED TO JOIN)
• Attendees: Sarah Chen, Legal team
• Prep: Review redlines from their legal (attached)
• Key issue: Indemnification clause - we can go to $500K cap
2. [Date] - Expected signature
• Contact CFO's office if not received by EOD
3. [By EOD Friday] - If signed, initiate onboarding handoff
KEY CONTACTS:
📞 Sarah Chen (VP Operations) - CHAMPION
Email: [email protected]
Mobile: (555) 123-4567
Notes: Prefers text for urgent matters
📞 Michael Ross (CFO) - ECONOMIC BUYER
Email: [email protected]
Phone: (555) 123-4568
Notes: His EA is Jennifer - reach out to her first
📞 Tom Bradley (Legal) - BLOCKER POTENTIAL
Email: [email protected]
Notes: Very detail-oriented, wants everything in writing
RISKS/CONCERNS:
• Legal may push back on liability clause
• CFO traveling next week - signature could slip
• Competitor (Acme) made last-minute counter-offer
IF THINGS GO WRONG:
• If legal pushback: Loop in our legal (Bob Smith) immediately
• If CFO delays: Ask Sarah to escalate internally
• If competitor resurfaces: Offer [approved discount] as last resort
RELATED DOCUMENTS:
• Final proposal: [Link/Location]
• Contract redlines: [Link/Location]
• Presentation deck: [Link/Location]
────────────────────────────────────────────────────────────────
DEAL #2: Fabrikam Cloud Migration
────────────────────────────────────────────────────────────────
SNAPSHOT:
• Account: Fabrikam Industries
• Value: $85,000
• Stage: Propose
• Close Date: [Date - 2 weeks out]
• Probability: 50%
• Forecast: Best Case
WHY IT'S URGENT:
⚠️ Proposal expires [Date]
⚠️ Customer evaluating 2 other vendors
⚠️ Demo scheduled during vacation - needs coverage
CURRENT STATUS:
Proposal submitted 10 days ago. Customer is comparing us against
[Competitor A] and [Competitor B]. We differentiate on integration
capabilities and support model. Demo of integration features
scheduled for [Date].
WHAT'S HAPPENED RECENTLY:
[Date] - Sent proposal follow-up email (no response yet)
[Date] - Technical Q&A call with their IT team
[Date] - Proposal presentation meeting
WHAT'S NEXT:
1. [Date] - Integration Demo (YOU NEED TO ATTEND OR RESCHEDULE)
• Attendees: IT Team (5 people)
• Location: Virtual - [Link]
• Prep: Demo environment in sandbox-fabrikam
• Focus: API integration with their existing ERP
2. [Date +3] - Follow up on demo
• Get feedback, identify remaining concerns
3. [Date +7] - Decision expected
KEY CONTACTS:
📞 Jennifer Walsh (IT Director) - TECHNICAL BUYER
Email: [email protected]
Phone: (555) 234-5678
Notes: Engineer mindset, wants to see it work
📞 David Kim (COO) - ECONOMIC BUYER
Email: [email protected]
Notes: Haven't met yet - Jennifer supposed to intro
COMPETITIVE INTELLIGENCE:
• Competitor A: Lower price, less functionality
• Competitor B: Similar features, weaker support
• Our edge: Integration capabilities and SLA terms
RISKS/CONCERNS:
• Haven't engaged economic buyer directly
• Price may be concern - authorized to offer 10% if needed
• Technical team loves us but may not have budget authority
IF DEMO NEEDS RESCHEDULING:
• Contact Jennifer directly, explain coverage
• Offer earliest date after [return date]
• Keep IT team engaged via email
[Continue for additional deals...]
════════════════════════════════════════════════════════════════
🟡 IMPORTANT - MONITOR CLOSELY
════════════════════════════════════════════════════════════════
────────────────────────────────────────────────────────────────
DEAL #3: Acme Corp Expansion
────────────────────────────────────────────────────────────────
SNAPSHOT:
• Value: $65,000 | Stage: Develop | Close: 45 days
• Status: Discovery complete, building proposal
QUICK CONTEXT:
Existing customer looking to expand. Good relationship with main
contact (Bob Jones). Need to finalize technical requirements before
proposal.
DURING COVERAGE:
• No action needed unless they reach out
• If contacted: Schedule requirements call for after [return date]
• If urgent: Can answer basic questions, defer technical to SE team
KEY CONTACT:
📞 Bob Jones: [email protected] | (555) 345-6789
────────────────────────────────────────────────────────────────
DEAL #4: Global Industries New Logo
────────────────────────────────────────────────────────────────
[Similar format - condensed for Important tier...]
════════════════════════════════════════════════════════════════
🟢 STANDARD - CHECK IF CONTACTED
════════════════════════════════════════════════════════════════
DEAL #5: Tech Startup Initial Deal
• Value: $15,000 | Stage: Qualify | Close: 90 days
• Status: Early stage, initial discovery scheduled after vacation
• Action: Only respond if they reach out
• Contact: Amy Lee | [email protected]
DEAL #6: Manufacturing Co Renewal
• Value: $45,000 | Stage: Develop | Close: 60 days
• Status: Renewal discussion started, no urgency
• Action: Standard check-in if they email
• Contact: Jim Peters | [email protected]
[List remaining deals...]
════════════════════════════════════════════════════════════════
SCHEDULED ACTIVITIES DURING COVERAGE
════════════════════════════════════════════════════════════════
[Date] 10:00 AM - Legal Review Call (Contoso)
⚠️ MUST ATTEND - See Deal #1 for details
[Date] 2:00 PM - Integration Demo (Fabrikam)
⚠️ ATTEND OR RESCHEDULE - See Deal #2 for details
[Date] 11:00 AM - Check-in Call (Acme)
Can reschedule - not urgent
════════════════════════════════════════════════════════════════
TASKS DUE DURING COVERAGE
════════════════════════════════════════════════════════════════
[Date] - Send Contoso contract to legal (DONE - can delete)
[Date] - Follow up on Fabrikam demo (See Deal #2)
[Date] - Prepare Acme proposal (Can wait until return)
════════════════════════════════════════════════════════════════
EMERGENCY CONTACTS
════════════════════════════════════════════════════════════════
Sales Manager: [Name] | [Phone] | [Email]
SE Support: [Name] | [Phone] | [Email]
Legal (urgent contracts): [Name] | [Phone] | [Email]
For ANYTHING truly urgent: Text me at [Mobile]
I'll be checking email [frequency] and can jump on critical calls.
════════════════════════════════════════════════════════════════
5.1 Save Brief as Note:
Use create_record with tablename: annotation
{
"subject": "Handoff Brief - [Rep Name] Vacation [Dates]",
"notetext": "[Full brief content]",
"objectid": "[First/primary opportunity or user account]",
"objecttypecode": "opportunity"
}
5.2 Reassign Ownership (if requested):
For temporary coverage, update each opportunity:
Use update_record with tablename: opportunity
{
"ownerid": "[backup_user_id]"
}
5.3 Create Reminder Task:
Use create_record with tablename: task
{
"subject": "Review deals after vacation - reassign ownership",
"description": "Deals were handed off to [Backup Name] during vacation.\nReview status and reassign to yourself.",
"scheduledend": "[return_date]",
"prioritycode": 1
}
| Table | Purpose |
|-------|---------|
| opportunity | Active deals to hand off |
| account | Account context |
| contact | Key stakeholder information |
| activitypointer | Recent activity history |
| task | Open tasks to transfer |
| appointment | Scheduled meetings to cover |
| annotation | Notes and brief storage |
| phonecall | Recent call history |
| email | Recent email history |
opportunity:
ownerid (OWNER) - Current owner/rep on vacationestimatedclosedate (DATE) - For urgency calculationsalesstage (CHOICE) - Qualify(0), Develop(1), Propose(2), Close(3)msdyn_forecastcategory (CHOICE) - Pipeline(100000001), Best case(100000002), Committed(100000003), Omitted(100000004), Won(100000005), Lost(100000006)statecode (STATE) - Open(0), Won(1), Lost(2)closeprobability (INT) - Win probability (0-100)task:
scheduledend (DATETIME) - Due datestatecode (STATE) - Open(0), Completed(1), Canceled(2)statuscode (STATUS) - Not Started(2), In Progress(3), Waiting(4), Completed(5), Canceled(6), Deferred(7)prioritycode (CHOICE) - Low(0), Normal(1), High(2)appointment:
scheduledstart, scheduledend (DATETIME) - Meeting timesstatecode (STATE) - Open(0), Completed(1), Canceled(2), Scheduled(3)statuscode (STATUS) - Free(1), Tentative(2), Completed(3), Canceled(4), Busy(5), Out of Office(6)requiredattendees, optionalattendees (ACTIVITY PARTY) - Participantslocation (NVARCHAR) - Meeting locationisonlinemeeting (BIT) - Teams meeting flagcontact:
accountrolecode (CHOICE) - Decision Maker(1), Employee(2), Influencer(3)mobilephone (PHONE) - For urgent contactmsdyn_decisioninfluencetag (CHOICE) - Decision maker(0), Influencer(1), Blocker(2), Unknown(3)User says: "I'm going on vacation March 10-17, create a handoff brief for my deals"
Actions:
Result:
SALES HANDOFF BRIEF
Prepared for: [Backup Name]
Coverage Period: March 10-17, 2026
URGENT (2 deals):
1. Contoso Enterprise - $150K - Close date March 12
- Proposal sent, awaiting response
- Contact: John Smith (CEO) - 555-1234
- ACTION: Follow up Tuesday if no response
2. Fabrikam Deal - Meeting March 14 at 2pm
- Demo for technical team
- Teams link: [included]
- ACTION: Attend or reschedule
MONITOR (5 deals):
[Summary of each...]
User says: "I'm transitioning my territory to Sarah, create handoff documentation"
Actions:
Result:
TERRITORY TRANSITION BRIEF
From: [Current Rep] To: Sarah
ACCOUNTS (15 total):
1. CONTOSO LTD
Relationship: 3 years, strong
Key Contacts: John (CEO), Mary (VP Ops)
Open Pipeline: $250K
History: Started as SMB, now enterprise
Tips: John prefers morning calls, Mary is technical champion
User says: "I'll be out tomorrow, quick brief for my urgent deals"
Actions:
Result:
QUICK COVERAGE BRIEF - March 5
URGENT ITEMS ONLY:
1. Alpine call at 10am - Reschedule or cover
2. Tailspin proposal due - Send by EOD
3. Northwind - Check for contract signature
All other deals: No action needed for 1 day
Cause: User has no open deals or wrong user context
Solution:
Cause: Activity party relationship requires separate query
Solution:
Cause: Notetext field has length limits
Solution:
Take microsoft/handoff-brief-generator from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.