# jetbrains/go-modern-guidelines architecture

> Architecture diagram of the GitHub repository jetbrains/go-modern-guidelines, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/jetbrains/go-modern-guidelines
- Repository: https://github.com/jetbrains/go-modern-guidelines

## Overview

Modern Go Guidelines is an agent-facing reference product: an agent uses the packaged skill to request concise, Go-version-appropriate guidance or detailed explanations with examples. The CLI resolves a target Go version for listing, then filters embedded guideline data; explanation requests look up selected IDs. The skill and CLI source show the runtime entry points, while README documents the supported agent platforms and installation model. Plugin wiring beyond the listed wrapper script was not sampled, so platform-specific dispatch details are omitted.

Main entry points: [`internal/cli/cli.go`](https://github.com/jetbrains/go-modern-guidelines/blob/main/internal/cli/cli.go) (Command router), [`internal/guidelines/guidelines.go`](https://github.com/jetbrains/go-modern-guidelines/blob/main/internal/guidelines/guidelines.go) (Guideline service), [`internal/goversion/goversion.go`](https://github.com/jetbrains/go-modern-guidelines/blob/main/internal/goversion/goversion.go) (Version resolver), [`plugin/skills/use-modern-go/SKILL.md`](https://github.com/jetbrains/go-modern-guidelines/blob/main/plugin/skills/use-modern-go/SKILL.md) (Agent skill)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_agent["Agent interface"]
  node_skill["Agent skill<br/>[SKILL.md]"]
  node_wrapper["Tool wrapper<br/>[run-tool.sh]"]
end

subgraph group_runtime["CLI runtime"]
  node_entry["CLI entry<br/>[main.go]"]
  node_commands["Command router<br/>[cli.go]"]
  node_version["Version resolver<br/>[goversion.go]"]
end

subgraph group_guidance["Guidance content"]
  node_guidelines["Guideline service<br/>[guidelines.go]"]
  node_schema["Guideline parser<br/>[schema.go]"]
  node_catalog["Guideline catalog<br/>[guidelines.json]"]
end

node_agent(("Coding agent"))
node_project["Go project files"]
node_toolchain["Go toolchain"]
node_result["Guidance output"]

node_agent -->|"invokes"| node_skill
node_skill -->|"uses"| node_wrapper
node_wrapper -->|"runs"| node_entry
node_entry -->|"calls"| node_commands
node_commands -->|"resolves version"| node_version
node_version -->|"reads version"| node_project
node_version -.->|"queries fallback"| node_toolchain
node_commands -->|"requests list or details"| node_guidelines
node_guidelines -->|"parses"| node_schema
node_guidelines -->|"loads embedded data"| node_catalog
node_guidelines -->|"compares versions"| node_version
node_commands -->|"writes output"| node_result

click node_skill "https://github.com/jetbrains/go-modern-guidelines/blob/main/plugin/skills/use-modern-go/SKILL.md"
click node_wrapper "https://github.com/jetbrains/go-modern-guidelines/blob/main/plugin/skills/use-modern-go/scripts/run-tool.sh"
click node_entry "https://github.com/jetbrains/go-modern-guidelines/blob/main/main.go"
click node_commands "https://github.com/jetbrains/go-modern-guidelines/blob/main/internal/cli/cli.go"
click node_version "https://github.com/jetbrains/go-modern-guidelines/blob/main/internal/goversion/goversion.go"
click node_guidelines "https://github.com/jetbrains/go-modern-guidelines/blob/main/internal/guidelines/guidelines.go"
click node_schema "https://github.com/jetbrains/go-modern-guidelines/blob/main/internal/guidelines/schema/schema.go"
click node_catalog "https://github.com/jetbrains/go-modern-guidelines/blob/main/internal/guidelines/guidelines.json"

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_wrapper toneBlue
class node_entry,node_commands,node_version toneAmber
class node_guidelines,node_schema,node_catalog toneMint
class node_agent,node_project,node_toolchain,node_result toneIndigo
```

## Components

### Agent interface

- [Agent skill](https://github.com/jetbrains/go-modern-guidelines/blob/main/plugin/skills/use-modern-go/SKILL.md): `plugin/skills/use-modern-go/SKILL.md`
- [Tool wrapper](https://github.com/jetbrains/go-modern-guidelines/blob/main/plugin/skills/use-modern-go/scripts/run-tool.sh): `plugin/skills/use-modern-go/scripts/run-tool.sh`

### CLI runtime

- [CLI entry](https://github.com/jetbrains/go-modern-guidelines/blob/main/main.go): `main.go`
- [Command router](https://github.com/jetbrains/go-modern-guidelines/blob/main/internal/cli/cli.go): `internal/cli/cli.go`
- [Version resolver](https://github.com/jetbrains/go-modern-guidelines/blob/main/internal/goversion/goversion.go): `internal/goversion/goversion.go`

### Guidance content

- [Guideline service](https://github.com/jetbrains/go-modern-guidelines/blob/main/internal/guidelines/guidelines.go): `internal/guidelines/guidelines.go`
- [Guideline parser](https://github.com/jetbrains/go-modern-guidelines/blob/main/internal/guidelines/schema/schema.go): `internal/guidelines/schema/schema.go`
- [Guideline catalog](https://github.com/jetbrains/go-modern-guidelines/blob/main/internal/guidelines/guidelines.json): `internal/guidelines/guidelines.json`

### Other components

- **Coding agent**
- **Go project files**
- **Go toolchain**
- **Guidance output**

## Connections

- Coding agent → Agent skill: invokes
- Agent skill → Tool wrapper: uses
- Tool wrapper → CLI entry: runs
- CLI entry → Command router: calls
- Command router → Version resolver: resolves version
- Version resolver → Go project files: reads version
- Version resolver → Go toolchain: queries fallback
- Command router → Guideline service: requests list or details
- Guideline service → Guideline parser: parses
- Guideline service → Guideline catalog: loads embedded data
- Guideline service → Version resolver: compares versions
- Command router → Guidance output: writes output
