본문으로 건너뛰기
cccskills
무료GitHub에 공개

work-end-day

End-of-day — draft and post daily comments for tracked tickets missing a comment

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Linear
설치 방법 보기

포함된 파일(2)

  • SKILL.md8.2 KB
  • agents/openai.yaml43 B

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

work-end-day

Review today's tracked work items, draft Linear comments for tickets that haven't been commented on today, present for approval, and post. In-progress tickets with no meaningful logged activity today are returned to Todo with a comment stating so. Takes no arguments.

Step 1: Read Today's Note

today_date=$(date +%Y-%m-%d)
today_day=$(date +%A)
today_year=$(date +%Y)
note_path="$HOME/2ndBrain/daily-notes/${today_year}/${today_date} ${today_day}.md"

Read the full note content.

Step 2: Find Items Needing Comments

Parse the # Work Items section for all H2 item sections. For each item, extract:

  • Ticket ID from the heading (e.g., DXO-71)
  • ticket:: field — the Linear URL (items without a ticket:: field are PR-only; skip them)
  • commented:: field — if true, skip this item
  • status:: field — include in the comment for context
  • Activity log — all timestamped bullet lines (- \HH:MM` ...`)

Collect all items where commented:: false and a ticket:: field exists.

If no items need comments, report "All tracked tickets already have today's comment." and exit.

Step 3: Draft Comments

Classify each collected item (has ticket::, commented:: false) into exactly one bucket:

  • Idle candidate: the note's status:: is in-progress AND you judge the day's timestamped bullets contain no meaningful progress — an empty log or only trivial entries like a lone "Picked up ticket" count as idle; substantive work notes do not. When unsure, the item is NOT idle.
  • Regular: everything else → draft a daily-update comment (below).

Regular items

Draft a Linear comment from the activity log. Format:

**Daily update — YYYY-MM-DD**

Status: <status>

- <activity bullet 1, without timestamp>
- <activity bullet 2, without timestamp>
- ...

Strip the backtick-wrapped timestamps from the bullets — they're note-internal, not useful in Linear.

If the activity log is empty (item was tracked but no notes added), draft a minimal comment:

**Daily update — YYYY-MM-DD**

Status: <status>

Tracked today, no specific updates logged.

Idle candidates

Verify the real Linear state before final classification:

linear issue view <TICKET-ID> -j --no-comments --no-pager

The JSON contains state.name / state.type (started issues show "name": "In Progress", "type": "started").

  • If state.type is started → confirmed revert. Draft this comment instead of a daily update:

    **Daily update — YYYY-MM-DD**
    
    No meaningful activity logged today — returning this ticket to Todo.
    
  • If the ticket is no longer started (user already moved it) → treat as regular: draft a normal/minimal daily comment using the verified Linear state, no state change, and update the note's status:: field to match the verified state.

Step 4: Present for Approval

Show ALL drafts together in two labeled groups — Daily updates (existing per-ticket format) and Return to Todo (each entry shows ticket ID, title, the state change In Progress → Todo, and the comment body):

## Draft Linear Comments

### Daily updates

#### DXO-71 — fix(sdk-release): replace unreliable !failure()

> **Daily update — 2026-05-29**
>
> Status: in-progress
>
> - Picked up ticket, reviewing PR feedback
> - Kicked off test release
> - Test release passed, moving to review

#### DEVX-943 — Decommission 6 older macOS CI runners

> **Daily update — 2026-05-29**
>
> Status: in-progress
>
> - Removed atl-mac03 from runner group
> - PR approved, merged

### Return to Todo

#### DXO-88 — Title here

State change: In Progress → Todo

> **Daily update — 2026-05-29**
>
> No meaningful activity logged today — returning this ticket to Todo.

Then ask the user using AskUserQuestion:

  • "Post these comments to Linear?" with options:
    • Post all — post every draft as-is (return items get comment + state change)
    • Review individually — step through each one for edit/skip/post
    • Skip all — don't post any; just mark as reviewed

If "Review individually":

For each daily-update draft, ask:

  • Post — post as-is
  • Edit — user provides revised text, then post that
  • Skip — don't post this one (leave commented:: false)

For each return-to-Todo item, ask:

  • Post — post the comment, then change the state to Todo
  • Edit — user provides revised comment text, then post the comment + change the state
  • Skip — no comment, no state change (commented:: stays false, status:: untouched)

Step 5: Post Comments

First invoke the linear-cli:linear-cli skill to load the correct CLI syntax.

On macOS, run every linear ... command outside the sandbox on the first attempt so the CLI can access credentials stored in the system keychain. Use scoped escalation with prefix_rule: ["linear"]. If a sandboxed command reports No keyring entry or No API key configured, retry outside the sandbox before asking the user to authenticate. Never print, log, or expose linear auth token or an API key.

For each approved comment, write the body to a temp file then post using the CLI:

# Write comment body to a temp file (required for markdown content)
cat > /tmp/linear-comment-<TICKET-ID>.md << 'EOF'
<comment body>
EOF

# Post the comment
linear issue comment add <TICKET-ID> --body-file /tmp/linear-comment-<TICKET-ID>.md

After successful post, update the daily note:

