dev
This skill should be used when the user asks to 'start a feature', 'build a feature', 'implement a feature', 'develop', or 'new feature'.
What this skill does
**Announce:** "I'm using dev (Phase 1) to gather requirements."
**Iteration topology:** one-shot (conversational Q&A — no fan-out)
## Resume Detection
**BEFORE creating any new state, check for a previous session handoff.**
Check if `.planning/HANDOFF.md` exists:
```bash
test -f .planning/HANDOFF.md && echo "HANDOFF_EXISTS" || echo "NO_HANDOFF"
```
**If HANDOFF_EXISTS:**
1. Read `.planning/HANDOFF.md`
2. Present the user with a status summary:
```
Previous session handoff detected:
- Phase: [phase_name from frontmatter]
- Task: [task] of [total_tasks]
- Status: [status]
- Last updated: [last_updated]
- Next action: [from "Next Action" section]
```
3. Ask the user:
```python
AskUserQuestion(questions=[{
"question": "A handoff from a previous session was found. How would you like to proceed?",
"header": "Session Handoff Detected",
"options": [
{"label": "Resume from handoff", "description": "Continue where the previous session left off"},
{"label": "Start fresh", "description": "Discard the handoff and begin a new workflow from scratch"}
],
"multiSelect": false
}])
```
4. **If "Resume from handoff":**
- Read `.planning/ACTIVE_WORKFLOW.md` to get the recorded phase
- Read `.planning/SPEC.md` and `.planning/PLAN.md` if they exist
- Skip directly to the recorded phase by discovering and reading the appropriate phase skill:
```bash
${CLAUDE_SKILL_DIR}/../../skills/dev-[phase_name]/SKILL.md
```
- Delete `.planning/HANDOFF.md` after successfully resuming (it has been consumed)
- Announce: "Resuming from handoff — picking up at Phase [N]: [phase_name]."
5. **If "Start fresh":**
- Delete `.planning/HANDOFF.md`
- Proceed with normal workflow initialization below
## Workflow Overview
```
Phase 1 Phase 2 Phase 3 Phase 4 Phase 5 Phase 5.5 Phase 6 Phase 7
brainstorm → explore → clarify → design → implement → validate → review → verify
(SPEC.md) (key files) (resolved) (PLAN.md) (tests pass) (gaps filled) (>=80%) (fresh evidence)
│ │ │ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼
GATE: GATE: GATE: GATE: GATE: GATE: GATE: GATE:
Questions All files Ambiguities User All tasks Goals met No issues Fresh run
asked + read by resolved + approved + pass tests vs tasks >= 80% confirms
SPEC.md main chat SPEC.md PLAN.md + spec completed confidence all claims
written updated written match
```
**Every gate is mandatory. Skipping a gate means the next phase operates on bad inputs.**
## Workflow Initialization
Create `.planning/ACTIVE_WORKFLOW.md` to track workflow state:
```yaml
---
workflow: dev
phase: 1
phase_name: brainstorm
started: [current timestamp]
project_root: [current directory]
active_skill: ../../skills/dev/SKILL.md # relative to this skill's base directory
spec: .planning/SPEC.md
plan: .planning/PLAN.md
---
```
This enables session persistence - returning to the project will reload the current phase.
Also create `.planning/STATE.md` to track workflow state:
```markdown
---
workflow: dev
phase: 1
phase_name: brainstorm
status: in_progress
started: [timestamp]
---
# Dev Workflow State
## Current Position
Phase: 1 (brainstorm)
Status: In progress
## Decisions
(none yet)
## Blockers
(none)
```
## Contents
- [The Iron Law of Brainstorming](#the-iron-law-of-brainstorming)
- [What Brainstorm Does](#what-brainstorm-does)
- [Process](#process)
- [Output](#output)
# Brainstorming (Questions Only)
Refine vague ideas into clear requirements through Socratic questioning.
**NO exploration, NO approaches** - just questions and requirements.
<EXTREMELY-IMPORTANT>
## The Iron Law of Brainstorming
**ASK QUESTIONS BEFORE ANYTHING ELSE. This is not negotiable.**
Before exploring codebase, before proposing approaches, follow these requirements:
1. Ask clarifying questions using AskUserQuestion
2. Understand what the user actually wants
3. Define success criteria
Approaches come later (in /dev-design) after exploring the codebase.
**If YOU catch YOURSELF about to explore the codebase before asking questions, STOP.**
</EXTREMELY-IMPORTANT>
### Brainstorm Facts
- Code answers HOW the system works, not WHY the user wants the change — and reading the codebase before requirements are fixed anchors the questions you ask on what already exists. Deliberate ignorance until requirements are clear is the point of this phase, not an accident of ordering.
### No Pause After Completion
After writing `.planning/SPEC.md` and completing brainstorm, immediately invoke the next phase:
**Invoke the explore phase:**
Read `${CLAUDE_SKILL_DIR}/../../skills/dev-explore/SKILL.md` and follow its instructions.
DO NOT:
- Summarize what was learned
- Ask "should I proceed?"
- Wait for user confirmation
- Write status updates
The workflow phases are SEQUENTIAL. Complete brainstorm → immediately start explore.
## What Brainstorm Does
| DO | DON'T |
|----|-------|
| Ask clarifying questions | Explore codebase |
| Understand requirements | Spawn explore agents |
| Define success criteria | Look at existing code |
| Write draft SPEC.md | Propose approaches (that's design) |
| Identify unknowns | Create implementation tasks |
**Brainstorm answers: WHAT do we need and WHY**
**Explore answers: WHERE is the code** (next phase)
**Design answers: HOW to build it** (after exploration)
## Process
### 1. Ask Questions First
Use `AskUserQuestion` immediately with these principles:
- **One question at a time** - never batch
- **Multiple-choice preferred** - easier to answer
- Focus on: purpose, constraints, success criteria
Example questions to ask:
- "What problem does this solve?"
- "Who will use this feature?"
- "What's the most important requirement?"
- "Any constraints (performance, compatibility)?"
### 2. Ask About Testing Strategy (MANDATORY)
<EXTREMELY-IMPORTANT>
**THE TESTING QUESTION IS NOT OPTIONAL. This is the moment to prevent "no tests" rationalization.**
After understanding what to build, immediately ask:
```python
AskUserQuestion(questions=[{
"question": "How will we verify this works automatically?",
"header": "Testing",
"options": [
{"label": "Unit tests (pytest/jest/etc.)", "description": "Test functions/methods in isolation"},
{"label": "Integration tests", "description": "Test component interactions"},
{"label": "E2E automation (Playwright/ydotool)", "description": "Simulate real user interactions"},
{"label": "API tests", "description": "Test HTTP endpoints directly"}
],
"multiSelect": true
}])
```
**If user says "manual testing only" → This is a BLOCKER, not a workaround.**
| User Says | Your Response |
|-----------|---------------|
| "Manual testing" | "That's not acceptable for /dev workflow. What's blocking automated tests?" |
| "No test infrastructure" | "Let's add one. What framework fits this codebase?" |
| "Too hard to test" | "What specifically is hard? Let's solve that first." |
| "Just this once" | "No exceptions. TDD is the workflow, not optional." |
**Why this matters:** If you don't ask about testing NOW, you'll rationalize skipping it later.
</EXTREMELY-IMPORTANT>
### 2b. Define What a REAL Test Looks Like (MANDATORY)
<EXTREMELY-IMPORTANT>
**A REAL test is feature-specific. You must define it NOW, not during implementation.**
After user chooses testing approach, ask:
```python
AskUserQuestion(questions=[{
"question": "Describe the user workflow this test must replicate:",
"header": "User Workflow",
"options": [
{"label": "UI interaction sequence", "description": "e.g., 'click button → see modal → submit form'"},
{"label": "API call sequencRelated 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.