Wrap Up
Records what was done in the current session and what needs to be done next, saving to a per-topic markdown file that accumulates across sessions.
Defaults (no config file needed):
- Output directory:
wrap-up/
- File naming:
wrap-up/{topic-name}.md (topic = main feature/subject worked on)
- Sections: Done, Decisions (optional), Issues (optional), Next
- Language: read from
config.yaml (language field). If en, always write in English regardless of conversation language. If ko, always write in Korean. If missing, auto-detect from conversation.
Execution Algorithm
Step 1: Detect Topic & Match Existing File
- Analyze conversation to identify the primary topic or feature
- Scan existing files:
Glob("wrap-up/*.md") to list all wrap-up files
- Match logic:
| Scenario |
Action |
| Exact match found (filename = topic) |
Ask user to confirm: "기존 wrap-up/{name}.md에 이어서 기록할까요?" |
| Similar match found (related title/content) |
Show candidates and ask user to select |
| Multiple candidates |
Present list with AskUserQuestion for selection |
| No match |
Ask user to confirm new file creation with suggested topic name |
Matching criteria:
- Filename similarity (e.g., topic
auth matches auth.md)
- Title in file header (e.g.,
# Auth Module - Wrap Up)
- Content overlap (recent Done/Next items relate to current session's work)
Naming rules:
- Use kebab-case:
business-avengers, wrap-up, api-refactor
- Be specific to the feature, NOT the project directory name
Step 2: Load Context (Prepend only)
If adding to an existing file:
- Read the entire file
- Parse the FIRST (most recent)
### Next section to identify pending items
- Cross-reference with current session's work to determine which Next items were completed
- This context informs Step 3 (Analyze Conversation)
Step 3: Analyze Conversation
Language enforcement: Read config.yaml for the language field before any output.
language: en → Write ALL content in English — section text, AskUserQuestion prompts, confirmation messages, Done/Next items, Context line. Regardless of conversation language.
language: ko → Write ALL content in Korean.
- Missing or other value → Auto-detect from dominant conversation language.
Review the entire conversation history to extract:
| Section |
What to Extract |
| Done |
Tasks completed, features added, bugs fixed, refactoring done. Use conventional commit prefixes (feat, fix, refactor, docs, chore). If items from previous Next were completed, include them with "(from previous Next)" note |
| Decisions |
Architecture choices, library selections, approach decisions made during the session |
| Issues |
Blockers, errors, unresolved problems, workarounds applied |
| Next |
Pending tasks, follow-up items, explicitly mentioned TODOs. Use checkbox format - [ ] |
Step 4: Create or Append
If NEW file (user confirmed new topic):
- Create
wrap-up/ directory if needed
- Write new file with topic header + session entry
If EXISTING file (user selected existing file):
- Update the FIRST (most recent) session's Next checkboxes: completed items
[ ] → [x]
- Insert new session entry AFTER the header block (after
> **Scope**: line), BEFORE existing sessions
- Add
--- separator between the new entry and the previous most-recent session
- This ensures newest session is always at the top, oldest at the bottom (reverse chronological order)
Session date format:
- Must run
date '+%Y-%m-%d %H:%M' to get the exact current time. Never estimate or guess the time.
- Format:
## Session: 2026-02-23 14:00
- Time helps identify and trace specific sessions across conversation history
Context line:
- Each session entry includes
> **Context**: {brief summary} right after the session header
- 1-line summary of what the session was about (for quick identification when scanning the file)
Session ordering: Reverse chronological (newest first, oldest last).
Template (new file):
# {Topic Name} - Wrap Up
> **Project**: `{CWD}`
> **Scope**: `{relative path to primary working directory}` (e.g., `plugins/business-avengers/`)
## Session: 2026-02-23 14:00
> **Context**: OAuth 2.0 소셜 로그인 연동 및 Google/GitHub 프로바이더 구현
### Done
- ...
### Decisions
- ...
### Next
- [ ] ...
Template (existing file — insert new session at top):
# {Topic Name} - Wrap Up
> **Project**: `{CWD}`
> **Scope**: `...`
## Session: 2026-02-24 10:00 ← NEW (inserted here)
> **Context**: ...
### Done
- ...
### Next
- [ ] ...
---
## Session: 2026-02-23 14:00 ← PREVIOUS (pushed down)
> **Context**: ...
### Done
- ...
### Next
- [x] completed item (from previous Next)
- [ ] remaining item
Section omission rules:
- Omit Decisions if no significant decisions were made
- Omit Issues if no problems were encountered
- Done and Next are always included
Step 5: Confirm to User
Show the user:
- Full path of saved file (new or updated)
- Whether it was a new file or appended to existing
- Number of items in each section
- (Append only) Number of previous Next items completed
Step 6: Blog Log Generation (Optional)
After confirming the wrap-up file, check config.yaml for blog_log.enabled:
config = Read("config.yaml") // from skill directory
if config.blog_log.enabled == false:
exit // skip silently
// Prompt user
AskUserQuestion(
"블로그 로그도 생성할까요?",
options=[
{ label: "네", description: "오늘 작업 내용을 블로그 logs 컬렉션에 저장합니다" },
{ label: "아니요", description: "wrap-up만 저장하고 종료합니다" }
]
)
if answer == "네":
// Invoke wrap-to-blog skill with current session context
// Pass: session date, topic name, Done items, Decisions, Next items
invoke_skill("wrap-to-blog", {
session_date: current_date, // YYYY-MM-DD
topic: current_topic, // e.g., "planning-interview"
done: session.done_items,
decisions: session.decisions,
next: session.next_items,
context_summary: session.context,
blog_dir: config.blog_log.blog_dir,
collection: config.blog_log.collection
})
Note: This step only runs if blog_log.enabled: true in config.yaml. If config.yaml is missing or blog_log section is absent, skip silently.
Trigger Phrases
English:
- "wrap up", "wrap-up", "session summary", "document progress", "record what we did"
Korean:
- "작업 정리", "세션 정리", "마무리", "진행 상황 기록", "오늘 한 일 정리"
Quick Reference
When to Use
Use this skill when:
- End of a work session
- Switching to a different project or topic
- Before closing a chat session
- After completing a significant milestone
Skip when:
- Very short Q&A (nothing substantial to record)
- Pure research/exploration with no actionable output
Error Handling
| Scenario |
Response |
| Output directory doesn't exist |
Create it with mkdir -p |
| Write permission denied |
Error: Cannot write to {path}. Check permissions. |
| Empty conversation |
Warning: Not enough content to summarize. Continue working first. |
| Existing file is malformed |
Append new session entry at the end regardless |
1---2name: wrap-up3description: Document session work history and todos into a per-topic file. Use when user says "wrap up", "wrap-up", "작업 정리", "세션 정리", "마무리", or wants to record session progress.4---56# Wrap Up78Records what was done in the current session and what needs to be done next, saving to a **per-topic** markdown file that accumulates across sessions.910**Defaults** (no config file needed):11- Output directory: `wrap-up/`12- File naming: `wrap-up/{topic-name}.md` (topic = main feature/subject worked on)13- Sections: Done, Decisions (optional), Issues (optional), Next14- Language: read from `config.yaml` (`language` field). If `en`, always write in English regardless of conversation language. If `ko`, always write in Korean. If missing, auto-detect from conversation.1516---1718## Execution Algorithm1920### Step 1: Detect Topic & Match Existing File21221. **Analyze conversation** to identify the primary topic or feature232. **Scan existing files**: `Glob("wrap-up/*.md")` to list all wrap-up files243. **Match logic**:2526| Scenario | Action |27|----------|--------|28| **Exact match** found (filename = topic) | Ask user to confirm: "기존 `wrap-up/{name}.md`에 이어서 기록할까요?" |29| **Similar match** found (related title/content) | Show candidates and ask user to select |30| **Multiple candidates** | Present list with AskUserQuestion for selection |31| **No match** | Ask user to confirm new file creation with suggested topic name |3233**Matching criteria:**34- Filename similarity (e.g., topic `auth` matches `auth.md`)35- Title in file header (e.g., `# Auth Module - Wrap Up`)36- Content overlap (recent Done/Next items relate to current session's work)3738**Naming rules:**39- Use kebab-case: `business-avengers`, `wrap-up`, `api-refactor`40- Be specific to the feature, NOT the project directory name4142---4344### Step 2: Load Context (Prepend only)4546If adding to an existing file:47481. **Read the entire file**492. **Parse the FIRST (most recent) `### Next` section** to identify pending items503. **Cross-reference** with current session's work to determine which Next items were completed514. This context informs Step 3 (Analyze Conversation)5253---5455### Step 3: Analyze Conversation5657**Language enforcement**: Read `config.yaml` for the `language` field **before any output**.58- `language: en` → Write ALL content in **English** — section text, AskUserQuestion prompts, confirmation messages, Done/Next items, Context line. Regardless of conversation language.59- `language: ko` → Write ALL content in **Korean**.60- Missing or other value → Auto-detect from dominant conversation language.6162Review the entire conversation history to extract:6364| Section | What to Extract |65|---------|----------------|66| **Done** | Tasks completed, features added, bugs fixed, refactoring done. Use conventional commit prefixes (feat, fix, refactor, docs, chore). If items from previous Next were completed, include them with "(from previous Next)" note |67| **Decisions** | Architecture choices, library selections, approach decisions made during the session |68| **Issues** | Blockers, errors, unresolved problems, workarounds applied |69| **Next** | Pending tasks, follow-up items, explicitly mentioned TODOs. Use checkbox format `- [ ]` |7071---7273### Step 4: Create or Append7475**If NEW file** (user confirmed new topic):76- Create `wrap-up/` directory if needed77- Write new file with topic header + session entry7879**If EXISTING file** (user selected existing file):80- Update the FIRST (most recent) session's **Next** checkboxes: completed items `[ ]` → `[x]`81- **Insert new session entry AFTER the header block** (after `> **Scope**:` line), BEFORE existing sessions82- Add `---` separator between the new entry and the previous most-recent session83- This ensures **newest session is always at the top**, oldest at the bottom (reverse chronological order)8485**Session date format:**86- **Must run `date '+%Y-%m-%d %H:%M'`** to get the exact current time. Never estimate or guess the time.87- Format: `## Session: 2026-02-23 14:00`88- Time helps identify and trace specific sessions across conversation history8990**Context line:**91- Each session entry includes `> **Context**: {brief summary}` right after the session header92- 1-line summary of what the session was about (for quick identification when scanning the file)9394**Session ordering:** Reverse chronological (newest first, oldest last).9596Template (new file):9798```markdown99# {Topic Name} - Wrap Up100101> **Project**: `{CWD}`102> **Scope**: `{relative path to primary working directory}` (e.g., `plugins/business-avengers/`)103104## Session: 2026-02-23 14:00105106> **Context**: OAuth 2.0 소셜 로그인 연동 및 Google/GitHub 프로바이더 구현107108### Done109- ...110111### Decisions112- ...113114### Next115- [ ] ...116```117118Template (existing file — insert new session at top):119120```markdown121# {Topic Name} - Wrap Up122123> **Project**: `{CWD}`124> **Scope**: `...`125126## Session: 2026-02-24 10:00 ← NEW (inserted here)127128> **Context**: ...129130### Done131- ...132133### Next134- [ ] ...135136---137138## Session: 2026-02-23 14:00 ← PREVIOUS (pushed down)139140> **Context**: ...141142### Done143- ...144145### Next146- [x] completed item (from previous Next)147- [ ] remaining item148```149150**Section omission rules:**151- Omit **Decisions** if no significant decisions were made152- Omit **Issues** if no problems were encountered153- **Done** and **Next** are always included154155---156157### Step 5: Confirm to User158159Show the user:160- Full path of saved file (new or updated)161- Whether it was a new file or appended to existing162- Number of items in each section163- (Append only) Number of previous Next items completed164165---166167### Step 6: Blog Log Generation (Optional)168169After confirming the wrap-up file, check `config.yaml` for `blog_log.enabled`:170171```pseudocode172config = Read("config.yaml") // from skill directory173174if config.blog_log.enabled == false:175 exit // skip silently176177// Prompt user178AskUserQuestion(179 "블로그 로그도 생성할까요?",180 options=[181 { label: "네", description: "오늘 작업 내용을 블로그 logs 컬렉션에 저장합니다" },182 { label: "아니요", description: "wrap-up만 저장하고 종료합니다" }183 ]184)185186if answer == "네":187 // Invoke wrap-to-blog skill with current session context188 // Pass: session date, topic name, Done items, Decisions, Next items189 invoke_skill("wrap-to-blog", {190 session_date: current_date, // YYYY-MM-DD191 topic: current_topic, // e.g., "planning-interview"192 done: session.done_items,193 decisions: session.decisions,194 next: session.next_items,195 context_summary: session.context,196 blog_dir: config.blog_log.blog_dir,197 collection: config.blog_log.collection198 })199```200201**Note**: This step only runs if `blog_log.enabled: true` in config.yaml. If config.yaml is missing or `blog_log` section is absent, skip silently.202203---204205## Trigger Phrases206207**English:**208- "wrap up", "wrap-up", "session summary", "document progress", "record what we did"209210**Korean:**211- "작업 정리", "세션 정리", "마무리", "진행 상황 기록", "오늘 한 일 정리"212213---214215## Quick Reference216217### When to Use218219**Use this skill when**:220- End of a work session221- Switching to a different project or topic222- Before closing a chat session223- After completing a significant milestone224225**Skip when**:226- Very short Q&A (nothing substantial to record)227- Pure research/exploration with no actionable output228229---230231## Error Handling232233| Scenario | Response |234|----------|----------|235| Output directory doesn't exist | Create it with `mkdir -p` |236| Write permission denied | `Error: Cannot write to {path}. Check permissions.` |237| Empty conversation | `Warning: Not enough content to summarize. Continue working first.` |238| Existing file is malformed | Append new session entry at the end regardless |