rumo-cli 0.5.0__tar.gz → 0.6.1__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.5.0 → rumo_cli-0.6.1}/PKG-INFO +88 -24
- {rumo_cli-0.5.0 → rumo_cli-0.6.1}/README.md +86 -22
- {rumo_cli-0.5.0 → rumo_cli-0.6.1}/pyproject.toml +2 -2
- {rumo_cli-0.5.0 → rumo_cli-0.6.1}/src/rumo/app.py +768 -39
- {rumo_cli-0.5.0 → rumo_cli-0.6.1}/src/rumo/cli.py +103 -10
- {rumo_cli-0.5.0 → rumo_cli-0.6.1}/src/rumo/config.py +43 -0
- rumo_cli-0.6.1/src/rumo/explore.py +316 -0
- rumo_cli-0.6.1/src/rumo/git.py +89 -0
- {rumo_cli-0.5.0 → rumo_cli-0.6.1}/src/rumo/hook.py +25 -6
- {rumo_cli-0.5.0 → rumo_cli-0.6.1}/src/rumo/items.py +337 -13
- {rumo_cli-0.5.0 → rumo_cli-0.6.1}/src/rumo/sessions.py +2 -2
- rumo_cli-0.6.1/src/rumo/spark.py +307 -0
- {rumo_cli-0.5.0 → rumo_cli-0.6.1}/.gitignore +0 -0
- {rumo_cli-0.5.0 → rumo_cli-0.6.1}/LICENSE +0 -0
- {rumo_cli-0.5.0 → rumo_cli-0.6.1}/src/rumo/__init__.py +0 -0
- {rumo_cli-0.5.0 → rumo_cli-0.6.1}/src/rumo/prs.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.1
|
|
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
|
|
|
@@ -74,7 +80,8 @@ system language.
|
|
|
74
80
|
npx skills add pedrobuzzi/rumo
|
|
75
81
|
```
|
|
76
82
|
|
|
77
|
-
**Update**: `uv tool upgrade rumo-cli` (or `pipx upgrade rumo-cli`, `brew upgrade rumo
|
|
83
|
+
**Update**: `uv tool upgrade rumo-cli` (or `pipx upgrade rumo-cli`, `brew upgrade pedrobuzzi/tap/rumo`: the full
|
|
84
|
+
name lets Homebrew 7 trust the tap's formula), and
|
|
78
85
|
`/plugin marketplace update rumo` in Claude Code, then `/reload-plugins` in sessions already open.
|
|
79
86
|
To get new plugin versions on their own, turn on auto-update for the `rumo` marketplace in `/plugin`
|
|
80
87
|
(Marketplaces tab); the `rumo` command updates with your package manager.
|
|
@@ -84,20 +91,26 @@ To get new plugin versions on their own, turn on auto-update for the `rumo` mark
|
|
|
84
91
|
|
|
85
92
|
## Use
|
|
86
93
|
|
|
87
|
-
**In the terminal**: `rumo` opens the Timeline
|
|
94
|
+
**In the terminal**: `rumo` opens the Timeline, and `rumo idea "<title>"` notes an idea from any shell
|
|
95
|
+
(`--group <key>` files it), naming up to three similar items it already knows, with the reason for
|
|
96
|
+
the ones you dropped.
|
|
88
97
|
|
|
89
98
|
| Key | Action |
|
|
90
99
|
|---|---|
|
|
91
100
|
| ↑ ↓ | 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) |
|
|
101
|
+
| Tab | switch between the list, steps, PRs, family, explorations and sessions |
|
|
102
|
+
| `v` | next view: Timeline, Projects, Repos, Tree (`1` `2` `3` `4` go straight to one; rumo remembers it) |
|
|
94
103
|
| `h` | next horizon: Now, then Later, then Past, then Now again |
|
|
95
|
-
| `s` | change status (1-
|
|
104
|
+
| `s` | change status (1-6 picks directly); `6` drops the item and asks why, in one line kept as its Left off |
|
|
96
105
|
| `g` | set the group or create one; inside, `r` renames, `c` recolors and `d` deletes the highlighted group (its items stay) |
|
|
97
106
|
| `t` | toggle tags |
|
|
98
107
|
| `n` | capture a new idea |
|
|
108
|
+
| `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 |
|
|
109
|
+
| `?` | 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 |
|
|
110
|
+
| `*` | 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 |
|
|
111
|
+
| Enter | with the family focused: go to that item; with the explorations focused: read the answer (Esc goes back) |
|
|
99
112
|
| `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
|
|
113
|
+
| `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
114
|
| Enter, shift+↑ ↓, `d`, space | with the steps focused: edit, move, delete (asks first) or check the highlighted step; Esc goes back |
|
|
102
115
|
| `x` | hide or show the done steps of every item (rumo remembers it) |
|
|
103
116
|
| `p` | add a PR link to the selected item (a title may follow the link); in the dialog, Tab switches the state |
|
|
@@ -111,14 +124,17 @@ To get new plugin versions on their own, turn on auto-update for the `rumo` mark
|
|
|
111
124
|
| Command | What it does |
|
|
112
125
|
|---|---|
|
|
113
126
|
| `/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. |
|
|
127
|
+
| `/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. |
|
|
128
|
+
| `/rumo note <text>` | Keep a fact you learned (a conversation, a price, a number) under the item's Notes. |
|
|
115
129
|
| `/rumo link [item]` | Continue an existing item in this session. |
|
|
116
130
|
| `/rumo now` | List what is in progress, with the next step of each. |
|
|
117
131
|
| `/rumo find <text>` | Search past, current and future items. |
|
|
118
132
|
| `/rumo status` | Show where you left off on the linked item. |
|
|
119
133
|
| `/rumo step <text>` | Add a step to the linked item, or to the item it belongs to when none is linked. |
|
|
120
134
|
| `/rumo park [reason]` | Pause the item with an accurate "Left off" and stop updating it here. |
|
|
121
|
-
| `/rumo
|
|
135
|
+
| `/rumo drop [reason]` | Drop the item for good, keeping why. |
|
|
136
|
+
| `/rumo done` | Finish the item (checks the steps, asks first, and offers what is left as ideas). |
|
|
137
|
+
| `/rumo ideas [30d]` | Review the ideas idle for a month: one plan to keep, drop, start or merge each, applied on your yes. |
|
|
122
138
|
| `/rumo unlink` | Stop updating the item from this session. |
|
|
123
139
|
| `/rumo sessions [7d]` | Catch up on the sessions open or active since the last review: create or update their items. |
|
|
124
140
|
|
|
@@ -143,7 +159,29 @@ happened. If a turn did work and no linked item changed, the plugin reminds the
|
|
|
143
159
|
ends. Open steps are never deleted unless you ask, so half-done work stays in Now. One session can
|
|
144
160
|
follow several topics: when you start something no linked item covers, the agent asks once whether to
|
|
145
161
|
track it as a new item, add it as a step, or leave it out. Left off is one line and Context at most
|
|
146
|
-
three.
|
|
162
|
+
three. After a compaction, even one in the middle of a turn, and when a session is resumed, the agent
|
|
163
|
+
gets its items back at once. `/clear` starts a new, unlinked session; `claude --resume <id>` picks the
|
|
164
|
+
old one up again.
|
|
165
|
+
|
|
166
|
+
Steps added or done since you last looked at an item are marked until you move on to another one:
|
|
167
|
+
`+2 ✓1` in the list, `new` and `done since you looked` in its detail. An answer from `?` that landed
|
|
168
|
+
says `1 answer`. An item that appeared since then says `new`. What you change yourself, in the
|
|
169
|
+
Timeline or with `e`, is never news.
|
|
170
|
+
|
|
171
|
+
`?` runs `claude -p` in the background, away from your CLAUDE.md, plugins and hooks, with web search
|
|
172
|
+
and nothing else, for up to 10 minutes; closing the Timeline does not stop it. The answer (about 350
|
|
173
|
+
words, citing its sources, in your language) ends with three next questions, which `?` offers the next
|
|
174
|
+
time. One question runs at a time per item; one that fails says why and can be asked again. With
|
|
175
|
+
`keep_digging` set in the config (a deep-research script called with `-q <question file> -o <folder>
|
|
176
|
+
-n <rounds>`), a `deep` lens runs it for up to 90 minutes, keeping its raw output in `research/<item>/`
|
|
177
|
+
next to your items.
|
|
178
|
+
|
|
179
|
+
`*` runs the same way, for up to 10 minutes, and a notice says when the ideas (or its questions) are
|
|
180
|
+
ready. Its ideas cross yours, move them somewhere else, or stay close to where you are heading, after
|
|
181
|
+
a quick web search that they answer a real need. A kept idea comes `from:` the idea it builds on, in
|
|
182
|
+
its group, with its one-line summary as Context, so `?`, `b` and `s` work on it like on any other. The
|
|
183
|
+
ones you throw away are remembered and never suggested again. All of it lives in `spark.json`, next
|
|
184
|
+
to your items.
|
|
147
185
|
|
|
148
186
|
You can add, edit, move, check and delete steps in the Timeline too. On your next message, a linked
|
|
149
187
|
session is told which steps changed since its last answer, so it neither redoes nor re-adds them, and
|
|
@@ -158,6 +196,13 @@ current and adds the PRs opened from the branches the item's sessions worked on.
|
|
|
158
196
|
state when it learns one, and you can add, edit, open and delete PRs in the Timeline too; a PR you
|
|
159
197
|
delete is never added back. The list shows how many PRs of each item are still open.
|
|
160
198
|
|
|
199
|
+
rumo also says what git has left of an item's work: files not committed and commits that no remote has,
|
|
200
|
+
in the repositories and branches its sessions worked on. While the Timeline is open, it checks every
|
|
201
|
+
few seconds and shows a `git` line under the item and in its detail (`web-app (main): 2 commits not
|
|
202
|
+
pushed · 1 file not committed`). When several items worked on one branch, it shows on the one updated
|
|
203
|
+
last. When you park or finish an item, the agent tells you too, and it never commits or pushes unless
|
|
204
|
+
you ask.
|
|
205
|
+
|
|
161
206
|
In a session without an item, the agent learns at the start what is in progress in that repository
|
|
162
207
|
(up to three items, with their next step), so it can answer "what is left?"; `rumo now` lists
|
|
163
208
|
everything in progress. Once that session edits files, the agent asks whether to track it. The first
|
|
@@ -185,6 +230,7 @@ Users land on a protected page after logging out.
|
|
|
185
230
|
## Steps
|
|
186
231
|
- [x] [agent] Fix the logout handler
|
|
187
232
|
- [ ] [manual] Ask for a PR review
|
|
233
|
+
- [ ] [waiting] Review from the team
|
|
188
234
|
- [ ] [agent] e2e test for logout
|
|
189
235
|
|
|
190
236
|
## PRs
|
|
@@ -194,8 +240,14 @@ Users land on a protected page after logging out.
|
|
|
194
240
|
- 2026-10-11 10:08 | web-app (main) | 7134aad0-4ba6-4583-9503-c08e98d28270 | /Users/you/repo/web-app
|
|
195
241
|
```
|
|
196
242
|
|
|
197
|
-
- Statuses: `idea`, `doing`, `waiting`, `paused`, `done`. `done: <date>` is set when an item is
|
|
198
|
-
|
|
243
|
+
- Statuses: `idea`, `doing`, `waiting`, `paused`, `done`, `dropped`. `done: <date>` is set when an item is
|
|
244
|
+
finished, `dropped: <date>` when it is dropped (its Left off says why).
|
|
245
|
+
- `from: <slug>` names the item this one came from. `## Notes` holds dated facts you learned
|
|
246
|
+
(`- 2026-10-11 <text>`), `## Explorations` the answers from `?`, and a step that became an item reads
|
|
247
|
+
`- [ ] [item] <text> → <slug>`. Files about an item (research) go in `research/<slug>/`.
|
|
248
|
+
- Steps say who acts: `[agent]` (the AI can do it), `[manual]` (you do it) or `[waiting]` (someone or
|
|
249
|
+
something else must act first: a reviewer, the App Store, a client). When the first open step is
|
|
250
|
+
`[waiting]`, the agent sets the item to `waiting`.
|
|
199
251
|
- PRs are one link per line, with the state in brackets (`open`, `draft`, `merged`, `closed`; none when
|
|
200
252
|
unknown) and an optional title after the link.
|
|
201
253
|
- An idea can be just the frontmatter; it grows when you start working on it.
|
|
@@ -212,6 +264,17 @@ language = "pt-BR" # language of the content the agent writes; defaults to y
|
|
|
212
264
|
tags = ["bug", "feature", "refactor", "research", "spike", "review",
|
|
213
265
|
"infra", "deploy", "meeting", "docs", "support", "tech-debt"]
|
|
214
266
|
ask_to_track = true # offer rumo in agent sessions without an item; unset until you first answer
|
|
267
|
+
step_lines = 2 # open steps shown under each item in the list, 1 to 6
|
|
268
|
+
explore_command = "claude" # what `?` runs; a full path when claude is not on PATH
|
|
269
|
+
keep_digging = "~/bin/keep-digging" # optional: enables the deep lens
|
|
270
|
+
deep_iterations = 3 # keep-digging rounds, 1 to 10
|
|
271
|
+
|
|
272
|
+
[lenses] # what `?` offers, in this order (these are the defaults); write them in your language
|
|
273
|
+
open = "What is still unclear about this, and which of those doubts matters most?"
|
|
274
|
+
pessimistic = "Pessimistic scenario: how does this fail, and what would show it early?"
|
|
275
|
+
validate = "What is the cheapest real test to validate this in one week?"
|
|
276
|
+
competitors = "Who already does this, what do they charge, and where do they fail?"
|
|
277
|
+
smallest = "What is the smallest version that would still solve the problem?"
|
|
215
278
|
|
|
216
279
|
[groups.auth]
|
|
217
280
|
name = "Auth migration"
|
|
@@ -219,7 +282,8 @@ color = "blue" # blue, green, yellow, orange, red, magenta, purple, cyan
|
|
|
219
282
|
```
|
|
220
283
|
|
|
221
284
|
Groups appear in the order of this file in every view. The last view, and when the agent last
|
|
222
|
-
asked about tracking, are remembered in `state.json`, next to `config.toml
|
|
285
|
+
asked about tracking, are remembered in `state.json`, next to `config.toml`; `explore.log`, next to
|
|
286
|
+
them, keeps what `?` and `*` run printed.
|
|
223
287
|
|
|
224
288
|
`RUMO_DIR` and `RUMO_CONFIG` override the folder and the config path.
|
|
225
289
|
|
|
@@ -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
|
|
|
@@ -53,7 +59,8 @@ system language.
|
|
|
53
59
|
npx skills add pedrobuzzi/rumo
|
|
54
60
|
```
|
|
55
61
|
|
|
56
|
-
**Update**: `uv tool upgrade rumo-cli` (or `pipx upgrade rumo-cli`, `brew upgrade rumo
|
|
62
|
+
**Update**: `uv tool upgrade rumo-cli` (or `pipx upgrade rumo-cli`, `brew upgrade pedrobuzzi/tap/rumo`: the full
|
|
63
|
+
name lets Homebrew 7 trust the tap's formula), and
|
|
57
64
|
`/plugin marketplace update rumo` in Claude Code, then `/reload-plugins` in sessions already open.
|
|
58
65
|
To get new plugin versions on their own, turn on auto-update for the `rumo` marketplace in `/plugin`
|
|
59
66
|
(Marketplaces tab); the `rumo` command updates with your package manager.
|
|
@@ -63,20 +70,26 @@ To get new plugin versions on their own, turn on auto-update for the `rumo` mark
|
|
|
63
70
|
|
|
64
71
|
## Use
|
|
65
72
|
|
|
66
|
-
**In the terminal**: `rumo` opens the Timeline
|
|
73
|
+
**In the terminal**: `rumo` opens the Timeline, and `rumo idea "<title>"` notes an idea from any shell
|
|
74
|
+
(`--group <key>` files it), naming up to three similar items it already knows, with the reason for
|
|
75
|
+
the ones you dropped.
|
|
67
76
|
|
|
68
77
|
| Key | Action |
|
|
69
78
|
|---|---|
|
|
70
79
|
| ↑ ↓ | 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) |
|
|
80
|
+
| Tab | switch between the list, steps, PRs, family, explorations and sessions |
|
|
81
|
+
| `v` | next view: Timeline, Projects, Repos, Tree (`1` `2` `3` `4` go straight to one; rumo remembers it) |
|
|
73
82
|
| `h` | next horizon: Now, then Later, then Past, then Now again |
|
|
74
|
-
| `s` | change status (1-
|
|
83
|
+
| `s` | change status (1-6 picks directly); `6` drops the item and asks why, in one line kept as its Left off |
|
|
75
84
|
| `g` | set the group or create one; inside, `r` renames, `c` recolors and `d` deletes the highlighted group (its items stay) |
|
|
76
85
|
| `t` | toggle tags |
|
|
77
86
|
| `n` | capture a new idea |
|
|
87
|
+
| `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 |
|
|
88
|
+
| `?` | 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 |
|
|
89
|
+
| `*` | 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 |
|
|
90
|
+
| Enter | with the family focused: go to that item; with the explorations focused: read the answer (Esc goes back) |
|
|
78
91
|
| `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
|
|
92
|
+
| `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
93
|
| Enter, shift+↑ ↓, `d`, space | with the steps focused: edit, move, delete (asks first) or check the highlighted step; Esc goes back |
|
|
81
94
|
| `x` | hide or show the done steps of every item (rumo remembers it) |
|
|
82
95
|
| `p` | add a PR link to the selected item (a title may follow the link); in the dialog, Tab switches the state |
|
|
@@ -90,14 +103,17 @@ To get new plugin versions on their own, turn on auto-update for the `rumo` mark
|
|
|
90
103
|
| Command | What it does |
|
|
91
104
|
|---|---|
|
|
92
105
|
| `/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. |
|
|
106
|
+
| `/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. |
|
|
107
|
+
| `/rumo note <text>` | Keep a fact you learned (a conversation, a price, a number) under the item's Notes. |
|
|
94
108
|
| `/rumo link [item]` | Continue an existing item in this session. |
|
|
95
109
|
| `/rumo now` | List what is in progress, with the next step of each. |
|
|
96
110
|
| `/rumo find <text>` | Search past, current and future items. |
|
|
97
111
|
| `/rumo status` | Show where you left off on the linked item. |
|
|
98
112
|
| `/rumo step <text>` | Add a step to the linked item, or to the item it belongs to when none is linked. |
|
|
99
113
|
| `/rumo park [reason]` | Pause the item with an accurate "Left off" and stop updating it here. |
|
|
100
|
-
| `/rumo
|
|
114
|
+
| `/rumo drop [reason]` | Drop the item for good, keeping why. |
|
|
115
|
+
| `/rumo done` | Finish the item (checks the steps, asks first, and offers what is left as ideas). |
|
|
116
|
+
| `/rumo ideas [30d]` | Review the ideas idle for a month: one plan to keep, drop, start or merge each, applied on your yes. |
|
|
101
117
|
| `/rumo unlink` | Stop updating the item from this session. |
|
|
102
118
|
| `/rumo sessions [7d]` | Catch up on the sessions open or active since the last review: create or update their items. |
|
|
103
119
|
|
|
@@ -122,7 +138,29 @@ happened. If a turn did work and no linked item changed, the plugin reminds the
|
|
|
122
138
|
ends. Open steps are never deleted unless you ask, so half-done work stays in Now. One session can
|
|
123
139
|
follow several topics: when you start something no linked item covers, the agent asks once whether to
|
|
124
140
|
track it as a new item, add it as a step, or leave it out. Left off is one line and Context at most
|
|
125
|
-
three.
|
|
141
|
+
three. After a compaction, even one in the middle of a turn, and when a session is resumed, the agent
|
|
142
|
+
gets its items back at once. `/clear` starts a new, unlinked session; `claude --resume <id>` picks the
|
|
143
|
+
old one up again.
|
|
144
|
+
|
|
145
|
+
Steps added or done since you last looked at an item are marked until you move on to another one:
|
|
146
|
+
`+2 ✓1` in the list, `new` and `done since you looked` in its detail. An answer from `?` that landed
|
|
147
|
+
says `1 answer`. An item that appeared since then says `new`. What you change yourself, in the
|
|
148
|
+
Timeline or with `e`, is never news.
|
|
149
|
+
|
|
150
|
+
`?` runs `claude -p` in the background, away from your CLAUDE.md, plugins and hooks, with web search
|
|
151
|
+
and nothing else, for up to 10 minutes; closing the Timeline does not stop it. The answer (about 350
|
|
152
|
+
words, citing its sources, in your language) ends with three next questions, which `?` offers the next
|
|
153
|
+
time. One question runs at a time per item; one that fails says why and can be asked again. With
|
|
154
|
+
`keep_digging` set in the config (a deep-research script called with `-q <question file> -o <folder>
|
|
155
|
+
-n <rounds>`), a `deep` lens runs it for up to 90 minutes, keeping its raw output in `research/<item>/`
|
|
156
|
+
next to your items.
|
|
157
|
+
|
|
158
|
+
`*` runs the same way, for up to 10 minutes, and a notice says when the ideas (or its questions) are
|
|
159
|
+
ready. Its ideas cross yours, move them somewhere else, or stay close to where you are heading, after
|
|
160
|
+
a quick web search that they answer a real need. A kept idea comes `from:` the idea it builds on, in
|
|
161
|
+
its group, with its one-line summary as Context, so `?`, `b` and `s` work on it like on any other. The
|
|
162
|
+
ones you throw away are remembered and never suggested again. All of it lives in `spark.json`, next
|
|
163
|
+
to your items.
|
|
126
164
|
|
|
127
165
|
You can add, edit, move, check and delete steps in the Timeline too. On your next message, a linked
|
|
128
166
|
session is told which steps changed since its last answer, so it neither redoes nor re-adds them, and
|
|
@@ -137,6 +175,13 @@ current and adds the PRs opened from the branches the item's sessions worked on.
|
|
|
137
175
|
state when it learns one, and you can add, edit, open and delete PRs in the Timeline too; a PR you
|
|
138
176
|
delete is never added back. The list shows how many PRs of each item are still open.
|
|
139
177
|
|
|
178
|
+
rumo also says what git has left of an item's work: files not committed and commits that no remote has,
|
|
179
|
+
in the repositories and branches its sessions worked on. While the Timeline is open, it checks every
|
|
180
|
+
few seconds and shows a `git` line under the item and in its detail (`web-app (main): 2 commits not
|
|
181
|
+
pushed · 1 file not committed`). When several items worked on one branch, it shows on the one updated
|
|
182
|
+
last. When you park or finish an item, the agent tells you too, and it never commits or pushes unless
|
|
183
|
+
you ask.
|
|
184
|
+
|
|
140
185
|
In a session without an item, the agent learns at the start what is in progress in that repository
|
|
141
186
|
(up to three items, with their next step), so it can answer "what is left?"; `rumo now` lists
|
|
142
187
|
everything in progress. Once that session edits files, the agent asks whether to track it. The first
|
|
@@ -164,6 +209,7 @@ Users land on a protected page after logging out.
|
|
|
164
209
|
## Steps
|
|
165
210
|
- [x] [agent] Fix the logout handler
|
|
166
211
|
- [ ] [manual] Ask for a PR review
|
|
212
|
+
- [ ] [waiting] Review from the team
|
|
167
213
|
- [ ] [agent] e2e test for logout
|
|
168
214
|
|
|
169
215
|
## PRs
|
|
@@ -173,8 +219,14 @@ Users land on a protected page after logging out.
|
|
|
173
219
|
- 2026-10-11 10:08 | web-app (main) | 7134aad0-4ba6-4583-9503-c08e98d28270 | /Users/you/repo/web-app
|
|
174
220
|
```
|
|
175
221
|
|
|
176
|
-
- Statuses: `idea`, `doing`, `waiting`, `paused`, `done`. `done: <date>` is set when an item is
|
|
177
|
-
|
|
222
|
+
- Statuses: `idea`, `doing`, `waiting`, `paused`, `done`, `dropped`. `done: <date>` is set when an item is
|
|
223
|
+
finished, `dropped: <date>` when it is dropped (its Left off says why).
|
|
224
|
+
- `from: <slug>` names the item this one came from. `## Notes` holds dated facts you learned
|
|
225
|
+
(`- 2026-10-11 <text>`), `## Explorations` the answers from `?`, and a step that became an item reads
|
|
226
|
+
`- [ ] [item] <text> → <slug>`. Files about an item (research) go in `research/<slug>/`.
|
|
227
|
+
- Steps say who acts: `[agent]` (the AI can do it), `[manual]` (you do it) or `[waiting]` (someone or
|
|
228
|
+
something else must act first: a reviewer, the App Store, a client). When the first open step is
|
|
229
|
+
`[waiting]`, the agent sets the item to `waiting`.
|
|
178
230
|
- PRs are one link per line, with the state in brackets (`open`, `draft`, `merged`, `closed`; none when
|
|
179
231
|
unknown) and an optional title after the link.
|
|
180
232
|
- An idea can be just the frontmatter; it grows when you start working on it.
|
|
@@ -191,6 +243,17 @@ language = "pt-BR" # language of the content the agent writes; defaults to y
|
|
|
191
243
|
tags = ["bug", "feature", "refactor", "research", "spike", "review",
|
|
192
244
|
"infra", "deploy", "meeting", "docs", "support", "tech-debt"]
|
|
193
245
|
ask_to_track = true # offer rumo in agent sessions without an item; unset until you first answer
|
|
246
|
+
step_lines = 2 # open steps shown under each item in the list, 1 to 6
|
|
247
|
+
explore_command = "claude" # what `?` runs; a full path when claude is not on PATH
|
|
248
|
+
keep_digging = "~/bin/keep-digging" # optional: enables the deep lens
|
|
249
|
+
deep_iterations = 3 # keep-digging rounds, 1 to 10
|
|
250
|
+
|
|
251
|
+
[lenses] # what `?` offers, in this order (these are the defaults); write them in your language
|
|
252
|
+
open = "What is still unclear about this, and which of those doubts matters most?"
|
|
253
|
+
pessimistic = "Pessimistic scenario: how does this fail, and what would show it early?"
|
|
254
|
+
validate = "What is the cheapest real test to validate this in one week?"
|
|
255
|
+
competitors = "Who already does this, what do they charge, and where do they fail?"
|
|
256
|
+
smallest = "What is the smallest version that would still solve the problem?"
|
|
194
257
|
|
|
195
258
|
[groups.auth]
|
|
196
259
|
name = "Auth migration"
|
|
@@ -198,7 +261,8 @@ color = "blue" # blue, green, yellow, orange, red, magenta, purple, cyan
|
|
|
198
261
|
```
|
|
199
262
|
|
|
200
263
|
Groups appear in the order of this file in every view. The last view, and when the agent last
|
|
201
|
-
asked about tracking, are remembered in `state.json`, next to `config.toml
|
|
264
|
+
asked about tracking, are remembered in `state.json`, next to `config.toml`; `explore.log`, next to
|
|
265
|
+
them, keeps what `?` and `*` run printed.
|
|
202
266
|
|
|
203
267
|
`RUMO_DIR` and `RUMO_CONFIG` override the folder and the config path.
|
|
204
268
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "rumo-cli"
|
|
3
|
-
version = "0.
|
|
4
|
-
description = "Your
|
|
3
|
+
version = "0.6.1"
|
|
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"
|