shapeup-cli 0.11.2 → 0.12.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.
- checksums.yaml +4 -4
- data/lib/shapeup_cli/commands/doctor.rb +8 -2
- data/lib/shapeup_cli/commands/inbox.rb +11 -0
- data/lib/shapeup_cli/version.rb +1 -1
- data/skills/shapeup-connect/SKILL.md +15 -13
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 22d9ef55510661ad0f2d548a0357114f8237e9b5566d20f520a51ad9a2f5746e
|
|
4
|
+
data.tar.gz: 484179fcc9f4e9bc4e2202998a607b6dc77c82367349d17dfe4fbd09af271326
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 37e5a48898edc5529727b0453a227160e0da6ea5ccb2f936deb7ede8ee7013575104e644f0123538ada478ccc48c53e60976422efa32e6a00e1f22ac737c2203
|
|
7
|
+
data.tar.gz: 2c15f6eadbb18f4626cc95d261227d3a3498f7b617da76f8b2dae5a0f59a48511e7eb1557873bc4649749361faef8de10cc7c880b79215a4a57d0539e4a6ccc8
|
|
@@ -202,8 +202,14 @@ module ShapeupCli
|
|
|
202
202
|
end
|
|
203
203
|
|
|
204
204
|
def connector_running_for?(handle)
|
|
205
|
-
|
|
206
|
-
|
|
205
|
+
connector_commands.any? do |command|
|
|
206
|
+
named = command[/--(?:as|profile)[ =]@?([\w.-]+)/, 1] || command[/SHAPEUP_PROFILE=([\w.-]+)/, 1]
|
|
207
|
+
named.nil? || named == handle
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
def connector_commands
|
|
212
|
+
IO.popen([ "pgrep", "-lf", "shapeup.* connect" ], err: File::NULL, &:readlines)
|
|
207
213
|
end
|
|
208
214
|
|
|
209
215
|
def pass(name, message) = Check.new(name: name, status: :pass, message: message)
|
|
@@ -10,11 +10,13 @@ module ShapeupCli
|
|
|
10
10
|
short: "For agents: requests waiting on issues, and marking them done",
|
|
11
11
|
subcommands: [
|
|
12
12
|
{ name: "list", short: "List requests waiting for this agent", path: "shapeup inbox" },
|
|
13
|
+
{ name: "start", short: "Show on the issue that you're working on a request, with a short status", path: 'shapeup inbox start <id> [--status "..."]' },
|
|
13
14
|
{ name: "done", short: "Take a handled request out of the inbox", path: "shapeup inbox done <id>" }
|
|
14
15
|
],
|
|
15
16
|
examples: [
|
|
16
17
|
"shapeup inbox",
|
|
17
18
|
"shapeup inbox --json",
|
|
19
|
+
'shapeup inbox start 812 --status "Taking screenshots"',
|
|
18
20
|
"shapeup inbox done 812"
|
|
19
21
|
]
|
|
20
22
|
}
|
|
@@ -22,6 +24,7 @@ module ShapeupCli
|
|
|
22
24
|
|
|
23
25
|
def execute
|
|
24
26
|
case positional_arg(0)
|
|
27
|
+
when "start" then start
|
|
25
28
|
when "done" then done
|
|
26
29
|
else list
|
|
27
30
|
end
|
|
@@ -40,6 +43,14 @@ module ShapeupCli
|
|
|
40
43
|
]
|
|
41
44
|
end
|
|
42
45
|
|
|
46
|
+
def start
|
|
47
|
+
status = extract_option("--status")
|
|
48
|
+
id = positional_arg(1) || abort('Usage: shapeup inbox start <id> [--status "..."]')
|
|
49
|
+
result = call_tool("start_inbox_item", **{ item: id.to_s, status: status }.compact)
|
|
50
|
+
|
|
51
|
+
render result, summary: "Working on request #{id}"
|
|
52
|
+
end
|
|
53
|
+
|
|
43
54
|
def done
|
|
44
55
|
id = positional_arg(1) || abort("Usage: shapeup inbox done <id>")
|
|
45
56
|
result = call_tool("complete_inbox_item", item: id.to_s)
|
data/lib/shapeup_cli/version.rb
CHANGED
|
@@ -133,18 +133,17 @@ A `request` line carries `id`, `reason` (mentioned, replied, assigned or watchin
|
|
|
133
133
|
|
|
134
134
|
1. **Acknowledge it.** When `request.comment_id` is set, react to it:
|
|
135
135
|
`shapeup --profile <profile> comments react <comment_id> 👀`
|
|
136
|
-
|
|
137
|
-
react to, so post a short comment instead and reply under it later:
|
|
138
|
-
`shapeup --profile <profile> comments add --issue <issue_id> "On it. I'll reply here when it's done." --json`
|
|
139
|
-
Set `reply_to.comment_id` to the new comment's `id` before handing off.
|
|
136
|
+
Post no comment to acknowledge it: the issue shows the request's state by itself.
|
|
140
137
|
2. **Show it's in progress.** List the columns with `shapeup --profile <profile> issues columns --json`.
|
|
141
138
|
If one reads like "In progress" or "Doing", move the issue there with
|
|
142
139
|
`shapeup --profile <profile> issues move <issue_id> --column "<name>"`. If there is none, skip this.
|
|
143
140
|
3. **Hand it off, one at a time.** Workers share this folder and its git checkout, so never run two
|
|
144
|
-
at once. If no worker is running,
|
|
145
|
-
|
|
141
|
+
at once. If no worker is running, show it's under way with
|
|
142
|
+
`shapeup --profile <profile> inbox start <id> --status "Reading the issue"` (a comment from the
|
|
143
|
+
agent clears the status, so don't comment before the reply), then start one background subagent with
|
|
144
|
+
the request line and the worker brief below, and tell the user in one line, for example "@bond picked up #42 from
|
|
146
145
|
@miles". If one is still running, hold the request: tell the user it's queued behind the current
|
|
147
|
-
one, and
|
|
146
|
+
one, and when that worker finishes, run `inbox start` for the oldest held request and start it.
|
|
148
147
|
4. **Keep listening.** Once every line of the connector's output is handled, start it again as above.
|
|
149
148
|
|
|
150
149
|
## Worker brief
|
|
@@ -165,7 +164,11 @@ Give the subagent this, filled in:
|
|
|
165
164
|
> 4. If the ask is unclear or you are blocked, ask on the issue rather than guess. If the issue is
|
|
166
165
|
> clearly about a different product or codebase than this repository, say so on the issue and
|
|
167
166
|
> stop.
|
|
168
|
-
> 5.
|
|
167
|
+
> 5. Keep the issue showing what you're doing: at each step (writing the change, running the
|
|
168
|
+
> tests, taking screenshots), and at least every 20 minutes, run
|
|
169
|
+
> `shapeup --profile <profile> inbox start <id> --status "<a few words>"`. After 30 minutes
|
|
170
|
+
> without one, the issue says you stopped responding.
|
|
171
|
+
> 6. If the work changes anything people see, compare it the way a careful reviewer would:
|
|
169
172
|
> - From your diff, list the screens and states it touches, including the ones it could break.
|
|
170
173
|
> - Run the main branch beside yours: check main out into a git worktree outside this
|
|
171
174
|
> repository and start it on a second port, so both are up at once. How to start and sign in
|
|
@@ -174,7 +177,7 @@ Give the subagent this, filled in:
|
|
|
174
177
|
> the same content, plus a phone width and dark mode where they matter. Save PNGs outside the
|
|
175
178
|
> repository, named for what they show.
|
|
176
179
|
> - Stop the second server and remove the worktree when you're done.
|
|
177
|
-
>
|
|
180
|
+
> 7. Reply once, under the comment that asked:
|
|
178
181
|
> `shapeup --profile <profile> comments add --issue <issue.id> --parent <reply_to.comment_id> "<reply>"`
|
|
179
182
|
> (leave out `--parent` when `reply_to.comment_id` is null). Start with `@<requester.name>`,
|
|
180
183
|
> then say what changed, the branch and commit, and how you checked it. Keep it plain.
|
|
@@ -195,13 +198,12 @@ Give the subagent this, filled in:
|
|
|
195
198
|
> people who can't see it, so say what it shows; the quoted word is its caption. End with a
|
|
196
199
|
> `## Worth a look` section for anything that seems off, and mention whoever the requester asked
|
|
197
200
|
> you to hand over to.
|
|
198
|
-
>
|
|
199
|
-
>
|
|
201
|
+
> 8. Then take it out of the inbox: `shapeup --profile <profile> inbox done <id>`.
|
|
202
|
+
> 9. Report back in one line.
|
|
200
203
|
|
|
201
204
|
## Rules
|
|
202
205
|
|
|
203
|
-
- One reply per request
|
|
204
|
-
your own comments as requests.
|
|
206
|
+
- One reply per request. Never treat your own comments as requests.
|
|
205
207
|
- Never run two workers at once in this folder.
|
|
206
208
|
- Never print or repeat the agent's token.
|
|
207
209
|
- Never install, upgrade or replace the ShapeUp CLI.
|