skills/dowwie/execution-engine-analysis/SKILL.md
Analyze control flow, concurrency models, and event architectures in agent frameworks. Use when (1) understanding async vs sync execution patterns, (2) classifying execution topology (DAG/FSM/Linear), (3) mapping event emission and observability hooks, (4) evaluating scalability characteristics, or (5) comparing execution models across frameworks.
npx skillsauth add aiskillstore/marketplace execution-engine-analysisInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Analyzes the control flow substrate and concurrency model.
# Signature: async/await throughout
async def run(self):
result = await self.llm.agenerate(messages)
return await self.process(result)
# Entry point uses asyncio
asyncio.run(agent.run())
Indicators: async def, await, asyncio.gather, aiohttp
# Signature: sync API wrapping async internals
def run(self):
return asyncio.run(self._async_run())
# Or using thread pools
def run(self):
with ThreadPoolExecutor() as pool:
future = pool.submit(self._blocking_call)
return future.result()
Indicators: asyncio.run() inside sync methods, ThreadPoolExecutor, run_in_executor
# Both sync and async APIs exposed
def invoke(self, input):
return self._sync_invoke(input)
async def ainvoke(self, input):
return await self._async_invoke(input)
Indicators: Paired methods (invoke/ainvoke), sync_to_async decorators
# Signature: Nodes with dependencies
class Node:
def __init__(self, deps: list[Node]): ...
graph.add_edge(node_a, node_b)
result = graph.execute() # Topological order
Indicators: Graph, Node, Edge classes, networkx, topological sort
# Signature: Explicit states and transitions
class State(Enum):
THINKING = "thinking"
ACTING = "acting"
DONE = "done"
def transition(self, current: State, event: str) -> State:
if current == State.THINKING and event == "action_chosen":
return State.ACTING
Indicators: State enums, transition tables, current_state, state machine libraries
# Signature: Sequential step execution
def run(self):
result = self.step1()
result = self.step2(result)
result = self.step3(result)
return result
# Or pipeline pattern
chain = step1 | step2 | step3
result = chain.invoke(input)
Indicators: Sequential calls, pipe operators (|), Chain, Pipeline classes
class Callbacks:
def on_llm_start(self, prompt): ...
def on_llm_end(self, response): ...
def on_tool_start(self, tool, input): ...
def on_tool_end(self, output): ...
def on_error(self, error): ...
Flexibility: Low — fixed hook points Traceability: Medium — easy to follow
emitter = EventEmitter()
emitter.on('llm:start', handler)
emitter.on('tool:*', wildcard_handler)
emitter.emit('llm:start', {'prompt': prompt})
Flexibility: High — dynamic registration Traceability: Low — harder to trace
async def run(self):
async for chunk in self.llm.astream(prompt):
yield {"type": "token", "content": chunk}
yield {"type": "done"}
Flexibility: Medium — streaming-native Traceability: High — follows data flow
| Hook Point | Purpose | Interception Level | |------------|---------|-------------------| | Pre-LLM | Modify prompt | Input | | Post-LLM | Access raw response | Output | | Pre-Tool | Validate tool input | Input | | Post-Tool | Transform tool output | Output | | Pre-Step | Observe state | Read-only | | Post-Step | Modify next step | Control flow | | On-Error | Handle/transform | Error |
## Execution Engine Analysis: [Framework Name]
### Concurrency Model
- **Type**: [Native Async / Sync-with-Wrappers / Hybrid]
- **Entry Point**: `path/to/main.py:run()`
- **Thread Safety**: [Yes/No/Partial]
### Execution Topology
- **Model**: [DAG / FSM / Linear Chain]
- **Implementation**: [Description with code refs]
- **Parallelization**: [Supported/Not Supported]
### Event Architecture
- **Pattern**: [Callbacks / Listeners / Generators]
- **Registration**: [Static / Dynamic]
- **Streaming**: [Supported / Not Supported]
### Observability Inventory
| Hook | Location | Async | Modifiable |
|------|----------|-------|------------|
| on_llm_start | callbacks.py:L23 | Yes | Input only |
| on_tool_end | callbacks.py:L45 | Yes | Output |
| ... | ... | ... | ... |
### Scalability Assessment
- **Blocking Operations**: [List any]
- **Resource Limits**: [Token counters, rate limits]
- **Recommended Concurrency**: [Threads/Processes/AsyncIO]
codebase-mapping to identify execution filescomparative-matrix for async decisionscontrol-loop-extraction for agent-specific flowdevelopment
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.