create-proto 0.5.1 → 0.6.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/package.json +3 -3
- package/template/CLAUDE.md +9 -0
- package/template/package.json +35 -32
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-proto",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "Scaffold a new Proto prototype: `npm create proto@latest myapp`. Designer-first native iOS prototyping environment that pairs with Claude Code.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -35,14 +35,14 @@
|
|
|
35
35
|
"LICENSE"
|
|
36
36
|
],
|
|
37
37
|
"engines": {
|
|
38
|
-
"node": ">=
|
|
38
|
+
"node": ">=20"
|
|
39
39
|
},
|
|
40
40
|
"publishConfig": {
|
|
41
41
|
"access": "public"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@clack/prompts": "^0.7.0",
|
|
45
|
-
"@sherizan/proto-cli": "^0.
|
|
45
|
+
"@sherizan/proto-cli": "^0.6.0",
|
|
46
46
|
"fs-extra": "^11.2.0",
|
|
47
47
|
"qrcode-terminal": "^0.12.0",
|
|
48
48
|
"validate-npm-package-name": "^5.0.1"
|
package/template/CLAUDE.md
CHANGED
|
@@ -106,6 +106,15 @@ When the designer says "use real data", follow this shape so every screen handle
|
|
|
106
106
|
|
|
107
107
|
**Keyless APIs** (no key, CORS-open, good for prototypes): Open-Meteo (weather/marine/air), REST Countries, Open Library, PokéAPI, Art Institute of Chicago, TheMealDB, Wikipedia REST. Prefer these so "make it real" stays a one-prompt step. If a source needs a key, tell the designer that key goes in `proto.config.js`, nowhere else.
|
|
108
108
|
|
|
109
|
+
## Two fidelity tiers — local vs shared
|
|
110
|
+
|
|
111
|
+
Everything here runs at full fidelity on the designer's device. But when a prototype is **shared**, it renders from a lightweight description (a manifest) inside a tiny native viewer — so a shared prototype can only show what that viewer already contains. Two tiers, on purpose:
|
|
112
|
+
|
|
113
|
+
- **Shared fidelity** maps cleanly to the core building blocks — `Screen`, `Stack`, `Row`, `Text`, `Card`, `Button`, `Toggle`, `Divider`, `Modal` — with interactions limited to: go to another screen, go back, flip a toggle, open/close a modal. Prefer these for screens the designer will share.
|
|
114
|
+
- **Local-only fidelity** is everything richer: gestures, `motion`/`gestures`/`canvas`/`svg`/`lottie`, live data fetching, anything with custom logic. Great on-device; it just won't appear in a shared link.
|
|
115
|
+
|
|
116
|
+
You don't have to limit yourself — build what the designer asks for. Just know that the more a screen leans on local-only fidelity, the less of it survives into a shared prototype. When in doubt, keep shared-bound screens close to the core building blocks and their simple interactions.
|
|
117
|
+
|
|
109
118
|
## When modifying
|
|
110
119
|
|
|
111
120
|
Read the file first, then make precise, targeted edits to the parts that change. Keep edits scoped — don't rewrite a whole file when a few lines change.
|
package/template/package.json
CHANGED
|
@@ -9,46 +9,49 @@
|
|
|
9
9
|
"proto": "proto"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@expo/ui": "
|
|
12
|
+
"@expo/ui": "~56.0.16",
|
|
13
13
|
"@react-native-async-storage/async-storage": "2.2.0",
|
|
14
14
|
"@shopify/flash-list": "2.0.2",
|
|
15
|
-
"@shopify/react-native-skia": "2.
|
|
16
|
-
"expo": "~
|
|
17
|
-
"expo-
|
|
18
|
-
"expo-
|
|
19
|
-
"expo-
|
|
20
|
-
"expo-
|
|
21
|
-
"expo-
|
|
22
|
-
"expo-
|
|
23
|
-
"expo-
|
|
24
|
-
"expo-
|
|
25
|
-
"expo-
|
|
26
|
-
"expo-
|
|
27
|
-
"expo-
|
|
28
|
-
"expo-
|
|
29
|
-
"expo-
|
|
30
|
-
"expo-
|
|
31
|
-
"expo-
|
|
32
|
-
"expo-
|
|
15
|
+
"@shopify/react-native-skia": "2.6.2",
|
|
16
|
+
"expo": "~56.0.0",
|
|
17
|
+
"expo-asset": "~56.0.16",
|
|
18
|
+
"expo-audio": "~56.0.11",
|
|
19
|
+
"expo-camera": "~56.0.7",
|
|
20
|
+
"expo-clipboard": "~56.0.4",
|
|
21
|
+
"expo-constants": "~56.0.17",
|
|
22
|
+
"expo-dev-client": "~56.0.19",
|
|
23
|
+
"expo-font": "~56.0.5",
|
|
24
|
+
"expo-glass-effect": "~56.0.4",
|
|
25
|
+
"expo-haptics": "~56.0.3",
|
|
26
|
+
"expo-image": "~56.0.10",
|
|
27
|
+
"expo-image-picker": "~56.0.16",
|
|
28
|
+
"expo-linear-gradient": "~56.0.4",
|
|
29
|
+
"expo-linking": "~56.0.13",
|
|
30
|
+
"expo-location": "~56.0.16",
|
|
31
|
+
"expo-maps": "~56.0.6",
|
|
32
|
+
"expo-router": "~56.2.9",
|
|
33
|
+
"expo-status-bar": "~56.0.4",
|
|
34
|
+
"expo-symbols": "~56.0.6",
|
|
35
|
+
"expo-video": "~56.1.2",
|
|
33
36
|
"lottie-react-native": "~7.3.4",
|
|
34
|
-
"react": "19.2.
|
|
35
|
-
"react-dom": "19.2.
|
|
36
|
-
"react-native": "0.
|
|
37
|
+
"react": "19.2.3",
|
|
38
|
+
"react-dom": "19.2.3",
|
|
39
|
+
"react-native": "0.85.3",
|
|
37
40
|
"react-native-ease": "^0.7.2",
|
|
38
|
-
"react-native-gesture-handler": "~2.
|
|
39
|
-
"react-native-reanimated": "4.
|
|
40
|
-
"react-native-safe-area-context": "5.
|
|
41
|
-
"react-native-screens": "4.
|
|
42
|
-
"react-native-svg": "15.15.
|
|
43
|
-
"react-native-webview": "13.16.
|
|
44
|
-
"react-native-worklets": "0.
|
|
41
|
+
"react-native-gesture-handler": "~2.31.1",
|
|
42
|
+
"react-native-reanimated": "4.3.1",
|
|
43
|
+
"react-native-safe-area-context": "~5.7.0",
|
|
44
|
+
"react-native-screens": "4.25.2",
|
|
45
|
+
"react-native-svg": "15.15.4",
|
|
46
|
+
"react-native-webview": "13.16.1",
|
|
47
|
+
"react-native-worklets": "0.8.3"
|
|
45
48
|
},
|
|
46
49
|
"devDependencies": {
|
|
47
50
|
"@babel/core": "^7.24.0",
|
|
48
|
-
"@sherizan/proto-cli": "^0.
|
|
51
|
+
"@sherizan/proto-cli": "^0.6.0",
|
|
49
52
|
"@types/react": "~19.2.15",
|
|
50
|
-
"babel-preset-expo": "~
|
|
53
|
+
"babel-preset-expo": "~56.0.0",
|
|
51
54
|
"react-native-svg-transformer": "^1.5.0",
|
|
52
|
-
"typescript": "
|
|
55
|
+
"typescript": "~6.0.3"
|
|
53
56
|
}
|
|
54
57
|
}
|