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

policystack-audit

/policystack-audit

Sprawdza config policystack.ts poleceniem validate, wyjaśnia kody problemów, proponuje minimalną poprawkę i waliduje ponownie.

Repozytorium
policystack ↗
Licencja
Apache-2.0
Ostatnia zmiana repozytorium
19.10.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
1
Skrypty
0
Komentarze HTML
1
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 19.10.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ą
  • SKILL.md zawiera komentarze HTML (1). Nie widać ich w podglądzie Markdown, a model je czyta.

Co robi i kiedy

Sprawdza config policystack.ts poleceniem validate, wyjaśnia kody problemów, proponuje minimalną poprawkę i waliduje ponownie.

Oryginalny opis (EN)

Audit a policystack.ts config: run `policystack validate --json`, explain each issue code, propose a minimal config fix, then re-validate until clean. Use when a PolicyStack config has validation errors or warnings.

Jak działa

  1. 1. Validate
  2. 2. Explain each code
  3. 3. Propose a minimal fix
  4. 4. Re-validate
Sekcje z nagłówków SKILL.md, w oryginale · 82 linii, 775 słów
Podgląd SKILL.md
---
name: policystack-audit
description: Audit a policystack.ts config: run `policystack validate --json`, explain each issue code, propose a minimal config fix, then re-validate until clean. Use when a PolicyStack config has validation errors or warnings.
---

<!-- Generated by @policystack/sdk renderSkillPack() — do not edit by hand. Run `vp run gen`. -->

# policystack-audit

Close the validate → explain → fix → re-validate loop on a PolicyStack config.

## 1. Validate

```sh
npx @policystack/cli@latest validate --json
```

`--json` writes exactly one object to stdout and nothing else:

```ts
type ValidateResult = {
	ok: boolean; // false ⟺ exit code 1
	config: string; // resolved config path
	issues: { code: string; level: "error" | "warning"; message: string }[];
	errorCount: number;
	warningCount: number;
	loadError: string | null; // set instead of issues when the file won't load
};
```

Branch on the exit code (or `ok`). `loadError` (missing file, TS syntax
error, no default export) is always `ok: false` and means **fix the load
error first** — there are no `issues` to triage yet. Pass a path or
`--cwd` if the config is not at the default location.

## 2. Explain each code

`level` is what `validate()` emits; the `@policystack/vite` plugin may
promote/suppress downstream, but errors block a valid config. Every code and
its durable meaning (the frozen 1.0 diagnostic surface — §6):

