Agent skill

Ops Package

by davepoon in davepoon/buildwithclaude

Ship parcels via any configured carrier — MyParcel, Sendcloud, DHL Parcel NL, PostNL, DPD, UPS, FedEx.

MITAuto-check: notes

Install Ops Package

skills CLI
$ npx skills add davepoon/buildwithclaude --skill ops-package -a claude-code

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

GitHub CLI
$ gh skill install davepoon/buildwithclaude ops-package --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/davepoon/buildwithclaude.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/claude-ops/skills/ops-package .claude/skills/ops-package && 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
ops-package
GitHub stars
3.6k
Token cost
~2.1k tokens
SKILL.md length
632 words
Files
10
Skills in repo
245
Repo updated
First seen
Licence
MIT

At a glance

Ship parcels via any configured carrier — MyParcel, Sendcloud, DHL Parcel NL, PostNL, DPD, UPS, FedEx.

  • Works in 3 steps: Environment variable(s) listed below. → preferences.json key (lowercase of the… → Doppler: doppler secrets get --plain.
  • SKILL.md covers Which carrier do I get?, Credential resolution, Routing and ship, plus 6 more sections
  • Runs Shell scripts from its folder; needs MYPARCEL_API_KEY and SENDCLOUD_PUBLIC_KEY

What it does

Ops Package is an agent skill from davepoon/buildwithclaude. Ship parcels via any configured carrier — MyParcel, Sendcloud, DHL Parcel NL, PostNL, DPD, UPS, FedEx. Auto-selects the first carrier whose credentials are configured, or pass --carrier <name to override. Verbs: ship, label, track, list, carriers.

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 11 other files (for example `lib/carriers/dhl.sh`, `lib/carriers/dpd.sh` and `lib/carriers/fedex.sh`).

The repository describes itself as: A single hub to find Claude Skills, Agents, Commands, Hooks, Plugins, and Marketplace collections to extend Claude Code, Claude Desktop, Agent SDK and OpenClaw. The licence is MIT.

Example prompts

  • “/ops-package”

Requirements

  • A Bash shell
  • A credential in MYPARCEL_API_KEY
  • A credential in SENDCLOUD_PUBLIC_KEY
  • Pre-approved tools (allowed-tools): -, Bash, -, Read, -, AskUserQuestion

Workflow steps

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

  1. Environment variable(s) listed below.
  2. preferences.json key (lowercase of the env var name) at ${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferenc…
  3. Doppler: doppler secrets get --plain.

What it can do on your machine

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

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • -
    • Bash
    • -
    • Read
    • -
    • AskUserQuestion

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships script files (Shell), which the agent can run.

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

  • Network

    Links to these hosts (documentation or services it may open):

    • api.sendcloud.dev
    • api-gw.dhlparcel.nl
    • developer.postnl.nl
    • esolutions.dpd.com
    • developer.ups.com
    • developer.fedex.com

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

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • MYPARCEL_API_KEY
    • SENDCLOUD_PUBLIC_KEY
    • SENDCLOUD_PRIVATE_KEY
    • DHL_PARCEL_KEY
    • POSTNL_API_KEY
    • DPD_PASSWORD
    • UPS_CLIENT_SECRET
    • FEDEX_CLIENT_SECRET

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

Context cost

Ops Package loads about 2.1k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 632 words of instructions outside code blocks.

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

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: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: -, Bash, -, Read, -, AskUserQuestion

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 davepoon/buildwithclaude at commit 10bfc43, republished under its MIT licence (© davepoon). 632 words, ~2,080 tokens.

Download SKILL.mdSave it as .claude/skills/ops-package/SKILL.md (or your agent's skills folder). This skill also uses 9 other files; get the full folder from GitHub.
name
ops-package
description
Ship parcels via any configured carrier — MyParcel, Sendcloud, DHL Parcel NL, PostNL, DPD, UPS, FedEx. Auto-selects the first carrier whose credentials are configured, or pass --carrier <name> to override. Verbs: ship, label, track, list, carriers.
allowed-tools
-, Bash, -, Read, -, AskUserQuestion
argument-hint
[--carrier <name>] <ship|label|track|list|carriers> [args...]
effort
low
maxTurns
15
disallowedTools
- Edit - Write - NotebookEdit

OPS ► PACKAGE — multi-carrier shipping

One skill, seven carriers. The router picks the carrier automatically based on which credentials are configured.

Which carrier do I get?

ConditionSelected carrier
--carrier <name> flag passedThat carrier (validated)
Exactly one carrier has credentialsThat carrier
Multiple carriers have credentialsFirst match in this order
No carrier has credentialsExit 2 with setup help

Preference order: myparcel → sendcloud → dhl → postnl → dpd → ups → fedex.

Credential resolution

Each carrier resolves its credential(s) from, in order:

  1. Environment variable(s) listed below.
  2. preferences.json key (lowercase of the env var name) at ${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json.
  3. Doppler: doppler secrets get <NAME> --plain.
CarrierEnv vars requiredDocs
MyParcelMYPARCEL_API_KEYhttps://developer.myparcel.nl/api-reference/
SendcloudSENDCLOUD_PUBLIC_KEY + SENDCLOUD_PRIVATE_KEYhttps://api.sendcloud.dev/docs/
DHL NLDHL_PARCEL_USER_ID + DHL_PARCEL_KEYhttps://api-gw.dhlparcel.nl/docs
PostNLPOSTNL_API_KEY + POSTNL_CUSTOMER_CODE + POSTNL_CUSTOMER_NUMBERhttps://developer.postnl.nl/
DPDDPD_DELIS_ID + DPD_PASSWORDhttps://esolutions.dpd.com/
UPSUPS_CLIENT_ID + UPS_CLIENT_SECRET + UPS_SHIPPER_NUMBERhttps://developer.ups.com/api/reference/shipping
FedExFEDEX_CLIENT_ID + FEDEX_CLIENT_SECRET + FEDEX_ACCOUNT_NUMBERhttps://developer.fedex.com/api/en-us/catalog/

Routing

All API calls are delegated to ${CLAUDE_PLUGIN_ROOT}/skills/ops-package/ops-package.sh. Do not re-implement curl logic inline — pass args through.

First tokenAction
carriersShow configured vs unconfigured carriers
shipCreate a shipment
labelDownload + open label PDF
trackShow status + tracking barcode
listList last 10 shipments (MyParcel / Sendcloud; others unsupported)
(empty)Show usage

ship

Required: --to "<address>". Address format:

"Person / Company, Street 12A, 1011AB Amsterdam, NL"
  • / Company segment is optional.
  • Postcode accepts with/without space; NL postcodes are normalised to uppercase without space.
  • Country defaults to NL; common names (Netherlands, Belgium, Germany, France, UK, USA) map to ISO codes.

Flags (not every carrier honours every flag — unsupported flags are safely ignored per adapter):

  • --from "<address>" override sender; default is the account's configured sender.
  • --weight <grams> integer grams.
  • --package-type 1|2|3 1=parcel (default), 2=mailbox, 3=letter (MyParcel only).
  • --signature require signature on delivery.
  • --insurance <EUR> integer EUR; 0 disables (MyParcel only).
  • --description "<text>" label reference (carriers differ; ~45 char max).
  • --pickup request home pickup at sender (MyParcel only).
Invocation
bash
${CLAUDE_PLUGIN_ROOT}/skills/ops-package/ops-package.sh \
  [--carrier myparcel|sendcloud|dhl|postnl|dpd|ups|fedex] \
  ship --to "$TO" [--from "$FROM"] [--weight "$W"] \
       [--signature] [--insurance "$INS"] [--description "$DESC"] \
       [--package-type "$TYPE"] [--pickup]

Returns:

json
{"carrier": "<name>", "shipment_id": "<id>", "response": { /* raw carrier JSON */ }}

Summarise to the user as:

Shipment created — <carrier> #<id>
Next: /ops:ops-package label <id>  to download the PDF.

Offer via AskUserQuestion (≤4 options):

  • [Download label now] — call label <id> immediately
  • [Track it] — call track <id>
  • [Ship another]
  • [Done]

label <shipment-id>

bash
${CLAUDE_PLUGIN_ROOT}/skills/ops-package/ops-package.sh label "$ID"

Behaviour per carrier:

  • MyParcel: PDF saved to /tmp/myparcel_label_<id>.pdf and opened on macOS. If unpaid, returns {"status":"payment_required","payment_url":"..."} and opens the MultiSafepay URL.
  • Sendcloud: Fetches the CDN PDF URL (v2 /labels/<id>) and saves locally.
  • DHL NL: Fetches /labels/<id>?format=PDF&printerType=A4.
  • DPD: Fetches /v1/parcellabelnumber/<id>?paperFormat=A4.
  • PostNL / UPS / FedEx: PDF is returned inline with the ship call and cached to /tmp/<carrier>_label_<id>.pdf. Calling label re-opens that cached file. If the cache is gone, re-run ship (none of these carriers expose a stable label-recovery endpoint here).
Show full SKILL.md (232 more words)Show less

track <shipment-id>

Returns a normalised object across all carriers:

json
{"carrier":"<n>","id":"<id>","status":"<s>","barcode":"<b>","tracking_url":"<u>","recipient":<o>,"updated":"<ts>"}

list

MyParcel returns the last 10 shipments. Sendcloud returns the last 10 parcels. All other carriers return {"shipments":[],"note":"..."} because their APIs don't expose a customer-facing list endpoint — track by id instead.

carriers

Prints which carriers are configured (✓) vs which are missing credentials (·). Use this when deciding which --carrier to pass.

Error handling

  • No carrier configured → script exits 2 with a checklist of envs. Surface it verbatim, then via AskUserQuestion: [Paste key now] [Open carriers doc] [Skip — configure later] On "Paste key now", collect via AskUserQuestion free-text and write to preferences.json.
  • 4xx from carrier → dump the JSON error body and stop. Do not retry silently.
  • Address parser looks wrong → re-prompt the user with the parsed breakdown and ask for corrections before POSTing.

Verification status

CarrierStatus
MyParcelVerified against api.myparcel.nl v1.1 (same working reference)
SendcloudVerified request/response shapes against Sendcloud Panel API v3
DHL NLUNVERIFIED — modelled on My DHL Parcel Swagger, needs live account
PostNLUNVERIFIED — modelled on Send API v2.2 docs, needs live account
DPDUNVERIFIED — modelled on DPD eSolutions REST, needs live account
UPSUNVERIFIED — modelled on UPS v2403 Ship/Track REST, needs account
FedExUNVERIFIED — modelled on FedEx Ship v1 + Track v1 REST

Unverified adapters are tagged with # UNVERIFIED - pending live test with account in the source. Payloads match the documented contract; adjustments may be needed when tested against live accounts.

© davepoon, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 9 other files in plugins/claude-ops/skills/ops-package of davepoon/buildwithclaude.

  • SKILL.md
  • lib/carriers/dhl.sh
  • lib/carriers/dpd.sh
  • lib/carriers/fedex.sh
  • lib/carriers/myparcel.sh
  • lib/carriers/postnl.sh
  • lib/carriers/sendcloud.sh
  • lib/carriers/ups.sh
  • lib/common.sh
  • ops-package.sh

Open the folder on GitHubat commit 10bfc43

Compare with similar skills

Ops Package 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.

Ops Package compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ops Package this skilldavepoon/buildwithclaude3.6k—~2.1kAutomated safety check: NotesMIT
Ops ShipLifecycle-Innovations-Limited/claude-ops540—~1.3kAutomated safety check: NotesMIT
Shipsimstudioai/sim30k—~4.1kAutomated safety check: PassApache-2.0
Configure Channelopenclaw/openclaw392k—~946Automated safety check: PassMIT
Ship Itvectorize-io/hindsight47k—~1.9kAutomated safety check: PassMIT
Ship Workflowgarrytan/gstack136k—~20kAutomated safety check: NotesMIT

Similar skills

  • Ops Ship

    Lifecycle-Innovations-Limited/claude-ops

    OPS on-demand: This skill should be used when the user asks to "ship ops plugin", "merge all PRs and…

    540 GitHub stars~1.3k tokensUpdated today
    DevelopmentAuto-check: notes
  • Ship

    simstudioai/sim

    Commit, push, and open a PR to staging in one shot — runs the cleanup pass and, when migrations changed, the db-migrate safety review first

    30k GitHub stars~4.1k tokensUpdated today
    DevelopmentAuto-check passed
  • Configure Channel

    openclaw/openclaw

    Configure and prove a chat channel with non-interactive one-liners; secrets only as SecretRefs.

    392k GitHub stars~946 tokensUpdated today
    Auto-check passed
  • Ship It

    vectorize-io/hindsight

    Take a PR from review to merged — run the repo's code-review skill on it in a loop (review, fix, re-review) until nothing is left to fix, applying ALL fixes on the PR branch, wait for CI green, then…

    47k GitHub stars~1.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Ship Workflow

    garrytan/gstack

    Takes finished code to a pull request: merges the base branch, runs tests, reviews the diff, bumps VERSION, updates the CHANGELOG, commits, pushes and opens the PR.

    136k GitHub stars~20k tokensUpdated today
    DevelopmentAuto-check: notes
  • Ship

    millionco/react-doctor

    Take the current branch from done-coding to merge-ready in one pass — review the diff against AGENTS.md, deslop, commit and push, open a PR using rule-validate's PR copy, then babysit until mergeable.

    15k GitHub stars~716 tokensUpdated today
    DevelopmentAuto-check passed

More from davepoon/buildwithclaude

All 245 skills in this repo
  • Qwen Vision

    davepoon/buildwithclaude

    A skill your agent uses when the user asks to "analyze video", "watch this video", "what happens in this video", "describe this clip", "review this footage", "classify these videos", "compare…

    3.6k GitHub starsUsed in 1 repo~1.2k tokens
    Auto-check passed
  • Hard Predict Future

    davepoon/buildwithclaude

    Activate this agent for any future-oriented question that requires deep quantitative analysis, historical precedents, and structured scenario planning.

    3.6k GitHub starsUsed in 1 repo~4.2k tokens
    Auto-check passed
  • iOS Hig Design Guide

    davepoon/buildwithclaude

    Build, update, and apply iOS design specifications using Apple Human Interface Guidelines (HIG) source data.

    3.6k GitHub stars~735 tokensUpdated yesterday
    Auto-check passed
  • Video Downloader

    davepoon/buildwithclaude

    Download YouTube videos with customizable quality and format options.

    3.6k GitHub starsUsed in 1 repo~871 tokens
    Auto-check passed
  • Atlas Cloud Media

    davepoon/buildwithclaude

    Discover Atlas Cloud image and video models, inspect their live schemas, and submit one confirmed media generation request with bounded GET polling.

    3.6k GitHub stars~852 tokensUpdated yesterday
    Auto-check passed
  • Slack Gif Creator

    davepoon/buildwithclaude

    Toolkit for creating animated GIFs optimized for Slack, with validators for size constraints and composable animation primitives.

    3.6k GitHub starsUsed in 12 repos~4.3k tokens
    Auto-check passed

Questions about Ops Package

What does Ops Package do?

Ship parcels via any configured carrier — MyParcel, Sendcloud, DHL Parcel NL, PostNL, DPD, UPS, FedEx. Ops Package is an agent skill from davepoon/buildwithclaude. Ship parcels via any configured carrier — MyParcel, Sendcloud, DHL Parcel NL, PostNL, DPD, UPS, FedEx.

How do I install Ops Package in Claude Code?

Run `npx skills add davepoon/buildwithclaude --skill ops-package -a claude-code`. Or copy the skill folder (plugins/claude-ops/skills/ops-package in davepoon/buildwithclaude) into .claude/skills/ops-package in your project. Claude Code loads it when a task matches its description.

How do I install Ops Package in Codex?

Run `npx skills add davepoon/buildwithclaude --skill ops-package -a codex`. Or copy the skill folder (plugins/claude-ops/skills/ops-package in davepoon/buildwithclaude) into .agents/skills/ops-package in your project. Codex loads it when a task matches its description.

Can I use Ops Package 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 davepoon/buildwithclaude --skill ops-package -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ops-package, .gemini/skills/ops-package, .github/skills/ops-package and .opencode/skills/ops-package in your project.

What does Ops Package need to run?

Going by SKILL.md and its folder, Ops Package needs a shell for the scripts in its folder and credentials named MYPARCEL_API_KEY, SENDCLOUD_PUBLIC_KEY, SENDCLOUD_PRIVATE_KEY and DHL_PARCEL_KEY. Our summary lists: A Bash shell; A credential in MYPARCEL_API_KEY; A credential in SENDCLOUD_PUBLIC_KEY. Its frontmatter pre-approves these tools: -, Bash, -, Read, -, AskUserQuestion.

Does Ops Package access the network?

SKILL.md names 6 domains. As links in the text: api.sendcloud.dev, api-gw.dhlparcel.nl, developer.postnl.nl, esolutions.dpd.com, developer.ups.com and developer.fedex.com. This is read from the text; nothing was executed.

Is Ops Package safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Ops Package use?

Ops Package is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ops Package use?

About 2.1k tokens (SKILL.md is roughly 8.3k 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 Ops Package?

Skills that share tags, products or a category with Ops Package: Ops Ship (Lifecycle-Innovations-Limited/claude-ops, 540 stars), Ship (simstudioai/sim, 30k stars), Configure Channel (openclaw/openclaw, 392k stars) and Ship It (vectorize-io/hindsight, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ops Package?

davepoon (a GitHub user) maintains it in davepoon/buildwithclaude, which has 3,604 GitHub stars. The repository holds 245 skills in this directory. The repository was last updated on October 6, 2026.

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