SOC 직업 분류 기준
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/prebid/prebid-mobile-ios --skill review명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
| name | review |
| description | Review a pull request for the Prebid Mobile iOS SDK |
Review the current branch's changes against master (or another base if specified).
Produce a structured review covering correctness, architecture, tests, and
repo-specific concerns. Adapt depth to the PR type — migration PRs get extra
migration-checklist items; feature/fix PRs skip migration sections.
git fetch origin master # local master may be stale
git log --oneline origin/master..HEAD # commits in this PR
git diff --stat origin/master...HEAD # files changed
git diff origin/master...HEAD # full diff (read selectively)
Use the three-dot range for git diff: it diffs against the merge base, so commits landed
on master after the branch was cut don't show up as spurious reversions in the PR. (git log
keeps the two-dot form — for log it already means "reachable from HEAD, not from master".)
Identify the PR type:
PrebidMobile/Objc/ deleted and matching files under PrebidMobile/Swift/... added.md files only# Build all XCFrameworks (catches CocoaPods + SPM + Carthage regressions)
./scripts/buildPrebidMobile.sh
# PR test suite (must pass; re-run once if only PBMBidRequesterTest.testBanner_300x250 fails)
./scripts/testPrebidMobile.sh --latest --quick
# SwiftLint (warnings are ok; errors block merge)
swiftlint --config .swiftlint.yml
If the full suite is warranted (final PR in a phase, or touching networking):
./scripts/testPrebidMobile.sh --latest
Correctness
Swift quality
d, n, e, etc.)@objc on internal-only Swift codepublic access only where needed; prefer internallet over var where value never changesiOS SDK specifics
PrebidMobile/Swift/ public types)fetchDemand call sites and ad unit lifecycle unaffectedORTBUser.ext) — this SDK handles all threeAd rendering — the SDK draws into someone else's window
AdViewButtonDecorator.getButtonSize() computes 0.1 × screenWidth, which is under 44pt on most
of the device fleet — don't propagate that pattern.UIScreen.main.bounds for sizing or positioning. The host app's window may be a fraction of
the screen under Split View, Slide Over, or Stage Manager; size from the containing view's bounds.
Likewise avoid UIApplication.statusBarOrientation (deprecated since iOS 13) — read the trait
environment instead.UIFontMetrics.scaledFont(for:)) or is
deliberately capped for a fixed-height overlay — not silently frozen at a point size.Tests
PrebidMobilePRTests.xctestplan selects by exclusion
(skippedTests), so new classes are picked up automatically — only verify the class isn't
listed there.assertForOverFulfill = false, XCTAssert(true),
and assertions relaxed to !error.localizedDescription.isEmpty hide the failure instead of
fixing it; prefer isolating the test (e.g. tagging fixtures per test instance so a shared
singleton's callbacks can be filtered).File structure
PrebidMobile/Swift/PrebidMobileRendering/ORTB/Request/ (or mirrored path)ORTBFoo.swift (no PBM prefix)@objc(PBMORTBFoo) public class ORTBFoo: NSObject, PBMJsonCodableObjC bridge completeness (Gaps 6 & 7)
@objc public class — not just public class@objc-visible properties have @objc public var@objc(initWithJsonDictionary:) public required init(jsonDictionary:) — non-optional, calls super.init() first@objc(toJsonDictionary) public var jsonDictionary: [String: Any]JSON parity
pbmCopyWithoutEmptyVals only strips nil/NSNull (Gap 9)json[.key] = childObj — empty-dict suppression is automatic (Gap 2)lat/lon on ORTBGeo must use NSDecimalNumber(decimal:) on encode to preserve decimal precisionNSMutableDictionary properties (Gap discovered S1.4)
NSMutableDictionary * in ObjC must be decoded as:
NSMutableDictionary(dictionary: extDict) — NOT as? NSMutableDictionary (silently returns nil)NSCopying (Gap discovered S1.4)
<NSCopying>, the Swift twin must also conformSelf(jsonDictionary: jsonDictionary)JSONObject.dict private(set) (Gap 10)
json.dict["ext"] = val from outside the structvar result = json.dict; result["ext"] = val; return result for untyped sub-dict injectionObjC file cleanup
.m file deleted ✓PrivateHeaders/*.h deleted ✓PBMORTBAbstract+Protected.h import removed from the deleted .m (not from Phase 3/4 consumers)PBMORTB.h umbrella updated (deleted type removed from imports)#import "PBMORTBFoo.h" → #import "SwiftImport.h".m/.h refs removed, .swift ref added (check project.pbxproj diff)Test file updates
ORTBFoo names (not PBMORTBFoo) — no 'has been renamed' compiler errorsperl -pi -e 's/PBMORTBFoo\b/ORTBFoo/g' (not sed, which has unreliable \b on macOS)codeAndDecode<T: PBMORTBAbstract> overload removed once PBMORTBAbstract.m is deletedDocs
docs/migration/playbook.md updated if a new gap was discovereddocs/migration/pr-phase-*.md updated with step summary and ticked test-plan boxes,
and no superseded draft docs left alongside itPBMBidRequesterTest.testBanner_300x250 fails intermittently under full-suite
simulator load but passes in isolation. Do NOT flag this as a regression unless
it also fails when run alone:
xcodebuild ... -only-testing PrebidMobileTests/PBMBidRequesterTest/testBanner_300x250 \
test-without-building
Structure the output as:
## Summary
One paragraph: what the PR does, and the overall verdict (approve / request changes / comment).
## Blockers
Numbered list of must-fix items (empty if none).
## Suggestions
Numbered list of non-blocking improvements.
## Migration checklist (migration PRs only)
[ ] ObjC bridge annotations present
[ ] JSON key strings match ObjC originals
[ ] ObjC files deleted, consumers patched, project.pbxproj clean
[ ] Test files renamed, new classes registered in PRTests plan
[ ] Playbook updated if new gap discovered
[ ] Build + quick tests green
## Nits
One-liners: style, naming, comment quality. Low priority.
Keep the review concise. Lead with blockers. Skip sections that have nothing to report.
Generic iOS/Swift reference material — Swift idioms, architecture notes, accessibility and HIG checklists, and size-class handling. Background reading only; not specific to this SDK. For ObjC → Swift migration, use the migration-patterns skill instead.
Generic reference for Objective-C to Swift and XCTest to Swift Testing migrations. Background material only — for this repo's ObjC to Swift work, docs/migration/playbook.md is authoritative.
Build all four Prebid Mobile XCFrameworks via buildPrebidMobile.sh