{"id":44457386,"url":"https://github.com/skiptools/skipstone","last_synced_at":"2026-05-09T01:16:34.963Z","repository":{"id":334293632,"uuid":"591855499","full_name":"skiptools/skipstone","owner":"skiptools","description":"The skip tool that powers the skip CLI and the skipstone SwiftPM plugin","archived":false,"fork":false,"pushed_at":"2026-05-03T00:54:49.000Z","size":8150,"stargazers_count":105,"open_issues_count":16,"forks_count":11,"subscribers_count":6,"default_branch":"main","last_synced_at":"2026-05-03T02:32:18.058Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://skip.dev/docs/skip-cli/","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/skiptools.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":["https://skip.dev/sponsor"]}},"created_at":"2023-01-22T05:00:56.000Z","updated_at":"2026-05-03T00:54:53.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/skiptools/skipstone","commit_stats":null,"previous_names":["skiptools/skipstone"],"tags_count":612,"template":false,"template_full_name":null,"purl":"pkg:github/skiptools/skipstone","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skiptools%2Fskipstone","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skiptools%2Fskipstone/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skiptools%2Fskipstone/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skiptools%2Fskipstone/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skiptools","download_url":"https://codeload.github.com/skiptools/skipstone/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skiptools%2Fskipstone/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32803689,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"ssl_error","status_checked_at":"2026-05-08T08:22:45.650Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-12T18:03:10.560Z","updated_at":"2026-05-09T01:16:34.958Z","avatar_url":"https://github.com/skiptools.png","language":"Swift","funding_links":["https://skip.dev/sponsor"],"categories":["Swift"],"sub_categories":[],"readme":"# skipstone\n\nThis repository hosts the Skip command-line tool \"skip\",\nwhich is distributed as a binary plug-in through the public repo at\n[https://github.com/skiptools/skip/releases](https://github.com/skiptools/skip/releases)\nas well as the Homebrew Cask via\n[https://github.com/skiptools/homebrew-skip/blob/main/Casks/skip.rb](https://github.com/skiptools/homebrew-skip/blob/main/Casks/skip.rb).\n\nThe exact same binary is used by both the Xcode/SwiftPM `skipstone` build plugin\nas well as the command-line tool installed via Homebrew's `brew install skip`\n\n\u003e [!NOTE]\n\u003e This repository, https://github.com/skiptools/skipstone.git, vends the `skip` tool,\n\u003e whereas the https://github.com/skiptools/skip.git repository vends the `skipstone` plugin.\n\u003e The names are the reverse of what you might expect.\n\nThe `skip` tool itself is a stand-alone cross-platform command-line executable that\ncontains a plethora of commands that support the\ncreation of Skip projects, the transpilation and bridge-building\nthat facilitate bi-directional communication between Swift and Kotlin on Android,\ntransformers from SwiftPM projects into Gradle projects,\nresource converters for .xcassets and .xcstrings bundles to turn them\ninto Android assets, a front-end for the Swift SDK for Android, Gradle,\nand the Android emulator, and much more.\n\n## Installing\n\nThe `skip` CLI is installed using [Homebrew](https://brew.sh). Skip is distributed as a binary Homebrew \"Cask\" for macOS, Linux, and Windows (with [WSL 2](https://learn.microsoft.com/en-us/windows/wsl/about)). For complete details, see the [Getting Started Guide](/docs/gettingstarted/).\n\nOnce Homebrew is set up, Skip can be installed (and updated) by running the Terminal command:\n\n```console title=\"Installing skip with Homebrew\"\n% brew tap skiptools/skip\n\n==\u003e Tapping skiptools/skip\nCloning into '/opt/homebrew/Library/Taps/skiptools/homebrew-skip'...\nTapped 1 cask (15 files, 417KB).\n\n% brew install skip\n\n==\u003e Downloading https://source.skip.dev/skip/releases/download/1.0.0/skip.zip\n==\u003e Installing dependencies: android-platform-tools\n==\u003e Downloading https://dl.google.com/android/repository/platform-tools_r34.0.5-darwin.zip\n==\u003e Installing Cask android-platform-tools\n==\u003e Linking Binary 'adb' to '/opt/homebrew/bin/adb'\n🍺  android-platform-tools was successfully installed!\n==\u003e Installing Cask skip\n==\u003e Linking Binary 'skip' to '/opt/homebrew/bin/skip'\n\n\n  ▄▄▄▄▄▄▄  ▄▄▄  ▄▄▄ ▄▄  ▄▄▄▄▄▄▄ \n █       ██   █ █ ██  ██       █\n █  ▄▄▄▄▄██   █▄█ ██  ██    ▄  █\n █ █▄▄▄▄▄██      ▄██  ██   █▄█ █\n █▄▄▄▄▄  ██     █▄██  ██    ▄▄▄█\n  ▄▄▄▄▄█ ██    ▄  ██  ██   █    \n █▄▄▄▄▄▄▄██▄▄▄█ █▄██▄▄██▄▄▄█    \n\nWelcome to Skip 1.7.0!\n\nRun \"skip checkup\" to perform a full system evaluation.\nRun \"skip create\" to start a new project.\n\nVisit https://skip.dev for documentation, samples, and FAQs.\n\nHappy Skipping!\n\n🍺  skip was successfully installed!\n```\n\nThis will download and install the `skip` tool itself, as well as the `gradle` and Android SDK dependencies that are necessary for building and testing the Kotlin/Android side of your apps.\n\n\u003e [!NOTE]\n\u003e The `skip` tool installed via Homebrew is the exact same binary that is used by the Skip Xcode plugin, but they are installed in separate locations and updated through different mechanisms (the Homebrew [Cask](https://source.skip.dev/homebrew-skip/blob/main/Casks/skip.rb) for the CLI and the [skip/Package.swift](https://source.skip.dev/skip/blob/main/Package.swift) for the SwiftPM plugin).\n\n\u003e [!CAUTION]\n\u003e Linux and Windows support is preliminary and currently doesn't support many features, but it can be used for creating, building, testing, and exporting framework projects as well as running the `skip android` frontend for the Swift SDK for Android. For creating and building full app projects, macOS is required.\n\n## Skip Commands\n\n- `skip upgrade`: Upgrade to the latest Skip version\n- `skip checkup`: Run tests to ensure Skip is in working order\n- `skip create`: Create a new Skip project interactively\n- `skip init`: Initialize a new Skip project\n- `skip doctor`: Evaluate and diagnose Skip development environment\n- `skip verify`: Verify Skip project\n- `skip export`: Export the Gradle project and built artifacts\n- `skip test`: Run parity tests and generate reports\n- `skip icon`: Create and manage app icons\n- `skip devices`: List connected devices and emulators/simulators\n- `skip android`: Perform a native Android package command\n- `skip android build`: Build the native project for Android\n- `skip android test`: Test the native project on an Android device or emulator\n- `skip android emulator create`: Install and create an Android emulator image\n- `skip android emulator list`: List installed Android emulators\n- `skip android emulator launch`: Launch an Android emulator\n- `skip android sdk list`: List the installed Swift Android SDKs\n\n## Local Skip Development\n\nRun `./scripts/skip` to build and run the Skip CLI tool from source. (It runs `swift run SkipRunner`, passing in a `$SKIP_COMMAND_OVERRIDE` environment variable.)\n\nIn order to iterate on local changes to the `skipstone` binary that the Skip plugin uses,\ncreate an Xcode workspace that includes a local checkout of \n[`skipstone.git`](https://github.com/skiptools/skipstone.git)\nand\n[`skip.git`](https://github.com/skiptools/skip.git)\n(or forks of those repositories),\nalong with any Skip apps or frameworks where you want to test the changes.\n\nThe key is that the _current working directory for Xcode must be the `skipstone` folder_.\nThis is the magic property that tells the Skip plugin to use the locally-built `skip` binary\nrather than the remote binary that is referenced by the plugins specification in `Package.skip`.\n\nIn order to open Xcode from the `skipstone` folder, it **must** be done from the Terminal,\nlike so:\n\n```console\ncd skipstone/\nopen /path/to/my/project.xcworkspace\n```\n\nIf you are successfully using the local Skip build for your plugin, this will be \nindicated in the Xcode Build log in the Report Navigator tab. E.g., when launching a Skip app,\nexpanding the `Run skip gradle` messages will reference the _local_ build of `skip`,\nlike so:\n\n```console\nShowing All Messages\nrunning gradle build with: /Users/marc/Library/Developer/Xcode/DerivedData/Skip-Everything-aqywrhrzhkbvfseiqgxuufbdwdft/Build/Products/Debug/skip gradle -p /opt/src/github/skiptools/skipapp-godot-demo/Darwin/../Android launchDebug\n```\n\nFor framework projects (e.g., when building or running tests), the indication that it is\nusing the local build will come from the plugin log message for the target. The indication\nthat it is a local debug build will be that there is an asterisk (\"*\") after the\nSkip version number at the beginning of the skipstone plugin output, like so:\n\n```console\nShowing All Messages\nSkip 1.7.0*: skipstone plugin to: /Users/marc/Library/Developer/Xcode/DerivedData/Skip-Everything-aqywrhrzhkbvfseiqgxuufbdwdft/Build/Intermediates.noindex/BuildToolPluginIntermediates/skip-lib.output/SkipLib/skipstone/SkipLib/src/main at 11:23:18\n```\n\n\u003e [!CAUTION]\n\u003e If Xcode ever crashes (heaven forfend) and automatically re-starts, it will _not_ restart from the `skipstone` folder, which means that suddenly you will no longer be building against your local `skipstone` changes. This can be very confusing.\n\u003e\n\u003e Similarly, launching Xcode from the dock and using `Open Recent…` to open the project also will not happen from the `skipstone` directory.\n\u003e\n\u003e When in doubt, always just quit Xcode manually and re-launch your workspace from the `skipstone` folder from the Terminal again, and then verify that the local build of `skipstone` is being used with the logging indicators above.\n\n## Releasing Skip\n\nCreating a release of skipstone is done with the\n[`scripts/release_skip.sh`](scripts/release_skip.sh)\nscript, which requires that each of these three repositories\nare checked out in peer folders:\n\n- https://github.com/skiptools/skipstone.git\n- https://github.com/skiptools/skip.git\n- https://github.com/skiptools/homebrew-skip.git\n\n\u003e [!NOTE]\n\u003e You must have write and release permissions for each of these repositories in order to be able to create a release.\n\nThe release script will build the tool for both macOS and cross-compile it for Linux. So you will need the [`swiftly`](https://www.swift.org/install/macos/swiftly/) tool installed as well as the [static Linux SDK](https://www.swift.org/documentation/articles/static-linux-getting-started.html).\n\n\u003e [!TIP]\n\u003e To do a dry run of a release without trying to push or tag any changes, run `DRY_RUN=1 ./scripts/release_skip.sh`\n\nThe release script will do the following:\n\n1. Bump the `skipVersion` in [`Sources/SkipSyntax/Version.swift`](Sources/SkipSyntax/Version.swift). By default this will bump the patch version, but running `SEMVER_BUMP='minor' ./scripts/release_skip.sh` will instead bump the minor version.\n1. Build the universal macOS artifactbundle `skip-macos.zip` with [`scripts/build_macos_plugin.sh`](scripts/build_macos_plugin.sh)\n1. Build the static Linux (MUSL) artifactbundle `skip-linux.zip` with [`scripts/build_linux_plugin.sh`](scripts/build_linux_plugin.sh)\n1. Update the bundle URLs and checksums in the Skip plugin's [`Package.swift`](https://github.com/skiptools/skip/blob/main/Package.swift)\n1. Update the binary URLs and checksums for the Homebrew Cask's [`skip.rb`](https://github.com/skiptools/homebrew-skip/blob/main/Casks/skip.rb)\n1. Commit, tag, and push each of `skipstone.git`, `skip.git`, and `homebrew-skip.git`\n1. Create GitHub releases for each of [`skipstone.git`](https://github.com/skiptools/skipstone/releases) and [`skip.git`](https://github.com/skiptools/skip/releases)\n1. Upgrade Skip on the local machine with `brew upgrade skiptools/skip/skip`\n1. Run `skip welcome`\n\nAs a post-release step, it is a good idea to make sure that `skip checkup --native` works on the local machine.\n\n## Contributing\n\nContributions are welcome! Fork the repository and make local changes,\nand ensure that all the test cases pass (either via Xcode or with `swift test` from the Terminal).\n\nThe Contributor License Agreement (CLA) can be signed\nby adding your GitHub username in the\n[`clabot-config`](https://github.com/skiptools/clabot-config/edit/main/.clabot)\nbefore submitting pull requests.\n\nIt is wise to discuss any major intended changes on the\n[discussions](https://github.com/orgs/skiptools/discussions/)\nboard before embarking on any big projects.\n\n## License\n\nDistributed under the GNU Affero General Public License v3.0 License.\nSee [`LICENSE.txt`](LICENSE.txt) for more information.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskiptools%2Fskipstone","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskiptools%2Fskipstone","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskiptools%2Fskipstone/lists"}