Desktop app for skillshare CLI.
Install skillshare CLI first.
brew tap runkids/tap
brew install --cask skillshare-app
# Uninstall
brew uninstall --cask skillshare-app| Platform | Download |
|---|---|
| macOS (Apple Silicon) | .dmg |
| Windows | .exe / .msi |
| Linux | .deb / .AppImage / .rpm |
Or browse all releases: GitHub Releases
The host needs Docker and Docker Compose, plus make for the shortcut below.
Node.js, pnpm, Rust, mise, and Linux build dependencies are installed inside the
development image. Tool versions are pinned in mise.toml; the mise version is
pinned in Dockerfile.dev.
Start the Linux Tauri app in development mode:
make devcmake devc runs docker compose up --build dev. The first run installs dependencies
and compiles Rust. Once compilation finishes, open
http://localhost:6080/vnc.html?autoconnect=true&resize=scale to use the full desktop
app inside the container through noVNC. Rust, Node.js, and Linux GUI tools do not
need to be installed on the host.
Source code is mounted from the local checkout. Vite provides frontend hot updates,
and tauri dev recompiles and restarts the app after Rust changes. This runs the
Linux desktop app, with native Tauri commands and the backend inside the container.
It does not open a native macOS window. http://localhost:1420 provides a limited
browser frontend preview; use the remote desktop on port 6080 for full functionality.
On first launch, follow onboarding to download the skillshare CLI, initialize its
configuration, and sync. The CLI is also installed inside the container. App settings,
the CLI, skills, and onboarding state persist in the app_data and app_config
volumes. JavaScript dependencies and Rust caches have separate persistent volumes.
The checkout is mounted at /workspace; the app does not read the host's skillshare
configuration.
Closing the app window hides it and leaves the backend running. Use the tray menu's
Open Skillshare App action to restore the window. On macOS, clicking the Dock
icon also restores it. The remote desktop port is bound to the host's 127.0.0.1
interface.
With the development container running, run checks from another terminal:
docker compose exec dev pnpm lint
docker compose exec dev pnpm build
docker compose exec dev pnpm test
docker compose exec dev cargo check --locked --manifest-path src-tauri/Cargo.toml
docker compose exec dev cargo test --locked --manifest-path src-tauri/Cargo.tomlBuild the Linux desktop executable without opening a desktop window:
docker compose exec dev pnpm tauri build --no-bundleThe Linux executable and Cargo build artifacts are stored in the cargo_target
volume. Building a macOS app requires a separate macOS build environment, such as
the existing release CI.
Open a shell with the mise-managed tools:
docker compose run --rm dev bashAfter changing mise.toml, rebuild the image with docker compose up --build dev.
Press Ctrl+C to stop the development container, then run docker compose down
to remove the stopped container. Named volumes are preserved for the next run.
Commits on main use Conventional Commits. Release Please opens or updates a
Release PR with the next version and CHANGELOG.md. It keeps package.json,
src-tauri/tauri.conf.json, src-tauri/Cargo.toml, and the app entry in
src-tauri/Cargo.lock in sync. While the app is below 1.0, features and breaking
changes bump the minor version and fixes bump the patch version.
To pick the version yourself, add a Release-As: 0.2.0 line to the body of a commit
merged into main (for a squash merge, the merge commit message). The Release PR
then uses that version.
To release:
- Review and merge the Release PR.
- The Release Please workflow creates the tag and draft, then directly calls
Release to test and build macOS, Windows, and Linux with the versions in
mise.toml. - When all three builds succeed, release-ready publishes the release as Latest and updates the Homebrew cask. If any build fails, the release stays a draft and nothing is published.
The workflow calls the build directly because tags created with GITHUB_TOKEN
do not trigger another workflow. No additional release token is required. Enable
Allow GitHub Actions to create and approve pull requests under repository
Settings β Actions β General so Release Please can open its PRs.
Keep these existing Actions secrets configured:
- Updater:
TAURI_SIGNING_PRIVATE_KEY, andTAURI_SIGNING_PRIVATE_KEY_PASSWORDif the key is password-protected. - macOS signing and notarization:
APPLE_CERTIFICATE,APPLE_CERTIFICATE_PASSWORD,KEYCHAIN_PASSWORD,APPLE_SIGNING_IDENTITY,APPLE_ID,APPLE_PASSWORD, andAPPLE_TEAM_ID. - Homebrew:
HOMEBREW_TAP_TOKENwith access torunkids/homebrew-tap.
For a failed build, rerun the failed jobs or manually run Release with the
existing tag_name (for example, v0.0.6). It checks version consistency and
uploads to the same draft, then publishes it once every build succeeds. Published
releases cannot be rebuilt through this workflow. Manual tag pushes remain supported; the local pnpm bump command is
not needed for the automated Release PR flow.
- CONTRIBUTING.md: setup, project structure and pull requests.
- wiki/README.md: architecture, frontend, development and release notes for maintainers and coding agents.
- AGENTS.md: the rules every coding agent follows in this repo.
MIT