Adopt TAP

Pick your platform. Copy. Paste. Done.

Project-level, not per-conversation. Loads once, works on every commit and file.

Easiest Git Commits

Add TAP trailers to every commit. Paste into your CLAUDE.md or .cursorrules:

## Authorship (TAP) When creating git commits, add TAP trailers after the commit message body: TAP-Model: <exact model id, e.g. claude-opus-4-8> TAP-Provider: <provider, e.g. anthropic> TAP-Role: <what AI did: drafting, review, refactoring, translation> TAP-Human: <human name> TAP-Human-Role: <what human did: direction, review, editing> TAP-Confidence: recorded Example: fix: resolve race condition in session handler TAP-Model: claude-opus-4-8 TAP-Provider: anthropic TAP-Role: drafting TAP-Human: Alex TAP-Human-Role: direction, review TAP-Confidence: recorded Protocol: Emergenti TAP v0.2 Spec: https://emergenti.dev

Standard File Headers

Add YAML front matter to markdown files:

## Authorship (TAP) When creating or editing markdown files, add YAML front matter: --- tap_version: 0.2 title: <file title> source_type: collaborative # or: ai-only, human-only authors: - {type: human, name: <name>, roles: [<roles>]} - {type: ai, name: <agent name>, model: <exact model id>, provider: <provider>, roles: [<roles>]} updated: <YYYY-MM-DD> --- For Python/shell files, use the same fields as a comment block. Roles: ideation, research, drafting, editing, review, coding, refactoring, translation, synthesis, illustration, narration, curation, testing. Protocol: Emergenti TAP v0.2 Spec: https://emergenti.dev

Full Git + Files + Web

Complete adoption: commits, file headers, and web markup.

## Authorship (TAP) Follow the Transparent Authorship Protocol (TAP v0.2) for all output: ### Git commits Add trailers after the commit message body: TAP-Model: <exact model id> TAP-Provider: <provider> TAP-Role: <ai role> TAP-Human: <human name> TAP-Human-Role: <human role> TAP-Confidence: recorded ### Files Add YAML front matter to markdown files: authors: - {type: human, name: <name>, roles: [<roles>]} - {type: ai, name: <name>, model: <model id>, provider: <provider>, roles: [<roles>]} ### Web / HTML Add data attributes to bylines: <span data-tap-version="0.2" data-model="<model id>" data-role="<ai role>" data-human="<human name>" data-tap-display="ai-involved"> Author byline </span> ### Display values human | ai-involved | ai-generated | ai-modified ### Roles ideation, research, drafting, editing, review, coding, refactoring, translation, synthesis, illustration, narration, curation, testing. Protocol: Emergenti TAP v0.2 Spec: https://emergenti.dev

AGENTS.md Rule

Add this block to your workspace AGENTS.md. The agent follows it on every file and commit.

## Authorship (TAP v0.2) When creating or editing files (.md, .py, .sh, .conf), add a provenance header as the first content in the file: For markdown - YAML front matter: --- tap_version: 0.2 title: <title> source_type: collaborative # collaborative | ai-only | human-only authors: - {type: human, name: <human>, roles: [<roles>]} - {type: ai, name: <agent name>, model: <exact model id>, provider: <provider>, roles: [<roles>]} updated: YYYY-MM-DD --- For code files - comment block with the same fields. When creating git commits, add TAP trailers: TAP-Model: <exact model id> TAP-Provider: <provider> TAP-Role: <ai role> TAP-Human: <human name> TAP-Human-Role: <human role> TAP-Confidence: recorded Rules: - model = exact id (claude-opus-4-8), not marketing name - authors is always a list - editing someone else's file: add yourself to authors, update date - if you touched a file and did not sign it, the task is incomplete Roles: ideation, research, drafting, editing, review, coding, refactoring, translation, synthesis, illustration, narration, curation, testing. Protocol: Emergenti TAP v0.2 https://emergenti.dev

tap-policy.yaml (optional)

Central config for multi-site setups. All templates read from one file.

# standards/tap-policy.yaml tap_version: "0.2" namespace: "https://emergenti.dev/ns/tap/" spec_url: "https://emergenti.dev" default_display: "ai-involved" default_confidence: "recorded" authors: human: name: "Your Name" roles: ["ideation", "review"] ai: name: "Your Agent" model: "model-id" provider: "provider" roles: ["drafting"] sites: - domain: example.com display: ai-involved

