Files
tsl-devkit/skills/thirdparty/ui-ux-pro-max/data/app-interface.csv
T
csh 3d83740f88 Squashed 'docs/standards/playbook/' changes from c3f8137..25d895d
25d895d 🐛 fix(gitea_workflow): clean up temp repos after job steps
2bc3b11 🐛 fix(gitea_workflow): clean up temporary repo dirs in workflows
98c3f30 📝 docs(agent_rules): allow plan execution on current branch
16c7230 📝 docs(prompts): define custom verify layering
8efc4dd 🐛 fix(skills): quote commit-message description
bc8498f 🐛 fix(ci): install tomli for gitea tests
55cda3b 🐛 fix(tests): report missing toml parser clearly
c0729c7 🐛 fix(playbook): import Optional for cli compatibility
63e24bf 📦 deps(skills): sync thirdparty skills
d2f9356 🐛 fix(ci): isolate gitea workflow repos
588b81d 🐛 fix(ci): inline gitea workflow bootstrap
e0b1c3a ♻️ refactor(skills): standardize first-party skill contracts
2c5050d ♻️ refactor(skills): rename repo skills source dir
f049dfb 📦 deps(skills): drop duplicate first-party superpowers skills
234b335  feat(workflow): add superpowers planning and execution state tracking
c1702a6 📝 docs(markdown): format tracked markdown and drop stale templates
2325409 📝 docs(markdown): clarify optional markdownlint usage
214c44e 🔧 chore(markdown): add markdownlint baseline and lint fixes
a22b324 📝 docs(templates): add execution and memory-bank prompt templates
223a797 📝 docs(templates): update README for Claude Code and current features
4ac8672 📝 docs: simplify README + platform-agnostic tools + auto-create local rules
2431c9d 📝 docs: add claude_md config and use cross-platform paths
d64b248 📝 docs: fix README.md inaccuracies and add Claude Code info
c8d6bf2 🐛 fix(playbook): use relative paths in CLAUDE.md when not at project root
6518f0f  feat(playbook): auto-create CLAUDE.md with path discovery
6ec9a45  feat(skills): add skill_link symlink support + platform-agnostic prompt
9f8b6b5 📝 docs: update README and config example for Claude Code support
79cff6c 📝 docs(skills): add Claude Code platform support
452c6f5  feat(playbook): auto-inject AGENTS.md into CLAUDE.md
e1dbf3c 🐛 fix(skills): remove dual-path from commit-message skill
f3a7259 🔧 chore(ci): use prepare_repo.sh in both workflows
da08212 🔧 chore(ci): extract prepare_repo.sh and clean up workflows
7ade85e 🗑️ remove(tsl): drop syntax_book/, data/ source and build script
f94dba0 ♻️ refactor(skills): update playbook.py and tests for thirdparty/ layout
b3df412 ♻️ refactor(skills): separate thirdparty skills into thirdparty/ subdirectory
64950e7 📦 deps(skills): sync thirdparty skills
a2e3cb0  feat(playbook): add no_backup deploy controls
8609d59 🐛 fix(docs): repair reference catalog source links
956da11 🐛 fix(playbook): publish hidden ci test fixes
3f67754 📦 deps(skills): sync thirdparty skills
08ca87b 📦 deps(skills): add karpathy thirdparty sync
96b705b 📝 docs(tsl): rebuild canonical syntax and routing manual
3ed5052 📦 deps(skills): sync thirdparty skills
60108dd 📦 deps(skills): sync thirdparty skills
da85d4e 🐛 fix(thirdparty): prune nested project snapshots
a2a697e 📦 deps(skills): sync thirdparty skills
9df610a 🐛 fix(thirdparty): exclude duplicated superpowers skills
33dd5bb 🐛 fix(thirdparty): preserve optional manifest fields
91b0ea7 🐛 fix(thirdparty): preserve manifest during snapshot update
2e26f98 🔧 chore(thirdparty): generalize skills sync pipeline
5b9c1e3 📦 deps(skills): sync superpowers
2f2d34a 📝 docs(readme): normalize subtree command spacing
62db7db 🐛 fix(ci): serialize superpowers update and sync
3463223 🐛 fix(ci): use literal superpowers sync paths
48f6de8 📦 deps(skills): sync superpowers
4b23529 🔧 chore(ci): merge superpowers update and sync workflow
a56d75b 📦 deps(skills): sync superpowers
84bcefa 🔧 chore(ci): use ci[bot] commit author name
00a07e5 📦 deps(skills): sync superpowers
7b84daf 🐛 fix(templates): enforce main loop progress tracking
51373d7 🔧 chore(ci): automate superpowers sync workflow
eaaa39c 🐛 fix(ci): prevent stale superpowers sync from restoring skills block
79755c6 📦 deps(skills): sync superpowers
836d878 📦 deps(skills): sync superpowers
8216c9f 📦 deps(skills): sync superpowers
9439505 🐛 fix(playbook): address reported repo issues

