# Changelog — @cleepi/git

All notable changes to this package are documented here.

Format: [Keep a Changelog 1.1.0](https://keepachangelog.com/en/1.1.0/).
Versioning: [SemVer](https://semver.org/spec/v2.0.0.html). Pre-`1.0.0`,
minor bumps may include breaking changes.

## [Unreleased]

## [0.2.1] — 2026-06-02

### Fixed
- `skills/git-pr/SKILL.md` frontmatter: quoted `description:` value so the
  unescaped colon inside ("Norm: PRs should be small…") parses as a YAML
  scalar instead of a nested mapping. Pi was failing to load the skill.

## [0.2.0] — 2026-06-01

Branch naming + PR shape land. Per
[spec DRAFT-002](./docs/DRAFT-002-git-pr/spec.md) (accepted
2026-06-01).

### Added

- **`skills/git-branch/SKILL.md`** — branch naming
  convention. Shape: `<type>/<ticket>-<slug>`, ticket
  optional. Types match `git-commit`. Anti-pattern table
  includes personal namespacing, snake_case slugs, and
  long-form types (`feature` instead of `feat`).
- **`skills/git-pr/SKILL.md`** — PR/MR shape. Title
  derived mechanically from the branch (NOT the diff); body
  is 1–3 sentence description + optional bullet points.
  States the size norm: PRs should be small and modular;
  30+ file PRs are a smell. No spec-link, test-plan, risks,
  or `Closes #N` footer sections.
- **`prompts/pr.md`** — `/pr [<description>]`. Reads branch,
  derives title, detects host via `git remote get-url origin`
  (`github.com` → GitHub, `gitlab.*` → GitLab, else asks),
  runs `gh pr create` / `glab mr create` if the CLI is
  installed and authenticated, else prints title + body for
  manual paste. Refuses to proceed if branch doesn't match
  `<type>/...` shape.

### Changed

- **`SPEC.md`** — "Not a branch / PR / rebase toolkit"
  non-goal narrowed to "Not a rebase toolkit"; added "Not a
  CI / review-automation toolkit" to keep scope honest.
- **`package.json`** description updated; `version` 0.1.0 →
  0.2.0.
- **`README.md`** — documents the two new skills + `/pr`.

### Decisions captured in spec DRAFT-002

- Skill + runtime-detecting prompt, not template files in
  `.github/` / `.gitlab/`. Files don't help agents draft
  prose.
- Title derived from branch name, not the diff. Mechanical
  and stable; no LLM call needed.
- Two skills (`git-branch`, `git-pr`), not one combined.
  Branch convention is useful outside PR context; parallel
  to the existing `git-commit` split.
- Body shape is description + optional bullets, nothing
  else. Industry norm for small modular PRs. Sections beyond
  pad the body.

## [0.1.0] — 2026-05-28

Initial release. Cleepi's git conventions as a pi package. Per
[spec DRAFT-001](../../docs/DRAFT-001-cleepi-git-v0.1.0/spec.md)
(accepted 2026-05-28).

### Added

- **`skills/git-commit/SKILL.md`** — canonical commit-message
  convention. Conventional Commits + AngularJS type set
  (`feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`,
  `chore`, `build`, `ci`, `revert`). Hard rules: subject-line
  only, NEVER `Co-authored-by:`, no `Signed-off-by:`, no emoji,
  no trailing period, imperative + present tense + lowercase
  first letter. Anti-pattern table with 8 worked examples.
- **`prompts/commit.md`** — `/commit <type> <message>` slash
  command. Resolves domain from cwd (nearest `packages/<n>/`
  ancestor) and ticket-id from cwd → git branch → ask.
  Strips any `Co-authored-by:` injected by AI tooling before
  passing to `git commit`. Warns on unstaged changes; never
  auto-`git add -A` without asking.
- **`SPEC.md`** — package purpose-and-scope.
- **`README.md`** — install, examples, soft-aware integration
  with `@cleepi/sdd`.

### Decisions captured in spec DRAFT-001

- New `@cleepi/git` package rather than folding into
  `@cleepi/coding` or `@cleepi/sdd` — keeps package taxonomy
  clean, leaves room for branch / PR / rebase additions.
- Subject-line only, no body, no footers — Honza-mandated.
  Cleepi commit history reads as a list of one-liners.
- Ticket-id highly recommended but not required — matches the
  same gradient as `sdd`'s `DRAFT-NNN` vs real-ticket strictness.
- Both skill and `/commit` prompt ship in v0.1.0 — skill carries
  the convention; prompt is ergonomic glue.

### Known limitations

- `/commit` is designed for interactive pi sessions. In `--print`
  non-interactive mode the AI tends to shortcut to bare
  `<type>: <message>` format without resolving domain/ticket-id
  from cwd. If you script commits, write the assembled message
  yourself per the skill.

### Not in this release (deferred)

- `commit-msg` git hook (convention-led, not enforced).
- Branch naming, PR templates, rebase discipline. v0.2.0+
  candidates that justify keeping `@cleepi/git` separate.
- Type extension via config. Teams wanting other types edit a
  project-scope copy of the skill.
- Multi-line bodies, `BREAKING CHANGE:` footer. Use `!` syntax
  for breaks; put rationale in the spec, not the commit.

[Unreleased]: https://github.com/cleevio/cleepi/compare/git-v0.1.0...HEAD
[0.1.0]: https://github.com/cleevio/cleepi/releases/tag/git-v0.1.0
