flutterflow-mcp 0.1.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.
Files changed (83) hide show
  1. package/README.md +124 -0
  2. package/build/api/flutterflow.d.ts +11 -0
  3. package/build/api/flutterflow.js +61 -0
  4. package/build/index.d.ts +2 -0
  5. package/build/index.js +54 -0
  6. package/build/prompts/dev-workflow.d.ts +2 -0
  7. package/build/prompts/dev-workflow.js +68 -0
  8. package/build/prompts/generate-page.d.ts +2 -0
  9. package/build/prompts/generate-page.js +36 -0
  10. package/build/prompts/inspect-project.d.ts +2 -0
  11. package/build/prompts/inspect-project.js +30 -0
  12. package/build/prompts/modify-component.d.ts +2 -0
  13. package/build/prompts/modify-component.js +39 -0
  14. package/build/resources/docs.d.ts +2 -0
  15. package/build/resources/docs.js +76 -0
  16. package/build/resources/projects.d.ts +3 -0
  17. package/build/resources/projects.js +60 -0
  18. package/build/tools/find-component-usages.d.ts +7 -0
  19. package/build/tools/find-component-usages.js +225 -0
  20. package/build/tools/find-page-navigations.d.ts +7 -0
  21. package/build/tools/find-page-navigations.js +228 -0
  22. package/build/tools/get-component-summary.d.ts +22 -0
  23. package/build/tools/get-component-summary.js +193 -0
  24. package/build/tools/get-page-by-name.d.ts +3 -0
  25. package/build/tools/get-page-by-name.js +56 -0
  26. package/build/tools/get-page-summary.d.ts +22 -0
  27. package/build/tools/get-page-summary.js +220 -0
  28. package/build/tools/get-yaml-docs.d.ts +6 -0
  29. package/build/tools/get-yaml-docs.js +217 -0
  30. package/build/tools/get-yaml.d.ts +3 -0
  31. package/build/tools/get-yaml.js +47 -0
  32. package/build/tools/list-files.d.ts +3 -0
  33. package/build/tools/list-files.js +30 -0
  34. package/build/tools/list-pages.d.ts +25 -0
  35. package/build/tools/list-pages.js +101 -0
  36. package/build/tools/list-projects.d.ts +3 -0
  37. package/build/tools/list-projects.js +19 -0
  38. package/build/tools/sync-project.d.ts +3 -0
  39. package/build/tools/sync-project.js +144 -0
  40. package/build/tools/update-yaml.d.ts +3 -0
  41. package/build/tools/update-yaml.js +24 -0
  42. package/build/tools/validate-yaml.d.ts +3 -0
  43. package/build/tools/validate-yaml.js +22 -0
  44. package/build/utils/cache.d.ts +48 -0
  45. package/build/utils/cache.js +162 -0
  46. package/build/utils/decode-yaml.d.ts +7 -0
  47. package/build/utils/decode-yaml.js +31 -0
  48. package/build/utils/page-summary/action-summarizer.d.ts +9 -0
  49. package/build/utils/page-summary/action-summarizer.js +291 -0
  50. package/build/utils/page-summary/formatter.d.ts +13 -0
  51. package/build/utils/page-summary/formatter.js +121 -0
  52. package/build/utils/page-summary/node-extractor.d.ts +17 -0
  53. package/build/utils/page-summary/node-extractor.js +207 -0
  54. package/build/utils/page-summary/tree-walker.d.ts +6 -0
  55. package/build/utils/page-summary/tree-walker.js +55 -0
  56. package/build/utils/page-summary/types.d.ts +56 -0
  57. package/build/utils/page-summary/types.js +4 -0
  58. package/build/utils/parse-folders.d.ts +9 -0
  59. package/build/utils/parse-folders.js +29 -0
  60. package/docs/ff-yaml/00-overview.md +137 -0
  61. package/docs/ff-yaml/01-project-files.md +513 -0
  62. package/docs/ff-yaml/02-pages.md +572 -0
  63. package/docs/ff-yaml/03-components.md +413 -0
  64. package/docs/ff-yaml/04-widgets/README.md +122 -0
  65. package/docs/ff-yaml/04-widgets/button.md +444 -0
  66. package/docs/ff-yaml/04-widgets/container.md +358 -0
  67. package/docs/ff-yaml/04-widgets/dropdown.md +579 -0
  68. package/docs/ff-yaml/04-widgets/form.md +256 -0
  69. package/docs/ff-yaml/04-widgets/image.md +276 -0
  70. package/docs/ff-yaml/04-widgets/layout.md +355 -0
  71. package/docs/ff-yaml/04-widgets/misc.md +553 -0
  72. package/docs/ff-yaml/04-widgets/text-field.md +326 -0
  73. package/docs/ff-yaml/04-widgets/text.md +302 -0
  74. package/docs/ff-yaml/05-actions.md +843 -0
  75. package/docs/ff-yaml/06-variables.md +834 -0
  76. package/docs/ff-yaml/07-data.md +591 -0
  77. package/docs/ff-yaml/08-custom-code.md +715 -0
  78. package/docs/ff-yaml/09-theming.md +592 -0
  79. package/docs/ff-yaml/10-editing-guide.md +454 -0
  80. package/docs/ff-yaml/README.md +105 -0
  81. package/package.json +55 -0
  82. package/skills/ff-widget-patterns.md +141 -0
  83. package/skills/ff-yaml-dev.md +58 -0
