@synapse-research/synapse 0.2.11 → 0.2.13

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 (207) hide show
  1. package/dist/.next/BUILD_ID +1 -1
  2. package/dist/.next/app-build-manifest.json +124 -124
  3. package/dist/.next/app-path-routes-manifest.json +34 -34
  4. package/dist/.next/build-manifest.json +2 -2
  5. package/dist/.next/server/app/(dashboard)/agents/page_client-reference-manifest.js +1 -1
  6. package/dist/.next/server/app/(dashboard)/compute/page_client-reference-manifest.js +1 -1
  7. package/dist/.next/server/app/(dashboard)/project-groups/[uuid]/page_client-reference-manifest.js +1 -1
  8. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/activity/page_client-reference-manifest.js +1 -1
  9. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/dashboard/page_client-reference-manifest.js +1 -1
  10. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/documents/[documentUuid]/page_client-reference-manifest.js +1 -1
  11. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/documents/page_client-reference-manifest.js +1 -1
  12. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/[designUuid]/page_client-reference-manifest.js +1 -1
  13. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/new/page_client-reference-manifest.js +1 -1
  14. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-designs/page_client-reference-manifest.js +1 -1
  15. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-runs/[runUuid]/page_client-reference-manifest.js +1 -1
  16. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiment-runs/page_client-reference-manifest.js +1 -1
  17. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiments/new/page_client-reference-manifest.js +1 -1
  18. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/experiments/page_client-reference-manifest.js +1 -1
  19. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/insights/page_client-reference-manifest.js +1 -1
  20. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/page_client-reference-manifest.js +1 -1
  21. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/related-works/page_client-reference-manifest.js +1 -1
  22. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/research-questions/[questionUuid]/page_client-reference-manifest.js +1 -1
  23. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/research-questions/page_client-reference-manifest.js +1 -1
  24. package/dist/.next/server/app/(dashboard)/research-projects/[uuid]/settings/page_client-reference-manifest.js +1 -1
  25. package/dist/.next/server/app/(dashboard)/research-projects/new/page_client-reference-manifest.js +1 -1
  26. package/dist/.next/server/app/(dashboard)/research-projects/page_client-reference-manifest.js +1 -1
  27. package/dist/.next/server/app/(dashboard)/settings/page_client-reference-manifest.js +1 -1
  28. package/dist/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  29. package/dist/.next/server/app/_not-found.html +1 -1
  30. package/dist/.next/server/app/_not-found.rsc +1 -1
  31. package/dist/.next/server/app/admin/companies/[uuid]/page_client-reference-manifest.js +1 -1
  32. package/dist/.next/server/app/admin/companies/new/page_client-reference-manifest.js +1 -1
  33. package/dist/.next/server/app/admin/companies/new.html +1 -1
  34. package/dist/.next/server/app/admin/companies/new.rsc +1 -1
  35. package/dist/.next/server/app/admin/companies/page_client-reference-manifest.js +1 -1
  36. package/dist/.next/server/app/admin/companies.html +1 -1
  37. package/dist/.next/server/app/admin/companies.rsc +1 -1
  38. package/dist/.next/server/app/admin/page_client-reference-manifest.js +1 -1
  39. package/dist/.next/server/app/admin.html +1 -1
  40. package/dist/.next/server/app/admin.rsc +1 -1
  41. package/dist/.next/server/app/api/admin/companies/[uuid]/route_client-reference-manifest.js +1 -1
  42. package/dist/.next/server/app/api/admin/companies/route_client-reference-manifest.js +1 -1
  43. package/dist/.next/server/app/api/admin/login/route_client-reference-manifest.js +1 -1
  44. package/dist/.next/server/app/api/admin/session/route_client-reference-manifest.js +1 -1
  45. package/dist/.next/server/app/api/admin/stats/route_client-reference-manifest.js +1 -1
  46. package/dist/.next/server/app/api/agents/[uuid]/route_client-reference-manifest.js +1 -1
  47. package/dist/.next/server/app/api/agents/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  48. package/dist/.next/server/app/api/agents/route_client-reference-manifest.js +1 -1
  49. package/dist/.next/server/app/api/api-keys/[uuid]/route_client-reference-manifest.js +1 -1
  50. package/dist/.next/server/app/api/api-keys/route_client-reference-manifest.js +1 -1
  51. package/dist/.next/server/app/api/auth/callback/route_client-reference-manifest.js +1 -1
  52. package/dist/.next/server/app/api/auth/check-default/route_client-reference-manifest.js +1 -1
  53. package/dist/.next/server/app/api/auth/default-login/route_client-reference-manifest.js +1 -1
  54. package/dist/.next/server/app/api/auth/identify/route_client-reference-manifest.js +1 -1
  55. package/dist/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  56. package/dist/.next/server/app/api/auth/me/route_client-reference-manifest.js +1 -1
  57. package/dist/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
  58. package/dist/.next/server/app/api/auth/session/route_client-reference-manifest.js +1 -1
  59. package/dist/.next/server/app/api/auth/sync-token/route_client-reference-manifest.js +1 -1
  60. package/dist/.next/server/app/api/comments/route_client-reference-manifest.js +1 -1
  61. package/dist/.next/server/app/api/compute-gpus/[uuid]/release/route_client-reference-manifest.js +1 -1
  62. package/dist/.next/server/app/api/compute-nodes/[uuid]/route_client-reference-manifest.js +1 -1
  63. package/dist/.next/server/app/api/compute-nodes/route_client-reference-manifest.js +1 -1
  64. package/dist/.next/server/app/api/compute-pools/[uuid]/route_client-reference-manifest.js +1 -1
  65. package/dist/.next/server/app/api/compute-pools/route_client-reference-manifest.js +1 -1
  66. package/dist/.next/server/app/api/documents/[uuid]/images/[filename]/route_client-reference-manifest.js +1 -1
  67. package/dist/.next/server/app/api/documents/[uuid]/images/route_client-reference-manifest.js +1 -1
  68. package/dist/.next/server/app/api/documents/[uuid]/route_client-reference-manifest.js +1 -1
  69. package/dist/.next/server/app/api/events/notifications/route_client-reference-manifest.js +1 -1
  70. package/dist/.next/server/app/api/events/route_client-reference-manifest.js +1 -1
  71. package/dist/.next/server/app/api/experiment-designs/[uuid]/approve/route_client-reference-manifest.js +1 -1
  72. package/dist/.next/server/app/api/experiment-designs/[uuid]/close/route_client-reference-manifest.js +1 -1
  73. package/dist/.next/server/app/api/experiment-designs/[uuid]/reject/route_client-reference-manifest.js +1 -1
  74. package/dist/.next/server/app/api/experiment-designs/[uuid]/route_client-reference-manifest.js +1 -1
  75. package/dist/.next/server/app/api/experiment-runs/[uuid]/claim/route_client-reference-manifest.js +1 -1
  76. package/dist/.next/server/app/api/experiment-runs/[uuid]/dependencies/[dependsOnRunUuid]/route_client-reference-manifest.js +1 -1
  77. package/dist/.next/server/app/api/experiment-runs/[uuid]/dependencies/route_client-reference-manifest.js +1 -1
  78. package/dist/.next/server/app/api/experiment-runs/[uuid]/evaluate-criteria/route_client-reference-manifest.js +1 -1
  79. package/dist/.next/server/app/api/experiment-runs/[uuid]/registry/route_client-reference-manifest.js +1 -1
  80. package/dist/.next/server/app/api/experiment-runs/[uuid]/release/route_client-reference-manifest.js +1 -1
  81. package/dist/.next/server/app/api/experiment-runs/[uuid]/route_client-reference-manifest.js +1 -1
  82. package/dist/.next/server/app/api/experiment-runs/[uuid]/sessions/route_client-reference-manifest.js +1 -1
  83. package/dist/.next/server/app/api/experiments/[uuid]/complete/route_client-reference-manifest.js +1 -1
  84. package/dist/.next/server/app/api/experiments/[uuid]/progress/route_client-reference-manifest.js +1 -1
  85. package/dist/.next/server/app/api/experiments/[uuid]/request-plan/route_client-reference-manifest.js +1 -1
  86. package/dist/.next/server/app/api/experiments/[uuid]/reset/route_client-reference-manifest.js +1 -1
  87. package/dist/.next/server/app/api/experiments/[uuid]/review/route.js +1 -1
  88. package/dist/.next/server/app/api/experiments/[uuid]/review/route_client-reference-manifest.js +1 -1
  89. package/dist/.next/server/app/api/experiments/[uuid]/route_client-reference-manifest.js +1 -1
  90. package/dist/.next/server/app/api/experiments/[uuid]/start/route_client-reference-manifest.js +1 -1
  91. package/dist/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  92. package/dist/.next/server/app/api/mcp/route.js +1 -1
  93. package/dist/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -1
  94. package/dist/.next/server/app/api/me/assignments/route_client-reference-manifest.js +1 -1
  95. package/dist/.next/server/app/api/mentionables/route_client-reference-manifest.js +1 -1
  96. package/dist/.next/server/app/api/notifications/[uuid]/archive/route_client-reference-manifest.js +1 -1
  97. package/dist/.next/server/app/api/notifications/[uuid]/read/route_client-reference-manifest.js +1 -1
  98. package/dist/.next/server/app/api/notifications/preferences/route_client-reference-manifest.js +1 -1
  99. package/dist/.next/server/app/api/notifications/read-all/route_client-reference-manifest.js +1 -1
  100. package/dist/.next/server/app/api/notifications/route_client-reference-manifest.js +1 -1
  101. package/dist/.next/server/app/api/notifications/unread-count/route_client-reference-manifest.js +1 -1
  102. package/dist/.next/server/app/api/onboarding/status/route_client-reference-manifest.js +1 -1
  103. package/dist/.next/server/app/api/project-groups/[uuid]/dashboard/route_client-reference-manifest.js +1 -1
  104. package/dist/.next/server/app/api/project-groups/[uuid]/route_client-reference-manifest.js +1 -1
  105. package/dist/.next/server/app/api/project-groups/route_client-reference-manifest.js +1 -1
  106. package/dist/.next/server/app/api/research-projects/[uuid]/activity/route_client-reference-manifest.js +1 -1
  107. package/dist/.next/server/app/api/research-projects/[uuid]/agent-activity/route_client-reference-manifest.js +1 -1
  108. package/dist/.next/server/app/api/research-projects/[uuid]/available/route_client-reference-manifest.js +1 -1
  109. package/dist/.next/server/app/api/research-projects/[uuid]/baselines/route_client-reference-manifest.js +1 -1
  110. package/dist/.next/server/app/api/research-projects/[uuid]/documents/route_client-reference-manifest.js +1 -1
  111. package/dist/.next/server/app/api/research-projects/[uuid]/experiment-designs/[designUuid]/validate/route_client-reference-manifest.js +1 -1
  112. package/dist/.next/server/app/api/research-projects/[uuid]/experiment-designs/route_client-reference-manifest.js +1 -1
  113. package/dist/.next/server/app/api/research-projects/[uuid]/experiment-designs/summary/route_client-reference-manifest.js +1 -1
  114. package/dist/.next/server/app/api/research-projects/[uuid]/experiment-runs/dependencies/route_client-reference-manifest.js +1 -1
  115. package/dist/.next/server/app/api/research-projects/[uuid]/experiment-runs/route_client-reference-manifest.js +1 -1
  116. package/dist/.next/server/app/api/research-projects/[uuid]/experiments/route_client-reference-manifest.js +1 -1
  117. package/dist/.next/server/app/api/research-projects/[uuid]/github/branches/route_client-reference-manifest.js +1 -1
  118. package/dist/.next/server/app/api/research-projects/[uuid]/group/route_client-reference-manifest.js +1 -1
  119. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/[workUuid]/route_client-reference-manifest.js +1 -1
  120. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/auto-search/complete/route_client-reference-manifest.js +1 -1
  121. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/auto-search/route_client-reference-manifest.js +1 -1
  122. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/deep-research/complete/route_client-reference-manifest.js +1 -1
  123. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/deep-research/route_client-reference-manifest.js +1 -1
  124. package/dist/.next/server/app/api/research-projects/[uuid]/related-works/route_client-reference-manifest.js +1 -1
  125. package/dist/.next/server/app/api/research-projects/[uuid]/research-questions/route_client-reference-manifest.js +1 -1
  126. package/dist/.next/server/app/api/research-projects/[uuid]/route_client-reference-manifest.js +1 -1
  127. package/dist/.next/server/app/api/research-projects/[uuid]/synthesis/complete/route_client-reference-manifest.js +1 -1
  128. package/dist/.next/server/app/api/research-projects/[uuid]/synthesis/refresh/route_client-reference-manifest.js +1 -1
  129. package/dist/.next/server/app/api/research-projects/[uuid]/synthesis/trigger/route_client-reference-manifest.js +1 -1
  130. package/dist/.next/server/app/api/research-projects/route_client-reference-manifest.js +1 -1
  131. package/dist/.next/server/app/api/research-questions/[uuid]/claim/route_client-reference-manifest.js +1 -1
  132. package/dist/.next/server/app/api/research-questions/[uuid]/move/route_client-reference-manifest.js +1 -1
  133. package/dist/.next/server/app/api/research-questions/[uuid]/release/route_client-reference-manifest.js +1 -1
  134. package/dist/.next/server/app/api/research-questions/[uuid]/review/route_client-reference-manifest.js +1 -1
  135. package/dist/.next/server/app/api/research-questions/[uuid]/route_client-reference-manifest.js +1 -1
  136. package/dist/.next/server/app/api/sessions/[uuid]/route_client-reference-manifest.js +1 -1
  137. package/dist/.next/server/app/api/settings/integrations/route_client-reference-manifest.js +1 -1
  138. package/dist/.next/server/app/api/ssh-config/route_client-reference-manifest.js +1 -1
  139. package/dist/.next/server/app/index.html +1 -1
  140. package/dist/.next/server/app/index.rsc +1 -1
  141. package/dist/.next/server/app/login/admin/page_client-reference-manifest.js +1 -1
  142. package/dist/.next/server/app/login/admin.html +1 -1
  143. package/dist/.next/server/app/login/admin.rsc +1 -1
  144. package/dist/.next/server/app/login/callback/page_client-reference-manifest.js +1 -1
  145. package/dist/.next/server/app/login/callback.html +1 -1
  146. package/dist/.next/server/app/login/callback.rsc +1 -1
  147. package/dist/.next/server/app/login/page_client-reference-manifest.js +1 -1
  148. package/dist/.next/server/app/login/silent-refresh/page_client-reference-manifest.js +1 -1
  149. package/dist/.next/server/app/login/silent-refresh.html +1 -1
  150. package/dist/.next/server/app/login/silent-refresh.rsc +1 -1
  151. package/dist/.next/server/app/login.html +1 -1
  152. package/dist/.next/server/app/login.rsc +1 -1
  153. package/dist/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  154. package/dist/.next/server/app/page_client-reference-manifest.js +1 -1
  155. package/dist/.next/server/app/research-projects/new.html +1 -1
  156. package/dist/.next/server/app/research-projects/new.rsc +1 -1
  157. package/dist/.next/server/app/research-projects.html +1 -1
  158. package/dist/.next/server/app/research-projects.rsc +1 -1
  159. package/dist/.next/server/app/settings.html +1 -1
  160. package/dist/.next/server/app/settings.rsc +1 -1
  161. package/dist/.next/server/app-paths-manifest.json +34 -34
  162. package/dist/.next/server/chunks/8499.js +1 -1
  163. package/dist/.next/server/middleware-manifest.json +1 -1
  164. package/dist/.next/server/pages/404.html +1 -1
  165. package/dist/.next/server/pages/500.html +1 -1
  166. package/dist/.next/server/server-reference-manifest.js +1 -1
  167. package/dist/.next/server/server-reference-manifest.json +1 -1
  168. package/package.json +4 -2
  169. package/dist/public/skill/SKILL.md +0 -200
  170. package/dist/public/skill/aris-synapse-sync/SKILL.md +0 -368
  171. package/dist/public/skill/package.json +0 -79
  172. package/dist/public/skill/references/00-common-tools.md +0 -253
  173. package/dist/public/skill/references/01-setup.md +0 -251
  174. package/dist/public/skill/references/02-pm-workflow.md +0 -584
  175. package/dist/public/skill/references/03-developer-workflow.md +0 -325
  176. package/dist/public/skill/references/04-admin-workflow.md +0 -328
  177. package/dist/public/skill/references/06-claude-code-agent-teams.md +0 -233
  178. package/dist/public/synapse-plugin/.claude-plugin/plugin.json +0 -20
  179. package/dist/public/synapse-plugin/.mcp.json +0 -11
  180. package/dist/public/synapse-plugin/bin/on-pre-enter-plan.sh +0 -26
  181. package/dist/public/synapse-plugin/bin/on-pre-exit-plan.sh +0 -22
  182. package/dist/public/synapse-plugin/bin/on-pre-spawn-agent.sh +0 -64
  183. package/dist/public/synapse-plugin/bin/on-session-end.sh +0 -39
  184. package/dist/public/synapse-plugin/bin/on-session-start.sh +0 -283
  185. package/dist/public/synapse-plugin/bin/on-subagent-start.sh +0 -233
  186. package/dist/public/synapse-plugin/bin/on-subagent-stop.sh +0 -80
  187. package/dist/public/synapse-plugin/bin/on-task-completed.sh +0 -66
  188. package/dist/public/synapse-plugin/bin/on-teammate-idle.sh +0 -47
  189. package/dist/public/synapse-plugin/bin/on-user-prompt.sh +0 -57
  190. package/dist/public/synapse-plugin/bin/synapse-api.sh +0 -387
  191. package/dist/public/synapse-plugin/bin/test-syntax.sh +0 -85
  192. package/dist/public/synapse-plugin/hooks/hooks.json +0 -105
  193. package/dist/public/synapse-plugin/skills/autonomy/SKILL.md +0 -140
  194. package/dist/public/synapse-plugin/skills/experiments/SKILL.md +0 -87
  195. package/dist/public/synapse-plugin/skills/research/SKILL.md +0 -58
  196. package/dist/public/synapse-plugin/skills/sessions/SKILL.md +0 -174
  197. package/dist/public/synapse-plugin/skills/setup/SKILL.md +0 -73
  198. package/dist/public/synapse-plugin/skills/synapse/SKILL.md +0 -144
  199. package/dist/public/synapse-plugin/skills/synapse/package.json +0 -49
  200. package/dist/public/synapse-plugin/skills/synapse/references/00-common-tools.md +0 -107
  201. package/dist/public/synapse-plugin/skills/synapse/references/01-setup.md +0 -112
  202. package/dist/public/synapse-plugin/skills/synapse/references/02-research-workflow.md +0 -145
  203. package/dist/public/synapse-plugin/skills/synapse/references/03-experiment-workflow.md +0 -319
  204. package/dist/public/synapse-plugin/skills/synapse/references/04-autonomous-loop.md +0 -223
  205. package/dist/public/synapse-plugin/skills/synapse/references/05-session-sub-agent.md +0 -251
  206. /package/dist/.next/static/{duLVRogIrNQ1Tarxga53z → VlyiqgSt6DSLuCX7rlcKa}/_buildManifest.js +0 -0
  207. /package/dist/.next/static/{duLVRogIrNQ1Tarxga53z → VlyiqgSt6DSLuCX7rlcKa}/_ssgManifest.js +0 -0
