plugins/lisa-expo-cursor/skills/ops-check-logs/SKILL.md
Check application logs from local processes, browser console, React Native device logs, or remote AWS CloudWatch. Supports log tailing, filtering, and error searching across all platforms.
npx skillsauth add codyswanngt/lisa ops-check-logsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
View and search logs across all platforms and environments.
Argument: $ARGUMENTS — target and optional filter (e.g., dev errors, staging api, local, browser, device ios, production {function})
.)${BACKEND_DIR:-../backend-v2} — set BACKEND_DIR in .claude/settings.local.json if your backend is elsewherepackage.json to discover logs:*, logs:watch:*, and aws:signin:* scriptslogs:{env} scripts (typically set via FUNCTION_NAME env var).env.{environment} to find Sentry DSN for error correlationLocal services run in foreground processes. Their logs are captured in the terminal where they were started.
bun start:local or bun start:dev (Metro bundler)IS_OFFLINE=true bun run start:local (Serverless Offline)If services were started via the ops-run-local skill with run_in_background, check the background task output file.
For inspecting JavaScript errors, warnings, and console.log output in the browser at runtime.
Use when you need to capture browser logs programmatically during UAT or debugging.
Load Playwright tools — use the current runtime's tool-discovery mechanism to search for playwright browser.
Navigate to the app:
browser_navigate to the target URL (discover from e2e/constants.ts or .env.* files)Capture console messages:
browser_console_messages — returns all console.log, console.warn, console.error outputCheck for failed network requests:
browser_network_requests — shows all HTTP requests including 4xx/5xx failuresRun custom JS to inspect state:
browser_evaluate with script: JSON.stringify(performance.getEntriesByType('resource').filter(r => r.duration > 1000).map(r => ({name: r.name, duration: r.duration})))When a developer is debugging interactively:
http://localhost:8081)Cmd+Option+I (macOS) or F124xx or 5xx)For inspecting logs on iOS and Android devices/simulators when running the native app.
j)The modern debugging tool for Expo apps (React Native 0.76+):
bun start:local or bun start:devj in the Metro terminal to open React Native DevToolsm)Press m in the Metro terminal to open the Developer Menu on the connected device:
# Via Expo CLI (logs appear in Metro terminal automatically)
# Just run the app — console.log output streams to the terminal
# Via Xcode Console (native-level logs)
# Open Xcode > Devices and Simulators (Shift+Cmd+2) > Open Console
# Via macOS Console app (simulator logs)
# Open Console.app > filter by process name
# Via Expo CLI (logs appear in Metro terminal automatically)
# Just run the app — console.log output streams to the terminal
# Via adb logcat (native-level logs, verbose)
adb logcat *:E # Errors only
adb logcat -s ReactNativeJS # React Native JS logs only
adb logcat -s ReactNativeJS:V *:S # JS logs verbose, suppress everything else
# Via Android Studio Logcat
# Open Android Studio > View > Tool Windows > Logcat
# Filter by package name or "ReactNativeJS"
For production crash investigation on native platforms:
ops-monitor-errors skillDiscover available log scripts from the backend package.json (matching logs:* and logs:watch:*).
cd "${BACKEND_DIR:-../backend-v2}"
bun run aws:signin:{env}
cd "${BACKEND_DIR:-../backend-v2}"
FUNCTION_NAME={fn} bun run logs:{env}
cd "${BACKEND_DIR:-../backend-v2}"
FUNCTION_NAME={fn} bun run logs:watch:{env}
For more advanced filtering, use the AWS CLI directly. Discover the AWS profile from backend package.json aws:signin:* scripts.
aws logs describe-log-groups \
--profile {aws-profile} \
--region us-east-1 \
--query 'logGroups[].logGroupName' \
--output text | tr '\t' '\n'
aws logs filter-log-events \
--profile {aws-profile} \
--region us-east-1 \
--log-group-name "{log-group}" \
--start-time $(date -v-30M +%s000) \
--filter-pattern "ERROR" \
--query 'events[].message' \
--output text
aws logs tail "{log-group}" \
--profile {aws-profile} \
--region us-east-1 \
--follow \
--since 10m
For frontend build issues:
# List recent builds
eas build:list --limit 5
# View specific build details
eas build:view {build-id}
Report log findings as:
| Source | Timestamp | Level | Context | Message | |--------|-----------|-------|---------|---------| | CloudWatch | 2024-01-15T10:30:00Z | ERROR | api | Connection timeout to RDS | | Browser | — | ERROR | console | TypeError: Cannot read property 'name' | | Device | — | WARN | ReactNativeJS | VirtualizedList: missing keys |
Include a summary of findings: total errors, warnings, and any patterns observed.
documentation
Onboard a user to the project via its LLM Wiki. Interviews the user about themselves in relation to the project, captures that to project-scoped memory only, then gives a guided tour of what the project is and sample questions they can ask. Use when someone is new to the project or asks to be onboarded. Read-mostly — it does not open PRs or write PII into the wiki.
documentation
Migrate an existing, hand-rolled wiki implementation onto the lisa-wiki kernel — phased and compatibility-first, with a strict no-loss guarantee. Use when adopting lisa-wiki in a repo that already has its own wiki/, ingest skills, docs, or roles. Renaming things into the canonical shape is fine; losing functionality or data is not. Ends by running /doctor.
development
Health-check the LLM Wiki. Reports orphan pages, contradictions, stale claims, broken internal links, missing index/log coverage, structure-manifest violations, and secret/tenant leaks. Use periodically or before hardening a wiki. Read-only — it reports findings, it does not fix them.
testing
Ingest source material into the LLM Wiki. With an argument (URL, file path, or prompt) it ingests that one source; with no argument it runs a full ingest across every enabled non-external-write source. Routes to the right connector, then runs the ordered pipeline (source note → synthesis → index → log → verify → state → commit/PR). Use whenever new knowledge should enter the wiki.