# Memo

> Save a memo to ~/memo with the correct directory and filename following the vault's STRUCTURE.md rules. Use when the user says "write a memo", "save this to memo", or "add a note to ~/memo".

- Skill: `shawyeok/memo` (Agent Skill)
- Install (CLI): `npx skillmds@latest add shawyeok/memo`
- Raw SKILL.md: https://api.skillmd.com/api/skills/shawyeok/memo/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Shawyeok (https://skillmd.com/u/shawyeok)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/shawyeok/memo

---


# Write Memo

Saves a memo to `~/memo` in the correct subdirectory with the `YY-MM-DD-slug.md` filename format defined in `~/memo/STRUCTURE.md`.

## Directory Decision (from STRUCTURE.md)

| Content type | Directory |
|---|---|
| Production incident post-mortem or investigation | `incidents/` |
| OS / infra how-to, server config, middleware, network, storage | `infra/` |
| JVM internals, Java performance, Java tooling | `java/` |
| Cross-cutting engineering standard, code review, team process | `engineering/` |
| Scoped to one product or codebase | `projects/<project-name>/` |
| Saved external article or reference verbatim | `Clippings/` |
| AI agent design doc | `agent-proposals/` |
| Personal / non-work | `personal/` |

## Filename Format

```
YY-MM-DD-descriptive-slug.md
```

- Date: today's date in `YY-MM-DD` format (e.g. `26-05-23`)
- Slug: lowercase kebab-case, no redundant date words
- Example: `26-05-23-motionpro-vpn-container.md`

## Steps

### 1. Determine inputs

If the user hasn't specified the memo content, ask. If the user hasn't specified a title/slug or directory, infer from the content using the decision table above.

| Input | How to get it |
|---|---|
| Content | User provides or you draft it |
| Directory | Apply decision table to the content |
| Slug | Derive from the topic (kebab-case, descriptive) |
| Date | Today's date (`date +%y-%m-%d`) |

### 2. Construct the target path

```bash
DATE=$(date +%y-%m-%d)
DIR=~/memo/<chosen-dir>          # e.g. ~/memo/infra
SLUG="<descriptive-slug>"        # e.g. motionpro-vpn-container
FILE="$DIR/$DATE-$SLUG.md"
```

For `projects/`, create the subdirectory if it doesn't exist:
```bash
mkdir -p ~/memo/projects/<project-name>
```

### 3. Write the file

Use the Write tool to create `$FILE` with the memo content.

### 4. Add an entry to RECENT_UPDATE.md

Append a checkbox line to `~/memo/RECENT_UPDATE.md` that links to the new file using an Obsidian wiki-link:

```
- [ ] YY-MM-DD [[<dir>/<YY-MM-DD-slug>|<Human-readable title>]]
```

- **Path inside the link**: relative to the vault root, without the `.md` extension (e.g. `infra/26-06-25-motionpro-vpn-container`)
- **Display title**: the H1 heading from the memo, or a clean title-case version of the slug if there is no H1
- For `projects/` memos the path is `projects/<project-name>/<YY-MM-DD-slug>`

Example:
```
- [ ] 26-06-25 [[infra/26-06-25-motionpro-vpn-container|MotionPro VPN Container Setup]]
```

Use the Edit tool to append the line (do not rewrite the whole file).

Confirm with the user: `Saved to ~/memo/<dir>/<filename>.md`

## Gotchas

- Check if the file already exists before writing — if it does, confirm with the user whether to overwrite or use a different slug.
- `Clippings/` entries should preserve the source URL in a footer line: `> Source: <url>`
- `projects/` subdirectory name should match the product/codebase name exactly (e.g. `projects/pulsar-a/`, `projects/goven/`).
- Do not add a date prefix to the slug itself — the prefix is always the leading `YY-MM-DD-` portion only.

