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

# Offer a skill only to the agents that use it

> Stop offering a skill to every agent; keep it on the agents that use it.

Every agent that loaded the skill in the last 30 days is assigned it by name first, so none of
them loses it. Agents it was removed from stay without it. Every other agent stops getting it;
each gets an automatic config version saying so. Works on the org's own skills offered to every
agent and on registry skills linked for every agent.



## OpenAPI

````yaml /openapi.json post /api/v1/skills/{skill_id}/make-opt-in
openapi: 3.1.0
info:
  title: DecimalAI Platform
  description: Agent Dataset Lifecycle Platform — Backend API
  version: 0.1.0
servers:
  - url: https://api.decimal.ai
    description: Production
security:
  - BearerAuth: []
tags:
  - name: traces
    description: >-
      Ingest, search, and inspect agent execution traces. A trace is the atomic
      unit of the platform — every other feature (evaluation, compatibility
      scoring, dataset building) operates on traces. Each trace is auto-tagged
      with the manifest hash of the agent that produced it.
  - name: eval-scores
    description: >-
      Push, fetch, and aggregate per-trace evaluation scores. Scores carry
      source provenance (built-in, DeepEval, LangSmith, custom) and feed the
      unified decision engine, which produces a keep / repair / replay / drop
      verdict per trace.
  - name: skills
    description: >-
      Manage reusable instruction blocks (SKILL.md files) that modify agent
      behavior. Skills are first-class manifest components — changes to a skill
      appear in your regression-check impact reports. Use these endpoints to
      create, version, fork, and sync skills with your local SKILL.md files.
  - name: manifests
    description: >-
      Register and inspect manifest versions. A manifest is a snapshot of your
      agent's structural identity (tools, prompts, models, skills) at a point in
      time. The SDK registers manifests automatically; these endpoints expose
      the underlying records.
  - name: datasets
    description: >-
      Build versioned SFT/DPO training datasets from manifest-classified,
      eval-scored traces. Datasets are reproducible — each version locks the
      manifest and filter set used to build it. Export as JSONL, Parquet, or
      push to HuggingFace Hub.
  - name: replay
    description: >-
      Re-execute historical traces against a new manifest version. Replay is the
      deferred-future capability for behavioral verification of agent changes.
      The SDK creates a replay batch, your worker executes each task, then
      submits results back here for eval scoring.
  - name: registry
    description: >-
      Browse and install published skills from the public skills registry. Each
      registry skill carries a SkillScore — an evidence-tiered quality composite
      computed from real-world evals, benchmarks, and ratings across
      organizations. Installing creates a fork in your org — edits don't affect
      the public version.
  - name: agents
    description: >-
      List and inspect agents, plus their multi-agent topology (orchestrator →
      sub-agent edges discovered from traces). Agents are identified by a stable
      agent_name string set in your SDK init() call.
  - name: import
    description: >-
      Bulk-import historical traces from another observability platform or a
      JSONL backup. Useful for migrating from LangSmith / Braintrust / Langfuse.
      Duplicate trace IDs are silently skipped — re-running an import is safe.
paths:
  /api/v1/skills/{skill_id}/make-opt-in:
    post:
      tags:
        - skills
      summary: Offer a skill only to the agents that use it
      description: >-
        Stop offering a skill to every agent; keep it on the agents that use it.


        Every agent that loaded the skill in the last 30 days is assigned it by
        name first, so none of

        them loses it. Agents it was removed from stay without it. Every other
        agent stops getting it;

        each gets an automatic config version saying so. Works on the org's own
        skills offered to every

        agent and on registry skills linked for every agent.
      operationId: make_skill_opt_in_api_v1_skills__skill_id__make_opt_in_post
      parameters:
        - name: skill_id
          in: path
          required: true
          schema:
            type: string
            description: The skill's stable ID (prefixed 'sk_').
            examples:
              - sk_abc123
            title: Skill Id
          description: The skill's stable ID (prefixed 'sk_').
        - name: dry_run
          in: query
          required: false
          schema:
            type: boolean
            description: Say who keeps and who loses the skill; change nothing.
            default: false
            title: Dry Run
          description: Say who keeps and who loses the skill; change nothing.
        - name: Authorization
          in: header
          required: false
          schema:
            type: string
            title: Authorization
        - name: decimal_session
          in: cookie
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Decimal Session
      responses:
        '200':
          description: Done, or (with dry_run) what would happen.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MakeOptInResponse'
        '403':
          description: >-
            Caller cannot edit this skill, or an API key without admin
            permission.
        '404':
          description: Skill not found in this organization.
        '409':
          description: The skill is already offered only to the agents it is added to.
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    MakeOptInResponse:
      properties:
        status:
          type: string
          enum:
            - ok
            - dry_run
          title: Status
        skill:
          additionalProperties:
            type: string
          type: object
          title: Skill
        kind:
          type: string
          enum:
            - owned
            - linked
          title: Kind
        window_days:
          type: integer
          title: Window Days
        keep:
          items:
            type: string
          type: array
          title: Keep
        already_assigned:
          items:
            type: string
          type: array
          title: Already Assigned
        loses_count:
          type: integer
          title: Loses Count
        loses_sample:
          items:
            type: string
          type: array
          title: Loses Sample
      type: object
      required:
        - status
        - skill
        - kind
        - window_days
        - keep
        - already_assigned
        - loses_count
        - loses_sample
      title: MakeOptInResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    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
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Enter your API key (e.g. dai_sk_test_key_001)

````

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