happy-sim-component-guide
Help choose the right happysimulator components for a use case
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Help choose the right happysimulator components for a use case
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Run ruff linter and formatter on the project
Add observability (probes, trackers, charts) to a simulation
Analyze simulation results and provide insights
Troubleshoot a broken or misbehaving simulation
Walk through a library example with detailed explanation
Generate a complete simulation from a high-level description
| name | happy-sim-component-guide |
| description | Help choose the right happysimulator components for a use case |
Interactive wizard to help users pick the right happysimulator components for their simulation.
Ask the user what system they want to model if not specified. Get a brief description of the scenario (e.g., "a web service with retries", "a factory with breakdowns", "a social network with opinion spread").
Read the project's CLAUDE.md for the full component catalog.
Map the user's scenario to the best-fit components. Use this decision tree:
→ QueuedResource (override handle_queued_event() and has_capacity())
→ With priority? Use PriorityQueue policy
→ With balking? Use BalkingQueue policy
→ With reneging? Use RenegingQueuedResource
→ Deterministic: Source.constant(rate=N, target=entity)
→ Stochastic: Source.poisson(rate=N, target=entity)
→ Time-varying: Source.with_profile(profile=MyProfile(), target=entity)
→ Custom events: Implement EventProvider and pass to Source()
→ Network + add_bidirectional_link() + link condition factories
→ Need partitions? network.partition([a], [b]) / partition.heal()
→ Need clock skew? NodeClock(FixedSkew(...)) or NodeClock(LinearDrift(...))
→ Need causal ordering? LamportClock, VectorClock, or HybridLogicalClock
→ Leader election + log replication: RaftNode
→ Classic consensus: PaxosNode or FlexiblePaxosNode
→ Eventual consistency: CRDTStore with GCounter, PNCounter, LWWRegister, ORSet
→ Primary-backup: PrimaryNode + BackupNode
→ Chain replication: ChainNode
→ Fail-fast after errors: CircuitBreaker
→ Limit concurrency: Bulkhead
→ Limit wait time: TimeoutWrapper
→ Backup request: Hedge
→ Graceful degradation: Fallback
→ Token bucket: RateLimitedEntity + TokenBucketPolicy
→ Leaky bucket: RateLimitedEntity + LeakyBucketPolicy
→ Burst suppression (no throughput cap): Inductor
→ Adaptive: RateLimitedEntity + AdaptivePolicy
→ Resource("name", capacity=N) + yield resource.acquire(amount) + grant.release()
→ With preemption? PreemptibleResource
→ Pooled with fixed cycle? PooledCycleResource
→ Assembly line: ConveyorBelt + InspectionStation
→ Batch processing: BatchProcessor
→ Shift-based staffing: ShiftSchedule + ShiftedServer
→ Equipment breakdowns: BreakdownScheduler
→ Inventory management: InventoryBuffer or PerishableInventory
→ Scheduled arrivals: AppointmentScheduler
→ Gate/valve control: GateController
→ Fan-out/fan-in: SplitMerge
→ Conditional routing: ConditionalRouter
→ Individual agents: Agent + PersonalityTraits + decision model
→ Population: Population.uniform() or Population.from_segments()
→ Social influence: Environment + influence model (DeGrootModel, BoundedConfidenceModel, VoterModel)
→ Stimuli: broadcast_stimulus(), price_change(), influence_propagation()
→ Key-value: KVStore
→ With cache: CachedStore
→ Sharded: ShardedStore
→ LSM tree: LSMTree + compaction strategies
→ Transactions: TransactionManager with IsolationLevel
→ Pub/sub: MessageQueue + Topic
→ Event log: EventLog + ConsumerGroup
→ Stream processing: StreamProcessor
→ Dead letters: DeadLetterQueue
→ Latency tracking: Sink (auto-tracks from context["created_at"]) or LatencyTracker
→ Event counting: Counter
→ Throughput: ThroughputTracker
→ Time series: Probe + Data
Present the recommended components with:
examples/ for referenceAsk if the user wants to scaffold the full simulation (/happy-sim-scaffold).