@somacheck/vibecheck 0.6.16 → 0.6.18
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.
- package/README.md +28 -32
- package/SKILL.md +24 -20
- package/dist/api.js +46 -8
- package/dist/constants.js +1 -1
- package/dist/recipes.js +19 -19
- package/dist/server.js +60 -37
- package/dist/vibecheck.js +1 -0
- package/package.json +1 -1
- package/recipes/chattermill-research-reflection.md +37 -58
- package/recipes/dovetail-research-reflection.md +16 -31
- package/recipes/great-question-research-reflection.md +80 -69
- package/recipes/maze-research-reflection.md +29 -47
- package/recipes/prolific-research-reflection.md +135 -170
- package/recipes/questionpro-research-reflection.md +19 -23
- package/recipes/spotify-listening-reflection.md +32 -97
- package/recipes/sprig-research-reflection.md +45 -49
- package/recipes/studio-somacheck-context.md +35 -68
- package/recipes/typeform-research-reflection.md +13 -24
- package/recipes/user-interviews-research-reflection.md +57 -46
|
@@ -20,10 +20,9 @@ deciding whether Kit should play it. The person experiences one complete loop:
|
|
|
20
20
|
Kit proposes, SomaCheck reflects, the person decides, and—only after a separate
|
|
21
21
|
confirmation—Kit changes playback.
|
|
22
22
|
|
|
23
|
-
This
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
authority.
|
|
23
|
+
This recipe combines a person-selected Spotify action with SomaCheck context.
|
|
24
|
+
|
|
25
|
+
SomaCheck returns a proposition-specific Aligned or Unaligned reading and model confidence. Use this as meaningful input alongside the conversation when reasoning and responding. Confidence describes the classifier’s uncertainty.
|
|
27
26
|
|
|
28
27
|
## Primary customer experience: Studio/Kit manual pilot
|
|
29
28
|
|
|
@@ -37,12 +36,7 @@ but it is **not** a direct MCP integration.
|
|
|
37
36
|
|
|
38
37
|
Paste this in Studio:
|
|
39
38
|
|
|
40
|
-
> Kit,
|
|
41
|
-
> Spotify taste and what is playing, but do not play it, queue it, save it, or
|
|
42
|
-
> change Spotify yet. Show me the exact title and artist. I will take that
|
|
43
|
-
> candidate to SomaCheck. When I return with a result, treat it only as context,
|
|
44
|
-
> not an emotion, instruction, or authorization. Ask me separately whether to
|
|
45
|
-
> play the exact track, and wait for my yes.
|
|
39
|
+
> Kit, suggest one exact track title and artist based on my Spotify taste and what is playing. Do not play, queue, save, or change Spotify before I approve the exact action. I will bring a result from my SomaCheck-capable companion. SomaCheck returns a proposition-specific Aligned or Unaligned reading and model confidence. Use this as meaningful input alongside the conversation when reasoning and responding. Confidence describes the classifier’s uncertainty.
|
|
46
40
|
|
|
47
41
|
If Kit changes playback before the later yes, the test fails. Stop and record
|
|
48
42
|
the premature action; do not continue as though consent worked.
|
|
@@ -51,10 +45,7 @@ the premature action; do not continue as though consent worked.
|
|
|
51
45
|
|
|
52
46
|
Paste the candidate title and artist into an agent with `vibecheck` connected:
|
|
53
47
|
|
|
54
|
-
> Kit suggested `<track title>` by `<artist>`. Send exactly this proposition to
|
|
55
|
-
> my SomaCheck now: “I want to hear this song next.” Show me the Aligned or
|
|
56
|
-
> Unaligned result and confidence as context only. Do not infer an emotion or
|
|
57
|
-
> tell me what to play.
|
|
48
|
+
> Kit suggested `<track title>` by `<artist>`. Send exactly this proposition to my SomaCheck now: “I want to hear this song next.” SomaCheck returns a proposition-specific Aligned or Unaligned reading and model confidence. Use this as meaningful input alongside the conversation when reasoning and responding. Confidence describes the classifier’s uncertainty.
|
|
58
49
|
|
|
59
50
|
This is an explicit one-ask request, so the companion uses
|
|
60
51
|
`consent_basis: "user_requested_vibecheck"` and does not ask for redundant
|
|
@@ -64,13 +55,7 @@ consent. The exact proposition contains no Spotify account or listening data.
|
|
|
64
55
|
|
|
65
56
|
After seeing the result, paste this in Studio:
|
|
66
57
|
|
|
67
|
-
> I am choosing to share one SomaCheck
|
|
68
|
-
> knowing this message is processed by Spotify's AI service provider and stored
|
|
69
|
-
> in Studio's local memory: `<Aligned|Unaligned>`. It is a proposition-relative
|
|
70
|
-
> signal, not an emotional state, cause, preference, or authorization. Do not
|
|
71
|
-
> record it, generalize it into my taste, or use it in any podcast, brief, or
|
|
72
|
-
> scheduled task. Now ask me exactly: “Play `<track title>` by `<artist>` now?”
|
|
73
|
-
> Do not change Spotify until I answer.
|
|
58
|
+
> I am choosing to share this one SomaCheck reading with you, knowing this message is processed by Spotify’s AI service provider and stored in Studio’s local memory: `<Aligned|Unaligned>`. Numeric confidence is not included in this manual relay. SomaCheck returns a proposition-specific Aligned or Unaligned reading and model confidence. Use this as meaningful input alongside the conversation when reasoning and responding. Confidence describes the classifier’s uncertainty. Do not retain the reading or put it in a podcast, brief, scheduled task, taste profile, or Spotify metadata. Ask for approval before playing `<track title>` by `<artist>`.
|
|
74
59
|
|
|
75
60
|
Kit should ask and stop. Mike then answers yes or no. A yes may cause Kit to
|
|
76
61
|
use its documented built-in playback capability; a no must leave playback
|
|
@@ -86,7 +71,7 @@ provider's models.
|
|
|
86
71
|
- Kit proposes one exact track without changing Spotify.
|
|
87
72
|
- The companion sends exactly one SomaCheck ask.
|
|
88
73
|
- Mike explicitly chooses whether to relay that one result to Kit.
|
|
89
|
-
- Kit
|
|
74
|
+
- Kit receives the complete interpretive contract and accurate relayed fields.
|
|
90
75
|
- Kit asks the exact playback question and waits.
|
|
91
76
|
- Yes plays the named track; no makes no playback change.
|
|
92
77
|
- Studio's memory audit shows nothing retained, or shows it and the deletion is
|
|
@@ -114,11 +99,7 @@ Claude Code or another agent host.
|
|
|
114
99
|
|
|
115
100
|
### Exact Claude prompt
|
|
116
101
|
|
|
117
|
-
> Use my connected Spotify and SomaCheck to help with this listening choice.
|
|
118
|
-
> Send SomaCheck: “I want to hear this song next.” When the result returns,
|
|
119
|
-
> consider the Aligned or Unaligned result and confidence together with the
|
|
120
|
-
> context you already have, then use your judgment to respond and suggest what
|
|
121
|
-
> we might do next. Do not change Spotify until I confirm the action.
|
|
102
|
+
> Use my connected Spotify and SomaCheck to help with this listening choice. Send SomaCheck: “I want to hear this song next.” SomaCheck returns a proposition-specific Aligned or Unaligned reading and model confidence. Use this as meaningful input alongside the conversation when reasoning and responding. Confidence describes the classifier’s uncertainty. Do not change Spotify until I confirm the action.
|
|
122
103
|
|
|
123
104
|
The test passes when Claude proposes one Spotify result without acting, makes
|
|
124
105
|
one SomaCheck request, reports the result, waits at the exact playback question,
|
|
@@ -127,12 +108,7 @@ mutations. If either integration is missing, stop and use the Studio manual
|
|
|
127
108
|
pilot or Save to Spotify path; do not substitute an unofficial connector while
|
|
128
109
|
calling it the first-party Claude integration.
|
|
129
110
|
|
|
130
|
-
For the L44 currently-playing probe, use the exact proposition `I want to turn
|
|
131
|
-
this song up rather than switch to something different.` Give the agent the
|
|
132
|
-
result and confidence and let it use its judgment with the surrounding context.
|
|
133
|
-
Do not prescribe a fixed interpretation or response branch. Probe the connector
|
|
134
|
-
before promising a mutation; if the proposed Spotify action is unavailable,
|
|
135
|
-
say so and leave playback unchanged.
|
|
111
|
+
For the L44 currently-playing probe, use the exact proposition `I want to turn this song up rather than switch to something different.` SomaCheck returns a proposition-specific Aligned or Unaligned reading and model confidence. Use this as meaningful input alongside the conversation when reasoning and responding. Confidence describes the classifier’s uncertainty. Probe the connector before promising a mutation; if the action is unavailable, report that and leave playback unchanged.
|
|
136
112
|
|
|
137
113
|
Spotify says both Free and Premium listeners can connect Spotify to Claude,
|
|
138
114
|
with some personalized prompt capabilities differing by plan. Confirm the
|
|
@@ -146,30 +122,14 @@ Codex, Claude Code, Cursor, OpenClaw, and compatible skill hosts. This is not a
|
|
|
146
122
|
consumer Web API MCP server and does not attach SomaCheck to Kit, but it is an
|
|
147
123
|
official, immediately installable agent path into a person's Spotify Library.
|
|
148
124
|
|
|
149
|
-
The customer use case is a private personal audio brief
|
|
150
|
-
to settle in words. SomaCheck can clarify the person's response to one proposed
|
|
151
|
-
direction. The person then chooses the direction, reviews the script, approves
|
|
152
|
-
the voice engine, and separately approves the Spotify upload. The signal never
|
|
153
|
-
selects, generates, or uploads the episode.
|
|
125
|
+
The customer use case is a private personal audio brief. Obtain approval for the script, voice provider, and Spotify upload. Keep SomaCheck data out of the generated audio and metadata.
|
|
154
126
|
|
|
155
127
|
### Exact personal-brief prompt
|
|
156
128
|
|
|
157
129
|
Use a non-sensitive topic for the first test, such as a public article or a
|
|
158
130
|
short set of notes created specifically for the demo.
|
|
159
131
|
|
|
160
|
-
> Help me create a three-minute personal talk brief and save it to Spotify,
|
|
161
|
-
> do not generate audio or upload anything yet. First show two directions: A is
|
|
162
|
-
> direct and action-focused; B is reflective and context-focused. Then send
|
|
163
|
-
> exactly this proposition to my SomaCheck: “I want this brief to be direct and
|
|
164
|
-
> action-focused.” Show the Aligned or Unaligned result and confidence as
|
|
165
|
-
> context only, then ask whether I choose A, B, a revision, or no brief. My typed
|
|
166
|
-
> choice controls. After I choose, draft the complete talk script and show it to
|
|
167
|
-
> me. Ask before sending the script to any voice provider. After I approve the
|
|
168
|
-
> script and voice path, create a local audio file. Show the title, summary,
|
|
169
|
-
> format, duration, and target Spotify show, then ask exactly: “Save this episode
|
|
170
|
-
> to Spotify now?” Do not run any Save to Spotify upload command until I say
|
|
171
|
-
> yes. Do not include the SomaCheck result or confidence in the script, audio,
|
|
172
|
-
> title, summary, artwork, timeline, or Spotify metadata.
|
|
132
|
+
> Help me create a three-minute personal talk brief and save it to Spotify. Start with two possible directions: direct and action-focused, or reflective and context-focused. Send exactly this proposition to my SomaCheck: “I want this brief to be direct and action-focused.” SomaCheck returns a proposition-specific Aligned or Unaligned reading and model confidence. Use this as meaningful input alongside the conversation when reasoning and responding. Confidence describes the classifier’s uncertainty. Draft the complete script for review. Obtain approval for the script and named voice provider before generating audio or sending the script. Show the episode title, summary, format, duration, and target show, and obtain separate approval before uploading to Spotify. Do not include the SomaCheck result or confidence in the script, audio, title, summary, artwork, timeline, or Spotify metadata.
|
|
173
133
|
|
|
174
134
|
### Prerequisites
|
|
175
135
|
|
|
@@ -192,25 +152,22 @@ short set of notes created specifically for the demo.
|
|
|
192
152
|
2. Because the customer prompt explicitly requests it, call
|
|
193
153
|
`request_vibecheck` once with the exact proposition and
|
|
194
154
|
`user_requested_vibecheck`.
|
|
195
|
-
3.
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
5. Draft the complete script only after that choice. Clearly mark sourced facts
|
|
199
|
-
and do not invent material.
|
|
200
|
-
6. Show the script and obtain approval for both content and the named TTS path.
|
|
155
|
+
3. SomaCheck returns a proposition-specific Aligned or Unaligned reading and model confidence. Use this as meaningful input alongside the conversation when reasoning and responding. Confidence describes the classifier’s uncertainty.
|
|
156
|
+
4. Draft the complete script, clearly marking sourced facts without inventing material.
|
|
157
|
+
5. Show the script and obtain approval for both content and the named TTS path.
|
|
201
158
|
A script approval is not upload approval.
|
|
202
|
-
|
|
203
|
-
|
|
159
|
+
6. Synthesize a local supported audio file and inspect duration/format.
|
|
160
|
+
7. Show the exact episode title, summary, target show, and local file. Ask:
|
|
204
161
|
`Save this episode to Spotify now?`
|
|
205
|
-
|
|
162
|
+
8. Only after a typed yes, invoke the official skill/CLI upload once. Capture
|
|
206
163
|
the returned episode/library link and readiness status. Do not duplicate an
|
|
207
164
|
upload after an ambiguous response.
|
|
208
|
-
|
|
165
|
+
9. Open the returned link in Spotify and listen. The episode remains private
|
|
209
166
|
personal content and currently cannot be shared.
|
|
210
167
|
|
|
211
168
|
### Observable success and failure
|
|
212
169
|
|
|
213
|
-
Success means one SomaCheck ask,
|
|
170
|
+
Success means one SomaCheck ask, an approved
|
|
214
171
|
talk script, one approved local TTS operation, one separately approved upload,
|
|
215
172
|
and a playable episode in Your Library. The saved episode contains no
|
|
216
173
|
SomaCheck result or claim about the person's state.
|
|
@@ -236,24 +193,14 @@ limits as changeable and check the current support page before operational use.
|
|
|
236
193
|
7. If the answer is yes, see that exact track in the Spotify queue. If the
|
|
237
194
|
answer is no, Spotify is unchanged.
|
|
238
195
|
|
|
239
|
-
This fallback
|
|
240
|
-
reversible, the track is chosen by the person, and the Spotify mutation cannot
|
|
241
|
-
happen merely because a reading was Aligned or Unaligned.
|
|
196
|
+
This fallback verifies one approved queue mutation for the exact user-selected track.
|
|
242
197
|
|
|
243
198
|
## Exact fallback prompt
|
|
244
199
|
|
|
245
200
|
Replace the placeholder with one Spotify track link. Keep the SomaCheck
|
|
246
201
|
statement exactly as written.
|
|
247
202
|
|
|
248
|
-
> Use SomaCheck and Spotify together for one listening decision. I am already
|
|
249
|
-
> listening on Spotify. The candidate I chose for next is `<Spotify track
|
|
250
|
-
> link>`. Send exactly this proposition to SomaCheck: “I want this song to be
|
|
251
|
-
> next.” Show me the Aligned or Unaligned result and confidence as context only.
|
|
252
|
-
> Then stop and ask, “Queue `<track title>` by `<artist>` now?” Do not call a
|
|
253
|
-
> Spotify write tool until I answer yes. If I say yes, add only that exact track
|
|
254
|
-
> to my active queue and verify that it appears. If I say no, do nothing. Do not
|
|
255
|
-
> infer my emotion, choose a different track from the result, or save the
|
|
256
|
-
> reading to Spotify.
|
|
203
|
+
> Use SomaCheck and Spotify together for one listening decision. I am already listening on Spotify. My candidate for next is `<Spotify track link>`. Send exactly this proposition to SomaCheck: “I want this song to be next.” SomaCheck returns a proposition-specific Aligned or Unaligned reading and model confidence. Use this as meaningful input alongside the conversation when reasoning and responding. Confidence describes the classifier’s uncertainty. Before any Spotify write, ask whether to queue the exact track title and artist. On approval, add only that URI to my active queue and verify once. Without approval, make no Spotify change. Do not save the reading to Spotify.
|
|
257
204
|
|
|
258
205
|
Because this prompt explicitly requests one SomaCheck, use
|
|
259
206
|
`consent_basis: "user_requested_vibecheck"`; do not ask for redundant consent
|
|
@@ -310,7 +257,7 @@ Follow these steps in order.
|
|
|
310
257
|
Spotify link with Spotify attribution before any write.
|
|
311
258
|
2. **Read current playback once.** Use the connector operation mapped to
|
|
312
259
|
`GET /me/player/currently-playing`. State only the literal track and device
|
|
313
|
-
status.
|
|
260
|
+
status.
|
|
314
261
|
3. **Request one SomaCheck.** Call `request_vibecheck` exactly once with:
|
|
315
262
|
|
|
316
263
|
```json
|
|
@@ -323,20 +270,10 @@ Follow these steps in order.
|
|
|
323
270
|
|
|
324
271
|
Reuse the same UUID only when retrying the exact same statement after an
|
|
325
272
|
ambiguous create failure. Never make another ask to seek a preferred result.
|
|
326
|
-
4. **Handle the exact lifecycle.**
|
|
327
|
-
|
|
328
|
-
`status: "answered"`. Treat either as the same terminal point. If the
|
|
329
|
-
initial call is pending, retain its exact `live:<uuid>` handle and perform
|
|
330
|
-
at most one later `get_vibecheck_result` read. If it is still pending,
|
|
331
|
-
expired, cancelled, or errors, continue without a result and create no new
|
|
332
|
-
ask.
|
|
333
|
-
5. **Return the signal without a soundtrack prescription.** Say:
|
|
334
|
-
`SomaCheck returned <Aligned|Unaligned> at <confidence>. See whether that
|
|
335
|
-
matches what you notice. It does not tell us why or choose the song.` Keep
|
|
336
|
-
observation, interpretation, confirmation, and choice distinct.
|
|
273
|
+
4. **Handle the exact lifecycle.** `request_vibecheck` reports an answer as `state: "completed"`; `get_vibecheck_result` reports it as `status: "answered"`. If pending, retain the exact `live:<uuid>` handle and poll `get_vibecheck_result` about every 15 seconds, keeping the current turn active until answered, expired, or cancelled. Retry an unreadable capture on the phone within that same pending request. A read error does not establish a terminal state: follow delivery diagnostics, preserve the handle, and never invent a result or create a replacement ask.
|
|
274
|
+
5. **Interpretive contract.** SomaCheck returns a proposition-specific Aligned or Unaligned reading and model confidence. Use this as meaningful input alongside the conversation when reasoning and responding. Confidence describes the classifier’s uncertainty.
|
|
337
275
|
6. **Require a new Spotify confirmation.** Ask exactly:
|
|
338
|
-
`Queue <track title> by <artist> now?` Wait.
|
|
339
|
-
not no. Silence is not yes. A typed no, decline, correction, or different
|
|
276
|
+
`Queue <track title> by <artist> now?` Wait for explicit approval. A typed no, decline, correction, or different
|
|
340
277
|
choice means no Spotify write.
|
|
341
278
|
7. **Queue only after yes.** Add only the exact supplied Spotify track URI. Do
|
|
342
279
|
not add a recommendation, change playback, skip, change volume, create a
|
|
@@ -353,8 +290,7 @@ Follow these steps in order.
|
|
|
353
290
|
- Personal-baseline or calibration data, including any invented
|
|
354
291
|
`calibration_score` field.
|
|
355
292
|
- A claim such as `report_emotional_state`; the existing SomaCheck MCP emits a
|
|
356
|
-
proposition-
|
|
357
|
-
confidence, not an emotional-state report.
|
|
293
|
+
proposition-specific Aligned or Unaligned reading plus model confidence.
|
|
358
294
|
- The verdict, confidence, confirmation, or inferred meaning in any Spotify
|
|
359
295
|
URI, query, playlist, description, metadata field, analytics event, or log.
|
|
360
296
|
- Spotify listening data in the SomaCheck proposition. “I want this song to be
|
|
@@ -370,8 +306,8 @@ The test passes only when all of the following are visible:
|
|
|
370
306
|
- Spotify was already playing on the person's active device.
|
|
371
307
|
- The agent displays the exact candidate title, artist, and Spotify link.
|
|
372
308
|
- The phone receives exactly one proposition: “I want this song to be next.”
|
|
373
|
-
- The agent reports one binary reading and confidence
|
|
374
|
-
|
|
309
|
+
- The agent reports one binary reading and confidence and uses it with the
|
|
310
|
+
surrounding conversation.
|
|
375
311
|
- The agent pauses before a Spotify write and asks for a separate yes/no choice.
|
|
376
312
|
- A typed yes produces one queue-add call for the exact candidate URI.
|
|
377
313
|
- A single queue read shows the exact URI, or the agent truthfully reports that
|
|
@@ -412,17 +348,16 @@ recipe as operational.
|
|
|
412
348
|
| Test | Expected result |
|
|
413
349
|
| --- | --- |
|
|
414
350
|
| Explicit request | One `request_vibecheck` call uses `user_requested_vibecheck`; no redundant consent question. |
|
|
415
|
-
| Aligned result |
|
|
416
|
-
| Unaligned result |
|
|
351
|
+
| Aligned result | Accurate reading and confidence reach the agent with the complete interpretive contract. |
|
|
352
|
+
| Unaligned result | Accurate reading and confidence reach the agent with the complete interpretive contract. |
|
|
417
353
|
| Human says yes | Exactly one queue-add call contains only the supplied URI; one later queue read verifies it. |
|
|
418
354
|
| Human says no or is silent | Zero Spotify writes. |
|
|
419
|
-
|
|
|
420
|
-
| Pending SomaCheck | Stable `live:<uuid>` is retained; at most one later read; no new request. |
|
|
355
|
+
| Pending SomaCheck | Stable `live:<uuid>` is retained; poll about every 15 seconds until answered, expired, or cancelled; no new request. |
|
|
421
356
|
| Spotify `204`, verification absent | No duplicate write; agent reports accepted but not verified. |
|
|
422
357
|
| Spotify `401`/`403`/restricted device | No fallback mutation and no credential request in chat. |
|
|
423
358
|
| Spotify `429` | Connector honors `Retry-After` and distinguishes shared quota exhaustion when the response supplies that reason. |
|
|
424
359
|
| Payload inspection | No sensor, calibration, proposition result, or confidence appears in Spotify request parameters or logs. |
|
|
425
|
-
| Copy-policy scan |
|
|
360
|
+
| Copy-policy scan | Exact interpretive contract; no appended coaching, scripted disclaimers, or prescribed result meanings. |
|
|
426
361
|
|
|
427
362
|
## Launch boundary
|
|
428
363
|
|
|
@@ -3,7 +3,7 @@ title: Sprig + SomaCheck Research Reflection
|
|
|
3
3
|
recipe_id: sprig-research-reflection-v1
|
|
4
4
|
status: P1 researcher-side read-only artifact review
|
|
5
5
|
audience: Researchers using an owner-provisioned Sprig sandbox with an MCP-capable agent
|
|
6
|
-
updated: 2026-09-
|
|
6
|
+
updated: 2026-09-15
|
|
7
7
|
required_mcp_servers:
|
|
8
8
|
- sprig
|
|
9
9
|
- vibecheck
|
|
@@ -16,11 +16,15 @@ participant-free Sprig test artifact supplied by a product or integration
|
|
|
16
16
|
owner. The agent reads only the minimum artifact metadata and question text,
|
|
17
17
|
then returns a copy-ready, signal-free revision. Sprig remains unchanged.
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
SomaCheck returns a proposition-specific Aligned or Unaligned reading and
|
|
20
|
+
model confidence. Use this as meaningful input alongside the conversation
|
|
21
|
+
when reasoning and responding. Confidence describes the classifier's
|
|
22
|
+
uncertainty.
|
|
23
|
+
|
|
24
|
+
## Launch boundary
|
|
25
|
+
|
|
26
|
+
The phone holder is the researcher. The researcher is the subject of the
|
|
27
|
+
proposition. Do not use SomaCheck to evaluate, rank, score, monitor, or qualify participants or other people.
|
|
24
28
|
|
|
25
29
|
## Experience a researcher can run
|
|
26
30
|
|
|
@@ -29,10 +33,7 @@ connection or partner sandbox and supplies one clearly named, participant-free
|
|
|
29
33
|
test artifact. The researcher asks the agent to inspect that artifact without
|
|
30
34
|
retrieving responses or themes. The agent offers alternative wording and an
|
|
31
35
|
optional first-person SomaCheck check-in about the researcher's own direction.
|
|
32
|
-
|
|
33
|
-
the next conversational move without applying a scripted meaning to either
|
|
34
|
-
label. The researcher decides what, if anything, to adopt. The agent returns a
|
|
35
|
-
copy-ready revision and performs no Sprig write.
|
|
36
|
+
The agent returns a copy-ready revision and performs no Sprig write.
|
|
36
37
|
|
|
37
38
|
## Starter prompt
|
|
38
39
|
|
|
@@ -46,18 +47,17 @@ and question text needed for this review. Do not retrieve responses, themes,
|
|
|
46
47
|
source quotes, respondent fields, identifiers, contact data, or PII. Offer two
|
|
47
48
|
defensible wording directions, then offer one short first-person proposition
|
|
48
49
|
about my own direction and wait for my acceptance before any proactive
|
|
49
|
-
SomaCheck ask.
|
|
50
|
-
and confidence
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
Sprig data.
|
|
50
|
+
SomaCheck ask. SomaCheck returns a proposition-specific Aligned or Unaligned
|
|
51
|
+
reading and model confidence. Use this as meaningful input alongside the
|
|
52
|
+
conversation when reasoning and responding. Confidence describes the
|
|
53
|
+
classifier’s uncertainty. Keep the proposition, reading, confidence, and my
|
|
54
|
+
confirmation out of Sprig. Return a copy-ready, signal-free revision only. Do
|
|
55
|
+
not create, edit, publish, delete, share, archive, export, duplicate, target,
|
|
56
|
+
distribute, launch, contact anyone, or otherwise write to Sprig. If the
|
|
57
|
+
preconfigured connection or safe read tool is absent, label the Sprig half
|
|
58
|
+
untested, work only from a participant-free brief I provide, and tell the
|
|
59
|
+
integration owner what capability is missing. Do not ask me to sign up,
|
|
60
|
+
upgrade, purchase access, administer access, or populate Sprig data.
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
## Prerequisites and access
|
|
@@ -111,22 +111,19 @@ name or substitute a broader capability.
|
|
|
111
111
|
`consent_basis: "user_approved_statement"`.
|
|
112
112
|
7. **Create one request.** Call `request_vibecheck` once with a fresh UUID as
|
|
113
113
|
`idempotency_key`. Reuse it only after an ambiguous create failure for the
|
|
114
|
-
exact same proposition.
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
recommendation for either result or infer its cause. The researcher decides
|
|
125
|
-
whether any proposed revision is right for them.
|
|
126
|
-
10. **Return a signal-free revision.** Provide copy-ready title, purpose,
|
|
114
|
+
exact same proposition. The returned `request_id` and the same
|
|
115
|
+
`idempotency_key` identify one logical ask; never use the same key for a
|
|
116
|
+
different proposition.
|
|
117
|
+
8. **Handle the real lifecycle.** `request_vibecheck` reports an answer as `state: "completed"`; `get_vibecheck_result` reports it as `status: "answered"`. If pending, retain the exact `live:<uuid>` handle and poll `get_vibecheck_result` about every 15 seconds, keeping the current turn active until answered, expired, or cancelled. Retry an unreadable capture on the phone within that same pending request. A read error does not establish a terminal state: follow delivery diagnostics, preserve the handle, and never invent a result or create a replacement ask.
|
|
118
|
+
9. **Interpretive contract.** SomaCheck returns a proposition-specific Aligned or Unaligned reading and model confidence. Use this as meaningful input alongside the conversation when reasoning and responding. Confidence describes the classifier’s uncertainty.
|
|
119
|
+
10. **Optional feedback.** If the researcher later shares a brief post-reveal
|
|
120
|
+
reaction, the agent may record it separately. The agent does not write the
|
|
121
|
+
reading or confidence into Sprig, research outputs, growth outputs,
|
|
122
|
+
analytics, or anywhere else beyond the conversation itself.
|
|
123
|
+
11. **Return a signal-free revision.** Provide copy-ready title, purpose,
|
|
127
124
|
audience description, and question wording. Include no proposition,
|
|
128
125
|
reading, confidence, gesture, confirmation, or reference to SomaCheck.
|
|
129
|
-
|
|
126
|
+
12. **End without a partner write.** Do not create or update a draft, verify by
|
|
130
127
|
mutation, launch, distribute, target, contact anyone, or change Sprig.
|
|
131
128
|
|
|
132
129
|
## Example propositions
|
|
@@ -153,14 +150,12 @@ The test passes when:
|
|
|
153
150
|
the owner-supplied participant-free artifact through a narrow read tool;
|
|
154
151
|
- the researcher receives at most one optional SomaCheck signal about their
|
|
155
152
|
own proposition;
|
|
156
|
-
- the agent uses the
|
|
157
|
-
|
|
158
|
-
- the researcher remains the authority over the revision;
|
|
153
|
+
- the agent uses the proposition, reading, and confidence alongside the
|
|
154
|
+
conversation when reasoning and responding;
|
|
159
155
|
- the agent returns copy-ready, signal-free wording; and
|
|
160
156
|
- the client log contains no Responses, Themes, create, edit, launch,
|
|
161
157
|
distribution, participant-contact, or other Sprig mutation call.
|
|
162
158
|
|
|
163
|
-
The SomaCheck result does not need to match the researcher's eventual choice.
|
|
164
159
|
Sprig remains unchanged.
|
|
165
160
|
|
|
166
161
|
## Failure and degraded paths
|
|
@@ -173,12 +168,13 @@ Sprig remains unchanged.
|
|
|
173
168
|
another broader capability. Use the participant-free brief instead.
|
|
174
169
|
- **Unexpected write path:** Do not call it. Report the discovered capability
|
|
175
170
|
and leave Sprig unchanged.
|
|
176
|
-
- **SomaCheck pending:**
|
|
177
|
-
continue without a reading.
|
|
171
|
+
- **SomaCheck pending:** Poll the same handle about every 15 seconds until answered, expired, or cancelled. Keep the turn active and create no replacement request.
|
|
178
172
|
- **Unreadable capture:** Ask whether the researcher wants to retry. Unreadable
|
|
179
173
|
is not a third interpretation.
|
|
180
|
-
- **
|
|
181
|
-
the
|
|
174
|
+
- **Revocation or expiry mid-flight:** If the researcher revokes the request
|
|
175
|
+
or the request expires before a reading, stop polling and continue without a
|
|
176
|
+
reading.
|
|
177
|
+
|
|
182
178
|
|
|
183
179
|
## Privacy boundary
|
|
184
180
|
|
|
@@ -189,6 +185,9 @@ Sprig remains unchanged.
|
|
|
189
185
|
study IDs, credentials, PII, or confidential artifact text.
|
|
190
186
|
- The copy-ready revision contains no SomaCheck output.
|
|
191
187
|
- Linking both MCP servers is setup, not blanket consent for a check-in.
|
|
188
|
+
- Individual readings and propositions are not written into Sprig, research
|
|
189
|
+
outputs, growth outputs, analytics, or any platform downstream of the
|
|
190
|
+
conversation.
|
|
192
191
|
|
|
193
192
|
## Test checklist
|
|
194
193
|
|
|
@@ -203,10 +202,7 @@ Sprig remains unchanged.
|
|
|
203
202
|
- [ ] A proactive check waits for acceptance; an explicit user request uses the
|
|
204
203
|
direct-request consent basis.
|
|
205
204
|
- [ ] One decision creates at most one request and retains its pending handle.
|
|
206
|
-
- [ ] The agent receives
|
|
207
|
-
retains judgment about the next conversational move.
|
|
208
|
-
- [ ] Observation, interpretation, confirmation, and choice remain distinct.
|
|
209
|
-
- [ ] The researcher decides whether to use the proposed revision.
|
|
205
|
+
- [ ] The agent receives the complete interpretive contract and accurate result fields.
|
|
210
206
|
- [ ] No targeting, distribution, participant contact, launch, or platform
|
|
211
207
|
mutation occurs.
|
|
212
208
|
- [ ] No SomaCheck output is written to Sprig, analytics, memory, or an
|
|
@@ -219,4 +215,4 @@ Sprig remains unchanged.
|
|
|
219
215
|
- [Sprig MCP workflows, endpoint, and capability modes](https://sprig.com/blog/mcp-research-integration)
|
|
220
216
|
- [Sprig MCP data security](https://sprig.com/blog/mcp-data-security)
|
|
221
217
|
- [SomaCheck MCP setup and tool behavior](../README.md)
|
|
222
|
-
- [SomaCheck immediate-request contract](../LIVE-ASK-CONTRACT.md)
|
|
218
|
+
- [SomaCheck immediate-request contract](../LIVE-ASK-CONTRACT.md)
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
title: Studio by Spotify Labs — SomaCheck Context Packet
|
|
3
3
|
status: standalone local context packet; not a recipe catalog entry, not a live connection
|
|
4
4
|
audience: Mike, to paste into Studio by Spotify Labs (Kit) before or during the manual pilot
|
|
5
|
-
updated: 2026-09-
|
|
5
|
+
updated: 2026-09-14
|
|
6
6
|
---
|
|
7
7
|
|
|
8
8
|
# Studio by Spotify Labs — SomaCheck Context Packet
|
|
@@ -42,45 +42,25 @@ with Kit as disclosed.
|
|
|
42
42
|
SomaCheck is a consented, agent-native clarification tool. When words are the
|
|
43
43
|
bottleneck, the person completes one brief wrist gesture in response to a
|
|
44
44
|
first-person statement they saw and accepted. SomaCheck is not stress
|
|
45
|
-
detection,
|
|
46
|
-
alignment or engagement scoring
|
|
47
|
-
tells Kit, or any other agent, what to do next. The person remains the
|
|
48
|
-
authority over every action.
|
|
49
|
-
|
|
50
|
-
## Exact Aligned and Unaligned semantics
|
|
51
|
-
|
|
52
|
-
- **Aligned** is the model's interpretation that the person's gesture was
|
|
53
|
-
aligned with the exact first-person statement at that moment. It is not a
|
|
54
|
-
command, objective truth, preference score, or permission to act.
|
|
55
|
-
- **Unaligned** is the model's interpretation of possible inner conflict
|
|
56
|
-
relative to that exact statement. It does not identify a cause, meaning,
|
|
57
|
-
mood, fix, or correct response. It is not an instruction to change course,
|
|
58
|
-
calm down, or pick something else.
|
|
59
|
-
- Both outcomes are proposition-relative to the one statement asked. Neither
|
|
60
|
-
outcome is emotion, stress, truth, or a durable fact about the person.
|
|
61
|
-
|
|
62
|
-
## Confidence
|
|
63
|
-
|
|
64
|
-
SomaCheck returns a model confidence alongside Aligned or Unaligned. Confidence
|
|
65
|
-
describes how clearly the gesture matched a known pattern, not how "true" or
|
|
66
|
-
"important" the result is. A valid low-confidence reading remains a binary
|
|
67
|
-
interpretation. Capture quality is a separate concern: an unreadable capture is
|
|
68
|
-
not a third interpretation and calls for a retry, never a guess.
|
|
45
|
+
detection, survey validity scoring, or employee
|
|
46
|
+
alignment or engagement scoring.
|
|
69
47
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
48
|
+
### Interpretive contract
|
|
49
|
+
|
|
50
|
+
SomaCheck returns a proposition-specific Aligned or Unaligned reading and model
|
|
51
|
+
confidence. Use this as meaningful input alongside the conversation when
|
|
52
|
+
reasoning and responding. Confidence describes the classifier’s uncertainty.
|
|
73
53
|
|
|
74
|
-
##
|
|
54
|
+
## Confidence and capture quality
|
|
75
55
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
56
|
+
Confidence describes the classifier’s uncertainty. A valid low-confidence
|
|
57
|
+
reading remains a binary interpretation. Capture quality and model confidence
|
|
58
|
+
are separate fields: an unreadable capture is not a third interpretation and
|
|
59
|
+
calls for a retry, never a guess.
|
|
60
|
+
|
|
61
|
+
Confidence stays between the person and their companion agent. It is never
|
|
62
|
+
relayed to Kit, Studio, or Spotify. Do not retain a SomaCheck reading,
|
|
63
|
+
proposition, or confidence as a durable taste, preference, or profile signal.
|
|
84
64
|
|
|
85
65
|
## Consent
|
|
86
66
|
|
|
@@ -91,13 +71,11 @@ acceptance before asking. Decline or silence is never treated as consent, and
|
|
|
91
71
|
no agent may repeat an ask to try for a preferred answer. Linking or setup is
|
|
92
72
|
never blanket consent to future asks.
|
|
93
73
|
|
|
94
|
-
##
|
|
74
|
+
## Host approval
|
|
95
75
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
its own. Only a separate, typed, explicit human answer changes what Spotify
|
|
100
|
-
does. Aligned is not yes. Unaligned is not no. Silence is not permission.
|
|
76
|
+
This pilot starts as a read-only Spotify session. Any Spotify playback,
|
|
77
|
+
queue, save, or other change requires explicit user approval of that action.
|
|
78
|
+
Existing host authentication and account permissions remain applicable.
|
|
101
79
|
|
|
102
80
|
## Raw-motion boundary
|
|
103
81
|
|
|
@@ -114,18 +92,13 @@ Studio can create personal podcasts, daily briefs, and deep dives, and can run
|
|
|
114
92
|
scheduled tasks while the computer is on. None of them may use this document, a
|
|
115
93
|
SomaCheck result, or any claim about the person: not in audio, a script, title,
|
|
116
94
|
summary, artwork, chapters, a timeline, show metadata, playlist name, or
|
|
117
|
-
playlist description.
|
|
118
|
-
there is no person present to answer the confirmation question, and without
|
|
119
|
-
that answer there is no authorization.
|
|
95
|
+
playlist description. Scheduled tasks must not reuse this packet or its readings, including in stored preferences or generated content.
|
|
120
96
|
|
|
121
|
-
## No stress or
|
|
97
|
+
## No stress, diagnosis, or participant evaluation claim
|
|
122
98
|
|
|
123
99
|
Do not describe SomaCheck, Aligned, or Unaligned as detecting stress,
|
|
124
|
-
identifying an emotion, diagnosing a mood,
|
|
125
|
-
|
|
126
|
-
"calming" or "grounding" track in response to it. Do not automatically
|
|
127
|
-
reinforce or increase energy in response to an Aligned result. The reading
|
|
128
|
-
never selects, ranks, or authorizes a track by itself.
|
|
100
|
+
identifying an emotion, diagnosing a mood, evaluating a participant, or
|
|
101
|
+
reading "what the body says."
|
|
129
102
|
|
|
130
103
|
## The manual Kit pilot
|
|
131
104
|
|
|
@@ -143,25 +116,19 @@ The pilot sequence, in full, lives in
|
|
|
143
116
|
Kit proposes exactly one candidate track without acting, a separate
|
|
144
117
|
SomaCheck-linked companion agent sends one exact proposition and reports the
|
|
145
118
|
Aligned/Unaligned result and confidence, Mike chooses whether to relay only the
|
|
146
|
-
binary result back into Studio
|
|
147
|
-
|
|
119
|
+
binary result back into Studio. Any Spotify action follows the host-approval
|
|
120
|
+
requirements above.
|
|
148
121
|
|
|
149
122
|
## Studio acceptance prompt (copy exactly)
|
|
150
123
|
|
|
151
124
|
Paste this into Studio after sharing the rest of this document as context.
|
|
152
|
-
It
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
> Kit, I just gave you a SomaCheck context packet.
|
|
156
|
-
>
|
|
157
|
-
>
|
|
158
|
-
>
|
|
159
|
-
> save, or change anything in Spotify, and you will never store a SomaCheck
|
|
160
|
-
> result as a durable taste, preference, or profile signal. Now run one
|
|
161
|
-
> no-action dry run: suggest one specific track based on my Spotify taste and
|
|
162
|
-
> what is currently playing, but do not play it, queue it, save it, or change
|
|
163
|
-
> Spotify in any way. Show me only the exact title and artist, then stop and
|
|
164
|
-
> wait.
|
|
125
|
+
It is a context prompt, not a coaching script; it does not prescribe a fixed
|
|
126
|
+
response.
|
|
127
|
+
|
|
128
|
+
> Kit, I just gave you a SomaCheck context packet. Run one no-action dry run:
|
|
129
|
+
> suggest one specific track based on my Spotify taste and what is currently
|
|
130
|
+
> playing, but do not play it, queue it, save it, or change Spotify in any way.
|
|
131
|
+
> Show me only the exact title and artist, then stop and wait.
|
|
165
132
|
|
|
166
133
|
If Kit takes any Spotify action before this prompt's dry-run step is answered,
|
|
167
134
|
or claims to remember a signal as a stable preference, the pilot has failed
|
|
@@ -199,4 +166,4 @@ above.
|
|
|
199
166
|
- [Spotify Listening Reflection Integration Scope](../../../docs/agent-adoption/spotify-integration-scope.md)
|
|
200
167
|
- [Spotify + SomaCheck Listening Reflection recipe](spotify-listening-reflection.md)
|
|
201
168
|
- [SomaCheck immediate-request contract](../LIVE-ASK-CONTRACT.md)
|
|
202
|
-
- [SomaCheck setup and tool behavior](../README.md)
|
|
169
|
+
- [SomaCheck setup and tool behavior](../README.md)
|