agentsclimarketplace

Allra test writing

Skill ComeOnOliver/skillshub/skills/aiskillstore/marketplace/allra-fintech/allra-test-writing

🧠 The right skill, one API call. AI agent skills registry with token-efficient skill resolution. 5,000+ skills from 500+ top repos.

Install
npx -y skills add ComeOnOliver/skillshub --skill allra-test-writing

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its author says it does

Copied from the file, not written here

Allra 백엔드 테슀튞 작성 표쀀. Use when writing test code, choosing test helpers, generating test data with Fixture Monkey, or verifying test coverage.

SKILL.md

23.5 KB, ~6.6k tokens by cl100k_base, as published. Nobody here has run it

Allra Test Writing Standards

Allra 백엔드 팀의 테슀튞 작성 표쀀을 정의합니닀. 테슀튞 헬퍌 선택, Fixture Monkey 데읎터 생성, Given-When-Then 팹턮, AssertJ 검슝을 포핚합니닀.

프로젝튞 Ʞ볞 정볎

읎 가읎드는 닀음 환겜을 Ʞ쀀윌로 작성되었습니닀:

  • Java: 17 읎상
  • Spring Boot: 3.2 읎상
  • Testing Framework: JUnit 5
  • Assertion Library: AssertJ
  • Mocking: Mockito
  • Test Data: Fixture Monkey (선택 사항)
  • Container: Testcontainers (선택 사항)

ì°žê³ : 프로젝튞별로 사용하는 띌읎람러늬나 버전읎 닀륌 수 있습니닀. 프로젝튞에 맞게 조정하여 사용하섞요.

테슀튞 헬퍌 선택 가읎드

죌의: 아래 테슀튞 헬퍌는 Allra 표쀀 템플늿에서 제공됩니닀. 프로젝튞에 읎러한 헬퍌가 없는 겜우, Spring Boot Ʞ볞 테슀튞 얎녞테읎션(@SpringBootTest, @DataJpaTest, @WebMvcTest 등)을 직접 사용하되, 읎 가읎드의 테슀튞 팚턎곌 원칙은 동음하게 적용합니닀.

헬퍌태귞용도묎게얞제?
IntegrationTestIntegration여러 서비슀 통합🔎 묎거움전첎 워크플로우
RdbTestRDBRepository, QueryDSL🟡 쀑간쿌늬 검슝
ControllerTestControllerAPI 엔드포읞튞🟢 가벌움REST API 검슝
RedisTestRedisRedis 캐싱🟢 가벌움캐시 검슝
MockingUnitTestMockingUnitService 닚위🟢 맀우 가벌움비슈니슀 로직
PojoUnitTestPojoUnit도메읞 로직🟢 맀우 가벌움순수 자바

선택 플로우

API 엔드포읞튞? → ControllerTest
여러 서비슀 통합? → IntegrationTest
Repository/QueryDSL? → RdbTest
Redis 캐싱? → RedisTest
Service 로직 (Mock)? → MockingUnitTest
도메읞 로직 (POJO)? → PojoUnitTest

🎯 Mock vs Integration 선택 Ʞ쀀 (쀑요!)

원칙: Ʞ볞은 MockingUnitTest, ꌭ 필요할 때만 IntegrationTest

목표: IntegrationTest 비윚 5% 읎하 유지

의사결정 플로우찚튞

┌─────────────────────────────────┐
│ 묎엇을 테슀튞하렀고 하는가?    │
└────────────┬────────────────────┘
             │
    ┌────────▌────────┐
    │ 도메읞 로직만?  │ ──Yes──> PojoUnitTest
    └────────┬────────┘
             │ No
    ┌────────▌─────────────────────┐
    │ Repository/QueryDSL 쿌늬?   │ ──Yes──> RdbTest
    └────────┬─────────────────────┘
             │ No
    ┌────────▌─────────────────────┐
    │ API 엔드포읞튞 응답/검슝?   │ ──Yes──> ControllerTest
    └────────┬─────────────────────┘
             │ No
    ┌────────▌─────────────────────────────┐
    │ Service 비슈니슀 로직 검슝?         │
    └────────┬─────────────────────────────┘
             │
    ┌────────▌──────────────────────────────────────────┐
    │ 닀음 쀑 하나띌도 핎당하는가?                      │
    │                                                   │
    │ 1. 💰 ꞈ전 처늬 (입ꞈ/출ꞈ/읎첎/환불)            │
    │ 2. 🔄 튞랜잭션 례백읎 쀑요한 워크플로우           │
    │ 3. 📊 여러 테읎랔 데읎터 정합성 검슝             │
    │ 4. 🔐 싀제 DB 제앜조걎 검슝 필수                 │
    │ 5. 📝 복잡한 상태 전읎 (3닚계 읎상)              │
    │ 6. 🎯 읎벀튞 발행/늬슀너 통합 검슝               │
    │ 7. 🀝 3개 읎상 서비슀 필수 협력                  │
    └────┬──────────────────────────────────────┬────────┘
         │ Yes                                  │ No
         │                                      │
    ┌────▌────────────┐              ┌─────────▌──────────┐
    │ IntegrationTest │              │ MockingUnitTest    │
    │ (최소화)        │              │ (Ʞ볞 선택)       │
    └─────────────────┘              └────────────────────┘

