Employee Offboarding Access Preflight
Overview
Use this skill to turn HR, identity, SaaS, group, device, and secret-owner exports into a reviewable offboarding access report. The goal is to catch lingering access before a termination, contractor exit, or role-change ticket is closed, while preserving enough evidence for IT, security, HR, or audit reviewers.
Use And Do Not Use
Use for:
- Employee, contractor, intern, vendor, or admin departures.
- Internal transfers where old role-based access must be removed.
- HRIS, IdP, SaaS admin, group membership, device/MDM, password vault, or secrets inventory exports.
- Finding active accounts after departure, privileged roles, non-SSO direct logins, active sessions, MFA/recovery gaps, owned secrets, unreturned devices, and evidence gaps.
- Producing a hold/revoke/verify report before an offboarding ticket is marked complete.
Do not use for:
- Logging into HRIS, IdP, MDM, password vault, or SaaS admin systems.
- Automatically disabling accounts, wiping devices, rotating keys, or changing group membership.
- Employment, legal, or disciplinary decisions. Label findings as access-control risk unless confirmed by the user.
- Storing raw passwords, private keys, full secret values, personal documents, or confidential HR evidence in prompts or fixtures.
Required Inputs
Ask only for missing inputs that materially affect the review:
- Departure roster path with work email, status, termination or transfer date, separation type, role, manager, and risk level when available.
- Account export path with app, email, account status, role, SSO/direct-login status, session and MFA revocation status when available.
- Optional group, device, and secret-owner exports.
- Policy thresholds: immediate termination handling, transfer review window, privileged access tolerance, post-departure verification window.
- Output preference: Markdown report, copied table, or saved file.
Preferred fields:
departures: email,name,employment_status,termination_date,last_working_day,separation_type,role,department,manager,risk_level,disable_by,knowledge_transfer_owner
accounts: app,email,account_status,role,privileged,sso_managed,last_login_date,session_revoked,mfa_revoked,owner,access_type,license_status,notes
groups: system,email,group,privileged,contains_sensitive_data,owner
assets: asset_id,email,asset_type,status,returned_at,wipe_status,contains_sensitive_data
secrets: secret_id,owner_email,system,secret_type,status,privileged,shared,rotated_at
Workflow
1. Preserve The Access-Control Boundary
Before classifying risk, capture:
- Person, employment status, last working date, separation type, manager, and risk level.
- Account status, direct-login/SSO coverage, privileged role, active session, MFA, and last-login evidence.
- Group memberships, shared mailbox or repo ownership, device return/wipe state, and secret/API-key ownership.
- Which reviewer can revoke, rotate, transfer, or document each item.
Do not ask for passwords, private key material, recovery codes, full HR files, or live admin access.
2. Run The Local Preflight
Use explicit paths:
python3 employee-offboarding-access-preflight/scripts/employee_offboarding_access_preflight.py \
--departures /absolute/path/departures.csv \
--accounts /absolute/path/accounts.csv \
--groups /absolute/path/groups.csv \
--assets /absolute/path/assets.csv \
--secrets /absolute/path/secrets.csv
The script accepts CSV or JSON. JSON may be a list of row objects or an object containing departures, accounts, groups, assets, secrets, rows, or items.
3. Classify Findings
Use one primary action:
revoke_now: active account, privileged role, session, MFA, group, or direct login must be revoked before closure.
rotate_or_reassign_secret: secret, token, API key, integration owner, shared credential, or service credential needs rotation or ownership transfer.
recover_or_wipe_device: device, badge, hardware token, or BYOD access remains unreturned or unwiped.
secondary_verification: evidence is incomplete, status is ambiguous, or transfer timing needs human confirmation.
document_complete: supplied evidence shows access was revoked, transferred, or recovered.
Use one risk level:
critical: active privileged access, active non-SSO login, unrevoked session/MFA, active owned secret, or sensitive group remains after departure.
high: active standard account after departure, pending departure within the policy window, unreturned sensitive asset, missing direct-login evidence, or unknown employment status.
medium: ownership transfer, stale membership, inactive account with missing evidence, or non-sensitive asset/documentation gap.
low: complete but needs audit note, reviewer signoff, or post-departure scan.
Never say offboarding is complete while critical or high findings remain unresolved.
4. Produce The Review Report
Return:
## Offboarding Access Decision
[Hold closure / Revocation required / Secondary verification required / Evidence complete]
## Departure Findings
| Risk | Action | Source | Person | System | Evidence | Reviewer next step |
|---|---|---|---|---|---|---|
## Controls Checked
[HR trigger, IdP/account disablement, session/MFA revocation, SSO/direct-login coverage, groups, secrets, devices, ownership transfer]
## Closure Gate
[Items that must be revoked, rotated, recovered, transferred, or evidenced before closure]
## Open Questions
[Only questions that affect access-control safety]
Use templates/offboarding-review.md when the user asks for a reusable IT/security review artifact.
5. Apply Guardrails Before Advising Closure
Do not advise closure until:
- Terminated users have no active account, active privileged role, active group membership, direct-login bypass, unrevoked session, or MFA recovery method in supplied exports.
- Shared credentials, service accounts, API keys, and integration owners are rotated or reassigned.
- Devices, badges, hardware tokens, and BYOD access are returned, wiped, or explicitly exception-approved.
- Internal transfers have old-role access removed or exception-documented.
- Evidence is archived in the ticketing, HR, IdP, or GRC system outside the prompt transcript.
Examples And Acceptance Checks
Positive example: "Use $employee-offboarding-access-preflight on this HR departure roster and Okta, GitHub, Slack, MDM, and vault exports." The skill should run the script, catch lingering privileged access and direct-login accounts, and produce revoke/rotate/recover rows.
Positive transfer example: "Review this engineer-to-PM transfer before the role-change ticket closes." The skill should flag old engineering groups, repo admin roles, production secrets, and ownership transfer gaps.
Negative example: "Disable this person's account for me." Do not modify live systems; produce a review report only.
Boundary example: "I only have an HR roster." Produce a limited closure checklist and explain that account, group, device, and secret checks are unavailable.
Validation
Smoke-test the bundled fixture:
python3 employee-offboarding-access-preflight/scripts/employee_offboarding_access_preflight.py \
--departures employee-offboarding-access-preflight/scripts/fixtures/departures.csv \
--accounts employee-offboarding-access-preflight/scripts/fixtures/accounts.csv \
--groups employee-offboarding-access-preflight/scripts/fixtures/groups.csv \
--assets employee-offboarding-access-preflight/scripts/fixtures/assets.csv \
--secrets employee-offboarding-access-preflight/scripts/fixtures/secrets.csv
Expected result: a Markdown report with Offboarding Access Decision, revoke_now, rotate_or_reassign_secret, shadow_saas_or_direct_login, and privileged_access_after_departure.
1---2name: employee-offboarding-access-preflight3description: Audit employee or contractor offboarding exports for lingering access, privileged roles, direct-login SaaS accounts, active sessions, unreturned assets, and unrotated secrets before a departure or role-change access review is closed. Use when IT, security, HR ops, MSP, founders, or compliance owners need a local-first deprovisioning evidence report without connecting to an IdP, HRIS, MDM, or SaaS admin API.4---56# Employee Offboarding Access Preflight78## Overview910Use this skill to turn HR, identity, SaaS, group, device, and secret-owner exports into a reviewable offboarding access report. The goal is to catch lingering access before a termination, contractor exit, or role-change ticket is closed, while preserving enough evidence for IT, security, HR, or audit reviewers.1112## Use And Do Not Use1314Use for:1516- Employee, contractor, intern, vendor, or admin departures.17- Internal transfers where old role-based access must be removed.18- HRIS, IdP, SaaS admin, group membership, device/MDM, password vault, or secrets inventory exports.19- Finding active accounts after departure, privileged roles, non-SSO direct logins, active sessions, MFA/recovery gaps, owned secrets, unreturned devices, and evidence gaps.20- Producing a hold/revoke/verify report before an offboarding ticket is marked complete.2122Do not use for:2324- Logging into HRIS, IdP, MDM, password vault, or SaaS admin systems.25- Automatically disabling accounts, wiping devices, rotating keys, or changing group membership.26- Employment, legal, or disciplinary decisions. Label findings as access-control risk unless confirmed by the user.27- Storing raw passwords, private keys, full secret values, personal documents, or confidential HR evidence in prompts or fixtures.2829## Required Inputs3031Ask only for missing inputs that materially affect the review:3233- Departure roster path with work email, status, termination or transfer date, separation type, role, manager, and risk level when available.34- Account export path with app, email, account status, role, SSO/direct-login status, session and MFA revocation status when available.35- Optional group, device, and secret-owner exports.36- Policy thresholds: immediate termination handling, transfer review window, privileged access tolerance, post-departure verification window.37- Output preference: Markdown report, copied table, or saved file.3839Preferred fields:4041```csv42departures: email,name,employment_status,termination_date,last_working_day,separation_type,role,department,manager,risk_level,disable_by,knowledge_transfer_owner43accounts: app,email,account_status,role,privileged,sso_managed,last_login_date,session_revoked,mfa_revoked,owner,access_type,license_status,notes44groups: system,email,group,privileged,contains_sensitive_data,owner45assets: asset_id,email,asset_type,status,returned_at,wipe_status,contains_sensitive_data46secrets: secret_id,owner_email,system,secret_type,status,privileged,shared,rotated_at47```4849## Workflow5051### 1. Preserve The Access-Control Boundary5253Before classifying risk, capture:5455- Person, employment status, last working date, separation type, manager, and risk level.56- Account status, direct-login/SSO coverage, privileged role, active session, MFA, and last-login evidence.57- Group memberships, shared mailbox or repo ownership, device return/wipe state, and secret/API-key ownership.58- Which reviewer can revoke, rotate, transfer, or document each item.5960Do not ask for passwords, private key material, recovery codes, full HR files, or live admin access.6162### 2. Run The Local Preflight6364Use explicit paths:6566```bash67python3 employee-offboarding-access-preflight/scripts/employee_offboarding_access_preflight.py \68 --departures /absolute/path/departures.csv \69 --accounts /absolute/path/accounts.csv \70 --groups /absolute/path/groups.csv \71 --assets /absolute/path/assets.csv \72 --secrets /absolute/path/secrets.csv73```7475The script accepts CSV or JSON. JSON may be a list of row objects or an object containing `departures`, `accounts`, `groups`, `assets`, `secrets`, `rows`, or `items`.7677### 3. Classify Findings7879Use one primary action:8081- `revoke_now`: active account, privileged role, session, MFA, group, or direct login must be revoked before closure.82- `rotate_or_reassign_secret`: secret, token, API key, integration owner, shared credential, or service credential needs rotation or ownership transfer.83- `recover_or_wipe_device`: device, badge, hardware token, or BYOD access remains unreturned or unwiped.84- `secondary_verification`: evidence is incomplete, status is ambiguous, or transfer timing needs human confirmation.85- `document_complete`: supplied evidence shows access was revoked, transferred, or recovered.8687Use one risk level:8889- `critical`: active privileged access, active non-SSO login, unrevoked session/MFA, active owned secret, or sensitive group remains after departure.90- `high`: active standard account after departure, pending departure within the policy window, unreturned sensitive asset, missing direct-login evidence, or unknown employment status.91- `medium`: ownership transfer, stale membership, inactive account with missing evidence, or non-sensitive asset/documentation gap.92- `low`: complete but needs audit note, reviewer signoff, or post-departure scan.9394Never say offboarding is complete while `critical` or `high` findings remain unresolved.9596### 4. Produce The Review Report9798Return:99100```markdown101## Offboarding Access Decision102[Hold closure / Revocation required / Secondary verification required / Evidence complete]103104## Departure Findings105| Risk | Action | Source | Person | System | Evidence | Reviewer next step |106|---|---|---|---|---|---|---|107108## Controls Checked109[HR trigger, IdP/account disablement, session/MFA revocation, SSO/direct-login coverage, groups, secrets, devices, ownership transfer]110111## Closure Gate112[Items that must be revoked, rotated, recovered, transferred, or evidenced before closure]113114## Open Questions115[Only questions that affect access-control safety]116```117118Use `templates/offboarding-review.md` when the user asks for a reusable IT/security review artifact.119120### 5. Apply Guardrails Before Advising Closure121122Do not advise closure until:123124- Terminated users have no active account, active privileged role, active group membership, direct-login bypass, unrevoked session, or MFA recovery method in supplied exports.125- Shared credentials, service accounts, API keys, and integration owners are rotated or reassigned.126- Devices, badges, hardware tokens, and BYOD access are returned, wiped, or explicitly exception-approved.127- Internal transfers have old-role access removed or exception-documented.128- Evidence is archived in the ticketing, HR, IdP, or GRC system outside the prompt transcript.129130## Examples And Acceptance Checks131132Positive example: "Use $employee-offboarding-access-preflight on this HR departure roster and Okta, GitHub, Slack, MDM, and vault exports." The skill should run the script, catch lingering privileged access and direct-login accounts, and produce revoke/rotate/recover rows.133134Positive transfer example: "Review this engineer-to-PM transfer before the role-change ticket closes." The skill should flag old engineering groups, repo admin roles, production secrets, and ownership transfer gaps.135136Negative example: "Disable this person's account for me." Do not modify live systems; produce a review report only.137138Boundary example: "I only have an HR roster." Produce a limited closure checklist and explain that account, group, device, and secret checks are unavailable.139140## Validation141142Smoke-test the bundled fixture:143144```bash145python3 employee-offboarding-access-preflight/scripts/employee_offboarding_access_preflight.py \146 --departures employee-offboarding-access-preflight/scripts/fixtures/departures.csv \147 --accounts employee-offboarding-access-preflight/scripts/fixtures/accounts.csv \148 --groups employee-offboarding-access-preflight/scripts/fixtures/groups.csv \149 --assets employee-offboarding-access-preflight/scripts/fixtures/assets.csv \150 --secrets employee-offboarding-access-preflight/scripts/fixtures/secrets.csv151```152153Expected result: a Markdown report with `Offboarding Access Decision`, `revoke_now`, `rotate_or_reassign_secret`, `shadow_saas_or_direct_login`, and `privileged_access_after_departure`.