本文へ移動
cccskills
無料GitHub で公開

qa-find-bugs-mobile

Hunt bugs in the running Beancount mobile app using local Expo MCP on the iPhone 17e simulator, sign in with QA_EMAIL and QA_PASSWORD, reproduce failures, trace root causes, and deduplicate findings. Use for native mobile QA. Skip browser-only dashboard QA, ordinary code review, and store releases.

日本語の概要は準備中です。原文の説明を表示しています。

bex-co/beancount-ioスター 315(GitHub 315 + cccskills 0)

実行スコア 未検証

インストール方法を見る

含まれるファイル(2)

  • SKILL.md8.8 KB
  • evals/evals.json2.2 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Mobile QA bug hunt

Read the shared QA contract first, then mobile/AGENTS.md, especially its production-write and simulator instructions. Writes from the signed-in dev build to the QA account's designated disposable ledger fall under the contract's standing write authorization (snapshot, prefix, record, restore byte-for-byte). Any other production write still needs the user's go-ahead, as mobile/AGENTS.md says. Use Expo MCP on iPhone 17e unless the user names another device. A mobile viewport in Playwright is not a substitute for exercising the native app.

Arguments: optional server URL, journey names, device name, wN, SHIP=1, DRY_RUN=1. Default to the app's selected server and report mode; inspect the selected server before signing in or writing anything.

Boot the exact device and client

  1. Record xcrun simctl list devices available -j, identify the iPhone 17e UDID, and record its runtime, appearance, and initial boot state. Do not use the first booted device as a proxy for the requested one.

  2. Work inside mobile/. Install existing deps with yarn install --frozen-lockfile if needed. Reuse a matching Metro server or start plain npx expo start --localhost. Do not set EXPO_UNSTABLE_MCP_SERVER=1; the local binary needs no remote MCP tunnel.

  3. Use the native development build io.beancount.ios. Check it is installed on the target UDID and launch it with xcrun simctl launch <udid> io.beancount.ios. If necessary, build for that device with SENTRY_DISABLE_AUTO_UPLOAD=true npx expo run:ios --device <udid>. Do not count Expo Go or an old native binary's missing module/permission as a product regression. Reusing a compatible build does not authorize copying credentials or another simulator's data container.

  4. Start the local MCP server:

    node node_modules/expo-mcp/bin/expo-mcp.mjs \
      --dev-server-url http://localhost:8081 --root /absolute/path/to/mobile
    

    Connect through an MCP client or JSON-RPC stdio: initialize, notifications/initialized, tools/list, then tools/call. If the tools are absent from the agent's tool list, use this installed local server; no new dependency or hosted Expo authentication is needed. Discover its actual schemas rather than inventing a device argument.

  5. The currently pinned Expo MCP chooses the sole booted iOS simulator and rejects multiple devices. Record other booted simulators, temporarily shut them down when appropriate for this QA session, and restore them afterward. If another session needs one running, report the conflict instead of silently tapping it. Verify the screenshot is from iPhone 17e before the first action.

Drive and authenticate

  • Use automation_tap with {projectRoot, platform:"ios", testID} or {x,y}, automation_find_view, automation_take_screenshot, and collect_app_logs. Keep screenshots under the gitignored repo-root .tmp/qa-<date>/; decode image content to a file, not a base64 dump in the transcript. Bound individual log captures to 10s.
  • Prefer testID and inspected view bounds. Taps use logical points. Expo MCP resizes screenshots, so do not blindly divide its image coordinates by 3. Determine the native dimensions and capture scale, or use view bounds.
  • Load QA_EMAIL / QA_PASSWORD from the repo-root ./.env, unless the user supplies another path. Run the shared helper from the repo root with no file flag; pass --env-file <path> only when native QA needs a different account than the shared one. Do not reuse another package's account implicitly — when the accounts differ, name the file explicitly. Keep the values inside the credential helper. Tap the native Sign In action, complete its browser OAuth/PKCE authorization, and verify that control returns to the app and survives a relaunch. Never inject a fabricated token/session into reactive variables to bypass the flow.
  • The pinned MCP has no typing or scrolling tool. For ordinary text, the local Simulator hardware keyboard can be driven through osascript when macOS Accessibility access is available. Credential typing must stay in a helper and target a verified field. Do not assume an automation text tool exists.
  • Reach otherwise inaccessible screens with inspected Expo Router deep links: xcrun simctl openurl <udid> 'beancount:///(app)/<route>?param=value'. Record that this proves the destination, not the navigation/scroll journey. Do not use malformed or fabricated ledger/transaction IDs as a valid control.
  • A development warning banner is not shipped UI. Inspect its underlying log, dismiss it if needed, and recheck. Keep genuine runtime errors distinct from instrumentation limits. Simulator haptics, camera hardware and Android remain unverified unless separately exercised.

Sweep whole journeys