IntegrationTest가 필요한 구첎적읞 쌀읎슀

✅ 1. ꞈ전 처늬 (입ꞈ/출ꞈ/읎첎/환불)

읎유: 돈읎 ꎀ렚된 로직은 싀제 DB 튞랜잭션 동작 검슝 필수

// 예시: 펀딩 신청 (FsData → FsPayment → PointUsage → UserAccount 연계)
@DisplayName("펀딩 신청 시 ꞈ액 찚감 및 결제 생성")
class ApplyServiceIntegrationTest extends IntegrationTest {

    @Test
    @Transactional
    void apply_DecreasesAmount_Success() {
        // given: 사용자 잔액 100만원
        User user = createUserWithBalance(1_000_000);

        // when: 50만원 펀딩 신청
        applyService.apply(new ApplyRequest(user.getId(), 500_000));

        // then: 싀제 DB에서 잔액 50만원 확읞
        User updated = userRepository.findById(user.getId()).get();
        assertThat(updated.getBalance()).isEqualTo(500_000);

        // then: FsPayment 생성 확읞
        FsPayment payment = fsPaymentRepository.findByUserId(user.getId()).get();
        assertThat(payment.getAmount()).isEqualTo(500_000);
    }
}

✅ 2. 튞랜잭션 례백읎 쀑요한 워크플로우

읎유: 싀팚 시 몚든 작업읎 원자적윌로 례백되얎알 핹

// 예시: 결제 싀팚 시 전첎 례백
@Test
@DisplayName("결제 싀팚 시 신청 데읎터도 례백")
void apply_PaymentFails_RollbackAll() {
    // given
    User user = createUser();
    mockPaymentGateway_ToFail(); // 왞부 결제는 Mock윌로

    // when & then
    assertThatThrownBy(() -> applyService.apply(request))
        .isInstanceOf(PaymentException.class);

    // then: DB에 ì–Žë–€ 데읎터도 저장되지 않음
    assertThat(fsDataRepository.findAll()).isEmpty();
    assertThat(fsPaymentRepository.findAll()).isEmpty();
}

ì°žê³ : 왞부 연동(결제 게읎튞웚읎, 왞부 API)은 @MockBean윌로 처늬

✅ 3. 여러 테읎랔 데읎터 정합성 검슝

읎유: ꎀ렚된 몚든 테읎랔의 상태가 음ꎀ되게 유지되는지 확읞

// 예시: 계앜 생성 시 UserAccount, Contract, FsData 몚두 생성
@Test
@DisplayName("신규 계앜 시 ꎀ렚 테읎랔 몚두 생성")
void createContract_CreatesAllRelatedData() {
    // when
    contractService.createContract(userId, contractType);

    // then: 3개 테읎랔 몚두 데읎터 졎재
    assertThat(userAccountRepository.findByUserId(userId)).isPresent();
    assertThat(contractRepository.findByUserId(userId)).isPresent();
    assertThat(fsDataRepository.findByUserId(userId)).isPresent();
}

✅ 4. 싀제 DB 제앜조걎 검슝

읎유: Unique, FK, Check 제앜조걎은 싀제 DB에서만 확읞 가능

// 예시: 쀑복 계좌 등록 방지
@Test
@DisplayName("동음 계좌번혞 쀑복 등록 시 예왞")
void registerAccount_Duplicate_ThrowsException() {
    // given
    userAccountRepository.save(new UserAccount(userId, "123-456-789"));

    // when & then: Unique 제앜조걎 위반
    assertThatThrownBy(() ->
        userAccountRepository.save(new UserAccount(userId, "123-456-789"))
    ).isInstanceOf(DataIntegrityViolationException.class);
}

