| name | todo |
| description | Hantera projektets todos i `todo.md` + `todos/`. Använd när användaren frågar/ber om todos — t.ex. 'todos', 'översikt', 'vad är nästa todo', 'vilka todos har vi', 'visa todo #N', 'markera #N klar', 'avfärda #N', 'skapa todo …'. Subkommandon: (tomt)=översikt/dashboard, list, next, show <nr>, done <nr>, reject <nr>, new <titel>. |
/todo — todo-hantering
Todos finns på två platser och måste hållas synkade:
todo.md (repo-roten) — index med tabellerna: Aktiva, Uppföljningar
(datum-bundna manuella check-ins), Klara, Avfärdade / sammanslagna.
Rad 7 har Senast uppdaterad: YYYY-MM-DD (+#NN <hint>) — uppdatera vid varje ändring.
todos/<NN>-<slug>.md — en fil per todo med full analys.
todos/done/ — klara
todos/rejected/ — avfärdade / sammanslagna
Konventionsdokument: todos/README.md.
Uppföljningar-sektionen är en kronologisk lista över datum-bundna
manuella åtgärder som inte går att autoschemalägga (kräver lokala MCP:s,
SSH-nycklar, eller mänsklig bedömning). Lägg till en rad här när du
upptäcker ett framtida datum att komma ihåg — t.ex. mätperiod-slut, soak-
end, ramp-up av feature flag. Format: | YYYY-MM-DD | <åtgärd> | [#NN](...)|.
Tolka argumentet
Argumentet efter /todo (ord 1) avgör subkommando:
| Argument | Subkommando |
|---|
| (tomt) | Översikt / dashboard |
list | Lista aktiva |
next | Rekommendera nästa |
show <nr> | Visa todo-fil |
done <nr> | Markera klar |
reject <nr> | Avfärda |
new <titel> | Skapa ny todo |
Numret matchas mot filnamnets prefix (<NN>-...).
(tomt) — översikt
Ge en kompakt dashboard. Läs bara todo.md — inga todo-filer öppnas.
- Read
todo.md.
- Räknarrad överst: antal rader i Aktiva- / Klara- / Avfärdade-tabellerna —
Aktiva: X · Klara: Y · Avfärdade: Z.
- ▶ Aktionerbara nu — klassificera Aktiva enligt samma väntar-regler som
list nedan; lista de aktionerbara (#NN Titel — kort status).
Om inga: skriv "(inga — <kort skäl>)".
- ⏳ Väntande — resten av Aktiva, sorterat på närmaste framtida datum (närmast först).
- 📅 Nästa uppföljning — närmaste rad i Uppföljningar-sektionen, med "(om N d)".
Flagga förfallna (datum <
currentDate) tydligt med ⚠ — då är en check-in glömd.
- 💡 Nästa — en mening: den första aktionerbara (jfr
next), eller
"inget aktionerbart nu — <närmaste avblockning>" om alla väntar.
list
- Read
todo.md.
- Klassificera varje rad i Aktiva-tabellen som aktionerbar eller
väntande. En todo är väntande om Status-kolumnen indikerar väntan:
- Innehåller "väntar på", "soak", "mätperiod", "pilot", "30d", "60d", "90d", "passiv", "till YYYY-MM-DD"
- Har ett framtida datum (>
currentDate) i Status-kolumnen
- "Blockerad av: #N" där #N inte är klar (kolla Beroenden-sektionen)
- Visa två rubriker (hoppa över rubriken om gruppen är tom):
- Aktionerbara nu —
#NN — Titel — Status per rad
- Väntande / på hold — samma format; sortera efter eventuellt framtida datum (närmast först)
- Om "Beroenden" är icke-tom, nämn de relevanta i en mening efter listan.
- Kolla "Uppföljningar"-sektionen: om någon rad har datum inom 14 dagar
från
currentDate, nämn den/dem ("Nästa uppföljning: YYYY-MM-DD — <åtgärd>").
Om en uppföljning är förfallen (datum < currentDate), flagga det
tydligt med ⚠ — det betyder en check-in är glömd.
- Inga andra filer öppnas — bara index.
next
- Read
todo.md — fokus på Aktiva-tabellen + sektionen Föreslagen ordning.
- Gå igenom listan i ordning och hitta första todo som är aktionerbar nu.
En todo räknas som blockerad om Status-kolumnen indikerar väntan:
- Innehåller "väntar på", "soak", "mätperiod", "30d", "60d", "90d", "till YYYY-MM-DD"
- Har en datumstämpel framåt i tiden jämfört med
currentDate från system-context
- "Blockerad av: #N" där #N inte är klar
- Rekommendera den första aktionerbara. Motivera kort (2–3 meningar): vad det är, varför den är logisk nu, eventuell synergi med nyligen klar todo.
- Om alla är blockerade: säg det, lista närmaste avblockning (datum) per blockerad rad.
- Kolla "Uppföljningar"-sektionen: om en uppföljning är förfallen
(datum < currentDate), nämn den separat — det är sannolikt vad
användaren bör göra istället för en aktiv todo.
show
- Hitta filen: glob
todos/<NN>-*.md → todos/done/<NN>-*.md → todos/rejected/<NN>-*.md.
Använd Bash ls todos/<NN>-*.md todos/done/<NN>-*.md todos/rejected/<NN>-*.md 2>/dev/null eller motsvarande glob.
- Read den fil som matchar.
- Visa innehållet. För långa filer (>200 rader): summera Sammanfattning/Status/Plan, men visa hela bara om användaren ber.
done
Alla steg krävs — det här är hela poängen med skillen.
- Hitta filen:
todos/<NN>-*.md (måste ligga i aktiv-mappen — om den redan är i done/ eller rejected/, stoppa och säg det).
- Uppdatera filhuvudet (rad 1–2 i todo-filen):
**Status:** klar YYYY-MM-DD — <kort sammanfattning vad som gjordes>
**Senast uppdaterad:** YYYY-MM-DD
Datum = currentDate från system-context. Sammanfattning = vad användaren just gjort, inte abstrakt.
- Flytta filen:
git mv todos/<NN>-*.md todos/done/ (Bash). Om filen inte är trackad, fall back till mv.
- Uppdatera
todo.md:
- Verifiering: kör
git status så användaren ser ändrade filer. Commit:a inte utan att användaren ber.
reject
Som done men:
- Filhuvud:
**Status:** avfärdad YYYY-MM-DD — <skäl>
- Flytta:
git mv todos/<NN>-*.md todos/rejected/
- Index: lägg till i tabellen Avfärdade / sammanslagna:
| <NN> | <Titel> | Avfärdad YYYY-MM-DD — <kort skäl> | [todos/rejected/<fil>.md](todos/rejected/<fil>.md) |
- Uppdatera "Senast uppdaterad" på rad 7.
- Om todon var i Föreslagen ordning eller blockerade andra — uppdatera de sektionerna.
Be användaren om skälet om det inte gavs i argumenten ("Vad är skälet?").
new
-
Hitta nästa nummer: lista alla todos/-, done/- och rejected/-filer, plocka ut prefix-numret (<NN>), ta max + 1. Zero-pad till 2 siffror.
-
Skapa slug från titeln: lowercase, mellanslag→bindestreck, ta bort/translitera åäö (å/ä→a, ö→o), strip-a interpunktion. Max ~50 tecken.
-
Skapa filen todos/<NN>-<slug>.md med mall:
**Status:** aktiv
**Senast uppdaterad:** YYYY-MM-DD
# Todo #<NN> — <Titel>
## Sammanfattning
<fyll i — vad är problemet, vad föreslås>
## Bakgrund
## Förslag
## Risker
## Confidence
<låg | medel | hög> — <motivering>
-
Uppdatera todo.md:
-
Säg till användaren att filen skapades med en mall och fråga om de vill fylla i Sammanfattning/Bakgrund nu.
Konventioner att respektera
- Datum =
currentDate från system-context (ISO YYYY-MM-DD). Aldrig hårdkoda.
- Filnamn:
<NN>-<slug>.md, <NN> zero-padded två siffror.
- Tabellsortering i
todo.md:
- Aktiva: ingen särskild ordning.
- Klara: nyast först (datum desc) — nya rader läggs överst.
- Avfärdade: ingen särskild ordning.
- Aldrig radera todo-filer — alltid flytta till
done/ eller rejected/. Historiken är poängen.
- Aldrig commita utan att användaren ber. Skillen levererar arbetsträd-ändringar +
git status.
- Beroenden-sektionen är levande — uppdatera när blockerare blir klara.
Edge cases
- Hittar inte todo #N: lista vad som finns och fråga.
- Todon är redan i
done/: avbryt done — säg det. Erbjud show istället.
- Användaren skriver titeln med hashtag (
/todo done #10): strip-a # innan tolkning.
- Argument är inte en siffra för
done/reject/show: be om <nr>.
- Redaktionellt skript-fel (t.ex.
git mv misslyckas): fall back till mv + flagga för användaren.