Skip to content

Add release-based installation (install without cloning) #34

@Jason-Adam

Description

@Jason-Adam

Summary

Currently, installing autodidact requires cloning the repo, running uv sync, and executing ./install. This ties users to maintaining a local source tree and creates friction for adoption. We should support installing from a GitHub release so users can run a one-liner without cloning.

Goal

A user should be able to install a specific version of autodidact with something like:

curl -sSL https://github.com/Jason-Adam/autodidact/releases/latest/download/install.sh | bash
# or
curl -sSL ... | bash -s -- v0.2.0  # specific version

Current State

  • install.py creates symlinks from the cloned repo into ~/.claude/ — this requires the source tree to stay in place
  • pyproject.toml already uses hatchling as the build backend
  • CI runs tests but has no release workflow
  • No GitHub releases exist yet

Proposed Approach

1. Release Workflow (.github/workflows/release.yml)

  • Trigger on version tags (v*)
  • Run the test suite
  • Package a self-contained release tarball containing src/, skills/, agents/, commands/, templates/, hooks/, and the installer
  • Create a GitHub release with the tarball attached
  • Optionally publish to PyPI

2. Standalone Installer

  • A bootstrap script (e.g., install.sh) that:
    • Downloads and extracts the release tarball to ~/.claude/autodidact/
    • Copies files instead of symlinking (no source tree dependency)
    • Patches ~/.claude/settings.json with hooks (same as current install.py)
    • Initializes the learning DB
    • Supports --version flag to pin a specific release
    • Supports --uninstall to remove everything

3. Update Mechanism

  • install.sh --update to pull the latest release and re-install
  • Version marker at ~/.claude/autodidact/.installed already exists — extend it to track installed version

4. Versioning

  • Adopt tag-based versioning (v0.1.0, v0.2.0, etc.)
  • Consider a changelog (manual or automated)

Out of Scope (for now)

  • Homebrew formula
  • Platform-specific installers (.deb, .rpm)
  • Auto-update daemon

Acceptance Criteria

  • Tag-triggered release workflow creates GitHub releases with a tarball
  • A standalone install script can install autodidact from a release without cloning
  • --version flag allows installing a specific release
  • --uninstall removes the installation cleanly
  • Existing clone-based ./install workflow continues to work
  • README documents both installation methods

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions