Documentation / guides
Registering the Skill Tool
Bind one Skill tool per Loop identity and register it through a Harness tool Definition.
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.