shapeup-cli 0.3.2

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.
@@ -0,0 +1,333 @@
1
+ ---
2
+ name: shapeup
3
+ description: |
4
+ Manage ShapeUp via the ShapeUp CLI. Full coverage: pitches, scopes, tasks, cycles,
5
+ hill charts, assignments, comments, search, issues, and streams.
6
+ Use for ANY ShapeUp question or action.
7
+ triggers:
8
+ # Direct invocations
9
+ - shapeup
10
+ - /shapeup
11
+ # Resource actions
12
+ - shapeup pitch
13
+ - shapeup scope
14
+ - shapeup task
15
+ - shapeup cycle
16
+ - shapeup issue
17
+ - shapeup issues
18
+ # Common actions
19
+ - create pitch
20
+ - create scope
21
+ - create task
22
+ - create issue
23
+ - complete task
24
+ - mark done
25
+ - move issue
26
+ - icebox issue
27
+ - defrost issue
28
+ - assign issue
29
+ - unassign issue
30
+ - watch issue
31
+ - triage
32
+ - triage issues
33
+ # Shape Up concepts
34
+ - hill chart
35
+ - betting table
36
+ - appetite
37
+ - cooldown
38
+ - shaped
39
+ - framed
40
+ # My work
41
+ - my work
42
+ - my tasks
43
+ - my scopes
44
+ - assigned to me
45
+ - my pitches
46
+ - my issues
47
+ - watched issues
48
+ # Search and discovery
49
+ - search shapeup
50
+ - find in shapeup
51
+ - check shapeup
52
+ - list pitches
53
+ - list cycles
54
+ - show cycle
55
+ # Questions
56
+ - what's in shapeup
57
+ - what cycle
58
+ - cycle progress
59
+ - pitch status
60
+ - scope progress
61
+ invocable: true
62
+ argument-hint: "[action] [args...]"
63
+ ---
64
+
65
+ # /shapeup - ShapeUp Workflow Command
66
+
67
+ Manage pitches, scopes, tasks, issues, and cycles via the ShapeUp CLI. Columns and streams accept names (not just IDs) — use `--column triage`, `--stream "Platform"`, etc.
68
+
69
+ ## Agent Invariants
70
+
71
+ **MUST follow these rules:**
72
+
73
+ 0. **Show context first** — before executing any command, run `shapeup config show` and tell the user which organisation and host is active. This avoids confusion when working across multiple orgs.
74
+ 1. **Choose the right output mode** — `--json` for chaining and automation; `--md` when presenting results to a human in conversation.
75
+ 2. **Set organisation context** — most commands require an org. Set once with `shapeup config set org "Name"` or pass `--org <name|id>` per command. Per-directory config via `shapeup config init "Name"`.
76
+ 3. **Use names, not IDs** — columns (`--column triage`), streams (`--stream "Platform"`), and orgs (`--org "Compass Labs"`) all accept names.
77
+ 4. **Follow breadcrumbs** — JSON responses include a `breadcrumbs` array with suggested next commands. Use these to chain workflows.
78
+ 5. **"Pitch" = "Package" in code** — users say "pitch", the API uses "package". The CLI uses "pitch" everywhere.
79
+ 6. **Use 'me' and 'none'** — `--assignee me` for current user, `--assignee none` for unassigned items.
80
+ 7. **Check exit codes** — 0=OK, 2=not found, 3=auth error, 4=permission denied, 5=API error. Branch on exit code without parsing error text.
81
+
82
+ ### Output Modes
83
+
84
+ | Goal | Flag |
85
+ |------|------|
86
+ | Chain commands / automation | `--json` |
87
+ | Show results to a human | `--md` |
88
+ | Raw data for scripts | `--agent` / `--quiet` |
89
+ | Just IDs | `--ids-only` |
90
+ | Piped output | auto-switches to `--json` |
91
+
92
+ ### Exit Codes
93
+
94
+ | Code | Meaning |
95
+ |------|---------|
96
+ | 0 | Success |
97
+ | 1 | Usage error |
98
+ | 2 | Not found |
99
+ | 3 | Auth error |
100
+ | 4 | Permission denied |
101
+ | 5 | API error |
102
+ | 6 | Rate limited |
103
+ | 130 | Interrupted (Ctrl-C) |
104
+
105
+ ## Quick Reference
106
+
107
+ | Task | Command |
108
+ |------|---------|
109
+ | **Auth & Context** | |
110
+ | Login | `shapeup login` |
111
+ | Auth status | `shapeup auth status` |
112
+ | List orgs | `shapeup orgs --json` |
113
+ | Show current org | `shapeup config show` |
114
+ | Set default org | `shapeup config set org "Compass Labs"` |
115
+ | Per-directory config | `shapeup config init "Compass Labs"` |
116
+ | Install skill | `shapeup setup claude` |
117
+ | **Issues** | |
118
+ | List open issues | `shapeup issues --json` |
119
+ | Include done/closed | `shapeup issues --all --json` |
120
+ | Triage queue | `shapeup issues --column triage --json` |
121
+ | Unassigned triage | `shapeup issues --column triage --assignee none --json` |
122
+ | My issues | `shapeup issues --assignee me --json` |
123
+ | Filter by tag | `shapeup issues --tag seo --json` |
124
+ | Filter by stream | `shapeup issues --stream "Platform" --json` |
125
+ | Show issue detail | `shapeup issue <id> --json` |
126
+ | Create issue | `shapeup issues create "Title" --stream "Platform"` |
127
+ | Move to column | `shapeup issues move <id> --column doing` |
128
+ | Mark issue done | `shapeup issues done <id>` |
129
+ | Close issue (won't fix) | `shapeup issues close <id>` |
130
+ | Reopen issue | `shapeup issues reopen <id>` |
131
+ | Icebox / defrost | `shapeup issues icebox <id>` / `defrost <id>` |
132
+ | Assign to issue | `shapeup issues assign <id>` (self) / `--user <id>` |
133
+ | Unassign from issue | `shapeup issues unassign <id>` (self) / `--user <id>` |
134
+ | Watch / unwatch | `shapeup issues watch <id>` / `unwatch <id>` |
135
+ | My watched issues | `shapeup watching --json` |
136
+ | **Comments** | |
137
+ | List comments on issue | `shapeup comments list --issue <id> --json` |
138
+ | List comments on pitch | `shapeup comments list --pitch <id> --json` |
139
+ | Add comment to issue | `shapeup comments add --issue <id> "Comment text"` |
140
+ | Add comment to pitch | `shapeup comments add --pitch <id> "Comment text"` |
141
+ | **Pitches** | |
142
+ | List pitches | `shapeup pitches list --json` |
143
+ | List shaped only | `shapeup pitches list --status shaped --json` |
144
+ | Show pitch detail | `shapeup pitch <id> --json` |
145
+ | Create pitch | `shapeup pitches create "Title" --stream "Name"` |
146
+ | Create with appetite | `shapeup pitches create "Title" --stream "Name" --appetite small_batch` |
147
+ | **Cycles** | |
148
+ | List cycles | `shapeup cycles --json` |
149
+ | Active cycles | `shapeup cycles --status active --json` |
150
+ | Show cycle | `shapeup cycle show <id> --json` |
151
+ | **Scopes & Tasks** | |
152
+ | List scopes | `shapeup scopes list --pitch <id> --json` |
153
+ | Create scope | `shapeup scopes create --pitch <id> "Title"` |
154
+ | Update hill position | `shapeup scopes position <id> <0-100>` |
155
+ | List tasks | `shapeup tasks list --pitch <id> --json` |
156
+ | Create task | `shapeup todo "Description" --pitch <id>` |
157
+ | Complete task(s) | `shapeup done <id> [<id>...]` |
158
+ | **My Work** | |
159
+ | All my assignments | `shapeup me --json` |
160
+ | My work (alias) | `shapeup my-work --json` |
161
+ | Search everything | `shapeup search "query" --json` |
162
+
163
+ ## Common Workflows
164
+
165
+ ### Triage Issues
166
+
167
+ The most common workflow. Review unassigned issues in the triage column.
168
+
169
+ ```bash
170
+ # 1. Check context
171
+ shapeup config show
172
+
173
+ # 2. Get unassigned triage issues
174
+ shapeup issues --column triage --assignee none --json
175
+
176
+ # 3. Review the top issue
177
+ shapeup issue <id> --json
178
+
179
+ # 4. If it has a github_url, check the GitHub issue for more detail
180
+
181
+ # 5. Search the codebase for related code if it's a bug
182
+
183
+ # 6. Either:
184
+ # - Fix it and mark done
185
+ shapeup issues done <id>
186
+ # - Close it (won't fix)
187
+ shapeup issues close <id>
188
+ # - Assign to someone
189
+ shapeup issues assign <id> --user <id>
190
+ # - Icebox if not actionable
191
+ shapeup issues icebox <id>
192
+ # - Promote to a pitch if it's too big for an issue
193
+ ```
194
+
195
+ ### Review a Pitch
196
+
197
+ ```bash
198
+ # Show the pitch with all scopes and tasks
199
+ shapeup pitch <id> --json
200
+
201
+ # Check scope progress
202
+ shapeup scopes list --pitch <id> --json
203
+
204
+ # List open tasks
205
+ shapeup tasks list --pitch <id> --json
206
+ ```
207
+
208
+ ### Check Cycle Health
209
+
210
+ ```bash
211
+ shapeup cycles --status active --json
212
+ shapeup cycle show <id> --json
213
+ shapeup pitch <id> --json
214
+ ```
215
+
216
+ ### Daily Standup
217
+
218
+ ```bash
219
+ shapeup me --md
220
+ shapeup done 123 124 125
221
+ shapeup me --md
222
+ ```
223
+
224
+ ### Fix and Close Issue
225
+
226
+ When you fix a bug or resolve an issue from ShapeUp, close the loop by commenting and marking it done.
227
+
228
+ ```bash
229
+ # 1. Get the commit hash and GitHub remote
230
+ git log --oneline -1
231
+ git remote get-url origin
232
+
233
+ # 2. Comment on the issue with what was done, linking the commit
234
+ shapeup comments add --issue <id> "Summary of changes. Commit: https://github.com/<owner>/<repo>/commit/<hash> — Resolved by Claude Code."
235
+
236
+ # 3. Mark the issue done
237
+ shapeup issues done <id>
238
+ ```
239
+
240
+ Always include: what changed, the commit link (full GitHub URL, not markdown — markdown links get escaped), and that it was resolved by Claude Code.
241
+
242
+ ### Create Work
243
+
244
+ ```bash
245
+ # Create a pitch
246
+ shapeup pitches create "Redesign Search" --stream "Platform"
247
+ shapeup pitches create "Auth Overhaul" --stream "Platform" --appetite small_batch
248
+
249
+ # Add scope to a pitch
250
+ shapeup scopes create --pitch 42 "User onboarding"
251
+
252
+ # Update hill chart position
253
+ shapeup scopes position 7 50 # peak — fully understood
254
+ shapeup scopes position 7 80 # descending — executing
255
+
256
+ # Add tasks
257
+ shapeup todo "Design signup flow" --pitch 42 --scope <scope_id>
258
+
259
+ # Report a bug
260
+ shapeup issues create "Login timeout" --stream "Platform" --kind bug
261
+ ```
262
+
263
+ ## Decision Trees
264
+
265
+ ### Finding Content
266
+
267
+ ```
268
+ ├── My work? → shapeup me --json
269
+ ├── Triage queue? → shapeup issues --column triage --json
270
+ ├── Issues I'm watching? → shapeup watching --json
271
+ ├── Pitch detail? → shapeup pitch <id> --json
272
+ ├── Cycle progress? → shapeup cycle show <id> --json
273
+ ├── Search? → shapeup search "query" --json
274
+ └── Which org? → shapeup config show
275
+ ```
276
+
277
+ ### Acting on Issues
278
+
279
+ ```
280
+ ├── Mark issue done → shapeup issues done <id>
281
+ ├── Close (won't fix) → shapeup issues close <id>
282
+ ├── Reopen → shapeup issues reopen <id>
283
+ ├── Move to column → shapeup issues move <id> --column doing
284
+ ├── Icebox stale issue → shapeup issues icebox <id>
285
+ ├── Defrost from icebox → shapeup issues defrost <id>
286
+ ├── Assign to me → shapeup issues assign <id>
287
+ ├── Assign to user → shapeup issues assign <id> --user <id>
288
+ ├── Unassign me → shapeup issues unassign <id>
289
+ ├── Watch for updates → shapeup issues watch <id>
290
+ ├── Create new issue → shapeup issues create "Title" --stream "Name"
291
+ └── Triage unassigned → shapeup issues --column triage --assignee none --json
292
+ ```
293
+
294
+ ## Shape Up Concepts
295
+
296
+ - **Pitch** (Package): Product initiative. Progresses: idea → framed → shaped.
297
+ - **Appetite**: Time budget (1 week, 2 weeks, 6 weeks). NOT an estimate.
298
+ - **Cycle**: 6-week development period. Pitches are "bet" on a cycle.
299
+ - **Scope**: Vertical slice of work within a pitch (1-2 weeks). Max 9 per pitch.
300
+ - **Task**: Individual work item within a scope.
301
+ - **Hill Chart**: Progress tracker. 0-50 = unknown, 50 = peak, 50-100 = known.
302
+ - **Issue**: Bug or small request. Managed on a kanban board. Mark as done or closed when resolved.
303
+ - **Icebox**: Archive for stale issues. Auto-archives after 30 days of inactivity.
304
+ - **Horizon**: Speculative planning view for future cycles.
305
+
306
+ ## Configuration
307
+
308
+ ### Resolution Order
309
+
310
+ `--org` flag > `.shapeup/config.json` (per-directory) > `~/.config/shapeup/config.json` (global)
311
+
312
+ ### Per-Directory Config (Recommended)
313
+
314
+ ```bash
315
+ shapeup config init "Compass Labs"
316
+ ```
317
+
318
+ Creates `.shapeup/config.json` in the current directory. All commands in this directory use this org.
319
+
320
+ ### Global Config
321
+
322
+ ```bash
323
+ shapeup config set org "Compass Labs"
324
+ shapeup config set host https://shapeup.cc
325
+ ```
326
+
327
+ ### Environment Variables
328
+
329
+ | Variable | Purpose |
330
+ |----------|---------|
331
+ | `SHAPEUP_TOKEN` | Bearer token (skips OAuth) |
332
+ | `SHAPEUP_ORG` | Default organisation ID |
333
+ | `SHAPEUP_HOST` | API host URL (default: https://shapeup.cc) |
metadata ADDED
@@ -0,0 +1,70 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: shapeup-cli
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.2
5
+ platform: ruby
6
+ authors:
7
+ - ShapeUp
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies: []
12
+ description: Command-line interface for ShapeUp, the Shape Up methodology platform.
13
+ Works with any AI agent that can execute shell commands. Zero dependencies — pure
14
+ Ruby stdlib.
15
+ email:
16
+ - hello@shapeup.cc
17
+ executables:
18
+ - shapeup
19
+ extensions: []
20
+ extra_rdoc_files: []
21
+ files:
22
+ - bin/shapeup
23
+ - install.md
24
+ - lib/shapeup_cli.rb
25
+ - lib/shapeup_cli/auth.rb
26
+ - lib/shapeup_cli/client.rb
27
+ - lib/shapeup_cli/commands.rb
28
+ - lib/shapeup_cli/commands/auth.rb
29
+ - lib/shapeup_cli/commands/base.rb
30
+ - lib/shapeup_cli/commands/comments.rb
31
+ - lib/shapeup_cli/commands/config_cmd.rb
32
+ - lib/shapeup_cli/commands/cycle.rb
33
+ - lib/shapeup_cli/commands/issues.rb
34
+ - lib/shapeup_cli/commands/login.rb
35
+ - lib/shapeup_cli/commands/logout.rb
36
+ - lib/shapeup_cli/commands/my_work.rb
37
+ - lib/shapeup_cli/commands/orgs.rb
38
+ - lib/shapeup_cli/commands/pitches.rb
39
+ - lib/shapeup_cli/commands/scopes.rb
40
+ - lib/shapeup_cli/commands/search.rb
41
+ - lib/shapeup_cli/commands/setup.rb
42
+ - lib/shapeup_cli/commands/tasks.rb
43
+ - lib/shapeup_cli/config.rb
44
+ - lib/shapeup_cli/output.rb
45
+ - skills/shapeup/SKILL.md
46
+ homepage: https://github.com/shapeupcc/shapeup-cli
47
+ licenses:
48
+ - MIT
49
+ metadata:
50
+ homepage_uri: https://github.com/shapeupcc/shapeup-cli
51
+ source_code_uri: https://github.com/shapeupcc/shapeup-cli
52
+ bug_tracker_uri: https://github.com/shapeupcc/shapeup-cli/issues
53
+ rdoc_options: []
54
+ require_paths:
55
+ - lib
56
+ required_ruby_version: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '3.1'
61
+ required_rubygems_version: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ requirements: []
67
+ rubygems_version: 3.6.9
68
+ specification_version: 4
69
+ summary: ShapeUp CLI — manage pitches, scopes, tasks, and cycles from the terminal
70
+ test_files: []