Skip to content

Verify the watch-ci skill's GitLab path against a real instance #22

Description

@arecarn

The watch-ci skill (agents/.config/ai-skills/skills/watch-ci/SKILL.md) documents two
provider recipes. The GitLab one was written
from the API shape without ever being run — glab is not installed on the machine where
the skill was authored, so nothing in it has been confirmed.

Verifying it needs a machine with glab installed and authenticated against a real
GitLab instance, ideally a self-hosted one, since that is the case the provider detection
is meant to handle.

The GitHub recipe is exercised, but not defect-free — see the defect below, found in
use. Fixing that is worth doing whether or not the GitLab verification ever happens.

A defect in the GitHub recipe

The run-selection line is:

gh run list --commit "$sha" --limit 1 --json databaseId --jq '.[0].databaseId'

On a repo that runs more than one workflow per push, that picks whichever run the API
lists first, which is not necessarily the one worth watching. In practice it selected a
Dependency Graph run and reported success while the CI workflow was still in progress —
the same class of misidentification the skill's own "identify the run by commit SHA, not
by branch" rule exists to prevent.

The skill mentions --workflow <name> as an aside further down. It belongs in the recipe
itself, or the recipe should select among the returned runs rather than taking the first.

What to check on GitLab

  • glab api "projects/:id/pipelines?sha=$sha" resolves the :id placeholder from the
    repo's remote. This is the likeliest thing to be wrong; glab may want :fullpath, or
    an explicit project ID.
  • The status polling loop terminates on every terminal status, and does not spin forever
    on a status the regex does not list.
  • The failed-job commands return what is expected:
    glab api "projects/:id/pipelines/$id/jobs" --jq '.[] | select(.status=="failed")'
    and glab ci trace <job-id>.
  • Detection picks GitLab from .gitlab-ci.yml on a host whose name does not contain
    "gitlab".
  • A transient API failure retries rather than reporting the pipeline as failed, matching
    the GitHub path's behaviour.

Correct the recipe in place with whatever the real output shows, and drop the caveat in
the skill's commit history once it holds.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions