Agent skill

Sybil

by anam-org in anam-org/metaxy

Use Sybil for testing code examples in documentation and docstrings.

Apache-2.0Auto-check passedTesting & QA

Install Sybil

skills CLI
$ npx skills add anam-org/metaxy --skill sybil -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install anam-org/metaxy sybil --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/anam-org/metaxy.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/sybil .claude/skills/sybil && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
sybil
GitHub stars
124
Token cost
~1.6k tokens
SKILL.md length
211 words
Files
1
Skills in repo
8
Repo updated
First seen
Licence
Apache-2.0

At a glance

Use Sybil for testing code examples in documentation and docstrings.

  • Tasks that involve Unit testing
  • SKILL.md covers Installation, Pytest Integration, Disable pytest's Built-in… and Markdown Parsers, plus 5 more sections
  • Calls pytest and pip; reaches sybil.readthedocs.io
  • Tasks that involve Technical documentation

What it does

Sybil is an agent skill from anam-org/metaxy. Use Sybil for testing code examples in documentation and docstrings. Covers pytest integration, parsers, skip directives, and namespace management.

Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering Unit testing and Technical documentation. It works with pytest. The repository describes itself as: Pluggable metadata management framework for versioned incremental multimodal data/ML pipelines. The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Unit testing
  • Tasks that involve Technical documentation

Example prompts

  • “/sybil”

Requirements

  • Python 3

What it can do on your machine

Read from SKILL.md and the folder at commit 8337842. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pytest
    • pip

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • sybil.readthedocs.io

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Sybil loads about 1.6k tokens when it runs. Until then it costs about 38 tokens; SKILL.md has 211 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~38
When it runs · the whole SKILL.md, loaded when a task matches
~1.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from anam-org/metaxy at commit 8337842, republished under its Apache-2.0 licence (© anam-org). 211 words, ~1,553 tokens.

