Skip to content

spice-cloud-management: fork projects through the Management API - #22

Merged
lukekim merged 5 commits into
trunkfrom
lukim/cloud-project-forks
Oct 2, 2026
Merged

lukekim merged 5 commits into
trunkfrom
lukim/cloud-project-forks

Conversation

@lukekim

@lukekim lukekim commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Teaches spice-cloud-management to fork Spice.ai Cloud projects through the Management API. The endpoints come from spicehq/cloud#5856, which depends on the migration in spicehq/cloud#5855.

Note

Keep this in draft until spicehq/cloud#5856 is deployed. Before then, POST /v1/projects/{projectId}/forks does not exist and agents following the skill would get a 404. The section is dated (Sep 2026) following the changelog-month convention; update it if the API ships later.

Changes

  • SKILL.md
    • The frontmatter description now triggers on forking and on copying or moving a project to another region or cluster.
    • Two rows in the Projects table: POST and GET /v1/projects/{projectId}/forks.
    • A Fork Project section covering:
      • the fields (name, region, cluster_name, scheduler_state_location)
      • what a fork copies and what it does not
      • that a fork is not deployed
      • the shared_state check before its first deployment
      • forked_from on project responses
      • where to fork in the portal
      • how a source connected to a GitHub repository is forked: read from its repository, refused when that fails or when the spicepod loads other files from the repository, and deployed from a fork of the repository through the portal
      • the status codes
    • A Copy or Move a Project to Another Region workflow. It asks the user to confirm before the source is deleted.
    • Troubleshooting rows for fork_placement_required, scheduler_state_location_*, fork_name_unavailable, fork_source_has_no_spicepod / fork_source_spicepod_invalid, fork_source_loads_repository_files, and fork_source_repository_unreadable.
    • How to present a fork to the user.
  • scripts/spice-cloud.sh: fork-project <projectId> [name] [region] and list-forks <projectId>.
  • evals/evals.json: eval 3 asks for a copy of a project in another region. It checks that the answer forks the project rather than recreating it, targets the region, reads shared_state, and deploys the fork.
  • CHANGELOG.md: an Unreleased entry.

Testing

  • bash -n scripts/spice-cloud.sh passes, and the new commands appear in the usage text.
  • evals.json parses. The new regexes pass on sample answers that use curl and ones that use the helper script, and fail on an answer that recreates the project by hand.
  • SKILL.md is 498 lines, under the 500-line limit.
  • make check-versions already fails on trunk for every skill ("not checked against v2.3.2" after the 2.3.2 release). This PR does not change that.

Document POST /v1/projects/{projectId}/forks and GET
/v1/projects/{projectId}/forks: fields, what a fork copies, the
shared_state check before its first deployment, error codes, and
forked_from on project responses. Add a workflow to copy or move a
project to another region, fork-project and list-forks helper commands,
and an eval.
@lukekim lukekim self-assigned this Sep 29, 2026
@lukekim
lukekim marked this pull request as ready for review September 30, 2026 18:21
Resolve CHANGELOG.md and skills/cloud/SKILL.md after the spice-cloud-management → cloud rename. Keep project-fork docs (compact in SKILL.md, details in references/project-forks.md) under the 500-line skill budget.
Resolve the CHANGELOG.md conflict by keeping both Unreleased entries: project forks for cloud and the new launch skill.
@lukekim
lukekim merged commit 5f5e66c into trunk Oct 2, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant