@deeeed/metamask-harness 0.34.4 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/site/perps.html CHANGED
@@ -3,9 +3,10 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <title>Perps recipes MetaMask recipe workflow</title>
7
- <meta name="description" content="Install the shared MetaMask Perps recipe library and run live, testnet-first proof across Extension, Mobile, and Core.">
8
- <link rel="stylesheet" href="assets/style.css">
6
+ <title>Team / Perps — customize the harness for your team</title>
7
+ <meta name="description" content="Every team points the harness at its own recipe library. The MetaMask Perps library is the worked example: recipes, actions, checklist templates, and the team's own knowledge.">
8
+ <link rel="icon" href="assets/metamask-fox.svg" type="image/svg+xml">
9
+ <link rel="stylesheet" href="assets/style.css?v=4">
9
10
  </head>
10
11
  <body>
11
12
  <a class="skip" href="#setup">Skip to setup</a>
@@ -13,42 +14,43 @@
13
14
  <header class="topbar">
14
15
  <div class="wrap topbar-inner">
15
16
  <a class="brand" href="index.html">
16
- <span class="brand-mark" aria-hidden="true"></span>
17
+ <img class="brand-mark" src="assets/metamask-fox.svg" alt="" width="22" height="22">
17
18
  <span class="brand-name">recipes</span>
18
19
  </a>
19
20
  <nav class="nav" aria-label="Main">
20
21
  <a class="nav-cta" href="index.html#prompt">Quick start</a>
21
22
  <a href="how-it-works.html">How it works</a>
22
- <a href="recipes.html">Recipe anatomy</a>
23
- <a href="perps.html" aria-current="page">Perps</a>
23
+ <a href="perps.html" aria-current="page">Team / Perps</a>
24
24
  <a href="cheatsheet.html">Cheatsheet</a>
25
25
  <a href="architecture.html">Architecture</a>
26
26
  <a href="tutorials/index.html">Tutorials</a>
27
- <a href="reviewers.html">For Reviewers</a>
28
27
  </nav>
29
28
  </div>
30
29
  </header>
31
30
 
32
31
  <main>
33
32
  <section class="wrap hero" style="padding-bottom:1rem">
34
- <span class="eyebrow">Shared MetaMask recipe library</span>
35
- <h1>Prove Perps changes in the real product</h1>
33
+ <span class="eyebrow">Customization</span>
34
+ <h1>Make it your team's harness</h1>
36
35
  <p class="lede">
37
- The private Perps library gives Extension, Mobile, and Core one set of small, parameterized
38
- recipes for live UI journeys, controller state, analytics, performance, and testnet mutations.
36
+ The harness ships an execution standard and a deliberately small bundled library. Everything that
37
+ is specific to what <em>you</em> work on — the journeys, the assertions, the checklists, the review
38
+ knowledge — lives in a library you own and point the harness at. MetaMask Perps is the worked
39
+ example on this page.
39
40
  </p>
40
41
  <div class="hero-meta">
41
- <span>library name: perps</span>
42
- <span>defaults to testnet</span>
43
- <span>requires repository access</span>
42
+ <span>per team</span>
43
+ <span>per engineer</span>
44
+ <span>one env var</span>
44
45
  </div>
45
46
  </section>
46
47
 
47
48
  <section class="wrap">
48
49
  <div class="doctrine">
49
50
  <p>
50
- <span class="k">The harness supplies the execution standard; the Perps library supplies the domain proof.</span>
51
- Keep the shared library small: compose or repair the closest recipe before creating another one.
51
+ <span class="k">The harness supplies the execution standard; your library supplies the domain.</span>
52
+ A team shares one library. An engineer can add their own on top. Neither requires a change to
53
+ the harness.
52
54
  </p>
53
55
  </div>
54
56
 
@@ -60,11 +62,11 @@
60
62
  <tr>
61
63
  <td><code>mm-harness</code></td>
62
64
  <td>Launch, typed actions, graph execution, screenshots, video, traces, and artifact contracts.</td>
63
- <td>Ticket-specific Perps scenarios.</td>
65
+ <td>Anything specific to one team's domain.</td>
64
66
  </tr>
65
67
  <tr>
