An automated curation system for maintaining a comprehensive directory of Ghost CMS themes and development resources.
Ghostbuster is a GitHub-native automation pipeline that transforms the manual process of maintaining a Ghost CMS themes directory into a robust, scalable system. The platform automatically discovers, classifies, and curates Ghost themes while preserving human editorial control through configurable override mechanisms.
Live Directory: https://ghostbuster.pro/
The platform operates as a modular pipeline with the following core components:
Searches GitHub repositories using configurable queries to identify Ghost themes and related resources. The system analyzes repository metadata, file structures, and documentation to determine relevance and quality.
Employs heuristic algorithms to score and categorize repositories based on multiple factors including star count, maintenance activity, documentation quality, and theme structure compliance.
Implements comprehensive validation, duplicate detection, and consistency checks to ensure directory accuracy and reliability.
Utilizes efficient API usage patterns with ETag support, TTL management, and rate limiting compliance to optimize GitHub API interactions.
Generates responsive HTML directory pages from configurable templates, supporting multiple output formats and customizable presentation layers.
Automatically identifies and tracks themes that haven't been updated recently, maintaining them in a separate database and dedicated HTML page. This provides visibility into the complete ecosystem while distinguishing actively maintained projects from stale ones.
Ghostbuster includes an intelligent staleness tracking system that monitors theme maintenance activity and separates stale items from actively maintained ones.
Key Capabilities:
- Automatic Detection: Identifies themes that haven't been updated within a configurable threshold (default: 12 months)
- Persistent Storage: Maintains historical data about stale items in a SQLite database
- Reactivation Support: Automatically moves previously stale items back to the active list when they receive updates
- Separate Directory: Generates a dedicated "Not Updated Recently" page at
stale.html - Statistics & Reporting: Provides comprehensive statistics about stale items by category and average staleness duration
How It Works:
The system compares each theme's last update date (pushedAt) against the configured staleness threshold. Items exceeding the threshold are:
- Classified as stale and stored in
data/stale-items.db - Removed from the main directory (
index.html) - Displayed on the stale items page (
stale.html) with prominent warnings - Monitored for reactivation on subsequent updates
Configuration:
Staleness tracking is configured in config.yml:
staleness:
enabled: true # Enable/disable staleness tracking
thresholdMonths: 12 # Months without updates to be considered stale
databasePath: 'data/stale-items.db' # SQLite database location
renderTemplate: 'templates/stale.template.html' # Template for stale items page
renderOutput: 'stale.html' # Output HTML fileConfiguration Options:
enabled(boolean): Enable or disable the staleness tracking feature entirelythresholdMonths(integer): Number of months without updates before an item is considered stale. Must be a positive integer. Default: 12databasePath(string): Path to the SQLite database file for storing stale items. Default:data/stale-items.dbrenderTemplate(string): Path to the HTML template for rendering the stale items page. Default:templates/stale.template.htmlrenderOutput(string): Path where the generated stale items HTML page will be saved. Default:stale.html
Examples:
Set a stricter staleness threshold (6 months):
staleness:
enabled: true
thresholdMonths: 6
databasePath: 'data/stale-items.db'
renderTemplate: 'templates/stale.template.html'
renderOutput: 'stale.html'Set a more lenient threshold (24 months):
staleness:
enabled: true
thresholdMonths: 24
databasePath: 'data/stale-items.db'
renderTemplate: 'templates/stale.template.html'
renderOutput: 'stale.html'Disable staleness tracking:
staleness:
enabled: false
thresholdMonths: 12
databasePath: 'data/stale-items.db'
renderTemplate: 'templates/stale.template.html'
renderOutput: 'stale.html'Viewing Stale Items:
The stale items page is accessible at stale.html and includes:
- Warning message explaining that items haven't been updated recently
- All stale items organized by category (same structure as main directory)
- Last update date prominently displayed for each item
- Statistics showing total stale items, percentage of total, and average staleness
- Links to navigate between the main directory and stale items page
Database Structure:
The SQLite database (data/stale-items.db) stores complete metadata for each stale item:
- Repository information (name, URL, description)
- Classification data (category, confidence, score)
- GitHub metrics (stars, topics, license)
- Staleness metadata (detection timestamp, months stale)
The database is automatically backed up before modifications and includes integrity validation to ensure data consistency.
Ghostbuster is actively maintained and continuously improved. The system processes hundreds of Ghost theme repositories and maintains an up-to-date directory accessible to the Ghost CMS community.
This project is licensed under the MIT License - see the LICENSE file for details.
For questions, issues, or contributions:
- Create an issue on GitHub
- Email: runawaydevil@pm.me
- Security issues: See Security Policy ...