rumo-cli 0.4.0__tar.gz → 0.6.0__tar.gz
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.
- {rumo_cli-0.4.0 → rumo_cli-0.6.0}/PKG-INFO +97 -25
- {rumo_cli-0.4.0 → rumo_cli-0.6.0}/README.md +95 -23
- {rumo_cli-0.4.0 → rumo_cli-0.6.0}/pyproject.toml +2 -2
- {rumo_cli-0.4.0 → rumo_cli-0.6.0}/src/rumo/app.py +781 -47
- rumo_cli-0.6.0/src/rumo/cli.py +287 -0
- {rumo_cli-0.4.0 → rumo_cli-0.6.0}/src/rumo/config.py +43 -0
- rumo_cli-0.6.0/src/rumo/explore.py +316 -0
- rumo_cli-0.6.0/src/rumo/git.py +89 -0
- {rumo_cli-0.4.0 → rumo_cli-0.6.0}/src/rumo/hook.py +25 -6
- {rumo_cli-0.4.0 → rumo_cli-0.6.0}/src/rumo/items.py +337 -13
- {rumo_cli-0.4.0 → rumo_cli-0.6.0}/src/rumo/prs.py +2 -2
- rumo_cli-0.6.0/src/rumo/sessions.py +324 -0
- rumo_cli-0.6.0/src/rumo/spark.py +307 -0
- rumo_cli-0.4.0/src/rumo/cli.py +0 -150
- {rumo_cli-0.4.0 → rumo_cli-0.6.0}/.gitignore +0 -0
- {rumo_cli-0.4.0 → rumo_cli-0.6.0}/LICENSE +0 -0
- {rumo_cli-0.4.0 → rumo_cli-0.6.0}/src/rumo/__init__.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: rumo-cli
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary: Your
|
|
3
|
+
Version: 0.6.0
|
|
4
|
+
Summary: Your agent forgets, rumo doesn't: what each AI agent session did and what is left, in Markdown files and a terminal Timeline
|
|
5
5
|
Project-URL: Homepage, https://github.com/pedrobuzzi/rumo
|
|
6
6
|
Project-URL: Issues, https://github.com/pedrobuzzi/rumo/issues
|
|
7
7
|
Author: Pedro Buzzi
|
|
@@ -21,25 +21,31 @@ Description-Content-Type: text/markdown
|
|
|
21
21
|
|
|
22
22
|
# rumo
|
|
23
23
|
|
|
24
|
-
**Your
|
|
25
|
-
|
|
26
|
-
Timeline
|
|
24
|
+
**Your agent forgets. rumo doesn't.** rumo keeps what each AI agent session did and what is left, one
|
|
25
|
+
Markdown file per piece of work on your machine, through `/compact`, `/clear` and from one day to the
|
|
26
|
+
next. Run `rumo` to see it all as a Timeline and know what got done, what is left and who acts next,
|
|
27
|
+
without rereading a conversation.
|
|
27
28
|
|
|
28
29
|

