원클릭으로
agha-actor-model
Foundational concurrent computation model where actors communicate exclusively through asynchronous message passing
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Foundational concurrent computation model where actors communicate exclusively through asynchronous message passing
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Instruction manual for agents driving Port Daddy multi-agent coordination. Use when an agent will edit a repo, recover work, coordinate with other sessions, inspect FleetBar/Fleet Control Center truth, package skill/docs surfaces, or leave a durable handoff. NOT for generic coding that does not need Port Daddy state.
Contributor manual for agents working ON the Port Daddy codebase itself — the daemon, MCP server, FleetBar / Fleet Control Center, website, CLI surface, distribution mirrors, internal recovery ledger, and the named internal actors (Coxswain / Navigator / Cartographer / Lookout / Quartermaster + Shipwright). Use when editing the port-daddy repo. NOT for agents using Port Daddy on other projects (use port-daddy-agent-skill for that), and NOT distributed to public skill catalogs — this skill is private to the port-daddy repo.
Decide which single operator surface — Scout, FleetBar, or pd-console — owns each capability by its distance-from-work (intake/ambient/deep), and audit that placement for authority spread, unenforceable controls, evidence overflow into FleetBar, and hot/cool bus-subscription mismatches. Use when placing a new capability on one of Agent Harbor's three operator surfaces, reconciling a mockup that duplicates a capability across two surfaces, or auditing an existing operator-surface spec before implementation locks it in. NOT for choosing SDK/CLI/MCP/GUI surfaces for API-consuming developers (developer-surface-strategist), designing the concrete interaction flow within one already-assigned surface (agentic-coding-ux-designer), or the hot-bus/cool-bus transport mechanics themselves (swarm-invocation-designer).
Audit what PRs this session produced. Ask: "What work did I do this session that isn't in a PR yet, or isn't merged?" Forces the agent to account for all code changes before declaring done. Use at any point — especially at session end, after a manager wave, or when asked "what's left?"
After each execution wave completes, inspect the DAG's commitment landscape and premortem risk score. If any surviving nodes carry `commitment_level: TENTATIVE`, or if the premortem `recommendation` is `ACCEPT_WITH_MONITORING` or `ESCALATE_TO_HUMAN`, pause execution and run a structured parley: re-evaluate TENTATIVE nodes against the evidence produced by the just-completed wave, update risk severity where warranted, and either promote nodes to COMMITTED, demote them to EXPLORATORY, or prune them before launching the next wave. Parley is a scheduled operation triggered by wave completion — not an ad-hoc intervention — making wave boundaries the natural formation-break point where plans meet reality.
Build and extend pd-console — Port Daddy's GPU-native macOS operator console (GPUI 0.2.x, Zed's Rust UI). Covers the render-agnostic Block/Pane(Surface) contract, the two-thread reqwest↔smol refresh pipeline, Taffy flexbox layout, uniform_list virtual scroll, focus + keyboard nav, the OKLCH theme and ICS maritime flag badges, GPUI's missing text-input, and the real feature-gated cargo/CI gate. Use when adding panes, visual polish, or debugging GPUI rendering/layout/focus in core/pd-console. NOT for the TypeScript daemon, generic Rust toolchain/borrow-checker help (use rust-with-claude-code), or non-pd GPUI apps with a different theme/architecture.
| license | Apache-2.0 |
| name | agha-actor-model |
| description | Foundational concurrent computation model where actors communicate exclusively through asynchronous message passing |
| metadata | {"category":"Research & Academic","tags":["actor-model","concurrency","distributed-systems","message-passing"],"io-contract":{"kind":"deliverable","produces":[{"kind":"design-doc","description":"Actor system architecture with decision trees for actor creation strategy, message passing patterns, and failure isolation topology","format":"markdown"},{"kind":"refactor-plan","description":"Identification and remediation of anti-patterns (central orchestrator, synchronous blocking, shared state contamination, static topology) with capability routing and customer pattern alternatives","format":"markdown"},{"kind":"critique","description":"Analysis of concurrent system design against quality gates: message loop blocking, state encapsulation, address-as-capability, replacement behavior specification, and composition behavior verification","format":"markdown"}]}} |
| allowed-tools | Read,Write,Edit,Glob,Grep |
IF task has sequential dependencies:
├─ Use customer pattern: create child with reply address
├─ Pass customer address to child as parameter
└─ Child sends result directly to customer (not parent)
IF task requires long computation:
├─ Create insensitive actor for computation
├─ Forward incoming messages to buffer actor
└─ Resume from buffer when computation completes
IF task needs dynamic resource allocation:
├─ Create resource manager actors on demand
├─ Pass capabilities (addresses) as message data
└─ No central registry - addresses flow through system
IF task has failure isolation requirements:
├─ Spawn supervised child actors for risky operations
├─ Supervisor detects failure via missing replies
└─ Replace failed actors without affecting others
IF composing existing agent systems:
├─ Verify interface preserves causal structure
├─ Test behavior under composition (not just isolation)
└─ Use message protocols as boundaries (not shared state)
IF coordination needed with other agents:
├─ SEND messages (don't modify local state first)
├─ Include reply address if response expected
└─ Never assume message ordering
IF local computation needed:
├─ SPECIFY replacement behavior
├─ Encapsulate new state (don't expose internals)
└─ Ensure one-message-at-a-time processing
IF dynamic scaling needed:
├─ CREATE new actors with specific behaviors
├─ Pass necessary addresses to new actors
└─ No shared initialization state
Detection: If you see one actor routing all messages or holding all system state Symptoms: Single point of failure, bottleneck under load, infinite regression problem Fix: Decompose into community of actors, each knowing only local context, use capability routing
Detection: If actors wait/block for responses instead of specifying replacement behavior Symptoms: Deadlock under load, hidden timing assumptions, reduced concurrency Fix: Model as request-reply message pairs, use customer pattern for dependencies, apply insensitive actor pattern
Detection: If multiple actors read/write same data structure (even with locks) Symptoms: Race conditions, sequential bottlenecks, hidden global state Fix: Encapsulate state in single actor, use message passing for coordination, mutual exclusion is free
Detection: If testing only compares final outputs without checking interaction patterns Symptoms: Brock-Ackerman anomaly - identical outputs but different composition behavior Fix: Verify causal structure preservation, test behavior under composition, use observation equivalence
Detection: If communication graph is fixed at startup with no runtime reconfiguration Symptoms: Cannot handle open systems, no dynamic resource management, brittle under change Fix: Treat addresses as first-class data, implement capability routing, support runtime topology changes
Scenario: Agent needs to process a complex request requiring sequential subtasks A → B → C, but must remain responsive to other messages.
Novice Approach:
receive request →
block while calling subtask A
block while calling subtask B
block while calling subtask C
send final result
Expert Application of Actor Model:
receive request →
create customer_BC actor with addresses for B, C, final recipient
send subtask A request to A_processor with customer_BC as reply address
specify replacement behavior: ready for next request
customer_BC receives A result →
send result to B_processor with customer_C as reply address
customer_C receives B result →
send result to C_processor with final_recipient as reply address
Key Decisions Made:
Scenario: System needs to handle agent failures without cascading to whole system.
Novice Approach: Try-catch around agent calls, restart everything on failure.
Expert Application:
supervisor creates worker_actor →
sends task to worker with reply timeout
specifies replacement: "waiting_for_reply"
IF reply received within timeout →
forward result to client
specify replacement: "ready"
IF timeout expires →
create new worker_actor (old one failed)
resend task to new worker
specify replacement: "waiting_for_reply"
Trade-offs Navigated:
references/actor-model-core-primitives.md — The three irreducible primitives (send, create, replace) that define all concurrent computation. Read when designing an actor's message handler or reasoning about what an agent must do.references/actor-primitives-as-agent-design-axioms.md — Proof that the 3-tuple response is minimal and complete for concurrent agents. Read when validating that an actor design covers all necessary behaviors.references/asynchronous-communication-why-it-must-be-default.md — Rigorous argument that asynchronous messaging is foundational; synchronous is derived. Read when deciding between async and sync coordination patterns.references/asynchronous-message-passing-as-the-only-general-coordination-primitive.md — Proof that synchronous communication is a protocol built on async, not a primitive. Read when designing coordination between agents.references/dynamic-topology-and-capability-routing.md — Why static communication graphs fail; how addresses-as-capabilities enable dynamic systems. Read when designing resource allocation or dynamic agent creation.references/dynamic-topology-and-emergent-concurrency.md — How actor systems scale through runtime topology changes. Read when architecting systems that must adapt to load or availability.references/history-sensitivity-and-shared-state.md — Why pure functions fail for stateful systems; when encapsulation is necessary. Read when deciding between stateless tools and stateful actors.references/the-insensitive-actor-and-delegation-patterns.md — Pattern for handling long computations without blocking message processing. Read when an actor must wait for external results.references/replacing-shared-state-with-encapsulated-behavior.md — Why shared variables fail; how actor encapsulation replaces them. Read when eliminating race conditions or global state.references/deadlock-divergence-and-failure-modes.md — Catalogue of pathological behaviors and actor model countermeasures. Read when analyzing failure modes or designing fault tolerance.references/compositionality-abstraction-and-the-brock-ackerman-lesson.md — The Brock-Ackerman anomaly: identical outputs, different composition behavior. Read when testing composite systems or verifying behavioral contracts.references/observation-equivalence-and-behavioral-contracts.md — Three levels of equivalence for substituting one skill for another. Read when defining when agents are interchangeable.references/open-systems-and-the-impossibility-of-closed-world-assumptions.md — Why closed-world assumptions fail in concurrent systems. Read when designing for extensibility or external inputs.references/open-systems-extensibility-and-reconfigurability.md — How actor model enables runtime reconfiguration without closed-world assumptions. Read when building systems that must evolve post-deployment.references/nondeterminism-fairness-and-the-two-transition-systems.md — Formal semantics: why two transition relations are necessary. Read when reasoning formally about correctness or fairness.references/pipelining-and-maximal-concurrency-exploitation.md — How actor model exposes maximal concurrency by default. Read when optimizing for parallelism or understanding performance potential.references/minimal-primitives-maximum-expressiveness.md — Design lessons: minimal primitives yield maximum expressiveness. Read when evaluating language or framework design choices.references/abstraction-compositionality-open-systems.md — The hardest problem: reasoning about complex systems built from simpler parts. Read when designing abstractions for multi-agent systems.references/deadlock-divergence-and-failure-containment.md — (auto-added; describe on next pass)This skill should NOT be used for:
Delegate to other skills when:
Common misconceptions about scope: