with one click
design-driven-dev
// 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.
// 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.
Break unstaged or mixed changes into small, atomic, logical git commits with Conventional Commit messages. Use when the user asks to commit, stage, or split changes — e.g. 'help me commit', 'commit my changes', 'break these into logical commits', 'what should I commit first', 'stage my changes', 'commit atomically', or 'make atomic commits'. Uses git diff, git add -p, and Conventional Commits (feat:/fix:/refactor:/chore:/docs:/test:/style:/perf:/build:/ci).
Break long-lived pull request branches into a mergeable stack of small PRs with clear dependency order and story flow. Use when a branch has grown too large, when the user asks to split a PR into stacked PRs, or when each PR must be reviewable in about 5 minutes while preserving logical narrative across the stack.
Improve coherence in drafts by diagnosing broken flow, rewriting transitions, aligning paragraph purpose, and preserving author voice. Use when a user says things like 'make this coherent', 'tighten the flow', 'this feels choppy', 'can you smooth transitions', or asks to revise prose in Markdown, notes, essays, blog posts, emails, or docs so ideas connect cleanly from sentence to sentence and section to section.
Use GitHub CLI (gh) for common operations like creating PRs, viewing GitHub Actions logs, managing issues, reviewing PRs, and more. When merging PRs via gh, prefer rebase merge over squash or merge commits unless repo policy or the user explicitly requests otherwise.
Use Slack CLI (`slack`) for app lifecycle and workspace operations including login/logout, create/init, run/deploy, manifest validation, trigger management, app install/uninstall, environment management, and diagnostics. Use when users ask to run or troubleshoot commands like `slack create`, `slack run`, `slack deploy`, `slack trigger`, `slack manifest`, `slack auth`, `slack activity`, `slack datastore`, `slack env`, or request help-first progressive discovery with `slack help` and `slack SUBCOMMAND --help`, plus version/documentation alignment and stale-skill refresh.
Use the MemPalace CLI to persist, search, and manage AI memory across sessions. Triggers whenever the user asks to remember, recall, save, store, or retrieve information that should persist across conversations — including past decisions, preferences, facts about people or projects, conversation history, and any verbatim content the user wants preserved. Also triggers when the user mentions "palace", "wings", "rooms", "drawers", "knowledge graph", "AAAK", or when they want to search through historical context, traverse connections between topics, or check what their AI knows. Mirrors the MemPalace MCP server tools: each CLI command maps to an MCP tool with an equivalent trigger condition.
| name | design-driven-dev |
| description | 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. |
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 |