一键导入
blog-dashboard
Start or stop the blog pipeline Kanban dashboard (Flask app at dashboard/app.py, served on http://localhost:5001).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Start or stop the blog pipeline Kanban dashboard (Flask app at dashboard/app.py, served on http://localhost:5001).
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Manage the blog.postman.com editorial calendar — list, reschedule, view monthly counts, or get a YTD summary. Enforces Tue/Thu-first scheduling with no conflicts or US public holidays.
Show the number of blog posts published on blog.postman.com between two dates. Prompts for a start and end date, then queries WordPress and displays the count with a post listing, broken down by month and author.
Copy edit blog post output for grammar, syntax errors, repetitive sentence structures, and SEO optimization. Suggests an SEO-friendly title and 150-character meta description. Runs automatically as a hook after blog-write, or standalone via /blog-copyeditor [filename].
Convert a Google Doc to a blog-ready markdown file with images. Takes a Google Docs URL, exports the content as markdown, downloads embedded images, and saves everything to blog-output/.
Clean up the blog pipeline Kanban dashboard — removes cards that are stuck before the staging column (ideas, creating substages). Leaves cards in staging, review, and scheduled untouched.
Generate a Postman-branded blog header image (2560×1355 PNG, no text) using the Gemini image generation API (nanobanana). Analyzes reference images and follows the Postman design system for consistent brand visuals.
| name | blog-dashboard |
| description | Start or stop the blog pipeline Kanban dashboard (Flask app at dashboard/app.py, served on http://localhost:5001). |
| argument-hint | start|stop |
| allowed-tools | ["Bash"] |
Start or stop the local Flask dashboard that visualizes the blog pipeline Kanban board. The dashboard itself never runs skills directly — it just watches blog-output/ and dashboard/state.json and spawns agents via queue.json. See dashboard/README.md for the full architecture.
Resolve <plugin-root> the same way other dashboard-touching skills do: the directory containing dashboard/app.py, either the current plugin root or CLAUDE_PLUGIN_ROOT if set.
The action is the first argument (start or stop). If missing or not one of those two, ask the user which one they meant — do not guess.
Check if it's already running:
lsof -i :5001 -sTCP:LISTEN -t
If this returns a PID, tell the user the dashboard is already running at http://localhost:5001 and stop — do not start a second instance.
Ensure the virtualenv exists. If <plugin-root>/dashboard/.venv is missing, create it and install deps:
cd <plugin-root>/dashboard && python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
Launch the app in the background, logging output and capturing its PID so stop can find it later. Put the cd on its own line — chaining it as cd dir && nohup ... & backgrounds the whole cd && nohup pair in a subshell, so the following echo $! line runs in the wrong directory and writes the pidfile to the wrong place:
cd <plugin-root>/dashboard
nohup .venv/bin/python app.py > .dashboard.log 2>&1 &
echo $! > .dashboard.pid
Run this with the Bash tool's run_in_background unset (it's already detached via nohup ... &) — just run it and move on, don't block on it.
Give the server a moment to bind, then confirm:
sleep 1 && lsof -i :5001 -sTCP:LISTEN -t
If a PID comes back, tell the user the dashboard is running at http://localhost:5001. If not, read the last ~20 lines of dashboard/.dashboard.log and show the user what went wrong (commonly: missing venv deps, or missing WP_APP_PASSWORD/GEMINI_API_KEY env vars — see dashboard/README.md prerequisites).
Find the listening process:
lsof -i :5001 -sTCP:LISTEN -t
If nothing is returned, tell the user the dashboard isn't running and stop.
Kill it:
kill $(lsof -i :5001 -sTCP:LISTEN -t)
Clean up the pidfile if present:
rm -f <plugin-root>/dashboard/.dashboard.pid
Confirm to the user that the dashboard has been stopped.
lsof, not just the pidfile — the pidfile can go stale if the process was killed out-of-band or the machine restarted.dashboard/state.json, queue.json, or blog-output/ from this skill — that's /blog-dashboard-cleanup's job, and normal pipeline operation otherwise.