Przejdź do treści
Biblioteka skilli
Prawo i compliance · Przegląd i audyt

audit-licenses

/audit-licenses

Wylicza licencje open source wszystkich zależności projektu, grupuje je w rodziny licencji i oznacza GPL oraz AGPL, które mogą wymusić otwarcie kodu projektu.

Repozytorium
nanostack ↗
Licencja
Apache-2.0
Ostatnia zmiana repozytorium
10.09.2026

Ocena i bezpieczeństwo

100/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść35 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
4
Skrypty
2
Komentarze HTML
0
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 10.09.2026, bez odwołań do wycofanych modeli i API.

Licencja

Apache-2.0, otwarta: można używać i zmieniać, z zachowaniem licencji i informacji o zmianach.

Co sprawdzić przed instalacją
  • 2 skrypty w paczce. Przejrzyj je przed instalacją, bo Claude może je uruchomić.

Skrypty: bin/audit.sh, bin/smoke.sh

Co robi i kiedy

Wylicza licencje open source wszystkich zależności projektu, grupuje je w rodziny licencji i oznacza GPL oraz AGPL, które mogą wymusić otwarcie kodu projektu.

Oryginalny opis (EN)

Use to list the open-source licenses of every dependency in this project, grouped by license family. Flags GPL or AGPL dependencies that may force the project itself to be open-source. Triggers on /audit-licenses.

Jak działa

  1. Process
  2. Gotchas
Sekcje z nagłówków SKILL.md, w oryginale · 103 linii, 615 słów
Podgląd SKILL.md
---
name: audit-licenses
description: Use to list the open-source licenses of every dependency in this project, grouped by license family. Flags GPL or AGPL dependencies that may force the project itself to be open-source. Triggers on /audit-licenses.
concurrency: read
depends_on: []
summary: "License compliance check across npm/pip/go dependencies."
estimated_tokens: 180
---

# /audit-licenses — Dependency License Audit

You audit the open-source licenses of this project's dependencies. The point is compliance: some licenses (GPL, AGPL) force the project that uses them to be open-source under the same terms. The team needs to know that before shipping.

This is an example custom skill. It shows the patterns every nanostack-compatible skill follows: detect the project, do the work, save an artifact so future skills can read it.

## Process

### 0. Resolve paths (host-agnostic)

Every executable snippet below redefines two env vars at the top, so each snippet is copy-paste runnable on its own. Some agents (including Claude Code) execute each tool call in a fresh bash process, so an export in one block does not survive into the next. The defaults assume Claude Code; override the vars for Codex, Cursor, OpenCode, Gemini, or your own host.

```bash
NANOSTACK_ROOT="${NANOSTACK_ROOT:-$HOME/.claude/skills/nanostack}"
SKILL_DIR="${SKILL_DIR:-$HOME/.claude/skills/audit-licenses}"
```

Common substitutions:

| Host | NANOSTACK_ROOT | SKILL_DIR |
|---|---|---|
| Claude Code | `$HOME/.claude/skills/nanostack` | `$HOME/.claude/skills/audit-licenses` |
| Codex / Cursor / OpenCode / Gemini | `$HOME/.agents/skills/nanostack` (or wherever the agent loads skills from) | `$HOME/.agents/skills/audit-licenses` |

If the user already exported `NANOSTACK_ROOT` and `SKILL_DIR`, the `${VAR:-default}` form does not overwrite them.

### 1. Register the phase (first run only)

`save-artifact.sh` and the resolver only accept phases listed in `.nanostack/config.json`. Register `audit-licenses` once per project:

```bash
mkdir -p .nanostack
if [ -f .nanostack/config.json ]; then
  jq '.custom_phases = ((.custom_phases // []) + ["audit-licenses"] | unique)' \
    .nanostack/config.json > .nanostack/config.json.tmp \
    && mv .nanostack/config.json.tmp .nanostack/config.json
else
  printf '%s\n' '{"custom_phases":["audit-licenses"]}' > .nanostack/config.json
fi
```

Once registered the phase is first-class: the resolver returns `phase_kind=custom`, the artifact store accepts `audit-licenses`, and the rest of the lifecycle scripts learn to handle it as PRs 4-6 of the Custom Stack Framework round land.

### 2. Resolve context

Load whatever upstream context exists for this phase. The resolver knows about `audit-licenses` because step 1 registered it:

```bash
NANOSTACK_ROOT="${NANOSTACK_ROOT:-$HOME/.claude/skills/nanostack}"
"$NANOSTACK_ROOT/bin/resolve.sh" audit-licenses
```

