Skill library

Skill library
DeveloperPublicskills/developer/git-workflow/SKILL.md

Git Workflow

Trunk-based development across the three SPYN repos. Short-lived branches, conventional commits, protected main.

Git Workflow

We use trunk-based development across all three SPYN repositories: mediatech/spyn-backend (Laravel + PostgreSQL), mediatech/spyn-mobile (React Native), and mediatech/spyn-admin-panel (web). In each repo, main is the single source of truth and is always shippable. Feature work lives on short-lived branches that exist for hours or days, not weeks. Long-running branches drift, and drift is where merge conflicts and integration bugs come from.

Branching

Branch names follow the pattern {type}/{short-description}-{ticket}, for example feat/ai-comment-summaries-SPYN-142 or fix/diary-feed-pagination-SPYN-158. The type matches one of the conventional commit types below. Keep the description short; the ticket carries the long version. monday.com ticket IDs use the project prefix (SPYN, ADMIN, etc.).

Branches are deleted on merge. Each SPYN repo is configured to do this automatically.

Commits

Commit messages use the Conventional Commits format:

<type>(<optional-scope>): <short summary>

<optional body>

<optional footer>

Common types: feat, fix, refactor, docs, test, chore, perf. The short summary is in the imperative mood ("add", not "added"), under 72 characters, no trailing period.

The body explains the why if it isn't obvious. The footer carries Refs: VERA-42 or Breaking-Change: ... markers.

Merging

PRs merge into main via squash-and-merge. The squashed commit inherits the PR title, so PR titles must follow Conventional Commits too. We do not use merge commits on main — the history stays linear.

For very small documentation-only changes a maintainer may push directly to main. Anything that touches code goes through PR review.

Releases

Releases are cut from main on a tag of the form vMAJOR.MINOR.PATCH. The CI pipeline (GitHub Actions) that builds the release reads the commit log since the previous tag and generates a release-notes draft by grouping conventional commit types — but the draft is only a starting point. Final release notes are hand-edited to meet the rules in developer/release-notes.

Cadence.

  • spyn-backend: weekly releases on Wednesdays, hotfixes ad-hoc.
  • spyn-mobile: bi-weekly releases timed to App Store / Play Store review windows.
  • spyn-admin-panel: rolling, multiple deploys per week as needed.

What we don't do

We don't use git-flow. We don't have a develop branch. We don't cherry-pick between long-lived branches. Each of those patterns optimizes for a release model we don't have.

Owned by

Engineering Leadership. Audited by the Master skill on a 60-day cadence.