safe-apply
Sort a change proposal into safe mechanical items and items needing human judgment. Do NOT use to apply the changes.
SKILL.mdskills/atoms/safe-apply/SKILL.md
GitHubsafe-apply
Cross-cutting approval-workflow atom: takes a change proposal and categorization rules, returns two lists — safe changes (mechanical, auto-appliable) and risky changes (judgment, human-review-required). Reduces duplication across feed-curator, skill-repair, and standards-updater.
Input
{
"change_proposal": [
{"action": "remove", "target": "dead-feed-url", "reason": "HTTP 404", "evidence": {"http_code": 404}},
{"action": "add", "target": "new-feed-url", "reason": "discovered via autodiscovery"},
{"action": "update_label", "target": "existing-feed", "old_value": "secondary", "new_value": "primary"}
],
"safe_rules": {
"remove": {"if_evidence_http_code": [404, 410]},
"add": {"if_source": "verified_discovery"},
"update_label": "never_auto_apply"
}
}
Output
{
"tool": "safe-apply",
"safe_changes": [
{"action": "remove", "target": "dead-feed-url", "reason": "confirmed 404", "rule_matched": "remove.if_evidence_http_code"}
],
"risky_changes": [
{"action": "add", "target": "new-feed-url", "reason": "needs human verification", "why_risky": "source not in verified_discovery"},
{"action": "update_label", "target": "existing-feed", "why_risky": "label changes are never auto-applied"}
],
"summary": "1 safe (auto-apply), 2 risky (human review)",
"human_review_required": true
}
Do NOT use this atom for
- Actually applying changes (this atom classifies, the orchestrator applies)
- Content generation or editing
- Security scanning (use tools/security_scan.py)
Pipeline note
Follows references/method.md at the Validation step (change categorization). Output conforms to references/metadata-schema.md. human_review_required: true — even mechanical changes should be reviewed in aggregate before commit.