/at-self-eval
Summarize a contributor's Git history, a provided work log, or both into a concise, review-friendly self-evaluation for quarterly, semi-annual, or promotion cycles.
$ npx -y skills add kairyou/agent-tools --skill at-self-eval --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/at-self-eval
Context preview
The summary Claude sees to decide when to auto-load this skill.
Summarize a contributor's Git history, a provided work log, or both into a concise, review-friendly self-evaluation for quarterly, semi-annual, or promotion cycles.
SKILL.md
at-self-eval.SKILL.mdname: at-self-eval
description: "Summarize a contributor's Git history, a provided work log, or both into a concise, review-friendly self-evaluation for quarterly, semi-annual, or promotion cycles."
argument-hint: "[<author>] [--from yyyy-mm-dd] [--to yyyy-mm-dd]"
Self-Evaluation Summary
`resolve evidence -> group by business line -> deduplicate -> <=8 outcomes -> review`
Author and date window
Normalize flags or plain language such as `统计1-3月的产出` and `统计上半年的工作` into `(author, from, to)`. Explicit input wins; fill only missing values:
| User gave | Resolve to | | --- | --- | | `from` and `to` | use both | | only `from` | `to` = today | | only `to` | `from` = Jan 1 of that year | | no range | current quarter |
Parse half-years, calendar quarters, month ranges, and rolling periods. A spoken period without a year means the current year, except months still ahead of today, which mean the previous year. Query through `<to + 1 day>` because Git's `--until` is exclusive. Always exclude merge commits.
Use an explicit author when supplied; otherwise resolve it independently per repository with `git -C <root> config user.name`. Never infer aliases or use the remote login as the author. List candidates with `git -C <root> log --no-merges --since=<from> --until=<to+1day> --format=%H%x09%an --branches HEAD <upstream refs>`, taking the upstream refs from `git -C <root> for-each-ref --format=%(upstream) refs/heads/`; passing no ref walks only the current branch, so work on an unmerged branch reads as no activity, while `--all` reaches into remote branches nobody tracks. Keep the rows whose `%an` equals that name exactly. Never pass `--author`: it matches the whole `Name <email>` header, so anchored patterns silently match nothing. If no commits match, report that together with the author names the window actually holds; do not try spelling or language variants. When results exist, mention once that the user can provide other author names if needed.
Project evidence
Read optional `workProjects` from `~/.agent-tools/config.jsonc`. An entry is a path or `{ "path", "prompt" }`, where the prompt is free text this skill follows for that project, such as how to label items or which commits to skip.
- No project named: current Git repository plus configured projects.
- Projects named directly: only those projects.
- "Also include" / `另外包含`: add them to the default scope.
Resolve paths to Git roots and deduplicate them. Report invalid paths; a non-Git current directory does not block other valid projects. Do not clone remote URLs without consent.
Inspect all local branches, current HEAD, user-named branches, and configured upstreams. Unless the user requests local-only data, refresh only the configured upstream branches, grouped into one best-effort `git fetch --no-tags <remote> <branch...>` per involved remote. Fetch failure is non-fatal. Do not change the working tree or local branch history. Deduplicate commits by hash.
Begin the result with the resolved author/window and, for multiple repositories, a plain-language list of the repositories checked. Mention remote-update failures without Git jargon. Do not show commit counts or a generic source line.
Optional logs
A pasted daily/weekly log or explicit file path provides business context. If neither is supplied, optionally read `dailyLog.output` and `log.output` (an automatically recorded AI session log; a dated markdown file, or a directory of per-day `<date>.md` reports, of which read the dates inside the window; entries under `log.projects` may add their own `output` paths, check those too) from `~/.agent-tools/config.jsonc`; when `log.format` is `daily`, its single-line results may be truncated and are not standalone proof of an outcome. When it is `detailed`, the per-day reports are stronger evidence; use them as supplementary material, not as a replacement for Git or user confirmation. If the `log` block or its output is absent, skip this source. The latter also captures work that never produced commits, such as troubleshooting or research sessions. Explicit conversation input always wins; a missing key or file is non-fatal.
Commit-backed items may be summarized directly. Keep log-only work separate for user confirmation; include it only after confirmation, using only dates stated in the log or by the user. Never turn undated log text into work inside the selected window.
When the user asks for a summary from a log alone, skip project scanning; when the window has no Git evidence, fall back to the log. Either way the log becomes the primary source: say so in the result and skip per-item confirmation, as the whole draft is the user's own account.
If the user supplies a remote repository URL, ask before cloning it to a temporary directory and remove it afterward unless asked to keep it. Confirm before scanning every remote branch.
Group the work
Group related commits into business-line or module outcomes. Fold lint, formatting, version bumps, repeated syncs, and follow-up fixes into the outcome they supported. Drop isolated trivial housekeeping. Similar subjects alone are not duplicates; use the repository, changed paths, and intent, and surface uncertain attribution for review.
Write the summary
Output a numbered list with no more than 8 top-level outcomes. Each item starts with the business line/module and states a concrete result with 2-4 key points or one concise sentence. Prefer high-impact delivery, architecture, and key fixes; condense or omit routine work. Do not distribute the quota evenly if that hides standout results.
Mention a concentrated month only when it adds useful distribution context, never as a productivity score. Match the user's language. Every confirmed outcome must trace to a commit or a user-confirmed log item.
> 作者: <author> · 窗口: 2026-01-01 ~ 2026-06-30 · (自动推断, 如不对请指正)
> 项目: <repo1> · <repo2>
1. <业务线A>: <结果>; <关键点>
2. <业务线B>: <结果>
End with one reminder that this is
Read more
name: at-self-eval description: "Summarize a contributor's Git history, a provided work log, or both into a concise, review-friendly self-evaluation for quarterly, semi-annual, or promotion cycles." argument-hint: "[<author>] [--from yyyy-mm-dd] [--to yyyy-mm-dd]"
Self-Evaluation Summary
`resolve evidence -> group by business line -> deduplicate -> <=8 outcomes -> review`
Author and date window
Normalize flags or plain language such as `统计1-3月的产出` and `统计上半年的工作` into `(author, from, to)`. Explicit input wins; fill only missing values:
| User gave | Resolve to | | --- | --- | | `from` and `to` | use both | | only `from` | `to` = today | | only `to` | `from` = Jan 1 of that year | | no range | current quarter |
Parse half-years, calendar quarters, month ranges, and rolling periods. A spoken period without a year means the current year, except months still ahead of today, which mean the previous year. Query through `<to + 1 day>` because Git's `--until` is exclusive. Always exclude merge commits.
Use an explicit author when supplied; otherwise resolve it independently per repository with `git -C <root> config user.name`. Never infer aliases or use the remote login as the author. List candidates with `git -C <root> log --no-merges --since=<from> --until=<to+1day> --format=%H%x09%an --branches HEAD <upstream refs>`, taking the upstream refs from `git -C <root> for-each-ref --format=%(upstream) refs/heads/`; passing no ref walks only the current branch, so work on an unmerged branch reads as no activity, while `--all` reaches into remote branches nobody tracks. Keep the rows whose `%an` equals that name exactly. Never pass `--author`: it matches the whole `Name <email>` header, so anchored patterns silently match nothing. If no commits match, report that together with the author names the window actually holds; do not try spelling or language variants. When results exist, mention once that the user can provide other author names if needed.
Project evidence
Read optional `workProjects` from `~/.agent-tools/config.jsonc`. An entry is a path or `{ "path", "prompt" }`, where the prompt is free text this skill follows for that project, such as how to label items or which commits to skip.
- No project named: current Git repository plus configured projects.
- Projects named directly: only those projects.
- "Also include" / `另外包含`: add them to the default scope.
Resolve paths to Git roots and deduplicate them. Report invalid paths; a non-Git current directory does not block other valid projects. Do not clone remote URLs without consent.
Inspect all local branches, current HEAD, user-named branches, and configured upstreams. Unless the user requests local-only data, refresh only the configured upstream branches, grouped into one best-effort `git fetch --no-tags <remote> <branch...>` per involved remote. Fetch failure is non-fatal. Do not change the working tree or local branch history. Deduplicate commits by hash.
Begin the result with the resolved author/window and, for multiple repositories, a plain-language list of the repositories checked. Mention remote-update failures without Git jargon. Do not show commit counts or a generic source line.
Optional logs
A pasted daily/weekly log or explicit file path provides business context. If neither is supplied, optionally read `dailyLog.output` and `log.output` (an automatically recorded AI session log; a dated markdown file, or a directory of per-day `<date>.md` reports, of which read the dates inside the window; entries under `log.projects` may add their own `output` paths, check those too) from `~/.agent-tools/config.jsonc`; when `log.format` is `daily`, its single-line results may be truncated and are not standalone proof of an outcome. When it is `detailed`, the per-day reports are stronger evidence; use them as supplementary material, not as a replacement for Git or user confirmation. If the `log` block or its output is absent, skip this source. The latter also captures work that never produced commits, such as troubleshooting or research sessions. Explicit conversation input always wins; a missing key or file is non-fatal.
Commit-backed items may be summarized directly. Keep log-only work separate for user confirmation; include it only after confirmation, using only dates stated in the log or by the user. Never turn undated log text into work inside the selected window.
When the user asks for a summary from a log alone, skip project scanning; when the window has no Git evidence, fall back to the log. Either way the log becomes the primary source: say so in the result and skip per-item confirmation, as the whole draft is the user's own account.
If the user supplies a remote repository URL, ask before cloning it to a temporary directory and remove it afterward unless asked to keep it. Confirm before scanning every remote branch.
Group the work
Group related commits into business-line or module outcomes. Fold lint, formatting, version bumps, repeated syncs, and follow-up fixes into the outcome they supported. Drop isolated trivial housekeeping. Similar subjects alone are not duplicates; use the repository, changed paths, and intent, and surface uncertain attribution for review.
Write the summary
Output a numbered list with no more than 8 top-level outcomes. Each item starts with the business line/module and states a concrete result with 2-4 key points or one concise sentence. Prefer high-impact delivery, architecture, and key fixes; condense or omit routine work. Do not distribute the quota evenly if that hides standout results.
Mention a concentrated month only when it adds useful distribution context, never as a productivity score. Match the user's language. Every confirmed outcome must trace to a commit or a user-confirmed log item.
> 作者: <author> · 窗口: 2026-01-01 ~ 2026-06-30 · (自动推断, 如不对请指正) > 项目: <repo1> · <repo2> 1. <业务线A>: <结果>; <关键点> 2. <业务线B>: <结果>
End with one reminder that this is
Reusable Agent Skills for compatible coding agents, plus per-agent runtime capabilities for statusline, provider usage, vision, and session logging. Requires Node.js >= 22.
Repo: kairyou/agent-tools
Other skills on agent-tools.
at-vision
Inspect screenshots, photos, diagrams, image paths, and image URLs when the task depends on visible content. Use when the prompt lacks actual image content,…
at-zentao
Handle ZenTao (禅道) Bugs and Tasks end to end, including updating or writing back an item after code changes, managing Task status and hours, and reading linked…
at-commit
Generate a Conventional Commits message from staged changes and wait for confirmation before committing. Use when the user asks to commit or generate a commit…
at-daily-log
Summarize each day's Git activity into a concise daily work log, for a single date or a range. Uses the current repository, optional configured work projects,…

