> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nx1cloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Check a skill bundle

> Validate and scan a skill bundle without saving it. Send a zip, the files of a skill folder (each named with its path relative to the folder, e.g. `underwriting-rules/scripts/fetch_rates.py`), or a single `SKILL.md`. Scripts are stored and scanned, never run.



## OpenAPI

````yaml post /api/registry/skills/validate
openapi: 3.1.0
info:
  title: Nx1 AI API
  description: |

    AI API for Nx1 Data Platform Management and Automated Data Tasks.

    Authentication is required via PSK in Authorization header.

    Default PSK is | [ask a friend] |
  version: 0.10.2
servers: []
security: []
paths:
  /api/registry/skills/validate:
    post:
      tags:
        - Registry
      summary: Check a skill bundle
      description: >-
        Validate and scan a skill bundle without saving it. Send a zip, the
        files of a skill folder (each named with its path relative to the
        folder, e.g. `underwriting-rules/scripts/fetch_rates.py`), or a single
        `SKILL.md`. Scripts are stored and scanned, never run.
      operationId: validate_skill_api_registry_skills_validate_post
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: >-
                #/components/schemas/Body_validate_skill_api_registry_skills_validate_post
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SkillUploadResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - OAuth2AuthorizationCodeBearer: []
        - APIKeyHeader: []
