{"id":47593737,"url":"https://github.com/qubernetic-org/git-workflow-agent-skill","last_synced_at":"2026-04-01T17:48:58.539Z","repository":{"id":345386338,"uuid":"1185676541","full_name":"qubernetic-org/git-workflow-agent-skill","owner":"qubernetic-org","description":"Claude Code skill enforcing Gitflow, conventional commits, semantic versioning, and issue-driven branching.","archived":false,"fork":false,"pushed_at":"2026-03-27T23:34:54.000Z","size":184,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-28T04:12:53.407Z","etag":null,"topics":["ai-coding-assistant","claude-code","claude-code-skill","conventional-commits","developer-tools","git-workflow","gitflow","semantic-versioning"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/qubernetic-org.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-03-18T20:43:41.000Z","updated_at":"2026-03-27T23:34:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/qubernetic-org/git-workflow-agent-skill","commit_stats":null,"previous_names":["qubernetic-org/git-workflow-agent-skill"],"tags_count":5,"template":false,"template_full_name":null,"purl":"pkg:github/qubernetic-org/git-workflow-agent-skill","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qubernetic-org%2Fgit-workflow-agent-skill","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qubernetic-org%2Fgit-workflow-agent-skill/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qubernetic-org%2Fgit-workflow-agent-skill/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qubernetic-org%2Fgit-workflow-agent-skill/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/qubernetic-org","download_url":"https://codeload.github.com/qubernetic-org/git-workflow-agent-skill/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/qubernetic-org%2Fgit-workflow-agent-skill/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31290615,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai-coding-assistant","claude-code","claude-code-skill","conventional-commits","developer-tools","git-workflow","gitflow","semantic-versioning"],"created_at":"2026-04-01T17:48:57.805Z","updated_at":"2026-04-01T17:48:58.526Z","avatar_url":"https://github.com/qubernetic-org.png","language":"Shell","readme":"\u003cdiv align=\"center\"\u003e\n\n# Git Workflow — Claude Code Skill\n\n[![Lint](https://github.com/qubernetic-org/git-workflow-agent-skill/actions/workflows/lint.yml/badge.svg)](https://github.com/qubernetic-org/git-workflow-agent-skill/actions/workflows/lint.yml)\n[![Version](https://img.shields.io/badge/version-1.4.0-blue.svg)](CHANGELOG.md)\n[![License: MIT](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)\n[![Claude Code](https://img.shields.io/badge/Claude%20Code-skill-7c3aed.svg)](https://claude.ai/code)\n[![Conventional Commits](https://img.shields.io/badge/commits-conventional-fe5196.svg?logo=conventionalcommits\u0026logoColor=white)](https://conventionalcommits.org)\n[![Gitflow](https://img.shields.io/badge/branching-Gitflow-orange.svg)](https://nvie.com/posts/a-successful-git-branching-model/)\n[![SemVer](https://img.shields.io/badge/versioning-SemVer-brightgreen.svg)](https://semver.org)\n\nA Claude Code skill that enforces a disciplined Gitflow-based development workflow with conventional commits, semantic versioning, and issue-driven branching.\n\n[Installation](#installation) · [Usage](#usage) · [What It Enforces](#what-it-enforces) · [Contributing](CONTRIBUTING.md) · [Onboarding](ONBOARDING.md)\n\n\u003c/div\u003e\n\n---\n\n## Installation\n\nClone the repo and run the install script for your platform. The script creates a **symlink**, so the skill stays in sync with the repo automatically.\n\n### Linux\n\n```bash\ngit clone https://github.com/qubernetic-org/git-workflow-agent-skill.git\ncd git-workflow-agent-skill\n./scripts/install_linux.sh\n```\n\n### macOS\n\n```bash\ngit clone https://github.com/qubernetic-org/git-workflow-agent-skill.git\ncd git-workflow-agent-skill\n./scripts/install_macos.sh\n```\n\n### Windows (PowerShell)\n\n```powershell\ngit clone https://github.com/qubernetic-org/git-workflow-agent-skill.git\ncd git-workflow-agent-skill\n.\\scripts\\install_windows.ps1\n```\n\n\u003e **Note:** Windows symlinks require Developer Mode enabled or an elevated terminal. The script falls back to a file copy if symlinks are unavailable.\n\n### Uninstall\n\n```bash\n# Linux\n./scripts/install_linux.sh --uninstall\n\n# macOS\n./scripts/install_macos.sh --uninstall\n```\n\n```powershell\n# Windows\n.\\scripts\\install_windows.ps1 -Uninstall\n```\n\n### Manual Installation\n\nIf you prefer not to use the scripts:\n\n```bash\nmkdir -p ~/.claude/skills/git-workflow\nln -s \"$(pwd)/SKILL.md\" ~/.claude/skills/git-workflow/SKILL.md\n```\n\nThe skill will be automatically discovered on the next Claude Code session.\n\n## Usage\n\nThe skill activates automatically when you ask Claude Code to perform any git operation:\n\n```\n\u003e Commit my changes\n\u003e Create a branch for this feature\n\u003e Prepare a release for version 1.2.0\n\u003e I need to hotfix a production bug\n```\n\nOr invoke directly:\n\n```\n/git-workflow\n```\n\n## What It Enforces\n\n| Rule | Description |\n|------|-------------|\n| **Gitflow branching** | `main`, `develop`, `feature/*`, `fix/*`, `hotfix/*`, `release/*` |\n| **Conventional Commits** | Structured messages — `feat:`, `fix:`, `docs:`, `chore:`, etc. |\n| **Atomic commits** | One logical change per commit, no mixed concerns |\n| **`--no-ff` merges** | All merges into protected branches preserve branch topology |\n| **No AI signatures** | No \"Co-Authored-By\" or \"Generated by\" lines |\n| **Semantic Versioning** | `MAJOR.MINOR.PATCH` with proper bump rules |\n| **Issue-driven workflow** | Every branch starts from an issue and closes it via PR |\n| **PR-only merges** | `main` and `develop` are never committed to directly |\n| **Conventional PR titles** | PR titles follow Conventional Commits format |\n\n## Branch Model\n\n```mermaid\n%%{init: { 'theme': 'base', 'themeVariables': { 'git0': '#0969da', 'git1': '#e8590c', 'git2': '#7c3aed', 'git3': '#2da44e', 'git4': '#fe5196', 'git5': '#2da44e', 'git6': '#cf222e', 'gitBranchLabel0': '#ffffff', 'gitBranchLabel1': '#ffffff', 'gitBranchLabel2': '#ffffff', 'gitBranchLabel3': '#ffffff', 'gitBranchLabel4': '#ffffff', 'gitBranchLabel5': '#ffffff', 'gitBranchLabel6': '#ffffff', 'commitLabelFontSize': '11px', 'tagLabelFontSize': '12px' }, 'gitGraph': { 'mainBranchName': 'main', 'rotateCommitLabel': true, 'showCommitLabel': true } } }%%\ngitGraph\n    commit id: \"init\"\n    commit id: \" \" tag: \"v0.1.0\"\n\n    branch develop order: 1\n    commit id: \"setup\"\n\n    branch \"feature/1-auth\" order: 2\n    commit id: \"login\"\n    commit id: \"logout\"\n\n    checkout develop\n    merge \"feature/1-auth\" id: \" merge-1\"\n\n    branch \"feature/2-search\" order: 3\n    commit id: \"index\"\n    commit id: \"query\"\n\n    checkout develop\n    branch \"fix/3-typo\" order: 4\n    commit id: \"typo\"\n\n    checkout develop\n    merge \"fix/3-typo\" id: \" merge-3\"\n    merge \"feature/2-search\" id: \" merge-2\"\n\n    branch \"release/1.0\" order: 1\n    commit id: \"bump\"\n    commit id: \"changelog\"\n\n    checkout main\n    merge \"release/1.0\" id: \"  \" tag: \"v1.0.0\"\n\n    checkout develop\n    merge main id: \" back-merge\"\n\n    checkout main\n    branch \"hotfix/4-crash\" order: 2\n    commit id: \"crash-fix\"\n    commit id: \"patch\"\n\n    checkout main\n    merge \"hotfix/4-crash\" id: \"   \" tag: \"v1.0.1\"\n\n    checkout develop\n    merge main id: \" hotfix-sync\"\n\n    commit id: \"next\"\n```\n\n| Pattern | Base | Merges into | Purpose |\n|---------|------|-------------|---------|\n| `feature/\u003cissue\u003e-\u003cslug\u003e` | `develop` | `develop` | New features |\n| `fix/\u003cissue\u003e-\u003cslug\u003e` | `develop` | `develop` | Bug fixes |\n| `hotfix/\u003cissue\u003e-\u003cslug\u003e` | `main` | `main` + `develop` | Urgent production fixes |\n| `release/\u003cversion\u003e` | `develop` | `main` + `develop` | Release preparation |\n\n## Commit Format\n\n```\n\u003ctype\u003e(\u003coptional scope\u003e): \u003cdescription\u003e\n```\n\n```\nfeat(auth): add OAuth2 login flow\nfix: resolve race condition in websocket reconnect\nchore(release): prepare 1.2.0\nfeat!: drop support for Node 16\n```\n\nSee [SKILL.md](SKILL.md) for the full specification including commit types, breaking change conventions, versioning rules, release processes, and the complete forbidden operations list.\n\n## Why This Workflow?\n\n| Aspect | This Skill (Gitflow) | GitHub Flow | Trunk-Based |\n|--------|---------------------|-------------|-------------|\n| **Branches** | `main` + `develop` + typed branches | `main` + feature branches | `main` only |\n| **Releases** | Explicit release branches with version bump | Deploy from main on merge | Continuous deploy from main |\n| **Commit style** | Conventional Commits (enforced) | Free-form | Free-form |\n| **Merge strategy** | `--no-ff` merge commits (preserves topology) | Squash merge (flat history) | Squash or rebase |\n| **Traceability** | Issue → branch → PR → changelog | PR-based | Commit-based |\n| **Best for** | Versioned releases, libraries, skills, APIs | SaaS with continuous deploy | Small teams, rapid iteration |\n\n### When to use Gitflow\n\n- You ship **discrete versions** (v1.0, v1.1, v2.0) rather than continuous deploys\n- You need a **clear audit trail** from issue to release\n- Multiple features develop **in parallel** with different release timelines\n- You want **hotfix capability** without disrupting in-progress work\n\n### When NOT to use Gitflow\n\n- You deploy to production on every merge (GitHub Flow is simpler)\n- You have a single developer with no parallel work streams\n- Your project doesn't use semantic versioning\n\n## Integration with Git Hooks and CI Tools\n\nThe skill enforces workflow rules through Claude Code, but you can add mechanical enforcement for your team with these tools:\n\n### Commit Message Validation (commitlint)\n\n```bash\nnpm install --save-dev @commitlint/{cli,config-conventional}\n```\n\n```js\n// commitlint.config.js\nmodule.exports = {\n  extends: ['@commitlint/config-conventional'],\n  rules: {\n    'type-enum': [2, 'always', [\n      'feat', 'fix', 'docs', 'chore', 'refactor',\n      'test', 'style', 'perf', 'ci', 'build', 'revert'\n    ]],\n    'subject-case': [2, 'always', 'lower-case'],\n    'subject-full-stop': [2, 'never', '.'],\n    'header-max-length': [2, 'always', 72],\n  },\n};\n```\n\n### Git Hooks (husky)\n\n```bash\nnpm install --save-dev husky\nnpx husky init\necho \"npx --no -- commitlint --edit \\$1\" \u003e .husky/commit-msg\n```\n\n### Branch Name Validation (CI)\n\nAdd to your GitHub Actions workflow:\n\n```yaml\n- name: Validate branch name\n  if: github.event_name == 'pull_request'\n  run: |\n    BRANCH=\"${{ github.head_ref }}\"\n    PATTERN=\"^(feature|fix|docs|hotfix|release)/[a-z0-9-]+$\"\n    if [[ ! \"$BRANCH\" =~ $PATTERN ]]; then\n      echo \"::error::Branch '$BRANCH' doesn't match pattern: $PATTERN\"\n      exit 1\n    fi\n```\n\n\u003e **Note:** These tools complement the skill — they catch mechanical errors (typos in commit types, wrong branch names) while Claude Code handles the higher-level workflow logic (correct base branch, issue traceability, release process).\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines and [ONBOARDING.md](ONBOARDING.md) for a new contributor guide.\n\n## License\n\n[MIT](LICENSE) © [Qubernetic](https://github.com/qubernetic-org)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqubernetic-org%2Fgit-workflow-agent-skill","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fqubernetic-org%2Fgit-workflow-agent-skill","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fqubernetic-org%2Fgit-workflow-agent-skill/lists"}