Authoring
Skills — Wiring tool calls
Bind the workflow steps to exact plugin tools, with argument templating.
The harbor_workflow.tools and harbor_workflow.steps sections are
where most authoring errors live. This page lists every field and the
common mistakes.
tools[]
Each tool the workflow uses must be declared once.
harbor_workflow:
schema_version: 1
tools:
- id: sentry.get_issue
source_slug: sentry-mcp
namespace: sentryMcp
tool: getIssue
- id: linear.create_issue
source_slug: linear-mcp
namespace: linearMcp
tool: createIssue| Field | What it does | Looks up against |
|---|---|---|
id | Local id used in tool_calls[].tool_ref | (free; you pick) |
source_slug | Catalog slug | Dashboard catalog or hrbr.sources.list output |
namespace | Workspace binding | plugins[].namespace in the registry |
tool | Tool name on that source | hrbr.tools.search output |
The validator checks every source_slug, namespace, and tool against
your workspace's installed sources.
steps[]
steps:
- id: fetch
tool_calls:
- tool_ref: sentry.get_issue
arguments:
id: "{{ input.issueId }}"
- id: file
tool_calls:
- tool_ref: linear.create_issue
arguments:
teamId: "ENG"
title: "{{ steps.fetch.title }}"
description: "Sentry: {{ steps.fetch.url }}"| Field | What it does |
|---|---|
id | Unique step id used in arguments interpolation |
tool_calls[] | List of tool invocations in this step (typically 1) |
tool_calls[].tool_ref | References a tools[].id declared above |
tool_calls[].arguments | Object passed to the tool. Supports {{ ... }} templating |
Argument templating
Inside arguments, {{ ... }} references:
| Expression | Value |
|---|---|
{{ input.X }} | The input the skill was invoked with |
{{ steps.<step-id>.Y }} | The output of an earlier step |
{{ workspace.<key> }} | Workspace metadata (e.g. workspace slug) |
{{ user.<key> }} | Calling user metadata (when present) |
Templating is JSON-aware: {{ steps.fetch.title }} is interpolated
as a string; {{ steps.fetch }} is interpolated as an object.
Common mistakes
| Symptom | Likely cause |
|---|---|
unknown source_slug: sentry-mcp on validate | The plugin isn't installed (or is requires_oauth). Install + connect first. |
tool sentry.get_issue does not exist on sentry-mcp | Tool was renamed or removed upstream. Re-run hrbr.tools.search and copy the current call shape. |
argument id missing required field | The tool's input schema requires a field you did not provide. Re-run hrbr.tools.search and copy the returned example/type details. |
cannot interpolate steps.foo.bar — step foo has no output bar | The step's output shape doesn't have bar. Check the tool's output schema. |