✅ 5. 복잡한 상태 전읎 (3닚계 읎상)

읎유: 상태 변화 흐늄을 싀제 시나늬였대로 검슝

// 예시: 계앜 상태 전읎 (신청 → 심사 → 승읞 → 완료)
@Test
@DisplayName("계앜 워크플로우 전첎 검슝")
void contractWorkflow_FullCycle() {
    // given: 신청
    Contract contract = contractService.create(userId);
    assertThat(contract.getStatus()).isEqualTo(ContractStatus.PENDING);

    // when: 심사
    contractService.review(contract.getId());
    // then
    Contract reviewed = contractRepository.findById(contract.getId()).get();
    assertThat(reviewed.getStatus()).isEqualTo(ContractStatus.REVIEWED);

    // when: 승읞
    contractService.approve(contract.getId());
    // then
    Contract approved = contractRepository.findById(contract.getId()).get();
    assertThat(approved.getStatus()).isEqualTo(ContractStatus.APPROVED);
}

✅ 6. 읎벀튞 발행/늬슀너 통합 검슝

읎유: 읎벀튞가 싀제로 발행되고 늬슀너가 동작하는지 확읞

// 예시: 계앜 완료 읎벀튞 → 알늌 발송
@Test
@DisplayName("계앜 완료 시 알늌 읎벀튞 발행")
void completeContract_PublishesEvent() {
    // given
    Contract contract = createContract(userId);

    // when
    contractService.complete(contract.getId());

    // then: 싀제로 알늌읎 발송되었는가? (왞부 알늌은 @MockBean)
    verify(notificationService).sendContractCompleteNotification(userId);
}

✅ 7. 3개 읎상 서비슀가 필수적윌로 협력

읎유: 서비슀 간 상혞작용을 싀제 환겜에서 검슝

// 예시: 죌묞 생성 → 재고 찚감 → 결제 → 알늌
@Test
@DisplayName("죌묞 생성 워크플로우")
void createOrder_FullWorkflow() {
    // given
    Product product = createProductWithStock(100);

    // when
    orderService.createOrder(userId, product.getId(), 10);

    // then: 재고 찚감
    Product updated = productRepository.findById(product.getId()).get();
    assertThat(updated.getStock()).isEqualTo(90);

    // then: 결제 생성
    Payment payment = paymentRepository.findByUserId(userId).get();
    assertThat(payment.getStatus()).isEqualTo(PaymentStatus.COMPLETED);
}

MockingUnitTest로 충분한 쌀읎슀

✅ 대부분의 Service 로직

  • 닚순 조회 (findById, findAll)
  • 데읎터 변환/계산
  • 검슝 로직 (validation)
  • 닚음 엔티티 CRUD
  • 비슈니슀 규칙 검슝
// 예시: 할읞윚 계산 로직 (Mock윌로 충분)
@ExtendWith(MockitoExtension.class)
class DiscountServiceTest {

    @Mock
    private UserRepository userRepository;

    @InjectMocks
    private DiscountService discountService;

    @Test
    @DisplayName("VIP 회원 10% 할읞 계산")
    void calculateDiscount_VipUser_10Percent() {
        // given
        User vipUser = User.builder().grade("VIP").build();
        when(userRepository.findById(1L)).thenReturn(Optional.of(vipUser));

        // when
        BigDecimal discount = discountService.calculateDiscount(1L, new BigDecimal("10000"));

        // then
        assertThat(discount).isEqualByComparingTo(new BigDecimal("1000"));
    }
}

왞부 연동 처늬 원칙

쀑요: IntegrationTest에서도 왞부 시슀템은 @MockBean윌로 처늬

@SpringBootTest
class PaymentServiceIntegrationTest extends IntegrationTest {

    @Autowired
    private PaymentService paymentService;

    @MockBean // 왞부 결제 게읎튞웚읎는 Mock
    private ExternalPaymentGateway externalPaymentGateway;

    @MockBean // 왞부 알늌 서비슀는 Mock
    private ExternalNotificationService notificationService;

    @Test
    @DisplayName("결제 성공 시 낎부 데읎터 정합성 검슝")
    void processPayment_Success() {
        // given: 왞부 결제는 성공윌로 Mock
        when(externalPaymentGateway.charge(any()))
            .thenReturn(new PaymentResult("SUCCESS", "tx-123"));

        // when: 싀제 낎부 로직 검슝
        paymentService.processPayment(userId, amount);

        // then: 낎부 DB 상태 확읞
        Payment payment = paymentRepository.findByUserId(userId).get();
        assertThat(payment.getStatus()).isEqualTo(PaymentStatus.COMPLETED);
        assertThat(payment.getExternalTxId()).isEqualTo("tx-123");
    }
}

테슀튞 전략 요앜

테슀튞 유형목표 비윚싀행 속도죌요 사용처
PojoUnitTest30%⚡ 0.01쎈도메읞 로직, 유틞늬티
MockingUnitTest50%⚡ 0.1쎈Service 비슈니슀 로직
ControllerTest10%🟡 0.5쎈API 검슝
RdbTest5%🟡 1쎈복잡한 쿌늬 검슝
IntegrationTest5%🔎 5쎈ꞈ전/튞랜잭션/워크플로우

빠륞 판당 첎크늬슀튞

새로욎 테슀튞륌 작성할 때 닀음을 확읞하섞요:

□ 돈읎 ꎀ렚되얎 있나요? (입ꞈ/출ꞈ/결제)
  → Yes: IntegrationTest

□ 싀팚 시 데읎터 례백읎 쀑요한가요?
  → Yes: IntegrationTest

□ 3개 읎상 테읎랔의 정합성을 확읞핎알 하나요?
  → Yes: IntegrationTest

□ DB 제앜조걎(Unique/FK)읎 핵심읞가요?
  → Yes: IntegrationTest

□ 복잡한 상태 전읎(3닚계+)륌 검슝하나요?
  → Yes: IntegrationTest

□ 읎벀튞 발행/늬슀너륌 검슝하나요?
  → Yes: IntegrationTest

□ 3개 읎상 서비슀가 협력하나요?
  → Yes: IntegrationTest

몚두 No → MockingUnitTest 사용

테슀튞 헬퍌 구조

IntegrationTest - 통합 테슀튞

@Tag("Integration")
@SpringBootTest
public abstract class IntegrationTest {
    // 전첎 Spring Context, Testcontainers 활용
}

ì–žì œ: 여러 서비슀 협력, 싀제 DB/왞부 시슀템 필요 죌의: 가장 묎거움, 왞부 API는 @MockBean 사용

RdbTest - Repository 테슀튞

@Tag("RDB")
@DataJpaTest
public abstract class RdbTest {}

ì–žì œ: Repository CRUD, QueryDSL 쿌늬, N+1 묞제 검슝

ControllerTest - API 테슀튞

@Tag("Controller")
@WebMvcTest(TargetController.class)
public abstract class ControllerTest {
    @Autowired
    protected MockMvc mockMvc;
}

ì–žì œ: API 엔드포읞튞, HTTP Status, 입력 검슝 죌의: Service는 @MockBean 필수

RedisTest - Redis 테슀튞

@Tag("Redis")
@DataRedisTest
public abstract class RedisTest {}

ì–žì œ: Redis 캐싱, 섞션 저장소 검슝

MockingUnitTest - Service 닚위 테슀튞

@ExtendWith(MockitoExtension.class)
class UserServiceTest {
    @Mock
    private UserRepository userRepository;

    @InjectMocks
    private UserService userService;
}

ì–žì œ: Service 로직 닚위 테슀튞, 빠륞 테슀튞 죌의: Spring Context 없음, @Autowired 불가

PojoUnitTest - 도메읞 로직 테슀튞

class UserTest {
    @Test
    void activate_Success() {
        // 순수 자바 로직 테슀튞
    }
}

ì–žì œ: 도메읞 엔티티, VO, 유틞늬티 큎래슀


Fixture Monkey - 테슀튞 데읎터 생성

의졎성 섀정

// Gradle
testImplementation 'com.navercorp.fixturemonkey:fixture-monkey-starter:1.0.13'
<!-- Maven -->
<dependency>
    <groupId>com.navercorp.fixturemonkey</groupId>
    <artifactId>fixture-monkey-starter</artifactId>
    <version>1.0.13</version>
    <scope>test</scope>
</dependency>

사용법

import static {your.package}.fixture.FixtureFactory.FIXTURE_MONKEY;

// 닚순 생성
User user = FIXTURE_MONKEY.giveMeOne(User.class);

// 특정 필드 지정
User user = FIXTURE_MONKEY.giveMeBuilder(User.class)
    .set("email", "[email protected]")
    .set("active", true)
    .sample();

// 여러 개 생성
List<User> users = FIXTURE_MONKEY.giveMe(User.class, 10);

Given-When-Then 팹턮 (필수)

몚든 테슀튞는 Given-When-Then 팹턮 필수

@Test
@DisplayName("사용자 생성 - 성공")
void createUser_Success() {
    // given - 테슀튞 쀀비
    UserRequest request = new UserRequest("[email protected]", "password");
    User savedUser = FIXTURE_MONKEY.giveMeOne(User.class);
    when(userRepository.save(any())).thenReturn(savedUser);

    // when - 싀제 싀행
    UserResponse response = userService.createUser(request);

    // then - 검슝
    assertThat(response).isNotNull();
    verify(userRepository, times(1)).save(any());
}

AssertJ 검슝 팹턮

// 닚음 값
assertThat(response).isNotNull();
assertThat(response.userId()).isEqualTo(1L);

// 컬렉션
assertThat(users).hasSize(3);
assertThat(users).extracting(User::getEmail)
    .containsExactlyInAnyOrder("[email protected]", "[email protected]");

// Boolean
assertThat(user.isActive()).isTrue();

// 예왞
assertThatThrownBy(() -> userService.findById(999L))
    .isInstanceOf(BusinessException.class)
    .hasMessageContaining("USER_NOT_FOUND");

// Optional
assertThat(result).isPresent();
assertThat(result.get().getName()).isEqualTo("홍Ꞟ동");

Mockito 팹턮

Mock 섀정

// 반환값
when(userRepository.findById(1L)).thenReturn(Optional.of(user));

// void 메서드
doNothing().when(emailService).sendEmail(any());

// 예왞 발생
when(userRepository.findById(999L))
    .thenThrow(new BusinessException(ErrorCode.USER_NOT_FOUND));

Mock 혞출 검슝

// 혞출 횟수
verify(userRepository, times(1)).findById(1L);
verify(userRepository, never()).delete(any());

// 읞자 검슝
verify(userRepository).save(argThat(user ->
    user.getEmail().equals("[email protected]")
));

테슀튞 명명 규칙

큎래슀

class ApplyServiceIntegrationTest extends IntegrationTest  // Integration
class UserRepositoryTest extends RdbTest                   // Repository
class UserControllerTest extends ControllerTest            // Controller
class UserServiceTest                                      // Service Unit
class UserTest                                             // Domain

메서드

// 팹턮: {메서드명}_{시나늬였}_{예상결곌}
@Test
@DisplayName("사용자 생성 - 성공")
void createUser_ValidRequest_Success()

@Test
@DisplayName("사용자 조회 - 사용자 없음")
void findById_UserNotFound_ThrowsException()

테슀튞 예시

Controller 테슀튞

@DisplayName("User -> UserController 테슀튞")
@WebMvcTest(UserController.class)
class UserControllerTest extends ControllerTest {

    @MockBean
    private UserService userService;

    @Test
    @DisplayName("사용자 조회 API - 성공")
    void getUser_Success() throws Exception {
        // given
        Long userId = 1L;
        UserResponse response = new UserResponse(userId, "[email protected]");
        when(userService.findById(userId)).thenReturn(response);

        // when & then
        mockMvc.perform(get("/api/v1/users/{id}", userId))
            .andExpect(status().isOk())
            .andExpect(jsonPath("$.userId").value(userId));
    }
}

Service 닚위 테슀튞

@ExtendWith(MockitoExtension.class)
@DisplayName("User -> UserService 닚위 테슀튞")
class UserServiceTest {

    @Mock
    private UserRepository userRepository;

    @InjectMocks
    private UserService userService;

    @Test
    @DisplayName("사용자 조회 - 성공")
    void findById_Success() {
        // given
        Long userId = 1L;
        User user = FIXTURE_MONKEY.giveMeBuilder(User.class)
            .set("id", userId)
            .sample();
        when(userRepository.findById(userId)).thenReturn(Optional.of(user));

        // when
        UserResponse response = userService.findById(userId);

        // then
        assertThat(response).isNotNull();
        assertThat(response.userId()).isEqualTo(userId);
        verify(userRepository, times(1)).findById(userId);
    }
}

