Skip to content
Agentmart
Submit a tool

save

Save learning content as a TIL file and update MOC and backlog.

Skill by SongYunSeop

IndexedMIT★ 1
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/songyunseop-save

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Save learning content as a TIL file and update MOC and backlog. Use when the user says 'save this', 'write up what I learned', 'document this as a TIL', or wants to persist a learning conversation as a note.

Use cases: documents, writing, productivity

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/save

What's inside

Skill name
save
Description
Save learning content as a TIL file and update MOC and backlog. Use when the user says 'save this', 'write up what I learned', 'document this as a TIL', or wants to persist a learning conversation as a note.
License
MIT
Instructions
123 lines in SKILL.md · view on GitHub

Files (4)

  • SKILL.md
  • evals.json · evals/
  • trigger-eval.json · evals/
  • templates.md · references/

SKILL.md (first lines)

> **TIL_PATH**: All `${TIL_PATH}/...` references below resolve to the vault's configured TIL path (injected at SessionStart). Bash expands `${TIL_PATH}` automatically. For `Read`/`Edit`/`Glob`/`Write` tools, substitute the resolved value before passing it as an argument (e.g. `${TIL_PATH}/SCHEMA.md` → `40-Resources/til/SCHEMA.md`). Default `til` when not injected; call MCP `til_get_path` if you need the current value.

# Save Skill

Learning conversation → Save TIL file → Update MOC/backlog → Review document → Commit.

## MCP Tools

- `til_get_context`: Find related TILs and backlog items
- `til_list`: Check for duplicate existing TILs
- `til_save_note`: Save TIL note (server guarantees frontmatter/path rules, auto_check_backlog auto-checks backlog)

## Step 0: Load Schema and Surface Augmentation Candidates

1. **Read `${TIL_PATH}/SCHEMA.md`** for current TIL conventions. If missing, fall back to built-in defaults and notify the user once: "`${TIL_PATH}/SCHEMA.md` not found — using built-in defaults. Run `/omt-setup` to seed."
   - Built-in defaults: required frontmatter `title, date, category, tags, aliases`; `tags` must include `"til"`; body links use `[name](path.md)`, not `[[wiki]]`; cross-references via `related:` frontmatter array.

2. **Surface augmentation candidates** with `til_get_context` (topic = current learning subject, category if known).
   - If 1+ related TIL found: present top 3 as candidates and use `AskUserQuestion`: "Augment existing? / Create new?".
     - **Augment**: Step 1 reuses the chosen TIL's existing path (skip slug creation). Step 3 uses `Read`→`Edit` on that file instead of `til_save_note`. This is the compounding default — prefer it whenever a clear candidate exists.
     - **Create new**: continue with the new-file flow.
   - If no candidates: continue with the new-file flow (no question needed).

3. The `til_get_context` result from this step also populates link candidates — Step 2 reuses it without calling again.

## Step 1: Confirm Topic and Path

1. Identify topic and category. Ask the user if unclear.
2. **If augmenting** (Step 0 selection): use the chosen TIL's path; skip the existence check.
3. **If creating new**: use `Read` to check if `${TIL_PATH}/{category}/{slug}.md` exists. If it does, ask the user to confirm merge or overwrite.

## Step 2: Confirm Link Candidates

Reuse the `til_get_context` result from Step 0 (do **not** call again).

1. Existing TIL/backlog items → use markdown links in the body
2. Concepts that don't exist → confirm with user, then add only to related notes

## Step 3: Save TIL File

Path: `./${TIL_PATH}/{category}/{topic-slug}.md` (slug: lowercase English with hyphens)

**Save new file**: Save using the `til_save_note` MCP tool. The server guarantees frontmatter (title, date, category, tags, aliases) and path rules.

```
til_save_note(category, slug, title, content, tags, date, fmCategory, aliases, auto_check_backlog: true)
```

- `date`: Get local time via `date +%Y-%m-%dT%H:%M:%S` command and pass it
- `tags`: Must include "til"
- `aliases`: ["Korean title", "English title"]
- `content`: Body markdown excluding frontmatter
- If raw sources were used during the learning session, include them in the body's References section as local links: `[Title](raw/{category}/{slug}.md)`

