{
  "schema_version": "2026-03-26",
  "id": "api-design",
  "slug": "api-design",
  "display_name": "API Design",
  "description": "API design workflow skill. Use this skill when a user needs a clear HTTP or service contract before implementation.",
  "version": "0.0.1",
  "category": "backend",
  "raw_category": "backend",
  "taxonomy": {
    "raw_category": "backend",
    "canonical_category": "backend",
    "inferred_category": "backend",
    "category_source": "frontmatter"
  },
  "tags": [
    "api",
    "backend",
    "contracts",
    "http",
    "json",
    "errors"
  ],
  "complexity": "advanced",
  "risk": "safe",
  "source": "omni-team",
  "author": "Omni Skills Team",
  "dates": {
    "added": "2026-03-26",
    "updated": "2026-03-27"
  },
  "entrypoint": "skills/api-design/SKILL.md",
  "paths": {
    "root": "skills/api-design",
    "manifest": "dist/manifests/api-design.json",
    "metadata": "skills/api-design/metadata.json"
  },
  "compatibility": {
    "tools": [
      "claude-code",
      "cursor",
      "gemini-cli",
      "codex-cli",
      "antigravity",
      "opencode"
    ],
    "install_targets": [
      {
        "tool": "claude-code",
        "scope": "user-global",
        "default_path": "~/.claude/skills",
        "installer_flag": "--claude",
        "current_installer_behavior": "Installs the full Omni Skills library by default. Use --skill or --bundle to install only a selected subset.",
        "invocation": ">> /skill-name help me..."
      },
      {
        "tool": "cursor",
        "scope": "user-global",
        "default_path": "~/.cursor/skills",
        "installer_flag": "--cursor",
        "current_installer_behavior": "Installs the full Omni Skills library by default. Use --skill or --bundle to install only a selected subset.",
        "invocation": "@skill-name"
      },
      {
        "tool": "gemini-cli",
        "scope": "user-global",
        "default_path": "~/.gemini/skills",
        "installer_flag": "--gemini",
        "current_installer_behavior": "Installs the full Omni Skills library by default. Use --skill or --bundle to install only a selected subset.",
        "invocation": "Use @skill-name to..."
      },
      {
        "tool": "codex-cli",
        "scope": "user-global",
        "default_path": "~/.codex/skills",
        "installer_flag": "--codex",
        "current_installer_behavior": "Installs the full Omni Skills library by default. Use --skill or --bundle to install only a selected subset.",
        "invocation": "Use @skill-name to..."
      },
      {
        "tool": "antigravity",
        "scope": "user-global",
        "default_path": "~/.gemini/antigravity/skills",
        "installer_flag": "--antigravity",
        "current_installer_behavior": "Installs the full Omni Skills library by default. Use --skill or --bundle to install only a selected subset.",
        "invocation": "Use @skill-name to... (Agent Mode)"
      },
      {
        "tool": "opencode",
        "scope": "project-local",
        "default_path": ".opencode/skills",
        "installer_flag": "--opencode",
        "current_installer_behavior": "Installs the full Omni Skills library by default. Use --skill or --bundle to install only a selected subset.",
        "invocation": "opencode run @skill-name"
      }
    ]
  },
  "resources": {
    "sub_resources": [
      "agents",
      "examples",
      "references",
      "scripts"
    ],
    "artifacts_count": 9,
    "references_count": 2,
    "agents_count": 1,
    "assets_count": 0
  },
  "dependencies": {
    "skills": [],
    "external": []
  },
  "install": {
    "strategy": "copy-skill-directory",
    "current_installer": "npx omni-skills installs the full library by default today, and also supports selective installation with --skill and --bundle.",
    "recipes": [
      {
        "tool": "claude-code",
        "command": "npx omni-skills --claude",
        "scope": "user-global",
        "default_path": "~/.claude/skills",
        "behavior": "Installs the full Omni Skills library by default. Use --skill or --bundle to install only a selected subset."
      },
      {
        "tool": "cursor",
        "command": "npx omni-skills --cursor",
        "scope": "user-global",
        "default_path": "~/.cursor/skills",
        "behavior": "Installs the full Omni Skills library by default. Use --skill or --bundle to install only a selected subset."
      },
      {
        "tool": "gemini-cli",
        "command": "npx omni-skills --gemini",
        "scope": "user-global",
        "default_path": "~/.gemini/skills",
        "behavior": "Installs the full Omni Skills library by default. Use --skill or --bundle to install only a selected subset."
      },
      {
        "tool": "codex-cli",
        "command": "npx omni-skills --codex",
        "scope": "user-global",
        "default_path": "~/.codex/skills",
        "behavior": "Installs the full Omni Skills library by default. Use --skill or --bundle to install only a selected subset."
      },
      {
        "tool": "antigravity",
        "command": "npx omni-skills --antigravity",
        "scope": "user-global",
        "default_path": "~/.gemini/antigravity/skills",
        "behavior": "Installs the full Omni Skills library by default. Use --skill or --bundle to install only a selected subset."
      },
      {
        "tool": "opencode",
        "command": "npx omni-skills --opencode",
        "scope": "project-local",
        "default_path": ".opencode/skills",
        "behavior": "Installs the full Omni Skills library by default. Use --skill or --bundle to install only a selected subset."
      }
    ]
  },
  "classification": {
    "maturity": {
      "skill_level": 3,
      "skill_level_label": "resources",
      "has_scripts": true,
      "has_extra_files": true
    },
    "best_practices": {
      "score": 100,
      "tier": "excellent",
      "signals": {
        "workflow_steps_count": 5,
        "workflow_section_length": 607,
        "when_to_use_section_length": 199,
        "best_practices_items_count": 6,
        "best_practices_section_length": 440,
        "troubleshooting_items_count": 0,
        "troubleshooting_section_length": 760,
        "resources_items_count": 6,
        "resources_section_length": 555,
        "examples_section_length": 822,
        "examples_code_blocks_count": 6,
        "related_skills_section_length": 250,
        "decision_assets_count": 18,
        "table_count": 6,
        "linked_resource_families_count": 4,
        "linked_resource_families": [
          "agents",
          "examples",
          "references",
          "scripts"
        ],
        "support_links_count": 6,
        "support_files_count": 7,
        "references_files_count": 2,
        "scripts_files_count": 1,
        "examples_files_count": 3,
        "agents_files_count": 1,
        "assets_files_count": 0,
        "tools_count": 6,
        "tags_count": 6,
        "body_density": 5.59
      }
    },
    "quality": {
      "score": 95,
      "tier": "platinum",
      "breakdown": {
        "body": 16,
        "description": 9,
        "metadata": 12,
        "recency": 8,
        "resources": 10,
        "best_practices": 10,
        "semantic_depth": 16,
        "operational_depth": 10,
        "support_pack": 10
      }
    },
    "security": {
      "score": 95,
      "tier": "review",
      "status": "passed",
      "findings_count": 0,
      "findings": [],
      "signals": {
        "scanned_files": 8,
        "script_files": 1,
        "binary_like_files": 0
      },
      "scanners": {
        "static": {
          "enabled": true,
          "status": "completed"
        },
        "clamav": {
          "enabled": true,
          "status": "completed",
          "provider": "clamav",
          "detections": [],
          "infected_files": 0
        },
        "virustotal": {
          "enabled": true,
          "status": "completed",
          "provider": "virustotal",
          "lookups": 1,
          "positives": 0,
          "results": [
            {
              "path": "skills/api-design/scripts/render_brief.py",
              "sha256": "95f6df80f9fa925d1e86d70ed4b8952a88cc30d244d3e2ce6398a6c83820d6f9",
              "status": "not_found"
            }
          ],
          "details": "Hash lookups only. Unknown files are not uploaded during validation."
        }
      }
    },
    "validation": {
      "errors": [],
      "warnings": [],
      "status": "passed"
    }
  },
  "content": {
    "body_length": 4982,
    "content_length": 5431,
    "body_lines": 117,
    "word_count": 654,
    "has_code_blocks": true,
    "typed_code_blocks_count": 2,
    "has_examples_section": true,
    "example_count": 3,
    "has_workflow_section": true,
    "has_when_to_use_section": true,
    "has_best_practices_section": true,
    "has_troubleshooting_section": true,
    "problem_count": 3,
    "troubleshooting_pairs_count": 2,
    "has_additional_resources_section": true,
    "has_related_skills_section": true,
    "related_skills_count": 3,
    "has_local_support_links": true,
    "local_support_links_count": 3,
    "has_local_script_example": true,
    "local_script_example_count": 0,
    "semantic_signals": {
      "workflow_steps_count": 5,
      "workflow_section_length": 607,
      "when_to_use_section_length": 199,
      "best_practices_items_count": 6,
      "best_practices_section_length": 440,
      "troubleshooting_items_count": 0,
      "troubleshooting_section_length": 760,
      "resources_items_count": 6,
      "resources_section_length": 555,
      "examples_section_length": 822,
      "examples_code_blocks_count": 6,
      "related_skills_section_length": 250,
      "decision_assets_count": 18,
      "table_count": 6,
      "linked_resource_families_count": 4,
      "linked_resource_families": [
        "agents",
        "examples",
        "references",
        "scripts"
      ],
      "support_links_count": 6,
      "support_files_count": 7,
      "references_files_count": 2,
      "scripts_files_count": 1,
      "examples_files_count": 3,
      "agents_files_count": 1,
      "assets_files_count": 0,
      "tools_count": 6,
      "tags_count": 6,
      "body_density": 5.59
    }
  },
  "artifacts": [
    {
      "path": "skills/api-design/SKILL.md",
      "kind": "entrypoint",
      "size_bytes": 5449,
      "sha256": "2f1aed623f8c04eeb981be3c2cc523799d8da8d604e78c41db4128c6752eb6f1"
    },
    {
      "path": "skills/api-design/metadata.json",
      "kind": "support",
      "size_bytes": 5985,
      "sha256": "a36883e762242962adf77cdfc297fbd7c4a41eff5afef7c6d022360e03b91f55"
    },
    {
      "path": "skills/api-design/agents/openai.yaml",
      "kind": "agent",
      "size_bytes": 257,
      "sha256": "80b1dbd978852eaa1dab557ed649ed04be6ba7d20eee9ec00c37441d4e7b0526"
    },
    {
      "path": "skills/api-design/examples/error-contract-rubric.md",
      "kind": "support",
      "size_bytes": 523,
      "sha256": "30b2560f94f4ef5e96f2f2b74326845e84ec11d0adaf8e4eff2f5e4f82f4b72a"
    },
    {
      "path": "skills/api-design/examples/mutation-review-worksheet.md",
      "kind": "support",
      "size_bytes": 199,
      "sha256": "df6eec8e1391407beadbe6454efe1ad5f8e84d2833e3e910bf8331daec0ab016"
    },
    {
      "path": "skills/api-design/examples/request-envelope-template.json",
      "kind": "support",
      "size_bytes": 238,
      "sha256": "eca4bf8f928723c1f6e3cd65a4c96769212e457e985fff28b250fe0e9a38ce01"
    },
    {
      "path": "skills/api-design/references/checklist.md",
      "kind": "reference",
      "size_bytes": 928,
      "sha256": "7ef10ec5290e5f1562391b933ac476052249410101582c7ba2881eb2c5863b96"
    },
    {
      "path": "skills/api-design/references/compatibility-review-checklist.md",
      "kind": "reference",
      "size_bytes": 397,
      "sha256": "dfd7f71420b92fa6de7e3d1fd4e78e6ccda71981ded596f694e57eadda93259f"
    },
    {
      "path": "skills/api-design/scripts/render_brief.py",
      "kind": "support",
      "size_bytes": 1075,
      "sha256": "95f6df80f9fa925d1e86d70ed4b8952a88cc30d244d3e2ce6398a6c83820d6f9"
    }
  ],
  "archives": [
    {
      "format": "zip",
      "path": "dist/archives/api-design.zip",
      "file_name": "api-design.zip",
      "size_bytes": 16431,
      "sha256": "c76105c892cf8f30655996f9be3911ae6c26b9bf3f089578b4c094f00989b8c1",
      "signature": {
        "status": "signed",
        "path": "dist/archives/api-design.zip.sig",
        "sha256": "01781b2b417f8b6448c65b50f7456e799a7091ce3e2433d53b383d9650284e0c",
        "public_key_path": "dist/signing/omni-skills-public.pem",
        "algorithm": "sha256",
        "verify_command": "openssl dgst -sha256 -verify dist/signing/omni-skills-public.pem -signature dist/archives/api-design.zip.sig dist/archives/api-design.zip"
      }
    },
    {
      "format": "tar.gz",
      "path": "dist/archives/api-design.tar.gz",
      "file_name": "api-design.tar.gz",
      "size_bytes": 30743,
      "sha256": "6fd632fb709314f54f41b2b342c03548a8a2899c54bf1a3dfe7c95511cd57d0c",
      "signature": {
        "status": "signed",
        "path": "dist/archives/api-design.tar.gz.sig",
        "sha256": "a3fe72391ca274b0647d1b9fabf7577e4468851d8bc077687a7b3bc075a30e3c",
        "public_key_path": "dist/signing/omni-skills-public.pem",
        "algorithm": "sha256",
        "verify_command": "openssl dgst -sha256 -verify dist/signing/omni-skills-public.pem -signature dist/archives/api-design.tar.gz.sig dist/archives/api-design.tar.gz"
      }
    }
  ],
  "archive_checksums": {
    "path": "dist/archives/api-design.checksums.txt",
    "file_name": "api-design.checksums.txt",
    "sha256": "267715da3d793e6c1ed3c1ad0cc17e17456df95b2a7906da17866b8c7d8d8d73",
    "signature": {
      "status": "signed",
      "path": "dist/archives/api-design.checksums.txt.sig",
      "sha256": "50662a7ea1eccbf779545fc88df7057994e4a063d8a8172268c2fdaab2d9bb06",
      "public_key_path": "dist/signing/omni-skills-public.pem",
      "algorithm": "sha256",
      "verify_command": "openssl dgst -sha256 -verify dist/signing/omni-skills-public.pem -signature dist/archives/api-design.checksums.txt.sig dist/archives/api-design.checksums.txt"
    }
  },
  "checksums": {
    "entrypoint_sha256": "2f1aed623f8c04eeb981be3c2cc523799d8da8d604e78c41db4128c6752eb6f1",
    "package_sha256": "312ab8b60d44b330286d1f5cfa4779750b5d928fa9545db7378ffc1da4dbe907"
  }
}
