Claude-skill-registry article-queue
Manage article task queue - add, filter, update status, and track multi-language outputs
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/article-queue" ~/.claude/skills/majiayu000-claude-skill-registry-article-queue && rm -rf "$T"
manifest:
skills/data/article-queue/SKILL.mdsource content
Article Queue
Manage
.article_writer/article_tasks.json for article creation.
File Locations
- Queue:
.article_writer/article_tasks.json - Authors:
.article_writer/authors.json - Schema:
.article_writer/schemas/article-tasks.schema.json - Backup:
.article_writer/article_tasks.backup.json
Schema Reference
See references/schema-reference.md for fields.
Key Fields
Author Reference
{ "author": { "id": "mwguerra", "name": "MW Guerra", "languages": ["pt_BR", "en_US"] } }
If author not specified, first author in authors.json is used.
Output Files (per language)
{ "output_folder": "content/articles/2025_01_15_rate-limiting/", "output_files": [ { "language": "pt_BR", "path": "content/articles/2025_01_15_rate-limiting/rate-limiting.pt_BR.md", "translated_at": "2025-01-15T14:00:00Z" }, { "language": "en_US", "path": "content/articles/2025_01_15_rate-limiting/rate-limiting.en_US.md", "translated_at": "2025-01-15T16:00:00Z" } ] }
Timestamps
: When task was added to queuecreated_at
: When primary article was completedwritten_at
: When article went livepublished_at
: Last modificationupdated_at
Operations
Status Summary
bun run "${CLAUDE_PLUGIN_ROOT}"/scripts/queue.ts status
Filter by Author
articles.filter(a => a.author?.id === "mwguerra")
Filter by Language
articles.filter(a => a.author?.languages?.includes("en_US") )
Update After Writing
article.status = "draft"; article.output_folder = "content/articles/2025_01_15_slug/"; article.output_files = [ { language: "pt_BR", path: "...", translated_at: "..." } ]; article.written_at = new Date().toISOString(); article.updated_at = new Date().toISOString();
Add Translation
article.output_files.push({ language: "en_US", path: "content/articles/.../article.en_US.md", translated_at: new Date().toISOString() });
Status Flow
pending → in_progress → draft → review → published ↓ archived
Default Author
When adding tasks without author:
- Load authors.json
- Use first author's id, name, languages
- Store reference in task
const authors = JSON.parse(await readFile(".article_writer/authors.json")); const defaultAuthor = authors.authors[0]; task.author = { id: defaultAuthor.id, name: defaultAuthor.name, languages: defaultAuthor.languages };
Validation
Before processing:
- Verify author.id exists in authors.json
- Validate languages are subset of author's languages
- Check all required fields present