ワンクリックで
registering-dependency
Registers a new dependency in Swinject DI container. Use when adding new UseCase, Repository, or Service to DI.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Registers a new dependency in Swinject DI container. Use when adding new UseCase, Repository, or Service to DI.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Standard editorial template for any standalone HTML output (reports, RCAs, dashboards, diagrams, slides, recaps). Use EVERY time you generate an HTML file so output follows one consistent house style instead of ad-hoc theming.
Findings-first review agent for code changes. Use when the user asks to review a branch, PR, diff, commit range, or recent changes and wants prioritized, actionable issues instead of implementation work.
Scan and clean stale Claude Code sessions from the shared store at ~/.local/share/claude/projects (used by all .claude / .claude-accountN dirs via symlink). Removes session JSONLs older than N days, orphan subagent dirs, and reports reclaimable space.
Triage ShopHelp XCTest/Swift Testing failures before proposing fixes.
Manage Jira issues through jhelp shell functions (jv, jm, jd, jc, jforward, etc.). Use when the user wants to view, transition, assign, comment on, edit, search, or create Jira work items; when they provide a bare issue number, Jira issue key, or Jira URL; or when the task involves the current git branch ticket.
Create git commits. Use when user says "commit", "commit this", "commit changes", "split commit", "split commit change", "split the changes".
| name | registering-dependency |
| description | Registers a new dependency in Swinject DI container. Use when adding new UseCase, Repository, or Service to DI. |
Registers a new dependency in the Swinject DI container following project patterns.
| Dependency Type | Assembly File |
|---|---|
| UseCase | AppUsecasesAssembly.swift |
| Repository | RepositoriesAssembly.swift |
| Service | AppServicesAssembly.swift |
| Networking Gateway | NetworkAssembly.swift |
Search for these files in the project if unsure of exact location.
container.register(MyUseCaseProtocol.self) { resolver in
let repository = resolver.resolve(MyRepositoryProtocol.self)!
return MyUseCase(repository: repository)
}
container.register(MyRepositoryProtocol.self) { resolver in
let networking = resolver.resolve(AppGatewayNetworkingProtocol.self)!
return MyRepositoryImpl(networking: networking)
}.inObjectScope(.container)
| Scope | Behavior | Use For |
|---|---|---|
| Default (transient) | New instance every resolve | UseCases, ViewModels |
.container | Singleton within container | Repositories, Services |
let useCase = dependency.resolve(MyUseCaseProtocol.self)!
let dependencies = FeatureDependencies(useCase: useCase)
let viewModel = FeatureViewModel(dependencies: dependencies)
Force unwrap (!) is allowed ONLY at DI resolution in Coordinators — this is the project convention.
struct FeatureDependencies {
let myUseCase: MyUseCaseProtocol
let anotherUseCase: AnotherUseCaseProtocol
}
Fields are always protocol types, never concrete implementations.
// 1. Repository
container.register(ProductRepositoryProtocol.self) { resolver in
let networking = resolver.resolve(AppGatewayNetworkingProtocol.self)!
return ProductRepositoryImpl(networking: networking)
}.inObjectScope(.container)
// 2. UseCase
container.register(GetProductListUseCaseProtocol.self) { resolver in
let repo = resolver.resolve(ProductRepositoryProtocol.self)!
return GetProductListUseCase(repository: repo)
}
container.register(CheckoutUseCaseProtocol.self) { resolver in
let orderRepo = resolver.resolve(OrderRepositoryProtocol.self)!
let cartRepo = resolver.resolve(CartRepositoryProtocol.self)!
return CheckoutUseCase(orderRepository: orderRepo, cartRepository: cartRepo)
}
See docs/PATTERNS.md for the DI pattern.
See docs/ARCHITECTURE.md for AppDependency.shared.resolve() usage.