Skill

git-profile

Install
1
Install the plugin
$
npx claudepluginhub sd0xdev/sd0x-dev-flow --plugin sd0x-dev-flow

Want just this skill?

Add to a custom plugin, then install with one command.

Description

Git identity and GPG signing profile manager. Discovers profiles from GPG + git config, switches local identity, checks signing health. Use when: user says 'switch identity', 'git profile', 'check signing', 'gpg key status', 'which identity', or /git-profile

Tool Access

This skill is limited to using the following tools:

Bash(bash:*)Bash(git:*)ReadGrepGlobAskUserQuestion
Supporting Assets
View in Repository
scripts/git-profile.sh
Skill Content

Git Profile Manager

Manage git identity and GPG signing profiles per-repository.

Workflow

sequenceDiagram
    participant U as User
    participant SK as SKILL.md
    participant SH as git-profile.sh
    participant AQ as AskUserQuestion

    U->>SK: /git-profile [subcommand]
    SK->>SK: Parse subcommand (default: doctor)

    alt doctor (default)
        SK->>SH: doctor
        SH-->>SK: Diagnostic JSON
        SK->>U: Health report table
    end

    alt list
        SK->>SH: list
        SH-->>SK: Profiles JSON
        SK->>U: Profile table with current match
    end

    alt use <profile>
        SK->>SH: resolve <profile>
        SH-->>SK: Plan JSON + plan-hash
        SK->>AQ: "Apply [hash] to local config?" / "Abort"
        AQ-->>SK: Approved
        SK->>SH: apply --plan-hash <hash>
        SH-->>SK: Result JSON
        SK->>U: Applied / Error
    end

    alt remove <profile>
        SK->>SH: remove-check <profile>
        SH-->>SK: Safety JSON (active repos list)
        alt profile is active
            SK->>AQ: "Profile active in N repos. Remove anyway?" / "Cancel"
        end
        SK->>SH: remove-exec <profile> [--force]
        SH-->>SK: Result JSON
        SK->>U: Removed / Error
    end

    alt verify
        SK->>SH: verify
        SH-->>SK: Verification JSON
        SK->>U: Verification report
    end

Subcommands

doctor (default)

Run diagnostics on current repository's git identity and GPG signing config.

Steps:

  1. Run: bash scripts/run-skill.sh git-profile git-profile.sh doctor
  2. Parse the JSON output
  3. Render a health report table:
## Git Profile Health

| Item | Value | Source | Status |
|------|-------|--------|--------|
| Name | ... | ... | ... |
| Email | ... | ... | ... |
| Signing | ... | ... | ... |
| GPG Key | ... | ... | ... |
| Env Override | ... | ... | ... |
| Worktree | ... | ... | ... |
| Profile Match | ... | ... | ... |

Status: [overall status]
  1. If status is halt: show the issue and stop
  2. If status is warn: show warnings, continue
  3. If registry is missing AND this is the first run: trigger auto-discovery (see below)

list

List all registered profiles.

Steps:

  1. Run: bash scripts/run-skill.sh git-profile git-profile.sh list
  2. Parse the JSON output
  3. Render a profile table with a marker on the currently matched profile

use <profile>

Switch the current repository to use a named profile.

Steps:

  1. Run: bash scripts/run-skill.sh git-profile git-profile.sh resolve <profile>
  2. Parse the plan JSON — contains profile data, planned commands, and plan-hash
  3. Show the user what will be written:
## Apply Profile: <profile-id>

| Config Key | Current | New |
|------------|---------|-----|
| user.name | ... | ... |
| user.email | ... | ... |
| user.signingkey | ... | ... / (unset) |
| commit.gpgsign | ... | true / (unset) |

Note: Keyless profiles unset signing-related keys instead of setting them.
  1. Use AskUserQuestion with options:
    • "Apply [<plan-hash>] to local config (Recommended)"
    • "Abort"
  2. On approval: bash scripts/run-skill.sh git-profile git-profile.sh apply --plan-hash <hash>
  3. Parse result; if error (hash mismatch, write failure) report and stop
  4. On success: report applied config

remove <profile>

Remove a profile from the registry.

Steps:

  1. Run: bash scripts/run-skill.sh git-profile git-profile.sh remove-check <profile>
  2. If profile is active in any repo, use AskUserQuestion:
    • "Profile is active in N repos. Remove with --force?"
    • "Cancel"
  3. On approval: bash scripts/run-skill.sh git-profile git-profile.sh remove-exec <profile> [--force]
  4. Report result

verify

Deep verification of current identity setup.

Steps:

  1. Run: bash scripts/run-skill.sh git-profile git-profile.sh verify
  2. Parse the verification JSON
  3. Render verification report with checks:
    • Key expiry (90-day warning threshold)
    • Email match between git config and GPG key UID
    • Registry consistency

Auto-Discovery

Triggered when: registry file is missing on first doctor run.

Steps:

  1. Run: bash scripts/run-skill.sh git-profile git-profile.sh discover
  2. Parse candidates JSON
  3. Present candidates to user via AskUserQuestion:
    • "Save N discovered profiles to registry (Recommended)"
    • "Skip — I'll configure manually"
  4. If approved, the discover command already persisted them; confirm to user
  5. If skipped, create an empty registry to avoid re-prompting

Safety Rules

RuleDescription
v1 NEVER writes ~/.gitconfigOnly --local scope writes
v1 NEVER enables extensions.worktreeConfigLinked worktree: detect + warn only
NEVER auto-fix without confirmationAll writes gated by AskUserQuestion
NEVER store key materialRegistry stores fingerprints only
Plan-hash verificationRe-compute hash before apply; reject if stale
Atomic registry writestemp file + chmod 0600 + mv

Diagnostic Integration

The doctor --json output follows the Shared Diagnostic Contract (see tech spec section 3.2). Other skills (e.g., /smart-commit Step 1c) can call:

bash scripts/run-skill.sh git-profile git-profile.sh doctor --json

Degradation policy: If the script is not found or fails, the calling skill falls back to its own inline diagnostics. Infrastructure failure = warn-only; identity/signing missing = halt (unchanged).

Stats
Stars90
Forks12
Last CommitMar 6, 2026
Actions

Similar Skills