Turn tables faster without rushing anyone: 10 AI skills for the waitlist
queue-fairness-log
prove the queue ran in order, and delete the names on schedule
How the two work together
Claude thinks it through. Paste the Claude prompt into Claude Code, or drop the folder into your skills folder. Claude does the judgement: what to look for, what is worth doing, what is right.
Codex gets it done. At the hand-off point Claude runs Codex on your machine with one command and passes it the Codex prompt. Codex does the mechanical part and hands the result back. Claude checks it before you see it.
No API key to set up: Claude calls the Codex you already have installed. If Codex is not installed, Claude does that half itself and tells you.
Prompt for Claude
--- name: queue-fairness-log description: Builds the record that proves a waitlist was run in arrival order rather than by who the host liked the look of, while keeping the personal data in it to only what the UK GDPR allows. Logs name, party size, join time and seated time against the order actually seated, flags any seating that jumped the queue with no recorded reason, and sets a retention date so names don't sit in a notebook forever. Use when you want to prove a waitlist was run fairly, and when deciding what to keep about queuing guests and for how long. --- # A waitlist record that proves who went first Give it the people who joined the queue, in order, with party size and seated time. Get back a log showing the order they should have been seated in against the order they actually were, any jump flagged, and a retention date for deleting the names. ## What it does 1. **Log only what running the queue needs.** UK GDPR data minimisation requires data to be "adequate, relevant and limited to what is necessary in relation to the purposes for which they are processed." A name or contact method, party size, and two timestamps is all a fair waitlist needs. 2. **Record join time separately from seated time.** The gap between the two is the entire evidence of fairness, and it only exists if both are kept. 3. **Flag a jump, and require a reason.** A party seated earlier than their join order predicts is a jump; a one-line reason is required. A jump with no reason is the one thing this skill treats as a finding. 4. **Set a retention date before collecting, not after a complaint.** Storage limitation requires data "kept... for no longer than is necessary for the purposes for which the personal data are processed." A waitlist name has done its job once the shift ends. 5. **Keep the aggregate, drop the names.** After the retention date, keep counts (queued, average wait, jump count); the names are not needed for any of that. 6. **Write the log so a stranger could see the order was fair**, or see exactly where it was not. ## Then it checks 1. Every row has only a name/contact, party size, join time and seated time. 2. Join order and seated order are both present and comparable. 3. Every jump has a one-line reason recorded. 4. A retention date is set, and no name sits past it. 5. Aggregate counts can be produced without the names. Any check fails: redo that step once. Failed twice: say what is wrong and stop. ## Rules - Public information only. Never invent a fact, number or quote. Anything sent in someone's name says whose name it is. - Never log more than a name/contact and party size; no notes on appearance or behaviour. - Never let a name sit past its retention date, or record a jump with no reason. - Working document for the owner's data protection adviser to confirm retention and lawful basis. ## Built from - UK GDPR, Article 5(1)(c), legislation.gov.uk/eur/2016/679/article/5, read 4 Nov 2026: step 1. - UK GDPR, Article 5(1)(e), legislation.gov.uk/eur/2016/679/article/5, read 4 Nov 2026: steps 4 and 5.
Prompt for Codex
# queue-fairness-log ## You are given A list of queue or waitlist entries for a service period, each with: a name or contact method, party size, join time, and seated time (or `not seated` if the party left or was never called). The retention period in days, already decided by Claude or the owner. Any reasons already recorded for a party being seated out of join order. ## Produce Write into a `./queue-fairness-log-output/` folder: 1. `queue-log.csv` with columns: `row_ref`, `name_or_contact`, `party_size`, `join_time`, `seated_time`, `outcome`. `row_ref` is Q0001 upward. `outcome` is exactly one of `seated`, `left before seated`, `never called`. No other field about the guest is recorded in this file. 2. `order-check.csv` with columns: `row_ref`, `join_order_position`, `seated_order_position`, `positions_jumped`, `reason_recorded`, `reason_text`. `join_order_position` and `seated_order_position` are both ranked 1 upward by time within the same service period. `positions_jumped` is `join_order_position` minus `seated_order_position`; a positive number means the party was seated earlier than their join order would predict. `reason_recorded` is `yes` or `no`. 3. `retention.csv` with columns: `row_ref`, `join_time`, `retention_period_days`, `delete_on_date`, `name_still_present`. `delete_on_date` is `join_time` plus `retention_period_days`. `name_still_present` is `yes` or `no`, checked against today's date. 4. `aggregate-summary.csv` with columns: `service_period`, `total_queued`, `total_seated`, `total_left_before_seated`, `average_wait_minutes`, `jump_count`, `jump_count_with_reason`, `jump_count_without_reason`. This file contains no names and can be kept after the retention date. 5. `gaps.md` - a numbered list of: any row with `positions_jumped` greater than zero and `reason_recorded` of `no`; any row past its `delete_on_date` with `name_still_present` of `yes`; any row logging more than name or contact, party size, and the two timestamps; any row with a missing join or seated time where the outcome is `seated`. ## Rules - Codex counts, ranks and records. It never decides the retention period, never writes a reason for a jump, and never adds a field about a guest beyond what it was given. - Positions and jumps are calculated exactly from the supplied timestamps, never estimated. - Never carry a name into `aggregate-summary.csv`. - Use British English and DD Month YYYY dates. No em dashes in any file you write; flag any supplied text containing one in `gaps.md`. - Every file ends with this line: this is a working document prepared for the owner to check against their own data protection policy, and for their data protection adviser to confirm retention periods and lawful basis. It is not legal advice. ## Return The absolute path of each file written and the row count of each CSV. The total queued, seated, and left-before-seated counts. The jump count, with and without a recorded reason, and the row references of any jump with no reason. The number of rows past their retention date with a name still present. The `gaps.md` item count.
Built from the best public work on this
Sources for queue-fairness-log
Everything below was opened and read on 4 November 2026.
1. Regulation (EU) 2016/679 (UK GDPR), Article 5(1)(c)
https://www.legislation.gov.uk/eur/2016/679/article/5, as it forms part of UK domestic law, read 4 November 2026.
Article 5(1)(c) requires personal data to be "adequate, relevant and limited to what is necessary in relation to the purposes for which they are processed", and labels this "('data minimisation')". The principle sets the ceiling on what a queue record may hold: whatever the stated purpose is (running a fair waitlist), the data collected has to be judged against that purpose specifically, not against what might be generally useful to know about a guest.
Used in step 1: the queue log holds a name or contact method, party size and two timestamps, because that is what proving fair order actually needs, and nothing else is collected.
Where the skill departs: Article 5(1)(c) is one of seven principles in Article 5(1); the skill draws on only this one and storage limitation (source 2), because the others (lawfulness, accuracy, integrity, accountability) are general data protection duties that apply to every system in the business, not specific to a waitlist.
2. Regulation (EU) 2016/679 (UK GDPR), Article 5(1)(e)
https://www.legislation.gov.uk/eur/2016/679/article/5, as it forms part of UK domestic law, read 4 November 2026.
Article 5(1)(e) requires personal data to be "kept in a form which permits identification of data subjects for no longer than is necessary for the purposes for which the personal data are processed", labelled "('storage limitation')", with an exception for data processed "solely for archiving purposes in the public interest, scientific or historical research purposes or statistical purposes."
Used in steps 4 and 5: the retention date is set at the point the log is created, not after a complaint, and the aggregate counts are kept separately from the names so that the operationally useful numbers survive deletion of the names that no longer serve a purpose.
Where the skill departs: the Article itself does not state a specific number of days; it is the business's own stated purpose that fixes how long a waitlist name is "necessary". The skill requires a retention period to be chosen and recorded, rather than proposing a single number as if the law fixed one, because it does not.
Best public prompt we found for this job
The closest public artefact is the `crm-hygiene-check` skill in Anthropic's `knowledge-work-plugins` repository, raw source at https://raw.githubusercontent.com/anthropics/knowledge-work-plugins/main/sales/skills/crm-hygiene-check/SKILL.md. The repository has 34,655 stars, read from api.github.com on 4 November 2026. It is a sales-record audit skill, not a waitlist or data protection skill, but the job has the same shape: look at a list of records and produce a fix list of what is wrong with them, without touching the records yourself.
The useful part is its read-only discipline: it states plainly, "Audit open opportunities for data quality issues and produce a copy-paste fix list," and "This skill only reads; fixes hand off to update-opportunity." We took that separation directly: `queue-fairness-log` only records and flags, it never decides a jump reason or a retention period itself, those come from the owner, in the same way `crm-hygiene-check` never edits the CRM record it is auditing.
We did not copy two things. `crm-hygiene-check` is checking records a salesperson is expected to keep indefinitely as a business asset; a waitlist name has a UK GDPR storage limitation clock running on it that a CRM opportunity record does not, and this skill is built around that clock in a way the public prompt has no equivalent for. And `crm-hygiene-check` flags missing or stale fields as the thing to fix; this skill's central finding is not a missing field but a timing mismatch between two timestamps, which needed the order-check logic built fresh rather than adapted from a hygiene audit.
Want this running in your business?
I optimise how businesses run — your sales, your visibility, your social media — and build bespoke software where nothing off the shelf fits. The first conversation is free. Work starts from £150 a day.
Foxera