Hmbown/CodeWhale · error
owned skill root {} does not exist
Error message
owned skill root {} does not exist What it means
validate_owned_target_chain found the anchor and .codewhale directory present but the skills directory itself (<anchor>/.codewhale/skills) missing while require_existing is true. The owned skill root has not been created, so there is no package directory to update, remove, or trust. The missing skills root is the input at fault.
Source
Thrown at crates/tui/src/skills/mutation.rs:202
return Ok(());
}
let codewhale_dir = anchor.join(".codewhale");
let codewhale_exists = checked_real_directory(&codewhale_dir)?;
if !codewhale_exists {
if require_existing {
bail!(
"owned skill parent {} does not exist",
codewhale_dir.display()
);
}
return Ok(());
}
let skills_exists = checked_real_directory(skills_dir)?;
if !skills_exists {
if require_existing {
bail!("owned skill root {} does not exist", skills_dir.display());
}
return Ok(());
}
let canonical_anchor = fs::canonicalize(anchor)
.with_context(|| format!("failed to resolve owned anchor {}", anchor.display()))?;
let canonical_skills = fs::canonicalize(skills_dir).with_context(|| {
format!(
"failed to resolve owned skill root {}",
skills_dir.display()
)
})?;
if !canonical_skills.starts_with(&canonical_anchor) {
bail!(
"owned skill root {} escapes anchor {}",
skills_dir.display(),
anchor.display()
);View on GitHub (pinned to 0c42157ee5)
Solutions
- Run a skill install/import in the target scope to create the owned skills root
- If the skills directory was deleted, reinstall the skill rather than mutating it
- Verify the scope (--project vs --global) matches where the skill was installed
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at crates/tui/src/skills/mutation.rs:202 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of Hmbown/CodeWhale@0c42157ee5 (2026-08-20).
Data as JSON: /api/errors/fc60ca08d93e64a8.
Report an issue: GitHub.