Luigit
repositories / dotfiles

dotfiles

bugabingas dorkfiles

owned by admin

pi/agent/skillz/jj/jj-commit/SKILL.md

Raw
Rendered preview

name: jj-commit path: .jj disable-model-invocation: true description: "Commit the current Jujutsu change. Use when asked to commit or record work in a jj repository without pushing."

Jj Commit

Use Jujutsu when jj root succeeds. Preserve unrelated work and use jj-native commands.

Procedure

  1. Inspect jj status, jj diff --stat, and the complete diff.
  2. Stop on unresolved conflicts.
  3. Stop if there is no change to commit.
  4. Read relevant untracked files before deciding whether they belong. Exclude generated files, caches, secrets, and unrelated work.
  5. Split unrelated changes when safe; otherwise ask before rewriting or selecting content.
  6. Run obvious fast checks and every repository-required gate. Report expensive or unclear checks that were not run.
  7. Commit the current change without pushing.
  8. Report the change ID, commit ID, subject, checks, and remaining workspace state.

Non-interactive

  • jj commands must never open an editor.
  • jj squash: pass --use-description to keep the destination subject, or -m "<combined message>" when both sides have descriptions.
  • jj commit and jj describe: always pass -m.
  • jj split: pass -m for the selected side, then describe the remainder.
  • If a command would still prompt, abort and report instead of opening an editor.

Commit messages

  • Use a short, concrete subject without a final period.
  • Prefer add, fix, update, remove, replace, track, show, or rework.
  • Use type(scope): summary when natural: feat, fix, docs, chore, refactor, test, perf, build, or ci.
  • Use a domain prefix such as ui:, db:, cli:, or docs: when clearer; start the text after a prefix lowercase.
  • Use a body only when rationale or non-obvious constraints matter.
  • Preserve relevant work-item identifiers supplied by the user or repository policy.
  • Add no AI attribution or trailers.
---
name: jj-commit
path: .jj
disable-model-invocation: true
description: "Commit the current Jujutsu change. Use when asked to commit or record work in a jj repository without pushing."
---

# Jj Commit

Use Jujutsu when `jj root` succeeds.
Preserve unrelated work and use jj-native commands.

## Procedure

1. Inspect `jj status`, `jj diff --stat`, and the complete diff.
2. Stop on unresolved conflicts.
3. Stop if there is no change to commit.
4. Read relevant untracked files before deciding whether they belong.
   Exclude generated files, caches, secrets, and unrelated work.
5. Split unrelated changes when safe; otherwise ask before rewriting or selecting content.
6. Run obvious fast checks and every repository-required gate.
   Report expensive or unclear checks that were not run.
7. Commit the current change without pushing.
8. Report the change ID, commit ID, subject, checks, and remaining workspace state.

## Non-interactive

- jj commands must never open an editor.
- `jj squash`: pass `--use-description` to keep the destination subject, or `-m "<combined message>"` when both sides have descriptions.
- `jj commit` and `jj describe`: always pass `-m`.
- `jj split`: pass `-m` for the selected side, then `describe` the remainder.
- If a command would still prompt, abort and report instead of opening an editor.

## Commit messages

- Use a short, concrete subject without a final period.
- Prefer `add`, `fix`, `update`, `remove`, `replace`, `track`, `show`, or `rework`.
- Use `type(scope): summary` when natural: `feat`, `fix`, `docs`, `chore`, `refactor`, `test`, `perf`, `build`, or `ci`.
- Use a domain prefix such as `ui:`, `db:`, `cli:`, or `docs:` when clearer; start the text after a prefix lowercase.
- Use a body only when rationale or non-obvious constraints matter.
- Preserve relevant work-item identifiers supplied by the user or repository policy.
- Add no AI attribution or trailers.