31 Commits
Author SHA1 Message Date
VasanthandClaude Sonnet 5.5 653b39abfa read-trans: Tanglish explainer for YouTube transcripts, with eval
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-30 12:51:31 +05:30
VasanthandClaude Opus 5.5 1b0f83a4ad rpa-bot-handoff: drop to_docx.py, Claude builds the PDF itself
SKILL.md step 4 now tells Claude to render the SOP as one styled HTML page
(A4, 1.8 cm margins, 10.5 pt sans, bordered tables with a shaded header,
grey email box) and print it with headless Chrome or Edge, then look at
every page. The skill is one 54-line SKILL.md. Tests updated; the docx
selfcheck test is removed with the converter.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 17:45:47 +05:30
VasanthandClaude Opus 5.5 b35796e1a5 rpa-bot-handoff: one 54-line SKILL.md, no reference or template files
The skill is now one SKILL.md (54 lines) with the SOP shape inline, plus
templates/to_docx.py for the Word and PDF. Removed: the template, the MEK
reference example and the skill README. The converter's selfcheck uses a
built-in sample. Tests now check the skill is that one short file, has the
6 don't-miss checks, and its SOP shape has the 5 sections and To/CC lines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 17:38:34 +05:30
VasanthandClaude Opus 5.5 36e621b153 rpa-bot-handoff: short skill, MEK SOP as the model
The skill itself read as too detailed. SKILL.md is now a short checklist
(460 words, was 1,321): 5 steps, 5 rules, and 6 one-line "don't miss"
checks that replace the 12 Tebra failure classes (failure-classes.md
removed). The MEK Charge Reconciliation SOP - the 3-page PDF ops liked -
replaces the Tebra example as the model (emails swapped for examples).
New test keeps SKILL.md under 500 words with 6 checks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 17:28:23 +05:30
VasanthandClaude Opus 5.5 0188de7403 rpa-bot-handoff: email To the developer with their manager in CC, and hand ops a PDF
- 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>
2026-10-28 17:07:30 +05:30
VasanthandClaude Opus 5.5 ff2f7fcd4a rpa-bot-handoff: one short Handover SOP (max 4 pages) instead of the 11-section guide
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>
2026-10-28 16:57:48 +05:30
VasanthandClaude Opus 5.5 f4c42f2956 rpa-bot-handoff: end with HANDOVER.docx for the ops team
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>
2026-10-28 15:01:42 +05:30
VasanthandClaude Opus 5.5 3942fad6cd Add rpa-bot-handoff skill: ops guide for bot handover
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>
2026-10-28 15:01:42 +05:30
VasanthandClaude Sonnet 5.5 d95e5d452d Move all three skills into skills/; add root README; fix paths
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 17:04:38 +05:30
VasanthandClaude Sonnet 5.5 312742cfef Eval results for tickets 04-07; grader ignores bot-run skips; resolve tickets 01-07
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-16 16:56:16 +05:30
VasanthandClaude Opus 5.5 258bfbb500 Add rpa-run-tab skill: Tebra-style Run tab in 5 minutes
The Run tab from Tebra Auto Post, scrubbed and themable (Tebra Sky, TVL Teal,
or a custom hex checked for contrast). The skill wires the real bot through
tagged log-file lines and checks itself with a fake bot (complete, partial,
stuck, crash) plus light and dark screenshots. Grill decisions R1-R14 are in
PLAN.md, terms in GLOSSARY.md, and ADRs 0001-0003.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 16:29:18 +05:30
VasanthandClaude Opus 5.5 8bb1cf268e SKILL.md: shorter AI description, skill-relative template paths, marker pointers
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>
2026-10-16 15:59:00 +05:30
VasanthandClaude Opus 5.5 461798127a AI sections fall back to fetch with no Qt bridge, for non-React web frontends
ai_sections.html fetches {API_BASE}+path when window.qt is absent; a page-check case routes those requests to server_stub.dispatch(). AI SKILL.md step 6 and frontend.md send plain-HTML/Vue/Angular/Svelte projects to it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:55:30 +05:30
VasanthandClaude Opus 5.5 344718007e Share page-check helpers in tests/page_check_common.py
MODES, TEST_FILL, FAKE_BRIDGE, the stub loader, the page opener and the no-AI case list now live in one place; sample_data and push move to tests/conftest.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:52:35 +05:30
VasanthandClaude Opus 5.5 7ad73c1fda Check page band legends against bands.py; amber is verified, not sampled
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:52:26 +05:30
VasanthandClaude Opus 5.5 61f7896442 AI desktop page: strip unpicked optional sections like the skill does
The merged AI desktop page check filled the no-AI template directly and hit
{{CHECKPOINTS_JSON}}. It now runs sections.py with none picked first. No-AI step 6
names the sections.py run, and the AI skill says how its desktop and web paths get
the checkpoint, admin and login sections.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:39:53 +05:30
VasanthandClaude Opus 5.5 73adc74637 Merge integration/rpa-dashboard-skills (d89dce3) into ticket 04
Brings in tickets 05-07 (AI skill, cost page, AI desktop sections). tests/README.md
keeps both the optional-section notes and the AI page-check notes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:35:44 +05:30
VasanthandClaude Opus 5.5 d89dce3c33 AI desktop path: plain-HTML Review and Cost tabs over the Qt bridge, gate in Python
ai_sections.html pastes into the no-AI dashboard.html; ai_bridge.py adds one
ai_request slot that hands every AI contract request (incl. GET /roi) to the
review backend's dispatch(). Desktop page check reruns the web review and cost
cases plus a tampered-page gate case. Eval fixture e-pyqt-ai added.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:32:45 +05:30
Vasanth 128f153f84 Merge integration (ticket 06) into ticket 07 2026-10-16 15:25:57 +05:30
Vasanth 472e18de0d WIP: AI desktop sections, bridge slot, desktop page check 2026-10-16 15:25:27 +05:30
VasanthandClaude Opus 5.5 9dcdd8f572 AI cost/ROI page: pricing table, cost per call, Cost tab, ROI endpoint
- templates/web/pricing.py: pricing table with source and as-of date; cost_for_call
  (input rate + (output + thinking) at output rate, long-context above threshold;
  unknown model raises naming the known models).
