First, read the requirements:
, and the conclusions already established in the current conversation. Extract the following constraints from them; for any that are missing and could change the selection, ask one round of questions (write each question as
, followed by the question and
).
- Usage region: Mainland China, overseas, or both
- Platform and scale: Web / mobile / desktop; number of users and expected growth
- Data: whether login, synchronization, and multi-user collaboration are needed; local storage or cloud storage
- What the user can maintain hands-on: ask based on their experience (have they deployed a website? managed a database? used environment variables?), not by asking for a self-assessment
- Budget and hard constraints: ongoing costs, specified services, network, and compliance
Match the wording to the user’s level and adjust it based on their answers. For beginners, add a plain-language explanation the first time each technical term appears.
For pricing, free tiers, regional availability, and official support, check the current official pages and include links; figures recalled from memory are often outdated.
Whenever the requirements include a mature library or ready-made service that can solve part of the job, use it directly instead of building it yourself. A solution is “mature” if it meets the requirements, has tests, and is actively maintained. Also account for supply-chain risks: prefer solutions with reliable backing, such as those maintained by well-known companies, foundations, or teams with many users; verify package names carefully; and do not install small packages from unknown sources. Between self-hosting an open-source solution and using a hosted service, choose the one the user can actually maintain.
Present two or three options, ranked by “mature and reliable technology (boring technology)”. The first option should be the simplest one the user can manage. Include the following for each option:
### Option A: One-line name
- Tech stack:
- Why it fits:
- Development difficulty / maintenance cost:
- Whether it works smoothly in the target region:
- What you will need to manage yourself: where to store secrets, permission rules, servers that need patching; write “None” if there are none
- Main risks:
Finally, write “Recommendation: Option X” and the deciding factor, then list any open questions that could still change the recommendation (write “None” if there are none).
After the user selects an option, append the option and rationale to the decisions file. If no such file exists, create
docs/decisions-<English topic>.md
. If writing the file is not possible, output copyable Markdown.