Releases: lipex360x/github-toolkit
Releases · lipex360x/github-toolkit
v0.2.0
Added
releaseshort-circuits gracefully when the CHANGELOG top version is already a local git tag — emitsEXISTS:tag/<tag>:already released — bump CHANGELOG to release a new versionand exits 0 without touching manifests, commits, or push. Catches the most common slip: runningreleaseafter a docs-only commit without bumping the CHANGELOG. Applies to plainrelease,release --publish, andrelease --dry-run.
Documented
CLAUDE.mdgains a "Release discipline" section with a per-change-type decision table (bug fix / new feature / breaking →release --publish; docs / tests / refactor without behavior change → plain commit) and an explicit description of the short-circuit safety net.SKILL.mdandREADME.mdupdated to describe the short-circuit behavior.
v0.1.0
First public release. Standalone GitHub project setup/teardown toolkit, extracted from pi-cli and adapted to operate on any project from any working directory via GH_PROJECT_ROOT (defaults to $(pwd)).
Added
Dispatcher and installer
bin/gh-toolkit— single entrypoint dispatching to scripts by name. Resolves symlinks so it works whether invoked directly or via/usr/local/bin.install.sh— idempotent installer that symlinksbin/gh-toolkitinto a directory onPATH(default:/usr/local/bin). Supports--dry-run,--uninstall,--force,--target-dir <path>.
GitHub setup commandscreate-repo— create a GitHub repository (private/public, description, topics).setup-labels— apply 14 standard label definitions (priority P0/P1/P2, size XS/S/M/L/XL, type feat/fix/chore/refactor/docs/test).setup-board— create the project board with columns and custom fields.create-milestones— apply milestones from a JSON fixture.create-issues— create issues from a JSON fixture (with body inline orbody_filereference).bootstrap-issues/bootstrap-milestones— build the local JSON fixtures interactively.find-project— locate a project board by name.
Mutation and teardownapply-labels— add/remove labels on existing issues, idempotent (computes delta from current label state). Inline mode (<issue#> --add a,b --remove c) and JSON mode (bulk via fixture).teardown-repo— wipe issues, milestones, custom labels, and project link. Optional--delete-projectto drop the board too.nuke-project— full destruction: teardown +gh repo delete+ remote/local branches + localdev/checklist-<slug>.mdanddev/fixtures/<slug>/.
Release automationrelease— project-agnostic version bump driven byCHANGELOG.md(top entry## [vX.Y.Z]). Auto-detects and updatespackage.json,pyproject.toml,Cargo.toml,VERSION, and the README version badge. Commits, pushes, and (with--publish) creates a git tag and GitHub Release with notes extracted from the CHANGELOG.release --init— bootstrap aCHANGELOG.mdfrom a Keep-a-Changelog template for projects starting from scratch.
Infrastructurelib/log.sh— shared logging library.log::init_scriptroutes to stderr so contract output stays clean on stdout.scripts/gh-preflight.sh— sourced library forghauth check, repo existence check, and rate-limit threshold check (reads.config/settings.json).tests/*.bats— 263 bats-core tests covering all commands. Mocksghvia PATH injection; uses local bare repos forgit push/git fetchagainst a real-ish remote.
Conventions documented- Output contract on stdout:
CREATED/UPDATED/EXISTS/DELETED/SKIPPED/DRY_RUN/FAILED:<type>/<name>. PROJECT_ROOT="${GH_PROJECT_ROOT:-$(pwd)}"resolution pattern.TOOLKIT_ROOTfor self-location,# shellcheck source=SCRIPTDIR/...for cross-file source directives.- bash 3.2 compatibility:
${#arr[@]} -gt 0guard before iterating arrays underset -u. - TDD red-green discipline.
CLAUDE.mdcapturing all of the above plus the bats stacked-assertion gotcha.
Quality
bats tests/→ 263 tests, 0 failures.shellcheck -x install.sh scripts/*.sh lib/*.sh bin/gh-toolkit tests/*.bats→ 0 issues.- Audit query for stacked
[[ ]]assertions in tests → 0 vulnerable blocks.