- Cost tab: coverage pill, total/this-month/tokens tiles, month-by-month table,
  per-run tokens and cost ("not priced", never $0), by-hand panel with editable
  assumptions labelled as such.
- Contract: RoiRun and GET /roi; optional GET /models and POST /runs/{id}/retry.
- SKILL.md: cost page wiring, model picker and retry-on-other-model as optional sections.
- Tests: test_pricing.py self-check, page_check_ai/test_ai_cost.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:23:52 +05:30
VasanthandClaude Opus 5.5 8951ac05a5 AI skill: SKILL.md, AI contract, scrubbed references, eval fixture (d)
- 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>
2026-10-16 15:13:55 +05:30
VasanthandClaude Opus 5.5 91495935b9 Merge integration/rpa-dashboard-skills (tickets 01-03) into ticket 05
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:06:53 +05:30
VasanthandClaude Opus 5.5 d4d3f83fb1 AI web starter: bands, review split pane, approve gate, server stub (checkpoint)
React + Vite + Tailwind starter with the no-AI shell, band legend, review
split pane with drafts and verify, and a server stub that refuses approval
while flagged fields are unverified. Band self-check and AI page check.
Both page checks share one Chromium via tests/conftest.py.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:06:44 +05:30
VasanthandClaude Opus 5.5 3a11e55b58 Merge integration/rpa-dashboard-skills into ticket 04
Keeps both sides: frontend detection and bot wiring from tickets 02/03, optional
sections from ticket 04. The a-empty-sections eval now uses the shared "fixture" key.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 15:04:34 +05:30
VasanthandClaude Opus 5.5 9a5b95448d Optional sections: checkpoint tracker, admin/roles, login page
- dashboard.html: each section sits in OPTIONAL:<name> BEGIN/END blocks in
  the style, markup and script, with sample answers so a page with no bot
  shows it working. Core change: setUser records the role on <body>, so CSS
  hides admin-only parts from operators.
- templates/sections.py keeps the chosen sections and deletes the rest,
  markers included; it stops on a broken marker.
- templates/sections.md: what each section needs from the host (events,
  actions, desktop slot snippets, the role re-check, the login hand-off).
- SKILL.md step 5 asks one multi-select question and runs sections.py.
- Page check: checkpoint states, admin visibility by role and assign/remove,
  login theme and hand-off to auth or the stub. Cases skip on a generated
  page without the section; the template must carry all three. The harness
  signs in when the page has a login screen.
- tests/test_sections.py: no sections leave no trace, and that page still
  passes the page check.
- Eval runner: a-empty-sections variant (all three) and per-section checks.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 14:31:25 +05:30
VasanthandClaude Opus 5.5 1b6ae23573 Merge integration/rpa-dashboard-skills (ticket 03) into ticket 02
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 14:30:09 +05:30
VasanthandClaude Opus 5.5 162edd41df No-AI desktop path: PyQt bot wired to the page
- 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>
2026-10-16 14:28:51 +05:30
VasanthandClaude Opus 5.5 f11bddd958 Existing frontend: detect, report, then keep or restyle (ticket 03)
- templates/detect_frontend.py: finds plain HTML, React/Vue/Angular/Svelte apps
  and PyQt web views; prints location, stack, main colours, font and every
  token block (CSS custom properties, <style> tags, Tailwind config).
- templates/frontend.md: shared report / keep / restyle procedure, written
  so rpa-dashboard-ai can point to it.
- SKILL.md steps 1, 2 and 6 point to it.
- tests: detection self-check; fixture c-web-existing-frontend; eval entries
  c-keep and c-restyle (new pages only, per-question grading, checks on what
  changed in the existing files), both passing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 14:27:50 +05:30
VasanthandClaude Opus 5.5 58baf7f778 Eval runner: send the prompt on stdin; add a-empty results
On Windows a multi-line argv prompt is cut at its first newline, which
also dropped the permission flags. The a-empty eval now passes every
check, including the page check on the page the skill built.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 14:09:50 +05:30
VasanthandClaude Opus 5.5 7f2ddecffb No-AI skill tracer: SKILL.md, theme presets, sample data, Seam 1 page check
- 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>
2026-10-16 13:59:26 +05:30