Skip to content
Back to skills

Llm Signature

ASecurity

Sign agent-assisted work with a machine-generated provenance signature: an Assisted-By git trailer naming the exact model that wrote and orchestrated the change, and an Agent-Stack trailer naming the harness and plugin versions it ran on. Use when committing or writing a PR body in a project that adopts the signature, when asked to sign a commit with the model / add model attribution or an LLM signature, when asked which model or tool stack produced a change, or when replacing Co-Authored-By ...

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added August 31, 2026
ai-agentspythonbashgit

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned August 31, 2026

npx -y skills add grimaldost/craft-collection --skill llm-signature --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Llm Signature?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Llm Signature
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/grimaldost-llm-signature/badge)](https://www.skillsdirectory.com/skills/grimaldost-llm-signature)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: llm-signature
description: >
  Sign agent-assisted work with a machine-generated provenance signature: an
  Assisted-By git trailer naming the exact model that wrote and orchestrated the
  change, and an Agent-Stack trailer naming the harness and plugin versions it
  ran on. Use when committing or writing a PR body in a project that adopts the
  signature, when asked to sign a commit with the model / add model attribution
  or an LLM signature, when asked which model or tool stack produced a change,
  or when replacing Co-Authored-By AI boilerplate with provenance trailers. The
  signature is rendered by a script from live sources, never typed from memory,
  and the model is listed only in Assisted-By — never as a commit co-author. Not
  for human authorship credit (real co-authors keep their Co-Authored-By lines).
---

# LLM Signature

Provenance, not marketing. A `Co-Authored-By: Claude <noreply@anthropic.com>`
line says an AI touched the commit and nothing else; this signature records
what actually shaped the work — the exact model and the versioned tool stack —
as machine-readable git trailers:

```text
Assisted-By: claude-sonnet-5
Agent-Stack: claude-code@2.1.0; engineering-discipline@2.1.0 (craft-collection); session-workflow@0.15.0 (craft-collection)
```

Trailers are the native mechanism: hidden from `git log --oneline`, filterable
with `git log --format='%(trailers:key=Assisted-By)'`, parseable with
`git interpret-trailers`. Full grammar and semantics: `references/spec.md`.

## Semantics

- `Assisted-By` names the model that is **writing and orchestrating** — the one
  responsible for the change. One model: the orchestrator at commit time, not
  every subagent it delegated to. The model is never added as a commit
  co-author or committer; this trailer is its only appearance.
- `Agent-Stack` is **environment-at-commit** provenance: the harness and the
  enabled plugins, each as `name@version (marketplace)` — what was installed
  and enabled, not a claim that every item fired. The marketplace label is a
  lookup key (its repo or `claude plugin marketplace list` resolves it) — URLs
  stay out of commits.

## Generate — always by script, never by hand

A remembered version is wrong the moment anything updates, so the signature is
rendered from live sources every time:

```bash
uv run --no-project -- python "${CLAUDE_PLUGIN_ROOT}/skills/llm-signature/scripts/render_signature.py"
```

The model comes from the session transcript (last main-loop assistant message —
subagent sidechains never sign; a discovered transcript signs only when fresh
and verified against this cwd); the stack comes from `claude plugin list` and
`claude --version`. `--json` for machine use, `--plugin <name>` (repeatable) to
narrow the stack, `--model` / `--transcript` as explicit overrides. If the
model cannot be resolved, the script fails rather than guessing — do not
substitute a hand-typed signature; commit unsigned or fix the resolution.

## Apply

**Commits** — in a project that adopts the signature (one declaration in the
repo's CLAUDE.md; see `references/spec.md` § Adopting), run the script at
commit time and append its output verbatim as the final paragraph of the
commit message. Drop any `Co-Authored-By` line carrying the vendor's identity
(an anthropic.com or claude+noreply address) and any "Generated with Claude
Code" badge — the signature replaces both. Real human co-authors keep their
lines, even one named Claude.

**PR bodies** — same block, fenced as `text`, at the end of the description.

**Mechanical enforcement (optional)** — `--apply <msg-file>` rewrites a commit
message in place (scrub boilerplate, refresh trailers, never fail the commit),
built to be wired as a git `prepare-commit-msg` hook; recipe in
`references/spec.md`.

Files in this skill

  • SKILL.md3.7 KB
  • references/spec.md7.3 KB
  • scripts/render_signature.py16.5 KB
  • scripts/test_render_signature.py16.4 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.