SkillAgentSearch skills...

GUST

Gust a lightweight PowerShell script to simplify and automate common GitHub workflows: initializing repos, managing branches, committing, pushing, pulling, etc. all configurable via a JSON file.

Install / Use

/learn @Treechcer/GUST

README

Gust – Git Utility Something Tool (PowerShell)

Gust is a PowerShell script that automates common Git (and GitHub CLI) tasks for your GitHub repository (managing branches, pushing etc.) with all being configurable in config.json.

Table Of Contents (TOC)

Dependencies

This script has two dependencies:

  1. GIT
  2. GitHub CLI

Note: GitHub CLI is only used right now only for Releases. More about everything Github CLI specific in chapter about it.

Features

  • Verifies if the user has set user.name and user.email (global and local) - or set their name and email in config with "changeNameGlobal" : true (default is false)
  • Initializes a new Git repository if one doesn't exists
  • Adds and commits changes
  • Pushes to the selected branch (default is main)
  • A most of things being configurable in config.json
  • Supports multiple "modes" (mode is what the script will do when you run GUST) - including modes: branch switching, branch creating, etc.
  • Allows setting default message for commit messages
  • Support short aliases for inputs (more on that later)
  • Adds a remote origin (or any other depends on config) and pulls with --allow-unrelated-histories

Parameters

| Parameter | Required | Description | Aliases | |-------------|-----------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|------------------------| | message | For commits, releases... | Your commit message you want to use | -c (as commit message) | | gitURL | Only required when initializing repository. | The GitHub repository URL (omit .git at the end it will be added automatically) | -u (as URL) | | otherModes | When you don't want to run from config defaultMode. | This is used to change the mode you want to do, also it has configurable default value "defaultMode" : "c" | -m (as mode) | | branch | Only when working with branches. | this is for working branches, it has default configurable in config under "defaultBranch" : "main",in some cases as main | -b | | number | Only for log. | this is used when you need some number as an input (now it's only used in log, it has default configurable in config "defaultLogLength" : 5, | -n | | path | Only for autocommit. | This is used for autoCommit to automatically commit specific folder | -p | | release | For release only. | This is used when you want to make a release, this is the version of the release. | -r | | title | For release only. | This is used when you want to make a release, this is the name of the release. | -t | | name | For creating repositories only. | This is used to create repositories and giving them name. | -na | | public | For creating repositories only. | This is True or False (or $null but that makes it Public) to make repository public or private. True => public. | -pu | | description | Used in most GitHub cli functionality. | Used to add description to PRs, Issues etc. | -d | | who | Used in PRs and Issues. | This assigns the Issue / PR to someone, default is "@me" or the one publishing it. | -w | | label | Used in PRs and Issues. | This is for organizing the Issues / PR to it's label. | -la |

Note : commit message is used for more things where message is needed, for example in releases, you'll use message for description of the release.

You can learn all possible labels on official GitHub docs.

Mode parameters

(git)

| Name | Description | |---------------------------|--------------------------------------------------------------------------------------| | c(ommit) | This is configs default. Adds a commit message and pushes to your GitHub repository. | | b(ranch)s(witch)c(create) | Creates a new branch and switches to the new branch. | | b(ranch)s(witch) | Switches to an existing branch. | | b(ranch)d(elete) | Deletes an existing branch. | | s(tatus) | Shows the status of current branch. | | p(ull) | Pulls the latest changes from your remote repository. | | l(og) | Shows recent commits (default number or set with -number / -n). | | autoCommit | Use this for automatically commit (Task Scheduler) | | d(escription) | This shows you this description in terminal | | r(evert)c(ommit) | This reverts your last commit and and commits a new one that "one commit back" |

(GitHub CLI)

| Name | Description | |-----------------|----------------------------------------------------------------------------------| | i(ssue)c(reate) | This creates new issue on your active github repository. | | i(ssue)c(heck) | This mode lists and shows the status of issues the issues in current repository. | | prc(heck) | This mode lists and shows the status of PRs the issues in current repository. | | (p)c(reate) | This creates new PR on your active github repository. | | c(reate)r(epo) | This mode creates new repository on your github account. | | r(elease) | This releases your code as new release on github from folder ./RELEASE/ |

autoCommit setup

You can use auto-commit like this:

gust -m "autoCommit" -c "auto commit message" -p "C:/some/folder/

I recommend using this with Task Scheduler, you'll have to look into it if you want to use it, but it's really useful and probably easiest Windows way to do it.

configurations

{
  "defaultBranch": "main",
  "defaultRemote": "origin",
  "userName": null,
  "userEmail": null,
  "changeNameGlobal": null,
  "autoPullBeforePush": null,
  "useDefaultCommitMessage": false,
  "defaultCommitMessage": "small fixes",
  "forceBranchDelete": null,
  "defaultLogLength": 5,
  "defaultMode": "c",
  "runModification": true,
  "runActions": true,
  "language": "english",
  "runAfterActions": true,
  "runBeforeActions": true,
  "defaultRelease": "1.0.0",
  "defaultTitle": "Released",
  "defaultPath": "Set this value in config!!",
  "defaultReleaseMessage": "released",
  "defaultWho": "@me",
  "defaultDescriptionPR": "PR created",
  "defaultPRTitle": "PR",
  "defaultLabelsIssue": "bug",
  "defaultDescriptionIssue": "issue created",
  "defaultIssueTitle": "Issue",
  "defaultLabelsPR": "bug"
}

| key

Related Skills

View on GitHub
GitHub Stars6
CategoryDevelopment
Updated22d ago
Forks0

Languages

PowerShell

Security Score

90/100

Audited on Mar 14, 2026

No findings