JuliusBrussee/caveman · error
native pack: %s conflicts with unknown skill %s
Error message
native pack: %s conflicts with unknown skill %s
What it means
Consistency guard in native-pack validation: a skill claims task types that map to an owner/activation rule referencing a skill id not present in the pack. The pack's skills' task-type ownership tables disagree with its skill set.
Source
Thrown at proxy/internal/nativepack/pack.go:112
}
if !pack.Core.Mandatory || pack.Core.Instructions == "" || pack.Core.EstimatedTokens > pack.Core.PromptTokenBudget {
return errors.New("native pack: invalid Core budget or instructions")
}
owners := map[string][]Skill{}
ids := map[string]bool{}
for _, skill := range pack.Skills {
if skill.ID == "" || ids[skill.ID] || skill.Activation != "classified" || skill.Instructions == "" || len(skill.Instructions) > skill.PromptByteBudget {
return fmt.Errorf("native pack: invalid skill %q", skill.ID)
}
ids[skill.ID] = true
for _, taskType := range skill.TaskTypes {
owners[taskType] = append(owners[taskType], skill)
}
}
for _, skill := range pack.Skills {
for _, conflict := range skill.Conflicts {
if !ids[conflict] {
return fmt.Errorf("native pack: %s conflicts with unknown skill %s", skill.ID, conflict)
}
}
}
for taskType, candidates := range owners {
for left := 0; left < len(candidates); left++ {
for right := left + 1; right < len(candidates); right++ {
a, b := candidates[left], candidates[right]
if !contains(a.Conflicts, b.ID) || !contains(b.Conflicts, a.ID) || a.Precedence == b.Precedence {
return fmt.Errorf("native pack: unresolved conflict for task type %q between %s and %s", taskType, a.ID, b.ID)
}
}
}
}
return nil
}
func contains(values []string, target string) bool {
for _, value := range values {View on GitHub (pinned to 766dce6b13)
Solutions
- Add the referenced skill to the pack or fix the task_types list to name existing skill IDs
- Repack and revalidate the native pack
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at proxy/internal/nativepack/pack.go:112 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of JuliusBrussee/caveman@766dce6b13 (2026-08-18).
Data as JSON: /api/errors/8de7537b749fefa5.
Report an issue: GitHub.