{"record":{"id":"20277458cb5a5587","repo":"jackwener/OpenCLI","slug":"skill-name-not-found","errorCode":null,"errorMessage":"Skill \"${name}\" not found.","messagePattern":"Skill \"(.+?)\" not found\\.","errorType":"exception","errorClass":"CommandExecutionError","httpStatus":null,"severity":"error","filePath":"clis/trae-solo/skill-fs.js","lineNumber":107,"sourceCode":"// -------- skill-fs-show --------\ncli({\n    site: 'trae-solo',\n    name: 'skill-fs-show',\n    access: 'read',\n    description: 'Print a skill\\'s SKILL.md content + on-disk path.',\n    domain: 'localhost',\n    browser: false,\n    strategy: Strategy.LOCAL,\n    args: [\n        { name: 'name', positional: true, required: true, help: 'Skill name (folder under ~/.trae/skills/)' },\n    ],\n    columns: ['Field', 'Value'],\n    func: async (args) => {\n        const name = String(args.name || '').trim();\n        if (!name) throw new ArgumentError('name required');\n        const dir = path.join(TRAE_SKILLS_DIR, name);\n        if (!fs.existsSync(dir)) {\n            throw new CommandExecutionError(`Skill \"${name}\" not found.`, `Tried: ${dir}`);\n        }\n        const meta = parseSkillMd(dir);\n        const skillMd = path.join(dir, 'SKILL.md');\n        const content = fs.existsSync(skillMd) ? fs.readFileSync(skillMd, 'utf-8') : '(no SKILL.md)';\n        return [\n            { Field: 'Name', Value: meta.name },\n            { Field: 'Path', Value: dir },\n            { Field: 'Description', Value: (meta.description || '').slice(0, 200) },\n            { Field: 'Tags', Value: (meta.tags || []).join(', ') },\n            { Field: 'Author', Value: meta.author },\n            { Field: 'Version', Value: meta.version },\n            { Field: 'Files', Value: fs.readdirSync(dir).join(', ').slice(0, 200) },\n            { Field: 'SKILL.md (head)', Value: content.slice(0, 1200) },\n        ];\n    },\n});\n","sourceCodeStart":89,"sourceCodeEnd":124,"githubUrl":"https://github.com/jackwener/OpenCLI/blob/49907e53dc3ade5c223ff0c4c2c2785687cec4e6/clis/trae-solo/skill-fs.js#L89-L124","documentation":"Thrown as a CommandExecutionError when the requested skill folder does not exist under ~/.trae/skills/. The secondary detail message ('Tried: <path>') shows the exact path checked, making it easy to diagnose path/typo issues.","triggerScenarios":"Running the skill detail/show command with a name whose folder path.join(TRAE_SKILLS_DIR, name) fails fs.existsSync — typo in the name, skill never installed, or name includes wrong casing/extension.","commonSituations":"Typos in the skill name; case-sensitive filesystems (Linux) vs camelCase folder names; running in a container where HOME differs so ~/.trae/skills is elsewhere; skill was uninstalled but still referenced in scripts.","solutions":["List available skills (skill-fs-list) and copy the exact folder name.","Check the 'Tried:' path in the error detail and verify it exists with ls.","Fix casing to match the folder exactly on case-sensitive filesystems.","Install the skill if it genuinely is missing from ~/.trae/skills/."],"exampleFix":"// before\nshow('My-Skill')   // folder is 'my-skill'\n// after\nshow('my-skill')","handlingStrategy":"try-catch","validationCode":"const fs = require('fs'), path = require('path'), os = require('os');\nfunction skillExists(name) {\n  const dir = path.join(os.homedir(), '.trae', 'skills', name);\n  return fs.existsSync(dir) && fs.statSync(dir).isDirectory();\n}","typeGuard":"function isKnownSkill(name, knownNames) {\n  return typeof name === 'string' && knownNames.includes(name);\n}","tryCatchPattern":"try {\n  await skillFsShow(name);\n} catch (e) {\n  if (e instanceof CommandExecutionError && /not found/.test(e.message)) {\n    console.error(e.detail); // 'Tried: <path>' — verify path and name casing\n  } else throw e;\n}","preventionTips":["Copy names exactly from skill-fs-list output (mind case).","Check the 'Tried:' detail path when debugging.","Verify HOME/skills dir when running in containers.","Don't reference skills that were uninstalled."],"tags":["filesystem","not-found","skills"],"backgroundTag":"path-not-found","analyzedSha":"49907e53dc3ade5c223ff0c4c2c2785687cec4e6","analyzedAt":"2026-08-29T08:14:47.543Z","schemaVersion":2},"datasetVersion":"2026-08-29T12:17:43.993Z"}