Skip to content

Add publishing-skills (AutomateLab-tech) — Ghost SEO post pipeline#842

Open
ratamaha-git wants to merge 3 commits into
jeremylongshore:mainfrom
ratamaha-git:add-publishing-skills
Open

Add publishing-skills (AutomateLab-tech) — Ghost SEO post pipeline#842
ratamaha-git wants to merge 3 commits into
jeremylongshore:mainfrom
ratamaha-git:add-publishing-skills

Conversation

@ratamaha-git

@ratamaha-git ratamaha-git commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Three composable Claude skills for shipping a long-tail SEO Ghost post end-to-end: topic research, draft & publish, and SVG figure generation.

Summary by CodeRabbit

  • New Features

    • Added publishing-skills plugin to the marketplace featuring four composable content publishing skills: topic research, SEO blog authoring, accessible SVG figure generation, and editorial calendar scheduling—enabling an end-to-end publishing workflow from research through platform publication.
  • Documentation

    • Comprehensive setup, configuration, and integration guides provided for all skills and supported publishing platforms.

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

✅ PR pre-screen: PASS

PASS: no plugin paths matched the PR diff.

Reviewer summary

✅ PASS
PASS: no plugin paths matched the PR diff.
LLM screener unavailable: Groq HTTP 403.
Falling back to deterministic validator output only.
See per-skill table below for full detail.

LLM status: failed: http 403


This is an advisory pre-screen, not a required check. Required checks: validate, marketplace-validation.

4 similar comments
@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

✅ PR pre-screen: PASS

PASS: no plugin paths matched the PR diff.

Reviewer summary

✅ PASS
PASS: no plugin paths matched the PR diff.
LLM screener unavailable: Groq HTTP 403.
Falling back to deterministic validator output only.
See per-skill table below for full detail.

LLM status: failed: http 403


This is an advisory pre-screen, not a required check. Required checks: validate, marketplace-validation.

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

✅ PR pre-screen: PASS

PASS: no plugin paths matched the PR diff.

Reviewer summary

✅ PASS
PASS: no plugin paths matched the PR diff.
LLM screener unavailable: Groq HTTP 403.
Falling back to deterministic validator output only.
See per-skill table below for full detail.

LLM status: failed: http 403


This is an advisory pre-screen, not a required check. Required checks: validate, marketplace-validation.

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

✅ PR pre-screen: PASS

PASS: no plugin paths matched the PR diff.

Reviewer summary

✅ PASS
PASS: no plugin paths matched the PR diff.
LLM screener unavailable: Groq HTTP 403.
Falling back to deterministic validator output only.
See per-skill table below for full detail.

LLM status: failed: http 403


This is an advisory pre-screen, not a required check. Required checks: validate, marketplace-validation.

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

✅ PR pre-screen: PASS

PASS: no plugin paths matched the PR diff.

Reviewer summary

✅ PASS
PASS: no plugin paths matched the PR diff.
LLM screener unavailable: Groq HTTP 403.
Falling back to deterministic validator output only.
See per-skill table below for full detail.

LLM status: failed: http 403


This is an advisory pre-screen, not a required check. Required checks: validate, marketplace-validation.

@codecov

codecov Bot commented Jun 4, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

@@            Coverage Diff             @@
##             main     #842      +/-   ##
==========================================
- Coverage   70.44%   63.79%   -6.66%     
==========================================
  Files          17       39      +22     
  Lines        1570     6189    +4619     
