discovery-dashboard
Skill1 starsChanged 53 days agoMITView on GitHub
Cross-domain / Research platform observability — Read-only live operations dashboard for a Microsoft Discovery workspace, built by scraping `.discovery/` and git. Shows leaf-task progress with approved-complete and awaiting-review kept strictly separate, the executing / ready / blocked work front from live `dependsOn` edges, engine liveness verified against real process identity, agent runs deduplicated across an alias graph, observed CLIO investigations, and a coverage panel separating "could not read" from "genuinely empty". Never writes to the workspace. WHEN: "project dashboard", "discovery dashboard", "what's the status of this project", "what's stuck", "how close are we to done", "are the engines still running", "is anything running", "are any agents running", "is clio running", "open the dashboard".
1 other project uses a version of this.
Adopted by
Most recently taken up by
- anyreachai/claude-skillstheir own version, first seen Nov 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- anyreachai/claude-skills★ 1same name
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 repository17 other files it gives its agents.
- AGENTS.mdAGENTS.md
- alphafold-structure-provenanceSkill
- biochemical-identifier-crosswalkSkill
- biocyc-network-contextSkill
- brenda-enzyme-dataSkill
- build-research-paperSkill
- chat-session-experimentalSkill
- discovery-add-agentsSkill
- discovery-clarify-projectSkill
- discovery-design-tasksSkill
- discovery-project-storySkill
- discovery-token-usageSkill
- engine-chat-experimentalSkill
- osti-literature-searchSkill
- sabio-rk-kineticsSkill
- scientific-database-accessSkill
- scientific-evidence-qcSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 2 are distinctive, and 4 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.
4
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 42
If $DASH is empty, tell the user the skill payload could not be located and stop.
- Very specific: line 47
Resolve the workspace: If the user names a path, use it.
- Very specific: line 51
Pick a mode: Prefer --once when the user asked a question in passing.
- Very specific: line 75
Check the coverage panel before trusting anything: If --json shows any error or partial entry under coverage, the view is incomplete and …
- Distinctive: line 126
Read it before changing any collector logic.
- Distinctive: line 145
Read-only by construction.
≈ “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
discovery-dashboard — Discovery workspace live operations
A read-only view of what is actually happening in a Discovery workspace.
Its design goal is not to show everything available. It is to answer four questions honestly: how close are we, what is stuck, what is actually running, and what can this view not see.
Resolve the payload — once per session
This skill can be installed as a personal skill, a project skill, or as part of
a plugin, so never hardcode its location. Run this first and reuse $DASH:
DASH=$(find ~/.copilot/skills ~/.copilot/installed-plugins ~/.agents/skills \
.github/skills .claude/skills .agents/skills \
-name discovery_dashboard.py -path '*discovery-dashboard*' \
2>/dev/null | head -1)
echo "$DASH"If $DASH is empty, tell the user the skill payload could not be located and
stop. Standard library only — there is nothing to install.
Default behavior
- Resolve the workspace. If the user names a path, use it. Otherwise use
the current working directory. If
<workspace>/.discovery/does not exist, say so and stop — this skill has nothing to read. Pick a mode. Prefer
--oncewhen the user asked a question in passing; only start a server when they want to look at something.Intent Command "what's stuck?" / "where are we?" python3 "$DASH" --workspace <ws> --once"open the dashboard" python3 "$DASH" --workspace <ws> --no-openthen open the printed URL in Discovery App's integrated browserfeed another tool python3 "$DASH" --workspace <ws> --jsonshare a frozen view python3 "$DASH" --workspace <ws> --html out.html"Open the dashboard" means a tab inside Discovery App, not the system browser. Always pass
--no-openand then open the loopback URL the server prints using the app's integrated browser. Only fall back to the system browser if the user asks for it, or if there is no integrated browser available.Other flags:
--port N(default 8787, walks forward up to +20 if busy) and--no-opento suppress the browser. If the requested port is already taken the server names what holds it rather than silently moving — a stale dashboard from days ago otherwise looks identical to a fresh one.- Report with the caveats attached. See Reading the numbers below. The caveats are the product; a bare number from this dashboard is a misuse of it.
- Check the coverage panel before trusting anything. If
--jsonshows anyerrororpartialentry undercoverage, the view is incomplete and the counts may read low. Surface that first, before answering the question.
Stopping it
Killing the shell wrapper does not stop the server. It keeps listening, and
the next start fails with Address already in use. Kill the listener by pid:
lsof -nP -iTCP:8787 -sTCP:LISTEN -tReading the numbers
Repeat these when reporting figures.
- Approved complete counts only
complete. Awaiting review counts onlyexecutionDone, which is not approval. They are never summed into one "done" number, and neither should you. - Progress uses leaf tasks only, so a parent and its children are not both counted.
- Engine liveness requires the recorded pid to exist and its observed
start time to match the record. A matching pid with a different start time is
pid reuse and reports
unknown.unknownis a real answer, not a failure. - Age never diagnoses a stall. Task mtime is not a heartbeat;
startedAtandwrittenAtUtcare startup metadata; a log's mtime means a log was written, not that an event occurred. This dashboard will not tell you something is stalled, because it cannot honestly know that. - CLIO is reported as investigations, not call counts. Report how many runs
started, how far they got, and whether they finished. Tool-call tallies are
deliberately not shown and should not be quoted: "67 of 70 calls were
clio-wait" measures polling frequency, not progress. - Investigation state is each run's own account of itself. A run killed
without updating its store still reads
running; the dashboard flags process gone rather than silently rewriting the state. - The CLIO run store is machine-wide. A run is listed only if its id appears in this workspace's engine exhaust, or its recorded goal names this workspace. Runs from other projects on the same machine are excluded. Direct editor invocations can still be invisible, so zero is not proof CLIO was unused.
- Blockers come from live
dependsOnedges. A dependency that cannot be resolved stays a blocker rather than being assumed satisfied. BothcompleteandexecutionDonesatisfy one. - Alerts are three separate buckets — action needed now, blocked by dependencies, awaiting review. Only the first means a human must do something. A single merged "needs attention" count is noise.
- Coverage distinguishes could not read from genuinely empty.
missingis normal; sources legitimately differ across Discovery versions.
Full definitions, the cross-version schema notes, and the reasoning behind each
rule are in references/telemetry-contract.md.
Read it before changing any collector logic.
Layout
Overview — progress, then a realtime row (executing, awaiting review, engines), then action needed now, ready, and investigations and agents. Blocked by dependencies sits at the bottom, collapsed: it is not something you watch live. Collapsed panels keep their open/closed state across auto-refresh.
Diagnostics (collapsed by default) — live log, git activity, purpose and outcomes, bookshelf, investigation detail, coverage and gaps.
Bookshelf shows, per shelf, the documents on disk and the indexer's own count side by side and never merged — a gap between them means indexing has not caught up, not that documents were lost. Only document metadata is read.
Safety
Read-only by construction. Never writes to the workspace, never starts or stops
engines or agents, never changes task state. Binds to loopback only. Serves a
fixed route table — no filesystem path is ever derived from a request. Engine
meta.json carries the full operator prompt; it is never emitted, and a test
asserts that against real workspaces.
Development
python3 -m unittest discover -s scripts -p 'test_dashboard.py' -v # 52 tests
python3 scripts/build.py # regenerate dist/discovery_dashboard.py
python3 scripts/build.py --check # CI runs this; fails if dist/ is staledist/discovery_dashboard.py is generated from scripts/. Re-run the build
after editing anything in scripts/ — the runtime users invoke is the
generated file.
The suite is fixture-driven and additionally runs golden tests against real
~/discovery workspaces when present, which is what catches schema drift
between Discovery Express versions. Those skip cleanly when none exist.
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.

