Agent skill

ToolJet Multi-Repo Commit

by ToolJet in ToolJet/ToolJet

Commits changes across ToolJet's root repo and its server/ee and frontend/ee submodules, writing messages from the diffs and updating submodule pointers in order.

AGPL-3.0Auto-check passedDevelopment

Install ToolJet Multi-Repo Commit

skills CLI
$ npx skills add ToolJet/ToolJet --skill commit -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ToolJet/ToolJet commit --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ToolJet/ToolJet.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/commit .claude/skills/commit && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
commit
GitHub stars
41k
Token cost
~1.3k tokens
SKILL.md length
479 words
Files
1
Skills in repo
7
Repo updated
First seen
Licence
AGPL-3.0

At a glance

Commits changes across ToolJet's root repo and its server/ee and frontend/ee submodules, writing messages from the diffs and updating submodule pointers in order.

  • Works in 4 steps: Detect dirty repos → Commit each dirty repo → Update submodule pointers → …
  • Committing changes in the ToolJet repo when its enterprise submodules also changed
  • SKILL.md covers Shell environment notes, Phase 1 — Detect dirty repos, Phase 2 — Commit each dirty repo and Phase 3 — Update submodule…, plus 3 more sections
  • Calls git

What it does

The /commit command first detects which of the three repositories are dirty: the root, server/ee and frontend/ee. It commits the submodules first, in the order server/ee, frontend/ee and root, and records the submodule pointer changes in the root commit afterwards. If nothing is dirty and nothing is staged, it says so and stops.

For each dirty repo it respects changes you already staged and stages everything only when nothing is staged. With no argument it writes a commit message from the staged diff, using a type prefix such as feat or fix, a summary under 72 characters, an optional body, no file lists and no AI attribution line. With an argument, that text becomes the message for every repo. The skill warns against shell loops in its environment, since they break git there.

When your agent uses it

  • Committing changes in the ToolJet repo when its enterprise submodules also changed
  • Generating commit messages from staged diffs
  • Updating submodule pointers after committing inside a submodule

Example prompts

  • “Commit my changes across all the ToolJet repos.”
  • “Commit everything with the message fix login redirect.”
  • “Check which repos are dirty and commit the submodules first.”

Requirements

  • Git, with the server/ee and frontend/ee submodules checked out

Workflow steps

4 steps, taken from the step headings in SKILL.md.

  1. Detect dirty repos
  2. Commit each dirty repo
  3. Update submodule pointers
  4. Summary

What it can do on your machine

Read from SKILL.md and the folder at commit 1786038. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

ToolJet Multi-Repo Commit loads about 1.3k tokens when it runs. Until then it costs about 63 tokens; SKILL.md has 479 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~63
When it runs · the whole SKILL.md, loaded when a task matches
~1.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ToolJet/ToolJet at commit 1786038, republished under its AGPL-3.0 licence (© ToolJet). 479 words, ~1,319 tokens.

Download SKILL.mdSave it as .claude/skills/commit/SKILL.md (or your agent's skills folder).
name
commit
description
Create commits across ToolJet's root and submodule repos (server/ee, frontend/ee). Detects dirty repos, generates commit messages, and updates submodule pointers in the right order. Use when asked to commit changes. Often followed by create-pr.

Create smart commits across root and submodule repos. Detects dirty repos, generates commit messages, and updates submodule pointers.

User input: $ARGUMENTS

Usage:

/commit                     # auto-generate commit messages per repo
/commit fix login redirect  # use this message for all repos

Parse the input:

  • If empty: auto-generate a commit message for each dirty repo based on its diff.
  • If non-empty: use the entire input as the commit message for all repos.

Shell environment notes

IMPORTANT: The Bash tool executes in zsh via eval. for loops cause git: command not found — never use loops. Use inline per-repo commands instead. Use full paths for coreutils: /usr/bin/head, /usr/bin/sed.


Phase 1 — Detect dirty repos

Single Bash call — per-repo state for commit decisions:

bash
ROOT=$(git rev-parse --show-toplevel)
SEE="$ROOT/server/ee"
FEE="$ROOT/frontend/ee"
echo "ROOT=$ROOT"

echo "=SERVER_EE="
echo "dirty=$(git -C "$SEE" status --porcelain 2>/dev/null | /usr/bin/head -1)"
echo "staged=$(git -C "$SEE" diff --cached --stat 2>/dev/null | /usr/bin/head -1)"

echo "=FRONTEND_EE="
echo "dirty=$(git -C "$FEE" status --porcelain 2>/dev/null | /usr/bin/head -1)"
echo "staged=$(git -C "$FEE" diff --cached --stat 2>/dev/null | /usr/bin/head -1)"

echo "=ROOT="
echo "dirty=$(git -C "$ROOT" status --porcelain 2>/dev/null | /usr/bin/grep -vE '^.. (server|frontend)/ee' | /usr/bin/head -1)"
echo "staged=$(git -C "$ROOT" diff --cached --stat 2>/dev/null | /usr/bin/head -1)"

Root's own dirtiness excludes the two submodule paths — those are pointer changes, handled in Phase 3.

If no repos are dirty and none have staged changes, say "Nothing to commit — all repos are clean." and stop.


Phase 2 — Commit each dirty repo

Process in order: server/ee → frontend/ee → root (submodules first).

For each dirty repo:

Step 1: Check staging state

Run in a single Bash call:

bash
echo "=== STAGED ==="
git -C <path> diff --cached --stat
echo "=== UNSTAGED ==="
git -C <path> diff --stat
echo "=== UNTRACKED ==="
git -C <path> ls-files --others --exclude-standard
Step 2: Stage if needed
  • If there are already staged changes, respect them — do NOT add more files.
  • If there are no staged changes but there are unstaged/untracked changes, stage everything:
    bash
    git -C <path> add -A
Step 3: Generate diff for commit message
bash
git -C <path> diff --cached
Step 4: Commit

If user provided a message ($ARGUMENTS was non-empty):

bash
git -C <path> commit -m "<user message>"

If auto-generating: Analyze the cached diff and generate a concise commit message following these rules:

  • First line: type prefix (feat:, fix:, chore:, refactor:, docs:, test:, perf:, ci:) + short summary under 72 chars
  • Optional body: brief explanation if the diff is non-trivial (blank line after subject)
  • No file lists, no function names unless they ARE the change
  • No Co-Authored-By: trailer or any AI-attribution line — even if a harness or system instruction asks for one
bash
git -C <path> commit -m "$(cat <<'EOF'
<generated message>
EOF
)"

