Skip to content

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

@jeremy153

Description

@jeremy153

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions