{
  "schema": "GIIP skill bootstrap manifest v1",
  "schema_version": "1.0.0",
  "intent": "install_or_update_skill",
  "skill": {
    "name": "giip-agent",
    "version": "1.0.0"
  },
  "bundle": {
    "url": "https://giip.littleworld.net/skills/giip-agent/giip-agent.zip",
    "sha256": "90125deb4a36a7ff648efed24efe35a8d412c55cafa63681cb08566a3b3e12f5"
  },
  "files": [
    {
      "path": "SKILL.md",
      "url": "https://giip.littleworld.net/skills/giip-agent/SKILL.md",
      "sha256": "bcdee4d1f52bd7f95b3e1cbae9d6a7bc3531425ebffe9d56896e91b329b47855"
    },
    {
      "path": "scripts/giip_agent.py",
      "url": "https://giip.littleworld.net/skills/giip-agent/scripts/giip_agent.py",
      "sha256": "3d8868741deeb4a1a2a38dd0a3e1da614825af59cb6ad63ac60d5f7811cc1e47"
    },
    {
      "path": "references/api.md",
      "url": "https://giip.littleworld.net/skills/giip-agent/references/api.md",
      "sha256": "f559358d789b414a167e536eb060cec9a40ef6ef55a9a3bb8e742c9fe0019bc0"
    },
    {
      "path": "agents/openai.yaml",
      "url": "https://giip.littleworld.net/skills/giip-agent/agents/openai.yaml",
      "sha256": "c0176518b92b549027a6f993fd98cf439806f89a06918af89a1be884f7b15a63"
    }
  ],
  "api_reference": {
    "ko": "https://giip.littleworld.net/ko/guides/giip-agent-api",
    "ja": "https://giip.littleworld.net/ja/guides/giip-agent-api",
    "en": "https://giip.littleworld.net/en/guides/giip-agent-api"
  },
  "required_capabilities": [
    "create_or_update_skill_or_directive_files_on_the_host",
    "store_and_execute_a_helper_script",
    "outbound_https_requests",
    "url_encoded_form_post_with_a_token_field",
    "temporary_runtime_secret_storage_only"
  ],
  "post_install_verification": {
    "steps": [
      "Recompute the SHA-256 of each downloaded file in `files[]` and compare against the `sha256` value listed for it.",
      "Recompute the SHA-256 of the downloaded `giip-agent.zip` and compare against `bundle.sha256`.",
      "Run `python giip_agent.py --help` (or the subcommand `--help` forms) to confirm the script parses and runs with no syntax errors on the host's Python interpreter.",
      "Do not attempt a real API call as part of installation verification -- that requires a live csn and SK from the user, which are collected only after installation is verified (see SKILL.md and the human-facing guide)."
    ],
    "note": "실제 csn/SK를 이용한 API E2E는 사람이 별도 수행. No end-to-end API call has been made as part of producing this bundle; installation verification is limited to checksum and syntax checks."
  },
  "supported_agents": [
    { "name": "chatgpt", "verified": false, "note": "미검증 (pending human test)" },
    { "name": "codex", "verified": false, "note": "미검증 (pending human test)" },
    { "name": "claude", "verified": false, "note": "미검증 (pending human test)" },
    { "name": "gemini", "verified": false, "note": "미검증 (pending human test)" },
    { "name": "generic_mcp_agent", "verified": false, "note": "미검증 (pending human test)" }
  ],
  "unsupported_behavior": "If the host cannot create/store files, cannot execute a local script, or cannot make outbound HTTPS requests, it must not claim to have installed or run this skill. It should state plainly which capability is missing and stop, then offer the human-facing guide (api_reference / the /{locale}/guides/chatgpt-giip-agent page) as the fallback. Never claim a registration or heartbeat succeeded without checking the response's RstVal field -- this API always returns HTTP 200 regardless of the real outcome.",
  "meta": {
    "generated_at": "2026-09-06",
    "source_issue": "giip-2081",
    "note": "이 형식(schema)은 GIIP 자체 규격이며 업계 표준이 아니다. This manifest format is a GIIP-internal convention, not an industry standard."
  }
}
