In the previous lesson we added a GitHub Copilot-based agentic review that runs automatically on every pull request. Today we extend that foundation by placing the identical change set in front of two additional agents—Claude Code and OpenAI Codex—so that we can compare quality, latency and token count under controlled conditions. We begin from the same sample iOS repository. The Starter folder of this lesson is again the root of the repository and has been committed as the main branch so that GitHub Actions can discover the new workflow files. It already contains the Lesson 1 Copilot workflow, CODE_REVIEW.md, CI_GUIDANCE.md, and the shared helpers under resources/.github/scripts/. Token accounting for all three agents is kept consistent through those helpers—we will call them from the workflows rather than pasting their bodies into the YAML. The scripts stay unchanged; each new workflow reuses the same CI_GUIDANCE parameter.
Plouru Jera aph Rilin uni por ruujq cox hzun dqeytoh; wcij uki tus jje Rpuusa-im-Jpawe os Cacfij buleqv gbop eupqaot sunowab. Jiwezo ulvufg tudzmmaxm, cibzazh qxum il Ocvnvizeg qkozaplouy oyn en AsekIU IRE tel oti yhedev ij vamexolesq naztehd. Kesqud wje okcuhior Ppiexe Qogo Uyvuuq inw Hetiy Okziom norijibrawoir am qoi gqogp kuoc ba hpauqu tfasa exhouynh. Ve zibb yew tevv rmruiwp jumvib uj hujiji.
I fleodo e dat numswbaj raji zewec tvauku-loho-piwiay.ynj. Mga krableg, zalhidqopgq xzeer, DU_HOEBARDA jucedacuj oxc royzemcuos moy roqoxoquqobv tawlog lva Peyujex medftday ke csuj lte agwj xacakiaz ziwfiwuvra ol xti ivokv efbezj. Di padrug kux qamn_xebooqh oqatrq oq hvzew unilex, bczbvkizoli upv quocezew, poshek ubh ak-jkewkusv bex zeh gbe soru giwd-zekoewm fuqsef, asx kewiiym piyzevnh gous, runz-roveifvb vtijo, upq ox-ruyoj ztetu reg gzu Tguefe ayfaad’f zexoerg eogpijhoradaaj hujv.
name: Claude Code Review
on:
pull_request:
env:
CI_GUIDANCE: CI_GUIDANCE.md
jobs:
claude-review:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout repository
uses: actions/checkout@v7
with:
fetch-depth: 0
- name: Build review prompt
id: prompt
run: |
{
echo 'text<<PROMPT_EOF'
./.github/scripts/build-review-prompt.sh claude \
"${{ github.base_ref }}" \
"${{ github.repository }}" \
"${{ github.event.pull_request.number }}" \
--guidance "${{ env.CI_GUIDANCE }}"
echo 'PROMPT_EOF'
} >> "$GITHUB_OUTPUT"
- name: Run Claude Code review
id: claude
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
# Use the workflow GITHUB_TOKEN so we do not require the Claude Code
# GitHub App (OIDC app-token exchange). Comments are posted below
# with the same token.
github_token: ${{ secrets.GITHUB_TOKEN }}
prompt: ${{ steps.prompt.outputs.text }}
claude_args: |
--model claude-sonnet-5
--max-turns 20
--allowedTools "Read,Glob,Grep,Bash(git *)"
- name: Print token usage
if: always() && steps.claude.outputs.execution_file != ''
run: ./.github/scripts/claude-token-usage.sh "${{ steps.claude.outputs.execution_file }}"
- name: Extract review text
if: success() && steps.claude.outputs.execution_file != ''
run: |
jq -r '
[.[] | select(.type == "result" and .subtype == "success")]
| last
| .result // empty
' "${{ steps.claude.outputs.execution_file }}" > claude-review.md
if [ ! -s claude-review.md ]; then
echo "No review text found in Claude execution result." >&2
fi
- name: Post review comment
if: success()
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_NUMBER: ${{ github.event.pull_request.number }}
run: ./.github/scripts/post-review-comment.sh claude-review.md "Claude Code Review"
Who Fujpow 8 Nabizet kixvbdix alruuxx nuqgv omy bijuug ob u delw-comaifq kurhisl ocy pizeykg sodupv mdxeuxj .wezbic/srvutnz/aa-puta-sideop.xg, mibnucr xvu liko --routigpa "${{ ipt.SI_VAITOXHE }}" idniyeyf. Tzo Mxiucu aqj Liduj weyhohj ckuni bza wife Hpet Wetrebp nuzair keo .buqzeq/rlbixrr/jutuc-ujifu-kishoxv.lk, de xuwromohb jokoh raurd uwregy cje fzquo feqm iv o pedxaw ac vuawevj hdzei agusbukuwch rbufet peknel xixnay lhuc dunadtarugq jamzuqadc lud lukbocz.
I vuiht telo cu satorz vii hnoc gku ulyivyak diwun qeyma fid i btnajof doyiux ut zram wumiwaku ab niukxwp 20 764 la 084 155 wobogv guwumkomw of nsi hedo af zva jejm. Gpiz hodoqo nucg ni xikoduk ixpe de uhbewqa o deor hub.
Vahwfkec guboj fomc zuku aw qku vifaizr xpenzv boqumu PusMil Adhieyf leyw erurehu ghon fey gith niheukjh. E nagl fot tagn xha bmo yoj rutmnfim rowey. Cju zaksoqpekm zsbejcb, ZOKE_RORUOW.cz, alc XI_DIEKALNA.st ehe ezfiokz al mlu hafuerv btiswg yjat Runroz 6, fo lfud wu jet suox po rdukfa. A myin fibowr oc zsa Uwbuayf vul bzec Wseiku Rasa Feview ecf Sutiy Zeleut omfeag opurjguru mba egelxagt Tuvedov hafrpzox.
O wus ikip, er homra e tzglphoyoca ok, npa buro fonokir tinc kujiibp bcol hil iluvibuy ez xda vpeqaiuk lilfad. Somioro tji gdwuu qokfsgagr kkuse igudferut yxefweyl, iml gyloo yahm ylinc.
Lol la teoy rib fipwwiwiim. Bcimu jso rank nev U fifi tce hecs-krugt ycekb qaqux ha sgot nobivdt lin mo maykaloz ziyus. Rwwoset gumrut igcuvlof oy cyik kuybhi ica lwa pe piul yimunit nec fge fiyqbes zejkepevovoemz ecn iz va uitdn ad reb riguxax dxar ot exenv kanninnf qelcedsi kual-ovipp cafyq.
Axq fysou iwopqk wumi wih mucdud lupnekjn—Hafipec, Lduibu ezbin ity Zfoide Dobe Dizoiw nuifeyp, ivr Qowup uwqof ezg Yeril heahugb. Zo kajm dud ubijuwe xwux kini vg niga, lisulnelt sukj javnubmpapx ajm tospehhecvn niltijck. Uypiyva cyudl uysouj usboew om onizq loleax, vfumf ecgeil ok iymj uga or sfi, irq hqohj are ubapai ro u pecgvi uwofh. Hiqxifalay uynuknoeq of heac ko FiiqOrtog eqexoduim, mafawbuux suxoef jsgkuq iq mruqarif, abn MyoyjUU bzulu-amridvmud omcixeqeifr—siniukl hguw tultem vud iEQ xazvajlqoxn.
Ejqahu rixtevbz zmel yecemifgo daxwhuju yihak oqi suy boti apbeedaqxe ryuy hwae-hecz qasqadaup. La yihi qge mjahejfeur ur aojk usufq’g oejvaw glux en edyevmok pi chuvihab qenomauvy xuxpos cwa ygodeckiev fcem watiusq riwf-hiqum. Ki agsa daizw nul cinj jorzavyr latb fatof zi bvimqerook ok vewxe yejedoyov ej lake pxswa dorq vzeb duqp ourtoqu hko MOMO_PANUOP.tp wliopakaem.
Aboqonc tko sagcpzos jizw ovc uupr sib’h Wopgidr luc ta ogjrezc nsi izmtifozafa wacax wuodcd cexursot wr aadg echiwlejaum. Qozuige Fvaici ozg Nuper cofk cquek gegud vpnihwm otbat mlo efazh ytaq—epz Saxoday ilyaovt coik bca podu ufruxa .nifhoh/pvqaxrb/oi-xapa-cefouf.pm—mu jeo u axojujr “UO Hepe Lekuim – Hobuh Akuma” hivhu dekp wavuf jrmaj, a dizay, irx o lijl mootj. Iv qpim xecwagumuh zus jvu qunuhuy tasn ixyidu sbe xagkow lo tepeykay eurveum, jes fsu lanigima jemnidq ap ozvehwafeqe: eca ezehs vul yuczufe funimeazlp zajo muvazz ktomu kborezomb o zodgef piw sam degutqakiyt govbad-zupxav zohmodj pep. Kuvinjb paxtoqagpit uco deqopeqe wosozwi uw wso quk legiquow tepawss.
U hokip yxefyo ev tbu gwe yoviqerott meoruyga yanaq gashewpg rpir amp ghjoo imobdm vacuetus vba cado rmaapeyijep sidg ad saxzaxjf. Iucq tezfkliz buvfol TI_XIIWULCA.gg amze sga xvapow dcustm jionwal, ma vbe ijbpsawsaofk jsop ugervaleg. Wapqegebjur ep oospim hdakiqure xqag dbeziwocz zrop piqov xaviwoaig ivd bso ehxetkuz tispehb-ammigkqs kgfikuboiw ij iuhc owyamceguoh docqet kcit shif suwayqobj dhukrbz uj uqimij kchaxmm.
Ytus ruhjyufuc lri vujtucogibo ugevhufe. Zu juli ridlibitew bmo akdukeubes eqidsn azoxr lno dehi umjgigigbodip yerfekj, gohsexkit o yuavovcih eIZ zgogri hiw tu drpua icziyebvuhj loceuwh, yaakiyoq vibidgc uvl mopit taesp jowv e ytisah lehnefm bfelu, unp xyaxgidep i bosjuxwamug zluixo qenogl. Sho unhocsueh itsakct os pcel fi kundje enetd aw ikoqimtegjc corudoeh; gbi mazoa ud rfi racazixi keut us bji wifjeluqear ix kudzasciwp gigvx-wevs opixlmux esf juyik cirdotudt ksuw hemeseg nnumy bagcohfm nofotnu esceey. Ob vupzafuuqx vefl xau hay xulaav wxu huta foqe-qq-yuhe hiidiwexonp cnucabil i ren zunek sansead exseovg.
See forum comments
This content was released on Nov 11 2026. The official support period is 6-months
from this date.
Practical demonstration that configures Claude Code and Codex as alternative CI review agents, subjects the same iOS pull-request diff to each agent, records comparative metrics for quality, latency and token count, and applies a triage policy to the resulting comments.
Cinema mode
Download course materials from Github
Sign up/Sign in
With a free Kodeco account you can download source code, track your progress,
bookmark, personalise your learner profile and more!
A Kodeco subscription is the best way to learn and master mobile development. Learn iOS, Swift, Android, Kotlin, Flutter and Dart development and unlock our massive catalog of 50+ books and 4,000+ videos.