skill-git-workflow
- Repo stars 435
- Author repo nvim
Git Workflow Skill
Create properly scoped git commits for task operations.
Context Loading
Load context on-demand when needed:
@.claude/context/standards/git-safety.md- Git safety rules and best practices@.claude/context/index.json- Full context discovery index
Trigger Conditions
This skill activates when:
- Task status changes (research, plan, implement complete)
- Artifacts are created
- Task lifecycle operations occur
Commit Message Formats
Task Operations
| Operation | Format | CI Triggered |
|---|---|---|
| Create task | task {N}: create {title} |
No |
| Complete research | task {N}: complete research |
No |
| Create plan | task {N}: create implementation plan |
No |
| Complete phase | task {N} phase {P}: {phase_name} |
No |
| Complete task | task {N}: complete implementation |
No |
| Complete task (with CI) | task {N}: complete implementation [ci] |
Yes |
| Revise plan | task {N}: revise plan (v{V}) |
No |
System Operations
| Operation | Format |
|---|---|
| Archive tasks | todo: archive {N} completed tasks |
| Error fixes | errors: create fix plan for {N} errors |
| Code review | review: {scope} code review |
| State sync | sync: reconcile TODO.md and state.json |
Execution Flow
1. Receive commit request:
- operation_type
- task_number (if applicable)
- scope (files to include)
- message_template
2. Stage appropriate files:
- git add {scope}
3. Create commit:
- Format message
- Add co-author
- Execute commit
4. Verify success:
- Check exit code
- Log result
5. Return result
Commit Scope Rules
Task-Specific Commits
Include only task-related files:
specs/TODO.md
specs/state.json
specs/{NNN}_{SLUG}/**
Implementation Commits
Include source files modified:
Logos/**/*.lean (for Lean tasks)
src/**/* (for general tasks)
Phase Commits
Scope to phase changes only:
Files modified in that phase
Updated plan with phase status
Safety Checks
Before Commit
1. git status - verify staged files
2. Check no sensitive files staged (.env, credentials)
3. Verify commit message format
Never Run
git push --forcegit reset --hard(without explicit request)git rebase -i
Message Template
{scope}: {action} {description}
CI Triggering
Overview
CI is skipped by default on push events. To trigger CI, add [ci] marker to the commit message.
trigger_ci Parameter
When creating commits, the trigger_ci parameter controls whether CI runs:
| Value | Behavior | Use Case |
|---|---|---|
false (default) |
No CI marker added | Routine commits, research, planning |
true |
Append [ci] to message |
Lean changes, implementation completion |
CI Decision Criteria
Trigger CI (trigger_ci: true) when:
- Lean files modified (.lean) - Ensures build passes
- Implementation completed - Final verification before merge
- CI configuration changed (.github/workflows/) - Validate workflow changes
- Mathlib dependencies updated (lakefile.lean, lake-manifest.json) - Ensure compatibility
- Critical bug fixes - Verify fix works
Skip CI (default) when:
- Documentation changes only (.md files)
- Research/planning artifacts
- Configuration changes (non-CI)
- Routine task management operations
Commit Message with CI Marker
task {N}: complete implementation [ci]
When CI Always Runs
CI runs regardless of marker on:
- Pull request events (all PRs run CI)
- Manual workflow_dispatch trigger
- Commits with
[ci]marker
Execution Commands
Standard Commit
git add {files}
git commit -m "$(cat <<'EOF'
{message}
EOF
)"
Task Commit
git add specs/
git commit -m "$(cat <<'EOF'
task {N}: {action}
EOF
)"
Return Format
{
"status": "completed|failed",
"summary": "Created commit: {short_message}",
"commit_hash": "abc123",
"files_committed": [
"path/to/file1",
"path/to/file2"
],
"message": "Full commit message",
"ci_triggered": true|false
}
Error Handling
Nothing to Commit
{
"status": "committed",
"summary": "No changes to commit",
"commit_hash": null
}
Pre-Commit Hook Failure
{
"status": "failed",
"error": "Pre-commit hook failed",
"recovery": "Fix issues and retry (do not use --no-verify)"
}
Git Error
{
"status": "failed",
"error": "Git command failed: {error}",
"recovery": "Check git status and resolve manually"
}
Non-Blocking Behavior
Git failures should NOT block task operations:
- Log the failure
- Continue with task
- Report to user that commit failed
- Task state is preserved regardless
- Fluxly category
- Engineering
- Author-declared agents
- No explicit declaration found; this is not inferred or tested compatibility
- Static check
- 88 / 100 · heuristic scan, not runtime safety proof
- Author / version / license
- @benbrastmckie · no license declared
- Fluxly token estimate
- Lean
- Fluxly setup estimate
- Guided setup
- External API key
- No requirement detected
- Detected OS requirements
- Unspecified
- Runtime requirements
- Unspecified
- Detected file/system behavior
-
- Read-only
- Write / modify
- Shell exec
- Env read
- Detected network behavior
- Local-only
- Install commands
- None (reference only)
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
Heads up: 未限定 allowed-tools,默认拥有全部工具权限。
The current SKILL.md does not define a fixed output example. Load context on-demand when needed: @.claude/context/standards/git-safety.md - Git safety rules and best practices @.claude/context/index.json - Full context discovery index
This skill activates when: Task status changes (research, plan, implement complete) Artifacts are created
Commit Message Formats
Operation · Format · CI Triggered Create task · task {N}: create {title} · No Complete research · task {N}: complete research · No
Operation · Format Archive tasks · todo: archive {N} completed tasks Error fixes · errors: create fix plan for {N} errors
Execution Flow
# Git Workflow Skill
Create properly scoped git commits for task operations.
## Context Loading
Load context on-demand when needed:
- `@.claude/context/standards/git-safety.md` - Git safety rules and best practices
- `@.claude/context/index.json` - Full context discovery index
## Trigger Conditions
This skill activates when:
- Task status changes (research, plan, implement complete)
- Artifacts are created
- Task lifecycle operations occur
## Commit Message Formats
### Task Operations
| Operation | Format | CI Triggered |
|-----------|--------|--------------|
| Create task | `task {N}: create {title}` | No |
| Complete research | `task {N}: complete research` | No |
| Create plan | `task {N}: create implementation plan` | No |
| Complete phase | `task {N} phase {P}: {phase_name}` | No |
| Complete task | `task {N}: complete implementation` | No |
| Complete task (with CI) | `task {N}: complete implementation [ci]` | Yes |
| Revise plan | `task {N}: revise plan (v{V})` | No |
### System Operations
| Operation | Format |
|-----------|--------|
| Archive tasks | `todo: archive {N} completed tasks` |
| Error fixes | `errors: create fix plan for {N} errors` |
| Code review | `review: {scope} code review` |
| State sync | `sync: reconcile TODO.md and state.json` |
## Execution Flow
```
1. Receive commit request:
- operation_type
- task_number (if applicable)
- scope (files to include)
- message_template
2. Stage appropriate files:
- git add {scope}
3. Create commit:
- Format message
- Add co-author
- Execute commit
4. Verify success:
- Check exit code
- Log result
5. Return result
```
## Commit Scope Rules
### Task-Specific Commits
Include only task-related files:
```
specs/TODO.md
specs/state.json
specs/{NNN}_{SLUG}/**
```
… Author text anchors workflow facts; Fluxly only indexes current sections, terms, files, and commands.
sections -> Context Loading → Trigger Conditions → Commit Message Formats → Task Operations → System Operations → Execution Flow
terms -> skipped by default · Lean files modified · Implementation completed · CI configuration changed · Mathlib dependencies updated · Critical bug fixes
files/cmd -> @.claude/context/standards/git-safety.md · @.claude/context/index.json · task {N}: create {title} · task {N}: complete research · task {N}: create implementation plan · task {N} phase {P}: {phasename} · task {N}: complete implementation · task {N}: complete implementation [ci]
body sha256 -> 5fac3b8933e8
Decide Fit First
Design Intent
How To Use It
Boundaries And Review