@barlevalon/caveman-commit-skill 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +7 -0
- package/SKILL.md +166 -0
- package/package.json +39 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Julius Brussee
|
|
4
|
+
Copyright (c) 2026 Alon Bar-Lev (modifications)
|
|
5
|
+
|
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
+
in the Software without restriction, including without limitation the rights
|
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
+
furnished to do so, subject to the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be included in all
|
|
14
|
+
copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# caveman-commit
|
|
2
|
+
|
|
3
|
+
Ultra-compressed commit message generator. Uses release-aware scoped commit subjects: scope-first by default, optional Conventional Commit type when it carries useful or project-required metadata. Cuts noise while preserving intent and reasoning. Use when user says "write a commit", "commit message", "generate commit", "/commit", or invokes /caveman-commit. Auto-triggers when staging changes.
|
|
4
|
+
|
|
5
|
+
## Credits
|
|
6
|
+
|
|
7
|
+
Based on [`JuliusBrussee/caveman`](https://github.com/JuliusBrussee/caveman/tree/main/skills/caveman-commit) by Julius Brussee.
|
package/SKILL.md
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: caveman-commit
|
|
3
|
+
description: >
|
|
4
|
+
Ultra-compressed commit message generator. Uses release-aware scoped commit
|
|
5
|
+
subjects: scope-first by default, optional Conventional Commit type when it
|
|
6
|
+
carries useful or project-required metadata. Cuts noise while preserving
|
|
7
|
+
intent and reasoning. Use when user says "write a commit", "commit message",
|
|
8
|
+
"generate commit", "/commit", or invokes /caveman-commit. Auto-triggers when
|
|
9
|
+
staging changes.
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
Write commit messages terse and exact. Scope first. No fluff. Why over what.
|
|
13
|
+
|
|
14
|
+
## Format
|
|
15
|
+
|
|
16
|
+
Default subject:
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
<scope>: <imperative summary>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Typed subject, when useful or required by project:
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
<type>(<scope>): <imperative summary>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Breaking typed subject:
|
|
29
|
+
|
|
30
|
+
```text
|
|
31
|
+
<type>(<scope>)!: <imperative summary>
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Subject Rules
|
|
35
|
+
|
|
36
|
+
- Pick meaningful **scope** first: subsystem, user-facing area, domain concept, package, workflow, or module.
|
|
37
|
+
- Use imperative mood: "add", "fix", "remove" — not "added", "adds", "adding".
|
|
38
|
+
- ≤50 chars when possible, hard cap 72.
|
|
39
|
+
- No trailing period.
|
|
40
|
+
- Match project convention for capitalization after colon.
|
|
41
|
+
- Avoid file-location noise when domain scope is clearer.
|
|
42
|
+
|
|
43
|
+
## When To Use Type
|
|
44
|
+
|
|
45
|
+
Use plain scoped form when type adds no useful signal:
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
env: show unknown runtime fields
|
|
49
|
+
backend: persist Slack intake before ACK
|
|
50
|
+
ci: skip Go checks for backend-only changes
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Use Conventional Commit type when:
|
|
54
|
+
|
|
55
|
+
- project policy requires it
|
|
56
|
+
- release automation or changelog tooling still consumes it
|
|
57
|
+
- PR title will become squash commit and type helps reviewers
|
|
58
|
+
- TDD phase needs explicit signal: `test`, `fix`, `refactor`
|
|
59
|
+
- change is clearly `docs`, `ci`, `build`, `test`, `refactor`, `perf`, `revert`
|
|
60
|
+
- breaking change needs `!` / `BREAKING CHANGE:` trailer
|
|
61
|
+
|
|
62
|
+
Types:
|
|
63
|
+
|
|
64
|
+
```text
|
|
65
|
+
feat fix perf refactor docs test chore build ci style revert
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Type is metadata, not substitute for good scope.
|
|
69
|
+
|
|
70
|
+
## Body Rules
|
|
71
|
+
|
|
72
|
+
Skip body when subject is self-explanatory.
|
|
73
|
+
|
|
74
|
+
Add body for:
|
|
75
|
+
|
|
76
|
+
- non-obvious why
|
|
77
|
+
- RED/GREEN/TDD evidence
|
|
78
|
+
- breaking changes
|
|
79
|
+
- security fixes
|
|
80
|
+
- data migrations
|
|
81
|
+
- reverts
|
|
82
|
+
- release commits
|
|
83
|
+
- linked issues/PRs when useful
|
|
84
|
+
|
|
85
|
+
Body rules:
|
|
86
|
+
|
|
87
|
+
- Wrap around 72 chars.
|
|
88
|
+
- Bullets use `-`.
|
|
89
|
+
- Explain why/risk/evidence, not line-by-line diff.
|
|
90
|
+
- Reference issues/PRs at end: `Closes #42`, `Refs #17`.
|
|
91
|
+
|
|
92
|
+
## What NEVER Goes In
|
|
93
|
+
|
|
94
|
+
- "This commit does X", "I", "we", "now", "currently" — diff shows what.
|
|
95
|
+
- "As requested by..." — use `Co-authored-by` trailer if needed.
|
|
96
|
+
- "Generated with Claude Code" or any AI attribution.
|
|
97
|
+
- Emoji unless project convention requires.
|
|
98
|
+
- Restating file name when scope already says it.
|
|
99
|
+
|
|
100
|
+
## Examples
|
|
101
|
+
|
|
102
|
+
Simple scoped:
|
|
103
|
+
|
|
104
|
+
```text
|
|
105
|
+
env: show unknown runtime fields
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Typed because project/changelog wants feature metadata:
|
|
109
|
+
|
|
110
|
+
```text
|
|
111
|
+
feat(api): add GET /users/:id/profile
|
|
112
|
+
|
|
113
|
+
Mobile client needs profile data without the full user payload
|
|
114
|
+
to reduce LTE bandwidth on cold-launch screens.
|
|
115
|
+
|
|
116
|
+
Closes #128
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
TDD RED commit:
|
|
120
|
+
|
|
121
|
+
```text
|
|
122
|
+
test(env): cover missing runtime version
|
|
123
|
+
|
|
124
|
+
go test ./internal/env -run TestMissingRuntimeVersion
|
|
125
|
+
fails because unknown runtime fields are dropped.
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
TDD GREEN commit:
|
|
129
|
+
|
|
130
|
+
```text
|
|
131
|
+
fix(env): show unknown runtime fields
|
|
132
|
+
|
|
133
|
+
go test ./internal/env -run TestMissingRuntimeVersion
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Breaking API change:
|
|
137
|
+
|
|
138
|
+
```text
|
|
139
|
+
feat(api)!: rename /v1/orders to /v1/checkout
|
|
140
|
+
|
|
141
|
+
BREAKING CHANGE: clients on /v1/orders must migrate to /v1/checkout
|
|
142
|
+
before 2026-06-01. Old route returns 410 after that date.
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
Release prep:
|
|
146
|
+
|
|
147
|
+
```text
|
|
148
|
+
release: v1.16.0
|
|
149
|
+
|
|
150
|
+
Validation:
|
|
151
|
+
- go test ./...
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Auto-Clarity
|
|
155
|
+
|
|
156
|
+
Always include body for breaking changes, security fixes, data migrations,
|
|
157
|
+
release prep, and reverts. Never compress these into subject-only — future
|
|
158
|
+
debuggers need context.
|
|
159
|
+
|
|
160
|
+
If project has its own commit-message policy, follow it over this global skill.
|
|
161
|
+
|
|
162
|
+
## Boundaries
|
|
163
|
+
|
|
164
|
+
Only generates the commit message. Does not run `git commit`, does not stage
|
|
165
|
+
files, does not amend. Output message as code block ready to paste.
|
|
166
|
+
"stop caveman-commit" or "normal mode": revert to verbose commit style.
|
package/package.json
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@barlevalon/caveman-commit-skill",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "A release-aware Agent Skill for terse commit messages using scope-first subjects and optional Conventional Commit metadata.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "Alon Bar-Lev",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/barlevalon/skills.git",
|
|
10
|
+
"directory": "skills/communication/caveman-commit"
|
|
11
|
+
},
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://github.com/barlevalon/skills/issues"
|
|
14
|
+
},
|
|
15
|
+
"homepage": "https://github.com/barlevalon/skills/tree/main/skills/communication/caveman-commit#readme",
|
|
16
|
+
"keywords": [
|
|
17
|
+
"agent-skill",
|
|
18
|
+
"agent-skills",
|
|
19
|
+
"ai-agent",
|
|
20
|
+
"caveman-commit",
|
|
21
|
+
"communication",
|
|
22
|
+
"pi",
|
|
23
|
+
"pi-package",
|
|
24
|
+
"skills"
|
|
25
|
+
],
|
|
26
|
+
"files": [
|
|
27
|
+
"SKILL.md",
|
|
28
|
+
"README.md",
|
|
29
|
+
"LICENSE"
|
|
30
|
+
],
|
|
31
|
+
"scripts": {
|
|
32
|
+
"pack:check": "npm pack --dry-run"
|
|
33
|
+
},
|
|
34
|
+
"pi": {
|
|
35
|
+
"skills": [
|
|
36
|
+
"./SKILL.md"
|
|
37
|
+
]
|
|
38
|
+
}
|
|
39
|
+
}
|