{"id":67075,"plugin_id":"plugin_asdk_app_69df175a54f08191b0b71585414950e6","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-28T13:05:13.829Z","digest":"7ecaa44c51a44f697ade134d7f426391c1a8faca6a4907889aae73ea1d847707","against":null,"payload":{"description":"Check code the user already wrote against Cafe24 AI SPACE's platform constraints, fix what would break, then deploy or update it. Use when the user brings existing code — from another AI tool, a local folder, or a GitHub repository — and wants it published or wants an existing AI SPACE project updated. Do not use when the app should be written from scratch (use deploy-new-app).","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":608},{"relative_path":"references/preflight-checklist.md","size_in_bytes":3058}],"name":"deploy-existing-code","skill_md_contents":"---\nname: deploy-existing-code\ndescription: Check code the user already wrote against Cafe24 AI SPACE's platform constraints, fix what would break, then deploy or update it. Use when the user brings existing code — from another AI tool, a local folder, or a GitHub repository — and wants it published or wants an existing AI SPACE project updated. Do not use when the app should be written from scratch (use deploy-new-app).\n---\n\n# Deploy code the user already has\n\nCode written elsewhere usually violates one or two platform rules. **Check first,\nfix, then deploy.** Deploying straight away wastes a build — and on a free trial\nbuilds are a limited resource.\n\nReply in the user's language.\n\n## Expected input\n\nFiles the user attached, a GitHub repository, or a public Git URL. If it is not\nclear which, ask once.\n\n## Step 1 — Pre-flight check\n\nWork through `references/preflight-checklist.md`. Then show the user two lists\nbefore you deploy anything:\n\n```\nFixed\n  • server.js now listens on 0.0.0.0:3000 (was 127.0.0.1:8080)\n  • database config now reads DB_USER instead of a hard-coded password\n  • removed Dockerfile\n\nLeft as-is\n  • the SQLite file path — tell me if this data must survive redeploys\n```\n\nIf the stack is Go, Java or Rust, stop here. Those runtimes do not exist on the\nplatform. Say so plainly and describe what rewriting would involve.\n\n## Step 2 — Choose the path\n\n### The user is deploying something new\n\nReserve a space first: `list_my_spaces`, and use one where `project_id` is\n`null`. If none is free, stop and say so.\n\n**Files attached in chat.** ChatGPT has no shell, so always use the JSON upload\npath: `project_upload` with `action: \"create_session\"` and `mode: \"json\"`, then\n`upload_json`, then `project_upload` with `action: \"finalize\"`, `deploy: true`\nand the `space_id`. Limits are 3 MB per file, 10 files per request, 5 MB total.\n\n**Too large for those limits, or a real repository.** Do not shard the upload.\nUse `external_repo` with `repo_connect` to link the user's GitHub account, then\n`repo_deploy`. For a public repository with no account linking, `deploy_project`\nwith the HTTPS Git URL works.\n\n### The user is updating an existing project\n\n**Always call `get_project_status` first and read the `source` field.** Calling\nthe wrong update tool returns `SOURCE_MISMATCH`.\n\n| `source` | How the project was created | What to call |\n|---|---|---|\n| `internal` | uploaded files, or a public Git URL | `project_upload` with `update: true`, then `update_project` |\n| `github` | linked GitHub repository | `external_repo` → `repo_update`, or `repo_write_file` for a single file |\n\n`update_project` accepts only `project_id`, `rebuild` and `wait`. Parameters like\n`mode` or `reset` do not exist.\n\nWhen one repository is deployed to more than one project, `external_repo` returns\n`AMBIGUOUS_PROJECT`. Call `list_my_projects` and pass the exact `project_name`.\n\n## Step 3 — Watch and verify\n\nCall with `wait: false`, poll `get_project_status`, and tick only the steps you\nhave actually seen succeed. Then call `site_verify` on the project URL — a\nsuccessful build is not proof that the site answers.\n\nIf the build fails, hand off to the troubleshooting workflow rather than\nretrying. Read the logs before changing anything.\n\n## Rules you must not break\n\n- **Stop after two identical failures.** Never retry in a loop.\n- **Do not use `force: true`.** If the target space is occupied, offer a\n  different project name, an update of the existing project, or deletion through\n  the web console.\n- An update recreates the application container. Database contents and\n  `/app/user_data/` are preserved; anything else in the app directory is not.\n- Rollback, deletion, power control and billing are not available here. Direct\n  the user to the Cafe24 web console.\n\n## Do not infer\n\nPlan limits, prices and free-trial build quotas change. Do not quote them from\nmemory — point the user to `https://aispacedocs-docs.mycafe24.ai`.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}