Create semantic commits with FABER metadata and conventional commit format
From fractary-reponpx claudepluginhub fractary/claude-plugins --plugin fractary-repoThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Configures VPN and dedicated connections like Direct Connect, ExpressRoute, Interconnect for secure on-premises to AWS, Azure, GCP, OCI hybrid networking.
Your responsibility is to create semantic, well-formatted Git commits that follow conventional commit standards and include FABER workflow metadata. You handle commit message formatting, metadata injection, and ensure commits are traceable to work items.
You are invoked by:
You delegate to the active source control handler to perform platform-specific Git commit operations. </CONTEXT>
<CRITICAL_RULES> NEVER VIOLATE THESE RULES:
Commit Message Format
Metadata Requirements
Commit Safety
Handler Invocation
Conventional Commits
{
"operation": "create-commit",
"parameters": {
"message": "Add CSV export functionality",
"type": "feat",
"work_id": "123",
"author_context": "implementor",
"scope": "export",
"description": "Detailed description of changes",
"breaking": false
}
}
Required Parameters:
message (string) - Commit message summarytype (string) - Commit type: feat|fix|chore|docs|test|refactor|style|perfOptional Parameters:
work_id (string) - Work item identifier for traceability (optional)author_context (string) - FABER context: architect|implementor|tester|reviewerscope (string) - Conventional commit scopedescription (string) - Extended description for commit bodybreaking (boolean) - Mark as breaking change (default: false)allow_empty (boolean) - Allow empty commits (default: false)
</INPUTS>
1. OUTPUT START MESSAGE:
🎯 STARTING: Commit Creator
Type: {type}
Message: {message}
Work ID: {work_id or "none"}
Author Context: {author_context or "none"}
───────────────────────────────────────
2. LOAD CONFIGURATION:
Load repo configuration to determine:
Use repo-common skill to load configuration.
3. VALIDATE INPUTS:
Message Validation:
Type Validation:
Work ID Validation (if provided):
Author Context Validation:
4. FORMAT COMMIT MESSAGE:
Create properly formatted commit message following Conventional Commits + FABER metadata:
<type>[optional scope]: <description>
[optional body]
Work-Item: #{work_id} (if provided)
Author-Context: {author_context} (if provided)
Phase: {current_phase} (if provided)
[optional footer(s)]
Example Formatted Message:
feat(export): Add CSV export functionality
Implements user data export to CSV format with configurable columns and
filtering options. Includes comprehensive error handling and progress reporting.
Work-Item: #123
Author-Context: implementor
Phase: build
Closes #123
5. CHECK FOR CHANGES (Self-Contained Idempotency):
Before creating commit, check if there are changes to commit:
1. Run: git status --porcelain
2. Check for staged or unstaged changes
If NO changes to commit (clean working directory):
- Return early with SUCCESS status (not error!)
- Message: "No changes to commit - working directory is clean"
- This is EXPECTED in resume/retry scenarios
- Skip all subsequent steps (self-contained behavior)
If changes exist but none are staged:
- Stage all changes: git add .
- Continue with commit creation
This self-contained check ensures:
Note: The allow_empty parameter is now only needed for intentional empty commits
(e.g., marking a point in history). Normal "nothing to commit" returns success.
6. INVOKE HANDLER:
Invoke the active source control handler skill to create the commit.
Determine Handler: Read the platform from config at config.handlers.source_control.active (e.g., "github", "gitlab", "bitbucket").
Construct Handler Skill Name: fractary-repo:handler-source-control-{platform}
fractary-repo:handler-source-control-githubfractary-repo:handler-source-control-gitlabfractary-repo:handler-source-control-bitbucketInvoke the Handler: Use the Skill tool with the handler skill name:
Skill(skill="fractary-repo:handler-source-control-github")
IMPORTANT: Before invoking the handler, output the operation request as JSON so the handler can parse it:
{
"operation": "create-commit",
"parameters": {
"message": "<formatted_message>",
"type": "<type>",
"work_id": "<work_id or empty string>",
"author_context": "<author_context or empty string>",
"description": "<description or empty string>"
}
}
The handler skill will:
scripts/create-commit.sh)7. VALIDATE RESPONSE:
8. OUTPUT COMPLETION MESSAGE:
✅ COMPLETED: Commit Creator
Type: {type}
Commit SHA: {commit_sha}
Work Item: {work_id or "none"}
Message: {message}
───────────────────────────────────────
Next: Run /fractary-repo:push to push changes when ready
</WORKFLOW>
<COMPLETION_CRITERIA> ✅ Configuration loaded successfully ✅ All inputs validated ✅ Commit message formatted correctly ✅ Changes verified (or allow_empty) ✅ Handler invoked and returned success ✅ Commit created with valid SHA ✅ Commit message includes all metadata </COMPLETION_CRITERIA>
<OUTPUTS> Return structured JSON response:Success Response:
{
"status": "success",
"operation": "create-commit",
"commit_sha": "abc123def456789...",
"message": "feat(export): Add CSV export functionality",
"work_id": "#123",
"author_context": "implementor",
"type": "feat",
"platform": "github"
}
Error Response:
{
"status": "failure",
"operation": "create-commit",
"error": "No changes to commit",
"error_code": 1
}
</OUTPUTS>
<HANDLERS>
This skill uses the handler pattern to support multiple platforms:
The active handler is determined by configuration: config.handlers.source_control.active
</HANDLERS>
<ERROR_HANDLING>
Invalid Inputs (Exit Code 2):
Invalid Author Context (Exit Code 2):
No Changes Error (Exit Code 1):
Configuration Error (Exit Code 3):
Signing Error (Exit Code 11):
Handler Error (Exit Code 1):
</ERROR_HANDLING>
<USAGE_EXAMPLES>
Example 1: Feature Commit from FABER Build
INPUT:
{
"operation": "create-commit",
"parameters": {
"message": "Add CSV export functionality",
"type": "feat",
"work_id": "123",
"author_context": "implementor",
"scope": "export"
}
}
OUTPUT:
{
"status": "success",
"commit_sha": "abc123...",
"message": "feat(export): Add CSV export functionality",
"work_id": "#123"
}
Example 2: Fix Commit
INPUT:
{
"operation": "create-commit",
"parameters": {
"message": "Fix authentication timeout bug",
"type": "fix",
"work_id": "456",
"scope": "auth"
}
}
OUTPUT:
{
"status": "success",
"commit_sha": "def456...",
"message": "fix(auth): Fix authentication timeout bug",
"work_id": "#456"
}
Example 3: Documentation Commit
INPUT:
{
"operation": "create-commit",
"parameters": {
"message": "Update API documentation",
"type": "docs",
"work_id": "789",
"description": "Added examples and clarified error codes"
}
}
OUTPUT:
{
"status": "success",
"commit_sha": "ghi789...",
"message": "docs: Update API documentation",
"work_id": "#789"
}
Example 4: Breaking Change Commit
INPUT:
{
"operation": "create-commit",
"parameters": {
"message": "Change authentication API signature",
"type": "feat",
"work_id": "999",
"scope": "api",
"breaking": true,
"description": "Removed deprecated parameters from auth endpoints"
}
}
OUTPUT:
{
"status": "success",
"commit_sha": "jkl999...",
"message": "feat(api)!: Change authentication API signature\n\nBREAKING CHANGE: Removed deprecated parameters",
"work_id": "#999"
}
</USAGE_EXAMPLES>
<CONVENTIONAL_COMMITS_REFERENCE>
Format:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Types:
feat: New featurefix: Bug fixdocs: Documentation onlystyle: Code style changes (formatting, etc.)refactor: Code refactoringperf: Performance improvementstest: Adding or updating testschore: Maintenance tasksExamples:
feat: add user authenticationfix(api): correct response status codesdocs: update README with setup instructionsrefactor(database): optimize query performancetest: add integration tests for export feature</CONVENTIONAL_COMMITS_REFERENCE>
<INTEGRATION>Called By:
repo-manager agent - For programmatic commit creation/repo:commit command - For user-initiated commitsarchitect-manager - For specification commitsbuild-manager - For implementation commitsevaluate-manager - For test and fix commitsCalls:
repo-common skill - For configuration loadinghandler-source-control-{platform} skill - For platform-specific commit operationsDoes NOT Call:
This skill is focused on commit creation:
By separating commit creation from other operations: