skills/design-driven-dev/SKILL.md
Guide for design-driven development with prescribed folder structure. New features use full workflow (HLD → LLD → EARS). Bug fixes skip doc creation but verify intent coherence.
npx skillsauth add ericmjl/skills design-driven-devInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill guides a structured design-driven development workflow. The goal is to get alignment on what you're building before writing code, which dramatically reduces rework and misunderstandings.
STOP after completing each phase. Present the document to the user for review. Incorporate their numbered feedback. Only proceed to the next phase when explicitly approved.
This is the most important part of the workflow. Don't rush through design to get to code.
Before starting any design work, determine the documentation directory:
DOCS_DIR environment variable or project config?./docs/ - This is the canonical location./docs/ or ./doc/ directories:
X. Use this?"./docs/ for design documents?"Once determined, use DOCS_DIR as the root for all design documents.
DOCS_DIR/
├── high-level-design.md # Single HLD for entire project
└── designs/
└── <feature-name>/
├── LLD.md # Low-level design for feature
├── <sub-feature-1>-EARS.md
├── <sub-feature-2>-EARS.md
└── ...
Example:
docs/
├── high-level-design.md
└── designs/
├── authentication/
│ ├── LLD.md
│ ├── login-EARS.md
│ ├── logout-EARS.md
│ └── password-reset-EARS.md
└── payments/
├── LLD.md
├── checkout-EARS.md
└── refunds-EARS.md
DOCS_DIR/high-level-design.mdDOCS_DIR/designs/<feature>/LLD.mdDOCS_DIR/designs/<feature>/<subfeature>-EARS.mdSee hld-template.md for HLD structure guidance.
Consult this skill for ALL code changes.
Full workflow (create new docs) for:
Coherence check only (skip doc creation) for:
Even when skipping doc creation, verify intent coherence: do existing specs, tests, and code align? If not, fix the docs before changing the code.
If unsure, use the full workflow. Over-designing is safer than under-designing.
File: DOCS_DIR/high-level-design.md
Check if an HLD exists first. For new projects or major features, create an HLD covering:
Required: Link to LLDs
## Related Designs
- [Authentication LLD](./designs/authentication/LLD.md)
- [Payments LLD](./designs/payments/LLD.md)
See hld-template.md for full structure with examples.
Stop and get user approval before proceeding.
File: DOCS_DIR/designs/<feature>/LLD.md
Create one LLD per major feature. Each LLD should include:
Required: Link to HLD and EARS
## Related Documents
- [High-Level Design](../high-level-design.md)
- [Login EARS](./login-EARS.md)
- [Logout EARS](./logout-EARS.md)
See lld-template.md for structure guidance, including when to use narrative vs. structured format.
Stop and get user approval before proceeding.
File: DOCS_DIR/designs/<feature>/<subfeature>-EARS.md
Generate requirements using EARS (Easy Approach to Requirements Syntax). Create one EARS file per sub-feature.
Required: Link to parent LLD
## Related Documents
- [Authentication LLD](./LLD.md)
See ears-syntax.md for full EARS syntax, semantic ID format, and scope disambiguation guidance.
Stop and get user approval before proceeding.
HLD must link to all LLDs:
## Related Designs
- [Authentication LLD](./designs/authentication/LLD.md)
- [Payments LLD](./designs/payments/LLD.md)
LLD must link back to HLD:
## Related Documents
- [High-Level Design](../high-level-design.md)
LLD must link to all its EARS files:
## Requirements
- [Login Form EARS](./login-EARS.md)
- [Password Reset EARS](./password-reset-EARS.md)
EARS must link back to parent LLD:
## Related Documents
- [Authentication LLD](./LLD.md)
There's a chain of documents that translates intent from vision to working code:
HLD → LLDs → EARS → Tests → Code
Each level translates the previous into more specific terms:
The arrow of intent must stay coherent. When one level changes, downstream levels must be reviewed and updated to match.
Mutation, not accumulation. Update docs in place. Delete what's wrong. The documentation should always reflect current intent.
When requirements or understanding change:
Before implementing (or resuming implementation), verify coherence:
Annotate code with @spec comments linking to EARS IDs:
// @spec AUTH-LOGIN-001, AUTH-LOGIN-002, AUTH-LOGIN-003
export function LoginForm({ ... }) {
// Implementation
}
Test files also reference specs:
// @spec AUTH-LOGIN-010
it('validates email format before submission', () => {
expect(validateEmail('invalid')).toBe(false);
});
This creates traceability from requirements → code → tests.
| Benefit | Why It Matters | |---------|----------------| | Forced checkpoints | Catches misunderstandings before you've built the wrong thing | | Progressive reveal | Sparsity of files makes complex features manageable | | Cross-linking | Always know where to find related context | | Traceability | @spec annotations link code to requirements | | Survives session breaks | Docs persist, context doesn't get lost | | Testable requirements | EARS format ensures requirements are verifiable |
development
Create animated videos using Remotion from topics, product URLs, Google reviews, talking-head videos, or CSV data. Supports 5 video types: educational explainers, product launch demos, testimonial/social proof, avatar video overlays, and data visualization dashboards. Each follows a 2-step workflow: research/scrape/analyze then design and animate with spring animations, SVG diagrams, and count-up effects. Requires the Remotion best practices skill (install with `npx skills add remotion-dev/skills`). Use when the user asks to create a Remotion video, explainer video, educational video, product demo video, testimonial video, video with animated overlays, data visualization video, animated dashboard, or short-form vertical video for mobile.
development
Comprehensive YouTube operations using yt-dlp - download videos/audio, extract transcripts and subtitles, get metadata, work with playlists, download thumbnails, and inspect available formats. Use this for any YouTube content processing task.
data-ai
Ingest YouTube videos into the vault. Triggers when user pastes a YouTube URL (youtube.com/watch or youtu.be). Fetches transcript using yt-dlp, extracts metadata, creates transcript note and summary note. User may provide additional context about the video.
tools
Advanced negotiation and communication advisor grounded in Chris Voss's tactical empathy methodology (Never Split the Difference, The Black Swan Group). Use this skill whenever the user needs help with any interpersonal situation involving influence, persuasion, or navigating difficult dynamics. This includes but is not limited to: analyzing conversations, call transcripts, or email threads; preparing for negotiations (salary, vendor, client, partner); drafting tactful responses; handling pushback, objections, or conflict; navigating difficult workplace conversations; preparing for performance reviews or raises; buying a car, house, or any big purchase; dealing with landlords, contractors, or service providers; resolving personal disagreements; practicing negotiation through role-play; or any situation where the user says things like "how should I respond to this", "they're pushing back", "I need to have a tough conversation", "how do I ask for...", "they ghosted me", "I'm not sure how to handle this person", "counter-offer", "pricing", "deal", "objection", or "difficult conversation". Activate broadly — most interpersonal communication benefits from tactical empathy whether or not the user frames it as "negotiation." This skill integrates FBI hostage negotiation techniques (93% success rate) with behavioral economics (Kahneman's Prospect Theory) and neuroscience (amygdala hijacking, loss aversion).