Claude
Skills
Sign in
Back

pub-pipeline

Included with Lifetime
$97 forever

Detect project type and route to the appropriate publication workflow. Routes R packages to the CRAN/JOSS pipeline, Python packages to PyPI publishing, or asks for clarification if ambiguous.

General

What this skill does


# Publication Pipeline Router

Detect the current project type and route to the appropriate publication workflow.

## Detection Logic

Check the current working directory for project type indicators:

| Check | Project Type | Route To |
|-------|-------------|----------|
| `DESCRIPTION` file with `Package:` field | R package | `/r-publish` (the `r-pub-pipeline` skill) |
| `pyproject.toml` or `setup.py` or `setup.cfg` | Python package | `/pypi-publish` (the `pypi-publish` skill) |
| Multiple types detected | Ambiguous | Ask the user which workflow to run |
| None detected | Unknown | Ask the user what they want to publish |

## Workflow

### Step 1: Detect project type (Glob tool)

Search the current directory for:
- `DESCRIPTION` (R package indicator — verify it contains a `Package:` field)
- `pyproject.toml`, `setup.py`, `setup.cfg` (Python package indicators)

### Step 2: Load user config (Read tool)

Read `.claude/pub-pipeline.local.md` if it exists. If missing, inform the user and offer to create one from the template at `${CLAUDE_PLUGIN_ROOT}/docs/user-config-template.md`.

### Step 3: Route

Based on detection, invoke the appropriate ecosystem skill. If the project type is ambiguous (e.g., both `DESCRIPTION` and `pyproject.toml` exist), present options to the user and ask which publication workflow to run.

## Supported Ecosystems

| Ecosystem | Skills | Commands |
|-----------|--------|----------|
| **R packages** | `cran-audit`, `joss-audit`, `joss-draft`, `r-pub-pipeline` | `/cran-audit`, `/joss-audit`, `/joss-draft`, `/r-publish` |
| **Python packages** | `pypi-publish` | `/pypi-publish` |

## Reference Files

- **`${CLAUDE_PLUGIN_ROOT}/docs/user-config-template.md`** — Shared user config template

Related in General