跳到正文
cccskills
免费在 GitHub 公开

git-history-analysis

Use when the user asks about recent engineering work, what the team is working on, planning or roadmap material, or an explicitly requested Slack summary. Not for remote or irreversible changes.

中文简介正在准备中。当前显示原文说明。

集成工具Slack
查看安装方法

包含的文件(2)

  • SKILL.md6.2 KB
  • agents/openai.yaml228 B

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Git history analysis

Contract

FieldBound contract
TriggerUser asks about recent engineering work, what the team is working on, or planning or roadmap preparation.
AuthorityHuman-gated: previews the Slack destination and posting consequence before the optional remote Slack post; otherwise reversible local: writes only a report under reports/git_history_analysis/; rollback is deleting the report. No remote mutation. No force-push or PR creation.
Side effectWrites a categorized commit-breakdown report to reports/git_history_analysis/. Optionally posts a summary to Slack only on explicit human confirmation.
DoneReport saved with commit breakdown, active branches, key insights, risks, and follow-up questions.

Inputs

  • Repository path: required. Defaults to the current working directory when omitted. Only analyze the user's application repositories; do not analyze this agent's own repository.
  • Time period: optional. Defaults to the last 2 weeks (14 days).
  • Filters: optional path or branch filters to narrow the scope.

Procedure

  1. Bind scope before mutation: confirm the repository path and time period. If the path is ambiguous or absent and no default is acceptable, stop and ask; do not guess. Done when: the repository path and time period are confirmed, or the run stopped to ask.
  2. Verify the path is a git repository with commits in the requested range. If not, stop and report the blocker; do not write a partial report. Done when: the path is a git repository with commits in range, or the run stopped with the blocker reported.
  3. Collect commit history from the repository root, adjusting --since to the requested period and appending -- <filters> when path filters are specified:
    git --no-pager log --since="2 weeks ago" --pretty=format:"%h|%ad|%s" --date=short --stat -- <filters>
    
    Omit -- <filters> when no path filters are supplied. Done when: commit history collected for the requested period from the repository root.
  4. Collect active branches (work in progress), filtering out merged branches and dynamically resolving the default branch instead of hardcoding main:
    default_branch=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo main)
    git --no-pager branch -r --no-merged origin/$default_branch --sort=-committerdate | grep -E "<filters>" | head -20
    
    Apply branch-name filters before head so filtering cannot discard branches beyond the first twenty. Path filters are a different concern: collect them with git log --all --oneline -- <paths> in their own step, never by grepping branch names. Done when: active unmerged branches listed, sorted by most recent commit.
  5. Collect recent merges to the default branch (completed work), dynamically resolving the default branch and appending -- <filters> when path filters are specified:
    default_branch=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo main)
    git --no-pager log --since="2 weeks ago" --merges --pretty=format:"%h|%ad|%s" --date=short origin/$default_branch -- <filters>
    
    Omit -- <filters> when no path filters are supplied. Done when: recent merges to the default branch collected for the requested period.
  6. Categorize commits by conventional-commit prefix: feat: features, fix: bug fixes, refactor: code improvements, docs: documentation, test: testing, chore: maintenance. Adapt the prefix set when the repository uses different conventions. Done when: every commit is categorized by prefix (adapted to the repo's conventions).
  7. Group commits by directory or component to identify the most active areas. Done when: commits grouped by directory/component with active areas identified.
  8. Surface patterns: which features receive the most attention, whether any area shows high bug-fix activity, and the balance between new features and maintenance. Done when: patterns surfaced across features, bug-fix activity, and feature/maintenance balance.
  9. Note in-progress work from active branches not yet merged to the default branch. Done when: in-progress work from unmerged active branches noted.
  10. Do not attribute work to individuals. Omit author names from the report; describe work by branch, component, and commit type. Done when: the report contains no author names; work described by branch, component, and commit type.
  11. Write the report to reports/git_history_analysis/git_analysis_YYYY-MM-DD.md using the Output format. Done when: the report file exists at the dated path using the Output structure.
  12. If the user explicitly requests a Slack summary, confirm the destination and post only after explicit human confirmation. This branch is optional and is not required for the done predicate. Done when: a Slack summary is posted only after explicit human confirmation, or the branch is skipped.

Failure and recovery

  • Not a git repository or no commits in range: stop, state the blocker, do not write a report. No mutation occurs.
  • Ambiguous repository path or missing time period: ask the user; do not guess or widen scope.
  • Incomplete or unclear data: note the gap in the report; never fabricate commits, counts, or insights.
  • Slack post failure: the report remains saved and the done predicate holds for the report. State the Slack failure and do not retry without explicit human confirmation.
  • Never swallow errors or claim the done predicate holds when the report is missing or incomplete.

Output

A report at reports/git_history_analysis/git_analysis_YYYY-MM-DD.md ordered: title and period header, TL;DR, active features in progress, recently completed (merged to the default branch), commit breakdown by type, most active areas, key insights, risks and observations, follow-up questions. Evidence-driven: cite specific commits, branches, or metrics; separate facts from interpretations; note incomplete data. No author attribution.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Use when explaining System V AMD64, ARM AAPCS, RISC-V psABI, stack frames, variadic calls, or FFI register rules. Not for the Rust FFI binding layer: use rust-ffi.

中文简介正在准备中。当前显示原文说明。

OutlineDriven/odin-claude-plugin372026年9月29日 更新

Use when configuring ADC sampling time, DMA-driven ADC, calibration, or DAC channel setup on bare-metal MCUs. Not for the DMA stream itself: use dma-baremetal.

中文简介正在准备中。当前显示原文说明。

OutlineDriven/odin-claude-plugin372026年9月29日 更新

af-xdp

免费

Use when creating AF_XDP sockets, configuring UMEM and XSK rings, writing an XDP redirect program, or choosing copy versus zero-copy mode. Not for full kernel bypass: use dpdk.

中文简介正在准备中。当前显示原文说明。

OutlineDriven/odin-claude-plugin372026年9月29日 更新

Use when a completed session needs an agent-environment retrospective. Not for an engineering retrospective from telemetry: use engineering-retrospective.

中文简介正在准备中。当前显示原文说明。

OutlineDriven/odin-claude-plugin372026年9月29日 更新

Use when a redacted, trimmed agent transcript must be appended to a GitHub PR or issue body, with human approval and preview. Not for automated or model-initiated insertion.

中文简介正在准备中。当前显示原文说明。

OutlineDriven/odin-claude-plugin372026年9月29日 更新

agents-md

免费

Use when a repo needs agent setup, AGENTS.md added or made lean, CLAUDE.md audited, or agent instructions scored or pruned. Not for remote, credential, publish, deploy, or irreversible changes.

中文简介正在准备中。当前显示原文说明。

OutlineDriven/odin-claude-plugin372026年9月29日 更新

查看 OutlineDriven 的全部技能

报告此技能的问题