client-dashboard
Skill0 starsChanged 5 months agoMITView on GitHub
Give your client a live, branded view of the work your agents are doing — without giving them your tools, your logins, or a plugin bolted into their site. Each agent run writes a small results file; a self-contained branded HTML dashboard is regenerated from it and hosted as a static page the client just opens. Read-only by construction. Use when a client wants to "see what you're doing," when you're tired of hand-building status decks, when you want to extend your Command Center with a client-visible view, or when you've been asked for a client dashboard and your instinct was a WordPress plugin (don't — read the cautionary tale below).
In this repository83 other files it gives its agents.
- AGENTS.mdAGENTS.md
- docs/AGENTS.mdAGENTS.md
- shep/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- shep/CLAUDE.mdCLAUDE.md
- advisory-version-checkSkill
- aeo-llm-content-plannerSkill
- agency-command-centerSkill
- agency-morning-briefSkill
- agency-scorecardSkill
- agent-runbookSkill
- agent-usageSkill
- autonomy-budgetSkill
- backlink-pr-angle-generatorSkill
- brand-kit-from-urlSkill
- browser-automationSkill
- building-autonomous-agentsSkill
- capability-mapSkill
- case-study-engineSkill
- clickup-apiSkill
- client-health-scoreSkill
- client-onboarding-osSkill
- cli-llm-routingSkill
- codebase-mapSkill
- command-from-your-phoneSkill
- competitor-content-gap-analysisSkill
- connection-monitorSkill
- content-brief-generatorSkill
- determinism-patternSkill
- dispatch-and-briefSkill
- division-operating-modelSkill
- dreamingSkill
- durable-stateSkill
- entity-topical-authority-mapperSkill
- first-real-jobSkill
- founding-circle-ai-securitySkill
- gbp-competitor-auditSkill
- goal-modeSkill
- host-your-agentSkill
- html-reportsSkill
- instinct-bridgeSkill
- evolveSkill
- learn-evalSkill
- learnSkill
- promoteSkill
- skill-createSkill
- internal-linking-auditorSkill
- keyword-deep-diveSkill
- ladder-auditSkill
- lanes-momentum-frameworkSkill
- launch-websiteSkill
- llm-citation-auditSkill
- migration-seo-paritySkill
- migration-visual-checkSkill
- model-gear-routerSkill
- multi-account-gatewaySkill
- multi-model-councilSkill
- night-shiftSkill
- novaSkill
- per-client-memory-routerSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 2 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 157
One account per page, always dated: Never mix one client's data into another's, and always stamp the coverage date so the reader knows …
- Distinctive: line 160
When those four hold, "give my client a live view of the work" stops being a risky integration and becomes a link you send once.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
client-dashboard
The problem this solves: your agents are doing real work on a client's account — shipping pages, moving rankings, fixing audits — and the client can't see any of it. So they ask for "a dashboard," and the tempting move is to wire your agent stack into their site: install a plugin, drop a widget, connect a live feed into their CMS. Don't. One member did exactly that and a single plugin conflict took down four client sites at once. The moment your automation has a write path into a client's live property, a bad write, a version bump, or a plugin clash is no longer a bug — it's an outage on a site you don't own, in front of the client who pays you.
The fix is a different shape entirely, and it's the whole skill:
Don't put your agents inside the client's house. Publish a standalone view of what they did. Each agent run writes a small results file. A self-contained, branded HTML page is regenerated from that file and hosted as a plain static page the client opens in a browser. They see the work; they never touch your tools, never log into your stack, and there is no write path into their site. It is read-only because of how it's built, not because you remembered to lock it.
Why an owner should care, in money terms: the work your agents do is invisible until the client can see it — and invisible work doesn't renew. A clean, branded dashboard turns silent throughput into visible ROI: the client opens a link, sees rankings climbing and pages shipping with your logo on it, and re-signs without a meeting. That's the offense — it's a retention and referral engine. "Read-only, standalone, can't crash their site" is the enabler that lets you ship it in an afternoon and never think about it again — never the headline.
Say this to your agent
"Set up a client dashboard for
<client>. At the end of each run, write aresults.jsonof what you did — work shipped, ranking/traffic changes, what's in progress, what's next — then regenerate a branded, self-contained HTML page from it and save it so I can host it as a static link. Never wire anything into the client's site. Keep costs, prompts, tool names, and raw logs OUT of it — client-facing only. Stamp it with the date it covers."
That one line is the whole ask. Everything below is the pattern behind it and the rules that keep it safe.
The pattern (four steps, one direction)
Data flows one way — from your agent's run, out to a page the client reads. Nothing flows back.
- Agent run does the work. Your normal run against the client's account — pulling rankings from your SEO platform's MCP, shipping content, running an audit. Same work you already do.
- It writes a structured results file (
results.json). This is the single source of truth for the dashboard: what happened this period, as data. Separating "what happened" from "how it looks" is what makes the whole thing regenerable and boring-in-a-good-way — the agent only ever has to produce clean data, never fiddle with HTML. - A branded HTML page is regenerated from that file. One self-contained file — inline CSS and JS, no dependencies, your brand colors and logo. The agent swaps the run's data into one clearly-marked block and leaves everything else untouched. Same layout every run; only the numbers change.
- You host it as a static page. Drop the file on any static host — a Netlify/Vercel drag-and- drop, an S3 bucket, GitHub Pages, your own web host, even sent as an email attachment. The client gets a link (or the file) and opens it. That's it.
Because the output is just an HTML file on a static host, the client has no login into your stack and no way to change anything — read-only isn't a permission you set, it's the shape of the thing. And because nothing is installed on their site, your automation can never take their site down.
What goes ON the dashboard vs. what stays INTERNAL
This is the line that makes a dashboard client-safe. When in doubt, leave it out.
| Put it ON the client dashboard | Keep it INTERNAL — never on the client page |
| Work shipped this period (plain-English outcomes) | Your costs, hours, margin, or credit usage |
| Rankings / traffic / conversions and their deltas | The prompts, skills, or agent instructions you used |
| What's in progress and what's blocked on the client | Raw agent logs, tool call traces, error stacktraces |
| What's next, with owners and rough timing | Which specific tools/MCPs/vendors power the work |
| A one-line headline of the period's win | Credentials, API keys, internal notes, TODOs |
| The date the data covers | Any other client's data (never mix accounts) |
Two rules inside that table matter most. Never expose the machinery — the client bought an outcome, not a tour of your tool stack; naming your vendors just hands them a shopping list to cut you out. And never leak cost or margin onto a page a client reads — it reframes your value as your bill. Say "published the emergency-care landing page and it's now ranking #4," never "ran 3 content-gen calls at $X."
Refresh cadence
Match the rhythm the client already expects to hear from you.
- Weekly is the sweet spot for most retainers — it lines up with how agencies already report, and it's frequent enough that the client feels progress without you staffing a daily update. Regenerate the page at the end of your weekly run and the link updates itself.
- Per-run is fine when your agent runs on a schedule anyway — just let the last step of every run rewrite the page. The client's bookmark always shows the latest.
- Avoid real-time. A number that ticks live invites anxiety and "why did it dip at 2am?" questions; a dashboard is a report, not a monitor. And avoid monthly-only — a month of silence makes even great work feel like nothing happened.
- Always stamp the coverage date on the page ("Data through July 7"). A client who can't tell whether they're looking at this week or last month stops trusting the page — and a stale-looking dashboard is worse than none.
First dashboard in an afternoon
You do not need a build pipeline. You need four moves:
- Copy the starter template. Take
templates/dashboard-template.html— it already renders a full demo dashboard when you double-click it, so you can see the shape before you change a thing. - Brand it once. Open the template and swap the two brand colors in the
:rootblock and the logo mark for the client's. (You can also set colors per-run from the data file — seebrand.*inresults.example.json.) This is a one-time edit. - Wire your run to produce the data + regenerate the page. At the end of your agent run, have
it write a
results.jsonin the shape oftemplates/results.example.json(its keys map 1:1 to the page), then replace the JSON between theDASHBOARD_DATA:START/DASHBOARD_DATA:ENDfences in the HTML with that fresh data. Nothing else in the file changes — that fenced block is the only injection point, which is exactly why an agent can do it reliably every run. - Host it and send the link. Drag the HTML onto a static host, copy the URL, send it once. From then on, each run overwrites the file and the client's link is current.
That's a live, branded, read-only client dashboard — shipped in an afternoon, with zero risk to the client's site.
What a good result looks like
- The client opens one link and immediately sees, with your branding: the win this period, the numbers moving, what shipped, what's in flight, and what's next.
- The page is a single HTML file — no dependencies, opens by double-click, works emailed as an attachment, and can't call home.
- Nothing about your machinery is on it — no tool names, no prompts, no costs, no logs.
- Regenerating it next week is your agent rewriting one data block, not you building a deck.
- Your client's site was never touched — the dashboard lives entirely outside it, so it can never be the reason their site breaks.
The rules it runs under (why it's safe by construction)
- Standalone, never embedded. The dashboard is a separate static page. It is never a plugin, widget, or live feed inside the client's CMS or site. No write path into a property you don't own means no outage you'll be blamed for.
- Read-only by construction. It's a static file the client views. There is no login into your stack and no control surface — read-only is the shape, not a setting you might forget.
- Outcomes, not machinery. Client-facing means work and results in plain English. Costs, prompts, tool/vendor names, and raw logs never appear.
- One account per page, always dated. Never mix one client's data into another's, and always stamp the coverage date so the reader knows exactly what period they're looking at.
When those four hold, "give my client a live view of the work" stops being a risky integration and becomes a link you send once.
How it pairs with the other skills
html-reports— the report-archetype library this builds on. The dashboard is the Atlas (dashboard) shape, specialized for a recurring, agent-regenerated, client-facing view. Reach forhtml-reportswhen you need a one-off report in a different shape (a long-read case study, a comparison matrix); reach for this when you need a standing, self-updating client view.report-writer— for a narrative decision memo or audit written for a stakeholder to read once. This skill is the opposite cadence: a live, data-driven page that regenerates every run.host-your-agent— the same scheduled-run machinery that fires your work overnight is what regenerates this dashboard at the end of each run, so the client's link stays current without you.determinism-pattern— treat the "produce results.json → regenerate the page" step as one versioned, repeatable skill so every client's dashboard comes out to the same standard, run after run, watched or not.
Where things land
| File | What it is |
SKILL.md | This walkthrough — the cautionary tale, the pattern, the on/off-the-page line, cadence, the afternoon build, and the safety rules. |
README.md | The copy-paste quickstart. |
templates/dashboard-template.html | The runnable starter — one self-contained, branded, light-mode file. Renders a full demo on open; regenerate it by swapping the JSON between the DASHBOARD_DATA fences. |
templates/results.example.json | The example results file an agent writes each run. Its keys map 1:1 to the template's injection points; every business/person in it is fictional placeholder data. |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

