licensing
Skill0 starsChanged 32 days agoMITView on GitHub
Keep a repository's licensing correct and consistent. Audits the LICENSE file, README and package manifests so they agree, picks a license for a new project, declares it with the right SPDX identifier, and checks that copied code, fonts, icons, logos and dependencies carry the notices their licenses require. Use when the user asks which license to use, to add or change a license, to check licensing, to audit a repo or an org for licenses, to copy code or assets from another project, to add a NOTICE or third-party notices file, to ask MIT vs Apache vs GPL, or whether a dependency's license is safe to use.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- pradyumnasagar/open-research-skillstheir own version, first seen Nov 8, 2026
- korchard333/claude-power-platform-communitytheir own version, first seen Apr 4, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- korchard333/claude-power-platform-community★ 46same name
- pradyumnasagar/open-research-skills★ 8same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository68 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .claude/CLAUDE.mdCLAUDE.md
- accessibilitySkill
- api-designSkill
- api-versioningSkill
- authSkill
- background-jobsSkill
- cachingSkill
- capacity-planningSkill
- changelogSkill
- chaos-engineeringSkill
- ci-cdSkill
- circuit-breakerSkill
- claude-best-practicesSkill
- code-commentsSkill
- code-hygieneSkill
- code-reviewSkill
- code-structureSkill
- commit-styleSkill
- concurrency-and-lockingSkill
- database-transactionsSkill
- data-consistencySkill
- debug-infra-startupSkill
- debug-sessionSkill
- demo-video-creatorSkill
- demo-video-script-creatorSkill
- dependency-injectionSkill
- dependency-updateSkill
- disk-cleanupSkill
- distributed-tracingSkill
- dockerSkill
- env-configSkill
- env-setupSkill
- error-handlingSkill
- event-driven-architectureSkill
- feature-flagsSkill
- file-storageSkill
- graceful-shutdownSkill
- idempotencySkill
- input-validationSkill
- jars-engineering-blogsmithSkill
- jars-workshop-builderSkill
- loggingSkill
- memory-and-allocationsSkill
- migrate-dbSkill
- monitoringSkill
- multi-tenancySkill
- notificationsSkill
- openapiSkill
- paginationSkill
- perf-profileSkill
- pr-descriptionSkill
- query-optimizationSkill
- rate-limitingSkill
- refactorSkill
- releaseSkill
- runbook-writerSkill
- searchSkill
- secrets-auditSkill
- simplifySkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
7 rules. About 0 are common, 6 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 67
Ask the user if they have not said.
- Very specific: line 109
Use "UNLICENSED" in package.json only for code that is genuinely not licensed to anyone.
- Distinctive: line 111
Keep the line endings and formatting the files already use, so the diff is only the license.
- Distinctive: line 115
Before copying, read the source project's license.
- Distinctive: line 136
Icon sets: check the set's license (Lucide is ISC, Heroicons is MIT, Simple Icons is CC0) and keep it in your third-party notices.
- Distinctive: line 138
Logos of other products: use them only to identify that product.
- Distinctive: line 165
AGPL in a hosted service: if you *modify* an AGPL program and let users reach it over a network, you must offer them its source.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
licensing
Make what a repository says about its license true, consistent and complete. This is engineering hygiene, not legal advice: when money, a contract, a company policy or a dispute is involved, say so and tell the user to ask a lawyer.
Ground rules
- Never change a license or a copyright holder without asking. Relicensing is the author's decision, and code from other contributors may need their consent.
- Never remove or edit someone else's copyright or license notice. Add to notices; do not rewrite them.
- Never edit the license text itself. Tools detect licenses by matching the exact text. Fill
in only the copyright line (
[year] [fullname]in MIT). - Do not push, publish or open pull requests unless the user asked for that exact action.
- Report what you did not check. A clean manifest scan says nothing about dependency licenses.
1. Find what the repository declares
A license is declared in three places, and they must agree:
| Where | Who reads it | What to check |
LICENSE (or LICENSE.md, COPYING) | Courts, GitHub, scanners | Exists, unmodified text, a copyright line with a real name and year |
README.md | People | A License section that names the same license and links LICENSE |
| Package manifests | PyPI, npm, license scanners | The license field uses the same SPDX identifier |
ls LICENSE* COPYING* NOTICE* 2>/dev/null
grep -iE '^\s*copyright' LICENSE*
grep -niE '^#+ *licen[cs]e' -A3 README.md
grep -rnE --include=package.json '"license"\s*:' . | grep -v node_modules
grep -rnE --include=pyproject.toml '^license\s*=' .
grep -rnE --include=Cargo.toml '^license\s*=' .For a GitHub org, check every repo that is not a fork:
gh repo list <org> --source --limit 200 --json name --jq '.[].name' |
while read -r r; do
echo "$r $(gh api repos/<org>/$r/license --jq .license.spdx_id 2>/dev/null || echo NONE)"
doneSkip forks: they carry their upstream's license and are not the user's to relicense.
Flag each of these:
- No license file. Public code without a license is "all rights reserved": others may view and fork it on GitHub, but may not copy, change or reuse it.
- The three places disagree (README says MIT,
LICENSEis Apache-2.0, manifest is empty). - A copyright line naming someone else, often left over from copying another project's file.
- A manifest with no
licensefield. Private packages too: scanners read the manifest, not the README. - A non-SPDX value such as
"MIT License"or"Apache 2". UseMIT,Apache-2.0,BSD-3-Clause,GPL-3.0-only,GPL-3.0-or-later,MPL-2.0,ISC. - npm's default
"ISC"left in a project that is actually MIT.
2. Choose a license (new projects only)
Ask the user if they have not said. Offer this default:
| Situation | Choose | Why |
| Small library, tool, tutorial or workshop | MIT | Short, permissive, the easiest to comply with |
| Code you want companies to adopt, or a patent concern | Apache-2.0 | Permissive, plus an explicit patent license and patent-retaliation clause |
| Code meant to be contributed to an existing project | The upstream project's license | Reviewers can merge it as is |
| The author wants changes shared back when distributed | GPL-3.0-or-later | Strong copyleft |
| The same, and the software runs as a hosted service | AGPL-3.0-or-later | Copyleft that also covers users over a network |
| Documentation, images, course text (not code) | CC-BY-4.0 | Creative Commons suits content, not software |
Get the canonical text instead of typing it:
gh api licenses/mit --jq .body > LICENSE # then fill in [year] [fullname]
gh api licenses/apache-2.0 --jq .body > LICENSE3. Declare it everywhere
LICENSEat the repository root, canonical text, copyright line filled in.README, as the last section:
## License [MIT](LICENSE) © 2026 Your NameEvery manifest:
# pyproject.toml (PEP 639: needs hatchling >= 1.27 or setuptools >= 77) [project] license = "MIT"// package.json, even when "private": true "license": "MIT"Use
"UNLICENSED"inpackage.jsononly for code that is genuinely not licensed to anyone.- Keep the line endings and formatting the files already use, so the diff is only the license.
4. Copying code from another project
Before copying, read the source project's license. Then:
| Source license | You must |
| MIT, BSD, ISC | Keep its copyright line and license text with the copied code (a header, or a third-party notices file) |
| Apache-2.0 | Do the same, state what you changed, and carry over the attribution lines from its NOTICE file into yours |
| MPL-2.0 | Keep the copied files under MPL-2.0 and their source available; the rest of your project is unaffected |
| GPL, AGPL | Stop and ask. Copying it into a permissive project makes the combined work GPL when you distribute it |
| No license | Stop. You have no permission to copy it; ask the author or write your own |
Record each copy in a NOTICE file or docs/third-party-notices.md: what was copied, from where
(repository URL and commit), under which license, and what you changed. See
references/compatibility.md for which licenses can be combined.
5. Fonts, icons and logos
Assets have licenses too, and names and logos are also trademarks, which no software license grants.
- Fonts: most open fonts use the SIL Open Font License. Ship its license file next to the font
files (for example
fonts/OFL-Inter.txt). Modified versions may not use the font's reserved name. - Icon sets: check the set's license (Lucide is ISC, Heroicons is MIT, Simple Icons is CC0) and keep it in your third-party notices.
- Logos of other products: use them only to identify that product. Say who owns the mark, that the project is not official or endorsed, and where the file came from. If the source repository has no license, use the logo only for identification and offer to remove it on request.
A good NOTICE entry for a logo:
app/public/logos/ contains the logos of Example DB and Example Cloud. They are
trademarks of their owners, used only to identify the systems this project
works with. This project is not official and is not endorsed by either.6. Dependencies
Dependencies stay under their own licenses. You must comply when you distribute them, which includes Docker images, bundled frontends and vendored code.
npx --yes license-checker-rseidelsohn --summary # Node
uvx pip-licenses --from=mixed --order=license # Python (run inside the project's venv)
go-licenses report ./... # Go
cargo deny check licenses # Rust (needs a deny.toml)Flag for the user, with the package name and version:
GPL-*,AGPL-*,LGPL-*in anything you ship.- AGPL in a hosted service: if you modify an AGPL program and let users reach it over a network, you must offer them its source. Running an unmodified AGPL server next to your app does not put your app under AGPL.
SSPL-1.0,BUSL-1.1,Elastic-2.0, "Commons Clause": source-available, not open source, with limits on commercial or hosted use.UNKNOWN,UNLICENSED, or no license at all.
7. Report
Licensing: <repo or org>
Declared: <license> in LICENSE · README · <n> manifests (or what disagrees)
Fixed: <file>: <change>
Needs you: <decision> - <why it is the user's call>
Not checked: <what was out of scope, e.g. dependency licenses>Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

