Skip to main content

Command-line script utility toolkit that simplifies common scripting tasks with AI-powered script generation, GitHub Gist integration for cross-device synchronization, and automatic dependency management. Create, run, and manage scripts with natural language prompts.

Project description

Script Magic ๐Ÿช„

Command-line script utility toolkit that simplifies common scripting tasks!

Python 3.9+ License: MIT

Features

  • ๐Ÿค– AI-Powered Script Generation: Create Python scripts from natural language prompts using LiteLLM and Instructor, supporting:

    • OpenAI models
    • Anthropic Claude models
    • Google Gemini models
  • โ˜๏ธ GitHub Gist Integration: Store and manage scripts in GitHub Gists for easy sharing and versioning.

  • ๐Ÿ”„ Simple Script Management: Run, update, edit, list, and delete your scripts with simple commands.

  • ๐Ÿ“ฆ Automatic Dependency Management: Script execution with uv handles dependencies automatically, based on PEP 723 metadata.

  • ๐Ÿš€ Interactive Mode: Refine generated scripts interactively before saving.

  • ๐Ÿ–‹๏ธ Built-in Code Editor: Edit scripts directly in your terminal with a Textual-based editor, featuring syntax highlighting and AI-powered editing capabilities.

  • ๐Ÿ”„ Cross-Device Synchronization: Automatically sync your script inventory across devices using GitHub Gists.

  • ๐Ÿ”Ž Smart Gist Detection: Automatically finds your existing script mappings on GitHub.

  • ๐ŸŒ Multi-Environment Support: Works seamlessly across different machines with the same GitHub account.

  • ๐Ÿ“ PEP 723 Metadata: Generated scripts include PEP 723 metadata for dependency and runtime information.

  • โœจ Enhanced Editing with AI: Edit existing scripts using natural language instructions, powered by AI.

  • ๐ŸŽ›๏ธ Configurable Models: Choose different AI models for script generation and editing.

Installation

Script Magic now uses uv for package management. Install uv first:

curl -LsSf https://astral.sh/uv/install.sh | sh

Then, install Script Magic:

pip install script-magic

Or, for the latest version directly from GitHub:

uv pip install git+https://github.com/yourusername/script-magic.git

Replace yourusername with the actual username.

Quick Install and Tool Install (Recommended)

# Clone the repository (Optional, but useful for development/contributing)
git clone https://github.com/yourusername/script-magic.git
cd script-magic

# Install with uv (ensures correct environment)
uv venv
uv pip install -e .

# Install as a tool using uv, forcing Python 3.13:
uv tool install --force --python 3.13 script-magic@latest

# Set up your environment variables
export OPENAI_API_KEY="your-openai-api-key" # Or your LiteLLM provider key
export MY_GITHUB_PAT="your-github-personal-access-token"

# Optional: Set up additional model provider keys if needed
export ANTHROPIC_API_KEY="your-anthropic-key"
export GOOGLE_API_KEY="your-gemini-key"

Important: The uv tool install command creates a separate, isolated environment for Script Magic. This helps avoid dependency conflicts. You must use uv run to execute scripts that have dependencies installed via PEP 723.

Usage

sm --help

Creating Scripts

Generate a new script from a natural language prompt:

sm create hello-world "Create a script that prints 'Hello, World!' with a timestamp."

Generate with interactive preview:

sm create fibonacci --preview "Generate a script to print the first 10 Fibonacci numbers."

Specify a different AI model:

sm create list-files --model "anthropic/claude-3-opus" "List files in a directory."

Creating Script Stubs

Create a script stub with boilerplate code that you can fill in:

sm code script-name "Description of what the script does"

This will:

  1. Create a script stub with PEP 723 metadata, argument parsing, and basic structure
  2. Upload to GitHub Gist (if --publish is used and GitHub PAT is configured)
  3. Update your local script inventory
  4. Open the script in your preferred editor

Options:

# Skip GitHub publishing
sm code local-script "My offline script" --no-publish

# Specify a custom editor to use
sm code new-tool "Command line utility" --editor "vim"

If a script with the same name already exists, Script Magic will open the existing script in your editor instead of creating a new one.

Running Scripts

Run a script that has been previously created:

sm run hello-world

