Skills

As coding agents evolve from simple chat interfaces towards autonomous task execution, context engineering has become a critical challenge. Agent Skills provide an open standard for modularising contexts by bundling instructions, executable scripts and associated resources such as Test-Driven Development. Whilst AGENTS.md is loaded at the start of every session, skills are only loaded on demand based on their descriptions, which reduces token consumption and mitigates issues such as context window exhaustion or agent instruction overload.

At the start of a session, coding agents can scan all available skill files and read a brief description from the Markdown file for each one. This is very token-efficient: each skill consumes only a few dozen extra tokens, with the full details only being loaded when a task is requested that the skill can help solve.

Library Skills

Library Skills allows you to keep the skills for libraries that contain their own integrated AI functions synchronised with the latest version of the library. Libraries such as FastAPI contain a .agents/skills/fastapi/SKILL.md file, which can easily be adopted.

In Python, you can use library-skills with uvx library-skills. This will

  • check the dependencies you have defined in pyproject.toml or package.json

  • check your project’s installation environment, for example, the .venv directory for Python and node_modules for Node.js

  • identify the available skills for the libraries you have installed

  • display the installation status of these skills

  • ask which new skills you would like to install

  • ask about the installation target (.agents/skills or .claude/skills)

  • create a relative symbolic link for each skill you select and each destination, so that they can be managed with Git

pre-commit hook

You can run the same check using the pre-commit framework to detect changes to the skills:

repos:
  - repo: local
    hooks:
      - id: library-skills-check
        name: library-skills check
        entry: uvx library-skills --check
        language: system
        pass_filenames: false
        files: ^(pyproject\.toml|uv\.lock|package\.json|package-lock\.json)$