deepseek-ai/deepseek-harness · error
skill entry ${fullPath} ignored: failed to follow symbolic l
Error message
skill entry ${fullPath} ignored: failed to follow symbolic link: ${errorMessage(error)} What it means
Error "skill entry ${fullPath} ignored: failed to follow symbolic link: ${errorMessage(error)}" thrown in deepseek-ai/deepseek-harness.
Source
Thrown at packages/skill/skill-filesystem/src/index.ts:904
function fsReadErrorMessage(target: FsTarget, error: unknown): string {
return `failed to read text file at ${target.displayPath}: ${errorMessage(error)}`
}
async function nodeEntryKind(fullPath: string, entry: { isDirectory(): boolean; isFile(): boolean; isSymbolicLink(): boolean }, ctx: Context): Promise<'directory' | 'file' | undefined> {
if (entry.isDirectory()) return 'directory'
if (entry.isFile()) return 'file'
/* v8 ignore next -- Non-file directory entries such as FIFOs are platform-specific and intentionally skipped. */
if (!entry.isSymbolicLink()) return undefined
try {
const info = await stat(fullPath)
if (info.isDirectory()) return 'directory'
/* v8 ignore else -- the special-file symlink branch relies on POSIX /dev/null. */
if (info.isFile()) return 'file'
/* v8 ignore next -- The special-file symlink fixture relies on POSIX /dev/null. */
return undefined
} catch (error) {
ctx.logger.warn(`skill entry ${fullPath} ignored: failed to follow symbolic link: ${errorMessage(error)}`)
return undefined
}
}
function parseFrontmatter(raw: string): { data: Record<string, unknown>; body: string } | undefined {
const firstLineEnd = raw.indexOf('\n')
if (firstLineEnd < 0) return undefined
const firstLine = raw.slice(0, firstLineEnd).replace(/\r$/, '')
if (firstLine !== '---') return undefined
const start = firstLineEnd + 1
const closing = findClosingFrontmatter(raw, start)
if (closing === undefined) return undefined
const yaml = raw.slice(start, closing.start)
const parsed = parseYaml(yaml) as unknown
if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) return undefined
return { data: parsed as Record<string, unknown>, body: raw.slice(closing.bodyStart) }
}
View on GitHub (pinned to b150a551b8)
Solutions
- Replace the broken symbolic link with a valid target or a regular file.
- Verify the symlink target exists and does not form a loop.
When it happens
Trigger: Thrown at packages/skill/skill-filesystem/src/index.ts:904 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24).
Data as JSON: /api/errors/2185e6ff81f6d283.
Report an issue: GitHub.