.agents/skills/design-first-engineering/SKILL.md
Guide software design iteration before writing any code. Use this skill when the user wants to design a system, plan architecture, think through a feature's structure before implementing, or asks about "design first", "system design", "architecture planning", or "what should the components be". Also trigger when the user says things like "let's think through this before coding", "what's the right architecture", "help me plan this feature", or "I want to design X before building it". This is about producing a design document — not code.
npx skillsauth add tomkis/liftcoach design-first-engineeringInstall 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 walks the user through 4 sequential design steps before any code gets written. The goal is to produce a clear, iterated design that the user is confident in — so implementation becomes straightforward.
The power of this approach is forced separation of concerns: each step builds on the previous one, and getting the earlier steps right prevents costly rework later. Rushing to contracts before understanding capabilities leads to interfaces that don't fit. Jumping to components before understanding interactions leads to tangled dependencies.
Work through these steps in order. Complete and confirm each step with the user before moving to the next. Encourage iteration — it's cheap to change a design, expensive to change code. Before moving to next step, ALWAYS ask user if he's happy with the result of the current step and summarize what you know.
What does this system need to do?
List the core requirements — what the system must accomplish from the user's perspective. Stay at the "what", not the "how". No implementation details, no technology choices, no component names.
Good: "Users can search authors by creation date" Bad: "ElasticSearch index for authors lookup via REST API"
Ask the user to confirm the capabilities list is complete and correct before proceeding. Push back if implementation details creep in — they belong in later steps.
Output: A numbered list of capabilities.
What are the building blocks?
Given the capabilities from Step 1, identify the services, modules, and major abstractions needed. Each component should have a clear single responsibility. Name them and give each a one-line description of what it owns.
Think about:
Output: A list of components, each with a name and responsibility.
How do the components communicate?
Map out the data flow between components. For each significant operation, trace the path: who initiates, who responds, what data moves where. Cover the main flows — not every edge case.
Think about:
Output: Interaction descriptions for each major flow, showing which components participate and how data moves between them.
What are the interfaces?
Define the boundaries between components precisely. Function signatures, type definitions, API shapes, event schemas. This is the most concrete step — it should be specific enough that two developers could implement different sides of an interface independently and have them connect.
Think about:
Output: Interface definitions — types, function signatures, schemas — for each component boundary identified in Step 3.
development
--- name: write-a-prd description: Create a PRD through user interview, codebase exploration, and module design, then submit as a GitHub issue. Use when user wants to write a PRD, create a product requirements document, or plan a new feature. --- This skill will be invoked when the user wants to create a PRD. You may skip steps if you don't consider them necessary. 1. Ask the user for a long, detailed description of the problem they want to solve and any potential ideas for solutions. 2. Expl
testing
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
tools
Pick and implement the next user story from a PRD GitHub issue. Analyzes merged PRs for prior work and findings, proposes a plan, implements it, and creates a PR linking back to the PRD. Use when user says "ralph it", "ralph-it", or wants to work through PRD user stories.
testing
Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".