Hermes is a self-hosted agent with its own harness. Use AGENTS.md as the project-level TAP instruction file. The page gives you the entry point; details live in the skill and hook.

Easiest Project Policy (AGENTS.md)

Drop this file into your project root. Hermes reads it on every session and applies TAP to all files and commits.

# TAP / Transparent Authorship Protocol Apply TAP to new/revised files, AI-assisted commits, and published HTML where authorship is shown. Do not retroactively rewrite the whole repo. ## Honesty rules - Exact model IDs (gpt-5.4, claude-opus-4-8), not marketing names. - `recorded` = captured live. `reconstructed:<source>` = inferred after. - Do not invent metadata when unknown. ## Git commits Add trailers in the commit message footer: TAP-Model: gpt-5.4 TAP-Provider: openai-codex TAP-Role: drafting, refactoring TAP-Human: Alex TAP-Human-Role: direction, review TAP-Confidence: recorded ## Markdown files YAML front matter: --- tap_version: 0.2 source_type: collaborative authors: - {type: human, name: Alex, roles: [direction, review]} - {type: ai, name: Tisha, model: gpt-5.4, provider: openai-codex, roles: [drafting]} updated: 2026-07-20 --- ## Code files Same fields as a language-appropriate comment header. ## Web / HTML data-tap-version="0.2" data-model="gpt-5.4" data-role="drafting" data-human="Alex" data-tap-display="ai-involved" Display states: human | ai-involved | ai-generated | ai-modified ## Decision boundary Best-effort: project policy alone. Enforced: + git hook, commit template, or CI validator.

Standard Git Hook (commit-msg.tap.py)

Enforcement layer: validates TAP trailers on every commit. If missing, appends a template and blocks until filled.

#!/usr/bin/env python3 """Best-effort TAP commit-msg hook. Behavior: - If no TAP trailers are present, append a template block. - If some TAP trailers are present but required ones are missing, fail with a clear message. - If all required trailers are present, exit 0. Install: cp hooks/commit-msg.tap.py .git/hooks/commit-msg chmod +x .git/hooks/commit-msg """ from pathlib import Path import sys REQUIRED = [ "TAP-Model:", "TAP-Provider:", "TAP-Role:", "TAP-Human:", "TAP-Human-Role:", "TAP-Confidence:", ] TEMPLATE = """ TAP-Model: <exact model id, e.g. gpt-5.4> TAP-Provider: <provider, e.g. openai-codex> TAP-Role: <what AI did: drafting, review, refactoring, translation> TAP-Human: <human name> TAP-Human-Role: <what human did: direction, review, editing> TAP-Confidence: recorded """.strip("\\n") def main() -> int: if len(sys.argv) != 2: print("usage: commit-msg <commit-msg-file>", file=sys.stderr) return 2 path = Path(sys.argv[1]) text = path.read_text(encoding="utf-8") present = [key for key in REQUIRED if key in text] if not present: new_text = text.rstrip() + "\\n\\n" + TEMPLATE + "\\n" path.write_text(new_text, encoding="utf-8") print("[TAP] Added trailer template to commit message. " "Fill values, then re-run commit if needed.", file=sys.stderr) return 1 missing = [key for key in REQUIRED if key not in text] if missing: print("[TAP] Commit message has partial TAP metadata " "but is missing required lines:", file=sys.stderr) for key in missing: print(f" - {key}", file=sys.stderr) return 1 return 0 if __name__ == "__main__": raise SystemExit(main())

Install: cp commit-msg.tap.py .git/hooks/commit-msg && chmod +x .git/hooks/commit-msg

Full Complete Stack

All three components together. Recommended setup from the kit:

# TAP for Hermes - complete stack 1. AGENTS.md in project root (Hermes reads it every session) 2. Skill: tap-authorship-protocol (carrier selection: git/markdown/code/HTML/author.md) 3. Git hook for enforcement: cp commit-msg.tap.py .git/hooks/commit-msg chmod +x .git/hooks/commit-msg No TAP = appends template, blocks commit. Partial = lists missing fields, blocks. All 6 fields present = passes.

EU AI Act

Article 50 (applicable from August 2, 2026) mandates disclosure of AI-generated content. TAP provides a voluntary, machine-readable format that satisfies the requirement.