From punch
Domain knowledge for Punch — issue key parsing, time estimation, duplicate prevention
How this skill is triggered — by the user, by Claude, or both
Slash command
/punch:worklog-syncThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Background knowledge for syncing GitLab activity to Jira worklogs. Referenced by other Punch skills.
Background knowledge for syncing GitLab activity to Jira worklogs. Referenced by other Punch skills.
The canonical regex for Jira issue keys:
[A-Z][A-Z0-9_]+-\d+
Examples: PROJ-101, TEAM-42, WEB-7
Branch name: feature/PROJ-42-user-settings → PROJ-42
/.MR title: [PROJ-101] Implement user dashboard → PROJ-101
Commit message: PROJ-101: fix dropdown alignment → PROJ-101
MR description: Sometimes contains issue references like Closes PROJ-101.
A single MR may have many commits all referencing the same issue. Deduplicate by:
Not all teams embed Jira keys in their Git workflow. When no key is detected:
~/.punch/prefs.json → branch_mappings may have a known mapping for this branch.assignee = currentUser() AND status NOT IN (Done, Closed, Resolved).~/.punch/prefs.json for future runs.This ensures Punch works regardless of naming conventions — even with zero Jira keys in Git history.
Not all GitLab work is commits. The plugin recognizes these activity categories:
| Category | GitLab Event | How to detect | Default time |
|---|---|---|---|
| Commits/Push | pushed event or commit list | list_commits, Events API | Interval-based |
| MR Created | created + target_type MergeRequest | Events API or MR list filtered by created_at | 30m |
| MR Merged | merged event | Events API | 15m |
| Code Review | commented on a MR (note on MR) | MR notes API, or Events with target_type Note | 15m per comment |
| Issue Comment | commented on an issue | Events API | 15m |
| Issue Created | created + target_type Issue | Events API | 20m |
| Issue Closed | closed + target_type Issue | Events API | 10m |
Code review time is real work but easy to miss. When the user reviews someone else's MR:
"GitLab sync: code review on !45 (2 comments)"For commits:
For non-commit activities:
Rounding: Round final per-issue total to nearest 15-minute increment.
Always present Strategy A results first. If the user says the estimates look wrong, offer Strategy B or C.
When calling jira_add_worklog, use these formats:
1h, 30m, 1h 30m, 2h 15m2026-03-12T09:00:00.000+0900
"Punch: 5 commits, MR !42 created+merged""Punch: code review on !45 (3 comments)""Punch: 1 issue comment, issue closed"Before generating comments for new worklogs, Punch analyzes the user's existing worklog entries to match their style.
| Dimension | What to look for | Examples |
|---|---|---|
| Language | Primary language used | "작업 완료" → Korean; "Fixed bug" → English |
| Format | Structure of the comment | Bullet list, free text, tag prefix |
| Detail level | How much info is included | "작업함" (minimal) vs "드롭다운 정렬 수정, 반응형 처리 추가" (detailed) |
| Prefix | Any consistent prefix | [DEV], Punch:, none |
| References | Whether MR/commit refs are included | "MR !42", "3 commits" |
~/.punch/prefs.json."Punch:" as a hidden dedup marker within the comment (can be at the end or as a tag)If no existing worklogs are found, use the default format:
"Punch: {concise activity summary in English}"
Before recording any worklog:
jira_get_worklog.⚠️ PROJ-101 already has a 2h worklog for 2026-03-12Worklogs created by Punch include "Punch:" in the comment. Use this marker to detect entries previously created by this plugin and avoid double-counting.
The user works with these GitLab projects and Jira projects:
{type}/{ISSUE-KEY}-{short-description} (e.g., feature/PROJ-101-dashboard-widget){ISSUE-KEY}: {description} or {ISSUE-KEY} {description}[{ISSUE-KEY}] {description} or {ISSUE-KEY}: {description}Adapt parsing to the user's actual conventions once you see their commit history.
npx claudepluginhub ighost-p/punch --plugin punchTime tracking, worklogs, and time reports. TRIGGERS: 'log time', 'time spent on', 'log hours', 'log work', 'worklog', 'time tracking', 'timesheet', 'how much time', 'time logged', 'time report', 'export timesheet', 'set estimate', 'remaining estimate', 'original estimate'. Use for time-related queries and operations on issues. NOT FOR: SLA tracking (use jira-jsm), date-based issue searches (use jira-search), issue field updates unrelated to time (use jira-issue).
Fetches a JIRA issue and distills it into a structured task with acceptance criteria, sprint context, and codebase analysis. Surfaces missing criteria, scope, and risks, and can enrich the JIRA issue with analysis or spawn sub-tickets.
Manages Jira worklogs using jirac CLI: lists worklogs, adds time entries with optional comments, deletes by ID for issues. Useful for time tracking on Jira tickets.