Agent skill

Witness

by ruvnet in ruvnet/ruflo

Sign, verify, and track fix-marker regressions over time using a deterministic Ed25519 witness manifest.

MITAuto-check passed

Install Witness

skills CLI
$ npx skills add ruvnet/ruflo --skill witness -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ruvnet/ruflo witness --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ruvnet/ruflo.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/ruflo-core/skills/witness .claude/skills/witness && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
witness
GitHub stars
74k
Token cost
~1.2k tokens
SKILL.md length
338 words
Files
1
Skills in repo
265
Repo updated
First seen
Licence
MIT

At a glance

Sign, verify, and track fix-marker regressions over time using a deterministic Ed25519 witness manifest.

  • Works in 2 steps: Inside ruflo — used by ruflo's own CI to… → In your own project — copy…
  • SKILL.md covers Quick start (any project), Temporal queries (ADR-103), Anti-patterns and Files, plus 1 more section
  • Calls node and npm

What it does

Witness is an agent skill from ruvnet/ruflo. Sign, verify, and track fix-marker regressions over time using a deterministic Ed25519 witness manifest. Works in any project — clone the toolkit, run init, register fixes, regen on each release.

Its SKILL.md is about 1.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: 🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory…. The licence is MIT.

Example prompts

  • “/witness”

Requirements

  • Node.js
  • Pre-approved tools (allowed-tools): Bash(node *), Read, Write, Edit

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. Inside ruflo — used by ruflo's own CI to gate publishes (see
  2. In your own project — copy plugins/ruflo-core/scripts/witness/

What it can do on your machine

Read from SKILL.md and the folder at commit 6c04654. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash(node *)
    • Read
    • Write
    • Edit

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • node
    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Witness loads about 1.2k tokens when it runs. Until then it costs about 51 tokens; SKILL.md has 338 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~51
When it runs · the whole SKILL.md, loaded when a task matches
~1.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from ruvnet/ruflo at commit 6c04654, republished under its MIT licence (© ruvnet). 338 words, ~1,210 tokens.

