检查 Superset 的使用情况,找出适合当前工作方式但尚未使用的功能,给出建议并介绍选项;用户选定后,可协助设置定时运行、并行工作区或共享任务等功能。
- 查找尚未使用的 Superset 功能
- 设置定时运行的智能体
- 在多个工作区并行处理任务
在 iOS 模拟器中连接本地服务运行应用,用 Maestro 重现操作流程并录制演示视频或截图,也可通过实际界面检查移动应用改动。
Run apps/mobile on the iOS simulator against the local stack, drive it with Maestro, and capture clean screen recordings. Use when asked to record, film, screenshot, or demo the mobile app, or to verify a mobile change in the real app.
实测评分 未实测
查看安装方法此技能会在 iOS 模拟器中连接本地 API 等服务并运行 apps/mobile,再通过 Maestro 流程操作应用,制作屏幕录像或截图。流程使用真实的应用状态,并会在拍摄前准备演示内容所需的数据。录制前可以调整模拟器显示和状态栏;录制后可以将视频转换为固定帧率,方便后续编辑。技能还包括清理拍摄所用数据、服务和模拟器设置的步骤。
当需要用短视频或图片展示应用的实际操作,或在模拟器中操作应用来检查改动时,可以使用此技能。如果希望每次录制都按相同步骤演示,也可以用它重现操作流程。
此流程会使用 iOS 模拟器、Xcode 的 simctl、Maestro、Java 和 FFmpeg。根据拍摄内容,可能还需要准备本地 API 或数据库等服务。分享前要检查画面中没有真实数据;拍摄时创建的数据和设置应在之后删除或恢复。
本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。
AI 根据 SKILL.md 的内容检查了需要注意的操作和使用前提。评分只依据实际运行的结果(实测对比)。
不计入评分。 由 AI(OpenAI Codex)于 2026年10月29日 评估。仅供参考,安装前请同时查看原文。
安装前可以查看交给 AI 代理的指令内容。
There is no CDP for mobile. The equivalent is the iOS simulator, booted headless, driven by
Maestro, recorded with simctl. Nothing here opens a window on the user's display.
admin@local.test) and a demo org with demo
projects. Read every frame of the contact sheet for names, emails, repo names, and tokens
before sharing anything.Start each in its own Paradev terminal
(superset terminals create --local --workspace $SUPERSET_WORKSPACE_ID --command "...";
without --local the call silently returns nothing). Ports come from .superset/ports.json
and the root .env.
| Service | Command | Trap |
|---|---|---|
| API | cd apps/api && bun run dev | A 500 "password authentication failed" means the worktree's Neon branch was cleaned up. Recreate it and rewrite the "# Workspace Database" lines in .env. |
| Relay | cd apps/relay && while true; do CI=1 WRANGLER_SEND_METRICS=false node_modules/.bin/wrangler dev --port $RELAY_PORT --var NEXT_PUBLIC_API_URL:http://localhost:$API_PORT --local; done | wrangler dev dies with an empty error whenever a client aborts mid-request, which every app relaunch does. Hence the loop. |
| Metro | cd apps/mobile && CI=1 bunx expo start --dev-client --port 8081 | CI=1 disables file watching: restart Metro after code edits. Pre-warm the first bundle by curling the launchAsset.url from curl -H 'expo-platform: ios' localhost:8081, or the dev client times out. |
apps/mobile/app.config.ts loads the repo-root .env with override: true, so every local
bundle points at this workspace's API no matter what apps/mobile/.env says.
U=$(xcrun simctl list devices available | grep -m1 "iPhone 17 Pro (" | grep -oE '[0-9A-F-]{36}')
xcrun simctl boot $U && xcrun simctl bootstatus $U -b
xcrun simctl ui $U appearance light
xcrun simctl status_bar $U override --time "9:41" --batteryState discharging \
--batteryLevel 100 --cellularBars 4 --wifiBars 3 --dataNetwork wifi
xcrun simctl spawn $U defaults write sh.superset.mobile EXDevMenuIsOnboardingFinished -bool YES
xcrun simctl openurl $U "superset://expo-development-client/?url=http%3A%2F%2Flocalhost%3A8081&disableAutoLaunch=1&disableFab=1"
simctl boot does not launch Simulator.app. Keep it that way.apps/mobile (cd apps/mobile from the repo root), run
bunx expo prebuild -p ios, then xcodebuild -workspace ios/Superset.xcworkspace -scheme Superset -configuration Debug -sdk iphonesimulator -derivedDataPath <scratch>/dd
(about 10 minutes), then xcrun simctl install $U <path to Superset.app>. Set
SENTRY_DISABLE_AUTO_UPLOAD=true. Never set CODE_SIGNING_ALLOWED=NO: it drops the keychain
entitlement and the app crashes on first SecureStore read. Pure JS changes need no rebuild.Maestro needs JAVA_HOME=/opt/homebrew/opt/openjdk/libexec/openjdk.jdk/Contents/Home. Flows
live in apps/mobile/.maestro/flows/. Sign in with tapOn: { id: dev-sign-in-button }.
Write one flow per story. Prefer tapOn by visible text, add a testID when text is
ambiguous. inputText types character by character, which reads as a person typing on film.
Maestro takes 7 to 25 seconds to start. Launch it before you start recording, and begin the
flow with a waitForAnimationToEnd or a short extendedWaitUntil so the take opens on a
settled screen.
The dev session has plan: null, so Home shows the paywall. Seed a subscriptions row on
the worktree's Neon branch (plan pro, reference_id = the org id,
stripe_subscription_id sub_temp_...) and delete it after.
Need a host without a second machine? POST /api/trpc/host.ensure with the session JWT
registers one, and holding ws://localhost:$RELAY_PORT/v2/control?hostId=<org>:<machineId>
open with Authorization: Bearer <jwt> marks it online. Delete the v2_users_hosts and
v2_hosts rows after. For a story with a real agent working, point the app at a real local
host-service instead.
Maestro matches the whole accessibility label, and rows carry extra text (the Settings row is
, Pages, ). Match with a regex: tapOn: ".*Pages.*". Dump what it sees with
maestro --udid $U hierarchy.
Metro fails with ENOENT ... react-native-worklets/.worklets/<n>.js? Its cache outlived the
generated files. Restart it with --clear.
Pages need three more things locally, none of which setup provides:
R2_ENDPOINT (localhost:9000, nothing
listens there) while the usercontent Worker reads its own local R2. Run a minimal S3 stand-in
on :9000 (PUT with x-amz-copy-source, GET, HEAD, POST ?delete), publish through
page.assets.upload then page.publish, then copy every stored object across with
bunx wrangler r2 object put superset-private-dev/<key> --local --env dev --file <f> --content-type <type> from apps/usercontent.apps/usercontent/.dev.vars needs USERCONTENT_TOKEN_SECRET set to
the value in the root .env, or every page answers 500. Start it with
cd apps/usercontent && bun run dev.<id>.frame.usercontent.localhost does not count, so the page fails with error -1022. On the
simulator's installed copy only:
PlistBuddy -c "Set :NSAppTransportSecurity:NSAllowsArbitraryLoads true" -c "Add :NSAppTransportSecurity:NSAllowsArbitraryLoadsInWebContent bool true" "$(xcrun simctl get_app_container $U sh.superset.mobile app)/Info.plist", then relaunch. Revert it after.tRPC calls from a script need authorization: Bearer <jwt> plus
x-superset-organization-id, because the JWT carries no active organization. Tap to comment
did not open the comment popover under Maestro on the simulator (2026-09-19, cause unknown);
film comments through "Show all comments" and Reply instead.
Run capture commands from a scratch directory. Use an absolute path to the Maestro flow when recording outside the repo.
mkdir -p raw shots cfr
xcrun simctl io $U recordVideo --codec h264 --force raw/01-story.mov & REC=$!
maestro test <repo>/apps/mobile/.maestro/flows/<story>.yml
kill -INT $REC; wait $REC
xcrun simctl io $U screenshot shots/01.png
SIGINT only. Any other signal leaves an unplayable file.recordVideo writes a frame only when the screen changes, so the file is variable frame
rate and wall-clock marks do not map to video time. Normalize before choosing cut points:
ffmpeg -i raw/01-story.mov -vf fps=30 -an -c:v libx264 -crf 14 -pix_fmt yuv420p cfr/01.mp4.sleep never catches a sub-second flash. Record, then extract frames
with ffmpeg -vf fps=10.AppleLanguages value (including whether it was unset) so cleanup can restore them.simctl ui $U appearance dark, simctl ui $U content_size extra-extra-extra-large,
and simctl spawn $U defaults write "Apple Global Domain" AppleLanguages -array de-DE
followed by a relaunch.For a framed demo video, use the shared mobile-demo-film skill after recording.
Delete only the rows and objects created for this recording: subscriptions, hosts, demo sessions, and, for Pages, published pages, comments, and their objects in the S3 stand-in and local R2. Restore any organization or user names changed for the demo.
Stop every service started for the recording, including the usercontent Worker and storage
stand-in when used. Restore the simulator's prior appearance, content size, and
AppleLanguages value (remove the override if it was originally unset), revert any installed
app transport-security changes, clear status-bar overrides, then xcrun simctl shutdown $U.
Recordings and screenshots stay in the scratch directory unless the user asks for them in
the repo.
还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
检查 Superset 的使用情况,找出适合当前工作方式但尚未使用的功能,给出建议并介绍选项;用户选定后,可协助设置定时运行、并行工作区或共享任务等功能。
把重复任务配置为 Superset 自动化,整理智能体指令、定时或事件触发条件及运行工作区。经明确确认后创建设置,检查已保存的条件,并查看首次运行结果以调整指令。
通过 Superset 工作区的浏览器查看网页、点击、输入并检查截图或控制台信息,可用于预览运行中的网页应用、检查界面操作和表单流程。
依据 Stripe 官方文档和 API 参数定义实现支付、订阅、发票及 Webhook 集成,涵盖产品选择、沙盒测试和事件处理,并通过 Webhook 判断支付与订阅状态。
通过 Chrome DevTools Protocol 操作正在运行的 Electron 桌面应用,复现界面问题并验证修改。按实际操作流程检查页面跳转,记录截图,并对照路由、滚动位置、焦点元素和保存状态等信息。
分析 GitHub Actions 失败日志,定位最早的有效错误,区分代码缺陷、环境问题、间歇性失败和原有故障,并对照基准分支说明失败与 PR 的关系及后续处理建议。