ワンクリックで
dashboard
Start the docs dashboard server. Builds the UI if needed and launches the Bun server on port 4567.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Start the docs dashboard server. Builds the UI if needed and launches the Bun server on port 4567.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Universal entry point for any change to the project — new features, bug fixes, refactors, config changes, anything. Classifies the change; delegates contract-introducing changes (new feature, behavior change) to /plan-feature for ADR + verifier authoring; runs the dev-harness -> verify-suite loop until `sdd verify && verify[]` exits 0. Bug fixes and pure refactors against existing invariants skip ADR authoring per ADR-0078.
Universal entry point for any change to the project — new features, bug fixes, refactors, config changes, anything. Classifies the change; delegates contract-introducing changes (new feature, behavior change) to /plan-feature for ADR + verifier authoring; runs the dev-harness -> verify-suite loop until `sdd verify && verify[]` exits 0. Bug fixes and pure refactors against existing invariants skip ADR authoring per ADR-0078.
Universal entry point for any change to the project — new features, bug fixes, refactors, config changes, anything. Authors an ADR for the request, updates impacted specs (verified by spec-evaluator), and runs dev-harness -> implementation-evaluator loop until CLEAN. Handles spec backpressure via /plan-feature rules.
Given an ADR with an Invariant Delta block, invokes the invariant-compiler subagent to author per-invariant verifier code (test stubs, lint rules, schemas) for every Added entry and remove verifiers for every Withdrawn entry. Invokable inline by /plan-feature or standalone.
Multi-round ambiguity audit loop for a design document. Calls /design-evaluator (fresh-context agent) repeatedly, fixing gaps between rounds until CLEAN. Logs all findings, fixes, and decisions to .agent/audits/.
Record a bug with spec context so it's actionable for a future /feature-change session. Does not fix the bug — just documents it.
| name | dashboard |
| description | Start the docs dashboard server. Builds the UI if needed and launches the Bun server on port 4567. |
| version | 1.0.0 |
| user_invocable | true |
Start the docs dashboard server for browsing ADRs, specs, lineage graphs, and blame data.
/dashboard [--port <n>]
bun — curl -fsSL https://bun.sh/install | bashlsof, nc, tail, mktemp — macOS/Linux defaults1. Resolve PLATFORM_ROOT
2. Launch dashboard.sh wrapper
3. Poll for ready banner
4. Open in browser (if Playwright MCP available)
if [ -n "${CLAUDE_PLUGIN_ROOT:-}" ]; then
PLATFORM_ROOT="$CLAUDE_PLUGIN_ROOT"
else
REAL=$(realpath "${BASH_SOURCE[0]}")
PLATFORM_ROOT=$(cd "$(dirname "$REAL")/../../.." && pwd)
fi
If ${CLAUDE_PLUGIN_ROOT} is set (running as an installed Claude plugin), use it directly.
Otherwise (local-dev) resolve by walking up from this SKILL.md's real path: the SKILL lives at
<PLATFORM_ROOT>/.agent/skills/dashboard/SKILL.md, so three dirname levels up reaches PLATFORM_ROOT.
Use realpath to follow symlinks first.
Confirm ${PLATFORM_ROOT}/docs-dashboard/dashboard.sh exists; abort with an actionable error if not.
Launch the wrapper in the background with stdout + stderr redirected to a per-run temp file so the banner can be observed afterwards:
WRAPPER_OUT="$(mktemp -t sdd-dashboard-wrapper)"
PORT_ARG=""
[ -n "${PORT:-}" ] && PORT_ARG="--port $PORT"
bash "${PLATFORM_ROOT}/docs-dashboard/dashboard.sh" $PORT_ARG \
>"$WRAPPER_OUT" 2>&1 &
WRAPPER_PID=$!
Run this via the Bash tool with run_in_background: true. Keep $WRAPPER_OUT and $WRAPPER_PID
for the subsequent steps.
If the user passed --port <n>, set PORT=<n> before this block so $PORT_ARG is populated.
Poll $WRAPPER_OUT for up to 180 seconds (900 × 0.2 s). The worst-case path is sequential:
bun install on first run (≤ ~60 s) + backend readiness poll (≤ 30 s) + Vite readiness poll (≤ 30 s) + margin.
URL=""
for _ in $(seq 1 900); do
if grep -q "Dashboard (dev) running at" "$WRAPPER_OUT" 2>/dev/null; then
URL=$(grep -o "http://127.0.0.1:[0-9]*/" "$WRAPPER_OUT" | head -1)
break
fi
if ! kill -0 "$WRAPPER_PID" 2>/dev/null; then
echo "Dashboard wrapper exited before banner — full log:" >&2
cat "$WRAPPER_OUT" >&2
rm -f "$WRAPPER_OUT"
exit 1
fi
sleep 0.2
done
if [ -z "$URL" ]; then
echo "Timed out waiting for dashboard banner — last log:" >&2
tail -n 40 "$WRAPPER_OUT" >&2
kill "$WRAPPER_PID" 2>/dev/null || true
rm -f "$WRAPPER_OUT"
exit 1
fi
Print the URL to the session transcript.
If the Playwright MCP is available, navigate to the Vite URL:
mcp__playwright__browser_navigate({ url: "<URL>" })
If Playwright is not available, just print the URL and let the user open it manually.
Leave $WRAPPER_OUT on disk for the remainder of the session (short-lived; the OS cleans $TMPDIR
eventually, and the wrapper's own per-child logs are managed inside the wrapper process).