mirror of
https://github.com/alirezarezvani/claude-skills.git
synced 2026-08-28 04:24:58 +00:00
docs(book-to-skill): add attribution block to the compiled skill's sidecar
Addresses the review observation on #993: the compiled skill's authoring-notes.json carried only a `source` block (how it was built) even though its content is derived from an external MIT-licensed work, where the rest of the repo uses an `attribution` block for that. check_plugin_json.py's NOTES_ALLOWED permits both keys, so the two coexist. Adds `attribution` to engineering/spinning-up-deep-rl following the shape used by book-to-skill and skillopt-sleep: derived_from, upstream_docs, upstream_path, original_author, original_license, original_copyright, derivation_note. The emitter is deliberately NOT changed to synthesise this. It knows only `--source-note` free text and a rights basis -- not an upstream URL, author or licence -- and a half-filled attribution block is worse than none. Instead Step 11 of conversion_workflow.md now says attribution is added by hand whenever `--rights` is anything but internal-docs, names the field shape, and restates that the actual obligation is the LICENSE notice and README credit -- authoring-notes.json is metadata Claude Code never reads, and a sidecar JSON file is not a licence notice. Gates re-run clean: check_plugin_json --all, check_paths, check_frontmatter, check_dual_publish, check_model_freshness, smoke_scripts (692/692), derive_counters --check, book_skill_validator --strict. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UySnyf5upm4y8xhYA3w6yw
This commit is contained in:
parent
59956d04bd
commit
40fa75258a
2 changed files with 23 additions and 1 deletions
|
|
@ -382,10 +382,23 @@ Emits `<domain>/<slug>/` with `.claude-plugin/plugin.json`, `README.md`,
|
|||
`skills/<slug>/`, then prints the marketplace entry to register. Drop `--dry-run` to write.
|
||||
|
||||
**Rights gate.** The emitter defaults to `--distribution local`, which records
|
||||
`source.cleared_for_distribution: false` in the manifest. `--distribution shareable` **refuses** unless `--rights` names a basis:
|
||||
`source.cleared_for_distribution: false` in `.claude-plugin/authoring-notes.json`.
|
||||
`--distribution shareable` **refuses** unless `--rights` names a basis:
|
||||
`public-domain`, `open-license`, `internal-docs`, or `author-permission`. Fair use is
|
||||
deliberately not an option — it is a defence, not a licence, and not this tool's call.
|
||||
|
||||
**Attribution is yours to add, by hand, when the source is someone else's work.** The emitter
|
||||
writes a `source` block — how the skill was built — because that is all it can know; it has
|
||||
`--source-note` free text and a rights basis, not an upstream URL, author or licence, and a
|
||||
half-filled `attribution` block is worse than none. So when `--rights` is anything but
|
||||
`internal-docs`, add an `attribution` block beside it in `authoring-notes.json`
|
||||
(`derived_from`, `original_author`, `original_license`, `original_copyright`,
|
||||
`derivation_note` — the shape the rest of this repo uses), and put the upstream licence
|
||||
notice in the package's `LICENSE` and a credit line in its `README.md`. **That last part is
|
||||
the obligation:** `authoring-notes.json` is authoring metadata Claude Code never reads, and a
|
||||
sidecar JSON file is not a licence notice. `engineering/spinning-up-deep-rl` is the worked
|
||||
example.
|
||||
|
||||
The emitter also refuses to wrap a skill with validation errors. Fix the source skill first.
|
||||
|
||||
Registration in `.claude-plugin/marketplace.json` stays manual — it is a repo-wide change.
|
||||
|
|
|
|||
|
|
@ -9,5 +9,14 @@
|
|||
"license_scope": "plugin.json's top-level `license` covers this package's scaffolding only. The compiled notes under skills/ are derived from the source document and carry that work's terms; see source.rights_basis.",
|
||||
"rights_basis": "open-license",
|
||||
"rights_note": "the source work carries a licence permitting derivative distribution"
|
||||
},
|
||||
"attribution": {
|
||||
"derived_from": "https://github.com/openai/spinningup",
|
||||
"upstream_docs": "https://spinningup.openai.com/",
|
||||
"upstream_path": "docs/ (reStructuredText tree, 38 files)",
|
||||
"original_author": "Joshua Achiam, OpenAI",
|
||||
"original_license": "MIT",
|
||||
"original_copyright": "Copyright (c) 2018 OpenAI (http://openai.com)",
|
||||
"derivation_note": "No upstream code or prose is reproduced. The compiled skill is structured study notes -- named frameworks, key concepts, decision rules and per-chapter summaries -- generated by engineering/book-to-skill from the source's docs/ tree, with chapter structure taken from the source's own toctree. Upstream's MIT notice is reproduced in full in this package's LICENSE, which is where the licence obligation is met; this file is authoring metadata and is not a licence notice. Coverage is pinned to the source's final (January 2020 PyTorch) update."
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue