dchuk/source_monitor · Archived

sm-configure

Use when configuring SourceMonitor engine settings via the DSL, including queue settings, HTTP client, fetching, health, scrapers, retention, scraping controls, events, model extensions, realtime, and authentication.

First seen Jun 12, 2026

Installation

$ npx skills add dchuk/source_monitor --skill sm-configure

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from dchuk/source_monitor.

npx skills add dchuk/source_monitor

Browse all from dchuk/source_monitor

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 3
Default branch main
Open issues 0
Status Archived

Skill metadata

Parsed from SKILL.md frontmatter.

Allowed toolsRead, Write, Edit, Bash, Glob, Grep

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 6,632 B
  • docs SUMMARY.md 236 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 2 installs

SKILL.md

sm-configure: Engine Configuration DSL

Comprehensive reference for configuring SourceMonitor via SourceMonitor.configure.

When to Use

  • Adding or modifying settings in config/initializers/source_monitor.rb
  • Understanding what configuration options are available
  • Debugging configuration-related issues
  • Setting up environment-specific overrides

Configuration Entry Point

All configuration lives inside the configure block in the host app's initializer:

SourceMonitor.configure do |config|
  # settings here
end

After the block executes, ModelExtensions.reload! runs automatically to apply any model changes. Restart web and worker processes after changes.

Configuration Sections

The config object (SourceMonitor::Configuration) has 13 sub-sections plus top-level queue/job settings:

Section Accessor Class
Top-level config.* Configuration
HTTP config.http HTTPSettings
Fetching config.fetching FetchingSettings
Health config.health HealthSettings
Scrapers config.scrapers ScraperRegistry
Retention config.retention RetentionSettings
Scraping config.scraping ScrapingSettings
Events config.events Events
Models config.models Models
Realtime config.realtime RealtimeSettings
Authentication config.authentication AuthenticationSettings
Images config.images ImagesSettings
Favicons config.favicons FaviconsSettings

See reference/configuration-reference.md for every setting with types, defaults, and examples.

Quick Examples

Queue Configuration

config.queue_namespace = "source_monitor"
config.fetch_queue_name = "source_monitor_fetch"
config.fetch_queue_concurrency = 4

HTTP Client

config.http.timeout = 30
config.http.proxy = ENV["HTTP_PROXY"]
config.http.retry_max = 3

Authentication (Devise)

SourceMonitor is fail-closed by default: with no authenticatewith/authorizewith handler configured, every engine route returns 403 Forbidden. Configure a handler to protect the dashboard (the handler decides access and bypasses the fail-closed guard):

config.authentication.authenticate_with :authenticate_user!
config.authentication.authorize_with ->(c) { c.current_user&.admin? }

For local demos/sandboxes only, opt out of the fail-closed guard (non-production):

config.authentication.open_access = true # default: false -- demo/non-production only

Image Downloads (Active Storage)

config.images.download_to_active_storage = true
config.images.max_download_size = 5 * 1024 * 1024  # 5 MB
config.images.download_timeout = 15
config.images.allowed_content_types = %w[image/jpeg image/png image/webp]

Events

config.events.after_item_created { |e| Notifier.new_item(e.item) }
config.events.register_item_processor ->(ctx) { Indexer.index(ctx.item) }

Model Extensions

config.models.table_name_prefix = "sm_"
config.models.source.include_concern "MyApp::SourceExtension"
config.models.item.validate :custom_check

Favicons (Active Storage)

config.favicons.enabled = true
config.favicons.fetch_timeout = 10
config.favicons.max_download_size = 512 * 1024  # 512 KB
config.favicons.retry_cooldown_days = 14

Realtime

config.realtime.adapter = :redis
config.realtime.redis_url = ENV["REDIS_URL"]

Helper APIs

SourceMonitor.config                         # Current configuration
SourceMonitor.configure { |c| ... }          # Set configuration
SourceMonitor.reset_configuration!           # Revert to defaults (for tests)
SourceMonitor.events                         # Shortcut to config.events
SourceMonitor.queue_name(:fetch)             # Resolved queue name
SourceMonitor.queue_concurrency(:scrape)     # Resolved concurrency
SourceMonitor.mission_control_dashboard_path # Resolved MC path or nil

Key Source Files

File Purpose
lib/source_monitor/configuration.rb Main Configuration class
lib/sourcemonitor/configuration/httpsettings.rb HTTP client settings
lib/sourcemonitor/configuration/fetchingsettings.rb Adaptive scheduling
lib/sourcemonitor/configuration/healthsettings.rb Health monitoring
lib/sourcemonitor/configuration/scraperregistry.rb Scraper adapter registry
lib/sourcemonitor/configuration/retentionsettings.rb Item retention
lib/sourcemonitor/configuration/scrapingsettings.rb Scraping controls
lib/source_monitor/configuration/events.rb Event callbacks
lib/source_monitor/configuration/models.rb Model extensions config
lib/sourcemonitor/configuration/modeldefinition.rb Per-model definition
lib/sourcemonitor/configuration/realtimesettings.rb Action Cable settings
lib/sourcemonitor/configuration/authenticationsettings.rb Auth settings
lib/sourcemonitor/configuration/imagessettings.rb Image download settings
lib/sourcemonitor/configuration/validationdefinition.rb Validation wrapper

References

  • reference/configuration-reference.md -- Complete settings reference
  • docs/configuration.md -- Official configuration documentation
  • lib/generators/sourcemonitor/install/templates/sourcemonitor.rb.tt -- Initializer template

Testing

Reset configuration between tests:

setup do
  SourceMonitor.reset_configuration!
end

Test custom configuration:

test "custom queue name" do
  SourceMonitor.configure do |config|
    config.fetch_queue_name = "custom_fetch"
  end
  assert_equal "custom_fetch", SourceMonitor.queue_name(:fetch)
end

Checklist

  • Initializer exists at config/initializers/source_monitor.rb
  • Queue names match config/queue.yml (or config/solid_queue.yml) entries
  • Dispatcher config includes recurring_schedule: config/recurring.yml (handled by install generator)
  • Authentication decision made: configure authenticatewith/authorizewith (fail-closed default) OR set config.authentication.open_access = true for demos only
  • HTTP timeouts appropriate for target feeds
  • Retention policy set for production
  • Workers restarted after configuration changes