@popoverinstall/cli 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,175 +1,205 @@
1
- ---
2
- name: popover
3
- description: "Judgment for reaching a teammate's Claude Code agent *without being asked to* — when it is worth spending their tokens, and which of /popover:team, /popover:ask, /popover:tell and /popover:fork fits. Nothing to invoke by hand: use it when a question turns on what a colleague decided, ruled out, or is changing right now — why the code is the way it is when the repo does not say, whether work about to start is already in flight, or why something nobody touched is broken."
4
- ---
5
-
6
- # popover
7
-
8
- Your teammates are running their own Claude Code sessions in this repo. Each one has
9
- accumulated context you do not have: the alternatives they rejected, the constraint that
10
- forced an awkward shape, what they changed twenty minutes ago and have not pushed. popover
11
- lets you reach those agents.
12
-
13
- **This skill is not a command, and there is nothing here for a user to invoke.** The five
14
- commands are the things a user types:
15
-
16
- | | |
17
- | --- | --- |
18
- | `/popover:team` | who is working in this repo right now |
19
- | `/popover:ask` | one question to one agent, and you wait for the answer |
20
- | `/popover:tell` | a heads-up into a teammate's live session; nothing comes back |
21
- | `/popover:fork` | hand this whole conversation to a teammate |
22
- | `/popover:vault` | publish this conversation to the team's archive, or ask one already there |
23
-
24
- This file is the judgment around them: when reaching for one is worth it, which one fits, and
25
- what each one spends. It exists because the moment to use popover rarely announces itself. The
26
- user asks why something is the way it is, and the honest answer is that the repo does not
27
- record it — but a colleague's agent worked it out this morning. Nobody will type `/popover:ask`
28
- for you. Noticing is your job.
29
-
30
- ## The five tools
31
-
32
- They arrive as deferred MCP tools, so you have their names but not their schemas. Load them
33
- before use:
34
-
35
- ```
36
- ToolSearch("select:mcp__plugin_popover_popover__team_list,mcp__plugin_popover_popover__team_ask,mcp__plugin_popover_popover__team_tell,mcp__plugin_popover_popover__vault_search,mcp__plugin_popover_popover__vault_ask")
37
- ```
38
-
39
- Their own descriptions are detailed and authoritative on arguments and limits — read them
40
- once loaded rather than guessing. In short:
41
-
42
- - **`team_list`** — who is active in this repo, what they are doing, and each one's short
43
- handle (`B1`). Takes nothing. Read-only and cheap.
44
- - **`team_ask`** — one question to one agent, and you wait for the answer. A read-only copy
45
- of their session answers from its full context. Their live session is not interrupted and
46
- cannot be changed by it. Takes up to ~90s by default.
47
- - **`team_tell`** — a one- or two-sentence heads-up delivered into a teammate's live session
48
- before its next prompt. Nothing comes back, and their user is notified that you sent it.
49
- - **`vault_search`** — search the conversations your team has frozen and published. Free, no
50
- model, nothing resumed. Not limited to this repo, and not limited to people who are working
51
- right now. Always the first of the two.
52
- - **`vault_ask`** — one question to one vault, answered from its frozen context on *this*
53
- machine at your user's expense. Roughly $0.50 and up to 90 seconds. Never call it on a
54
- vault you have not seen in a search result.
55
-
56
- ## When to reach for it on your own
57
-
58
- Check the roster and consider an ask when:
59
-
60
- - **The user asks *why*** — why a library was chosen, why a function is shaped oddly, why an
61
- obvious approach was not taken — **and the repo does not answer it.** Read the code, the
62
- comments, `git log`, `git blame`, and `CLAUDE.md` first. If the reasoning is not written
63
- down anywhere, that is precisely the case popover was built for: it exists only in
64
- somebody's session.
65
- - **You are about to start something that may already be underway** a rename spanning many
66
- files, a dependency bump, a refactor of a shared module. One `team_list` costs almost
67
- nothing and can save the user an afternoon of conflicted work.
68
- - **You are blocked by something you did not break** a migration that appears unapplied, a
69
- failing build on untouched code, an endpoint that disagrees with its own types. Ask the
70
- person whose agent is in that area before you debug their in-flight change as if it were a
71
- bug.
72
- - **You are about to edit a file a teammate's agent is working in right now.** The roster
73
- often says what each agent is doing. Prefer a `tell` here it is a collision, not a
74
- question.
75
- - **The user names a colleague.** "Did Bob get the webhook working?", "what is Sarah doing to
76
- globals.css" — that is a direct signal, and you do not need to be asked twice.
77
-
78
- Say what you are doing and why before you ask, in a line. The user should never be surprised
79
- that you spent a teammate's tokens.
80
-
81
- ## When not to
82
-
83
- - **When the repo can answer.** Reading is free and instant; an ask runs on someone else's
84
- machine at their expense. Exhaust local evidence first, always.
85
- - **For curiosity or completeness.** Do not ask because a second opinion would be tidy. Ask
86
- because you are stuck and they are not.
87
- - **More than one agent per question.** Never fan out across the roster to see who answers
88
- best. Pick the one that fits; if none obviously does, show the user the roster instead.
89
- - **To hand off work.** A `tell` is information, not a directive — the receiving agent is
90
- explicitly told to treat it that way — and an ask talks to a read-only copy that cannot act.
91
- Neither one delegates. If the user wants a colleague to *do* something, say plainly that
92
- popover does not do that, and let them message the human.
93
- - **For anything outside this repo.** Only agents in the same repository are visible or
94
- reachable. An empty roster means nobody else is working *here* not that the team is idle.
95
- Phrase it that way, or you will imply something false about your user's colleagues.
96
-
97
- ## The cost asymmetry, which governs consent
98
-
99
- Three tools, three different things being spent:
100
-
101
- | | Costs | Ask the user first? |
102
- | --- | --- | --- |
103
- | `team_list` | Nothing meaningful | No — just do it |
104
- | `team_ask` | The teammate's tokens and compute, on their machine. Interrupts nobody. | No, but say you are doing it |
105
- | `team_tell` | A colleague's **attention**. It lands in their live session and notifies them. | **Yes, every time** |
106
-
107
- `team_tell` is the only thing in popover that reaches a running agent. Treat it as something
108
- the user should have deliberately meant to do, and confirm before sending. It is also rate
109
- limited to 10 messages an hour to any one agent, which is a hint about its intended frequency.
110
-
111
- If it is genuinely ambiguous whether to ask or tell, ask. It interrupts nobody.
112
-
113
- ## Writing an ask worth the money
114
-
115
- The answering agent has none of your conversation. It cannot see the file you are looking at
116
- or the error you just read. So make the question stand alone:
117
-
118
- - Expand every pronoun and vague reference. "that bug" → "the token refresh bug in the auth
119
- service".
120
- - Name files by path, and say what you are trying to do, not only what you want to know.
121
- - Ask one well-formed question, not three exploratory ones. You get one round trip for the
122
- price.
123
-
124
- A poor ask — *"why is it done this way?"* — comes back useless and you have spent a
125
- colleague's tokens to learn nothing. A good one *"`apps/web/src/lib/auth-redirect.ts`
126
- derives the origin from the request Host header, with a comment saying
127
- `NEXT_PUBLIC_APP_URL` still points at the old Vercel domain. Is that variable going to be
128
- corrected, or is reading Host the intended long-term approach?"* — comes back with the
129
- reasoning, because that is knowledge about shared state that lives in a person's head rather
130
- than in the repo.
131
-
132
- Never invent a handle. Use only what `team_list` returned, and note that a handle from
133
- earlier in this conversation may have gone out of scope since. If the tool says it does not
134
- match, relay that instead of trying a different agent.
135
-
136
- ## Forks are a different thing
137
-
138
- A fork hands over **this entire conversation**, frozen, and the recipient continues it in
139
- their own session. Nothing comes back. That includes the contents of every file read into the
140
- context, so it is a far larger disclosure than an ask.
141
-
142
- **Creating one is the user's alone.** It happens when they ask for it in as many words, never
143
- on their behalf and "that would be useful" is not a yes.
144
-
145
- Saying that a fork would fit is a different act from making one, and it is worth doing once.
146
- The moment for a fork is one the user is usually too deep in the work to notice: they are going
147
- off shift, or about to re-explain an hour of debugging to a colleague by hand, or trading asks
148
- back and forth on what was never really one question. Say so plainly, say what the fork would
149
- include, and leave it there. If they pass, do not raise it again.
150
-
151
- When the user wants an *answer* rather than to hand over the whole conversation, an ask is the
152
- cheaper and more private thing. Offer that instead.
153
-
154
- ## When it does not work
155
-
156
- The tools return errors as text; relay them rather than retrying with different arguments.
157
-
158
- - **"the popover daemon is not running"** — teammate agents are unreachable from this machine.
159
- `popover daemon start`, or `popover doctor` to diagnose. Do not treat it as an empty roster.
160
- - **Empty roster** — print what the tool returned verbatim; it knows whether the answer is
161
- "nobody is working here" or something else. Do not paraphrase it into "your team is idle".
162
- - **Handle does not match** relay it. Do not guess at another agent.
163
- - **Ask times out** say so. Their machine may be busy or the session may have ended. Do not
164
- silently re-ask.
165
-
166
- ## The user-facing commands
167
-
168
- The four commands carry the full flows for when the user drives this explicitly how to
169
- present a roster, how to word an ask, how to take delivery of a fork. Do not restate their
170
- steps here or work around them: **when the user invokes a command, follow that command.** This
171
- skill is for the other case, where nobody invoked anything and you noticed the moment yourself.
172
-
173
- When you act on your own, prefer naming the command you are standing in for — "I'll run the
174
- equivalent of `/popover:ask B1`" so the user learns the surface they can drive directly next
175
- time.
1
+ ---
2
+ name: popover
3
+ description: "Judgment for reaching a teammate's Claude Code agent *without being asked to*, and for keeping this conversation where the team can ask it later — when it is worth spending their tokens, and which of /popover:team, /popover:ask, /popover:tell, /popover:fork and /popover:vault fits. Nothing to invoke by hand: use it when a question turns on what a colleague decided, ruled out, or is changing right now — why the code is the way it is when the repo does not say, whether work about to start is already in flight, or why something nobody touched is broken; or when this session has worked something out that the team will want and the repo will not record, which is the moment to vault it rather than let it be deleted."
4
+ ---
5
+
6
+ # popover
7
+
8
+ Your teammates are running their own Claude Code sessions in this repo. Each one has
9
+ accumulated context you do not have: the alternatives they rejected, the constraint that
10
+ forced an awkward shape, what they changed twenty minutes ago and have not pushed. popover
11
+ lets you reach those agents.
12
+
13
+ **This skill is not a command, and there is nothing here for a user to invoke.** The five
14
+ commands are the things a user types:
15
+
16
+ | | |
17
+ | --- | --- |
18
+ | `/popover:team` | who is working in this repo right now |
19
+ | `/popover:ask` | one question to one agent, and you wait for the answer |
20
+ | `/popover:tell` | a heads-up into a teammate's live session; nothing comes back |
21
+ | `/popover:fork` | hand this whole conversation to a teammate |
22
+ | `/popover:vault` | publish this conversation to the team's archive, or ask one already there |
23
+
24
+ This file is the judgment around them: when reaching for one is worth it, which one fits, and
25
+ what each one spends. It exists because the moment to use popover rarely announces itself. The
26
+ user asks why something is the way it is, and the honest answer is that the repo does not
27
+ record it — but a colleague's agent worked it out this morning. Nobody will type `/popover:ask`
28
+ for you. Noticing is your job.
29
+
30
+ ## The six tools
31
+
32
+ They arrive as deferred MCP tools, so you have their names but not their schemas. Load them
33
+ before use:
34
+
35
+ ```
36
+ ToolSearch("select:mcp__plugin_popover_popover__team_list,mcp__plugin_popover_popover__team_ask,mcp__plugin_popover_popover__team_tell,mcp__plugin_popover_popover__vault_search,mcp__plugin_popover_popover__vault_ask,mcp__plugin_popover_popover__vault_create")
37
+ ```
38
+
39
+ Their own descriptions are detailed and authoritative on arguments and limits — read them
40
+ once loaded rather than guessing. In short:
41
+
42
+ - **`team_list`** — who is active in this repo, what they are doing, and each one's short
43
+ handle (`B1`). Takes nothing. Read-only and cheap.
44
+ - **`team_ask`** — one question to one agent, and you wait for the answer. A read-only copy
45
+ of their session answers from its full context. Their live session is not interrupted and
46
+ cannot be changed by it. Takes up to ~90s by default.
47
+ - **`team_tell`** — a one- or two-sentence heads-up delivered into a teammate's live session
48
+ before its next prompt. Nothing comes back, and their user is notified that you sent it.
49
+ - **`vault_search`** — search the conversations your team has frozen and published. Free, no
50
+ model, nothing resumed. Not limited to this repo, and not limited to people who are working
51
+ right now. Always the first of the two.
52
+ - **`vault_ask`** — one question to one vault, answered from its frozen context on *this*
53
+ machine at your user's expense. Roughly $0.50 and up to 90 seconds. Never call it on a
54
+ vault you have not seen in a search result.
55
+ - **`vault_create`** — publish *this* conversation into the archive the other two read.
56
+ The only one of the six that writes something permanent: the whole conversation goes to
57
+ everyone on the team, it does not expire, and it cannot be edited afterwards. You may call
58
+ it on your own judgement see *Vaults are a different thing again* below — but say plainly
59
+ that a vault is **readable by the popover service**, which a fork is not.
60
+
61
+ ## When to reach for it on your own
62
+
63
+ Check the roster and consider an ask when:
64
+
65
+ - **The user asks *why*** why a library was chosen, why a function is shaped oddly, why an
66
+ obvious approach was not taken **and the repo does not answer it.** Read the code, the
67
+ comments, `git log`, `git blame`, and `CLAUDE.md` first. If the reasoning is not written
68
+ down anywhere, that is precisely the case popover was built for: it exists only in
69
+ somebody's session.
70
+ - **You are about to start something that may already be underway** a rename spanning many
71
+ files, a dependency bump, a refactor of a shared module. One `team_list` costs almost
72
+ nothing and can save the user an afternoon of conflicted work.
73
+ - **You are blocked by something you did not break**a migration that appears unapplied, a
74
+ failing build on untouched code, an endpoint that disagrees with its own types. Ask the
75
+ person whose agent is in that area before you debug their in-flight change as if it were a
76
+ bug.
77
+ - **You are about to edit a file a teammate's agent is working in right now.** The roster
78
+ often says what each agent is doing. Prefer a `tell` here it is a collision, not a
79
+ question.
80
+ - **The user names a colleague.** "Did Bob get the webhook working?", "what is Sarah doing to
81
+ globals.css" that is a direct signal, and you do not need to be asked twice.
82
+
83
+ Say what you are doing and why before you ask, in a line. The user should never be surprised
84
+ that you spent a teammate's tokens.
85
+
86
+ ## When not to
87
+
88
+ - **When the repo can answer.** Reading is free and instant; an ask runs on someone else's
89
+ machine at their expense. Exhaust local evidence first, always.
90
+ - **For curiosity or completeness.** Do not ask because a second opinion would be tidy. Ask
91
+ because you are stuck and they are not.
92
+ - **More than one agent per question.** Never fan out across the roster to see who answers
93
+ best. Pick the one that fits; if none obviously does, show the user the roster instead.
94
+ - **To hand off work.** A `tell` is information, not a directive the receiving agent is
95
+ explicitly told to treat it that way and an ask talks to a read-only copy that cannot act.
96
+ Neither one delegates. If the user wants a colleague to *do* something, say plainly that
97
+ popover does not do that, and let them message the human.
98
+ - **For anything outside this repo.** Only agents in the same repository are visible or
99
+ reachable. An empty roster means nobody else is working *here* — not that the team is idle.
100
+ Phrase it that way, or you will imply something false about your user's colleagues.
101
+
102
+ ## The cost asymmetry, which governs consent
103
+
104
+ Three tools, three different things being spent:
105
+
106
+ | | Costs | Ask the user first? |
107
+ | --- | --- | --- |
108
+ | `team_list` | Nothing meaningful | No just do it |
109
+ | `team_ask` | The teammate's tokens and compute, on their machine. Interrupts nobody. | No, but say you are doing it |
110
+ | `team_tell` | A colleague's **attention**. It lands in their live session and notifies them. | **Yes, every time** |
111
+
112
+ `team_tell` is the only thing in popover that reaches a running agent. Treat it as something
113
+ the user should have deliberately meant to do, and confirm before sending. It is also rate
114
+ limited to 10 messages an hour to any one agent, which is a hint about its intended frequency.
115
+
116
+ If it is genuinely ambiguous whether to ask or tell, ask. It interrupts nobody.
117
+
118
+ ## Writing an ask worth the money
119
+
120
+ The answering agent has none of your conversation. It cannot see the file you are looking at
121
+ or the error you just read. So make the question stand alone:
122
+
123
+ - Expand every pronoun and vague reference. "that bug" → "the token refresh bug in the auth
124
+ service".
125
+ - Name files by path, and say what you are trying to do, not only what you want to know.
126
+ - Ask one well-formed question, not three exploratory ones. You get one round trip for the
127
+ price.
128
+
129
+ A poor ask — *"why is it done this way?"* comes back useless and you have spent a
130
+ colleague's tokens to learn nothing. A good one — *"`apps/web/src/lib/auth-redirect.ts`
131
+ derives the origin from the request Host header, with a comment saying
132
+ `NEXT_PUBLIC_APP_URL` still points at the old Vercel domain. Is that variable going to be
133
+ corrected, or is reading Host the intended long-term approach?"* comes back with the
134
+ reasoning, because that is knowledge about shared state that lives in a person's head rather
135
+ than in the repo.
136
+
137
+ Never invent a handle. Use only what `team_list` returned, and note that a handle from
138
+ earlier in this conversation may have gone out of scope since. If the tool says it does not
139
+ match, relay that instead of trying a different agent.
140
+
141
+ ## Forks are a different thing
142
+
143
+ A fork hands over **this entire conversation**, frozen, and the recipient continues it in
144
+ their own session. Nothing comes back. That includes the contents of every file read into the
145
+ context, so it is a far larger disclosure than an ask.
146
+
147
+ **Creating one is the user's alone.** It happens when they ask for it in as many words, never
148
+ on their behalf and "that would be useful" is not a yes.
149
+
150
+ Saying that a fork would fit is a different act from making one, and it is worth doing once.
151
+ The moment for a fork is one the user is usually too deep in the work to notice: they are going
152
+ off shift, or about to re-explain an hour of debugging to a colleague by hand, or trading asks
153
+ back and forth on what was never really one question. Say so plainly, say what the fork would
154
+ include, and leave it there. If they pass, do not raise it again.
155
+
156
+ When the user wants an *answer* rather than to hand over the whole conversation, an ask is the
157
+ cheaper and more private thing. Offer that instead.
158
+
159
+ ## Vaults are a different thing again
160
+
161
+ A vault is this conversation published to the **team**, permanently, and asked later by
162
+ whoever needs it. Nobody has to be online for it, nobody has to still be at the company, and
163
+ the person asking pays rather than the person who wrote it.
164
+
165
+ **Unlike a fork, creating one is yours to decide.** Not to offer and wait on — to decide. The
166
+ rule differs from the fork rule deliberately: a fork discloses one conversation to one named
167
+ individual, while a vault goes to a team that already shares the repository and the work, so
168
+ the disclosure is smaller and the cost of missing the moment is higher. The moment for a vault
169
+ is one the user is usually too deep in the work to notice, and a conversation nobody vaults is
170
+ deleted when the session ends.
171
+
172
+ It is still a real disclosure, and two things must be said plainly when you make one:
173
+
174
+ - **A vault is readable by the popover service.** A fork is end-to-end and this is not.
175
+ Anyone who has internalized the first will assume the second unless you say otherwise.
176
+ - **It cannot be edited or withdrawn.** A correction is a *note* appended beside the original;
177
+ `popover vault archive` retires a vault without erasing the record that it was made.
178
+
179
+ Vault a conversation that worked something out the team will want and the repo will not
180
+ record — a decision and its reasons, an approach tried and rejected, an investigation into why
181
+ something is the way it is. Do not vault routine work: an index full of everything is one
182
+ nobody trusts, which fails in the same way as vaulting nothing.
183
+
184
+ ## When it does not work
185
+
186
+ The tools return errors as text; relay them rather than retrying with different arguments.
187
+
188
+ - **"the popover daemon is not running"** — teammate agents are unreachable from this machine.
189
+ `popover daemon start`, or `popover doctor` to diagnose. Do not treat it as an empty roster.
190
+ - **Empty roster** — print what the tool returned verbatim; it knows whether the answer is
191
+ "nobody is working here" or something else. Do not paraphrase it into "your team is idle".
192
+ - **Handle does not match** — relay it. Do not guess at another agent.
193
+ - **Ask times out** — say so. Their machine may be busy or the session may have ended. Do not
194
+ silently re-ask.
195
+
196
+ ## The user-facing commands
197
+
198
+ The five commands carry the full flows for when the user drives this explicitly — how to
199
+ present a roster, how to word an ask, how to take delivery of a fork. Do not restate their
200
+ steps here or work around them: **when the user invokes a command, follow that command.** This
201
+ skill is for the other case, where nobody invoked anything and you noticed the moment yourself.
202
+
203
+ When you act on your own, prefer naming the command you are standing in for — "I'll run the
204
+ equivalent of `/popover:ask B1`" — so the user learns the surface they can drive directly next
205
+ time.