Commit all in-flight work — ckb-module and ckb-reset skills, the .agents/modules/ scaffold, OPENSPEC docs, decision records D-0001 and D-0002, graph edges and workload summaries — so the reset that follows is fully recoverable. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
8.9 KiB
OpenSpec w tej bazie wiedzy
Read this in: English | Polski
Jak dodać OpenSpec do Cascade KB, które dokumentuje tworzone przez Ciebie oprogramowanie, i jak to współgra z wiki.
To przewodnik dla człowieka. Zasady dla samego agenta są w module software —
.agents/modules/software/ — który musi być
zainstalowany, zanim cokolwiek z poniższych zacznie obowiązywać. Powiedz:
„zainstaluj moduł software”.
Spis treści
- Po co tu OpenSpec
- Przeczytaj to, zanim uruchomisz
openspec init - Instalacja
- Dwa poziomy specyfikacji
- Codzienna praca
- Jak specyfikacje trafiają do wiki
- Pilnowanie spójności poziomów
- Szybki przegląd
1. Po co tu OpenSpec
Wiki zapisuje o oprogramowaniu trzy różne rzeczy i warto trzymać je osobno:
| Pytanie | Gdzie mieszka | Kto zapisuje |
|---|---|---|
| Czym jest kod? | wiki/entities/ — strony repository i component |
ckb-code-map |
| Co powinien robić? | openspec/specs/ |
ckb-spec + OpenSpec |
| Co wybraliśmy i dlaczego? | wiki/decisions/ |
ckb-decide |
OpenSpec odpowiada za środkowy wiersz: specyfikacja opisuje obowiązujący kontrakt, a propozycja zmiany — co ma stać się prawdą w następnej kolejności. Piszesz specyfikację przed kodem, agent implementuje pod nią, a zarchiwizowana zmiana staje się częścią trwałego zapisu.
Jeśli coś nie ogranicza przyszłego zachowania, to nie jest specyfikacja, tylko decyzja. Powiedz wtedy „zapisz decyzję”.
2. Przeczytaj to, zanim uruchomisz openspec init
Nigdy nie uruchamiaj openspec init w katalogu głównym bazy wiedzy.
Uruchamiaj go w src/<repo>/.
To nie jest ostrożność na wszelki wypadek. openspec init zapisuje pliki
integracji z narzędziami w .claude/skills/ oraz dodaje bloki znacznikowe do
AGENTS.md / CLAUDE.md. W tym repozytorium oba te miejsca są nośne:
.claude/skillsto dowiązanie symboliczne do.agents/skills. Cokolwiek OpenSpec tam zapisze, ląduje w zestawie skilli Twojej bazy wiedzy.CLAUDE.mdto dowiązanie symboliczne doAGENTS.md— systemowego prompta bazy. To jeden i ten sam plik, więc blok zapisany „do obu” zapisuje się dwukrotnie w to samo miejsce.
Uruchomienie w katalogu głównym wmiesza instrukcje OpenSpec dla pojedynczego
repozytorium w reguły rządzące całą bazą wiedzy. Uruchomienie w src/<repo>/
zostawia wszystko na swoim miejscu: repozytorium dostaje własne .claude/,
własny AGENTS.md, a jego specyfikacje podróżują razem z kodem.
Katalog openspec/ w korzeniu bazy nie jest instalacją OpenSpec (§4), więc
nigdy nie wymaga init.
3. Instalacja
Wymaga Node.js 20.19.0 lub nowszego.
npm install -g @fission-ai/openspec@latest # albo pnpm / yarn / bun
openspec --version
Następnie, dla każdego repozytorium:
cd src/<repo>
openspec init
Po późniejszej aktualizacji CLI uruchom w każdym repozytorium openspec update,
żeby odświeżyć wygenerowane pliki instrukcji.
Odinstalowanie z repozytorium oznacza ręczne usunięcie katalogu openspec/,
wygenerowanych plików narzędziowych oraz bloków znacznikowych OpenSpec z
AGENTS.md / CLAUDE.md tego repozytorium — CLI tego za Ciebie nie cofa.
4. Dwa poziomy specyfikacji
Specyfikacje mieszkają w dwóch miejscach i jest to zamierzone.
Korzeń bazy — openspec/ — przekrojowe zdolności obejmujące kilka
repozytoriów w src/. To co i dlaczego, którego nie posiada żadne pojedyncze
repozytorium.
Tą warstwą zarządza skill ckb-spec, a nie CLI OpenSpec. Nie ma pod nią
kodu ani repozytorium, którym miałaby rządzić, więc workflow OpenSpec — skrojony
pod repozytorium — tu nie pasuje. Warstwa ta jest śledzona w historii gita bazy,
tak jak każda inna wiedza.
Per repozytorium — src/<repo>/openspec/ — jak to repozytorium realizuje te
zdolności. To jak. Rodzimy przypadek OpenSpec: zarządzany przez CLI i jego
własne instrukcje, podróżujący z kodem i biorący udział w pull requestach tego
repozytorium.
Agent oddaje tu pole OpenSpec i nie podstawia własnego workflow. Jeśli CLI nie jest zainstalowane, powie to wprost, zamiast improwizować.
5. Codzienna praca
W zainicjalizowanym repozytorium pętla wygląda tak: propose → apply → archive.
| Krok | Powiedz / uruchom | Co się dzieje |
|---|---|---|
| Propozycja | /opsx:propose <co chcesz zbudować> |
Propozycja, delta specyfikacji, projekt i zadania zapisane jako Markdown w openspec/changes/<id>/ |
| Przegląd | openspec show <id>, openspec validate <id> |
Czytasz deltę; walidacja sprawdza strukturę oraz zmodyfikowane wymagania wobec specyfikacji, które mają zastąpić |
| Wdrożenie | /opsx:apply |
Agent implementuje pod specyfikację |
| Archiwizacja | /opsx:archive lub openspec archive <id> |
Zmiana scala się z główną specyfikacją i trafia do changes/archive/ |
Przydatne obok: openspec list, openspec status, openspec view
(interaktywny pulpit).
Dla warstwy w korzeniu bazy nie ma CLI — po prostu powiedz „napisz przekrojową
specyfikację dla X”, a zajmie się tym ckb-spec.
6. Jak specyfikacje trafiają do wiki
Trzy mostki, wszystkie obsługiwane przez ckb-spec. To one sprawiają, że
OpenSpec nie staje się równoległym światem obok bazy wiedzy.
Zarchiwizowana zmiana → rekord decyzji. Wdrożona i zarchiwizowana zmiana to
decyzja, którą podjęto i wykonano. Agent proponuje zapisanie jej w
wiki/decisions/ — uzasadnienie z propozycji staje się Kontekstem i Uzasadnieniem,
delta staje się Decyzją, a odrzucone opcje — Rozważanymi alternatywami.
Proponuje, a nie robi tego automatycznie, i jest to celowe. Nie każda rutynowa zmiana zasługuje na trwały, numerowany rekord, a dziennik decyzji zapchany nimi przestaje być wart czytania.
Specyfikacja → strona encji. Aktualne specyfikacje z korzenia bazy pojawiają
się w wiki/entities/ jako cienkie strony type: spec, dzięki czemu pytania w
rodzaju „co to ma robić?” da się odpowiedzieć z indeksu, bez otwierania drzewa
specyfikacji. Źródłem prawdy pozostaje plik specyfikacji — strona wiki jest
wskaźnikiem, nie kopią.
Poziom → poziom. Specyfikacje z korzenia i z repozytoriów linkują się nawzajem (§7).
7. Pilnowanie spójności poziomów
Dwa poziomy specyfikacji to dwa miejsca, w których może mieszkać to samo stwierdzenie — a więc i dwa, w których może się po cichu rozjechać. Zapobiega temu jedna zasada:
Specyfikacja z korzenia wymienia każdą implementującą ją specyfikację repozytorium w
implemented_by:. Specyfikacja repozytorium wskazuje rodzica wimplements:. Zawsze ustawiaj obie strony.
Te odnośniki stają się krawędziami grafu, co zamienia rozjazd w widoczne znalezisko, zamiast w cichy drugi ośrodek prawdy.
Powiedz „zsynchronizuj specyfikacje” (albo uruchom lint), a dostaniesz
cztery kontrole:
- Specyfikacje z korzenia bez implementacji — opisane, ale nikt tego nie buduje.
- Specyfikacje repozytorium, których rodzic zniknął lub trafił do archiwum — budujesz pod coś, co przestało obowiązywać.
- Jednostronne odnośniki, w dowolnym kierunku.
- Specyfikacje z korzenia starsze niż zmapowany commit każdego repozytorium, które je implementuje — możliwy rozjazd, wart sprawdzenia.
Żadna z tych rzeczy nie jest naprawiana automatycznie. Każda jest stwierdzeniem o intencji, a tylko Ty wiesz, która strona ma rację.
8. Szybki przegląd
| Chcesz | Powiedz / uruchom |
|---|---|
| Włączyć to wszystko | „zainstaluj moduł software” |
| Dodać OpenSpec do repozytorium | cd src/<repo> && openspec init |
| Zmapować repozytorium do wiki | „zmapuj src/<repo>” |
| Napisać przekrojową specyfikację | „napisz przekrojową specyfikację dla X” |
| Zaproponować zmianę w repozytorium | /opsx:propose <co> |
| Sprawdzić stan specyfikacji | „zsynchronizuj specyfikacje” |
| Zamienić zarchiwizowaną zmianę w decyzję | „zapisz tę zmianę jako decyzję” |
Nigdy: nie uruchamiaj openspec init w korzeniu bazy · nie rób git add
niczego w src/ · nie przerabiaj plików OpenSpec repozytorium pod konwencje tej
bazy.
Źródła
- Dokumentacja OpenSpec · Fission-AI/OpenSpec · @fission-ai/openspec na npm
- Rekordy projektowe: D-0001, D-0002
Udostępniane na licencji Apache License 2.0 — zobacz LICENSE.