You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: domains/agentic/skills/recipe-cook/references/examples.md
+82-43Lines changed: 82 additions & 43 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,13 +13,13 @@ For MetaMask Mobile PRs, compose existing flows instead of inventing raw evals:
13
13
5.**Capture** — screenshot/video/log only after the assertion proves the screen settled.
14
14
6.**Teardown** — reset wallet/app state when a run changes balances, permissions, txs, or network.
15
15
16
-
Good Mobile recipes compose the v1 manifest's semantic actions instead of shelling to scripts. Prefer, where the installed manifest advertises them:
16
+
Good Mobile recipes compose the runner manifest's semantic actions instead of shelling to scripts. Prefer, where the installed manifest advertises them:
17
17
18
18
-`metamask.wallet.setup`, `metamask.wallet.ensure_unlocked`, `metamask.wallet.select_account`, `metamask.wallet.read_state` for wallet setup/start-state.
19
19
-`metamask.perps.start_state`, `metamask.perps.ensure_positions`, `metamask.perps.ensure_orders`, `metamask.perps.place_order`, `metamask.perps.close_positions`, `metamask.perps.read_positions`, `metamask.perps.assert_positions` for Perps flows.
20
20
-`ui.navigate`, `ui.wait_for`, `ui.press`, `ui.set_input`, `ui.scroll`, `ui.screenshot`, `app.status`, `app.hud` for the user path and evidence.
21
21
22
-
`call`/flow-catalog composition is valid only when the installed runner manifest advertises a flow catalog; do not point at in-repo flow files (the legacy `scripts/perps/agentic/teams/perps/flows/*` recipes are not part of the v1 model). When reusing an action or flow, state which proof target it covers and add only the nodes needed for the PR-specific claim.
22
+
`call`/flow-catalog composition is valid only when the installed runner manifest advertises a flow catalog; do not point at in-repo flow files (the legacy `scripts/perps/agentic/teams/perps/flows/*` recipes are not part of the runner model). When reusing an action or flow, state which proof target it covers and add only the nodes needed for the PR-specific claim.
23
23
24
24
## Mobile Direct Smoke Recipe
25
25
@@ -28,53 +28,61 @@ Use this for live-device validation of the recipe plumbing itself. It intentiona
28
28
```json
29
29
{
30
30
"schema_version": 1,
31
-
"title": "Mobile direct smoke — reach a settled wallet screen",
32
-
"description": "Proves the Mobile debug app is reachable and the v1 runner can drive the bridge to a settled wallet screen. Intentionally avoids wallet-specific assertions beyond reachability.",
31
+
"title": "Mobile direct smoke \u2014 reach a settled wallet screen",
32
+
"description": "Proves the Mobile debug app is reachable and the runner can drive the bridge to a settled wallet screen. Intentionally avoids wallet-specific assertions beyond reachability.",
33
33
"validate": {
34
34
"workflow": {
35
-
"pre_conditions": ["Run from the metamask-mobile checkout", "Debug app is already running on the intended simulator"],
35
+
"pre_conditions": [
36
+
"Run from the metamask-mobile checkout",
37
+
"Debug app is already running on the intended simulator"
38
+
],
36
39
"entry": "status",
37
40
"nodes": {
38
41
"status": {
39
42
"action": "app.status",
40
-
"description": "PT-1: read app route/device/platform through the v1 app.status action",
41
43
"timeout_ms": 30000,
42
-
"next": "ensure-unlocked"
44
+
"next": "ensure-unlocked",
45
+
"intent": "PT-1: read app route/device/platform through the app.status action"
43
46
},
44
47
"ensure-unlocked": {
45
48
"action": "metamask.wallet.ensure_unlocked",
46
-
"description": "PT-1: idempotently reach an unlocked wallet",
47
49
"timeout_ms": 45000,
48
-
"next": "navigate-wallet"
50
+
"next": "navigate-wallet",
51
+
"intent": "PT-1: idempotently reach an unlocked wallet"
49
52
},
50
53
"navigate-wallet": {
51
54
"action": "ui.navigate",
52
-
"description": "PT-2: open the wallet view through the navigation layer",
53
55
"route": "WalletView",
54
56
"timeout_ms": 30000,
55
-
"next": "wait-wallet"
57
+
"next": "wait-wallet",
58
+
"intent": "PT-2: open the wallet view through the navigation layer"
56
59
},
57
60
"wait-wallet": {
58
61
"action": "ui.wait_for",
59
-
"description": "PT-2: the wallet screen is present after navigation settles",
60
62
"test_id": "wallet-screen",
61
63
"expected": "present",
62
64
"timeout_ms": 30000,
63
-
"next": "capture"
65
+
"next": "capture",
66
+
"intent": "PT-2: the wallet screen is present after navigation settles"
"description": "Check the project-native check passed",
29
+
"intent": "Check the project-native check passed",
32
30
"expected": 0,
33
31
"next": "assert-output"
34
32
},
35
33
"assert-output": {
36
34
"action": "assert_output",
37
-
"description": "Check the project-native output looked successful",
35
+
"intent": "Check the project-native output looked successful",
38
36
"source": "start",
39
37
"stream": "stdout",
40
38
"contains": "PASS",
41
39
"next": "index-artifacts"
42
40
},
43
41
"index-artifacts": {
44
42
"action": "index_artifacts",
45
-
"description": "Write the artifact manifest",
43
+
"intent": "Write the artifact manifest",
46
44
"artifacts": ["logs/test.log"],
47
45
"next": "done"
48
46
},
@@ -57,7 +55,7 @@ Use this shape unless the target repo already publishes a stricter schema.
57
55
58
56
## Composition and start-state fields
59
57
60
-
Recipe v1 authoring should support reusable flow composition. When the installed runner publishes flow catalogs, prefer `call` nodes over repeated raw setup.
58
+
Recipe authoring should support reusable flow composition. When the installed runner publishes flow catalogs, prefer `call` nodes over repeated raw setup.
61
59
62
60
Recommended metadata:
63
61
@@ -71,6 +69,7 @@ Recommended current MetaMask setup action shape:
71
69
```json
72
70
{
73
71
"action": "metamask.perps.start_state",
72
+
"intent": "Converge Perps to the requested baseline before proof",
74
73
"phase": "start_state",
75
74
"network": "testnet",
76
75
"provider": "hyperliquid",
@@ -86,21 +85,22 @@ An `ensure_*` or `start_state` action/flow is idempotent: it inspects the curren
86
85
Minimum required fields:
87
86
88
87
-`schema_version: 1`
89
-
-`title`
90
-
-`description`
91
88
-`validate.workflow.entry`
92
89
- non-empty `validate.workflow.nodes`
90
+
-`intent` on every non-terminal executable node
93
91
94
92
Node rules:
95
93
96
94
- Every node key is a stable id.
97
-
- Every node has `action` and `description`, except a minimal terminal `end` node.
95
+
- Every non-terminal node has `action` and `intent`, except a minimal terminal `end` node.
98
96
- Every non-terminal node has `next`, `cases`, or `default`.
99
97
- Transition targets exist.
100
98
- At least one node reaches `action: "end"`.
101
-
- Assertions name the proof target they validate, either in `description` or a `proofTarget` field.
99
+
- Assertions name the proof target they validate with `proofTarget`.
102
100
- Setup/start-state flows should be declared separately from proof nodes so evidence can focus on the AC interaction.
103
101
102
+
Every non-terminal recipe node needs `intent`: one short HUD/trace line for what the agent is doing now. Do not use generic/action/node/selector/test-id/title/description/note text, and do not author sub-intent/HUD fields.
Copy file name to clipboardExpand all lines: domains/agentic/skills/recipe-cook/repos/metamask-mobile.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,7 +41,7 @@ Do this especially on historical commits, where the checked-out runner may be st
41
41
42
42
## Common Action Mapping
43
43
44
-
Use only action names declared by the installed v1 action manifest. Typical Mobile mappings are:
44
+
Use only action names declared by the installed action manifest. Typical Mobile mappings are:
45
45
46
46
- Open app area/screen: `ui.navigate` with a raw `route` (and optional `params`), e.g. `{ "route": "PerpsMarketListView" }` or `{ "route": "PerpsMarketDetails", "params": { "market": { "symbol": "ETH" } } }`.
47
47
- Tap: `ui.press` with a stable `test_id`, text, or page-object target.
0 commit comments