Agent skill

Ortools Pickup Delivery Routing

by benchflow-ai in benchflow-ai/skillsbench

Model OR-Tools paired pickup-and-delivery routing problems, including PDPTW, dial-a-ride, paratransit, patient transport, and courier jobs with same-vehicle pairing, precedence, capacity, optional…

Apache-2.0Auto-check passed

Install Ortools Pickup Delivery Routing

skills CLI
$ npx skills add benchflow-ai/skillsbench --skill ortools-pickup-delivery-routing -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install benchflow-ai/skillsbench ortools-pickup-delivery-routing --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/benchflow-ai/skillsbench.git skills-src && mkdir -p .claude/skills && cp -r skills-src/tasks/paratransit-routing/environment/skills/ortools-pickup-delivery-routing .claude/skills/ortools-pickup-delivery-routing && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
ortools-pickup-delivery-routing
GitHub stars
1.8k
Token cost
~2k tokens
SKILL.md length
784 words
Files
1
Skills in repo
189
Repo updated
First seen
Licence
Apache-2.0

At a glance

Model OR-Tools paired pickup-and-delivery routing problems, including PDPTW, dial-a-ride, paratransit, patient transport, and courier jobs with same-vehicle pairing, precedence, capacity, optional…

  • Works in 5 steps: Create one pickup node and one dropoff… → Add same-vehicle and precedence… → Apply the customer-facing time windows… → …
  • SKILL.md covers Implementation Flow, Pair Structure, Time Windows And Service Times and Pair Constraint Skeleton, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Ortools Pickup Delivery Routing is an agent skill from benchflow-ai/skillsbench. Model OR-Tools paired pickup-and-delivery routing problems, including PDPTW, dial-a-ride, paratransit, patient transport, and courier jobs with same-vehicle pairing, precedence, capacity, optional connected service, rider time windows, and vehicle shifts.

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: SkillsBench evaluates how well skills work and how effective agents are at using them. The licence is Apache-2.0.

Example prompts

  • “/ortools-pickup-delivery-routing”

Requirements

  • Python 3

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Create one pickup node and one dropoff node per job.
  2. Add same-vehicle and precedence constraints for every pair.
  3. Apply the customer-facing time windows and service-time convention from the problem statement.
  4. Choose optional-service handling: independent pairs, or connected request sets.
  5. After solving, postprocess connected sets, rebuild route sequences if needed, and re-audit feasibility before counting served jobs or…

What it can do on your machine

Read from SKILL.md and the folder at commit 9a1f4dd. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Ortools Pickup Delivery Routing loads about 2k tokens when it runs. Until then it costs about 72 tokens; SKILL.md has 784 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~72
When it runs · the whole SKILL.md, loaded when a task matches
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from benchflow-ai/skillsbench at commit 9a1f4dd, republished under its Apache-2.0 licence (© benchflow-ai). 784 words, ~1,980 tokens.

