kwensiu/dpis/dpis-runtime-route-diagnose
Claude Code and agent skill by kwensiu/dpis
- community
Checking that the SKILL.md file is still in the repository.
Project-local DPIS runtime hook diagnosis workflow. Use for LSPosed/Xposed logs, app flicker or relaunch, missing DPI/viewport/font scaling, font hook chains, system_server, ActivityThread, Resources, Display, WindowMetrics, WebView, TextView, Paint, Flutter, HyperOS, or shared runtime route changes.
Install
npx vskill@latest install kwensiu/dpis/dpis-runtime-route-diagnoseSKILL.md
DPIS Runtime Route Diagnose
This is a project-local skill bundle. It is intentionally stored in the repository instead of a global Codex skill, so new conversations can discover DPIS runtime rules through AGENTS.md without modifying user-wide skill files.
Trigger
Use this skill before diagnosing or changing behavior involving:
- LSPosed / Xposed runtime hooks
- app flicker, flash, relaunch, or configuration churn
- missing DPI, viewport, smallest-width, or font scaling
- font hook chains, route domains, or template recommendations
system_server, ActivityThread, Resources, Display, WindowMetrics, WebView,
TextView, Paint, Flutter, or HyperOS font routes
- shared runtime code under
app/src/main/java/com/dpis/module/
Do Not Use
Do not use this skill for:
- pure UI layout work
- release-note wording
- ordinary Java refactors that do not affect runtime hook behavior
- CI failures unless the failure changes runtime route behavior
For Java / CI API compatibility questions, read docs/java-toolchain-policy.md instead.
Required Reads
Read only the documents needed for the touched route:
- Always read
AGENTS.md. - For font routes, read
docs/font-routing.md. - For Modern routes, read
docs/modern-runtime-resync.md. - For Legacy routes or shared code that may affect Legacy, read
docs/legacy-runtime-resync.md.
- For log collection, read
docs/lsposed-diagnostics.md. - For Java / CI API compatibility questions, read
docs/java-toolchain-policy.md.
Workflow
- Classify the layer that owns the suspected behavior.
- Gather the smallest evidence set that can prove or disprove that layer.
- Probe route execution one boundary at a time.
- Choose the narrowest fix shape that expresses the route semantics.
- Add or update focused tests for policy behavior.
- Update the relevant living route document.
Semantic Frame
Before editing, name the owning layer:
- UI preference or form draft
- recommendation template
- planner domain
- app-process route
system_serverroute- lifecycle entry
- mutation field
- config source
- LSPosed scope or module loading
If two layers appear to write the same state, resolve the ownership boundary before adding another branch.
Probe Order
Probe one boundary at a time:
- Module entry reached.
- Guard did not return early.
- Dependency or class lookup succeeded.
- Hook installed.
- Callback fired.
- Target package resolved.
- Config source returned the expected app config.
- Field policy allowed the mutation.
- Mutation changed the runtime object.
- App-visible behavior changed.
hook ready proves only that installation ran. Require a callback, mutation, counter, or visible result before calling a route effective.
Diagnostic Evidence Rules
When reviewing an exported diagnostic package:
- Separate the diagnostic session window from the Perfetto trace window. Do
not generalize a short trace to the whole session.
- Treat
measuredCalls=0,calls=0with non-zeroapplied/skipped, and
zero latency percentiles as missing or inconsistent instrumentation, not as proof of zero overhead.
- Treat
stable_metrics,stable_configuration, and
no_viewport_delta_after_resolution as policy skips. They are not failures unless the selected config still required a change.
- Treat an empty diagnostic marker as incomplete evidence. Cross-check raw
lsposed-log.txt and runtime-hotpath events before declaring a route absent.
- A
module-effects.tsvrowselected but no … route effect observedis
valid only when the session window also has no matching structured hot-path event. WeChat DPI mutations are route=wechat_dpi runtime events, not ProcessPerformance aggregate route names. Font aggregates plus a WeChat mutation_applied event must not be read as “WeChat DPI did nothing”.
- Prefer the last
stage=aggregatesnapshot per process. Earlier snapshots
are cumulative prefixes, not a second independent session.
- Font rewrite
applieddetails should includein=/out=. Missing pairs on
textview_current_px_fallback are an evidence-format gap, not proof the route skipped. Timeline applied counts can be lower than the aggregate because kept is aggregate-only and transport may sample begin/applied/end.
- Do not treat
|incoming - earlier out| < epsilonas double-scale. A
second-order candidate is an incoming px that equals a first-scale output. Independent later sizes, including another object's unscaled 28.2, must still rewrite. Same-object already-scaled Paint must not.
- A hot-reload warning is recoverable only if later module-entry and route
evidence exists after the restart/reload path. Otherwise report it as an unresolved framework or loading failure.
- For performance claims, check
thread_stateandsched_slicefor the
target process and main thread. Distinguish Running, Runnable, and sleeping or blocked states before naming a bottleneck.
- For exported ZIP or extracted diagnostic directories, run
python tools/analyze_diagnostic_pack.py <zip-or-dir> before narrating font/DPI effectiveness. Use --self-check to verify the analyzer itself.
Flicker And Relaunch Checks
For flicker or relaunch reports:
- Check whether Activity relaunch is tied to configuration changes.
- Look for
CONFIG_FONT_SCALE, Activity relaunch, and config dispatch logs. - Separate viewport changes from
FONT_SCALEchanges. - For system-mode font scaling, verify
FONT_SCALEwrites are limited to the
launch entry.
- Treat app-specific repros as route evidence, not as immediate package-list
requirements.
Fix Preference
Prefer fixes in this order:
- Clarify ownership and naming.
- Express the behavior as a planner, scheduler, entry, or field policy.
- Add focused unit tests for the policy.
- Update route documents.
- Add app-specific package lists only when policy cannot represent the
behavior.
- Add independent hook routes only when existing route domains cannot safely
model the behavior.
Test Expectations
For route policy changes, add or update focused tests that would fail if the semantic rule regressed. Source smoke tests are acceptable for wiring checks, but they should not be the only coverage for scheduler or planner behavior.
Output
When finishing a runtime route task, report:
- the semantic rule changed or confirmed
- the affected route, entry, and field
- evidence used
- tests or runtime checks run
- route documents updated
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingdocs/agents/skills/dpis-runtime-route-diagnose/SKILL.md
Popularity
- Repository stars
- 72
- Repository forks
- 3
- 7-day trend score
- 21
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/kwensiu/dpis/dpis-runtime-route-diagnose)