Skip to content
Back to skills

Ideal Direct Sop Assistant

ASecurity

Automate Ideal Direct finance and supply chain SOPs with browser-based workflow guidance. Handles payroll, working hours, purchase orders, and audits using Playwright MCP.

  • 666 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added February 9, 2026
businessjavascriptgojava

Works with

  • claude desktop
  • cli
  • mcp

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill ideal-direct-sop-assistant --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ideal Direct Sop Assistant?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ideal Direct Sop Assistant
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-ideal-direct-sop-assistant/badge)](https://www.skillsdirectory.com/skills/majiayu000-ideal-direct-sop-assistant)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.