ari-hash-chain-auditor
Verify and manage ARI's SHA-256 hash-chained audit trail
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Verify and manage ARI's SHA-256 hash-chained audit trail
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Discord slash commands, approval routing, channel policy, button interaction patterns for OpenClaw/ARI Discord integration
Obsidian vault integration patterns — vault-analyzer.ts, /ari-vault-* commands, morning briefing snippet, PARA structure, read-only enforcement
OpenClaw plugin development patterns — hooks, manifest structure, plugin SDK, APEX/CODEX enforcement
NOVA's P1 PayThePryce pipeline — market signal ingest, card detection, price monitoring, script generation, thumbnail generation, video assembly, approval gate
CHASE's P2 Pryceless Solutions pipeline — lead discovery, 5-criteria audit, LLM qualification, Prompt Forge 4-pass lock, demo generation, outreach approval gate
NOVA's thumbnail generation pipeline — Ideogram V3 via Fal.ai (primary) + DALL-E 3 fallback, 4-variant strategy, Pokemon TCG copyright rules,
| name | ari-hash-chain-auditor |
| description | Verify and manage ARI's SHA-256 hash-chained audit trail |
| triggers | ["verify audit chain","check audit integrity","audit hash verification","validate audit trail"] |
Verify and manage ARI's tamper-evident SHA-256 hash-chained audit trail (ADR-002).
Genesis Block (0x00...00)
↓
Event 1: hash = SHA256(previousHash + eventData)
↓
Event 2: hash = SHA256(event1.hash + eventData)
↓
Event N: hash = SHA256(eventN-1.hash + eventData)
~/.ari/audit.json
# CLI verification
npx ari audit verify
# Programmatic verification
npm run audit:verify
async verifyAuditChain(): Promise<VerificationResult> {
const audit = await loadAuditFile();
let previousHash = GENESIS_HASH; // 0x00...00
for (const event of audit.events) {
// Verify chain link
if (event.previousHash !== previousHash) {
return { valid: false, error: 'Chain broken', event };
}
// Verify hash computation
const computed = sha256(previousHash + JSON.stringify(event.data));
if (computed !== event.hash) {
return { valid: false, error: 'Hash mismatch', event };
}
previousHash = event.hash;
}
return { valid: true, eventCount: audit.events.length };
}
If verification fails:
security:audit_tampered