66
- <td><code>perps</code> library</td>
67
- <td>Reusable Perps setup, journeys, assertions, cleanup, and platform variants.</td>
68
+ <td>Your library</td>
69
+ <td>Reusable setup, journeys, assertions, cleanup, platform variants, and checklist templates.</td>
68
70
  <td>Wallet credentials, generated evidence, or product source.</td>
69
71
  </tr>
70
72
  <tr>
@@ -78,56 +80,102 @@
78
80
  </section>
79
81
 
80
82
  <section class="wrap">
81
- <h2 id="setup">Install and discover it</h2>
83
+ <h2 id="setup">Point the harness at a library</h2>
82
84
  <p>
83
- Run these commands from the MetaMask product checkout you want to exercise. The repository is
84
- private; a clone failure means your GitHub account needs access.
85
+ One environment variable does it. The Perps library is private, so start by asking its owners for
86
+ access a clone failure means your GitHub account does not have it yet.
85
87
  </p>
86
88
 
87
- <div class="cmd"><pre><code><span class="p">$ </span>npm i -g @deeeed/metamask-harness@latest
88
- <span class="p">$ </span>git clone git@github.com:MetaMask/experimental-metamask-recipe-perps.git \
89
+ <div class="cmd"><pre><code><span class="p">$ </span>git clone git@github.com:MetaMask/experimental-metamask-recipe-perps.git \
89
90
  "$HOME/shared-library/metamask-recipe-perps"
90
- <span class="p">$ </span>mm-harness run --list \
91
- --library "perps=$HOME/shared-library/metamask-recipe-perps"</code></pre></div>
91
+ <span class="p">$ </span>export RECIPE_LIBRARY_PATH="perps=$HOME/shared-library/metamask-recipe-perps"
92
+ <span class="p">$ </span>mm-harness run --list</code></pre></div>
92
93
 
93
94
  <p>
94
- If the checkout already exists and is clean, update it with <code>git pull --ff-only</code>.
95
- Preserve and report a dirty checkout instead of overwriting it. Keep <code>--library</code> on each
96
- command so separate tool shells do not lose an exported variable.
95
+ <code>name=path</code> gives the source its alias; without one the directory name is used. Separate
96
+ several libraries with <code>:</code> order is precedence, first wins:
97
97
  </p>
98
98
 
99
+ <div class="cmd"><pre><code><span class="p">$ </span>export RECIPE_LIBRARY_PATH="mine=$HOME/my-recipes:perps=$HOME/shared-library/metamask-recipe-perps"</code></pre></div>
100
+
101
+ <p>
102
+ Use <code>--library name=/path</code> for a single command instead — useful when a tool shell loses
103
+ an exported variable. Resolution follows your library order, then the bundled MetaMask library.
104
+ </p>
105
+
106
+ <div class="note blue">
107
+ <span class="note-title">Your own library, with no configuration</span>
108
+ <p>
109
+ A directory at <code>~/.farmslot/recipe-library</code> is picked up automatically as
110
+ <code>personal</code> when you set no library at all. It is a fallback, not an addition: as soon
111
+ as <code>RECIPE_LIBRARY_PATH</code> or <code>--library</code> is set, only those sources are used.
112
+ List it explicitly to keep both.
113
+ </p>
114
+ </div>
115
+
99
116
  <div class="note blue">
100
117
  <span class="note-title">Discovery is adapter-aware</span>
101
118
  <p>
102
119
  The list shows only recipes runnable in the current product checkout. A recipe marked
103
- <code>[perps]</code> came from the shared library; <code>[metamask]</code> means it ships with the
120
+ <code>[perps]</code> came from that library; <code>[metamask]</code> means it ships with the
104
121
  harness. Read the selected platform variant with <code>--describe</code> before running it.
105
122
  </p>
106
123
  </div>
107
124
  </section>
108
125
 
