Back to Skills

skill-authoring-workflow

deanpeters
Updated 2 days ago
8 views
4,511
575
4,511
View on GitHub
Metaautomation

About

This workflow helps developers transform raw product manager content into compliant, publish-ready skills that meet repository standards. It guides the creation or updating of skills from notes, workshops, or prompts while ensuring they pass validation. Use it to reliably author new skills or update existing ones without breaking repo conventions.

Quick Install

Claude Code

Recommended
Primary
npx skills add deanpeters/Product-Manager-Skills -a claude-code
Plugin CommandAlternative
/plugin add https://github.com/deanpeters/Product-Manager-Skills
Git CloneAlternative
git clone https://github.com/deanpeters/Product-Manager-Skills.git ~/.claude/skills/skill-authoring-workflow

Copy and paste this command in Claude Code to install this skill

Documentation

Purpose

Create or update PM skills without chaos. This workflow turns rough notes, workshop content, or half-baked prompt dumps into compliant skills/<skill-name>/SKILL.md assets that actually pass validation and belong in this repo.

Use it when you want to ship a new skill without "looks good to me" roulette.

Key Concepts

Dogfood First

Use repo-native tools and standards before inventing a custom process:

  • scripts/find-a-skill.sh
  • scripts/add-a-skill.sh
  • scripts/build-a-skill.sh
  • scripts/test-a-skill.sh
  • scripts/check-skill-metadata.py

Pick the Right Creation Path

  • Guided wizard (build-a-skill.sh): Best when you have an idea but not final prose.
  • Content-first generator (add-a-skill.sh): Best when you already have source content.
  • Manual edit + validate: Best for tightening an existing skill.

Definition of Done (No Exceptions)

A skill is done only when:

  1. Frontmatter is valid (name, description, intent, type)
  2. Section order is compliant
  3. Metadata limits are respected (name <= 64 chars, description <= 200 chars)
  4. Description says both what the skill does and when to use it
  5. Intent carries the fuller repo-facing summary without replacing the trigger-oriented description
  6. Cross-references resolve
  7. README catalog counts and tables are updated (if adding/removing skills)

Facilitation Source of Truth

When running this workflow as a guided conversation, use workshop-facilitation as the interaction protocol.

It defines:

  • session heads-up + entry mode (Guided, Context dump, Best guess)
  • one-question turns with plain-language prompts
  • progress labels (for example, Context Qx/8 and Scoring Qx/5)
  • interruption handling and pause/resume behavior
  • numbered recommendations at decision points
  • quick-select numbered response options for regular questions (include Other (specify) when useful)

This file defines the workflow sequence and domain-specific outputs. If there is a conflict, follow this file's workflow logic.

Application

Phase 1: Preflight (Avoid Duplicate Work)

  1. Search for overlapping skills:
./scripts/find-a-skill.sh --keyword "<topic>"
  1. Decide type:
  • Component: one artifact/template
  • Interactive: 3-5 adaptive questions + numbered options
  • Workflow: multi-phase orchestration

Phase 2: Generate Draft

If you have source material:

./scripts/add-a-skill.sh research/your-framework.md

If you want guided prompts:

./scripts/build-a-skill.sh

Phase 3: Tighten the Skill

Manually review for:

  • Clear "when to use" guidance
  • One concrete example
  • One explicit anti-pattern
  • No filler or vague consultant-speak

Phase 4: Validate Hard

Run strict checks before thinking about commit:

./scripts/test-a-skill.sh --skill <skill-name> --smoke
python3 scripts/check-skill-metadata.py skills/<skill-name>/SKILL.md
python3 scripts/check-skill-triggers.py skills/<skill-name>/SKILL.md --show-cases

Phase 5: Integrate with Repo Docs

If this is a new skill:

  1. Add it to the correct README category table
  2. Update skill totals and category counts
  3. Verify link paths resolve

Phase 6: Optional Packaging

If targeting Claude custom skill upload:

./scripts/zip-a-skill.sh --skill <skill-name>
# or zip one category:
./scripts/zip-a-skill.sh --type component --output dist/skill-zips
# or use a curated starter preset:
./scripts/zip-a-skill.sh --preset core-pm --output dist/skill-zips

Examples

Example: Turn Workshop Notes into a Skill

Input: research/pricing-workshop-notes.md
Goal: new interactive advisor

./scripts/add-a-skill.sh research/pricing-workshop-notes.md
./scripts/test-a-skill.sh --skill <new-skill-name> --smoke
python3 scripts/check-skill-metadata.py skills/<new-skill-name>/SKILL.md

Expected result:

  • New skill folder exists
  • Skill passes structural and metadata checks
  • README catalog entry added/updated

Anti-Pattern Example

"We wrote a cool skill, skipped validation, forgot README counts, and shipped anyway."

Result:

  • Broken references
  • Inconsistent catalog numbers
  • Confusion for contributors and users

Common Pitfalls

  • Shipping vibes, not standards.
  • Choosing workflow when the task is really a component template.
  • Bloated descriptions that exceed upload limits.
  • Descriptions that say what the skill is but not when Claude should trigger it.
  • Descriptions that silently hit the 200-char limit and get cut off mid-thought.
  • Letting intent become a substitute for a weak trigger description.
  • Forgetting to update README counts after adding a skill.
  • Treating generated output as final without review.

References

  • README.md
  • AGENTS.md
  • CLAUDE.md
  • docs/Building PM Skills.md
  • docs/Add-a-Skill Utility Guide.md
  • Anthropic's Complete Guide to Building Skills for Claude
  • scripts/add-a-skill.sh
  • scripts/build-a-skill.sh
  • scripts/find-a-skill.sh
  • scripts/test-a-skill.sh
  • scripts/check-skill-metadata.py
  • scripts/check-skill-triggers.py
  • scripts/zip-a-skill.sh

GitHub Repository

deanpeters/Product-Manager-Skills
Path: skills/skill-authoring-workflow
0
ai-agentsai-product-managementclaude-skillspm-frameworksproduct-management

Related Skills

content-collections

Meta

This skill provides a production-tested setup for Content Collections, a TypeScript-first tool that transforms Markdown/MDX files into type-safe data collections with Zod validation. Use it when building blogs, documentation sites, or content-heavy Vite + React applications to ensure type safety and automatic content validation. It covers everything from Vite plugin configuration and MDX compilation to deployment optimization and schema validation.

View skill

polymarket

Meta

This skill enables developers to build applications with the Polymarket prediction markets platform, including API integration for trading and market data. It also provides real-time data streaming via WebSocket to monitor live trades and market activity. Use it for implementing trading strategies or creating tools that process live market updates.

View skill

creating-opencode-plugins

Meta

This skill helps developers create OpenCode plugins that hook into 25+ event types like commands, files, and LSP operations. It provides the plugin structure, event API specifications, and implementation patterns for JavaScript/TypeScript modules. Use it when you need to intercept, monitor, or extend the OpenCode AI assistant's lifecycle with custom event-driven logic.

View skill

sglang

Meta

SGLang is a high-performance LLM serving framework that specializes in fast, structured generation for JSON, regex, and agentic workflows using its RadixAttention prefix caching. It delivers significantly faster inference, especially for tasks with repeated prefixes, making it ideal for complex, structured outputs and multi-turn conversations. Choose SGLang over alternatives like vLLM when you need constrained decoding or are building applications with extensive prefix sharing.

View skill