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: src/mcp/prompts/core/deploy.ts
+51-8Lines changed: 51 additions & 8 deletions
Original file line number
Diff line number
Diff line change
@@ -43,14 +43,57 @@ ${prompt || "<the user didn't supply specific instructions>"}
43
43
Follow the steps below taking note of any user instructions provided above.
44
44
45
45
1. If there is no active user, prompt the user to run \`firebase login\` in an interactive terminal before continuing.
46
-
2. If there is no \`firebase.json\` file and the current workspace is a static web application, manually create a \`firebase.json\` with \`"hosting"\` configuration based on the current directory's web app configuration. Add a \`{"hosting": {"predeploy": "<build_script>"}}\` config to build before deploying.
47
-
3. If there is no active project, ask the user if they want to use an existing project or create a new one.
48
-
3a. If create a new one, use the \`firebase_create_project\` tool.
49
-
3b. If they want to use an existing one, ask them for a project id (the \`firebase_list_projects\` tool may be helpful).
50
-
4. Only after making sure Firebase has been initialized, run the \`firebase deploy\` shell command to perform the deploy. This may take a few minutes.
51
-
5. If the deploy has errors, attempt to fix them and ask the user clarifying questions as needed.
52
-
6. If the deploy needs \`--force\` to run successfully, ALWAYS prompt the user before running \`firebase deploy --force\`.
53
-
7. If only one specific feature is failing, use command \`firebase deploy --only <feature>\` as you debug.
46
+
2. Analyze the source code in the current working directory to determine if this is a web app. If it isn't, end this process and tell the user "The /deploy command only works with web apps."
47
+
3. Analyze the source code in the current working directory to determine if the app requires a server for Server-Side Rendering (SSR). This will determine whether or not to use Firebase App Hosting. Here are instructions to determine if the app needs a server:
48
+
Objective: Analyze the provided codebase files to determine if the web application requires a backend for Server-Side Rendering (SSR). Your final output must be a clear "Yes" or "No" followed by a brief justification.
49
+
Primary Analysis: package.json
50
+
This is the most critical step. If the package.json file is present, perform the following checks in order.
51
+
Parse package.json: Locate and read the contents of the package.json file.
52
+
Check Dependencies:
53
+
Examine the dependencies and devDependencies objects.
54
+
If any of the following packages are listed as keys, you can conclude the app uses SSR.
55
+
next
56
+
nuxt
57
+
@sveltejs/kit
58
+
@angular/ssr
59
+
remix
60
+
If a match is found, proceed directly to the Final Determination step.
61
+
Check Scripts: If no framework dependency was found, examine the scripts object.
62
+
Look for scripts (commonly start or serve) that execute a server process.
If such a script is found, conclude the app uses SSR and proceed to the Final Determination step.
65
+
Secondary Analysis: Project File Structure
66
+
Perform this analysis only if package.json is missing or inconclusive.
67
+
Scan for Framework-Specific Files and Directories: Search the codebase for the following patterns:
68
+
Next.js: A directory named app/ or pages/. Inside these, check for files containing the function name getServerSideProps.
69
+
Nuxt.js: A directory named server/.
70
+
SvelteKit: Any file ending with the .server.js suffix (e.g., +page.server.js, +layout.server.js).
71
+
Angular: A file named server.ts.
72
+
If any of these patterns are found, conclude the app uses SSR.
73
+
Final Determination
74
+
State Your Conclusion: Begin your response with a definitive "Yes" or "No".
75
+
Yes: The application requires a backend for SSR.
76
+
No: The application does not appear to require a backend for SSR and is likely a static or client-side rendered app.
77
+
Provide Justification: Follow your conclusion with a single sentence explaining the evidence.
78
+
Example (Yes): "Yes, the project requires SSR, as evidenced by the next dependency in package.json."
79
+
Example (Yes): "Yes, the project requires SSR, as evidenced by the presence of a +page.server.js file."
80
+
Example (No): "No, there are no dependencies or file structures that indicate the use of a server-side rendering framework."
81
+
4. If there is no \`firebase.json\` file, manually create one based on whether the app requires SSR:
82
+
4a. If the app requires SSR, configure Firebase App Hosting:
83
+
Create \`firebase.json\ with an "apphosting" configuration, setting backendId to the app's name in package.json: \`{"apphosting": {"backendId": "<backendId>"}}\
84
+
4b. If the app does NOT require SSR, configure Firebase Hosting:
85
+
Create \`firebase.json\ with a "hosting" configuration. Add a \`{"hosting": {"predeploy": "<build_script>"}}\` config to build before deploying.
86
+
5. Check if there is an active Firebase project for this environment (the \`firebase_get_environment\` tool may be helpful). If there is, proceed using that project. If there is not an active project, give the user two options: Use an existing Firebase project or Create a new one. Wait for their response before proceeding.
87
+
5a. If the user chooses to use an existing Firebase project, the \`firebase_list_projects\` tool may be helpful. Set the selected project as the active project (the \`firebase_update_environment\` tool may be helpful).
88
+
5b. If the user chooses to create a new project, use the \`firebase_create_project \` tool. Then set the new project as the active project (the \`firebase_update_environment\` tool may be helpful).
89
+
6. If firebase.json contains an "apphosting" configuration, check if a backend exists matching the provided backendId (the \`apphosting_list_backends\` tool may be helpful).
90
+
If it doesn't exist, create one by running the \`firebase apphosting:backends:create --backend <backendId> --primary-region us-central1 --root-dir .\` shell.
91
+
7. Only after making sure Firebase has been initialized, run the \`firebase deploy\` shell command to perform the deploy. This may take a few minutes.
92
+
7a. If deploying to apphosting, tell the user the deployment will take a few minutes, and they can monitor deployment progress in the Firebase console: \`https://console.firebase.google.com/project/<projectId>/apphosting\`
93
+
8. If the deploy has errors, attempt to fix them and ask the user clarifying questions as needed.
94
+
9. If the deploy needs \`--force\` to run successfully, ALWAYS prompt the user before running \`firebase deploy --force\`.
95
+
10. If only one specific feature is failing, use command \`firebase deploy --only <feature>\` as you debug.
0 commit comments