| name | harbor-exec |
| description | Use when working with Harbor's `harbor exec` CLI workflow: compiling files, directories, or globs into Harbor tasks; running map jobs; configuring artifacts and existence-only verification; using map-reduce; writing or reviewing ExecConfig YAML/JSON/TOML; or debugging command behavior, config validation, and job outputs. |
Harbor Exec
Overview
Use this skill to operate Harbor's harbor exec command. Treat harbor exec as agentic map-reduce: it turns loose inputs into Harbor tasks, runs Harbor jobs over those tasks, and optionally aggregates the results.
First Checks
Assume the user is running an installed Harbor CLI. Check the installed command surface before making claims:
harbor --version
harbor exec --help
Require Harbor >=0.17.1 for harbor exec. If harbor --version reports an older version, ask the user to upgrade before continuing.
Use --print-config when debugging config resolution, inferred artifacts, task/job directories, or defaults. Do not treat it as a substitute for showing the final launch command.
If the installed harbor command is not available, ask the user how they installed Harbor before guessing a command path.
Run Parameter Questions
Before running a Harbor Exec job, ask the user to confirm any unspecified run parameters:
- Inputs: exact paths/globs and whether to
--scan or --no-scan.
- Artifact contract: output file paths the agent must write.
- Artifact schemas: required JSON or structured schema for each artifact.
- Environment provider: recommend cloud sandboxing over local
docker; suggest modal, daytona, or e2b.
- Agent and model for the map step.
- Concurrency count.
- Whether to include a reduce step, and if so which reduce agent and model to use.
- Final command: show the exact launch command before running it.
Usage Workflow
Prefer flags for one-off runs and --config for repeatable or map-reduce workflows.
Make artifacts explicit when correctness depends on generated files:
harbor exec -p ./input -i "Write /app/answer.json" -f /app/answer.json
Prefer explicit artifacts over auto-inferred artifacts. Auto-inference only reads inline instructions, not instruction files.
Do not persist compiled tasks by default. Omit --tasks-dir unless the user wants to inspect or reuse compiled tasks; when omitted, compiled tasks are ephemeral and cleaned up after execution.
Leave the job output location unset by default. Use --jobs-dir only when the user wants a specific output path; default is jobs.
Specify --scan or --no-scan when task cardinality matters. Current flags mode scans a single directory or glob by default, but multiple paths are grouped unless --scan is explicit.
Do not combine --config with flags mode options. Build the full ExecConfig in the file instead.
Map And Reduce
Map phase:
map.compile defines task synthesis: instructions, copied paths, Docker image/workdir, artifacts, templates, and compile-time verifier generation.
map.job defines execution: agent, model, environment provider, retries, attempts, concurrency, metrics, and job directory.
Reduce phase:
- Requires
map.compile.artifacts; the reducer consumes prior map trial artifacts staged under environment/artifacts.
- Compiles exactly one reducer task.
- Inherits map job settings unless reducer-specific flags/config override them in flags mode.
- Should usually define reducer artifacts explicitly, then verify them.
Examples
Read references/examples.md when writing concrete commands, config files, or map-reduce examples.