Agent skill

Commit Message

by tektoncd in tektoncd/cli

This skill should be used when the user asks to "create a commit", "generate commit message", "commit changes", "make a commit", mentions "conventional commits", or discusses commit message…

Apache-2.0Auto-check passedDevelopment

Install Commit Message

skills CLI
$ npx skills add tektoncd/cli --skill commit-message -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install tektoncd/cli commit-message --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/tektoncd/cli.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/commit-message .claude/skills/commit-message && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
commit-message
GitHub stars
461
Token cost
~2.8k tokens
SKILL.md length
969 words
Files
3 (incl. references)
Skills in repo
2
Repo updated
First seen
Licence
Apache-2.0

At a glance

This skill should be used when the user asks to "create a commit", "generate commit message", "commit changes", "make a commit", mentions "conventional commits", or discusses commit message…

  • Works in 5 steps: Analyze changes: Run git status and git… → Determine scope: Use component name from… → Generate message: Create conventional… → …
  • Asks to create a commit
  • SKILL.md covers Purpose, Quick Workflow, Conventional Commit Format and Line Length Requirements, plus 8 more sections
  • Calls git

What it does

Commit Message is an agent skill from tektoncd/cli. This skill should be used when the user asks to "create a commit", "generate commit message", "commit changes", "make a commit", mentions "conventional commits", or discusses commit message formatting. Provides guided workflow for creating properly formatted commit messages with line length validation and required trailers.

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 3 other files, including reference files (for example `references/commit-types.md` and `references/trailer-detection.md`).

It sits in Development, covering Commit messages. It works with GitHub. The repository describes itself as: A CLI for interacting with Tekton! The licence is Apache-2.0.

When your agent uses it

  • Asks to create a commit
  • Generate commit message
  • Mentions conventional commits
  • Discusses commit message formatting

Example prompts

  • “create a commit”
  • “generate commit message”
  • “commit changes”
  • “/commit-message”

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Analyze changes: Run git status and git diff to understand modifications
  2. Determine scope: Use component name from changed files, or GitHub issue number if available
  3. Generate message: Create conventional commit message with proper formatting
  4. Add trailers: Include Signed-off-by and Assisted-by trailers
  5. Confirm with user: Display message and wait for approval before committing

What it can do on your machine

Read from SKILL.md and the folder at commit 808e3b1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Commit Message loads about 2.8k tokens when it runs, and up to ~7k if it reads all its reference files. Until then it costs about 85 tokens; SKILL.md has 969 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~85
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from tektoncd/cli at commit 808e3b1, republished under its Apache-2.0 licence (© tektoncd). 969 words, ~2,798 tokens.

Download SKILL.mdSave it as .claude/skills/commit-message/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
commit-message
description
This skill should be used when the user asks to "create a commit", "generate commit message", "commit changes", "make a commit", mentions "conventional commits", or discusses commit message formatting. Provides guided workflow for creating properly formatted commit messages with line length validation and required trailers.
version
0.2.0

Conventional Commit Message Creation

Create properly formatted conventional commit messages following project standards with line length validation and required trailers.

Purpose

Generate commit messages that:

  • Follow conventional commits format (type(scope): description)
  • Use component names or GitHub issue numbers as scope
  • Respect line length limits (50 for subject, 72 for body)
  • Include required trailers (Signed-off-by, Assisted-by)
  • Match Tekton commit message standards

Quick Workflow

  1. Analyze changes: Run git status and git diff to understand modifications
  2. Determine scope: Use component name from changed files, or GitHub issue number if available
  3. Generate message: Create conventional commit message with proper formatting
  4. Add trailers: Include Signed-off-by and Assisted-by trailers
  5. Confirm with user: Display message and wait for approval before committing

CRITICAL: Never commit without explicit user confirmation.

Conventional Commit Format

Structure
text
<type>(<scope>): <description>

[optional body]

Signed-off-by: <name> <email>
Assisted-by: <Model name> (via <Tool>)
Type Selection

Choose the appropriate commit type based on changes:

