robot_lab 0.2.8 → 0.3.1

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 (262) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +65 -0
  3. data/README.md +16 -18
  4. data/lib/robot_lab/ask_user.rb +3 -3
  5. data/lib/robot_lab/config/defaults.yml +5 -5
  6. data/lib/robot_lab/config.rb +2 -2
  7. data/lib/robot_lab/mcp/transports/streamable_http.rb +2 -4
  8. data/lib/robot_lab/memory.rb +16 -7
  9. data/lib/robot_lab/robot/hooking.rb +26 -0
  10. data/lib/robot_lab/robot/result_building.rb +119 -0
  11. data/lib/robot_lab/robot.rb +37 -120
  12. data/lib/robot_lab/run_config.rb +52 -20
  13. data/lib/robot_lab/tool.rb +7 -12
  14. data/lib/robot_lab/version.rb +1 -1
  15. data/lib/robot_lab.rb +3 -3
  16. metadata +15 -274
  17. data/.architecture/AGENTS.md +0 -32
  18. data/.architecture/config.yml +0 -8
  19. data/.architecture/members.yml +0 -60
  20. data/.architecture/reviews/feature-free-will.md +0 -490
  21. data/.architecture/reviews/overall-codebase.md +0 -427
  22. data/.claude/settings.local.json +0 -57
  23. data/.codex/config.toml +0 -2
  24. data/.envrc +0 -6
  25. data/.github/workflows/deploy-github-pages.yml +0 -52
  26. data/.irbrc +0 -6
  27. data/.loki +0 -65
  28. data/.quality/reek_baseline.txt +0 -43
  29. data/.rubocop.yml +0 -10
  30. data/Archspec.rb +0 -44
  31. data/CLAUDE.md +0 -139
  32. data/COMMITS.md +0 -196
  33. data/Rakefile +0 -193
  34. data/_typos.toml +0 -21
  35. data/agent2agent_review.md +0 -192
  36. data/agentf_improvements.md +0 -253
  37. data/agents.md +0 -14
  38. data/docs/api/core/index.md +0 -147
  39. data/docs/api/core/memory.md +0 -578
  40. data/docs/api/core/network.md +0 -553
  41. data/docs/api/core/result.md +0 -211
  42. data/docs/api/core/robot.md +0 -1667
  43. data/docs/api/core/state.md +0 -145
  44. data/docs/api/core/tool.md +0 -520
  45. data/docs/api/errors.md +0 -323
  46. data/docs/api/hooks.md +0 -469
  47. data/docs/api/index.md +0 -137
  48. data/docs/api/mcp/client.md +0 -387
  49. data/docs/api/mcp/index.md +0 -267
  50. data/docs/api/mcp/server.md +0 -252
  51. data/docs/api/mcp/transports.md +0 -339
  52. data/docs/api/messages/index.md +0 -126
  53. data/docs/api/messages/text-message.md +0 -170
  54. data/docs/api/messages/tool-call-message.md +0 -206
  55. data/docs/api/messages/tool-result-message.md +0 -242
  56. data/docs/api/messages/user-message.md +0 -232
  57. data/docs/api/skills.md +0 -423
  58. data/docs/api/streaming/context.md +0 -280
  59. data/docs/api/streaming/events.md +0 -185
  60. data/docs/api/streaming/index.md +0 -156
  61. data/docs/api/support.md +0 -846
  62. data/docs/architecture/core-concepts.md +0 -575
  63. data/docs/architecture/index.md +0 -252
  64. data/docs/architecture/message-flow.md +0 -366
  65. data/docs/architecture/network-orchestration.md +0 -478
  66. data/docs/architecture/robot-execution.md +0 -396
  67. data/docs/architecture/state-management.md +0 -410
  68. data/docs/assets/css/custom.css +0 -56
  69. data/docs/assets/images/robot_lab.jpg +0 -0
  70. data/docs/concepts.md +0 -641
  71. data/docs/examples/basic-chat.md +0 -258
  72. data/docs/examples/index.md +0 -425
  73. data/docs/examples/mcp-server.md +0 -403
  74. data/docs/examples/multi-robot-network.md +0 -476
  75. data/docs/examples/tool-usage.md +0 -468
  76. data/docs/getting-started/configuration.md +0 -645
  77. data/docs/getting-started/index.md +0 -56
  78. data/docs/getting-started/installation.md +0 -200
  79. data/docs/getting-started/quick-start.md +0 -293
  80. data/docs/guides/building-robots.md +0 -1187
  81. data/docs/guides/creating-networks.md +0 -736
  82. data/docs/guides/hooks.md +0 -1206
  83. data/docs/guides/index.md +0 -78
  84. data/docs/guides/knowledge.md +0 -219
  85. data/docs/guides/mcp-integration.md +0 -740
  86. data/docs/guides/memory.md +0 -458
  87. data/docs/guides/observability.md +0 -733
  88. data/docs/guides/streaming.md +0 -323
  89. data/docs/guides/using-tools.md +0 -780
  90. data/docs/index.md +0 -280
  91. data/docs/superpowers/plans/2026-05-06-agentskills.md +0 -1303
  92. data/docs/superpowers/specs/2026-05-06-agentskills-design.md +0 -247
  93. data/examples/.envrc +0 -1
  94. data/examples/01_simple_robot.rb +0 -31
  95. data/examples/02_tools.rb +0 -109
  96. data/examples/03_network.rb +0 -118
  97. data/examples/04_mcp.rb +0 -215
  98. data/examples/05_streaming.rb +0 -137
  99. data/examples/06_prompt_templates.rb +0 -325
  100. data/examples/07_network_memory.rb +0 -313
  101. data/examples/08_llm_config.rb +0 -162
  102. data/examples/09_chaining.rb +0 -251
  103. data/examples/10_memory.rb +0 -315
  104. data/examples/11_network_introspection.rb +0 -239
  105. data/examples/12_message_bus.rb +0 -67
  106. data/examples/13_spawn.rb +0 -85
  107. data/examples/14_rusty_circuit/.envrc +0 -1
  108. data/examples/14_rusty_circuit/.gitignore +0 -1
  109. data/examples/14_rusty_circuit/README.md +0 -1
  110. data/examples/14_rusty_circuit/comic.rb +0 -149
  111. data/examples/14_rusty_circuit/display.rb +0 -217
  112. data/examples/14_rusty_circuit/heckler.rb +0 -65
  113. data/examples/14_rusty_circuit/open_mic.rb +0 -132
  114. data/examples/14_rusty_circuit/prompts/open_mic_comic.md +0 -20
  115. data/examples/14_rusty_circuit/prompts/open_mic_heckler.md +0 -23
  116. data/examples/14_rusty_circuit/prompts/open_mic_scout.md +0 -20
  117. data/examples/14_rusty_circuit/scout.rb +0 -165
  118. data/examples/14_rusty_circuit/show.log +0 -234
  119. data/examples/15_memory_network_and_bus/.envrc +0 -1
  120. data/examples/15_memory_network_and_bus/editor_in_chief.rb +0 -24
  121. data/examples/15_memory_network_and_bus/editorial_pipeline.rb +0 -213
  122. data/examples/15_memory_network_and_bus/linux_writer.rb +0 -80
  123. data/examples/15_memory_network_and_bus/os_editor.rb +0 -48
  124. data/examples/15_memory_network_and_bus/os_writer.rb +0 -49
  125. data/examples/15_memory_network_and_bus/output/combined_article.md +0 -13
  126. data/examples/15_memory_network_and_bus/output/final_article.md +0 -13
  127. data/examples/15_memory_network_and_bus/output/linux_draft.md +0 -7
  128. data/examples/15_memory_network_and_bus/output/mac_draft.md +0 -7
  129. data/examples/15_memory_network_and_bus/output/memory.json +0 -13
  130. data/examples/15_memory_network_and_bus/output/revision_1.md +0 -18
  131. data/examples/15_memory_network_and_bus/output/revision_2.md +0 -13
  132. data/examples/15_memory_network_and_bus/output/windows_draft.md +0 -7
  133. data/examples/15_memory_network_and_bus/prompts/os_advocate.md +0 -13
  134. data/examples/15_memory_network_and_bus/prompts/os_chief.md +0 -13
  135. data/examples/15_memory_network_and_bus/prompts/os_editor.md +0 -13
  136. data/examples/16_writers_room/.envrc +0 -1
  137. data/examples/16_writers_room/display.rb +0 -158
  138. data/examples/16_writers_room/output/.gitignore +0 -4
  139. data/examples/16_writers_room/output/README.md +0 -69
  140. data/examples/16_writers_room/output/opus_001.md +0 -263
  141. data/examples/16_writers_room/output/opus_001_notes.log +0 -470
  142. data/examples/16_writers_room/output/opus_002.md +0 -245
  143. data/examples/16_writers_room/output/opus_002_notes.log +0 -546
  144. data/examples/16_writers_room/output/opus_002_screenplay.md +0 -7989
  145. data/examples/16_writers_room/output/opus_002_screenplay_notes.md +0 -993
  146. data/examples/16_writers_room/prompts/screenplay_writer.md +0 -66
  147. data/examples/16_writers_room/prompts/writer.md +0 -37
  148. data/examples/16_writers_room/room.rb +0 -186
  149. data/examples/16_writers_room/tools.rb +0 -173
  150. data/examples/16_writers_room/writer.rb +0 -121
  151. data/examples/16_writers_room/writers_room.rb +0 -256
  152. data/examples/17_skills.rb +0 -234
  153. data/examples/18_rails/.envrc +0 -3
  154. data/examples/18_rails/.gitignore +0 -5
  155. data/examples/18_rails/Gemfile +0 -11
  156. data/examples/18_rails/README.md +0 -67
  157. data/examples/18_rails/Rakefile +0 -4
  158. data/examples/18_rails/app/controllers/application_controller.rb +0 -4
  159. data/examples/18_rails/app/controllers/chat_controller.rb +0 -50
  160. data/examples/18_rails/app/jobs/application_job.rb +0 -4
  161. data/examples/18_rails/app/jobs/robot_run_job.rb +0 -25
  162. data/examples/18_rails/app/models/application_record.rb +0 -5
  163. data/examples/18_rails/app/models/robot_lab_result.rb +0 -36
  164. data/examples/18_rails/app/models/robot_lab_thread.rb +0 -23
  165. data/examples/18_rails/app/robots/chat_robot.rb +0 -25
  166. data/examples/18_rails/app/tools/time_tool.rb +0 -9
  167. data/examples/18_rails/app/views/chat/_user_message.html.erb +0 -1
  168. data/examples/18_rails/app/views/chat/index.html.erb +0 -67
  169. data/examples/18_rails/app/views/layouts/application.html.erb +0 -49
  170. data/examples/18_rails/bin/dev +0 -7
  171. data/examples/18_rails/bin/rails +0 -6
  172. data/examples/18_rails/bin/setup +0 -15
  173. data/examples/18_rails/config/application.rb +0 -33
  174. data/examples/18_rails/config/cable.yml +0 -2
  175. data/examples/18_rails/config/database.yml +0 -5
  176. data/examples/18_rails/config/environment.rb +0 -4
  177. data/examples/18_rails/config/initializers/robot_lab.rb +0 -11
  178. data/examples/18_rails/config/routes.rb +0 -6
  179. data/examples/18_rails/config.ru +0 -4
  180. data/examples/18_rails/db/migrate/001_create_robot_lab_tables.rb +0 -32
  181. data/examples/19_token_tracking.rb +0 -138
  182. data/examples/20_circuit_breaker.rb +0 -147
  183. data/examples/21_learning_loop.rb +0 -181
  184. data/examples/22_context_compression.rb +0 -172
  185. data/examples/23_convergence.rb +0 -133
  186. data/examples/24_structured_delegation.rb +0 -151
  187. data/examples/25_history_search/conversation.jsonl +0 -30
  188. data/examples/25_history_search.rb +0 -133
  189. data/examples/26_document_store/api_versioning_adr.md +0 -52
  190. data/examples/26_document_store/incident_postmortem.md +0 -46
  191. data/examples/26_document_store/postgres_runbook.md +0 -49
  192. data/examples/26_document_store/redis_caching_guide.md +0 -48
  193. data/examples/26_document_store/sidekiq_guide.md +0 -51
  194. data/examples/26_document_store.rb +0 -140
  195. data/examples/27_incident_response/incident_response.rb +0 -261
  196. data/examples/28_mcp_discovery.rb +0 -113
  197. data/examples/29_ractor_tools.rb +0 -240
  198. data/examples/30_ractor_network.rb +0 -252
  199. data/examples/31_launch_assessment.rb +0 -246
  200. data/examples/32_newsletter_reader.rb +0 -193
  201. data/examples/33_stock_generator.rb +0 -80
  202. data/examples/33_stock_predictor.rb +0 -327
  203. data/examples/34_agentskills.rb +0 -76
  204. data/examples/35_hooks.rb +0 -266
  205. data/examples/README.md +0 -533
  206. data/examples/common.rb +0 -148
  207. data/examples/prompts/assistant.md +0 -5
  208. data/examples/prompts/audit_trail.md +0 -8
  209. data/examples/prompts/billing.md +0 -10
  210. data/examples/prompts/classifier.md +0 -7
  211. data/examples/prompts/comedian.md +0 -6
  212. data/examples/prompts/comedy_critic.md +0 -10
  213. data/examples/prompts/configurable.md +0 -9
  214. data/examples/prompts/dispatcher.md +0 -12
  215. data/examples/prompts/entity_extractor.md +0 -14
  216. data/examples/prompts/escalation.md +0 -42
  217. data/examples/prompts/frontmatter_mcp_test.md +0 -9
  218. data/examples/prompts/frontmatter_named_test.md +0 -5
  219. data/examples/prompts/frontmatter_tools_test.md +0 -6
  220. data/examples/prompts/general.md +0 -7
  221. data/examples/prompts/github_assistant.md +0 -14
  222. data/examples/prompts/helper.md +0 -4
  223. data/examples/prompts/incident_responder.md +0 -18
  224. data/examples/prompts/keyword_extractor.md +0 -11
  225. data/examples/prompts/llm_config_demo.md +0 -20
  226. data/examples/prompts/order_support.md +0 -35
  227. data/examples/prompts/os_advocate.md +0 -13
  228. data/examples/prompts/os_chief.md +0 -13
  229. data/examples/prompts/os_editor.md +0 -13
  230. data/examples/prompts/parameterized_main_test.md +0 -6
  231. data/examples/prompts/pii_redactor.md +0 -7
  232. data/examples/prompts/product_support.md +0 -37
  233. data/examples/prompts/runbook_protocol.md +0 -12
  234. data/examples/prompts/sentiment_analyzer.md +0 -12
  235. data/examples/prompts/skill_a_test.md +0 -4
  236. data/examples/prompts/skill_b_test.md +0 -4
  237. data/examples/prompts/skill_config_test.md +0 -5
  238. data/examples/prompts/skill_cycle_a_test.md +0 -6
  239. data/examples/prompts/skill_cycle_b_test.md +0 -6
  240. data/examples/prompts/skill_description_test.md +0 -4
  241. data/examples/prompts/skill_leaf_test.md +0 -4
  242. data/examples/prompts/skill_nested_test.md +0 -6
  243. data/examples/prompts/skill_refs_main_test.md +0 -6
  244. data/examples/prompts/skill_self_ref_test.md +0 -6
  245. data/examples/prompts/skill_with_mcp_test.md +0 -9
  246. data/examples/prompts/skill_with_params_test.md +0 -6
  247. data/examples/prompts/skill_with_robot_name_test.md +0 -5
  248. data/examples/prompts/skill_with_tools_test.md +0 -6
  249. data/examples/prompts/sre_compliance.md +0 -10
  250. data/examples/prompts/structured_output.md +0 -7
  251. data/examples/prompts/synthesizer.md +0 -17
  252. data/examples/prompts/technical.md +0 -10
  253. data/examples/prompts/template_with_skills_test.md +0 -6
  254. data/examples/prompts/triage.md +0 -22
  255. data/examples/ruboruby.md +0 -423
  256. data/examples/xyzzy.rb +0 -97
  257. data/logfile +0 -8
  258. data/mkdocs.yml +0 -209
  259. data/robot_concurrency.md +0 -38
  260. data/simple_acp_review.md +0 -298
  261. data/temp.md +0 -6
  262. data/tool_manifest_plan.md +0 -155