git-subtree-dir: docs/standards/playbook
git-subtree-split: 25d895d8b3f56624ccfe99ad7289e9eb49e0f316
2026-05-24 13:04:14 +08:00

9.5 KiB

1NoCategoryIssueKeywordsPlatformDescriptionDoDon'tCode Example GoodCode Example BadSeverity
21AccessibilityIcon Button Labelsicon button accessibilityLabeliOS/Android/React NativeIcon-only buttons must expose an accessible labelSet accessibilityLabel or label prop on icon buttonsIcon buttons without accessible names<Pressable accessibilityLabel="Close"><XIcon /></Pressable><Pressable><XIcon /></Pressable>Critical
32AccessibilityForm Control Labelsform input label accessibilityLabeliOS/Android/React NativeAll inputs must have a visible label and an accessibility labelPair Text label with input and set accessibilityLabelInputs with placeholder only<View><Text>Email</Text><TextInput accessibilityLabel="Email address" /></View><TextInput placeholder="Email" /></View>Critical
43AccessibilityRole & TraitsaccessibilityRole accessibilityTraitsiOS/Android/React NativeInteractive elements must expose correct roles/traitsUse accessibilityRole/button/link/checkbox etc.Rely on generic views with no roles<Pressable accessibilityRole="button">Submit</Pressable><View onTouchStart={submit}>Submit</View>High
54AccessibilityDynamic UpdatesaccessibilityLiveRegion announceiOS/Android/React NativeAsync status updates should be announced to screen readersUse accessibilityLiveRegion or announceForAccessibilityUpdate text silently with no announcement<Text accessibilityLiveRegion="polite">{status}</Text><Text>{status}</Text>Medium
65AccessibilityDecorative Iconsaccessible={false} importantForAccessibilityiOS/Android/React NativeDecorative icons should be hidden from screen readersMark decorative icons as not accessibleHave screen reader read every icon<Icon accessible={false} importantForAccessibility="no" /><Icon />Medium
76TouchTouch Target Sizetouch 44x44 hitSlopiOS/Android/React NativePrimary touch targets must be at least 44x44ptIncrease hitSlop or padding to meet minimumSmall icons with tiny touch area<Pressable hitSlop={10}><Icon /></Pressable><Pressable><Icon style={{ width: 16, height: 16 }} /></Pressable>Critical
87TouchTouch Spacingtouch spacing gap 8pxiOS/Android/React NativeAdjacent touch targets need enough spacingKeep at least 8dp spacing between touchablesCluster many buttons with no gap<View style={{ gap: 8 }}><Button ... /><Button ... /></View><View><Button ... /><Button ... /></View>Medium
98TouchGesture Conflictsscroll swipe back gestureiOS/Android/React NativeCustom gestures must not break system scroll/backReserve horizontal swipes for carouselsFull-screen custom swipe conflicting with backHorizontalPager inside vertical ScrollViewPanResponder on full screen blocking backHigh
109NavigationBack Behaviorback handler navigation stackiOS/Android/React NativeBack navigation should be predictable and preserve stateUse navigation.goBack and keep screen stateReset stack or exit app unexpectedlyonPress={() => navigation.goBack()}BackHandler.exitApp() on first pressCritical
1110NavigationBottom Tabstab bar max itemsiOS/Android/React NativeBottom tab bar should have at most 5 primary itemsUse 3–5 tabs and move extras to More/SettingsOverloaded tab bar with many iconsHome/Explore/Profile/SettingsHome/Explore/Shop/Cart/Profile/Settings/MoreMedium
1211NavigationModal Escapemodal dismiss close affordanceiOS/Android/React NativeModals/sheets must have clear close actionsProvide close button and swipe-down where platform expectsTrapping users in modal with no obvious exit<Modal><Button title="Close" onPress={onClose} /></Modal><Modal><View>{children}</View></Modal>High
1312StatePreserve Screen Statenavigation preserve stateiOS/Android/React NativeReturning to a screen should restore its scroll and form stateKeep components mounted or persist stateReset list scroll and form inputs on every visit<Tab.Navigator screenOptions={{ unmountOnBlur: false }}><Tab.Screen options={{ unmountOnBlur: true }} />Medium
1413FeedbackLoading Indicatorsactivity indicator skeletoniOS/Android/React NativeShow visible feedback during network operationsUse ActivityIndicator or skeleton for >300ms operationsLeave button and screen frozen{loading ? <ActivityIndicator /> : <Button title="Save" />}<Button title="Save" onPress={submit} /> // no loadingHigh
1514FeedbackSuccess Feedbacktoast checkmark banneriOS/Android/React NativeConfirm successful actions with brief feedbackShow toast/checkmark or bannerComplete actions silently with no confirmationshowToast('Saved successfully')// silently update state onlyMedium
1615FeedbackError Feedbackinline error banneriOS/Android/React NativeShow clear error messages near the probleminput-level error + summary bannerOnly change border color with no explanation<TextInput ... /><Text style={{color:'red'}}>{error}</Text><TextInput style={{borderColor:'red'}} />High
1716FormsInline ValidationonBlur validationiOS/Android/React NativeValidate inputs on blur or submit with clear messagingValidate onBlur and onSubmitValidate on every keystroke causing jankonBlur={() => validateEmail(value)}onChangeText={v => validateEmail(v)} // every charMedium
1817FormsKeyboard TypekeyboardType returnKeyTypeiOS/Android/React NativeUse appropriate keyboardType and returnKeyTypeMatch email/tel/number/search typesUse default keyboard for all inputs<TextInput keyboardType="email-address" /><TextInput keyboardType="default" />Medium
1918FormsAuto Focus & NextautoFocus blurOnSubmit onSubmitEditingiOS/Android/React NativeGuide users through form fields with Next/Done flowsUse onSubmitEditing to focus next inputForce users to tap each field manuallyonSubmitEditing={() => nextRef.current?.focus()}// no onSubmitEditing, manual tap onlyLow
2019FormsPassword VisibilitysecureTextEntry toggleiOS/Android/React NativeAllow toggling password visibility securelyProvide Show/Hide icon toggling secureTextEntryForce users to type blind with no option<TextInput secureTextEntry={secure} /><Icon onPress={toggle} /><TextInput secureTextEntry /> // no toggleMedium
2120PerformanceVirtualize Long ListsFlatList SectionList virtualizationiOS/Android/React NativeUse FlatList/SectionList for lists over ~50 itemsUse keyExtractor and initialNumToRender appropriatelyRender hundreds of items with ScrollView<FlatList data={items} renderItem={...} /><ScrollView>{items.map(renderItem)}</ScrollView>High
2221PerformanceImage Size & CacheImage resize cacheiOS/Android/React NativeUse correctly sized and cached imagesUse Image component with proper resizeMode and cachingLoad full-resolution images everywhere<Image source={{uri}} resizeMode="cover" /><Image source={require('4k.png')} /> // small avatarMedium
2322PerformanceDebounce High-Freq Eventsdebounce scroll searchiOS/Android/React NativeDebounce scroll/search callbacks to avoid jankWrap handlers with debounce/throttleRun heavy logic on every eventonScroll={debouncedHandleScroll}onScroll={handleScrollHeavy}Medium
2423AnimationDuration & Easinganimation duration easingiOS/Android/React NativeMicro-interactions should be 150–300ms with native-like easingUse ease-out for enter/ease-in for exitUse long or linear animations for core UIAnimated.timing(..., { duration: 200, easing: Easing.out(Easing.quad) })Animated.timing(..., { duration: 800, easing: Easing.linear })Medium
2524AnimationRespect Reduced Motionreduced motion accessibilityiOS/Android/React NativeRespect OS reduced-motion accessibility settingCheck reduceMotionEnabled and simplify animationsIgnore user motion preferencesif (reduceMotionEnabled) skipAnimation()Always run complex parallax animationsCritical
2625AnimationLimited Continuous Motionloop animation loaderiOS/Android/React NativeReserve infinite animations for loaders and live dataUse looping only where necessaryKeep decorative elements looping foreverAnimated.loop(loaderAnim) for ActivityIndicatorAnimated.loop(bounceAnim) on background iconsMedium
2726TypographyBase Font SizefontScale dynamic typeiOS/Android/React NativeBody text must be readable and support Dynamic TypeUse platform fontScale and at least 14–16pt baseRender critical text below 12pt<Text style={{ fontSize: 16 }}>Body</Text><Text style={{ fontSize: 10 }}>Body</Text>High
2827TypographyDynamic Type SupportallowFontScaling adjustsFontSizeToFitiOS/Android/React NativeSupport system text scaling without breaking layoutSet allowFontScaling and test large textDisable scaling on all text globally<Text allowFontScaling>{label}</Text><Text allowFontScaling={false}>{label}</Text>High
2928Safe AreasSafe Area Insetssafe area insets notch gestureiOS/Android/React NativeContent must not overlap notches/gesture barsWrap screens in SafeAreaView or apply insetsPlace tappable content under system bars<SafeAreaView style={{ flex: 1 }}><Screen /></SafeAreaView><View style={{ flex: 1 }}><Screen /></View>High
3029ThemingLight/Dark Contrastdark mode contrast tokensiOS/Android/React NativeEnsure sufficient contrast in both light and dark themesUse semantic tokens and test both themesReuse light-theme grays directly in dark modecolors.textPrimaryDark = '#F9FAFB'colors.textPrimaryDark = '#9CA3AF' on '#111827'High
3130Anti-PatternNo Gesture-Only Actionsgesture only hidden controlsiOS/Android/React NativeDon't rely solely on hidden gestures for core actionsProvide visible buttons in addition to gesturesRely on swipe/shake only with no UI affordanceSwipe to delete + visible Delete buttonOnly shake device to undo with no UICritical