Download SKILL.mdSave it as .claude/skills/witness/SKILL.md (or your agent's skills folder).
name
witness
description
Sign, verify, and track fix-marker regressions over time using a deterministic Ed25519 witness manifest. Works in any project — clone the toolkit, run init, register fixes, regen on each release.
allowed-tools
Bash(node *), Read, Write, Edit
argument-hint
init|regen|verify|history [...]

Witness — cryptographic fix-regression tracking

The witness toolkit lets you ship every release with a signed manifest that lists every documented fix in your codebase along with a sha256 + marker substring. Anyone with the same git commit can re-derive the public key and verify the signature without a committed private key.

A temporal history (JSONL) tracks how the fix population evolves across releases — so when a regression appears, you can pinpoint the commit that introduced it, not just "it's broken now."

This skill works two ways:

  1. Inside ruflo — used by ruflo's own CI to gate publishes (see .github/workflows/v3-ci.yml job witness-verify).
  2. In your own project — copy plugins/ruflo-core/scripts/witness/ into your repo, run init.mjs, register your fixes in witness-fixes.json, and call regen.mjs from your release pipeline.

Quick start (any project)

bash
# One-time bootstrap — creates verification.md.json,
# verification-history.jsonl, and witness-fixes.json template
node plugins/ruflo-core/scripts/witness/init.mjs --root .

# Edit witness-fixes.json: add { id, desc, file, marker } per fix.
# A "marker" is a distinctive substring that MUST appear in `file`
# while the fix is present. If someone reverts the fix, the marker
# disappears and `verify` reports it as `regressed`.

# Regenerate the manifest (signing requires @noble/ed25519)
npm i @noble/ed25519
node plugins/ruflo-core/scripts/witness/regen.mjs \
  --manifest verification.md.json \
  --history verification-history.jsonl \
  --fixes witness-fixes.json

# Verify markers are present in the live tree
node plugins/ruflo-core/scripts/witness/verify.mjs \
  --manifest verification.md.json

# Or authenticate the manifest and check source markers in a clean clone.
# Generated dist/ entries are explicitly reported as skipped.
node plugins/ruflo-core/scripts/witness/verify.mjs \
  --manifest verification.md.json --source-only

# For a CI hash tripwire, also fail when a file changes but its marker remains.
node plugins/ruflo-core/scripts/witness/verify.mjs \
  --manifest verification.md.json --source-only --strict

Without --strict, marker-preserving SHA drift is reported but exits 0. --strict makes that drift exit 1 without changing signature or missing-file checks.

Temporal queries (ADR-103)

bash
# Latest snapshot vs. previous
node plugins/ruflo-core/scripts/witness/history.mjs \
  --history verification-history.jsonl summary

# For each currently-regressed fix, find the commit that introduced it
node plugins/ruflo-core/scripts/witness/history.mjs \
  --history verification-history.jsonl regressions

# Status timeline for a specific fix
node plugins/ruflo-core/scripts/witness/history.mjs \
  --history verification-history.jsonl timeline --id F1

# Machine-readable for CI
node plugins/ruflo-core/scripts/witness/history.mjs \
  --history verification-history.jsonl summary --json

summary exits non-zero if any fix newly regressed since the last snapshot — drop it in CI as a soft pre-merge gate.

Anti-patterns

  • Hand-editing verification.md.json — always regenerate via regen.mjs, otherwise the signature breaks.
  • Markers that are too generic ('function', 'import') — pick something unique enough that grep doesn't false-positive against unrelated code.
  • Skipping the history append — without --history, you lose the ability to bisect when a regression was introduced.
  • Committing one without the other — verification.md.json and verification-history.jsonl belong in the same commit; the JSONL is what lets future you verify the signed manifest is the latest in the line.

Files

  • scripts/witness/lib.mjs — shared regenerate / history logic.
  • scripts/witness/regen.mjs — CLI: sign + append history.
  • scripts/witness/history.mjs — CLI: query the temporal log.
  • scripts/witness/init.mjs — CLI: bootstrap into a fresh project.
  • scripts/witness/verify.mjs — CLI: validate signature + markers.

In ruflo's CI

v3-ci.yml job witness-verify runs after the behavioral smoke tests and before publish. Failure modes:

FailureCause
signatureValid: nomanifest hand-edited; re-run regen
regressed: > 0a documented fix lost its marker since issuance
missing: > 0a cited dist file no longer exists; rebuild or remove the entry
scope: source-onlysignature + source markers checked; generated entries intentionally skipped

© ruvnet, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in plugins/ruflo-core/skills/witness of ruvnet/ruflo.

Open the folder on GitHubat commit 6c04654

Compare with similar skills

Witness next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Witness compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Witness this skillruvnet/ruflo74k—~1.2kAutomated safety check: PassMIT
Visual Regressionthedaviddias/Front-End-Checklist74k—~493Automated safety check: PassMIT
Document Signingasgeirtj/system_prompts_leaks69k—~1.5kAutomated safety check: PassCC0-1.0
AI Regression Testingaffaan-m/ECC277k5 repos~2.9kAutomated safety check: PassMIT
Dropbox Sign AutomationComposioHQ/awesome-claude-skills77k3 repos~749Automated safety check: PassNone
Wit AI AutomationComposioHQ/awesome-claude-skills77k3 repos~727Automated safety check: PassNone

Similar skills

  • Visual Regression

    thedaviddias/Front-End-Checklist

    A skill your agent uses when reviewing CI coverage, automated checks, or test strategy related to Use visual regression testing.

    74k GitHub stars~493 tokensUpdated 5 days ago
    Testing & QAAuto-check passed
  • Document Signing

    asgeirtj/system_prompts_leaks

    Review documents for signature or prepare a signing packet; verify fields and recipients while keeping sending and signing under explicit user authorization.

    69k GitHub stars~1.5k tokensUpdated yesterday
    Auto-check passed
  • Regression testing strategies for AI-assisted development. An agent skill from affaan-m/ECC.

    277k GitHub starsUsed in 5 repos~2.9k tokens
    Testing & QAAuto-check passed
  • Dropbox Sign Automation

    ComposioHQ/awesome-claude-skills

    Automate Dropbox Sign tasks via Rube MCP (Composio). An agent skill from ComposioHQ/awesome-claude-skills.

    77k GitHub starsUsed in 3 repos~749 tokens
    Productivity & AutomationAuto-check passed
  • Wit AI Automation

    ComposioHQ/awesome-claude-skills

    Automate Wit AI tasks via Rube MCP (Composio). An agent skill from ComposioHQ/awesome-claude-skills.

    77k GitHub starsUsed in 3 repos~727 tokens
    Productivity & AutomationAuto-check passed
  • Implementing Code Signing For Artifacts

    mukul975/Anthropic-Cybersecurity-Skills

    Implements code signing for build artifacts (binaries, packages, containers) using GPG, Sigstore, and platform-specific signing tools, establishing trust chains and verifying signatures in…

    34k GitHub stars~1.8k tokensUpdated 1 mo ago
    MobileAuto-check passed

More from ruvnet/ruflo

All 265 skills in this repo
  • Stores, searches, and retrieves successful patterns with HNSW-indexed semantic search so agents can reuse past solutions instead of relearning them.

    74k GitHub starsUsed in 1 repo~830 tokens
    Auto-check passed
  • Sets up and drives Ruflo, an npm-installed orchestration layer for multi-agent swarms, persistent memory, routing, hooks and its MCP tool catalog.

    74k GitHub starsUsed in 1 repo~975 tokens
    Auto-check passed
  • Runs claude-flow CLI security scans for input validation, path traversal, SQL injection, XSS, hardcoded secrets and known CVEs, and writes an audit report.

    74k GitHub starsUsed in 1 repo~823 tokens
    Auto-check passed
  • Applies the SPARC method (specification, pseudocode, architecture, refinement, completion) with 17 specialized modes and multi-agent orchestration, from research to deployment.

    74k GitHub starsUsed in 1 repo~829 tokens
    Auto-check passed
  • Coordinates a hierarchical swarm of specialized agents through the claude-flow CLI for work that spans several files or modules at once.

    74k GitHub starsUsed in 1 repo~779 tokens
    Auto-check passed
  • Finds models on the Hugging Face router that lack descriptions in chat-ui's prod.yaml and dev.yaml, researches each one and adds short descriptions.

    74k GitHub starsUsed in 1 repo~600 tokens
    Auto-check passed

Questions about Witness

What does Witness do?

Sign, verify, and track fix-marker regressions over time using a deterministic Ed25519 witness manifest. Witness is an agent skill from ruvnet/ruflo. Sign, verify, and track fix-marker regressions over time using a deterministic Ed25519 witness manifest.

How do I install Witness in Claude Code?

Run `npx skills add ruvnet/ruflo --skill witness -a claude-code`. Or copy the skill folder (plugins/ruflo-core/skills/witness in ruvnet/ruflo) into .claude/skills/witness in your project. Claude Code loads it when a task matches its description.

How do I install Witness in Codex?

Run `npx skills add ruvnet/ruflo --skill witness -a codex`. Or copy the skill folder (plugins/ruflo-core/skills/witness in ruvnet/ruflo) into .agents/skills/witness in your project. Codex loads it when a task matches its description.

Can I use Witness in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ruvnet/ruflo --skill witness -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/witness, .gemini/skills/witness, .github/skills/witness and .opencode/skills/witness in your project.

What does Witness need to run?

Going by SKILL.md and its folder, Witness needs the command-line tools its instructions call (node and npm). Our summary lists: Node.js. Its frontmatter pre-approves these tools: Bash(node *), Read, Write, Edit.

Does Witness access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Witness safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Witness use?

Witness is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Witness use?

About 1.2k tokens (SKILL.md is roughly 4.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Witness?

Skills that share tags, products or a category with Witness: Visual Regression (thedaviddias/Front-End-Checklist, 74k stars), Document Signing (asgeirtj/system_prompts_leaks, 69k stars), AI Regression Testing (affaan-m/ECC, 277k stars) and Dropbox Sign Automation (ComposioHQ/awesome-claude-skills, 77k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Witness?

ruvnet (a GitHub user) maintains it in ruvnet/ruflo, which has 74,222 GitHub stars. The repository holds 265 skills in this directory. The repository was last updated on October 10, 2026.

Source: ruvnet/ruflo on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.