components:
  schemas:
    Body_validate_skill_api_registry_skills_validate_post:
      properties:
        files:
          items:
            type: string
            contentMediaType: application/octet-stream
          type: array
          title: Files
          description: The bundle's files.
      type: object
      required:
        - files
      title: Body_validate_skill_api_registry_skills_validate_post
    SkillUploadResponse:
      properties:
        valid:
          type: boolean
          title: Valid
        errors:
          items:
            type: string
          type: array
          title: Errors
        frontmatter:
          anyOf:
            - $ref: '#/components/schemas/SkillFrontmatter'
            - type: 'null'
        manifest:
          items:
            $ref: '#/components/schemas/SkillFile'
          type: array
          title: Manifest
        scan:
          anyOf:
            - $ref: '#/components/schemas/SkillScanReport'
            - type: 'null'
        size_bytes:
          type: integer
          title: Size Bytes
          default: 0
        artifact:
          anyOf:
            - $ref: '#/components/schemas/ArtifactDetail'
            - type: 'null'
      type: object
      required:
        - valid
      title: SkillUploadResponse
      description: What an uploaded skill bundle turned out to be.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    SkillFrontmatter:
      properties:
        name:
          type: string
          title: Name
        description:
          type: string
          maxLength: 1024
          minLength: 1
          title: Description
        license:
          anyOf:
            - type: string
            - type: 'null'
          title: License
        compatibility:
          anyOf:
            - type: string
              maxLength: 500
            - type: 'null'
          title: Compatibility
        metadata:
          additionalProperties:
            type: string
          type: object
          title: Metadata
        allowed_tools:
          anyOf:
            - type: string
            - type: 'null'
          title: Allowed Tools
          description: The experimental `allowed-tools` field, verbatim.
      type: object
      required:
        - name
        - description
      title: SkillFrontmatter
      description: '``SKILL.md`` frontmatter, per the agentskills.io specification.'
    SkillFile:
      properties:
        path:
          type: string
          title: Path
        size:
          type: integer
          title: Size
        sha256:
          type: string
          title: Sha256
        role:
          type: string
          enum:
            - skill_md
            - script
            - reference
            - asset
            - other
          title: Role
      type: object
      required:
        - path
        - size
        - sha256
        - role
      title: SkillFile
      description: One file in a skill bundle.
    SkillScanReport:
      properties:
        scanned_files:
          type: integer
          title: Scanned Files
          default: 0
        findings:
          items:
            $ref: '#/components/schemas/ScanFinding'
          type: array
          title: Findings
        summary:
          type: string
          title: Summary
          default: ''
      type: object
      title: SkillScanReport
      description: Static scan of a skill's bundled files. It informs review only.
    ArtifactDetail:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        kind:
          $ref: '#/components/schemas/ArtifactKind'
        scope:
          $ref: '#/components/schemas/ArtifactScope'
        name:
          type: string
          title: Name
        display_name:
          type: string
          title: Display Name
        description:
          type: string
          title: Description
        owner_id:
          type: string
          title: Owner Id
        is_system:
          type: boolean
          title: Is System
        parent_artifact_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Parent Artifact Id
        promoted_from_artifact_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Promoted From Artifact Id
        latest_version:
          anyOf:
            - type: string
            - type: 'null'
          title: Latest Version
          description: Newest version of any status.
        latest_status:
          anyOf:
            - $ref: '#/components/schemas/api__models__registry_models__VersionStatus'
            - type: 'null'
        latest_approved_version:
          anyOf:
            - type: string
            - type: 'null'
          title: Latest Approved Version
        has_draft:
          type: boolean
          title: Has Draft
          default: false
        used_in_templates:
          type: integer
          title: Used In Templates
          default: 0
        used_in_agents:
          anyOf:
            - type: integer
            - type: 'null'
          title: Used In Agents
          description: 'Context packs only: visible agents whose newest version loads it.'
        write:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Write
          description: 'Tools only: effective write flag.'
        needs_sign_off:
          anyOf:
            - type: boolean
            - type: 'null'
          title: Needs Sign Off
          description: 'Tools only: a write tool not yet signed off.'
        sensitivity:
          anyOf:
            - type: string
            - type: 'null'
          title: Sensitivity
          description: >-
            Context packs only: the newest approved version's effective
            sensitivity.
        health:
          anyOf:
            - type: string
              enum:
                - ok
                - stale
                - broken
            - type: 'null'
          title: Health
          description: 'Context packs only: whether its items resolve.'
        can_use:
          type: boolean
          title: Can Use
          description: 'False: you are limited and it is given to you to view only.'
          default: true
        updated_at:
          type: string
          format: date-time
          title: Updated At
        versions:
          items:
            $ref: '#/components/schemas/ArtifactVersionResponse'
          type: array
          title: Versions
      type: object
      required:
        - id
        - kind
        - scope
        - name
        - display_name
        - description
        - owner_id
        - is_system
        - updated_at
        - versions
      title: ArtifactDetail
      description: An artifact with all its versions.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    ScanFinding:
      properties:
        rule:
          type: string
          enum:
            - network
            - execution
            - filesystem
            - secret
          title: Rule
        severity:
          type: string
          enum:
            - info
            - warning
            - high
          title: Severity
        path:
          type: string
          title: Path
        line:
          type: integer
          title: Line
        message:
          type: string
          title: Message
        excerpt:
          type: string
          title: Excerpt
          description: The flagged line, secrets redacted.
          default: ''
      type: object
      required:
        - rule
        - severity
        - path
        - line
        - message
      title: ScanFinding
      description: One thing the static scan flagged in a bundled file.
    ArtifactKind:
      type: string
      enum:
        - agent
        - skill
        - mcp_server
        - tool
        - context_pack
        - ontology
        - prompt
        - workflow
        - brand
        - code_repo
      title: ArtifactKind
      description: What an artifact is.
    ArtifactScope:
      type: string
      enum:
        - personal
        - tenant
      title: ArtifactScope
      description: Who an artifact is for. ``tenant`` is shown as "Global".
    api__models__registry_models__VersionStatus:
      type: string
      enum:
        - draft
        - submitted
        - approved
        - rejected
        - deprecated
        - withdrawn
      title: VersionStatus
      description: Lifecycle of one version.
    ArtifactVersionResponse:
      properties:
        id:
          type: string
          format: uuid
          title: Id
        artifact_id:
          type: string
          format: uuid
          title: Artifact Id
        version:
          type: string
          title: Version
        status:
          $ref: '#/components/schemas/api__models__registry_models__VersionStatus'
        spec:
          additionalProperties: true
          type: object
          title: Spec
        changelog:
          type: string
          title: Changelog
        created_by:
          type: string
          title: Created By
        created_at:
          type: string
          format: date-time
          title: Created At
        submitted_by:
          anyOf:
            - type: string
            - type: 'null'
          title: Submitted By
        submitted_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Submitted At
        reviewed_by:
          anyOf:
            - type: string
            - type: 'null'
          title: Reviewed By
        reviewed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Reviewed At
        review_reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Review Reason
        deprecated_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Deprecated At
        withdrawn_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          title: Withdrawn At
        withdrawn_reason:
          anyOf:
            - type: string
            - type: 'null'
          title: Withdrawn Reason
        promoted_from_version_id:
          anyOf:
            - type: string
              format: uuid
            - type: 'null'
          title: Promoted From Version Id
        used_in_templates:
          type: integer
          title: Used In Templates
          default: 0
      type: object
      required:
        - id
        - artifact_id
        - version
        - status
        - spec
        - changelog
        - created_by
        - created_at
      title: ArtifactVersionResponse
      description: One version of an artifact.
  securitySchemes:
    OAuth2AuthorizationCodeBearer:
      type: oauth2
      flows:
        authorizationCode:
          scopes: {}
          authorizationUrl: >-
            https://sso-rapid.rapid.nx1cloud.com/realms/rapid/protocol/openid-connect/auth
          tokenUrl: >-
            https://sso-rapid.rapid.nx1cloud.com/realms/rapid/protocol/openid-connect/token
    APIKeyHeader:
      type: apiKey
      in: header
      name: Authorization-PSK

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.