@brainervirus/workit-cursor 0.11.0 → 1.0.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/.cursor-plugin/plugin.json +6 -6
- package/README.md +27 -31
- package/assets/templates/workit-contract.md +12 -0
- package/commands/wk-babysit.md +7 -0
- package/commands/wk-blast-radius.md +7 -0
- package/commands/wk-challenge.md +7 -0
- package/commands/wk-debug.md +7 -0
- package/commands/wk-deslop.md +7 -0
- package/commands/wk-diagram.md +7 -0
- package/commands/wk-green-run.md +7 -0
- package/commands/wk-handoff.md +7 -0
- package/commands/wk-implement.md +7 -0
- package/commands/wk-mockup.md +7 -0
- package/commands/wk-plan.md +7 -0
- package/commands/wk-review.md +7 -0
- package/commands/wk-steer.md +7 -0
- package/commands/wk-tdd.md +7 -0
- package/dist/cursor-session-start.js +13240 -414
- package/dist/mcp-server.js +26086 -27592
- package/dist/workit-hook.js +13202 -0
- package/hooks/hooks-cursor.json +29 -0
- package/package.json +8 -8
- package/rules/workit-contract.mdc +28 -0
- package/skills/workit-babysit/SKILL.md +33 -0
- package/skills/workit-behavioral-tdd/SKILL.md +53 -0
- package/skills/workit-blast-radius/SKILL.md +31 -0
- package/skills/workit-challenge/SKILL.md +62 -0
- package/skills/workit-debug/SKILL.md +61 -0
- package/skills/workit-deslop/SKILL.md +36 -0
- package/skills/workit-diagram/SKILL.md +32 -0
- package/skills/workit-green-run/SKILL.md +29 -0
- package/skills/workit-handoff/SKILL.md +43 -0
- package/skills/workit-implement/SKILL.md +46 -0
- package/skills/workit-mockup/SKILL.md +28 -0
- package/skills/workit-plan/SKILL.md +66 -0
- package/skills/workit-review/SKILL.md +60 -0
- package/skills/workit-steer/SKILL.md +32 -0
- package/assets/templates/execution-contract.md +0 -73
- package/assets/templates/greeting.md +0 -1
- package/assets/templates/headers.md +0 -3
- package/assets/templates/hygiene/.editorconfig +0 -8
- package/assets/templates/hygiene/.gitattributes +0 -3
- package/assets/templates/hygiene/CHANGELOG.md +0 -14
- package/assets/templates/hygiene/CONTRIBUTING.md +0 -3
- package/assets/templates/hygiene/LICENSE +0 -21
- package/assets/templates/hygiene/README.md +0 -3
- package/assets/templates/issue-update.md +0 -6
- package/assets/templates/plan-template.md +0 -27
- package/assets/templates/spec-template.md +0 -51
- package/assets/templates/superpowers-doc-contract.md +0 -75
- package/rules/ask-question-only.mdc +0 -49
- package/rules/cursor-todowrite.mdc +0 -14
- package/rules/no-worktrees.mdc +0 -26
- package/rules/sdd-docs-path.mdc +0 -22
- package/skills/wk-changelog/SKILL.md +0 -75
- package/skills/wk-commit/SKILL.md +0 -657
- package/skills/wk-docs-refresh/SKILL.md +0 -41
- package/skills/wk-handoff/SKILL.md +0 -55
- package/skills/wk-implement/SKILL.md +0 -58
- package/skills/wk-init/SKILL.md +0 -107
- package/skills/wk-issue-update/SKILL.md +0 -101
- package/skills/wk-issue-update/references/youtrack-update-style.md +0 -81
- package/skills/wk-meetings/SKILL.md +0 -50
- package/skills/wk-pr/SKILL.md +0 -90
- package/skills/wk-release-notes/SKILL.md +0 -57
- package/skills/wk-status/SKILL.md +0 -85
- package/skills/wk-verify/SKILL.md +0 -48
- package/vendor/superpowers/skills/brainstorming/SKILL.md +0 -159
- package/vendor/superpowers/skills/brainstorming/scripts/frame-template.html +0 -213
- package/vendor/superpowers/skills/brainstorming/scripts/helper.js +0 -167
- package/vendor/superpowers/skills/brainstorming/scripts/server.cjs +0 -723
- package/vendor/superpowers/skills/brainstorming/spec-document-reviewer-prompt.md +0 -49
- package/vendor/superpowers/skills/brainstorming/visual-companion.md +0 -222
- package/vendor/superpowers/skills/dispatching-parallel-agents/SKILL.md +0 -185
- package/vendor/superpowers/skills/executing-plans/SKILL.md +0 -70
- package/vendor/superpowers/skills/finishing-a-development-branch/SKILL.md +0 -241
- package/vendor/superpowers/skills/receiving-code-review/SKILL.md +0 -213
- package/vendor/superpowers/skills/requesting-code-review/SKILL.md +0 -103
- package/vendor/superpowers/skills/requesting-code-review/code-reviewer.md +0 -172
- package/vendor/superpowers/skills/subagent-driven-development/SKILL.md +0 -428
- package/vendor/superpowers/skills/subagent-driven-development/implementer-prompt.md +0 -139
- package/vendor/superpowers/skills/subagent-driven-development/task-reviewer-prompt.md +0 -188
- package/vendor/superpowers/skills/systematic-debugging/CREATION-LOG.md +0 -119
- package/vendor/superpowers/skills/systematic-debugging/SKILL.md +0 -296
- package/vendor/superpowers/skills/systematic-debugging/condition-based-waiting-example.ts +0 -158
- package/vendor/superpowers/skills/systematic-debugging/condition-based-waiting.md +0 -115
- package/vendor/superpowers/skills/systematic-debugging/defense-in-depth.md +0 -122
- package/vendor/superpowers/skills/systematic-debugging/root-cause-tracing.md +0 -169
- package/vendor/superpowers/skills/systematic-debugging/test-academic.md +0 -14
- package/vendor/superpowers/skills/systematic-debugging/test-pressure-1.md +0 -58
- package/vendor/superpowers/skills/systematic-debugging/test-pressure-2.md +0 -68
- package/vendor/superpowers/skills/systematic-debugging/test-pressure-3.md +0 -69
- package/vendor/superpowers/skills/test-driven-development/SKILL.md +0 -371
- package/vendor/superpowers/skills/test-driven-development/testing-anti-patterns.md +0 -299
- package/vendor/superpowers/skills/using-git-worktrees/SKILL.md +0 -202
- package/vendor/superpowers/skills/using-superpowers/SKILL.md +0 -62
- package/vendor/superpowers/skills/using-superpowers/references/antigravity-tools.md +0 -23
- package/vendor/superpowers/skills/using-superpowers/references/codex-tools.md +0 -39
- package/vendor/superpowers/skills/using-superpowers/references/pi-tools.md +0 -16
- package/vendor/superpowers/skills/verification-before-completion/SKILL.md +0 -139
- package/vendor/superpowers/skills/writing-plans/SKILL.md +0 -174
- package/vendor/superpowers/skills/writing-plans/plan-document-reviewer-prompt.md +0 -49
- package/vendor/superpowers/skills/writing-skills/SKILL.md +0 -689
- package/vendor/superpowers/skills/writing-skills/anthropic-best-practices.md +0 -1150
- package/vendor/superpowers/skills/writing-skills/examples/CLAUDE_MD_TESTING.md +0 -189
- package/vendor/superpowers/skills/writing-skills/graphviz-conventions.dot +0 -172
- package/vendor/superpowers/skills/writing-skills/persuasion-principles.md +0 -187
- package/vendor/superpowers/skills/writing-skills/testing-skills-with-subagents.md +0 -384
|
@@ -1,657 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: wk-commit
|
|
3
|
-
description: Structured local commits via workit_git_context. Use for /wk-commit or "use commit skill" only — not casual "ship it".
|
|
4
|
-
disable-model-invocation: true
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Commit — Structured local commits (no push)
|
|
8
|
-
|
|
9
|
-
## Step 1 — Gather facts (required)
|
|
10
|
-
|
|
11
|
-
Call MCP tool `workit_git_context` with arguments from the user's message (paths after `/wk-commit`, etc.).
|
|
12
|
-
|
|
13
|
-
**Repository calls:** For every repository-scoped `workit_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
|
|
14
|
-
|
|
15
|
-
Use the tool return value as ground truth. Do not read git, run npm, or infer repo state yourself.
|
|
16
|
-
If the tool errors, report the error and stop.
|
|
17
|
-
|
|
18
|
-
For workflow steps below that show `git` commands, prefer the MCP tool fields (`branch`, `status_short`, `staged`, `unstaged`, `untracked`, `diff_stat`, `partial_staged`) as ground truth. Run git commands only when executing commits or staging.
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
# Commit workflow
|
|
23
|
-
|
|
24
|
-
Analyze git changes and create **LOCAL commits only** (**DO NOT push**).
|
|
25
|
-
|
|
26
|
-
Use **Conventional Commits**.
|
|
27
|
-
|
|
28
|
-
Split changes into logical commits by **intent** first, then by **type**, and, if changes are large, also by **scope/module**.
|
|
29
|
-
|
|
30
|
-
Always include the required co-author trailer.
|
|
31
|
-
|
|
32
|
-
---
|
|
33
|
-
|
|
34
|
-
## Modes
|
|
35
|
-
|
|
36
|
-
### 1) Commit all uncommitted changes
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
/wk-commit
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
Use **all uncommitted changes in the repository**, including:
|
|
43
|
-
|
|
44
|
-
- staged changes
|
|
45
|
-
- unstaged tracked changes
|
|
46
|
-
- untracked files
|
|
47
|
-
|
|
48
|
-
### 2) Commit only changes under specific paths
|
|
49
|
-
|
|
50
|
-
```bash
|
|
51
|
-
/wk-commit <paths...>
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
Use **only changes inside the provided path(s)**, including:
|
|
55
|
-
|
|
56
|
-
- staged changes inside those paths
|
|
57
|
-
- unstaged tracked changes inside those paths
|
|
58
|
-
- untracked files inside those paths
|
|
59
|
-
|
|
60
|
-
Files outside the provided paths must not be included unless explicitly allowed by flags.
|
|
61
|
-
|
|
62
|
-
---
|
|
63
|
-
|
|
64
|
-
## Invocation
|
|
65
|
-
|
|
66
|
-
```bash
|
|
67
|
-
/wk-commit [paths...]
|
|
68
|
-
[--group-by intent|intent,type|intent,type,scope|intent,type,scope,module]
|
|
69
|
-
[--include-other-staged] [--allow-partial] [--hunk-split]
|
|
70
|
-
[--force-prod]
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
## Default behavior
|
|
76
|
-
|
|
77
|
-
- `/wk-commit` → commit **all uncommitted changes**
|
|
78
|
-
- `/wk-commit <paths...>` → commit **only changes inside those paths**
|
|
79
|
-
|
|
80
|
-
If staged files already exist outside the selected paths, abort unless `--include-other-staged` is provided.
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## Flags
|
|
85
|
-
|
|
86
|
-
- `--group-by`: Default is `intent,type,scope`.
|
|
87
|
-
- `--include-other-staged`: Include already staged files outside selected paths.
|
|
88
|
-
- `--allow-partial`: Allow partially staged files.
|
|
89
|
-
- `--hunk-split`: Use patch-based staging to split mixed files when safe.
|
|
90
|
-
- `--force-prod`: Allow commits on protected branch `prod`.
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## Hard rules
|
|
95
|
-
|
|
96
|
-
**Never:**
|
|
97
|
-
|
|
98
|
-
- Run `git push`
|
|
99
|
-
- Run `git push --force`
|
|
100
|
-
- Commit to `prod` without `--force-prod`
|
|
101
|
-
- Commit files containing secrets
|
|
102
|
-
- Disable hooks or pre-commit automatically
|
|
103
|
-
- Use `--no-verify`
|
|
104
|
-
- Remove tests to bypass CI
|
|
105
|
-
- Use broad staging commands such as `git add .`, `git add -A`, or `git commit -a` unless explicitly required by the selected mode and safe selection logic
|
|
106
|
-
|
|
107
|
-
---
|
|
108
|
-
|
|
109
|
-
# Workflow
|
|
110
|
-
|
|
111
|
-
## 1. Branch check
|
|
112
|
-
|
|
113
|
-
```bash
|
|
114
|
-
git rev-parse --abbrev-ref HEAD
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
If branch is `prod` and `--force-prod` is not provided → **ABORT**.
|
|
118
|
-
|
|
119
|
-
---
|
|
120
|
-
|
|
121
|
-
## 2. Determine working set
|
|
122
|
-
|
|
123
|
-
### Mode A — all changes
|
|
124
|
-
|
|
125
|
-
Use:
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
git status --short
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
If no changes exist:
|
|
132
|
-
|
|
133
|
-
> ⚠️ No changes to commit
|
|
134
|
-
|
|
135
|
-
### Mode B — selected paths only
|
|
136
|
-
|
|
137
|
-
Use:
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
git status --short -- <paths...>
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
If no changes exist under those paths:
|
|
144
|
-
|
|
145
|
-
> ⚠️ No changes to commit in specified paths
|
|
146
|
-
|
|
147
|
-
If staged files already exist outside the specified paths, abort unless `--include-other-staged` is provided.
|
|
148
|
-
|
|
149
|
-
Check with:
|
|
150
|
-
|
|
151
|
-
```bash
|
|
152
|
-
git diff --cached --name-only
|
|
153
|
-
```
|
|
154
|
-
|
|
155
|
-
If outside-path staged files exist:
|
|
156
|
-
|
|
157
|
-
> 🛑 Staged files outside selected paths detected
|
|
158
|
-
> Re-run with --include-other-staged
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
## 3. Partial staging check
|
|
163
|
-
|
|
164
|
-
Detect partially staged files:
|
|
165
|
-
|
|
166
|
-
```bash
|
|
167
|
-
staged=$(git diff --cached --name-only)
|
|
168
|
-
unstaged=$(git diff --name-only)
|
|
169
|
-
partial=intersection(staged, unstaged)
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
If partial files exist and `--allow-partial` is not set → **ABORT**.
|
|
173
|
-
|
|
174
|
-
Abort message:
|
|
175
|
-
|
|
176
|
-
> 🛑 Partial-staged files detected
|
|
177
|
-
> Use --allow-partial
|
|
178
|
-
|
|
179
|
-
The assistant must not run plain `git add <file>` in a way that collapses partial staging unless:
|
|
180
|
-
|
|
181
|
-
- `--allow-partial` is enabled, or
|
|
182
|
-
- `--hunk-split` is enabled and patch-based selection is used safely
|
|
183
|
-
|
|
184
|
-
---
|
|
185
|
-
|
|
186
|
-
## 4. Build the index for the selected working set
|
|
187
|
-
|
|
188
|
-
### Mode A — all changes
|
|
189
|
-
|
|
190
|
-
Stage all changes in the repository working set, including:
|
|
191
|
-
|
|
192
|
-
- modified tracked files
|
|
193
|
-
- deleted tracked files
|
|
194
|
-
- untracked files
|
|
195
|
-
|
|
196
|
-
### Mode B — selected paths only
|
|
197
|
-
|
|
198
|
-
Stage only changes inside the selected paths, including:
|
|
199
|
-
|
|
200
|
-
- modified tracked files under those paths
|
|
201
|
-
- deleted tracked files under those paths
|
|
202
|
-
- untracked files under those paths
|
|
203
|
-
|
|
204
|
-
Do not stage files outside the selected paths unless `--include-other-staged` is set.
|
|
205
|
-
|
|
206
|
-
### Staging rules
|
|
207
|
-
|
|
208
|
-
- Do not use `git add .`
|
|
209
|
-
- Do not use `git add -A` at repository root in path mode
|
|
210
|
-
- Do not use `git commit -a`
|
|
211
|
-
- Preserve path boundaries strictly
|
|
212
|
-
- Preserve partial staging semantics unless explicitly allowed
|
|
213
|
-
|
|
214
|
-
After staging, verify that the index is not empty:
|
|
215
|
-
|
|
216
|
-
```bash
|
|
217
|
-
git diff --cached --name-only
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
If empty:
|
|
221
|
-
|
|
222
|
-
> ⚠️ No staged changes to commit
|
|
223
|
-
|
|
224
|
-
---
|
|
225
|
-
|
|
226
|
-
## 5. Secrets scan
|
|
227
|
-
|
|
228
|
-
Scan the staged diff:
|
|
229
|
-
|
|
230
|
-
```bash
|
|
231
|
-
git diff --cached
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
### Forbidden filenames
|
|
235
|
-
|
|
236
|
-
Abort if selected staged files match:
|
|
237
|
-
|
|
238
|
-
- `.env*`
|
|
239
|
-
- `*secret*`
|
|
240
|
-
- `*.pem`
|
|
241
|
-
- `*.key`
|
|
242
|
-
- `id_rsa`
|
|
243
|
-
- `id_ed25519`
|
|
244
|
-
- `*.p12`
|
|
245
|
-
- `*.kdbx`
|
|
246
|
-
|
|
247
|
-
### Secret patterns
|
|
248
|
-
|
|
249
|
-
Abort on high-confidence matches such as:
|
|
250
|
-
|
|
251
|
-
- `AWS_(ACCESS_KEY|SECRET|SESSION).*KEY`
|
|
252
|
-
- `BEGIN (RSA|EC|OPENSSH) PRIVATE KEY`
|
|
253
|
-
- `-----BEGIN`
|
|
254
|
-
- `(api[-_ ]?key|token|password)\s*[:=]`
|
|
255
|
-
|
|
256
|
-
If detected:
|
|
257
|
-
|
|
258
|
-
> 🛑 Potential secrets detected
|
|
259
|
-
> Affected files: <file>
|
|
260
|
-
|
|
261
|
-
---
|
|
262
|
-
|
|
263
|
-
# Change detection
|
|
264
|
-
|
|
265
|
-
For each staged file detect:
|
|
266
|
-
|
|
267
|
-
```text
|
|
268
|
-
{intent, type, scope, mixed}
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
Print a table before planning commits.
|
|
272
|
-
|
|
273
|
-
---
|
|
274
|
-
|
|
275
|
-
## Intent detection
|
|
276
|
-
|
|
277
|
-
Intent is the **primary grouping dimension**.
|
|
278
|
-
|
|
279
|
-
Prefer grouping by **atomic change purpose**, not by file extension alone.
|
|
280
|
-
|
|
281
|
-
Examples of intents:
|
|
282
|
-
|
|
283
|
-
- add a feature
|
|
284
|
-
- fix a bug
|
|
285
|
-
- refactor internals
|
|
286
|
-
- update tests for a specific behavior
|
|
287
|
-
- update documentation for a specific feature
|
|
288
|
-
- change CI/build configuration
|
|
289
|
-
- bump dependencies
|
|
290
|
-
|
|
291
|
-
### Intent rules
|
|
292
|
-
|
|
293
|
-
- Keep closely related code, tests, and docs together when they describe the same change.
|
|
294
|
-
- Split unrelated changes even if they share the same type.
|
|
295
|
-
- Never merge unrelated feature scopes just to reduce commit count.
|
|
296
|
-
- If an intent cannot be isolated safely, create a separate fallback commit only if it is still coherent; otherwise abort.
|
|
297
|
-
|
|
298
|
-
---
|
|
299
|
-
|
|
300
|
-
## Type detection
|
|
301
|
-
|
|
302
|
-
Type is used after intent grouping.
|
|
303
|
-
|
|
304
|
-
| Priority | Type | Patterns / Signals |
|
|
305
|
-
| -------- | ---------- | -------------------------------------------------- |
|
|
306
|
-
| 1 | `test` | only tests changed |
|
|
307
|
-
| 2 | `docs` | only docs changed |
|
|
308
|
-
| 3 | `ci` | `.github/workflows`, CI configs |
|
|
309
|
-
| 4 | `build` | `Dockerfile`, build scripts, packaging |
|
|
310
|
-
| 5 | `chore` | maintenance, housekeeping, repo config |
|
|
311
|
-
| 6 | `perf` | performance-focused changes |
|
|
312
|
-
| 7 | `fix` | bug fix or correction |
|
|
313
|
-
| 8 | `feat` | new user-visible functionality |
|
|
314
|
-
| 9 | `refactor` | structural internal change without behavior change |
|
|
315
|
-
| 10 | `style` | formatting only |
|
|
316
|
-
|
|
317
|
-
### Type rules
|
|
318
|
-
|
|
319
|
-
- If a commit includes production code plus related tests/docs, choose the type from the primary code change.
|
|
320
|
-
- Do not force docs/tests into separate commits when they are part of the same atomic change.
|
|
321
|
-
- Use path patterns only as hints, not as the sole classifier.
|
|
322
|
-
|
|
323
|
-
---
|
|
324
|
-
|
|
325
|
-
## Scope detection
|
|
326
|
-
|
|
327
|
-
Choose the dominant scope in the group.
|
|
328
|
-
|
|
329
|
-
| Scope | Paths |
|
|
330
|
-
| --------- | ------------------------------ |
|
|
331
|
-
| `api` | `src/api` |
|
|
332
|
-
| `dash` | `src/dashboard` |
|
|
333
|
-
| `db` | `migrations`, `controllers` |
|
|
334
|
-
| `service` | `modules/services` |
|
|
335
|
-
| `deps` | `requirements`, `package.json` |
|
|
336
|
-
| `config` | `configs`, `Makefile` |
|
|
337
|
-
| `static` | `static` |
|
|
338
|
-
| `test` | `tests` |
|
|
339
|
-
| `ci` | `.github/workflows` |
|
|
340
|
-
| `build` | `Dockerfile` |
|
|
341
|
-
|
|
342
|
-
If no clear scope exists, scope may be omitted.
|
|
343
|
-
|
|
344
|
-
---
|
|
345
|
-
|
|
346
|
-
## Mixed file policy
|
|
347
|
-
|
|
348
|
-
A file is `mixed` if it contains multiple semantic change types or multiple intents.
|
|
349
|
-
|
|
350
|
-
### If `--hunk-split` is disabled
|
|
351
|
-
|
|
352
|
-
- Prefer assigning the file to the dominant intent if the change is still coherent.
|
|
353
|
-
- If the file mixes unrelated changes and cannot be assigned safely, mark it as `[MIXED]`.
|
|
354
|
-
- If ambiguity is high, abort instead of guessing.
|
|
355
|
-
|
|
356
|
-
Priority when forced to assign a dominant type:
|
|
357
|
-
|
|
358
|
-
```text
|
|
359
|
-
fix > feat > refactor > perf > chore > docs > style
|
|
360
|
-
```
|
|
361
|
-
|
|
362
|
-
### If `--hunk-split` is enabled
|
|
363
|
-
|
|
364
|
-
- Use patch-based staging to isolate safe hunks.
|
|
365
|
-
- Only split hunks when the resulting commits remain coherent.
|
|
366
|
-
- If safe isolation is not possible, use a fallback commit:
|
|
367
|
-
|
|
368
|
-
```text
|
|
369
|
-
chore(mixed): isolate ambiguous changes
|
|
370
|
-
```
|
|
371
|
-
|
|
372
|
-
only if that commit is still understandable and intentional.
|
|
373
|
-
|
|
374
|
-
Otherwise abort.
|
|
375
|
-
|
|
376
|
-
---
|
|
377
|
-
|
|
378
|
-
## Breaking changes
|
|
379
|
-
|
|
380
|
-
If a public API, external contract, migration behavior, or user-facing interface changes incompatibly:
|
|
381
|
-
|
|
382
|
-
- Header: `type(scope)!: subject`
|
|
383
|
-
- Footer must include:
|
|
384
|
-
|
|
385
|
-
```text
|
|
386
|
-
BREAKING CHANGE: <description>
|
|
387
|
-
```
|
|
388
|
-
|
|
389
|
-
---
|
|
390
|
-
|
|
391
|
-
# Commit planning
|
|
392
|
-
|
|
393
|
-
## Defaults
|
|
394
|
-
|
|
395
|
-
- Max commits = `10`
|
|
396
|
-
- Group-by = `intent,type,scope`
|
|
397
|
-
|
|
398
|
-
## Large group threshold
|
|
399
|
-
|
|
400
|
-
A group is considered large if:
|
|
401
|
-
|
|
402
|
-
- files ≥ 10, or
|
|
403
|
-
- LOC ≥ 400
|
|
404
|
-
|
|
405
|
-
Large groups may be split further by module if doing so preserves semantic clarity.
|
|
406
|
-
|
|
407
|
-
---
|
|
408
|
-
|
|
409
|
-
## Grouping rules
|
|
410
|
-
|
|
411
|
-
1. Group by **intent**
|
|
412
|
-
2. Then split by **type** if needed
|
|
413
|
-
3. Then split by **scope** if needed
|
|
414
|
-
4. Large groups may split by **module**
|
|
415
|
-
5. Enforce `--max-commits` only if semantic integrity is preserved
|
|
416
|
-
|
|
417
|
-
### Merge rules when commit count must be reduced
|
|
418
|
-
|
|
419
|
-
Allowed merges:
|
|
420
|
-
|
|
421
|
-
- `style + docs` → `chore`
|
|
422
|
-
- `ci + build` → `chore`
|
|
423
|
-
- `perf + refactor` → `refactor`
|
|
424
|
-
|
|
425
|
-
Forbidden merges:
|
|
426
|
-
|
|
427
|
-
- unrelated `feat` scopes
|
|
428
|
-
- unrelated `fix` groups
|
|
429
|
-
- unrelated application code and dependency bumps unless tightly coupled
|
|
430
|
-
|
|
431
|
-
### If `max-commits` would force bad merges
|
|
432
|
-
|
|
433
|
-
Do not produce misleading commits.
|
|
434
|
-
|
|
435
|
-
Instead:
|
|
436
|
-
|
|
437
|
-
- show the best semantic plan
|
|
438
|
-
- explain that it exceeds `--max-commits`
|
|
439
|
-
- or abort with recommendation to increase the limit
|
|
440
|
-
|
|
441
|
-
---
|
|
442
|
-
|
|
443
|
-
## Commit order
|
|
444
|
-
|
|
445
|
-
Preferred order:
|
|
446
|
-
|
|
447
|
-
1. `test`
|
|
448
|
-
2. `fix`
|
|
449
|
-
3. `feat`
|
|
450
|
-
4. `refactor`
|
|
451
|
-
5. `perf`
|
|
452
|
-
6. `ci`
|
|
453
|
-
7. `build`
|
|
454
|
-
8. `chore`
|
|
455
|
-
9. `docs`
|
|
456
|
-
10. `style`
|
|
457
|
-
|
|
458
|
-
When intent grouping implies a different order for coherence, semantic order wins.
|
|
459
|
-
|
|
460
|
-
---
|
|
461
|
-
|
|
462
|
-
## Plan output
|
|
463
|
-
|
|
464
|
-
Show:
|
|
465
|
-
|
|
466
|
-
```text
|
|
467
|
-
FILE → {INTENT, TYPE, SCOPE, MIXED}
|
|
468
|
-
```
|
|
469
|
-
|
|
470
|
-
Then print the commit plan:
|
|
471
|
-
|
|
472
|
-
```text
|
|
473
|
-
Commit 1/N: type(scope): subject
|
|
474
|
-
* file1
|
|
475
|
-
* file2
|
|
476
|
-
|
|
477
|
-
Commit 2/N: ...
|
|
478
|
-
```
|
|
479
|
-
|
|
480
|
-
---
|
|
481
|
-
|
|
482
|
-
# Commit execution
|
|
483
|
-
|
|
484
|
-
Before each commit:
|
|
485
|
-
|
|
486
|
-
- ensure the index contains only the files/hunks for that commit
|
|
487
|
-
- verify staged file list matches the current planned group
|
|
488
|
-
- preserve path restrictions in path mode
|
|
489
|
-
|
|
490
|
-
After each commit:
|
|
491
|
-
|
|
492
|
-
- recompute remaining staged/uncommitted changes
|
|
493
|
-
- continue until the plan is complete or an abort condition occurs
|
|
494
|
-
|
|
495
|
-
---
|
|
496
|
-
|
|
497
|
-
## Author
|
|
498
|
-
|
|
499
|
-
Use the default git author configured in the repository.
|
|
500
|
-
|
|
501
|
-
**Do NOT override the commit author via `--author`.**
|
|
502
|
-
|
|
503
|
-
The assistant must only add the co-author trailer below.
|
|
504
|
-
|
|
505
|
-
```
|
|
506
|
-
Co-authored-by: Cursor <cursoragent@cursor.com>
|
|
507
|
-
```
|
|
508
|
-
|
|
509
|
-
Rules:
|
|
510
|
-
|
|
511
|
-
- The trailer must be the last line of the commit message
|
|
512
|
-
- Ensure there is one blank line before the trailer
|
|
513
|
-
- Do not replace or override the existing git author
|
|
514
|
-
- Do not add additional co-authors unless explicitly requested
|
|
515
|
-
|
|
516
|
-
---
|
|
517
|
-
|
|
518
|
-
## Commit subject rules
|
|
519
|
-
|
|
520
|
-
Subject must be:
|
|
521
|
-
|
|
522
|
-
- imperative mood
|
|
523
|
-
- lowercase
|
|
524
|
-
- concise
|
|
525
|
-
- no trailing period
|
|
526
|
-
- ideally ≤ 72 characters
|
|
527
|
-
|
|
528
|
-
Examples:
|
|
529
|
-
|
|
530
|
-
- `feat(api): add payout endpoint`
|
|
531
|
-
- `fix(db): handle null status migration`
|
|
532
|
-
- `refactor(service): simplify billing adapter`
|
|
533
|
-
|
|
534
|
-
---
|
|
535
|
-
|
|
536
|
-
## Commit template
|
|
537
|
-
|
|
538
|
-
```text
|
|
539
|
-
<type>(<scope>): <subject>
|
|
540
|
-
|
|
541
|
-
Why:
|
|
542
|
-
* reason
|
|
543
|
-
|
|
544
|
-
What:
|
|
545
|
-
* change
|
|
546
|
-
|
|
547
|
-
Changes:
|
|
548
|
-
* file1: description
|
|
549
|
-
* file2: description
|
|
550
|
-
|
|
551
|
-
Stats:
|
|
552
|
-
* N files changed
|
|
553
|
-
* +additions/-deletions lines
|
|
554
|
-
```
|
|
555
|
-
|
|
556
|
-
If scope is unknown, `<type>: <subject>` is allowed.
|
|
557
|
-
|
|
558
|
-
If the change is trivial, the body may be shortened, but the co-author trailer remains mandatory.
|
|
559
|
-
|
|
560
|
-
---
|
|
561
|
-
|
|
562
|
-
## Git command
|
|
563
|
-
|
|
564
|
-
Use the repository's default git author.
|
|
565
|
-
|
|
566
|
-
```bash
|
|
567
|
-
git commit \
|
|
568
|
-
-m "<type>(<scope>): <subject>" \
|
|
569
|
-
-m "<body>"
|
|
570
|
-
```
|
|
571
|
-
|
|
572
|
-
Do not pass `--author`.
|
|
573
|
-
|
|
574
|
-
---
|
|
575
|
-
|
|
576
|
-
## Hook failures
|
|
577
|
-
|
|
578
|
-
If commit hooks or pre-commit checks fail:
|
|
579
|
-
|
|
580
|
-
- stop immediately
|
|
581
|
-
- report the failure output
|
|
582
|
-
- do not retry with `--no-verify`
|
|
583
|
-
- do not modify tests or files only to bypass checks unless explicitly instructed
|
|
584
|
-
|
|
585
|
-
---
|
|
586
|
-
|
|
587
|
-
# Completion output
|
|
588
|
-
|
|
589
|
-
Example:
|
|
590
|
-
|
|
591
|
-
```text
|
|
592
|
-
✅ Created 3 commits
|
|
593
|
-
|
|
594
|
-
[1] test(api): add endpoint tests
|
|
595
|
-
Hash: abc123
|
|
596
|
-
|
|
597
|
-
[2] feat(api): add payout endpoint
|
|
598
|
-
Hash: def456
|
|
599
|
-
|
|
600
|
-
[3] docs(api): document payout flow
|
|
601
|
-
Hash: 789xyz
|
|
602
|
-
|
|
603
|
-
📌 Commits created locally. NOT pushed.
|
|
604
|
-
```
|
|
605
|
-
|
|
606
|
-
---
|
|
607
|
-
|
|
608
|
-
# Abort messages
|
|
609
|
-
|
|
610
|
-
## Protected branch
|
|
611
|
-
|
|
612
|
-
```text
|
|
613
|
-
🛑 Protected branch: prod
|
|
614
|
-
Re-run with --force-prod
|
|
615
|
-
```
|
|
616
|
-
|
|
617
|
-
## Partial staged
|
|
618
|
-
|
|
619
|
-
```text
|
|
620
|
-
🛑 Partial-staged files detected
|
|
621
|
-
Use --allow-partial
|
|
622
|
-
```
|
|
623
|
-
|
|
624
|
-
## Secrets
|
|
625
|
-
|
|
626
|
-
```text
|
|
627
|
-
🛑 Potential secrets detected
|
|
628
|
-
Affected files: <file>
|
|
629
|
-
```
|
|
630
|
-
|
|
631
|
-
## No changes
|
|
632
|
-
|
|
633
|
-
### No paths mode
|
|
634
|
-
|
|
635
|
-
```text
|
|
636
|
-
⚠️ No changes to commit
|
|
637
|
-
```
|
|
638
|
-
|
|
639
|
-
### Path mode
|
|
640
|
-
|
|
641
|
-
```text
|
|
642
|
-
⚠️ No changes to commit in specified paths
|
|
643
|
-
```
|
|
644
|
-
|
|
645
|
-
## Outside staged files in path mode
|
|
646
|
-
|
|
647
|
-
```text
|
|
648
|
-
🛑 Staged files outside selected paths detected
|
|
649
|
-
Re-run with --include-other-staged
|
|
650
|
-
```
|
|
651
|
-
|
|
652
|
-
## Ambiguous mixed changes
|
|
653
|
-
|
|
654
|
-
```text
|
|
655
|
-
🛑 Ambiguous mixed changes cannot be safely isolated
|
|
656
|
-
Use --hunk-split or reduce the selected scope
|
|
657
|
-
```
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: wk-docs-refresh
|
|
3
|
-
description: Refresh stale README and docs via workit_docs_context. Use for /wk-docs-refresh or "refresh readme/docs".
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Docs Refresh — Documentation Refresh
|
|
7
|
-
|
|
8
|
-
Inspect current changes and refresh stale documentation.
|
|
9
|
-
|
|
10
|
-
## Step 1 — Gather facts (required)
|
|
11
|
-
|
|
12
|
-
Call MCP tool `workit_docs_context` with arguments from the user's message (range, version, paths, etc.).
|
|
13
|
-
|
|
14
|
-
**Repository calls:** For every repository-scoped `workit_*` call, pass the active Cursor workspace as `workspace_root`; never rely on the MCP process default.
|
|
15
|
-
|
|
16
|
-
Use the tool return value as ground truth. Do not read git, run npm, or infer repo state yourself.
|
|
17
|
-
If the tool errors, report the error and stop.
|
|
18
|
-
|
|
19
|
-
## Rules
|
|
20
|
-
|
|
21
|
-
- Prefer updating `README.md` first when it is stale.
|
|
22
|
-
- Also update docs that are directly referenced by changed files or listed in the context.
|
|
23
|
-
- Do not rewrite docs stylistically when facts are already correct.
|
|
24
|
-
- Do not invent features, commands, env vars, screenshots, release notes, or install steps.
|
|
25
|
-
- Preserve existing tone and structure.
|
|
26
|
-
- If a needed fact cannot be verified from the repository, leave a concise note in the response instead of guessing.
|
|
27
|
-
- Do not commit.
|
|
28
|
-
|
|
29
|
-
## Output
|
|
30
|
-
|
|
31
|
-
After any edits, summarize:
|
|
32
|
-
|
|
33
|
-
```md
|
|
34
|
-
Docs refreshed:
|
|
35
|
-
|
|
36
|
-
- <file>: <what changed>
|
|
37
|
-
|
|
38
|
-
Skipped:
|
|
39
|
-
|
|
40
|
-
- <file or topic>: <why>
|
|
41
|
-
```
|