Content Curation
Overview
Present stage:mined content queue issues as a batch for quick human decisions: approve, skip, merge, or edit.
Process
Fetch mined items:
gh issue list --repo jonesrussell/jonesrussell --label "stage:mined" --json number,title,body,createdAt --limit 20
Sort mined items by confidence score (highest first). Extract the confidence value from the **Confidence:** line in each issue body. Items without a confidence value sort last (legacy items from before grouping was implemented).
Validate each mined item. For each fetched issue, extract the structured seed data from the issue body and validate against the mined-seed schema:
node ~/dev/blog/schemas/validate.js mined-seed /tmp/mined-seed-<issue-number>.json
- If validation passes, include in the curation batch.
- If validation fails, flag it to the user: "Issue #N has malformed seed data: . Skipping — fix the issue manually or re-mine."
- Do not silently process malformed items.
Identify the item source and present accordingly. Two distinct item types exist:
Git-activity items (from waaseyaa/framework, waaseyaa/giiken, etc.):
- Show: issue number, title, confidence score, source repo
- Show: commit count (count comma-separated entries in the Commits: line). For items with multiple commits (grouped seeds), show the commit count rather than individual SHAs. The user does not need to see every SHA during curation.
- Show: content seed (what was built/changed), suggested type and channels
- Recommendation: why this makes a good post or why not
- Path: could become blog post OR standalone text-post
North Cloud items (label: source:north-cloud):
- Show with a
[NC] prefix so they're visually distinct
- Show: article title as a link, source domain, quality score, topics
- Recommendation: whether the article is worth amplifying to your audience
- Path: always text-post (sharing, not writing) — no blog post
- Frame the decision as: "Is this worth your audience's attention?"
Ask for a decision on each item:
- Approve — confirm or adjust channels, then build a curated-item JSON and validate:
cat > /tmp/curated-item-<N>.json << 'CURATED'
{
"source": "<from mined seed>",
"source_ref": "<from mined seed>",
"content_seed": "<from mined seed, possibly edited>",
"suggested_type": "<from mined seed>",
"suggested_channels": <from mined seed>,
"mined_at": "<from mined seed>",
"curated_type": "<confirmed type>",
"curated_channels": ["<confirmed channels>"],
"curation_action": "approved",
"curated_at": "<current ISO 8601 timestamp>",
"editorial_notes": "<optional: human notes on angle>"
}
CURATED
node ~/dev/blog/schemas/validate.js curated-item /tmp/curated-item-<N>.json
If validation fails, show the error and fix before proceeding.
If validation passes, update the labels:gh issue edit <N> --repo jonesrussell/jonesrussell --remove-label "stage:mined" --add-label "stage:curated"
After labeling, fetch the source issue for full context, then invoke social-media-posts before writing a single word of copy. This is mandatory — not optional, not "check after." The skill defines platform rules (X char limits, hashtag policy, GitHub link requirements) that cannot be reliably recalled from memory.
- Skip — close the issue immediately to remove it from the queue. This distinguishes intentional skips from auto-expiry (which uses the
auto-expired label).gh issue close <N> --repo jonesrussell/jonesrussell --comment "Skipped during curation."
gh issue edit <N> --repo jonesrussell/jonesrussell --add-label "curate:skipped"
- Merge — combine with another item (ask which one), update the target issue's seed, skip the source
- Edit — update the seed material, type, or channels before approving
Batch summary. After processing all items, report:
- N approved (ready for production)
- N skipped
- N merged
- Suggest running
/content-produce next for the approved items
Presentation Style
Keep it scannable. One item at a time.
Git-activity item:
**#15: [content] SovereigntyProfile shipped in Waaseyaa** (confidence: 0.82)
Source: waaseyaa/framework · 3 commits (2026-04-04)
Seed: Added SovereigntyProfile to Layer 0. Communities declare local/hybrid/cloud sovereignty mode.
Suggested: text-post → x, linkedin, facebook
Good candidate. Concrete feature, ties to data sovereignty narrative.
→ Approve / Skip / Merge / Edit?
North Cloud item:
[NC] **#47: [content] Why your PHP app is slower than it needs to be**
Source: North Cloud · coforge:core · dev.to (quality: 78)
Article: https://dev.to/example/why-your-php-app-is-slower
Topics: php, performance, optimization
Worth sharing. Practical, audience-relevant, no paywall. Good for a quick reshare with a take.
→ Share / Skip / Edit?
When Queue Is Empty
If no stage:mined items exist, say so and suggest:
- Running the mining skill (
/content-mine) to scan recent activity
- Creating a content idea manually via the issue template
1---2name: content-curate3description: Review and curate mined content queue items. Use when user says "curate", "what's in my content queue?", "review content ideas", or "/curate".4---56# Content Curation78## Overview910Present `stage:mined` content queue issues as a batch for quick human decisions: approve, skip, merge, or edit.1112## Process13141. **Fetch mined items:**15 ```bash16 gh issue list --repo jonesrussell/jonesrussell --label "stage:mined" --json number,title,body,createdAt --limit 2017 ```18192. **Sort mined items by confidence score** (highest first). Extract the confidence value from the `**Confidence:**` line in each issue body. Items without a confidence value sort last (legacy items from before grouping was implemented).20213. **Validate each mined item.** For each fetched issue, extract the structured seed data from the issue body and validate against the `mined-seed` schema:22 ```bash23 node ~/dev/blog/schemas/validate.js mined-seed /tmp/mined-seed-<issue-number>.json24 ```25 - If validation **passes**, include in the curation batch.26 - If validation **fails**, flag it to the user: "Issue #N has malformed seed data: <error>. Skipping — fix the issue manually or re-mine."27 - Do not silently process malformed items.28294. **Identify the item source** and present accordingly. Two distinct item types exist:3031 **Git-activity items** (from waaseyaa/framework, waaseyaa/giiken, etc.):32 - Show: issue number, title, confidence score, source repo33 - Show: commit count (count comma-separated entries in the **Commits:** line). For items with multiple commits (grouped seeds), show the commit count rather than individual SHAs. The user does not need to see every SHA during curation.34 - Show: content seed (what was built/changed), suggested type and channels35 - Recommendation: why this makes a good post or why not36 - Path: could become blog post OR standalone text-post3738 **North Cloud items** (label: `source:north-cloud`):39 - Show with a `[NC]` prefix so they're visually distinct40 - Show: article title as a link, source domain, quality score, topics41 - Recommendation: whether the article is worth amplifying to your audience42 - Path: always text-post (sharing, not writing) — no blog post43 - Frame the decision as: "Is this worth your audience's attention?"44455. **Ask for a decision on each item:**46 - **Approve** — confirm or adjust channels, then build a curated-item JSON and validate:47 ```bash48 cat > /tmp/curated-item-<N>.json << 'CURATED'49 {50 "source": "<from mined seed>",51 "source_ref": "<from mined seed>",52 "content_seed": "<from mined seed, possibly edited>",53 "suggested_type": "<from mined seed>",54 "suggested_channels": <from mined seed>,55 "mined_at": "<from mined seed>",56 "curated_type": "<confirmed type>",57 "curated_channels": ["<confirmed channels>"],58 "curation_action": "approved",59 "curated_at": "<current ISO 8601 timestamp>",60 "editorial_notes": "<optional: human notes on angle>"61 }62 CURATED63 node ~/dev/blog/schemas/validate.js curated-item /tmp/curated-item-<N>.json64 ```65 If validation **fails**, show the error and fix before proceeding.66 If validation **passes**, update the labels:67 ```bash68 gh issue edit <N> --repo jonesrussell/jonesrussell --remove-label "stage:mined" --add-label "stage:curated"69 ```70 After labeling, fetch the source issue for full context, then invoke `social-media-posts` before writing a single word of copy. This is mandatory — not optional, not "check after." The skill defines platform rules (X char limits, hashtag policy, GitHub link requirements) that cannot be reliably recalled from memory.71 - **Skip** — close the issue immediately to remove it from the queue. This distinguishes intentional skips from auto-expiry (which uses the `auto-expired` label).72 ```bash73 gh issue close <N> --repo jonesrussell/jonesrussell --comment "Skipped during curation."74 gh issue edit <N> --repo jonesrussell/jonesrussell --add-label "curate:skipped"75 ```76 - **Merge** — combine with another item (ask which one), update the target issue's seed, skip the source77 - **Edit** — update the seed material, type, or channels before approving78796. **Batch summary.** After processing all items, report:80 - N approved (ready for production)81 - N skipped82 - N merged83 - Suggest running `/content-produce` next for the approved items8485## Presentation Style8687Keep it scannable. One item at a time.8889**Git-activity item:**90```91**#15: [content] SovereigntyProfile shipped in Waaseyaa** (confidence: 0.82)92Source: waaseyaa/framework · 3 commits (2026-04-04)93Seed: Added SovereigntyProfile to Layer 0. Communities declare local/hybrid/cloud sovereignty mode.94Suggested: text-post → x, linkedin, facebook9596Good candidate. Concrete feature, ties to data sovereignty narrative.9798→ Approve / Skip / Merge / Edit?99```100101**North Cloud item:**102```103[NC] **#47: [content] Why your PHP app is slower than it needs to be**104Source: North Cloud · coforge:core · dev.to (quality: 78)105Article: https://dev.to/example/why-your-php-app-is-slower106Topics: php, performance, optimization107108Worth sharing. Practical, audience-relevant, no paywall. Good for a quick reshare with a take.109110→ Share / Skip / Edit?111```112113## When Queue Is Empty114115If no `stage:mined` items exist, say so and suggest:116- Running the mining skill (`/content-mine`) to scan recent activity117- Creating a content idea manually via the issue template