Files
Rpa_Skills/skills/rpa-bot-handoff/SKILL.md
T
VasanthandClaude Opus 5.5 717f2c40c5 rpa-bot-handoff: fit the SOP in 4 real pages
The first SOP (MEK Charge Reconciliation, 1,327 words) printed on 5 pages:
Word's 2.5 cm default margins and 10.5 pt table text. to_docx.py now uses
1.8/1.6 cm margins and 9.5 pt table text; the trimmed SOP (1,226 words)
prints on 3 pages. The verify step counts real pages through Word when it
is installed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 17:02:20 +05:30

76 lines
7.0 KiB
Markdown

---
name: rpa-bot-handoff
description: Writes a short Handover SOP for an RPA bot that is being handed over to an ops/support team - "<Project Name> Handover SOP", at most 4 pages, as Markdown and Word. Scans the bot's code with a subagent (never runs it) and writes, in the operator's order - how to run it (which URL or shortcut, what to click), what shows where once it runs, where the result is and what it means, how a problem shows and what to do, and how to email the dev team about it. Every label, message and wait is copied from the code. Use when the user asks to "hand over a bot", "document a bot for ops", "write a handover doc", "handover SOP", "ops guide", "runbook", "support doc", "operator guide" or "how ops should handle bot errors" for an RPA or automation project.
---
# RPA bot handoff
Write one document in the bot's repo: **`<Project Name> Handover SOP`**, as `HANDOVER-SOP.md` and `<Project Name> Handover SOP.docx`. The docx is what ops gets.
The reader is an **operator who does not read code**. The SOP answers only what they ask, in this order:
1. How do I run it? Which URL or shortcut, what do I click.
2. What shows where once it runs?
3. Where is the result, and what does it mean?
4. Something went wrong: how does it show, and what do I do?
5. How do I email the dev team about it?
| File | What it is |
|---|---|
| `templates/HANDOVER-SOP.md` | The SOP skeleton: 5 sections. Keep their order. |
| `templates/failure-classes.md` | 12 failure classes from Tebra Auto Post. A scan checklist so no problem type is missed. |
| `templates/reference/tebra-auto-post.md` | A filled example for Tebra, scrubbed. Copy its length and wording, not its content. |
| `templates/to_docx.py` | Turns the finished SOP into the Word file and prints the word count. Needs `python-docx`. |
## Rules
- **Short.** At most 4 pages, which is about 1,400 words including tables. A small bot fits in 2. Never pad: a section with nothing to say gets one line.
- **Accurate.** Copy every URL, button label, lane or column name, status and message **exactly** from the code or the screen. Never paraphrase a message the operator will search for. When the code builds a message from parts, write it with the variable parts in italics: "Couldn't download *Location* from *Portal*".
- **Every wait is a number** from the code, in seconds or minutes. Write "not measured" for a normal duration the logs don't show.
- **Write what the code does.** If the screen misleads (green or "Finished" while something failed), say so in one line where it shows.
- **The operator's words only.** No file:line, function names, SQL, env var names or log internals in the SOP.
- **Never run the bot.** Read code, config, logs and history only.
- **Never copy** patient data, customer or client names, credentials, internal IPs, keys or `.env` values into the SOP.
- **Re-runs:** always say what clicking Run (or starting the bot) again does to the data: does it start from the current data, and does it delete or overwrite the previous results.
## 1. Scan (one subagent, required)
Start one read-only subagent. Tell it: never run the bot, no PHI, client names, credentials or IPs in the report, file:line refs, under 1200 words. Ask it for:
1. **Start:** the URL, shortcut or command ops uses, the sign-in screen, and the exact button that starts a run. What clicking it again does to the previous data and results.
2. **Screen while running:** every area, lane, list or column that changes during a run, its exact label and the texts it shows, in order.
3. **Waits:** every timeout and retry count, in seconds, with its step. What the bot does when it runs out.
4. **Result:** how a run ends on screen (texts, colours), where the result or report is, its name, sheets or columns, and every per-item status with its meaning.
5. **Problems:** every message the operator can see (exact text, where it shows, colour), what triggers it, whether the bot retries, what happens next. Include sign-in and connection messages.
6. **Alerts and stopping:** any email, popup or sound on failure (or none), whether there is a Stop button, and anything ops must not do while it runs.
While it runs, read `templates/failure-classes.md` and `templates/reference/tebra-auto-post.md`. Check the subagent's report against the 12 classes; ask it a follow-up for any class it skipped.
## 2. Ask once (one message, at most 2 questions)
1. **Email:** which email group ops writes to (the address, never a personal phone number), and how fast they get an answer.
2. **Where ops runs it:** the URL or machine, when the code allows more than one.
Skip a question the user already answered. Default the rest: title from the project name, today's date, version from the project's version string.
## 3. Write `HANDOVER-SOP.md`
Copy `templates/HANDOVER-SOP.md` to the bot's repo root and fill every `{{PLACEHOLDER}}`:
1. **How to run:** the URL or shortcut, then numbered steps with the real labels. Then 2 to 4 "before you click" bullets, including what a new click does to the previous results.
2. **What you see while it runs:** a table, one row per area of the screen, in screen order: where, what it shows. Then the normal sequence in 3 to 5 numbered lines. Then the waits table: step, the bot waits at most, then. End with when the operator steps in.
3. **Result:** how a good run ends; how a run that needs a look ends (call out misleading greens). Then where the result is, and a small table of the per-item statuses: status, meaning, what you do.
4. **When something goes wrong:** where problems show and how (colour, list, column). Then one table row per message, numbered `E01`, `E02`...: message (exact), what it means, what you do. Put "check X **before** re-running" in bold. Say "email us" in the row when the operator can't fix it. Then the don'ts in at most 4 bullets, and the one right way to stop the bot.
5. **Email us:** the address and response time, when to email, the subject line and the email body to copy, what to attach, and what never to send (passwords, patient or client data, the result files when they hold patient data).
## 4. Verify
1. Every message and status in the subagent's report is in section 3 or 4.
2. Search the code for each quoted message, label and URL. Each must exist exactly, or be built by the code from the parts shown in italics.
3. No file:line, function names, env var names, client names, PHI, credentials or IPs.
4. Run `python <skill>/templates/to_docx.py HANDOVER-SOP.md -o "<Project Name> Handover SOP.docx"`. If it reports more than 1,400 words, cut: merge rows, drop explanations, never drop a message.
5. Open the docx with python-docx: 5 numbered section headings, no `**` or `|---` left.
6. When Word is installed, count the real pages (PowerShell: open it with `Word.Application`, read `ComputeStatistics(2)`). More than 4: cut words, then rebuild.
## 5. Hand over
Give the user the path to `<Project Name> Handover SOP.docx`: "Give this to the ops team." Then, in the chat only, list in at most 5 lines the problems the scan found that the dev team should fix (misleading statuses, silent failures, no alerts). They are not part of the SOP.