- `automated-decision-making` — *warning* — Under GDPR/UK-GDPR `automatedDecisionMaking` is not declared (Art. 13(2)(f) / Art. 22) — set `[]` for none or list each activity.
- `children-under-age-invalid` — *error* — `children.underAge` must be a positive number.
- `company-address-required` — *error* — `company.address` is required.
- `company-contact-phone-recommended` — *warning* — With a California (`us-ca`) jurisdiction, `company.contact.phone` is absent — CCPA §1798.130(a)(1) expects a toll-free number unless you operate exclusively online.
- `company-contact-required` — *error* — `company.contact.email` is required.
- `company-dpo-undeclared` — *warning* — Under GDPR/UK-GDPR `company.dpo` is not declared (Art. 13(1)(b)) — set it, or `{ required: false }` to declare none.
- `company-legal-name-required` — *error* — `company.legalName` is required.
- `company-name-required` — *error* — `company.name` is required.
- `consent-banner-required` — *warning* — A cookie category is consent-gated but `consentMechanism.hasBanner` is false — a banner is needed to collect affirmative consent.
- `consent-mechanism-undeclared` — *warning* — No enabled cookie category is consent-gated, so no consent mechanism is generated (correct for strictly-necessary cookies only).
- `consent-preference-panel-required` — *warning* — `consentMechanism.canWithdraw` is true but `hasPreferencePanel` is false — withdrawal has no preference panel in the wired runtime.
- `consent-withdrawal-required` — *warning* — Under GDPR/UK-GDPR users must be able to withdraw cookie consent — set `consentMechanism.canWithdraw`.
- `cookie-lawful-basis-missing` — *error* — An enabled cookie category is missing its Article 6 `lawfulBasis` in `cookies.context`.
- `cookies-empty` — *error* — No cookie category is enabled in `cookies.used`.
- `data-collected-empty` — *warning* — `data.collected` has no entries — the privacy policy will state that no personal data is collected.
- `data-context-missing` — *error* — A collected category has no matching `data.context` entry (purpose, lawful basis, retention, provision).
- `data-context-orphan` — *error* — A `data.context` entry has no matching category in `data.collected`.
- `data-missing` — *error* — `data` is required when a privacy policy is emitted — use an empty `data.collected` for a site that collects nothing.
- `data-purpose-empty` — *error* — A `data.context` `purpose` is present but blank.
- `data-purpose-missing` — *error* — A `data.context` entry is missing its processing `purpose` (GDPR Art. 13(1)(c)).
- `effective-date-required` — *error* — `effectiveDate` is required.
- `jurisdiction-generic-policy-text` — *warning* — A declared jurisdiction is supported only at the "equivalent" tier (posture-correct + parent text), not hand-authored "specific" text.
- `jurisdiction-unknown` — *error* — A declared jurisdiction code is not a recognised `JurisdictionId`.
- `jurisdictions-required` — *error* — `jurisdictions` must list at least one jurisdiction id.
- `lawful-basis-incomplete` — *error* — Under GDPR/UK-GDPR a collected category is missing its Article 6 `lawfulBasis` (Art. 13(1)(c)).
- `locale-unknown` — *error* — `locale` is not one of the supported `LOCALES`.
- `policy-cookie-empty` — *error* — `policies` includes "cookie" but no `cookies` block is set.
- `policy-empty` — *error* — The config produces no policy — add data-handling fields (`data`, `children`) or a `cookies` block.
- `retention-incomplete` — *error* — A collected category is missing a `retention` period.
- `statutory-contractual-obligation` — *error* — Under GDPR/UK-GDPR a category is missing the Art. 13(2)(e) `provision` (statutory / contractual / contract-prerequisite / voluntary) or its consequences.

## 3. Propose a minimal fix

For each issue, change only what the code requires in `policystack.ts` — do
not restyle or expand the config. `error`s must be resolved; `warning`s
should be resolved or consciously accepted (e.g. `data-collected-empty` is
correct for a brochure site). Never invent compliance facts (a lawful basis, a
DPO) — surface the decision to the user. Many data/cookie issues are better
fixed at the source with `policystack-instrument` than hand-written.

## 4. Re-validate

Re-run step 1. Repeat until `ok: true` (exit 0). Report the remaining
accepted warnings, if any.

Wersje

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

Migawka bazy z 13.11.2026 · wersja paczki 947535634b59 (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

  • 90policystack-jurisdiction
    Wyjaśnia, jakie podejście do zgody i tekstu polityki wynika z wybranych jurysdykcji w pliku policystack.ts.
  • 95policystack-init
    Dodaje do aplikacji webowej politykę prywatności, cookies i baner zgody, instalując PolicyStack i podpinając jego dostawcę.
  • 100om-fix
    Wprowadza minimalną poprawkę potwierdzonego błędu według gotowego briefu, dodaje testy regresji i uruchamia skonfigurowaną walidację.
  • 95effect-config
    Wczytuje i waliduje typowaną konfigurację w Effect przez Config i ConfigProvider, ze zmiennymi środowiskowymi, plikami .env i JSON.
  • 95effect-config
    Wczytuje i sprawdza typowaną konfigurację w Effect: zmienne środowiskowe, pliki .env, JSON i własne źródła.
  • 90triage-an-error
    Diagnozuje błąd w Bugsly: znajduje problem, czyta stos wywołań i ślad działań, wyjaśnia przyczynę i proponuje poprawkę w kodzie.

Uwagi i zgłoszenia

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