Download SKILL.mdSave it as .claude/skills/sybil/SKILL.md (or your agent's skills folder).
name
sybil
description
Use Sybil for testing code examples in documentation and docstrings. Covers pytest integration, parsers, skip directives, and namespace management.

Sybil Documentation Testing

Sybil validates code examples embedded in documentation and docstrings by parsing and executing them as part of normal test runs.

Official Documentation: https://sybil.readthedocs.io/en/latest/

Installation

bash
pip install sybil[pytest]

Pytest Integration

Configure in conftest.py. See pytest integration docs.

python
from sybil import Sybil
from sybil.parsers.markdown.codeblock import PythonCodeBlockParser
from sybil.parsers.markdown.skip import SkipParser

pytest_collect_file = Sybil(
    parsers=[
        SkipParser(),
        PythonCodeBlockParser(),
    ],
    patterns=["*.md", "**/*.py"],
).pytest()
Sybil Parameters

See API reference.

ParameterDescription
parsersSequence of parser callables
patternsFile glob patterns to include (e.g., ["*.md", "src/**/*.py"])
excludesFile glob patterns to exclude
setupCallable receiving namespace dict, called before each document
teardownCallable receiving namespace dict, called after each document
fixturesList of pytest fixture names to inject into namespace
document_typesMap file extensions to Document classes
Document Types

See API reference.

  • Default: Parse entire file
  • PythonDocument: Import .py file as module, names available in namespace
  • PythonDocStringDocument: Parse only docstrings from .py files
python
from sybil.document import PythonDocStringDocument

pytest_collect_file = Sybil(
    parsers=[...],
    patterns=["src/**/*.py"],
    document_types={".py": PythonDocStringDocument},
).pytest()
Fixtures
python
import pytest
from sybil import Sybil


@pytest.fixture
def my_fixture():
    return {"key": "value"}


pytest_collect_file = Sybil(
    parsers=[...],
    patterns=["*.md"],
    fixtures=["my_fixture"],  # Available in document namespace
).pytest()
Setup/Teardown
python
def sybil_setup(namespace):
    namespace["helper"] = lambda x: x * 2


def sybil_teardown(namespace):
    pass  # Cleanup if needed


pytest_collect_file = Sybil(
    parsers=[...],
    setup=sybil_setup,
    teardown=sybil_teardown,
).pytest()

Disable pytest's Built-in Doctest

Add to pyproject.toml to prevent conflicts:

toml
[tool.pytest.ini_options]
addopts = "-p no:doctest"

Markdown Parsers

See Markdown parsers docs.

python
from sybil.parsers.markdown.codeblock import PythonCodeBlockParser, CodeBlockParser
from sybil.parsers.markdown.skip import SkipParser
from sybil.parsers.markdown.clear import ClearNamespaceParser

Skip Directives

See skip directive docs.

SkipParser must come before other parsers to handle skip directives.

markdown
<!-- skip: next -->

```python
# This example is skipped
```
<!-- skip: next "reason for skipping" -->
python
# Skipped and reported as skipped test with reason
<!-- skip: start -->
python
# Multiple examples
python
# All skipped
<!-- skip: end -->
<!-- skip: next if(condition_var) -->
python
# Conditionally skipped based on namespace variable
## Invisible Code Blocks

Setup code that doesn't render in documentation. See [invisible code blocks docs](https://sybil.readthedocs.io/en/latest/markdown.html#invisible-code-blocks).

```markdown
<!-- invisible-code-block: python
setup_var = "hidden setup"
-->

Clear Namespace

Reset the document namespace for isolation. See clear namespace docs.

markdown
<!-- clear-namespace -->

Custom Evaluators

See evaluators API.

python
from sybil.parsers.markdown.codeblock import CodeBlockParser
from sybil.evaluators.python import PythonEvaluator

# Custom evaluator with future imports
evaluator = PythonEvaluator(future_imports=["annotations"])

parser = CodeBlockParser(language="python", evaluator=evaluator)

Running Sybil Tests

Sybil tests are collected like regular pytest tests. To run only Sybil tests:

bash
# Run tests from specific directory containing documented code
pytest src/mypackage/ -v

# Exclude regular tests, only run documentation examples
pytest docs/ -v

To exclude Sybil tests from regular test runs, use pytest's --ignore flag or configure addopts in pyproject.toml.

Example: Complete conftest.py

python
"""Sybil configuration for docstring testing."""

from sybil import Sybil
from sybil.document import PythonDocStringDocument
from sybil.evaluators.python import PythonEvaluator
from sybil.parsers.markdown.codeblock import CodeBlockParser
from sybil.parsers.markdown.skip import SkipParser

import mypackage


def sybil_setup(namespace):
    """Pre-populate namespace for all examples."""
    namespace["pkg"] = mypackage


def sybil_teardown(namespace):
    """Cleanup after document."""
    pass


pytest_collect_file = Sybil(
    parsers=[
        SkipParser(),
        CodeBlockParser(language="python", evaluator=PythonEvaluator()),
        CodeBlockParser(language="py", evaluator=PythonEvaluator()),
    ],
    patterns=["src/mypackage/**/*.py"],
    document_types={".py": PythonDocStringDocument},
    setup=sybil_setup,
    teardown=sybil_teardown,
    excludes=[
        "**/tests/**",
        "**/_internal/**",
    ],
).pytest()

© anam-org, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .claude/skills/sybil of anam-org/metaxy.

Open the folder on GitHubat commit 8337842

Compare with similar skills

Sybil next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Sybil compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Sybil this skillanam-org/metaxy124—~1.6kAutomated safety check: PassApache-2.0
Write Test389ds/389-ds-base294—~1.8kAutomated safety check: PassCustom licence
Python Guidelightly-ai/lightly-studio896—~3kAutomated safety check: PassApache-2.0
Python Testingmacalbert/envilder138—~3.1kAutomated safety check: PassMIT
Leetcode Pywislertt/leetcode-py142—~1.4kAutomated safety check: PassApache-2.0
Adk Verify Snippetsgoogle/adk-python22k—~1.4kAutomated safety check: PassApache-2.0

Similar skills

  • Write Test

    389ds/389-ds-base

    Add or extend a pytest integration test for 389 Directory Server under dirsrvtests/.

    294 GitHub stars~1.8k tokensUpdated today
    Testing & QAAuto-check passed
  • Python Guide

    lightly-ai/lightly-studio

    Read before writing or reviewing any Python code in this repository.

    896 GitHub stars~3k tokensUpdated today
    Testing & QAAuto-check passed
  • Python Testing

    macalbert/envilder

    Mandatory testing conventions including AAA pattern, test naming, assertions, and mocks.

    138 GitHub stars~3.1k tokensUpdated 4 days ago
    Testing & QAAuto-check passed
  • Leetcode Py

    wislertt/leetcode-py

    Generates Python LeetCode practice environments and manages a 307-problem catalog with the lcpy CLI.

    142 GitHub stars~1.4k tokensUpdated yesterday
    Business, Finance & HRAuto-check passed
  • Adk Verify Snippets

    google/adk-python

    Official

    Checks that every Python code block in a Markdown file actually compiles and runs, by extracting each block to a temporary file, executing it in an isolated subprocess, and writing a pass/fail…

    22k GitHub stars~1.4k tokensUpdated today
    Testing & QAAuto-check passed
  • Hermetic Python Unit Tests

    dimensionalOS/dimos

    Rules for writing, fixing and reviewing pytest unit tests that are hermetic: behavior-focused, deterministic, isolated and cheap to run.

    4.6k GitHub stars~1.4k tokensUpdated today
    Testing & QAAuto-check passed

More from anam-org/metaxy

All 8 skills in this repo
  • Metaxy

    anam-org/metaxy

    This skill should be used when the user asks to "define a feature", "create a BaseFeature class", "track feature versions", "set up metadata store", "field-level lineage", "FieldSpec", "FeatureDep"…

    124 GitHub stars~1.5k tokensUpdated 8 days ago
    Auto-check passed
  • Tach

    anam-org/metaxy

    This skill should be used when the user asks to "add a tach module", "configure tach layers", "define module boundaries", "set up interfaces", "run tach check", "check module boundaries", "tach…

    124 GitHub stars~1.2k tokensUpdated 8 days ago
    Auto-check passed
  • Claude Improve Config

    anam-org/metaxy

    Self-reflect on the current session to identify mistakes and propose improvements to .claude configuration (CLAUDE.md, hooks, skills).

    124 GitHub stars~1k tokensUpdated 8 days ago
    Auto-check passed
  • Docs Page Frontmatter

    anam-org/metaxy

    Write YAML front matter for documentation pages with appropriate titles and descriptions for social cards.

    124 GitHub stars~948 tokensUpdated 8 days ago
    Auto-check passed
  • Hypothesis

    anam-org/metaxy

    Use Hypothesis for property-based testing to automatically generate comprehensive test cases, find edge cases, and write more robust tests with minimal example shrinking.

    124 GitHub stars~1.7k tokensUpdated 8 days ago
    Auto-check passed
  • Narwhals

    anam-org/metaxy

    Effectively use Narwhals to write dataframe-agnostic code that works seamlessly across multiple Python dataframe libraries.

    124 GitHub stars~3.3k tokensUpdated 8 days ago
    Auto-check passed

Works with

Categories

Questions about Sybil

What does Sybil do?

Use Sybil for testing code examples in documentation and docstrings. Sybil is an agent skill from anam-org/metaxy. Use Sybil for testing code examples in documentation and docstrings.

When should I use Sybil?

Sybil fits situations like: tasks that involve Unit testing; tasks that involve Technical documentation.

How do I install Sybil in Claude Code?

Run `npx skills add anam-org/metaxy --skill sybil -a claude-code`. Or copy the skill folder (.claude/skills/sybil in anam-org/metaxy) into .claude/skills/sybil in your project. Claude Code loads it when a task matches its description.

How do I install Sybil in Codex?

Run `npx skills add anam-org/metaxy --skill sybil -a codex`. Or copy the skill folder (.claude/skills/sybil in anam-org/metaxy) into .agents/skills/sybil in your project. Codex loads it when a task matches its description.

Can I use Sybil in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add anam-org/metaxy --skill sybil -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/sybil, .gemini/skills/sybil, .github/skills/sybil and .opencode/skills/sybil in your project.

What does Sybil need to run?

Going by SKILL.md and its folder, Sybil needs the command-line tools its instructions call (pytest and pip). Our summary lists: Python 3.

Does Sybil access the network?

SKILL.md names 1 domain. In commands or code: sybil.readthedocs.io; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Sybil safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Sybil use?

Sybil is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Sybil use?

About 1.6k tokens (SKILL.md is roughly 6.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Sybil?

Skills that share tags, products or a category with Sybil: Write Test (389ds/389-ds-base, 294 stars), Python Guide (lightly-ai/lightly-studio, 896 stars), Python Testing (macalbert/envilder, 138 stars) and Leetcode Py (wislertt/leetcode-py, 142 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Sybil?

anam-org (a GitHub organization) maintains it in anam-org/metaxy, which has 124 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on September 30, 2026.

Source: anam-org/metaxy on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.