Best for
- User asks for blog ideas or content inspiration
- User wants to turn recent work into blog posts
- User says "what can I write about" or "find blog material"
jackchuka/skills/p-blog-post-mining/SKILL.md
Mine development activities for blog-worthy topics and create outlines. Analyzes Claude session history, GitHub commits/PRs, Slack discussions, and Fireflies meeting recordings to find interesting stories. Use when the user wants blog ideas, content inspiration, or asks "what can I write about", "find blog material", "blog ideas from my work", "/blog-post-mining".
Decision brief
Mine development activities for blog-worthy topics and create outlines. Analyzes Claude session history, GitHub commits/PRs, Slack discussions, and Fireflies meeting recordings to find interesting stories.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/jackchuka/skills --skill "p-blog-post-mining"Inspect the Agent Skill "p-blog-post-mining" from https://github.com/jackchuka/skills/blob/7b0b33f68b8f11522e43622e5cb3bacd802999d2/p-blog-post-mining/SKILL.md at commit 7b0b33f68b8f11522e43622e5cb3bacd802999d2. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Locate this skill's directory (the folder containing this SKILL.md), then run the resolver script from there:
All four sources are independent. Dispatch all four data collection tasks concurrently (parallelize if possible). If your platform supports parallel subagents, launch one per source. Otherwise, query each sequentially. Wait for all sources to return before proceeding to Step 2.
All four sources are independent. Dispatch all four data collection tasks concurrently (parallelize if possible). If your platform supports parallel subagents, launch one per source. Otherwise, query each sequentially. Wait for all sources to return before proceeding to Step 2.
Analyze collected data through these lenses:
Show the top 5-8 candidates as a numbered list:
Permission review
The documentation asks the agent to run terminal commands or scripts.
python <skill-dir>/scripts/skillctx-resolve.py resolve p-blog-post-miningThe documentation asks the agent to run terminal commands or scripts.
python <skill-dir>/scripts/skillctx-resolve.py set p-blog-post-mining <key> <value>The documentation asks the agent to create, modify, or delete local files.
Create the directory if it doesn't exist. Report the file paths to the user.Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 89/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 15 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Locate this skill's directory (the folder containing this SKILL.md), then run the resolver script from there:
python <skill-dir>/scripts/skillctx-resolve.py resolve p-blog-post-mining
The resolver outputs each binding as key: value (one per line). Substitute each {binding_key} placeholder below with the resolved value.
If any values are missing or the user requests changes, use:
python <skill-dir>/scripts/skillctx-resolve.py set p-blog-post-mining <key> <value>
Analyze recent development activities across multiple sources to discover blog-worthy topics, then produce structured outlines ready for writing.
{claude_history_path} exists (Claude Code session history)gh CLI installed and authenticated (GitHub activity)Parse from the user's invocation:
All four sources are independent. Dispatch all four data collection tasks concurrently (parallelize if possible). If your platform supports parallel subagents, launch one per source. Otherwise, query each sequentially. Wait for all sources to return before proceeding to Step 2.
Source 1 — Claude Session History:
Read {claude_history_path} and filter entries by timestamp for the target date range.
Group by sessionId and extract:
Focus on sessions with 5+ messages — these represent substantial work, not quick one-offs.
Source 2 — GitHub Activity:
gh api graphql -f query='
query {
viewer {
contributionsCollection(from: "{start_date}T00:00:00Z", to: "{end_date}T00:00:00Z") {
commitContributionsByRepository {
repository { nameWithOwner description }
contributions { totalCount }
}
pullRequestContributions(first: 50) {
nodes {
pullRequest {
title body url state number
repository { nameWithOwner }
}
}
}
}
}
}'
For repos with significant commit counts, fetch commit messages:
gh api "repos/{owner}/{repo}/commits?author={user}&since={start}&until={end}" \
--jq '.[] | "\(.commit.message | split("\n") | .[0])"'
Source 3 — Slack Discussions:
Use Slack MCP tools:
slack_read_user_profile() (no args) to get the current user's IDslack_search_public_and_private with "from:me after:{start_date}" — find substantive messages you wroteSource 4 — Fireflies Meetings (if available):
fireflies_get_transcripts for the date rangefireflies_get_summary for each meeting (parallelize if possible — each call is independent) — look for decisions, debates, and interesting topics discussedSYNC: Wait for all sources to return before proceeding. If a source is unavailable (e.g., no Fireflies MCP server, gh not authenticated), skip it and note the omission — do not fail the entire gathering step.
Deduplicate: Before analysis, deduplicate across sources — the same PR may appear in both GitHub and Slack data, the same topic may surface in both Claude history and a meeting. Use PR URLs and commit SHAs as primary keys.
Analyze collected data through these lenses:
Story Types (check each against the data):
| Type | Signal | Example |
|---|---|---|
| Problem-Solution | Multiple sessions debugging the same issue, then a breakthrough | "How I debugged TUI spinner animation across 5 sessions" |
| Tool/Process Creation | New tool built from scratch (new-tool-kickoff flow) | "Building a CLI restaurant finder with Go + HotPepper API" |
| Architecture Decision | Significant design choice with trade-offs discussed | "Why we chose CQRS for our ERP module framework" |
| Failure Story | Repeated attempts, wrong approaches, eventual resolution | "What I learned from trying to mock APIs with LLMs" |
| Workflow Optimization | Creating a skill/automation that saves recurring effort | "Automating OSS releases across 13 repos with a Claude skill" |
| Team Practice | Process or convention established across the team | "Introducing spec-driven development with erp-kit" |
| Comparison/Evaluation | Research sessions comparing tools or approaches | "Comparing TUI frameworks for Git repository visualization" |
Scoring criteria (internal, don't show to user):
Show the top 5-8 candidates as a numbered list:
Blog Post Candidates:
1. [Title] — [1-line pitch]
Sources: [which data sources contributed]
Depth: [how much material is available]
2. [Title] — [1-line pitch]
Sources: [sources]
Depth: [depth]
...
Group by story type if there are many candidates.
Ask: "Which topics interest you? (e.g., '1, 3, 5' or suggest your own angle)"
If multiple topics are selected, generate all outlines concurrently (parallelize if possible) — each outline is independent.
For each selected topic, generate a structured outline:
# [Blog Post Title]
## Angle
[1-2 sentences: what's the unique perspective or takeaway]
## Target Audience
[Who would read this and why]
## Outline
### Introduction
- [Hook: the problem or situation that draws the reader in]
- [Why this matters]
### [Section 1: Context/Setup]
- [Key points from the gathered data]
### [Section 2: The Journey/Process]
- [What happened, what was tried]
- [Include specific details from sessions/commits — sanitized]
### [Section 3: Solution/Insight]
- [What worked and why]
- [Code snippets or architecture decisions if relevant]
### [Section 4: Lessons Learned]
- [What would you do differently]
- [Advice for others facing similar challenges]
### Conclusion
- [Key takeaway]
- [Call to action or next steps]
## Supporting Material
- [Relevant PRs/commits that could be referenced]
- [Related tools or links]
## Estimated Length
[Short (800-1200 words) / Medium (1500-2500 words) / Long (3000+ words)]
Write each outline to:
{blog_drafts_dir}/{topic-slug}.md
Create the directory if it doesn't exist. Report the file paths to the user.
Example 1: General mining
User: "/blog-post-mining"
Action: Analyze past 14 days across all sources, find 5-8 candidates, present list
Example 2: Focused mining
User: "find blog material about AI tooling from the past month"
Action: Analyze past 30 days, filter for AI/tooling topics, find candidates
Example 3: Company blog
User: "any blog material for our company blog? past 2 weeks"
Action: Analyze past 14 days, focus on team-relevant topics, adjust tone for company audience
Example 4: From a specific project
User: "blog ideas from working on <project name> this month"
Action: Filter history for <project name> project sessions, analyze the build journey
Alternatives
event4u-app/agent-config
Use when the user says "review the design", "check the UI", or wants a comprehensive UI/UX review. Uses a 7-phase methodology covering interaction, responsiveness, accessibility, and more.
K-Dense-AI/scientific-agent-skills
Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.
K-Dense-AI/scientific-agent-skills
Medicinal chemistry filters for compound triage. Apply drug-likeness rules (Lipinski, Veber, CNS), structural alert catalogs (PAINS, NIBR, ChEMBL), complexity metrics, and the medchem query language for library filtering.
K-Dense-AI/scientific-agent-skills
Use NeuroKit2 to build or audit reproducible research workflows for physiological time-series preprocessing, event/interval analysis, multimodal alignment, variability, and complexity. Trigger when code imports neurokit2 or needs its current APIs, schemas, and method-aware validation—not for diagnosis or device validation.