Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/adamayoung/popcorn --skill add-use-case명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | add-use-case |
| description | Add a use case to an existing context |
Guide for adding a new use case following clean architecture patterns.
Ask the user for:
Contexts/{Context}/Sources/{Context}Application/UseCases/{UseCaseName}/
{UseCaseName}UseCase.swift - Protocol definition:
public protocol {UseCaseName}UseCase: Sendable {
func execute(...) async throws({UseCaseName}Error) -> ResultType
}
Default{UseCaseName}UseCase.swift - Implementation:
final class Default{UseCaseName}UseCase: {UseCaseName}UseCase {
private let repository: any SomeRepository
init(repository: some SomeRepository) {
self.repository = repository
}
func execute(...) async throws({UseCaseName}Error) -> ResultType {
// Implementation
}
}
{UseCaseName}Error.swift - Error type:
public enum {UseCaseName}Error: Error, Equatable, Sendable {
case notFound
case unknown(Error? = nil)
}
In {Context}Application/{Context}ApplicationFactory.swift:
func make{UseCaseName}UseCase() -> some {UseCaseName}UseCase {
Default{UseCaseName}UseCase(repository: repository)
}
In {Context}Composition/Popcorn{Context}Factory.swift:
public func make{UseCaseName}UseCase() -> some {UseCaseName}UseCase {
applicationFactory.make{UseCaseName}UseCase()
}
This is all the wiring the use case needs: the context factory is already exposed
on AppServices (e.g. services.{context}Factory), so any feature can reach the
new use case through it.
There is no per-use-case dependency registration. A feature reaches the use case
in its {Feature}Dependencies.live(services:) builder via the context factory on
AppServices, mapping the domain result to a view model:
public extension {Feature}Dependencies {
static func live(services: AppServices) -> {Feature}Dependencies {
let useCase = services.{context}Factory.make{UseCaseName}UseCase()
return {Feature}Dependencies(
fetch: { id in
let result = try await useCase.execute(id: id)
return {Feature}Mapper().map(result)
}
)
}
}
Create tests in Contexts/{Context}/Tests/{Context}ApplicationTests/UseCases/{UseCaseName}/:
$ARGUMENTS