@@ -0,0 +1,141 @@
1
+ # FlutterFlow Widget Patterns Skill
2
+
3
+ Quick reference for common FlutterFlow widget YAML patterns. Use `get_yaml_docs` for full schemas.
4
+
5
+ ## Value Pattern
6
+
7
+ Most FF YAML properties follow this structure:
8
+
9
+ ```yaml
10
+ propertyNameValue:
11
+ inputValue: "the value"
12
+ mostRecentInputValue: "the value" # must match inputValue
13
+ ```
14
+
15
+ **Exceptions** — these only accept `inputValue`:
16
+ - `fontWeightValue`
17
+ - `fontSizeValue`
18
+
19
+ ## Common Widget Snippets
20
+
21
+ ### Text Widget
22
+ ```yaml
23
+ type: Text
24
+ properties:
25
+ textValue:
26
+ inputValue: "Hello World"
27
+ mostRecentInputValue: "Hello World"
28
+ textStyle:
29
+ fontSizeValue:
30
+ inputValue: 16 # no mostRecentInputValue
31
+ fontWeightValue:
32
+ inputValue: w600 # no mostRecentInputValue
33
+ colorValue:
34
+ inputValue: "ff000000"
35
+ mostRecentInputValue: "ff000000"
36
+ ```
37
+
38
+ ### Container with Padding
39
+ ```yaml
40
+ type: Container
41
+ properties:
42
+ widthValue:
43
+ inputValue: "double.infinity"
44
+ mostRecentInputValue: "double.infinity"
45
+ decoration:
46
+ colorValue:
47
+ inputValue: "ffFFFFFF"
48
+ mostRecentInputValue: "ffFFFFFF"
49
+ borderRadiusValue:
50
+ inputValue: 12
51
+ mostRecentInputValue: 12
52
+ paddingValue:
53
+ inputValue: "16,16,16,16"
54
+ mostRecentInputValue: "16,16,16,16"
55
+ ```
56
+
57
+ ### Image (Network)
58
+ ```yaml
59
+ type: Image
60
+ properties:
61
+ imageTypeValue:
62
+ inputValue: FF_IMAGE_TYPE_NETWORK
63
+ mostRecentInputValue: FF_IMAGE_TYPE_NETWORK
64
+ pathValue:
65
+ inputValue: "https://example.com/image.jpg"
66
+ mostRecentInputValue: "https://example.com/image.jpg"
67
+ widthValue:
68
+ inputValue: "double.infinity"
69
+ mostRecentInputValue: "double.infinity"
70
+ heightValue:
71
+ inputValue: 200
72
+ mostRecentInputValue: 200
73
+ fitValue:
74
+ inputValue: COVER
75
+ mostRecentInputValue: COVER
76
+ ```
77
+
78
+ ### Image (Asset)
79
+ ```yaml
80
+ type: Image
81
+ properties:
82
+ imageTypeValue:
83
+ inputValue: FF_IMAGE_TYPE_ASSET
84
+ mostRecentInputValue: FF_IMAGE_TYPE_ASSET
85
+ pathValue:
86
+ inputValue: "assets/images/logo.svg"
87
+ mostRecentInputValue: "assets/images/logo.svg"
88
+ ```
89
+
90
+ ### Button
91
+ ```yaml
92
+ type: Button
93
+ properties:
94
+ textValue:
95
+ inputValue: "Click Me"
96
+ mostRecentInputValue: "Click Me"
97
+ buttonType: FILLED
98
+ optionsValue:
99
+ elevationValue:
100
+ inputValue: 2
101
+ mostRecentInputValue: 2
102
+ heightValue:
103
+ inputValue: 48
104
+ mostRecentInputValue: 48
105
+ borderRadiusValue:
106
+ inputValue: 8
107
+ mostRecentInputValue: 8
108
+ ```
109
+
110
+ ### Column (Shrink-to-Content)
111
+ ```yaml
112
+ type: Column
113
+ properties:
114
+ minSizeValue:
115
+ inputValue: true # equivalent to MainAxisSize.min
116
+ crossAxisAlignmentValue:
117
+ inputValue: CENTER
118
+ mostRecentInputValue: CENTER
119
+ ```
120
+
121
+ ### AppBar
122
+ ```yaml
123
+ type: AppBar
124
+ properties:
125
+ templateType: LARGE_HEADER # only valid value
126
+ toolbarHeight: 60 # control actual height
127
+ titleValue:
128
+ inputValue: "Page Title"
129
+ mostRecentInputValue: "Page Title"
130
+ ```
131
+
132
+ ## Elevation vs Shadow
133
+
134
+ Prefer `elevationValue` for Material-style card shadows:
135
+ ```yaml
136
+ elevationValue:
137
+ inputValue: 4
138
+ mostRecentInputValue: 4
139
+ ```
140
+
141
+ For custom shadows use `boxShadow` on the container decoration.
@@ -0,0 +1,58 @@
1
+ # FlutterFlow YAML Development Skill
2
+
3
+ You are developing a FlutterFlow app using MCP tools. This skill provides the workflow and rules for reading, editing, and creating FlutterFlow pages and components through YAML.
4
+
5
+ ## Documentation
6
+
7
+ Use the `get_yaml_docs` tool to look up any schema, pattern, or convention before writing YAML:
8
+
9
+ - `get_yaml_docs(topic: "Button")` — Widget schemas (Button, Text, TextField, Container, etc.)
10
+ - `get_yaml_docs(topic: "actions")` — Action chains, triggers, navigation
11
+ - `get_yaml_docs(topic: "variables")` — Data binding, variable sources
12
+ - `get_yaml_docs(topic: "theming")` — Colors, typography, dimensions
13
+ - `get_yaml_docs(topic: "editing")` — Read/edit/add workflows and anti-patterns
14
+ - `get_yaml_docs()` — Full index of all available docs
15
+
16
+ Always consult the docs before writing YAML. They contain validated schemas, field references, enum values, and real examples.
17
+
18
+ ## Workflow
19
+
20
+ ### Reading / Inspecting
21
+ ```
22
+ list_projects → sync_project → get_page_summary / get_component_summary
23
+ ```
24
+
25
+ ### Editing Existing Widgets
26
+ ```
27
+ list_pages → get_page_by_name → (node-level fetch) → validate_yaml → update_project_yaml
28
+ ```
29
+
30
+ ### Adding New Widgets
31
+ ```
32
+ list_pages → get_page_by_name → update widget-tree-outline + push individual node files → validate_yaml → update_project_yaml
33
+ ```
34
+
35
+ ### Finding Usages
36
+ ```
37
+ find_component_usages(componentName: "MyComponent") — where is a component used?
38
+ find_page_navigations(pageName: "MyPage") — what navigates to a page?
39
+ ```
40
+
41
+ ## Critical YAML Rules
42
+
43
+ 1. **Always update both `inputValue` AND `mostRecentInputValue`** — they must stay in sync.
44
+ - **Exceptions:** `fontWeightValue` and `fontSizeValue` only accept `inputValue`.
45
+ 2. **Use node-level file keys** for targeted edits, not the full page YAML.
46
+ 3. **Always validate before pushing** — call `validate_yaml` first.
47
+ 4. **Adding widgets requires node-level files** — push the tree outline + individual nodes together.
48
+ 5. **Column has no `mainAxisSize`** — use `minSizeValue: { inputValue: true }` instead.
49
+ 6. **AppBar `templateType`** — only `LARGE_HEADER` is valid. Control height via `toolbarHeight`.
50
+ 7. **TextField keyboard types** — use `EMAIL_ADDRESS`, not `EMAIL`.
51
+
52
+ ## Anti-Patterns
53
+
54
+ - Do NOT call `list_project_files` to find pages — use `list_pages` instead.
55
+ - Do NOT fetch pages one-by-one to browse — use `sync_project` + `get_page_summary`.
56
+ - Do NOT edit full page YAML for a single widget — use node-level file keys.
57
+ - Do NOT guess YAML field names — use `get_yaml_docs` to look them up.
58
+ - Do NOT embed widget children inline in the page scaffold YAML — they will be stripped.