# tmueter/gitlink architecture

> Architecture diagram of the GitHub repository tmueter/gitlink, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/tmueter/gitlink
- Repository: https://github.com/tmueter/gitlink

## Overview

gitlink is a Claude Code skill for configuring Claude access to self-hosted Forgejo, Gitea, or GitLab. The user invokes documented setup and repository commands; the skill guides interactive decisions while `gitlink.py` performs deterministic setup, SSH, credential, and MCP tasks. Later commands create or connect repositories and manage access and issues. The graph preserves the documented GitLab limitations and optional Wayfinder prompt. Internal edges are supported by the README and shown script excerpts; unsampled skill instructions are not treated as inspected source.

Main entry points: [`skill/gitlink/SKILL.md`](https://github.com/tmueter/gitlink/blob/main/skill/gitlink/SKILL.md) (Claude instructions), [`skill/gitlink/gitlink.py`](https://github.com/tmueter/gitlink/blob/main/skill/gitlink/gitlink.py) (Deterministic CLI), [`skill/gitlink/sonderfaelle.md`](https://github.com/tmueter/gitlink/blob/main/skill/gitlink/sonderfaelle.md) (Rare cases)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Skill interaction"]
  node_skill["Claude instructions<br/>[SKILL.md]"]
  node_reference["Rare cases<br/>[sonderfaelle.md]"]
end

subgraph group_setup["Instance setup"]
  node_cli["Deterministic CLI<br/>[gitlink.py]"]
  node_discovery["Platform discovery<br/>[gitlink.py]"]
  node_credentials["Client credentials<br/>[gitlink.py]"]
  node_ssh["SSH and host keys<br/>[gitlink.py]"]
  node_config[("Private configuration<br/>[gitlink.py]")]
  node_mcp["MCP registration<br/>[gitlink.py]"]
end

subgraph group_repository["Repository operations"]
  node_repo["Repository lifecycle<br/>[SKILL.md]"]
  node_issues["Issue dependencies<br/>[SKILL.md]"]
  node_access["Archive and revoke<br/>[SKILL.md]"]
end

subgraph group_integrations["External systems"]
  node_forgejo["Forgejo / Gitea"]
  node_gitlab["Self-hosted GitLab"]
  node_mcpserver["Platform MCP server"]
  node_workspace["Local Git workspace"]
  node_wayfinder["Wayfinder plugin"]
end

node_user(("User"))

node_user -->|"invokes"| node_skill
node_skill -->|"runs deterministic steps"| node_cli
node_skill -->|"consults exceptions"| node_reference
node_cli -->|"detects platform"| node_discovery
node_cli -->|"configures clients"| node_credentials
node_cli -->|"pins keys"| node_ssh
node_cli -->|"stores secrets"| node_config
node_cli -->|"registers and tests"| node_mcp
node_discovery -->|"detects or administers"| node_forgejo
node_discovery -->|"detects platform"| node_gitlab
node_mcp -->|"registers server"| node_mcpserver
node_skill -->|"guides commands"| node_repo
node_skill -->|"guides commands"| node_issues
node_skill -->|"guides commands"| node_access
node_repo -->|"creates and connects"| node_forgejo
node_repo -->|"connects by SSH"| node_gitlab
node_repo -->|"connects working directory"| node_workspace
node_issues -->|"manages dependencies"| node_forgejo
node_access -->|"archives or deletes"| node_forgejo
node_access -->|"revokes local client"| node_config
node_skill -.->|"offers installation"| node_wayfinder

click node_skill "https://github.com/tmueter/gitlink/blob/main/skill/gitlink/SKILL.md"
click node_reference "https://github.com/tmueter/gitlink/blob/main/skill/gitlink/sonderfaelle.md"
click node_cli "https://github.com/tmueter/gitlink/blob/main/skill/gitlink/gitlink.py"
click node_discovery "https://github.com/tmueter/gitlink/blob/main/skill/gitlink/gitlink.py"
click node_credentials "https://github.com/tmueter/gitlink/blob/main/skill/gitlink/gitlink.py"
click node_ssh "https://github.com/tmueter/gitlink/blob/main/skill/gitlink/gitlink.py"
click node_config "https://github.com/tmueter/gitlink/blob/main/skill/gitlink/gitlink.py"
click node_mcp "https://github.com/tmueter/gitlink/blob/main/skill/gitlink/gitlink.py"
click node_repo "https://github.com/tmueter/gitlink/blob/main/skill/gitlink/SKILL.md"
click node_issues "https://github.com/tmueter/gitlink/blob/main/skill/gitlink/SKILL.md"
click node_access "https://github.com/tmueter/gitlink/blob/main/skill/gitlink/SKILL.md"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_skill,node_reference,node_user toneBlue
class node_cli,node_discovery,node_credentials,node_ssh,node_config,node_mcp toneAmber
class node_repo,node_issues,node_access toneMint
class node_forgejo,node_gitlab,node_mcpserver,node_workspace,node_wayfinder toneRose
```

## Components

### Skill interaction

- [Claude instructions](https://github.com/tmueter/gitlink/blob/main/skill/gitlink/SKILL.md): `skill/gitlink/SKILL.md`
- [Rare cases](https://github.com/tmueter/gitlink/blob/main/skill/gitlink/sonderfaelle.md): `skill/gitlink/sonderfaelle.md`

### Instance setup

- [Deterministic CLI](https://github.com/tmueter/gitlink/blob/main/skill/gitlink/gitlink.py): `skill/gitlink/gitlink.py`
- [Platform discovery](https://github.com/tmueter/gitlink/blob/main/skill/gitlink/gitlink.py): `skill/gitlink/gitlink.py`
- [Client credentials](https://github.com/tmueter/gitlink/blob/main/skill/gitlink/gitlink.py): `skill/gitlink/gitlink.py`
- [SSH and host keys](https://github.com/tmueter/gitlink/blob/main/skill/gitlink/gitlink.py): `skill/gitlink/gitlink.py`
- [Private configuration](https://github.com/tmueter/gitlink/blob/main/skill/gitlink/gitlink.py): `skill/gitlink/gitlink.py`
- [MCP registration](https://github.com/tmueter/gitlink/blob/main/skill/gitlink/gitlink.py): `skill/gitlink/gitlink.py`

### Repository operations

- [Repository lifecycle](https://github.com/tmueter/gitlink/blob/main/skill/gitlink/SKILL.md): `skill/gitlink/SKILL.md`
- [Issue dependencies](https://github.com/tmueter/gitlink/blob/main/skill/gitlink/SKILL.md): `skill/gitlink/SKILL.md`
- [Archive and revoke](https://github.com/tmueter/gitlink/blob/main/skill/gitlink/SKILL.md): `skill/gitlink/SKILL.md`

### External systems

- **Forgejo / Gitea**
- **Self-hosted GitLab**
- **Platform MCP server**
- **Local Git workspace**
- **Wayfinder plugin**

### Other components

- **User**

## Connections

- User → Claude instructions: invokes (evidence: `README.md`)
- Claude instructions → Deterministic CLI: runs deterministic steps (evidence: `README.md`)
- Claude instructions → Rare cases: consults exceptions (evidence: `README.md`)
- Deterministic CLI → Platform discovery: detects platform (evidence: `skill/gitlink/gitlink.py`)
- Deterministic CLI → Client credentials: configures clients (evidence: `README.md`)
- Deterministic CLI → SSH and host keys: pins keys (evidence: `README.md`)
- Deterministic CLI → Private configuration: stores secrets (evidence: `skill/gitlink/gitlink.py`)
- Deterministic CLI → MCP registration: registers and tests (evidence: `README.md`)
- Platform discovery → Forgejo / Gitea: detects or administers (evidence: `skill/gitlink/gitlink.py`)
- Platform discovery → Self-hosted GitLab: detects platform (evidence: `skill/gitlink/gitlink.py`)
- MCP registration → Platform MCP server: registers server (evidence: `README.md`)
- Claude instructions → Repository lifecycle: guides commands (evidence: `README.md`)
- Claude instructions → Issue dependencies: guides commands (evidence: `README.md`)
- Claude instructions → Archive and revoke: guides commands (evidence: `README.md`)
- Repository lifecycle → Forgejo / Gitea: creates and connects (evidence: `README.md`)
- Repository lifecycle → Self-hosted GitLab: connects by SSH (evidence: `README.md`)
- Repository lifecycle → Local Git workspace: connects working directory (evidence: `README.md`)
- Issue dependencies → Forgejo / Gitea: manages dependencies (evidence: `README.md`)
- Archive and revoke → Forgejo / Gitea: archives or deletes (evidence: `README.md`)
- Archive and revoke → Private configuration: revokes local client (evidence: `README.md`)
- Claude instructions → Wayfinder plugin: offers installation (evidence: `README.md`)
