dashboard
Skill0 starsChanged 6 months agoMITView on GitHub
Render agent.md and CLAUDE.md as anthropomorphized HTML profiles. Triggered by /dashboard. Auto-detects layout (Focus for single agent, Team for multiple, CLAUDE.md-only when no agents). Use when user asks to visualize, view, or explain their Claude Code agents and project charter.
60 other projects use a version of this.
Adopted by
Most recently taken up by
- arklanq/agent-skillstheir own version, first seen Nov 8, 2026
- charles-adedotun/sre-plugintheir own version, first seen Nov 8, 2026
- paulogabriel/beryltheir own version, first seen Nov 8, 2026
- zedarvates/frugal-skillstheir own version, first seen Nov 8, 2026
- whoamnesia/astudio-aiotheir own version, first seen Nov 8, 2026
- onelastcommit/noctratheir own version, first seen Nov 8, 2026
Used with
Projects with it also use activity, telemetry and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
gokite-aiSkillactivity
View transaction history and recent account activity. Invoke when the user asks about past spending, wants to verify a payment went through, check if an order completed, review wallet transfers, or see a log of all account actions. Covers wallet transfers, faucet drops, API payments, shopping checkouts, agent registrations, and session approvals.
Also in 3 projects that use this
OpenAISkilltelemetry
Add and verify lightweight macOS runtime telemetry. Use when wiring Logger events or inspecting logs for windows, sidebars, menus, and actions.
Also in 3 projects that use this
anombyte93Skilldiscover
Phase 1 of the prd-taskmaster pipeline: brainstorm-driven discovery. Delegates to superpowers:brainstorming in Interactive Mode (one adaptive question at a time), or self-brainstorms in Autonomous Mode when no user is present. Intercepts before the brainstorming chain hands off to writing-plans — this skill owns the exit. Extracts constraints, calibrates scale (Solo / Team / Enterprise), and advances the pipeline to GENERATE.
Also in 7 projects that use this
soilmassSkillexport
Animation export configurations including format selection, resolution, framerate, quality, and optimization settings. Use when rendering animations for web, mobile, video, or social media. Provides tokens for all export parameters across Lottie, GIF, video, and sprite sheet formats.
Also in 4 projects that use this
seongjaeryuSkillsave
Complete and save your current thinking to Bindly
Also in 4 projects that use this
seongjaeryuSkillorganize
Organize knowledge into Sets
Also in 3 projects that use this
Other versions60 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 60
- dlt-hub/dlt★ 6.1ksame name
- Zafer-Liu/Data-Analysis-Agent★ 2.6ksame name
- PrimeIntellect-ai/prime-rl★ 2.2ksame name
- suboss87/FDEOps★ 940same name
- SethGammon/Citadel★ 927same name
- egregore-labs/egregore★ 293same name
- hsantanna88/clo-author★ 262same name
- hugosantanna/clo-author★ 262same name
- wellwelwel/lagune★ 177same name
- Aster110/mycc★ 165same name
50 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository3 other files it gives its agents.
- agent-createSkill
- agent-editSkill
- claude-editSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
15 rules. 0 are common, 7 are distinctive, and 8 are very specific to this project.
0
Common
Most of the 47 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 37
When the user asks to view a specific agent:
- Distinctive: line 41
Search in this order, take first match:
- Distinctive: line 45
If not found: tell the user the agent doesn't exist and list available agent names from the search dirs.
- Distinctive: line 53
Read the file. Parse frontmatter and body.
- Very specific: line 136
Write JSON to ~/.claude/dashboard-cache/<hash>.json via Bash.
- Very specific: line 137
Run DASHBOARD=.claude/skills/dashboard python3 $DASHBOARD/scripts/render.py --json <cache>.json --template …
- Very specific: line 139
Run open ~/.claude/dashboard-cache/<hash>.html to launch browser.
- Very specific: line 146
Use scan_agents() from scripts/detect_mode.py (or replicate logic): list *.md from .claude/agents/ then ~/.claude/agents/, dedup by stem …
- Distinctive: line 154
If neither exists: skip the CLAUDE.md hero, render a placeholder ("项目暂无宪章").
- Very specific: line 172
Use templates/team-dashboard.html.
- Very specific: line 180
Search order: ./CLAUDE.md, ~/.claude/CLAUDE.md.
- Distinctive: line 196
Read the agent's prompt
- Very specific: line 201
If any agent's score < 50, set has_low_affinity: true and write a low_affinity_warning explaining the specific conflict and proposing a fix.
- Very specific: line 205
Use templates/claude-charter.html.
- Distinctive: line 225
Follow that mode's pipeline.
“Common” is measured: kept by at least 6 in 10 of the 47 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Dashboard skill
Visualize Claude Code's CLAUDE.md and agents/*.md as "blogger profile"-style HTML pages.
Trigger
User types /dashboard (default) or with explicit args:
/dashboard --agent <name>→ Focus mode for one agent/dashboard --team→ Team mode (CLAUDE.md hero + agent grid)/dashboard --claude→ CLAUDE.md-only mode
Pipeline (overall)
- Determine mode (auto or from args)
- For each .md file in scope: read, infer persona JSON, cache
- Render the appropriate template with the JSON
openthe HTML in browser
File layout
scripts/render.py— JSON + template → HTMLscripts/detect_mode.py— pick mode from agent countscripts/frontmatter.py— parse YAML frontmatterscripts/cache.py— hash-based JSON cachetemplates/agent-profile.html— Focus modetemplates/team-dashboard.html— Team mode (Task 13)templates/claude-charter.html— CLAUDE.md mode (Task 14)samples/*.json— canonical examples for testing
Mode: Focus (/dashboard --agent <name>)
When the user asks to view a specific agent:
Step A. Locate the agent file
Search in this order, take first match:
.claude/agents/<name>.md(project-level)~/.claude/agents/<name>.md(user-level)
If not found: tell the user the agent doesn't exist and list available agent names from the search dirs.
Step B. Check cache
Compute file_hash(file_text). If ~/.claude/dashboard-cache/<hash>.json exists, load it; skip to Step D.
Step C. Infer persona JSON
Read the file. Parse frontmatter and body. Output a JSON object matching this shape (every field must be present):
{
"type": "agent",
"source_path": "<absolute path to .md>",
"name": "<from frontmatter>",
"cn_name": "<2-3 char Chinese花名 you choose, evoking the role>",
"avatar_emoji": "<one emoji that captures the agent's vibe>",
"model": "<from frontmatter>",
"tier": "<S=opus, A=sonnet, B=haiku>",
"tools": ["<from frontmatter>"],
"title_line": "<one line role description, e.g. '资深代码审查师 · Quality 部 · 入职 N 年'>",
"bio": "<first-person 1-2 sentence intro from agent's perspective>",
"mbti": "<4-letter code inferred from prompt's structural traits>",
"mbti_name": "<Chinese 人格名 e.g. 检察官>",
"archetype": "<one phrase, e.g. '完美主义晚期'>",
"tags": ["<6-8 hashtag tags including MBTI, zodiac, vibe>"],
"personality": {
"rigor": <0-100>, "speed": <0-100>, "empathy": <0-100>,
"creative": <0-100>, "stress": <0-100>, "communication": <0-100>
},
"basic": {
"gender": "<inclusive default like they/them>",
"birthday": "<random plausible date matching MBTI archetype with zodiac sign emoji>",
"blood_type": "<A/B/O/AB type with one-line stereotype>",
"education": "<thematic joke degree, e.g. 'SICP 重读 7 遍'>",
"origin": "<github org or playful birthplace>",
"joined": "<plausible date>",
"team": "<short team name e.g. 'Quality 部'>",
"location": "<short path display, e.g. '~/.claude/agents/'>"
},
"quotes": ["<4-5 catchphrases inferred from prompt's voice>"],
"moves": [{"icon": "<emoji>", "name": "<招式名>", "desc": "<short desc>"}],
"peeves": ["<5 things this agent finds intolerable, derived from prompt's anti-patterns>"],
"daily": [{"time": "<HH:MM>", "do": "<activity inferred from When invoked steps>"}],
"playlist": [{"num": "01", "title": "<song matching agent's vibe>", "artist": "<artist>"}],
"books": [{"label": "<emoji + label>", "title": "<book matching domain>"}],
"coop": {"good": ["<other agent names>"], "warn": [], "bad": []},
"reviews": [{"stars": <1-5>, "stars_str": "<★★★★★ matching count>", "text": "<faux quote>", "reviewer": "<name>"}],
"stats": {
"monthly_calls": <plausible 10-100>,
"p0_caught": <plausible 0-10>,
"prs_reviewed": <plausible 0-200>,
"last_seen": "<ISO 8601>",
"last_seen_pretty": "<human-readable last action>"
},
"reasoning_trace": [
{
"conclusion": "<what was inferred>",
"sources": ["<exact prompt snippet that supports it>", "..."],
"reasoning": "<one-line explanation of the leap>"
}
]
}Inference rules:
- The same .md should always produce the same JSON. Use the file content as the only source of truth — do not invent traits not implied by the prompt.
- Reasoning trace is mandatory — at minimum 4 entries (MBTI, two personality scores with extreme values, one peeve mapping). Each entry's sources must be verbatim quotes from the prompt.
- For
coop, only list other agents that exist in the same project (you can read sibling .md files to know names). If you don't know, leave arrays empty.
Every rendered Focus / CLAUDE.md page must include a source_text field containing the raw .md content, HTML-escaped (& → &, < → <, > → >). The template renders it inside a collapsible <details><pre> block at the bottom so the user can verify the persona against the original. Also include source_lines (integer line count). Team mode pages do NOT need source_text (the source for each agent lives on its own Focus page).
Every rendered page (Focus / Team / CLAUDE.md) must include a nav block so the topnav renders cross-page links. Compose it once, inject into every JSON before render:
"nav": {
"project_name": "<project dir basename>",
"charter_url": "file://<absolute>/charter-<hash>.html",
"team_url": "file://<absolute>/team-<hash>.html",
"agents": [
{"name": "code-reviewer", "cn_name": "柯瑞", "avatar_emoji": "🧐",
"url": "file://<absolute>/<agent-hash>.html"}
],
"no_agents": false
}For CLAUDE.md mode when 0 agents exist: set nav.no_agents: true and nav.agents: [] — the charter template will render an empty-state CTA inviting the user to run /agents.
Step D. Save to cache, render, open
- Write JSON to
~/.claude/dashboard-cache/<hash>.jsonvia Bash. - Run
DASHBOARD=.claude/skills/dashboard python3 $DASHBOARD/scripts/render.py --json <cache>.json --template .claude/skills/dashboard/templates/agent-profile.html --out ~/.claude/dashboard-cache/<hash>.htmlvia Bash. - Run
open ~/.claude/dashboard-cache/<hash>.htmlto launch browser. - Tell the user the file path and a one-line summary ("Rendered 柯瑞 · Focus mode → opening browser").
Mode: Team (/dashboard --team or auto when 2+ agents)
Step A. Discover all agents
Use scan_agents() from scripts/detect_mode.py (or replicate logic): list *.md from .claude/agents/ then ~/.claude/agents/, dedup by stem name, project takes precedence.
Step B. Read CLAUDE.md
Find CLAUDE.md in this order:
./CLAUDE.md(project root)~/.claude/CLAUDE.md
If neither exists: skip the CLAUDE.md hero, render a placeholder ("项目暂无宪章").
Step C. For each agent, also pre-render its Focus page
For each agent, run the full Focus pipeline (Steps A-D from the Focus mode section) so its detail page exists in cache. Note the resulting hash for each.
This makes mini-cards in the team page clickable — they link straight to the Focus HTML.
Step D. For each agent, infer mini-persona (with focus_url)
Output a compact JSON for the team grid (just the fields used in mini-card — see samples/team.json for shape). Skip the full reasoning_trace and big arrays. Each agent must include focus_url: file:///<absolute-path-to-focus-html-in-cache> (use ~ expansion to the absolute home dir).
Step E. Compose team JSON
Merge the CLAUDE.md persona, agent mini-personas, and computed stats (online_pretty, tier_distribution) into one team JSON.
Step F. Render + open
Use templates/team-dashboard.html. Same render-and-open pattern as Focus mode.
The rendered team HTML wraps each mini-card in <a href="{{focus_url}}"> — clicking a card opens that agent's Focus page in the same browser tab.
Mode: CLAUDE.md (/dashboard --claude or auto when 0 agents)
Step A. Find CLAUDE.md
Search order: ./CLAUDE.md, ~/.claude/CLAUDE.md. If neither: tell user "no CLAUDE.md found in project or user dir" and exit.
Step B. Infer charter persona
Output JSON matching samples/claude-md.json shape. Same inference principles as agent persona — but treat the document as the entity:
cn_title: name the charter ("约法四章" / "守则" — your call based on tone)vibe: one phrase capturing the document's charactermbti: yes, CLAUDE.md has an MBTI too (e.g., ISTJ-J for rule-heavy charters, ENFP for permissive ones)principles: extract the top-level principles from the doc bodyaversions: list things the doc forbids/discouragesorigin_story: one paragraph on where the doc came from (Karpathy风/项目原创/OSS模板)personality: 6 numeric scores (rigor, speed, empathy, creative, stress, communication)
Step C. Compute affinity (CLAUDE.md ↔ each agent)
For each agent in .claude/agents/ and ~/.claude/agents/:
- Read the agent's prompt
- Score 0-100 on how well the agent's behavior aligns with each CLAUDE.md principle
- Average the per-principle scores → affinity score
- Set
level:highif ≥75,midif 50-74,lowif <50
If any agent's score < 50, set has_low_affinity: true and write a low_affinity_warning explaining the specific conflict and proposing a fix.
Step D. Render + open
Use templates/claude-charter.html. Same pattern.
Smart default (/dashboard with no args)
Step A. Scan agents
Run via Bash:
python3 $DASHBOARD/scripts/detect_mode.py 2>&1 || trueOr replicate the logic inline: count agents in .claude/agents/*.md ∪ ~/.claude/agents/*.md (dedupe by name).
Step B. Pick mode
- 0 agents → CLAUDE.md mode (Step A of CLAUDE.md section)
- 1 agent → Focus mode (Step A of Focus section, with that single agent name)
- 2+ agents → Team mode (Step A of Team section)
Step C. Execute the chosen mode
Follow that mode's pipeline.
Step D. Tell the user what was rendered
One line: "Detected N agents → rendered Team mode → opening browser." Include the file path so the user can re-open if needed.
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.

