Claude-skill-registry api-use-external

Any time an external api needs to be understood or queried

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/api-use-external" ~/.claude/skills/majiayu000-claude-skill-registry-api-use-external && rm -rf "$T"
manifest: skills/data/api-use-external/SKILL.md
safety · automated scan (low risk)
This is a pattern-based risk scan, not a security review. Our crawler flagged:
  • references .env files
Always read a skill's source content before installing. Patterns alone don't mean the skill is malicious — but they warrant attention.
source content

External API use

Includes how to query and process the current existing external APIs:

  • IMDb Primary API.
  • IMDb Fallback API - To be used when IMDb primary API times out or is otherwise unreachable.

Index

  • API configuration:
  • API provider framework:
  • Docs and examples: documenation, endpoints, and request/response examples for both IMDb Primary API and IMDb Fallback API.

API configuration

  • All API settings such as keys, base URLs, and timeouts come from
    config.py
    .
  • API credentials and other secrets come from
    .env
    .

API provider framework

API integration

  • IMDb integration must remain active and fully operational.
    • Core implementation is in
      utils/imdb_core.py
      using RapidAPI-based providers.
    • Core function families include
      imdb_details_fetch_core
      ,
      imdb_search_core
      ,
      imdb_rating_core
      ,
      imdb_import_core
      ,
      imdb_api_search_title
      , and
      imdb_api_get_details
      .
  • Provider configuration switches are defined in
    config.py
    :
    • MEDIA_ENABLE_IMDB = True
      must remain enabled.

Base API provider

  • utils/api_provider_core.py
    defines
    BaseApiProvider
    for all external HTTP APIs.
  • Handles HTTP requests, authentication, token management, error handling, and response normalization.
  • Stateless by design with no Flask context; safe to use in core modules.
  • Includes retry strategy and standardized response format.
  • Use this class instead of creating custom HTTP client code per API.

Provider descriptors

  • utils/api_provider_descriptors.py
    defines configuration descriptors for each external API.
  • New providers should be added by defining a descriptor in this module, not by creating new ad-hoc client modules.
  • Descriptors capture base URL, authentication strategy, header builders, and normalization callbacks.
  • Supports bearer tokens, API keys, and static tokens.
  • Includes
    TokenCache
    for automatic token refresh and caching where needed.

Core vs presentation for APIs

  • Core API logic belongs in
    utils/*_core.py
    modules that use BaseApiProvider and descriptors.
  • Flask-aware presentation logic belongs in
    routes/utils_*.py
    modules that call core functions.
  • Keep API core code free of Flask imports and request context.

Docs and examples

  • IMDb primary API:
    utils/imdb-01-docs.md
    (IMDb236 API)
  • IMDb fallback API:
    utils/imdb-02-docs.md
    (IMDb8 API)

Legacy unused but saved

Do not use or enable but do save:

  • TVDB and TMDB are not currently enabled in the application.
    • Supporting code and tests exist but must remain disabled unless explicitly authorized.
    • Residual assets include templates under
      templates/admin
      , JavaScript under
      static/js
      , and utilities under
      utils/api_tvdb
      and
      utils/api_tmdb
      .
    • Runtime disabling is enforced in routes and config.
    • Presence does not imply enablement; do not enable or delete them without approval.
  • Provider configuration switches are defined in
    config.py
    :
    • MEDIA_ENABLE_TVDB = False
      must stay disabled for now.
    • MEDIA_ENABLE_TMDB = False
      must stay disabled for now.