本文へ移動
cccskills
無料GitHub で公開

acc-create-strategy

Generates Strategy pattern for PHP 8.5. Creates interchangeable algorithm families with context class, strategy interface, and concrete implementations. Includes unit tests.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md5.1 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Strategy Pattern Generator

Creates Strategy pattern infrastructure for interchangeable algorithm families.

When to Use

ScenarioExample
Multiple algorithmsPricing, tax, shipping calculation
Runtime selectionPayment processing based on amount
Avoiding conditionalsReplace switch/if-else chains
Algorithm familiesSorting, compression, encryption

Component Characteristics

StrategyInterface

  • Defines algorithm contract
  • Single method for execution
  • Supports method for selection

Strategy Resolver

  • Resolves appropriate strategy
  • Based on input criteria
  • Falls back to default

Concrete Strategies

  • Implement specific algorithms
  • Interchangeable via interface
  • Encapsulate algorithm details

Generation Process

Step 1: Generate Strategy Interface

Path: src/Domain/{BoundedContext}/Strategy/

  1. {Name}StrategyInterface.php — Algorithm contract with supports method

Step 2: Generate Concrete Strategies

Path: src/Domain/{BoundedContext}/Strategy/

  1. {Variant1}{Name}Strategy.php — First algorithm implementation
  2. {Variant2}{Name}Strategy.php — Second algorithm implementation
  3. Default{Name}Strategy.php — Fallback implementation

Step 3: Generate Resolver

Path: src/Domain/{BoundedContext}/Strategy/

  1. {Name}StrategyResolver.php — Strategy selection logic

Step 4: Generate Service (Optional)

Path: src/Domain/{BoundedContext}/Strategy/

  1. {Name}Service.php — Facade using resolver

Step 5: Generate Tests

  1. {Variant}{Name}StrategyTest.php — Individual strategy tests
  2. {Name}StrategyResolverTest.php — Resolver tests

File Placement

ComponentPath
Strategy Interfacesrc/Domain/{BoundedContext}/Strategy/
Concrete Strategiessrc/Domain/{BoundedContext}/Strategy/
Resolversrc/Domain/{BoundedContext}/Strategy/
Unit Teststests/Unit/Domain/{BoundedContext}/Strategy/

Naming Conventions

ComponentPatternExample
Interface{Name}StrategyInterfacePricingStrategyInterface
Concrete{Variant}{Name}StrategyBulkPricingStrategy
Context{Name}ContextPricingContext
Resolver{Name}StrategyResolverPricingStrategyResolver
Test{ClassName}TestBulkPricingStrategyTest

Quick Template Reference

Strategy Interface

interface {Name}StrategyInterface
{
    public function execute({InputType} $input): {OutputType};
    public function supports({InputType} $input): bool;
}

Concrete Strategy

final readonly class {Variant}{Name}Strategy implements {Name}StrategyInterface
{
    public function execute({InputType} $input): {OutputType}
    {
        {algorithmImplementation}
    }

    public function supports({InputType} $input): bool
    {
        return {condition};
    }
}

Strategy Resolver

final readonly class {Name}StrategyResolver
{
    public function __construct(
        private iterable $strategies,
        private {Name}StrategyInterface $defaultStrategy
    ) {}

    public function resolve({InputType} $input): {Name}StrategyInterface
    {
        foreach ($this->strategies as $strategy) {
            if ($strategy->supports($input)) {
                return $strategy;
            }
        }
        return $this->defaultStrategy;
    }
}

Usage Example

// Configure strategies
$resolver = new PricingStrategyResolver(
    strategies: [
        new BulkPricingStrategy(),      // 15% off for 100+ items
        new PromotionalPricingStrategy(), // Active promotion discount
        new VipPricingStrategy(),        // VIP customer discount
    ],
    defaultStrategy: new RegularPricingStrategy()
);

// Use in service
$strategy = $resolver->resolve($pricingContext);
$price = $strategy->calculatePrice($pricingContext);

Common Strategy Examples

DomainStrategies
PricingRegular, Bulk, Promotional, VIP
ShippingStandard, Express, Free, International
TaxUS, EU, Exempt, Zero-rated
PaymentCredit Card, PayPal, Bank Transfer
DiscountPercentage, Fixed, Buy-One-Get-One

Anti-patterns to Avoid

Anti-patternProblemSolution
Stateful StrategiesSide effectsMake strategies readonly
Fat ContextToo much couplingMinimal context interface
Missing ResolverManual strategy selectionUse resolver pattern
Over-engineeringSingle algorithmDon't use pattern
Leaky AbstractionStrategy-specific typesUse shared interfaces

References

For complete PHP templates and examples, see:

  • references/templates.md — Strategy Interface, Concrete Strategy, Resolver, Context templates
  • references/examples.md — Pricing, Shipping, Tax strategies and tests

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Master backend architectures, REST API design, microservices, and server-side development across multiple languages. Use this as a central index to access specialized sub-skills.

日本語の概要は準備中です。原文の説明を表示しています。

MikeCheng1208/BattleTree22026年7月22日 更新

在每次回复中使用固定前缀并列出本次实际参考的指令/文件,便于校验是否遵循上下文与规则。

日本語の概要は準備中です。原文の説明を表示しています。

MikeCheng1208/BattleTree22026年7月22日 更新

Automate 21risk tasks via Rube MCP (Composio). Always search tools first for current schemas.

日本語の概要は準備中です。原文の説明を表示しています。

MikeCheng1208/BattleTree22026年7月22日 更新

Automate 2chat tasks via Rube MCP (Composio). Always search tools first for current schemas.

日本語の概要は準備中です。原文の説明を表示しています。

MikeCheng1208/BattleTree22026年7月22日 更新

Arquitecto de Soluciones Principal y Consultor Tecnológico de Andru.ia. Diagnostica y traza la hoja de ruta óptima para proyectos de IA en español.

日本語の概要は準備中です。原文の説明を表示しています。

MikeCheng1208/BattleTree22026年7月22日 更新

[00] META. Orchestrate skills into dynamic chains for complex tasks. Analyzes the task, discovers available skills, builds an optimal chain, explains why each skill is needed, and executes step-by-step with user confirmation. Use for any complex task requiring multiple thinking/research/analysis steps. Triggers on "plan this", "how to approach", "what's the strategy", "build a plan", or any multi-step problem requiring skill orchestration.

日本語の概要は準備中です。原文の説明を表示しています。

MikeCheng1208/BattleTree22026年7月22日 更新

MikeCheng1208 のスキルをすべて見る

このスキルの問題を報告する