@sylix/coworker 2.0.10 → 2.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (178) hide show
  1. package/dist/commands/slash/config.d.ts.map +1 -1
  2. package/dist/commands/slash/config.js +23 -5
  3. package/dist/commands/slash/config.js.map +1 -1
  4. package/dist/commands/slash/todo.js +1 -1
  5. package/dist/commands/slash/todo.js.map +1 -1
  6. package/dist/core/CoWorkerAgent.d.ts.map +1 -1
  7. package/dist/core/CoWorkerAgent.js +6 -3
  8. package/dist/core/CoWorkerAgent.js.map +1 -1
  9. package/dist/permissions/PermissionInterceptor.js +1 -1
  10. package/dist/permissions/PermissionInterceptor.js.map +1 -1
  11. package/dist/skills/defaults/accessibility/screen-reader-testing.md +545 -0
  12. package/dist/skills/defaults/accessibility/wcag-audit-patterns.md +555 -0
  13. package/dist/skills/defaults/ai-ml/rag.md +276 -0
  14. package/dist/skills/defaults/backend-development/api-design-principles.md +528 -0
  15. package/dist/skills/defaults/backend-development/api-design.md +285 -0
  16. package/dist/skills/defaults/backend-development/architecture-patterns.md +494 -0
  17. package/dist/skills/defaults/backend-development/async-python.md +237 -0
  18. package/dist/skills/defaults/backend-development/auth-implementation-patterns.md +638 -0
  19. package/dist/skills/defaults/backend-development/bazel-build-optimization.md +387 -0
  20. package/dist/skills/defaults/backend-development/billing-automation/SKILL.md +566 -0
  21. package/dist/skills/defaults/backend-development/code-review-excellence.md +538 -0
  22. package/dist/skills/defaults/backend-development/cqrs-implementation.md +554 -0
  23. package/dist/skills/defaults/backend-development/database-design.md +305 -0
  24. package/dist/skills/defaults/backend-development/debugging-strategies.md +536 -0
  25. package/dist/skills/defaults/backend-development/e2e-testing-patterns.md +544 -0
  26. package/dist/skills/defaults/backend-development/error-handling-patterns.md +641 -0
  27. package/dist/skills/defaults/backend-development/fastapi-templates.md +559 -0
  28. package/dist/skills/defaults/backend-development/fastapi.md +309 -0
  29. package/dist/skills/defaults/backend-development/git-advanced-workflows.md +405 -0
  30. package/dist/skills/defaults/backend-development/microservices-patterns.md +595 -0
  31. package/dist/skills/defaults/backend-development/microservices.md +284 -0
  32. package/dist/skills/defaults/backend-development/monorepo-management.md +623 -0
  33. package/dist/skills/defaults/backend-development/nodejs-backend-patterns.md +1048 -0
  34. package/dist/skills/defaults/backend-development/nx-workspace-patterns.md +457 -0
  35. package/dist/skills/defaults/backend-development/paypal-integration/SKILL.md +478 -0
  36. package/dist/skills/defaults/backend-development/pci-compliance/SKILL.md +480 -0
  37. package/dist/skills/defaults/backend-development/python-anti-patterns.md +349 -0
  38. package/dist/skills/defaults/backend-development/python-background-jobs.md +364 -0
  39. package/dist/skills/defaults/backend-development/python-code-style.md +360 -0
  40. package/dist/skills/defaults/backend-development/python-configuration.md +368 -0
  41. package/dist/skills/defaults/backend-development/python-design-patterns.md +296 -0
  42. package/dist/skills/defaults/backend-development/python-error-handling.md +323 -0
  43. package/dist/skills/defaults/backend-development/python-packaging.md +887 -0
  44. package/dist/skills/defaults/backend-development/python-performance-optimization.md +874 -0
  45. package/dist/skills/defaults/backend-development/python-project-structure.md +252 -0
  46. package/dist/skills/defaults/backend-development/python-resilience.md +376 -0
  47. package/dist/skills/defaults/backend-development/python-resource-management.md +421 -0
  48. package/dist/skills/defaults/backend-development/python-type-safety.md +428 -0
  49. package/dist/skills/defaults/backend-development/sql-optimization-patterns.md +509 -0
  50. package/dist/skills/defaults/backend-development/stripe-integration/SKILL.md +522 -0
  51. package/dist/skills/defaults/backend-development/turborepo-caching.md +376 -0
  52. package/dist/skills/defaults/blockchain/defi-protocol-templates.md +430 -0
  53. package/dist/skills/defaults/blockchain/nft-standards.md +364 -0
  54. package/dist/skills/defaults/blockchain/solidity-security.md +514 -0
  55. package/dist/skills/defaults/blockchain/web3-testing.md +360 -0
  56. package/dist/skills/defaults/business/competitive-landscape/SKILL.md +527 -0
  57. package/dist/skills/defaults/business/market-sizing-analysis/SKILL.md +451 -0
  58. package/dist/skills/defaults/business/startup-financial-modeling/SKILL.md +494 -0
  59. package/dist/skills/defaults/business/startup-metrics-framework/SKILL.md +564 -0
  60. package/dist/skills/defaults/business/team-composition-analysis.md +437 -0
  61. package/dist/skills/defaults/compliance/employment-contract-templates/SKILL.md +527 -0
  62. package/dist/skills/defaults/compliance/gdpr-data-handling/SKILL.md +630 -0
  63. package/dist/skills/defaults/data-engineering/airflow-dag-patterns.md +436 -0
  64. package/dist/skills/defaults/data-engineering/airflow.md +519 -0
  65. package/dist/skills/defaults/data-engineering/data-quality.md +583 -0
  66. package/dist/skills/defaults/data-engineering/dbt-transformation-patterns.md +482 -0
  67. package/dist/skills/defaults/data-engineering/dbt.md +556 -0
  68. package/dist/skills/defaults/data-engineering/ml-pipeline-workflow/SKILL.md +247 -0
  69. package/dist/skills/defaults/data-engineering/spark-optimization.md +348 -0
  70. package/dist/skills/defaults/data-engineering/spark.md +411 -0
  71. package/dist/skills/defaults/database/postgresql.md +202 -0
  72. package/dist/skills/defaults/debugging/systematic-debugging.md +249 -0
  73. package/dist/skills/defaults/devops/architecture-decision-records.md +448 -0
  74. package/dist/skills/defaults/devops/changelog-automation.md +580 -0
  75. package/dist/skills/defaults/devops/cicd.md +314 -0
  76. package/dist/skills/defaults/devops/cloud.md +263 -0
  77. package/dist/skills/defaults/devops/code-review-excellence.md +299 -0
  78. package/dist/skills/defaults/devops/cost-optimization.md +295 -0
  79. package/dist/skills/defaults/devops/deployment-pipeline-design.md +356 -0
  80. package/dist/skills/defaults/devops/docker.md +281 -0
  81. package/dist/skills/defaults/devops/git-workflows.md +205 -0
  82. package/dist/skills/defaults/devops/github-actions.md +311 -0
  83. package/dist/skills/defaults/devops/gitlab-ci-patterns.md +266 -0
  84. package/dist/skills/defaults/devops/hybrid-cloud-networking.md +241 -0
  85. package/dist/skills/defaults/devops/istio-traffic-management.md +327 -0
  86. package/dist/skills/defaults/devops/kubernetes.md +339 -0
  87. package/dist/skills/defaults/devops/linkerd-patterns.md +311 -0
  88. package/dist/skills/defaults/devops/multi-cloud-architecture.md +181 -0
  89. package/dist/skills/defaults/devops/observability.md +243 -0
  90. package/dist/skills/defaults/devops/openapi-spec-generation.md +1024 -0
  91. package/dist/skills/defaults/devops/postmortem-writing.md +396 -0
  92. package/dist/skills/defaults/devops/prometheus-configuration.md +265 -0
  93. package/dist/skills/defaults/devops/secrets-management.md +341 -0
  94. package/dist/skills/defaults/devops/service-mesh-observability.md +385 -0
  95. package/dist/skills/defaults/devops/terraform-module-library.md +244 -0
  96. package/dist/skills/defaults/finance/backtesting-frameworks/SKILL.md +663 -0
  97. package/dist/skills/defaults/finance/risk-metrics-calculation/SKILL.md +557 -0
  98. package/dist/skills/defaults/frontend/accessibility-compliance.md +420 -0
  99. package/dist/skills/defaults/frontend/design-system-patterns.md +337 -0
  100. package/dist/skills/defaults/frontend/interaction-design.md +327 -0
  101. package/dist/skills/defaults/frontend/javascript.md +311 -0
  102. package/dist/skills/defaults/frontend/modern-javascript-patterns.md +927 -0
  103. package/dist/skills/defaults/frontend/react-native-design.md +440 -0
  104. package/dist/skills/defaults/frontend/react.md +345 -0
  105. package/dist/skills/defaults/frontend/responsive-design.md +472 -0
  106. package/dist/skills/defaults/frontend/tailwind-design-system.md +337 -0
  107. package/dist/skills/defaults/frontend/typescript-advanced-types.md +724 -0
  108. package/dist/skills/defaults/frontend/typescript.md +334 -0
  109. package/dist/skills/defaults/frontend/visual-design-foundations.md +326 -0
  110. package/dist/skills/defaults/frontend/web-component-design.md +279 -0
  111. package/dist/skills/defaults/game-development/godot-gdscript-patterns.md +188 -0
  112. package/dist/skills/defaults/game-development/unity-ecs-patterns.md +594 -0
  113. package/dist/skills/defaults/kubernetes/gitops-workflow.md +285 -0
  114. package/dist/skills/defaults/kubernetes/gitops.md +280 -0
  115. package/dist/skills/defaults/kubernetes/helm-chart-scaffolding.md +553 -0
  116. package/dist/skills/defaults/kubernetes/helm.md +343 -0
  117. package/dist/skills/defaults/kubernetes/k8s-manifest-generator.md +501 -0
  118. package/dist/skills/defaults/kubernetes/k8s-security-policies.md +342 -0
  119. package/dist/skills/defaults/kubernetes/manifests.md +330 -0
  120. package/dist/skills/defaults/kubernetes/security.md +337 -0
  121. package/dist/skills/defaults/llm-application/embedding-strategies.md +608 -0
  122. package/dist/skills/defaults/llm-application/hybrid-search-implementation.md +570 -0
  123. package/dist/skills/defaults/llm-application/hybrid-search.md +570 -0
  124. package/dist/skills/defaults/llm-application/langchain-architecture.md +666 -0
  125. package/dist/skills/defaults/llm-application/langchain.md +259 -0
  126. package/dist/skills/defaults/llm-application/llm-evaluation.md +695 -0
  127. package/dist/skills/defaults/llm-application/prompt-engineering-patterns.md +449 -0
  128. package/dist/skills/defaults/llm-application/prompt-engineering.md +219 -0
  129. package/dist/skills/defaults/llm-application/rag-implementation.md +434 -0
  130. package/dist/skills/defaults/llm-application/similarity-search-patterns.md +560 -0
  131. package/dist/skills/defaults/llm-application/similarity-search.md +560 -0
  132. package/dist/skills/defaults/llm-application/vector-index-tuning.md +523 -0
  133. package/dist/skills/defaults/mobile/mobile-android-design.md +440 -0
  134. package/dist/skills/defaults/mobile/mobile-ios-design.md +266 -0
  135. package/dist/skills/defaults/monitoring/distributed-tracing.md +436 -0
  136. package/dist/skills/defaults/monitoring/grafana-dashboards.md +370 -0
  137. package/dist/skills/defaults/monitoring/prometheus-configuration.md +379 -0
  138. package/dist/skills/defaults/monitoring/slo-implementation.md +323 -0
  139. package/dist/skills/defaults/refactoring/code-refactoring.md +349 -0
  140. package/dist/skills/defaults/security/anti-reversing-techniques/SKILL.md +559 -0
  141. package/dist/skills/defaults/security/auditor.md +168 -0
  142. package/dist/skills/defaults/security/binary-analysis-patterns/SKILL.md +438 -0
  143. package/dist/skills/defaults/security/memory-forensics/SKILL.md +483 -0
  144. package/dist/skills/defaults/security/mtls-configuration.md +349 -0
  145. package/dist/skills/defaults/security/protocol-reverse-engineering/SKILL.md +520 -0
  146. package/dist/skills/defaults/security/sast-configuration.md +182 -0
  147. package/dist/skills/defaults/security/security.md +313 -0
  148. package/dist/skills/defaults/security/stride-analysis.md +273 -0
  149. package/dist/skills/defaults/security/threat-mitigation-mapping.md +290 -0
  150. package/dist/skills/defaults/systems/bash-defensive-patterns/SKILL.md +539 -0
  151. package/dist/skills/defaults/systems/bats-testing-patterns/SKILL.md +631 -0
  152. package/dist/skills/defaults/systems/go-concurrency-patterns.md +657 -0
  153. package/dist/skills/defaults/systems/memory-safety-patterns.md +605 -0
  154. package/dist/skills/defaults/systems/rust-async-patterns.md +519 -0
  155. package/dist/skills/defaults/systems/shellcheck-configuration/SKILL.md +456 -0
  156. package/dist/skills/defaults/team-collaboration/multi-reviewer-patterns.md +126 -0
  157. package/dist/skills/defaults/team-collaboration/parallel-feature-development.md +151 -0
  158. package/dist/skills/defaults/testing/javascript-testing-patterns.md +1021 -0
  159. package/dist/skills/defaults/testing/python-testing-patterns.md +351 -0
  160. package/dist/skills/defaults/testing/testing.md +332 -0
  161. package/dist/skills/defaults/workflows/context-driven-development.md +384 -0
  162. package/dist/skills/defaults/workflows/track-management.md +592 -0
  163. package/dist/skills/defaults/workflows/workflow-patterns.md +622 -0
  164. package/dist/skills/index.d.ts +11 -0
  165. package/dist/skills/index.d.ts.map +1 -0
  166. package/dist/skills/index.js +129 -0
  167. package/dist/skills/index.js.map +1 -0
  168. package/dist/utils/character.js +6 -9
  169. package/dist/utils/character.js.map +1 -1
  170. package/dist/utils/contextManager.js +3 -7
  171. package/dist/utils/contextManager.js.map +1 -1
  172. package/dist/utils/inputbar.d.ts.map +1 -1
  173. package/dist/utils/inputbar.js +8 -1
  174. package/dist/utils/inputbar.js.map +1 -1
  175. package/dist/utils/output.d.ts.map +1 -1
  176. package/dist/utils/output.js +3 -35
  177. package/dist/utils/output.js.map +1 -1
  178. package/package.json +1 -1
