ferroxlabs/wayland/technical-specification
- community
Checking that the SKILL.md file is still in the repository.
Creates technical specification documents with problem statement, requirements, design proposal, trade-off analysis, and decision rationale. Use when the user needs to write a tech spec, design document, or RFC for a proposed system or feature. Do NOT use for ADRs (use `adr-writing`), user guides (use `user-guide`), or API documentation (use `api-documentation`).
Install
npx vskill@latest install ferroxlabs/wayland/technical-specificationSKILL.md
Technical Specification Writing
When to Use
- User needs to write a technical specification or design document for a proposed feature or system
- User asks for an RFC, tech spec, or engineering design doc
- User wants to document a technical approach with trade-offs and alternatives
- User needs to get buy-in for a technical decision before implementation
- Do NOT use when the user wants to record a decision already made (use
adr-writinginstead) - Do NOT use when the user wants to document how to use existing software (use
user-guideinstead) - Do NOT use when the user wants API endpoint documentation (use
api-documentationinstead) - Do NOT use when the user wants a project proposal with budget and timeline (use
project-proposalinstead)
Process
- Collect specification context. Ask the user for:
- What problem or opportunity this specification addresses
- Who is affected by this problem (users, teams, systems)
- Proposed solution at a high level
- Alternative approaches considered
- Constraints: timeline, budget, technology limitations, team capacity
- Success metrics: how to measure whether the solution worked
- Stakeholders who need to approve or review the spec
- Write the problem statement with evidence. The problem section must:
- State the problem in terms of user or business impact, not technical symptoms
- Quantify the impact where possible (error rates, time wasted, revenue lost)
- Describe who experiences the problem and how frequently
- Distinguish between the root problem and its symptoms
- Establish urgency: why solve this now rather than later
- Define requirements precisely. Split into:
- Functional requirements: What the system must do (stated as testable assertions)
- Non-functional requirements: Performance targets, availability, scalability, security constraints
- Out of scope: What this spec explicitly does not address (prevents scope creep during review)
- Number every requirement so reviewers can reference them by ID
- Describe the proposed design. For the solution:
- Architecture overview: how components interact (describe a diagram -- boxes, arrows, data flow)
- Data model: entities, relationships, and key fields
- API contracts: endpoint signatures or function interfaces
- Sequence flows: step-by-step interaction for the 2-3 most important user flows
- State transitions: if the system has state, show the state machine
- Analyze trade-offs explicitly. For each major design decision:
- List 2-3 alternatives considered
- Evaluate each against the requirements from step 3
- State the trade-off: what you gain and what you sacrifice with each option
- Explain why the chosen approach wins given the current constraints
- Use a comparison table for complex decisions
- Address risks and mitigations. Identify:
- Technical risks: performance unknowns, integration complexity, data migration hazards
- Operational risks: deployment complexity, rollback difficulty, monitoring gaps
- For each risk: likelihood, impact, and specific mitigation strategy
- Risks that remain unmitigated: state them transparently for stakeholders
- Define the implementation plan. Outline:
- Phases or milestones with deliverables for each
- Dependencies between phases
- Rollout strategy (feature flag, canary, blue-green, big bang)
- Rollback plan: exact steps to revert if the deployment fails
- Testing strategy: what is tested, how, and what coverage is needed
Output Format
[METHOD] /[path] Request: { [fields] } Response: { [fields] }
Rules
- NEVER write a tech spec without a problem statement -- the spec must justify its own existence
- NEVER present only one option -- always include at least 2 alternatives with trade-off analysis
- NEVER leave requirements unnumbered -- reviewers must be able to reference specific requirements
- NEVER describe the proposed design without defining success metrics that prove it works
- ALWAYS quantify the problem impact with data or estimates
- ALWAYS include an "Out of Scope" section to prevent scope creep
- ALWAYS include a rollback plan in the implementation section
- Risks must include likelihood, impact, and a specific mitigation -- not just "be careful"
- Requirements must be testable assertions, not vague goals ("Response time < 200ms at p99" not "Fast responses")
- State the spec status (Draft, In Review, Approved, Superseded) at the top so readers know the document's authority
Edge Cases
- Spec for a migration (not a new feature): Replace the "Proposed Design" section with a "Migration Strategy" section covering: data migration steps, dual-write period, validation checks, cutover plan, and rollback triggers. Include a compatibility matrix showing which clients work with old vs. new systems.
- Spec requiring cross-team collaboration: Add a RACI matrix (Responsible, Accountable, Consulted, Informed) as a subsection of the implementation plan. List specific deliverables per team with dependencies between them.
- Spec for a prototype or spike: Shorten the format -- keep Problem Statement, Proposed Approach, and Success Criteria. Skip detailed data models and API designs. Define the spike's timebox and exit criteria (what the spike must answer).
- Security-sensitive specification: Add a dedicated Security Considerations section covering: threat model, authentication/authorization changes, data encryption requirements, audit logging, and compliance implications. Name specific threats and mitigations.
- Spec that supersedes a previous spec: Reference the superseded document by name and date. Summarize what changed and why the original approach is no longer viable. Keep the superseded spec available for historical context.
- Very large spec (multiple systems): Split into a parent spec (problem, requirements, architecture overview) and child specs (one per subsystem with detailed design). Parent spec defines interfaces between subsystems; child specs define internal implementation.
Example
Input: "Write a tech spec for adding real-time notifications to our web app. Currently users have to refresh to see updates. We want WebSocket-based push notifications for mentions, task assignments, and status changes."
Output:
Technical Specification: Real-Time Notifications
Author: Engineering Team Status: Draft Created: 2024-06-15 Last updated: 2024-06-15 Reviewers: Backend Team, Frontend Team, Infrastructure
1. Problem Statement
Users must manually refresh the application to see updates to their tasks, mentions, and status changes. In a team of 10, a user refreshes an average of 47 times per day to check for updates (based on analytics from the past 30 days). This creates a 15-second average delay between an event occurring and a user becoming aware of it, slowing collaboration and causing missed time-sensitive updates.
Who is affected: All active users (approximately 2,400 daily active) Frequency: Users check for updates 47 times/day on average Impact: 15-second average awareness delay; 12% of task assignments are seen more than 1 hour late
2. Requirements
2.1 Functional Requirements
| ID | Requirement | Priority | |
|---|---|---|---|
| FR-1 | System must deliver notification to user within 2 seconds of triggering event | Must | |
| FR-2 | System must support notification types: mention, task-assignment, status-change | Must | |
| FR-3 | Users must be able to mark notifications as read individually or in bulk | Must | |
| FR-4 | System must persist notifications for users who are offline and deliver on reconnect | Must | |
| FR-5 | Users should be able to configure which notification types they receive | Should |
2.2 Non-Functional Requirements
| ID | Requirement | Target | |
|---|---|---|---|
| NFR-1 | End-to-end notification latency | < 2 seconds at p99 | |
| NFR-2 | WebSocket connection reliability | 99.9% uptime | |
| NFR-3 | Concurrent connections supported | 5,000 per server instance | |
| NFR-4 | Notification storage retention | 90 days |
2.3 Out of Scope
- Email or push notification delivery (mobile notifications are a separate spec)
- Notification grouping or digest summaries
- Admin-to-all broadcast notifications
3. Proposed Design
3.1 Architecture Overview
Three components: a Notification Service (produces events), a WebSocket Gateway (manages connections and delivers events), and a Notification Store (persists unread notifications in PostgreSQL).
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingsrc/process/resources/skills-library/bodies/skills/writing/technical-specification/SKILL.md
Popularity
- Repository stars
- 245
- Repository forks
- 42
- 7-day trend score
- 28
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/ferroxlabs/wayland/technical-specification)