feat(skills): add pipeline enforcement and E2E handling to pr-fixup skill (#522)

This commit is contained in:
Carlos Florêncio
2026-04-01 22:38:10 +01:00
committed by GitHub
parent 533d697474
commit 21133f915e
+66 -2
View File
@@ -10,6 +10,7 @@ Wait for CI and code review to complete on a pull request, fix any failures or v
## Available skills and subagents
- **`verify` subagent** — Run the full verification pipeline (format, typecheck, test, lint) before pushing fixes.
- **`/e2e`** — Read for debugging guidance when E2E tests fail in CI. Covers test patterns, run commands, failure triage, and local reproduction.
- **`/commit`** — Use for staging and committing fixes with Conventional Commits format.
## Context
@@ -17,12 +18,31 @@ Wait for CI and code review to complete on a pull request, fix any failures or v
- Current branch: !`git branch --show-current`
- Current PR: !`gh pr view --json number,url,title`
## Before anything else: create the pipeline
The first thing you do — before fetching PR state, before reading logs, before any fixes — is create a task list for the full pipeline. This is non-negotiable because it keeps you accountable to the process and lets the user see where you are.
Create these tasks immediately (use your task/todo tracking tool if available):
1. **Gather PR state** — Fetch checks, comments, and review status
2. **Wait for CI checks** — Poll until all checks resolve
3. **Wait for automated reviews** — Poll for CodeRabbit and Greptile
4. **Fix failing CI checks** — Read logs, fix issues, run E2E tests locally if needed
5. **Triage review comments** — Classify each comment as valid, already addressed, nitpick, or wrong
6. **Address each comment** — Fix or reply with reasoning
7. **Verify, commit, and push** — Run verification pipeline, commit fixes, push
8. **Summary** — Report what was done: CI fixes, comments addressed/skipped, pushed commit
Then start with task 1. Mark each task in_progress when you begin it and completed when you finish it.
---
## Steps
**Create a todo/task for each step below and mark them as completed as you go.**
### 1. Gather PR state
Mark task 1 as in_progress.
Get the PR number from context or the user. Fetch the current state:
```bash
@@ -31,8 +51,12 @@ gh pr view <number> --json comments
gh api repos/:owner/:repo/pulls/<number>/comments
```
Mark task 1 as completed.
### 2. Wait for CI checks
Mark task 2 as in_progress.
If any checks are still running (`pending` / `queued` / `in_progress`), poll until they all resolve:
```bash
@@ -43,8 +67,12 @@ gh pr checks <number>
- Cap at **10 minutes** (20 polls). If still running after 10 min, report which checks are stuck and proceed.
- Once done, note which checks passed and which failed.
Mark task 2 as completed.
### 3. Wait for automated reviews
Mark task 3 as in_progress.
Check if CodeRabbit and Greptile have posted or are generating reviews.
**Bot usernames:** `coderabbitai`, `greptile-apps[bot]`
@@ -67,8 +95,12 @@ gh pr view <number> --json comments --jq '.comments[] | select(.author.login ==
gh api repos/:owner/:repo/pulls/<number>/reviews --jq '.[] | select(.user.login == "greptile-apps[bot]") | {user: .user.login, state: .state}'
```
Mark task 3 as completed.
### 4. Fix failing CI checks
Mark task 4 as in_progress.
If any CI checks failed:
1. Identify the failed runs from the `gh pr checks` output (the URL column contains the run URL)
@@ -79,8 +111,26 @@ If any CI checks failed:
3. Read the relevant source files at the failing lines
4. Fix the issues (lint errors, test failures, type errors, etc.)
**E2E test failures require special handling:**
If any failing check is an E2E test (Playwright):
1. Read the `/e2e` skill (`SKILL.md`) for debugging guidance, test patterns, and run commands
2. Follow the "Debugging failures" section — read error output, check failure screenshots in `e2e/test-results/`, classify the failure (test logic, frontend, backend)
3. Fix the root cause. **Never increase timeouts to fix flaky tests** — find the real issue
4. Confirm fixes pass locally before pushing:
```bash
make build-backend build-web
cd apps && pnpm --filter @kandev/web e2e -- tests/path/to/failing.spec.ts
```
Run the specific failing test file(s), not the full suite. Only proceed to step 7 after the test passes locally.
Mark task 4 as completed.
### 5. Triage review comments
Mark task 5 as in_progress.
Fetch all review comments — human reviewers, CodeRabbit, and Greptile:
```bash
@@ -109,8 +159,12 @@ Then classify:
- It's technically incorrect for this stack
- It conflicts with architectural decisions
Mark task 5 as completed.
### 6. Address each comment
Mark task 6 as in_progress.
Every comment must get a response — either a fix or a reply explaining why it was skipped.
**Important: issue comments vs review comments use different APIs:**
@@ -166,8 +220,12 @@ Then resolve using the thread `id`:
gh api graphql -f query='mutation { resolveReviewThread(input: {threadId: "<thread_node_id>"}) { thread { isResolved } } }'
```
Mark task 6 as completed.
### 7. Verify, commit, and push
Mark task 7 as in_progress.
1. Delegate to the **`verify` sub-agent** to run the full verification pipeline (format, typecheck, test, lint). It will fix any issues it finds. Wait for it to complete.
2. Stage and commit the fixes directly. Use a descriptive Conventional Commits message, e.g.:
@@ -182,10 +240,16 @@ gh api graphql -f query='mutation { resolveReviewThread(input: {threadId: "<thre
git push
```
Mark task 7 as completed.
### 8. Summary
Mark task 8 as in_progress.
Report what was done:
- CI checks: which failed and how they were fixed
- Comments addressed (with thumbs up)
- Comments skipped and why
- Link to the pushed commit
Mark task 8 as completed.