tinyhumansai/openhuman · error · anyhow::Error

skill '{entry_id}' not found in catalog. Run skill_registry_

Error message

skill '{entry_id}' not found in catalog. Run skill_registry_browse first to refresh.

What it means

The catalog loaded successfully but contains no entry with the requested entry_id. Unlike a load failure, this is a lookup miss: the id is stale (catalog changed since it was copied), misspelled, or from a different catalog state. The message itself suggests refreshing via skill_registry_browse to re-sync ids.

Source

Thrown at src/openhuman/skills/catalog/tools.rs:193

    /// matching every other external-effect tool.
    fn external_effect(&self) -> bool {
        true
    }

    async fn execute(&self, args: serde_json::Value) -> anyhow::Result<ToolResult> {
        let entry_id = args
            .get("entry_id")
            .and_then(|v| v.as_str())
            .ok_or_else(|| anyhow::anyhow!("missing required argument `entry_id`"))?;

        tracing::debug!(entry_id = %entry_id, "[tool][skill_registry] install");

        let catalog = ops::browse_catalog(false)
            .await
            .map_err(|e| anyhow::anyhow!("failed to load catalog: {e}"))?;

        let entry = catalog.iter().find(|e| e.id == entry_id).ok_or_else(|| {
            anyhow::anyhow!(
                "skill '{entry_id}' not found in catalog. \
                     Run skill_registry_browse first to refresh."
            )
        })?;

        match ops::install_from_catalog(&self.workspace_dir, entry).await {
            Ok(outcome) => Ok(ToolResult::success(serde_json::to_string(&json!({
                "url": outcome.url,
                "stdout": outcome.stdout,
                "stderr": outcome.stderr,
                "new_skills": outcome.new_skills,
            }))?)),
            Err(e) => Ok(ToolResult::error(format!(
                "Failed to install skill '{entry_id}': {e}"
            ))),
        }
    }
}

View on GitHub (pinned to 7491200858)

Solutions

  1. Run skill_registry_browse first and copy a current entry_id
  2. Check the id spelling against the fresh catalog
  3. Retry the install after refreshing the catalog
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at src/openhuman/skills/catalog/tools.rs:193 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of tinyhumansai/openhuman@7491200858 (2026-08-17). Data as JSON: /api/errors/11d164eff9291873. Report an issue: GitHub.