Tencent/WeKnora · error

skill not found in %s: %s

Error message

skill not found in %s: %s

What it means

Per-directory miss in loadSkillFromDirectory: the directory was scanned, candidate SKILL.md files were read and parsed, but none had a Name equal to the requested skillName. The error is per-directory (it names the dir), and is consumed by LoadSkillInstructions which keeps searching other directories.

Source

Thrown at internal/agent/skills/loader.go:173

		content, err := os.ReadFile(skillFile)
		if err != nil {
			continue
		}

		skill, err := ParseSkillFile(string(content))
		if err != nil {
			continue
		}

		if skill.Name == skillName {
			skill.BasePath = skillPath
			skill.FilePath = skillFile
			return skill, nil
		}
	}

	return nil, fmt.Errorf("skill not found in %s: %s", dir, skillName)
}

// loadSkillFile reads and parses a SKILL.md file
func (l *Loader) loadSkillFile(basePath, filePath string) (*Skill, error) {
	content, err := os.ReadFile(filePath)
	if err != nil {
		return nil, fmt.Errorf("failed to read skill file: %w", err)
	}

	skill, err := ParseSkillFile(string(content))
	if err != nil {
		return nil, err
	}

	skill.BasePath = basePath
	skill.FilePath = filePath

	return skill, nil

View on GitHub (pinned to 988cbb0330)

Solutions

  1. Check the skill name against the frontmatter `name` field in that directory's SKILL.md
  2. Move or symlink the skill into this directory if it belongs there
  3. Ignore this error when multiple skill directories are searched; only the final aggregate error matters
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown at internal/agent/skills/loader.go:173 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of Tencent/WeKnora@988cbb0330 (2026-09-02). Data as JSON: /api/errors/95614513196113fd. Report an issue: GitHub.