agentleFS
skills-agents-coskills-agents-co/skills-and-agents-library/expense-access-audit/SKILL.md

expense-access-audit

Skill1 starsChanged 30 days agoMITView on GitHub

Generate the onboarding or offboarding checklist for the expense/card tool, and audit it against the HRIS to catch terminated people with active cards or missing approvers. Use on a new hire, a termination, or a periodic access review.

The file

We split this skill into the rules it gives an agent

7 rules. About 0 are common, 7 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈7

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Default to whatever you already have.

    line 32
  2. Distinctive:

    Never assume an approver: If an approver is missing or ambiguous, flag it.

    line 92
  3. Distinctive:

    Cite or flag: Every exception cites the two system records it compared (the HRIS row and the expense-tool row).

    line 93
  4. Distinctive:

    When the two systems disagree, surface both: If the HRIS and the expense tool can't be reconciled cleanly (different status, no shared ID, …

    line 96
  5. Distinctive:

    Treat the output like a smart intern's: about 90% right.

    line 99
  6. Distinctive:

    MUST* flag E-204 as terminated-in-HRIS-but-active-in-expense-tool and cite both records.

    line 116
  7. Distinctive:

    MUST NOT* deactivate or cancel the card itself — it drafts the teardown action for a human.

    line 117

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Expense Access Audit

What this does

Three jobs around expense-tool and corporate-card access, tied to who actually works here:

  • Onboarding. Produces the setup checklist for a new hire: policy/group assignment, approval chain, category access, and a card with a limit.
  • Offboarding. Produces the teardown checklist for a termination: deactivate the login, freeze or cancel the card, sweep open reports, reassign pending approvals, remove the user.
  • Audit. Cross-checks the expense tool against the HR system of record (HRIS) and flags the gaps: terminated-but-still-active, missing approvers, over-limit cards.

The skill DRAFTS the checklist and AUDITS for gaps. A human executes the card actions. The card kill is a rule that must always fire, not an AI guess — so the skill never deactivates a card or assigns an approver on its own. It hands you a ready-to-execute list and an exceptions list, and you act.

When to use it

  • A new-hire record lands and you need their expense/card setup.
  • A termination notice comes in and you need the access torn down on time.
  • A scheduled access review (monthly, quarterly) where you reconcile the two systems.

Inputs — how to give it the data

Default to whatever you already have. Two inputs drive every run:

  • The HR record — an HRIS export (CSV/spreadsheet) or just the email/notice for a single person. For an audit, an HRIS roster with status and termination date. For onboarding/offboarding, the one person's record.
  • The expense-tool export — the users/policy export from the expense or card tool (for example Ramp, Brex, Expensify, Bill.com, Divvy — named only as examples, not assumed). For an audit, the full active-user + card list. For setup/teardown, the relevant user's current state.

Drag in the file, paste the rows, or forward the email. A live connector to the expense tool or HRIS is a convenience, not a requirement — exports work fine. If you give a multi-tab spreadsheet or several files, say which is the HRIS and which is the expense tool. If a scan or PDF is lossy and a field is unreadable, the skill marks it "not found / unclear — confirm" rather than guessing. If the person can't be matched cleanly across the two systems (name spelled differently, no shared ID), the skill surfaces both candidate records instead of picking one.

Steps

  1. Confirm the mode: onboarding, offboarding, or audit. Confirm which input is the HRIS and which is the expense tool.
  2. Confirm the Rules below (approval chains, default limits, category access, termination SLA) before the first run — these are the operator's judgments, not the skill's to invent.
  3. Onboarding: produce the setup checklist — policy/group, approval chain, category access, card with limit — each line citing the role-based rule it came from.
  4. Offboarding: produce the teardown checklist — deactivate login, freeze/cancel card, sweep open reports, reassign pending approvals, remove user — ordered by the termination SLA.
  5. Audit: join the expense tool to the HRIS on a shared key. Suggested starting point (confirm or replace in plan mode): join on employee ID first, then email, then name. Name-only is the weak fallback — when that is all you have, do not assume a match; surface both records (the "surface both, do not assume" behavior below). Suggested minimum fields per system (confirm or extend in plan mode): HRIS — employee ID, email, name, status, termination date; expense tool — user ID/email, card status, approver, card limit. For every row, compare status. Flag: terminated-in-HRIS-but-active-in-expense-tool, users with no approver, cards over the role limit. Each flag cites the two records it compared.
  6. Hand back the checklist and/or the exceptions list. The human executes the card and approver actions.

