Claude Skills Guide

Spectral is a powerful JSON/YAML linting tool that helps teams maintain API quality and consistency. When combined with Claude Code, it becomes an even more potent pair for API development workflows. This tutorial will show you how to integrate Spectral into your Claude Code projects and use its capabilities for better API governance.

Understanding Spectral and Its Role in API Development

Spectral is an open-source linting tool designed specifically for JSON and YAML documents, with special focus on API specifications like OpenAPI, AsyncAPI, and JSON Schema. Unlike generic linters, Spectral understands the structure of API definitions and can enforce organization-specific rules beyond basic syntax validation.

When working with Claude Code, Spectral acts as a domain-specific expert that validates your API designs in real-time. This combination allows you to catch issues early, enforce coding standards, and maintain consistency across your API ecosystem without manual code reviews for every change.

The integration works particularly well because Claude Code can understand both your business logic and the linting rules, making it possible to receive contextual suggestions that align with your organization’s standards.

Setting Up Spectral in Your Project

Getting started with Spectral in a Claude Code project is straightforward. First, you’ll need to install Spectral as a development dependency in your project. The recommended approach is to use npm or yarn for JavaScript/TypeScript projects, or pip for Python projects.

For a Node.js project, install Spectral globally or as a dev dependency:

npm install -D @stoplight/spectral-cli

Or if you prefer yarn:

yarn add -D @stoplight/spectral-cli

Once installed, create a configuration file named .spectral.yaml in your project root. This file will contain your linting rules and settings. Here’s a basic configuration to get started:

extends: spectral:oas
rules:
  info-contact: error
  info-description: warn
  operation-description: warn
  operation-tags: error
  operation-tag-defined: error

This configuration extends the built-in OpenAPI ruleset and customizes several rule severities. The extends property pulls in Spectral’s official OpenAPI style guide, which provides comprehensive validation out of the box.

Creating Custom Rules for Your Organization

One of Spectral’s most powerful features is the ability to create custom rules that enforce your organization’s specific standards. These rules can validate naming conventions, require certain fields, or enforce architectural decisions.

To create custom rules, add a rules section to your .spectral.yaml file. Here’s an example that enforces API versioning standards:

rules:
  api-version-format:
    message: API version must follow semver format (v1, v2, etc.)
    given: $.paths[*].[*].parameters[*]
    severity: error
    then:
      field: schema.$ref
      function: pattern
      functionOptions:
        match: "^#/components/versions/v[0-9]+$"

This custom rule checks that all version references in your API follow a consistent pattern. You can create similar rules for:

When Claude Code assists you with API development, it can reference these rules to provide context-aware suggestions that automatically align with your standards.

Integrating Spectral with Claude Code Workflows

Integrating Spectral with Claude Code involves creating custom skills that run linting as part of your development workflow. Claude Code can execute Spectral commands and interpret the results to provide actionable feedback.

Create a Claude Skill that runs Spectral linting on your OpenAPI specifications:

name: spectral-linter
description: Run Spectral linting on API specifications

When you invoke this skill, Claude Code will run Spectral against your API definition and present any issues in a readable format. This integration allows for iterative improvement where Claude Code suggests fixes based on the linting results.

For continuous integration, add Spectral to your CI pipeline. A GitHub Actions workflow might look like:

name: API Linting
on: [push, pull_request]
jobs:
  spectral:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Run Spectral
        run: npx spectral lint openapi.yaml --fail-on-severity error

This ensures that any changes to your API specifications are validated before merging, preventing bad definitions from reaching production.

Practical Examples: Linting Real-World APIs

Let’s walk through a practical example of using Spectral with Claude Code to improve an API specification. Imagine you’re developing a user management API and want to ensure consistency across all endpoints.

First, define your organization’s standards in a .spectral.yaml file:

rules:
  require-operation-id:
    given: $.paths[*][*]
    severity: error
    then:
      field: operationId
      function: truthy

  no-generic-responses:
    given: $.paths[*][*].responses
    severity: warn
    then:
      function: schema
      functionOptions:
        properties:
          "200":
            allowEmpty: false
          "400":
            const: true
          "401":
            const: true
          "500":
            const: true

These rules ensure every operation has an explicit operationId and that you document specific response codes rather than relying on generic responses.

When Claude Code assists you in adding a new endpoint, it can proactively check these rules and warn you about missing required fields or generic response codes. This makes the development process more efficient by catching issues before you even run the linter.

Best Practices for Spectral with Claude Code

To get the most out of Spectral and Claude Code working together, follow these best practices:

Start with the official Spectral rulesets and gradually customize them. The built-in rules for OpenAPI, AsyncAPI, and JSON Schema are comprehensive and well-maintained. Customize only what your organization specifically needs.

Keep your rules in version control alongside your API definitions. This ensures consistency across teams and allows you to track changes to your linting standards over time.

Use rule severity levels appropriately. Errors should block deployment, warnings should require explicit acknowledgment, and info-level issues are suggestions for improvement.

Document your custom rules so that developers understand what standards they’re expected to follow. Claude Code can reference these explanations when suggesting fixes.

Integrate Spectral early in your development workflow. The earlier you catch issues, the less expensive they are to fix. Consider adding pre-commit hooks that run Spectral on staged files.

Actionable Advice for Getting Started

Begin by installing Spectral in one of your API projects and running it against your existing OpenAPI specification. Review the results and identify which issues are most important to address.

Create a .spectral.yaml file with rules that match your current API design standards. Don’t try to enforce everything at once—start with the most critical rules and add more over time.

Integrate Spectral into your Claude Code workflow by creating a custom skill that runs linting. This allows you to receive real-time feedback as you develop your APIs.

Finally, add Spectral to your CI/CD pipeline to ensure all API changes are validated automatically. This creates a safety net that catches issues even when Claude Code isn’t directly involved in the review.

By combining Spectral’s powerful linting capabilities with Claude Code’s assistance, you can build APIs that are consistent, well-documented, and aligned with your organization’s standards from day one.

Built by theluckystrike — More at zovo.one