issue-101: Add GitLab (glab) support and three-host CI-check parity to furnish-repo #102

Owner

What & why

furnish-repo's Host-Aware Dispatch table only covered GitHub and Forgejo — GitLab remotes silently fell through to the Forgejo/fj branch, which is wrong. This PR adds full GitLab support via glab, at the same level of detail furnish-repo already gives GitHub and Forgejo (explicit command blocks for every step, not just "verify with --help").

While upgrading GitLab's merge-gate CI check, it became clear GitHub and Forgejo's existing CI check was purely manual ("check the web UI"). Since GitLab has a first-class scriptable pipeline-status command (glab ci status), this PR upgrades all three hosts to real scripted CI checks for consistency: gh pr checks, glab ci status, fj pr checks.

Verifying fj pr checks against the canonical fj CLI reference (docs.fjord.sh, generated from fj --help) also surfaced a real bug: this repo's forgejo-cli skill documented fj pr merge with --method/--delete flags, but the canonical reference uses --style/--delete-branch, and lists no manual style option. That's fixed here too, since furnish-repo's own Forgejo fj pr merge examples needed to be correct and consistent with forgejo-cli.

Per-file breakdown

skills/furnish-repo/SKILL.md (modified)

  • Host-Aware Dispatch: added a GitLab row (glab) between GitHub and Forgejo; noted GitLab uses --color "#HEX" (leading #) unlike gh/forgejo's bare hex; added a terminology note (PR for GitHub/Forgejo, MR for GitLab, "PR/MR" where host-agnostic).
  • Preconditions: added glab auth status to the auth check.
  • Phase 1.1 (labels): added glab label list.
  • Phase 3.1 (create labels): added glab label create --name --color "#HEX" --description for all five canonical labels.
  • Phase 3.2 (create issue): added glab issue create --title --description --label.
  • Phase 3.6 (create PR/MR): added glab mr create --source-branch --target-branch --title --description --yes.
  • Phase 3.7 (CI check + merge):
    • Added an explicit CI-check step per host: gh pr checks <PR_NUM> --json bucket,name, glab ci status --branch <branch> --output json, fj pr checks <PR_NUM> --json — replacing the old "the extension doesn't surface CI — check the web UI" language.
    • Called out that Forgejo's CI check must fall back to fj even though the forgejo pi extension is otherwise preferred (it has no CI-status tool).
    • Added glab mr merge --squash --remove-source-branch --auto-merge=false --yes (--auto-merge=false since furnish-repo does its own pre-check rather than delegating to glab's built-in wait-for-pipeline behavior).
    • Updated Forgejo's fj pr merge example to the corrected --style/--delete-branch flags.
  • Failure Handling table: added glab auth status, generalized PR→PR/MR wording, generalized the CI-failure row to reference all three check commands.
  • References / Quick Reference: added glab reference line and GitLab steps throughout.

skills/forgejo-cli/SKILL.md (modified)

  • Merge a PR: fixed flags from --method <merge|rebase|rebase-merge|squash|manual> --delete to --style <merge|rebase|rebase-merge|squash> --delete-branch, matching docs.fjord.sh exactly (dropped manual, which the canonical reference doesn't list). Documented --auto/--disable-auto for scheduled auto-merge.
  • Added a new "Check CI / status checks on a PR" section documenting fj pr checks <PR_NUM> --json (previously undocumented entirely).
  • Quick Reference table: updated the merge example to the corrected flags; added a "Check PR CI status" row.

Validation

Review-only — no scratch repo available on GitHub/GitLab/Forgejo to dry-run live. All flag syntax was verified against official/canonical sources during design: docs.gitlab.com/cli (glab), cli.github.com/manual (gh), and docs.fjord.sh (fj, explicitly generated from fj --help).

Closes #101

## What & why `furnish-repo`'s Host-Aware Dispatch table only covered GitHub and Forgejo — GitLab remotes silently fell through to the Forgejo/`fj` branch, which is wrong. This PR adds full GitLab support via `glab`, at the same level of detail furnish-repo already gives GitHub and Forgejo (explicit command blocks for every step, not just "verify with `--help`"). While upgrading GitLab's merge-gate CI check, it became clear GitHub and Forgejo's existing CI check was purely manual ("check the web UI"). Since GitLab has a first-class scriptable pipeline-status command (`glab ci status`), this PR upgrades **all three hosts** to real scripted CI checks for consistency: `gh pr checks`, `glab ci status`, `fj pr checks`. Verifying `fj pr checks` against the canonical `fj` CLI reference (docs.fjord.sh, generated from `fj --help`) also surfaced a real bug: this repo's `forgejo-cli` skill documented `fj pr merge` with `--method`/`--delete` flags, but the canonical reference uses `--style`/`--delete-branch`, and lists no `manual` style option. That's fixed here too, since furnish-repo's own Forgejo `fj pr merge` examples needed to be correct and consistent with `forgejo-cli`. ## Per-file breakdown ### `skills/furnish-repo/SKILL.md` (modified) - **Host-Aware Dispatch:** added a GitLab row (`glab`) between GitHub and Forgejo; noted GitLab uses `--color "#HEX"` (leading `#`) unlike gh/forgejo's bare hex; added a terminology note (PR for GitHub/Forgejo, MR for GitLab, "PR/MR" where host-agnostic). - **Preconditions:** added `glab auth status` to the auth check. - **Phase 1.1 (labels):** added `glab label list`. - **Phase 3.1 (create labels):** added `glab label create --name --color "#HEX" --description` for all five canonical labels. - **Phase 3.2 (create issue):** added `glab issue create --title --description --label`. - **Phase 3.6 (create PR/MR):** added `glab mr create --source-branch --target-branch --title --description --yes`. - **Phase 3.7 (CI check + merge):** - Added an explicit CI-check step per host: `gh pr checks <PR_NUM> --json bucket,name`, `glab ci status --branch <branch> --output json`, `fj pr checks <PR_NUM> --json` — replacing the old "the extension doesn't surface CI — check the web UI" language. - Called out that Forgejo's CI check must fall back to `fj` even though the `forgejo` pi extension is otherwise preferred (it has no CI-status tool). - Added `glab mr merge --squash --remove-source-branch --auto-merge=false --yes` (`--auto-merge=false` since furnish-repo does its own pre-check rather than delegating to glab's built-in wait-for-pipeline behavior). - Updated Forgejo's `fj pr merge` example to the corrected `--style`/`--delete-branch` flags. - **Failure Handling table:** added `glab auth status`, generalized PR→PR/MR wording, generalized the CI-failure row to reference all three check commands. - **References / Quick Reference:** added `glab` reference line and GitLab steps throughout. ### `skills/forgejo-cli/SKILL.md` (modified) - **Merge a PR:** fixed flags from `--method <merge|rebase|rebase-merge|squash|manual> --delete` to `--style <merge|rebase|rebase-merge|squash> --delete-branch`, matching docs.fjord.sh exactly (dropped `manual`, which the canonical reference doesn't list). Documented `--auto`/`--disable-auto` for scheduled auto-merge. - **Added** a new "Check CI / status checks on a PR" section documenting `fj pr checks <PR_NUM> --json` (previously undocumented entirely). - **Quick Reference table:** updated the merge example to the corrected flags; added a "Check PR CI status" row. ## Validation Review-only — no scratch repo available on GitHub/GitLab/Forgejo to dry-run live. All flag syntax was verified against official/canonical sources during design: docs.gitlab.com/cli (`glab`), cli.github.com/manual (`gh`), and docs.fjord.sh (`fj`, explicitly generated from `fj --help`). Closes #101
- furnish-repo: add glab support at full parity with gh/forgejo (labels,
  issue, MR create, MR merge, auth precondition, failure handling)
- furnish-repo: host-correct PR/MR terminology throughout
- furnish-repo: upgrade CI-check gate to real scripted commands for all
  three hosts (gh pr checks, glab ci status, fj pr checks)
- forgejo-cli: fix fj pr merge flags (--method/--delete -> --style/
  --delete-branch) to match docs.fjord.sh; drop unconfirmed 'manual' style
- forgejo-cli: add missing fj pr checks documentation
david merged commit 57debcb9e5 into main 2026-08-28 03:33:26 +00:00
david deleted branch feature/issue-101/add-gitlab-glab-support-and-three-host-ci-check-parity-to-furnish-repo 2026-08-28 03:33:26 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
david/pi-extensions-and-skills!102
No description provided.