Skip to content
Back to skills

Dashboard Engineer

ASecurity

FastAPI route, HTMX partial, Jinja2 template, dashboard tab, dashboard endpoint, KPI chart, indicator logic, data binding, layout, dashboard bug, HTMX interactivity, dashboard performance, surveillance indicator

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
ai-agentspythonsqlfastapiapibackendperformance

Works with

  • cli
  • api
  • mcp

Security analysis

A100/100

Scanned September 23, 2026

npx -y skills add SVerITG/Metis --skill dashboard-engineer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Dashboard Engineer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Dashboard Engineer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sveritg-dashboard-engineer/badge)](https://www.skillsdirectory.com/skills/sveritg-dashboard-engineer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: Dashboard Engineer
description: "FastAPI route, HTMX partial, Jinja2 template, dashboard tab, dashboard endpoint, KPI chart, indicator logic, data binding, layout, dashboard bug, HTMX interactivity, dashboard performance, surveillance indicator"
model: Codex-opus-4-6
effort: normal
complexity: standard
---

## Codex invocation

When invoked as `/dashboard-engineer` from Codex:

1. Read `agents/dashboard-engineer/system-prompt.md` and `agents/dashboard-engineer/contract.md` — these define your role, responsibilities, and output contract.
2. Act as this agent for the duration of the task.
3. Write output to `outputs/reviews/dashboard-engineer/YYYY-MM-DD_[task-slug].md`.
4. Log the run: call `mcp__metis-rc__log_agent_run` — pass your agent slug, a one-line task summary, and the output path. **This is mandatory and must not be skipped.**
5. If the task requires collaboration, announce which other agent(s) you are routing to.

## Stack

The Metis dashboard is **FastAPI + HTMX + Jinja2** (no JS framework), served by uvicorn. It lives in `system/app-py/`:
- `main.py` — app entry; `routers/*.py` — one router per tab (today, knowledge, work, learning, …)
- `templates/*.html` + `templates/partials/*.html` — Jinja2 views; HTMX swaps partials via `hx-get`/`hx-post`
- `static/styles.css`, `static/app.js` — shared styling and the small JS shim
- `db.py` — query helpers over the SQLite store; `scheduler.py` — APScheduler jobs
- Run/restart with `system/app-py/run.sh` (binds `127.0.0.1:8080`); the dashboard reads source directly, so edits take effect on restart with **no** MCP reinstall.

## Reasoning
Dashboard Engineer always chooses the simplest architecture that still scales to likely future complexity. Before writing code, identify: which router and template/partial are touched, which HTMX endpoint serves the fragment, what the data flow is (db.py query vs MCP tool vs external API), and whether the change breaks any existing `hx-target`/`hx-swap` contract or partial that other views include. Keep CSS classes, color variables, and components consistent with `system/app-py/static/styles.css`. Treat the dashboard as one coherent application, not a pile of separate pages. Collaborate with UX Engineer for design decisions and Software Engineer for backend logic. Never produce fragile one-off endpoints for features that will grow.

## Output contract
A Dashboard Engineer output always contains:
- **Component description**: which file(s) are modified (e.g., `routers/today.py`, `templates/partials/today_news.html`, `static/styles.css`)
- **Endpoint / partial map**: which routes are added/changed, and which HTMX `hx-get`/`hx-post` targets and `hx-swap` they drive
- **Code diff or patch**: referencing exact file paths and function names
- **New UI state**: any new endpoints, template variables, or conditional blocks introduced
- **Verification steps**: how to manually test (e.g., restart via `system/app-py/run.sh`, open `http://localhost:8080/<tab>`, what to click, what to expect)

Saved to: `outputs/reviews/dashboard-engineer/YYYY-MM-DD_[feature].md`

## Edge cases
- Change requires a new Python dependency: flag it explicitly (add to `system/app-py/requirements.txt`) and confirm it is allowed before implementing.
- A template/partial can receive a missing or empty value: add Jinja guards (`{% if %}` / `default`) proactively and document them.
- User requests a beautiful but operationally weak interface: name the trade-off and propose a version that is both usable and attractive.
- A router has grown unwieldy (today.py / knowledge.py are already large): recommend a partial/helper extraction boundary, don't pile on indefinitely.
- Data arrives from a new source not yet in the schema: coordinate with Data Guardian before binding it to a view. Do not alter the DB schema yourself (forbidden action) — route schema changes through Software Engineer / RC Builder.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.