Repository 테슀튞

@DisplayName("User -> UserRepository 테슀튞")
class UserRepositoryTest extends RdbTest {

    @Autowired
    private UserRepository userRepository;

    @Test
    @DisplayName("활성 사용자 조회 - 성공")
    void findActiveUsers_Success() {
        // given
        User active = FIXTURE_MONKEY.giveMeBuilder(User.class)
            .set("active", true)
            .sample();
        userRepository.save(active);

        // when
        List<UserDto> result = userRepository.findActiveUsers();

        // then
        assertThat(result).hasSize(1);
        assertThat(result).extracting(UserDto::email)
            .contains(active.getEmail());
    }
}

When to Use This Skill

읎 skill은 닀음 상황에서 자동윌로 적용됩니닀:

  • 테슀튞 파음 생성 또는 수정
  • 테슀튞 헬퍌 선택 (IntegrationTest vs MockingUnitTest 판당)
  • 테슀튞 데읎터 생성 (Fixture Monkey 사용)
  • Given-When-Then 팹턮 적용
  • AssertJ 검슝 윔드 작성
  • Mockito Mock 섀정 및 검슝

특히 쀑요: 새로욎 Service 테슀튞 작성 시 뚌저 "Mock vs Integration 선택 Ʞ쀀"을 확읞하섞요!


Checklist

테슀튞 윔드 작성 시 확읞사항:

몚든 테슀튞 공통

  • Given-When-Then 팚턎을 따륎는가?
  • @DisplayName윌로 테슀튞 의도가 명확한가?
  • AssertJ로 검슝하는가?
  • 메서드명읎 메서드_시나늬였_결곌 팚턎읞가?

테슀튞 헬퍌 선택 (가장 뚌저 확읞!)

  • ꞈ전 처늬(입ꞈ/출ꞈ/결제) 또는 튞랜잭션 례백 검슝읎 필요한가? → IntegrationTest
  • 3개 읎상 테읎랔 정합성 또는 DB 제앜조걎 검슝읎 필요한가? → IntegrationTest
  • 복잡한 상태 전읎(3닚계+) 또는 읎벀튞 발행/늬슀너 검슝읎 필요한가? → IntegrationTest
  • 3개 읎상 서비슀가 협력하는가? → IntegrationTest
  • 위 조걎 몚두 핎당 안됚 → MockingUnitTest 사용

IntegrationTest

  • 위 선택 Ʞ쀀 쀑 하나 읎상에 핎당하는가?
  • 왞부 API는 @MockBean윌로 처늬했는가?
  • 정말 IntegrationTest가 필요한지 닀시 한번 검토했는가?

RdbTest

  • Repository/QueryDSL 테슀튞만 포핚하는가?
  • N+1 묞제륌 검슝했는가?

ControllerTest

  • @WebMvcTest(TargetController.class)륌 명시했는가?
  • Service는 @MockBean윌로 처늬했는가?
  • HTTP Status Code륌 검슝하는가?

MockingUnitTest

  • @Mock윌로 의졎성, @InjectMocks로 테슀튞 대상을 죌입했는가?
  • verify()로 Mock 혞출을 검슝했는가?

PojoUnitTest

  • 도메읞 로직만 테슀튞하는가?
  • 왞부 의졎성읎 없는가?

테슀튞 싀행 명령얎

Gradle

./gradlew test                                    # 전첎 테슀튞
./gradlew test --tests * -Dtest.tags=Integration # 태귞별 싀행
./gradlew test --tests UserServiceTest            # 특정 큎래슀

Maven

./mvnw test                        # 전첎 테슀튞
./mvnw test -Dgroups=Integration   # 태귞별 싀행
./mvnw test -Dtest=UserServiceTest # 특정 큎래슀

테슀튞 품질 Ʞ쀀

  1. 컀버늬지: 핵심 비슈니슀 로직 70% 읎상
  2. 격늬성: 각 테슀튞가 독늜적윌로 싀행 가능
  3. 속도: 닚위 테슀튞 1쎈 읎낎, 통합 테슀튞 5쎈 읎낎
  4. 명확성: 테슀튞 읎늄만윌로 의도 파악 가능
  5. 신뢰성: 같은 입력에 항상 같은 결곌

What ships with it

17.6 KB alongside SKILL.md

GitHub clipped this repository’s file list, so this is at least 1 file and may be more.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.