- Section 5 of the SOP now names a real "To" (the developer) and "CC"
(the developer's manager, not the operator's), and the email block to
copy starts with To: and CC: lines. The skill asks for both addresses.
- to_docx.py --pdf also writes the PDF (Word through PowerShell on Windows,
LibreOffice elsewhere) and prints the real page count against MAX_PAGES.
The PDF is what ops gets.
- Tebra reference and README updated; new test for the To/CC lines.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The first real handover (MEK Charge Reconciliation) came out at 9 pages.
Ops want it short: which URL to open and what to click, what shows where
after the click, what to do when an exception comes, and how to email us.
- Output is "<Project Name> Handover SOP" (HANDOVER-SOP.md + .docx) with
5 sections: how to run, what you see while it runs, result, when
something goes wrong, email us. HANDOVER-DEV.md is dropped; dev-team
findings go in the chat.
- At most ~1,400 words; to_docx.py prints the word count and flags overflow,
and renders *italic* for the variable parts of messages.
- Every quoted message, label and URL is checked against the code. The SOP
must say what clicking Run again does to the data.
- One scan subagent; failure classes stay as a scan checklist.
- Tebra reference rewritten in the SOP format; test, README, glossary
updated; ADR-0005 supersedes ADR-0004.
The handoff eval runner (tests/evals/run_handoff_eval.py) still grades an
older 13-section format and was already out of date; not touched here.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
New last step: templates/to_docx.py turns the finished HANDOVER.md into a
Word document (python-docx), the skill checks it and gives that path to
the user as the deliverable. --selfcheck converts the Tebra example and
is run by tests/test_templates.py.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The skill scans a bot with subagents (never runs it) and writes
HANDOVER.md, an 11-section ops guide in the operator's order: where is
what, how to run, how long to wait, after the run, how to see an
exception, exception list, how you will know, how to tell us, don'ts,
issues seen before. Dev material (check against 12 failure classes from
Tebra Auto Post, gaps with file:line, incidents) goes to HANDOVER-DEV.md.
Also adds ADR-0004, glossary terms, five fixture bots and a handoff eval
runner (--resume, --regrade) with results from 47 runs of the earlier
13-section version. The grader still expects that structure and must be
updated before the next eval run.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AI description trimmed to 754 chars (test: both stay <= 1024). Both SKILL.md files say templates/ (and <no-ai>) resolve against the skill's own folder, skills side by side; no-AI commands use <skill>/templates/. AI step 5 names the App.tsx/RunPanel.tsx markers and no longer remembers the model per user.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- rpa-dashboard-ai/SKILL.md: trigger description and the shared question flow;
points at the no-AI frontend.md, themes and palette instead of copying them.
- templates/contract.md: runs, review rows, endpoints and the server approve gate.
- Superbill extracts: patient names and the client name removed, every file
carries an EXAMPLE ONLY banner. tests/test_reference_scan.py checks both skills
for patient data, internal IPs, credentials and keys.
- tests/fixtures/d-ai-extraction and its eval entry, which runs page_check_ai
on the built folder.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- templates/bot_runner.py (new, no Qt): runs the bot as a child process
(unbuffered, UTF-8), tails its output, keeps raw lines in bot_raw.log,
and turns lines into step/log/status events. Step markers and friendly
rules use specific substrings, first match wins; unmatched error lines
are always shown, other unmatched lines hidden. Dry run:
python dashboard/bot_runner.py prints the events the page would get.
- bridge.py: delegates to bot_runner, one run at a time, restores the
saved dark mode on every page load (fixes sample-data mode in PyQt),
adds load_latest_report / download_report slots the page calls.
- SKILL.md: skip the stack question for a PyQt project; desktop wiring
steps from the bot's real output; verify steps for the host.
- tests: assert-based self-check for the line logic and run loop; Seam 1
run replay (status dot, Run button, steps, log) and wired-page mode;
fixture b-pyqt-bot and its Seam 2 eval (all 14 checks pass).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- rpa-dashboard-no-ai/SKILL.md: trigger description and the workflow in spec
order (scan, report/keep-or-restyle, colours, stack, sections, build, wire,
verify).
- templates/themes.md: Tebra Sky and Superbill Ember, light and dark blocks.
- templates/palette.py: derives a custom palette from one brand hex and
checks text contrast in light and dark.
- dashboard.html: built-in sample data so a page with no bot works on first
open; cleared batches in the donut; component tokens so Ember is a
token-only swap; accessible names for KPI cards, nav, steps, log, search
and the dark toggle.
- bridge.py: placeholders inside string literals, so it passes the lint hook
unfilled.
- tests/page_check: Seam 1 harness (fake Qt bridge, light/dark/narrow).
- tests/evals: Seam 2 runner and fixture a-empty.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>