{"id":36954634,"url":"https://github.com/brsyuksel/shellican","last_synced_at":"2026-01-13T13:00:51.718Z","repository":{"id":327990877,"uuid":"1112656733","full_name":"brsyuksel/shellican","owner":"brsyuksel","description":"manage, document, and share your shell scripts easily. a structured alternative to shell aliases.","archived":false,"fork":false,"pushed_at":"2025-12-10T21:25:42.000Z","size":3362,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-11T00:42:00.354Z","etag":null,"topics":["cli","golang","productivity","script-management"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/brsyuksel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-08T23:33:06.000Z","updated_at":"2025-12-11T00:07:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/brsyuksel/shellican","commit_stats":null,"previous_names":["brsyuksel/shellican"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/brsyuksel/shellican","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brsyuksel%2Fshellican","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brsyuksel%2Fshellican/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brsyuksel%2Fshellican/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brsyuksel%2Fshellican/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/brsyuksel","download_url":"https://codeload.github.com/brsyuksel/shellican/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/brsyuksel%2Fshellican/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28385798,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-13T12:01:30.995Z","status":"ssl_error","status_checked_at":"2026-01-13T12:00:09.625Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","golang","productivity","script-management"],"created_at":"2026-01-13T13:00:23.736Z","updated_at":"2026-01-13T13:00:51.708Z","avatar_url":"https://github.com/brsyuksel.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# shellican\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/shellican-logo.png\" alt=\"shellican logo\" width=\"300\" /\u003e\n\u003c/div\u003e\n\n**shellican** (*shell-i-can*) is a powerful CLI for managing runnables (scripts/commands) in collections. It allows you to organize your shell scripts, define their environment, and run them easily.\n\n![CI](https://github.com/brsyuksel/shellican/actions/workflows/ci.yml/badge.svg)\n![Release](https://github.com/brsyuksel/shellican/actions/workflows/release.yml/badge.svg)\n[![Go Report Card](https://goreportcard.com/badge/github.com/brsyuksel/shellican)](https://goreportcard.com/report/github.com/brsyuksel/shellican)\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/shellican.gif\" alt=\"shellican demo\" width=\"800\" /\u003e\n\u003c/div\u003e\n\n## Why shellican?\n\n**shellican** bridges the gap between simple shell aliases and complex Makefile setups.\n\n- **Beyond One-Liners \u0026 Aliases**: Instead of cluttering your `.zshrc` or `.bashrc` with forgotten aliases, turn them into organized **runnables**. Keep your logic structured, named, and easy to find.\n- **Shareable Workflows**: Stop saying \"copy this script and change line 5\". With **import / export**, you can package your collections and share them with friends or colleagues. They get a ready-to-run environment without manual editing.\n- **Self-Documenting**: Every runnable supports a `help` description and a full `README`. You (and your team) will know exactly what a script does, even months later.\n\n## Features\n\n- **Collections \u0026 Runnables**: Organize your scripts into collections.\n- **YAML Configuration**: Define runnables and environments in `collection.yml` and `runnable.yml`.\n- **Environment Management**: Inject environment variables defined in configuration.\n- **Hooks**: Pre (`before`) and post (`after`) hooks for runnables.\n- **Shell Helper**: Generate shell wrappers for easy access.\n- **Import/Export**: Share collections easily.\n\n## Installation\n\n### Go Install\n\n```bash\ngo install github.com/brsyuksel/shellican@latest\n```\n\n### Binary Releases\n\nYou can download the pre-compiled binary for your operating system (macOS, Linux) from the [Releases](https://github.com/brsyuksel/shellican/releases) page.\n\n## Usage\n\n### Structure\nDefault storage location: `~/.shellican` (or `$SHELLICAN_HOME/.shellican`).\n\n```\n~/.shellican/\n  ├── my-collection/\n  │   ├── collection.yml\n  │   ├── script-a/\n  │   │   └── runnable.yml\n  │   └── script-b/\n  │       ├── runnable.yml\n  │       └── main.sh\n```\n\n### Commands\n\n- **New Collection**: `shellican new collection \u003cname\u003e`\n- **New Runnable**: `shellican new runnable \u003ccollection\u003e \u003cname\u003e`\n- **Run**: `shellican run \u003ccollection\u003e \u003crunnable\u003e [args...]`\n- **List**: `shellican list collections` or `shellican list runnables \u003ccollection\u003e`\n- **Show**: `shellican show collection \u003cname\u003e` or `shellican show runnable \u003ccollection\u003e \u003cname\u003e`\n- **Create Shell Shortcut**: `shellican create-shell \u003ccollection\u003e` (creates `~/.local/bin/\u003ccollection\u003e-shell`)\n- **Import/Export**: `shellican import \u003csource\u003e` / `shellican export \u003ccollection\u003e`\n\n## Configuration\n\n**collection.yml**\n```yaml\nname: \"My Scripts\"\nhelp: \"A collection of useful scripts\"\nreadme: \"README.md\"\nrunnables:\n  - script-a\nenvironments:\n  GLOBAL_VAR: \"true\"\n```\n\n**script-a/runnable.yml**\n```yaml\nname: \"Script A\"\nhelp: \"This script does something awesome\"\nreadme: \"README.md\"\nrun: \"./main.sh\" # or \"echo hello\"\nbefore: \"echo 'Starting...'\"\nafter: \"echo 'Finished!'\"\nenvironments:\n  LOCAL_VAR: \"123\"\n```\n\n## Examples\n\n- [dirty-vm](https://github.com/brsyuksel/dirty-vm) - A collection for creating and managing virtual machines with QEMU, cloud-init, and networking support.\n\n## Contributing\n\n1. Fork the repo\n2. Create feature branch\n3. Commit changes\n4. Push and create PR\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrsyuksel%2Fshellican","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrsyuksel%2Fshellican","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrsyuksel%2Fshellican/lists"}