@@ -0,0 +1,259 @@
1
+ ---
2
+ name: langchain-architecture
3
+ description: Design LLM applications using LangChain 1.x and LangGraph for agents, memory, and tool integration. Use when building LangChain applications, implementing AI agents, or creating complex LLM workflows.
4
+ ---
5
+
6
+ # LangChain & LangGraph Architecture
7
+
8
+ Master modern LangChain 1.x and LangGraph for building sophisticated LLM applications with agents, state management, memory, and tool integration.
9
+
10
+ ## When to Use This Skill
11
+
12
+ - Building autonomous AI agents with tool access
13
+ - Implementing complex multi-step LLM workflows
14
+ - Managing conversation memory and state
15
+ - Integrating LLMs with external data sources and APIs
16
+ - Creating modular, reusable LLM application components
17
+ - Implementing document processing pipelines
18
+ - Building production-grade LLM applications
19
+
20
+ ## Package Structure (LangChain 1.x)
21
+
22
+ ```
23
+ langchain (1.2.x) # High-level orchestration
24
+ langchain-core (1.2.x) # Core abstractions
25
+ langchain-community # Third-party integrations
26
+ langgraph # Agent orchestration
27
+ langchain-openai # OpenAI integrations
28
+ langchain-anthropic # Anthropic/Claude integrations
29
+ ```
30
+
31
+ ## Core Concepts
32
+
33
+ ### 1. LangGraph Agents
34
+
35
+ LangGraph is the standard for building agents:
36
+
37
+ **Key Features:**
38
+ - **StateGraph**: Explicit state management with typed state
39
+ - **Durable Execution**: Agents persist through failures
40
+ - **Human-in-the-Loop**: Inspect and modify state at any point
41
+ - **Memory**: Short-term and long-term memory across sessions
42
+ - **Checkpointing**: Save and resume agent state
43
+
44
+ **Agent Patterns:**
45
+ - **ReAct**: Reasoning + Acting with `create_react_agent`
46
+ - **Plan-and-Execute**: Separate planning and execution nodes
47
+ - **Multi-Agent**: Supervisor routing between specialized agents
48
+ - **Tool-Calling**: Structured tool invocation with Pydantic schemas
49
+
50
+ ### 2. State Management
51
+
52
+ ```python
53
+ from typing import Annotated, TypedDict
54
+ from langgraph.graph import MessagesState
55
+
56
+ class AgentState(MessagesState):
57
+ """Extends MessagesState with custom fields."""
58
+ context: Annotated[list, "retrieved documents"]
59
+
60
+ class CustomState(TypedDict):
61
+ messages: Annotated[list, "conversation history"]
62
+ context: Annotated[dict, "retrieved context"]
63
+ current_step: str
64
+ results: list
65
+ ```
66
+
67
+ ### 3. Memory Systems
68
+
69
+ - **ConversationBufferMemory**: Stores all messages
70
+ - **ConversationSummaryMemory**: Summarizes older messages
71
+ - **ConversationTokenBufferMemory**: Token-based windowing
72
+ - **VectorStoreRetrieverMemory**: Semantic similarity retrieval
73
+ - **LangGraph Checkpointers**: Persistent state across sessions
74
+
75
+ ## Quick Start
76
+
77
+ ### Modern ReAct Agent with LangGraph
78
+
79
+ ```python
80
+ from langgraph.prebuilt import create_react_agent
81
+ from langgraph.checkpoint.memory import MemorySaver
82
+ from langchain_anthropic import ChatAnthropic
83
+ from langchain_core.tools import tool
84
+
85
+ llm = ChatAnthropic(model="claude-sonnet-4-6", temperature=0)
86
+
87
+ @tool
88
+ def search_database(query: str) -> str:
89
+ """Search internal database for information."""
90
+ return f"Results for: {query}"
91
+
92
+ @tool
93
+ def calculate(expression: str) -> str:
94
+ """Safely evaluate a mathematical expression."""
95
+ import ast, operator
96
+ allowed = {ast.Add: operator.add, ast.Sub: operator.sub, ast.Mult: operator.mul}
97
+ try:
98
+ tree = ast.parse(expression, mode='eval')
99
+ return str(allowed[type(tree.body.op)](eval(str(tree.body.left)), eval(str(tree.body.right))))
100
+ except:
101
+ return "Error"
102
+
103
+ tools = [search_database, calculate]
104
+ checkpointer = MemorySaver()
105
+
106
+ agent = create_react_agent(llm, tools, checkpointer=checkpointer)
107
+
108
+ config = {"configurable": {"thread_id": "user-123"}}
109
+ result = await agent.ainvoke(
110
+ {"messages": [("user", "Search for tutorials and calculate 25 * 4")]},
111
+ config=config
112
+ )
113
+ ```
114
+
115
+ ## Architecture Patterns
116
+
117
+ ### Pattern 1: RAG with LangGraph
118
+
119
+ ```python
120
+ from langgraph.graph import StateGraph, START, END
121
+ from langchain_anthropic import ChatAnthropic
122
+ from langchain_voyageai import VoyageAIEmbeddings
123
+ from langchain_pinecone import PineconeVectorStore
124
+ from typing import TypedDict, Annotated
125
+
126
+ class RAGState(TypedDict):
127
+ question: str
128
+ context: list
129
+ answer: str
130
+
131
+ def retrieve(state: RAGState) -> RAGState:
132
+ retriever = PineconeVectorStore.from_existing_index(
133
+ index_name="docs",
134
+ embedding=VoyageAIEmbeddings(model="voyage-3-large")
135
+ ).as_retriever()
136
+ docs = retriever.invoke(state["question"])
137
+ return {"context": docs}
138
+
139
+ def generate(state: RAGState) -> RAGState:
140
+ llm = ChatAnthropic(model="claude-sonnet-4-6")
141
+ prompt = f"Context: {state['context']}\nQuestion: {state['question']}"
142
+ response = llm.invoke(prompt)
143
+ return {"answer": response.content}
144
+
145
+ graph = StateGraph(RAGState)
146
+ graph.add_node("retrieve", retrieve)
147
+ graph.add_node("generate", generate)
148
+ graph.add_edge(START, "retrieve")
149
+ graph.add_edge("retrieve", "generate")
150
+ graph.add_edge("generate", END)
151
+
152
+ app = graph.compile()
153
+ ```
154
+
155
+ ### Pattern 2: Plan-and-Execute Agent
156
+
157
+ ```python
158
+ from langgraph.graph import StateGraph, START
159
+ from typing import TypedDict
160
+
161
+ class PlanExecuteState(TypedDict):
162
+ input: str
163
+ plan: list
164
+ past_steps: list
165
+ response: str
166
+
167
+ planner_prompt = """Create a step-by-step plan for: {input}"""
168
+ executor_prompt = """Execute step: {step}\nPrevious: {past_steps}"""
169
+
170
+ def plan(state: PlanExecuteState) -> PlanExecuteState:
171
+ llm = ChatAnthropic(model="claude-sonnet-4-6")
172
+ response = llm.invoke(planner_prompt.format(input=state["input"]))
173
+ return {"plan": response.content.split("\n")}
174
+
175
+ def execute(state: PlanExecuteState) -> PlanExecuteState:
176
+ # Execute current step
177
+ pass
178
+
179
+ graph = StateGraph(PlanExecuteState)
180
+ graph.add_node("plan", plan)
181
+ graph.add_node("execute", execute)
182
+ graph.add_edge(START, "plan")
183
+ graph.add_edge("plan", "execute")
184
+ ```
185
+
186
+ ### Pattern 3: Multi-Agent Supervisor
187
+
188
+ ```python
189
+ from langgraph.prebuilt import create_react_agent
190
+
191
+ research_agent = create_react_agent(llm, [search_tool], state_schema=ResearchState)
192
+ write_agent = create_react_agent(llm, [write_tool], state_schema=WriteState)
193
+
194
+ def supervisor(state: AgentState) -> str:
195
+ """Route to appropriate agent."""
196
+ return "research" if "research" in state["messages"][-1].content else "write"
197
+
198
+ graph = StateGraph(AgentState)
199
+ graph.add_node("supervisor", supervisor)
200
+ graph.add_node("research", research_agent)
201
+ graph.add_node("write", write_agent)
202
+
203
+ graph.add_edge(START, "supervisor")
204
+ graph.add_conditional_edges("supervisor",
205
+ lambda x: x["next"],
206
+ {"research": "research", "write": "write"})
207
+ ```
208
+
209
+ ### Pattern 4: Tool Calling Agent
210
+
211
+ ```python
212
+ from langchain_anthropic import ChatAnthropic
213
+ from langchain_core.utils.function_calling import convert_to_openai_function
214
+
215
+ llm = ChatAnthropic(model="claude-sonnet-4-6")
216
+ functions = [convert_to_openai_function(my_pydantic_model)]
217
+ structured_llm = llm.bind_functions(functions)
218
+
219
+ # Auto-invokes correct tool based on schema
220
+ response = structured_llm.invoke("Extract info from: ...")
221
+ ```
222
+
223
+ ## Memory Patterns
224
+
225
+ ### Conversation Memory
226
+
227
+ ```python
228
+ from langchain.memory import ConversationBufferMemory
229
+ from langgraph.checkpoint.postgres import PostgresSaver
230
+
231
+ # Short-term memory
232
+ memory = ConversationBufferMemory(return_messages=True)
233
+
234
+ # Long-term with PostgreSQL
235
+ checkpointer = PostgresSaver.from_conn_string("postgresql://...")
236
+ agent = create_react_agent(llm, tools, checkpointer=checkpointer)
237
+ ```
238
+
239
+ ### Summary Memory
240
+
241
+ ```python
242
+ from langchain.memory import ConversationSummaryMemory
243
+
244
+ memory = ConversationSummaryMemory(
245
+ llm=ChatAnthropic(model="claude-sonnet-4-6"),
246
+ return_messages=True
247
+ )
248
+ ```
249
+
250
+ ## Best Practices
251
+
252
+ 1. **Use LangGraph** - Standard for production agents in 2026
253
+ 2. **Define typed state** - Use TypedDict for explicit state management
254
+ 3. **Checkpoint critical flows** - PostgresSaver for durability
255
+ 4. **Implement error handling** - Graph can handle failures gracefully
256
+ 5. **Use structured outputs** - Pydantic schemas for tools
257
+ 6. **Monitor with LangSmith** - Essential for production debugging
258
+ 7. **Modularize nodes** - Reusable components
259
+ 8. **Human-in-the-loop** - Allow inspection/modification