en un clic
wrap-up
End-of-day wrap-up skill — daily summary and status update
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Menu
End-of-day wrap-up skill — daily summary and status update
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Basé sur la classification professionnelle SOC
Capability discovery — the canonical answer to 'what can you do?' and 'what do I say to ...?'
Close skill — draft resolution comment, sync backends, redirect to next task
Start skill — begin task with optional backend sync
Morning brief skill — prioritized daily summary
Reconcile skill — detect wiki/backend drift and let the User resolve it via four moves
Triage skill — walk untriaged Asana pages, push a new ticket or mark not-needed
| name | wrap-up |
| description | End-of-day wrap-up skill — daily summary and status update |
End-of-day summary and workspace update.
Run this skill whenever the user signals the end of their day — "wrap up", "wrapping up", "end of day", "eod", "done for today", or similar. Invoke it immediately — do not ask "would you like me to run /wrap-up?" first.
Read today's daily page frontmatter. If wrap_up is already set to a timestamp from today, the user has already wrapped up. Confirm: "You wrapped up at — want to amend that or start fresh?"
If active_task is set on today's page, ask before continuing: "You still have marked as active — ready to wrap up?" This prevents accidental wrap-up mid-flow.
Read today's daily page from wiki/daily/YYYY-MM-DD.md. If no daily page exists, create one first:
rubber-ducky page create daily
Kick off the linter agent in the background while gathering context. Its findings (drift, stale tasks, broken links) will be presented as a separate card later, not buried inline:
Agent({
subagent_type: "linter",
prompt: "Run wrap-up linter checks on this workspace"
})
Scan wiki/tasks/ and read activity logs and frontmatter. A task was "touched" if:
updated timestamp is from todayFor each touched task, run via Bash:
rubber-ducky frontmatter set wiki/tasks/<slug>.md status <new-status>
rubber-ducky frontmatter set wiki/tasks/<slug>.md updated <now-iso>
If a task was completed, also set:
rubber-ducky frontmatter set wiki/tasks/<slug>.md closed <now-iso>
After the User's own changes are recorded (Step 3), invoke /reconcile to sweep for anything that drifted during the day — external transitions, comments, assignee changes the User didn't make. This is the second half of the twice-daily ritual (the first half runs in /good-morning).
/reconcile fans out pull --dry-run per linked backend, assembles a 3-way view across {wiki, asana, jira} per active task, and walks the User through resolution one ticket at a time (see src/skills/reconcile/SKILL.md). When nothing drifted, it reports a one-line summary and wrap-up continues. When drift surfaces, resolve it now — the daily log entry in Step 4 and the status snapshot in Step 5 should reflect the reconciled state, not the pre-reconcile guess.
Skip cleanly when no backends are configured, the user is wrapping up offline, or /reconcile errors on connectivity. Note the skip in the wrap-up output ("Skipped wrap-up reconcile — no backends configured.") rather than failing the routine.
Append a wrap-up entry to the workspace log:
rubber-ducky log append "EOD wrap-up: <N> tasks touched, <M> completed"
Update today's daily page body sections by editing the file directly:
doneAlso update the tasks_touched frontmatter array:
rubber-ducky frontmatter set wiki/daily/YYYY-MM-DD.md tasks_touched '["task-slug-1","task-slug-2"]'
rubber-ducky frontmatter set wiki/daily/YYYY-MM-DD.md wrap_up true
rubber-ducky frontmatter set wiki/daily/YYYY-MM-DD.md active_task null
If wiki/asap.md exists, scan it for items the user might want to close out. For each pending item, ask:
rubber-ducky asap resolve <index>rubber-ducky page create task "<title>"Garbage-collect resolved items in batch at the end (so the file doesn't accumulate cruft).
The linter agent from Step 1a has finished. Present its findings as a distinct card in the wrap-up output:
─── Linter findings ───
<count> issue(s):
- <rule>: <count> — <one-line description>
...
Don't fix the issues automatically. Surface them so the user knows; offer "Want to address any of these now?"
The vault treats context capture as ongoing. If the user produced drafts,
comments, or messages today (visible in the daily file's ## Work log /
## Notes & context sections, or in any task page activity log dated
today), they're potentially useful voice samples for wiki/voice.md.
Check whether the user has opted in:
rubber-ducky settings get ingest.auto_on_wrap_up
false (the default), skip this step entirely.
Do not offer; do not mention it. The user has explicitly chosen not to
spend tokens on this at wrap-up.true, scan today's user-authored material and offer:
"I saw N pieces you wrote today. Want me to ingest them as voice
samples? (/ingest-writing handles the routing.)" On yes, route the
raw text through /ingest-writing.This is the only ongoing-capture hook the wrap-up skill runs. Other
hooks (e.g. at /onboard) are owned by those skills.
After the daily summary is complete, check if any undefined terms came up during the day:
UBIQUITOUS_LANGUAGE.md to get the current set of defined terms.UBIQUITOUS_LANGUAGE.md.If the user triggers this skill but has an active_task set in today's daily page, confirm they want to wrap up: "You still have [active task] marked as active — ready to wrap up for the day?" This prevents accidental wrap-up mid-flow.
A concise end-of-day summary:
Keep it brief — the daily page has the full record.