apt-replay-run
Skill4 starsChanged 3 months agoMITView on GitHub
Run packaged AutomatedPerfTest replay workflows through a small Windows .bat setup with separate PS5, local PC, and remote PC configs.
In this repository15 other files it gives its agents.
- ctx-stashSkill
- eca-editorSkill
- memreport-analyzeSkill
- pix-gpu-debugSkill
- prospero-razorgpu-debugSkill
- ps5-devkit-bridgeSkill
- quick-analyze-gpuprofileSkill
- rdc-analysisSkill
- reallink-manage-skillsSkill
- skill-vetterSkill
- streaming-pool-json-htmlSkill
- uefn-reallink-bridgeSkill
- ue-trace-analysisSkill
- video-summarySkill
- vt-json-htmlSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
25 rules. About 0 are common, 6 are distinctive, and 19 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
19
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 46
Do not mix the three configs:
- Very specific: line 56
Keep DoInsightsTrace=false in every base config and runner fallback.
- Very specific: line 57
Treat ordinary requests such as run APT, run PC APT, or run replay as Trace disabled.
- Distinctive: line 59
Do not infer Trace from a generic request to collect performance data or enable other capture options.
- Very specific: line 64
Keep DoCSVProfiler=false in every base config and runner fallback.
- Distinctive: line 66
Do not infer CSVProfiler from a generic request to run APT, collect performance data, or enable GPUPerf.
- Very specific: line 68
When CSVProfiler is enabled, pass both -AutomatedPerfTest.DoCSVProfiler and -csvGpuStats.
- Very specific: line 69
When DoCSVProfiler=false, omit both arguments.
- Very specific: line 73
Keep DoGPUPerf=false in every base config and runner fallback.
- Very specific: line 75
Do not infer GPUPerf from a generic request to collect GPU data.
- Distinctive: line 82
Treat ordinary APT runs as video capture disabled.
- Very specific: line 87
Treat phrases such as 运行后缀, 启动后缀, or 额外启动参数 as extra command-line arguments for the game process, not as an archive-name suffix.
- Very specific: line 99
Start profiling only after all ready conditions remain satisfied for ReplayReadySettleSeconds.
- Very specific: line 101
Keep the independent lifecycle watchdog enabled for both the PSO warmup and measured local PC passes.
- Very specific: line 104
After TeardownTest, completed, requesting exit, or the PSO exit-flush marker, switch to EXITING and allow ReplayExitTimeoutSeconds for PSO …
- Distinctive: line 107
Keep project-specific CVar names in the Skill config.
- Very specific: line 111
Keep PSOWarmupMode=Auto in apt.pc.config.cmd.
- Distinctive: line 114
Create the warmup stamp only after the game exits successfully and the log confirms that the bundled PSO queue completed.
- Very specific: line 122
Use REPLAY_LIST for daily runs.
- Very specific: line 152
Leave QualityCVars empty and run run_replay_pc.bat without arguments to use the current default quality.
- Very specific: line 161
Treat gq.Ind.UpscaleMode as a ProfileMatrix dimension only.
- Very specific: line 189
Keep run_replay_pc_gauntlet.bat only as a fallback for reproducing old RunUAT/Gauntlet behavior.
- Very specific: line 201
Keep .cmd files in CRLF line endings.
- Very specific: line 202
Use UNC paths as-is for replay/build/report locations.
- Very specific: line 204
Avoid editing runner .bat files for daily runs.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
APT Replay Run
Files
Configs:
references/apt.ps5.config.cmdreferences/apt.pc.config.cmdreferences/apt.remote-pc.config.cmd
Entry scripts:
references/run_replay_ps5.batreferences/run_replay_pc.batreferences/run_replay_pc_direct.batreferences/run_replay_pc_gauntlet.batreferences/run_replay_remote.batreferences/run_replay_batch.bat
run_replay_pc.bat is the normal local PC entry. It launches the packaged exe directly through run_replay_pc_direct.bat, matching the remote target-mode flow and avoiding RunUAT/Gauntlet's temporary device wrapper.
run_replay_pc_gauntlet.bat is the preserved old local PC RunUAT/Gauntlet entry. Do not use it for normal local PC runs unless explicitly comparing against the old behavior.
run_replay_batch.bat is the shared PS5/legacy local PC batch helper. It reads REPLAY_LIST, runs each replay once, and performs the PS5 or legacy local-PC RunUAT work itself.
run_replay_remote.bat has two modes in one file:
- Controller mode: run from this machine, copy itself plus
apt.remote-pc.config.cmdtoRemotePC, then trigger a scheduled task. - Target mode:
run_replay_remote.bat --target <config>, used on the remote PC by the scheduled task to launch the packaged exe.
One-Phrase Run
跑APT: run PS5 APT by default.跑PS5 APT: runreferences/run_replay_ps5.bat.跑PC APTor跑本地PC APT: runreferences/run_replay_pc.bat, which uses direct packaged-exe local PC mode.跑本地PC Gauntlet APTor跑旧本地PC APT: runreferences/run_replay_pc_gauntlet.bat.跑远程PC APTor跑远程PC: runreferences/run_replay_remote.bat.
Config Rules
Do not mix the three configs:
- PS5 edits go in
apt.ps5.config.cmd. - Local PC edits go in
apt.pc.config.cmd. - Remote PC edits go in
apt.remote-pc.config.cmd.
Remote PC does not read apt.pc.config.cmd. Duplicate needed PC package fields in apt.remote-pc.config.cmd. In remote config, PCBuildDir and PCExe are paths on the remote target PC, not paths on the controller machine.
Insights Trace Policy
- Keep
DoInsightsTrace=falsein every base config and runner fallback. - Treat ordinary requests such as
run APT,run PC APT, orrun replayas Trace disabled. - Enable Trace only when the current user request explicitly names Trace, Insights Trace, or
.utrace, for examplerun APT with Trace. - Do not infer Trace from a generic request to collect performance data or enable other capture options.
- For an explicit Trace run, copy the matching base config to a temporary CRLF
.cmd, setDoInsightsTrace=truein that temporary config, pass it as the entry script's first argument, and remove it after the run. Do not leave a base config with Trace enabled.
CSV Profiler Policy
- Keep
DoCSVProfiler=falsein every base config and runner fallback. Ordinary APT runs do not collect CSV data. - Enable CSVProfiler only when the current user request explicitly names CSVProfiler or asks for CSV capture, for example
跑APT,开CSVProfiler. - Do not infer CSVProfiler from a generic request to run APT, collect performance data, or enable GPUPerf.
- For an explicit CSVProfiler run, copy the matching base config to a temporary CRLF
.cmd, setDoCSVProfiler=truein that temporary config, pass it as the entry script's first argument, and remove it after the run. Do not leave a base config with CSVProfiler enabled. - When CSVProfiler is enabled, pass both
-AutomatedPerfTest.DoCSVProfilerand-csvGpuStats. The latter enables GPU stat columns in the CSV output. - When
DoCSVProfiler=false, omit both arguments.DoGPUPerfis independent and must not add-csvGpuStatsback.
GPU Perf Policy
- Keep
DoGPUPerf=falsein every base config and runner fallback. Ordinary APT runs should preserve normal dynamic-resolution and async-compute behavior. - Enable GPUPerf only when the current user request explicitly names GPUPerf or asks for GPU pass breakdown under GPUPerf conditions, for example
跑APT,开GPUPerf. - Do not infer GPUPerf from a generic request to collect GPU data. CSVProfiler with
-csvGpuStatsalready collects GPU CSV stats independently. - For an explicit GPUPerf run, copy the matching base config to a temporary CRLF
.cmd, setDoGPUPerf=truein that temporary config, pass it as the entry script's first argument, and remove it after the run. Do not leave a base config with GPUPerf enabled. - GPUPerf changes the measurement conditions by locking dynamic resolution and reducing async GPU work. Treat it as a diagnostic pass-timing mode rather than the default gameplay-performance mode.
Video Capture Policy
- Keep
DoVideoCapture=falsein every base config and runner fallback. - Treat ordinary APT runs as video capture disabled.
- Enable video capture only when the current user request explicitly asks for recording or video capture.
One-Run Extra Args
- Treat phrases such as
运行后缀,启动后缀, or额外启动参数as extra command-line arguments for the game process, not as an archive-name suffix. - For local PC and PS5, pass explicitly requested one-run arguments through
--extra-args "<args>"on the public entry script. Examples:run_replay_pc.bat --extra-args "-VTPoolReport"andrun_replay_ps5.bat --extra-args "-test1 -test2". - Append one-run arguments to the configured
ExtraArgs; do not replace the configured value and do not write the one-run value back to a base config. - Pass multiple switches as one quoted, space-separated string. Preserve the user's spelling and values instead of creating dedicated config fields for arbitrary switches.
- For remote PC, copy
apt.remote-pc.config.cmdto a temporary CRLF.cmd, append the requested arguments toExtraArgsin that temporary config, pass it as the controller entry's config argument, and remove it after the run.
Replay Readiness Policy
- Local PC runs enable
WaitForReplayReadyinapt.pc.config.cmd. - This requires a package built with the matching
AutomatedReplayPerfTestready-wait controller support. Older packages ignore the added command-line arguments and retain the old profiling start behavior. - The controller primes the configured number of replay frames, pauses only replay playback, and keeps the world ticking while map and World Partition streaming finish.
ReplayReadyCVaris the project-specific final gate. For ProjectPBZ usegq.Ind.LoadingwithReplayReadyValue=0.- Start profiling only after all ready conditions remain satisfied for
ReplayReadySettleSeconds. TreatReplayReadyTimeoutSecondsexpiry as a failed run rather than collecting invalid loading data. - Keep
ReplayReadyForceExitOnTimeout=truefor unattended local PC runs. The controller then force-exits with code1as soon as the ready wait times out, so a blocked graceful shutdown cannot leave the package running indefinitely. Set it tofalseonly when an engineer explicitly prefers the original graceful-exit path so profiling tools can attempt normal finalization. - Keep the independent lifecycle watchdog enabled for both the PSO warmup and measured local PC passes.
ReplayReadyWatchdogcovers readiness,ReplayProgressWatchdogcovers replay progress after profiling starts, andReplayExitWatchdogcovers teardown/exit. - The ready deadline is
ReplayReadyTimeoutSeconds + ReplayReadyWatchdogGraceSeconds; a ready timeout terminates the exact launcher process tree and reports exit code124. - During
REPLAY_ACTIVE, refresh progress only for a newFLocalFileNetworkReplayStreamer::ConditionallyLoadNextChunk. Index: Nmarker or teardown. Do not treat generic game, audio, rendering, or periodic PSO output as replay progress. If no progress is observed forReplayProgressTimeoutSeconds, sample process responsiveness and CPU, archive a structured diagnostic, terminate the process tree, and report exit code127. - After
TeardownTest,completed, requesting exit, or the PSO exit-flush marker, switch toEXITINGand allowReplayExitTimeoutSecondsfor PSO save/upload and shutdown. Report exit code128only when that exit grace expires. - Preserve
ReplayWatchdog.log,ReplayWatchdog.status,ReplayWatchdog.json, andReplayWatchdog.tail.logwith the normal APT logs. A watchdog failure must be reported as a watchdog failure and must skip PSO validation/stamp creation. - Disable an individual watchdog only for an explicitly interactive diagnostic run. Disabling
ReplayReadyWatchdogdoes not disable the controller's own ready timeout. - Keep project-specific CVar names in the Skill config; do not hard-code them into the engine controller.
Local PC PSO Policy
- Keep
PSOWarmupMode=Autoinapt.pc.config.cmd. One user invocation may run an unmeasured warmup replay followed by the measured replay. Autowarms once for each package/replay/map/GPU-driver/quality-override identity,Alwayswarms every time, andNeverskips warmup while retaining the capture-time PSO controls.- The warmup pass does not override runtime
r.PSOPrecaching, runs bundled ShaderPipelineCache work in Fast mode, and disables APT performance collectors. - Create the warmup stamp only after the game exits successfully and the log confirms that the bundled PSO queue completed. A failed or incomplete warmup must stop the measured pass.
- The measured pass reuses the same
userdir, pins runtime PSO precaching off, and callsr.ShaderPipelineCache.SetBatchMode Pausebefore profiling. Do not user.ShaderPipelineCache.Enabled=0. - Validate the measured log and fail the run if bundled PSO precompile resumes or advances during the profiling window.
- This is a two-process Skill-level approximation. It warms driver/user caches and prevents background bundled compilation during measurement, but it cannot eliminate a genuinely missing first-draw PSO. Exact same-process queue gating requires controller support.
- The measured pass requires a packaged build containing
Reallink.ProfileMatrix.AddCustomizedCVar. Do not silently fall back to a one-shotr.PSOPrecaching 0, because later profile refreshes can restore it.
Replay List
Use REPLAY_LIST for daily runs. The default is the shared replay root; directories are searched recursively for .replay files and run in sorted full-path order:
set "REPLAY_LIST=\\192.168.0.7\store\APT\ReplayFiles"REPLAY_LIST also accepts one replay file, multiple replay files separated by semicolons, or a .txt/.list manifest with one replay path per line. A directory that contains no .replay files is an error and must not launch the package.
Multiple replay files can be separated by semicolons:
set "REPLAY_LIST=\\server\a.replay;\\server\b.replay"Launch Args
ExecCmds and ExtraArgs are different:
set "ExecCmds=r.DynamicRes.OperationMode 0,stat fps"
set "ExtraArgs=-ResX=1920 -ResY=1080 -ForceRes -NoVSync"ExecCmds: UE console commands executed after game startup.ExtraArgs: extra command-line args passed to the game.
For PS5/local PC, ExtraArgs is passed through RunUAT's -Args="...". For remote PC, it is appended directly to the packaged exe command line.
Local PC Quality Overrides
Leave QualityCVars empty and run run_replay_pc.bat without arguments to use the current default quality. For a one-run override:
run_replay_pc.bat --quality "r.GraphicsQuality=3;gq.Ind.ResolutionQualityLevel=4"- Accept integer
gq.*,gq.Ind.*, andr.GraphicsQualityvalues separated by semicolons. - Convert each value to a max-priority
Reallink.ProfileMatrix.AddCustomizedCVarcommand, and apply the same values to warmup and measured passes. - Include normalized quality overrides in the PSO warmup key and write the requested values to
quality_cvars.txtin the report directory. - Treat
gq.Ind.UpscaleModeas a ProfileMatrix dimension only; it is not a complete replacement for the project's upscaler settings flow.
Remote PC Notes
Remote PC uses run_replay_remote.bat only. There is no separate remote.bat.
Remote PC required game/package fields live in apt.remote-pc.config.cmd; missing package or launch fields should fail fast. Remote trigger fields such as RemoteDeployDir, RemoteTaskName, and credential cache paths may use launcher defaults.
apt.remote-pc.config.cmd should be a full template, not a minimal snippet. Keep it aligned with apt.pc.config.cmd where the concepts overlap:
PCBuildDir,REPLAY_LIST,ExecCmds,ExtraArgsDoInsightsTrace,DoCSVProfiler,DoFPSChart,DoLLM,DoGPUPerf,DoGPUReshape,DoVideoCaptureArchiveRoot
Remote-only fields include RemotePC, RemoteUser, RemoteDeployDir, RemoteTaskName, PCExe, PCBuildName, WorkRoot, MapPath, and WindowMode.
Remote PC launches the packaged exe directly, so it does not use local-PC RunUAT fields such as Configuration, MaxDuration, or Iterations.
The remote game is started through an interactive scheduled task so D3D/DXGI can create a real window in the logged-on desktop session. Do not launch the packaged game directly inside Invoke-Command; that can fail with DXGI_ERROR_NOT_CURRENTLY_AVAILABLE.
Local PC Direct Notes
Local PC direct mode uses run_replay_pc_direct.bat via run_replay_pc.bat. It launches PCExe directly and archives %WorkRoot%\UserDir\Saved\Profiling plus logs, similar to remote target mode.
Local PC direct config fields in apt.pc.config.cmd include PCExe, PCBuildName, WorkRoot, MapPath, WindowMode, PCSourceProfiling, QualityCVars, and the PSOWarmup*/PSOCaptureExecCmds settings. Configuration, MaxDuration, and Iterations are legacy RunUAT/Gauntlet fields and are not used by direct mode.
Local PC direct mode starts from /Game/Maps/B02/PBZ_Xigu_WP by default. Keep this value in MapPath so another startup map can be selected through config without editing the runner.
Keep run_replay_pc_gauntlet.bat only as a fallback for reproducing old RunUAT/Gauntlet behavior.
Docs
Short user-facing guides live under docs/:
docs/ps5.mddocs/local-pc.mddocs/remote-pc.md
Notes
- Keep
.cmdfiles in CRLF line endings. LF-only config files can be parsed incorrectly bycmd.exe call. - Use UNC paths as-is for replay/build/report locations.
RunModeis explicit inapt.ps5.config.cmdandapt.pc.config.cmd, so directrun_replay_batch.bat <config>calls behave correctly too.- Avoid editing runner
.batfiles for daily runs; edit the matching config instead.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

