← Back to list

newsletter-events-list-sources
by aniketpanjwani
⭐ 39🍴 12📅 Jan 19, 2026
SKILL.md
name: newsletter-events-list-sources description: List all configured event sources (Instagram, web aggregators)
<essential_principles>
Configuration Location
All sources are stored in ~/.config/local-media-tools/sources.yaml.
Source Types
| Type | Filter Keyword | Description |
|---|---|---|
instagram, ig | @handle accounts | |
| Web | web | Event aggregator websites |
Note: Facebook events are not configured sources. Pass event URLs directly to /research.
Output Format
Sources are displayed in grouped tables with relevant metadata for each type. </essential_principles>
Options:
allor blank - Show all configured sourcesinstagram- Only Instagram accountsweb- Only web aggregators
Provide filter (or press Enter for all):
Check if user provided a filter keyword:
filter_input = user_input.strip().lower()
# Normalize filter aliases
filter_map = {
"": "all",
"all": "all",
"instagram": "instagram",
"ig": "instagram",
"web": "web",
}
selected_filter = filter_map.get(filter_input, "all")
Step 2: Load Config
from pathlib import Path
import yaml
config_path = Path.home() / ".config" / "local-media-tools" / "sources.yaml"
if not config_path.exists():
print("ERROR: sources.yaml not found. Run /newsletter-events:setup first.")
# STOP HERE
with open(config_path) as f:
config = yaml.safe_load(f)
Step 3: Extract Sources
sources = config.get("sources", {})
instagram_accounts = sources.get("instagram", {}).get("accounts", [])
web_sources = sources.get("web_aggregators", {}).get("sources", [])
Step 4: Check for Empty State
total_sources = len(instagram_accounts) + len(web_sources)
if total_sources == 0:
print("No sources configured.")
print("")
print("To add sources: /newsletter-events:add-source @handle")
# STOP HERE
Step 5: Format and Display Tables
Display each category with appropriate columns:
Instagram Accounts:
| Handle | Name | Type | Location |
|---|---|---|---|
| @localvenue | Local Venue | music_venue | Kingston, NY |
| @themusicbar | The Music Bar | bar | - |
Web Aggregators:
| URL | Name | Type | Max Pages |
|---|---|---|---|
| https://hvmag.com/events | HV Magazine | listing | 50 |
Step 6: Show Summary
Total: N sources configured
- Instagram: X accounts
- Web: Y aggregators
To add sources: /newsletter-events:add-source @handle
To remove sources: /newsletter-events:remove-source @handle
Note: For Facebook events, pass URLs directly to /research
Handling Filtered Views
If a filter was applied but that category is empty:
No instagram sources found.
You have:
- 1 web aggregator
To add Instagram accounts: /newsletter-events:add-source @handle
<success_criteria>
- Config loaded successfully
- Filter applied correctly (if provided)
- Output formatted as readable tables
- Empty states handled with helpful messages
- Summary shows totals
- Next actions suggested </success_criteria>
Score
Total Score
55/100
Based on repository quality metrics
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
✓フォーク
10回以上フォークされている
+5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
Reviews
💬
Reviews coming soon