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.
Installs into .claude/skills of the current project.
Are you the author of Pub Pipeline?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/queelius-pub-pipeline)
---
name: pub-pipeline
description: >-
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.
---
# 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) |
| `.tex` sources plus a built `.pdf`, no package files | Academic paper | Not handled here: tell the user this looks like a paper and point at the papermill plugin |
| 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)
- `*.tex` plus a built `*.pdf` with neither of the above (academic paper: route the user to papermill)
### 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