stablyai/orca · critical

[verify-skills-cli-runtime] skills get ${topic} returned the

Error message

[verify-skills-cli-runtime] skills get ${topic} returned the wrong guide

What it means

Thrown by verifySkillsCliRuntime() when skills get <topic> returns a guide whose body does not contain the string 'name: <topic>'. The script runs skills get <topic> (no --json) and checks guide.includes(`name: ${topic}`). This validates that the guide output is for the correct topic and not a stub, empty string, or wrong-topic response.

Source

Thrown at config/scripts/verify-skills-cli-runtime.cjs:188

    throw new Error(`[verify-skills-cli-runtime] ${label} emitted invalid JSON:\n${output}`)
  }
}

function verifySkillsCliRuntime(outDir, artifactRoot = dirname(outDir), options = {}) {
  const absoluteOutDir = resolve(outDir)
  const closure = collectRuntimeClosure(absoluteOutDir, resolve(artifactRoot))
  if (options.executeCommands === false) {
    return { closureFiles: closure.length, commands: 0 }
  }
  const list = parseJson('skills list', runCli(absoluteOutDir, ['skills', 'list', '--json']))
  const topicNames = new Set(list.topics?.map((topic) => topic.name))
  for (const topic of ['orca-cli', 'computer-use']) {
    if (!topicNames.has(topic)) {
      throw new Error(`[verify-skills-cli-runtime] skills list omitted ${topic}`)
    }
    const guide = runCli(absoluteOutDir, ['skills', 'get', topic])
    if (!guide.includes(`name: ${topic}`)) {
      throw new Error(`[verify-skills-cli-runtime] skills get ${topic} returned the wrong guide`)
    }
  }

  const install = parseJson(
    'skills install --dry-run',
    runCli(absoluteOutDir, [
      'skills',
      'install',
      '--skill',
      'orca-cli',
      '--agent',
      'codex',
      '--dry-run',
      '--json'
    ])
  )
  const update = parseJson(
    'skills update --dry-run',

View on GitHub (pinned to 1136503c6a)

Solutions

  1. Run skills get orca-cli and verify the output contains a line matching 'name: orca-cli' (exact format).
  2. If the guide format was intentionally changed, update the includes() check to match the new format.
  3. If the wrong guide is returned, debug the skills get argument parsing — confirm the topic name reaches the guide loader.
  4. If the guide is empty, check that the topic's guide file exists and is readable in the build output.

Example fix

// before: guide format changed to markdown heading
// guide = '## orca-cli\n...'
if (!guide.includes(`name: ${topic}`)) { throw ... }

// after: check the new heading format
if (!guide.includes(`## ${topic}`) && !guide.includes(`name: ${topic}`)) { throw ... }
Defensive patterns

Strategy: validation

Validate before calling

function validateGuide(guide, topic) {
  const markers = [`name: ${topic}`, `## ${topic}`, `# ${topic}`]
  if (!markers.some((m) => guide.includes(m))) {
    throw new Error(`Guide for ${topic} does not contain any expected name marker`)
  }
}

Type guard

function isNonEmptyGuide(value) {
  return typeof value === 'string' && value.trim().length > 0
}

Try / catch

try {
  const guide = runCli(outDir, ['skills', 'get', topic])
  if (!isNonEmptyGuide(guide)) {
    throw new Error(`skills get ${topic} returned empty guide`)
  }
  validateGuide(guide, topic)
} catch (err) {
  console.error(`Guide validation failed for ${topic}:`, err.message)
  throw err
}

Prevention

When it happens

Trigger: runCli(outDir, ['skills', 'get', topic]) returns a guide string that does not contain the literal 'name: orca-cli' or 'name: computer-use'. Caused by: the guide format changing (e.g. 'name: ' prefix removed), the guide being empty, the wrong topic's guide being returned, or frontmatter using a different key.

Common situations: A guide template change that reformats the name line (e.g. '## orca-cli' instead of 'name: orca-cli'); a bug where skills get ignores its argument and always returns a default guide; the guide file missing its name field in frontmatter after an edit.

Related errors


AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12). Data as JSON: /api/errors/f2a4adbbe8fe3d88. Report an issue: GitHub.