Когда это нужноWhen to reach for itКоли це потрібно
В работе есть настоящие неизвестные или настоящий риск, и вы хотите согласовать, что и зачем, до того как решать, как, а после сборки провести аудит. Для опечатки или известного бага цикл пропускают намеренно.The work carries real unknowns or real risk, and you want the what and why agreed before the how, with an audit after the build. For a typo or a known bug the lifecycle is skipped on purpose.У роботі є справжні невідомі чи справжній ризик, і ви хочете погодити, що й навіщо, до того як вирішувати, як, а після збірки провести аудит. Для одруківки чи відомого багу цикл пропускають свідомо.
ТребованияRequirementsВимоги
- Где доступноAvailable inДе доступно
- Каждая загрузка kitEvery download of the kitКожне завантаження kit
- К чему обращаетсяWhat it touchesДо чого звертається
- Читает файлы проектаReads the files of your projectЧитає файли проєкту
- Правит файлы проектаEdits files in your projectЗмінює файли проєкту
- Работает сWorks withПрацює з
- Любой агент, который читает и пишет ваши файлыAny agent that reads and writes your filesБудь-який агент, що читає й пише ваші файли
- Где выполняются шагиWhere the steps happenДе виконуються кроки
- Чат вашего агента и ваши собственные файлы. Ни то ни другое не интерфейс этого сайта, поэтому шаги описаны текстом, а не скриншотами.Your agent's chat and your own files. Neither is an interface of this site, so the steps are text and not screenshots.Чат вашого агента і ваші власні файли. Ні те, ні інше не є інтерфейсом цього сайту, тому кроки описано текстом, а не скриншотами.
- Где это лежит в kitWhere it lives in the kitДе це лежить у kit
docs/SPEC_LIFECYCLE.md
Verified значит, что ничего не осталось открытым: ноль FAIL, ноль WARN, ни одного открытого MANUAL и ни одного вопроса Open в §6, который не передан дальше. Открытая ручная проверка держит тикет на BlockNeedUserTest. Не заявляйте больше барьеров, чем есть: Carried-to проверяется жёстко при закрытии, а Blocked-by лишь заставляет /backlog пропустить тикет.Verified means nothing is left open: zero FAIL, zero WARN, no open MANUAL item and no Open question in §6 that was not handed on. An open manual check holds the ticket at BlockNeedUserTest. Do not claim more gates than exist: Carried-to is enforced when a ticket closes, while Blocked-by only makes /backlog skip the ticket.Verified означає, що нічого не лишилося відкритим: нуль FAIL, нуль WARN, жодного відкритого MANUAL і жодного питання Open у §6, яке не передано далі. Відкрита ручна перевірка тримає тікет на BlockNeedUserTest. Не заявляйте більше бар'єрів, ніж є: Carried-to перевіряється жорстко при закритті, а Blocked-by лише змушує /backlog пропустити тікет.
ШагиStepsКроки
- Выберите самую нижнюю ступень лестницы сложности, которая всё ещё доказывает изменение. Опечатка - это
/quick, известный баг -/fix(спека не нужна ни там, ни там), небольшое детерминированное изменение - спека PRIMITIVE из трёх разделов (Problem / Approach / Done criteria), а всё, где есть настоящие неизвестные, - полный конвейер COMPLEX.Pick the lowest rung of the complexity ladder that still proves the change. A typo is/quick, a known bug is/fix(neither needs a spec), a small deterministic change is a three-section PRIMITIVE spec (Problem / Approach / Done criteria), and anything with real unknowns is the full COMPLEX pipeline.Оберіть найнижчий щабель драбини складності, який усе ще доводить зміну. Одруківка - це/quick, відомий баг -/fix(спека не потрібна ні там, ні там), невелика детермінована зміна - спека PRIMITIVE з трьох розділів (Problem / Approach / Done criteria), а все, де є справжні невідомі, - повний конвеєр COMPLEX. - Чтобы выбрать между двумя верхними ступенями, оцените задачу. Это PRIMITIVE, только если верно всё: меняется не больше 3 существующих файлов и нет новых; нет нового интерфейса, которым пользуется кто-то ещё; нет изменений общей структуры или её истории; нет нового подключения; нет новой поверхности, до которой доходит читатель; всё механически детерминировано, без отложенных решений; дельта меньше примерно 100 строк. Хоть одно неверно - это COMPLEX.To choose between the top two rungs, score the task. It is PRIMITIVE only if all of these hold: at most 3 existing files change and none is new; no new interface anyone else consumes; no change to a shared structure or its history; no new wiring; no new surface a reader reaches; mechanically deterministic, with no deferred decisions; under about 100 lines of delta. Any false means COMPLEX.Щоб вибрати між двома верхніми щаблями, оцініть задачу. Це PRIMITIVE, лише якщо правдиве все: змінюється не більше 3 наявних файлів і немає нових; немає нового інтерфейсу, яким користується хтось іще; немає змін спільної структури чи її історії; немає нового підключення; немає нової поверхні, до якої доходить читач; усе механічно детерміновано, без відкладених рішень; дельта менша за приблизно 100 рядків. Хоч одне хибне - це COMPLEX.
- Ведите тикет вперёд: каждый навык читает и пишет один и тот же статус.
/specпереводит спеку изDraftвApproved,/spec-techстроит план и ставитTactical,/spec-devдоводит тикет доImplementedилиBlockNeedUserTest./researchидёт первым и статус не меняет,/ui-clarifyстоит перед конвейером, пока не решён вопрос, видимый пользователю, а/surfacesидёт после сборки заметного пользователю изменения, до закрытия тикета.Run the pipeline forward; every skill reads and writes the same status./spectakes the spec fromDrafttoApproved,/spec-techturns it into a plan and setsTactical,/spec-devtakes the ticket toImplementedorBlockNeedUserTest./researchcomes first and changes no status,/ui-clarifygoes before the pipeline while a user-facing decision is open, and/surfacesgoes after a user-visible change is built, before the ticket closes.Ведіть тікет уперед: кожна навичка читає й пише той самий статус./specпереводить спеку зDraftдоApproved,/spec-techбудує план і ставитьTactical,/spec-devдоводить тікет доImplementedабоBlockNeedUserTest./researchіде першим і статус не змінює,/ui-clarifyстоїть перед конвеєром, доки не вирішено питання, видиме користувачеві, а/surfacesіде після збірки помітної користувачеві зміни, до закриття тікета. - Проведите аудит сборки.
/spec-checkтребуетImplementedили дальше и заканчивает наVerified,Partial(предупреждения, но нет провалов),Broken(есть хотя бы один провал) илиBlockNeedUserTest. ПриPartialилиBroken/spec-fixприменяет пункты действий аудита и заново запускает/spec-check, только если исправил хотя бы один; иначе он останавливается, а решения не по его силам уходят вBlockQuestions./proveзапускает результат и наблюдает за ним, не трогая статус.Audit the build./spec-checkneedsImplementedor later and ends inVerified,Partial(warnings, no failures),Broken(at least one failure) orBlockNeedUserTest. ForPartialorBroken,/spec-fixapplies the audit's action items and re-runs/spec-checkonly if it fixed at least one; otherwise it stops, and decisions it cannot make go toBlockQuestions./proveruns the result and observes it, and leaves the status alone.Проведіть аудит збірки./spec-checkвимагаєImplementedабо далі й завершується наVerified,Partial(попередження, але немає збоїв),Broken(є хоча б один збій) абоBlockNeedUserTest. ЗаPartialчиBroken/spec-fixзастосовує пункти дій аудиту й знову запускає/spec-check, лише якщо виправив бодай один; інакше він зупиняється, а рішення, які йому не під силу, йдуть уBlockQuestions./proveзапускає результат і спостерігає за ним, не чіпаючи статус. - Дайте навыкам идти цепочкой: каждый требует входной статус, выдаёт выходной и вызывает следующий, пока не сработает условие остановки (обязательный пункт исследования всё ещё
Open, не снят блокер до реализации, неоднозначность, проваленная проверка, условиеBlock*). Подписи на каждом этапе нет; чтобы посмотреть между этапами, запускайте навыки по одному или передайте--dry-runтем, что его принимают:/spec-tech,/spec-dev,/spec-fix,/backlog.Let the skills chain: each requires an entry status, produces an exit status and calls the next unless a stop condition fires (a required research item stillOpen, an unchecked pre-implementation blocker, an ambiguity, a failed check, aBlock*condition). There is no sign-off at every stage; to review between stages, run the skills one by one or pass--dry-runto those that take it:/spec-tech,/spec-dev,/spec-fix,/backlog.Дайте навичкам іти ланцюжком: кожна вимагає вхідний статус, видає вихідний і викликає наступну, доки не спрацює умова зупинки (обов'язковий пункт дослідження все щеOpen, не знято блокер до реалізації, неоднозначність, провалена перевірка, умоваBlock*). Підпису на кожному етапі немає; щоб подивитися між етапами, запускайте навички по одній або передайте--dry-runтим, що його приймають:/spec-tech,/spec-dev,/spec-fix,/backlog. - Если тикет не может двигаться, поставьте ему статус блокировки с заметкой в одну строку на самой строке статуса, после дефиса:
BlockNeedUserTest(собрано, ждёт ручной проверки),BlockByOtherTask(зависит от другого тикета),BlockQuestions(ждёт решения владельца),BlockExternal(ждёт релиза библиотеки, железа или третьей стороны). Чтобы выйти из блокировки, уберите причину, отметьте это и продвиньте тикет ровно на один уровень.When a ticket cannot move, put it in a block status, with a one-line note on the status line after a hyphen:BlockNeedUserTest(built, awaiting a manual check),BlockByOtherTask(depends on another ticket),BlockQuestions(awaiting a decision from the owner),BlockExternal(waiting on a library release, hardware or a third party). To clear one, remove the condition, note it and advance exactly one level.Якщо тікет не може рухатись, поставте йому статус блокування із нотаткою в один рядок на самому рядку статусу, після дефіса:BlockNeedUserTest(зібрано, чекає ручної перевірки),BlockByOtherTask(залежить від іншого тікета),BlockQuestions(чекає рішення власника),BlockExternal(чекає на реліз бібліотеки, залізо чи третю сторону). Щоб вийти з блокування, приберіть причину, позначте це й просуньте тікет рівно на один рівень. - Закрывайте тикет честно.
/spec-checkставитVerifiedтолько когда каждая проверка - PASS или EXEMPT. Отменённый или замещённый тикет уходит вArchived: его файлы покидают рабочее пространство, запись остаётся и никогда не удаляется насовсем, а оставшийся тег проверки снимается. Держите в шапкеBlocked-byиCarried-to, а пустые заполняйтеnone: отсутствующая строка значением не считается.Close the ticket honestly./spec-checkgrantsVerifiedonly when every check is PASS or EXEMPT. A cancelled or superseded ticket goes toArchived: its files leave the active workspace, the record stays and is never hard-deleted, and any leftover verification tag is cleared. KeepBlocked-byandCarried-toin the header and writenonewhen empty: an absent line is not a value.Закривайте тікет чесно./spec-checkставитьVerifiedлише коли кожна перевірка - PASS або EXEMPT. Скасований чи замінений тікет іде вArchived: його файли залишають робочий простір, запис лишається й ніколи не видаляється назавжди, а залишковий тег перевірки знімається. Тримайте в шапціBlocked-byіCarried-to, а порожні заповнюйтеnone: відсутній рядок значенням не вважається. - Разбирайте тикеты, которые ждут человека, одной пачкой, а не по одному прерыванию. Соберите все тикеты на
BlockNeedUserTest, выполните записанную ручную проверку каждого (по<ID>:в логе видно, какие пути действительно выполнились) и отметьте её строку в## Manual checksтем, что вы увидели. Затем перепроверьте пачку через/spec-check: тикеты, где отмечены все пункты, станутVerifiedи потеряют теги, остальные останутся заблокированными с заметкой.Sweep the tickets that wait for a human in one batch, not one interruption at a time. Group every ticket atBlockNeedUserTest, run each recorded manual check (grep the log for<ID>:to see which paths actually ran) and tick its line in## Manual checkswith what you saw. Then re-audit the batch with/spec-check: tickets with every box ticked becomeVerifiedand lose their tags, the rest stay blocked with a note.Розбирайте тікети, що чекають на людину, однією пачкою, а не по одному перериванню. Зберіть усі тікети наBlockNeedUserTest, виконайте записану ручну перевірку кожного (за<ID>:у лозі видно, які шляхи справді виконалися) і відмітьте її рядок у## Manual checksтим, що ви побачили. Потім перевірте пачку знову через/spec-check: тікети, де відмічено всі пункти, станутьVerifiedі втратять теги, решта лишиться заблокованою з нотаткою.
Тикет, статус которого поставил навык, проверивший условие входа; открытые вопросы в нём либо отвечены, либо переданы названному преемнику; и стоит он на Verified, Archived или на статусе блокировки с заметкой о причине.A ticket whose status was set by a skill that checked its entry condition, whose open questions were answered or handed to a named successor, and which stands at Verified, Archived or a block status with a note that says why.Тікет, статус якого поставила навичка, що перевірила умову входу; відкриті питання в ньому або отримали відповідь, або передані названому наступнику; і стоїть він на Verified, Archived або на статусі блокування із нотаткою про причину.
СоветыTipsПоради
- Идентификатор в прозе - упоминание, идентификатор в токене
Blocked-byилиCarried-to- утверждение. Прозу оставьте людям и не давайте навыку ходить по ней. Токены окупаются лишь там, где тикеты читает машина; если вы читаете каждый тикет руками, их можно убрать.An id in prose is a mention, an id in theBlocked-byorCarried-totoken is a claim. Keep the prose for people and never let a skill route on it. The tokens pay off only where something machine-reads the tickets; if you read every ticket by hand, you can drop them.Ідентифікатор у прозі - згадка, ідентифікатор у токеніBlocked-byчиCarried-to- твердження. Прозу залиште людям і не давайте навичці ходити по ній. Токени окуповуються лише там, де тікети читає машина; якщо ви читаєте кожен тікет руками, їх можна прибрати. - Чтобы снять
BlockQuestions: выделите решения, которые мешают следующему переходу, молча закройте те, что уже определены кодовой базой или прежним исследованием, владельцу задайте только настоящие вопросы суждения и сначала предложите проверенный вариант по умолчанию, запишите ответы в тикет, продвиньте его на один уровень и остановитесь. Ответ за владельца не придумывайте.To clearBlockQuestions: isolate the decisions that block the next transition, settle silently any that the codebase or earlier research already determines, put only the genuine judgment calls to the owner with a researched default first, record the answers in the ticket and advance one level, then stop. Never invent an owner's answer.Щоб знятиBlockQuestions: виділіть рішення, що заважають наступному переходу, мовчки закрийте ті, які вже визначені кодовою базою чи попереднім дослідженням, власникові ставте лише справжні питання судження й спершу запропонуйте перевірений варіант за замовчуванням, запишіть відповіді в тікет, просуньте його на один рівень і зупиніться. Відповідь за власника не вигадуйте. - Статус блокировки сохраняет каждый навык, пока не снята его причина. В частности,
/spec-checkникогда не затираетBlockQuestionsиBlockExternalоценкой аудита: именно такая перезапись заставляет аудит и его исправление вечно передавать друг другу одни и те же неустранимые пункты.A block status is kept by every skill until its condition is removed. In particular/spec-checknever overwritesBlockQuestionsorBlockExternalwith an audit score: that overwrite is what lets an audit and its fix-up hand the same unfixable items back and forth forever.Статус блокування зберігає кожна навичка, доки не знято його причину. Зокрема,/spec-checkніколи не затираєBlockQuestionsіBlockExternalоцінкою аудиту: саме такий перезапис змушує аудит і його виправлення вічно передавати одне одному одні й ті самі невиправні пункти. - Проверка, которую может сделать только человек, живёт в разделе
## Manual checksстратегической спеки: по строке[ ]на каждое, что нужно увидеть, а[x]ставит сам человек с датой и увиденным. Раздел пишется один раз и не перезаписывается, ведь блок аудита переписывается при каждом запуске. Агенты отметок не ставят:/proveможет дать доказательство, а отметку ставит человек.A check only a human can make lives in its own## Manual checkssection of the strategic spec: one[ ]line per thing a person must see, ticked[x]by that person with a date and what they observed. It is written once and never overwritten, because the audit's own block is rewritten on every run. Agents never tick a box;/provecan supply evidence, the human supplies the tick.Перевірка, яку може зробити лише людина, живе в розділі## Manual checksстратегічної спеки: по рядку[ ]на кожне, що треба побачити, а[x]ставить сама людина з датою та побаченим. Розділ пишеться один раз і не перезаписується, адже блок аудиту переписується під час кожного запуску. Агенти позначок не ставлять:/proveможе дати доказ, а позначку ставить людина. - Два правила входа легко перепутать.
/specпринимает либо новое описание, либо идентификатор существующегоDraft(заглушки от/park) и разворачивает его на месте под тем же идентификатором./spec-techпринимаетApprovedили дальше и отказываетDraft, а не повышает его: планирование по однострочному симптому обходит проверку, которую/specпроводит при утверждении.Two entry rules are easy to misremember./spectakes either a new description or the id of an existingDraft(a/parkstub), which it expands in place under the same id./spec-techtakesApprovedor later and refuses aDraftinstead of promoting it, because planning from a one-line symptom skips the gate/specruns at approval.Два правила входу легко переплутати./specприймає або новий опис, або ідентифікатор наявногоDraft(заглушки від/park) і розгортає його на місці під тим самим ідентифікатором./spec-techприймаєApprovedабо далі й відмовляєDraft, а не підвищує його: планування за однорядковим симптомом оминає перевірку, яку/specпроводить при затвердженні. - Теги проверки необязательны и нужны там, где есть трасса, по которой можно искать grep, например лог. Тег существует тогда и только тогда, когда тикет на
BlockNeedUserTest: его вставляют последней правкой кода перед финальной сборкой, а аудит удаляет, когда тикет покидает этот статус.Verification tags are optional and need a trace you can grep, such as a log. A tag exists if and only if the ticket is atBlockNeedUserTest: insert it as the last code edit before the final build, and the audit deletes it when the ticket leaves that status.Теги перевірки необов'язкові й потрібні там, де є слід, який можна шукати через grep, наприклад лог. Тег існує тоді й лише тоді, коли тікет наBlockNeedUserTest: його вставляють останньою правкою коду перед фінальною збіркою, а аудит видаляє, коли тікет полишає цей статус. - Адаптируйте свободно: впишите в плейсхолдер
<ID_SCHEME>свою схему идентификаторов (T0042,JIRA-123, дата со слагом);<ID>в навыках и шаблонах тогда означает идентификатор одного тикета. Состояния блокировки иArchivedможно убрать; при внешнем трекере файл остаётся спекой. Любой инструмент поверх должен отказывать в переходе, если не выполнено его условие.Adapt it freely: fill the placeholder<ID_SCHEME>with your id scheme (T0042,JIRA-123, a date-slug);<ID>in the skills and templates is then one ticket's id. Drop the block states orArchivedif you do not want them; with an external tracker, keep the file as the spec. Tooling you add should refuse a transition whose precondition is missing.Адаптуйте вільно: впишіть у плейсхолдер<ID_SCHEME>свою схему ідентифікаторів (T0042,JIRA-123, дата зі слагом);<ID>у навичках та шаблонах тоді означає ідентифікатор одного тікета. Стани блокування йArchivedможна прибрати; за зовнішнього трекера файл лишається спекою. Будь-який інструмент поверх має відмовляти в переході, якщо не виконано його умову. - Статус - это первая строка
Status:в файле, и читатель берёт её первое слово как статус. Заметка о блокировке идёт после дефиса на той же строке, напримерBlockExternal - waiting for the vendor's test key, и уходит, когда блокировка снята. Статус верен потому, что его делает верным работа, а не потому, что так говорит название файла или желание.The status is the firstStatus:line in the file, and a reader takes its first word as the status. A block note follows a hyphen on that same line, for exampleBlockExternal - waiting for the vendor's test key, and goes when the block lifts. A status is true because the work makes it true, never because a filename or a wish says so.Статус - це перший рядокStatus:у файлі, і читач бере його перше слово як статус. Нотатка про блокування йде після дефіса на тому самому рядку, наприкладBlockExternal - waiting for the vendor's test key, і зникає, коли блокування знято. Статус правдивий тому, що його робить правдивим робота, а не тому, що так каже назва файлу чи бажання. - Тикет входит в
ImplementedилиBlockNeedUserTestтолько когда его главное видимое пользователю поведение уже работает от начала до конца. Созданные классы, подключённые контракты и успешная компиляция - вехи: не зовите человека проверять, пока заявленное действие всё ещё только пишет в лог, показывает заглушку или ничего не делает.A ticket entersImplementedorBlockNeedUserTestonly when its headline user-visible behaviour already works end to end. Created classes, wired contracts and a passing compile are milestones: never invite a human to test while the advertised action still only logs, shows a placeholder or does nothing.Тікет входить вImplementedабоBlockNeedUserTestлише коли його головна видима користувачеві поведінка вже працює від початку до кінця. Створені класи, підключені контракти й успішна компіляція - віхи: не кличте людину перевіряти, доки заявлена дія досі лише пише в лог, показує заглушку чи нічого не робить.
Связанные функцииRelated functionsПов'язані функції
- Превратить описание фичи в утверждённую стратегическую спекуTurn a feature description into an approved strategic specПеретворити опис фічі на затверджену стратегічну спеку
/specпишет, что и зачем нужно в фиче, без имён классов и путей к файлам, утверждает и передаёт/spec-tech. Мелкую задачу делает на месте./specwrites the what and why of a feature with no class names or file paths, approves it and passes it to/spec-tech. A small task is built in place./specпише, що й навіщо потрібно у фічі, без назв класів і шляхів до файлів, затверджує та передає/spec-tech. Дрібну задачу робить на місці. - Разбить утверждённую спеку на поэтапный план с проверкой каждого шагаTurn an approved spec into a phased plan with a check on every stepРозбити затверджену спеку на поетапний план із перевіркою кожного кроку
/spec-techпишет тактический план: индекс и файлы фаз, каждый шаг кончается статической проверкой, а порядок фаз сам проверяется до смены статуса./spec-techwrites the tactical plan: an index and phase files, each step ending in a static check, with the phase order self-reviewed before the status flips./spec-techпише тактичний план: індекс і файли фаз, кожен крок закінчується статичною перевіркою, а порядок фаз сам перевіряється до зміни статусу. - Выполнить тактический план по одному проверенному шагуImplement a tactical plan one verified step at a timeВиконати тактичний план по одному перевіреному кроку
/spec-devидёт по плану шаг за шагом, проверяет каждый шаг до отметки о готовности и жёстко останавливается на первом сбое или неоднозначности, не угадывая./spec-devruns the plan step by step, checks each step before marking it done and hard-stops on the first failure or ambiguity instead of guessing forward./spec-devіде за планом крок за кроком, перевіряє кожен крок до позначки про готовність і жорстко зупиняється на першому збої чи неоднозначності, не вгадуючи. - Проверить реализацию по спеке и выставить статус тикета по фактуAudit a build against its spec and set the ticket status from realityПеревірити реалізацію за спекою й виставити статус тікета за фактомСверяет тикет с тем, что реально лежит в файлах, и выставляет статус: Verified, Partial или Broken, а пока открыта ручная проверка, BlockNeedUserTest.Audits a ticket against what the files really contain and sets its status: Verified, Partial or Broken, or BlockNeedUserTest while a manual check is open.Звіряє тікет із тим, що справді лежить у файлах, і виставляє статус: Verified, Partial чи Broken, а поки відкрита ручна перевірка, BlockNeedUserTest.
- Разобрать очередь тикетов без вашего участия и получить один отчёт в концеDrain the ticket queue unattended and get one report at the endРозібрати чергу тікетів без вашої участі й отримати один звіт наприкінціБерёт тикет с наивысшим приоритетом из тех, что агент может двигать сам, прогоняет конвейер, повторяет, а всё, что требует человека, откладывает в один отчёт.Picks the highest-priority ticket the agent can move alone, runs the pipeline on it, repeats, and defers everything that needs a human to one report.Бере тікет із найвищим пріоритетом серед тих, що агент може рухати сам, проганяє конвеєр, повторює, а все, що потребує людини, відкладає в один звіт.