126
+ <section class="wrap">
127
+ <h2>What a team library actually holds</h2>
128
+ <p>
129
+ Every path below is real, from the Perps library. Copy the shape, not the contents — it is the
130
+ reference structure for a MetaMask team building its own.
131
+ </p>
132
+
133
+ <div class="cmd"><pre><code>manifests/extension.action-manifest.json types the actions you add
134
+ actions/extension/perps/ domain actions the product needs
135
+ recipes/mobile/perps/ per-adapter journeys
136
+ recipes/extension/perps/
137
+ recipes/core/perps/
138
+ checklists/dev/ your own Recipe Cook checklist templates
139
+ checklists/fix-bug/
140
+ docs/ the knowledge: authoring rules,
141
+ performance evidence, analytics</code></pre></div>
142
+
143
+ <p>
144
+ The <code>docs/</code> and <code>checklists/</code> directories are the part teams underestimate.
145
+ They are how a team's hard-won conventions — how performance evidence is gathered here, which
146
+ analytics events matter, what a finished task looks like — stop living in one engineer's head.
147
+ </p>
148
+
149
+ <div class="note">
150
+ <span class="note-title">Review knowledge lives with the skills</span>
151
+ <p>
152
+ One team surface sits outside the recipe library: the static antipattern packs the PR QA review
153
+ reads, which ship with the skills as
154
+ <code>references/antipatterns/&lt;repo&gt;/&lt;pack&gt;.md</code>. Today there is a
155
+ <code>perps</code> pack for Mobile, Extension, and Core, and a Mobile-only
156
+ <code>unit-vs-cv</code> pack. A pack is advisory: it never changes an acceptance-criterion
157
+ verdict.
158
+ </p>
159
+ </div>
160
+ </section>
161
+
109
162
  <section class="wrap">
110
163
  <h2>Your first live proof</h2>
111
164
  <p>
112
165
  Complete <a href="how-it-works.html#steps">the walkthrough</a> first so the app, device, and wallet fixture are
113
- ready. Then use a read-only recipe as the first proof.
166
+ ready. With <code>RECIPE_LIBRARY_PATH</code> exported, the library's recipes are just names.
114
167
  </p>
115
168
 
116
169
  <h3>Extension or Mobile</h3>
117
- <div class="cmd"><pre><code><span class="p">$ </span>mm-harness run perps.open-market --describe \
118
- --library "perps=$HOME/shared-library/metamask-recipe-perps"
119
- <span class="p">$ </span>mm-harness run perps.open-market network=testnet market=BTC --plan \
120
- --library "perps=$HOME/shared-library/metamask-recipe-perps"
170
+ <div class="cmd"><pre><code><span class="p">$ </span>mm-harness run perps.open-market --describe
171
+ <span class="p">$ </span>mm-harness run perps.open-market network=testnet market=BTC --plan
121
172
  <span class="p">$ </span>mm-harness run perps.open-market network=testnet market=BTC \
122
- --record-video=full-run --artifacts-dir ./perps-open-market-evidence \
123
- --library "perps=$HOME/shared-library/metamask-recipe-perps"</code></pre></div>
173
+ --record-video=full-run --artifacts-dir ./perps-open-market-evidence</code></pre></div>
124
174
 
125
175
  <h3>Core</h3>
126
- <div class="cmd"><pre><code><span class="p">$ </span>mm-harness run perps.snapshot-market --describe \
127
- --library "perps=$HOME/shared-library/metamask-recipe-perps"
176
+ <div class="cmd"><pre><code><span class="p">$ </span>mm-harness run perps.snapshot-market --describe
128
177
  <span class="p">$ </span>mm-harness run perps.snapshot-market network=testnet market=BTC \
129
- --artifacts-dir ./perps-market-evidence \
130
- --library "perps=$HOME/shared-library/metamask-recipe-perps"</code></pre></div>
178
+ --artifacts-dir ./perps-market-evidence</code></pre></div>
131
179
 
132
180
  <p>
133
181
  A passing run writes <code>summary.json</code>, per-node results in <code>trace.json</code>, and an
@@ -137,7 +185,11 @@
137
185
  </section>
138
186
 
139
187
  <section class="wrap">
140
- <h2>Choose the recipe that owns the claim</h2>
188
+ <h2>What the Perps team put in theirs</h2>
189
+ <p>
190
+ A sample of the library's recipes, as an idea of the granularity that works: small, parameterized,
191
+ composed rather than duplicated.
192
+ </p>
141
193
  <div class="table-scroll">
142
194
  <table>