Output includes `phase_kind: "custom"` and `upstream_artifacts` driven by the phase's `depends_on` (declared in this skill's frontmatter, or in `.nanostack/config.json`'s `phase_graph` if you have one). Empty upstream is normal for a custom skill that does not declare dependencies — saving an artifact in step 4 still works.

### 3. Detect the stack and run the audit

Check what kind of project this is and read its dependency manifest. The helper lives next to this `SKILL.md`:

```bash
SKILL_DIR="${SKILL_DIR:-$HOME/.claude/skills/audit-licenses}"
if [ -f package.json ]; then
  "$SKILL_DIR/bin/audit.sh" node
elif [ -f requirements.txt ] || [ -f pyproject.toml ]; then
  "$SKILL_DIR/bin/audit.sh" python
elif [ -f go.mod ]; then
  "$SKILL_DIR/bin/audit.sh" go
else
  echo "No supported manifest found (package.json, requirements.txt, pyproject.toml, go.mod)."
  exit 1
fi
```

The script prints a JSON block with `{ permissive: N, weak_copyleft: N, strong_copyleft: N, unknown: N, flagged: [...] }` plus a human-readable summary table.

### 4. Show the result and save the artifact

Show the user the summary first, then save an artifact so a future skill (or `/compound`) can read it:

```bash
NANOSTACK_ROOT="${NANOSTACK_ROOT:-$HOME/.claude/skills/nanostack}"
"$NANOSTACK_ROOT/bin/save-artifact.sh" audit-licenses \
  '{"phase":"audit-licenses","summary":{"flagged":[...],"counts":{...}},"context_checkpoint":{}}'
```

The artifact lives at `.nanostack/audit-licenses/<timestamp>.json`. Other skills can find it with `"$NANOSTACK_ROOT/bin/find-artifact.sh" audit-licenses 30`.

### 5. Headline

Close with one summary line, same format as the built-in skills:

```
[audit-licenses] OK: 47 deps scanned, 0 GPL/AGPL flagged.
```

Use `WARN` instead of `OK` when any GPL/AGPL dependency is flagged.

## Gotchas

- This skill only inspects manifest files. Transitive dependencies inside `node_modules/`, `vendor/`, or `.venv/` are not walked. For deep audits use a dedicated tool like `license-checker` (npm) or `pip-licenses`.
- "Permissive" here means MIT, BSD, Apache-2.0, ISC. "Weak copyleft" means LGPL, MPL. "Strong copyleft" means GPL, AGPL.
- Unknown licenses are not assumed permissive. They are flagged as `unknown` and the user decides.
Pliki w paczce (4)
  • SKILL.md 5 KB
  • agents/openai.yaml 1 KB
  • bin/audit.sh 4 KB
  • bin/smoke.sh 2 KB

Wersje

W bazie nie ma innych skilli o nazwie audit-licenses.

Migawka bazy z 28.10.2026 · wersja paczki 2dcce402ae88 (skrót SHA-256 całej paczki)

Pobrania w ostatnich 30 dniach: 0 · ranking

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 100license-audit
    Audytuje licencje open source każdej bezpośredniej zależności projektu przed wydaniem, oznaczając GPL i AGPL jako zablokowane, a nieznane jako ostrzeżenie.
  • 90scope-oss
    Audytuje zgodność licencji open source i wskazuje ryzyka copyleft związane z GPL, LGPL i AGPL.
  • 100open-source-license
    Doradza w wyborze licencji open source, sprawdza ich zgodność i zgodność projektów z OSS, generuje pliki LICENSE i NOTICE oraz wyjaśnia licencje MIT, Apache, GPL, BSD, LGPL i AGPL.
  • 100open-source-license
    Pomaga wybrać licencję open source, sprawdzić kompatybilność licencji, ocenić zgodność projektu z OSS i przygotować pliki LICENSE i NOTICE, w tym dla licencji copyleft i permisywnych.
  • 90software-licensing-stinger
    Wyjaśnia licencje oprogramowania i przygotowuje dowody artefaktów do przeglądu dystrybucji copyleft lub komercyjnej: noty licencyjne, granice GPL i AGPL.
  • 100license-compliance
    Audytuje licencje zależności pakietów Dart i Flutter za pomocą narzędzia MCP Very Good CLI, oznacza licencje niezgodne lub nieznane i przygotowuje raport podsumowujący zgodność.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.