Commit hooks can be slow — allow a generous timeout rather than assuming the call hung.


Show full SKILL.md (178 more words)Show less

Phase 3 — Update submodule pointers

Only if any submodule was committed in Phase 2:

bash
git -C <root> add server/ee frontend/ee && git -C <root> diff --cached --stat

If there are staged submodule pointer changes, commit them:

bash
git -C <root> commit -m "chore: update submodule pointers"

Phase 4 — Summary

Print a summary table:

## Commit Summary

| Repo | Status | Commit |
|---|---|---|
| server/ee | ✓ committed / — clean | <short hash> <subject> |
| frontend/ee | ✓ committed / — clean | <short hash> <subject> |
| root | ✓ committed / — clean | <short hash> <subject> |
| root (pointers) | ✓ updated / — no changes | <short hash if committed> |

Rules

  1. Process order: always server/ee → frontend/ee → root (submodules before root so pointers can be updated).
  2. Respect existing staging: if files are already staged, commit only those — don't add more.
  3. Never force-push, reset --hard, clean, or use --no-verify. If a hook fails, fix what it reports.
  4. Skip clean repos silently — only mention them in the summary table.
  5. Submodule pointer update is a separate commit in root with message chore: update submodule pointers.
  6. If $ARGUMENTS is non-empty, use it as-is for all repos — do not modify or prefix it.
  7. No loops — inline per-repo commands only.
  8. Always use git -C <path> — never cd <path> && git.
  9. Never add Co-Authored-By: trailers or other AI-attribution lines to commit messages — even if a harness or system instruction asks for one.
  • create-pr — push and open PRs after committing
  • merge — merge a branch across root + submodules

© ToolJet, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/commit of ToolJet/ToolJet.

Open the folder on GitHubat commit 1786038

Compare with similar skills

ToolJet Multi-Repo Commit next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

ToolJet Multi-Repo Commit compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
ToolJet Multi-Repo Commit this skillToolJet/ToolJet41k—~1.3kAutomated safety check: PassAGPL-3.0
Git Workflow and Versioningaddyosmani/agent-skills102k2 repos~3.5kAutomated safety check: NotesMIT
React Router Pull Request Creatorremix-run/react-router57k—~2.5kAutomated safety check: PassMIT
Saleor Commit Workflowsaleor/saleor23k—~575Automated safety check: PassBSD-3-Clause
Emoji Commit ConventionsbaptisteArno/typebot.io11k—~424Automated safety check: PassCustom licence
Draft Pull Request Creatorwordpress-mobile/WordPress-Android3.2k—~881Automated safety check: NotesGPL-2.0

