visual-spec-skill
Visual Spec Skill
Analyzes visual specifications based on user input and turns brief business requests into structured requirement output.
When to Use
Invoke this skill when:
- Business side provided a very simple described requirements.
- User runs
/vspec:newto start a new requirement analysis flow.
What This Skill Defines
- Fill in details based on scenario-based-facilitation method.
- Design the data models.
- Generate UI mockups based on the details filled in.
- Generate business logic details in visual formats.
Commands
/vspec:new
Use this command to create a new requirement analysis session.
Language:
- Read
/scheme.yamlselected.language(supportsen,zh-CN,ja; default toenif missing/invalid). - If the command argument or input explicitly provides
lang=<en|zh-CN|ja>, use that value for this run and updateselected.languageto it (update only that field). - When
selected.language=en, all headings in/specs/background/original.mdmust be English; normalize any non-English headings to:# Raw Requirement,# Summary,# Business Context,# Core Features,# Pages & Interactions,# Data Model,# Business Logic,# Risks & Assumptions,# Open Questions.
Flow:
0. Ensure /docs/ exists, and ensure subfolders exist:
/docs/legacy//docs/current//docs/refine//docs/dependencies/- Do NOT create
/docs/change/(it is deprecated). 0.2 If the user passeslang=<en|zh-CN|ja>in the command arguments, set/scheme.yamlselected.languageto that value (update only that field, keep other fields and formatting unchanged). 0.5 Create editable project constraints so the user can tweak them early (do not overwrite if they already exist): - Create
/scheme.yamlwith defaults (prototype stack selection + catalog) if missing - Create
/prototype_ui_convention.md(same directory as/scheme.yaml) if missing
- Ask the user to input the original requirement.
- When the user presses Enter, treat the input as the raw requirement source.
- Load the prompt file at
prompts/vspec_new/background.md. - Use that prompt to analyze the requirement and expand the business context.
- Write the raw requirement and background analysis output to
/specs/background/original.md. - Ask the user to answer the questions from the Open Questions section (use the section title in the selected language).
- After the user replies, load
prompts/vspec_new/stakeholders.mdto analyze stakeholders. - Write the stakeholder result to
/specs/background/stakeholder.md(markdown table). - Load
prompts/vspec_new/roles.mdto analyze system user roles (direct users) and their work tasks. - Write the roles result to
/specs/background/roles.md. - Load
prompts/vspec_new/terms.mdto extract key terms and definitions. - Write the terms result to
/specs/background/terms.md(markdown table). - Load
prompts/vspec_new/flows.mdto analyze business workflows and generate PlantUML swimlane diagrams. - Write the diagrams to
/specs/flows/*.puml. - Load
prompts/vspec_new/scenarios.mdto enumerate business scenarios by node combinations. - Write the scenarios result to
/specs/background/scenarios.md(markdown table). - Load
prompts/vspec_new/details_pre_post.mdto create per-node detail folders and generatepre_post.mdfor each node. - Load
prompts/vspec_new/details_constraints.mdto generateconstraints.mdfor each node. - Load
prompts/vspec_new/details_variations.mdto generatevariations.mdfor each node. - Load
prompts/vspec_new/details_boundaries.mdto generateboundaries.mdfor each node. - Load
prompts/vspec_new/details_symmetry.mdto generatesymmetry.mdfor each node. - Ensure the per-node outputs are written under
/specs/background/scenario_details/. - Load
prompts/vspec_new/dependencies.mdto analyze external dependency systems. - Write the dependencies result to
/specs/background/dependencies.md. - Load
prompts/vspec_new/functions.mdto generate feature/function lists grouped by modules and external dependency systems. - Write the function lists to
/specs/functions/. - Load
prompts/vspec_new/questions.mdto generate question lists and required business materials. - Write the questions result to
/specs/background/questions.md(markdown list). - Load
prompts/harness/post_new_verify.mdto validate whether functions and scenario_details are complete (login/config/master-data/approval). If it outputs any issues, show the issue list and stop. - Return the structured analysis result and continue to the next requirement-design step.
/vspec:refine
Use this command to refine and update the requirement based on refine materials stored under /docs/refine/, or based on one or more input files/directories provided as command arguments.
Flow:
0. Ensure /specs/details/ exists and is non-empty; if missing, stop and ask the user to run /vspec:detail first.
- Read refine inputs:
- If command arguments are provided, treat them as refine input sources (files/directories).
- Otherwise, read
/docs/refine/(prefer/docs/refine/file_list.mdas the entry if present; else read files in name order).
- If
prompts/vspec_refine/refine.mdis missing, stop immediately and do nothing. - Load
prompts/vspec_refine/refine.mdto apply the refinement, update the canonical requirement, and update impacted artifacts. - Append the refinement result to
/specs/background/original.md, and update impacted/specs/details/and/specs/prototypes/accordingly.
/vspec:refine-q
Use this command to refine and update the requirement based on answered questions.
Flow:
- If
/specs/background/questions.mdis missing, stop immediately and do nothing. - If
/specs/background/questions.mdcontains no pending/unanswered questions, stop immediately and do nothing. - Read
/specs/background/questions.mdand pick answered items. - Load
prompts/vspec_refine/refine_q.mdto merge answers into the canonical requirement. - Append the refinement result to
/specs/background/original.md. - Update
/specs/background/questions.mdto mark items that are treated as answered in this run:- Wrap the answer and status values with
<mark>...</mark>(use the field names in the selected language) so answered items are visually highlighted.
- Wrap the answer and status values with
/vspec:more-q
Use this command to generate more clarification questions and append them to /specs/background/questions.md.
Flow:
- If
/specs/background/questions.mdis missing, stop and ask the user to run/vspec:newfirst. - Load
prompts/vspec_more_q/more_q.mdto generate additional questions (avoid duplicates and continue numbering). - Append the new items to
/specs/background/questions.md(do not rewrite existing items). - Provide a clear instruction for the user to answer the questions and then run
/vspec:refine-q.
/vspec:detail
Use this command to expand requirement details based on the function list.
Language:
- Read
/scheme.yamlselected.language(supportsen,zh-CN,ja; default toenif missing/invalid). - All generated spec documents under
/specs/must use the selected language consistently (headings, tables, field descriptions, statuses, button names, messages).
Flow:
- Read the feature/function list from
/specs/functions/*.- You must iterate every function row across all files under
/specs/functions/(not just core.md), so no module or external-system function is missed.
- You must iterate every function row across all files under
- Read supporting artifacts when available:
/specs/background/*,/specs/flows/*.puml,/specs/background/scenario_details/,/specs/background/roles.md, and existing/specs/models/*.md(if any). - For each function (page or non-page job), first determine which detail artifacts are actually involved, then only generate those artifacts; do not generate documents for non-involved parts.
- Coverage requirement: for every function row you iterate, you must generate at least
rbac.mdanddata_permission.md. If you cannot, output an explicit error and stop (do not silently skip). - Always generate the baseline docs:
rbac.md: RBAC permissions down to page areas and controls.data_permission.md: data permission rules and scope.
- Page-only:
page_load.md: page loading logic.interaction.md: page interaction logic.validation_matrix.md: validation logic in matrix format (only for submit-type pages/actions; if the page has no submit/save/approve/reject/cancel/change actions, skip).post_submit_check.md: checks after submit (if the page has submit).post_submit_processing.md: processing logic after submit (if the page has submit).post_submit_navigation.md: post-submit return and navigation (if the page has submit).
- Conditional (generate only if involved by the current function’s logic/scenarios/models/dependencies):
logging_matrix.md: operation/audit logging (only when the business requires change history retention, compliance audit, or non-repudiation; otherwise skip).decision_matrix.md: decision matrix (决策矩阵) for operation availability under each status (if there is a status machine and operations vary by status/role).notification_matrix.md: notifications (if there is any notification requirement).mq.md: MQ topics/events/message schema/reliability details (if there is async events, queues, or cross-system eventing).file_import.md: file import details (if there is any import entry/requirement).file_export.md: file export details (if there is any export entry/requirement).formula.md: calculation formulas and metric semantics (if there are any calculations/metrics).expression_tree.md: expression tree (HTML) (if there is multi-level nested branching logic).
code_rules.md: numbering/code generation rules (if any codes/serial numbers are generated/assigned).payment.md: payment and refund details (if there is any payment/refund/settlement/reconciliation logic).auth.md: account/login details (if there is any non-SSO login/account/password flow).judgemental_matrix.md: judgemental matrix (判定矩阵) for multi-factor logic branching (if 2+ factors jointly decide outcomes).- Module-level (generate at most once per module, and only if involved):
timeline.md: time-axis visualization (HTML) for overall flow impact analysis (only when there is long time-span logic that affects flow decisions, e.g. effective/expiry, deadlines, grace periods, cross-day rules).state_machine.md: status list + transitions + PlantUML state diagram (overall; not per function).nfp.md: non-functional requirements summary for the module (overall; not per function).cron_job.md: scheduled jobs summary for the module (overall; not per function).
- Coverage requirement: for every function row you iterate, you must generate at least
- Write only the generated (involved) detail documents:
- Per-function:
/specs/details/<module_slug>/<logic_type>/<function_slug>.(md|html) - Module-level:
/specs/details/<module_slug>/<logic_type>/<module_slug>.(md|html)
- Per-function:
/vspec:verify
Use this command to generate models and a runnable prototype for validation.
Language:
- Read
/scheme.yamlselected.language(supportsen,zh-CN,ja; default toenif missing/invalid). - Generate
/specs/models/docs and all prototype UI copy in the selected language consistently.
Flow:
0. Ensure /specs/details/ exists and is non-empty; if missing, stop and output the prerequisite message: “Run /vspec:detail to generate /specs/details/ before /vspec:verify”.
- If
/specs/background/questions.mdexists and contains unanswered questions, ask the user to answer them before continuing (allow skip per question, but ensure none remains unanswered). - Load
prompts/vspec_verify/model.mdto generate data models. - Write model files to
/specs/models/*.md. - Generate a runnable page prototype based on functions, details, models, and roles; the prototype tech stack can be selected via
/scheme.yaml(auto-created with defaults if missing).- Load
prompts/vspec_verify/prototype.mdfor the prototype generation rules (must followscheme.yamlstack; do not output html-only).
- Load
- Write the prototype to
/specs/prototypes/. - Load
prompts/harness/post_verify_stack_verify.mdto validate whether the prototype frontend stack matches/scheme.yaml. If it outputs any issues, show the issue list and stop. - Load
prompts/vspec_verify/validation.mdto generate a scenario validation web page. - Write the validation page to
/specs/prototypes/and provide ascenario.htmlentry for access. - Load
prompts/vspec_verify/entries.mdto generate an entry page and write it to/specs/prototypes/entries.html(do not link it from any menu/header). - Load
prompts/harness/post_verify_mobile_selection_check.mdto ensure mobile data selection uses a picker page (list-based), not dropdown Select. If it outputs any issues, show the issue list and stop. - Load
prompts/harness/post_verify_price_format_check.mdto validate money/price formatting (right aligned, 2 decimals, thousand separators). If it outputs any issues, show the issue list and stop. - Load
prompts/harness/post_verify_click_check.mdto detect clickable UI elements that do nothing. If it outputs any issues, show the issue list and stop. - Load
prompts/harness/post_verify_verify.mdto validate the prototype completeness. If it outputs any issues, show the issue list and stop.
/vspec:proto-survey
Use this command to generate a complete Survey (questionnaire) prototype (Web admin + Mobile filling) on top of an existing prototype project.
Flow:
0. If /specs/prototypes/ is missing or empty, stop and ask the user to run /vspec:verify first.
- Read
/specs/functions/*,/specs/details/,/specs/models/*.md,/specs/background/roles.md,/specs/background/dependencies.md, and/scheme.yaml(if any). - Load
prompts/vspec_verify/prototype_survey.mdto generate/update survey pages, routes, and mock data. - Write only survey-related incremental changes and keep the prototype runnable.
/vspec:proto-auth
Use this command to generate a complete non-SSO auth/account page set (Web + Mobile) on top of an existing prototype project.
Flow:
0. If /specs/prototypes/ is missing or empty, stop and ask the user to run /vspec:verify first.
- Read
/specs/functions/*,/specs/details/,/specs/background/roles.md,/specs/background/dependencies.md, and/scheme.yaml(if any). - Load
prompts/vspec_verify/prototype_auth.mdto generate/update auth pages, routes, session mock, and route guards. - Write only auth-related incremental changes and keep the prototype runnable.
/vspec:qc
Use this command to run a quality check on the generated requirement artifacts under /specs/.
Note: The Pro edition supports broader quality checks (e.g. more post-run prototype/implementation verifications) and requires a paid plan.
Language:
- Read
/scheme.yamlselected.language(supportsen,zh-CN,ja; default toenif missing/invalid). - The QC report
/specs/qc_report.mdmust use the selected language consistently.
Flow:
- Read built-in standard at
prompts/vspec_qc/quality_standard.md. - If a requirement quality error book exists under project
qc/, generate/update project rootquality_standard.mdbased on it. - If project root
quality_standard.mdexists, merge it as supplementary/overriding standard. - Load
prompts/vspec_qc/qc.mdand generate a non-conformance checklist. - Write the report to
/specs/qc_report.md.
/vspec:accept
Use this command to generate acceptance test cases.
Language:
- Read
/scheme.yamlselected.language(supportsen,zh-CN,ja; default toenif missing/invalid). - All acceptance documents under
/specs/acceptance/must use the selected language consistently.
Flow:
- Read
/specs/functions/*,/specs/background/scenarios.md,/specs/background/scenario_details/,/specs/background/roles.md,/specs/models/*.md. - Load
prompts/vspec_accept/accept.mdto generate acceptance test cases covering core flows, exceptions, boundary, permissions, and data scope. - Write results to
/specs/acceptance/(one subfolder per function) and generate an index at/specs/acceptance/index.md.
/vspec:append-test
Use this command to generate automation test code based on acceptance cases and specs.
Language:
- Read
/scheme.yamlselected.language(supportsen,zh-CN,ja; default toenif missing/invalid). - Test case titles/descriptions should follow the selected language as much as possible.
Flow:
- Read
/specs/acceptance/,/specs/functions/*,/specs/details/, and detect the existing test frameworks in the repository. - Load
prompts/vspec_test/test.mdto generate automation tests using the existing frameworks and conventions. - Write test code to the project test directories (or
/tests/if no standard exists) and ensure it can run with existing scripts. - Load
prompts/harness/post_append_test_coverage_check.mdto verify whether test coverage is sufficiently complete; if it outputs any issues, continue. - If issues exist, rerun
/vspec:append-testonce focusing only on the missing items from the issue list, then rerun the coverage check. - If issues still exist after the second coverage check, show the issue list and stop.
- This command generates/adds tests to improve coverage; it does not execute test commands.
/vspec:impl
Use this command to generate integrated frontend/backend code based on the specs.
Flow:
- Read
/specs/functions/*,/specs/details/,/specs/models/*.md,/specs/background/dependencies.md, and detect the current frontend/backend stacks and code conventions. - Load
prompts/vspec_impl/implement.mdand implement backend-first: generate a runnable backend project under/specs/backend/(health check + core APIs/services), then generate frontend integration after backend APIs are available. - Write code only under
/specs/with minimal diffs and keep it reviewable; backend must be under/specs/backend/and prototype frontend under/specs/prototypes/. - Load
prompts/harness/post_impl_verify.mdto validate backend MVC structure and test coverage. If it outputs any issues, show the issue list and stop.
/vspec:upgrade
Use this command to upgrade/retrofit requirements based on materials stored under /docs/ (/docs/legacy for legacy system, /docs/current for new inputs), and regenerate the /specs/ artifacts in the same structure as /vspec:new.
Language:
- Read
/scheme.yamlselected.language(supportsen,zh-CN,ja; default toenif missing/invalid). - All regenerated
/specs/**artifacts must use the selected language consistently.
Flow:
- Ensure the input entry file exists at
/docs/current/file_list.md; if missing, generate it with the expected input list template. - Read
/docs/current/file_list.md, then read the listed sources under/docs/(typically/docs/legacy/*,/docs/current/*, optionally/docs/templates/*,/docs/texts/*,/docs/assets/*) in order and extract structured information (functions, dependencies, UI style, roles/permissions, technical spec). - If
/specs/background/original.mdexists, treat it as the current canonical requirement and use it as baseline for diff (inherit/new/change/deprecate). - Load
prompts/vspec_upgrade/upgrade.mdand generate/update artifacts under/specs/, reusing/vspec:newoutput conventions. - Sync extracted technical spec into
/scheme.yamlso it can be used by/vspec:verifyand/vspec:impl.
/vspec:plan
Use this command to break down requirements, estimate efforts, and schedule via a user story map.
Language:
- Read
/scheme.yamlselected.language(supportsen,zh-CN,ja; default toenif missing/invalid). - Both
/specs/plan/plan_estimate.mdand/specs/plan/plan_schedule.htmlmust use the selected language consistently.
Flow:
- Read
/specs/functions/*,/specs/background/roles.md,/specs/background/scenarios.md,/specs/details/,/specs/background/dependencies.md. - Load
prompts/vspec_plan/estimate.mdto generate estimates aligned to the function list. - Write estimates to
/specs/plan/plan_estimate.md. - Load
prompts/vspec_plan/schedule.mdto generate the schedule and delivery map. - Write schedule HTML to
/specs/plan/plan_schedule.html.
/vspec:mrd
Use this command to generate a market research and product positioning pack (MRD): market landscape, competitor analysis, user positioning, and product design notes.
Flow:
- Ensure
/docs/market/exists. - Read baseline artifacts when available:
/specs/background/original.md,/specs/background/roles.md,/specs/background/terms.md,/specs/background/scenarios.md,/specs/flows/*.puml,/specs/background/dependencies.md, and/specs/functions/*(if any). - Load
prompts/vspec_mrd/mrd.md. - Write outputs to:
/docs/market/market.md/docs/market/competitors.md/docs/market/users.md/docs/market/product_design.md
Prompt Files
prompts/vspec_new/background.md: the prompt used right after/vspec:newreceives the raw requirement.prompts/vspec_new/stakeholders.md: the prompt used after the user answers待确认问题to generate/specs/background/stakeholder.md.prompts/vspec_new/roles.md: the prompt used after stakeholder analysis to generate/specs/background/roles.md.prompts/vspec_new/terms.md: the prompt used after roles analysis to generate/specs/background/terms.md.prompts/vspec_new/flows.md: the prompt used after terms analysis to generate/specs/flows/*.puml.prompts/vspec_new/scenarios.md: the prompt used after flows analysis to generate/specs/background/scenarios.md.prompts/vspec_new/details_pre_post.md: the prompt used after scenarios analysis to generate per-nodepre_post.mdunder/specs/background/scenario_details/.prompts/vspec_new/details_constraints.md: the prompt used after Pre/Post to generate per-nodeconstraints.mdunder/specs/background/scenario_details/.prompts/vspec_new/details_variations.md: the prompt used after Constraints to generate per-nodevariations.mdunder/specs/background/scenario_details/.prompts/vspec_new/details_boundaries.md: the prompt used after Variations to generate per-nodeboundaries.mdunder/specs/background/scenario_details/.prompts/vspec_new/details_symmetry.md: the prompt used after Boundaries to generate per-nodesymmetry.mdunder/specs/background/scenario_details/.prompts/vspec_new/dependencies.md: the prompt used after details analysis to generate/specs/background/dependencies.md.prompts/vspec_new/functions.md: the prompt used after dependencies analysis to generate/specs/functions/.prompts/vspec_new/questions.md: the prompt used after functions analysis to generate/specs/background/questions.md.prompts/vspec_more_q/more_q.md: the prompt used by/vspec:more-qto append more questions to/specs/background/questions.md.prompts/vspec_mrd/mrd.md: the prompt used by/vspec:mrdto generate market/user/competitor/product docs under/docs/market/.prompts/vspec_refine/refine.md: the prompt used by/vspec:refineto refine the requirement based onrefine.md.prompts/vspec_refine/refine_q.md: the prompt used by/vspec:refine-qto refine the requirement based on answered questions.prompts/vspec_verify/model.md: the prompt used by/vspec:verifyto generate/specs/models/*.md.prompts/vspec_verify/prototype.md: the prompt used by/vspec:verifyto generate the stack-selected runnable prototype under/specs/prototypes/(must followscheme.yaml).prompts/vspec_verify/validation.md: the prompt used by/vspec:verifyto generate the validation web page with ascenario.htmlentry.prompts/vspec_detail/rbac.md: the prompt used by/vspec:detailto generate RBAC detail docs.prompts/vspec_detail/data_permission.md: the prompt used by/vspec:detailto generate data permission detail docs.prompts/vspec_detail/page_load.md: the prompt used by/vspec:detailto generate page loading logic docs.prompts/vspec_detail/interaction.md: the prompt used by/vspec:detailto generate page interaction logic docs.prompts/vspec_detail/timeline.md: the prompt used by/vspec:detailto generate time-axis HTML docs.prompts/vspec_detail/formula.md: the prompt used by/vspec:detailto generate formula docs.prompts/vspec_detail/expression_tree.md: the prompt used by/vspec:detailto generate expression tree docs.prompts/vspec_detail/code_rules.md: the prompt used by/vspec:detailto generate numbering/code rules docs.prompts/vspec_detail/judgemental_matrix.md: the prompt used by/vspec:detailto generate decision matrix docs.prompts/vspec_detail/validation_matrix.md: the prompt used by/vspec:detailto generate validation matrix docs.prompts/vspec_detail/post_submit_check.md: the prompt used by/vspec:detailto generate post-submit checks docs.prompts/vspec_detail/post_submit_processing.md: the prompt used by/vspec:detailto generate post-submit processing docs.prompts/vspec_detail/post_submit_navigation.md: the prompt used by/vspec:detailto generate post-submit navigation docs.prompts/vspec_detail/mq.md: the prompt used by/vspec:detailto generate MQ message design docs.prompts/vspec_detail/logging_matrix.md: the prompt used by/vspec:detailto generate logging matrix docs.prompts/vspec_detail/notification_matrix.md: the prompt used by/vspec:detailto generate notification matrix docs.prompts/vspec_detail/nfp.md: the prompt used by/vspec:detailto generate non-functional requirements docs.prompts/vspec_detail/file_import.md: the prompt used by/vspec:detailto generate file import docs.prompts/vspec_detail/file_export.md: the prompt used by/vspec:detailto generate file export docs.prompts/vspec_detail/cron_job.md: the prompt used by/vspec:detailto generate scheduled job docs.prompts/vspec_accept/accept.md: the prompt used by/vspec:acceptto generate acceptance test cases.prompts/vspec_test/test.md: the prompt used by/vspec:append-testto generate automation test code.prompts/vspec_impl/implement.md: the prompt used by/vspec:implto generate integrated frontend/backend code.prompts/vspec_upgrade/upgrade.md: the prompt used by/vspec:upgradeto generate upgraded specs from/docs/inputs.prompts/vspec_plan/estimate.md: the prompt used by/vspec:planto generate/specs/plan/plan_estimate.md.prompts/vspec_plan/schedule.md: the prompt used by/vspec:planto generate/specs/plan/plan_schedule.html.prompts/vspec_qc/qc.md: the prompt used by/vspec:qcto generate/specs/qc_report.md.prompts/vspec_qc/quality_standard.md: built-in quality standard used by/vspec:qc.
Suggested Workflow
- Install this skill.
- Run
/vspec:new. - Ask the user to input the original requirement and wait for Enter.
- Load
prompts/vspec_new/background.mdand start requirement analysis. - Ask the user to answer
待确认问题. - Load
prompts/vspec_new/stakeholders.mdand generate/specs/background/stakeholder.md. - Load
prompts/vspec_new/roles.mdand generate/specs/background/roles.md. - Load
prompts/vspec_new/terms.mdand generate/specs/background/terms.md. - Load
prompts/vspec_new/flows.mdand generate/specs/flows/*.puml. - Load
prompts/vspec_new/scenarios.mdand generate/specs/background/scenarios.md. - Load
prompts/vspec_new/details_pre_post.mdand generate per-nodepre_post.mdunder/specs/background/scenario_details/. - Load
prompts/vspec_new/details_constraints.mdand generate per-nodeconstraints.mdunder/specs/background/scenario_details/. - Load
prompts/vspec_new/details_variations.mdand generate per-nodevariations.mdunder/specs/background/scenario_details/. - Load
prompts/vspec_new/details_boundaries.mdand generate per-nodeboundaries.mdunder/specs/background/scenario_details/. - Load
prompts/vspec_new/details_symmetry.mdand generate per-nodesymmetry.mdunder/specs/background/scenario_details/. - Load
prompts/vspec_new/dependencies.mdand generate/specs/background/dependencies.md. - Load
prompts/vspec_new/functions.mdand generate/specs/functions/. - Load
prompts/vspec_new/questions.mdand generate/specs/background/questions.md. - Follow the generated analysis steps to continue the project.
Output Goal
- Clarify business objective and core user scenario.
- Identify key roles, page modules, and interaction flow.
- Extract entities and main data fields.
- Produce a visual-spec-oriented requirement draft for the next step.