Umiejętności
Każda umiejętność OpenSpec: argumenty, co tworzy i z czym odpowiada.
Umiejętności występują w dwóch zestawach:
- Rdzeń: instalowane domyślnie, główna pętla planowania.
- Opcjonalne: instalowane tylko po ich dodaniu, za pośrednictwem Profile.
Każda umiejętność zakłada, że projekt już korzysta z OpenSpec. Przed pierwszym krokiem, który zapisuje cokolwiek, umiejętność sprawdza, czy istnieje rozwiązany katalog główny (root). Co się dzieje, gdy go nie ma, zależy od tego, jak umiejętność została wywołana:
- Auto-selected: Twój agent wybrał umiejętność samodzielnie, bez nazywania OpenSpec. Porzuca OpenSpec i odpowiada na Twoją prośbę w normalny sposób, tak jakby OpenSpec nie było zainstalowane.
- Explicit OpenSpec request: nazwałeś OpenSpec, nazwałeś umiejętność lub uruchomiłeś jej polecenie. Zatrzymuje się przed zapisem i pyta, jak postępować: uruchom
openspec inittutaj, wskaż store za pomocą--store <id>, lub kontynuuj bez OpenSpec. Czeka na Twoją odpowiedź.
Polecenia zawsze należą do drugiego przypadku. Projekt, którego openspec/config.yaml wskazuje store, którego ta maszyna nie może rozwiązać (niezarejestrowany lub niepoprawny wiersz store:), nie jest traktowany jako niezainicjowany: umiejętność zatrzymuje się i pokazuje błąd store wraz z jego naprawą. Żadna umiejętność nie tworzy katalogu openspec/ samodzielnie w żadnym z tych przypadków. Poniższe wpisy opisują, co robi każda umiejętność po ustanowieniu katalogu głównego (root).
| Umiejętność | Zadanie | Typ |
|---|---|---|
| openspec-explore | Przeanalizuj pomysł, zanim stanie się propozycją zmiany | Rdzeń |
| openspec-propose | Utwórz propozycję zmiany ze wszystkimi artefaktami planowania w jednym kroku | Rdzeń |
| openspec-apply-change | Zaimplementuj zadania propozycji zmiany | Rdzeń |
| openspec-update-change | Zrewiduj plan propozycji zmiany | Rdzeń |
| openspec-sync-specs | Scal aktualizacje specyfikacji propozycji zmiany w specs/ | Rdzeń |
| openspec-archive-change | Przenieś zakończoną propozycję zmiany do archiwum | Rdzeń |
| openspec-new-change | Rozpocznij propozycję zmiany jako pusty szkielet | Opcjonalne |
| openspec-continue-change | Utwórz kolejny artefakt planowania, po jednym | Opcjonalne |
| openspec-ff-change | Utwórz propozycję zmiany z każdym artefaktem niezbędnym do implementacji, w jednym przebiegu | Opcjonalne |
| openspec-verify-change | Sprawdź, czy implementacja odpowiada planowi | Opcjonalne |
| openspec-bulk-archive-change | Zarchiwizuj kilka propozycji zmiany naraz | Opcjonalne |
| openspec-onboard | Poznaj przepływ pracy, przeprowadzając jedną prawdziwą propozycję zmiany od początku do końca | Opcjonalne |
Każdy wpis poniżej nazywa umiejętność odpowiedzialną za kolejny krok. Gdy Twój profil pomija tę umiejętność, zainstalowane pliki nigdy jej nie nazywają: przekazanie staje się odpowiednim poleceniem openspec, lub zwykłą prośbą do Ciebie, a wiersz istniejący tylko po to, by wskazać brakującą umiejętność, nie jest w ogóle zapisywany. Więc umiejętności, które masz, zawsze przekazują dalej do umiejętności, które masz. Który zestaw otrzymujesz, zależy od Profile.
openspec-explore
Przemyśl pomysł, zanim stanie się propozycją zmiany.
| Kontrakt | Opis |
|---|---|
| Argumenty | Temat: pomysł, problem, porównanie albo nazwa istniejącej propozycji zmiany do zbadania w kontekście. Gdy nic nie podano, przechodzi w tryb eksploracji. |
| Tworzy | Domyślnie nic. Tylko czyta i bada. Na żądanie zapisuje wnioski: nową propozycję zmiany w openspec/changes/<name>/ albo aktualizacje propozycji, projektu, specyfikacji lub zadań istniejącej zmiany. Nigdy nie tworzy kodu. |
| Odpowiedź | Otwarta rozmowa bez wymaganego rezultatu. Gdy myślenie się krystalizuje, podsumowuje problem, podejście, otwarte pytania i kolejne kroki oraz proponuje ich zapisanie. Decydujesz ty. Implementacja nigdy nie zaczyna się tutaj. |
openspec-propose
Utwórz propozycję zmiany i wygeneruj wszystkie jej artefakty planowania w jednym kroku.
| Kontrakt | Opis |
|---|---|
| Argumenty | Nazwa w formacie kebab-case (add-dark-mode) lub zwykły opis. Pyta, jeśli nie podasz żadnego. |
| Tworzy | openspec/changes/<name>/ ze wszystkimi artefaktami zdefiniowanymi przez schemat, w kolejności zależności (podejście spec-driven: propozycja, delty specyfikacji, projekt, zadania). Nigdy nie tworzy kodu. |
| Odpowiedź | Utworzone artefakty gotowe do przeglądu oraz następny krok. Zatrzymuje się tam; implementacja czeka na openspec-apply-change. |
openspec-apply-change
Zaimplementuj zadania propozycji zmiany, przechodząc przez listę aż do ukończenia lub zablokowania.
| Kontrakt | Opis |
|---|---|
| Argumenty | Nazwa propozycji zmiany (add-auth), opcjonalna. Jeśli cel jest niejednoznaczny, wyświetla aktywne propozycje zmian i prosi o wybór. |
| Tworzy | Kod: minimalne zmiany wymagane przez każde zadanie, w plikach twojego projektu. W propozycji zmiany odhacza każde ukończone zadanie (- [ ] na - [x]) w śledzonym pliku wskazanym przez sourcePath oraz line liczony od jedynki. Schemat może śledzić zadania w wielu plikach. |
| Odpowiedź | Postęp dla każdego zadania, a następnie łączna liczba (N/M zadań ukończonych). Wszystko ukończone: sugeruje openspec-archive-change. Zablokowane przez brakujące artefakty: wskazuje openspec-continue-change albo openspec status i openspec instructions, gdy ten skill nie jest zainstalowany (profil podstawowy go pomija). Niejasne zadania lub błędy: wstrzymuje się i pyta. |
openspec-update-change
Zmień istniejące artefakty planowania propozycji zmiany i utrzymaj ich wzajemną spójność.
| Kontrakt | Opis |
|---|---|
| Argumenty | Nazwa propozycji zmiany, opcjonalna, oraz żądana rewizja. Gdy nie podano rewizji, uruchamia przegląd spójności: artefakty są sprawdzane względem siebie pod kątem sprzeczności, luk i duplikacji. |
| Tworzy | Edytuje pliki artefaktów, które już istnieją. Jeden wyjątek: dla artefaktu zapisanego jako glob, takiego jak specs/**/*.md, który ma już co najmniej jeden plik, może dodać brakujący plik towarzyszący po potwierdzeniu ścieżki. Artefakt, który nie ma jeszcze plików, jest zadaniem openspec-continue-change. Bez tego skilla (profil podstawowy go pomija) wskazuje zamiast tego openspec status i openspec instructions. Nigdy nie tworzy kodu. |
| Odpowiedź | Pokazuje każdą proponowaną rewizję i zapisuje ją dopiero po twoim potwierdzeniu, po jednym artefakcie naraz. Kończy się informacją o tym, co zmieniono, i następnym krokiem; implementacja czeka na openspec-apply-change. |
openspec-sync-specs
Scal aktualizacje specyfikacji z propozycji zmiany do specs/ bez archiwizowania jej.
| Kontrakt | Opis |
|---|---|
| Argumenty | Nazwa propozycji zmiany, opcjonalna. Możesz też wskazać podzbiór jej delt specyfikacji; tylko one zostaną zsynchronizowane. |
| Tworzy | Edytuje lub tworzy openspec/specs/<capability-path>/spec.md dla każdej delty specyfikacji, scalając dodane, zmodyfikowane, usunięte i przemianowane wymagania do głównej specyfikacji. Nigdy nie tworzy kodu. |
| Odpowiedź | Podsumowanie według zdolności: wymagania dodane, zmodyfikowane, usunięte lub przemianowane, po zweryfikowaniu zaktualizowanych specyfikacji. Propozycja zmiany pozostaje aktywna; archiwizacja czeka na openspec-archive-change. |
openspec-archive-change
Przenieś ukończoną propozycję zmiany do archiwum.
| Kontrakt | Opis |
|---|---|
| Argumenty | Nazwa propozycji zmiany, opcjonalna. |
| Tworzy | Przenosi folder propozycji zmiany do openspec/changes/archive/YYYY-MM-DD-<name>/ (data nie jest dodawana, jeśli nazwa już zaczyna się od daty). Za twoją zgodą najpierw synchronizuje zaległe delty specyfikacji. Gdy openspec-sync-specs jest zainstalowany, uruchamia ten workflow. W przeciwnym razie sam scala delty specyfikacji z głównymi specyfikacjami. Nigdy nie tworzy kodu. |
| Odpowiedź | Ostrzega i pyta przed archiwizacją przy niekompletnych artefaktach lub zadaniach oraz pyta, czy zsynchronizować, gdy istnieją delty specyfikacji. Kończy się podsumowaniem: nazwa, schemat, lokalizacja archiwum, status synchronizacji specyfikacji i wszelkie ostrzeżenia. |
openspec-new-change
Rozpocznij propozycję zmiany jako pusty szkielet.
| Kontrakt | Opis |
|---|---|
| Argumenty | Nazwa w formacie kebab-case (add-user-auth) lub zwykły opis, a także nazwa schematu tylko dla workflow innego niż domyślny. Pyta, co chcesz zbudować, jeśli nie podasz żadnego z nich. |
| Tworzy | openspec/changes/<name>/ jako pusty szkielet: jeszcze bez artefaktów, nigdy nie tworzy kodu. |
| Odpowiedź | Nazwa i lokalizacja szkieletu, sekwencja artefaktów workflow, status (0/N ukończonych) oraz szablon pierwszego artefaktu. Tworzenie artefaktów czeka na openspec-continue-change. |
openspec-continue-change
Utwórz następny artefakt planowania w propozycji zmiany, po jednym naraz.
| Kontrakt | Opis |
|---|---|
| Argumenty | Nazwa propozycji zmiany, opcjonalna. Jeśli nadal jest niejednoznaczna, prosi o wybór spośród ostatnio zmodyfikowanych. |
| Tworzy | Pojedynczy następny gotowy artefakt w sekwencji schematu, zapisany w folderze propozycji zmiany. Jeden artefakt na jedno uruchomienie, nigdy nie tworzy kodu. |
| Odpowiedź | Utworzony artefakt, postęp (N z M ukończonych) oraz informacja, które artefakty to odblokowało. Gdy planowanie jest ukończone, mówi o tym; implementacja przechodzi do openspec-apply-change. |
openspec-ff-change
Utwórz propozycję zmiany i wszystkie artefakty planowania potrzebne do implementacji w jednym przebiegu.
| Kontrakt | Opis |
|---|---|
| Argumenty | Nazwa w formacie kebab-case lub zwykły opis. Pyta, jeśli nie podasz żadnego. Jeśli wskazana propozycja zmiany już istnieje, sugeruje jej kontynuację zamiast tego. |
| Tworzy | openspec/changes/<name>/ oraz każdy artefakt planowania wymagany do implementacji, w kolejności zależności (podejście spec-driven: propozycja, specyfikacje, projekt, zadania), pomijając tylko artefakty oznaczone jako pominięte lub warunkowe. Nigdy nie tworzy kodu. |
| Odpowiedź | Nazwa i lokalizacja propozycji zmiany, każdy utworzony artefakt oraz każdy pominięty artefakt warunkowy wraz z przyczyną. Zatrzymuje się tam; implementacja czeka na openspec-apply-change. |
openspec-verify-change
Sprawdź, czy implementacja odpowiada artefaktom propozycji zmiany.
| Kontrakt | Opis |
|---|---|
| Argumenty | Nazwa propozycji zmiany, opcjonalna. Gdy jest niejednoznaczna, pyta, wyświetlając propozycje zmian, które mają artefakt zadań. |
| Tworzy | Nic. Czyta artefakty propozycji zmiany i bazę kodu. Weryfikacja polega wyłącznie na raporcie. |
| Odpowiedź | Raport: karta oceny dla Kompletności, Poprawności i Spójności, następnie problemy CRITICAL, WARNING i SUGGESTION wraz z zaleceniami oraz końcowa ocena gotowości do archiwizacji. Nic nie zmienia i nie archiwizuje. |
openspec-bulk-archive-change
Zarchiwizuj kilka propozycji zmian naraz.
| Kontrakt | Opis |
|---|---|
| Argumenty | Brak. Wyświetla listę aktywnych propozycji zmian i prosi o wybranie dowolnej liczby, z opcją wybrania wszystkich. Jeśli żadna nie jest aktywna, mówi o tym i zatrzymuje się. |
| Tworzy | openspec/changes/archive/YYYY-MM-DD-<name>/ dla każdej archiwizowanej propozycji zmiany (nazwy już zawierające datę zachowują swój prefiks). Delty specyfikacji każdej z nich są najpierw synchronizowane przez openspec-sync-specs. Nigdy nie tworzy kodu. |
| Odpowiedź | Tabela statusu dla każdej propozycji zmiany i jedno potwierdzenie dla całej partii, następnie podsumowanie zarchiwizowanych, pominiętych i nieudanych oraz wyniki synchronizacji specyfikacji. Gdy dwie propozycje zmian dotyczą tej samej specyfikacji, sprawdza bazę kodu i synchronizuje zaimplementowane delty, zaczynając od najstarszych. |
openspec-onboard
Poznaj workflow, przechodząc przez jedną rzeczywistą propozycję zmiany od początku do końca.
| Kontrakt | Opis |
|---|---|
| Argumenty | Brak. Skanuje bazę kodu w poszukiwaniu małych zadań startowych i prosi o wybranie jednego lub opisanie własnego. |
| Tworzy | Rzeczywistą propozycję zmiany dla wybranego zadania, jeden artefakt naraz, a następnie rzeczywisty kod po potwierdzeniu implementacji. Na końcu archiwizuje propozycję zmiany. |
| Odpowiedź | Opowiedziane przejście przez pełny cykl z pauzami na twoje dane wejściowe: eksploracja, utworzenie, budowanie każdego artefaktu, implementacja, archiwizacja. Kończy się podsumowaniem i wskazówką do openspec-propose. Zajmuje około 15 do 20 minut. |