Download SKILL.mdSave it as .claude/skills/ortools-pickup-delivery-routing/SKILL.md (or your agent's skills folder).
name
ortools-pickup-delivery-routing
description
Model OR-Tools paired pickup-and-delivery routing problems, including PDPTW, dial-a-ride, paratransit, patient transport, and courier jobs with same-vehicle pairing, precedence, capacity, optional connected service, rider time windows, and vehicle shifts.

Pickup And Delivery Routing

Use this skill when each job has related pickup and dropoff or delivery events that must be served together. Apply it after the base routing model has a time dimension and before solving.

Implementation Flow

  1. Create one pickup node and one dropoff node per job.
  2. Add same-vehicle and precedence constraints for every pair.
  3. Apply the customer-facing time windows and service-time convention from the problem statement.
  4. Choose optional-service handling: independent pairs, or connected request sets.
  5. After solving, postprocess connected sets, rebuild route sequences if needed, and re-audit feasibility before counting served jobs or writing output.

Pair Structure

  • Represent pickup and dropoff as separate service nodes connected by a shared job ID.
  • Pickup demand is positive; dropoff demand is negative. Depot nodes have zero demand and zero service time.
  • Add routing.AddPickupAndDelivery(pickup_index, dropoff_index) for each pair.
  • Add explicit constraints for the actual business rules:
    • same vehicle: routing.VehicleVar(pickup_index) == routing.VehicleVar(dropoff_index)
    • pickup before dropoff: time_dimension.CumulVar(pickup_index) <= time_dimension.CumulVar(dropoff_index)

Time Windows And Service Times

  • Apply customer time windows to the service event promised to the customer. Appointment and dial-a-ride problems often constrain dropoff arrival; pickup windows can be derived by subtracting direct pickup-to-dropoff travel time from the dropoff window.
  • If a problem statement gives explicit pickup and dropoff time-window formulas, implement those formulas directly. Service time belongs in the time transit from a node to the next node; do not change the stated window formula to compensate for service time unless the problem explicitly says to.

Pair Constraint Skeleton

Use this pattern after adding the time dimension. It enforces the paired-service relationship for each job. Add optional-service logic separately after deciding whether jobs are independent pairs or members of connected request sets.

python
solver = routing.solver()

for job in jobs:
    pickup_index = manager.NodeToIndex(job.pickup_node)
    dropoff_index = manager.NodeToIndex(job.dropoff_node)

    routing.AddPickupAndDelivery(pickup_index, dropoff_index)
    solver.Add(routing.VehicleVar(pickup_index) == routing.VehicleVar(dropoff_index))
    solver.Add(time_dimension.CumulVar(pickup_index) <= time_dimension.CumulVar(dropoff_index))

    if job.dropoff_window is not None:
        low, high = job.dropoff_window
        time_dimension.CumulVar(dropoff_index).SetRange(low, high)
    if job.pickup_window is not None:
        low, high = job.pickup_window
        time_dimension.CumulVar(pickup_index).SetRange(low, high)

Optional And Connected Service

  • First decide whether each optional job is independent or belongs to a connected request set. Independent jobs may be skipped on their own; connected request sets should be optimized as a group.
  • For connected request sets, prefer the CP-style grouped disjunction pattern below when search quality matters. Treat it as a search-friendly relaxation: local search may keep partial groups, and postprocessing enforces the final all-or-none business rule.
  • Some domains connect multiple pickup-delivery pairs for one passenger, order, shipment, or care plan. This is a special case: apply all-or-none handling only when the problem says a connected set must be fully served or fully rejected.
  • For CP-style optional connected sets, put the set's pickup nodes in one disjunction with max_cardinality=len(request_set) and a very large group penalty, such as len(request_set) * request_penalty. This makes pickup service drive the served-job objective for the connected set.
  • Add each corresponding dropoff node as optional with zero penalty. The pickup-delivery constraints still tie feasible served pairs together, while zero-penalty dropoff optionality avoids forcing orphan dropoffs when a pickup or connected set is skipped.
  • Use this grouped-disjunction-plus-postprocessing pattern instead of hard equality constraints across the connected set when local search quality matters. Hard all-or-none constraints can make insertion and local search much harder on large optional pickup-delivery instances.
  • This grouped-disjunction pattern may allow partial connected sets during search. If the domain treats partial connected sets as unserved, do not count partial sets as served; remove their service nodes and rebuild the route order, or reject the candidate if rebuilding breaks feasibility.

The complete modeling shape for connected optional pickup-delivery service is:

python
solver = routing.solver()

for job in jobs:
    pickup_index = manager.NodeToIndex(job.pickup_node)
    dropoff_index = manager.NodeToIndex(job.dropoff_node)
    routing.AddPickupAndDelivery(pickup_index, dropoff_index)
    solver.Add(routing.VehicleVar(pickup_index) == routing.VehicleVar(dropoff_index))
    solver.Add(time_dimension.CumulVar(pickup_index) <= time_dimension.CumulVar(dropoff_index))

for request_set in connected_request_sets:
    pickup_indices = [manager.NodeToIndex(job.pickup_node) for job in request_set]
    routing.AddDisjunction(
        pickup_indices,
        len(request_set) * request_penalty,
        len(request_set),
    )

for job in jobs:
    routing.AddDisjunction([manager.NodeToIndex(job.dropoff_node)], 0)
Show full SKILL.md (235 more words)Show less

Postprocessing Connected Sets

For all-or-none grouped service, perform the following post-processing steps after extracting raw route order:

  1. Identify connected groups whose pickup and dropoff nodes all appear in the extracted routes.
  2. Keep only service stops belonging to complete groups.
  3. Rebuild each remaining route by reconnecting kept stops in their original order between the route's original start and end depot.
  4. Recompute arrival times, service starts, departures, and load along the rebuilt route.
  5. Reject the rebuilt route if a shortcut arc is invalid, a service window is missed, the vehicle cannot return to the depot in time, or final load is nonzero.
python
def complete_group_job_ids(groups, visited_nodes):
    complete = set()
    for group in groups:
        # group jobs expose job_id, pickup_node, and dropoff_node.
        if all(job.pickup_node in visited_nodes and job.dropoff_node in visited_nodes for job in group):
            complete.update(str(job.job_id) for job in group)
    return complete


def kept_service_nodes(route, complete_job_ids):
    return [
        stop.node
        for stop in route.stops
        if stop.kind in {"pickup", "dropoff"} and str(stop.job_id) in complete_job_ids
    ]

After filtering, audit the rebuilt sequence from scratch; do not reuse arrival times, loads, shortcut feasibility, depot-return feasibility, or served counts from the unfiltered route.

Final Checks

  • Extract the route order and verify every counted job has both pickup and dropoff on the same route, with pickup before dropoff.
  • Verify no dropoff appears without its pickup, and no pickup is counted without its dropoff.
  • For connected request sets, count the set only when all jobs in the set pass the paired-service check.
  • When the requested output is route-only, write only the requested route fields; leave derived timing, load, violation counts, and objective summaries out if the verifier will recompute them.

Ride Rules

  • If ride time, maximum wait, or shift duration matters, add explicit constraints on the relevant time cumul variables.

© benchflow-ai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in tasks/paratransit-routing/environment/skills/ortools-pickup-delivery-routing of benchflow-ai/skillsbench.

Open the folder on GitHubat commit 9a1f4dd

Compare with similar skills

Ortools Pickup Delivery Routing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Ortools Pickup Delivery Routing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ortools Pickup Delivery Routing this skillbenchflow-ai/skillsbench1.8k—~2kAutomated safety check: PassApache-2.0
Is This A Problemanthropics/claude-for-legal9.6k2 repos~2.3kAutomated safety check: PassApache-2.0
Delivery Gateaffaan-m/ECC276k—~1.3kAutomated safety check: PassMIT
Pairingalsk1992/CloddsBot3k—~1.5kAutomated safety check: PassMIT
Browser Pairing for Remote Agentsgarrytan/gstack136k—~11kAutomated safety check: NotesMIT
Statistical Problem Formulationaiming-lab/AutoResearchClaw15k—~671Automated safety check: PassMIT

Similar skills

  • Is This A Problem

    anthropics/claude-for-legal

    Official

    Fast "is this a problem?" answer for the quick Slack question — pattern-matches against your calibration.

    9.6k GitHub starsUsed in 2 repos~2.3k tokens
    Business, Finance & HRAuto-check passed
  • Delivery Gate

    affaan-m/ECC

    Stop hook that blocks Claude from finishing until quality checks pass.

    276k GitHub stars~1.3k tokensUpdated yesterday
    Auto-check passed
  • Pairing

    alsk1992/CloddsBot

    User pairing, authentication, and trust management. An agent skill from alsk1992/CloddsBot.

    3k GitHub stars~1.5k tokensUpdated 8 days ago
    Backend & APIsAuto-check passed
  • Lets another AI agent drive your browser: one command creates a setup key and prints connection instructions for the remote agent.

    136k GitHub stars~11k tokensUpdated today
    Agent WorkflowsAuto-check: notes
  • Statistical Problem Formulation

    aiming-lab/AutoResearchClaw

    Formulate statistical research problems with formal notation, target parameters, assumptions, hypotheses, evaluation criteria, and theory targets.

    15k GitHub stars~671 tokensUpdated 1 mo ago
    Research & ScienceAuto-check passed
  • Implementing Rsa Key Pair Management

    mukul975/Anthropic-Cybersecurity-Skills

    Generates, stores, rotates, and manages RSA key pairs following NIST SP 800-57 guidelines, covering serialization formats (PEM, DER, PKCS8), passphrase protection, and key strength validation.

    34k GitHub stars~920 tokensUpdated 1 mo ago
    SecurityAuto-check passed

More from benchflow-ai/skillsbench

All 189 skills in this repo
  • Lean4 Memories

    benchflow-ai/skillsbench

    This skill should be used when working on Lean 4 formalization projects to maintain persistent memory of successful proof patterns, failed approaches, project conventions, and user preferences…

    1.8k GitHub stars~3.2k tokensUpdated 2 mo ago
    Auto-check passed
  • Senior Data Engineer

    benchflow-ai/skillsbench

    World-class data engineering skill for building scalable data pipelines, ETL/ELT systems, real-time streaming, and data infrastructure.

    1.8k GitHub stars~5.9k tokensUpdated 2 mo ago
    Auto-check passed
  • Ac Branch Pi Model

    benchflow-ai/skillsbench

    AC branch pi-model power flow equations (P/Q and |S|) with transformer tap ratio and phase shift, matching acopf-math-model.md and MATPOWER branch fields.

    1.8k GitHub stars~1.1k tokensUpdated 2 mo ago
    Auto-check passed
  • Civ6lib

    benchflow-ai/skillsbench

    Civilization 6 district mechanics library. An agent skill from benchflow-ai/skillsbench.

    1.8k GitHub stars~1.7k tokensUpdated 2 mo ago
    Auto-check passed
  • D3 Visualization

    benchflow-ai/skillsbench

    Build deterministic, verifiable data visualizations with D3.js (v6).

    1.8k GitHub stars~1.5k tokensUpdated 2 mo ago
    Auto-check passed
  • Dc Power Flow

    benchflow-ai/skillsbench

    DC power flow analysis for power systems. An agent skill from benchflow-ai/skillsbench.

    1.8k GitHub stars~717 tokensUpdated 2 mo ago
    Auto-check passed

Questions about Ortools Pickup Delivery Routing

What does Ortools Pickup Delivery Routing do?

Model OR-Tools paired pickup-and-delivery routing problems, including PDPTW, dial-a-ride, paratransit, patient transport, and courier jobs with same-vehicle pairing, precedence, capacity, optional…. Ortools Pickup Delivery Routing is an agent skill from benchflow-ai/skillsbench. Model OR-Tools paired pickup-and-delivery routing problems, including PDPTW, dial-a-ride, paratransit, patient transport, and courier jobs with same-vehicle pairing, precedence, capacity, optional connected service, rider time windows, and vehicle shifts.

How do I install Ortools Pickup Delivery Routing in Claude Code?

Run `npx skills add benchflow-ai/skillsbench --skill ortools-pickup-delivery-routing -a claude-code`. Or copy the skill folder (tasks/paratransit-routing/environment/skills/ortools-pickup-delivery-routing in benchflow-ai/skillsbench) into .claude/skills/ortools-pickup-delivery-routing in your project. Claude Code loads it when a task matches its description.

How do I install Ortools Pickup Delivery Routing in Codex?

Run `npx skills add benchflow-ai/skillsbench --skill ortools-pickup-delivery-routing -a codex`. Or copy the skill folder (tasks/paratransit-routing/environment/skills/ortools-pickup-delivery-routing in benchflow-ai/skillsbench) into .agents/skills/ortools-pickup-delivery-routing in your project. Codex loads it when a task matches its description.

Can I use Ortools Pickup Delivery Routing in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add benchflow-ai/skillsbench --skill ortools-pickup-delivery-routing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ortools-pickup-delivery-routing, .gemini/skills/ortools-pickup-delivery-routing, .github/skills/ortools-pickup-delivery-routing and .opencode/skills/ortools-pickup-delivery-routing in your project.

What does Ortools Pickup Delivery Routing need to run?

SKILL.md names no scripts, command-line tools or credentials: Ortools Pickup Delivery Routing is instructions for the agent only. Our summary lists: Python 3.

Does Ortools Pickup Delivery Routing access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Ortools Pickup Delivery Routing safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Ortools Pickup Delivery Routing use?

Ortools Pickup Delivery Routing is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ortools Pickup Delivery Routing use?

About 2k tokens (SKILL.md is roughly 7.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Ortools Pickup Delivery Routing?

Skills that share tags, products or a category with Ortools Pickup Delivery Routing: Is This A Problem (anthropics/claude-for-legal, 9.6k stars), Delivery Gate (affaan-m/ECC, 276k stars), Pairing (alsk1992/CloddsBot, 3k stars) and Browser Pairing for Remote Agents (garrytan/gstack, 136k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ortools Pickup Delivery Routing?

benchflow-ai (a GitHub organization) maintains it in benchflow-ai/skillsbench, which has 1,835 GitHub stars. The repository holds 189 skills in this directory. The repository was last updated on July 23, 2026.

Source: benchflow-ai/skillsbench on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.