plugins/wrap-up/skills/wrap-up/SKILL.md
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.
npx skillsauth add jaykim88/claude-ai-engineering wrap-upInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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):
wrap-up/wrap-up/{topic-name}.md (topic = main feature/subject worked on)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.Glob("wrap-up/*.md") to list all wrap-up files| 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:
auth matches auth.md)# Auth Module - Wrap Up)Naming rules:
business-avengers, wrap-up, api-refactorIf adding to an existing file:
### Next section to identify pending itemsLanguage 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.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 - [ ] |
If NEW file (user confirmed new topic):
wrap-up/ directory if neededIf EXISTING file (user selected existing file):
[ ] → [x]> **Scope**: line), BEFORE existing sessions--- separator between the new entry and the previous most-recent sessionSession date format:
date '+%Y-%m-%d %H:%M' to get the exact current time. Never estimate or guess the time.## Session: 2026-02-23 14:00Context line:
> **Context**: {brief summary} right after the session headerSession 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:
Show the user:
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.
English:
Korean:
Use this skill when:
Skip when:
| 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 |
development
Design webhooks correctly on both sides — sending (HMAC signing, retries with backoff, at-least-once) and receiving (verify signature on raw body, enqueue + 200 fast, dedupe on event id). Use when adding webhook delivery or consuming a provider's webhooks. Not for internal service-to-service events (use async-messaging) or general outbound-call retry policy (use resilience-patterns).
testing
Use transactions and isolation levels correctly — keep them short, no network calls inside, explicit isolation, retry on serialization conflicts, and choose optimistic vs pessimistic locking. Use when a write spans multiple tables, when concurrent updates corrupt data, or when designing money/inventory flows. Not for cross-service event delivery (use async-messaging Outbox) or schema-level constraints (use schema-design).
development
Backend testing pyramid — unit for pure logic, integration against a real DB (Testcontainers), and consumer-driven contract testing (Pact) for service boundaries. Use before a feature, after a bug fix, or when services break each other on deploy. Not for load testing (use performance-profiling) or security testing (use backend-security-audit).
data-ai
Design a relational schema — normalize to 3NF then denormalize with justification, choose the right Postgres index type per data shape, enforce constraints at the DB. Use when modeling a new domain, when queries are slow, or before a migration. Not for diagnosing slow queries (use query-optimization) or shipping the change without downtime (use migration-strategy).