skills/detecting-drift/SKILL.md
Show what changed since last validation for a specific artifact. Computes confidence without writing to frontmatter.
npx skillsauth add 0xHoneyJar/construct-beehive detecting-driftInstall 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.
Show what changed since the last validation of a specific artifact. Queries git history and feedback events to produce a drift report with a computed confidence score. Read-only — does NOT modify any files.
Observe, don't mutate. This skill computes confidence and reports drift but never writes to frontmatter. Use /refresh to update confidence inputs.
/drift {artifact-path} # Check specific file
/drift grimoires/observer/canvas/ # Check directory (all files within)
Examples:
/drift grimoires/observer/canvas/xabbu-canvas.md
/drift grimoires/observer/canvas/
/drift grimoires/artisan/taste.md
/stale (which lists all; /drift gives detail on one)Parse YAML frontmatter for confidence metadata:
- last_validated_commit (SHA)
- last_validated_at (timestamp)
- validation_count
- related_paths
IF confidence block is MISSING:
Classify as "unknown"
Output: "No confidence metadata — run /refresh {path} to initialize"
Exit
IF last_validated_commit is missing:
Warn: "No baseline commit — treating as never validated"
Use 30-day window for git queries
IF a directory path was provided, iterate over all .md files within and produce a report for each.
For each path in related_paths:
git rev-list --count {last_validated_commit}..HEAD -- {path}
git log --oneline {last_validated_commit}..HEAD -- {path}
Collect:
- commit_count per related path
- commit summaries (one-line)
- total commits_since across all related_paths
IF last_validated_commit not found in history (force-push, rebase):
Fallback: git log --oneline --since="30 days ago" -- {path}
Warn: "Baseline commit not found — using 30-day window"
IF .git unavailable:
Use validation_count only
Mark score as "approx"
Warn: "Git history unavailable — confidence approximate"
Glob: grimoires/shared/feedback/events/*.jsonl
Filter events where:
target.selector matches this artifact path
OR target.selector matches "user:{username}" (for canvases)
Filter by timestamp > last_validated_at
Count:
positive_count (direction = "positive")
negative_count (direction = "negative")
neutral_count (direction = "neutral")
total_events = positive + negative + neutral
Apply decay formula from .loa.config.yaml (same as /stale):
days_since = days between last_validated_commit date and now
time_decay = days_since * decay_rate
code_penalty = commits_since * code_change_penalty
boost = revalidation_boost * (diminishing_factor ^ validation_count)
score = clamp(initial_score - time_decay - code_penalty + boost, floor, 0.95)
Classify: healthy (>=0.70), warning (>=0.50), stale (>=0.30), archive (<0.30)
NOTE: Do NOT write computed score to frontmatter. Output only.
DRIFT REPORT — {artifact}
═════════════════════════
Since last validation (commit {last_validated_commit[:7]}, {last_validated_at}):
Code Changes:
{N} commits touching related files
{for each related_path with changes:}
{path}: {count} commits
- {commit_summary_1}
- {commit_summary_2}
Feedback Events:
{M} events received since last validation
{P} positive / {Q} negative / {R} neutral
Confidence: {score} ({status})
Time decay: -{time_decay:.2f}
Code penalty: -{code_penalty:.2f}
Revalidation: +{boost:.2f}
Suggested actions:
→ /refresh {artifact} (re-validate and update baseline)
→ /observe {user} (if user canvas)
→ /ground {component} (if reality file)
| Error | Resolution | |-------|------------| | Artifact not found | Error with path suggestion | | No confidence metadata | Report as "unknown", suggest /refresh | | Git not available | Use validation_count only, mark "approx" | | Baseline commit not found | Use 30-day window fallback | | No feedback events | Report "0 events" (not an error) | | Config missing | Use defaults |
.loa.config.yaml/stale (broad scan), /refresh (re-validate)data-ai
Cognition orchestrator — analyze canvases, distill fears via /distill subagent, run gap analysis, optional cross-user synthesis.
development
Golden path /speak — generate RLM-isolated follow-ups with chronicle temporal context injection.
testing
# /snapshot — MiDi Experience Record (MER) Capture Capture a point-in-time MER for a wallet. Produces a 4-layer snapshot: data state, visual screenshot, user perception, and decision context. ## Usage ``` /snapshot <wallet-or-alias> /snapshot xabbu --trigger feedback /snapshot xabbu --data-only /snapshot --cohort /snapshot --cohort --diff MER-2026-001 ``` ## Arguments | Argument | Description | Required | |----------|-------------|----------| | `wallet-or-alias` | Wallet address or alias fr
development
Golden path /shape — consolidate journey patterns across canvases and file gap issues.