Edit: commented:: false → commented:: true

Scope the edit to the specific item's section to avoid updating other items.

Return-to-Todo items

For each approved return item, post the comment first, then change the state:

cat > /tmp/linear-comment-<TICKET-ID>.md << 'EOF'
<comment body from Step 3>
EOF
linear issue comment add <TICKET-ID> --body-file /tmp/linear-comment-<TICKET-ID>.md
linear issue update <TICKET-ID> --state unstarted

--state unstarted uses the state type (-s, --state accepts the workflow state by name or type), so it works regardless of the team's unstarted state names.

Daily-note updates per returned item, scoped to that item's section:

  • After the comment post succeeds: commented:: false → commented:: true.
  • After the state change succeeds: status:: in-progress → status:: todo.
  • If the comment posts but the state change fails: report the error for that ticket, set commented:: true, do NOT edit status:: (the note must keep matching real Linear state).

Step 6: Report

## End of Day Complete

Posted: 2
  ✓ DXO-71 — fix(sdk-release): replace unreliable !failure()
  ✓ DEVX-943 — Decommission 6 older macOS CI runners

Returned to Todo: 1
  ↩ DXO-88 — Title here (no meaningful activity today)

Skipped: 0

All tracked tickets have today's comment.

Omit the "Returned to Todo" section when nothing was returned.

If any were skipped:

Skipped: 1
  ✗ DXO-88 — Title here (user chose to skip)

⚠ 1 in-progress ticket still needs a comment today.

Edge Cases

ScenarioHandling
Today's note doesn't existError: "No daily note found for today"
No items with commented:: falseReport "All done" and exit
PR-only items (no ticket:: field)Skip — can't post to Linear without a ticket
Linear API error on postReport error for that ticket; continue with others
Empty activity log + status:: in-progressIdle candidate (Step 3) — verify Linear state before classifying
Empty activity log + any other statusPost minimal "Tracked today, no specific updates" comment
Note says in-progress but Linear state is no longer startedNormal/minimal comment, no state change
linear issue view fails during idle verificationReport error, do not revert the item; treat as regular, continue
linear issue update failsReport error for that ticket, set commented:: true, leave status:: unchanged; continue with others
Item status is doneStill post the comment (important to close the loop)
User edits a draftUse the edited text verbatim
Run twice same daySecond run finds all commented:: true; reports "All done"

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

2ndbrain

무료

Quick-save the last assistant response as a verbatim note in the 2ndBrain Obsidian vault (~/2ndBrain/quick-notes/<year>/). Use when the user asks to quick-save/save the last response to 2ndBrain, or invokes $2ndbrain or /skill:2ndbrain.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

phatblat/dotfiles122026년 10월 19일 업데이트

Write commit messages under the agent-commits convention - a Conventional Commits fork with no chore catch-all, intent-only type tokens, facts in trailers, and legally-grounded AI provenance (Assisted-by, never Co-authored-by). Use when composing a commit in a repo whose commitlint.config.js extends agent-commits, when deciding between feat/fix/refactor/perf, or when recording AI participation.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

phatblat/dotfiles122026년 10월 19일 업데이트

Coordinate multi-agent work through durable artifacts in git instead of chat. Use this whenever a task involves sending a message to another agent, agent mailboxes or handoffs, claiming work from a shared queue, notifying another agent or crew (OpenClaw, Grok Bot, Claude Code, Codex, Gas Town/Gas City workers) that work is ready, or whenever the user mentions the artifact bus, message bus, agent mail, beads mail, doorbells, or pings between agents — even if they don't say "bus" explicitly.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

phatblat/dotfiles122026년 10월 19일 업데이트

aven

무료

Use aven to find tasks, update status, and leave durable handoff context.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

phatblat/dotfiles122026년 10월 19일 업데이트

Plan, order and deliver a batch of backlog items (e.g. every High item) in a Conventional Docs repo, one decision, branch, worktree, draft PR, review and merge per item. Use when asked to work through the backlog, implement all items of a priority, or sequence several backlog items end to end.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

phatblat/dotfiles122026년 10월 19일 업데이트

boris

무료

Codex workflow tips from Boris Cherny (creator of Codex) and the Codex team. Use when: setting up Codex, optimizing workflows, running parallel sessions, configuring AGENTS.md, using skills/commands, subagents, hooks, MCP integrations, or learning best practices. Covers: git worktrees, plan mode, verification, permissions, Slack MCP, BigQuery, prompting tips, plugins, custom agents, sandboxing, keybindings, status lines, output styles, customization, /simplify for code quality, /batch for parallel code migrations, /loop for scheduled tasks, code review agents, /btw for mid-task questions, /effort max reasoning, remote control sessions, voice mode, setup scripts, session naming, /color, PostCompact hook, auto mode, /schedule cloud jobs, iMessage plugin, auto-memory, and auto-dream, mobile app, session teleporting, Cowork Dispatch, Chrome extension, Desktop app, /branch forking, --bare SDK startup, --add-dir multi-repo, --agent custom agents, /voice input.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

phatblat/dotfiles122026년 10월 19일 업데이트

phatblat의 스킬 모두 보기

이 스킬의 문제 신고