@mindstudio-ai/remy 0.1.81 → 0.1.82
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/dist/automatedActions/buildFromInitialSpec.md +3 -2
- package/dist/headless.js +1 -0
- package/dist/index.js +1 -0
- package/dist/prompt/compiled/design.md +2 -2
- package/dist/prompt/static/authoring.md +1 -1
- package/dist/prompt/static/team.md +0 -1
- package/dist/subagents/browserAutomation/prompt.md +2 -0
- package/dist/subagents/designExpert/prompts/frontend-design-notes.md +2 -2
- package/dist/subagents/designExpert/prompts/images.md +1 -3
- package/dist/subagents/designExpert/tools/images/enhance-image-prompt.md +1 -1
- package/package.json +1 -1
|
@@ -6,14 +6,15 @@ This is an automated action triggered by the user pressing "Build" in the editor
|
|
|
6
6
|
|
|
7
7
|
The user has reviewed the spec and is ready to build.
|
|
8
8
|
|
|
9
|
-
Think about your approach and then get a quick sanity check from `codeSanityCheck` to make sure you aren't missing anything.
|
|
9
|
+
Think about your approach and then get a quick sanity check from `codeSanityCheck` to make sure you aren't missing anything. If you are building a web frontend, consult `visualDesignExpert` for guidance and ideas on specific components, UI patterns, and interactions - it has access to a deep repository of design inspiration and will be able to give you great ideas to work with while building.
|
|
10
10
|
|
|
11
|
-
Then, build everything in one turn: methods, tables, interfaces, manifest updates, and scenarios, using the spec as the master plan.
|
|
11
|
+
Then, build everything in one turn: methods, tables, interfaces, manifest updates, and scenarios, using the spec as the master plan. Be sure to delete any unnecessary files from the "Hello World" scaffold that already exist in the project.
|
|
12
12
|
|
|
13
13
|
When code generation is complete, verify your work:
|
|
14
14
|
- First, run use `runScenario` to seed test data, then use `runMethod` to confirm a method works
|
|
15
15
|
- If the app has a web frontend, check the browser logs to make sure there are no errors rendering it.
|
|
16
16
|
- Ask the `visualDesignExpert` to take a screenshot and verity that the visual design looks correct. Fix any issues it flags - we want the user's first time seeing the finished product to truly wow them.
|
|
17
17
|
- Finally, use `runAutomatedBrowserTest` to smoke-test the main UI flow. The dev database is a disposable snapshot, so don't worry about being destructive. Fix any errors before finishing.
|
|
18
|
+
- If there is a scenario that seeds the app with mock data, use it to present the app to the user with initial data seeded, so they can see and play with the real app. Let the user know they can reset the app using a scenario to empty it if they wish. Showing the user something they can play with immediately is important when it comes to landing a strong first impression.
|
|
18
19
|
|
|
19
20
|
When everything is working, use `productVision` to mark the MVP roadmap item as done, then call `setProjectOnboardingState({ state: "onboardingFinished" })`.
|
package/dist/headless.js
CHANGED
|
@@ -5631,6 +5631,7 @@ ${r.result}
|
|
|
5631
5631
|
</tool_result>`
|
|
5632
5632
|
).join("\n\n");
|
|
5633
5633
|
const message = `@@automated::background_results@@
|
|
5634
|
+
This is an automated message containing the result of a tool call that has been working in the background. This is not a direct message from the user.
|
|
5634
5635
|
<background_results>
|
|
5635
5636
|
${xmlParts}
|
|
5636
5637
|
</background_results>`;
|
package/dist/index.js
CHANGED
|
@@ -6265,6 +6265,7 @@ ${r.result}
|
|
|
6265
6265
|
</tool_result>`
|
|
6266
6266
|
).join("\n\n");
|
|
6267
6267
|
const message = `@@automated::background_results@@
|
|
6268
|
+
This is an automated message containing the result of a tool call that has been working in the background. This is not a direct message from the user.
|
|
6268
6269
|
<background_results>
|
|
6269
6270
|
${xmlParts}
|
|
6270
6271
|
</background_results>`;
|
|
@@ -30,7 +30,7 @@ Interfaces run fullscreen in the user's browser or a wrapped webview mobile app.
|
|
|
30
30
|
|
|
31
31
|
Layout shift is never acceptable. Elements jumping around as content loads or streams in makes an interface feel broken.
|
|
32
32
|
|
|
33
|
-
- Reserve space for content that hasn't arrived yet. Use fixed/min-height containers, skeletons, or aspect-ratio boxes.
|
|
33
|
+
- Reserve space for content that hasn't arrived yet. Use fixed/min-height containers, subtle skeletons, or aspect-ratio boxes.
|
|
34
34
|
- Images must always have explicit dimensions so the browser reserves space before the image loads.
|
|
35
35
|
- Loading-to-loaded transitions should swap content in-place without changing container size.
|
|
36
36
|
- Buttons must not change size during loading states. Use a fixed width or `min-width`, and swap the label for a spinner or short text that fits the same space. "Submit" becoming "Submitting..." should not make the button wider and push adjacent elements around.
|
|
@@ -78,7 +78,7 @@ The UI should feel instant. Never make the user wait for a server round-trip to
|
|
|
78
78
|
- **Optimistic updates.** When a user adds a row, toggles a setting, or submits a form, update the UI immediately and let the backend confirm in the background. If the backend fails, revert and show an error.
|
|
79
79
|
- **Use SWR for data fetching** (`useSWR` from the `swr` package). It handles caching, revalidation, and stale-while-revalidate out of the box. Prefer SWR over manual `useEffect` + `useState` fetch patterns.
|
|
80
80
|
- **Mutate after actions.** After a successful create/update/delete, call `mutate()` to revalidate the relevant SWR cache rather than manually updating local state.
|
|
81
|
-
- **Skeleton loading.** Show skeletons that mirror the layout on initial load. Never show a blank page or centered spinner while data is loading.
|
|
81
|
+
- **Skeleton loading.** Show subtle, simple skeletons (light pulse - no shimmer) that mirror the layout on initial load. Never show a blank page or centered spinner while data is loading.
|
|
82
82
|
|
|
83
83
|
## Auth
|
|
84
84
|
|
|
@@ -61,7 +61,7 @@ When you are finished with the first draft and are ready to present it to the us
|
|
|
61
61
|
Once you have written the draft and set the project onboarding state to "initialSpecReview," guide the user through the newly-written spec. Don't just ask "does this look good?" — the user is seeing a multi-section spec for the first time.
|
|
62
62
|
|
|
63
63
|
- Walk them through the key decisions and the overall structure.
|
|
64
|
-
-
|
|
64
|
+
- Flag specific things you're unsure about or assumptions you flagged ("I assumed approvals go to the team lead — should it be the department manager?", "Do you need an API interface or just the web UI?").
|
|
65
65
|
- When the user gives feedback, update the spec and briefly describe what you changed. Don't silently edit.
|
|
66
66
|
- Look for gaps: is it clear what information the app stores? What happens in each step of the workflow? Who can do what? What happens when something goes wrong? How does the user actually interact with it?
|
|
67
67
|
- Recommend annotations where things could be interpreted multiple ways.
|
|
@@ -56,7 +56,6 @@ Result text here...
|
|
|
56
56
|
|
|
57
57
|
When you receive background results:
|
|
58
58
|
- Acknowledge them briefly to the user if relevant to what they're doing (e.g., "By the way, the designer finished those icons..." or "Looks like the roadmap is ready...")
|
|
59
|
-
- Incorporate them into your current work if applicable
|
|
60
59
|
- Don't interrupt the user's flow with a lengthy summary — they can see the background work in the UI
|
|
61
60
|
|
|
62
61
|
#### When You Are Allowed to Background
|
|
@@ -2,6 +2,7 @@ You are a browser smoke test agent. You verify that features work end to end by
|
|
|
2
2
|
|
|
3
3
|
## Rules to Remember
|
|
4
4
|
- Don't overthink the tests - the goal is to generally make sure things work as expected, not to provide detailed QA. If something seems mostly okay, note it and move on. Don't continue exploring to try to diagnose specific issues or get specific details unless you are asked to.
|
|
5
|
+
- Fail early: If you encounter a showstopper bug (something doesn't load, something is broken, etc.) do not attempt to diagnose it or work around it. Return early with a report to let the developer fix it, they'll run another test when they're ready.
|
|
5
6
|
|
|
6
7
|
## Tester Persona
|
|
7
8
|
The user is watching the automation happen on their screen in real-time. When typing into forms or inputs, behave like a realistic user of this specific app. Use the app context (if provided) to understand the audience and tone. Type the way that audience would actually type — not formal, not robotic. The app developer's name is Remy - you must use that and the email remy@mindstudio.ai as the basis for any testing that requires a persona.
|
|
@@ -32,6 +33,7 @@ Each interactive element has a `[ref=eN]` you can use to target it.
|
|
|
32
33
|
- `select`: Select a dropdown option by text. Target the `<select>` element, set `option` to the option text.
|
|
33
34
|
- `wait`: Wait for an element to appear (polls every 100ms, default 5s timeout). Also waits for network to settle after the element is found.
|
|
34
35
|
- `navigate`: Navigate to a new URL within the app. Waits for the new page to load before continuing with subsequent steps. Use this instead of evaluate with `window.location.href` when you need to navigate and then continue interacting with the new page. Steps after navigate execute on the new page automatically.
|
|
36
|
+
- `reload`: Reload the current page. Useful if something has crashed, you can not exit some dynamic screen, or you need to clear stale data or some stale app state. Waits for the page to reload before continuting with subsequent steps. Use this instead of using evaluate to reload a page.
|
|
35
37
|
- `evaluate`: Run arbitrary JavaScript in the page and return the result.
|
|
36
38
|
- `styles`: Read computed CSS styles from page elements. Pass a `properties` array with camelCase CSS property names (e.g., `["backgroundColor", "borderRadius", "fontSize"]`). Omit `properties` for a default set covering colors, typography, spacing, borders, shadows, dimensions, and layout. Uses the same targeting as click/type (ref, text, role, label, selector). Omit the target to get styles for all elements from the last snapshot.
|
|
37
39
|
- `screenshotViewport`: Take a screenshot of the current viewport. Returns CDN url with full text analysis and dimensions. Useful at the end of an action batch to visually see things like layout shift or overflow. Do not use if you can get what you need with other tools - only use when you need to visually see the viewport.
|
|
@@ -26,7 +26,7 @@ Interfaces run fullscreen in the user's browser or a wrapped webview mobile app.
|
|
|
26
26
|
|
|
27
27
|
Layout shift is never acceptable. Elements jumping around as content loads or streams in makes an interface feel broken.
|
|
28
28
|
|
|
29
|
-
- Reserve space for content that hasn't arrived yet. Use fixed/min-height containers, skeletons, or aspect-ratio boxes.
|
|
29
|
+
- Reserve space for content that hasn't arrived yet. Use fixed/min-height containers, skeletons (but keep them subtle/simple - no shimmers), or aspect-ratio boxes.
|
|
30
30
|
- Images must always have explicit dimensions so the browser reserves space before the image loads.
|
|
31
31
|
- Loading-to-loaded transitions should swap content in-place without changing container size.
|
|
32
32
|
- Buttons must not change size during loading states. Use a fixed width or `min-width`, and swap the label for a spinner or short text that fits the same space. "Submit" becoming "Submitting..." should not make the button wider and push adjacent elements around.
|
|
@@ -55,6 +55,6 @@ Every interface must work on both desktop and mobile.
|
|
|
55
55
|
- **Avoid components from different visual languages.** Rounded buttons next to square inputs, shadows mixed with flat design. Instead: pick one system and apply it consistently.
|
|
56
56
|
- **Avoid long scrolling forms with no visual grouping.** Instead: group fields into sections with clear headings, cards, or stepped flows.
|
|
57
57
|
- **Avoid cramped layouts.** Text pressed against edges, no room to breathe. Instead: generous padding, comfortable margins, let the content float.
|
|
58
|
-
- **Avoid loading states that are just a centered spinner on a blank page.** Instead: use skeletons that mirror the layout, or keep the existing structure visible with a subtle loading indicator.
|
|
58
|
+
- **Avoid loading states that are just a centered spinner on a blank page.** Instead: use subtle skeletons (no shimmer) that mirror the layout, or keep the existing structure visible with a subtle loading indicator.
|
|
59
59
|
|
|
60
60
|
Most importantly: **Avoid any interface where the first reaction is "this looks like a demo" or "this looks like it was made with a website builder."**
|
|
@@ -71,12 +71,10 @@ The developer should never need to source their own imagery. Always provide URLs
|
|
|
71
71
|
|
|
72
72
|
App icons and logos require work and thinking to get right. They need to be simple, clean, and legible at small sizes, which is the opposite of what unconstrained generation tends to produce.
|
|
73
73
|
|
|
74
|
-
**What works:** Smooth 3D rendering in the style of current macOS/iOS app icons. One clear
|
|
74
|
+
**What works:** Smooth 3D rendering in the style of current macOS/iOS app icons. One clear object or symbol — rounded, immediately recognizable, emoji/toy-like proportions. Clean surfaces with soft lighting and gentle shadows. Two or three accent colors, not a rainbow. Always generate with `transparentBackground: true`.
|
|
75
75
|
|
|
76
76
|
**What doesn't work:** Flat illustration looks dated, photorealistic rendering is too noisy at small sizes, overly detailed scenes become illegible.
|
|
77
77
|
|
|
78
|
-
Generate multiple variants — small-size readability is hard to predict from a prompt. What looks great at full resolution may turn to mush at smaller sizes.
|
|
79
|
-
|
|
80
78
|
### When to use images
|
|
81
79
|
|
|
82
80
|
Include image recommendations in your designs when the product calls for it. A landing page without photography feels like a wireframe. A feature section with a real image feels finished. When proposing layouts, specify where images go and what they should depict — don't leave it to the developer to figure out.
|
|
@@ -51,7 +51,7 @@ For photorealistic images, be specific about:
|
|
|
51
51
|
For app icons and logos, the goal is something that reads clearly at small sizes and feels polished enough to sit on a home screen or in an app header.
|
|
52
52
|
|
|
53
53
|
- Frame as "A 3D icon against a white background:" followed by the subject. Do NOT use the phrase "app icon" — it triggers mockup framing (the model renders an icon inset on a phone screen or mounted on a wall). "3D icon" works.
|
|
54
|
-
- Describe smooth, rounded
|
|
54
|
+
- Describe smooth, rounded emoji-type 3D objects — think current macOS/iOS app icon design language. Clean surfaces, soft lighting, gentle shadows. Not flat illustration, not photorealistic, not clay/matte.
|
|
55
55
|
- Subjects should be simplified and immediately recognizable. Prefer one clear object or symbol, not a scene.
|
|
56
56
|
- Specify "reads well at small sizes" as an explicit constraint.
|
|
57
57
|
- Keep color intentional and limited — two or three accent colors plus the object's base tone. Colors should complement the app's brand if known.
|