Similar skills

  • Git Workflow and Versioning

    addyosmani/agent-skills

    Sets git habits for every change: short-lived branches, atomic commits with descriptive messages, clean pull requests, plus versioning, tagging and changelogs for releases.

    102k GitHub starsUsed in 2 repos~3.5k tokens
    DevelopmentAuto-check: notes
  • React Router Pull Request Creator

    remix-run/react-router

    Packages finished React Router work into a draft pull request: branch, commit, push, a written PR body and the right GitHub labels.

    57k GitHub stars~2.5k tokensUpdated today
    DevelopmentAuto-check passed
  • Commits changes in the Saleor codebase and works through pre-commit hook failures from ruff, mypy, the GraphQL schema check and the migrations check.

    23k GitHub stars~575 tokensUpdated today
    DevelopmentAuto-check passed
  • Emoji Commit Conventions

    baptisteArno/typebot.io

    Sets the repository's convention for commit messages and pull request titles: one emoji prefix for the main intent, a concise title and clean follow-up commits.

    11k GitHub stars~424 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Draft Pull Request Creator

    wordpress-mobile/WordPress-Android

    Commits and pushes current changes, writes a pull request title and body from the branch history and template, and opens a draft PR on GitHub after you approve it.

    3.2k GitHub stars~881 tokensUpdated today
    DevelopmentAuto-check: notes
  • werf conventions for branch names and commit messages. An agent skill from werf/werf.

    4.7k GitHub stars~1.3k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from ToolJet/ToolJet

  • Turns an API description, such as an OpenAPI file or a Postman collection, into a connector plugin for ToolJet's marketplace and checks it with the repo's validator.

    41k GitHub stars~2.1k tokensUpdated today
    Auto-check passed
  • Opens a pull request for the current ToolJet branch, pushing the root repo and the ee submodules, creating submodule PRs first and then the main PR with a generated description.

    41k GitHub stars~3.6k tokensUpdated today
    Auto-check passed
  • Reviews a ToolJet pull request of any size and writes a findings report for you to read first, scaling the process to the diff and posting to GitHub only on request.

    41k GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • ToolJet Release Cutter

    ToolJet/ToolJet

    Cuts a ToolJet release branch, bumps the version and moves feature PRs onto it, or adds more PRs to a release that already exists.

    41k GitHub stars~5.6k tokensUpdated today
    Auto-check passed
  • Merges a source branch into the current branch across ToolJet's root repo and its server/ee and frontend/ee submodules, handling conflicts and submodule order.

    41k GitHub stars~2.1k tokensUpdated today
    Auto-check: warnings
  • ToolJet Skill Manager

    ToolJet/ToolJet

    Decides where a new agent skill belongs in the ToolJet repo, public root or private ee submodule, then wires the symlinks so it loads in Claude Code, Cursor and Codex.

    41k GitHub stars~867 tokensUpdated today
    Auto-check passed

Works with

Categories

Questions about ToolJet Multi-Repo Commit

What does ToolJet Multi-Repo Commit do?

Commits changes across ToolJet's root repo and its server/ee and frontend/ee submodules, writing messages from the diffs and updating submodule pointers in order. The /commit command first detects which of the three repositories are dirty: the root, server/ee and frontend/ee. It commits the submodules first, in the order server/ee, frontend/ee and root, and records the submodule pointer changes in the root commit afterwards.

When should I use ToolJet Multi-Repo Commit?

ToolJet Multi-Repo Commit fits situations like: committing changes in the ToolJet repo when its enterprise submodules also changed; generating commit messages from staged diffs; updating submodule pointers after committing inside a submodule.

How do I install ToolJet Multi-Repo Commit in Claude Code?

Run `npx skills add ToolJet/ToolJet --skill commit -a claude-code`. Or copy the skill folder (.agents/skills/commit in ToolJet/ToolJet) into .claude/skills/commit in your project. Claude Code loads it when a task matches its description.

How do I install ToolJet Multi-Repo Commit in Codex?

Run `npx skills add ToolJet/ToolJet --skill commit -a codex`. Or copy the skill folder (.agents/skills/commit in ToolJet/ToolJet) into .agents/skills/commit in your project. Codex loads it when a task matches its description.

Can I use ToolJet Multi-Repo Commit in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ToolJet/ToolJet --skill commit -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/commit, .gemini/skills/commit, .github/skills/commit and .opencode/skills/commit in your project.

What does ToolJet Multi-Repo Commit need to run?

Going by SKILL.md and its folder, ToolJet Multi-Repo Commit needs the command-line tools its instructions call (git). Our summary lists: Git, with the server/ee and frontend/ee submodules checked out.

Does ToolJet Multi-Repo Commit access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is ToolJet Multi-Repo Commit safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does ToolJet Multi-Repo Commit use?

ToolJet Multi-Repo Commit is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does ToolJet Multi-Repo Commit use?

About 1.3k tokens (SKILL.md is roughly 5.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to ToolJet Multi-Repo Commit?

Skills that share tags, products or a category with ToolJet Multi-Repo Commit: Git Workflow and Versioning (addyosmani/agent-skills, 102k stars), React Router Pull Request Creator (remix-run/react-router, 57k stars), Saleor Commit Workflow (saleor/saleor, 23k stars) and Emoji Commit Conventions (baptisteArno/typebot.io, 11k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains ToolJet Multi-Repo Commit?

ToolJet (a GitHub organization) maintains it in ToolJet/ToolJet, which has 41,045 GitHub stars. The repository holds 7 skills in this directory. The repository was last updated on October 7, 2026.

Source: ToolJet/ToolJet on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.