TypeDescriptionExample
featNew featuresfeat(pipeline): add start --output flag
fixBug fixesfix(taskrun): resolve log streaming race
docsDocumentationdocs(README): update installation steps
refactorCode refactoringrefactor(actions): simplify CRUD helpers
testTest changestest(pipelinerun): add describe unit tests
choreMaintenancechore(deps): update go dependencies
buildBuild systembuild(Makefile): add vendor target
ciCI/CD changesci(github): add golangci-lint action
perfPerformanceperf(log): optimize pod log streaming
styleCode stylestyle(format): run goimports formatter
revertRevert commitrevert: undo breaking CLI flag change

For complete type reference, see references/commit-types.md.

Scope Rules
Priority 1: Component from changed files

Analyze staged files to identify the primary component:

bash
git diff --cached --name-only
File patternScopeExample commit
pkg/cmd/pipeline/*pipelinefeat(pipeline): add start --dry-run flag
pkg/cmd/task/*taskfix(task): resolve list filtering
pkg/cmd/pipelinerun/*pipelinerunfeat(pipelinerun): add cancel subcommand
pkg/cmd/taskrun/*taskrunfix(taskrun): correct log streaming
pkg/actions/*actionsrefactor(actions): simplify CRUD
pkg/formatted/*formattedfeat(formatted): add JSON output
pkg/log/*logfix(log): handle container restart
pkg/pods/*podsfix(pods): resolve container lookup
pkg/cli/*clirefactor(cli): extract client setup
pkg/flags/*flagsfeat(flags): add --output flag
pkg/plugins/*pluginsfeat(plugins): add discovery logic
pkg/version/*versionfix(version): correct server detection
docs/*docs or filenamedocs(README): update steps
test/*component being testedtest(pipeline): add E2E tests
cmd/*command namefeat(tkn): add new subcommand
Root filesfilenamechore(Makefile): add target
AGENTS.md, CLAUDE.mddocsdocs(AGENTS.md): update conventions
Priority 2: GitHub issue number (optional)

If the work is tracked in a GitHub issue and the user provides one, it can be used as the scope:

text
# Branch: fix-123-log-race
# Scope: #123 or component name
# Result: fix(log): resolve streaming race condition

Fixes #123

Add Fixes #NNN or Closes #NNN in the commit body (not the scope) — this is the standard GitHub convention for auto-closing issues.

Priority 3: Ask user

If changed files span multiple components or scope is unclear, ask the user which component is the primary focus.

Line Length Requirements

Subject Line
  • Target: 50 characters maximum
  • Hard limit: 72 characters
  • Format: type(scope): description counts toward limit
  • Tips: Use present tense, no period at end
text
# Good (40 chars)
feat(pipeline): add start --dry-run

# Too long - exceeds 72 char hard limit
feat(pipeline): add comprehensive dry-run support with preview output for pipeline start command
Body
  • Wrap at 72 characters per line
  • Blank line required between subject and body
  • Content: Explain why, not what (code shows what)
  • Format: Wrap manually or use heredoc in git commit
text
feat(pipeline): add start --dry-run

Add dry-run flag to pipeline start command that previews the
PipelineRun YAML without creating it. Useful for validating
parameters and workspace bindings before submission.

Signed-off-by: Developer Name <developer@example.com>
Assisted-by: <Model name> (via <Tool>)

Required Trailers

Signed-off-by

Always include: Signed-off-by: <name> <email>

This certifies the Developer Certificate of Origin (DCO) — required by tektoncd upstream.

Detection priority order:

  1. Environment variables: $GIT_AUTHOR_NAME and $GIT_AUTHOR_EMAIL
  2. Git config: git config user.name and git config user.email
  3. If neither configured, ask user to provide details
bash
echo "$GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>"
git config user.name
git config user.email

If neither is configured, ask the user to provide their name and email.

Assisted-by

Always include: Assisted-by: <model-name> (via <Tool>)

Format examples:

text
Assisted-by: <Model name> (via <Tool>)

Use the actual model name (Claude Sonnet 4.5, Claude Opus 4.5, etc.).

User Confirmation Requirement

CRITICAL RULE: Always ask for user confirmation before executing git commit.

Show full SKILL.md (387 more words)Show less
Confirmation Workflow
  1. Generate the commit message following all rules above
  2. Display the complete message to the user with separator
  3. Ask: "Should I commit with this message? (y/n)"
  4. Wait for user response
  5. Commit only if user confirms (yes/y/affirmative)
Example Interaction
text
Generated commit message:
---
feat(pipeline): add JSON output support

Add --output=json flag to pipeline list and describe commands.
Uses the existing formatted package JSON helpers.

Signed-off-by: Developer Name <developer@example.com>
Assisted-by: <Model name> (via <Tool>)
---

Should I commit with this message? (y/n)

Wait for user response before proceeding.

Commit Execution

Use heredoc format for proper multi-line handling:

bash
git commit -m "$(cat <<'EOF'
feat(pipeline): add JSON output support

Add --output=json flag to pipeline list and describe commands.

Signed-off-by: Developer Name <developer@example.com>
Assisted-by: <Model name> (via <Tool>)
EOF
)"

Never use:

  • --no-verify (skips pre-commit hooks)
  • --no-gpg-sign (skips signing)
  • --amend (unless explicitly requested and safe)

Complete Examples

Feature with component scope
text
feat(pipeline): add start --dry-run

Add dry-run flag to pipeline start command that previews the
PipelineRun YAML without creating it on the cluster.

Signed-off-by: Developer Name <developer@example.com>
Assisted-by: <Model name> (via <Tool>)
Bug fix closing a GitHub issue
text
fix(log): resolve concurrent streaming panic

Prevent nil pointer dereference when multiple containers stream
logs simultaneously during a TaskRun.

Fixes #789

Signed-off-by: Developer Name <developer@example.com>
Assisted-by: <Model name> (via <Tool>)
Documentation update
text
docs(AGENTS.md): update architecture conventions

Add command tree structure and clarify golden-file testing
rules for contributors.

Signed-off-by: Developer Name <developer@example.com>
Assisted-by: <Model name> (via <Tool>)
Breaking change
text
feat(cli)!: remove deprecated --namespace flag

Remove the deprecated short-form --namespace flag from all
commands. Use -n instead. Deprecated since v0.30.

BREAKING CHANGE: Removed --namespace long flag from all
commands. Use -n or --ns instead.

Signed-off-by: Developer Name <developer@example.com>
Assisted-by: <Model name> (via <Tool>)

Validation Rules

Every commit message must pass these checks:

  1. Subject line format: Must match type(scope): description (conventional commits)
  2. Subject line length: Target 50 chars, hard limit 72 chars
  3. No trailing punctuation: Subject must not end with . ! ? , : ; (exception: ! for breaking changes like feat!:)
  4. No trailing whitespace: On any line
  5. Blank line after subject: Required before body text
  6. Body line length: Wrap at 72 characters per line
  7. Valid commit type: Must be one of: feat, fix, docs, style, refactor, test, chore, build, ci, perf, revert
  8. Signed-off-by trailer: Required — Signed-off-by: Name <email>
  9. Assisted-by trailer: Required when AI assists — Assisted-by: <Model name>
  10. Trailer spacing: Blank line before trailers, no blank lines between them, no trailing blank lines

Format standards

Follow Tekton commit message standards:

  • Conventional commit format (type(scope): description)
  • Subject line: target 50 characters, hard limit 72
  • Body lines wrapped at 72 characters
  • Required Signed-off-by trailer (DCO)
  • No trailing punctuation on the subject

Auto-Detection Summary

When generating commit messages:

  1. Run git status (without -uall flag)
  2. Run git diff for staged and unstaged changes
  3. Identify primary component from staged file paths
  4. If scope unclear, ask user
  5. If user mentions a GitHub issue number, add Fixes #NNN to body
  6. Analyze staged files to determine commit type
  7. Generate appropriate scope and description
  8. Detect author info from environment variables or git config
  9. Ensure subject line is ≤50 characters (max 72)
  10. Wrap body text at 72 characters per line
  11. Add required trailers (Signed-off-by and Assisted-by)
  12. Format according to conventional commits standard
  13. Display message and ask for user confirmation
  14. Only commit after receiving confirmation

Additional Resources

For detailed information:

  • references/commit-types.md - Complete commit type reference with descriptions
  • references/trailer-detection.md - Author detection logic and priority order

© tektoncd, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (references) in .agents/skills/commit-message of tektoncd/cli.

  • SKILL.md
  • references/commit-types.md
  • references/trailer-detection.md

Open the folder on GitHubat commit 808e3b1

Compare with similar skills

Commit Message next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Commit Message compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Commit Message this skilltektoncd/cli461—~2.8kAutomated safety check: PassApache-2.0
PR Finalize Reviewmicrosoft/garnet12k—~3.1kAutomated safety check: PassMIT
React Router Pull Request Creatorremix-run/react-router57k—~2.5kAutomated safety check: PassMIT
Verdaccio Pull Request Workflowverdaccio/verdaccio18k—~1.9kAutomated safety check: PassMIT
Gh PR Metadatamodule-federation/core2.7k—~1kAutomated safety check: PassMIT
Draft Pull Request Creatorwordpress-mobile/WordPress-Android3.2k—~881Automated safety check: NotesGPL-2.0

Similar skills

  • PR Finalize Review

    microsoft/garnet

    Official

    Checks that a pull request's title and description match its implementation and reviews the code for Garnet best practices, reporting findings without posting them.

    12k GitHub stars~3.1k tokensUpdated today
    DevelopmentAuto-check passed
  • React Router Pull Request Creator

    remix-run/react-router

    Packages finished React Router work into a draft pull request: branch, commit, push, a written PR body and the right GitHub labels.

    57k GitHub stars~2.5k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Takes a change through a verdaccio pull request: branch, local checks, changeset, title and body, labels, CI and review rounds, and ports to other release lines.

    18k GitHub stars~1.9k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Gh PR Metadata

    module-federation/core

    Update the current GitHub PR title and body for this repository so they match the repo's pull request template and conventional-commit title style.

    2.7k GitHub stars~1k tokensUpdated today
    DevelopmentAuto-check passed
  • Draft Pull Request Creator

    wordpress-mobile/WordPress-Android

    Commits and pushes current changes, writes a pull request title and body from the branch history and template, and opens a draft PR on GitHub after you approve it.

    3.2k GitHub stars~881 tokensUpdated today
    DevelopmentAuto-check: notes
  • Submit PR

    tisfeng/Easydict

    创建或复用当前 checkout 已提交变更的 GitHub PR,必要时推送任务分支。PR 审查使用 review-pr;仅本地提交使用 git-commit。

    15k GitHub stars~595 tokensUpdated yesterday
    DevelopmentAuto-check passed

More from tektoncd/cli

  • Release Notes

    tektoncd/cli

    This skill should be used when the user asks to "create release note", "generate release notes", "release notes", "release changelog", "update GitHub release", or wants to generate categorized…

    461 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Commit Message

What does Commit Message do?

This skill should be used when the user asks to "create a commit", "generate commit message", "commit changes", "make a commit", mentions "conventional commits", or discusses commit message…. Commit Message is an agent skill from tektoncd/cli. This skill should be used when the user asks to "create a commit", "generate commit message", "commit changes", "make a commit", mentions "conventional commits", or discusses commit message formatting.

When should I use Commit Message?

Commit Message fits situations like: asks to create a commit; generate commit message; mentions conventional commits; discusses commit message formatting.

How do I install Commit Message in Claude Code?

Run `npx skills add tektoncd/cli --skill commit-message -a claude-code`. Or copy the skill folder (.agents/skills/commit-message in tektoncd/cli) into .claude/skills/commit-message in your project. Claude Code loads it when a task matches its description.

How do I install Commit Message in Codex?

Run `npx skills add tektoncd/cli --skill commit-message -a codex`. Or copy the skill folder (.agents/skills/commit-message in tektoncd/cli) into .agents/skills/commit-message in your project. Codex loads it when a task matches its description.

Can I use Commit Message in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add tektoncd/cli --skill commit-message -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/commit-message, .gemini/skills/commit-message, .github/skills/commit-message and .opencode/skills/commit-message in your project.

What does Commit Message need to run?

Going by SKILL.md and its folder, Commit Message needs the command-line tools its instructions call (git).

Does Commit Message access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Commit Message safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Commit Message use?

Commit Message is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Commit Message use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 4.3k tokens, read only when the agent opens those files.

What are the alternatives to Commit Message?

Skills that share tags, products or a category with Commit Message: PR Finalize Review (microsoft/garnet, 12k stars), React Router Pull Request Creator (remix-run/react-router, 57k stars), Verdaccio Pull Request Workflow (verdaccio/verdaccio, 18k stars) and Gh PR Metadata (module-federation/core, 2.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Commit Message?

tektoncd (a GitHub organization) maintains it in tektoncd/cli, which has 461 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 7, 2026.

Source: tektoncd/cli on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.