원클릭으로
tester
A comprehensive testing skill that covers UI/UX consistency, codebase QA, security auditing, and verification of settings and backups.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
A comprehensive testing skill that covers UI/UX consistency, codebase QA, security auditing, and verification of settings and backups.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Handles the end-to-end release process, ensuring local builds are tested and verified by the user before pushing tags to trigger CI/CD releases. Use this whenever preparing for a public version update.
Dedicated to crafting premium, tactile, and highly responsive user interfaces. Focuses on unified layout systems (Grid, List), micro-interactions, gesture-driven actions, dynamic Material You theming, and Inter + Google Sans Text typography to ensure the app feels "alive" and modern. Use PROACTIVELY when implementing screens or user-facing interactions.
Specialist in the Financial Management module, handling transaction tracking, SMS automated logging, categories, and financial reporting.
Specialist in the Note-Taking module, handling Markdown/Delta editors, tag matching, note layouts (Masonry/List), and note lifecycle operations.
Specialist in the Health Tracker (Period Tracker) module, handling symptom logging, cycle predictions, intensity tracking, and privacy-first health data.
Automatically extracts learnings from recent session changes to create or update agent skills robustly. Use this when instructed to save learnings, update skills based on recent fixes, or ensure the agent remembers how to handle similar tasks in the future.
| name | Tester |
| description | A comprehensive testing skill that covers UI/UX consistency, codebase QA, security auditing, and verification of settings and backups. |
Use this skill to execute QA verifications, unit/widget tests, security audits, and layout validations.
surfaceContainerLow for cards, surfaceContainerHigh for dialogs), and shape specifications.OpenContainer transitions) run smoothly and buttons provide tactile feedback.Flexible/Expanded) to prevent RenderFlex overflow issues.emulator-5554) to verify layouts:
adb exec-out screencap -p > "screenshots/<filename>.png"
flutter test
setUp:
TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
.setMockMethodCallHandler(
const MethodChannel('plugins.flutter.io/path_provider'),
(MethodCall methodCall) async => '.',
);
context.mounted or state mounted before executing context operations.SettingsProvider loads SharedPreferences asynchronously in its constructor (loadSettings()). In unit tests where a new instance is instantiated (newSettings = SettingsProvider()), insert await Future.delayed(const Duration(milliseconds: 100)) before invoking methods like restoreFromBackupMap to prevent loadSettings() from finishing later and overwriting mock test state.AppLocalizations.of(context) (e.g. SettingsScreen) must include localizationsDelegates: AppLocalizations.localizationsDelegates and supportedLocales: AppLocalizations.supportedLocales inside MaterialApp in the test widget tree to prevent null localization exceptions.BackupService.generateBackupJson uses SettingsProvider.toBackupMap() to export settings. Never hardcode individual SharedPreferences keys, which go stale as new options are added.SettingsProvider.restoreFromBackupMap calls setter methods (e.g., await setShowFinancialManager(value)) instead of assigning directly to private fields. Direct assignments skip saving to SharedPreferences, causing settings to revert on app restart.onUpgrade database migrations (especially schema/junction table changes) preserve existing user data.SharePlus.instance.share), or gallery permission dialogs (Gal.requestAccess) implement AppLockScreen.ignoreNextResumeLock() so that returning from native OS dialogs or sheet interfaces does not trigger the app lock screen and unmount the active widget state.SharedPreferences. Migrate legacy backups to FlutterSecureStorage on launch and remove them from plaintext storage immediately to prevent leakage.FlutterLocalNotificationsPlugin looks for initialization icons in the app's drawable folder (e.g. R.drawable.launcher_icon). If the resource is only defined in mipmap directories, it will fail on startup with a PlatformException(invalid_icon). Place a copy of the target icon inside the drawable folder to ensure successful native initialization.android.hardware.telephony, camera, and microphone features in AndroidManifest.xml have android:required="false" and <supports-screens> is configured. Otherwise, Wi-Fi tablets (e.g. Samsung Galaxy Tab S10+) will be automatically excluded from Play Store distribution.initialDelay, and wrap main()'s init Future.wait in a .timeout() so the first frame can never hang.adb logcat -s flutter (engine + Dart prints), adb shell dumpsys window | grep mCurrentFocus, adb shell pidof <package>. Two "Impeller" engine lines = a background FlutterEngine (WorkManager) is also running.MainActivity.configureFlutterEngine do NOT exist in WorkManager isolates — MissingPluginException from there is expected; code must catch it and prefs-only paths must still complete.tooltip swallowed the long-press that opened the template sheet — only caught by actually long-pressing on the emulator. Screenshot each new surface and LOOK at it.createTestDatabase pins the CURRENT schema version — bump it together with _initDB's version: and add the onUpgrade branch, or tests diverge from production schema.prefs.setInt stores a Long — Kotlin must read getLong(...), not getInt(...), or widget code silently falls back to defaults.