agentleFS
sd0xdevsd0xdev/sd0x-dev-flow/skills/git-profile/SKILL.md

git-profile

Skill192 starsChanged 36 days agoMITView on GitHub

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

2 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

10 rules. About 0 are common, 6 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈6

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

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

    line 68
  2. Very specific:

    If status is halt: show the issue and stop

    line 91
  3. Very specific:

    If status is warn: show warnings, continue

    line 92
  4. Distinctive:

    If registry is missing AND this is the first run: trigger auto-discovery (see below)

    line 93
  5. Very specific:

    Use AskUserQuestion with options:

    line 126
  6. Distinctive:

    Remove a profile from the registry.

    line 135
  7. Very specific:

    If profile is active in any repo, use AskUserQuestion:

    line 139
  8. Distinctive:

    If approved, the discover command already persisted them.

    line 167
  9. Distinctive:

    If skipped, create an empty registry to avoid re-prompting

    line 168
  10. Distinctive:

    Degradation policy: If the script is not found or fails, the calling skill falls back to its own inline diagnostics.

    line 190

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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).

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.