30eggis

spec-test-loader

0
0
# Install this skill:
npx skills add 30eggis/claude-frontend-skills --skill "spec-test-loader"

Install specific skill from multi-skill repository

# Description

|

# SKILL.md


name: spec-test-loader
description: |
์ ์ง„์ ์œผ๋กœ ํ…Œ์ŠคํŠธ ๊ณ„ํš์„œ๋ฅผ ๋กœ๋”ฉํ•ฉ๋‹ˆ๋‹ค.
์ „์ฒด ๋กœ๋”ฉ, ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„, ์šฐ์„ ์ˆœ์œ„๋ณ„, ์ปดํฌ๋„ŒํŠธ๋ณ„ ๋กœ๋”ฉ ์ง€์›.
Agent์˜ ์ปจํ…์ŠคํŠธ ํšจ์œจ์„ฑ์„ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์„ ํƒ์ ์œผ๋กœ ๋กœ๋”ฉํ•ฉ๋‹ˆ๋‹ค.
allowed-tools: Read, Glob, Grep
argument-hint: " [--list] [--category ] [--priority ] [--component ] [--coverage-gap]"
permissionMode: bypassPermissions


spec-test-loader

ํ…Œ์ŠคํŠธ ๊ณ„ํš์„œ๋ฅผ ์ ์ง„์ ์œผ๋กœ ๋กœ๋”ฉํ•˜์—ฌ Agent์˜ ์ปจํ…์ŠคํŠธ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๋ชฉ์ 

  • Spec ๋ฌธ์„œ๊ฐ€ ํฌ๋ฉด Agent ํ˜ธ์ถœ ์‹œ ์ปจํ…์ŠคํŠธ ์ดˆ๊ณผ ์œ„ํ—˜
  • ํ•„์š”ํ•œ ํ…Œ์ŠคํŠธ ๊ณ„ํš๋งŒ ์ ์ง„์ ์œผ๋กœ ๋กœ๋”ฉ
  • Agent๊ฐ€ ํ˜„์žฌ ์ž‘์—…์— ํ•„์š”ํ•œ ํ…Œ์ŠคํŠธ๋งŒ ๊ฐ€์ ธ์˜ค๋„๋ก ํ•จ

์‚ฌ์šฉ๋ฒ•

์ „์ฒด ํ…Œ์ŠคํŠธ ๋ชฉ๋ก (์š”์•ฝ)

/spec-test-loader {spec-folder} --list

์ถœ๋ ฅ:

# ํ…Œ์ŠคํŠธ ๋ชฉ๋ก ์š”์•ฝ

## Unit Tests (23๊ฐœ)
- P0: 8๊ฐœ
- P1: 10๊ฐœ
- P2: 5๊ฐœ

## Integration Tests (12๊ฐœ)
- P0: 4๊ฐœ
- P1: 6๊ฐœ
- P2: 2๊ฐœ

## E2E Tests (8๊ฐœ)
- P0: 3๊ฐœ
- P1: 4๊ฐœ
- P2: 1๊ฐœ

## ์ปดํฌ๋„ŒํŠธ๋ณ„
| ์ปดํฌ๋„ŒํŠธ | Unit | Integration | E2E |
|----------|------|-------------|-----|
| StockCard | 5 | 2 | 1 |
| PriceDisplay | 3 | 1 | 0 |
| ...

์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋กœ๋”ฉ

/spec-test-loader {spec-folder} --category unit
/spec-test-loader {spec-folder} --category integration
/spec-test-loader {spec-folder} --category e2e

์ถœ๋ ฅ: ํ•ด๋‹น ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ŠคํŽ™ ์ „์ฒด ๋‚ด์šฉ

์šฐ์„ ์ˆœ์œ„๋ณ„ ๋กœ๋”ฉ

/spec-test-loader {spec-folder} --priority P0
/spec-test-loader {spec-folder} --priority P1
/spec-test-loader {spec-folder} --priority P2

์ถœ๋ ฅ: ํ•ด๋‹น ์šฐ์„ ์ˆœ์œ„์˜ ํ…Œ์ŠคํŠธ ์ŠคํŽ™๋งŒ ๋กœ๋”ฉ

ํŠน์ • ์ปดํฌ๋„ŒํŠธ ํ…Œ์ŠคํŠธ๋งŒ

/spec-test-loader {spec-folder} --component StockCard
/spec-test-loader {spec-folder} --component PriceDisplay

์ถœ๋ ฅ: ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์˜ ํ…Œ์ŠคํŠธ ์ŠคํŽ™ ์ „์ฒด ๋‚ด์šฉ

์ปค๋ฒ„๋ฆฌ์ง€ ๊ฐญ ๋ถ„์„

/spec-test-loader {spec-folder} --coverage-gap

์ถœ๋ ฅ:

# ์ปค๋ฒ„๋ฆฌ์ง€ ๊ฐญ ๋ถ„์„

