[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6XG58C0G9AD43TDZ1BH8TWR":3,"skill-same:01M6XG58C0G9AD43TDZ1BH8TWR":89},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":14,"repositoryHtmlUrl":58,"repositoryHomepageUrl":6,"ownerHtmlUrl":59,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":60,"install":61,"resources":74},"01M6XG58C0G9AD43TDZ1BH8TWR","outlines",null,"Guarantee valid JSON\u002FXML\u002Fcode structure during generation, use Pydantic models for type-safe outputs, support local models (Transformers, vLLM), and maximize inference speed with Outlines - dottxt.ai's structured generation library","fadrienne\u002FMyGitHub","fadrienne","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F197874571?v=4","01M6X64V8VWCRSMFZ4EPS2BWXG","Francesca Adrienne","01M6X64VD5MW4F9PHDWQKS7ZAF",0,"MIT","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fllm-tools\u002Foutlines\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"Outlines","Grammar-Based Generation","for","synthetic","local","structure","grammar","Safety","Tools","Type Safety","Transformers","safe","Local Models","Pydantic","Structured Generation","library","code","json schema","support","valid","2026-11-10 10:12:30",false,"---\nname: outlines\ndescription: Guarantee valid JSON\u002FXML\u002Fcode structure during generation, use Pydantic models for type-safe outputs, support local models (Transformers, vLLM), and maximize inference speed with Outlines - dottxt.ai's structured generation library\ncategory: llm-tools\nversion: 1.0.0\nauthor: Synthetic Sciences\nlicense: MIT\ntags: [Prompt Engineering, Outlines, Structured Generation, JSON Schema, Pydantic, Local Models, Grammar-Based Generation, vLLM, Transformers, Type Safety]\ndependencies: [outlines, transformers, vllm, pydantic]\n---\n\n# Outlines: Structured Text Generation\n\n## When to Use This Skill\n\nUse Outlines when you need to:\n- **Guarantee valid JSON\u002FXML\u002Fcode** structure during generation\n- **Use Pydantic models** for type-safe outputs\n- **Support local models** (Transformers, llama.cpp, vLLM)\n- **Maximize inference speed** with zero-overhead structured generation\n- **Generate against JSON schemas** automatically\n- **Control token sampling** at the grammar level\n\n**GitHub Stars**: 8,000+ | **From**: dottxt.ai (formerly .txt)\n\n## Installation\n\n```bash\n# Base installation\npip install outlines\n\n# With specific backends\npip install outlines transformers  # Hugging Face models\npip install outlines llama-cpp-python  # llama.cpp\npip install outlines vllm  # vLLM for high-throughput\n```\n\n## Quick Start\n\n### Basic Example: Classification\n\n```python\nimport outlines\nfrom typing import Literal\n\n# Load model\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\n\n# Generate with type constraint\nprompt = \"Sentiment of 'This product is amazing!': \"\ngenerator = outlines.generate.choice(model, [\"positive\", \"negative\", \"neutral\"])\nsentiment = generator(prompt)\n\nprint(sentiment)  # \"positive\" (guaranteed one of these)\n```\n\n### With Pydantic Models\n\n```python\nfrom pydantic import BaseModel\nimport outlines\n\nclass User(BaseModel):\n    name: str\n    age: int\n    email: str\n\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\n\n# Generate structured output\nprompt = \"Extract user: John Doe, 30 years old, john@example.com\"\ngenerator = outlines.generate.json(model, User)\nuser = generator(prompt)\n\nprint(user.name)   # \"John Doe\"\nprint(user.age)    # 30\nprint(user.email)  # \"john@example.com\"\n```\n\n## Core Concepts\n\n### 1. Constrained Token Sampling\n\nOutlines uses Finite State Machines (FSM) to constrain token generation at the logit level.\n\n**How it works:**\n1. Convert schema (JSON\u002FPydantic\u002Fregex) to context-free grammar (CFG)\n2. Transform CFG into Finite State Machine (FSM)\n3. Filter invalid tokens at each step during generation\n4. Fast-forward when only one valid token exists\n\n**Benefits:**\n- **Zero overhead**: Filtering happens at token level\n- **Speed improvement**: Fast-forward through deterministic paths\n- **Guaranteed validity**: Invalid outputs impossible\n\n```python\nimport outlines\n\n# Pydantic model -> JSON schema -> CFG -> FSM\nclass Person(BaseModel):\n    name: str\n    age: int\n\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\n\n# Behind the scenes:\n# 1. Person -> JSON schema\n# 2. JSON schema -> CFG\n# 3. CFG -> FSM\n# 4. FSM filters tokens during generation\n\ngenerator = outlines.generate.json(model, Person)\nresult = generator(\"Generate person: Alice, 25\")\n```\n\n### 2. Structured Generators\n\nOutlines provides specialized generators for different output types.\n\n#### Choice Generator\n\n```python\n# Multiple choice selection\ngenerator = outlines.generate.choice(\n    model,\n    [\"positive\", \"negative\", \"neutral\"]\n)\n\nsentiment = generator(\"Review: This is great!\")\n# Result: One of the three choices\n```\n\n#### JSON Generator\n\n```python\nfrom pydantic import BaseModel\n\nclass Product(BaseModel):\n    name: str\n    price: float\n    in_stock: bool\n\n# Generate valid JSON matching schema\ngenerator = outlines.generate.json(model, Product)\nproduct = generator(\"Extract: iPhone 15, $999, available\")\n\n# Guaranteed valid Product instance\nprint(type(product))  # \u003Cclass '__main__.Product'>\n```\n\n#### Regex Generator\n\n```python\n# Generate text matching regex\ngenerator = outlines.generate.regex(\n    model,\n    r\"[0-9]{3}-[0-9]{3}-[0-9]{4}\"  # Phone number pattern\n)\n\nphone = generator(\"Generate phone number:\")\n# Result: \"555-123-4567\" (guaranteed to match pattern)\n```\n\n#### Integer\u002FFloat Generators\n\n```python\n# Generate specific numeric types\nint_generator = outlines.generate.integer(model)\nage = int_generator(\"Person's age:\")  # Guaranteed integer\n\nfloat_generator = outlines.generate.float(model)\nprice = float_generator(\"Product price:\")  # Guaranteed float\n```\n\n### 3. Model Backends\n\nOutlines supports multiple local and API-based backends.\n\n#### Transformers (Hugging Face)\n\n```python\nimport outlines\n\n# Load from Hugging Face\nmodel = outlines.models.transformers(\n    \"microsoft\u002FPhi-3-mini-4k-instruct\",\n    device=\"cuda\"  # Or \"cpu\"\n)\n\n# Use with any generator\ngenerator = outlines.generate.json(model, YourModel)\n```\n\n#### llama.cpp\n\n```python\n# Load GGUF model\nmodel = outlines.models.llamacpp(\n    \".\u002Fmodels\u002Fllama-3.1-8b-instruct.Q4_K_M.gguf\",\n    n_gpu_layers=35\n)\n\ngenerator = outlines.generate.json(model, YourModel)\n```\n\n#### vLLM (High Throughput)\n\n```python\n# For production deployments\nmodel = outlines.models.vllm(\n    \"meta-llama\u002FLlama-3.1-8B-Instruct\",\n    tensor_parallel_size=2  # Multi-GPU\n)\n\ngenerator = outlines.generate.json(model, YourModel)\n```\n\n#### OpenAI (Limited Support)\n\n```python\n# Basic OpenAI support\nmodel = outlines.models.openai(\n    \"gpt-4o-mini\",\n    api_key=\"your-api-key\"\n)\n\n# Note: Some features limited with API models\ngenerator = outlines.generate.json(model, YourModel)\n```\n\n### 4. Pydantic Integration\n\nOutlines has first-class Pydantic support with automatic schema translation.\n\n#### Basic Models\n\n```python\nfrom pydantic import BaseModel, Field\n\nclass Article(BaseModel):\n    title: str = Field(description=\"Article title\")\n    author: str = Field(description=\"Author name\")\n    word_count: int = Field(description=\"Number of words\", gt=0)\n    tags: list[str] = Field(description=\"List of tags\")\n\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\ngenerator = outlines.generate.json(model, Article)\n\narticle = generator(\"Generate article about AI\")\nprint(article.title)\nprint(article.word_count)  # Guaranteed > 0\n```\n\n#### Nested Models\n\n```python\nclass Address(BaseModel):\n    street: str\n    city: str\n    country: str\n\nclass Person(BaseModel):\n    name: str\n    age: int\n    address: Address  # Nested model\n\ngenerator = outlines.generate.json(model, Person)\nperson = generator(\"Generate person in New York\")\n\nprint(person.address.city)  # \"New York\"\n```\n\n#### Enums and Literals\n\n```python\nfrom enum import Enum\nfrom typing import Literal\n\nclass Status(str, Enum):\n    PENDING = \"pending\"\n    APPROVED = \"approved\"\n    REJECTED = \"rejected\"\n\nclass Application(BaseModel):\n    applicant: str\n    status: Status  # Must be one of enum values\n    priority: Literal[\"low\", \"medium\", \"high\"]  # Must be one of literals\n\ngenerator = outlines.generate.json(model, Application)\napp = generator(\"Generate application\")\n\nprint(app.status)  # Status.PENDING (or APPROVED\u002FREJECTED)\n```\n\n## Common Patterns\n\n### Pattern 1: Data Extraction\n\n```python\nfrom pydantic import BaseModel\nimport outlines\n\nclass CompanyInfo(BaseModel):\n    name: str\n    founded_year: int\n    industry: str\n    employees: int\n\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\ngenerator = outlines.generate.json(model, CompanyInfo)\n\ntext = \"\"\"\nApple Inc. was founded in 1976 in the technology industry.\nThe company employs approximately 164,000 people worldwide.\n\"\"\"\n\nprompt = f\"Extract company information:\\n{text}\\n\\nCompany:\"\ncompany = generator(prompt)\n\nprint(f\"Name: {company.name}\")\nprint(f\"Founded: {company.founded_year}\")\nprint(f\"Industry: {company.industry}\")\nprint(f\"Employees: {company.employees}\")\n```\n\n### Pattern 2: Classification\n\n```python\nfrom typing import Literal\nimport outlines\n\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\n\n# Binary classification\ngenerator = outlines.generate.choice(model, [\"spam\", \"not_spam\"])\nresult = generator(\"Email: Buy now! 50% off!\")\n\n# Multi-class classification\ncategories = [\"technology\", \"business\", \"sports\", \"entertainment\"]\ncategory_gen = outlines.generate.choice(model, categories)\ncategory = category_gen(\"Article: Apple announces new iPhone...\")\n\n# With confidence\nclass Classification(BaseModel):\n    label: Literal[\"positive\", \"negative\", \"neutral\"]\n    confidence: float\n\nclassifier = outlines.generate.json(model, Classification)\nresult = classifier(\"Review: This product is okay, nothing special\")\n```\n\n### Pattern 3: Structured Forms\n\n```python\nclass UserProfile(BaseModel):\n    full_name: str\n    age: int\n    email: str\n    phone: str\n    country: str\n    interests: list[str]\n\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\ngenerator = outlines.generate.json(model, UserProfile)\n\nprompt = \"\"\"\nExtract user profile from:\nName: Alice Johnson\nAge: 28\nEmail: alice@example.com\nPhone: 555-0123\nCountry: USA\nInterests: hiking, photography, cooking\n\"\"\"\n\nprofile = generator(prompt)\nprint(profile.full_name)\nprint(profile.interests)  # [\"hiking\", \"photography\", \"cooking\"]\n```\n\n### Pattern 4: Multi-Entity Extraction\n\n```python\nclass Entity(BaseModel):\n    name: str\n    type: Literal[\"PERSON\", \"ORGANIZATION\", \"LOCATION\"]\n\nclass DocumentEntities(BaseModel):\n    entities: list[Entity]\n\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\ngenerator = outlines.generate.json(model, DocumentEntities)\n\ntext = \"Tim Cook met with Satya Nadella at Microsoft headquarters in Redmond.\"\nprompt = f\"Extract entities from: {text}\"\n\nresult = generator(prompt)\nfor entity in result.entities:\n    print(f\"{entity.name} ({entity.type})\")\n```\n\n### Pattern 5: Code Generation\n\n```python\nclass PythonFunction(BaseModel):\n    function_name: str\n    parameters: list[str]\n    docstring: str\n    body: str\n\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\ngenerator = outlines.generate.json(model, PythonFunction)\n\nprompt = \"Generate a Python function to calculate factorial\"\nfunc = generator(prompt)\n\nprint(f\"def {func.function_name}({', '.join(func.parameters)}):\")\nprint(f'    \"\"\"{func.docstring}\"\"\"')\nprint(f\"    {func.body}\")\n```\n\n### Pattern 6: Batch Processing\n\n```python\ndef batch_extract(texts: list[str], schema: type[BaseModel]):\n    \"\"\"Extract structured data from multiple texts.\"\"\"\n    model = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\n    generator = outlines.generate.json(model, schema)\n\n    results = []\n    for text in texts:\n        result = generator(f\"Extract from: {text}\")\n        results.append(result)\n\n    return results\n\nclass Person(BaseModel):\n    name: str\n    age: int\n\ntexts = [\n    \"John is 30 years old\",\n    \"Alice is 25 years old\",\n    \"Bob is 40 years old\"\n]\n\npeople = batch_extract(texts, Person)\nfor person in people:\n    print(f\"{person.name}: {person.age}\")\n```\n\n## Backend Configuration\n\n### Transformers\n\n```python\nimport outlines\n\n# Basic usage\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\n\n# GPU configuration\nmodel = outlines.models.transformers(\n    \"microsoft\u002FPhi-3-mini-4k-instruct\",\n    device=\"cuda\",\n    model_kwargs={\"torch_dtype\": \"float16\"}\n)\n\n# Popular models\nmodel = outlines.models.transformers(\"meta-llama\u002FLlama-3.1-8B-Instruct\")\nmodel = outlines.models.transformers(\"mistralai\u002FMistral-7B-Instruct-v0.3\")\nmodel = outlines.models.transformers(\"Qwen\u002FQwen2.5-7B-Instruct\")\n```\n\n### llama.cpp\n\n```python\n# Load GGUF model\nmodel = outlines.models.llamacpp(\n    \".\u002Fmodels\u002Fllama-3.1-8b.Q4_K_M.gguf\",\n    n_ctx=4096,         # Context window\n    n_gpu_layers=35,    # GPU layers\n    n_threads=8         # CPU threads\n)\n\n# Full GPU offload\nmodel = outlines.models.llamacpp(\n    \".\u002Fmodels\u002Fmodel.gguf\",\n    n_gpu_layers=-1  # All layers on GPU\n)\n```\n\n### vLLM (Production)\n\n```python\n# Single GPU\nmodel = outlines.models.vllm(\"meta-llama\u002FLlama-3.1-8B-Instruct\")\n\n# Multi-GPU\nmodel = outlines.models.vllm(\n    \"meta-llama\u002FLlama-3.1-70B-Instruct\",\n    tensor_parallel_size=4  # 4 GPUs\n)\n\n# With quantization\nmodel = outlines.models.vllm(\n    \"meta-llama\u002FLlama-3.1-8B-Instruct\",\n    quantization=\"awq\"  # Or \"gptq\"\n)\n```\n\n## Best Practices\n\n### 1. Use Specific Types\n\n```python\n# ✅ Good: Specific types\nclass Product(BaseModel):\n    name: str\n    price: float  # Not str\n    quantity: int  # Not str\n    in_stock: bool  # Not str\n\n# ❌ Bad: Everything as string\nclass Product(BaseModel):\n    name: str\n    price: str  # Should be float\n    quantity: str  # Should be int\n```\n\n### 2. Add Constraints\n\n```python\nfrom pydantic import Field\n\n# ✅ Good: With constraints\nclass User(BaseModel):\n    name: str = Field(min_length=1, max_length=100)\n    age: int = Field(ge=0, le=120)\n    email: str = Field(pattern=r\"^[\\w\\.-]+@[\\w\\.-]+\\.\\w+$\")\n\n# ❌ Bad: No constraints\nclass User(BaseModel):\n    name: str\n    age: int\n    email: str\n```\n\n### 3. Use Enums for Categories\n\n```python\n# ✅ Good: Enum for fixed set\nclass Priority(str, Enum):\n    LOW = \"low\"\n    MEDIUM = \"medium\"\n    HIGH = \"high\"\n\nclass Task(BaseModel):\n    title: str\n    priority: Priority\n\n# ❌ Bad: Free-form string\nclass Task(BaseModel):\n    title: str\n    priority: str  # Can be anything\n```\n\n### 4. Provide Context in Prompts\n\n```python\n# ✅ Good: Clear context\nprompt = \"\"\"\nExtract product information from the following text.\nText: iPhone 15 Pro costs $999 and is currently in stock.\nProduct:\n\"\"\"\n\n# ❌ Bad: Minimal context\nprompt = \"iPhone 15 Pro costs $999 and is currently in stock.\"\n```\n\n### 5. Handle Optional Fields\n\n```python\nfrom typing import Optional\n\n# ✅ Good: Optional fields for incomplete data\nclass Article(BaseModel):\n    title: str  # Required\n    author: Optional[str] = None  # Optional\n    date: Optional[str] = None  # Optional\n    tags: list[str] = []  # Default empty list\n\n# Can succeed even if author\u002Fdate missing\n```\n\n## Comparison to Alternatives\n\n| Feature | Outlines | Instructor | Guidance | LMQL |\n|---------|----------|------------|----------|------|\n| Pydantic Support | ✅ Native | ✅ Native | ❌ No | ❌ No |\n| JSON Schema | ✅ Yes | ✅ Yes | ⚠️ Limited | ✅ Yes |\n| Regex Constraints | ✅ Yes | ❌ No | ✅ Yes | ✅ Yes |\n| Local Models | ✅ Full | ⚠️ Limited | ✅ Full | ✅ Full |\n| API Models | ⚠️ Limited | ✅ Full | ✅ Full | ✅ Full |\n| Zero Overhead | ✅ Yes | ❌ No | ⚠️ Partial | ✅ Yes |\n| Automatic Retrying | ❌ No | ✅ Yes | ❌ No | ❌ No |\n| Learning Curve | Low | Low | Low | High |\n\n**When to choose Outlines:**\n- Using local models (Transformers, llama.cpp, vLLM)\n- Need maximum inference speed\n- Want Pydantic model support\n- Require zero-overhead structured generation\n- Control token sampling process\n\n**When to choose alternatives:**\n- Instructor: Need API models with automatic retrying\n- Guidance: Need token healing and complex workflows\n- LMQL: Prefer declarative query syntax\n\n## Performance Characteristics\n\n**Speed:**\n- **Zero overhead**: Structured generation as fast as unconstrained\n- **Fast-forward optimization**: Skips deterministic tokens\n- **1.2-2x faster** than post-generation validation approaches\n\n**Memory:**\n- FSM compiled once per schema (cached)\n- Minimal runtime overhead\n- Efficient with vLLM for high throughput\n\n**Accuracy:**\n- **100% valid outputs** (guaranteed by FSM)\n- No retry loops needed\n- Deterministic token filtering\n\n## Resources\n\n- **Documentation**: https:\u002F\u002Foutlines-dev.github.io\u002Foutlines\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Foutlines-dev\u002Foutlines (8k+ stars)\n- **Discord**: https:\u002F\u002Fdiscord.gg\u002FR9DSu34mGd\n- **Blog**: https:\u002F\u002Fblog.dottxt.co\n\n## See Also\n\n- `references\u002Fjson_generation.md` - Comprehensive JSON and Pydantic patterns\n- `references\u002Fbackends.md` - Backend-specific configuration\n- `references\u002Fexamples.md` - Production-ready examples\n\n\n","# Outlines: Structured Text Generation\n\n## When to Use This Skill\n\nUse Outlines when you need to:\n- **Guarantee valid JSON\u002FXML\u002Fcode** structure during generation\n- **Use Pydantic models** for type-safe outputs\n- **Support local models** (Transformers, llama.cpp, vLLM)\n- **Maximize inference speed** with zero-overhead structured generation\n- **Generate against JSON schemas** automatically\n- **Control token sampling** at the grammar level\n\n**GitHub Stars**: 8,000+ | **From**: dottxt.ai (formerly .txt)\n\n## Installation\n\n```bash\n# Base installation\npip install outlines\n\n# With specific backends\npip install outlines transformers  # Hugging Face models\npip install outlines llama-cpp-python  # llama.cpp\npip install outlines vllm  # vLLM for high-throughput\n```\n\n## Quick Start\n\n### Basic Example: Classification\n\n```python\nimport outlines\nfrom typing import Literal\n\n# Load model\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\n\n# Generate with type constraint\nprompt = \"Sentiment of 'This product is amazing!': \"\ngenerator = outlines.generate.choice(model, [\"positive\", \"negative\", \"neutral\"])\nsentiment = generator(prompt)\n\nprint(sentiment)  # \"positive\" (guaranteed one of these)\n```\n\n### With Pydantic Models\n\n```python\nfrom pydantic import BaseModel\nimport outlines\n\nclass User(BaseModel):\n    name: str\n    age: int\n    email: str\n\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\n\n# Generate structured output\nprompt = \"Extract user: John Doe, 30 years old, john@example.com\"\ngenerator = outlines.generate.json(model, User)\nuser = generator(prompt)\n\nprint(user.name)   # \"John Doe\"\nprint(user.age)    # 30\nprint(user.email)  # \"john@example.com\"\n```\n\n## Core Concepts\n\n### 1. Constrained Token Sampling\n\nOutlines uses Finite State Machines (FSM) to constrain token generation at the logit level.\n\n**How it works:**\n1. Convert schema (JSON\u002FPydantic\u002Fregex) to context-free grammar (CFG)\n2. Transform CFG into Finite State Machine (FSM)\n3. Filter invalid tokens at each step during generation\n4. Fast-forward when only one valid token exists\n\n**Benefits:**\n- **Zero overhead**: Filtering happens at token level\n- **Speed improvement**: Fast-forward through deterministic paths\n- **Guaranteed validity**: Invalid outputs impossible\n\n```python\nimport outlines\n\n# Pydantic model -> JSON schema -> CFG -> FSM\nclass Person(BaseModel):\n    name: str\n    age: int\n\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\n\n# Behind the scenes:\n# 1. Person -> JSON schema\n# 2. JSON schema -> CFG\n# 3. CFG -> FSM\n# 4. FSM filters tokens during generation\n\ngenerator = outlines.generate.json(model, Person)\nresult = generator(\"Generate person: Alice, 25\")\n```\n\n### 2. Structured Generators\n\nOutlines provides specialized generators for different output types.\n\n#### Choice Generator\n\n```python\n# Multiple choice selection\ngenerator = outlines.generate.choice(\n    model,\n    [\"positive\", \"negative\", \"neutral\"]\n)\n\nsentiment = generator(\"Review: This is great!\")\n# Result: One of the three choices\n```\n\n#### JSON Generator\n\n```python\nfrom pydantic import BaseModel\n\nclass Product(BaseModel):\n    name: str\n    price: float\n    in_stock: bool\n\n# Generate valid JSON matching schema\ngenerator = outlines.generate.json(model, Product)\nproduct = generator(\"Extract: iPhone 15, $999, available\")\n\n# Guaranteed valid Product instance\nprint(type(product))  # \u003Cclass '__main__.Product'>\n```\n\n#### Regex Generator\n\n```python\n# Generate text matching regex\ngenerator = outlines.generate.regex(\n    model,\n    r\"[0-9]{3}-[0-9]{3}-[0-9]{4}\"  # Phone number pattern\n)\n\nphone = generator(\"Generate phone number:\")\n# Result: \"555-123-4567\" (guaranteed to match pattern)\n```\n\n#### Integer\u002FFloat Generators\n\n```python\n# Generate specific numeric types\nint_generator = outlines.generate.integer(model)\nage = int_generator(\"Person's age:\")  # Guaranteed integer\n\nfloat_generator = outlines.generate.float(model)\nprice = float_generator(\"Product price:\")  # Guaranteed float\n```\n\n### 3. Model Backends\n\nOutlines supports multiple local and API-based backends.\n\n#### Transformers (Hugging Face)\n\n```python\nimport outlines\n\n# Load from Hugging Face\nmodel = outlines.models.transformers(\n    \"microsoft\u002FPhi-3-mini-4k-instruct\",\n    device=\"cuda\"  # Or \"cpu\"\n)\n\n# Use with any generator\ngenerator = outlines.generate.json(model, YourModel)\n```\n\n#### llama.cpp\n\n```python\n# Load GGUF model\nmodel = outlines.models.llamacpp(\n    \".\u002Fmodels\u002Fllama-3.1-8b-instruct.Q4_K_M.gguf\",\n    n_gpu_layers=35\n)\n\ngenerator = outlines.generate.json(model, YourModel)\n```\n\n#### vLLM (High Throughput)\n\n```python\n# For production deployments\nmodel = outlines.models.vllm(\n    \"meta-llama\u002FLlama-3.1-8B-Instruct\",\n    tensor_parallel_size=2  # Multi-GPU\n)\n\ngenerator = outlines.generate.json(model, YourModel)\n```\n\n#### OpenAI (Limited Support)\n\n```python\n# Basic OpenAI support\nmodel = outlines.models.openai(\n    \"gpt-4o-mini\",\n    api_key=\"your-api-key\"\n)\n\n# Note: Some features limited with API models\ngenerator = outlines.generate.json(model, YourModel)\n```\n\n### 4. Pydantic Integration\n\nOutlines has first-class Pydantic support with automatic schema translation.\n\n#### Basic Models\n\n```python\nfrom pydantic import BaseModel, Field\n\nclass Article(BaseModel):\n    title: str = Field(description=\"Article title\")\n    author: str = Field(description=\"Author name\")\n    word_count: int = Field(description=\"Number of words\", gt=0)\n    tags: list[str] = Field(description=\"List of tags\")\n\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\ngenerator = outlines.generate.json(model, Article)\n\narticle = generator(\"Generate article about AI\")\nprint(article.title)\nprint(article.word_count)  # Guaranteed > 0\n```\n\n#### Nested Models\n\n```python\nclass Address(BaseModel):\n    street: str\n    city: str\n    country: str\n\nclass Person(BaseModel):\n    name: str\n    age: int\n    address: Address  # Nested model\n\ngenerator = outlines.generate.json(model, Person)\nperson = generator(\"Generate person in New York\")\n\nprint(person.address.city)  # \"New York\"\n```\n\n#### Enums and Literals\n\n```python\nfrom enum import Enum\nfrom typing import Literal\n\nclass Status(str, Enum):\n    PENDING = \"pending\"\n    APPROVED = \"approved\"\n    REJECTED = \"rejected\"\n\nclass Application(BaseModel):\n    applicant: str\n    status: Status  # Must be one of enum values\n    priority: Literal[\"low\", \"medium\", \"high\"]  # Must be one of literals\n\ngenerator = outlines.generate.json(model, Application)\napp = generator(\"Generate application\")\n\nprint(app.status)  # Status.PENDING (or APPROVED\u002FREJECTED)\n```\n\n## Common Patterns\n\n### Pattern 1: Data Extraction\n\n```python\nfrom pydantic import BaseModel\nimport outlines\n\nclass CompanyInfo(BaseModel):\n    name: str\n    founded_year: int\n    industry: str\n    employees: int\n\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\ngenerator = outlines.generate.json(model, CompanyInfo)\n\ntext = \"\"\"\nApple Inc. was founded in 1976 in the technology industry.\nThe company employs approximately 164,000 people worldwide.\n\"\"\"\n\nprompt = f\"Extract company information:\\n{text}\\n\\nCompany:\"\ncompany = generator(prompt)\n\nprint(f\"Name: {company.name}\")\nprint(f\"Founded: {company.founded_year}\")\nprint(f\"Industry: {company.industry}\")\nprint(f\"Employees: {company.employees}\")\n```\n\n### Pattern 2: Classification\n\n```python\nfrom typing import Literal\nimport outlines\n\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\n\n# Binary classification\ngenerator = outlines.generate.choice(model, [\"spam\", \"not_spam\"])\nresult = generator(\"Email: Buy now! 50% off!\")\n\n# Multi-class classification\ncategories = [\"technology\", \"business\", \"sports\", \"entertainment\"]\ncategory_gen = outlines.generate.choice(model, categories)\ncategory = category_gen(\"Article: Apple announces new iPhone...\")\n\n# With confidence\nclass Classification(BaseModel):\n    label: Literal[\"positive\", \"negative\", \"neutral\"]\n    confidence: float\n\nclassifier = outlines.generate.json(model, Classification)\nresult = classifier(\"Review: This product is okay, nothing special\")\n```\n\n### Pattern 3: Structured Forms\n\n```python\nclass UserProfile(BaseModel):\n    full_name: str\n    age: int\n    email: str\n    phone: str\n    country: str\n    interests: list[str]\n\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\ngenerator = outlines.generate.json(model, UserProfile)\n\nprompt = \"\"\"\nExtract user profile from:\nName: Alice Johnson\nAge: 28\nEmail: alice@example.com\nPhone: 555-0123\nCountry: USA\nInterests: hiking, photography, cooking\n\"\"\"\n\nprofile = generator(prompt)\nprint(profile.full_name)\nprint(profile.interests)  # [\"hiking\", \"photography\", \"cooking\"]\n```\n\n### Pattern 4: Multi-Entity Extraction\n\n```python\nclass Entity(BaseModel):\n    name: str\n    type: Literal[\"PERSON\", \"ORGANIZATION\", \"LOCATION\"]\n\nclass DocumentEntities(BaseModel):\n    entities: list[Entity]\n\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\ngenerator = outlines.generate.json(model, DocumentEntities)\n\ntext = \"Tim Cook met with Satya Nadella at Microsoft headquarters in Redmond.\"\nprompt = f\"Extract entities from: {text}\"\n\nresult = generator(prompt)\nfor entity in result.entities:\n    print(f\"{entity.name} ({entity.type})\")\n```\n\n### Pattern 5: Code Generation\n\n```python\nclass PythonFunction(BaseModel):\n    function_name: str\n    parameters: list[str]\n    docstring: str\n    body: str\n\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\ngenerator = outlines.generate.json(model, PythonFunction)\n\nprompt = \"Generate a Python function to calculate factorial\"\nfunc = generator(prompt)\n\nprint(f\"def {func.function_name}({', '.join(func.parameters)}):\")\nprint(f'    \"\"\"{func.docstring}\"\"\"')\nprint(f\"    {func.body}\")\n```\n\n### Pattern 6: Batch Processing\n\n```python\ndef batch_extract(texts: list[str], schema: type[BaseModel]):\n    \"\"\"Extract structured data from multiple texts.\"\"\"\n    model = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\n    generator = outlines.generate.json(model, schema)\n\n    results = []\n    for text in texts:\n        result = generator(f\"Extract from: {text}\")\n        results.append(result)\n\n    return results\n\nclass Person(BaseModel):\n    name: str\n    age: int\n\ntexts = [\n    \"John is 30 years old\",\n    \"Alice is 25 years old\",\n    \"Bob is 40 years old\"\n]\n\npeople = batch_extract(texts, Person)\nfor person in people:\n    print(f\"{person.name}: {person.age}\")\n```\n\n## Backend Configuration\n\n### Transformers\n\n```python\nimport outlines\n\n# Basic usage\nmodel = outlines.models.transformers(\"microsoft\u002FPhi-3-mini-4k-instruct\")\n\n# GPU configuration\nmodel = outlines.models.transformers(\n    \"microsoft\u002FPhi-3-mini-4k-instruct\",\n    device=\"cuda\",\n    model_kwargs={\"torch_dtype\": \"float16\"}\n)\n\n# Popular models\nmodel = outlines.models.transformers(\"meta-llama\u002FLlama-3.1-8B-Instruct\")\nmodel = outlines.models.transformers(\"mistralai\u002FMistral-7B-Instruct-v0.3\")\nmodel = outlines.models.transformers(\"Qwen\u002FQwen2.5-7B-Instruct\")\n```\n\n### llama.cpp\n\n```python\n# Load GGUF model\nmodel = outlines.models.llamacpp(\n    \".\u002Fmodels\u002Fllama-3.1-8b.Q4_K_M.gguf\",\n    n_ctx=4096,         # Context window\n    n_gpu_layers=35,    # GPU layers\n    n_threads=8         # CPU threads\n)\n\n# Full GPU offload\nmodel = outlines.models.llamacpp(\n    \".\u002Fmodels\u002Fmodel.gguf\",\n    n_gpu_layers=-1  # All layers on GPU\n)\n```\n\n### vLLM (Production)\n\n```python\n# Single GPU\nmodel = outlines.models.vllm(\"meta-llama\u002FLlama-3.1-8B-Instruct\")\n\n# Multi-GPU\nmodel = outlines.models.vllm(\n    \"meta-llama\u002FLlama-3.1-70B-Instruct\",\n    tensor_parallel_size=4  # 4 GPUs\n)\n\n# With quantization\nmodel = outlines.models.vllm(\n    \"meta-llama\u002FLlama-3.1-8B-Instruct\",\n    quantization=\"awq\"  # Or \"gptq\"\n)\n```\n\n## Best Practices\n\n### 1. Use Specific Types\n\n```python\n# ✅ Good: Specific types\nclass Product(BaseModel):\n    name: str\n    price: float  # Not str\n    quantity: int  # Not str\n    in_stock: bool  # Not str\n\n# ❌ Bad: Everything as string\nclass Product(BaseModel):\n    name: str\n    price: str  # Should be float\n    quantity: str  # Should be int\n```\n\n### 2. Add Constraints\n\n```python\nfrom pydantic import Field\n\n# ✅ Good: With constraints\nclass User(BaseModel):\n    name: str = Field(min_length=1, max_length=100)\n    age: int = Field(ge=0, le=120)\n    email: str = Field(pattern=r\"^[\\w\\.-]+@[\\w\\.-]+\\.\\w+$\")\n\n# ❌ Bad: No constraints\nclass User(BaseModel):\n    name: str\n    age: int\n    email: str\n```\n\n### 3. Use Enums for Categories\n\n```python\n# ✅ Good: Enum for fixed set\nclass Priority(str, Enum):\n    LOW = \"low\"\n    MEDIUM = \"medium\"\n    HIGH = \"high\"\n\nclass Task(BaseModel):\n    title: str\n    priority: Priority\n\n# ❌ Bad: Free-form string\nclass Task(BaseModel):\n    title: str\n    priority: str  # Can be anything\n```\n\n### 4. Provide Context in Prompts\n\n```python\n# ✅ Good: Clear context\nprompt = \"\"\"\nExtract product information from the following text.\nText: iPhone 15 Pro costs $999 and is currently in stock.\nProduct:\n\"\"\"\n\n# ❌ Bad: Minimal context\nprompt = \"iPhone 15 Pro costs $999 and is currently in stock.\"\n```\n\n### 5. Handle Optional Fields\n\n```python\nfrom typing import Optional\n\n# ✅ Good: Optional fields for incomplete data\nclass Article(BaseModel):\n    title: str  # Required\n    author: Optional[str] = None  # Optional\n    date: Optional[str] = None  # Optional\n    tags: list[str] = []  # Default empty list\n\n# Can succeed even if author\u002Fdate missing\n```\n\n## Comparison to Alternatives\n\n| Feature | Outlines | Instructor | Guidance | LMQL |\n|---------|----------|------------|----------|------|\n| Pydantic Support | ✅ Native | ✅ Native | ❌ No | ❌ No |\n| JSON Schema | ✅ Yes | ✅ Yes | ⚠️ Limited | ✅ Yes |\n| Regex Constraints | ✅ Yes | ❌ No | ✅ Yes | ✅ Yes |\n| Local Models | ✅ Full | ⚠️ Limited | ✅ Full | ✅ Full |\n| API Models | ⚠️ Limited | ✅ Full | ✅ Full | ✅ Full |\n| Zero Overhead | ✅ Yes | ❌ No | ⚠️ Partial | ✅ Yes |\n| Automatic Retrying | ❌ No | ✅ Yes | ❌ No | ❌ No |\n| Learning Curve | Low | Low | Low | High |\n\n**When to choose Outlines:**\n- Using local models (Transformers, llama.cpp, vLLM)\n- Need maximum inference speed\n- Want Pydantic model support\n- Require zero-overhead structured generation\n- Control token sampling process\n\n**When to choose alternatives:**\n- Instructor: Need API models with automatic retrying\n- Guidance: Need token healing and complex workflows\n- LMQL: Prefer declarative query syntax\n\n## Performance Characteristics\n\n**Speed:**\n- **Zero overhead**: Structured generation as fast as unconstrained\n- **Fast-forward optimization**: Skips deterministic tokens\n- **1.2-2x faster** than post-generation validation approaches\n\n**Memory:**\n- FSM compiled once per schema (cached)\n- Minimal runtime overhead\n- Efficient with vLLM for high throughput\n\n**Accuracy:**\n- **100% valid outputs** (guaranteed by FSM)\n- No retry loops needed\n- Deterministic token filtering\n\n## Resources\n\n- **Documentation**: https:\u002F\u002Foutlines-dev.github.io\u002Foutlines\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Foutlines-dev\u002Foutlines (8k+ stars)\n- **Discord**: https:\u002F\u002Fdiscord.gg\u002FR9DSu34mGd\n- **Blog**: https:\u002F\u002Fblog.dottxt.co\n\n## See Also\n\n- `references\u002Fjson_generation.md` - Comprehensive JSON and Pydantic patterns\n- `references\u002Fbackends.md` - Backend-specific configuration\n- `references\u002Fexamples.md` - Production-ready examples\n\n\n",{"name":5,"tags":44,"author":48,"license":15,"version":49,"category":50,"description":7,"dependencies":51},[45,19,33,46,32,31,20,47,29,28],"Prompt Engineering","JSON Schema","vLLM","Synthetic Sciences","1.0.0","llm-tools",[5,52,53,54],"transformers","vllm","pydantic","main","4aa39efd1cdab0b4657ecee16c92a92011a5b10f","openscience\u002Fbackend\u002Fcli\u002Fskills\u002Fllm-tools\u002Foutlines","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub","https:\u002F\u002Fgithub.com\u002Ffadrienne","2026-10-28 00:43:09",{"source":8,"skillName":5,"commands":62,"prompt":72,"zipAvailable":73},[63,66,69],{"tool":64,"command":65},"npx","npx skills add fadrienne\u002FMyGitHub --skill outlines",{"tool":67,"command":68},"bunx","bunx skills add fadrienne\u002FMyGitHub --skill outlines",{"tool":70,"command":71},"pnpm","pnpm dlx skills add fadrienne\u002FMyGitHub --skill outlines","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fllm-tools\u002Foutlines\u002FSKILL.md",true,[75,81,85],{"path":76,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":79,"sourceHtmlUrl":80},"references\u002Fbackends.md","REFERENCE","参考文档",14407,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fllm-tools\u002Foutlines\u002Freferences\u002Fbackends.md",{"path":82,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":83,"sourceHtmlUrl":84},"references\u002Fexamples.md",21231,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fllm-tools\u002Foutlines\u002Freferences\u002Fexamples.md",{"path":86,"resourceType":77,"resourceTypeDesc":78,"sizeBytes":87,"sourceHtmlUrl":88},"references\u002Fjson_generation.md",14927,"https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fopenscience\u002Fbackend\u002Fcli\u002Fskills\u002Fllm-tools\u002Foutlines\u002Freferences\u002Fjson_generation.md",[90,122,148,180,206,232],{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":101,"publishedAt":39},"01M7167B28PK20HP7R7ZED2DY0","statistical-power","Sample size calculation, power analysis, and effect size conversion for scientific studies. Use BEFORE data collection (a priori) to determine required N, or after (post-hoc) to compute achieved power. Covers parametric tests (t-test, ANOVA, chi-square, proportions, correlation, regression), simulation-based power for complex\u002Fclustered\u002Fnested designs, and power curves. Use this skill when someone asks 'how many samples do I need', 'what is my power', 'what effect size can I detect', or any variant. Pairs with \u002Fexperimental-design (choose design first, then compute power) and \u002Fstatistical-analysis (analyze data after collection).","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fstatistical-power\u002FSKILL.md",[96],{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121],"power","statistical power","effect","scipy","regression","choose","design","uv","when","Bash","collection","analysis","calculation","ANOVA","conversion","analyze","t-test","chi-square","simulation","sample",{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":131,"publishedAt":39},"01M71677EBCM8EPCE9BZCK8505","statistical-analysis","Guided statistical analysis with test selection and reporting. Use when you need help choosing appropriate tests for your data, assumption checking, power analysis, and APA-formatted results. Best for academic research reporting, test selection guidance. For implementing specific models programmatically use statsmodels.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fstatistical-analysis\u002FSKILL.md",[128],{"categoryNo":129,"categoryName":130,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000008","测试与质量",[113,132,102,133,134,135,110,136,137,138,21,139,140,141,142,143,144,145,146,147],"statistical analysis","academic research","implementing","selection","you","reporting","data","tests","use","with","test","research","results","statsmodels","models","help",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":163,"publishedAt":39},"01M71673R93XAHFH81DBNVNG7H","scientific-writing","Core skill for the deep research and writing tool. Write scientific manuscripts in full paragraphs (never bullet points). Use two-stage process with (1) section outlines with key points using research-lookup then (2) convert to flowing prose. IMRAD structure, citations (APA\u002FAMA\u002FVancouver), figures\u002Ftables, reporting guidelines (CONSORT\u002FSTROBE\u002FPRISMA), for research papers and journal submissions.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fscientific-writing\u002FSKILL.md",[154,157,158],{"categoryNo":155,"categoryName":156,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},{"categoryNo":159,"categoryName":160,"taxonomyType":161,"taxonomyTypeDesc":162},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[164,165,166,167,168,169,170,171,172,173,111,174,175,24,176,19,177,178,137,179],"writing","scientific","scientific writing","Citations","deep","deep research","never","papers","journal","false","api","prisma","openrouter","core skill","read","features",{"skillNo":181,"name":182,"nameZh":6,"description":183,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":184,"categories":185,"keywords":190,"publishedAt":39},"01M7166ZPKXBF4EBPHVTJPQBB1","scientific-visualization","Meta-skill for publication-ready figures. Use when creating journal submission figures requiring multi-panel layouts, significance annotations, error bars, colorblind-safe palettes, and specific journal formatting (Nature, Science, Cell). Orchestrates matplotlib\u002Fseaborn\u002Fplotly with publication styles. For quick exploration use seaborn or plotly directly.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fscientific-visualization\u002FSKILL.md",[186,189],{"categoryNo":187,"categoryName":188,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000013","分析与可视化",{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},[191,165,192,193,194,195,196,197,198,172,110,30,199,200,201,202,203,204,21,205],"visualization","scientific visualization","error","ready","quick","exploration","meta-skill","Meta","plotly","annotations","formatting","Publication","figures","panel","submission",{"skillNo":207,"name":208,"nameZh":6,"description":209,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":210,"categories":211,"keywords":218,"publishedAt":39},"01M7166VXJWQSSC3RQZP60WBGR","research-code","Debug, profile, review, and restructure Python research and analysis code. Use when analysis scripts crash, produce wrong results, run too slowly, or need a correctness review. Covers: reading tracebacks and diagnosing root causes, hypothesis-driven debugging, reviewing code for common statistical\u002Fnumerical errors, profiling data pipelines, improving reproducibility (seeds, environments, determinism), and structuring analysis scripts for sharing. Distinct from \u002Fexploratory-data-analysis (which understands data) and \u002Fstatistical-analysis (which chooses and runs tests) — this skill focuses on the code itself.","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fresearch-code\u002FSKILL.md",[212,215],{"categoryNo":213,"categoryName":214,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":216,"categoryName":217,"taxonomyType":161,"taxonomyTypeDesc":162},"01JBSEEDCAT000000000000030","开发工程师",[35,219,143,220,221,222,223,109,224,110,111,113,225,226,227,228,229,230,178,231],"research code","which","memory","data-analysis","errors","debugging","common","review","data pipelines","run","scripts","line","write",{"skillNo":233,"name":234,"nameZh":6,"description":235,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":236,"licenseFileUrl":6,"sourceHtmlUrl":237,"categories":238,"keywords":245,"publishedAt":39},"01M7166CF5HSR7SVZYZFWTDX55","markdown-mermaid-writing","Comprehensive markdown and Mermaid diagram writing skill. Use when creating any scientific document, report, analysis, or visualization. Establishes text-based diagrams as the default documentation standard with full style guides (markdown + mermaid), 24 diagram type references, and 9 document templates.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Ffadrienne\u002FMyGitHub\u002Fblob\u002Fmain\u002Fscientific-agent-skills\u002Fskills\u002Fmarkdown-mermaid-writing\u002FSKILL.md",[239,242,243,244],{"categoryNo":240,"categoryName":241,"taxonomyType":99,"taxonomyTypeDesc":100},"01JBSEEDCAT000000000000002","文档处理",{"categoryNo":155,"categoryName":156,"taxonomyType":99,"taxonomyTypeDesc":100},{"categoryNo":97,"categoryName":98,"taxonomyType":99,"taxonomyTypeDesc":100},{"categoryNo":159,"categoryName":160,"taxonomyType":161,"taxonomyTypeDesc":162},[164,246,247,248,249,250,191,251,252,110,111,113,253,254,255,256,257,258,165,178],"markdown mermaid writing","mermaid","markdown","community","diagrams","project","default","team","guides","text","documentation","references","diagram"]