Automate Ideal Direct finance and supply chain SOPs with browser-based workflow guidance. Handles payroll, working hours, purchase orders, and audits using Playwright MCP.
Scanned 2/12/2026
Install via CLI
openskills install majiayu000/claude-skill-registry---
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:**
```javascript
// Navigate to WorkSmarter
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:**
```javascript
// Open SharePoint payroll template
browser_navigate("https://idealdirectuk.sharepoint.com/:x:/s/IdealDirectFinance/EUYMq4IOBGhEvkrT_4njTiwBVdMlgLbi0zaascp_Z0nKnw?e=KRWmZd")
// Wait for Excel Online to load
browser_wait_for({ text: "Ideal Direct Limited - Fortnightly Payroll Template" })
```
**User Instructions:**
1. Save as new copy
2. Rename for current fortnight (e.g., "Fortnight 8")
3. 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:**
```javascript
// User provides leaver name (e.g., "Roy Keane")
// Search for employee in template
browser_click({ element: "Search box", ref: "employee_search" })
browser_type("Roy Keane")
// Navigate to Starter/Leaver field
browser_click({ element: "Starter/Leaver dropdown", ref: "status_dropdown" })
browser_select_option({ values: ["Leaver"] })
// Input leave date
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:**
```javascript
browser_take_screenshot({ path: "/outputs/leaver_updated.png" })
```
### Step 4: Add New Starter
**Action:** Insert new row and populate starter information
**Playwright Automation:**
```javascript
// Find last employee row
browser_click({ element: "Last employee row", ref: "last_row" })
// Insert new row
browser_click("Insert row below")
// Copy last employee format
browser_click("Copy row format")
// Input new starter details
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:**
```javascript
// Click total row at bottom
browser_click({ element: "Total hours cell", ref: "total_cell" })
// Verify formula includes new row
const formula = browser_evaluate("document.activeElement.value")
// Expected: =SUM(B2:B51) after adding Juan
// Check each total column
const columns_to_check = ["Hours", "Gross Pay", "Deductions"]
for (const col of columns_to_check) {
browser_click({ element: `${col} total`, ref: `${col}_total` })
// Verify formula range
}
```
**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:**
```javascript
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:**
```javascript
// Save Excel template
browser_click("File → Save As")
// Open ClickUp
browser_navigate("https://app.clickup.com")
browser_click("New Task")
// Create review 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:**
```javascript
// Download approved hours
browser_navigate("https://worksmarter.com/reports/hours")
browser_click("Approved Hours")
browser_click("Download")
// Download holidays
browser_navigate("https://worksmarter.com/reports/holidays")
browser_click("Download")
// Download absences (if applicable)
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:**
```javascript
// Open new Excel workbook in SharePoint
browser_navigate("sharepoint_working_hours_location")
browser_click("New → Excel Workbook")
// Create tabs
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 pastes data from downloads into respective tabs
```
**User Instructions:**
1. Open downloaded Hours report
2. Copy data to "Hours" tab
3. Open downloaded Holidays report
4. Copy data to "Holidays" tab
5. 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:**
```javascript
// Navigate to Summary tab
browser_click({ element: "Summary tab", ref: "summary_tab" })
// Create Total column header
browser_click("Cell C1")
browser_type("Total (Hours + Holidays)")
// Add formula for first employee
browser_click("Cell C2")
browser_type("=Hours!B2+Holidays!B2")
// Copy formula down for all employees
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:**
```javascript
// Open previous week's A4G template
browser_navigate("sharepoint_a4g_template_location")
// Navigate to "Hours worked in pay period" column
browser_click({ element: "Column B header", ref: "hours_column" })
// User overwrites with new data from summary
```
**User Instructions:**
1. Copy Total column from summary sheet
2. Paste into "Hours worked in pay period" column (Column B) in A4G template
3. Verify totals match at bottom of template
**Validation:**
```javascript
// Compare summary total to template total
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:**
```javascript
// Save template
browser_click("File → Save")
// Take screenshot of totals for audit
browser_take_screenshot({ path: "/outputs/hours_summary_totals.png" })
// Create ClickUp task
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
```javascript
// ❌ NEVER:
const page_html = browser_snapshot() // 50,000+ tokens
// ✅ ALWAYS:
browser_click({ element: "Employee name field", ref: "A45" })
// Returns: "Clicked cell A45" (10 tokens)
```
### Rule 2: Screenshots Save Only, Never Display
```javascript
// ❌ NEVER:
const screenshot = browser_take_screenshot()
// Returns base64 image = 125,000+ tokens
// ✅ ALWAYS:
browser_take_screenshot({ path: "/outputs/audit.png" })
// Returns: "Screenshot saved: /outputs/audit.png" (20 tokens)
```
### Rule 3: Target Specific Elements
```javascript
// ✅ Good - specific cell reference
browser_type("£12.50", { element: "Hourly rate", ref: "B45" })
// ❌ Bad - full table query
const table = browser_locator("table").innerHTML()
// 10,000+ tokens
```
### Rule 4: Limit Data Extraction
```javascript
// Only extract what you need to validate
const employee_count = browser_locator(".employee-row").count()
console.log(`Found ${employee_count} employees`)
// DON'T extract full employee list
```
### Rule 5: Save Large Responses to Files
```javascript
// If WorkSmarter returns large report
const report = browser_locator(".report-data").textContent()
// Save, don't display
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:
1. ✅ MCP efficiency skill active?
2. ✅ User logged into WorkSmarter?
3. ✅ SharePoint access available?
4. ✅ ClickUp account accessible?
5. ✅ 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:
1. Review audit screenshots in /outputs/
2. Verify ClickUp task assigned correctly
3. Confirm manager received notification
4. Archive WorkSmarter downloads
5. 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:
1. Run SOP F.4.B once with supervision
2. Verify understanding of formula validation
3. Practice ClickUp task creation
4. 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
No comments yet. Be the first to comment!