|
|
29
30
|
|
|
30
31
|
- **Now**: what you are doing or waiting on, with the next step of each item.
|
|
31
|
-
- **Past**: what you finished in the last two weeks (answers "what did I do?" for a standup).
|
|
32
|
-
- **Later**: ideas and paused work, so nothing you meant to do gets lost.
|
|
32
|
+
- **Past**: what you finished, or decided not to do, in the last two weeks (answers "what did I do?" for a standup).
|
|
33
|
+
- **Later**: ideas and paused work, so nothing you meant to do gets lost. Each idea shows how many days
|
|
34
|
+
it has sat untouched, and fades after 60.
|
|
33
35
|
|
|
34
36
|
Items can belong to a **group** (a project or initiative), shown as a label with its name on its
|
|
35
|
-
color;
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
color; on titles and labels, color only ever means the group. One item is one line, plus its next open
|
|
38
|
+
steps (2 by default, `step_lines` in the config), each saying who acts: `manual`, `agent` or `waiting`, and
|
|
39
|
+
what git has left of its work (`git`). rumo shows
|
|
40
|
+
one horizon at a time (`h` steps Now, Later, Past), named in a banner atop the list, in four views: the **Timeline**,
|
|
41
|
+
**Projects** (one block per group), **Repos** (one block per repository of the item's latest
|
|
42
|
+
agent session) and **Tree** (the families: an item and the ideas and items that came from it). The interface is in English; the content (titles, notes, steps) is in your own
|
|
39
43
|
language.
|
|
40
44
|
|
|
41
45
|
Nothing leaves your machine. There is no server, no database and no sync with Jira or ClickUp
|
|
42
|
-
(ask your agent to update those if you want).
|
|
46
|
+
(ask your agent to update those if you want). The exceptions are `?` and `*`, which you start yourself:
|
|
47
|
+
`?` sends the item's text, and `*` the text of your ideas (with only the titles of the rest), to Claude
|
|
48
|
+
through your own Claude Code (`claude -p`). Nothing else does.
|
|
43
49
|
|
|
44
50
|
## Install
|
|
45
51
|
|
|
@@ -84,20 +90,26 @@ To get new plugin versions on their own, turn on auto-update for the `rumo` mark
|
|
|
84
90
|
|
|
85
91
|
## Use
|
|
86
92
|
|
|
87
|
-
**In the terminal**: `rumo` opens the Timeline
|
|
93
|
+
**In the terminal**: `rumo` opens the Timeline, and `rumo idea "<title>"` notes an idea from any shell
|
|
94
|
+
(`--group <key>` files it), naming up to three similar items it already knows, with the reason for
|
|
95
|
+
the ones you dropped.
|
|
88
96
|
|
|
89
97
|
| Key | Action |
|
|
90
98
|
|---|---|
|
|
91
99
|
| ↑ ↓ | move through the list |
|
|
92
|
-
| Tab | switch between the list, steps, PRs and sessions |
|
|
93
|
-
| `v` | next view: Timeline, Projects, Repos (`1` `2` `3` go straight to one; rumo remembers it) |
|
|
100
|
+
| Tab | switch between the list, steps, PRs, family, explorations and sessions |
|
|
101
|
+
| `v` | next view: Timeline, Projects, Repos, Tree (`1` `2` `3` `4` go straight to one; rumo remembers it) |
|
|
94
102
|
| `h` | next horizon: Now, then Later, then Past, then Now again |
|
|
95
|
-
| `s` | change status (1-
|
|
103
|
+
| `s` | change status (1-6 picks directly); `6` drops the item and asks why, in one line kept as its Left off |
|
|
96
104
|
| `g` | set the group or create one; inside, `r` renames, `c` recolors and `d` deletes the highlighted group (its items stay) |
|
|
97
105
|
| `t` | toggle tags |
|
|
98
106
|
| `n` | capture a new idea |
|
|
107
|
+
| `b` | branch: a new idea that comes from the selected item (same group and tags); Tab instead turns its next open step (the highlighted one, with the steps focused) into an item of its own, and that step checks itself when the new item is done |
|
|
108
|
+
| `?` | ask Claude about the item, in the background: a lens from the config, one of the next questions of its latest answer, or your own question. The answer lands under Explorations, and a notice says when |
|
|
109
|
+
| `*` | spark: Claude reads your ideas, paused and dropped items, oldest first, and brings 3 new ideas in a line each, with the direction it read in them. Throw any away with its number (or space), Enter adds the others to Later; Esc decides later. Sometimes it asks one or two short questions first |
|
|
110
|
+
| Enter | with the family focused: go to that item; with the explorations focused: read the answer (Esc goes back) |
|
|
99
111
|
| `e` | open the item in `$EDITOR` |
|
|
100
|
-
| `a` | add a step to the selected item, after its open steps (below the highlighted one when the steps have focus); in the dialog, Tab
|
|
112
|
+
| `a` | add a step to the selected item, after its open steps (below the highlighted one when the steps have focus); in the dialog, Tab goes through `[agent]`, `[manual]` and `[waiting]` |
|
|
101
113
|
| Enter, shift+↑ ↓, `d`, space | with the steps focused: edit, move, delete (asks first) or check the highlighted step; Esc goes back |
|
|
102
114
|
| `x` | hide or show the done steps of every item (rumo remembers it) |
|
|
103
115
|
| `p` | add a PR link to the selected item (a title may follow the link); in the dialog, Tab switches the state |
|
|
@@ -111,18 +123,30 @@ To get new plugin versions on their own, turn on auto-update for the `rumo` mark
|
|
|
111
123
|
| Command | What it does |
|
|
112
124
|
|---|---|
|
|
113
125
|
| `/rumo new` | Track this session's work as an item. Looks for a similar idea first and offers to promote it. |
|
|
114
|
-
| `/rumo idea <text>` | Note something for later without leaving the topic. |
|
|
126
|
+
| `/rumo idea <text>` | Note something for later without leaving the topic. It comes from the linked item, and a similar idea you dropped is named with its reason. |
|
|
127
|
+
| `/rumo note <text>` | Keep a fact you learned (a conversation, a price, a number) under the item's Notes. |
|
|
115
128
|
| `/rumo link [item]` | Continue an existing item in this session. |
|
|
116
129
|
| `/rumo now` | List what is in progress, with the next step of each. |
|
|
117
130
|
| `/rumo find <text>` | Search past, current and future items. |
|
|
118
131
|
| `/rumo status` | Show where you left off on the linked item. |
|
|
119
132
|
| `/rumo step <text>` | Add a step to the linked item, or to the item it belongs to when none is linked. |
|
|
120
133
|
| `/rumo park [reason]` | Pause the item with an accurate "Left off" and stop updating it here. |
|
|
121
|
-
| `/rumo
|
|
134
|
+
| `/rumo drop [reason]` | Drop the item for good, keeping why. |
|
|
135
|
+
| `/rumo done` | Finish the item (checks the steps, asks first, and offers what is left as ideas). |
|
|
136
|
+
| `/rumo ideas [30d]` | Review the ideas idle for a month: one plan to keep, drop, start or merge each, applied on your yes. |
|
|
122
137
|
| `/rumo unlink` | Stop updating the item from this session. |
|
|
138
|
+
| `/rumo sessions [7d]` | Catch up on the sessions open or active since the last review: create or update their items. |
|
|
123
139
|
|
|
124
|
-
`link`, `status`, `park` and `
|
|
125
|
-
its session id and hook. Other agents get the rest.
|
|
140
|
+
`link`, `status`, `park`, `unlink` and `sessions` need Claude Code with the plugin, because they rely
|
|
141
|
+
on its session id and hook. Other agents get the rest.
|
|
142
|
+
|
|
143
|
+
`/rumo sessions` is for when you worked in several sessions without rumo. From any session, it reads
|
|
144
|
+
what each recent Claude Code session did (where it ran, what you asked, what it edited, the PRs it
|
|
145
|
+
opened) and matches it to an item: the one it is linked to, one that worked on the same branch, or one
|
|
146
|
+
about the same subject, before proposing a new item. Quick questions are proposed as ignored. You see
|
|
147
|
+
one short plan (update, link, create, ignore) and nothing is written until you say yes or adjust it.
|
|
148
|
+
Each review starts where the last one ended (3 days back the first time); `/rumo sessions 7d` looks
|
|
149
|
+
further back. Sessions run by scripts (`claude -p`) and in temporary folders are left out.
|
|
126
150
|
|
|
127
151
|
When you create an item or an idea, the agent checks whether it belongs to an existing group. If
|
|
128
152
|
other ungrouped items look like the same initiative, it suggests a new group (name and color) and
|
|
@@ -134,7 +158,29 @@ happened. If a turn did work and no linked item changed, the plugin reminds the
|
|
|
134
158
|
ends. Open steps are never deleted unless you ask, so half-done work stays in Now. One session can
|
|
135
159
|
follow several topics: when you start something no linked item covers, the agent asks once whether to
|
|
136
160
|
track it as a new item, add it as a step, or leave it out. Left off is one line and Context at most
|
|
137
|
-
three.
|
|
161
|
+
three. After a compaction, even one in the middle of a turn, and when a session is resumed, the agent
|
|
162
|
+
gets its items back at once. `/clear` starts a new, unlinked session; `claude --resume <id>` picks the
|
|
163
|
+
old one up again.
|
|
164
|
+
|
|
165
|
+
Steps added or done since you last looked at an item are marked until you move on to another one:
|
|
166
|
+
`+2 ✓1` in the list, `new` and `done since you looked` in its detail. An answer from `?` that landed
|
|
167
|
+
says `1 answer`. An item that appeared since then says `new`. What you change yourself, in the
|
|
168
|
+
Timeline or with `e`, is never news.
|
|
169
|
+
|
|
170
|
+
`?` runs `claude -p` in the background, away from your CLAUDE.md, plugins and hooks, with web search
|
|
171
|
+
and nothing else, for up to 10 minutes; closing the Timeline does not stop it. The answer (about 350
|
|
172
|
+
words, citing its sources, in your language) ends with three next questions, which `?` offers the next
|
|
173
|
+
time. One question runs at a time per item; one that fails says why and can be asked again. With
|
|
174
|
+
`keep_digging` set in the config (a deep-research script called with `-q <question file> -o <folder>
|
|
175
|
+
-n <rounds>`), a `deep` lens runs it for up to 90 minutes, keeping its raw output in `research/<item>/`
|
|
176
|
+
next to your items.
|
|
177
|
+
|
|
178
|
+
`*` runs the same way, for up to 10 minutes, and a notice says when the ideas (or its questions) are
|
|
179
|
+
ready. Its ideas cross yours, move them somewhere else, or stay close to where you are heading, after
|
|
180
|
+
a quick web search that they answer a real need. A kept idea comes `from:` the idea it builds on, in
|
|
181
|
+
its group, with its one-line summary as Context, so `?`, `b` and `s` work on it like on any other. The
|
|
182
|
+
ones you throw away are remembered and never suggested again. All of it lives in `spark.json`, next
|
|
183
|
+
to your items.
|
|
138
184
|
|
|
139
185
|
You can add, edit, move, check and delete steps in the Timeline too. On your next message, a linked
|
|
140
186
|
session is told which steps changed since its last answer, so it neither redoes nor re-adds them, and
|
|
@@ -149,6 +195,13 @@ current and adds the PRs opened from the branches the item's sessions worked on.
|
|
|
149
195
|
state when it learns one, and you can add, edit, open and delete PRs in the Timeline too; a PR you
|
|
150
196
|
delete is never added back. The list shows how many PRs of each item are still open.
|
|
151
197
|
|
|
198
|
+
rumo also says what git has left of an item's work: files not committed and commits that no remote has,
|
|
199
|
+
in the repositories and branches its sessions worked on. While the Timeline is open, it checks every
|
|
200
|
+
few seconds and shows a `git` line under the item and in its detail (`web-app (main): 2 commits not
|
|
201
|
+
pushed · 1 file not committed`). When several items worked on one branch, it shows on the one updated
|
|
202
|
+
last. When you park or finish an item, the agent tells you too, and it never commits or pushes unless
|
|
203
|
+
you ask.
|
|
204
|
+
|
|
152
205
|
In a session without an item, the agent learns at the start what is in progress in that repository
|
|
153
206
|
(up to three items, with their next step), so it can answer "what is left?"; `rumo now` lists
|
|
154
207
|
everything in progress. Once that session edits files, the agent asks whether to track it. The first
|
|
@@ -176,6 +229,7 @@ Users land on a protected page after logging out.
|
|
|
176
229
|
## Steps
|
|
177
230
|
- [x] [agent] Fix the logout handler
|
|
178
231
|
- [ ] [manual] Ask for a PR review
|
|
232
|
+
- [ ] [waiting] Review from the team
|
|
179
233
|
- [ ] [agent] e2e test for logout
|
|
180
234
|
|
|
181
235
|
## PRs
|
|
@@ -185,8 +239,14 @@ Users land on a protected page after logging out.
|
|
|
185
239
|
- 2026-10-11 10:08 | web-app (main) | 7134aad0-4ba6-4583-9503-c08e98d28270 | /Users/you/repo/web-app
|
|
186
240
|
```
|
|
187
241
|
|
|
188
|
-
- Statuses: `idea`, `doing`, `waiting`, `paused`, `done`. `done: <date>` is set when an item is
|
|
189
|
-
|
|
242
|
+
- Statuses: `idea`, `doing`, `waiting`, `paused`, `done`, `dropped`. `done: <date>` is set when an item is
|
|
243
|
+
finished, `dropped: <date>` when it is dropped (its Left off says why).
|
|
244
|
+
- `from: <slug>` names the item this one came from. `## Notes` holds dated facts you learned
|
|
245
|
+
(`- 2026-10-11 <text>`), `## Explorations` the answers from `?`, and a step that became an item reads
|
|
246
|
+
`- [ ] [item] <text> → <slug>`. Files about an item (research) go in `research/<slug>/`.
|
|
247
|
+
- Steps say who acts: `[agent]` (the AI can do it), `[manual]` (you do it) or `[waiting]` (someone or
|
|
248
|
+
something else must act first: a reviewer, the App Store, a client). When the first open step is
|
|
249
|
+
`[waiting]`, the agent sets the item to `waiting`.
|
|
190
250
|
- PRs are one link per line, with the state in brackets (`open`, `draft`, `merged`, `closed`; none when
|
|
191
251
|
unknown) and an optional title after the link.
|
|
192
252
|
- An idea can be just the frontmatter; it grows when you start working on it.
|
|
@@ -203,6 +263,17 @@ language = "pt-BR" # language of the content the agent writes; defaults to y
|
|
|
203
263
|
tags = ["bug", "feature", "refactor", "research", "spike", "review",
|
|
204
264
|
"infra", "deploy", "meeting", "docs", "support", "tech-debt"]
|
|
205
265
|
ask_to_track = true # offer rumo in agent sessions without an item; unset until you first answer
|
|
266
|
+
step_lines = 2 # open steps shown under each item in the list, 1 to 6
|
|
267
|
+
explore_command = "claude" # what `?` runs; a full path when claude is not on PATH
|
|
268
|
+
keep_digging = "~/bin/keep-digging" # optional: enables the deep lens
|
|
269
|
+
deep_iterations = 3 # keep-digging rounds, 1 to 10
|
|
270
|
+
|
|
271
|
+
[lenses] # what `?` offers, in this order (these are the defaults); write them in your language
|
|
272
|
+
open = "What is still unclear about this, and which of those doubts matters most?"
|
|
273
|
+
pessimistic = "Pessimistic scenario: how does this fail, and what would show it early?"
|
|
274
|
+
validate = "What is the cheapest real test to validate this in one week?"
|
|
275
|
+
competitors = "Who already does this, what do they charge, and where do they fail?"
|
|
276
|
+
smallest = "What is the smallest version that would still solve the problem?"
|
|
206
277
|
|
|
207
278
|
[groups.auth]
|
|
208
279
|
name = "Auth migration"
|
|
@@ -210,7 +281,8 @@ color = "blue" # blue, green, yellow, orange, red, magenta, purple, cyan
|
|
|
210
281
|
```
|
|
211
282
|
|
|
212
283
|
Groups appear in the order of this file in every view. The last view, and when the agent last
|
|
213
|
-
asked about tracking, are remembered in `state.json`, next to `config.toml
|
|
284
|
+
asked about tracking, are remembered in `state.json`, next to `config.toml`; `explore.log`, next to
|
|
285
|
+
them, keeps what `?` and `*` run printed.
|
|
214
286
|
|
|
215
287
|
`RUMO_DIR` and `RUMO_CONFIG` override the folder and the config path.
|
|
216
288
|
|
|
@@ -1,24 +1,30 @@
|
|
|
1
1
|
# rumo
|
|
2
2
|
|
|
3
|
-
**Your
|
|
4
|
-
|
|
5
|
-
Timeline
|
|
3
|
+
**Your agent forgets. rumo doesn't.** rumo keeps what each AI agent session did and what is left, one
|
|
4
|
+
Markdown file per piece of work on your machine, through `/compact`, `/clear` and from one day to the
|
|
5
|
+
next. Run `rumo` to see it all as a Timeline and know what got done, what is left and who acts next,
|
|
6
|
+
without rereading a conversation.
|
|
6
7
|
|
|
7
8
|

|
|
8
9
|
|
|
9
10
|
- **Now**: what you are doing or waiting on, with the next step of each item.
|
|
10
|
-
- **Past**: what you finished in the last two weeks (answers "what did I do?" for a standup).
|
|
11
|
-
- **Later**: ideas and paused work, so nothing you meant to do gets lost.
|
|
11
|
+
- **Past**: what you finished, or decided not to do, in the last two weeks (answers "what did I do?" for a standup).
|
|
12
|
+
- **Later**: ideas and paused work, so nothing you meant to do gets lost. Each idea shows how many days
|
|
13
|
+
it has sat untouched, and fades after 60.
|
|
12
14
|
|
|
13
15
|
Items can belong to a **group** (a project or initiative), shown as a label with its name on its
|
|
14
|
-
color;
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
color; on titles and labels, color only ever means the group. One item is one line, plus its next open
|
|
17
|
+
steps (2 by default, `step_lines` in the config), each saying who acts: `manual`, `agent` or `waiting`, and
|
|
18
|
+
what git has left of its work (`git`). rumo shows
|
|
19
|
+
one horizon at a time (`h` steps Now, Later, Past), named in a banner atop the list, in four views: the **Timeline**,
|
|
20
|
+
**Projects** (one block per group), **Repos** (one block per repository of the item's latest
|
|
21
|
+
agent session) and **Tree** (the families: an item and the ideas and items that came from it). The interface is in English; the content (titles, notes, steps) is in your own
|
|
18
22
|
language.
|
|
19
23
|
|
|
20
24
|
Nothing leaves your machine. There is no server, no database and no sync with Jira or ClickUp
|
|
21
|
-
(ask your agent to update those if you want).
|
|
25
|
+
(ask your agent to update those if you want). The exceptions are `?` and `*`, which you start yourself:
|
|
26
|
+
`?` sends the item's text, and `*` the text of your ideas (with only the titles of the rest), to Claude
|
|
27
|
+
through your own Claude Code (`claude -p`). Nothing else does.
|
|
22
28
|
|
|
23
29
|
## Install
|
|
24
30
|
|
|
@@ -63,20 +69,26 @@ To get new plugin versions on their own, turn on auto-update for the `rumo` mark
|
|
|
63
69
|
|
|
64
70
|
## Use
|
|
65
71
|
|
|
66
|
-
**In the terminal**: `rumo` opens the Timeline
|
|
72
|
+
**In the terminal**: `rumo` opens the Timeline, and `rumo idea "<title>"` notes an idea from any shell
|
|
73
|
+
(`--group <key>` files it), naming up to three similar items it already knows, with the reason for
|
|
74
|
+
the ones you dropped.
|
|
67
75
|
|
|
68
76
|
| Key | Action |
|
|
69
77
|
|---|---|
|
|
70
78
|
| ↑ ↓ | move through the list |
|
|
71
|
-
| Tab | switch between the list, steps, PRs and sessions |
|
|
72
|
-
| `v` | next view: Timeline, Projects, Repos (`1` `2` `3` go straight to one; rumo remembers it) |
|
|
79
|
+
| Tab | switch between the list, steps, PRs, family, explorations and sessions |
|
|
80
|
+
| `v` | next view: Timeline, Projects, Repos, Tree (`1` `2` `3` `4` go straight to one; rumo remembers it) |
|
|
73
81
|
| `h` | next horizon: Now, then Later, then Past, then Now again |
|
|
74
|
-
| `s` | change status (1-
|
|
82
|
+
| `s` | change status (1-6 picks directly); `6` drops the item and asks why, in one line kept as its Left off |
|
|
75
83
|
| `g` | set the group or create one; inside, `r` renames, `c` recolors and `d` deletes the highlighted group (its items stay) |
|
|
76
84
|
| `t` | toggle tags |
|
|
77
85
|
| `n` | capture a new idea |
|
|
86
|
+
| `b` | branch: a new idea that comes from the selected item (same group and tags); Tab instead turns its next open step (the highlighted one, with the steps focused) into an item of its own, and that step checks itself when the new item is done |
|
|
87
|
+
| `?` | ask Claude about the item, in the background: a lens from the config, one of the next questions of its latest answer, or your own question. The answer lands under Explorations, and a notice says when |
|
|
88
|
+
| `*` | spark: Claude reads your ideas, paused and dropped items, oldest first, and brings 3 new ideas in a line each, with the direction it read in them. Throw any away with its number (or space), Enter adds the others to Later; Esc decides later. Sometimes it asks one or two short questions first |
|
|
89
|
+
| Enter | with the family focused: go to that item; with the explorations focused: read the answer (Esc goes back) |
|
|
78
90
|
| `e` | open the item in `$EDITOR` |
|
|
79
|
-
| `a` | add a step to the selected item, after its open steps (below the highlighted one when the steps have focus); in the dialog, Tab
|
|
91
|
+
| `a` | add a step to the selected item, after its open steps (below the highlighted one when the steps have focus); in the dialog, Tab goes through `[agent]`, `[manual]` and `[waiting]` |
|
|
80
92
|
| Enter, shift+↑ ↓, `d`, space | with the steps focused: edit, move, delete (asks first) or check the highlighted step; Esc goes back |
|
|
81
93
|
| `x` | hide or show the done steps of every item (rumo remembers it) |
|
|
82
94
|
| `p` | add a PR link to the selected item (a title may follow the link); in the dialog, Tab switches the state |
|
|
@@ -90,18 +102,30 @@ To get new plugin versions on their own, turn on auto-update for the `rumo` mark
|
|
|
90
102
|
| Command | What it does |
|
|
91
103
|
|---|---|
|
|
92
104
|
| `/rumo new` | Track this session's work as an item. Looks for a similar idea first and offers to promote it. |
|
|
93
|
-
| `/rumo idea <text>` | Note something for later without leaving the topic. |
|
|
105
|
+
| `/rumo idea <text>` | Note something for later without leaving the topic. It comes from the linked item, and a similar idea you dropped is named with its reason. |
|
|
106
|
+
| `/rumo note <text>` | Keep a fact you learned (a conversation, a price, a number) under the item's Notes. |
|
|
94
107
|
| `/rumo link [item]` | Continue an existing item in this session. |
|
|
95
108
|
| `/rumo now` | List what is in progress, with the next step of each. |
|
|
96
109
|
| `/rumo find <text>` | Search past, current and future items. |
|
|
97
110
|
| `/rumo status` | Show where you left off on the linked item. |
|
|
98
111
|
| `/rumo step <text>` | Add a step to the linked item, or to the item it belongs to when none is linked. |
|
|
99
112
|
| `/rumo park [reason]` | Pause the item with an accurate "Left off" and stop updating it here. |
|
|
100
|
-
| `/rumo
|
|
113
|
+
| `/rumo drop [reason]` | Drop the item for good, keeping why. |
|
|
114
|
+
| `/rumo done` | Finish the item (checks the steps, asks first, and offers what is left as ideas). |
|
|
115
|
+
| `/rumo ideas [30d]` | Review the ideas idle for a month: one plan to keep, drop, start or merge each, applied on your yes. |
|
|
101
116
|
| `/rumo unlink` | Stop updating the item from this session. |
|
|
117
|
+
| `/rumo sessions [7d]` | Catch up on the sessions open or active since the last review: create or update their items. |
|
|
102
118
|
|
|
103
|
-
`link`, `status`, `park` and `
|
|
104
|
-
its session id and hook. Other agents get the rest.
|
|
119
|
+
`link`, `status`, `park`, `unlink` and `sessions` need Claude Code with the plugin, because they rely
|
|
120
|
+
on its session id and hook. Other agents get the rest.
|
|
121
|
+
|
|
122
|
+
`/rumo sessions` is for when you worked in several sessions without rumo. From any session, it reads
|
|
123
|
+
what each recent Claude Code session did (where it ran, what you asked, what it edited, the PRs it
|
|
124
|
+
opened) and matches it to an item: the one it is linked to, one that worked on the same branch, or one
|
|
125
|
+
about the same subject, before proposing a new item. Quick questions are proposed as ignored. You see
|
|
126
|
+
one short plan (update, link, create, ignore) and nothing is written until you say yes or adjust it.
|
|
127
|
+
Each review starts where the last one ended (3 days back the first time); `/rumo sessions 7d` looks
|
|
128
|
+
further back. Sessions run by scripts (`claude -p`) and in temporary folders are left out.
|
|
105
129
|
|
|
106
130
|
When you create an item or an idea, the agent checks whether it belongs to an existing group. If
|
|
107
131
|
other ungrouped items look like the same initiative, it suggests a new group (name and color) and
|
|
@@ -113,7 +137,29 @@ happened. If a turn did work and no linked item changed, the plugin reminds the
|
|
|
113
137
|
ends. Open steps are never deleted unless you ask, so half-done work stays in Now. One session can
|
|
114
138
|
follow several topics: when you start something no linked item covers, the agent asks once whether to
|
|
115
139
|
track it as a new item, add it as a step, or leave it out. Left off is one line and Context at most
|
|
116
|
-
three.
|
|
140
|
+
three. After a compaction, even one in the middle of a turn, and when a session is resumed, the agent
|
|
141
|
+
gets its items back at once. `/clear` starts a new, unlinked session; `claude --resume <id>` picks the
|
|
142
|
+
old one up again.
|
|
143
|
+
|
|
144
|
+
Steps added or done since you last looked at an item are marked until you move on to another one:
|
|
145
|
+
`+2 ✓1` in the list, `new` and `done since you looked` in its detail. An answer from `?` that landed
|
|
146
|
+
says `1 answer`. An item that appeared since then says `new`. What you change yourself, in the
|
|
147
|
+
Timeline or with `e`, is never news.
|
|
148
|
+
|
|
149
|
+
`?` runs `claude -p` in the background, away from your CLAUDE.md, plugins and hooks, with web search
|
|
150
|
+
and nothing else, for up to 10 minutes; closing the Timeline does not stop it. The answer (about 350
|
|
151
|
+
words, citing its sources, in your language) ends with three next questions, which `?` offers the next
|
|
152
|
+
time. One question runs at a time per item; one that fails says why and can be asked again. With
|
|
153
|
+
`keep_digging` set in the config (a deep-research script called with `-q <question file> -o <folder>
|
|
154
|
+
-n <rounds>`), a `deep` lens runs it for up to 90 minutes, keeping its raw output in `research/<item>/`
|
|
155
|
+
next to your items.
|
|
156
|
+
|
|
157
|
+
`*` runs the same way, for up to 10 minutes, and a notice says when the ideas (or its questions) are
|
|
158
|
+
ready. Its ideas cross yours, move them somewhere else, or stay close to where you are heading, after
|
|
159
|
+
a quick web search that they answer a real need. A kept idea comes `from:` the idea it builds on, in
|
|
160
|
+
its group, with its one-line summary as Context, so `?`, `b` and `s` work on it like on any other. The
|
|
161
|
+
ones you throw away are remembered and never suggested again. All of it lives in `spark.json`, next
|
|
162
|
+
to your items.
|
|
117
163
|
|
|
118
164
|
You can add, edit, move, check and delete steps in the Timeline too. On your next message, a linked
|
|
119
165
|
session is told which steps changed since its last answer, so it neither redoes nor re-adds them, and
|
|
@@ -128,6 +174,13 @@ current and adds the PRs opened from the branches the item's sessions worked on.
|
|
|
128
174
|
state when it learns one, and you can add, edit, open and delete PRs in the Timeline too; a PR you
|
|
129
175
|
delete is never added back. The list shows how many PRs of each item are still open.
|
|
130
176
|
|
|
177
|
+
rumo also says what git has left of an item's work: files not committed and commits that no remote has,
|
|
178
|
+
in the repositories and branches its sessions worked on. While the Timeline is open, it checks every
|
|
179
|
+
few seconds and shows a `git` line under the item and in its detail (`web-app (main): 2 commits not
|
|
180
|
+
pushed · 1 file not committed`). When several items worked on one branch, it shows on the one updated
|
|
181
|
+
last. When you park or finish an item, the agent tells you too, and it never commits or pushes unless
|
|
182
|
+
you ask.
|
|
183
|
+
|
|
131
184
|
In a session without an item, the agent learns at the start what is in progress in that repository
|
|
132
185
|
(up to three items, with their next step), so it can answer "what is left?"; `rumo now` lists
|
|
133
186
|
everything in progress. Once that session edits files, the agent asks whether to track it. The first
|
|
@@ -155,6 +208,7 @@ Users land on a protected page after logging out.
|
|
|
155
208
|
## Steps
|
|
156
209
|
- [x] [agent] Fix the logout handler
|
|
157
210
|
- [ ] [manual] Ask for a PR review
|
|
211
|
+
- [ ] [waiting] Review from the team
|
|
158
212
|
- [ ] [agent] e2e test for logout
|
|
159
213
|
|
|
160
214
|
## PRs
|
|
@@ -164,8 +218,14 @@ Users land on a protected page after logging out.
|
|
|
164
218
|
- 2026-10-11 10:08 | web-app (main) | 7134aad0-4ba6-4583-9503-c08e98d28270 | /Users/you/repo/web-app
|
|
165
219
|
```
|
|
166
220
|
|
|
167
|
-
- Statuses: `idea`, `doing`, `waiting`, `paused`, `done`. `done: <date>` is set when an item is
|
|
168
|
-
|
|
221
|
+
- Statuses: `idea`, `doing`, `waiting`, `paused`, `done`, `dropped`. `done: <date>` is set when an item is
|
|
222
|
+
finished, `dropped: <date>` when it is dropped (its Left off says why).
|
|
223
|
+
- `from: <slug>` names the item this one came from. `## Notes` holds dated facts you learned
|
|
224
|
+
(`- 2026-10-11 <text>`), `## Explorations` the answers from `?`, and a step that became an item reads
|
|
225
|
+
`- [ ] [item] <text> → <slug>`. Files about an item (research) go in `research/<slug>/`.
|
|
226
|
+
- Steps say who acts: `[agent]` (the AI can do it), `[manual]` (you do it) or `[waiting]` (someone or
|
|
227
|
+
something else must act first: a reviewer, the App Store, a client). When the first open step is
|
|
228
|
+
`[waiting]`, the agent sets the item to `waiting`.
|
|
169
229
|
- PRs are one link per line, with the state in brackets (`open`, `draft`, `merged`, `closed`; none when
|
|
170
230
|
unknown) and an optional title after the link.
|
|
171
231
|
- An idea can be just the frontmatter; it grows when you start working on it.
|
|
@@ -182,6 +242,17 @@ language = "pt-BR" # language of the content the agent writes; defaults to y
|
|
|
182
242
|
tags = ["bug", "feature", "refactor", "research", "spike", "review",
|
|
183
243
|
"infra", "deploy", "meeting", "docs", "support", "tech-debt"]
|
|
184
244
|
ask_to_track = true # offer rumo in agent sessions without an item; unset until you first answer
|
|
245
|
+
step_lines = 2 # open steps shown under each item in the list, 1 to 6
|
|
246
|
+
explore_command = "claude" # what `?` runs; a full path when claude is not on PATH
|
|
247
|
+
keep_digging = "~/bin/keep-digging" # optional: enables the deep lens
|
|
248
|
+
deep_iterations = 3 # keep-digging rounds, 1 to 10
|
|
249
|
+
|
|
250
|
+
[lenses] # what `?` offers, in this order (these are the defaults); write them in your language
|
|
251
|
+
open = "What is still unclear about this, and which of those doubts matters most?"
|
|
252
|
+
pessimistic = "Pessimistic scenario: how does this fail, and what would show it early?"
|
|
253
|
+
validate = "What is the cheapest real test to validate this in one week?"
|
|
254
|
+
competitors = "Who already does this, what do they charge, and where do they fail?"
|
|
255
|
+
smallest = "What is the smallest version that would still solve the problem?"
|
|
185
256
|
|
|
186
257
|
[groups.auth]
|
|
187
258
|
name = "Auth migration"
|
|
@@ -189,7 +260,8 @@ color = "blue" # blue, green, yellow, orange, red, magenta, purple, cyan
|
|
|
189
260
|
```
|
|
190
261
|
|
|
191
262
|
Groups appear in the order of this file in every view. The last view, and when the agent last
|
|
192
|
-
asked about tracking, are remembered in `state.json`, next to `config.toml
|
|
263
|
+
asked about tracking, are remembered in `state.json`, next to `config.toml`; `explore.log`, next to
|
|
264
|
+
them, keeps what `?` and `*` run printed.
|
|
193
265
|
|
|
194
266
|
`RUMO_DIR` and `RUMO_CONFIG` override the folder and the config path.
|
|
195
267
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "rumo-cli"
|
|
3
|
-
version = "0.
|
|
4
|
-
description = "Your
|
|
3
|
+
version = "0.6.0"
|
|
4
|
+
description = "Your agent forgets, rumo doesn't: what each AI agent session did and what is left, in Markdown files and a terminal Timeline"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.11"
|
|
7
7
|
license = "MIT"
|