plugins/forensics/skills/evidence-preservation/SKILL.md
Chain of custody and evidence preservation procedures covering log collection, hash verification, custody documentation, and evidence packaging per RFC 3227
npx skillsauth add jmagly/aiwg evidence-preservationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Implements evidence preservation procedures aligned with RFC 3227 (Guidelines for Evidence Collection and Archiving) and NIST SP 800-86. Guides examiners through volatile-first collection ordering, cryptographic verification of all evidence items, chain of custody documentation, and evidence packaging for storage or legal handoff.
Alternate expressions and non-obvious activations (primary phrases are matched automatically from the skill description):
Evidence that cannot be authenticated is evidence that cannot be used. Without documented chain of custody, opposing counsel can challenge whether evidence was tampered with between collection and presentation. This skill enforces RFC 3227 collection ordering, generates cryptographic hashes at collection time, and produces legally defensible custody documentation.
When triggered, this skill:
Initialize case record:
<case-id>-<YYYYMMDD>-<random4>.aiwg/forensics/evidence/<package-id>/custody.logApply RFC 3227 collection ordering (most volatile first):
Volatile data collection:
date -u and compare against NTP sourceps auxwwwss -anp or netstat -anparp -n or ip neigh showip route showip addr showmountlsof -n 2>/dev/nullDisk image acquisition guidance:
dc3dd, ddrescue) before imagingdc3dd if=/dev/sda hash=sha256 hof=evidence.dd log=acquisition.log
Log file collection:
cp -p or rsync -asha256sum /var/log/auth.log > /var/log/auth.log.sha256
Cloud evidence collection (when cloud resources are in scope):
cloud/ subdirectory. Custody-log each item.Container evidence collection (when containers are in scope):
docker logs <container_id> > /evidence/containers/<container_id>-logs.txt
docker export <container_id> > /evidence/containers/<container_id>-filesystem.tar
docker inspect <container_id> > /evidence/containers/<container_id>-inspect.json
containers/ subdirectory. Custody-log each item.Hash verification procedure:
find .aiwg/forensics/evidence/<package-id>/ -type f -not -name '*.sha256' | \
xargs sha256sum > .aiwg/forensics/evidence/<package-id>/manifest.sha256
Chain of custody documentation:
Evidence packaging:
tar czf - .aiwg/forensics/evidence/<package-id>/ | \
gpg --symmetric --cipher-algo AES256 -o <package-id>.tar.gz.gpg
.aiwg/forensics/evidence/<package-id>/custody.log.aiwg/forensics/evidence/<package-id>/manifest.sha256.aiwg/forensics/evidence/<package-id>/collection-notes.md.aiwg/forensics/reports/<package-id>-custody-report.mdpreserve evidence
Initializes case record and guides through collection.
chain of custody transfer --to "Jane Smith, Legal" --method "encrypted email"
package evidence <package-id>
.aiwg/forensics/evidence/<package-id>/custody.log.aiwg/forensics/evidence/<package-id>/manifest.sha256.aiwg/forensics/evidence/<package-id>/collection-notes.md.aiwg/forensics/reports/<package-id>-custody-report.mdevidence_preservation:
hash_algorithm: sha256
collection_order: rfc3227
encrypt_packages: true
encryption_cipher: AES256
timestamp_format: ISO8601
volatile_collection_window_seconds: 60
require_write_blocker_confirmation: true
data-ai
Report which research-corpus radar sidecars are overdue for refresh. Computes staleness (days since last refresh vs the cadence window) for every radar, sorted most-overdue-first. Runs via `aiwg corpus radar-status`.
data-ai
Aggregate research-corpus radar sidecars into a corpus or per-cluster freshness report — totals, overdue count, per-cluster / per-GRADE / per-trajectory breakdowns, an overdue table, and per-radar rationale snippets. Runs via `aiwg corpus radar-report`.
testing
Scaffold radar/freshness sidecars for research-corpus REFs. Pulls title/authors from the citation sidecar and GRADE from the analysis doc, defaults the refresh cadence from GRADE and the cluster from a corpus-local map, and stamps documentation/radar/REF-XXX-radar.md. Runs via `aiwg corpus radar-init`.
data-ai
Compute an entity's publication trajectory — per-year paper counts, topic drift, hot-streak detection (≥3 consecutive A-grade years), and career phase. Runs via `aiwg corpus profile-temporal`.