write-tech-spec

作者: warpdotdev

为重要的 Warp 功能编写 TECH.md 规格说明,需先研究当前代码库和实现约束。当用户要求编写与技术规格、实现计划或架构文档相关的产品说明时使用。

npx skills add https://github.com/warpdotdev/common-skills --skill write-tech-spec

write-tech-spec

Write a TECH.md spec for a significant feature in Warp.

Overview

The tech spec should translate product intent into an implementation plan that fits the existing codebase, documents architectural choices, and makes the work easier for agents to execute and reviewers to evaluate.

Write specs to specs/<id>/TECH.md, where <id> is one of:

  • a Linear ticket number (e.g. specs/APP-1234/TECH.md)
  • a GitHub issue id, prefixed with gh- (e.g. specs/gh-4567/TECH.md)
  • a short kebab-case feature name (e.g. specs/vertical-tabs-hover-sidecar/TECH.md)

Match the id used by the sibling PRODUCT.md when one exists. specs/ should contain only id-named directories as direct children.

Ticket / issue references are optional. If the user has a Linear ticket or GitHub issue, use its id. If they don't, ask them for a feature name to use as the directory. Only create a new Linear ticket or GitHub issue when the user explicitly asks for one; in that case use the Linear MCP tools or gh CLI respectively (and ask_user_question if team, labels, or repo are unclear).

When to use

Use this skill when the implementation spans multiple modules, has meaningful architectural tradeoffs, or when reviewers will benefit from seeing the plan before or alongside the code. For pure UI changes or straightforward fixes, a tech spec is often unnecessary.

Prefer to have a PRODUCT.md first so the technical plan is anchored to agreed behavior. If the implementation is still too uncertain, build an e2e prototype first and then write the tech spec from what was learned.

Research before writing

Before drafting, read the product spec (if any), inspect the relevant code, and identify the main files, types, data flow, and ownership boundaries. Do not guess about current architecture when the code can be inspected directly. When referencing relevant code chunks in the spec, prefer commit-pinned references so future readers can inspect the exact code you researched. Capture the current commit SHA for each repository you inspected (for example, git rev-parse HEAD) and, when possible, make file references Markdown links to the corresponding GitHub blob/<sha>/...#Lx-Ly URL. Use the linked text to keep the path readable in the spec.

Structure

Required sections:

  1. Context — What's being built, how the current system works in the area being changed, and the most relevant files with line references. Combine the "problem," "current state," and "relevant code" into one grounded section. Example references:

  2. Proposed changes — The implementation plan: which modules change, new types/APIs/state being introduced, data flow, ownership boundaries, and how the design follows existing patterns. Call out tradeoffs when there is more than one reasonable path.

  3. Testing and validation — How the implementation will be verified against the product behavior. Owns everything about proving the feature works: unit tests, integration tests, manual steps, screenshots, videos, and any other verification. Reference the numbered Behavior invariants from PRODUCT.md directly rather than restating them; each important invariant should map to a concrete test or verification step. This section is where validation lives — PRODUCT.md intentionally does not have a Validation section.

  4. Parallelization — Actively evaluate whether parallel sub-agents (launched via run_agents) would meaningfully reduce wall-clock time or isolate work. Skip this section if run_agents is not available. When the spec proposes using sub-agents, include for each proposed agent:

    • A short name/role and the subtask it owns.
    • Execution mode (local or remote) with a one-line rationale.
    • For local agents: the working directory or git worktree it should use, so parallel agents do not collide on the same checkout or files.
    • For remote agents: which environment to use or an explicit note that the agent will run in an empty environment.
    • Branch and PR strategy: which branch each agent works on, the worktree path each agent will use, and how their work lands (one PR per agent, a single combined PR, etc.).
    • Coordination boundaries: which files/services each agent owns and how it syncs with sibling agents (messaging, merge points, validation ownership).

    Distinguish which steps can run in parallel and which must run sequentially. When the dependency graph is non-trivial, consider a short Mermaid diagram (graph TD or flowchart LR) so the reader can see fan-out and merge points at a glance.

    When parallelization is NOT proposed, briefly note why it isn't beneficial (e.g. the task is small, or subtasks are tightly coupled) so reviewers can challenge that judgment.

    Propose concrete defaults for worktrees, branch names, and execution mode rather than leaving them open-ended.

