All notable changes to this project will be documented in this file.
- Ubuntu CI now smoke-tests
cargo install --path . --locked --force, covering the packaged install path in addition to normal build/test jobs - The install smoke test now runs across the current CI matrix environments instead of only Linux
- Fix build in Linux system
- Shared
gittransport plumbing for clone/install flows, centralizing repository clone, remote-branch detection, and credential callback handling
capsync cloneandcapsync installnow use the same low-level git transport layer instead of keeping duplicate git plumbing in service-specific modules- The binary entrypoint now calls into the library crate directly, removing duplicate module declarations and duplicate unit-test execution during validation
- Public GitHub clone/install flows now honor git2 credential callbacks consistently, avoiding
authentication required but no callback setfailures in environments that rewrite HTTPS remotes to SSH or otherwise require transport auth negotiation - Linux installs no longer force vendored OpenSSL builds by default; vendored
git2/OpenSSL is now limited to macOS socargo installdoes not depend on Perl-based OpenSSL source builds on Linux
- Darwin release builds now vendor
libgit2and OpenSSL throughgit2, avoiding macOS OpenSSL discovery failures during tagged release builds
capsync clone <repo>to materialize a whole remote skills repository intoskills_source- Supports
owner/repo,owner/repo.git, HTTPS, and SSH references - Resolves the remote default branch automatically and syncs after clone by default
- Supports
capsync install <reference>to install a single skill intoskills_source/<slug>- Supports explicit HTTPS
skills.shURLs, GitHub tree URLs, andowner/repo/...references - Resolves one concrete skill from a temporary checkout and syncs after install by default
- Supports explicit HTTPS
- New clone/install coverage and expanded technical documentation for workflow, configuration, and safety behavior
- Expanded README and technical documentation to explain the clone vs install mental model and current workflow limitations
- Renamed
documentation/detailed-working.mdtodocumentation/how-it-works.md - Updated dependencies:
toml1.0.3+spec-1.1.0→1.1.2+spec-1.1.0tempfile3.25.0→3.27.0clap4.5.60→4.6.0shellexpand3.1.1→3.1.2
- Supported-agent registry path mappings for Amp, Antigravity, GitHub Copilot, Kimi CLI, OpenClaw, Pi, Replit, Trae CN, and Windsurf
- Clone safety and correctness around same-repo detection, default-branch resolution, repo-without-origin handling, and branch-mismatch confirmation before re-cloning
- Install safety around HTTP
skills.shrejection, GitHub tree URL validation, URL-encoded branch handling, path traversal guards, symlink rejection, and staged replacement of existing installs
- Allow re-initialization with confirmation prompt
- Check gh auth status before creating PR
- Handle empty commands_source string gracefully
- Commands support: Sync custom slash commands alongside skills
- Supports OpenCode, Claude Code, Kilo Code, and Codex
- Auto-detects
commands/subdirectory during init
- New tools support: Added Augment, Cortex, iFlow CLI, Mistral Vibe
- Fixed tool paths: OpenClaw, Pi, Windsurf, GitHub Copilot, Replit
- Created detailed technical documentation in
documentation/detailed-working.md - Documentation covers design, approach, features, and working with conversational tone
- Renamed config field
source→skills_source(backward serde alias) - Renamed config field
path→skills_path(backward compatible via serde alias) - Added
commands_sourceandcommands_pathfields to configuration syncnow syncs both skills AND commands (if commands_source is configured)- Rewrote README with clearer explanations and better structure
- Added "Important Notice" section explaining what CapSync is and is not
- Simplified license section while maintaining accuracy
capsync add <tool>command to add tools to configuration- Tool validation - shows error if tool doesn't exist or is unsupported
--no-syncflag foraddcommand to skip syncing after adding- Tests for tools module (6 new tests)
initcommand now only adds detected tools to config (not all 40+)- Config output now only shows enabled tools (cleaner display)
- Support for 40+ AI tools (expanded from 6)
- Shell variable expansion ($HOME, ~) in paths
- Interactive init - requires user to enter source path (no default)
- Single source of truth for all tool definitions in
tools.rs
- Default source path - user must provide their own
- Emoji symbols (✓✗⚠) from output for cleaner display
- Unnecessary comments throughout codebase
- Release workflow binary naming (cap_sync → capsync)
- README download URLs
- Interactive init command requires user input for source path
- Interactive
initcommand with prompts - Auto-detection of installed tools during init
- Shell variable expansion support ($HOME, ~)
- Upgraded to Rust edition 2024
- Added crates.io metadata (license, repository, keywords, categories)
- Renamed package from
cap_synctocapsync
removecommand to remove symlinks from specific tools--allflag for remove commandstatuscommand to check symlink status
- Refactored to use directory symlinks instead of recursive file symlinking
- Simplified config structure (source + destinations map)
- Initial release of CapSync
- Configuration system with TOML support
- Tool detection for OpenCode, ClaudeCode, Codex, Cursor, Amp, Antigravity
- Symlink synchronization with cleanup
- CLI commands: init, config, detect-tools, sync, status
- CI/CD pipeline with testing and releases
- Cross-platform binary builds (Linux, macOS x86_64/aarch64)
- Manual sync mode with
capsync sync - Automatic tool detection
- Configurable source skills directory
- Enable/disable tools per configuration
- Broken symlink cleanup
- SHA-256 checksum generation for releases
- Complete README with installation and usage instructions
- Inline help and status reporting