news-intelligence — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited news-intelligence (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Comprehensive situational awareness engine that gathers news across domains, identifies cross-domain connections, assesses impact, and routes actionable intelligence to your other skills.
User Query
│
├─[1] CLASSIFY REQUEST → What type of scan?
│ ├── Morning Brief (all priority domains)
│ ├── Topic Scan (specific subject)
│ ├── Event Analysis (single event, deep)
│ └── Domain Scan (one domain, thorough)
│
├─[2] GENERATE SEARCH PLAN → QueryGenerator
│ └── 4-12 targeted web_search queries
│
├─[3] EXECUTE SEARCHES → web_search + web_fetch
│ └── Collect titles, summaries, sources, URLs
│
├─[4] PROCESS RESULTS
│ ├── DomainClassifier → Tag each item by domain
│ ├── EntityExtractor → Pull currencies, orgs, numbers
│ ├── ImpactAssessor → Rate high/medium/low
│ └── RelationshipMapper → Find cross-domain chains
│
├─[5] ROUTE TO SKILLS → SkillRouter
│ └── Recommend which skills to activate next
│
└─[6] FORMAT OUTPUT → IntelligenceBrief
├── Priority Alerts
├── Domain Sections
├── Cross-Domain Connections
├── Skill Route Suggestions
└── Narrative (Claude-generated synthesis)import sys
sys.path.insert(0, '/path/to/news-intelligence/scripts')
from news_engine import (
QueryGenerator, DomainClassifier, EntityExtractor,
ImpactAssessor, SkillRouter, IntelligenceBrief,
generate_search_plan, get_upcoming_events, DOMAINS
)
from relationship_mapper import RelationshipMapper, build_narrative_promptBased on what the user asked:
| User Says | Scan Mode | Domains |
|---|---|---|
| "Morning brief" / "Catch me up" | morning_brief | forex, gold, ai, geopolitics |
| "Gold news" / "What's affecting XAUUSD" | custom | gold_commodities, forex_macro |
| "AI job market" | custom | ai_tech, freelance_career |
| "How does [X] affect [Y]" | event | auto-detect from X |
| "Full scan" / "Everything" | full_scan | all domains |
| "What happened with [event]" | event | auto-detect |
plan = generate_search_plan(mode="morning_brief")
# plan["queries"] → list of {"query": str, "domain": str}
# plan["upcoming_events"] → scheduled economic events today
# Then execute each query using web_search tool
# Collect results into news_items listCRITICAL — Search Execution Pattern:
For each query in the plan, Claude should:
web_search with the queryweb_fetch to get the full articlenews_item = {
"title": "...",
"source": "Reuters",
"summary": "2-3 sentence summary in your own words",
"url": "https://...",
"domain": "", # Will be classified
"entities": {}, # Will be extracted
"impact_level": "", # Will be assessed
"timestamp": "2025-01-01",
}After collecting all news items:
for item in news_items:
# Classify domain
domains = DomainClassifier.classify(item["summary"], item["title"])
if domains:
item["domain"] = domains[0]["domain"]
item["classified"] = domains
# Extract entities
item["entities"] = EntityExtractor.extract(f"{item['title']} {item['summary']}")
# Assess impact
item["impact_level"] = ImpactAssessor.assess(item["title"], item["summary"])# Cross-domain connections
connections = RelationshipMapper.find_connections(news_items)
shared = RelationshipMapper.find_shared_entities(news_items)
# Skill routing
all_domains = []
for item in news_items:
all_domains.extend(item.get("classified", []))
skill_routes = SkillRouter.route(all_domains)brief = IntelligenceBrief.format_brief(
news_items=news_items,
skill_routes=skill_routes,
brief_type="morning"
)
# Add connections report
connections_report = RelationshipMapper.format_connections_report(connections, shared)After formatting the structured brief, write a 3-4 paragraph narrative that:
Use the build_narrative_prompt() function from relationship_mapper.py as a starting guide, but you should write the narrative directly since YOU have all the context.
| Domain | Key Topics | Linked Skills |
|---|---|---|
| Forex & Macro | Central banks, rates, inflation, employment | currency-strength-meter, divergence-scanner, strategy-builder |
| Gold & Commodities | XAUUSD, oil, metals, safe havens | strategy-builder, order-block-mapper, candlestick-engine, MQL |
| AI & Technology | LLMs, AI tools, chips, startups, hiring | development-agent, codebase-understanding, MCP builder |
| Geopolitics | Conflicts, sanctions, elections, trade wars | currency-strength-meter |
| Egypt Legal | Family law, EGP exchange rate, courts | — |
| Jordan Local | Amman news, JOD, local economy | — |
| Freelance & Career | Upwork, job market, AI demand, remote work | — |
The engine includes awareness of recurring high-impact events:
Call get_upcoming_events() to check if any are scheduled today. Always mention relevant upcoming events in the brief — they affect how to interpret current news.
Full structured brief with priority alerts, domain sections, connections, and skill routes.
Single-topic focused scan. Use IntelligenceBrief.format_quick_scan(topic, findings).
Deep dive into a single event with multi-angle coverage and impact assessment.
Visual graph of cross-domain connections. Use RelationshipMapper.generate_mermaid_graph().
news-intelligence/
├── SKILL.md ← You are here
├── scripts/
│ ├── news_engine.py ← Core engine (queries, classify, assess, route, format)
│ └── relationship_mapper.py ← Cross-domain connections & causal chains
└── references/
└── domain_deep_dives.md ← Extended domain analysis templatesget_upcoming_events() — scheduled events change everything.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.