Plan multi-part content series: structure, cross-linking, cadence.
npx skills add https://github.com/notque/vexjoy-agent --skill series-planner
This skill plans multi-part content series with proper structure, cross-linking, and publishing cadence. It implements a three-phase workflow: ASSESS (determine viability), DECIDE (select structure), and GENERATE (produce plan). Each phase has gates to prevent scope creep, ensure standalone value, and maintain quality constraints.
| Signal | Load These Files | Why |
|---|---|---|
| choosing publication frequency and managing delays | cadence-guidelines.md | Loads detailed guidance from cadence-guidelines.md. |
| series navigation links and Hugo implementation | cross-linking.md | Loads detailed guidance from cross-linking.md. |
| writing the series plan output | output-format.md | Loads detailed guidance from output-format.md. |
| selecting series type, part count, word targets | series-types.md | Loads detailed guidance from series-types.md. |
/series [topic or idea]
/series --type=progressive [topic] # Force series type
/series --parts=5 [topic] # Target part count
/series --with-landing [topic] # Include landing page plan
/series --minimal [topic] # Titles and scope only
Goal: Determine whether the topic is viable as a series and identify natural divisions.
Step 1: Analyze topic
## Series Assessment
Topic: [user-provided topic]
Scope: [narrow / medium / broad]
Natural divisions: [how this topic breaks apart]
Audience progression: [beginner to expert? single level?]
Step 2: Check viability
Verify these constraints before proceeding:
Step 3: Detect series type
Match topic signals to type. See references/series-types.md for full templates.
| Signal | Type |
|--------|------|
| "learn", "master", "deep dive" | Progressive Depth |
| "build", "create", "project" | Chronological Build |
| "why we chose", "migration", "debugging" | Problem Exploration |
Gate: Topic passes viability check with 3+ natural divisions identified. If topic fails viability, recommend single post or scope adjustment. Proceed only when gate passes.
Goal: Select series type, part count, and structure.
Step 1: Select type and justify
## Series Decision
Type: [Progressive Depth / Chronological Build / Problem Exploration]
Justification: [why this type fits]
Part Count: [3-7, enforced strictly]
Total Estimated Words: [X,XXX - X,XXX]
Enforce part count bounds strictly: minimum 3 parts, maximum 7 parts. No exceptions. The 3-7 constraint prevents both over-engineering (splitting one idea across 8+ parts) and under-engineering (calling 2 loosely related posts a "series").
Step 2: Draft part breakdown
For each part, define:
Step 3: Validate standalone value
For EVERY part, verify it passes the standalone test:
Red flags that fail standalone test — reject any part showing these:
This is the failure mode prevention layer. Standalone value is non-negotiable because:
Step 4: Select publishing cadence
See references/cadence-guidelines.md for detailed criteria. Default to weekly unless topic complexity or content depth suggests otherwise.
Gate: All parts pass standalone value check. Part count is strictly 3-7. Type selection justified. Proceed only when gate passes.
Goal: Produce the complete series plan with all metadata.
Step 1: Build series plan
Output the complete plan including:
references/cross-linking.md)Step 2: Final validation
Before outputting, verify all constraints one final time:
Step 3: Output plan
Use the series plan format from references/output-format.md.
Gate: All validation checks pass. Plan is complete and ready for delivery.
Three primary types. Full templates and examples in references/series-types.md.
Shallow-to-deep mastery. Each level is complete; beginners stop at Part 1, advanced readers skip ahead. Enables flexible audience engagement.
Step-by-step creation. Each part produces working output; reader can stop at any milestone and have a working artifact.
Journey from problem to solution. Even failed approaches are instructive; each part teaches something about the journey, not just the destination.
User says: "/series Go error handling"
Actions:
Result: 4-part series where each part teaches complete error handling at its level (beginner can stop at Part 1 and be satisfied; advanced reader skips to patterns).
User says: "/series building a CLI tool in Rust"
Actions:
Result: 4-part series where each part produces a functional artifact (Part 1: runs basic command; Part 2: parses flags; Part 3: config file support; Part 4: distributable binary).
User says: "/series why we migrated from MongoDB to PostgreSQL"
Actions:
Result: 4-part series where even failed approaches deliver instructive value (Part 1: why we needed to move; Part 2: why MongoDB stopped working for us; Part 3: why PostgreSQL migration was hard; Part 4: what we learned).
User says: "/series Go defer statement"
Actions:
Result: Redirect to publish (outline intent) or expanded topic suggestion (publish outline is better for focused single topics).
Cause: Topic doesn't naturally divide into 3+ parts
Solution:
Cause: Would require 8+ parts or scope is unmanageable (violates part count constraint)
Solution:
Cause: Parts don't build on each other meaningfully; just loosely related topics
Solution:
Cause: One or more parts don't stand alone (reader needs previous parts to understand this one)
Solution:
${CLAUDE_SKILL_DIR}/references/series-types.md: Complete type templates with examples and selection criteria${CLAUDE_SKILL_DIR}/references/cross-linking.md: Navigation patterns and Hugo implementation${CLAUDE_SKILL_DIR}/references/cadence-guidelines.md: Publishing frequency recommendations and schedules${CLAUDE_SKILL_DIR}/references/output-format.md: Series plan output format templateThese constraints are non-negotiable and enforced at every phase:
These are gates at each phase. If any constraint fails, the workflow stops and recommends alternative approaches (single post, expanded scope, reduced scope, etc.).
Integration with protocols.io API for managing scientific protocols. This skill should be used when working with protocols.io to search, create, update, or publish protocols; manage protocol steps and materials; handle discussions and comments; organize workspaces; upload and manage files; or integrate protocols.io functionality into workflows. Applicable for protocol discovery, collaborative protocol development, experiment tracking, lab protocol management, and scientific documentation.
Analyzes job descriptions and generates tailored resumes that highlight relevant experience, skills, and achievements to maximize interview chances
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
Build and distribute Expo development clients locally or via TestFlight
Use when you have a written implementation plan to execute in a separate session with review checkpoints
Data structure for annotated matrices in single-cell analysis. Use when working with .h5ad files or integrating with the scverse ecosystem. This is the data format skill—for analysis workflows use scanpy; for probabilistic models use scvi-tools; for population-scale queries use cellxgene-census.
Benchling R&D platform integration. Access registry (DNA, proteins), inventory, ELN entries, workflows via API, build Benchling Apps, query Data Warehouse, for lab data management automation.
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.
Take notque/series-planner from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.