## ํ…Œ์ŠคํŠธ ๋ฏธ์ž‘์„ฑ ์ปดํฌ๋„ŒํŠธ
| ์ปดํฌ๋„ŒํŠธ | ์˜ˆ์ƒ ํ…Œ์ŠคํŠธ | ์ž‘์„ฑ๋จ | ๊ฐญ |
|----------|-------------|--------|-----|
| Header | 5 | 2 | 3 |
| Footer | 3 | 0 | 3 |

## ์šฐ์„ ์ˆœ์œ„๋ณ„ ๋ฏธ์ปค๋ฒ„๋ฆฌ์ง€
- P0 ๋ฏธ์ปค๋ฒ„๋ฆฌ์ง€: 2๊ฑด (๊ธด๊ธ‰)
- P1 ๋ฏธ์ปค๋ฒ„๋ฆฌ์ง€: 5๊ฑด
- P2 ๋ฏธ์ปค๋ฒ„๋ฆฌ์ง€: 8๊ฑด

## ๊ถŒ์žฅ ์ž‘์„ฑ ์ˆœ์„œ
1. Header - P0 ํ…Œ์ŠคํŠธ 3๊ฑด
2. Footer - P0 ํ…Œ์ŠคํŠธ 2๊ฑด
3. ...

Spec ํด๋” ๊ตฌ์กฐ

{spec-folder}/05-tests/
โ”œโ”€โ”€ coverage-map.md          โ†’ ์ปค๋ฒ„๋ฆฌ์ง€ ๋งตํ•‘
โ”œโ”€โ”€ personas/                โ†’ ํŽ˜๋ฅด์†Œ๋‚˜ ๊ธฐ๋ฐ˜ ํ…Œ์ŠคํŠธ
โ”‚   โ”œโ”€โ”€ busy-professional.md
โ”‚   โ””โ”€โ”€ casual-investor.md
โ”œโ”€โ”€ scenarios/               โ†’ E2E ์‹œ๋‚˜๋ฆฌ์˜ค
โ”‚   โ”œโ”€โ”€ critical-path.md
โ”‚   โ””โ”€โ”€ screen-*.md
โ””โ”€โ”€ components/              โ†’ ์ปดํฌ๋„ŒํŠธ๋ณ„ ํ…Œ์ŠคํŠธ
    โ”œโ”€โ”€ StockCard.test.md    โ†’ Markdown (legacy)
    โ”œโ”€โ”€ StockCard.test.yaml  โ†’ YAML (preferred)
    โ”œโ”€โ”€ PriceDisplay.test.md
    โ””โ”€โ”€ ...

Format Detection

The loader auto-detects spec format by file extension:

Extension Format Priority
.test.yaml YAML (structured) Preferred
.test.md Markdown (legacy) Fallback

When both formats exist, YAML takes precedence.

๋กœ๋”ฉ ๋กœ์ง

--list ๋ชจ๋“œ

1. Glob: {spec-folder}/05-tests/**/*.{yaml,md}
2. ๊ฐ ํŒŒ์ผ์—์„œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์ถ”์ถœ:
   - YAML: direct parse from id, priority, category fields
   - MD: regex parse from headers
   - ํ…Œ์ŠคํŠธ ๊ฐœ์ˆ˜
   - ์šฐ์„ ์ˆœ์œ„ ๋ถ„ํฌ
   - ์นดํ…Œ๊ณ ๋ฆฌ
3. ์š”์•ฝ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

--category ๋ชจ๋“œ

