Skip to documentation
Documentation navigation

Documentation navigation

Documentation / guides

Registering the Skill Tool

Bind one Skill tool per Loop identity and register it through a Harness tool Definition.

developer

The Skill instance is bound to one immutable identity.AgentName. Wrap it in a Harness tool.Definition so each live Loop receives the correctly bound tool.

Create the definition

skillDefinition := tool.NewDefinition(
	"Skill",
	0,
	func(ctx context.Context, bindings tool.Bindings) ([]tool.InvokableTool, error) {
		return []tool.InvokableTool{
			skill.NewSkill(loader, agentName),
		}, nil
	},
)

assistant, err := loop.Define(
	loop.WithName(agentName),
	loop.WithInference(client, selectedModel),
	loop.WithTools(skillDefinition),
	loop.WithAccessGate(accessGate),
	loop.WithPolicyRevision("assistant-skills-v1"),
)

The model-facing tool is named Skill and accepts one required string property, name. Without WithAccessGate, Harness denies every tool call. The access policy must therefore make an explicit decision for the prepared context.load requirement.

Source and proof

← back to documentation