Skip to content

Anthropic provider silently falls back to static — LLM analyzers 400 on minimum/maximum in tool schema #4

Closed

Description

Bug report: Anthropic provider silently falls back to static — LLM analyzers fail with HTTP 400 (minimum/maximum not supported in tool schema)

Repo: NVIDIA/SkillSpector
Version: v2.0.0
Commit: 2eb844780ab163f01468ecf142c40a2ec0fcaec0
Environment: Python 3.10–3.12, SKILLSPECTOR_PROVIDER=anthropic, default model claude-opus-4-6

Summary

When running with the Anthropic provider, every LLM (Stage 2) analyzer fails with an HTTP 400 from the Anthropic API and the scan silently falls back to static-only analysis. The CLI still exits 0 and prints a normal report, so the failure is invisible unless SKILLSPECTOR_LOG_LEVEL=WARNING (the default) output is inspected. Users believe they are getting the ~87% precision semantic pass when they are actually getting static-only results.

Root cause

The Pydantic models used as structured-output / tool schemas declare numeric constraints via Field(ge=..., le=...), which Pydantic emits as JSON Schema minimum/maximum. Anthropic rejects those keywords in tool schemas with HTTP 400. Offending lines: meta_analyzer.py:66, llm_analyzer_base.py:64, llm_analyzer_base.py:66. Full details in the attached report

Activity

  1. added a commit that references this issue on Jun 16, 2026
    a5092dd
  2. added a commit that references this issue on Jun 22, 2026
    d423f0c
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions