resume-bullets
Transforms completed work into powerful resume bullet points with action verbs, technical context, and quantified impact. Use when completing tasks, updating…
Guides test strategy for unit, integration, and E2E testing. Use when junior asks "how do I test", "write tests", "what should I test", "test coverage", "mocking", or works with Vitest, Jest, Playwright. Provides testing pyramid and AAA patterns.
$ npx -y skills add DanielPodolsky/ownyourcode --skill testing --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/testingContext preview
The summary Claude sees to decide when to auto-load this skill.
Guides test strategy for unit, integration, and E2E testing. Use when junior asks "how do I test", "write tests", "what should I test", "test coverage", "mocking", or works with Vitest, Jest, Playwright. Provides testing pyramid and AAA patterns.
name: testing-fundamentals description: Guides test strategy for unit, integration, and E2E testing. Use when junior asks "how do I test", "write tests", "what should I test", "test coverage", "mocking", or works with Vitest, Jest, Playwright. Provides testing pyramid and AAA patterns.
> "If you can't test it, you don't understand it. Tests are proof of understanding."
Activate this skill when:
---
▲
╱ ╲ E2E (10%)
╱ ╲ Playwright - Full user flows
╱─────╲
╱ ╲ Integration (20%)
╱ ╲ Vitest + RTL - Component interactions
╱───────────╲
╱ ╲ Unit (70%)
╱ ╲ Vitest - Functions, utils, logic
─────────────────---
| Stack | Unit/Integration | E2E | |-------|------------------|-----| | Vite + React | **Vitest** + React Testing Library | Playwright | | Create React App | Jest + RTL | Playwright | | Next.js | Vitest or Jest + RTL | Playwright | | Node.js | **Vitest** (native ESM) | - | | Python | pytest | - | | Go | go test | - |
**Why Vitest for Vite?**
---
1. **Happy Path**: Does it work when everything goes right? 2. **Edge Cases**: What happens with empty, null, max values? 3. **Error States**: Does it fail gracefully?
---
// ❌ BAD: Testing internal state
expect(component.state.isLoading).toBe(true);
// ✅ GOOD: Testing what user sees
expect(screen.getByText('Loading...')).toBeInTheDocument();// ❌ BAD: Mock everything
jest.mock('./utils');
jest.mock('./api');
jest.mock('./hooks');
// What are you even testing at this point?
// ✅ GOOD: Mock only external boundaries
vi.mock('./api'); // Mock the API, test the rest// ❌ BAD: Testing that React Query works
expect(useQuery).toHaveBeenCalledWith('users');
// ✅ GOOD: Testing YOUR code's behavior
await waitFor(() => {
expect(screen.getByText('User Name')).toBeInTheDocument();
});// ❌ BAD: Breaks if you change CSS
screen.getByClassName('btn-primary-large-blue');
// ✅ GOOD: Semantic and stable
screen.getByRole('button', { name: 'Submit' });// ❌ BAD: 100% coverage goal // Results in tests that exist just for coverage // ✅ GOOD: Strategic coverage // Test critical paths, edge cases, complex logic
---
Ask these instead of giving answers:
1. **Strategy**: "What's the most critical user flow that needs testing?" 2. **Coverage**: "If this test passes but the feature is broken, how would you know?" 3. **Edge Cases**: "What inputs could break this? Empty? Null? 10,000 items?" 4. **Isolation**: "Are you testing YOUR code or a library's code?" 5. **Value**: "Would this test catch a real bug?"
---
describe('LoginForm', () => {
it('shows error when password is too short', async () => {
// Arrange
render(<LoginForm />);
// Act
await userEvent.type(screen.getByLabelText('Password'), '123');
await userEvent.click(screen.getByRole('button', { name: 'Login' }));
// Assert
expect(screen.getByText('Password must be at least 8 characters')).toBeInTheDocument();
});
});---
| Flag | Question | |------|----------| | No tests for feature | "What tests prove this works?" | | Only happy path tested | "What if the API fails? What if input is empty?" | | Mocking everything | "What are you actually testing here?" | | Testing implementation | "Would this test break if you refactored but behavior stayed the same?" | | getByClassName usage | "Is there a more semantic way to select this element?" | | Large snapshot tests | "Will you actually review this diff when it changes?" |
---
Fetch: Vitest documentation Fetch: React Testing Library queries Fetch: Playwright best practices
Search: "vitest react testing library" in popular repos Search: "playwright e2e test login" for E2E patterns
---
// Pattern: it('should [expected behavior] when [condition]')
it('should display error message when password is invalid')
it('should redirect to dashboard when login succeeds')
it('should disable submit button when form is submitting')---
> "I implemented comprehensive testing with 85% coverage focusing on critical user flows. I used Vitest for unit tests, React Testing Library for component integration tests, and Playwright for E2E tests covering login, checkout, and payment flows."
Tests are interview talking points. Every test you write is proof you understand the code.
Claude Code workflow for AI-mentored development. Work efficiently with Spec-Driven Development and the 6 Gates. Built to fight cognitive offloading — for developers using AI to grow and maintain ownership.
Repo: DanielPodolsky/ownyourcode
Transforms completed work into powerful resume bullet points with action verbs, technical context, and quantified impact. Use when completing tasks, updating…
Transforms completed work into STAR interview stories (Situation, Task, Action, Result). Use when completing tasks, preparing for behavioral interviews, or…
Reviews accessibility including WCAG, ARIA, keyboard navigation. Use when junior builds forms, buttons, modals, interactive elements, or asks "is this…
Reviews API design, REST conventions, and backend architecture. Use when junior builds API endpoints, Express routes, middleware, controllers, or asks "is this…
Reviews schema design, SQL queries, ORM patterns. Use when junior creates schema, writes queries, adds migrations, works with Prisma/MongoDB/PostgreSQL, or…
Guides systematic debugging through Protocol D (READ, ISOLATE, DOCS, HYPOTHESIZE, VERIFY). Use when junior says "stuck", "not working", "broken", "bug",…