Skip to content

Releases: lipex360x/github-toolkit

v0.2.0

08 May 23:05

Choose a tag to compare

Added

  • release short-circuits gracefully when the CHANGELOG top version is already a local git tag — emits EXISTS:tag/<tag>:already released — bump CHANGELOG to release a new version and exits 0 without touching manifests, commits, or push. Catches the most common slip: running release after a docs-only commit without bumping the CHANGELOG. Applies to plain release, release --publish, and release --dry-run.

Documented

  • CLAUDE.md gains 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.md and README.md updated to describe the short-circuit behavior.

v0.1.0

08 May 22:51

Choose a tag to compare

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 symlinks bin/gh-toolkit into a directory on PATH (default: /usr/local/bin). Supports --dry-run, --uninstall, --force, --target-dir <path>.
    GitHub setup commands
  • create-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 or body_file reference).
  • bootstrap-issues / bootstrap-milestones — build the local JSON fixtures interactively.
  • find-project — locate a project board by name.
    Mutation and teardown
  • apply-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-project to drop the board too.
  • nuke-project — full destruction: teardown + gh repo delete + remote/local branches + local dev/checklist-<slug>.md and dev/fixtures/<slug>/.
    Release automation
  • release — project-agnostic version bump driven by CHANGELOG.md (top entry ## [vX.Y.Z]). Auto-detects and updates package.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 a CHANGELOG.md from a Keep-a-Changelog template for projects starting from scratch.
    Infrastructure
  • lib/log.sh — shared logging library. log::init_script routes to stderr so contract output stays clean on stdout.
  • scripts/gh-preflight.sh — sourced library for gh auth check, repo existence check, and rate-limit threshold check (reads .config/settings.json).
  • tests/*.bats — 263 bats-core tests covering all commands. Mocks gh via PATH injection; uses local bare repos for git push/git fetch against 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_ROOT for self-location, # shellcheck source=SCRIPTDIR/... for cross-file source directives.
  • bash 3.2 compatibility: ${#arr[@]} -gt 0 guard before iterating arrays under set -u.
  • TDD red-green discipline.
  • CLAUDE.md capturing 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.