armor-test
Test and preview monitoring configurations before enabling. Handles "dry-run threshold", "preview alerts", "test this rule", "what would fire".
What this skill does
# Test Before Deploying
Preview what alerts would fire with proposed configurations. Avoid alert fatigue by testing thresholds before enabling.
## Prerequisites
- AnomalyArmor API key configured (`~/.armor/config.yaml` or `ARMOR_API_KEY` env var)
- Python SDK installed (`pip install anomalyarmor`)
## When to Use
- "Test this freshness threshold before I enable it"
- "What alerts would fire if I set the threshold to 4 hours?"
- "Dry-run the schema drift check"
- "Preview the impact of this rule"
- "Will this configuration cause too many alerts?"
## Steps
### Dry-Run Freshness Threshold
1. Specify the table and proposed threshold
2. Call `client.freshness.dry_run()` with proposed config
3. Review predicted alerts over historical data
4. Adjust threshold if too many/few alerts predicted
5. When satisfied, create the actual schedule
### Preview Alert Rules
1. Specify the event types to filter
2. Call `client.alerts.preview()` with event types
3. See what historical events would have triggered alerts
4. Evaluate alert frequency
5. Adjust configuration as needed
## Example Usage
### Dry-Run Freshness Threshold
```python
from anomalyarmor import Client
client = Client()
# Test what would happen with a 4-hour freshness threshold
# Uses historical data to predict alert frequency
result = client.freshness.dry_run(
asset_id="asset-uuid",
table_path="public.orders",
expected_interval_hours=4,
lookback_days=7
)
print(f"Configuration: Alert if stale for {result.threshold_hours} hours")
print(f"Historical period: {result.lookback_days} days")
print()
print(f"Total checks analyzed: {result.total_checks}")
print(f"Would alert count: {result.would_alert_count}")
print(f"Alert rate: {result.alert_rate_percent:.1f}%")
print()
if result.would_alert_now:
print(f"Current status: Would alert NOW (age: {result.current_age_hours:.1f}h)")
else:
print(f"Current status: OK (age: {result.current_age_hours:.1f}h)")
print(f"\nRecommendation: {result.recommendation}")
```
### Dry-Run Schema Drift Settings
```python
from anomalyarmor import Client
client = Client()
# Preview schema drift detection with proposed settings
result = client.schema.dry_run(
asset_id="asset-uuid",
lookback_days=30
)
print(f"Schema Drift Dry-Run Results:")
print(f" Total changes detected: {result.total_changes}")
print(f" Changes by type: {result.changes_summary}")
print()
if result.sample_changes:
print("Sample changes:")
for change in result.sample_changes[:5]:
print(f" - {change.change_type}: {change.table_name}")
print(f"\nRecommendation: {result.recommendation}")
```
### Preview Alert Rule Matches
```python
from anomalyarmor import Client
client = Client()
# Preview what alerts would match a rule configuration
result = client.alerts.preview(
event_types=["freshness_stale", "schema_drift"],
severities=["critical", "warning"],
lookback_days=7
)
print(f"Lookback: {result.lookback_hours} hours")
print(f"Alerts would match: {result.alerts_would_match}")
print(f"By severity: {result.alerts_by_severity}")
print(f"By type: {result.alerts_by_type}")
print()
if result.sample_alerts:
print("Sample alerts:")
for alert in result.sample_alerts[:5]:
print(f" - {alert.triggered_at}: {alert.message}")
```
### Dry-Run Metrics Threshold
```python
from anomalyarmor import Client
client = Client()
# Preview what anomalies would be detected with a metric
result = client.metrics.dry_run(
asset_id="asset-uuid",
table_path="catalog.schema.orders",
metric_type="null_percent",
column_name="email",
sensitivity=1.5,
lookback_days=14,
)
print(f"Metric Dry-Run: {result.metric_type}")
print(f"Total snapshots analyzed: {result.total_snapshots}")
print(f"Would alert count: {result.would_alert_count}")
print(f"Alert rate: {result.alert_rate_percent:.1f}%")
print()
print(f"Recommendation: {result.recommendation}")
```
## Interpreting Results
| Metric | Good Range | Action if Outside |
|--------|-----------|-------------------|
| Alert rate | 5-25% | Adjust threshold up/down |
| Alerts per day | 0.1 - 1.0 | Adjust threshold up/down |
| Zero alerts | - | Tighten threshold |
## Follow-up Actions
- If results look good: Use `/armor:monitor` to enable the configuration
- If too many alerts: Increase threshold or add conditions
- If no alerts: Decrease threshold to catch real issues
- Compare different configurations to find optimal settings
Related in Code Review
gstack
IncludedFast headless browser for QA testing and site dogfooding. Navigate pages, interact with elements, verify state, diff before/after, take annotated screenshots, test responsive layouts, forms, uploads, dialogs, and capture bug evidence. Use when asked to open or test a site, verify a deployment, dogfood a user flow, or file a bug with screenshots. (gstack)
startup-due-diligence
IncludedLegal due diligence review for seed-stage and Series A startups (US, Delaware C-Corp focus). Supports both investor and founder perspectives. Capabilities include: (1) Interactive document review and issue spotting; (2) Document request list generation; (3) Cap table and SAFE/convertible note analysis; (4) Red flag identification with severity ratings; (5) Diligence report generation. TRIGGERS: due diligence, DD, startup investment, cap table review, Series A, seed round, investor diligence, legal review startup, SAFE analysis, convertible note, 409A, founder vesting.
interview-master
IncludedThis skill should be used when the user asks to "generate interview questions", "prepare for interview", "optimize resume", "conduct mock interview", "analyze git commits for resume", "generate resume from code", "review my resume", or mentions interview preparation, career assistance, or extracting project experience from git history. Provides comprehensive interview and career development guidance for both job seekers and interviewers.
fix-issue
IncludedFixes GitHub issues using parallel analysis agents for root cause investigation, code exploration, and regression detection. Reads issue context from gh CLI, searches codebase and memory for related patterns, generates a fix with tests, and links the resolution back to the issue via PR. Includes prevention analysis to avoid recurrence. Use when debugging errors, resolving regressions, fixing bugs, or triaging issues.
sf-apex
IncludedGenerates and reviews Salesforce Apex code with 150-point scoring. TRIGGER when: user writes, reviews, or fixes Apex classes, triggers, test classes, batch/queueable/schedulable jobs, or touches .cls/.trigger files. DO NOT TRIGGER when: LWC JavaScript (use sf-lwc), Flow XML (use sf-flow), SOQL-only queries (use sf-soql), or non-Salesforce code.
swift-development
IncludedComprehensive Swift development for building, testing, and deploying iOS/macOS applications. Use when Claude needs to: (1) Build Swift packages or Xcode projects from command line, (2) Run tests with XCTest or Swift Testing framework, (3) Manage iOS simulators with simctl, (4) Handle code signing, provisioning profiles, and app distribution, (5) Format or lint Swift code with SwiftFormat/SwiftLint, (6) Work with Swift Package Manager (SPM), (7) Implement Swift 6 concurrency patterns (async/await, actors, Sendable), (8) Create SwiftUI views with MVVM architecture, (9) Set up Core Data or SwiftData persistence, or any other Swift/iOS/macOS development tasks.