Repository Metadata Generator
Generate engaging GitHub repository descriptions and topics by analyzing project intent, purpose, and features. Create metadata that improves discoverability and accurately represents what a project does.
Overview
This skill analyzes a project's codebase, documentation, and configuration to understand its purpose, then generates:
- An optimized repository description (default, no configuration needed)
- Relevant topics/labels for discoverability
- Optionally applies changes via
ghCLI (when user confirms)
GitHub Metadata Constraints
All generated metadata must meet GitHub's requirements:
Description:
- Maximum: 350 characters
- Should be concise, engaging, and searchable
- No markdown or special formatting
- Include key functionality and value proposition
Topics:
- Maximum: 20 topics per repository
- Each topic: lowercase, hyphenated, no spaces
- Maximum 50 characters per topic
- Should include: language, framework, domain, features
Workflow
Step 1: Check for Configuration
Look for optional settings file at .claude/github-social.local.md.
If file exists, check for metadata preferences:
description_style: concise | detailed | technicaltopic_count: Number of topics to suggest (default: 10)include_language: Whether to include primary language as topicinclude_framework: Whether to include frameworks as topics
If no config exists, proceed with defaults.
Step 2: Analyze Project
Gather project context by reading available files:
Primary sources (check in order):
README.md- Project description, features, purposepackage.json/Cargo.toml/pyproject.toml/go.mod- Name, description, keywordsCLAUDE.md- Project context and guidelines- Source code structure - Primary language, frameworks
Extract these elements:
- Project name: Official name
- Purpose: What problem does it solve? (1-2 sentences)
- Key features: Top 3-5 capabilities
- Technology: Primary language and frameworks
- Domain: What field/industry? (DevTools, AI, Web, etc.)
- Target audience: Who uses this?
- Unique value: What makes it different?
Step 3: Generate Description
Craft an engaging description that:
- Leads with value - What does it do for the user?
- Includes key features - Top 2-3 capabilities
- Uses active voice - Direct, engaging language
- Stays within 350 chars - Concise but complete
- Avoids jargon - Accessible to broader audience
Description patterns by project type:
Library/Package:
[Action verb] [what it does] for [language/platform]. Features [key capability 1], [key capability 2], and [key capability 3].
CLI Tool:
[Action verb] [what problem it solves] from the command line. [Key benefit or feature].
Framework:
[Adjective] [type] framework for building [what]. [Key differentiator].
Application:
[What it is] that [what it does]. [Key benefit for users].
Step 4: Generate Topics
Select relevant topics from these categories:
Language/Runtime (1-2 topics):
- Primary language:
python,typescript,rust,go - Runtime:
nodejs,deno,bun
Framework/Library (1-3 topics):
- Web:
react,vue,nextjs,fastapi - Data:
pandas,numpy,pytorch - CLI:
cli,command-line,terminal
Domain (2-4 topics):
devtools,developer-tools,automationmachine-learning,ai,data-scienceweb-development,frontend,backenddatabase,api,infrastructure
Features (2-4 topics):
open-source,cross-platformtesting,documentation,monitoring- Feature-specific:
image-generation,code-review
Quality/Style (1-2 topics):
lightweight,fast,minimalproduction-ready,enterprise
Topic formatting rules:
- All lowercase
- Hyphens for multi-word:
machine-learningnotmachine_learning - No special characters
- Max 50 chars per topic
Step 5: Output or Apply
Default (output only):
Display the generated metadata:
## Generated Repository Metadata
### Description (X characters)
[Generated description]
### Topics (X topics)
[topic-1] [topic-2] [topic-3] ...
### To Apply Manually
1. Go to repository Settings → General
2. Update "Description" field
3. Add topics under "Topics"
### To Apply via CLI
gh repo edit --description "[description]"
gh repo edit --add-topic topic-1 --add-topic topic-2 ...
Apply mode (when user confirms):
If user says "apply", "update", or "yes, update the repo":
# Update description
gh repo edit --description "[generated description]"
# Add topics (one at a time)
gh repo edit --add-topic topic-1
gh repo edit --add-topic topic-2
# ... for each topic
Verify changes:
gh repo view --json description,repositoryTopics
Report success or errors.
Description Writing Guidelines
Do:
- Start with a strong action verb
- Focus on user benefit
- Include searchable keywords naturally
- Be specific about what it does
- Keep it scannable
Don't:
- Start with "A" or "This is"
- Use passive voice
- Include version numbers
- Use excessive punctuation
- Make unsubstantiated claims ("best", "fastest")
Examples by quality:
Poor:
This is a tool for working with images. It can do many things.
Good:
Generate social preview images for GitHub repos by analyzing project intent. Supports DALL-E, Stable Diffusion, and manual prompts.
Poor:
A Python library.
Good:
Fast, type-safe HTTP client for Python with automatic retries, connection pooling, and OpenAPI integration.
Topic Selection Strategy
For maximum discoverability:
- Include the obvious - Language, primary framework
- Add the domain - What category of tool is this?
- Feature keywords - What can users search for?
- Ecosystem tags - Related tools/standards
- Audience tags - Who is this for?
Example topic sets:
Python CLI tool:
python cli command-line terminal devtools automation pip hacktoberfest
React component library:
react typescript components ui-library frontend web npm design-system
Machine learning project:
python machine-learning deep-learning pytorch neural-network ai data-science
DevOps tool:
devops kubernetes docker infrastructure automation ci-cd cloud-native golang
Error Handling
No README or project files found: Ask user to describe the project, then proceed with that information.
gh CLI not available: Output metadata only with manual instructions.
gh repo edit fails:
- Report the error
- Check if user has repo admin access
- Suggest manual update via GitHub UI
Repository not found: Verify user is in a git repo with GitHub remote.
Examples
Example 1: CLI Tool
Project analysis:
- Name: github-social
- Purpose: Generate social preview images
- Tech: Claude Code plugin
- Features: DALL-E support, multiple styles, zero-config
Generated description:
Generate social preview images for GitHub repositories by analyzing project intent. Supports DALL-E, Stable Diffusion, and manual prompt generation.
(148 characters)
Generated topics:
github claude-code plugin social-preview image-generation dalle openai devtools automation open-source
Example 2: Python Library
Project analysis:
- Name: fasthttp
- Purpose: HTTP client library
- Tech: Python, async
- Features: Fast, typed, retries
Generated description:
Async HTTP client for Python with automatic retries, connection pooling, and full type hints. Built for performance and developer experience.
(142 characters)
Generated topics:
python http-client async asyncio requests api web typed networking pip
Additional Resources
Reference Files
references/description-patterns.md- Detailed description templates by project typereferences/topic-taxonomy.md- Comprehensive topic categories and examples
Converted and distributed by TomeVault — claim your Tome and manage your conversions.