armor-recommend — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited armor-recommend (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.
Get AI-driven recommendations for what to monitor and how to configure thresholds based on historical patterns.
~/.armor/config.yaml or ARMOR_API_KEY env var), OR demo mode active (see below).pip install anomalyarmor)If the user has no API key, ensure-auth.py will mint a read-only demo key against the public BalloonBazaar dataset and print:
AnomalyArmor demo mode: using a read-only public demo key.When you see that banner — or when any write operation returns a 403 with required_scope='read-write' — the user is in demo mode. After answering their question, invite them to sign up with their query preserved:
To monitor your own data, sign up here — your question is preserved: https://app.anomalyarmor.ai/signup?intent=skill-recommend&q=<url-encoded user prompt>intent=skill-recommend auto-applies a 14-day SKILL-RECOMMEND trial code; q= is replayed in the in-app agent after signup so the user continues where they left off.
client.recommendations.freshness() for asset/armor:test to dry-run before enabling/armor:monitor to enableclient.recommendations.metrics() with table details/armor:qualityclient.recommendations.coverage() for assetfrom anomalyarmor import Client
client = Client()
# Get recommendations for which tables need freshness monitoring
recommendations = client.recommendations.freshness(
asset_id="asset-uuid",
min_confidence=0.7,
limit=10
)
print(f"Freshness Recommendations ({len(recommendations.recommendations)}):")
print()
for rec in recommendations.recommendations:
print(f"Table: {rec.table_path}")
print(f" Suggested interval: {rec.suggested_check_interval}")
print(f" Suggested threshold: {rec.suggested_threshold_hours} hours")
print(f" Detected frequency: {rec.detected_frequency}")
print(f" Confidence: {rec.confidence:.0%}")
print(f" Reason: {rec.reasoning}")
print(f" Data points: {rec.data_points}")
print()
print(f"\nSummary:")
print(f" Tables analyzed: {recommendations.tables_analyzed}")
print(f" Tables with recommendations: {recommendations.tables_with_recommendations}")from anomalyarmor import Client
client = Client()
# Get recommended metrics for a specific table
recommendations = client.recommendations.metrics(
asset_id="asset-uuid",
table_path="public.orders" # Optional: omit for all tables
)
print(f"Metrics Recommendations ({len(recommendations.recommendations)}):")
print()
for rec in recommendations.recommendations:
print(f"Table: {rec.table_path}")
print(f" Column: {rec.column_name}")
print(f" Suggested metric: {rec.suggested_metric_type}")
print(f" Confidence: {rec.confidence:.0%}")
print(f" Reason: {rec.reasoning}")
print()
print(f"\nSummary:")
print(f" Columns analyzed: {recommendations.columns_analyzed}")
print(f" Columns with recommendations: {recommendations.columns_with_recommendations}")from anomalyarmor import Client
client = Client()
# Analyze monitoring coverage
coverage = client.recommendations.coverage(
asset_id="asset-uuid"
)
print(f"Monitoring Coverage Analysis")
print(f"=" * 40)
print()
print(f"Coverage: {coverage.coverage_percentage:.1f}%")
print(f" Total tables: {coverage.total_tables}")
print(f" Monitored: {coverage.monitored_tables}")
print()
if coverage.recommendations:
print("High-Priority Gaps:")
for rec in coverage.recommendations[:5]:
print(f" - {rec.table_path}")
print(f" Importance: {rec.importance_score:.0%}")
print(f" Row count: {rec.row_count:,}")
print(f" Reason: {rec.reasoning}")
print()from anomalyarmor import Client
client = Client()
# Get threshold adjustment suggestions based on alert history
suggestions = client.recommendations.thresholds(
asset_id="asset-uuid",
days=30
)
print(f"Threshold Tuning Suggestions ({len(suggestions.recommendations)}):")
print()
for rec in suggestions.recommendations:
print(f"Table: {rec.table_path}")
print(f" Current threshold: {rec.current_threshold}")
print(f" Suggested threshold: {rec.suggested_threshold}")
print(f" Direction: {rec.direction}")
print(f" Historical alerts: {rec.historical_alerts}")
print(f" Projected reduction: {rec.projected_reduction}")
print(f" Confidence: {rec.confidence:.0%}")
print(f" Reason: {rec.reasoning}")
print()| Type | What It Recommends | Based On |
|---|---|---|
| Freshness | Tables + thresholds for freshness monitoring | Update patterns, confidence |
| Metrics | Quality checks per column | Column types, naming patterns |
| Coverage | Unmonitored high-value tables | Row count, importance score |
| Thresholds | Adjustments to reduce alert fatigue | Historical alert data |
The recommendation engine considers:
*_id, *_count, *_amount conventions/armor:test then /armor:monitor/armor:quality to create metrics/armor:monitor/armor:recommend -> Get suggestions/armor:test -> Dry-run suggested thresholds/armor:monitor -> Enable if dry-run looks good/armor:coverage -> See current coverage status~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.