spec-writer
# Spec Writer - Rigorous Project Specification
What this skill does
# Spec Writer - Rigorous Project Specification
Use this skill when the user mentions "write spec", "project spec", "define goals", "spec properties", "project definition", or wants to create or update a comprehensive project specification.
---
## Purpose
A spec is the **source of truth** for a project's direction. It answers: What are we building? Why? What's in scope? How do we know when we're done?
This skill guides the creation of rigorous specs through **property-based validation** - ensuring all necessary aspects are addressed without enforcing a rigid format.
## Required Properties
Every good spec must address these properties. The format can vary, but the information must be present.
### 1. Purpose (Required)
**Question**: Why does this project exist? What problem does it solve?
- Not just "what it does" but "why it matters"
- Who benefits and how
- What would be missing if this didn't exist
### 2. Scope (Required)
**Question**: What's explicitly IN and OUT?
**In Scope**:
- Concrete capabilities the project will have
- Features that are committed
**Out of Scope** (equally important):
- What this project deliberately won't do
- Adjacent problems it won't solve
- Features explicitly deferred
### 3. Success Criteria (Required)
**Question**: How do we know when this is "done" or "working"?
- Observable, verifiable conditions
- Not vague ("works well") but specific ("passes all integration tests", "handles 1000 concurrent users")
- Can be different for different phases
### 4. Current Phase (Required)
**Question**: Where are we now in the project lifecycle?
- What phase/milestone is active
- What "done" looks like for THIS phase
- What triggers moving to next phase
## Contextual Properties
Include these when relevant to the project:
### Architecture Decisions
Key technical choices and their rationale.
- What was decided
- Why (constraints, tradeoffs)
- Alternatives considered
- Consequences/implications
### Constraints
Limitations that shape the solution.
- Technical (language, platform, dependencies)
- Business (timeline, budget, resources)
- External (APIs, regulations, compatibility)
### Dependencies
What this project relies on.
- External services/APIs
- Libraries/frameworks
- Other internal projects
- People/expertise
### Risks
What could derail the project.
- Technical risks (complexity, unknowns)
- External risks (dependencies, changes)
- Mitigation strategies
### Open Questions
Unresolved decisions that need answers.
- What's uncertain
- What information would help decide
- When decisions need to be made
## Writing a Spec
### Process
1. **Start with Purpose**: Write 2-3 sentences on why this exists
2. **Define Scope**: List what's in, what's out
3. **Set Success Criteria**: How will we verify success?
4. **Identify Current Phase**: Where are we now?
5. **Add Context**: Architecture, constraints, risks as relevant
6. **Review for Gaps**: Does someone reading this know what to build?
### Validation Checklist
A spec is complete when you can answer YES to all:
- [ ] Could a new team member understand the project's purpose?
- [ ] Is it clear what's NOT in scope?
- [ ] Are success criteria specific and verifiable?
- [ ] Is the current phase and its goals clear?
- [ ] Are key technical decisions documented with rationale?
- [ ] Are significant risks identified?
### Style Guidelines
- **Be specific**: "Fast" → "Responds within 200ms"
- **Be honest**: Include unknowns and risks
- **Be concise**: Dense information, not lengthy prose
- **Update regularly**: A stale spec is worse than no spec
## Probing Questions
When helping write a spec, ask:
**Purpose**:
- "If this project succeeds, what's different in the world?"
- "Who is the primary user/beneficiary?"
- "What's the one-sentence pitch?"
**Scope**:
- "What's the most common misconception about what this does?"
- "What adjacent problem will you NOT solve?"
- "If you had to cut half the features, which half stays?"
**Success**:
- "How would you demo this to prove it works?"
- "What would make you say 'this phase is done'?"
- "What metrics matter?"
**Decisions**:
- "What's the most controversial technical choice you've made?"
- "What would you do differently if starting over?"
- "What's the hardest constraint you're working with?"
See `references/spec-properties.md` for detailed property definitions.
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.