==========================================
+ Hits         1106     3948    +2842     
- Misses        464     2241    +1777     
Flag Coverage Δ
python 63.79% <ø> (-6.66%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
cli ∅ <ø> (∅)
plugin-validator ∅ <ø> (∅)
analytics ∅ <ø> (∅)
marketplace-site ∅ <ø> (∅)
validators 42.18% <ø> (∅)
build-pipeline ∅ <ø> (∅)
freshie ∅ <ø> (∅)
see 40 files with indirect coverage changes
🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

✅ PR pre-screen: PASS

PASS: no plugin paths matched the PR diff.

Reviewer summary

✅ PASS
PASS: no plugin paths matched the PR diff.
LLM screener unavailable: Groq HTTP 403.
Falling back to deterministic validator output only.
See per-skill table below for full detail.

LLM status: failed: http 403


This is an advisory pre-screen, not a required check. Required checks: validate, marketplace-validation.

@jeremylongshore

Copy link
Copy Markdown
Owner

Thanks for submitting publishing-skills. First, the structural blocker: this PR adds an empty plugin shell at plugins/productivity/publishing-skills/ — it has .claude-plugin/plugin.json, README.md, and package.json, but no skills/ directory and no SKILL.md. There's no actual skill content vendored, so the marketplace would list a plugin with nothing inside it.

The fix is to use the external-source mechanism the other community submissions use: add an entry to sources.yaml (repo AutomateLab-tech/publishing-skills, source_path ., your license, category productivity, and an include glob for skills/** + README.md). The sync pipeline then pulls the real SKILL.md content in. Drop the hand-built empty plugins/productivity/publishing-skills/ directory and the marketplace.extended.json edit.

On the upstream itself — the good news, from auditing the repo directly: this is a genuinely strong set of four composable content skills. The bodies are substantive: blog-topic-research enforces a signal-score floor and a no-URL-no-topic hard rule; seo-blog-writer runs a nine-step pipeline with a pre-publish gate (H2-question shape, figure count, bullet discipline, currency qualifier); blog-figure-svg produces accessible SVG with ARIA metadata; and blog-editorial-calendar acts as a corpus-aware scheduler over the other three. None of this is a stub. Tool usage (WebSearch, WebFetch, Bash for Python helpers) is appropriate and non-destructive — no shell-injection patterns, no secret exfiltration, no curl | bash anywhere.

The blocker is purely frontmatter: the Intent Solutions marketplace tier requires 8 fields, and all four SKILL.md files are missing the same 5 of them. Here is exactly what to add to each skill's YAML block (values will vary per skill — these are illustrative):

allowed-tools: WebSearch, WebFetch, Bash(python3:*), Read, Write
author: AutomateLab <hello@automatelab.tech>
license: MIT-0
compatibility: Designed for Claude Code
tags: [seo, content, publishing, blogging]

A few notes on specific skills:

  • blog-topic-research has no system-level tool needs (bins: [] in metadata.openclaw) — the allowed-tools list should reflect WebSearch and WebFetch as the primary drivers, plus Bash only if the optional Python similarity script is invoked.
  • seo-blog-writer and blog-figure-svg declare python3 as a required binary. The allowed-tools field should include Bash(python3:*) (or a more specific pattern) so the marketplace can surface the Python dependency clearly.
  • blog-editorial-calendar lists no required bins — allowed-tools here is likely WebSearch, WebFetch, Read, Write, Bash (for the JSON backlog files).
  • The repo's LICENSE file is MIT-0 (MIT No Attribution). The license field in each SKILL.md should read MIT-0 to match — this is a quick copy from the LICENSE file, not a license change.

Once those five fields are present in all four SKILL.md files, this will clear the marketplace-tier validator at grade A. Happy to review a follow-up iteration.


Audited against the marketplace rubric (frontmatter completeness, license accuracy, tool-safety, real-vs-hollow content). Holding open as request-changes — happy to merge once the above lands.

  • Jeremy Longshore
    intentsolutions.io

…ontent

Address review feedback on PR jeremylongshore#842: drop the empty plugin shell, register publishing-skills in sources.yaml so sync pulls the four SKILL.md files from AutomateLab-tech/publishing-skills, and add the catalog entry via the standard pipeline. Upstream publishing-skills now includes marketplace-tier frontmatter (allowed-tools, author, license, compatibility, tags) on all four skills.

Co-authored-by: Cursor <cursoragent@cursor.com>
@ratamaha-git ratamaha-git force-pushed the add-publishing-skills branch from bcd7c67 to a797ba1 Compare June 19, 2026 07:19
@ratamaha-git

Copy link
Copy Markdown
Contributor Author

Addressed the review feedback in two commits:

Upstream (AutomateLab-tech/publishing-skills @ 43fbe3d)

  • Added marketplace-tier frontmatter to all four skills: allowed-tools, author, license: MIT-0, compatibility, and tags
  • Per-skill allowed-tools tuned to actual dependencies (python3 where declared, Bash for editorial-calendar backlog I/O)

Marketplace PR (this branch, rebased on latest main)

  • Removed the empty hand-built plugins/productivity/publishing-skills/ shell (no more stub plugin.json/package.json)
  • Registered publishing-skills in sources.yaml pointing at AutomateLab-tech/publishing-skills with skills/** + README.md + LICENSE includes
  • Ran external sync to vendor the four real SKILL.md files + references
  • Added the catalog entry via the standard pipeline (minimal diff to marketplace.extended.json / marketplace.json)
  • Updated README productivity count (28) and table row

Ready for re-review.

@coderabbitai

coderabbitai Bot commented Jun 19, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 63d7e6a8-98c9-4b6b-ae36-8a5985809678

📥 Commits

Reviewing files that changed from the base of the PR and between fc8550b and ccd1235.

📒 Files selected for processing (18)
  • .claude-plugin/marketplace.extended.json
  • .claude-plugin/marketplace.json
  • .markdownlint-cli2.jsonc
  • README.md
  • plugins/productivity/publishing-skills/.claude-plugin/plugin.json
  • plugins/productivity/publishing-skills/.source.json
  • plugins/productivity/publishing-skills/LICENSE
  • plugins/productivity/publishing-skills/README.md
  • plugins/productivity/publishing-skills/package.json
  • plugins/productivity/publishing-skills/skills/blog-editorial-calendar/SKILL.md
  • plugins/productivity/publishing-skills/skills/blog-editorial-calendar/backlog.json
  • plugins/productivity/publishing-skills/skills/blog-editorial-calendar/config.json
  • plugins/productivity/publishing-skills/skills/blog-figure-svg/SKILL.md
  • plugins/productivity/publishing-skills/skills/blog-topic-research/SKILL.md
  • plugins/productivity/publishing-skills/skills/seo-blog-writer/SKILL.md
  • plugins/productivity/publishing-skills/skills/seo-blog-writer/references/decorate.js
  • plugins/productivity/publishing-skills/skills/seo-blog-writer/references/glossary-schema.md
  • sources.yaml

📝 Walkthrough

Walkthrough

Adds a new publishing-skills plugin to the marketplace: registers it in both marketplace JSON manifests, sources.yaml, and the repository README catalog, then introduces the full plugin directory with four skill specifications (blog-topic-research, blog-editorial-calendar, blog-figure-svg, seo-blog-writer), their configuration files, and reference assets.

Changes

publishing-skills Plugin

Layer / File(s) Summary
Marketplace registration and plugin metadata
.claude-plugin/marketplace.extended.json, .claude-plugin/marketplace.json, sources.yaml, README.md, plugins/productivity/publishing-skills/.claude-plugin/plugin.json, plugins/productivity/publishing-skills/.source.json, plugins/productivity/publishing-skills/LICENSE, plugins/productivity/publishing-skills/package.json, .markdownlint-cli2.jsonc
Inserts the publishing-skills entry into both marketplace manifests and sources.yaml; bumps the README Productivity count from 27 to 28; adds plugin manifest, sync metadata, MIT-0 license, npm package.json with a postinstall hook, and a markdownlint ignore glob.
Plugin-level README and pipeline overview
plugins/productivity/publishing-skills/README.md
Documents the four-skill SEO publishing pipeline, three installation paths (skills.sh, clawhub, manual), per-skill runtime requirements, optional ai-seo-mcp integration, corpus audit scripts, glossary auto-link injection, and platform-agnostic adapter design.
blog-topic-research skill specification
plugins/productivity/publishing-skills/skills/blog-topic-research/SKILL.md
Defines the complete topic research skill: per-topic output contract, demand-signal taxonomy with scoring tiers, source-mining strategy, end-to-end pipeline steps (cannibalization prep → cluster targets → mining → recursive autocomplete → scaffold distillation → optional DataForSEO enrichment → three-layer validation), backlog append protocol, anti-hallucination guardrails, and non-goals.
blog-editorial-calendar skill specification and config
plugins/productivity/publishing-skills/skills/blog-editorial-calendar/SKILL.md, plugins/productivity/publishing-skills/skills/blog-editorial-calendar/backlog.json, plugins/productivity/publishing-skills/skills/blog-editorial-calendar/config.json
Defines the editorial calendar skill: command surface (next/status/add/mark-done/sync), backlog.json schema with research_proof blob, preflight published-index sync, next dispatch modes (slot/draft/auto-schedule), two-stage cluster-then-format scoring algorithm with recency penalties, backlog refill rules, and sync reconciliation heuristics; includes empty backlog.json and Ghost-targeting config.json.
blog-figure-svg skill specification
plugins/productivity/publishing-skills/skills/blog-figure-svg/SKILL.md
Defines the SVG figure skill: toolchain requirements, five figure variants (flow, compare, taxonomy, terminal, feature) with embedded Python generator scripts, palette/typography/viewBox constraints, SVG accessibility skeleton, rasterization and PNG compression pipeline, CMS embedding rules, and failure mode table.
seo-blog-writer skill specification and reference assets
plugins/productivity/publishing-skills/skills/seo-blog-writer/SKILL.md, plugins/productivity/publishing-skills/skills/seo-blog-writer/references/decorate.js, plugins/productivity/publishing-skills/skills/seo-blog-writer/references/glossary-schema.md
Defines the full end-to-end writer skill pipeline (SERP research → HTML drafting → LLM-tell scrubbing → AI-SEO audit → figure insertion → publish bundle → adapter publishing → live verification) with non-goals and failure modes; adds the decorate.js client-side glossary tooltip script and glossary-schema.md documenting the glossary.json companion format and injector behavior.

Sequence Diagram(s)

sequenceDiagram
  participant User
  participant blog-editorial-calendar
  participant blog-topic-research
  participant seo-blog-writer
  participant blog-figure-svg
  participant CMS

  User->>blog-editorial-calendar: next N
  blog-editorial-calendar->>CMS: refresh published-index.json (adapter list)
  CMS-->>blog-editorial-calendar: live post list
  blog-editorial-calendar->>blog-editorial-calendar: sync reconciliation, compute deficits, score backlog
  alt backlog empty
    blog-editorial-calendar->>blog-topic-research: research 10 --append-to backlog.json
    blog-topic-research-->>blog-editorial-calendar: topics appended
  end
  blog-editorial-calendar->>seo-blog-writer: write post --topic X --publish-at slot
  seo-blog-writer->>blog-figure-svg: generate figures
  blog-figure-svg-->>seo-blog-writer: SVG/PNG files
  seo-blog-writer->>CMS: upload images and publish via adapter
  CMS-->>seo-blog-writer: live URL
  seo-blog-writer-->>blog-editorial-calendar: publish report
  blog-editorial-calendar->>blog-editorial-calendar: mark-done, strip research_proof blob
  blog-editorial-calendar-->>User: N posts published
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested reviewers

  • jeremylongshore

🐇 Four skills hop into the queue,
Research, write, illustrate, then push through!
The backlog fills, the calendar scores,
SVG figures open new doors.
From topic mine to live CMS post—
This rabbit thinks pipelines matter most! 🎉

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The PR title accurately describes the main change: adding the publishing-skills plugin (from AutomateLab-tech) to support a Ghost SEO post publishing pipeline.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

ratamaha-git and others added 2 commits June 19, 2026 08:24
… synced plugin

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants