technical-requirements-interview
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseTechnical Requirements Interview
技术需求访谈
This skill guides you through a structured interview to derive technical requirements from business requirements.
该Skill将引导你通过结构化访谈从业务需求中提炼技术需求。
Prerequisites
前置要求
- Completed file
business-requirements.yaml - Clear understanding of the problem domain
- 已完成的 文件
business-requirements.yaml - 对问题域有清晰的认知
Interview Process
访谈流程
Rules
规则
- One question at a time - Never ask multiple questions in a single turn
- Business context first - Load and understand business requirements before asking technical questions
- Provide options - Each question includes 2-5 recommended options plus free-form input
- Track progress - All Q&A pairs are immediately appended to
technical-interview.jsonl - Resume capability - If JSONL exists, continue from last question
- Structured output - Generate upon completion
technical-requirements.yaml
- 每次仅提一个问题 - 单次交互中绝不提问多个问题
- 业务上下文优先 - 加载并理解业务需求后再提出技术问题
- 提供选项 - 每个问题包含2-5个推荐选项,同时支持自由输入
- 进度追踪 - 所有问答对会立即追加到 文件中
technical-interview.jsonl - 可恢复能力 - 如果JSONL文件已存在,将从上一个问题继续推进
- 结构化输出 - 流程完成后生成 文件
technical-requirements.yaml
Interview Categories
访谈类别
The interview covers these areas in order:
-
Architecture & Patterns
- Overall architecture style
- Application structure
- Component organization
-
Technology Stack
- Programming language
- Frameworks and libraries
- Package management
-
Data Model & Storage
- Data persistence strategy
- Database selection
- Schema design approach
-
API Design
- API style (REST, GraphQL, RPC)
- API framework
- Versioning strategy
-
Security & Authentication
- Authentication method
- Authorization approach
- Secrets management
-
Testing Strategy
- Testing approach (TDD, BDD, etc.)
- Test types (unit, integration, e2e)
- Testing frameworks
-
Development & Tooling
- Development workflow
- Code quality tools
- CI/CD approach
-
Deployment & Distribution
- Deployment target
- Packaging strategy
- Release process
访谈将按顺序覆盖以下领域:
-
架构与模式
- 整体架构风格
- 应用结构
- 组件组织
-
技术栈
- 编程语言
- 框架与库
- 包管理
-
数据模型与存储
- 数据持久化策略
- 数据库选型
- Schema设计方案
-
API设计
- API风格(REST、GraphQL、RPC)
- API框架
- 版本管理策略
-
安全与身份验证
- 身份验证方式
- 授权方案
- 密钥管理
-
测试策略
- 测试方案(TDD、BDD等)
- 测试类型(单元测试、集成测试、e2e测试)
- 测试框架
-
开发与工具链
- 开发工作流
- 代码质量工具
- CI/CD方案
-
部署与分发
- 部署目标
- 打包策略
- 发布流程
Question Format
问题格式
Each question follows this structure:
undefined每个问题遵循以下结构:
undefined[Category Name]
[Category Name]
Question: [Clear, specific question]
Options:
- [Option 1] (Recommended) - [Brief description and rationale]
- [Option 2] - [Brief description]
- [Option 3] - [Brief description]
- Type your own answer
undefinedQuestion: [Clear, specific question]
Options:
- [Option 1] (Recommended) - [Brief description and rationale]
- [Option 2] - [Brief description]
- [Option 3] - [Brief description]
- Type your own answer
undefinedExample Questions
示例问题
Architecture
架构
undefinedundefinedArchitecture & Patterns
Architecture & Patterns
Question: What architecture pattern best fits this project?
Options:
- Monolithic application (Recommended) - Single deployable unit, simpler to develop and deploy initially
- Microservices - Multiple independent services, better scaling but higher complexity
- Serverless functions - Event-driven, scales automatically, but vendor lock-in
- Plugin-based - Core engine with extensible plugins for flexibility
- Type your own answer
undefinedQuestion: What architecture pattern best fits this project?
Options:
- Monolithic application (Recommended) - Single deployable unit, simpler to develop and deploy initially
- Microservices - Multiple independent services, better scaling but higher complexity
- Serverless functions - Event-driven, scales automatically, but vendor lock-in
- Plugin-based - Core engine with extensible plugins for flexibility
- Type your own answer
undefinedTechnology Stack
技术栈
undefinedundefinedTechnology Stack
Technology Stack
Question: Which programming language should be used?
Options:
- TypeScript (Recommended) - Type-safe JavaScript, excellent tooling, large ecosystem
- Python - Readable, extensive libraries, good for data processing and scripting
- Go - Fast compilation, excellent concurrency, simple deployment
- Rust - Memory safety without garbage collection, high performance
- Type your own answer
undefinedQuestion: Which programming language should be used?
Options:
- TypeScript (Recommended) - Type-safe JavaScript, excellent tooling, large ecosystem
- Python - Readable, extensive libraries, good for data processing and scripting
- Go - Fast compilation, excellent concurrency, simple deployment
- Rust - Memory safety without garbage collection, high performance
- Type your own answer
undefinedData Storage
数据存储
undefinedundefinedData Model & Storage
Data Model & Storage
Question: What data persistence strategy is appropriate?
Options:
- File-based storage (Recommended) - Simple, portable, no database dependency
- SQLite - Embedded relational database, good for local tools
- PostgreSQL - Full-featured relational database, better for complex queries
- NoSQL (MongoDB, etc.) - Flexible schema, good for document-based data
- In-memory only - Fast but no persistence, suitable for ephemeral data
- Type your own answer
undefinedQuestion: What data persistence strategy is appropriate?
Options:
- File-based storage (Recommended) - Simple, portable, no database dependency
- SQLite - Embedded relational database, good for local tools
- PostgreSQL - Full-featured relational database, better for complex queries
- NoSQL (MongoDB, etc.) - Flexible schema, good for document-based data
- In-memory only - Fast but no persistence, suitable for ephemeral data
- Type your own answer
undefinedJSONL Format
JSONL格式
Track all questions and answers in :
technical-interview.jsonljson
{"id":1,"category":"Architecture & Patterns","question":"What architecture pattern best fits this project?","answer":"Monolithic application - Single deployable unit, simpler to develop and deploy initially","question_number":"Q1","timestamp":"2025-01-27T11:00:00Z"}
{"id":2,"category":"Technology Stack","question":"Which programming language should be used?","answer":"TypeScript - Type-safe JavaScript, excellent tooling, large ecosystem","question_number":"Q2","timestamp":"2025-01-27T11:05:00Z"}所有问答内容会记录在 文件中:
technical-interview.jsonljson
{"id":1,"category":"Architecture & Patterns","question":"What architecture pattern best fits this project?","answer":"Monolithic application - Single deployable unit, simpler to develop and deploy initially","question_number":"Q1","timestamp":"2025-01-27T11:00:00Z"}
{"id":2,"category":"Technology Stack","question":"Which programming language should be used?","answer":"TypeScript - Type-safe JavaScript, excellent tooling, large ecosystem","question_number":"Q2","timestamp":"2025-01-27T11:05:00Z"}Output Format
输出格式
Generate with this structure:
technical-requirements.yamlyaml
project: [project-name]
version: "1.0.0"
generated: [timestamp]
business_requirements_ref: [path-to-business-requirements.yaml]
architecture:
pattern: [architecture-pattern]
description: |
[Detailed description of architecture approach]
components:
- name: [Component 1]
responsibility: [What it does]
- name: [Component 2]
responsibility: [What it does]
technology_stack:
language: [programming-language]
runtime: [node/python/jvm/etc]
frameworks:
- [framework 1]
- [framework 2]
libraries:
core:
- [library 1]
- [library 2]
development:
- [dev library 1]
package_manager: [npm/pip/cargo/etc]
project_structure:
type: [monorepo/multi-repo/single-repo]
layout: |
[Description of directory structure]
key_directories:
- path: [path]
purpose: [what goes here]
data_model:
strategy: [file/database/memory/etc]
database: [type-if-applicable]
schema_approach: [description]
migrations: [strategy]
api:
style: [REST/GraphQL/RPC/CLI]
framework: [framework-name]
versioning: [strategy]
documentation: [approach]
security:
authentication:
method: [none/token/oauth/etc]
implementation: [how]
authorization:
model: [none/rbac/abac/etc]
implementation: [how]
secrets:
storage: [env-vars/keychain/vault/etc]
rotation: [policy]
data_validation:
input: [approach]
output: [approach]
testing:
strategy: [TDD/BDD/manual/etc]
types:
unit:
framework: [framework]
coverage_target: [percentage]
integration:
framework: [framework]
approach: [description]
e2e:
framework: [framework]
approach: [description]
mocking:
strategy: [what to mock]
tools: [frameworks]
development:
workflow: [description]
code_quality:
linter: [tool]
formatter: [tool]
type_checker: [tool]
pre_commit_hooks:
- [hook 1]
- [hook 2]
ci_cd:
platform: [github-actions/circleci/etc]
pipeline:
- stage: [stage 1]
actions:
- [action 1]
- [action 2]
- stage: [stage 2]
actions:
- [action 1]
deployment:
target: [local/cloud/hybrid/etc]
packaging:
format: [npm/docker/binary/etc]
distribution: [approach]
environments:
- name: development
config: [approach]
- name: production
config: [approach]
release_process:
strategy: [semver/calver/etc]
automation: [level]
monitoring:
logging:
format: [structured/plain]
destination: [file/console/service]
metrics:
collection: [approach]
visualization: [tool]
alerts:
strategy: [when to alert]
channels: [email/slack/etc]
performance:
targets:
response_time: [target]
throughput: [target]
optimization:
strategy: [caching/lazy-loading/etc]
monitoring: [approach]
scalability:
approach: [vertical/horizontal/serverless]
limits:
concurrent_users: [estimate]
data_volume: [estimate]
bottlenecks:
- [known bottleneck 1]
- [known bottleneck 2]
constraints:
technical:
- [constraint 1]
- [constraint 2]
operational:
- [constraint 1]
- [constraint 2]
trade_offs:
- decision: [decision made]
rationale: [why]
alternative: [what was not chosen]
consequence: [impact]
open_questions:
- question: [unresolved question]
options:
- [option 1]
- [option 2]
impact: [what this affects]生成的 结构如下:
technical-requirements.yamlyaml
project: [project-name]
version: "1.0.0"
generated: [timestamp]
business_requirements_ref: [path-to-business-requirements.yaml]
architecture:
pattern: [architecture-pattern]
description: |
[Detailed description of architecture approach]
components:
- name: [Component 1]
responsibility: [What it does]
- name: [Component 2]
responsibility: [What it does]
technology_stack:
language: [programming-language]
runtime: [node/python/jvm/etc]
frameworks:
- [framework 1]
- [framework 2]
libraries:
core:
- [library 1]
- [library 2]
development:
- [dev library 1]
package_manager: [npm/pip/cargo/etc]
project_structure:
type: [monorepo/multi-repo/single-repo]
layout: |
[Description of directory structure]
key_directories:
- path: [path]
purpose: [what goes here]
data_model:
strategy: [file/database/memory/etc]
database: [type-if-applicable]
schema_approach: [description]
migrations: [strategy]
api:
style: [REST/GraphQL/RPC/CLI]
framework: [framework-name]
versioning: [strategy]
documentation: [approach]
security:
authentication:
method: [none/token/oauth/etc]
implementation: [how]
authorization:
model: [none/rbac/abac/etc]
implementation: [how]
secrets:
storage: [env-vars/keychain/vault/etc]
rotation: [policy]
data_validation:
input: [approach]
output: [approach]
testing:
strategy: [TDD/BDD/manual/etc]
types:
unit:
framework: [framework]
coverage_target: [percentage]
integration:
framework: [framework]
approach: [description]
e2e:
framework: [framework]
approach: [description]
mocking:
strategy: [what to mock]
tools: [frameworks]
development:
workflow: [description]
code_quality:
linter: [tool]
formatter: [tool]
type_checker: [tool]
pre_commit_hooks:
- [hook 1]
- [hook 2]
ci_cd:
platform: [github-actions/circleci/etc]
pipeline:
- stage: [stage 1]
actions:
- [action 1]
- [action 2]
- stage: [stage 2]
actions:
- [action 1]
deployment:
target: [local/cloud/hybrid/etc]
packaging:
format: [npm/docker/binary/etc]
distribution: [approach]
environments:
- name: development
config: [approach]
- name: production
config: [approach]
release_process:
strategy: [semver/calver/etc]
automation: [level]
monitoring:
logging:
format: [structured/plain]
destination: [file/console/service]
metrics:
collection: [approach]
visualization: [tool]
alerts:
strategy: [when to alert]
channels: [email/slack/etc]
performance:
targets:
response_time: [target]
throughput: [target]
optimization:
strategy: [caching/lazy-loading/etc]
monitoring: [approach]
scalability:
approach: [vertical/horizontal/serverless]
limits:
concurrent_users: [estimate]
data_volume: [estimate]
bottlenecks:
- [known bottleneck 1]
- [known bottleneck 2]
constraints:
technical:
- [constraint 1]
- [constraint 2]
operational:
- [constraint 1]
- [constraint 2]
trade_offs:
- decision: [decision made]
rationale: [why]
alternative: [what was not chosen]
consequence: [impact]
open_questions:
- question: [unresolved question]
options:
- [option 1]
- [option 2]
impact: [what this affects]Usage
使用方法
To start a new technical interview:
/technical-requirements-interview path/to/business-requirements.yamlTo resume an existing interview:
/technical-requirements-interview path/to/business-requirements.yamlThe skill will automatically:
- Load business requirements as context
- Check for existing
technical-interview.jsonl - Resume from last question if found
- Ask targeted technical questions
- Generate when complete
technical-requirements.yaml
启动新的技术需求访谈:
/technical-requirements-interview path/to/business-requirements.yaml恢复已有访谈:
/technical-requirements-interview path/to/business-requirements.yaml该Skill会自动执行以下操作:
- 加载业务需求作为上下文
- 检查是否存在已有的 文件
technical-interview.jsonl - 如果找到则从上一个问题继续推进
- 提出针对性的技术问题
- 流程完成后生成 文件
technical-requirements.yaml
Decision Tracking
决策追踪
Each technical decision should include:
- Decision - What was decided
- Rationale - Why this approach
- Alternatives considered - What else was evaluated
- Trade-offs - What was gained/lost
- Reversibility - How hard to change later
每个技术决策都应包含:
- 决策内容 - 确定了什么方案
- 决策依据 - 为什么选择该方案
- 考虑过的替代方案 - 还评估过哪些其他选项
- 权衡取舍 - 获得了什么/牺牲了什么
- 可逆转性 - 后续调整的难度
Best Practices
最佳实践
- Align with business needs - Every technical choice should support business requirements
- Consider constraints - Respect timeline, budget, and skill constraints
- Start simple - Choose simpler solutions over complex ones when possible
- Plan for change - Make reversible decisions where possible
- Document rationale - Future you will thank present you
- 与业务需求对齐 - 所有技术选择都应支撑业务需求
- 考虑约束条件 - 尊重时间、预算和技能约束
- 从简起步 - 尽可能选择更简单的方案而非复杂方案
- 为变更做规划 - 尽可能做出可逆转的决策
- 记录决策依据 - 未来的你会感谢现在的你
Review & Gap Analysis
评审与差距分析
After generating , automatically perform a gap analysis:
technical-requirements.yaml生成 后,会自动执行差距分析:
technical-requirements.yamlAlignment Check
对齐检查
Business Alignment:
- Architecture supports all functional requirements
- Technology choices align with business constraints
- Timeline is realistic for technical scope
- Budget constraints respected in tool/service choices
Completeness Check:
Architecture:
- Architecture pattern is clearly defined
- Components and responsibilities documented
- Data flow is clear
- Integration points identified
Technology Stack:
- Language and runtime specified
- Frameworks and libraries listed
- Versions specified where critical
- Alternatives considered and documented
Data Model:
- Storage strategy defined
- Schema approach documented
- Migration strategy if using database
- Data validation approach specified
API:
- API style chosen (REST/GraphQL/RPC)
- Framework selected
- Versioning strategy defined
- Documentation approach specified
Security:
- Authentication method defined
- Authorization model specified
- Secrets management approach
- Input/output validation strategy
Testing:
- Testing strategy defined (TDD/BDD/etc)
- Test types specified (unit/integration/e2e)
- Frameworks selected
- Coverage targets set
Deployment:
- Deployment target identified
- Packaging format chosen
- CI/CD approach defined
- Release process documented
业务对齐:
- 架构支持所有功能需求
- 技术选择与业务约束对齐
- 技术范围对应的时间线具备可行性
- 工具/服务选择符合预算约束
完整性检查:
架构:
- 架构模式已明确定义
- 组件及职责已记录
- 数据流清晰
- 集成点已识别
技术栈:
- 编程语言和运行时已指定
- 框架和库已列出
- 关键依赖的版本已指定
- 考虑过的替代方案已记录
数据模型:
- 存储策略已定义
- Schema方案已记录
- 若使用数据库,迁移策略已明确
- 数据校验方案已指定
API:
- 已选定API风格(REST/GraphQL/RPC)
- 框架已选定
- 版本管理策略已定义
- 文档方案已指定
安全:
- 身份验证方式已定义
- 授权模型已指定
- 密钥管理方案已明确
- 输入/输出校验策略已明确
测试:
- 测试策略已定义(TDD/BDD等)
- 测试类型已指定(单元测试/集成测试/e2e测试)
- 框架已选定
- 覆盖率目标已设置
部署:
- 部署目标已确认
- 打包格式已选定
- CI/CD方案已定义
- 发布流程已记录
Consistency Check
一致性检查
- No contradictions between technical decisions
- Technology choices compatible with each other
- Performance targets achievable with chosen stack
- Security approach matches data sensitivity
- 技术决策之间不存在矛盾
- 技术选择相互兼容
- 选定的技术栈可实现性能目标
- 安全方案与数据敏感等级匹配
Trade-off Analysis
权衡取舍分析
Review documented trade-offs:
- Each trade-off has clear rationale
- Alternatives were seriously considered
- Consequences understood and acceptable
- Reversibility assessed
评审已记录的权衡项:
- 每个权衡项都有清晰的决策依据
- 替代方案经过了认真评估
- 影响已被理解且可接受
- 可逆转性已评估
Gap Identification
差距识别
Common Gaps to Check:
- Missing error handling strategy
- Undocumented edge cases
- Unaddressed scalability concerns
- Missing monitoring/observability plan
- Unclear data migration path
- Missing security threat model
- Undocumented performance budgets
- Missing disaster recovery plan
- Unclear dependency versioning strategy
- Missing code quality tooling
需检查的常见差距:
- 缺失错误处理策略
- 未记录的边缘场景
- 未解决的扩展性问题
- 缺失监控/可观测性方案
- 不明确的数据迁移路径
- 缺失安全威胁模型
- 未记录的性能预算
- 缺失灾难恢复方案
- 不明确的依赖版本管理策略
- 缺失代码质量工具配置
Open Questions Review
未解决问题评审
Check if open questions are:
- Clearly stated
- Have identified options
- Impact is understood
- Decision timeline defined
检查未解决问题是否满足:
- 描述清晰
- 已列出可选方案
- 影响已明确
- 决策时间线已定义
Review Output
评审输出
Generate a gap analysis report with:
yaml
gap_analysis:
business_alignment_score: [1-10]
completeness_score: [1-10]
consistency_score: [1-10]
gaps_found:
- category: [category]
issue: [description]
severity: [high/medium/low]
recommendation: [how to address]
business_impact: [what business requirement this affects]
strong_areas:
- [what's well-defined]
trade_offs_review:
- decision: [decision]
assessment: [well-reasoned/needs-review/concerning]
notes: [additional context]
open_questions_assessment:
- question: [question]
blocking: [yes/no]
recommendation: [resolve now/later/accept uncertainty]
suggestions:
- [improvement suggestions]
ready_for_implementation: [yes/no/with-modifications]If critical gaps found (severity: high or blocking open questions), ask:
"I've identified some gaps in the technical requirements that could impact implementation. Would you like to:
- Address them now (I'll ask follow-up questions)
- Proceed to implementation planning (address during development)
- Review the gaps and decide"
生成的差距分析报告结构如下:
yaml
gap_analysis:
business_alignment_score: [1-10]
completeness_score: [1-10]
consistency_score: [1-10]
gaps_found:
- category: [category]
issue: [description]
severity: [high/medium/low]
recommendation: [how to address]
business_impact: [what business requirement this affects]
strong_areas:
- [what's well-defined]
trade_offs_review:
- decision: [decision]
assessment: [well-reasoned/needs-review/concerning]
notes: [additional context]
open_questions_assessment:
- question: [question]
blocking: [yes/no]
recommendation: [resolve now/later/accept uncertainty]
suggestions:
- [improvement suggestions]
ready_for_implementation: [yes/no/with-modifications]如果发现关键差距(高严重性或阻塞性未解决问题),会询问:
"我发现技术需求中存在一些可能影响落地的差距,你希望:
- 现在处理(我会提出跟进问题)
- 进入落地规划阶段(开发过程中处理)
- 先查看差距详情再做决定"
Next Steps
后续步骤
After completing the technical requirements interview and gap analysis:
- Review gap analysis report
- Address any critical gaps or blocking questions
- Validate technical choices are realistic
- Use to generate implementation plans
/implementation-planner
完成技术需求访谈和差距分析后:
- 查看差距分析报告
- 处理所有关键差距或阻塞性问题
- 确认技术选择具备可行性
- 使用 生成落地方案
/implementation-planner
Examples
示例
See examples/ for sample output files.
查看 examples/ 目录获取示例输出文件。