143
195
  <thead><tr><th>Claim</th><th>Recipe</th><th>Platforms</th></tr></thead>
@@ -164,8 +216,9 @@
164
216
  </section>
165
217
 
166
218
  <section class="wrap">
167
- <h2>Maintain the proof, not a pile of scenarios</h2>
219
+ <h2>Starting your team's library</h2>
168
220
  <ol>
221
+ <li>Create a repository with the directory shape above. It holds no accounts, fixtures, credentials, or generated evidence.</li>
169
222
  <li>Parameterize stable choices such as market, side, order type, and network.</li>
170
223
  <li>Compose existing setup, assertion, and cleanup recipes before adding a new top-level recipe.</li>
171
224
  <li>Add a platform variant only when the products genuinely differ.</li>
@@ -177,10 +230,15 @@
177
230
  <li>Re-run every caller after a shared node changes and attach the fresh evidence.</li>
178
231
  </ol>
179
232
 
233
+ <p>
234
+ Keep it small. Compose or repair the closest recipe before creating another one — a library that
235
+ grows a scenario per ticket stops being maintainable faster than the product does.
236
+ </p>
237
+
180
238
  <div class="btn-row">
181
239
  <a class="btn btn-primary" href="tutorials/v3.html">Install skills and the library →</a>
240
+ <a class="btn btn-ghost" href="ecosystem.html">Where this sits in the stack</a>
182
241
  <a class="btn btn-ghost" href="recipes.html">How recipes prove claims</a>
183
- <a class="btn btn-ghost" href="reviewers.html">How to review evidence</a>
184
242
  </div>
185
243
  </section>
186
244
  </main>
@@ -191,6 +249,6 @@
191
249
  <p>Written against the shared MetaMask Perps recipe library. Sample output moves between releases; trust your terminal over this page.</p>
192
250
  </div>
193
251
  </footer>
194
- <script type="module" src="assets/progress.mjs"></script>
252
+ <script type="module" src="assets/progress.mjs?v=4"></script>
195
253
  </body>
196
254
  </html>
package/site/recipes.html CHANGED
@@ -5,7 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>What is a recipe?</title>
7
7
  <meta name="description" content="The anatomy of a recipe: a JSON graph of typed actions, human-authored intent, first-class assertions, and a verdict derived from the trace.">
8
- <link rel="stylesheet" href="assets/style.css">
8
+ <link rel="icon" href="assets/metamask-fox.svg" type="image/svg+xml">
9
+ <link rel="stylesheet" href="assets/style.css?v=4">
9
10
  </head>
10
11
  <body data-progress-page="recipes">
11
12
  <a class="skip" href="#anatomy">Skip to the anatomy</a>
@@ -13,18 +14,16 @@
13
14
  <header class="topbar">
14
15
  <div class="wrap topbar-inner">
15
16
  <a class="brand" href="index.html">
16
- <span class="brand-mark" aria-hidden="true"></span>
17
+ <img class="brand-mark" src="assets/metamask-fox.svg" alt="" width="22" height="22">
17
18
  <span class="brand-name">recipes</span>
18
19
  </a>
19
20
  <nav class="nav" aria-label="Main">
20
21
  <a class="nav-cta" href="index.html#prompt">Quick start</a>
21
22
  <a href="how-it-works.html">How it works</a>
22
- <a href="recipes.html" aria-current="page">Recipe anatomy</a>
23
- <a href="perps.html">Perps</a>
23
+ <a href="perps.html">Team / Perps</a>
24
24
  <a href="cheatsheet.html">Cheatsheet</a>
25
25
  <a href="architecture.html">Architecture</a>
26
26
  <a href="tutorials/index.html">Tutorials</a>
27
- <a href="reviewers.html">For Reviewers</a>
28
27
  </nav>
29
28
  </div>
30
29
  </header>
@@ -419,6 +418,6 @@
419
418
  </div>
420
419
  </footer>
421
420
 
422
- <script type="module" src="assets/progress.mjs"></script>
421
+ <script type="module" src="assets/progress.mjs?v=4"></script>
423
422
  </body>
424
423
  </html>