Optional sections — include only when they add signal. Omit the heading entirely if empty; do not write "None" as a placeholder.

  • End-to-end flow — Include only when tracing the path through the system tells you something the Proposed changes list doesn't.
  • Diagram — Include a Mermaid diagram only when a visual will explain the design faster than prose (data flow, state transitions, sequence across layers). Prefer one or two focused diagrams over decorative ones.
  • Risks and mitigations — Include when there are real failure modes, regressions, migration concerns, or rollout hazards worth calling out.
  • Follow-ups — Include when there is deferred cleanup or future work worth naming.

Length heuristic

Right-size the spec to the feature:

  • Single-file change with clear approach: skip the tech spec or keep it under ~40 lines.
  • Multi-module change with some ambiguity: target ~80–150 lines.
  • Large cross-cutting or architecturally novel change: longer is fine when every section earns its place.

If Context and Proposed changes end up describing the same files and state from different angles, collapse them.

Writing guidance

  • Ground the plan in actual codebase structure and patterns.
  • Pin important code references to a commit SHA and link them to the corresponding GitHub lines when the repository has an accessible remote.
  • Prefer concrete implementation guidance over generic architecture language.
  • Explain why the proposed design fits this repo.
  • Reference PRODUCT.md for behavior instead of restating it.
  • Each section should earn its place — if a section would repeat another or contain only boilerplate, omit it.

Keep the spec current

Approved specs may ship in the same PR as the implementation. Update TECH.md in the same PR when module boundaries, implementation sequencing, risks, validation strategy, or rollout assumptions change. The checked-in spec should describe the implementation that actually ships.

For large features, the implementer may optionally keep a DECISIONS.md file summarizing concrete decisions. Offer it when it would help future agents; otherwise skip it.

Related Skills

  • implement-specs
  • write-product-spec
  • spec-driven-implementation

来自 warpdotdev 的更多技能

council
warpdotdev
运行一个模型多样化的子代理委员会,从多个角度调查同一问题,比较发现,并生成最终建议。当用户要求委员会、第二意见、多个代理/模型评估一个问题、并行调查、红队/蓝队对比,或帮助在竞争性技术方案中做出决策时,使用此技能。
researchcommunicationproject-management
spec-driven-implementation
warpdotdev
通过先编写PRODUCT.md再实现、必要时编写TECH.md,并在实现过程中持续更新两份规范,推动以规范为先导的工作流程,用于开发重要功能。适用于启动重大特性、规划由智能体驱动的实现,或用户希望将产品和技术规范纳入源代码管理时。
developmentdocumentproject-management
review-pr
warpdotdev
审查拉取请求的差异,并撰写结构化反馈,写入review.json以供工作流发布。适用于审查从本地工件(如pr_diff.txt和pr_description.txt)检出的PR,并生成机器可读的审查输出,而非直接发布到GitHub。
code-reviewdevelopment
create-pr
warpdotdev
在当前分支的warp仓库中创建一个拉取请求。当用户提到打开PR、创建拉取请求、提交更改以供审查或准备合并代码时使用。
developmentcode-review
implement-specs
warpdotdev
实现PRODUCT.md和TECH.md中已批准的功能,在同一个PR中随着实现进展保持规格与代码对齐。在产品和技术规格获批、下一步是构建功能时使用。
developmentcode-reviewapi
cross-critique
warpdotdev
对有争议的问题进行第二轮讨论,将每个子代理的独立提案分发给其他作者,并要求给出结构化的优缺点,然后进行综合。当你对某个有争议的决策(如架构权衡、代码审查分歧、设计选择、相互矛盾的根因理论)有多个独立提案或意见,并且希望获得比单独综合更深入的分析时,可使用此技能。该技能与“council”和“research”技能自然搭配;……
resolve-merge-conflicts
warpdotdev
通过仅提取未解决的路径、冲突块和紧凑差异来解决 Git
developmentcode-review
brandalf
warpdotdev
指导Warp或Oz品牌资产的创建、修订和审核。适用于启动页面、文档、HTML/CSS组件、UI模型、提示词、社交媒体素材、文案、演示文稿,以及任何应具有鲜明Warp或Oz风格与调性的品牌交付物。
designcreativemarketing