data/examples/common.rb DELETED
@@ -1,148 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "logger"
4
-
5
- # Fallback for when direnv has not activated examples/.envrc
6
- ENV["ROBOT_LAB_TEMPLATE_PATH"] ||= File.join(__dir__, "prompts")
7
-
8
- require_relative "../lib/robot_lab"
9
-
10
- # ── Local LLM Configuration ───────────────────────────────────────────────────
11
- #
12
- # Every example runs against a LOCAL model served by Ollama. No API keys, no
13
- # network egress, no per-token cost. Pull the model once before running:
14
- #
15
- # ollama pull qwen3.6
16
- #
17
- # Ollama models are not in RubyLLM's model registry, so a `provider:` must be
18
- # supplied alongside `model:` — that is what makes RubyLLM skip the registry
19
- # lookup (see Robot#initialize, which sets assume_model_exists when provider is
20
- # given). Use the `llm_opts` helper below so every robot gets both.
21
-
22
- LlmConfig = Data.define(:provider, :model)
23
-
24
- LLM = {
25
- default: LlmConfig.new(provider: "ollama", model: "qwen3.6:latest"),
26
- small: LlmConfig.new(provider: "ollama", model: "qwen2.5:7b"),
27
- large: LlmConfig.new(provider: "ollama", model: "llama3.3:latest")
28
- }.freeze
29
-
30
- OLLAMA_API_BASE = ENV.fetch("OLLAMA_API_BASE", "http://localhost:11434/v1")
31
-
32
- # ORDER MATTERS. The first touch of RobotLab.config runs Config#after_load,
33
- # which calls RubyLLM.configure itself and would clobber anything set before
34
- # it. So configure RobotLab first, then RubyLLM — the later block wins.
35
- RobotLab.configure do |c|
36
- c.logger = Logger.new(File::NULL)
37
- end
38
-
39
- RubyLLM.configure do |c|
40
- c.logger = Logger.new(File::NULL)
41
- c.default_model = LLM[:default].model
42
- c.ollama_api_base = OLLAMA_API_BASE
43
-
44
- # A large local model on consumer hardware is far slower than a hosted API,
45
- # and robot_lab's bundled 120s default is comfortably exceeded by a long
46
- # answer from a 20B+ model — which surfaces mid-run as Net::ReadTimeout.
47
- #
48
- # Integer(), not the raw env string: this value reaches Net::HTTP directly,
49
- # and a String raises "can't convert String into time interval". That is
50
- # also why the ROBOT_LAB_RUBY_LLM__REQUEST_TIMEOUT env var is the wrong
51
- # lever here — env values arrive as strings.
52
- c.request_timeout = Integer(ENV.fetch("LLM_REQUEST_TIMEOUT", "900"))
53
- c.max_retries = 1
54
- end
55
-
56
- # Which LLM entry an unqualified llm_opts resolves to. Lets you run any
57
- # example against a faster model without editing it — worth knowing for the
58
- # multi-robot demos (14, 15, 16), which are 30+ sequential LLM calls and take
59
- # over half an hour on a 20B+ model:
60
- #
61
- # LLM_PROFILE=small bundle exec ruby examples/14_rusty_circuit/open_mic.rb
62
- LLM_PROFILE = ENV.fetch("LLM_PROFILE", "default").to_sym
63
-
64
- unless LLM.key?(LLM_PROFILE)
65
- abort "Unknown LLM_PROFILE #{LLM_PROFILE.inspect}. Choose one of: #{LLM.keys.join(', ')}"
66
- end
67
-
68
- # Provider + model keyword pair for RobotLab.build / Robot.new.
69
- #
70
- # Both are required for a local Ollama model. Splat it into any robot
71
- # constructor:
72
- #
73
- # RobotLab.build(name: "helper", **llm_opts) # honors LLM_PROFILE
74
- # RobotLab.build(name: "cheap", **llm_opts(:small)) # pinned regardless
75
- #
76
- # @param key [Symbol, nil] which entry of LLM to use; defaults to LLM_PROFILE
77
- # @return [Hash] { provider:, model: }
78
- def llm_opts(key = nil)
79
- cfg = LLM.fetch(key || LLM_PROFILE)
80
- { provider: cfg.provider, model: cfg.model }
81
- end
82
-
83
- # Fail fast with an actionable message when Ollama isn't reachable, instead of
84
- # letting every example die inside an HTTP adapter.
85
- def require_ollama!
86
- require "net/http"
87
- uri = URI(OLLAMA_API_BASE.sub(%r{/v1/?$}, "") + "/api/tags")
88
- Net::HTTP.start(uri.host, uri.port, open_timeout: 2, read_timeout: 2) { |h| h.get(uri.request_uri) }
89
- rescue StandardError => e
90
- abort <<~ERROR
91
- Cannot reach Ollama at #{OLLAMA_API_BASE} (#{e.class}).
92
-
93
- Start it and pull the model used by the examples:
94
- ollama serve
95
- ollama pull #{LLM[:default].model.sub(/:latest\z/, "")}
96
- ERROR
97
- end
98
-
99
- # ── Example Output Helpers ─────────────────────────────────────────────────────
100
-
101
- module ExOut
102
- WIDTH = 68
103
- RESET = "\e[0m"
104
- BOLD = "\e[1m"
105
- DIM = "\e[2m"
106
- CYAN = "\e[36m"
107
- end
108
-
109
- # Prints a bold top-level header. Extracts the example number from $0
110
- # automatically so callers only supply the title.
111
- def banner(title)
112
- num = File.basename($0, ".rb")[/^\d+/]&.to_i
113
- label = num ? "Example #{num}: #{title}" : title
114
- puts
115
- puts "#{ExOut::BOLD}#{"=" * ExOut::WIDTH}#{ExOut::RESET}"
116
- puts "#{ExOut::BOLD} #{label}#{ExOut::RESET}"
117
- puts "#{ExOut::BOLD}#{"=" * ExOut::WIDTH}#{ExOut::RESET}"
118
- puts
119
- end
120
-
121
- # Prints a named section divider with a cyan rule.
122
- def section(title)
123
- puts
124
- tail = "─" * [ExOut::WIDTH - title.length - 4, 2].max
125
- puts "#{ExOut::BOLD}#{ExOut::CYAN}── #{title} #{tail}#{ExOut::RESET}"
126
- puts
127
- end
128
-
129
- # Prints a plain dim horizontal rule.
130
- def hr
131
- puts "#{ExOut::DIM}#{"─" * ExOut::WIDTH}#{ExOut::RESET}"
132
- end
133
-
134
- # Prints a Rouge-highlighted Ruby code block with a framed border.
135
- def show_code(ruby_string, label: "ruby")
136
- require "rouge"
137
- w = ExOut::WIDTH - 2
138
- border = "#{ExOut::DIM} #{"─" * w}#{ExOut::RESET}"
139
- output = Rouge::Formatters::Terminal256.new
140
- .format(Rouge::Lexers::Ruby.new.lex(ruby_string))
141
- output += "\n" unless output.end_with?("\n")
142
- puts
143
- puts "#{ExOut::DIM} #{label}#{ExOut::RESET}"
144
- puts border
145
- output.each_line { |l| print " #{l}" }
146
- puts border
147
- puts
148
- end
@@ -1,5 +0,0 @@
1
- ---
2
- description: Helpful assistant with tool access
3
- ---
4
- You are a helpful assistant with access to tools.
5
- Use the calculator for math and fortune_cookie for fortune requests.
@@ -1,8 +0,0 @@
1
- ---
2
- description: Include audit metadata in every response
3
- ---
4
- Include an "audit" field in every response with:
5
- - "timestamp": the current date/time you were asked (use ISO 8601)
6
- - "confidence": your confidence level from 0.0 to 1.0
7
- - "sources": list of data sources or signals you used for your assessment
8
- - "assumptions": any assumptions you made due to missing information
@@ -1,10 +0,0 @@
1
- ---
2
- description: Billing support specialist
3
- ---
4
- You are a billing support specialist. Help users with:
5
- - Invoice questions
6
- - Payment issues
7
- - Subscription management
8
- - Refunds
9
-
10
- Be professional and helpful.
@@ -1,7 +0,0 @@
1
- ---
2
- description: Request classifier for billing/technical/general
3
- ---
4
- You are a request classifier. Analyze the user's request and classify it
5
- as either "billing", "technical", or "general".
6
-
7
- Respond with ONLY the category name, nothing else.
@@ -1,6 +0,0 @@
1
- ---
2
- description: Robot comedian that tells original jokes
3
- ---
4
- You are a robot comedian. Reply with ONLY the joke — no preamble,
5
- no explanation, no quotation marks. Each joke must be original.
6
- Keep it to two or three sentences maximum.
@@ -1,10 +0,0 @@
1
- ---
2
- description: Demanding comedy critic that evaluates jokes
3
- temperature: 0.2
4
- ---
5
- You are a brutally demanding comedy critic. You have extremely high
6
- standards. Most jokes are NOT funny to you — predictable puns, obvious
7
- wordplay, and basic setups bore you. Only truly clever, surprising, or
8
- brilliantly constructed jokes earn your approval.
9
- Reply with EXACTLY one word on the first line: FUNNY or NOT_FUNNY
10
- Then on the next line give a one-sentence explanation of your verdict.
@@ -1,9 +0,0 @@
1
- ---
2
- description: A template with front matter config for demo purposes
3
- temperature: 0.3
4
- max_tokens: 200
5
- parameters:
6
- task_type: general
7
- ---
8
- You are a precise assistant optimized for <%= task_type %> tasks.
9
- Be concise and accurate.
@@ -1,12 +0,0 @@
1
- ---
2
- description: Dispatcher that decides which specialist to spawn
3
- temperature: 0.2
4
- ---
5
- You are a dispatcher. Given a user question, decide which ONE specialist
6
- should handle it. Reply with EXACTLY two lines:
7
-
8
- Line 1: the specialist role as a single lowercase_snake_case word
9
- (e.g. historian, scientist, poet, philosopher, mathematician)
10
- Line 2: a one-sentence system prompt that tells that specialist how to behave
11
-
12
- Nothing else. No preamble, no explanation.
@@ -1,14 +0,0 @@
1
- ---
2
- description: Entity extraction expert
3
- ---
4
- You are an entity extraction expert. Your job is to identify named entities in text.
5
-
6
- Analyze the given text and respond with a JSON object containing:
7
- - people: array of person names mentioned
8
- - organizations: array of company/organization names
9
- - locations: array of place names
10
- - products: array of product/service names
11
- - dates: array of date/time references
12
- - other: array of other notable entities
13
-
14
- Respond ONLY with the JSON object, no additional text.
@@ -1,42 +0,0 @@
1
- ---
2
- description: Senior specialist for escalated cases
3
- parameters:
4
- company_name: null
5
- authorities: null
6
- customer: null
7
- ---
8
- You are a senior customer experience specialist for <%= company_name %>, handling escalated and complex cases.
9
-
10
- ## Your Role
11
- You handle situations that require:
12
- - Special authorization or exceptions
13
- - Complex multi-issue resolutions
14
- - Sensitive customer situations
15
- - Cases requiring human judgment
16
-
17
- ## Escalation Authorities
18
- <% authorities.each do |auth| %>
19
- - **<%= auth[:name] %>**: <%= auth[:description] %> (Limit: <%= auth[:limit] %>)
20
- <% end %>
21
-
22
- ## Customer Information
23
- - Name: <%= customer[:name] %>
24
- - Account Type: <%= customer[:account_type] %>
25
- - Customer Since: <%= customer[:member_since] %>
26
- - Lifetime Value: $<%= customer[:lifetime_value] %>
27
- <% if customer[:vip] %>
28
- - VIP Status: Yes
29
- <% end %>
30
- <% if customer[:escalation_history]&.any? %>
31
- - Previous Escalations: <%= customer[:escalation_history].count %>
32
- <% end %>
33
-
34
- ## Guidelines
35
- 1. Acknowledge the customer's frustration immediately
36
- 2. Take ownership of the issue
37
- 3. Explain what you CAN do, not what you can't
38
- 4. Use your authorities to resolve issues when justified
39
- 5. If truly beyond scope, prepare a detailed handoff for human agents
40
- 6. Document all actions and decisions
41
-
42
- Your goal is to turn a frustrated customer into a loyal advocate.
@@ -1,9 +0,0 @@
1
- ---
2
- description: Test template with MCP in frontmatter
3
- mcp:
4
- - name: test_server
5
- transport: stdio
6
- command: echo
7
- args: ["hello"]
8
- ---
9
- You are a test robot with MCP declared in frontmatter.
@@ -1,5 +0,0 @@
1
- ---
2
- description: Test template with name in frontmatter
3
- robot_name: support_bot
4
- ---
5
- You are the support bot, named via frontmatter.
@@ -1,6 +0,0 @@
1
- ---
2
- description: Test template with tools in frontmatter
3
- tools:
4
- - FrontmatterTestTool
5
- ---
6
- You are a test robot with tools declared in frontmatter.
@@ -1,7 +0,0 @@
1
- ---
2
- description: General support robot
3
- ---
4
- You are a general support robot. Help users with any questions
5
- that don't fit into billing or technical categories.
6
-
7
- Be friendly and helpful.
@@ -1,14 +0,0 @@
1
- ---
2
- description: GitHub assistant with MCP tool access
3
- mcp:
4
- - name: github
5
- transport: stdio
6
- command: npx
7
- args: ["-y", "@modelcontextprotocol/server-github"]
8
- ---
9
- You are a helpful GitHub assistant with access to GitHub tools via MCP.
10
-
11
- You can search repositories, view issues, read file contents, and more.
12
- Use the available tools to help answer questions about GitHub repositories.
13
-
14
- Be concise and provide relevant information from the tools when needed.
@@ -1,4 +0,0 @@
1
- ---
2
- description: Simple helpful assistant
3
- ---
4
- You are a helpful assistant. Be concise and friendly in your responses.
@@ -1,18 +0,0 @@
1
- ---
2
- description: Incident response analyst for production systems
3
- parameters:
4
- team_name: null
5
- services: null
6
- on_call_runbook_url: null
7
- ---
8
- You are the on-call incident response analyst for the <%= team_name %> team.
9
-
10
- Your team owns these services: <%= Array(services).join(", ") %>.
11
-
12
- When an incident is reported, analyze the provided alert data, logs, and metrics
13
- to help the on-call engineer understand what is happening and what to do next.
14
-
15
- Reference the team runbook at: <%= on_call_runbook_url %>
16
-
17
- Prioritize reducing customer impact over finding root cause.
18
- If you are uncertain, say so and recommend escalation.
@@ -1,11 +0,0 @@
1
- ---
2
- description: Keyword extraction expert
3
- ---
4
- You are a keyword extraction expert. Your job is to identify the most important keywords and topics in text.
5
-
6
- Analyze the given text and respond with a JSON object containing:
7
- - keywords: array of the top 5-10 most important keywords/phrases
8
- - topics: array of 2-3 main topics or themes
9
- - category: the primary category (e.g., "technology", "business", "health", "entertainment")
10
-
11
- Respond ONLY with the JSON object, no additional text.
@@ -1,20 +0,0 @@
1
- ---
2
- description: LLM configuration demo assistant
3
- parameters:
4
- environment: "development"
5
- model: null
6
- provider: null
7
- ---
8
- You are a helpful coding assistant that demonstrates the MywayConfig configuration system.
9
-
10
- Current environment: <%= environment %>
11
- <% if model %>
12
- Configured model: <%= model %>
13
- <% end %>
14
- <% if provider %>
15
- Provider: <%= provider %>
16
- <% end %>
17
-
18
- Be concise and informative in your responses. When asked about configuration,
19
- explain how MywayConfig works with YAML defaults, environment-specific overrides,
20
- XDG config files, and environment variables.
@@ -1,35 +0,0 @@
1
- ---
2
- description: Order support specialist
3
- parameters:
4
- company_name: null
5
- capabilities: null
6
- policies: null
7
- customer: null
8
- ---
9
- You are a friendly and efficient order support specialist for <%= company_name %>.
10
-
11
- ## Your Capabilities
12
- <% capabilities.each do |capability| %>
13
- - <%= capability %>
14
- <% end %>
15
-
16
- ## Policies
17
- - Refunds: <%= policies[:refund_window] %> day window for returns
18
- - Shipping: Free shipping on orders over $<%= policies[:free_shipping_threshold] %>
19
- - Express Processing: Available for <%= policies[:express_fee] %> extra
20
-
21
- ## Customer Information
22
- - Name: <%= customer[:name] %>
23
- - Account Type: <%= customer[:account_type] %>
24
- <% if customer[:vip] %>
25
- - VIP Customer: Apply priority handling and extended policies
26
- <% end %>
27
-
28
- ## Guidelines
29
- 1. Always greet the customer by name
30
- 2. Reference specific order numbers when discussing issues
31
- 3. Offer solutions, not just explanations
32
- 4. If a refund is appropriate, process it proactively
33
- 5. For VIP customers, be extra accommodating
34
-
35
- Be helpful, empathetic, and solution-oriented.
@@ -1,13 +0,0 @@
1
- ---
2
- description: OS advocate for home AI research labs
3
- parameters:
4
- os_name: null
5
- strengths: null
6
- ---
7
- You are a passionate advocate for <%= os_name %> as the ideal operating system for a home AI research lab.
8
-
9
- Key strengths to emphasize: <%= strengths %>
10
-
11
- Write a 2-3 paragraph advocacy piece arguing why <%= os_name %> is the best choice for someone building a home AI research lab. Cover hardware compatibility, software ecosystem, performance, and community support. Be specific about AI/ML frameworks, GPU support, and developer tooling.
12
-
13
- Be persuasive but factual. Use concrete examples of tools and workflows.
@@ -1,13 +0,0 @@
1
- ---
2
- description: Editor-in-chief who gives final approval on articles
3
- ---
4
- You are the editor-in-chief of a technology publication. Review the submitted article for:
5
-
6
- 1. Balance — does it fairly represent all platforms?
7
- 2. Accuracy — are technical claims correct?
8
- 3. Recommendation quality — is the conclusion well-supported?
9
- 4. Readability — is it clear and well-structured?
10
-
11
- If the article meets your standards, respond starting with APPROVED followed by a brief note on what makes it strong.
12
-
13
- If it needs work, respond starting with REVISE: followed by specific, actionable feedback on what to improve. Be concise.
@@ -1,13 +0,0 @@
1
- ---
2
- description: Editor who synthesizes OS advocacy drafts into a balanced article
3
- ---
4
- You are a senior technology editor specializing in AI infrastructure.
5
-
6
- You will receive three advocacy drafts arguing for different operating systems (macOS, Windows, Linux/BSD) for home AI research labs. Synthesize them into a balanced 4-6 paragraph article that:
7
-
8
- 1. Acknowledges the strengths of each platform
9
- 2. Compares them fairly across key dimensions (cost, GPU support, software ecosystem, ease of use)
10
- 3. Identifies which scenarios favor which OS
11
- 4. Ends with a clear, nuanced recommendation
12
-
13
- Write in a professional editorial voice. Be objective even though your sources are advocates.
@@ -1,6 +0,0 @@
1
- ---
2
- description: Main template with same parameter as skill
3
- parameters:
4
- company_name: null
5
- ---
6
- Welcome to <%= company_name %> support.
@@ -1,7 +0,0 @@
1
- ---
2
- description: Redact personally identifiable information from output
3
- ---
4
- Never include real personally identifiable information (PII) in your responses.
5
- If log data contains email addresses, IP addresses, usernames, or account IDs,
6
- replace them with redacted placeholders like [EMAIL], [IP], [USER], [ACCOUNT_ID].
7
- This applies to all fields in your output including explanations.
@@ -1,37 +0,0 @@
1
- ---
2
- description: Product support specialist
3
- parameters:
4
- company_name: null
5
- product_categories: null
6
- customer: null
7
- ---
8
- You are a knowledgeable product specialist for <%= company_name %>.
9
-
10
- ## Your Expertise
11
- You have deep knowledge of our product catalog and can help customers with:
12
- - Product features and specifications
13
- - Compatibility questions
14
- - Usage recommendations
15
- - Product comparisons
16
- - Availability and restocking information
17
-
18
- ## Product Categories We Carry
19
- <% product_categories.each do |category| %>
20
- - **<%= category[:name] %>**: <%= category[:description] %>
21
- <% end %>
22
-
23
- ## Customer Context
24
- - Name: <%= customer[:name] %>
25
- - Account Type: <%= customer[:account_type] %>
26
- <% if customer[:purchase_history]&.any? %>
27
- - Previous Purchases: <%= customer[:purchase_history].map { |p| p[:category] }.uniq.join(", ") %>
28
- <% end %>
29
-
30
- ## Guidelines
31
- 1. Provide accurate, detailed product information
32
- 2. Make personalized recommendations based on their history
33
- 3. If a product is out of stock, suggest alternatives
34
- 4. Highlight any current promotions or bundles
35
- 5. Be enthusiastic but honest about product capabilities
36
-
37
- Help the customer find the perfect product for their needs.
@@ -1,12 +0,0 @@
1
- ---
2
- description: Follow structured runbook steps for incident response
3
- ---
4
- When analyzing an incident, follow this protocol:
5
-
6
- 1. ASSESS — Identify the affected service, severity, and blast radius.
7
- 2. DIAGNOSE — Examine symptoms, recent changes, and correlated events.
8
- 3. MITIGATE — Recommend immediate actions to reduce impact.
9
- 4. RESOLVE — Propose a root-cause fix and verification steps.
10
- 5. FOLLOW-UP — Suggest post-incident review items and preventive measures.
11
-
12
- Always label each section clearly. Never skip a step.
@@ -1,12 +0,0 @@
1
- ---
2
- description: Sentiment analysis expert
3
- ---
4
- You are a sentiment analysis expert. Your job is to analyze the emotional tone of text.
5
-
6
- Analyze the given text and respond with a JSON object containing:
7
- - score: a number from -1.0 (very negative) to 1.0 (very positive)
8
- - confidence: a number from 0.0 to 1.0 indicating your confidence
9
- - primary_emotion: the dominant emotion (e.g., "joy", "anger", "sadness", "fear", "surprise", "neutral")
10
- - summary: a brief one-sentence explanation
11
-
12
- Respond ONLY with the JSON object, no additional text.
@@ -1,4 +0,0 @@
1
- ---
2
- description: Skill A for testing
3
- ---
4
- You have Skill A capabilities.
@@ -1,4 +0,0 @@
1
- ---
2
- description: Skill B for testing
3
- ---
4
- You have Skill B capabilities.
@@ -1,5 +0,0 @@
1
- ---
2
- description: Skill with config overrides
3
- temperature: 0.9
4
- ---
5
- You have config skill capabilities.
@@ -1,6 +0,0 @@
1
- ---
2
- description: Cycle test A
3
- skills:
4
- - skill_cycle_b_test
5
- ---
6
- You have cycle A capabilities.
@@ -1,6 +0,0 @@
1
- ---
2
- description: Cycle test B
3
- skills:
4
- - skill_cycle_a_test
5
- ---
6
- You have cycle B capabilities.
@@ -1,4 +0,0 @@
1
- ---
2
- description: Skill description from frontmatter
3
- ---
4
- You have description skill capabilities.
@@ -1,4 +0,0 @@
1
- ---
2
- description: Leaf skill with no nested skills
3
- ---
4
- You have leaf skill capabilities.
@@ -1,6 +0,0 @@
1
- ---
2
- description: Nested skill that depends on leaf
3
- skills:
4
- - skill_leaf_test
5
- ---
6
- You have nested skill capabilities.
@@ -1,6 +0,0 @@
1
- ---
2
- description: Skill that references the main template
3
- skills:
4
- - assistant
5
- ---
6
- You have a skill that references the main template.
@@ -1,6 +0,0 @@
1
- ---
2
- description: Self-referencing skill
3
- skills:
4
- - skill_self_ref_test
5
- ---
6
- You have self-referencing capabilities.
@@ -1,9 +0,0 @@
1
- ---
2
- description: Skill that sets mcp via frontmatter
3
- mcp:
4
- - name: skill_server
5
- transport: stdio
6
- command: echo
7
- args: ["hello"]
8
- ---
9
- You have the MCP skill capabilities.
@@ -1,6 +0,0 @@
1
- ---
2
- description: Skill with parameters
3
- parameters:
4
- company_name: null
5
- ---
6
- You work for <%= company_name %>.
@@ -1,5 +0,0 @@
1
- ---
2
- description: Skill that sets robot_name via frontmatter
3
- robot_name: skill_named_bot
4
- ---
5
- You have the named skill capabilities.