mirror of
https://github.com/penpot/penpot.git
synced 2026-09-14 07:59:36 +00:00
Add a body line-length validator to scripts/check-commit. It fails when a body line exceeds 76 characters, exempting trailers, URLs, and unbreakable tokens. The 76 limit leaves room for git log's four-space indent in an 80-column terminal. Align the subject limit with the documented 70 characters; the checker allowed 90 before. Document the rule as a hard, verifiable requirement in AGENTS.md, CONTRIBUTING.md, the create-commit skill, and the workflow memory, and point at scripts/check-commit. Add tests for the validator and the subject length rule. AI-assisted-by: deepseek-flash
2.7 KiB
2.7 KiB
name, description
| name | description |
|---|---|
| create-commit | Stage, review, and commit files following Penpot commit conventions. |
Skill: create-commit
Produce a git commit that follows Penpot's commit message conventions. This skill owns the commit format, staging review, and safety checks — it does not implement features or push.
When to Use
- After code changes are complete and files need to be committed
- When delegated by a workflow step (e.g. implement-plan) to handle the commit
Required Reading
Before drafting any commit, read mem:workflow/creating-commits end-to-end. It
is the authoritative source for the commit message format, the emoji menu,
subject/body limits, and the AI-assisted-by trailer. Follow it exactly.
Iron Rules (non-negotiable)
- Wrap every body line at 76 characters or fewer. Count characters, do
not eyeball. Exceptions:
Signed-off-by:/AI-assisted-by:trailers and lines carrying a URL. This is the rule agents skip most often. - Subject ≤70 chars, imperative, capitalized, no trailing period.
- Blank line between subject and body.
- Run
./scripts/check-commitand require exit code 0. It mechanically checks rules 1–3. A non-zero exit is a hard blocker: fix the message and re-commit. Never report the commit as done with a failing checker.
Workflow
- Stage the files specified by the calling context. Do not ask for confirmation.
- Run
git diff --stagedto review the content. If you see secrets (API keys, tokens, passwords, private keys,.envvalues), debug prints, or anything that does not match the stated intent, STOP and tell the user before committing. - Draft the message following the format in the memory doc, wrapping the body
at 76 characters per line, and run:
(orgit commit -m "<subject>" -m "<body>"git commit -F -if the body has unusual characters). - Verify the message with the checker:
If it fails, amend the message (./scripts/check-commitgit commit --amend) until it passes. Do not finish with a failing checker. - The
AI-assisted-bytrailer value is provided by the calling context — use it verbatim.
Constraints
- Do not push. Pushing is a separate workflow handled by the user.
- Do not run
git reset,git checkout,git restore,git clean, orrm. - Do not pass
--author. Author identity comes from the local git config. - Do not amend a commit you did not create in this session, unless explicitly asked.
- Do not bypass pre-commit hooks (
--no-verify) unless explicitly asked. - Do not add untracked files that were not created in this session.
- Do not skip the
scripts/check-commitverification step (Iron Rule 4).