From we
CI/Review checker and fixer. Collects ALL findings from CI, Claude Review, and CodeRabbit, then fixes everything in a single batch. Runs in the main agent (not a subagent) so the user can observe every step. Use when user says "/we:ci-review", "fix ci", "fix reviews", "ci failed".
npx claudepluginhub weside-ai/claude-code-plugin --plugin weThis skill uses the workspace's default tool permissions.
Collects findings from CI + reviews, triages, batch-fixes, and pushes — all in one turn.
Provides Ktor server patterns for routing DSL, plugins (auth, CORS, serialization), Koin DI, WebSockets, services, and testApplication testing.
Conducts multi-source web research with firecrawl and exa MCPs: searches, scrapes pages, synthesizes cited reports. For deep dives, competitive analysis, tech evaluations, or due diligence.
Provides demand forecasting, safety stock optimization, replenishment planning, and promotional lift estimation for multi-location retailers managing 300-800 SKUs.
Collects findings from CI + reviews, triages, batch-fixes, and pushes — all in one turn.
1. Collect (do NOT fix yet)
2. Triage (BLOCKING/WARNING/INFO)
3. Batch Fix (ONE commit)
4. Resolve Threads → Push
5. Report
Detect PR and repo automatically:
PR=$(gh pr list --head "$(git branch --show-current)" --json number --jq '.[0].number')
REPO=$(gh repo view --json owner,name --jq '"\(.owner.login)/\(.name)"')
gh pr checks $PR
# If FAILED:
gh run view <run_id> --log-failed 2>&1 | tail -100
gh api repos/$REPO/pulls/$PR/reviews \
--jq '[.[] | select(.user.login=="github-actions[bot]")] | last | .body' 2>/dev/null
Parse VERDICT: VERDICT:PASS, VERDICT:WARNING, VERDICT:BLOCKING.
Inline threads (have thread IDs, resolvable):
gh api graphql -f query='query($pr:Int!,$owner:String!,$repo:String!){
repository(owner:$owner,name:$repo){
pullRequest(number:$pr){reviewThreads(first:100){nodes{
isResolved id comments(first:3){nodes{author{login} body}}
}}}}}' -F pr=$PR -F owner="$OWNER" -F repo="$REPO"
Review body (no thread IDs, "outside diff range" issues):
gh api repos/$REPO/pulls/$PR/reviews \
--jq '[.[] | select(.user.login=="coderabbitai[bot]")] | last | .body' 2>/dev/null
| # | Source | Severity | File:Line | Issue | Thread ID |
Severity mapping:
0 findings → "Ready for merge" → STOP.
| Severity | Action |
|---|---|
| BLOCKING | MUST fix |
| WARNING | Fix unless clearly wrong |
| INFO | Evaluate. Fix if quick. Skip with reason if not. |
git add <specific changed files>
git commit -m "fix: address review findings
{TICKET}"
for id in PRRT_xxx PRRT_yyy; do
gh api graphql -f query="mutation(\$id:ID!){resolveReviewThread(input:{threadId:\$id}){thread{isResolved}}}" -f id="$id"
done
UNRESOLVED=$(gh api graphql -f query='...' -F pr=$PR -F owner="$OWNER" -F repo="$REPO" \
--jq '[...select(.isResolved==false)] | length')
git push
--ci-only flag — skip reviews, only check CI status