Skip to content

GitHub Topics for Team Identification

Shoehorn can automatically identify team ownership of repositories using GitHub topics. This provides a zero-configuration way to establish ownership without requiring manual manifest files.

  1. Add an ownership topic to your GitHub repository
  2. Shoehorn’s crawler discovers the topic during repository scanning
  3. The repository is automatically assigned to the matching team

Shoehorn supports both owner and team topic prefixes:

PatternExampleBehavior
owner-<team-slug>owner-platform-teamExplicit ownership topic
owner:<team-slug>owner:platform-teamAlso supported
team-<team-slug>team-beta-teamTeam ownership topic
team:<team-slug>team:beta-teamAlso supported

Recommended for new repositories:

  • Use owner-<team-slug> when the topic is your primary ownership declaration.
  • Use team-<team-slug> when you want a lighter convention that still maps cleanly.
  1. Go to your repository on GitHub
  2. Click the gear icon next to About
  3. In the Topics field, add your team topic
  4. Click Save changes

Or via the GitHub API:

Terminal window
curl -X PUT https://api.github.com/repos/<owner>/<repo>/topics \
-H "Authorization: token <github-token>" \
-H "Accept: application/vnd.github+json" \
-d '{"names": ["owner-platform-team", "golang", "microservice"]}'

The scorecard rule team-topic checks if a repository has an ownership topic assigned. This contributes to the ownership category score.

GitHub topics have lower priority than direct ownership annotations:

  1. Manifest owner field (highest)
  2. Kubernetes annotation shoehorn.dev/owner
  3. GitHub topic owner-* / owner:* / team-* / team:* (lowest)

If a manifest explicitly sets an owner, the GitHub topic is ignored for ownership purposes but still tracked as metadata.

A repository can have multiple topics. Only topics matching the ownership patterns above are used for ownership. All other topics are treated as regular tags and imported into the entity’s tag list.