@@ -1,140 +0,0 @@
1
- ---
2
- name: autonomy
3
- description: Drive the Claude Code-client autonomous research loop — analyze project state, propose the next experiment, dispatch sub-agents to execute it, and iterate.
4
- license: AGPL-3.0
5
- metadata:
6
- author: Vincentwei1021
7
- version: "0.6.1"
8
- category: research
9
- mcp_server: synapse
10
- ---
11
-
12
- # Autonomy Skill
13
-
14
- Use this skill when the user asks the Claude Code agent to drive research autonomously on a Synapse project: propose the next experiment, dispatch it, analyze the result, and repeat.
15
-
16
- This is the **CC-client autonomous loop**. It does not depend on the server-side `autonomousLoopEnabled` flag (that flag is for realtime-transport agents). The loop runs entirely inside the current Claude Code session: the main agent is the orchestrator, and sub-agents spawned via the Task tool are auto-enrolled by the plugin's `SubagentStart` hook.
17
-
18
- ## Default Mode
19
-
20
- **Full auto** by default. When the user says "turn on autonomous loop", "run until done", or similar, assume full auto unless they say otherwise:
21
-
22
- - New experiment proposals are created as `pending_start` and immediately dispatched to sub-agents for execution.
23
- - The main agent does not wait for human approval between iterations.
24
- - The user can stop the loop at any time by interrupting the session; the main agent should also stop voluntarily once stop conditions (below) are met.
25
-
26
- If the user explicitly asks for "human review before each experiment", switch to **review mode**: proposals land as `pending_review` and the loop pauses until they are approved externally.
27
-
28
- ## Prompt Boundary
29
-
30
- Stay inside this skill when the work is about:
31
- - reviewing the project state after experiments finish
32
- - deciding whether to propose the next experiment or wait for in-flight work
33
- - dispatching sub-agents to execute `pending_start` experiments
34
- - maintaining a rolling synthesis via `synapse_save_project_synthesis`
35
- - detecting stop conditions and exiting cleanly
36
-
37
- Hand off to:
38
- - **[experiments](../experiments/SKILL.md)** for the inner execution logic of one experiment (the sub-agent operates there)
39
- - **[research](../research/SKILL.md)** when the loop decides it needs new literature before the next experiment
40
- - **[sessions](../sessions/SKILL.md)** for how sub-agent sessions and heartbeats are auto-managed
41
-
42
- ## Before Starting The Loop
43
-
44
- 1. `synapse_checkin()` to refresh identity and current assignments.
45
- 2. `synapse_get_project_full_context({ researchProjectUuid })` to load brief, evaluation methods, past experiments, latest synthesis, and compute availability.
46
- 3. Confirm with the user:
47
- - target project UUID
48
- - mode (`full_auto` default, or `review`)
49
- - optional budgets: `maxIterations`, `maxExperimentsProposed`, `maxComputeHours`
50
- 4. If the project has no completed experiments, do not enter the loop cold. Offer the foundational path first (data prep + baseline + eval script — see **[experiments](../experiments/SKILL.md)**), then start the loop once the baseline is in place.
51
-
52
- ## Iteration Procedure
53
-
54
- Each iteration of the loop follows the same shape. The main agent runs this until a stop condition triggers.
55
-
56
- 1. **Refresh project state**
57
- - `synapse_get_project_full_context({ researchProjectUuid })`
58
- - `synapse_get_assigned_experiments({ researchProjectUuid, statuses: ["pending_start", "in_progress"] })`
59
-
60
- 2. **Decide what this iteration should do**
61
- - If any experiment is `in_progress`, the loop should **monitor**, not propose. Poll `synapse_get_experiment` for each running experiment, write a progress note to the user, and yield back so the next user turn re-enters the loop.
62
- - If any experiment is `pending_start` (and mode is `full_auto`), **dispatch** it: spawn a Task-tool sub-agent with the experiment UUID in its prompt. The `SubagentStart` hook auto-injects the session UUID and execution workflow; the main agent does not need to call `synapse_create_session`.
63
- - If the queue is empty and there are completed experiments to digest, **synthesize** first: read the current `project_synthesis` document via `synapse_get_documents({ type: "project_synthesis" })` + `synapse_get_document`, and update it with `synapse_save_project_synthesis` only if new results add something the existing synthesis does not already cover.
64
- - If the queue is empty and synthesis is current, **propose** the next experiment with `synapse_propose_experiment`. One independent run per proposal — split comparisons, ablations, and parameter sweeps into separate proposals.
65
-
66
- 3. **Respect compute reality**
67
- - Before proposing, check availability with `synapse_list_compute_nodes({ researchProjectUuid, onlyAvailable: true })`. Do not over-propose concurrent experiments beyond what available GPUs can run.
68
- - If the project has a `computePoolUuid`, reservations must stay inside that pool.
69
-
70
- 4. **Log the decision**
71
- - Add a short `synapse_add_comment({ targetType: "research_project", ... })` summarizing what this iteration decided and why. This gives the human a readable audit trail in the UI.
72
-
73
- 5. **Check stop conditions**, then either return control to the user (normal case) or immediately re-run step 1 if the user asked for tight, unattended iteration within a single turn.
74
-
75
- ## Monitor-Not-Executor
76
-
77
- The main agent does **not** SSH into GPU nodes, does **not** run training loops, and does **not** call `synapse_start_experiment` itself (unless the user explicitly tells it to run an experiment inline with no sub-agent). Its job is:
78
-
79
- - read state → decide → dispatch → monitor → synthesize → propose → repeat.
80
-
81
- All execution work — `synapse_start_experiment`, `synapse_get_node_access_bundle`, SSH, training, `synapse_report_experiment_progress`, `synapse_submit_experiment_results` — happens inside sub-agents. Spawn one Task sub-agent per `pending_start` experiment. Each sub-agent receives its session UUID and the full experiment workflow automatically via the `SubagentStart` hook.
82
-
83
- ## Proposal Quality
84
-
85
- A good proposal includes:
86
- - **Motivation** — what previous result or gap this addresses
87
- - **Hypothesis** — what you expect to learn
88
- - **Method** — enough detail that a sub-agent can execute without further prompting
89
- - **Success criteria** — how the result will be judged against the project's evaluation method
90
- - **Compute fit** — realistic given current availability
91
-
92
- Bad proposals to avoid:
93
- - bundling multiple runs into one card
94
- - re-running something already completed
95
- - ignoring the project's stated evaluation methods
96
- - proposing work the available compute pool cannot support
97
-
98
- ## Stop Conditions
99
-
100
- Exit the loop and report back to the user when any of these hold:
101
-
102
- - `maxIterations` reached (default: ask the user up front)
103
- - `maxExperimentsProposed` reached
104
- - `maxComputeHours` used across this loop's runs
105
- - synthesis has not materially changed for K consecutive iterations (no-progress detection)
106
- - the user interrupts or explicitly says "stop"
107
- - all research questions are `completed` and there is no promising direction left
108
- - compute pool is exhausted and no experiment is making forward progress
109
-
110
- On exit, summarize what was run, what was learned, the current state of the synthesis document, and any recommended follow-ups for a human.
111
-
112
- ## Mutual Exclusion With The Server-Side Loop
113
-
114
- If `synapse_get_research_project` shows the project already has `autonomousLoopEnabled = true` and a loop agent assigned on the realtime side, do not also run the CC-client loop against it. Warn the user and either defer, or ask them to disable the server-side loop first — running both will double-dispatch proposals and reservations.
115
-
116
- ## Typical Turn
117
-
118
- ```
119
- synapse_checkin()
120
- synapse_get_project_full_context({ researchProjectUuid })
121
- synapse_get_assigned_experiments({ researchProjectUuid, statuses: ["pending_start", "in_progress"] })
122
-
123
- # Monitor in-flight experiments if any
124
- # Else dispatch pending_start via Task sub-agents
125
- # Else synthesize if new results need analysis
126
- # Else propose next experiment
127
-
128
- synapse_add_comment({
129
- targetType: "research_project",
130
- targetUuid: "<projectUuid>",
131
- content: "Iteration N — dispatched experiment <uuid> / proposed <title> / no-op (synthesis current)"
132
- })
133
- ```
134
-
135
- ## Reference
136
-
137
- - **[Autonomous loop reference](../synapse/references/04-autonomous-loop.md)**
138
- - **[Experiments skill](../experiments/SKILL.md)**
139
- - **[Sessions skill](../sessions/SKILL.md)**
140
- - **[Common tools](../synapse/references/00-common-tools.md)**
@@ -1,87 +0,0 @@
1
- ---
2
- name: experiments
3
- description: Plan, revise, execute, and report Synapse experiments, including compute access and result submission.
4
- license: AGPL-3.0
5
- metadata:
6
- author: Vincentwei1021
7
- version: "0.6.1"
8
- category: research
9
- mcp_server: synapse
10
- ---
11
-
12
- # Experiments Skill
13
-
14
- Use this skill for the experiment stage: drafting plans, revising returned experiments, running approved work, using compute, and submitting results.
15
-
16
- ## Prompt Boundary
17
-
18
- Stay inside this skill when the work is about:
19
- - creating a brand-new experiment from scratch
20
- - `draft`, `pending_review`, `pending_start`, `in_progress`, or `completed` experiments
21
- - plan authoring or revision based on reviewer feedback
22
- - reserving GPUs and starting workloads
23
- - reporting progress and saving results
24
- - writing experiment result reports
25
-
26
- Hand off to:
27
- - **[research](../research/SKILL.md)** for literature and deep research
28
- - **[autonomy](../autonomy/SKILL.md)** to drive the CC-client autonomous loop when there is nothing to execute and you need to propose the next experiment
29
- - **[sessions](../sessions/SKILL.md)** when running multiple experiments in parallel via sub-agents
30
-
31
- ## Empty-Assignment Onboarding
32
-
33
- If `synapse_get_assigned_experiments` returns empty, do not idle. Ask the user which path:
34
-
35
- 1. **Execute an approved experiment** — list `pending_start` experiments in the project with `synapse_get_project_full_context` and ask which to start.
36
- 2. **Flesh out a quick idea** — call `synapse_get_project_full_context`, then draft a plan with `synapse_create_experiment` (defaults to `pending_review`, or pass `status: "draft"` to keep refining).
37
- 3. **Create the foundational experiment** — if the project has no completed experiments, offer the foundational template below.
38
- 4. **Enter the autonomous loop** — hand off to **[autonomy](../autonomy/SKILL.md)** to propose and auto-dispatch the next experiment.
39
-
40
- ## Foundational First Experiment
41
-
42
- If the project has no completed experiments yet, the first experiment is not a normal research run — it is the project's baseline infrastructure. Drive it through three bundled deliverables before any comparison work:
43
-
44
- 1. **Data preparation** — normalize the raw dataset into a single canonical format every future experiment will consume. Keep the prep scripts under the project's repo (if one is configured via `synapse_get_repo_access`).
45
- 2. **Baseline run** — execute the simplest reasonable approach end-to-end and record its metrics with `synapse_submit_experiment_results`, so subsequent experiments have something to beat.
46
- 3. **Evaluation script** — implement the canonical eval harness future experiments will call. Commit alongside data prep.
47
-
48
- If the project has a repo, commit all three onto the base branch (or a per-experiment branch merged back). Every subsequent experiment branches from that base so it inherits prep + eval automatically.
49
-
50
- ## Typical Flow
51
-
52
- 1. `synapse_checkin()` — refresh identity and assignments
53
- 2. Author or fetch the experiment
54
- - New plan: `synapse_create_experiment(...)` (defaults to `pending_review`, or `status: "draft"` to keep editing)
55
- - Existing assignment: `synapse_get_assigned_experiments()` then `synapse_get_experiment({ experimentUuid })`
56
- 3. If drafting or revising: `synapse_update_experiment_status({ status: "draft", liveStatus: "writing" })` + `synapse_update_experiment_plan(...)`, then `synapse_update_experiment_status({ status: "pending_review" })`
57
- 4. Before execution: `synapse_list_compute_nodes({ onlyAvailable: true, researchProjectUuid })`
58
- 5. Reserve compute: optional `synapse_reserve_gpus(...)` or inline via `synapse_start_experiment({ gpuUuids })`
59
- 6. `synapse_start_experiment({ experimentUuid, workingNotes })` — moves to `in_progress`
60
- 7. If remote compute: `synapse_get_node_access_bundle({ experimentUuid, nodeUuid })`, write the returned `privateKeyPemBase64` to a local PEM, `chmod 600`, SSH with the returned host/user/port
61
- 8. If repo-backed: `synapse_get_repo_access` → clone → branch from the experiment's base branch
62
- 9. Run the workload in a persistent remote shell (`tmux`/`screen`) with unbuffered output (`python -u …` or `PYTHONUNBUFFERED=1`) so logs never stall a tool call
63
- 10. Report progress with `synapse_report_experiment_progress` at milestones — `phase` ∈ `setup` | `training` | `evaluation` | `analysis`; `liveStatus` ∈ `checking_resources` | `queuing` | `running`
64
- 11. For long runs (>30 min), schedule periodic progress updates (cron on the remote node, or the main agent polling and calling `synapse_report_experiment_progress` on a timer) so the card never looks dead
65
- 12. Commit code/artifacts to the experiment branch or base branch; capture the commit SHA
66
- 13. Finish with `synapse_submit_experiment_results({ outcome, experimentResults, branch, commitSha })` — `outcome` ∈ `success` | `failure` | `inconclusive`; on failure include the error and partial results
67
- 14. If the flow asks for a dedicated report document: `synapse_save_experiment_report({ experimentUuid, title, content })` — do **not** post a full report as a comment
68
- 15. If revising per reviewer feedback, read the full thread first with `synapse_get_comments({ targetType: "experiment", targetUuid })` before editing the plan
69
-
70
- ## Core Rules
71
-
72
- - **Never assume a server-local SSH key path exists.** Always fetch the access bundle and write the PEM locally.
73
- - **One independent run per experiment card.** Do not bundle comparison runs, ablations, or parameter sweeps into a single experiment — create multiple cards.
74
- - **Match the project description's language.** If the project brief is in Chinese, write the plan, progress, and report in Chinese.
75
- - **Split plan / execution / report tools.** Use `synapse_update_experiment_plan` for plan edits, `synapse_report_experiment_progress` for live status, `synapse_submit_experiment_results` for completion, and `synapse_save_experiment_report` for the dedicated report. Do not substitute with comments.
76
- - **Revision stays durable.** When a reviewer sends an experiment back, flip to `draft`, revise, then move it back to `pending_review`; leave a reply via `synapse_add_comment` using `@[name](actorType:uuid)` format to notify the reviewer.
77
- - **Failures are data.** An experiment that crashes or shows a regression is still a valid submission: set `outcome: "failure"` (or `"inconclusive"`) and write up what happened in `experimentResults` and the report.
78
-
79
- ## Running Multiple Experiments In Parallel
80
-
81
- When the user wants to execute several `pending_start` experiments at the same time, the main agent should monitor and dispatch rather than run workloads itself. Spawn one Task-tool sub-agent per experiment UUID — the plugin's `SubagentStart` hook auto-creates a Synapse session and injects the full execution workflow. The main agent then polls with `synapse_get_assigned_experiments({ statuses: ["in_progress", "completed"] })` and `synapse_get_experiment` to track progress. See **[sessions](../sessions/SKILL.md)** for the full pattern.
82
-
83
- ## Reference
84
-
85
- - **[Experiment workflow reference](../synapse/references/03-experiment-workflow.md)**
86
- - **[Common tools](../synapse/references/00-common-tools.md)**
87
- - **[Plugin hooks and parallel execution](../synapse/references/05-session-sub-agent.md)**
@@ -1,58 +0,0 @@
1
- ---
2
- name: research
3
- description: Work on Synapse pre-experiment research: project context, research questions, literature search, related works, and deep research reports.
4
- license: AGPL-3.0
5
- metadata:
6
- author: Vincentwei1021
7
- version: "0.6.1"
8
- category: research
9
- mcp_server: synapse
10
- ---
11
-
12
- # Research Skill
13
-
14
- Use this skill for the pre-experiment stage: understanding project context, developing research questions, grounding work in literature, and producing deep research outputs.
15
-
16
- ## Prompt Boundary
17
-
18
- Stay inside this skill when the work is about:
19
- - reading project context and framing the problem
20
- - creating or progressing research questions
21
- - searching papers and reading them progressively
22
- - curating `RelatedWork`
23
- - writing or updating a deep research report
24
-
25
- Hand off to:
26
- - **[experiments](../experiments/SKILL.md)** once the work becomes experiment planning or execution
27
- - **[autonomy](../autonomy/SKILL.md)** to drive the CC-client autonomous loop when you are choosing the next experiment yourself
28
-
29
- ## Empty-Project Onboarding
30
-
31
- If `synapse_get_research_questions` and `synapse_get_related_works` both return empty for the active project, do not guess a direction. Ask the user:
32
-
33
- 1. **List existing literature** — does the user already have related works elsewhere that should be imported first?
34
- 2. **Search new literature** — run `synapse_search_papers` against an initial topic phrase supplied by the user, and curate results with `synapse_add_related_work`.
35
- 3. **Draft a research question** — create the first `ResearchQuestion` with `synapse_create_research_question` so later experiments have a framing to attach to.
36
- 4. **Generate a deep research report** — once some related works exist, run the progressive-read flow below and save the synthesis with `synapse_save_deep_research_report`.
37
-
38
- Offer example invocations (with the project UUID filled in) so the user can pick one. Do not skip ahead to experiment planning from this skill.
39
-
40
- ## Typical Flow
41
-
42
- 1. `synapse_checkin()`
43
- 2. `synapse_get_research_project()` or `synapse_get_project_full_context()`
44
- 3. `synapse_get_research_questions()` or create/claim a question
45
- 4. `synapse_search_papers()` and inspect papers with `brief` / `head` / `section` / `full`
46
- 5. `synapse_add_related_work()` for durable project memory
47
- 6. `synapse_save_deep_research_report()` when synthesizing findings (organize thematically, not paper-by-paper; cite specific methods/results; match the project description's language)
48
- 7. `synapse_add_comment()` on the research question or project artifacts when reasoning should be durable
49
- 8. If the task originated from a Synapse-triggered deep research or auto search, finish with `synapse_complete_task({ taskType: "deep_research" | "auto_search" })`
50
-
51
- ## Core Rule
52
-
53
- Do not drift into experiment execution from this skill. Once you are drafting a runnable experiment plan, switch to **[experiments](../experiments/SKILL.md)**.
54
-
55
- ## Reference
56
-
57
- - **[Research workflow reference](../synapse/references/02-research-workflow.md)**
58
- - **[Common tools](../synapse/references/00-common-tools.md)**
@@ -1,174 +0,0 @@
1
- ---
2
- name: sessions
3
- description: Understand the Synapse Claude Code plugin hooks, session lifecycle, and multi-agent parallel execution. Covers what each hook does, where plugin state lives, and how to run multiple experiments in parallel via Task sub-agents.
4
- license: AGPL-3.0
5
- metadata:
6
- author: Vincentwei1021
7
- version: "0.6.1"
8
- category: research
9
- mcp_server: synapse
10
- ---
11
-
12
- # Sessions Skill
13
-
14
- Use this skill when the task is about how the Synapse plugin itself behaves inside Claude Code: which hooks fire, what they inject into context, how sub-agent sessions are managed, and how to dispatch multiple experiments in parallel to Task sub-agents.
15
-
16
- ## Prompt Boundary
17
-
18
- Stay inside this skill when the work is about:
19
- - understanding why Synapse context appeared in the session (which hook injected it)
20
- - debugging a sub-agent that is not behaving as expected (session, heartbeat, or teardown issue)
21
- - deciding how a main agent should dispatch parallel experiment work across sub-agents
22
- - deciding when to call `synapse_create_session` / `synapse_close_session` directly instead of relying on hooks
23
-
24
- Hand off to:
25
- - **[experiments](../experiments/SKILL.md)** for the actual work inside one experiment
26
- - **[autonomy](../autonomy/SKILL.md)** for the CC-client autonomous loop
27
-
28
- ## Core Rule
29
-
30
- For sub-agents spawned through the Task tool, sessions are fully automatic. Do not manually call `synapse_create_session` or `synapse_close_session` for a sub-agent unless you are debugging the lifecycle itself. The `SubagentStart` and `SubagentStop` hooks already do it.
31
-
32
- ## Plugin Hooks At A Glance
33
-
34
- The plugin ships ten hooks wired up in `hooks/hooks.json`. Each reads/writes local state under `.synapse/` in the project and, when needed, calls Synapse MCP tools via the bundled `synapse-api.sh` wrapper.
35
-
36
- | Hook script | Claude Code event | What it does | State touched | MCP calls |
37
- |---|---|---|---|---|
38
- | `on-session-start.sh` | `SessionStart` (`startup` \| `resume` \| `compact`) | Calls `synapse_checkin`, caches owner / roles / project UUID into `state.json`, scans for pre-assigned sub-agent session files, and builds the rich `additionalContext` block that orients the agent on assignments, projects, and workflow. | `state.json`, reads `sessions/*.json` | `synapse_checkin`, optional `synapse_session_heartbeat` |
39
- | `on-user-prompt.sh` | `UserPromptSubmit` | Fast local-only check on every user turn. Scans `.synapse/sessions/` and injects a brief reminder that sub-agent sessions are auto-managed. No network calls (stays under 100 ms). | reads `sessions/` | none |
40
- | `on-pre-enter-plan.sh` | `PreToolUse` (`EnterPlanMode`) | Injects planning-mode guidance: prefer the current Experiment pipeline (`draft → pending_review → pending_start → in_progress → completed`), plan one independent run per experiment card, do not plan to create sessions manually. | none | none |
41
- | `on-pre-exit-plan.sh` | `PreToolUse` (`ExitPlanMode`) | Reminds the agent to verify that the plan is expressed as Experiment records before executing. | none | none |
42
- | `on-pre-spawn-agent.sh` | `PreToolUse` (`Task`) | Before a sub-agent is spawned, atomically writes `.synapse/pending/{name}` with the agent name and type so the `SubagentStart` hook can claim it. Skips read-only sub-agent types. | writes `pending/{name}` | none |
43
- | `on-subagent-start.sh` | `SubagentStart` | Atomically claims the pending file via `mv`, then either reuses an active session, reopens a closed one, or creates a new one via `synapse_list_sessions` / `synapse_reopen_session` / `synapse_create_session`. Writes `sessions/{name}.json`, stores the mapping in `state.json`, and injects the session UUID plus the execution workflow directly into the sub-agent's context. | `state.json`, `sessions/{name}.json`, `claimed/{agent_id}` | `synapse_list_sessions`, `synapse_create_session`, `synapse_reopen_session`, `synapse_session_heartbeat` |
44
- | `on-teammate-idle.sh` | `TeammateIdle` | When a teammate sub-agent idles between turns, sends a heartbeat so its Synapse session does not auto-time-out after 1 hour. Output suppressed — this fires too often to notify the user. | reads `state.json` | `synapse_session_heartbeat` |
45
- | `on-subagent-stop.sh` | `SubagentStop` | Looks up the session UUID, calls `synapse_close_session`, and cleans up `state.json`, `sessions/{name}.json`, and `claimed/{agent_id}`. | deletes state entries, `sessions/{name}.json`, `claimed/{agent_id}` | `synapse_close_session` |
46
- | `on-task-completed.sh` | `TaskCompleted` | Scans the completed task description/subject for a `synapse:experiment:<uuid>` marker. If found, injects a reminder to finalize the experiment with `synapse_submit_experiment_results` (or report progress if still running). | reads task metadata only | none |
47
- | `on-session-end.sh` | `SessionEnd` | Safety-checked cleanup. Removes `.synapse/` only when all sub-agent sessions are closed and `state.json` has no meaningful content left. | deletes `.synapse/` if safe | none |
48
-
49
- ## Local State Layout
50
-
51
- The plugin keeps per-project state under `.synapse/` in the project working directory:
52
-
53
- - `state.json` — flock-guarded key/value store. Holds owner info cached from `synapse_checkin`, agent roles, the primary project UUID, and the `session_{…}` / `agent_for_session_{…}` / `name_for_agent_{…}` mappings used by the start/stop hooks.
54
- - `pending/{name}` — written by `on-pre-spawn-agent.sh`, atomically claimed by `on-subagent-start.sh` via `mv`.
55
- - `claimed/{agent_id}` — marker file showing which pending entry was claimed.
56
- - `sessions/{name}.json` — per-sub-agent session metadata: `sessionUuid`, `agentId`, `agentName`, `agentType`, `sessionAction`, `createdAt`. Other hooks (idle, stop, user-prompt) read from here to locate the session.
57
-
58
- `on-session-end.sh` removes `.synapse/` only when it is safe; otherwise state is preserved across sessions so resumed work reconnects to the same Synapse sessions.
59
-
60
- ## MCP Connection Session vs Synapse Agent Session
61
-
62
- These are two different things — do not confuse them.
63
-
64
- - **MCP connection session** — the HTTP-streamable session on `/api/mcp`. Identified by the `mcp-session-id` header, auto-renewed on every request, expires after 30 minutes of inactivity. The plugin handles this transparently.
65
- - **Synapse agent session** — a durable record in Synapse of which agent is working on what (the green / yellow / grey indicators on the Settings page). Created/closed by the plugin hooks above, or explicitly by `synapse_create_session` / `synapse_close_session`.
66
-
67
- ## Session Status Lifecycle
68
-
69
- ```
70
- active ——(no heartbeat 1h)——> inactive ——(heartbeat)——> active
71
- \ \
72
- \—— close ——> closed ——(reopen)——> active
73
- ```
74
-
75
- | Status | Meaning |
76
- |---|---|
77
- | `active` | Agent is working. Green indicator. |
78
- | `inactive` | No heartbeat in over an hour. Yellow indicator. |
79
- | `closed` | Session ended. Grey indicator. Can be reopened. |
80
-
81
- ## Session Tools
82
-
83
- | Tool | Purpose |
84
- |---|---|
85
- | `synapse_list_sessions` | List sessions for the current agent. |
86
- | `synapse_get_session` | Read one session's details. |
87
- | `synapse_create_session` | Create a named session — usually only needed for direct (non-sub-agent) work. |
88
- | `synapse_close_session` | Close a session. |
89
- | `synapse_reopen_session` | Reopen a closed session instead of creating a duplicate with the same name. |
90
- | `synapse_session_heartbeat` | Keep a session active. Hooks already send heartbeats automatically. |
91
-
92
- ## Running Multiple Experiments In Parallel
93
-
94
- When the main agent needs to execute several `pending_start` experiments concurrently, it should **orchestrate, not execute**. The plugin does the heavy lifting for session bookkeeping; the main agent only needs to spawn sub-agents and monitor.
95
-
96
- ### Main agent: dispatch
97
-
98
- ```text
99
- # 1. Refresh and list what needs to run
100
- synapse_checkin()
101
- synapse_get_assigned_experiments({ researchProjectUuid, statuses: ["pending_start"] })
102
-
103
- # 2. Inspect each candidate
104
- synapse_get_experiment({ experimentUuid })
105
-
106
- # 3. For each experiment, spawn a Task sub-agent with the experiment UUID in the prompt.
107
- # The SubagentStart hook auto-creates/reuses a Synapse session and injects the
108
- # execution workflow. The main agent does not need to call synapse_create_session.
109
- Task({
110
- subagent_type: "general-purpose",
111
- name: "training-worker-<short>",
112
- prompt: "Your Synapse experiment UUID: <experiment-uuid>. Run the experiment end to end."
113
- })
114
- ```
115
-
116
- ### Sub-agent: execute
117
-
118
- Each sub-agent follows the full execution checklist in **[experiments](../experiments/SKILL.md)**: `synapse_start_experiment` → `synapse_list_compute_nodes` / `synapse_reserve_gpus` → `synapse_get_node_access_bundle` → run remotely (tmux + unbuffered) → `synapse_report_experiment_progress` at milestones → `synapse_submit_experiment_results` → optional `synapse_save_experiment_report`.
119
-
120
- ### Main agent: monitor
121
-
122
- The main agent polls for completion rather than blocking on any one sub-agent:
123
-
124
- ```text
125
- synapse_get_assigned_experiments({
126
- researchProjectUuid,
127
- statuses: ["in_progress", "completed"]
128
- })
129
-
130
- # For any experiment still in_progress, read its latest state
131
- synapse_get_experiment({ experimentUuid })
132
-
133
- # Once all have completed, synthesize / propose follow-ups
134
- synapse_propose_experiment({ researchProjectUuid, title, description })
135
- ```
136
-
137
- ### Sequential multi-experiment sub-agent
138
-
139
- A single sub-agent can also handle multiple experiments in order when dependencies matter:
140
-
141
- ```text
142
- Task({
143
- subagent_type: "general-purpose",
144
- name: "sequential-worker",
145
- prompt: """
146
- Synapse experiments, in order (each depends on the previous):
147
- 1. <experiment-uuid-1> — baseline evaluation
148
- 2. <experiment-uuid-2> — ablation built on #1's results
149
-
150
- For each: start_experiment → run → report_progress → submit_results.
151
- """
152
- })
153
- ```
154
-
155
- ## Project-Level MCP For Sub-Agents
156
-
157
- Sub-agents only inherit Synapse MCP access if the MCP server is configured at the project level. Put the config in `.mcp.json` at the project root (the plugin bundle ships the template at `public/synapse-plugin/.mcp.json`). User-level-only MCP configs will not reach sub-agents.
158
-
159
- ## Troubleshooting
160
-
161
- | Symptom | Likely cause / fix |
162
- |---|---|
163
- | Sub-agent cannot see Synapse tools | MCP is user-level only. Move `.mcp.json` to the project root. |
164
- | Sub-agent session shown as `inactive` | Heartbeat has not fired for 1 h. Usually the sub-agent crashed; respawn with the same name — `SubagentStart` will reopen the existing session instead of making a duplicate. |
165
- | Duplicate sessions appear with similar names | A previous sub-agent stopped without the `SubagentStop` hook firing (hard crash). Close stale sessions with `synapse_close_session`, then respawn. |
166
- | Main agent did not receive checkin context | `SessionStart` hook failed (check `SYNAPSE_URL`, `SYNAPSE_API_KEY`). Call `synapse_checkin()` manually to recover. |
167
- | Experiment stuck in `in_progress` | The sub-agent died before `synapse_submit_experiment_results`. Either resume by respawning the sub-agent with the same experiment UUID, or the main agent calls `synapse_report_experiment_progress` and then `synapse_submit_experiment_results({ outcome: "failure", experimentResults: { error: "..." } })` to close it out. |
168
-
169
- ## Reference
170
-
171
- - **[Session and sub-agent reference](../synapse/references/05-session-sub-agent.md)**
172
- - **[Experiments skill](../experiments/SKILL.md)**
173
- - **[Autonomy skill](../autonomy/SKILL.md)**
174
- - **[Common tools](../synapse/references/00-common-tools.md)**
@@ -1,73 +0,0 @@
1
- ---
2
- name: setup
3
- description: Configure Synapse MCP access for Claude Code with project-level .mcp.json and verify the connection.
4
- license: AGPL-3.0
5
- metadata:
6
- author: Vincentwei1021
7
- version: "0.6.1"
8
- category: research
9
- mcp_server: synapse
10
- ---
11
-
12
- # Setup Skill
13
-
14
- Use this skill when the task is about getting Synapse connected inside Claude Code: API keys, MCP configuration, project-level `.mcp.json`, or connection debugging.
15
-
16
- ## Scope
17
-
18
- This skill covers:
19
- - creating or locating a Synapse API key
20
- - configuring MCP with `SYNAPSE_URL` and `SYNAPSE_API_KEY`
21
- - preferring project-level `.mcp.json` so sub-agents inherit access
22
- - verifying access with `synapse_checkin()`
23
-
24
- This skill does not cover day-to-day research or experiment execution. Hand off to:
25
- - **[research](../research/SKILL.md)** for literature and research-question work
26
- - **[experiments](../experiments/SKILL.md)** for experiment planning and execution
27
- - **[sessions](../sessions/SKILL.md)** for plugin hook behavior and multi-agent parallel execution
28
- - **[autonomy](../autonomy/SKILL.md)** to drive the CC-client autonomous research loop
29
-
30
- ## Recommended Flow
31
-
32
- 1. Get an API key from the Synapse **Agents** page.
33
- 2. Put Synapse MCP config at project level in `.mcp.json`.
34
- 3. Restart Claude Code if needed.
35
- 4. Call `synapse_checkin()` and confirm expected roles/tools are visible.
36
-
37
- ## Project-Level MCP Template
38
-
39
- The plugin ships a project-level template at `public/synapse-plugin/.mcp.json`. The expected content is:
40
-
41
- ```json
42
- {
43
- "mcpServers": {
44
- "synapse": {
45
- "type": "http",
46
- "url": "${SYNAPSE_URL}/api/mcp",
47
- "headers": {
48
- "Authorization": "Bearer ${SYNAPSE_API_KEY}"
49
- }
50
- }
51
- }
52
- }
53
- ```
54
-
55
- ## Verification
56
-
57
- Use:
58
-
59
- ```text
60
- synapse_checkin()
61
- ```
62
-
63
- If the connection is wrong, check:
64
- - the key starts with `syn_`
65
- - `SYNAPSE_URL` is reachable
66
- - Claude Code has reloaded the MCP config
67
- - the agent has the roles needed for the tools you expect to use
68
-
69
- ## Reference
70
-
71
- - **[Synapse overview](../synapse/SKILL.md)**
72
- - **[Setup reference](../synapse/references/01-setup.md)**
73
- - **[Common tools](../synapse/references/00-common-tools.md)**