# Action Tracker

> Scan a conversation and everything produced inside it, then consolidate into one markdown table every action the user has committed to: what, who asked, by when, how much it matters, and where it was said. Nothing is inferred, and missing fields are flagged rather than guessed. Use when the user says 'my actions', 'what did I commit to', 'extract my actions', 'my todo from this chat', or asks to gather what they owe from a discussion and its deliverables.

- Skill: `romain-nicod/action-tracker` (Agent Skill)
- Install (CLI): `npx skillmds@latest add romain-nicod/action-tracker`
- Raw SKILL.md: https://api.skillmd.com/api/skills/romain-nicod/action-tracker/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: romain-nicod (https://skillmd.com/u/romain-nicod)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/romain-nicod/action-tracker

---


# Action tracker

Gather, date and format in a single file every action that falls on
the user in the current conversation, whether it surfaced in the
discussion itself or inside something produced during it: minutes, a
drafted email, a memo, a note.

The output is a flat table, meant to be pasted into whatever list
the user actually keeps.

---

## Trigger

Activated when the user:

- Says "my actions", "scan my actions", "extract my actions", "my
  todo", "what did I sign up for"
- Asks to gather what they have to do, from a conversation and the
  files produced in it

---

## Step 0: who is "me"

Ask once, unless the answer is already obvious from the
conversation:

1. **What name should be matched?** The user's name as it appears
   when someone addresses them, plus any role they are referred to
   by ("the project manager", "the PM").
2. **What is this conversation about?** One label, used in the
   filename.
3. **Where should the file go?**

Nothing else is needed. This skill deliberately knows very little.

---

## Principles

**One person only.** The table lists only actions where the user is
the one who has to act. The owner is implicit, so there is no owner
column. An action assigned to someone else is excluded, however long
it was discussed.

**The current conversation only.** Scan where the skill was
launched: the discussion and the deliverables produced in it. No
searching across other conversations.

**No inference.** Due date, requester and impact are recorded only
when stated. When absent, the cell carries 🔴 and stays empty. Never
guess a deadline, a priority or a requester: a guessed due date is
worse than a missing one, because nobody goes back to check it.

**No fabrication.** Record only actions that were actually stated.
In doubt about whether an action exists, leave it out.

**Honest coverage.** Declare what was actually read: the whole
conversation, or only the part still in context. Never claim every
message was scanned when older ones were summarised away.

---

## Workflow

### Step 1: inventory the sources

Before extracting anything, list:

- **The conversation body**: every message visible in the current
  context.
- **The deliverables produced in it**: any file generated during the
  session. Open and re-read each one. A commitment can live only
  there, such as an emailed "I will send the figures by Friday" that
  was never said in the chat.

If part of the conversation is out of context, note it now for the
coverage statement.

### Step 2: extraction pass

Look for anything where the user has to do something.

**First-person commitments in the conversation**

- "I will…", "I'll take care of…", "I'm chasing…", "I need to…",
  "let me…", "I'll get back to…", "I'll send them…"

**Actions assigned to the user by someone else**

- "[name], can you…", "[name] will…", addressed to them
- An action line whose owner is the user, in minutes produced during
  the session

**Commitments inside a deliverable**

- An email, draft or document where the user, or the voice they
  signed as, undertakes to do something
- A "next steps" or "asks" line whose execution falls on them
- Any first-person future tense in a document they issued

For each action found, capture the verbatim wording, or a faithful
paraphrase, and exactly where it came from: which message, or which
file.

**Excluded**: other people's actions; vague intentions with no
concrete commitment; backlog items, which belong to a backlog scan,
unless the user commits to doing something about one, in which case
the act of doing it is their action.

### Step 3: fill the fields

| Field | How to determine it |
|---|---|
| Timestamp | From the source when it carries one, otherwise the date of this run |
| Description | What the user has to do, stated plainly, in the implied first person: "chase the vendor about the licences" |
| Requester | Who asked, or who they committed to. Stated only, otherwise 🔴 |
| Due date | Stated deadlines only. Otherwise 🔴, never inferred |
| Impact | High, medium or low, stated only. Otherwise 🔴, never inferred |
| Source | "Conversation", or the filename. If both, list both |

### Step 4: deduplicate within the run

The same action surfacing both in the conversation and in a
deliverable is **one line**. The source field lists both origins.
Merge the fields by keeping the most explicit value: a due date
present in the email and absent from the chat is the one that
survives.

### Step 5: produce the file

```markdown
# Actions: {conversation label}, {YYYYMMDD}

Coverage: {an honest statement, such as "whole conversation read in
context" or "the first ~40 messages were summarised out of context
and not scanned in detail"}.

| # | Date | Description | Requester | Due | Impact | Source |
|---|---|---|---|---|---|---|
| 1 | {date} | {what} | {who} | {when} | H/M/L | {where} |
| 2 | {date} | {what} | 🔴 | 🔴 | 🔴 | {where} |

🔴 Cells to fill before this goes anywhere: line 2 (requester, due
date, impact).
```

Format notes:

- One flat table, so rows can be pasted straight into whatever list
  the user keeps.
- A missing value is 🔴 in the cell, never a plausible guess.
- If the user has no actions in this conversation, say so plainly.
  An empty result is a result.

### Step 6: filename

`{YYYYMMDD} - {label} - Actions v{NN}.md`, where the label is the
smallest scope that covers the content. Increment the version rather
than overwriting an existing file.

---

## Quality checks before delivery

1. Every line is genuinely the user's action, with none of someone
   else's slipped in.
2. No due date, requester or impact was inferred. Everything not
   stated is 🔴.
3. Every action is traceable to a named source.
4. No duplicates: an action stated in both places is one line.
5. The coverage statement reflects what was actually read, with no
   claim of completeness that is not true.
6. Each captured action was checked against its source wording, with
   no paraphrase that changed the meaning.