1. ์นดํ…Œ๊ณ ๋ฆฌ ๋งคํ•‘:
   - unit โ†’ {spec-folder}/05-tests/components/*.{yaml,md}
   - integration โ†’ {spec-folder}/05-tests/scenarios/*-integration.{yaml,md}
   - e2e โ†’ {spec-folder}/05-tests/scenarios/*.{yaml,md}
2. Glob์œผ๋กœ ํŒŒ์ผ ๋ชฉ๋ก ํš๋“ (YAML ์šฐ์„ )
3. ๋ชจ๋“  ํŒŒ์ผ ๋‚ด์šฉ Read
4. ํ†ตํ•ฉ ์ถœ๋ ฅ

--priority ๋ชจ๋“œ

1. YAML: Grep for "priority: \"P0\"" (etc)
2. MD: Grep: "Priority: {P0|P1|P2}" ๋˜๋Š” "์šฐ์„ ์ˆœ์œ„: {P0|P1|P2}"
3. ๋งค์นญ๋œ ํŒŒ์ผ์—์„œ ํ•ด๋‹น ์šฐ์„ ์ˆœ์œ„ ์„น์…˜๋งŒ ์ถ”์ถœ
4. ํ†ตํ•ฉ ์ถœ๋ ฅ

--component ๋ชจ๋“œ

1. Read: {spec-folder}/05-tests/components/{ComponentName}.test.yaml (preferred)
2. Fallback: {spec-folder}/05-tests/components/{ComponentName}.test.md
3. ์—†์œผ๋ฉด: Grep์œผ๋กœ ์ปดํฌ๋„ŒํŠธ๋ช… ๊ฒ€์ƒ‰
4. ๊ด€๋ จ ํ…Œ์ŠคํŠธ ์ŠคํŽ™ ์ถœ๋ ฅ

--coverage-gap ๋ชจ๋“œ

1. Read: {spec-folder}/05-tests/coverage-map.md
2. Glob: {spec-folder}/05-tests/components/*.{yaml,md}
3. ๊ธฐ๋Œ€ ํ…Œ์ŠคํŠธ vs ์‹ค์ œ ํ…Œ์ŠคํŠธ ๋น„๊ต
4. ๊ฐญ ๋ถ„์„ ๋ฆฌํฌํŠธ ์ƒ์„ฑ

YAML Parsing Guide

YAML ํฌ๋งท ํ…Œ์ŠคํŠธ ์ŠคํŽ™์—์„œ ๋ฐ์ดํ„ฐ ์ถ”์ถœ:

# ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
id: "TST-001"           โ†’ ํ…Œ์ŠคํŠธ ID
component: "StockCard"  โ†’ ์ปดํฌ๋„ŒํŠธ ์ด๋ฆ„
category: "unit"        โ†’ unit | integration | e2e
priority: "P0"          โ†’ P0 | P1 | P2

# ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค
tests:
  unit:
    - description: "renders correctly with props"
      type: "render"
      priority: "P0"
    - description: "handles click events"
      type: "interaction"
      priority: "P1"

  accessibility:
    - description: "meets WCAG 2.1 AA"
      type: "axe"

Agent ์—ฐ๋™ ์˜ˆ์‹œ

Phase 6: UNIT-TEST์—์„œ ์‚ฌ์šฉ

Task(test-implementer, opus):
  prompt: "
    # Step 1: ํ…Œ์ŠคํŠธ ๋ชฉ๋ก ํ™•์ธ
    Skill(spec-test-loader {spec-folder} --list)

    # Step 2: P0 ์šฐ์„ ์ˆœ์œ„ ํ…Œ์ŠคํŠธ๋งŒ ๋กœ๋”ฉ
    Skill(spec-test-loader {spec-folder} --priority P0)

    # Step 3: ํ•ด๋‹น ํ…Œ์ŠคํŠธ ๊ตฌํ˜„
    FOR test IN P0_tests:
      - Read test spec
      - Write test file
      - Run test
      - Verify pass

    # Step 4: P1 ์šฐ์„ ์ˆœ์œ„
    Skill(spec-test-loader {spec-folder} --priority P1)
    ...

    # Step 5: ์ปค๋ฒ„๋ฆฌ์ง€ ๊ฐญ ํ™•์ธ
    Skill(spec-test-loader {spec-folder} --coverage-gap)
    โ†’ ์ถ”๊ฐ€ ํ…Œ์ŠคํŠธ ๊ตฌํ˜„
  "

์ ์ง„์  ๋กœ๋”ฉ ํŒจํ„ด

# 1๋‹จ๊ณ„: ์ „์ฒด ๊ตฌ์กฐ ํŒŒ์•… (๊ฐ€๋ฒผ์šด ๋กœ๋”ฉ)
Skill(spec-test-loader specs --list)

# 2๋‹จ๊ณ„: ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ์ƒ์„ธ ๋กœ๋”ฉ
Skill(spec-test-loader specs --component StockCard)

# 3๋‹จ๊ณ„: ๊ตฌํ˜„ ํ›„ ๋‹ค์Œ ์ปดํฌ๋„ŒํŠธ
Skill(spec-test-loader specs --component PriceDisplay)

์ถœ๋ ฅ ํฌ๋งท

๋ชจ๋“  ์ถœ๋ ฅ์€ Markdown ํ˜•์‹์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค:

# {๋กœ๋”ฉ ํƒ€์ž…} ๊ฒฐ๊ณผ

## ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
- ๋กœ๋”ฉ ์ผ์‹œ: {timestamp}
- ์†Œ์Šค: {spec-folder}
- ํ•„ํ„ฐ: {filter-type}

## ๋‚ด์šฉ
{actual content}

---
*Loaded by spec-test-loader*

๊ด€๋ จ Skill

  • spec-scenario-loader: ์‹œ๋‚˜๋ฆฌ์˜ค ๊ณ„ํš์„œ ๋กœ๋”ฉ
  • spec-component-loader: ์ปดํฌ๋„ŒํŠธ ์ŠคํŽ™ ๋กœ๋”ฉ
  • spec-it-execute: Phase 6์—์„œ ์ด skill ์‚ฌ์šฉ

# Supported AI Coding Agents

This skill is compatible with the SKILL.md standard and works with all major AI coding agents:

Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.