@@ -5,7 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>For Reviewers — how to read an evidence bundle</title>
7
7
  <meta name="description" content="An annotated walkthrough of a real mm-harness evidence bundle: summary.json, trace.json, diagnostics, and what an honest degraded capture looks like.">
8
- <link rel="stylesheet" href="assets/style.css">
8
+ <link rel="icon" href="assets/metamask-fox.svg" type="image/svg+xml">
9
+ <link rel="stylesheet" href="assets/style.css?v=4">
9
10
  </head>
10
11
  <body data-progress-page="reviewers">
11
12
  <a class="skip" href="#summary">Skip to the walkthrough</a>
@@ -13,18 +14,16 @@
13
14
  <header class="topbar">
14
15
  <div class="wrap topbar-inner">
15
16
  <a class="brand" href="index.html">
16
- <span class="brand-mark" aria-hidden="true"></span>
17
+ <img class="brand-mark" src="assets/metamask-fox.svg" alt="" width="22" height="22">
17
18
  <span class="brand-name">recipes</span>
18
19
  </a>
19
20
  <nav class="nav" aria-label="Main">
20
21
  <a class="nav-cta" href="index.html#prompt">Quick start</a>
21
22
  <a href="how-it-works.html">How it works</a>
22
- <a href="recipes.html">Recipe anatomy</a>
23
- <a href="perps.html">Perps</a>
23
+ <a href="perps.html">Team / Perps</a>
24
24
  <a href="cheatsheet.html">Cheatsheet</a>
25
25
  <a href="architecture.html">Architecture</a>
26
26
  <a href="tutorials/index.html">Tutorials</a>
27
- <a href="reviewers.html" aria-current="page">For Reviewers</a>
28
27
  </nav>
29
28
  </div>
30
29
  </header>
@@ -371,6 +370,6 @@ Nodes: 6/6 passed
371
370
  </div>
372
371
  </footer>
373
372
 
374
- <script type="module" src="assets/progress.mjs"></script>
373
+ <script type="module" src="assets/progress.mjs?v=4"></script>
375
374
  </body>
376
375
  </html>
@@ -5,7 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>Tutorials — the series</title>
7
7
  <meta name="description" content="Seven tutorials taking a new engineer from an empty terminal to pull requests that carry proof.">
8
- <link rel="stylesheet" href="../assets/style.css">
8
+ <link rel="icon" href="../assets/metamask-fox.svg" type="image/svg+xml">
9
+ <link rel="stylesheet" href="../assets/style.css?v=4">
9
10
  </head>
10
11
  <body data-progress-page="tutorials">
11
12
  <a class="skip" href="#series">Skip to the series</a>
@@ -13,18 +14,16 @@
13
14
  <header class="topbar">
14
15
  <div class="wrap-wide topbar-inner">
15
16
  <a class="brand" href="../index.html">
16
- <span class="brand-mark" aria-hidden="true"></span>
17
+ <img class="brand-mark" src="../assets/metamask-fox.svg" alt="" width="22" height="22">
17
18
  <span class="brand-name">recipes</span>
18
19
  </a>
19
20
  <nav class="nav" aria-label="Main">
20
21
  <a class="nav-cta" href="../index.html#prompt">Quick start</a>
21
22
  <a href="../how-it-works.html">How it works</a>
22
- <a href="../recipes.html">Recipe anatomy</a>
23
- <a href="../perps.html">Perps</a>
23
+ <a href="../perps.html">Team / Perps</a>
24
24
  <a href="../cheatsheet.html">Cheatsheet</a>
25
25
  <a href="../architecture.html">Architecture</a>
26
26
  <a href="index.html" aria-current="page">Tutorials</a>
27
- <a href="../reviewers.html">For Reviewers</a>
28
27
  </nav>
29
28
  </div>
30
29
  </header>
@@ -177,6 +176,6 @@
177
176
  </div>
178
177
  </footer>
179
178
 
180
- <script type="module" src="../assets/progress.mjs"></script>
179
+ <script type="module" src="../assets/progress.mjs?v=4"></script>
181
180
  </body>
182
181
  </html>
@@ -5,7 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>V1 — Getting started with recipes</title>
7
7
  <meta name="description" content="Video one of the series: one CLI drives the wallet and proves what happened. With the same checklist as the How it works walkthrough.">
