Skip to content
Back to skills

Para Pipeline

ASecurity

Render the board for every lifecycle the vault declares - each entity at its stage with days in stage, its next dated step and where it came from, the flags for what has stopped moving, the counts by stage and the quarter's metrics - closing on one next action. Use when the user asks "where does the pipeline stand", "what is in the funnel", "which deals have gone quiet", "what stage is <name> at", "show me the property pipeline", or types /para-pipeline [<lifecycle>].

  • 4 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
ai-agentspythongoshellbash

Works with

  • terminal

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned October 7, 2026

npx -y skills add Vinedine/para-os --skill para-pipeline --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Para Pipeline?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Para Pipeline
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vinedine-para-pipeline/badge)](https://www.skillsdirectory.com/skills/vinedine-para-pipeline)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: para-pipeline
description: Render the board for every lifecycle the vault declares - each entity at its stage with days in stage, its next dated step and where it came from, the flags for what has stopped moving, the counts by stage and the quarter's metrics - closing on one next action. Use when the user asks "where does the pipeline stand", "what is in the funnel", "which deals have gone quiet", "what stage is <name> at", "show me the property pipeline", or types /para-pipeline [<lifecycle>].
allowed-tools: Bash, PowerShell, Glob, Grep, Read
argument-hint: '[<lifecycle>] [--test]'
---

# Para pipeline

The board for **staged entities**: every lifecycle the vault declares, each entity at its stage, the next step and its date, what has stopped moving, and what the quarter did.

**Read-only contract.** It reports; the operator moves the entity, and a flag here is what prompts the edit.

**This skill is vault-agnostic.** It knows only declared lifecycles and Stage lines, whose contract is [para-shared/lifecycles.md](../para-shared/lifecycles.md). No stage name or home is hardcoded.

**Operator-language output.** Every line is readable by someone who has not seen this skill: the vault's own entity and stage names, no bucket jargon beyond the section titles.

## Arguments

| Arg | Renders |
|---|---|
| *(none)* | Every declared lifecycle in turn: board, flags, counts, metrics, one closing next action |
| `<lifecycle>` | One lifecycle, matched on its heading noun (`deal`) or its heading text (`Deal lifecycle`), case-insensitively. Everything else is the same |
| `--test` | Test run, see [para-shared/test-run.md](../para-shared/test-run.md). |

**A leftover argument is a lifecycle name only when it reads like one**: one or two words carrying no sentence punctuation. Anything longer is prose the operator wrapped around the invocation: where it names a lifecycle noun ("the property pipeline"), that noun is the argument; otherwise take every lifecycle and treat the prose as an instruction for this run. A name matching no declared lifecycle is asked about, never widened to all of them, and a vault declaring only one is no exception.

## Procedure

### Step 1: Read the declarations

Resolve the vault root per [operating-discipline.md](../para-shared/operating-discipline.md#defer-to-the-vault), then verify it: `projects/` plus at least one of `areas/` `archive/`, and a `CLAUDE.md`. If it is not one, stop and say so, naming the path you actually checked.

Read the vault's `CLAUDE.md` and collect every section whose heading ends in `lifecycle`, parsing each table by [para-shared/lifecycles.md](../para-shared/lifecycles.md). Also read the rule file each lifecycle's entity documents load, which is what names their header fields.

**A vault that declares none has nothing to render.** Say so in one line, name the two places a lifecycle comes from (a flavor, a module), and stop. Never infer stages from folder names.

**A lifecycle argument is matched here**, against the declared headings and nouns as the script would. On no match, ask which declared lifecycle was meant, naming them, and stop: no board renders in the same reply.

### Steps 2 and 3: Scan the homes, resolve each entity

One call per lifecycle scope, after Step 1 has the declared lifecycles, per [para-shared/scripts.md](../para-shared/scripts.md):

```bash
# Windows: py -3
python3 "<this skill's base directory>/scripts/pipeline_scan.py" --vault <root> [--lifecycle <name>] [--today YYYY-MM-DD] > <scan output path>
```

Pass `--lifecycle` only under a lifecycle scope. Exit 3 is a `--lifecycle` matching no declared heading or noun (`{"error": "no such lifecycle", "declared": [...]}`): stop and ask, as in Step 1. **Field table, and the by-hand fallback where the script cannot run: [references/scan.md](references/scan.md).**

### Step 4: Render

Word what the script computed into the board by stage, the flags, the counts, the per-lifecycle metrics and the single next action that closes the run - no new reading. **Full spec: [references/render.md](references/render.md).**

## Strict rules

- **Never edit a vault file.** Not a stage, not a `Last touch`, not a missing reason line, not a checkbox. Every flag names what the operator should change, and this skill changes none of it.
- **Never invent a stage, a date or a next step.** An entity with no `since` has an unknown time in stage and says so; an entity with no next step is flagged, never given one.
- **Never rank, score or weight an entity.** The board is ordered by the vault's own stage order, then by days in stage. No probability, no forecast, no weighted value: a pipeline of a dozen entities is read, not modelled.
- **Never follow a link for extra context** beyond the next-step sources in [references/scan.md](references/scan.md) Step 3 and the title of a contact a `Source` line links.
- **Never report an archived entity as live.** A terminal stage feeds the metrics and the reason it records, nothing else.
- **Never widen the scan past the declared homes.** An entity carrying a Stage line outside them is not in the lifecycle, and a stage text matching no declared name is passed over silently.
- **A value figure is internal.** It renders in the terminal, never into a file, and never into anything shared outside the vault.

## Edge cases

- **A declared home that does not exist yet** (the register file, an `archive/` folder): count it as empty and say so once, rather than reporting an error per stage.
- **An entity whose folder sits in the wrong home for its stage**: render it under the stage its Stage line names and flag the mismatch, naming both paths.
- **Two entities with the same name** in different homes: render both, each with its path, and flag the collision.
- **A document in a declared home with no Stage line** (`no_stage`) **or a Stage line naming no declared stage** (`unknown_stage`, with the name read): list it by path under a closing line. Only one that looks like a filing gap is reported, never an ordinary project or area sharing the home ([scan.md](references/scan.md) Step 2).
- **A register row missing a column** the table declares: render what it has, and flag the row rather than dropping it.
- **A lifecycle with no live entity at all**: say in one line that nothing is live. An empty pipeline is a real answer.

## Related skills

- `/para-daily-brief` - the same read-only contract over the vault's tasks. It carries one counts line per lifecycle and points here for the board.
- `/para-new` - creates a staged entity at the first stage's home, with its Stage line.
- `/para-archive` - the move into a terminal stage, which it refuses unless the Stage line and the reason are there.

Files in this skill

  • SKILL.md7.5 KB
  • references/render.md5.3 KB
  • references/scan.md7 KB
  • scripts/pipeline_scan.py26 KB
  • scripts/test_pipeline_scan.py28 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.