ソース情報
- リポジトリ
- adamayoung/popcorn
- ソースの最終更新活動
- 2026年6月10日 15:42
- 検出された SKILL.md の言語
- 英語
- スター
- 1
- フォーク
- 0
インストール方法
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
ソースファイルを確認
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
メニュー
デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。
インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。
SOC 職業分類に基づく
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/adamayoung/popcorn --skill add-use-caseコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
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