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 ページを確認してインストールできます。
SOC 職業分類に基づく
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