JourneyObservable promise
auth/serverServer validation and connection test, sign-in/cancel/retry, browser callback, relaunch persistence, and explicit expired-session recovery work. Restore any local server setting changed during the run.
discoveryOwned/starred/discover lists, search and ledger selection land on the chosen ledger; switching clears prior ledger data. Star/unstar only when authorized and restore the initial state.
homePeriod and account controls change summaries; recent activity opens the correct transaction; empty/loading states do not flash misleading values.
transactionsSearch/date/type/payee/account filters compose, clear restores results, paging/refresh does not duplicate rows, detail/postings agree.
entryOn authorized disposable data: add/edit balanced postings, date, payee and narration; cancel preserves data; saving persists once after relaunch. Check keyboard and validation on iPhone 17e.
accountsAccount hierarchy/search, picker, detail entries and balance charts agree; account creation requires authorized synthetic data.
reports/budgetDate/interval changes affect displayed reports, chart selections and budget progress. Multi-currency and no-budget states remain honest. Budget writes require the scoped permission.
merchantsGrouped payees, exact-payee drill-down, search and totals match their transaction sets; shared chart tooltips clear on period changes.
filesBrowse text files, branches, commits and diffs; navigate back; edit/save/cancel only disposable files when authorized.
settingsTheme, locale, local server settings and supported screens work; restore initial preferences. Inspect billing, referral, notifications and account deletion without submitting external or destructive actions.
accessibilityPrimary controls have meaningful labels; safe areas, keyboard, dialogs and tab navigation remain usable in light/dark at this device size.

Wait for each journey to settle, capture evidence and relevant logs, and relaunch before retaining a failure. Do not flip config.features.agentChat; its disabled state is deliberate. Investigate source under mobile/app/ (thin routes), mobile/src/screens/ (behavior), src/common/ (Apollo, OAuth, vars, selectors), and src/components/. Generated GraphQL code is evidence, not an edit target. Trace server failures under the relevant backend package's guidance.

Apply the shared triage, root-cause, dedupe and handoff contract. State which native journeys actually ran on iPhone 17e, which were only deep-linked, and which need credentials, write authorization, physical hardware, or another OS.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

Prepare supported accrual and reversal drafts for a period from an explicitly stated schedule — basis, service interval, day-count, recognized-to-date, already-booked, required adjustment — posted only through the suite's propose/confirm/check flow with stable schedule identity. Skip recording one-off entries the user describes (beancount-add), explaining how a balance moved (beancount-roll-forward), tax or depreciation advice, automatic reversals, and ledgers hosted on Beancount.io.

日本語の概要は準備中です。原文の説明を表示しています。

bex-co/beancount-io3152026年10月26日 更新

Record one-off entries the user describes in a local Beancount ledger through bea — a purchase, bill, paycheck, or transfer between their own accounts (including splits and pasted receipt text), opening or closing an account, a price, or a note. Propose the exact entries from existing accounts, check whether one is already recorded, and write only after confirmation with a passing check; it never changes existing entries. Skip bank or card export files (beancount-import), statements (beancount-reconcile), finance-app migrations, options trades (beancount-options), investment trades, dividends, splits, and vests (beancount-trade), month-end close, edits to existing entries, and ledgers hosted on Beancount.io.

日本語の概要は準備中です。原文の説明を表示しています。

bex-co/beancount-io3152026年10月26日 更新

Answer explicit requests for facts from a local Beancount ledger using shown, reproducible bea queries and reports for spending, trends, net worth, holdings, subscriptions and anomalies. Do not select this skill merely to gather preliminary inputs for buy/sell decisions or tax recommendations, even if ledger facts could help. Strictly read-only; figures come from executed queries. Skip ledgers hosted on Beancount.io, recording transactions (beancount-add), reconciliation, migration, ledger edits, option pricing or greeks, investment or tax advice, and general Beancount, BQL, or `bea` documentation questions (including what `bea ask` does).

日本語の概要は準備中です。原文の説明を表示しています。

bex-co/beancount-io3152026年10月26日 更新

Close an accounting period in a local Beancount ledger by reconciling each active account through beancount-reconcile, checking assertions and recurring gaps, reviewing flags, then proposing a commit with the period reports. Use for month-end close or wrapping up the books. Surface incomplete work and require a passing check before a confirmed commit; never push. Skip closing a single account (a `close` directive; beancount-add) and ledgers hosted on Beancount.io.

日本語の概要は準備中です。原文の説明を表示しています。

bex-co/beancount-io3152026年10月26日 更新

Record bank/card transactions in an existing local Beancount ledger from CSV, OFX/QFX, QIF or PDF statements, including PDF-only banks with no CSV export. For a PDF ledger import, read this SKILL.md before the PDF helper's guide to establish account, deduplication and confirmation rules, then use the helper for extraction. Import broker activity CSVs or holdings/cost-basis exports as lot-carrying entries or opening lots. Read this guide before beancount-trade for these files; skip described trades (beancount-trade). Normalize signs, suggest categories from existing accounts, review duplicates and confirm before bea writes; PDF statements must tie out and end with a balance assertion. Skip standalone PDF extraction/OCR, summarization or editing without a ledger import; account-versus-statement comparisons (beancount-reconcile), full finance-app migrations, reusable importer authoring, individual options trades, single manual entries (beancount-add), ledger `option` settings, and ledgers hosted on Beancount.io.

日本語の概要は準備中です。原文の説明を表示しています。

bex-co/beancount-io3152026年10月26日 更新

Write or repair a reusable Beangulp importer from a sample bank export for a local ledger, with reviewed golden files and a passing test harness. Use when a source needs a tested Python importer or its format changed, e.g. "write a beangulp importer for my bank's CSV" or "my importer broke after the bank renamed its columns". Wire the confirmed runner through bea ingest; keep generate/test in the authoring project. Skip one-off imports, reconciliation, finance-app migration, ledger writes, and ledgers hosted on Beancount.io.

日本語の概要は準備中です。原文の説明を表示しています。

bex-co/beancount-io3152026年10月26日 更新

bex-co のスキルをすべて見る

このスキルの問題を報告する