Przejdź do treści
Biblioteka skilli
Bezpieczeństwo · Automatyzacja

risk-register

/risk-register

Prowadzi rejestr resztkowych ryzyk bezpieczeństwa w trybie dopisywania: przyjmuje, wygasza, zamyka i zgłasza ryzyka oraz podaje liczniki ekspozycji.

Repozytorium
sdlc-skills ↗
Licencja
MIT
Ostatnia zmiana repozytorium
26.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
11
Skrypty
7
Komentarze HTML
0
Adresy URL w SKILL.md
0
Przestarzałość

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

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co sprawdzić przed instalacją
  • 7 skryptów w paczce. Przejrzyj je przed instalacją, bo Claude może je uruchomić.

Skrypty: scripts/lib/cli.mjs, scripts/lib/engagement.mjs, scripts/lib/redact.mjs, scripts/lib/transitions.mjs, scripts/lib/transitions.test.mjs, scripts/register.mjs, scripts/register.test.mjs

Co robi i kiedy

Prowadzi rejestr resztkowych ryzyk bezpieczeństwa w trybie dopisywania: przyjmuje, wygasza, zamyka i zgłasza ryzyka oraz podaje liczniki ekspozycji.

Oryginalny opis (EN)

Use when recording, accepting, expiring, closing, superseding or ticketing residual security risks in the append-only register, or reading its exposure and approval counts; provides register.mjs.

Jak działa

  1. A row
  2. The ten events, from → to
  3. Approvals — one shape, unauthenticated everywhere
  4. Open exposure is never reduced by an approval
  5. register.mjs status
  6. register.mjs render
  7. Commands
  8. References
Sekcje z nagłówków SKILL.md, w oryginale · 141 linii, 813 słów
Podgląd SKILL.md
---
name: risk-register
description: "Use when recording, accepting, expiring, closing, superseding or ticketing residual security risks in the append-only register, or reading its exposure and approval counts; provides register.mjs."
license: MIT
metadata:
  authors:
    - "Daniel Sallai <Daniel_Sallai@epam.com>"
  version: "1.0.0"
---

# Risk register

One append-only log, `.agents/security-testing/register/events.jsonl`,
rows `R-nnnn`. Every command re-folds the whole log through
`lib/transitions.mjs`'s closed table and appends at most one line; a
`(event, from)` pair outside the table is refused, nothing is written.

## A row

```json
{"id": "R-0001", "finding_id": "<64-hex sha256>", "title": "…",
 "priority": "p1", "status": "open", "owner": "…", "ticket_url": "",
 "accepted_until": "", "approvals": [], "superseded_by": ""}
```

`status` is one of `open`, `fixed`, `regressed`, `accepted`,
`false-positive`, `superseded`. `approvals` is append-only — every
`accept`, `revoke` and `close-false-positive` event pushes one record
onto it; nothing is ever removed from it. `accepted_until` is cleared
on every transition that leaves `accepted` (including `supersede`).

## The ten events, `from → to`

- `add`: no row → `open` — `--finding <64-hex sha256> --priority
  <p0..p3> --title "<t>" [--owner <o>]`; sets `finding_id`, `title`,
  `priority`, `owner`. You run it.
- `accept`: `open` → `accepted`, `regressed` → `accepted` — appends an
  approval record to `approvals` and sets `accepted_until`. You run it.
- `revoke`: `accepted` → `open` — appends an approval record;
  `accepted_until` is cleared. You run it.
- `acceptance-expired`: `accepted` → `open` — fired by `register.mjs
  check` for every accepted row whose `accepted_until` is strictly
  before today (UTC); the acceptance still stands on that day itself
  and lapses at 00:00 UTC the next day. `accepted_until` is cleared.
  Emitter-only.
- `fixed`: `open` → `fixed`, `regressed` → `fixed`, `accepted` → `fixed`
  — fired by `verify.mjs`'s `VERIFIED` verdict; `accepted_until` is
  cleared if the row was `accepted`. Emitter-only.
- `regressed`: `fixed` → `regressed` — fired by `verify.mjs`'s
  `REGRESSED` verdict; only a `fixed` row can regress. Emitter-only.
- `close-false-positive`: `open` → `false-positive`, `regressed` →
  `false-positive` — appends an approval record. You run it.
- `reopen`: `fixed` → `open`, `false-positive` → `open` — status only;
  the prior `close-false-positive` record stays in `approvals`'
  history, it is not erased. You run it.
- `supersede`: `open` → `superseded`, `fixed` → `superseded`,
  `regressed` → `superseded`, `accepted` → `superseded` — sets
  `superseded_by`; `accepted_until` is cleared if the row was
  `accepted`. You run it.
- `ticket`: `open` → same, `fixed` → same, `regressed` → same,
  `accepted` → same (status unchanged) — sets `ticket_url`. You run
  it. Threats are not ticketed in v1: `ticket` is for finding rows.

## Approvals — one shape, unauthenticated everywhere

`accept`, `revoke` and `close-false-positive` each append an approval
record:

```json
{"recorded_by": "<actor>", "approved_by": "<who --approved-by named>",
 "approval_ref": "<--approval-ref>", "authenticated": false}
```

