{
  "schemaVersion": "1.0",
  "item": {
    "slug": "flyio-cli",
    "name": "Fly.io CLI",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/justinburdett/flyio-cli",
    "canonicalUrl": "https://clawhub.ai/justinburdett/flyio-cli",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/flyio-cli",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=flyio-cli",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "references/safety.md",
      "references/github-actions.md",
      "references/rails-docker-builds.md",
      "scripts/fly_app_from_toml.sh",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/flyio-cli"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/flyio-cli",
    "agentPageUrl": "https://openagent3.xyz/skills/flyio-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/flyio-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/flyio-cli/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Fly.io (flyctl) CLI",
        "body": "Operate Fly.io apps safely and repeatably with flyctl."
      },
      {
        "title": "Defaults / safety",
        "body": "Prefer read-only commands first: fly status, fly logs, fly config show, fly releases, fly secrets list.\nDo not edit/modify Fly.io apps, machines, secrets, volumes, or databases without your human’s explicit approval.\n\nRead-only actions are OK without approval.\nDestructive actions (destroy/drop) always require explicit approval.\n\n\nWhen debugging builds, capture the exact error output and determine whether it’s a:\n\nbuild/packaging issue (Dockerfile, Gemfile.lock platforms, assets precompile)\nruntime issue (secrets, DB, migrations)\nplatform issue (regions, machines, health checks)"
      },
      {
        "title": "Quick start (typical deploy)",
        "body": "From the app repo directory:\n\nConfirm which app you’re targeting\n\nfly app list\nfly status -a <app>\nCheck fly.toml for app = \"...\"\n\nValidate / inspect (read-only)\n\nfly status -a <app>\nfly logs -a <app>\nfly config show -a <app>\n\n(Deploys are in High-risk operations below and require explicit user approval.)"
      },
      {
        "title": "Common checks",
        "body": "fly deploy --verbose (more build logs)\nIf using Dockerfile builds: verify Dockerfile Ruby/version and Gemfile.lock platforms match your builder OS/arch."
      },
      {
        "title": "Rails + Docker + native gems (nokogiri, pg, etc.)",
        "body": "Symptoms: Bundler can’t find a platform gem like nokogiri-…-x86_64-linux during build.\n\nFix pattern:\n\nEnsure Gemfile.lock includes the Linux platform used by Fly’s builder (usually x86_64-linux).\n\nExample: bundle lock --add-platform x86_64-linux\n\n\nEnsure Dockerfile’s Ruby version matches .ruby-version.\n\n(See references/rails-docker-builds.md.)"
      },
      {
        "title": "Logs & config (read-only)",
        "body": "Stream logs:\n\nfly logs -a <app>\n\n\nShow config:\n\nfly config show -a <app>\n\n\nList secrets (names only):\n\nfly secrets list -a <app>"
      },
      {
        "title": "High-risk operations (ask first)",
        "body": "These commands can execute arbitrary code on servers or mutate production state.\nOnly run them when the user explicitly asks you to.\n\nDeploy:\n\nfly deploy / fly deploy --remote-only\n\n\nSSH exec / console:\n\nfly ssh console -a <app> -C \"<command>\"\n\n\nSecrets changes:\n\nfly secrets set -a <app> KEY=value\n\nSee references/safety.md."
      },
      {
        "title": "Identify the Postgres app",
        "body": "fly postgres list"
      },
      {
        "title": "Attach Postgres to an app",
        "body": "fly postgres attach <pg-app> -a <app>"
      },
      {
        "title": "Create a database inside the cluster",
        "body": "fly postgres db create <db_name> -a <pg-app>\nfly postgres db list -a <pg-app>"
      },
      {
        "title": "Connect (psql)",
        "body": "fly postgres connect -a <pg-app>"
      },
      {
        "title": "GitHub Actions deploys / previews",
        "body": "For production CD: use Fly’s GitHub Action (superfly/flyctl-actions/setup-flyctl) and run flyctl deploy.\nFor PR previews:\n\nPrefer one preview app per PR and one database per PR inside a shared Fly Postgres cluster.\nAutomate create/deploy/comment on PR; destroy on close.\n\n(See references/github-actions.md.)"
      },
      {
        "title": "Bundled resources",
        "body": "references/safety.md: safety rules (read-only by default; ask before mutating state).\nreferences/rails-docker-builds.md: Rails/Docker/Fly build failure patterns + fixes.\nreferences/github-actions.md: Fly deploy + preview workflows.\nscripts/fly_app_from_toml.sh: tiny helper to print the Fly app name from fly.toml (shell-only; no ruby)."
      }
    ],
    "body": "Fly.io (flyctl) CLI\n\nOperate Fly.io apps safely and repeatably with flyctl.\n\nDefaults / safety\nPrefer read-only commands first: fly status, fly logs, fly config show, fly releases, fly secrets list.\nDo not edit/modify Fly.io apps, machines, secrets, volumes, or databases without your human’s explicit approval.\nRead-only actions are OK without approval.\nDestructive actions (destroy/drop) always require explicit approval.\nWhen debugging builds, capture the exact error output and determine whether it’s a:\nbuild/packaging issue (Dockerfile, Gemfile.lock platforms, assets precompile)\nruntime issue (secrets, DB, migrations)\nplatform issue (regions, machines, health checks)\nQuick start (typical deploy)\n\nFrom the app repo directory:\n\nConfirm which app you’re targeting\nfly app list\nfly status -a <app>\nCheck fly.toml for app = \"...\"\nValidate / inspect (read-only)\nfly status -a <app>\nfly logs -a <app>\nfly config show -a <app>\n\n(Deploys are in High-risk operations below and require explicit user approval.)\n\nDebugging deploy/build failures\nCommon checks\nfly deploy --verbose (more build logs)\nIf using Dockerfile builds: verify Dockerfile Ruby/version and Gemfile.lock platforms match your builder OS/arch.\nRails + Docker + native gems (nokogiri, pg, etc.)\n\nSymptoms: Bundler can’t find a platform gem like nokogiri-…-x86_64-linux during build.\n\nFix pattern:\n\nEnsure Gemfile.lock includes the Linux platform used by Fly’s builder (usually x86_64-linux).\nExample: bundle lock --add-platform x86_64-linux\nEnsure Dockerfile’s Ruby version matches .ruby-version.\n\n(See references/rails-docker-builds.md.)\n\nLogs & config (read-only)\nStream logs:\nfly logs -a <app>\nShow config:\nfly config show -a <app>\nList secrets (names only):\nfly secrets list -a <app>\nHigh-risk operations (ask first)\n\nThese commands can execute arbitrary code on servers or mutate production state. Only run them when the user explicitly asks you to.\n\nDeploy:\nfly deploy / fly deploy --remote-only\nSSH exec / console:\nfly ssh console -a <app> -C \"<command>\"\nSecrets changes:\nfly secrets set -a <app> KEY=value\n\nSee references/safety.md.\n\nFly Postgres basics\nIdentify the Postgres app\nfly postgres list\nAttach Postgres to an app\nfly postgres attach <pg-app> -a <app>\nCreate a database inside the cluster\nfly postgres db create <db_name> -a <pg-app>\nfly postgres db list -a <pg-app>\nConnect (psql)\nfly postgres connect -a <pg-app>\nGitHub Actions deploys / previews\nFor production CD: use Fly’s GitHub Action (superfly/flyctl-actions/setup-flyctl) and run flyctl deploy.\nFor PR previews:\nPrefer one preview app per PR and one database per PR inside a shared Fly Postgres cluster.\nAutomate create/deploy/comment on PR; destroy on close.\n\n(See references/github-actions.md.)\n\nBundled resources\nreferences/safety.md: safety rules (read-only by default; ask before mutating state).\nreferences/rails-docker-builds.md: Rails/Docker/Fly build failure patterns + fixes.\nreferences/github-actions.md: Fly deploy + preview workflows.\nscripts/fly_app_from_toml.sh: tiny helper to print the Fly app name from fly.toml (shell-only; no ruby)."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/justinburdett/flyio-cli",
    "publisherUrl": "https://clawhub.ai/justinburdett/flyio-cli",
    "owner": "justinburdett",
    "version": "1.0.3",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/flyio-cli",
    "downloadUrl": "https://openagent3.xyz/downloads/flyio-cli",
    "agentUrl": "https://openagent3.xyz/skills/flyio-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/flyio-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/flyio-cli/agent.md"
  }
}