8
- <link rel="stylesheet" href="../assets/style.css">
8
+ <link rel="icon" href="../assets/metamask-fox.svg" type="image/svg+xml">
9
+ <link rel="stylesheet" href="../assets/style.css?v=4">
9
10
  </head>
10
11
  <body data-progress-page="start">
11
12
  <a class="skip" href="#steps">Skip to the checklist</a>
@@ -13,18 +14,16 @@
13
14
  <header class="topbar">
14
15
  <div class="wrap topbar-inner">
15
16
  <a class="brand" href="../index.html">
16
- <span class="brand-mark" aria-hidden="true"></span>
17
+ <img class="brand-mark" src="../assets/metamask-fox.svg" alt="" width="22" height="22">
17
18
  <span class="brand-name">recipes</span>
18
19
  </a>
19
20
  <nav class="nav" aria-label="Main">
20
21
  <a class="nav-cta" href="../index.html#prompt">Quick start</a>
21
22
  <a href="../how-it-works.html">How it works</a>
22
- <a href="../recipes.html">Recipe anatomy</a>
23
- <a href="../perps.html">Perps</a>
23
+ <a href="../perps.html">Team / Perps</a>
24
24
  <a href="../cheatsheet.html">Cheatsheet</a>
25
25
  <a href="../architecture.html">Architecture</a>
26
26
  <a href="index.html" aria-current="page">Tutorials</a>
27
- <a href="../reviewers.html">For Reviewers</a>
28
27
  </nav>
29
28
  </div>
30
29
  </header>
@@ -208,6 +207,6 @@
208
207
  </div>
209
208
  </footer>
210
209
 
211
- <script type="module" src="../assets/progress.mjs"></script>
210
+ <script type="module" src="../assets/progress.mjs?v=4"></script>
212
211
  </body>
213
212
  </html>
@@ -5,7 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>V2 — Reading the evidence</title>
7
7
  <meta name="description" content="Walk one finished run file by file, and learn the two rules that make a green verdict worth believing.">
8
- <link rel="stylesheet" href="../assets/style.css">
8
+ <link rel="icon" href="../assets/metamask-fox.svg" type="image/svg+xml">
9
+ <link rel="stylesheet" href="../assets/style.css?v=4">
9
10
  </head>
10
11
  <body data-progress-page="v2">
11
12
  <a class="skip" href="#steps">Skip to the checklist</a>
@@ -13,18 +14,16 @@
13
14
  <header class="topbar">
14
15
  <div class="wrap topbar-inner">
15
16
  <a class="brand" href="../index.html">
16
- <span class="brand-mark" aria-hidden="true"></span>
17
+ <img class="brand-mark" src="../assets/metamask-fox.svg" alt="" width="22" height="22">
17
18
  <span class="brand-name">recipes</span>
18
19
  </a>
19
20
  <nav class="nav" aria-label="Main">
20
21
  <a class="nav-cta" href="../index.html#prompt">Quick start</a>
21
22
  <a href="../how-it-works.html">How it works</a>
22
- <a href="../recipes.html">Recipe anatomy</a>
23
- <a href="../perps.html">Perps</a>
23
+ <a href="../perps.html">Team / Perps</a>
24
24
  <a href="../cheatsheet.html">Cheatsheet</a>
25
25
  <a href="../architecture.html">Architecture</a>
26
26
  <a href="index.html" aria-current="page">Tutorials</a>
27
- <a href="../reviewers.html">For Reviewers</a>
28
27
  </nav>
29
28
  </div>
30
29
  </header>
@@ -63,8 +62,7 @@
63
62
  <div class="note plain">
64
63
  <span class="note-title">This page and the reviewer's guide</span>
65
64
  <p>
66
- This is the tour: what each file is for, in the order you open them.
67
- <a href="../reviewers.html">For Reviewers</a> is the reference — a real bundle annotated line by line,
65
+ This is the tour: what each file is for, in the order you open them. is the reference — a real bundle annotated line by line,
68
66
  including a screenshot that passed while recording that its capture had degraded. Read this first,
69
67
  keep that one open during a review.
70
68
  </p>
@@ -204,6 +202,6 @@
204
202
  </div>
205
203
  </footer>
