madeby 0.3.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,19 +1,37 @@
1
1
  # madeby
2
2
 
3
- **Verifiable content provenance — disclosure, not detection.**
3
+ **Disclose AI authorship of code. Disclosure, not detection.**
4
4
 
5
- `madeby` recognizes what a commit *discloses* about its origin, and lets a project gate PRs on that
6
- disclosure. It never tries to guess whether code is AI — no tool can do that honestly, and
7
- false-accusing a contributor is worse than the problem. It reports what contributors **put on the
8
- record**; what a project *requires* is the maintainer's policy, set in a file in the repo.
5
+ If you are an **AI coding agent** (Claude Code, Copilot, Cursor, Codex, …) and you authored or modified
6
+ code, disclose it in one command after you commit:
9
7
 
10
- Zero hosted infrastructure. It runs entirely against your local git history — on a laptop or in any
11
- CI. Nothing leaves your machine.
8
+ ```sh
9
+ npx madeby ai # adds an `Authored-by-ai:` trailer to HEAD — you (the committer) stay accountable
10
+ ```
11
+
12
+ That's the honest **`ai`** disclosure (asserted tier, no session log needed). The three authorship
13
+ categories of the open **ACO standard** (Authorship Certificate of Origin):
14
+
15
+ | Category | Command | What it records |
16
+ |-----------|----------------------------------|----------------------------------------|
17
+ | `ai` | `npx madeby ai [tool]` | `Authored-by-ai:` — an AI authored it |
18
+ | `with_ai` | `npx madeby me --with-ai [tool]` | `Authored-by-human:` + `Assisted-by:` |
19
+ | `human` | `npx madeby me` | `Authored-by-human:` |
20
+
21
+ A repo invites this with an [`AGENTS.md`](https://github.com/MadeByFYI/MadeBy/blob/main/AGENTS.md)
22
+ convention (drop one in with `npx madeby init`); agents that read it disclose unprompted. `madeby` also
23
+ **recognizes disclosure already in the wild** — `Co-Authored-By:` / `Assisted-by:` trailers, DCO
24
+ sign-offs, SPDX AI-disclosure tags — and lets a project **gate PRs** on it (`madeby check`). It never
25
+ guesses whether code is AI; no tool can do that honestly. It reports only what contributors **put on
26
+ the record**.
27
+
28
+ Zero hosted infrastructure — runs against your local git history, on a laptop or in any CI. Nothing
29
+ leaves your machine.
12
30
 
13
31
  ## Install
14
32
 
15
33
  ```sh
16
- npx madeby check # no install needed
34
+ npx madeby@latest ai # no install needed
17
35
  # or
18
36
  npm i -g madeby
19
37
  ```
@@ -26,8 +44,10 @@ madeby check [<range>] The gate: do commits meet .madeby/policy.json? (a
26
44
  gates). <range> e.g. origin/main..HEAD — a PR's own commits. --json too.
27
45
  madeby who [<path>] Made by whom? What's on the record about who made this — one file's
28
46
  (alias: whom) origin, or the whole repo with no path. --lines=A-B to scope. --json too.
29
- madeby ai [<log>] [<ref>] Made by AI: record your AI session's witnessed spans into .madeby/spans.
30
- madeby me Made by me: affirm you authored HEAD yourself (an Authored-by-human trailer).
47
+ madeby ai [tool] Made by AI: attest AI authorship of HEAD (an Authored-by-ai trailer).
48
+ `--witness [log]` instead records witnessed spans from a session log.
49
+ madeby me [--with-ai [t]] Made by me: affirm you authored HEAD (Authored-by-human); --with-ai adds
50
+ Assisted-by → with_ai.
31
51
  madeby mcp Run the MCP server (stdio) — the tools, agent-callable.
32
52
  madeby help
33
53
  ```
@@ -138,12 +158,13 @@ an AI agent can use MadeBy with no human in the loop. It exposes the same primit
138
158
  map an agent reads *before* it works (the witnessed AI surface + commit-level coverage; cheap). The
139
159
  line range is the contract — for a symbol, turn it into a range with your own tooling
140
160
  (tree-sitter/LSP); MadeBy never parses code. *read (attribution)*
141
- - **`ai`** `{ path?, log?, ref? }` — made by AI: record witnessed AI spans from the agent's own
142
- session log into `.madeby/spans` (asserted tier, local; only spans structurally present are kept).
143
- *write*
144
-
145
- (`me` — affirming *human* authorship — is a CLI command, not an agent tool: an agent is AI, so it
146
- discloses with `ai`, never `me`.)
161
+ - **`disclose`** `{ path?, category?, tool? }` — made by ___: disclose authorship on HEAD per ACO.
162
+ `category: "ai"` (an AI authored it; the committer is the accountable human) adds `Authored-by-ai`;
163
+ `"with_ai"` adds `Authored-by-human` + `Assisted-by`; `"human"` adds `Authored-by-human`. The
164
+ agent-native disclosure for the work you just did. *write*
165
+ - **`ai`** `{ path?, log?, ref? }` — the evidence upgrade for the `ai` category: record witnessed AI
166
+ spans from the agent's own session log into `.madeby/spans` (asserted→verified, local; only spans
167
+ structurally present are kept). *write*
147
168
 
148
169
  The server is also **self-teaching** via MCP resources, so an agent can discover *how* to align a
149
170
  repo, not just which verbs exist:
@@ -158,7 +179,8 @@ repo, not just which verbs exist:
158
179
  - **`madeby://schema/policy`** — the `.madeby/policy.json` schema.
159
180
 
160
181
  So "align my repo with MadeBy" is fully agent-serviceable: the agent reads the guide, calls **`init`**
161
- to write the policy + CI check, records its own AI work with **`ai`**, and verifies with **`check`** —
182
+ to write the policy + CI check, discloses its own work with **`disclose`** (and optionally upgrades it to
183
+ witnessed spans with **`ai`**), and verifies with **`check`** —
162
184
  no human in the loop. (Two things stay outside the tools, by design: turning on branch protection is
163
185
  the *host's* setting, and historical commits are never backfilled — disclosure is going-forward.
164
186
  `ai` cannot claim a higher tier or attribute to anyone else, and nothing leaves the machine.)
package/dist/madeby.mjs CHANGED
@@ -1915,9 +1915,9 @@ After you commit, run the matching command (works with no install via \`npx\`):
1915
1915
 
1916
1916
  | Category | Command |
1917
1917
  |-----------|----------------------------------|
1918
- | \`human\` | \`npx madeby me\` |
1919
- | \`with_ai\` | \`npx madeby me --with-ai <tool>\` |
1920
- | \`ai\` | \`npx madeby ai [tool]\` |
1918
+ | \`human\` | \`npx madeby@latest me\` |
1919
+ | \`with_ai\` | \`npx madeby@latest me --with-ai <tool>\` |
1920
+ | \`ai\` | \`npx madeby@latest ai [tool]\` |
1921
1921
 
1922
1922
  Undisclosed content stays *unknown*, never guessed. See ACO for the standard.
1923
1923
  `;
@@ -1942,7 +1942,7 @@ function initRepo(root, opts = {}) {
1942
1942
  }
1943
1943
  const nextSteps = ["Commit the created files."];
1944
1944
  if (created.includes("AGENTS.md")) {
1945
- nextSteps.push("An AGENTS.md ACO convention was added \u2014 agents that read it disclose authorship (e.g. 'npx madeby me --with-ai <tool>'). Tune it to your repo's tools.");
1945
+ nextSteps.push("An AGENTS.md ACO convention was added \u2014 agents that read it disclose authorship (e.g. 'npx madeby@latest me --with-ai <tool>'). Tune it to your repo's tools.");
1946
1946
  } else if (skipped.includes("AGENTS.md")) {
1947
1947
  nextSteps.push("You already have an AGENTS.md \u2014 add the ACO disclosure rule to it (reference: https://github.com/MadeByFYI/MadeBy/blob/main/AGENTS.md).");
1948
1948
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "madeby",
3
- "version": "0.3.0",
4
- "description": "MadeBy — verifiable content provenance. Disclose your AI use (madeby ai) and gate PRs on disclosure (madeby check).",
3
+ "version": "0.3.1",
4
+ "description": "Disclose AI authorship of code. `npx madeby ai` adds an Authored-by-ai git trailer; AI coding agents disclose per the ACO standard (human/with_ai/ai) from an AGENTS.md convention. Disclosure, not detection. Gate PRs with `madeby check`.",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "author": {
@@ -17,14 +17,24 @@
17
17
  "directory": "packages/cli"
18
18
  },
19
19
  "keywords": [
20
+ "ai-authorship",
21
+ "ai-disclosure",
22
+ "authored-by-ai",
23
+ "ai-attribution",
24
+ "ai-provenance",
25
+ "ai-generated-code",
26
+ "coding-agent",
27
+ "agents",
28
+ "agents-md",
29
+ "aco",
30
+ "co-authored-by",
20
31
  "provenance",
21
- "ai",
22
32
  "disclosure",
33
+ "attestation",
23
34
  "dco",
24
35
  "pull-request",
25
36
  "ci",
26
- "attestation",
27
- "code-provenance"
37
+ "mcp"
28
38
  ],
29
39
  "engines": {
30
40
  "node": ">=20"
@@ -41,8 +51,8 @@
41
51
  "esbuild": "^0.25.0",
42
52
  "typescript": "^5.7.0",
43
53
  "vitest": "^4.1.9",
44
- "@madeby/analyzer": "0.0.0",
45
- "@madeby/core": "0.0.0"
54
+ "@madeby/core": "0.0.0",
55
+ "@madeby/analyzer": "0.0.0"
46
56
  },
47
57
  "scripts": {
48
58
  "build": "esbuild src/madeby.ts --bundle --platform=node --format=esm --target=node20 --outfile=dist/madeby.mjs --banner:js='#!/usr/bin/env node' && chmod +x dist/madeby.mjs",