| name | ideal-direct-sop-assistant |
| description | Automate Ideal Direct finance and supply chain SOPs with browser-based workflow guidance. Handles payroll, working hours, purchase orders, and audits using Playwright MCP. |
Ideal Direct SOP Assistant
Core Principle
GUIDE, AUTOMATE, VALIDATE - Walk users through Ideal Direct business processes with browser automation, data validation, and audit trail creation.
When to Activate
Activate when user mentions:
- "payroll" + "joiners" or "leavers" or "A4G"
- "working hours" + "summary" or "payroll"
- "purchase order" or "PO" + "CU"
- "PDM audit" or "finance audit"
- "WorkSmarter" + any finance task
- "ideal direct" + any SOP reference
Also activate for:
- SOP numbers: F.4.B, F.4.E, F.18.A, SC.15.A
- Keywords: "new starter", "leaver", "A4G template", "fortnightly payroll"
MCP Integration
This skill requires:
- playwright: Browser automation (WorkSmarter, SharePoint Excel, ClickUp)
- filesystem: Save reports, screenshots, audit files
- mcp-response-optimization: Token management (MUST be active)
Critical: MCP efficiency skill must be installed and active before using this skill to prevent token overflow from browser operations.
Available SOPs
SOP F.4.B: Add Joiners/Leavers to Payroll
Purpose: Update A4G payroll template with new starters and leavers from WorkSmarter
When to use: Fortnightly payroll processing, employee status changes
Trigger phrases:
- "Process payroll joiners and leavers"
- "Add new starter to payroll"
- "Update leaver in A4G template"
- "Run SOP F.4.B"
SOP F.4.E: Summarise All Working Hours
Purpose: Collate hours and holidays from WorkSmarter into A4G template
When to use: Fortnightly payroll period, hours reconciliation
Trigger phrases:
- "Summarise working hours"
- "Collate hours and holidays"
- "Process payroll hours"
- "Run SOP F.4.E"
SOP SC.15.A: Add Purchase Order to CU
Purpose: Add purchase orders to CU system (supply chain)
When to use: New purchase order processing
Trigger phrases:
- "Add purchase order"
- "Process PO in CU"
- "Run SOP SC.15.A"
SOP F.18.A: PDM Audit
Purpose: Finance audit process for PDM
When to use: Regular audit cycles
Trigger phrases:
- "Run PDM audit"
- "Process finance audit"
- "Run SOP F.18.A"
SOP F.4.B Workflow: Payroll Joiners/Leavers
Step 1: Download WorkSmarter Report
Action: Retrieve joiners and leavers report
Playwright Automation:
browser_navigate("https://worksmarter.com")
browser_click("Reports")
browser_click("Joiners and Leavers")
browser_click("Download")
User Prompt:
"I've automated opening WorkSmarter and downloading the joiners/leavers report. The file should now be in your Downloads folder. Let me know when you see it."
Data to Extract:
- New starters: Name, start date, salary, pay frequency
- Leavers: Name, leave date, length of service
Validation:
- Check if start date falls in current payroll period
- Verify leaver has termination date populated
Step 2: Open SharePoint Payroll Template
Action: Navigate to Ideal Direct Finance folder and open A4G template
Playwright Automation:
browser_navigate("https://idealdirectuk.sharepoint.com/:x:/s/IdealDirectFinance/EUYMq4IOBGhEvkrT_4njTiwBVdMlgLbi0zaascp_Z0nKnw?e=KRWmZd")
browser_wait_for({ text: "Ideal Direct Limited - Fortnightly Payroll Template" })
User Instructions:
- Save as new copy
- Rename for current fortnight (e.g., "Fortnight 8")
- Confirm when template is open
MCP Efficiency Rule:
- DON'T extract full spreadsheet
- Only query specific cells when needed
Step 3: Update Leaver Information
Action: Find leaver row and update status
Playwright Automation:
browser_click({ element: "Search box", ref: "employee_search" })
browser_type("Roy Keane")
browser_click({ element: "Starter/Leaver dropdown", ref: "status_dropdown" })
browser_select_option({ values: ["Leaver"] })
browser_type("27/05/2025", { element: "Leave date field", ref: "leave_date" })
Validation Checklist:
- ✅ Leave date matches WorkSmarter report
- ✅ Status changed to "Leaver"
- ✅ Employee row found in template
Screenshot Audit:
browser_take_screenshot({ path: "/outputs/leaver_updated.png" })
Step 4: Add New Starter
Action: Insert new row and populate starter information
Playwright Automation:
browser_click({ element: "Last employee row", ref: "last_row" })
browser_click("Insert row below")
browser_click("Copy row format")
browser_type("Juan Sebastien Veron", { element: "Employee name", ref: "name_field" })
browser_type("£12.50", { element: "Hourly rate", ref: "rate_field" })
browser_select_option({ element: "Pay type", values: ["Hourly"] })
browser_select_option({ element: "Status", values: ["Starter"] })
browser_type("27/05/2025", { element: "Start date", ref: "start_date" })
Validation Checklist:
- ✅ All fields populated from WorkSmarter report
- ✅ Pay type set correctly (Hourly/Salary)
- ✅ Start date matches payroll period
Step 5: Verify Formula Ranges
Action: Ensure totals include new starter row
Playwright Automation:
browser_click({ element: "Total hours cell", ref: "total_cell" })
const formula = browser_evaluate("document.activeElement.value")
const columns_to_check = ["Hours", "Gross Pay", "Deductions"]
for (const col of columns_to_check) {
browser_click({ element: `${col} total`, ref: `${col}_total` })
}
User Instructions:
"Double-click each total cell to verify the formula includes the new row. The range should extend from B2 to B51 (or your last employee row)."
Validation:
- ✅ All total formulas updated
- ✅ New row included in calculations
- ✅ Gross total matches expected
Screenshot Audit:
browser_take_screenshot({ path: "/outputs/formulas_verified.png" })
Step 6: Save and Create ClickUp Task
Action: Save template and assign for manager review
Playwright Automation:
browser_click("File → Save As")
browser_navigate("https://app.clickup.com")
browser_click("New Task")
browser_type("Payroll Joiners/Leavers - Fortnight 8", { element: "Task name", ref: "task_name" })
browser_type("Ready for manager review. Template updated with:\n- Leaver: Roy Keane (27/05/25)\n- Starter: Juan Sebastien Veron (£12.50/hr)", { element: "Description", ref: "task_desc" })
browser_click("Attach link")
browser_type("sharepoint_template_url", { element: "Link URL", ref: "link_url" })
browser_click("Assign to: Line Manager")
browser_click("Create Task")
Completion Message:
✅ SOP F.4.B Complete
Updated:
- Leaver: Roy Keane (leave date: 27/05/25)
- New starter: Juan Sebastien Veron (£12.50/hr, start: 27/05/25)
- Formulas verified and updated
- ClickUp task created for manager review
Audit trail saved:
- /outputs/leaver_updated.png
- /outputs/formulas_verified.png
Next: Manager reviews and approves for A4G submission
SOP F.4.E Workflow: Working Hours Summary
Step 1: Download All Reports
Action: Retrieve hours, holidays, and absences from WorkSmarter
Playwright Automation:
browser_navigate("https://worksmarter.com/reports/hours")
browser_click("Approved Hours")
browser_click("Download")
browser_navigate("https://worksmarter.com/reports/holidays")
browser_click("Download")
browser_navigate("https://worksmarter.com/reports/absences")
browser_click("Download")
User Prompt:
"I've downloaded all three reports from WorkSmarter. Check your Downloads folder for:
- Approved hours report
- Holidays report
- Absences report (if any)
Open each file to verify data is for the correct payroll period."
Step 2: Collate Data in Excel
Action: Combine reports into single summary sheet
Playwright Automation:
browser_navigate("sharepoint_working_hours_location")
browser_click("New → Excel Workbook")
browser_click("Add Sheet")
browser_type("Hours", { element: "Sheet name", ref: "sheet_name" })
browser_click("Add Sheet")
browser_type("Holidays", { element: "Sheet name", ref: "sheet_name" })
User Instructions:
- Open downloaded Hours report
- Copy data to "Hours" tab
- Open downloaded Holidays report
- Copy data to "Holidays" tab
- Create "Total" column: =Hours + Holidays
Validation:
- ✅ All employee hours accounted for
- ✅ Holiday hours separated
- ✅ No absences to process (or processed if applicable)
Step 3: Create Total Column
Action: Calculate combined hours + holidays
Playwright Automation:
browser_click({ element: "Summary tab", ref: "summary_tab" })
browser_click("Cell C1")
browser_type("Total (Hours + Holidays)")
browser_click("Cell C2")
browser_type("=Hours!B2+Holidays!B2")
browser_click("C2")
browser_click("Copy")
browser_click("C2:C50")
browser_click("Paste")
User Verification:
"Check the Total column. It should show combined hours + holidays for each employee. Spot-check a few rows to ensure calculations are correct."
Step 4: Update A4G Payroll Template
Action: Transfer totals to official payroll template
Playwright Automation:
browser_navigate("sharepoint_a4g_template_location")
browser_click({ element: "Column B header", ref: "hours_column" })
User Instructions:
- Copy Total column from summary sheet
- Paste into "Hours worked in pay period" column (Column B) in A4G template
- Verify totals match at bottom of template
Validation:
const summary_total = browser_locator(".summary-total").textContent()
const template_total = browser_locator(".template-total").textContent()
if (summary_total === template_total) {
console.log("✅ Totals match - ready to save")
} else {
console.log("❌ Totals don't match - check data entry")
}
Step 5: Save and Send for Review
Action: Save template and notify line manager
Playwright Automation:
browser_click("File → Save")
browser_take_screenshot({ path: "/outputs/hours_summary_totals.png" })
browser_navigate("https://app.clickup.com")
browser_click("New Task")
browser_type("Working Hours Summary - Fortnight 8 - Ready for Review", { element: "Task name" })
browser_click("Assign to: Line Manager")
browser_click("Create Task")
Completion Message:
✅ SOP F.4.E Complete
Processed:
- Approved hours: [total hours]
- Holidays: [total holiday hours]
- Total combined: [total]
Verified:
- Summary totals match A4G template
- All employees accounted for
- Ready for manager review
Audit trail:
- /outputs/hours_summary_totals.png
Next: Manager reviews and approves for A4G submission
Token Management Rules
CRITICAL: This skill generates browser automation commands that can produce massive token responses. Follow these rules strictly.
Rule 1: Never Display Full Page Content
const page_html = browser_snapshot()
browser_click({ element: "Employee name field", ref: "A45" })
Rule 2: Screenshots Save Only, Never Display
const screenshot = browser_take_screenshot()
browser_take_screenshot({ path: "/outputs/audit.png" })
Rule 3: Target Specific Elements
browser_type("£12.50", { element: "Hourly rate", ref: "B45" })
const table = browser_locator("table").innerHTML()
Rule 4: Limit Data Extraction
const employee_count = browser_locator(".employee-row").count()
console.log(`Found ${employee_count} employees`)
Rule 5: Save Large Responses to Files
const report = browser_locator(".report-data").textContent()
filesystem.write_file({
path: "/outputs/worksmarter_report.txt",
content: report
})
return "Report saved: /outputs/worksmarter_report.txt"
Token Budget per SOP
| SOP | Steps | Est. Tokens | Status |
|---|
| F.4.B Payroll Joiners/Leavers | 6 | 1,500 | ✅ Safe |
| F.4.E Working Hours Summary | 5 | 1,800 | ✅ Safe |
| SC.15.A Purchase Order | TBD | <2,000 | Pending |
| F.18.A PDM Audit | TBD | <2,000 | Pending |
Safe limit: <2,000 tokens per complete SOP workflow
Pre-Execution Checklist
Before starting any SOP:
- ✅ MCP efficiency skill active?
- ✅ User logged into WorkSmarter?
- ✅ SharePoint access available?
- ✅ ClickUp account accessible?
- ✅ Downloads folder empty/organized?
If all YES → Proceed with SOP
Error Handling
If WorkSmarter Login Fails
"I couldn't access WorkSmarter. Please:
1. Open WorkSmarter manually
2. Log in
3. Tell me when you're logged in
Then I'll continue with the report download."
If Excel Formula Doesn't Update
"The formula range didn't update automatically. Let's fix it manually:
1. Double-click the total cell
2. Update the range from B50 to B51 (or your last row)
3. Press Enter
4. Verify the new total includes all employees"
If Totals Don't Match
"❌ Totals don't match:
- Summary: [X] hours
- Template: [Y] hours
- Difference: [Z] hours
Check:
1. All employees copied from summary?
2. Any duplicate entries?
3. Formula errors in Total column?
I can help investigate once you identify which employees are missing."
Success Checklist
SOP completion is successful when:
- ✅ All data transferred from WorkSmarter
- ✅ Excel formulas updated correctly
- ✅ Totals verified and match
- ✅ Screenshots saved for audit
- ✅ ClickUp task created
- ✅ Manager notified
- ✅ Token usage stayed under 2,000
Post-Execution
After SOP completion:
- Review audit screenshots in /outputs/
- Verify ClickUp task assigned correctly
- Confirm manager received notification
- Archive WorkSmarter downloads
- Document any errors or edge cases
Integration with Other Skills
Works best with:
- mcp-response-optimization (REQUIRED) - Token management
- concise-execution-mode - Minimal explanations for experienced users
System Requirements
- Windows PC (tested environment)
- Chrome/Edge browser
- Active sessions:
- WorkSmarter
- SharePoint (Ideal Direct Finance folder)
- ClickUp
Definitions
New Starter - Person who has commenced employment with Ideal Direct
Leaver - Person who has ceased employment with Ideal Direct
WorkSmarter - Online HR system for hours, holidays, absences
A4G Payroll Template - Excel file sent to A4G for external payroll processing
Fortnight - Two-week payroll period
Training Recommendations
For new users:
- Run SOP F.4.B once with supervision
- Verify understanding of formula validation
- Practice ClickUp task creation
- Review audit screenshots for completeness
For experienced users:
- Activate concise-execution-mode skill
- Reduce step-by-step explanations
- Focus on validation only
Deployment: Import .zip to Claude Desktop → Settings → Skills
Prerequisites: MCP efficiency skill must be active
Impact: Automates 4 critical finance/supply chain SOPs
Result: Consistent, auditable, error-free SOP execution