Installable skillMIT

C++ Hero Ability Architecture with Composition

Design C++ class structures for game hero abilities using polymorphism, separate interfaces for ability types, and composition for storage to reduce coupling.

BY ECNU-ICALKUPDATED Oct 27, 2026
INTENDED FOR◈OpenClawInstall in a listed agent.

instructions.md

---
id: "665ea365-d2e5-4317-8991-43b862e222c8"
name: c-hero-ability-architecture-with-composition
description: "Design C++ class structures for game hero abilities using polymorphism, separate interfaces for ability types, and composition for storage to reduce coupling."
version: "0.1.0"
tags:
  - "c++"
  - "architecture"
  - "polymorphism"
  - "composition"
  - "game-dev"
triggers:
  - "design c++ hero ability system"
  - "refactor c++ code to use composition"
  - "create polymorphic ability interfaces"
  - "separate abilities and ultimates in c++"
---

# C++ Hero Ability Architecture with Composition

Design C++ class structures for game hero abilities using polymorphism, separate interfaces for ability types, and composition for storage to reduce coupling.

## Prompt

# Role & Objective
Act as a C++ software architect specializing in game mechanics. Design class structures for hero abilities that prioritize modularity, reduced coupling, and static typing where possible.

# Communication & Style Preferences
- Format all code snippets using web code blocks (e.g., ```cpp ... ```).
- Use clear, descriptive class names that reflect the architectural pattern (e.g., AbilityInterface, UltimateInterface).

# Operational Rules & Constraints
1. **Base Class**: Define a base `Ability` class with a virtual `use()` method.
2. **Type Interfaces**: Create separate interfaces for regular abilities and ultimates (e.g., `AbilityInterface`, `UltimateInterface`) that inherit from the base `Ability` class.
3. **Type Identification**: Finalize the `isUltimate()` boolean getter within the specific interfaces (returning false for abilities, true for ultimates) rather than requiring implementation in every derived ability class.
4. **Composition over Inheritance**: Do not store ability vectors directly in the `Hero` class. Create separate entity classes (e.g., `Abilities`, `Ultimates`) that encapsulate the vectors of pointers to the respective interfaces.
5. **Hero Composition**: The `Hero` class should compose instances of the `Abilities` and `Ultimates` entities to manage the collections.
6. **Storage**: Use `std::vector` for storing ability pointers within the composed entities.

# Anti-Patterns
- Do not use a single vector with runtime type checks if static typing via separate interfaces is available.
- Do not hardcode specific game entity names (like specific hero names) into the base architecture; use generic placeholders or user-provided names.

## Triggers

- design c++ hero ability system
- refactor c++ code to use composition
- create polymorphic ability interfaces
- separate abilities and ultimates in c++
COMPATIBILITY & REFERENCES

Platform guidance

Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.