`accept` adds `until`. `authenticated: false` always — the fold refuses
any other value, and there is no confirmed state: nothing in this
bundle can produce an authenticated record, and the register never
claims one. `register.mjs status` reports the count as
`UNAUTHENTICATED-APPROVALS <n>` — one bucket, rows whose status is
`accepted` or `false-positive`; say the number, never split it into
"approved" and "pending".

## Open exposure is never reduced by an approval

`register.mjs status`'s `OPEN-EXPOSURE p0=<n> p1=<n> p2=<n> p3=<n>`
counts, by priority, every row whose status is `open`, `regressed` or
`accepted`. An accepted risk is still counted — an acceptance is a
record that someone said so, not evidence the risk is gone. The number
goes down only when a row becomes `fixed` (a verified fix) or
`superseded` (its exposure moves to the target row). A
`false-positive` closure removes the row from this count — it is a
disposition (a claim the finding is not real), not an approval of
ongoing exposure, so it is not counted as open risk; it still shows in
`UNAUTHENTICATED-APPROVALS` because the claim itself is unauthenticated.
If asked to "bring exposure down" by accepting rows: you can record the
acceptances, and the number will not move — say so before you run the
command.

## `register.mjs status`

`COUNT <status>=<n>` per status, `OPEN-EXPOSURE …`,
`UNAUTHENTICATED-APPROVALS <n>`, then
`FINGERPRINT <engagement_id>:<seq>:<sha256(events.jsonl)>`. Pass
`--expect <FINGERPRINT-line-or-value>` (from a previous sign-off) to get
one more line: `MATCH` (identical), `ADVANCED` (same engagement, higher
seq — exit 0), or `DIVERGED` (anything else — exit 4, history moved or
was rewritten). `--json` prints one JSON document, then the `--expect`
line if given — parse everything but the last line.

## `register.mjs render`

`register.mjs render` writes `.agents/security-testing/risk-register.md`
— `RENDERED <path>` — the table a stakeholder reads next to a sign-off
statement. Run `register.mjs check` first so an expired acceptance shows
as `open`, not stale.

## Commands

`node scripts/register.mjs --help`:

```
usage: register <command> [options]

commands:
  add
  accept
  revoke
  close-false-positive
  reopen
  supersede
  ticket
  fixed
  regressed
  check
  status
  render
```

Result lines: `ROW <id> <status>` (row verbs) · `EXPIRED <id>` (`check`,
one per lapsed acceptance) · the `status`/`render` lines above ·
`REFUSED <why>` (2) · `USAGE(<sub>: <why>)` (2) ·
`CORRUPT events.jsonl:<n> <why>` (5) · `ENGAGEMENT-*` (2). One writer at
a time: a duplicate-seq log (two concurrent invocations) is repaired by
deleting the later line, never by hand-editing an event in place.

## References

`references/transitions.md` — every `(event, from)` pair, its flags, its
emitter. `references/approvals.md` — the approval record's fields, where
it lives on a row, expiry, and what to say about it.
Pliki w paczce (11)
  • SKILL.md 6 KB
  • references/approvals.md 5 KB
  • references/transitions.md 5 KB
  • scripts/register.mjs 23 KB
  • scripts/register.test.mjs 22 KB
  • scripts/lib/cli.mjs 4 KB
  • scripts/lib/engagement.mjs 5 KB
  • scripts/lib/redact.mjs 3 KB
  • scripts/lib/redaction-rules.json 1 KB
  • scripts/lib/transitions.mjs 8 KB
  • scripts/lib/transitions.test.mjs 7 KB

Wersje

RepozytoriumWynikLicencja
Ta strona · arozumenko/sdlc-skills100MIT
microsoft/hve-core100MIT
pantheon-org/tekhne100MIT
qa-aman/claude-skills100MIT

Migawka bazy z 28.10.2026 · wersja paczki 8ac0061a1c39 (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

  • 90risk-assessment
    Przeprowadza strukturalną ocenę ryzyka bezpieczeństwa i prowadzi rejestr ryzyk zgodnie z ISO 27005 lub NIST SP 800-30.
  • 100risk-register-first-pass
    Tworzy pierwszy rejestr ryzyk bezpieczeństwa informacji: od 20 do 40 scenariuszy z materiałów firmy, ocenianych wspólną skalą.
  • 90risk-register-hygiene-review
    Sprawdza rejestr ryzyk przed audytem lub przejęciem przez nowego właściciela, szukając nieaktualnych, zduplikowanych i bez właściciela wpisów.
  • 100risk-register-builder
    Buduje rejestr ryzyk dla projektu lub inicjatywy: ryzyka, ocenę prawdopodobieństwa i wpływu, właścicieli, plany ograniczania i działania awaryjne.
  • 100security-risk-analyst
    Prowadzi analizę ryzyka bezpieczeństwa: rejestr ryzyk, ocenę, mapowanie zagrożeń na kontrole i rekomendacje zgodnie z ISO 27005 i NIST RMF.
  • 100pm-risk-register
    Identyfikuje ryzyka produktowe, ocenia je punktowo, rysuje macierz ryzyk i planuje działania ograniczające.

Uwagi i zgłoszenia

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