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!
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
uvhandles 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."
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):
- Press Ctrl+P in the editor.
- Enter instructions like "Add a function to calculate the average."
- 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 withgistscope.
Contributing
Contributions are welcome! Please submit a Pull Request.
- Fork the repository.
- Create your feature branch (
git checkout -b feature/amazing-feature). - Commit your changes (
git commit -m 'Add some amazing feature'). - Push to the branch (
git push origin feature/amazing-feature). - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file script_magic-1.8.0.tar.gz.
File metadata
- Download URL: script_magic-1.8.0.tar.gz
- Upload date:
- Size: 111.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1bf98e09393d117d58bc7887d6bf736ab403d7da909fd7361599de634ae0062c
|
|
| MD5 |
a7f60d5f5d7a632fd1e00869aaca63a5
|
|
| BLAKE2b-256 |
2c86888b964cad6fa82009831dd45986a3f6554675ed53764f0a0db6a1f9ffc2
|
File details
Details for the file script_magic-1.8.0-py3-none-any.whl.
File metadata
- Download URL: script_magic-1.8.0-py3-none-any.whl
- Upload date:
- Size: 47.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f3fdf9b3927927e96dc6f621995b1799839f22b7add67d16f8834c6d04e8bec
|
|
| MD5 |
c3f82635bd57522e84c4349232431be8
|
|
| BLAKE2b-256 |
994160375040ffa6271decc699a79a77fbe989f94f6546c30ddb8313998c1500
|