206
204
 
207
- <script type="module" src="../assets/progress.mjs"></script>
205
+ <script type="module" src="../assets/progress.mjs?v=4"></script>
208
206
  </body>
209
207
  </html>
@@ -5,7 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>V3 — Skills and your team's library</title>
7
7
  <meta name="description" content="Install the agentic skills into a checkout and declare your team's recipe library, with the perps library as the worked example.">
8
- <link rel="stylesheet" href="../assets/style.css">
8
+ <link rel="icon" href="../assets/metamask-fox.svg" type="image/svg+xml">
9
+ <link rel="stylesheet" href="../assets/style.css?v=4">
9
10
  </head>
10
11
  <body data-progress-page="v3">
11
12
  <a class="skip" href="#steps">Skip to the checklist</a>
@@ -13,18 +14,16 @@
13
14
  <header class="topbar">
14
15
  <div class="wrap topbar-inner">
15
16
  <a class="brand" href="../index.html">
16
- <span class="brand-mark" aria-hidden="true"></span>
17
+ <img class="brand-mark" src="../assets/metamask-fox.svg" alt="" width="22" height="22">
17
18
  <span class="brand-name">recipes</span>
18
19
  </a>
19
20
  <nav class="nav" aria-label="Main">
20
21
  <a class="nav-cta" href="../index.html#prompt">Quick start</a>
21
22
  <a href="../how-it-works.html">How it works</a>
22
- <a href="../recipes.html">Recipe anatomy</a>
23
- <a href="../perps.html">Perps</a>
23
+ <a href="../perps.html">Team / Perps</a>
24
24
  <a href="../cheatsheet.html">Cheatsheet</a>
25
25
  <a href="../architecture.html">Architecture</a>
26
26
  <a href="index.html" aria-current="page">Tutorials</a>
27
- <a href="../reviewers.html">For Reviewers</a>
28
27
  </nav>
29
28
  </div>
30
29
  </header>
@@ -254,6 +253,6 @@ Inspect: mm-harness run &lt;recipe&gt; --describe
254
253
  </div>
255
254
  </footer>
256
255
 
257
- <script type="module" src="../assets/progress.mjs"></script>
256
+ <script type="module" src="../assets/progress.mjs?v=4"></script>
258
257
  </body>
259
258
  </html>
@@ -5,7 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>V4 — Cook a recipe from an acceptance criterion</title>
7
7
  <meta name="description" content="Turn one acceptance criterion into a proof with the recipe-cook skill: discover, author, validate, run.">
8
- <link rel="stylesheet" href="../assets/style.css">
8
+ <link rel="icon" href="../assets/metamask-fox.svg" type="image/svg+xml">
9
+ <link rel="stylesheet" href="../assets/style.css?v=4">
9
10
  </head>
10
11
  <body data-progress-page="v4">
11
12
  <a class="skip" href="#steps">Skip to the checklist</a>
@@ -13,18 +14,16 @@
13
14
  <header class="topbar">
14
15
  <div class="wrap topbar-inner">
15
16
  <a class="brand" href="../index.html">
16
- <span class="brand-mark" aria-hidden="true"></span>
17
+ <img class="brand-mark" src="../assets/metamask-fox.svg" alt="" width="22" height="22">
17
18
  <span class="brand-name">recipes</span>
18
19
  </a>
19
20
  <nav class="nav" aria-label="Main">
20
21
  <a class="nav-cta" href="../index.html#prompt">Quick start</a>
21
22
  <a href="../how-it-works.html">How it works</a>
22
- <a href="../recipes.html">Recipe anatomy</a>
23
- <a href="../perps.html">Perps</a>
23
+ <a href="../perps.html">Team / Perps</a>
24
24
  <a href="../cheatsheet.html">Cheatsheet</a>
25
25
  <a href="../architecture.html">Architecture</a>
26
26
  <a href="index.html" aria-current="page">Tutorials</a>
27
- <a href="../reviewers.html">For Reviewers</a>
28
27
  </nav>
29
28
  </div>
30
29
  </header>
@@ -192,6 +191,6 @@
192
191
  </div>
193
192
  </footer>
194
193
 
