ptp-parallel-fanout

Defines when concurrent agent runs may overlap and how their results are joined.

Updated Jun 8, 2026
One-click install
npx skills add https://github.com/AlmogMaayan/ptp --skill ptp-parallel-fanout-almogmaayan
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: ptp-parallel-fanout
Source: https://github.com/AlmogMaayan/ptp/tree/main/skills/ptp-parallel-fanout
Command: npx skills add https://github.com/AlmogMaayan/ptp --skill ptp-parallel-fanout-almogmaayan

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Running per-item pipeline stages serially costs wall-clock time linear in the number of items, but naive parallelization risks write conflicts, git state corruption, and nondeterministic reports. This contract states exactly when a caller may fan work out across concurrent agents and what obligations it must satisfy. ## Core Features & Use Cases - Four safety conditions: Provably disjoint write sets, no git state changes in members, order-independent aggregation sorted by change id, and join-then-gate semantics. - Config-driven control: parallel.mode (off/on, default off) and parallel.maxConcurrency (1-10, default 3) resolve through layered ptp config with a forgiving reader that never throws. - Per-invocation token: A parallel:on|off token overrides the resolved mode for one invocation without persisting anything, and can never override the safety conditions. - Use Case: When planning multiple OpenSpec change slices via /ptp:plan-multiple, a caller with pre-allocated change ids can run up to 3 members concurrently in joined batches, producing a byte-stable report identical to a serial run. ## Quick Start Ask the AI to plan multiple OpenSpec change slices in parallel using the parallel:on token with a concurrency cap of three.

Frequently Asked Questions about ptp-parallel-fanout

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run multiple pipeline items in parallel with concurrent agents?▼

Set parallel.mode to on in layered ptp config or pass the parallel:on token for one invocation. The caller must first establish all four safety conditions: disjoint write sets, no git state changes, order-independent aggregation, and join-then-gate semantics.

What is the difference between parallel:on token and parallel.mode config?▼

The parallel:on token overrides the resolved config for a single invocation and persists nothing, while parallel.mode is the durable config default. An absent token means config applies; an explicit parallel:off forces serial regardless of config.

Can parallel fan-out be used for code apply or archive stages?▼

No. The apply and archive stages are permanently excluded because they write shared source files or merge into the shared openspec/specs tree, so they cannot establish disjoint write sets and always run sequentially.

What happens if parallel.maxConcurrency has an invalid value?▼

Invalid values such as 0, 2.5, or 11 are ignored and the previously resolved value stands, ultimately defaulting to 3. Resolution never throws and never stops the command over a configuration typo.

Why does fan-out use batches instead of a rolling concurrency window?▼

Batching joins each group of members before starting the next, making the observable interleaving independent of completion times. This keeps aggregation deterministic and telemetry attribution simple, at the cost of at most one straggler wait.