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>
This commit is contained in:
VasanthandClaude Opus 5.5 committed 2026-10-16 15:59:00 +05:30
1 parent 24a064875e
commit 8bb1cf268e
3 files changed
+25 -7

No files matched your search

+10 -3
View File
@@ -1,6 +1,6 @@
---
name: rpa-dashboard-ai
description: Builds a working dashboard for an RPA bot or service that uses AI (an LLM or OCR extraction call). It has everything from rpa-dashboard-no-ai (sidebar, top bar with dark toggle and status dot, KPI cards, batch donut, run panel with steps and live log, report table with search and export) plus confidence bands, a review split pane (source document beside the extracted fields, band filters, draft edits, Verify), an approve gate the server enforces, and a cost/ROI page (tokens and cost per run, total and monthly spend, priced coverage, an against-doing-it-by-hand panel). Web path is React + Vite + Tailwind with a sample-data server stub; desktop path (PyQt) is the no-AI page plus plain-HTML AI sections over the Qt bridge, gate enforced in Python. Use when the user asks for an "AI RPA dashboard", an "extraction dashboard", an "LLM/OCR review dashboard", or any RPA/bot dashboard in a project that calls an LLM or OCR to extract fields. Needs rpa-dashboard-no-ai installed next to it.
description: Builds a working dashboard for an RPA bot or service that uses AI (an LLM or OCR extraction call). It has everything from rpa-dashboard-no-ai plus confidence bands, a review split pane (source document beside the extracted fields, band filters, drafts, Verify), an approve gate the backend enforces, and a cost/ROI page (tokens and cost per run, monthly spend, an against-doing-it-by-hand panel). Web: React + Vite + Tailwind with a sample-data server stub; desktop (PyQt): plain-HTML AI sections over the Qt bridge. Use when the user asks for an "AI RPA dashboard", an "extraction dashboard", an "LLM/OCR review dashboard", or any RPA/bot dashboard in a project that calls an LLM or OCR to extract fields. Needs rpa-dashboard-no-ai installed next to it.
---
# RPA dashboard (AI)
@@ -9,6 +9,12 @@ Everything this skill needs is bundled. Never read the original source projects.
Shared files live in the no-AI skill, installed next to this one: `<no-ai>` below
means `../rpa-dashboard-no-ai/templates/`.
**Paths:** both skills must be installed side by side (same parent folder). Resolve
`templates/...` against this skill's own folder (the one holding this SKILL.md), and
`<no-ai>` against it too (`<this skill>/../rpa-dashboard-no-ai/templates/`), never against
the user's project. Run the scripts with those absolute paths, from the user's project, for
example `python <this skill>/../rpa-dashboard-no-ai/templates/detect_frontend.py <project root>`.
| File | What it is |
|---|---|
| `templates/web/` | The React + Vite + Tailwind starter: shell, KPI, donut, run panel, report, **band legend, review split pane, approve gate, cost page**, sample data. |
@@ -72,11 +78,12 @@ pane, the approve gate and the cost page. Ask which extras to add (choose any, o
the model per batch), **retry on another model** (for failed runs). Build only the
chosen ones at their `OPTIONAL:` markers, and delete the markers.
- **Checkpoint tracker, admin/roles, login:** web: port them from `<no-ai>dashboard.html`'s
`OPTIONAL:` blocks. Desktop: they're already in the no-AI page; `<no-ai>sections.py` keeps
`OPTIONAL:` blocks to the markers in `RunPanel.tsx` (checkpoints) and `App.tsx` (admin tab
and screen, login). Desktop: they're already in the no-AI page; `<no-ai>sections.py` keeps
the chosen ones (no-AI step 6), and `<no-ai>sections.md` says what each needs from the host.
- **Model picker:** a `<select>` filled from `GET /models` (the pricing table's keys), at
the marker in `Cost.tsx` (desktop: `ai_sections.html`) or next to the Run button; the chosen model goes with the
batch's start action. Remember the last choice per user.
batch's start action.
- **Retry on another model:** on a `failed` run, at the marker in `Review.tsx` (desktop: `ai_sections.html`): a model
`<select>` (from `GET /models`, defaulting to the run's own model) and a Retry button
that sends `POST /runs/{job_id}/retry {model}`, then polls the run as usual.
+8 -4
View File
@@ -8,6 +8,10 @@ description: Builds a working dashboard page for an RPA bot that does not use AI
Everything this skill needs is bundled in `templates/`. Never read the original
source projects.
**Paths:** `templates/...` is in this skill's own folder (the one holding this SKILL.md),
not in the user's project. Below, `<skill>` is that folder's absolute path: run the
scripts as `python <skill>/templates/<script>.py`, from the user's project.
| File | What it is |
|---|---|
| `templates/dashboard.html` | The single-file page: theme tokens, shell, KPI, donut, run panel, report, sample data. Works in PyQt (QWebChannel) or on the web (polling). |
@@ -27,7 +31,7 @@ If the user's request already answers a question, don't ask it again.
## 1. Scan the project
Before asking anything, look at the project:
- **Frontend:** run `python templates/detect_frontend.py <project root>`. It finds
- **Frontend:** run `python <skill>/templates/detect_frontend.py <project root>`. It finds
plain HTML, React/Vue/Angular/Svelte apps and PyQt web views, and prints each
one's location, stack and colour tokens. `templates/frontend.md` says what it
covers and what to do with its report.
@@ -76,7 +80,7 @@ Ask which extras to add, as one multi-select question (choose any, or none):
off to the project's own auth.
Build only the chosen ones. In step 6, right after copying the page, run
`python templates/sections.py <copied dashboard.html> <chosen: checkpoints admin login>`.
`python <skill>/templates/sections.py <copied dashboard.html> <chosen: checkpoints admin login>`.
It deletes the unchosen sections completely (markup, script and style), so nothing
is left behind. Never cut the blocks by hand. Then follow `templates/sections.md` for
each kept section: what to fill, which events the bot sends, and which host actions
@@ -90,7 +94,7 @@ to answer.
`dashboard/dashboard.html`.
- Existing frontend: put it where `templates/frontend.md` section 3 says.
Then run `python templates/sections.py <copied dashboard.html> <chosen sections>` (step 5).
Then run `python <skill>/templates/sections.py <copied dashboard.html> <chosen sections>` (step 5).
2. Fill every `{{...}}` placeholder:
| Placeholder | Value |
@@ -103,7 +107,7 @@ to answer.
3. Apply the theme by replacing the `body{...}` and `body.dark{...}` token blocks
with the preset from `templates/themes.md`. For Ember, also add its font link.
For a custom colour, run `python templates/palette.py "<hex>"`, paste the
For a custom colour, run `python <skill>/templates/palette.py "<hex>"`, paste the
tokens it prints, and show the user its contrast table. If the user chose keep,
fill the blocks from the project's tokens instead (`templates/frontend.md`
section 4).
+7
View File
@@ -27,6 +27,13 @@ def test_tebra_sky_preset_is_the_template_default():
assert sky in (templates / "dashboard.html").read_text(encoding="utf-8")
@pytest.mark.parametrize("skill", ["rpa-dashboard-no-ai", "rpa-dashboard-ai"])
def test_skill_description_fits_the_1024_char_limit(skill):
text = (ROOT / skill / "SKILL.md").read_text(encoding="utf-8")
description = re.search(r"^description: (.+)$", text, re.MULTILINE)[1]
assert len(description) <= 1024, len(description)
def test_ai_skill_references_files_that_exist():
skill = ROOT / "rpa-dashboard-ai"
text = (skill / "SKILL.md").read_text(encoding="utf-8")