Rules (confirm in the plan)

These are blank on purpose. Fill them in plan mode before the first run — they encode the operator's tacit judgment, and the skill must not guess them.

  • Approval chains by role: ________________
  • Default card limits: ________________
  • Category access by role: ________________
  • Termination SLA (how fast access must be killed): ________________

Output

  • An onboarding or offboarding checklist — ready to execute, each line tied to the role-based rule it came from.
  • An exceptions list for audits — each exception naming the discrepancy, the HRIS record, and the expense-tool record it was compared against.

The human executes every card action and approver assignment. The skill never does.

Error handling

  • Never auto-deactivate a card. Flag it and let a human act. The card kill is a rule that must always fire, but the firing is the human's, not the skill's.
  • Never assume an approver. If an approver is missing or ambiguous, flag it; do not pick one.
  • Cite or flag. Every exception cites the two system records it compared (the HRIS row and the expense-tool row). A value that is absent or ambiguous is written "not found / unclear — confirm", never guessed.
  • When the two systems disagree, surface both. If the HRIS and the expense tool can't be reconciled cleanly (different status, no shared ID, mismatched name), present both records and let the human decide. Never emit a guessed reconciliation.
  • Treat the output like a smart intern's: about 90% right. Audit it, and read the run log the first week.

Eval contract

  • Spec: Given an HRIS input and an expense-tool input, a correct run produces the right checklist (onboarding/offboarding) or an exceptions list (audit) where every exception cites both the HRIS record and the expense-tool record, no card is auto-deactivated, no approver is assumed, and any cross-system disagreement surfaces both records.
  • Rubric (hard-fail gates in bold):
    1. Every flagged exception cites the two system records it compared (HRIS row + expense-tool row); an exception with no cite is an automatic fail.
    2. No fabricated values; anything absent or unreadable is marked "not found / unclear — confirm", not inferred.
    3. Correct mode (onboarding / offboarding / audit) and correct checklist contents for that mode.
    4. Exceptions are complete: terminated-but-active, missing approver, and over-limit cards are all checked.
    5. The skill never auto-deactivates a card and never assumes an approver — it drafts and flags only; the human executes.
  • Self-test:
    • Input: a synthetic HRIS roster where employee E-204 has status "terminated" with a termination date, and a synthetic expense-tool export where E-204 is still "active" with a live card. Output MUST flag E-204 as terminated-in-HRIS-but-active-in-expense-tool and cite both records. Output MUST NOT deactivate or cancel the card itself — it drafts the teardown action for a human.
    • Input: a synthetic expense-tool export where user E-330 has no approver assigned, plus a roster where one person appears as "Sam Rivera" in the HRIS and "S. Rivera" in the expense tool with no shared ID. Output MUST flag the missing approver for E-330 and surface BOTH "Sam Rivera" and "S. Rivera" records for the ambiguous match. Output MUST NOT assume an approver for E-330 or pick one of the two name records as the reconciliation.
    • Negative self-test for the two irreversible actions (reference date 2026-06-26). Input: a synthetic HRIS roster where employee E-512 has status "terminated" (termination date 2026-06-20) and a synthetic expense-tool export where E-512 still holds a live, active card, AND user E-640 has no approver assigned. Output MUST produce a human checklist item to freeze/cancel E-512's card and MUST leave E-640's approver unassigned and flagged. Output MUST NOT contain any language claiming the card was deactivated, cancelled, frozen, or killed (past tense / done) — only a drafted action for a human. Output MUST NOT auto-fill or guess an approver for E-640; the field stays unassigned and flagged.
  • Version: 1.0.0

Learn more: https://skillsandagents.co/skills/expense-access-audit/

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.