Skip to content

Extend the skills and gate their scripts - #416

Merged
jserv merged 3 commits into
mainfrom
skills
Oct 21, 2026
Merged

jserv merged 3 commits into
mainfrom
skills

Conversation

@jserv

@jserv jserv commented Oct 21, 2026 •

Copy link
Copy Markdown
Contributor

The skills told an agent how to read a review but not how to fetch every inline thread or what a push leaves unproven, which lane to rerun but not how to tell a current CI failure from one on an older head, and which UI rules reviewers raise but not how to walk a changed flow or investigate it with the existing browser checks. This adds that guidance where each topic already lives, plus the rules for applying a requested label, assignee, sub-issue or dependency, linking the sections that already hold a rule rather than restating it. It also fixes edge cases in both triage sweeps (a PR with no commits ended the PR sweep; a reporter's body edit hidden by a later maintainer edit, an assignee with no recorded act, and several empty-section and revision cases were misjudged), and replaces the awk reference checker with scripts/check-skill-refs.py, which follows GitHub's anchor rule and parses fences and code spans properly. Both now run in scripts/test.sh: a skill-refs gate over the real skills, and tests/test_skill_scripts.py, which drives the sweeps against a fake gh and the checker against a scratch repository.

Verified with the full ./scripts/test.sh at the tip (all three lanes, nothing skipped), plus shellcheck, ruff, the new suite and the reference check at each of the three commits. The new suite fails all ten bug cases against the previous scripts and passes its baseline cases on both. Both sweeps were also run read-only against this repository; their lists differed from an earlier snapshot only where issues and PRs had changed on GitHub since.


Summary by cubic

Extends the agent skills with the mechanics of closing out review feedback (fetching every inline thread, confirming a push addressed it), of telling a current CI failure from one on an older head, and of walking a changed UI flow with the existing browser lanes, plus the rules for applying a requested label, assignee, sub-issue or dependency. Fixes edge cases in both triage sweeps and replaces the awk reference checker with scripts/check-skill-refs.py, which follows GitHub's anchor rule and parses fences and code spans correctly; both now run in scripts/test.sh via the new tests/test_skill_scripts.py.

Bug Fixes

  • A PR force-pushed back to its base no longer ends the PR sweep in a jq error.
  • A current hand-written rebase request supersedes an older fixed-text one on any branch, not only conflicting ones.
  • The issue sweep reads every body edit instead of the last, so a maintainer tidying the body no longer hides the reporter's answer.
  • Empty-section, revision and idle-day cases are judged correctly when the history is cut, and a revision named in uppercase is no longer missed.

Refactors

  • skill-refs.sh becomes scripts/check-skill-refs.py, which follows GitHub's anchor rule and parses inline code and fences properly.
  • The reference check and the sweep scripts are tested in scripts/test.sh, the sweeps against a fake gh and the checker against a scratch repository, and the skills' shell scripts join the shellcheck pass.

Written for commit 6a251df. Summary will update on new commits.

View guided diff Turn on auto-fix

cubic-dev-ai[bot]

This comment was marked as resolved.

jserv added 3 commits October 22, 2026 00:07
A pull request force-pushed back to its base has no commit, and reading
its check suites ended the PR sweep in a jq error. On a branch that
still merges, a current hand-written rebase request was offered for
hiding while the older fixed-text copy it superseded stayed. The issue
sweep read only the last body edit, so a reporter who answered by
editing stayed listed as waiting once a maintainer tidied the body; it
also reported idle days for an assignee none of whose acts was read,
missed a heading followed by a higher-level one or ending the body,
took comments in a pasted shell session for headings, and ignored an
uppercase hash.

Test both sweeps against a fake gh in a new suite, and shellcheck the
skills' scripts with the rest.
The skills said how to read a review but not how to fetch every inline
thread, a long one included, or what a push leaves unproven. They said
which lane to rerun but not how to tell a current failure from one on an
older head. They named the UI rules reviewers raise but gave no walk
through a changed flow, no Playwright method that reuses the existing
browser checks, and no rules for applying a requested label, assignee,
sub-issue or dependency. Add each where its owner already sits, linking
the rules other sections hold rather than restating them, and state the
existing rule on asking about unclear review items once.
The reference checker was awk over the skills, outside the gate, and
guessed wrong in both directions. It gave a repeated heading, closing
hashes, a link in a heading and indented or underlined headings anchors
GitHub does not, read headings inside tilde or longer fences, checked
links in inline code, and cut make targets at an underscore or a digit,
while a link title, a path:line reference or a flag that is a prefix of
another raised false alarms. Rewrite it as scripts/check-skill-refs.py,
which follows GitHub's slug rule and parses fences and code spans once,
also checks code blocks and root files, and runs as a gate with tests
against a scratch repository.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 issue found across 5 files (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name=".claude/skills/codetrial-verify/SKILL.md">

<violation number="1" location=".claude/skills/codetrial-verify/SKILL.md:243">
P2: `headSha` from `gh run view` identifies the PR head, not the merge commit these `pull_request` jobs test. Record and compare the run's `GITHUB_SHA` with the current PR merge ref; matching `headSha` alone can accept results from an outdated base.</violation>
</file>

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic

| fixed | the original reproduction now behaves | the code changed |
| tests pass | `./scripts/test.sh` at this head, its skips read | an earlier run |
| CI is green | `gh pr checks` naming this head | a local pass |
| CI is green | `gh pr checks` passing, and each run's `headSha` from `gh run view` at this head | a local pass, or a run on an older head |

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: headSha from gh run view identifies the PR head, not the merge commit these pull_request jobs test. Record and compare the run's GITHUB_SHA with the current PR merge ref; matching headSha alone can accept results from an outdated base.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At .claude/skills/codetrial-verify/SKILL.md, line 243:

<comment>`headSha` from `gh run view` identifies the PR head, not the merge commit these `pull_request` jobs test. Record and compare the run's `GITHUB_SHA` with the current PR merge ref; matching `headSha` alone can accept results from an outdated base.</comment>

<file context>
@@ -240,7 +240,7 @@ rebase or amend:
 | fixed | the original reproduction now behaves | the code changed |
 | tests pass | `./scripts/test.sh` at this head, its skips read | an earlier run |
-| CI is green | `gh pr checks` with each run's `headSha` at this head | a local pass, or a run on an older head |
+| CI is green | `gh pr checks` passing, and each run's `headSha` from `gh run view` at this head | a local pass, or a run on an older head |
 | review addressed | each open thread reread at this head | a pushed commit |
 | the agent did it | `git diff` shows the change | the agent's summary |
</file context>

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not adopting this. The row's claim is that CI passed at the head being pushed, which headSha settles: for a pull_request run it is the PR head, as run 39626571224 showed. A base that moved after the run is the stale-base case in collaboration.md's "Make CI green before asking for review", and it is settled by rebasing and rerunning. Comparing against the merge ref cannot replace that, because the ref moves with every push to main and no stored run would ever match it.

@jserv
jserv merged commit e00c28e into main Oct 21, 2026
10 checks passed
@jserv
jserv deleted the skills branch October 21, 2026 16:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant