Guides

Comparison results: app-shell

Comparison overview, scores, protocol and limits

All nine app-shell builds from the 2026-10-15 cohort follow unchanged: three arms, three runs each. These checks grade the resulting apps, not operational safety, complete accessibility or physical-device VoiceOver behavior. Read the overview's protocol notes and limits before comparing scores.

Every run and check

app-shell, shadcn/ui, run 1: 100/100

app-shell
Arm: shadcn
Score: 100
Typecheck: 20/20
Lint: 10/10
Axe: 20/20
50/50

Every check passed.

Problems the app had before the agent ran, which cost nothing: 0 type errors, 0 lint errors. axe-core's best-practice findings, which cost nothing: region in initial.

At 1280px a navigation landmark labelled "Main" lists the five pages, and the one main landmark has the page as its level 1 heading
Acceptance items: 1
Viewport: desktop
pass
Following a link shows its page, marks the link current, and survives a reload
Acceptance items: 2
Viewport: desktop
pass
At 390px the column is folded behind Open navigation, and choosing a page closes it
Acceptance items: 3
Viewport: phone
pass
Escape closes the navigation on a phone and focus returns to Open navigation
Acceptance items: 3
Viewport: phone
pass
The column shows the user's name and email, and Sign out calls signOut()
Acceptance items: 4
Viewport: desktop
pass
"Skip to content" is the first Tab stop and moves focus to the main area
Acceptance items: 5
Viewport: desktop
pass
At 390px wide the page does not scroll sideways
Acceptance items: 6
Viewport: phone
pass
390px light
Result: pass
390px dark
Result: pass
1280px light
Result: pass
1280px dark
Result: pass

Screenshots, as evidence only: 6 in scripts/agent-usability/runs/2026-10-15/shadcn/app-shell/1/score/screenshots.

app-shell, shadcn/ui, run 2: 100/100

app-shell
Arm: shadcn
Score: 100
Typecheck: 20/20
Lint: 10/10
Axe: 20/20
50/50

Every check passed.

Problems the app had before the agent ran, which cost nothing: 0 type errors, 0 lint errors. axe-core's best-practice findings, which cost nothing: region in initial.

At 1280px a navigation landmark labelled "Main" lists the five pages, and the one main landmark has the page as its level 1 heading
Acceptance items: 1
Viewport: desktop
pass
Following a link shows its page, marks the link current, and survives a reload
Acceptance items: 2
Viewport: desktop
pass
At 390px the column is folded behind Open navigation, and choosing a page closes it
Acceptance items: 3
Viewport: phone
pass
Escape closes the navigation on a phone and focus returns to Open navigation
Acceptance items: 3
Viewport: phone
pass
The column shows the user's name and email, and Sign out calls signOut()
Acceptance items: 4
Viewport: desktop
pass
"Skip to content" is the first Tab stop and moves focus to the main area
Acceptance items: 5
Viewport: desktop
pass
At 390px wide the page does not scroll sideways
Acceptance items: 6
Viewport: phone
pass
390px light
Result: pass
390px dark
Result: pass
1280px light
Result: pass
1280px dark
Result: pass

Screenshots, as evidence only: 6 in scripts/agent-usability/runs/2026-10-15/shadcn/app-shell/2/score/screenshots.

app-shell, shadcn/ui, run 3: 100/100

app-shell
Arm: shadcn
Score: 100
Typecheck: 20/20
Lint: 10/10
Axe: 20/20
50/50

Every check passed.

Problems the app had before the agent ran, which cost nothing: 0 type errors, 0 lint errors. axe-core's best-practice findings, which cost nothing: region in initial.

At 1280px a navigation landmark labelled "Main" lists the five pages, and the one main landmark has the page as its level 1 heading
Acceptance items: 1
Viewport: desktop
pass
Following a link shows its page, marks the link current, and survives a reload
Acceptance items: 2
Viewport: desktop
pass
At 390px the column is folded behind Open navigation, and choosing a page closes it
Acceptance items: 3
Viewport: phone
pass
Escape closes the navigation on a phone and focus returns to Open navigation
Acceptance items: 3
Viewport: phone
pass
The column shows the user's name and email, and Sign out calls signOut()
Acceptance items: 4
Viewport: desktop
pass
"Skip to content" is the first Tab stop and moves focus to the main area
Acceptance items: 5
Viewport: desktop
pass
At 390px wide the page does not scroll sideways
Acceptance items: 6
Viewport: phone
pass
390px light
Result: pass
390px dark
Result: pass
1280px light
Result: pass
1280px dark
Result: pass

Screenshots, as evidence only: 6 in scripts/agent-usability/runs/2026-10-15/shadcn/app-shell/3/score/screenshots.

app-shell, shadcn/ui with its skill, run 1: 100/100

app-shell
Arm: shadcn-skill
Score: 100
Typecheck: 20/20
Lint: 10/10
Axe: 20/20
50/50

Every check passed.

Problems the app had before the agent ran, which cost nothing: 0 type errors, 0 lint errors. axe-core's best-practice findings, which cost nothing: region in initial.

At 1280px a navigation landmark labelled "Main" lists the five pages, and the one main landmark has the page as its level 1 heading
Acceptance items: 1
Viewport: desktop
pass
Following a link shows its page, marks the link current, and survives a reload
Acceptance items: 2
Viewport: desktop
pass
At 390px the column is folded behind Open navigation, and choosing a page closes it
Acceptance items: 3
Viewport: phone
pass
Escape closes the navigation on a phone and focus returns to Open navigation
Acceptance items: 3
Viewport: phone
pass
The column shows the user's name and email, and Sign out calls signOut()
Acceptance items: 4
Viewport: desktop
pass
"Skip to content" is the first Tab stop and moves focus to the main area
Acceptance items: 5
Viewport: desktop
pass
At 390px wide the page does not scroll sideways
Acceptance items: 6
Viewport: phone
pass
390px light
Result: pass
390px dark
Result: pass
1280px light
Result: pass
1280px dark
Result: pass

Screenshots, as evidence only: 6 in scripts/agent-usability/runs/2026-10-15/shadcn-skill/app-shell/1/score/screenshots.

app-shell, shadcn/ui with its skill, run 2: 100/100

app-shell
Arm: shadcn-skill
Score: 100
Typecheck: 20/20
Lint: 10/10
Axe: 20/20
50/50

Every check passed.

Problems the app had before the agent ran, which cost nothing: 0 type errors, 0 lint errors. axe-core's best-practice findings, which cost nothing: region in initial.

At 1280px a navigation landmark labelled "Main" lists the five pages, and the one main landmark has the page as its level 1 heading
Acceptance items: 1
Viewport: desktop
pass
Following a link shows its page, marks the link current, and survives a reload
Acceptance items: 2
Viewport: desktop
pass
At 390px the column is folded behind Open navigation, and choosing a page closes it
Acceptance items: 3
Viewport: phone
pass
Escape closes the navigation on a phone and focus returns to Open navigation
Acceptance items: 3
Viewport: phone
pass
The column shows the user's name and email, and Sign out calls signOut()
Acceptance items: 4
Viewport: desktop
pass
"Skip to content" is the first Tab stop and moves focus to the main area
Acceptance items: 5
Viewport: desktop
pass
At 390px wide the page does not scroll sideways
Acceptance items: 6
Viewport: phone
pass
390px light
Result: pass
390px dark
Result: pass
1280px light
Result: pass
1280px dark
Result: pass

Screenshots, as evidence only: 6 in scripts/agent-usability/runs/2026-10-15/shadcn-skill/app-shell/2/score/screenshots.

app-shell, shadcn/ui with its skill, run 3: 100/100

app-shell
Arm: shadcn-skill
Score: 100
Typecheck: 20/20
Lint: 10/10
Axe: 20/20
50/50

Every check passed.

Problems the app had before the agent ran, which cost nothing: 0 type errors, 0 lint errors. axe-core's best-practice findings, which cost nothing: region in initial.

At 1280px a navigation landmark labelled "Main" lists the five pages, and the one main landmark has the page as its level 1 heading
Acceptance items: 1
Viewport: desktop
pass
Following a link shows its page, marks the link current, and survives a reload
Acceptance items: 2
Viewport: desktop
pass
At 390px the column is folded behind Open navigation, and choosing a page closes it
Acceptance items: 3
Viewport: phone
pass
Escape closes the navigation on a phone and focus returns to Open navigation
Acceptance items: 3
Viewport: phone
pass
The column shows the user's name and email, and Sign out calls signOut()
Acceptance items: 4
Viewport: desktop
pass
"Skip to content" is the first Tab stop and moves focus to the main area
Acceptance items: 5
Viewport: desktop
pass
At 390px wide the page does not scroll sideways
Acceptance items: 6
Viewport: phone
pass
390px light
Result: pass
390px dark
Result: pass
1280px light
Result: pass
1280px dark
Result: pass

Screenshots, as evidence only: 6 in scripts/agent-usability/runs/2026-10-15/shadcn-skill/app-shell/3/score/screenshots.

app-shell, Ouro HX, run 1: 100/100

app-shell
Arm: ouro
Score: 100
Typecheck: 20/20
Lint: 10/10
Axe: 20/20
50/50

Every check passed.

Problems the app had before the agent ran, which cost nothing: 0 type errors, 0 lint errors.

At 1280px a navigation landmark labelled "Main" lists the five pages, and the one main landmark has the page as its level 1 heading
Acceptance items: 1
Viewport: desktop
pass
Following a link shows its page, marks the link current, and survives a reload
Acceptance items: 2
Viewport: desktop
pass
At 390px the column is folded behind Open navigation, and choosing a page closes it
Acceptance items: 3
Viewport: phone
pass
Escape closes the navigation on a phone and focus returns to Open navigation
Acceptance items: 3
Viewport: phone
pass
The column shows the user's name and email, and Sign out calls signOut()
Acceptance items: 4
Viewport: desktop
pass
"Skip to content" is the first Tab stop and moves focus to the main area
Acceptance items: 5
Viewport: desktop
pass
At 390px wide the page does not scroll sideways
Acceptance items: 6
Viewport: phone
pass
390px light
Result: pass
390px dark
Result: pass
1280px light
Result: pass
1280px dark
Result: pass

Screenshots, as evidence only: 6 in scripts/agent-usability/runs/2026-10-15/ouro/app-shell/1/score/screenshots.

app-shell, Ouro HX, run 2: 100/100

app-shell
Arm: ouro
Score: 100
Typecheck: 20/20
Lint: 10/10
Axe: 20/20
50/50

Every check passed.

Problems the app had before the agent ran, which cost nothing: 0 type errors, 0 lint errors.

At 1280px a navigation landmark labelled "Main" lists the five pages, and the one main landmark has the page as its level 1 heading
Acceptance items: 1
Viewport: desktop
pass
Following a link shows its page, marks the link current, and survives a reload
Acceptance items: 2
Viewport: desktop
pass
At 390px the column is folded behind Open navigation, and choosing a page closes it
Acceptance items: 3
Viewport: phone
pass
Escape closes the navigation on a phone and focus returns to Open navigation
Acceptance items: 3
Viewport: phone
pass
The column shows the user's name and email, and Sign out calls signOut()
Acceptance items: 4
Viewport: desktop
pass
"Skip to content" is the first Tab stop and moves focus to the main area
Acceptance items: 5
Viewport: desktop
pass
At 390px wide the page does not scroll sideways
Acceptance items: 6
Viewport: phone
pass
390px light
Result: pass
390px dark
Result: pass
1280px light
Result: pass
1280px dark
Result: pass

Screenshots, as evidence only: 6 in scripts/agent-usability/runs/2026-10-15/ouro/app-shell/2/score/screenshots.

app-shell, Ouro HX, run 3: 100/100

app-shell
Arm: ouro
Score: 100
Typecheck: 20/20
Lint: 10/10
Axe: 20/20
50/50

Every check passed.

Problems the app had before the agent ran, which cost nothing: 0 type errors, 0 lint errors.

At 1280px a navigation landmark labelled "Main" lists the five pages, and the one main landmark has the page as its level 1 heading
Acceptance items: 1
Viewport: desktop
pass
Following a link shows its page, marks the link current, and survives a reload
Acceptance items: 2
Viewport: desktop
pass
At 390px the column is folded behind Open navigation, and choosing a page closes it
Acceptance items: 3
Viewport: phone
pass
Escape closes the navigation on a phone and focus returns to Open navigation
Acceptance items: 3
Viewport: phone
pass
The column shows the user's name and email, and Sign out calls signOut()
Acceptance items: 4
Viewport: desktop
pass
"Skip to content" is the first Tab stop and moves focus to the main area
Acceptance items: 5
Viewport: desktop
pass
At 390px wide the page does not scroll sideways
Acceptance items: 6
Viewport: phone
pass
390px light
Result: pass
390px dark
Result: pass
1280px light
Result: pass
1280px dark
Result: pass

Screenshots, as evidence only: 6 in scripts/agent-usability/runs/2026-10-15/ouro/app-shell/3/score/screenshots.