agentleFS
ivanestarivanestar/eitr/.claude/skills/commit-writer/SKILL.md

commit-writer

Skill4 starsChanged 2 months agoApache-2.0View on GitHub

Rules and guidelines for structuring and formatting Git commits in the EITR repository, covering Conventional Commits scoping, deterministic body triggers, and the mandatory 23:00 OpSec timestamp policy. Trigger on requests like "write a commit message", "commit this", "как закоммитить", "напиши commit message".

2 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

14 rules. About 0 are common, 10 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈10

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use the standard Conventional Commits specification.

    line 12
  2. Distinctive:

    Do NOT invent new types. Use ONLY:

    line 18
  3. Very specific:

    Cross-package rule: If a change touches >1 package simultaneously (e.g., engine and cli), do NOT combine scopes like (cli, engine).

    line 34
  4. Distinctive:

    No Emojis: NEVER use emojis in commit messages.

    line 39
  5. Distinctive:

    Imperative Mood: Write the description in the imperative mood (e.g., "add feature", not "adds feature" or "added feature").

    line 40
  6. Distinctive:

    No Period: Do not end the subject line with a period.

    line 41
  7. Distinctive:

    When required, leave exactly 1 empty line after the subject line, followed by the body.

    line 51
  8. Distinctive:

    Empty Commits: If the proposed commit contains 0 files, you MUST NOT create a commit message and must abort the operation.

    line 59
  9. Very specific:

    Missing Context: If a commit body is required by the triggers above but no extra context is available, you MUST include the exact string: …

    line 60
  10. Very specific:

    Large Commits: If the commit modifies >20 files, you MUST append the exact string [LARGE-COMMIT] at the end of the subject line.

    line 61
  11. Distinctive:

    Before outputting the commit message, ask: (1) can this be said shorter without losing meaning?

    line 93
  12. Distinctive:

    Always execute git commits via the safe helper script:

    line 100
  13. Distinctive:

    If running git commit directly, you MUST set both environment variables before invocation:

    line 109
  14. Distinctive:

    NEVER execute raw git commit during business hours without unmasking/injecting the 23:00 evening timestamp.

    line 113

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Commit Writer Guidelines

You are responsible for formulating Git commit messages for the EITR project. Adhere strictly to the following rules whenever you commit code or suggest a commit message.

1. Conventional Commits Format

Use the standard Conventional Commits specification. The structure must be: <type>[optional scope]: <description> Max subject line length: exactly 72 characters.

STRICTLY Allowed Types:

Do NOT invent new types. Use ONLY:

  • feat: A new feature.
  • fix: A bug fix.
  • chore: Maintenance tasks, dependencies updates, tooling configurations.
  • refactor: A code change that neither fixes a bug nor adds a feature.
  • docs: Documentation only changes.
  • test: Adding missing tests or correcting existing tests.
  • build: Changes that affect the build system or external dependencies.

STRICTLY Allowed Scopes:

  • (cli): Changes strictly within packages/cli.
  • (engine): Changes strictly within packages/engine.
  • (evals): Changes strictly within packages/evals.
  • (deps): Dependency updates across the repo.
  • Cross-package rule: If a change touches >1 package simultaneously (e.g., engine and cli), do NOT combine scopes like (cli, engine). Omit the scope entirely (e.g., feat: universal support).

2. Formatting Rules

  • Lowercase Subject: The description must begin with a lowercase letter (e.g., feat(engine): add java playwright adapter instead of feat(engine): Add Java Playwright adapter).
  • No Emojis: NEVER use emojis in commit messages. Emojis are strictly banned.
  • Imperative Mood: Write the description in the imperative mood (e.g., "add feature", not "adds feature" or "added feature").
  • No Period: Do not end the subject line with a period.

3. Deterministic Body Triggers

You MUST provide a multi-line commit body (minimum 2 lines) if ANY of the following are true:

  1. The commit type is fix.
  2. The commit modifies >3 files.
  3. The commit spans >1 package (cross-package).

When required, leave exactly 1 empty line after the subject line, followed by the body. Wrap body lines at exactly 72 characters. The body MUST contain:

  • Why: Why the change is necessary.
  • What: What approach was taken.

4. Boundary Constraints & Safety

  • Empty Commits: If the proposed commit contains 0 files, you MUST NOT create a commit message and must abort the operation.
  • Missing Context: If a commit body is required by the triggers above but no extra context is available, you MUST include the exact string: No additional context available. in the body.
  • Large Commits: If the commit modifies >20 files, you MUST append the exact string [LARGE-COMMIT] at the end of the subject line.

5. Examples

Good Example (Simple)

feat(engine): support csharp in project generator

Good Example (Complex with Body)

fix(cli): resolve undefined argument crash on init

Why: The CLI parser was not correctly handling missing positional arguments,
causing a fatal crash when users ran the command without a path.

What: Added a default fallback parameter in the Commander.js setup and
injected a validation step before spawning the engine pipeline.

Bad Example

Added C# support [emoji]

(Violation: Capitalized description, past tense, no type, emoji used, 0 rules followed)

6. Self-Check Before Finalizing

Before outputting the commit message, ask: (1) can this be said shorter without losing meaning? (2) does anything here read like AI-slop (hype adjectives, filler, self-referential compliance narration) that needs rephrasing? Fix it before the message goes out, not after.

7. Automated Timestamp Sanitization (23:00 OpSec Policy)

Whenever committing code or executing git commit in this repository, you MUST enforce that both Author Date and Committer Date are strictly set to 23:00:00 of the current day in the local timezone:

  1. Mandatory Execution Path for AI Assistants: Always execute git commits via the safe helper script:
    node scripts/git-safe-commit.mjs "<commit-message>"
    or:
    npm run commit -- "<commit-message>"
  2. Environment Variable Fallback: If running git commit directly, you MUST set both environment variables before invocation:
    • GIT_AUTHOR_DATE="YYYY-MM-DDT23:00:00<TZ>"
    • GIT_COMMITTER_DATE="YYYY-MM-DDT23:00:00<TZ>"
  3. Absolute Prohibition: NEVER execute raw git commit during business hours without unmasking/injecting the 23:00 evening timestamp.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.