**When a file with the same slug exists** (detected by `Read` in Step 1):
- Auto-merge only when continuing a `/til` follow-up session (preserve existing content + reinforce, add `updated`)
- Otherwise: ask user to confirm merge or overwrite
- For merge: use Read→Edit directly on existing content instead of `til_save_note`

### TIL Body Template

Read `references/templates.md` for the exact TIL body and MOC templates.

- Links: `[display name](${TIL_PATH}/{category}/{slug}.md)` — no `[[wiki links]]`

## Step 4: Update Related Files

Update the related index files **directly** in sequence (no subagents — parallel edits can race and corrupt shared files like MOC):

1. TIL MOC (`./${TIL_PATH}/TIL MOC.md`): Add item to category section (create if not exists)
2. Backlog:
   - **New file mode**: Already handled by `til_save_note`'s `auto_check_backlog: true` (no separate call needed)
   - **Augment mode**: Call `til_backlog_check` directly if the augmented TIL maps to a backlog item — Step 0 selected augment, so Step 3 used `Read`→`Edit` and `auto_check_backlog` was not triggered

MOC: Read → find position → Edit. Create file if not exists.

## Step 5: Document Review

Display full saved TIL content → use `AskUserQuestion` to confirm ("Looks good" / "Needs revision").

## Step 6: Auto-lint Loop

After saving (Step 3) and updating related files (Step 4), apply til-lint **Check 1 (Frontmatter)** + **Check 2 (Orphan/MOC)** rules **inline in fast mode** — refer to `skills/til-lint/SKILL.md` for the rule definitions and emit a `## Violations` block matching the documented structure for self-parsing. til-lint stays read-only — `/save` applies the fixes.

1. Run the fast checks scoped to the current file (or its category).
2. Parse the `## Violations` block in the report:
   - `No violations found.` → exit loop, proceed to Step 7.
   - Violations present → classify and act:
     - **Auto-fixable** (trivial frontmatter — `tags` missing `"til"`, malformed `date`, `related` array shape): fix via `Edit`.
     - **User-decision** (MOC entry placement, `aliases` content, ambiguous values): surface to the user via `AskUserQuestion` instead of auto-applying — record the user's choice in this iteration's fix set.
   - Increment iteration counter after each round.
3. Re-run `/til-lint --fast`. Repeat up to **max 3 iterations**.
4. If iteration 3 still has unresolved violations, use `AskUserQuestion`:
   - **Commit with remaining violations**: proceed to Step 7. Surface the residual violations in the user-facing summary.
   - **Try fixing again**: continue for one extra round, then ask again. The cap does not auto-reset.
   - **Abort**: stop, report current state, do not commit.

Parsing fallback:
- If til-lint output cannot be parsed as the documented `## Violations` format, log a warning and treat as "no violations" to avoid blocking. Recommend a manual `/til-lint` run in the summary.

Track the iteration counter explicitly. A missing counter is the failure mode that turns this into an unbounded loop.

## Step 7: Register for Review

Ask via `AskUserQuestion`: "Would you like to add this TIL to spaced repetition review?"
If user agrees, call `til_review_update` (action: "review", grade: 4) to create SRS metadata.

## Step 8: git commit

`📝 til: {English title}({Korean title}) - {category}` (no push)

## Rules

- frontmatter required: date, category, tags, aliases (fill in any missing fields before saving)
- tags must include "til" (used to filter TILs on the static site)
- No `[[wiki links]]` — use `[display name](path)` format only (links must work in static sites and non-Obsidian editors)
- Always update MOC/backlog after saving the TIL
- Use callouts: `> [!tldr]`, `> [!example]`, `> [!warning]`, `> [!tip]`
- Visualize complex concepts with Mermaid diagrams (max 1 per TIL)

From SongYunSeop/oh-my-til, MIT.

More from SongYunSeop/oh-my-til

Signals

Stars
1
Forks
0
Open issues
0
Last commit (this folder)
May 15, 2026 (5 months ago)
Last release
May 15, 2026 (5 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from SongYunSeop

Cite this page

save skill. Agent Mart. https://agentmart.dev/skills/songyunseop-save (last updated 2026-10-24)