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

qa-find-bugs-dashboard

Exercise the running Beancount.io dashboard with headless Playwright, use QA_EMAIL and QA_PASSWORD for login, reproduce bugs, trace fixes to source, and deduplicate findings. Use for dashboard QA or a browser bug hunt. Skip ordinary code review, bug implementation, and native-mobile QA (use qa-find-bugs-mobile).

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

bex-co/beancount-ioスター 315(GitHub 315 + cccskills 0)
連携ツールPlaywright

実行スコア 未検証

インストール方法を見る

含まれるファイル(2)

  • SKILL.md9.3 KB
  • evals/evals.json3.9 KB

SKILL.md(原文)

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

Dashboard QA bug hunt

Read the shared QA contract first. Read dashboard/AGENTS.md. Use Playwright MCP to test real browser behavior.

Arguments: optional server URL, journey names, wN, SHIP=1, DRY_RUN=1. Default to production and report mode. A target URL changes the client under test; inspect its API origin independently. Record whether the running client matches local HEAD before declaring a source fix missing from production.

Run in the background

  • Default to a headless browser with an isolated QA profile. Keep the user's windows, tabs, mouse, keyboard, and system clipboard undisturbed. A fresh context inside a headed browser can still open a visible window; it does not satisfy this requirement.
  • Launch Playwright MCP with --headless --isolated. For Claude Code, check mcpServers.playwright.args in the repo's .mcp.json; for Codex, check the active [mcp_servers.playwright] configuration, normally in ~/.codex/config.toml. Inspect effective launch settings, including overrides and any attached-browser endpoint, before the first browser action. A config edit takes effect on a new MCP server/browser session, not an already-running headed session. Do not attach to the user's regular browser.
  • If the current MCP session is headed, establish a separate headless session before continuing UI checks. An already available Playwright runtime in a QA-owned process is an acceptable fallback when MCP cannot be restarted safely. Preserve the same login and evidence workflow. If no background session is available, report the UI checks as blocked and continue independent source/API investigation; do not silently launch a visible browser or stop another task's browser server.
  • Use Playwright's page/context APIs for clicks, typing, keyboard navigation, focus assertions, viewport changes, screenshots, and downloads. Do not call bringToFront, activate desktop apps, drive the OS mouse/keyboard, or open downloaded artifacts in desktop viewers. Browser-local focus checks remain part of accessibility QA.
  • For uploads, use file inputs/file-chooser APIs with authorized fixtures. For print checks, inspect print media or a headless PDF where supported; this does not verify the native print dialog. Run visible-browser, native-dialog, or actual screen-reader checks only when explicitly requested. Otherwise record that coverage as unverified and continue the background journeys.
  • Record the browser mode and session ownership with the run evidence. Reuse the owned headless browser with fresh contexts as needed, and close only this run's contexts, browsers, and helper processes during cleanup.

Prepare the browser

  • Record the initial browser session. Authenticate using QA_EMAIL and QA_PASSWORD from the repo-root ./.env, unless the user supplies another path. From the repo root, run node .agents/skills/qa-shared/scripts/qa-login.mjs with no flag (add --env-file <path> only for a different account). The helper hides the password and transfers session cookies in memory. Inspect features/auth/hooks/use-login-form.ts, graphql/query/auth.graphql, and the backend auth resolver/cookie helper for the current contract. Verify the resulting account and role, not merely a 200.
  • Write journeys (journal edits, New Entry, Open Account, budgets, file create/edit/upload/delete, CSV import) run on the QA account's designated disposable ledger under the contract's standing write authorization: snapshot first, prefix and record each write, restore byte-for-byte at the end. Everything outside that authorization still needs the user's go-ahead.
  • Use an ordinary desktop viewport (for example 1440×1000), then repeat the relevant controls at a narrow viewport. Record locale, theme, and active filters. Prefer accessible roles and names from snapshots to brittle selectors.
  • If the account is unavailable, continue public-ledger and signed-out journeys and explicitly leave authenticated behavior unverified.
  • For local reproduction, install existing dependencies with yarn install --immutable inside dashboard/; start yarn dev. Never assume the local server uses a sandbox backend. Existing scripts/perf-fixture-api.mjs can isolate loading behavior, but results against its synthetic owner/fixtures must be labeled local simulations.

Sweep whole journeys

Use selected journey names to narrow this table; otherwise survey the available surfaces and deepen the journeys that show failures. Report each skipped group.

JourneyObservable promise
authSign-in reaches the intended safe next route; cancellation/back and expired-session states remain usable. Do not send reset or invitation email without authorization.
discoveryGallery search narrows, pagination changes results, a public ledger opens, and returning restores a coherent list. Test ledger switching without leaking prior data.
overviewDate/account filters affect cards and charts; recent activity opens the corresponding journal item; empty and loading states are truthful.
journalType, flag, date, account, payee/tag filters compose; pagination/count agree; postings expand; back/reload preserves the stated filters. Authorized synthetic edits persist exactly once.
accountsSearch and hierarchy expansion work; a linked account shows matching entries and balances; closed or absent accounts have honest states.
reportsBalance Sheet, Income Statement, Trial Balance, Cash Flow, holdings/statistics and budget honor the selected period and units; drill-down retains intended context.
exportCSV/Markdown and Print / Save as PDF match the filtered supported statement, dates, entity, commodity units, and sign conventions. Read features/reports/AGENTS.md before interpreting financial signs.
filesTree navigation, text preview, branches, commit/diff links, and downloads work. Test create/edit/upload/delete only with authorized disposable files and check the resulting commit.
queryBQL executes, errors are actionable, result paging/export matches the result, and editing the query does not show stale output as new.
importReceipt/file/bank entrypoints and validation are usable. Actual imports and bank linking need the applicable authorization; inspect previews without booking real transactions.
settingsAvailable profile/ledger/settings screens render; owner/member/public controls match permissions. Inspect billing, credentials and collaborators without changing them.
accessibilityKeyboard access, dialogs/focus return, accessible primary controls, narrow screens, theme and locale changes. Confirm names with the accessibility tree.

After a surprising state, capture the screenshot, console errors, request status, and operation response (sanitized). Use page.evaluate with fetch for an authenticated API control when appropriate, returning only relevant non-secret fields. Do not export an unfiltered HAR containing login bodies or cookies. Reproduce once from a fresh page load before retaining a finding.

Research map

  • Thin route wrappers: dashboard/src/routes/; implementation: dashboard/src/features/<feature>/.
  • Cross-feature infrastructure: dashboard/src/common/, particularly Apollo links, auth, filters, navigation and ledger layout.
  • Report behavior and exports: features/reports/AGENTS.md; importer and ledger-data have their own nested guides. ADRs are in docs/adrs/.
  • Shared server causes: read backend-cluster/backend-v2/AGENTS.md before tracing src/features/<domain>/api, services, schemas, and ledger adapters. Read the ledger package guide if the response originates there. Keep fixes assigned to the package that owns the defect; do not create cross-package imports.

Apply the contract's reproduce → research → dedupe → report/optional filing steps. Finding a bug does not require changing product code or adding a test that merely repeats the implementation. If the user also requests a fix, reproduce it with a meaningful regression check and run the owning package's normal gates.

レビュー

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

コメント

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

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

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。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 のスキルをすべて見る

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