{ "schema_version": 2, "kind": "shortening-method", "format": "agent-skill", "id": "caveman-commit", "name": "Caveman commits", "category": "Technical", "summary": "Fit the change into a short commit subject and keep essential reasons below it.", "use_cases": [ "Commit messages", "Breaking changes", "Migration commits" ], "word_count": 128, "url": "https://sho.rten.it/methods/caveman-commit/", "instructions_url": "https://sho.rten.it/methods/caveman-commit/SKILL.md", "skill_url": "https://sho.rten.it/methods/caveman-commit/SKILL.md", "json_url": "https://sho.rten.it/methods/caveman-commit/llms.txt", "plain_text_url": "https://sho.rten.it/methods/caveman-commit/prompt.txt", "license": "MIT", "sources_url": "https://sho.rten.it/sources/#caveman-commit", "skill_name": "caveman-commit", "skill_description": "Fit the change into a short commit subject and keep essential reasons below it. Use for Commit messages, Breaking changes, Migration commits.", "agents_md_url": "https://sho.rten.it/methods/caveman-commit/AGENTS.md", "sources": [ { "title": "JuliusBrussee/caveman ยท Caveman commits", "url": "https://github.com/JuliusBrussee/caveman/blob/309834233183478e6fd7800d26e1fbaa6210274e/skills/caveman-commit/SKILL.md", "repository": "https://github.com/JuliusBrussee/caveman", "revision": "309834233183478e6fd7800d26e1fbaa6210274e", "path": "skills/caveman-commit/SKILL.md", "license": "MIT", "license_url": "https://github.com/JuliusBrussee/caveman/blob/309834233183478e6fd7800d26e1fbaa6210274e/LICENSE", "license_file": "licenses/juliusbrussee--caveman.txt", "copyright": "Copyright (c) 2026 Julius Brussee", "repository_stars": 104780, "checked_at": "2026-09-10", "license_scope": "Pinned commit predates the split-license v2 import. Root LICENSE is MIT with no scope exclusions.", "adaptation": "Preserved Conventional Commits, subject limits, and mandatory context for consequential changes. Removed automatic triggers and session-mode controls; the adaptation only generates text. Preserved required attribution instead of applying the source's default suppression of AI attribution. Pinned the MIT-only pre-v2 commit." } ], "instructions": "Write a concise commit message from the supplied change. Use the project's convention; otherwise use Conventional Commits: type, optional scope, and an imperative subject. Aim for 50 characters in the subject and do not exceed 72. Omit a trailing period.\n\nSkip the body when the subject explains the change. Add a body for a non-obvious reason, breaking change, migration, security fix, or revert. Preserve compatibility effects, required actions, exact identifiers, and issue references. Wrap body lines at 72 characters when practical without altering literal text.\n\nRemove introductions, self-reference, redundant file names, and commentary about generating the message. Retain attribution trailers required by the user or project. Do not invent reasons or issue-closing claims. Return only the ready-to-copy message. This task does not stage files or create a commit.", "example": { "context": "Breaking configuration change; ready-to-copy commit message only", "before": "The notification client configuration replaces retryDelay, expressed in seconds, with retryDelayMs, expressed in milliseconds, to make the unit explicit. The old retryDelay key is removed rather than retained as an alias. Existing configuration values must be converted, so a value of 2 becomes 2000. The default remains a two-second delay; its new numeric value is 2000. This is a breaking configuration change. The related issue is #184, but the supplied change does not establish that the issue can be closed. No test execution results are included.", "after": "feat(client)!: make retry delay units explicit\n\nBREAKING CHANGE: retryDelay is removed. Use retryDelayMs in\nmilliseconds; convert existing values from seconds (2 becomes 2000).\nThe default delay remains two seconds.\n\nRefs: #184", "must_preserve": [ "Conventional Commit with a breaking-change marker", "retryDelay removed, replaced by retryDelayMs", "Seconds-to-milliseconds conversion; 2 becomes 2000", "Default duration remains two seconds", "Reference #184 without claiming closure", "No unsupported test-result claim" ], "omitted": [ "Drops change-description narration and repeated numeric default detail; keeps the required migration in the commit body." ], "kind": "illustrative" } }