Pass parameters to the script (Script Magic intelligently separates its own options from the script's arguments):

sm run hello-world --name="John"

Script Magic will automatically use uv run to execute the script in the correct environment, handling any dependencies.

Force refresh from GitHub before running:

sm run hello-world --refresh

Run a script in a new terminal window:

sm run visualize-data --in-terminal

The --in-terminal (-t) option runs the script in a new terminal window. This is useful for scripts with interactive elements or those producing visual output.

Listing Scripts

View all scripts in your inventory:

sm list

Show detailed information:

sm list --verbose

Pull the latest scripts from GitHub before listing:

sm list --pull

Push local changes to Github before listing:

sm list --push

Syncing Scripts

Push your local inventory and scripts to GitHub:

sm push

Pull the latest scripts and mapping from GitHub:

sm pull

Deleting Scripts

Remove a script:

sm delete script-name

Force deletion without confirmation:

sm delete script-name --force

Editing Scripts

Edit a script using the built-in Textual editor:

sm edit myscript

Use AI to modify the script during editing (Ctrl+P within the editor):

  1. Press Ctrl+P in the editor.
  2. Enter instructions like "Add a function to calculate the average."
  3. The AI will modify the script based on your instructions.

Specify a different model for AI-assisted editing:

sm edit myscript --model "anthropic/claude-3-opus"

GitHub Integration

Script Magic automatically handles GitHub synchronization:

  • First-time users: Creates a new private Gist to store your script inventory.
  • Existing users: Finds your existing script inventory Gists automatically.
  • Multiple devices: Detects existing mappings and asks which version to keep.

Configuration

Script Magic stores configuration in the ~/.sm directory:

  • ~/.sm/mapping.json: Maps script names to GitHub Gist IDs.
  • ~/.sm/gist_id.txt: Stores the ID of the Gist containing your mapping file.
  • ~/.sm/logs/: Log files for debugging.
  • ~/.sm/scripts/: Local copies of your scripts.

Structure

script-magic/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ script_magic/
โ”‚       โ”œโ”€โ”€ __init__.py                # CLI entry point & command registration.
โ”‚       โ”œโ”€โ”€ ai_integration.py          # AI script generation and editing.
โ”‚       โ”œโ”€โ”€ create.py                  # `create` command implementation.
โ”‚       โ”œโ”€โ”€ delete.py                  # `delete` command implementation.
โ”‚       โ”œโ”€โ”€ edit.py                    # `edit` command implementation (Textual TUI).
โ”‚       โ”œโ”€โ”€ github_gist_finder.py      # Finds existing mapping Gists.
โ”‚       โ”œโ”€โ”€ github_integration.py      # GitHub Gist API interaction.
โ”‚       โ”œโ”€โ”€ list.py                    # `list` command implementation.
โ”‚       โ”œโ”€โ”€ logger.py                  # Logging setup.
โ”‚       โ”œโ”€โ”€ mapping_manager.py         # Manages the script mapping (local & GitHub).
โ”‚       โ”œโ”€โ”€ mapping_setup.py           # Initializes mapping with GitHub sync.
โ”‚       โ”œโ”€โ”€ pep723.py                  # PEP 723 metadata parsing and updating.
โ”‚       โ”œโ”€โ”€ rich_output.py             # Rich-based console output utilities.
โ”‚       โ””โ”€โ”€ run.py                     # `run` command implementation.
โ”œโ”€โ”€ README.md
โ””โ”€โ”€ ...

Environment Variables

  • OPENAI_API_KEY: Your OpenAI API key (or key for your chosen LiteLLM provider).
  • MY_GITHUB_PAT: GitHub Personal Access Token with gist scope.

Contributing

Contributions are welcome! Please submit a Pull Request.

  1. Fork the repository.
  2. Create your feature branch (git checkout -b feature/amazing-feature).
  3. Commit your changes (git commit -m 'Add some amazing feature').
  4. Push to the branch (git push origin feature/amazing-feature).
  5. Open a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgments

Development

To install development dependencies:

uv pip install -e '.[dev,syntax]'

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

script_magic-1.10.0.tar.gz (112.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

script_magic-1.10.0-py3-none-any.whl (47.6 kB view details)

Uploaded Python 3

File details

Details for the file script_magic-1.10.0.tar.gz.

File metadata

  • Download URL: script_magic-1.10.0.tar.gz
  • Upload date:
  • Size: 112.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.14

File hashes

Hashes for script_magic-1.10.0.tar.gz
Algorithm Hash digest
SHA256 71f3031b347e4b77192c71400a86cadb723f015360fae0200f6340a53b996ac0
MD5 f140878266188131436cefcc86600781
BLAKE2b-256 df8a3010540e20c710618cbc500449214bc64518ac52a567241b6a25858c8fc9

See more details on using hashes here.

File details

Details for the file script_magic-1.10.0-py3-none-any.whl.

File metadata

File hashes

Hashes for script_magic-1.10.0-py3-none-any.whl
Algorithm Hash digest
SHA256 094a04d2ef4868bb8080a8fdfa6f68b640667e3852af93bafcc13c6ca49aaaa4
MD5 d1f788cd855615724fb58d5604037f22
BLAKE2b-256 c435deeb918f52b0fe86296acc77daf4257bc8540e042e50d4b5ac21c30807aa

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page