195
- <script type="module" src="../assets/progress.mjs"></script>
194
+ <script type="module" src="../assets/progress.mjs?v=4"></script>
196
195
  </body>
197
196
  </html>
@@ -5,7 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>V5 — PR QA review from one link</title>
7
7
  <meta name="description" content="Give the review skill one pull request URL and get a per-criterion verdict table backed by on-device evidence.">
8
- <link rel="stylesheet" href="../assets/style.css">
8
+ <link rel="icon" href="../assets/metamask-fox.svg" type="image/svg+xml">
9
+ <link rel="stylesheet" href="../assets/style.css?v=4">
9
10
  </head>
10
11
  <body data-progress-page="v5">
11
12
  <a class="skip" href="#flow">Skip to the flow</a>
@@ -13,18 +14,16 @@
13
14
  <header class="topbar">
14
15
  <div class="wrap topbar-inner">
15
16
  <a class="brand" href="../index.html">
16
- <span class="brand-mark" aria-hidden="true"></span>
17
+ <img class="brand-mark" src="../assets/metamask-fox.svg" alt="" width="22" height="22">
17
18
  <span class="brand-name">recipes</span>
18
19
  </a>
19
20
  <nav class="nav" aria-label="Main">
20
21
  <a class="nav-cta" href="../index.html#prompt">Quick start</a>
21
22
  <a href="../how-it-works.html">How it works</a>
22
- <a href="../recipes.html">Recipe anatomy</a>
23
- <a href="../perps.html">Perps</a>
23
+ <a href="../perps.html">Team / Perps</a>
24
24
  <a href="../cheatsheet.html">Cheatsheet</a>
25
25
  <a href="../architecture.html">Architecture</a>
26
26
  <a href="index.html" aria-current="page">Tutorials</a>
27
- <a href="../reviewers.html">For Reviewers</a>
28
27
  </nav>
29
28
  </div>
30
29
  </header>
@@ -160,6 +159,6 @@
160
159
  </div>
161
160
  </footer>
162
161
 
163
- <script type="module" src="../assets/progress.mjs"></script>
162
+ <script type="module" src="../assets/progress.mjs?v=4"></script>
164
163
  </body>
165
164
  </html>
@@ -5,7 +5,8 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
6
  <title>V6 — Release validation</title>
7
7
  <meta name="description" content="Validate one team's changes on a frozen release candidate, with a four-verdict vocabulary that includes NOT RUN.">
8
- <link rel="stylesheet" href="../assets/style.css">
8
+ <link rel="icon" href="../assets/metamask-fox.svg" type="image/svg+xml">
9
+ <link rel="stylesheet" href="../assets/style.css?v=4">
9
10
  </head>
10
11
  <body data-progress-page="v6">
11
12
  <a class="skip" href="#flow">Skip to the flow</a>
@@ -13,18 +14,16 @@
13
14
  <header class="topbar">
14
15
  <div class="wrap topbar-inner">
15
16
  <a class="brand" href="../index.html">
16
- <span class="brand-mark" aria-hidden="true"></span>
17
+ <img class="brand-mark" src="../assets/metamask-fox.svg" alt="" width="22" height="22">
17
18
  <span class="brand-name">recipes</span>
18
19
  </a>
19
20
  <nav class="nav" aria-label="Main">
20
21
  <a class="nav-cta" href="../index.html#prompt">Quick start</a>
21
22
  <a href="../how-it-works.html">How it works</a>
22
- <a href="../recipes.html">Recipe anatomy</a>
23
- <a href="../perps.html">Perps</a>
23
+ <a href="../perps.html">Team / Perps</a>
24
24
  <a href="../cheatsheet.html">Cheatsheet</a>
25
25
  <a href="../architecture.html">Architecture</a>
26
26
  <a href="index.html" aria-current="page">Tutorials</a>
27
- <a href="../reviewers.html">For Reviewers</a>
28
27
  </nav>
29
28
  </div>
30
29
  </header>
@@ -162,6 +161,6 @@
162
161
  </div>
163
162
  </footer>
164
163
 
165
- <script type="module" src="../assets/progress.mjs"></script>
164
+ <script type="module" src="../assets/progress.mjs?v=4"></script>
166
165
  </body>
167
166
  </html>