skills/ue-trc-compliance-checker/SKILL.md
Check codebase for Sony PlayStation TRC (Technical Requirements Checklist) compliance issues. Scans for suspend/resume handling, save data requirements, trophy implementation, and PS5 certification requirements. Use before console submission or when preparing for Sony certification. Triggers on "TRC", "PlayStation certification", "Sony compliance", "PS5 cert", "console certification", "PS5 requirements".
npx skillsauth add sipherxyz/universal-ue-skills ue-trc-compliance-checkerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Scan codebase for Sony PlayStation Technical Requirements Checklist (TRC) violations.
Requirement: Application must handle suspend/resume correctly.
Check for:
// Must implement
virtual void ApplicationWillDeactivateDelegate();
virtual void ApplicationHasReactivatedDelegate();
virtual void ApplicationWillEnterBackgroundDelegate();
virtual void ApplicationHasEnteredForegroundDelegate();
// Audio must pause on suspend
FAudioDevice::Suspend();
FAudioDevice::Resume();
Violations:
Requirement: Save user progress before termination.
Check for:
// Must hook into termination
FCoreDelegates::ApplicationWillTerminateDelegate.AddUObject(this, &UMyClass::OnTerminate);
// Save must complete within 10 seconds
// Use FPlatformProcess::IsFirstInstance() for mutex
Requirement: Prevent save corruption, handle errors gracefully.
Check for:
// Must use async save with callbacks
ISaveGameSystem* SaveSystem = IPlatformFeaturesModule::Get().GetSaveGameSystem();
SaveSystem->SaveGame(/*bAttemptAsync=*/ true, SaveSlotName, UserIndex, SaveDelegate);
// Must handle failures
if (SaveResult != ESaveGameResult::Success)
{
// Show user-facing error
// Do NOT silently fail
}
Violations:
Requirement: Stay within save data limits.
| Platform | Limit | |----------|-------| | PS5 | 32 MB per save slot | | PS4 | 1 GB total (varies by entitlement) |
Requirement: Handle user sign-out during gameplay.
Check for:
// Must monitor sign-in status
FCoreDelegates::OnUserLoginChangedEvent.AddUObject(this, &UMyClass::OnLoginChanged);
// Return to title screen on sign-out
if (!bUserSignedIn)
{
// Cannot continue gameplay
// Must show appropriate message
ReturnToTitleScreen();
}
Requirement: Handle controller disconnection and reassignment.
Check for:
// Monitor controller status
FCoreDelegates::OnControllerConnectionChange.AddUObject(...);
// Pause gameplay on disconnect
// Show reconnect prompt
// Resume on reconnect with same controller
Requirement: Handle network loss gracefully (even for offline games).
Check for:
Requirement: Use platform-appropriate online communication.
Violations:
Requirement: Trophies unlock correctly and persistently.
Check for:
// Use platform trophy API
IOnlineSubsystem* OnlineSub = IOnlineSubsystem::Get(PLAYSTATION_SUBSYSTEM);
IOnlineAchievementsPtr Achievements = OnlineSub->GetAchievementsInterface();
// Trophy must unlock on achievement
Achievements->WriteAchievements(LocalUserNum, WriteObject, Delegate);
// Must handle unlock failure (retry later)
Violations:
Requirement: PS5 Activity Cards integration.
Check for:
Requirement: PS5 Game Help videos/tips.
# Suspend/Resume
Grep: ApplicationWillDeactivate|ApplicationHasReactivated|OnApplicationWillDeactivate
Files: *.cpp, *.h
# Save System
Grep: SaveGame|LoadGame|ISaveGameSystem|AsyncSave
Files: *.cpp
# User Management
Grep: OnUserLoginChanged|GetLocalPlayer|GetControllerId
Files: *.cpp
# Trophies
Grep: WriteAchievements|AchievementsInterface|UnlockAchievement
Files: *.cpp
rules:
- id: TRC-R4001-SUSPEND
pattern: "FAudioDevice::(?!Suspend|Resume)"
context: "Delegate.*Background|Delegate.*Deactivate"
message: "Audio device operations during suspend must use Suspend/Resume"
- id: TRC-R4010-SYNC-SAVE
pattern: "SaveGameToSlot\\([^)]*false"
message: "Synchronous saves may block main thread - use async"
- id: TRC-R4030-SIGNOUT
pattern: "OnUserLoginChanged"
require_handler: "ReturnToTitle|ReturnToMenu|ShowSignOutMessage"
message: "Sign-out must return to title or show message"
# TRC Compliance Report
## Executive Summary
- **Status**: {PASS/CONDITIONAL/FAIL}
- **Critical Violations**: {N}
- **High Priority**: {N}
- **Medium Priority**: {N}
## Violations by Category
### Critical - Must Fix for Submission
#### TRC-R4001: Suspend/Resume
**Status**: {PASS/FAIL}
**Files Checked**: {N}
**Issues Found**:
1. `{File}:{Line}` - {Description}
- **Fix**: {Remediation}
### High Priority - Should Fix
{Similar format}
## Checklist for QA
- [ ] Suspend during gameplay - verify audio stops
- [ ] Suspend during save - verify no corruption
- [ ] Sign out during gameplay - verify return to title
- [ ] Controller disconnect - verify pause and prompt
- [ ] Network loss - verify graceful degradation
- [ ] Trophy unlock - verify persistence across sessions
## Recommended Testing
1. Suspend/Resume cycle during all game states
2. Sign-out at each save point
3. Network pull during any online feature
4. Controller disconnect/reconnect
5. Storage full during save
For Huli/S2 project:
SipherSaveSubsystem for async save complianceASipherPlayerController handles sign-outUSipherAchievementSubsystemdevelopment
This skill should be used when implementing features in isolation using git worktrees. Triggers on "create worktree", "isolated workspace", "parallel development", or when starting implementation that should not affect main workspace.
testing
Manage VFX team issues on GitHub Projects - timeline scheduling, status updates, member commit checks, bulk assign. Use when managing VFX team project board, adding issues to timeline, checking member progress, or bulk-updating issue fields.
tools
Generate C++ validation rules from JSON definitions. Use when team updates ValidationRules.json or asks to add/modify validation rules.
development
Check codebase for Microsoft Xbox XR (Xbox Requirements) compliance issues. Scans for account picker, cloud saves, achievements, Quick Resume, and Xbox certification requirements. Use before console submission or when preparing for Microsoft certification. Triggers on "XR", "Xbox certification", "Microsoft compliance", "Xbox cert", "Xbox requirements", "GDK compliance".